»
Y
A
N
M
E
N
Ü
«
5 haziran 1999 roland garros bayanlar finali
ibrahim dursun @ 26 Ekim 2007 23:22

tarih 5 haziran 1999. final maçı steffi graf ile martina hingis ile oynanıyor. graf uzun bir aradan sonra jubile yapmak için sahalara geri dönmüş ve finale kadar yükselmiş. hingis ise 16 yaşında graf’ı wimbledonda eleyerek adını duyurmuş, dolayısıyla bu final ikisi için de önemli. hingis genç, atik, teknik. graf ise tecrübeli ve yaşına göre oldukça iyi durumda. maç çok hızlı başlıyor kesinlikle tenisin en uç noktalarında ceyran ediyor, olmayacak toplar çevriliyor, kıran kırana bir birinci setin ardından hingis 6-4 önde ilk seti alıyor. Devam…

Resharper gösterimi
ibrahim dursun @ 14 Ekim 2007 02:47

Resharper, JetBrains tarafından geliştirilmiş bir Visual Studio eklentisinin adı.

Bu eklenti kod yazmayı oldukça kolaylaştıran ve hatta bazı durumlarda olası buglar için bile sizi uyaran mükemmel bir araç. Resharper ile kod yazmanın nasıl olduğunu göstermek için 9 dakika civarında bir video hazırladım. Kullanabildiğim kadar çok özelliği kullanmaya çalıştım. Bazı yerlerde sırf neler önerdiğini göstermek için bilerek hatalı ya da eksik yazdım. Video bittikten sonra birde kendim seyrettim ve size şunu söyleyebilirimki videoda kullandıklarım Resharper’ın yapabildiklerinin sadece %10′u olabilir. Fakat size yinede fikir verir umarım.

Bir de son not olarak yazdığım kodun bir anlamı veya mantığı yok, sadece bir şeyler yazmak için yazdım :)

Videoyu izlemek için buraya tıklayın

Dependency Injection de ne?
ibrahim dursun @ 12 Ekim 2007 00:13

GoF’un Design Pattern kataloğundan sonra da bir sürü pattern adı ortaya atıldı ve atılmaya devam ediyor. Bu iş tam bir çılgınlığa döndü. Aynen Extreme Programming paradigmalarından sonra Agile Development, Alt.Net adıyla bir sürü türevinin ortaya çıkması gibi.

Efendim, nedir bu Dependency Injection?

Bir sınıfın ne olduğuna bakmaksızın ortak bir arayüz veya ortak bir sınıfı kullanması, yani o sınıfa ya da arayüze bağımlı hale getirilmesi. Örneğin bir veritabanı bağlantısı için IDbConnection diye bir arayüz tanımlanmış olsun. MSSQL, MySQL, vb veritabanlarına bağlanmak için bağlantı sınıfları oluştururken doğal olarak bu arayüzü kullanarak sınıflar tanımlarızki araya bir katman koyalım da veritabanı bağlantısıyla işi olan sınıflar veritabanının ne olduğuna bakmasızın işlerini yapabilsinler. Aşağıdaki kodda da dependency injection yapmış oluyoruz. Hatta bunların türleri var: Devam…

Operator Overloading kod okunurluğunu düşürür mü?
ibrahim dursun @ 11 Ekim 2007 23:39

Javada operator overloading yok. Baya bir süre neden koymuyorlar diye merak etmiştim, hatta bir yerde operator overloading’in kodun okunurluğunu azaltacağı için Sun’ın bu özelliği eklemeye sıcak bakmadığını okumuştum. O zaman da saçma gelmişti, şimdi de. Ne yani? Bir yerimizi keseriz diye evde hiç bıçak bulundurmayalım mı?

Elbette fütursuzca kullanıldığında kodun okunurluğunu düşürür fakat inanılmaz derecede arttıracağı yerler de yok değil.

.Net için Entity Spaces adında veritabanı katmanı var. NHibernate‘in aksine bu katman hiç reflection kullanmıyor, onun yerine veritabanı şablonuna göre kod oluşturuyor. Böylece xml ayar dosyalarıyla uğraşmıyorsunuz ve oldukça iyi performans elde ediyorsunuz. İşin en güzel yanı ise kod içindeki sorgular aynen bir SQL sorgusu gibi görünüyor ve okunurluğu arttırıyor. Peki bunu nasıl yapıyor? Operator Overloading ile… Devam…

Maziye gittim şöyle bir
ibrahim dursun @ 11 Ekim 2007 22:43

İlk çıktığında Visual C# 2008 Express Edition Beta 2′yi indirmiştim ama fırsat buldukça kurcalıyordum. Özellikle WPF’yi kurcalıyorum fakat henüz beta olduğu için sürekli göçüp duruyor hatta belli bir zaman sonra doğru yazdığım XAML’i bile derleyemez hale geliyor ve hatalı olduğunu söylerek beni yanıltıyordu. Ben de bir süre WPF’ye ara verdim ve diğer yenilikleri inceleye başladım.

