Burak Selim Senyurt
Matematik Mühendisi bir .NET Severin Yazıları...

Priority Queue Collection

Çarşamba, 1 Şubat 2012 00:01 by bsenyurt
Merhaba Arkadaşlar, 1996 yılıydı. Efes Pilsen(bu günkü adıyla Anadolu Efes) spor klübü altın dönemlerini yaşıyordu. Tamer Oyguç, Ufuk Sarıca, Peter Naumoski, Hidayet Türkoğlu, Mirsad Türkcan ve diğerleri. O yıl kulüp Avrupa Koraç kupasında finale yükselmiş ve İtalyan temsilcisi Stefanel Milano' nun rakibi olmuştu. İlk maç İstanbul Abdi İpekçi spor salonundaydı. Üniversitedeydim ve arkadaşlarımla günün erken ... [Fazlası]

Binary Search Tree' yi Anlamak

Salı, 10 Ocak 2012 00:01 by bsenyurt
Merhaba Arkadaşlar, İnsan hafızası gizemli çalışan ama çoğu zamanda bizleri şaşırtan bir mekaniğe sahiptir. Doğduğumuz andan itibaren 3 yaşına kadar geçen zaman dilimi içerisinde görsel olarak ne izlersek kaparız. Ancak neredeyse bunların hiç birini hatırlamayız. Çocukluğumuz, ergenliğimiz, yetişkinliğimiz, orta yaş halimiz ve yaşlılığımız. Tüm bu zaman dilimlerinde beynimiz sürekli olarak bir şeyleri hafıza da tutma ihtiyacı hisseder. Za... [Fazlası]

Tek Fotoluk İpucu-45(NumPad Yapalım)

Çarşamba, 4 Ocak 2012 00:33 by bsenyurt
Merhaba Arkadaşlar, Diyelim ki Windows Forms programlama ile ilgileniyorsunuz. Çalışma zamanında bileşen üretilmesini öğrendiniz. Form' lar arası geçişleri biliyorsunuz ve öğrendiklerinizi tatbik etmek niyetindesiniz. Hatta Extension Method kavramını da biliyorsunuz hatta Anonymous Method yazmayı da öğrendiniz. Öyleyse mesela bir NumPad formunun dinamik olarak üretilmesini ve üstündeki sayı düğmelerine basıldığında kaynak olarak gelen b... [Fazlası]

Tek Fotoluk İpucu-44 (Mail Adresi Doğru mu?)

Pazartesi, 2 Ocak 2012 23:40 by bsenyurt
Merhaba Arkadaşlar, Aslında bu soruya cevap vermek özellikle web developer' lar için son derece kolay. RegularExpressionValidator kontrolünde uygun deseni seçip kontole hatalı mail adresi girilmesi engellenebilir. Ama yine de bazen tedbiri elden bırakmamakta yarar vardır. Söz gelimi bir mail adres listesine toplu mail atacağımız bir senaryoyu göz önüne alalım. Geliştirdiğimiz kodlarda mail adreslerinin doğru olup olmadığını çok basit bir hile i... [Fazlası]

Tek Fotoluk İpucu-43(Active Directory Connection String Bilgisini Almak)

Pazartesi, 5 Aralık 2011 23:10 by bsenyurt
Merhaba Arkadaşlar, Oldu da domain üzerinde çalışırken Active Directory' nin bağlantı bilgisine ihtiyaç duydunuz? Bu özellikle AD ile .Net tarafında çalışırken size gerekli olan önemli bir bilgidir. Nasıl mı elde edebiliriz? Aslında basit bir teknik var. Garantisi yok ama en azından ben şirket makinemde başarılı bir şekilde test edebildiğimi söyleyebilirim ADConStr.rar (23,80 kb)

