Tasarım Desenleri - Strategy 03 Temmuz 2009 Burak-Selim-Senyurt Tasarım Kalıpları(Design Patterns) Bir süredir tasarım prensiplerini(Design Principles) incelemeye çalışıyoruz. Tabiki prensipler iyi bir yazılım modeli ve geliştirilmesi için yeterli değildir. Çoğu prensip kendi içerisinde çeşitli tasarım desenlerini(Design Patterns) uygulamaktadır... [Daha fazla]
Tasarım Prensipleri - Interface Segregation 02 Temmuz 2009 Burak-Selim-Senyurt Tasarım Prensipleri(Design Principles) Bir süredir pek çok nesne yönelimli yazılım disiplininde önem arz eden ve kullanılan Tasarım Prensiplerini(Design Principles) incelemeye ve öğrendiklerimi sizlere aktarmaya çalışıyorum. Şu ana kadar pek çok prensibi inceledik ve kısaltmalarına tanık olduk. [Daha fazla]
Tasarım Prensipleri - Dependency Inversion 30 Haziran 2009 Burak-Selim-Senyurt Tasarım Prensipleri(Design Principles) Bu yazımızda Dependency Inversion isimli tasarım prensibinden bahsediyor olacağız. Bu prensip kabaca, alt sınıflar ve üst sınıflar arasında kuvvetli bir bağ olmamasını önermektedir. Bunun en büyük gerekçesi, alt sınıflarda olabilecek sık değişiklerin, üst sınıfında değişmesine neden olabilecek olmasıdır ki bu hızla değişen yazılım ihtiyaçlarında sorunlara neden olmaktadır. [Daha fazla]
Tasarım Prensipleri - Liskov Substitution 29 Haziran 2009 Burak-Selim-Senyurt Tasarım Prensipleri(Design Principles) Bu günkü blog yazımızın kahramanı Barbara Liskov(http://en.wikipedia.org/wiki/Barbara_Liskov). Ve tahmin edeceğiniz üzere konumuz tasarım prensipleri içerisinde uygulanan disiplinlerden birisi olan Liskov Substitution(LSP) ilkesi. Bu ilke üst sınıf(Base Class) ve alt sınıf(Sub Class) arasındaki ilişkinin rol aldığı bir prensip olarak göz önüne alınabilir aslında. İlkenin özet cümlesini söylemeden önce basit bir örnek üzerinden ilerlemenin daha iyi olacağı kanısındayım. Nitekim özet cümleyi okuduğunuzda kafanızın karışmamasını garanti edemeyeceğim... [Daha fazla]
Tasarım Prensipleri - Single Responsibility 26 Haziran 2009 Burak-Selim-Senyurt Tasarım Prensipleri(Design Principles) Sanıyorum benim gibi eskiler, yandaki resimde yer alan değerli ressamı hatırlayacaklardır. Bob Ross. Küçüklüğümde(ve halen Smile) Bob Ross' un TRT televizyonunda yayınlanan Resim Sevinci programlarını zaman zaman izler ve yarım saatlik sürede çizdiği doğa manzaralarına bakakalırdım. Rahmetli Bob bu günkü Tasarım Prensipleri uyarlanması sırasında Einstein ile birlikte küçük bir rol üstleniyor olacak. Öyleyse sözü fazla uzatmadan konumuza geçelim. [Daha fazla]
Tasarım Prensipleri - Open Closed 25 Haziran 2009 Burak-Selim-Senyurt Tasarım Prensipleri(Design Principles) Bir önceki yazımda, yazılm tasrımında benimsenen ilkelerinden birisi olan Loose Coupling prensibine değinmiştik. Bu yazımızda ise, Open Closed(Açık Kapalı) prensibine değiniyor olacağız.(Bu prensibini pek çok yazılım disiplininde görebilirsiniz. Örneğin eXtreme Programming veya Aspect Oriented Programming-AOP içerisinde.) [Daha fazla]
Tasarım Prensipleri - Loose Coupling 24 Haziran 2009 Burak-Selim-Senyurt Tasarım Prensipleri(Design Principles) Yazılım teknolojilerinde uygulanan tekniklerin çoğunda temel tasarım prensipleri sıklıkla ele alınmaktadır/Alınmalıdı. Örneğin eXtreme Programming, Aspect Oriented Programming vb... yazılım geliştirme tekniklerinde bu prensiplerin çoğuna rastlayabiliriz. Bu yazı ile birlikte Temel Tasarım Prensiplerinin incelenmesine başlıyor olacağız ki özellikle büyük çaplı projelerde bu tip disiplinler büyük bir öneme sahiptir. [Daha fazla]
Caching Application Block Merakı 20 Haziran 2009 Burak-Selim-Senyurt Enterprise Library Az önce 1966 yılında çevrilmiş olan ve küçüklüğümde bol bol izlediğim nefis bir filmi belkide 179ncu kez tekrardan seyrettim. Eskiler aşağıdaki resimden hangi film olabileceğini tahmin edebilirler. Yeni nesilden seyretmeyen varsa eğer The Good, The Bad and The Ugly filmini mutlaka tedarik edip izlesinler. Peki bunun anlatacağım konu ile bir ilgisi var mı? Hayır yok. Cool Sadece off-topic bir giriş yapmak istedim. [Daha fazla]
Organik Yazılım Günü 18 Haziran 2009 Burak-Selim-Senyurt Seminerler Merhaba Arkadaşlar, 27 Haziran 2009 Cumartesi günü mezun olduğum Yıldız Teknik Üniversitesinde, Microsoft' un açık kaynak kod tarafındaki çalışmaları ile ilişkili bir seminer düzenleniyor olacak. Bu seminerde bende WCF Rest Starter Kit paketini aktarıyor olacağım. ... [Daha fazla]
Parallel.For Metodu için Stop, Break Kullanımı [Beta 1] 18 Haziran 2009 Burak-Selim-Senyurt Parallel Programming Parallel.For metodu bildiğiniz gibi döngüsel işlemleri birden fazla göreve bölerek kısa sürede yapılmasına olanak sağlamaktadır. Bu yazımda, kelimeler ile ifade etmeyi bir türlü beceremediğim ancak bir örnek üzerinden sizlere aktarabileceğim Stop ve Break metodları üzerinde durmaya çalışacağım. [Daha fazla]
Concurrent Collections : Macera BlockingCollection<T> ile Devam Ediyor [Beta 1] 16 Haziran 2009 Burak-Selim-Senyurt Parallel Programming Bir önceki blog yazımda paralel programlama kabiliyetlerinden birisi olan Concurrent Collections(Eş Zamanlı Koleksiyonlar) kavramını incelemeye çalışmıştım. Ne varki kendimi bunlara olan gereklilikler konusunda bir süredir ikna edebilmiş değilim. Dolayısıyla ihtiyaçları ortaya koymak adına basit bir senaryo üzerinden ilerlemeye karar verdim. Aslında eş zamanlı koleksiyonların kullanılması için en büyük gereksinim, bir koleksiyonun elemanları üzerinde aynı anda işlemler yapılmak istenmesi halinde ortaya çıkmaktadır. [Daha fazla]
Concurrent Collections (Eş Zamanlı Koleksiyonlar) [Beta 1] 12 Haziran 2009 Burak-Selim-Senyurt Parallel Programming .Net Framework 4.0 ve içerdiği paralel genişletmeler(Parallel Extensions) ile birlikte gelmekte olan yenilikler arasında, eş zamanlı(Concurrent) çalışabilen ve Thread Safe olan koleksiyonlarda bulunmaktadır. Bu koleksiyonlar aslında veri yapıları(Data Structures) ile birlikte gelen yeni tipler arasında yer almaktadır. [Daha fazla]
for mu, foreach mi? Yoksa Parallel.For mu, Parallel.ForEach mi? [Beta 1] 09 Haziran 2009 Burak-Selim-Senyurt TPL Gecenin bu saatinde uyuyamayıp blog' uma bir şeyler yazmak isteyişimin sebebi, bu gün bir okurumdan gelen şu sorudur; "Madem Parallel.For veya Parallel.ForEach ile herşey daha hızlı oluyor, niye normal for ve foreach döngülerini bu formasyona sokmuyorlarda ek bir şeyler ilave ediyorlar". Dolayısıyla klavyemi elime aldım ve hemen bir test programı yazmaya koyuldum. [Daha fazla]
TPL - İptal İşlemi [Beta 1] 08 Haziran 2009 Burak-Selim-Senyurt TPL Bir önceki blog yazımda, TPL kullanılarak WinForms uygulamalarında paralel işlemlerin nasıl yapılabileceğini ele almaya çalışmıştım. Örnekte son geldiğimiz noktaya bakıldığında aşağıdaki kazanımları elde ettiğimizi düşünebiliriz. [Daha fazla]
TPL ile WinForms Macerası [Beta 1] 07 Haziran 2009 Burak-Selim-Senyurt TPL Dün gece Task Parallel Library ile ilgili olarak internette araştırma yaparken, örnekleri çoğunlukla(hatta tamamen) Console uygulamaları üzerinde geliştirdiğimi farkettim. Oysaki TPL veya PLINQ gibi alt yapıların, WinForms yada WPF(Windows Presentation Foundation) uygulamalarında nasıl kullanılabileceğide önemli bir konuydu. Özellikle Windows Form' larının TPL çalışmalarına karşı nasıl tepkilerde bulunabileceği belkide en önemli noktaydı. [Daha fazla]
TPL için Önemli Bir Kavram : Task [Beta 1] 04 Haziran 2009 Burak-Selim-Senyurt TPL Bir önceki blog yazımda Task Parallel Library alt yapısının ne olduğunu sizlere aktarmaya çalışmıştım. Tabiki bu alt yapı üzerinde durulması gereken pek çok konu bulunmaktadır. Heyecanım çok, anlatmak içinde sabırsızlanıyorum. Ama her zamanki gibi adım adım ilerlemekte ve acele etmemekte yarar olduğu kansındayın. TPL ile ilişkili önemli konulardan birisi Task(yada Task) sınıfıdır. TPL esas itibariyle görev adı verilen küçük iş parçaları üzerine kurulu bir yapı olarak düşünülebilir. Bu nedenle Task sınıfı son derece önemlidir. [Daha fazla]
TPL(Task Parallel Library) Nedir? [Beta 1] 03 Haziran 2009 Burak-Selim-Senyurt TPL Özellikle işlemcilerin bu şekilde ilerlemesine paralel olarak, yazılım geliştirme ortamlarında da pekala pek çok değişiklik ve yenilikçi fikir ortaya çıktı. Son zamanların özellikle Microsoft .Net cephesindeki en popüler konularından biriside paralel genişletmeler(Parallel Extensions). Bir başka deyişle, sistemin sahip olduğu işlemci gücünün tümünü kullanarak(Arabanın hakkını ver hakkını Smile ), paralel işlemler veya eş zamanlı yürütmelerin gerçekleştirilmesi. [Daha fazla]
.Net RIA Servisleri - Özel Doğrulama(Custom Validation) 31 Mayıs 2009 Burak-Selim-Senyurt .Net RIA Services ir önceki blog yazımızda, .Net RIA Servislerin kullanıldığı Silverlight uygulamalarında doğrulama(Validation) işlemlerinin nasıl yapılabileceğini incelemeye çalışmıştık. Bu yazımızda ise, Range, Required, StringLength, RegularExpression gibi built-in niteliklerle(attribute) gerçekleştirilen doğrulamalar haricinde kalan özel durumlar için nasıl ilerleyebileceğimizi araştıracağız. Konuyu adım adım irdelersek, aşağıdaki işlemleri yapmamız gerekmektedir. [Daha fazla]
PLINQ - ForAll [Beta 1] 28 Mayıs 2009 Burak-Selim-Senyurt LINQ, PLINQ Bildiğiniz gibi bir süredir LINQ sorgularının paralel çalıştırılması ile ilişkili çalışmalarıma ve araştırmalarıma devam etmekteyim. Bu yazımdaki konumuz ise System.Linq.ParallelEnumerable static sınıfı içerisinde tanımlanmış olan ForAll genişletme metodudur(extension methods). [Daha fazla]
Paralel Sorgularda İstisna Yönetimi(Exception Handling) [Beta 1] 26 Mayıs 2009 Burak-Selim-Senyurt LINQ, PLINQ Yönetimli kod(Managed Code) tarafında istisna yönetimi oldukça önemli konulardan birisidir. Uygulamaların veya kod süreçlerinin istem dışı sonlanmasının önüne geçilmek istendiği durumlarda, basit try...catch...finally bloklarından yararlanabilir yada Enterprise Library gibi kütüphanelerin sunduğu bloklardan faydalanarak istisna yönetimini üst seviyede sağlayabiliriz. [Daha fazla]
PLINQ - Paralellik Altında Ardışık(Sequential) Çalışmak [Beta 1] 25 Mayıs 2009 Burak-Selim-Senyurt LINQ, PLINQ Bir önceki blog yazımızda PLINQ ifadelerinde sıralama konusuna değinmeye çalışmıştık. Bu yazımızda ise, paralel olarak çalıştırılan LINQ sorguları içerisinde, ardışık(Sequential) olarak nasıl işlem yapılabileceğini incelemeye çalışacağız. [Daha fazla]
PLINQ - Sıralamayı(Ordering) Korumak [Beta 1] 23 Mayıs 2009 Burak-Selim-Senyurt PLINQ Hatırlayacağınız gibi, PLINQ(Parallel LINQ) ile ilişkili ilk yazımda, LINQ sorgularının eş zamanlı olarak nasıl çalıştırılabileceğini incelemeye çalışmıştık. Hello World örneğimizde ağırlıklı olarak aşağıdaki sorgu üzerinde durmuştuk. [Daha fazla]
PLINQ (Parallel LINQ) - Hello World [Beta 1] 21 Mayıs 2009 Burak-Selim-Senyurt LINQ, PLINQ Bildiğiniz gibi son yazımı deniz kenarında bir kafede tatildeyken yazmıştım Wink Ama tatil bitti malesef ve tekrardan Morpheus' un sözleri kulaklarımda çınladı "Wellcome to the real world". Cry Yinede 1 haftalığınada olsa tatil yapabildiğime şükrediyorum. Gerçek dünyaya döndükten sonra tabiki bir süre adaptasyon sorunları ile karşılaşıyor insan doğal olaraktan. Bu adaptasyon sorunları içerisinde boğuşurken, neleri araştırabilirim diye düşünürken buluverdim kendimi. [Daha fazla]
.Net RIA Servisleri - DomainDataSource Kulanımı 14 Mayıs 2009 Burak-Selim-Senyurt .Net RIA Services Her ne kadar şu günlerde güzel ülkemizin Ege kıyılarında kısa bir dinlenme molası vermiş olsamda, internetin sahil kıyılarındaki cafe' lere kadar girmiş olması, herşeyi değiştiriyor. Cool Artık bir yaşam tarzı haline gelen Yazılımdan, onun gizemli dünyasından uzak durmak bu nedenle, şu sıralar aşağıdaki şekilde görülen yerde tatilde bile olsam çok zor. [Daha fazla]
.Net RIA Servisleri - CRUD İşlemleri 14 Mayıs 2009 Burak-Selim-Senyurt .Net RIA Services Bildiğiniz gibi bir süredir .Net RIA Servisleri ile ilişkili araştırmalarıma devam etmekteyim. Bu yazımızda, .Net RIA Servislerinde Insert, Update ve Delete işlemlerini nasıl yapabileceğimizi basit bir örnek üzerinden adım adım aktarmaya çalışacağım. [Daha fazla]