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 - 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)
Composite Cancellations 26 Nisan 2011 Burak-Selim-Senyurt Parallel Programming, TPL Bildiğiniz üzere Task iptal taleplerinde, CancellationTokenSource örneğine ait Cancel metodunun çağırılması gerekmektedir. CancellationTokenSource örneği üzerinden yapılan iptal taleplerinin hangi Task işleyişini keseceğinin belirlenmesinde ise CancellationToken örneklerinden yararlanılmaktadır. [Daha fazla]
Task İptal İşlemlerinin İzlenmesi(Monitoring Cancellation) 23 Nisan 2011 Burak-Selim-Senyurt Parallel Programming Bu yazımızda daha önceden .Net Framework Beta 1 ve Beta 2 sürümlerinde incelediğimiz Task iptal işlemlerini son sürümde ele alıp toparlamaya çalışıyor olacağı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]
TPL Senkronizasyonu Sağlamak – 2 (Interlocked) 31 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Hatırlayacağınız üzere TPL Senkronizasyonu Sağlamak – 1 başlıklı yazımız ile Task Parallel Library(TPL) tarafında senkronizasyon kullanımını incelemeye başlamıştık. Aslında başımıza iş mi açtık bilemiyorum ama sonuç itibariyle kritik bir konu olduğunda sanıyorum ki hepimiz hem fikiriz. Önceki yazımızda değerlendirdiğimiz senaryoda, lock keyword kullanımı ile izole edilmiş bir veri alanının, farklı iş parçaları tarafından nasıl güvenli bir şekilde kullanılabileceğini analiz etmiştik. Üstelik bu keyword’ ün aslında arka planda Monitor tipini kullandığını da Intermediate Language(IL) kodunda görmüştük. Elbette iş parçalarının senkronizasyonu için kullanılabilecek farklı tipler de söz konusudur. Interlocked sınıfı gibi. [Daha fazla]
TPL ve Shared Data Isolation 20 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Task Parallel Library alt yapısını kullanarak geliştirdiğimiz paralel kodlarda önem arz eden konulardan birisi de, paylaşılan verilerin hesaplamalara katıldığı durumlardaki sonuç tutarlılıklarının nasıl sağlanacağıdır. Bunun bilinen bir kaç yolu vardır. Aslında bir tanesi ve en basiti kodu tamamen senkron olarak geliştirmektir. Yani paralel çalıştırmak gibi bir maceraya hiç girmemektir. Diğer bir yol ise Task örnekleri içerisinde ele alınan paylaşılmış verilerin izole edilerek kullanılmasıdır. [Daha fazla]
Paralel Programlamada İstisna Yönetimi 13 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Task örneklerinin kullanıldığı senaryolarda, bloklar içerisinde yer alan işlevselliklerin doğurabileceği çalışma zamanı istisnalarını ele almak, son derece önemlidir. Nitekim paralel çalışmakta olan blokların beklenmedik bir şekilde sonlandırılması söz konusudur. İşte bu yazımızda Task örnekleri içerisinde oluşabilecek istisnaların nasıl ele alınabileceğini incemelye çalışıyor olacağız. [Daha fazla]
Task Wait,WaitAll,WaitAny 06 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Task Süreçlerinde Bilinçli Olarak Duraksatma başlıklı bir önceki yazımızda CancellationToken.WaitHandle.WaitOne, Thread.Sleep ve Thread.SpinWait metodlarından yararlanarak bir Task çalışmasının bekletme işlemlerinin nasıl yapılabileceğini incelemeye çalışmıştık. [Daha fazla]
Task Süreçlerinde Bilinçli Olarak Duraksatma 31 Aralık 2010 Burak-Selim-Senyurt Parallel Programming Bu günkü konumuz Task nesne örneklerinin işlettikleri süreçleri bilinçli olarak nasıl bekletebileceğimiz ile ilgilidir. Pek çok sebepten dolayı Task örneklerinin çalıştırdıkları iş parçalarının belirli süreler boyunca veya süre bağımsız olarak bekletilmeleri istenebilir. Burada zaman bağımlı ya da koşul bağımlı olarak bekletmelerin/duraksatmaların yapılabilmesi söz konusudur. Genel olarak 3 farklı bekletme tekniğinden söz edebiliriz. [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]
Regex ve Performans İpuçları – Otomatik Cache 06 Ağustos 2010 Burak-Selim-Senyurt C# Aslında Regular Expression terimini ağırlıklı olarak Asp.Net Web uygulamalarından tanımaktayız. Bu anlamda özellikle RegularExpressionValidator web kontrolünden yararlanarak, girilen verinin doğrulanması için bazı desenleri kullanabiliyoruz. [Daha fazla]
TPL – Göz Göre Göre Başımızı Belaya Sokmak 21 Haziran 2010 Burak-Selim-Senyurt Parallel Programming, TPL Ancak birden fazla iş parçasının da deadlock’ a düşmesi, bir başka deyişle birbirlerini beklemeleri nedeniyle, içinde çalıştıkları Thread’ i(çoğunlukla ana uygulama iş parçası-Main Thread) kitlemeleri söz konusudur. Durumu daha net anlayabilmek için aşağıdaki kod parçasını göz önüne alalım. [Daha fazla]
Microsoft Teknoloji Günleri Akşam Sınıfı – Gün 2 - .Net 4.0 ile Paralel Programlama 17 Haziran 2010 Burak-Selim-Senyurt Eğitimler Tarih 22 Haziran 2010 Salı Saat 19.00 - 21.30 Yer Microsoft İstanbul Ofisi Eğitmen: Burak Selim Şenyurt Microsoft MVP Microsoft Teknoloji Günleri - Akşam Sınıfı Her ay düzenli olarak gerçekleştirece... [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]
Microsoft Teknoloji Günleri Akşam Sınıfında Buluşalım 22 Mayıs 2010 Burak-Selim-Senyurt Eğitimler Her ay düzenli olarak gerçekleştireceğimiz ve bir seri olarak birbirini takip edecek sınıf etkinliklerimizle 9 ay boyunca siz yazılım geliştiren ve tasarım yapan iş ortaklarımızla birlikte olacağız. Aşağıda detaylarını paylaştığımız ve sizler için hayli faydalı olacağına inandığımız Microsoft Teknoloji Günleri Akşam Sınıfı Etkinliğimize kaydınızı hemen yaptırabilirsiniz. [Daha fazla]
Int32 ve Int64 Haricindekiler için Parallel.ForEach 17 Mayıs 2010 Burak-Selim-Senyurt Parallel Programming Dolayısıyla bazı durumlarda en tepeden aşağıya doğru inen ve bağlı liste(Linked List) benzeri bir oluşumun sağlanması zorlaşmaktaydı. Her neyse...Eminim bu sorunlar çoktan aşılmıştır. Ancak bir önceki cümlede yer alan bağlı liste tarzı yapıların başında dolaşan bir kara bulut daha mevcuttur. Sorunun kaynağında paralel programlama amacıyla .Net ortamına kazandırılan Parallel.ForEach döngüsü yer almaktadır. Dilerseniz öncelikle sorunu masaya yatıralım. Bu amaçla aşağıdaki kod içeriğine sahip Employee isimli basit bir sınıfımız olduğunu düşünelim. [Daha fazla]
Microsoft Yazılım Geliştiriciler Teknoloji Günleri Ankara' da C# 4.0 Anlatıyorum 16 Nisan 2010 Burak-Selim-Senyurt Seminerler Microsoft Yazılım Geliştiriciler Teknoloji Günleri Ankara'da! 26 Nisan 2010 tarihinde Microsoft Türkiye Ankara ofisinde gerçekleştirilecek olan Microsoft Yazılım Geliştiriciler Teknoloji Günlerinde, C# 4.0 ile birlikte gelen yenilikleri anlatıyor olacağım. Benimle birlikte pe... [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]