Tek Fotoluk İpucu-42(ExecuteQuery ile Injection' dan Korunmak)

Cumartesi, 26 Kasım 2011 14:15 by bsenyurt
Merhaba Arkadaşlar, LINQ to SQL kullandığımız durumlarda bildiğiniz gibi dışarıdan SQL sorgularını da icra ettirebilmekteyiz. Bu amaçla DataContext tipinin ExecuteQuery metodu kullanılmakta. Ancak özellikle SQL Injection saldırılarına karşı dikkatli olmamız gerekiyor. Bu nedenle söz konusu metodun placeholder kullanımına izin veren versiyonunu ele almamızda yarar olduğu kanısındayım. Nasıl mı? ExecuteQueryAndInjection.rar (52,04 kb)

Tek Fotoluk İpucu-41(Let Keyword)

Pazartesi, 21 Kasım 2011 22:35 by bsenyurt
Merhaba Arkadaşlar, LINQ sorgularını pek çoğumuz etkin bir şekilde kullanıyoruzdur. Ama belki aralarda atladığımız keyword' ler de vardır. Mesela Let. Çık sık kullanmasakta oldukça işimize yarayan bir anahtar kelimedir. Söz gelimi onu bir ifadeye eşitleyip LINQ sorgusunun hatırlamasını sağlayabilir, koşul olarak değerlendirebilir hatta anonymoust tip içerisine bile dahil edebiliriz. Tipik olarak sorgu içinde bir değişken mantığında ele almış oluruz. Nasıl... [Fazlası]

Tek Fotoluk İpucu-40(Sebze Çorbası)

Perşembe, 17 Kasım 2011 00:20 by bsenyurt
Merhaba Arkadaşlar, Hani böyle annemiz zamanında içinde yok yok dedirtecek türden çorbalar yapmıştır. Her çeşit sebzenin konulduğu Hah işte bu fotoğrafta ona benziyor. İçinde generic mimari var, reflection var, dynamic tip kullanımı var Olay gayet basit. Çalışma zamanında generic tipleri dinamik olarak üretip kullanmak istediğinizi düşünün. Bunu nasıl sağlarsınız? İşte basit bir örnek CreateGenericType.rar (24,98 kb)

Tek Fotoluk İpucu-39(Dynamic Delegate Üretmek)

Pazartesi, 14 Kasım 2011 23:45 by bsenyurt
Merhaba Arkadaşlar, Bazen çalışma zamanına ilişkin yapmamız gereken atraksiyonlar olur. Söz gelimi çalışma zamanında bir delegate tipinin dinamik olarak üretilmesini ve yürütülmesini isteyebiliriz? Peki bu nasıl olacak? İşin içerisine birazcık Reflection katarak tabiki de DynamicDelegateCreation.rar (23,25 kb)

Tek Fotoluk İpucu-38(Delegate Chain)

Pazar, 13 Kasım 2011 17:45 by bsenyurt
Merhaba Arkadaşlar, Arada sırada temelleri de hatırlamak gerekir değil mi? Söz gelimi bir delegate zincirini nasıl kurar ve aynı parametreler için nasıl çalıştırırsınız? İşte size örnek DelegateChain.rar (22,77 kb)

SSIS - Programatik Olarak Variable Değeri Set Etmek

Cuma, 11 Kasım 2011 23:59 by bsenyurt
Merhaba Arkadaşlar, Beni tanıyanlar SQL ailesini pek sevmediğimi ve biraz uzak durmaya çalışmak istediğimi bilirler. Ne varki bazen iş hayatının gerçekleri ile karşı karşıya kalırız ve mecburen SQL ailesinin bazı fertleri ile yakın ilişkiler içerisine gireriz Örneğin ben çalışmakta olduğum bankanın önemli bazı operasyonlarında SSIS(Sql Server Integration Services) paketleri ile çalışmak durumundayım. Özellikle bankaların metin tabanlı dosya for... [Fazlası]

Tek Fotoluk İpucu-37(Faydalı Interface Tiplerinden IComparer)

Cumartesi, 5 Kasım 2011 18:39 by bsenyurt
Merhaba Arkadaşlar, .Net içerisinde pek çok faydalı Interface tipi bulunmaktadır. Örneğin kendi tiplerinizin sıralama işlemlerini öğrenebilmesi için kullanabileceğimiz IComparer<T>. Nasıl kullanıldığını merak ediyor musunuz? İşte size basit bir fotoğraf Sorting.rar (24,13 kb)

Tek Fotoluk İpucu-36(Config Dosyasına Kolay Ulaşım)

Pazartesi, 24 Ekim 2011 23:30 by bsenyurt
Merhaba Arkadaşlar, .Net Framework 2.0 ile birlikte gelen Configuration API' sini hepimiz biliyoruzdur. Bu API sayesinde config dosya içeriklerinin Managed karşılıkları olan tiplere ulaşmamız son derece kolay. Aslına bakarsanız pek çok uygulamada config dosyası içerisinde ConnectionStrings ve AppSettings kısımlarını sıklıkla kullandığımızı görmekteyiz. Bu içeriklere daha efektif ve performanslı erişim için belki bir Wrapper tip işimizi görebilir. Nas... [Fazlası]

Tek Fotoluk İpucu-35(DeflateStream ile Sıkıştırmak)

Cuma, 21 Ekim 2011 17:13 by bsenyurt
Merhaba Arkadaşlar, Diyelim ki uygulama içerisinde kullandığınız büyük boyutlu bir byte dizisi var. Aslında bu diziyi bellek üzerinde sıkıştırarak daha az yer tutacak şekilde de kullanma şansınız olabilir. DelfateStream tipi bu anlmada işinize yarayacak Compress ve Decompress metodlarını içermektedir. İşte size örnek bir kullanım. Lorem Ipsum' u byte seviyesinde sıkıştırıyoruz. E decompress kısmı da size kaldı.  MemoryCompressing.rar (25,22 kb)

Tek Fotoluk İpucu-34(Güncel Process için Bellek Bilgileri)

Çarşamba, 19 Ekim 2011 00:11 by bsenyurt
Merhaba Arkadaşlar, Çalıştırdığımız .Net tabanlı uygulamaların anlık bellek tüketimlerini kod içerisinden ölçümlemek ve hatta loglamak iyi bir fikir olabilir. Hatta bu çıktıyı XML formatında dış dünyaya da sunabiliriz. Basit anlamda aşağıdaki fotoğraf size ipucu verecektir kanaatindeyim. MemoryMeasurement.rar (22,15 kb)

Tek Fotoluk İpucu-33(Xml Cast)

Pazartesi, 10 Ekim 2011 16:00 by bsenyurt
Merhaba Arkadaşlar, Varsayalım ki elimizde kendi geliştirdiğimiz tipler ve kullandığımız List koleksiyonları var. Ve olduda bir yerde bu koleksiyonların içeriklerinin XML çıktılarına ihtiyaç duyduk. Basit bir Extension method geliştirebilir miyiz acaba? ListExtensions.rar (23,69 kb)

Tek Fotoluk İpucu-32(Environment Verisini XML Olarak Sunmak)

Perşembe, 22 Eylül 2011 16:05 by bsenyurt
Merhaba Arkadaşlar, System.Environment tipi içerisinde son derece yararlı ortam bilgileri bulunmaktadır. Bu bilgileri elde etmek son derece kolaydır. Hatta dilerseniz bunları XML formatında dış dünyaya sunabilirsinizde. Nasıl mı? EnvironmentExtensions.rar (22,66 kb)

Tek Fotoluk İpucu-31(Hashing)

Pazar, 18 Eylül 2011 11:50 by bsenyurt
Merhaba Arkadaşlar, Hiç bir zaman kullanıcılarımıza ait şifreleri açık formatta saklamamamız gerekir. En basit anlamda söz konusu verileri Hash' leyerek tutmak en doğrusudur. Bu anlamda .Net tarafında kullanımı son derece basit olan Hash algoritma tipleri mevcuttur. Nasıl kullanıldığını merak ediyor musunuz? Hashing.rar (21,76 kb)

Tek Fotoluk İpucu-29 (Ne Kadar TextBox Varsa)

Cuma, 26 Ağustos 2011 15:17 by bsenyurt
Merhaba Arkadaşlar, Kaliteli kod yazmak için aslında biraz titiz düşünmek gerekir. Söz gelimi bir Windows programlamada bir Container kontrol içerisindeki tüm TextBox' ların içeriğini temizlemek istediğiniz bir durumda nasıl kodlama yaparsınız? İşin içerisine Recursive metod formatını katabilirsiniz. Hatta bunu bir Extension Method haline de getirebilirsiniz. Nasıl mı? WindowsFormsApplication1.rar (40,37 kb)

Tek Fotoluk İpucu-28(Bir Klasörün Yaklaşık Toplam Boyutunu Bulmak)

Çarşamba, 24 Ağustos 2011 09:09 by bsenyurt
Merhaba Arkadaşlar, Bir klasörün tüm içeriğinin toplam boyutunu öğrenmek isteyebiliriz. Bunun için DirectoryInfo tipine bir ExtensionMethod eklersek de güzel olur. Hatta bu metodun alt klasörleri de gezebilmesi için Recursive olarak yazılması da gerekir. Nasıl mı? Not : Yanlız erişim yetkisi olmayan klasörler söz konusu olduğunda boyut bilgisi eksik çıkacaktır. Bunun çözümünü de size bırakıyorum. Bi... [Fazlası]

Tek Fotoluk İpucu-27(FileInfo Bilgisinin Tamamını İndirmek)

Pazartesi, 22 Ağustos 2011 13:51 by bsenyurt
Merhaba Arkadaşlar, FileInfo tipi yardımıyla bir dosyanın pek çok özelliğine erişebiliriz bildiğiniz üzere. Peki tüm bu bilgileri tek bir String içerisinde toplamak ister misiniz? Söz gelimi loglamalarda bu oldukça işe yarayabilir. Hatta bunu bir Extension method olarak da yazabiliriz. Nasıl mı? ConsoleApplication1.rar (23,97 kb) BurakSenyurtVsColorSchema.vssettings (280,59 kb)

Tek Fotoluk İpucu-26 (Runtime Method Çağrımı)

Cuma, 19 Ağustos 2011 15:30 by bsenyurt
Merhaba Arkadaşlar, Sanırım bir önceki tek fotoluk ipucunda çalışma zamanındaki bir nesne özelliğinin değerinin nasıl alınabileceğini görmüştük. Elbette reflection konulu işlerde bir nesne örneğinin bir metodunun çağırılması da söz konusu olabilir. Nasıl mı? RuntimeMethods.rar (24,17 kb)

Tek Fotoluk İpucu-25 (Runtime Value ve Extension Method)

Perşembe, 18 Ağustos 2011 15:08 by bsenyurt
Merhaba Arkadaşlar, Özellikle Reflection kullandığımız bazı çalışma zamanı senaryolarında, nesnelerin özellik değerlerini elde etmek istediğimiz durumlar da söz konusu olabilir. Çok basit bir senaryo göz önüne alındığında bunun için bir Extension method dahi geliştirebiliriz. Nasıl mı? RuntimeValues.rar (23,48 kb)

Tek Fotoluk İpucu-24(DataContractJsonSerializer ve Extension Method)

Pazartesi, 15 Ağustos 2011 09:21 by bsenyurt
Merhaba Arkadaşlar, Extension metodlar çok ama çok işimize yarayabiliyor. Örneğin serileştirilebilir herhangibir tipin Json formatındaki çıktısının string tipinden döndüren bir extension metodu geliştirebilirsiniz. Nasıl mı? JsonExtensions.rar (23,64 kb)

Tek Fotoluk İpucu-23 (BinaryFormatter, DataSet, Extension Methods)

Cuma, 5 Ağustos 2011 09:38 by bsenyurt
Merhaba Arkadaşlar, Bu kez elimde bir DataSet, Binary serileştirme için BinaryFormatter ve tabiki Extension Method kabiliyeti var. Ne yapabiliriz? Belki de bir DataSet' in Binary formatta Serialize, DeSerialize işlemlerini üstlenen genişletme metodlarını yazabiliriz. Ben Serialize kısmını yazdım. Gerisi size kalmış BinaryDataSet.rar (49,42 kb)

Tek Fotoluk İpucu-22 (GetCommandLineArgs)

Pazartesi, 1 Ağustos 2011 09:31 by bsenyurt
Merhaba Arkadaşlar, Zaman zaman komut satırından çalışan Console uygulamaları geliştiririz ve bu programlar genellikle komut satırı parametreleri alarak çalışırlar. Çoğunlukla Main metodunun string[] tipinden parametresini kullanırız. Peki Environment tipinin de komut satırı argümanlarını alabilmemiz için bir metod sunduğunu biliyor muydunuz? Environment tipinde neler var neler zaten UsingEnvironment.rar (20,82 kb)

Tek Fotoluk İpucu-21(FileInfo,GZipStream ve Extension)

Çarşamba, 20 Temmuz 2011 17:28 by bsenyurt
Merhaba Arkadaşlar, Elimde FileInfo, GZipStream tipleri ve Extension Method kabiliyeti var. Sizce ne yapılabilir? Yoksa FileInfo tipinde Compress ve DeCompress işlemleri için birer Extension Method' mu yazılabilir? Ben Compress' I yazdım. Kalanı da size ait olsun GZipExtension.rar (24,43 kb)

Tek Fotoluk İpucu-20 (Except Sorgusu)

Salı, 19 Temmuz 2011 12:17 by bsenyurt
Merhaba Arkadaşlar, Hemen hepimiz LINQ sorgularını kullanıyoruz(Tabi aramızda halen .Net 2.0 ve altı ile çalışan zavallılar da yok değil ) Lakin LINQ içerisinde çok enteresan extension method' lar olduğunu da biliyor muyuz? Örneğin, şehir bazındaki müşteri listesini veren bir View' un LINQ sorgusunda, belirli şehirlerin dışında kalanların kümesini almak isteyebiliriz. Aşağıdaki örnekte olduğu gibi LINQThink.rar (38,50 kb)

Tek Fotoluk İpucu-19 (StringBuilder deyip geçme)

Pazartesi, 18 Temmuz 2011 09:51 by bsenyurt
Merhaba Arkadaşlar, String tipleri çok garip tiplerdir. Onları + operatörü ile birleştirmek bazen akıl karı değildir. Çok fazla performans kaybettirir. Bir de uzlaşma yoluna gidebileceğini StringBuilder var. Örneğin StringPerformance.rar (22,11 kb)

Tek Fotoluk İpucu-18 (5 Parametreden Fazlası için Struct)

Çarşamba, 13 Temmuz 2011 12:48 by bsenyurt
Merhaba Arkadaşlar, Çok sevgili Juval Löwy der ki : "Bir metod 5den fazla parametre alıyorsa, verileri Struct tipini kullanarak aktarın". Meşhur kod standartlarından birisi olan bu kurala kaçımız ne kadar uyuyoruz acaba? Oysaki kullanımı çok basit. İşte basit bir örnek StructForParameters.rar (22,91 kb)

Tek Fotoluk İpucu-17 (Query ile Daha Şık Kodlama)

Salı, 12 Temmuz 2011 09:54 by bsenyurt
Merhaba Arkadaşlar, LINQ sorgularını sadece sorgulamak için kullandığımızı da nereden çıkartıyorsunuz Aslında onları kodlarımızı daha şık hale getirmek için de kullanabiliriz? Nasıl mı? İşte küçük bir örnek ShortCodes.rar (22,69 kb)

Tek Fotoluk İpucu-16 (Dynamic Var)

Pazartesi, 11 Temmuz 2011 09:41 by bsenyurt
Merhaba Arkadaşlar, LINQ tarafında isimsiz tipleri(Anonymous Types) oldukça sık kullanmaktayız. Ancak isimsiz tiplerin metodlara parametre olarak geçirilemediğini de biliyoruz Çünkü bu tipler derleyici tarafından üretiliyorlar. Ama üzülmeyin. Çünkü elimizde 4.0 ile gelen dynamic anahtar kelimesi var. Peki nasıl kullanırız? DynamicVar.rar (26,49 kb)

Tek Fotoluk İpucu - 7 (Windows Liste Bazlı Kontrolleri ve ToString Metodu)

Pazartesi, 27 Haziran 2011 12:48 by bsenyurt
Merhaba Arkadaşlar, WinForms programcılığında sık rastlanan sorunlardan birisi de, kendi özel tiplerimizi liste bazlı kontrollere bağladığımız durumlarda ortaya çıkmaktadır. Acaba liste bazlı kontrolün içeriğini kendimiz nasıl belirleyebiliriz? SmartToString.rar (36,38 kb)

Tek Fotoluk İpucu - 6 (Fluent Exception Handling)

Cuma, 24 Haziran 2011 18:22 by bsenyurt
Merhaba Arkadaşlar, Bazen iç içe çağrılarda bulunan metod zincirlerinde herhangibir seviyede meydana gelen Exception durumunu, en üst noktada yakalamak isteriz. Bu durumda balon köpüğü misali bir aşağıdan yukarı yükselen bir mekanizmayı kullanabiliriz. Nasıl mı? (Büyük hali için fotoğrafa tıklayın) GoodExceptionCatching.rar (22,12 kb)

Tek Fotoluk İpucu - 5 (Rastgele Sıralı Generic List Koleksiyonu)

Cuma, 24 Haziran 2011 09:15 by bsenyurt
Merhaba Arkadaşlar, Elinizde List tipinden bir koleksiyon var ve içerisindeki nesnelerden rastgele sırada yeni bir liste kullanmak istiyorsunuz. Ne yaparsınız? İşte cevabı RandomList.rar (22,53 kb)

Tek Fotoluk İpucu - 2 (StackTrace ve Çalışma Zamanı Metod Bilgisi)

Çarşamba, 22 Haziran 2011 16:48 by bsenyurt
Merhaba Arkadaşlar, Hani olurda çalışma zamanında(Runtime) o anda yürütülmekte olan metodun bilgilerine kolayca ulaşmak istersiniz. Özellikle loglama sistemlerinde. İşte bu durumda StackTrace tipinden yararlanabilirsiniz. Nasıl mı? Aşağıdaki fotoğrafta(ya da Ercan Hocamızın belirttiği üzere Screen Capture' da) görüldüğü gibi SmartLogger.rar (21,41 kb)

Netspecter Takipte - Object Initializer Deyip Geçmemek Lazım

Pazar, 19 Aralık 2010 23:34 by bsenyurt
Merhaba Arkadaşlar, Puslu bir sonbahar akşamında detektif Netspecter odasında sessiz sakin oturmaktadır. Loş bir ortama neden olan gece lambasının yeşil cam aksamı altından oda içerisindeki tozların sessiz ve sakin akışı bir yana, Netspecter’ ın kafasında masasına yeni gelen dosya ile ilişkili soru işaretleri koşup durmaktadır. Sıkıntılı geçen bir kaç saat sonrasında aniden telefon çalar. Ölüm sessizliği içerisinde olan odanın neredeyse canlan... [Fazlası]
Tags:   , ,
Categories:   C# | C# 3.0
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed
Bookmark and Share

Netspecter Abstract Class Peşinde

Pazar, 19 Aralık 2010 21:18 by bsenyurt
Yağmur şiddetini giderek arttırıyordu. Karanlık ara sokakta gizemli bir pardesü ise ağır ağır ilerlemekteydi. Etraftaki pis kokunun hemen sokağın başındaki çöp konteynerlerinden geldiği ap açık ortadaydı. Ancak gizemli pardesü bu kokuyu umursamıyordu bile. Bir an durdu ve şüpheli bir şekilde arkasına baktı. Karanlık içerisinde sadece gözleri belli oluyordu. Kaşlarını çattı ve bir anda irkilerek koşmaya başladı. O kadar paniklemişti ki, koşark... [Fazlası]

Fluent Interface Nedir?

Pazar, 19 Aralık 2010 18:15 by bsenyurt
Merhaba Arkadaşlar, Yazılımcı olarak bizlerin zaman içerisindeki gelişimimiz/ilerleyişimiz açısından takip etmemiz gereken önemli kişiler olduğu aşikardır. Söz gelimi çevik süreç prensiplerine ait manifestoyu hazırlayanlar arasında yer alan Martin Fowler gibi. Martin Fowler bana göre yazılım mühendisliğinin uç noktalarında yaşayan bir bilim insanıdır. Bilim insanı diyorum nitekim çalıştığı şirkette Chief Scientist pozisyonunda g... [Fazlası]

Daha iyi Kodlama için Basit Öneriler

Pazar, 19 Aralık 2010 18:01 by bsenyurt
Merhaba Arkadaşlar, Bilenler bilir, uzun süredir .Net Framework 2.0 üzerinde yazılmış ve Visual Studio 2005 ortamında geliştirilmeye devam edilen bir bankacılık uygulamasında görevliyim. Buradaki işim müşterinin yeni isteklerini sisteme katmak/katmaya çalışmak olarak düşünülebilir Aslında bu yeni görevime atanırken Visual Studio 2010 ile uğraştığımı hatırlıyorum da…Kendimi Ice Age filmindeki buz çağı devrine dönmüş canlı ... [Fazlası]
Tags:   , ,
Categories:   C#
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed
Bookmark and Share