Karmaşık Değil Son Derece Basit 29 Eylül 2011 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0 Söz gelimi geçtiğimiz hafta içerisinde vermeye başladığım ve makaleyi yazdığım tarih itibariyle devam etmekte olan bir eğitim sırasında, Binary ve XML Serileştirme konularını anlatırken, sahip olduğumuz dil ve framework materyallerinden bazılarını iç içe ve ne kadar etkili kullanabildiğimizi gördük Göz kırpan gülümseme [Daha fazla]
Tek Fotoluk İpucu-17 (Query ile Daha Şık Kodlama) 12 Temmuz 2011 Burak-Selim-Senyurt C#, C# 3.0, C# 4.0, Tek Fotoluk Ipucu 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) 11 Temmuz 2011 Burak-Selim-Senyurt C#, C# 3.0, C# 4.0, Tek Fotoluk Ipucu 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. Ç&... [Daha fazla]
Tek Fotoluk İpucu – 9 (Stopwatch ile süre ölçümü) 29 Haziran 2011 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0, Tek Fotoluk Ipucu Merhaba Arkadaşlar, Bazen yazdığımız kod parçalarının işlem sürelerini hesaplama ihtiyacı duyarız. Bu anlamda en çok kullanılan yöntemlerden birisi DateTime ve TimeSpan tiplerini ele almakta iken gerçekte en efektif olanı Stopwatch sınıfını değerlendirmektir. Nasıl mı... [Daha fazla]
Tek Fotoluk İpucu - 5 (Rastgele Sıralı Generic List Koleksiyonu) 24 Haziran 2011 Burak-Selim-Senyurt C#, C# 3.0, C# 4.0, Tek Fotoluk Ipucu 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 - 3 (Tuple) 23 Haziran 2011 Burak-Selim-Senyurt C# 4.0, Tek Fotoluk Ipucu Merhaba Arkadaşlar, .Net Framework 4.0 ile gelen Tuple tipini duymayan kalmamıştır. Duymak bir yana en büyük sorun ne zaman ve hangi amaçlar ile kullanılabileceğidir. İşte tek fotoluk ipucu serisinin bu günkü konusu. Örnek bir Tuple kullanımı. Metodlardan birden fazl... [Daha fazla]
Tek Fotoluk İpucu - 2 (StackTrace ve Çalışma Zamanı Metod Bilgisi) 22 Haziran 2011 Burak-Selim-Senyurt C#, C# 3.0, C# 4.0, Tek Fotoluk Ipucu 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... [Daha fazla]
Big Big Big Integer ve Faktöryel Hesaplarken Yüzümde Oluşan Tebessüm 20 Nisan 2011 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0 Bu hüzünlü girişten sonra bu kocaman araçların konumuzla ne alakası olduğunu düşünebilirsiniz. Aslında bu gün sizlere yine .Net Framework 4.0 ile birlikte gelen yeniliklerden birisinde bahsediyor olacağım. Aslında kocaman, iri, büyük bir yenilik. BigInteger ;) .Net Framework 4.0 ile birlikte System.Numerics.dll isimli bir assembly daha gelmektedir. Bu yeni assembly içerisinde ise aşağıdaki şekilde görülen iki Değer Türü(Value Type) yer almaktadır. [Daha fazla]
Non-Persisted Memory Mapped Files 16 Nisan 2011 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0 Hatırlayacağınız üzere bir önceki yazımızda .Net Framework 4.0 sürümüne dahil edilen Memory-Mapped Files kavramını incelemeye başlamıştık. İncelememizde ele aldığımız örnekte ise Persisted modeli göz önüne almıştık. Bu modelde bellek üzerine açılan içerikler, fiziki disk üzerinde yer alan dosyalar ile doğrudan ilişkilidir. Yani sanal belleğe açılan görünümler(Views), fiziki disk üzerindeki dosyanın belirli bir bölümü veya tamamıdır. [Daha fazla]
C# 4.0 Default Parameter Kullanımına Dikkat 13 Şubat 2011 Burak-Selim-Senyurt C# 4.0 İşte bu yazımızın konusu da; C# 4.0 ile birlikte gelen yeni dil özelliklerden birisi olan Default Parameters ile ilişkili tuzaklar. Öncelikli olarak konuya aşağıdaki hazır kod parçası ile başlayalım. [Daha fazla]
Persisted Memory-Mapped Files 17 Aralık 2010 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0 .Net Framework 4.0 ile birlikte gelen yeniliklerden birisi de Memory-Mapped File kullanımı. Herşeyden önce Memory-Mapped File kavramının ne anlama geldiğini irdeleyerek işe başlayalım. [Daha fazla]
Tuple Nedir? Anlamak, Bilmek İstiyorum. 01 Aralık 2010 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0 Tuple’ ın Türkçe' deki kelime karşılığı Demet olarak ifade edilmektedir. Matematikte elementlerin sıralanmış bir liste tasarımı olarak tanımlanmaktadır. Diğer yandan İlişkisel Veritabanı Sistemlerinde(Relational Database Management Systems) tablo içerisindeki bir satır olarak düşünülür. Dolayısıyla burada da sütunların sıralı bir dizisinden oluşan liste şeklinde ifade edildiğinde, Matematiksel tanımını da işaret ettiği ifade edilebilir. [Daha fazla]
Generic Lazy Tipi Olmasaydı 18 Ekim 2010 Burak-Selim-Senyurt C# 4.0 Hatırlayacağınız üzere Lazy nesne örnekleri üzerinden Value özelliği çağırılmadığı sürece T tipinden değer döndüren bir operasyonun çağırılması söz konusu değildir. Üstelik Value özelliğine sonradan yapılan çağrılarda T dönüşü yapan operasyonların tekrardan çağırılmadığı da bilinmektedir. Şimdi Lazy tipini kullanmadan bir sınıf özelliğinin Lazy Initializate işleminde değerlendirilip değerlendirilemeyeceğini düşünerek yola koyulalım. [Daha fazla]
Tembellik Etmek İstiyorum (Generic Lazy Tipi ile Et) 11 Ekim 2010 Burak-Selim-Senyurt C# 4.0 Aslında geliştiriciler için Lazy olmanın başka manaları da vardır. Olay sadece çimler üzerinde uzanmaktan ibaret değildir anlayacağınız. İlk akla gelen ORM(Object Relational Mapping) araçlarının birincil özelliklerinden birisi olan Lazy Loading kavramıdır. Kısaca Entity tabanlı nesnelerin/koleksiyonlarının gerektiğinde yüklenmesi şeklinde açıklayabiliriz. Ne varki .Net Framework 4.0 sürümü ile birlikte hayatımıza bir de Lazy tipi girmektedir. Base Class Library içerisine dahil edilen bu yeni generic sınıf sayesinde T tipi için Lazy Initialization işlemi gerçekleştirilebilmektedir. [Daha fazla]
Entity Framework, Data Services, C# 4.0, Excel ve Komple Bir Uygulama 26 Ağustos 2010 Burak-Selim-Senyurt C# 4.0, Entity Framework, WCF Data Services Bildiğiniz üzere bir süre önce Visual Studio 2010 ve .Net Framework ürünlerinin RTM sürümleri yayınlandı. Her iki ürünüde sizlerle birlikte , Microsoft PDC 2008 konferanslarından bu yana gerek yazılarımızla, gerek görsel derslerimizle incelemeye çalışıyoruz. Özellikle .Net Framework 4.0 açısından baktığımızda alet, edevat çantamızın dop dolu olduğunun eminimki hepimiz farkındayız. [Daha fazla]
Parent-Child Task Exception Durumları 03 Ağustos 2010 Burak-Selim-Senyurt C# 4.0, Parallel Programming, TPL Hatırlayacağınız üzere Parent-Child Tasks Kavramı başlıklı yazımızda .Net Framework 4.0 tarafında paralel programlamada önemli bir yere sahip olan Task örnekleri arasındaki Parent, Child ilişkiyi incelemeye çalışmıştık. Parent-Task nesne örnekleri arasındaki ilişkilerde bilinmesi gereken konulardan birisi de, istisnaların nasıl ele alındığıdır(Exception Handling). Aslında konuya hızlı bir giriş yaparak ilerlememiz şu aşamada avantajımız olacaktır. [Daha fazla]
Microsoft Teknoloji Günleri Akşam Sınıfı Başladı 25 Mayıs 2010 Burak-Selim-Senyurt C# 4.0, Eğitimler Bildiğiniz üzere bir süre önce Microsoft Türkiye ile birlikte Teknoloji Günleri Akşam Sınıfınını duyurmuştuk. Workshop tadında olan eğtimlerde ki amacımız, .Net Framework 4.0 tarafında gelen yenilikleri basit bir şekilde aktarmak ve tanıtmak. Bu gün başlayan servüvenimizin ilk dersinde, C# 4.0 ile Birlikte Gelen Yeniliklere değindik. 4 basit örnekle tanıdığımız yeni özelliklerde ilk olarak Reflection yerine dynamic kullanımını ve IronPython ile yazılmış bir kod içeriğinin çağırılmasını inceledik. Bu sayede dynamic diller ile olan etkileşimi de irdelemiş olduk. Ardından COM Interop tarafında gelen yenilikleri ve Optional, Named Parameters ve Ommiting Ref gibi konuları Office etkileşimi olan bir örnek üzerinden değerlendirdik. Son olarak Generic Covariance ve Contravariance konusuna giriş yaparak basit bir örnekle konuyu pekiştirmeye çalıştık. [Daha fazla]
C# 4.0 - Metod Overloading ve Dynamic Tipler 13 Nisan 2010 Burak-Selim-Senyurt C# 4.0 Bu gün kü yazımızda Dynamic tiplerin, metodların aşırı yüklenmesi(overload) durumunda nasıl bir duruma neden olduklarını incelemeye çalışıyor olacağız. Bildiğiniz üzere bir metodun aynı isme ait birden fazla versiyonu yazılabilmektedir. Bu durum kısaca metodların aşırı yüklenmesi(Overloading) olarak adlandırılmaktadır. Metodların aşırı yüklenmesindeki en büyük gayelerden birisi de, aynı amaca hizmet eden ama bunu farklı sayıda veya tipte parametre ile yerine getirebilen fonksiyonların farklı isimler ile yazılmasını engellemek ve böylece anlamsal bütünlüğü korumaktır. .Net Framework, ilk versiyonundan itibaren bu özelliği içermektedir. Çok eskiden eğitmenlik yaptığım dönemlerde, metodların aşırı yüklenmesi konusu ile ilişkili olarak verdiğim ilk örnek her zaman için Console sınıfının static WriteLine metodu olmuştur. [Daha fazla]
Object vs Dynamic 31 Mart 2010 Burak-Selim-Senyurt C#, C# 3.0, C# 4.0 Ayrıntılar detaylarda saklıdır. Bu cümleyi çok severim. Sevdiğim özlü sözler arasındadır. Gerçel bir nesnenin ne kadar kaliteli olduğunu anlamak için detaylarına bakmak gerekir. İşçiliğine, kullanılan malzemeye, malzemelerin uyumuna vs...Hatta benzer diğerleri ile olan kalite farkını anlamak için bile. Çok doğal olarak yazılım dünyasında da bir takım konuların anlaşılabilmesi, kavranabilmesi, benzerleri ile olan farklarının irdelenebilmesi için mutlaka detaylara bakmak, ama sıkılmadan bakmak gerekir. Aynen bu günkü yazımızda yapacağımız gibi. [Daha fazla]
Webiner - C# 4.0 - Yenilikler [Beta 2] 06 Ocak 2010 Burak-Selim-Senyurt C# 4.0 Çok eskiden bir Delphi programıcısydım. Açıkçası o dönemlerde Delphi geliştirme ortamının hayranı olduğumu itiraf etmeliyim. Delphi 1.0 ile başlayan profesyonel iş yaşantımda ilk geliştirmeye çalıştığım ve neredeyse para kazanmak üzere olduğum programı üniversiteden çok değerli bir sınıf arkadaşım(Orkun Şentürk) ile birlikte yazamamıştık. Arkadaşımın motorsiklet satın aldığı bir mağazaya indirim karşılığında basit bit stok takip programı yazacaktık. Ne varki arkadaşım bir gün motorsikletinin sinyal lambasını kırdı ve 100 Mark değerinde olan lambayı karşılamak için programa yeni özellikler dahil ediliverdi. [Daha fazla]
C# 4.0 - Invariance, Covariance, Contravariance ??? 22 Aralık 2009 Burak-Selim-Senyurt C# 4.0 Aslında .Net' in ilk duyurulduğu ve C#, Vb.Net gibi nesne yönelimli yönetimli dillerin(Managed Languages) dünyaya geldiği anlardan bu yana kalıtımsal ilişkide olan tipler arasında bazı referans geçişlerinin yapıldığını bilmekteyiz... [Daha fazla]
C# 4.0 ile Code Contracts 18 Aralık 2009 Burak-Selim-Senyurt C# 4.0 Uzun süredir ilgimi çeken ama fırsat bulamadığım konulardan birisidir Code Contracts. Özellikle test süreçlerinde önem arz eden ve kodun çalışma zamanında veya kodlama zamanında varsayımsal bazı koşulları sağlayıp sağlamadığını tespit etmemizi sağlayan bir yenilik olarak düşünülebilir... [Daha fazla]
C# 4.0 - COM Interop İyileştirmelerinden Dynamic Import ve Ommiting Ref [Beta 2] 14 Aralık 2009 Burak-Selim-Senyurt C# 4.0 Bildiğiniz üzere C# 4.0 ile birlikte yine köklü dil değişiklikleri hayatımıza girmiş bulunmakta. Özellikle dinamik diller ile olan etkileşimin arttırılması ve COM dünyası ile olan haberleşmede getirilen yenilikler son derece önemli... [Daha fazla]
.Net 4.0 - Lazy Initialization [Beta 2] 14 Aralık 2009 Burak-Selim-Senyurt C# 4.0 Lazy Initialization yetenekleri sayesinde programların gereksiz bellek tüketimlerinin önüne geçilebilir ve ayrıca performans kazanımı sağlanabilir. Aslında uygulamalarımızda Lazy Initialization kullanmamız için gerek ve yeter iki sebep bulunmaktadır... [Daha fazla]
C# 4.0 - ExpandoObject 21 Ekim 2009 Burak-Selim-Senyurt C# 4.0 Bildiğiniz üzere .Net Framework 4.0 ile birlikte gelmesi muhtemel en köklü yenilikler arasında Dynamic Language Runtime alt yapısı yer almaktadır. Bu anlamda daha önceden dynamic anahtar kelimesini inceleyerek tiplerin dinamik olarak oluşturulup kullanılmasını kavramaya çalışmıştık. Bu yazımızda nasıl bir yenilikten bahsedeceğimizi anlatabilmek için öncelikle aşağıdaki kod parçasına odaklanmanızı istiyorum. [Daha fazla]