Mesela LINQ. Deneme olsun diye bir klasör içinde yer alan dosyalardan adında önce o sonra a harfi geçen kaç tane var bir saydırayım dedim. Efendim oldu bitti. Yaptım, gözlerim karardı bir an ve şöyle bir maziye gittim, taa pascal günlerine…

Turbo Pascal veya Delphi veya dinamik olmayan herhangi bir dilde bu işi yapmak için en az 5-10 satır kod yazmak lazım. Peki bu işlem c# 3.0′da kaç satır? Bu yazıyı yazdığıma göre 5 satırdan kısa ve büyük ihtimalle 1 satır. Evet bildiniz, ben kod ekrandan taşmasın diye birkaç satıra bölüp yazıyorum buraya ama aslında 1 satır.

Console.WriteLine(
  new DirectoryInfo(@"c:\downloads")
  .GetFiles()
  .Count(f => Regex.IsMatch(System.IO.Path.GetFileName(f.Name), "o.*a"))
);

Aynı dosyaların toplam boyutu??

Console.WriteLine(
  new DirectoryInfo(@"c:\downloads")
  .GetFiles()
  .Where(x => Regex.IsMatch(System.IO.Path.GetFileName(x.Name), "o.*a"))
  .Sum(x => x.Length)
);

Hiçbir döngü yok.

Yayılma Öncelikli Arama (Breadth-First Search)
ibrahim dursun @ 6 Ekim 2007 14:10

Recursion doğru kullanıldığı zaman çok işimize yarayabilir. Özellikle ağaç tipi data yapılarının tüm nodelarını dolaşmak istediğimizde recursiondan faydalanabiliriz. Fakat bu ağaç yapısının ne kadar derinliğe sahip olduğunu kestiremediğimiz durumlarda bu yönteme çok da bel bağlamamak lazım zira stack (yığın) taşabilir ve overflow hatasıyla karşılaşabiliriz.

Alternatif bir yöntem ise kendi yığınımızı kullanarak bu işi yapmaktır. Genel adı ile Breadth First Search (Yayılma Öncelikli Arama):

  • Bir stack yaratılır ve root node’u bu yığına eklenir. (Queue ile de yapılabilir sadece işleme sıranız değişir)
  • Herhangi bir node’un alt node’ları varsa bunlar da yığına eklenir
  • Bulunduğumuz node işlenir ve yığından bir sonraki node çekilir.
  • Yığın boşalana kadar bu işlem tekrarlanır.
Tüm dizin yapısını dolaşan örnek kod: Devam…

Testlerimiz kodumuzun ne kadarını kapsıyor?
ibrahim dursun @ 2 Ekim 2007 20:20

Yazdığımız kodun doğru çalışıp çalışmadığını, istediğimiz özellikleri sağlayıp sağlamadığını testler yazarak garantilemeye çalışırız. Birçok programlama dili için test araçları mevcut, Delphi için DUnit, java için JUnit, .Net için NUnit, MbUnit vs… Fakat yazdığımız bu testlerin kodumuzun ne kadarını test ettiğini, hiç atladığımız durumlar olup olmadığını merak etmiyor musunuz? İşte bunun içinde başka bir araç var ve adı NCover.

Kod Kapsama nedir?

Testlerimizin kodun ne kadarına uğradığını ve dolayısıyla tümüne oranla ne kadarlık kod parçasının testlere dahil olduğunu ölçmek için kullanılan kalite kontrol yöntemi “Code Coverage” (Kod Kapsama) diye adlandırılır.

Kod kapsama ile ne gibi bir ölçüm yaparız?

  • Test senaryolarımız tarafından ulaşılmayan, test edilmeyen kod parçacıklarını tespit edebiliriz
  • Test edilmeyen kod parçalarını da içerecek yeni testler yazabilir ya da eski testlerimizi genişletebiliriz.
  • Gereksiz testleri tespit edip kaldırabiliriz.
  • Aslında hiç kullanmadığımız kod parçacıklarını ayıklayabiliriz
Ben Visual Studio için TestDriven.Net eklentisi kullanıyorum ve bu eklenti ile hazır NCover desteği de geliyor ki işimizi fazlasıyla kolaylaştırıyor. TestDriven.Net, kişisel kullanım için ücretsiz, fakat Visual C# Express Edition kullanıyorsanız bu eklentiden faydalanamazsınız çünkü Express Editionlar eklenti yüklenmesine izin vermiyor. Başka bir alternatif ise JetBrains’in UnitRun‘ı ki bu üründe ücretsiz.

Diyelimki bir tane Registration adında bir DTO sınıfınız ve bu sınıftaki bilgileri doğrulayan RegistrationValidator diye başka bir sınıfız var. Devam…

»  Substance: WordPress   »  Style: Ahren Ahimsa