1/19/2010

Visual Studio 2010 ve .Net 4.0 RTM Tarihi

Visual Studio  2010 ve .Net 4.0 için resmi RTM tarihi 12 Nisan 2010 tarihine ertelenmiş. Şubat ayında da Release Candidate'i indirebiliyor olacaz.

Kaynak :  http://www.infoq.com/news/2010/01/vs2010-launch-postponed

1/18/2010

Blogger'da Syntax Highlighting

Sonunda bu işi için vakit ayırabildim. Şimdiye kadar açık kaynaklı iki tane javascript çatısı ile deneme yaptım. Bir tanesi Prettifier'dı. Google code altında bulunabilir; ama kodlarımı baya bir yamulttu ve kullanmaktan vazgeçtim haliyle:)

Diğer ise http://alexgorbatchev.com adresinden temin edebileceğiniz Syntaxhiglighter projesiydi. Gayet başarılı buldum ve kullanıyorum. İşin bir güzel yanı da, yazan arkadaş Blogger kullanıcıları için de düşünceli davranmış(en azından blogger = true diye ne amaçlı olduğunu bilmediğim bir config değeri var:). Ayrıca blogger'a javascript dosyası upload edemediğim için, sitenin trunk'ını javascript dosyalarını link vermek için kullandım. Zaten, yazan arkadaş da buna izin vermiş ve kullanılan versiyon için belirttiği path'leri değiştirmeyeceğini taahüt etmiş.

Blogum şimdi CSS saldırısına açık, arkadaşın bir kaç satır değiştirmesine bakar sadece:) Böyle bir ihtimalden korkmasam da kendime uygun bir hosting bakmakta da fayda var:)

1/16/2010

Blogumun Tasarımını Düzenledim

Blogumu açtığım zaman hoşuma gitmeyen bir şey vardı. Yazdığım kod örnekleri gerçekten çirkin görünüyor; çünkü tasarımda blog kayıtlarının yer aldığı bölüm için varsayılan genişlik çok küçüktü.

Bu alanı biraz büyüttüm; fakat bunu yaparken de yuvarlanmış köşeleri feda etmek durumunda kaldım. Varsayılan sabit genişliğe uygun olarak tasarlanan geri plan resimlerini düzenlemek gerekiyordu ve image editor özürlü biri olarak da bununla uğraşmak istemedim doğrusu:)

Diğer feda ettiğim bir nokta da, 1024x768 çözünürlüğü altı için artık yatay düzlemde scroll bar'lar çıkacak; ama pratikte bu çözünürlüğün altını kullanan kaldığını da pek sanmıyorum. Yanılıyorsam lütfen uyarın!

Şimdi içime sındı. Bir de code highlight yapılabilse....

1/14/2010

Blogger Bug :(

Az önce farkettim ki, ara ara kaydettiğim bir blog yazısını publish ettiğim vakit, Friend Feed'e entegrasyonda ilk kaydettiğim saat üzerinden düşüyor. Dolayısıyla aşağılarda bir yerde görünüyor.

Etiketleme Üzerine

Etiketlemede en önemli hususlardan biri tutarlılık. Aynı kayıt için etiketlerimizin birbiriyle çelişmemesi, sistem genelinde de aynı anlama gelecek varyasyonlardan sakınılmasını ifade eder. Örnek olarak seyahat diye bir etiketim varsa, gezi gibi bir etiket kullanmak çok da manalı olmayacaktır(biraz farklı anlamlara gelseler de).

Diğer bir husus da işe yarayan bir şey olması. Benim durumumdaysanız, etiketlerin bir blog için en iyi şekilde düzenlenmesi üzerinde duruyorsunuzdur. Amaçlarım; etiketler vasıtasıyla site içerisinde gezinmeyi kolaylaştırmak, kayıtlarım için kategorileme sistemi oturtmak, benzer kayıtları birlikte göstererek konu hakkında bütüne dikkat çekmek ve arama motorlarına daha sevimli görünmek.

Etiketleri belirlerken (Bunlar şahsi olarak kafama yatan düşüncelerdir, bir referans olması açısından yazmıyorum) :

Kısa, basit ve hatırlanabilir isimlerden oluşmalı,
Küçük harflerden oluşmalı ki tutarlılık prensibimize uysun (ya da hepsi büyük harflerden; lakin hiç büyük harflerden oluşan bir etiket gördüğümü hatırlayamadım),
Tekil ifadeler kullanılmalı,
Mümkün olduğu kadar tek kelimeden oluşan nitelemelerde bulunmalıyım.

Bundan sonra izleyeceğim yol, yukarıdaki prensipleri de göz önünde bulundurarak :

Etiketlerimde en bir kelime, kategoriyi belirlerken, diğer kelimelerde yazının içeriğinin dizinini oluşturmalı. Esasında etiketler ile kategoriler arasında pratikte bir fark var. Kategoriler sınıflardırma için kullanılırken, etiketler dizin oluşturma amaçlıdır. Benim durumunda blogger bu şekilde bir mekanizma sağlamadığı için etiketleri iki amaçlı olarak da kullanabilir kılmak istiyorum. Benim işime bu şekilde geliyor:)

Etiketler

Blog girişi yaparken belirttiğim etiketlere, geçmişe dönük olarak, baktığım zaman çöplüğe döndüğünü gördüm. Biraz özensiz davranmışım. Daha ruhuna uygun davranmak adına tekrar bütün girişlerim için düzenleme yapmalıyım en kısa zamanda:)

Bu işin nasıl yönetilmesi konusunda tavsiyelere bakıyorum. Fırsat bulursam blogumda da paylaşmak isterim.

1/10/2010

Yegane Tasarım Deseni ( Singleton)

Yegane tasarım deseni, veya bilinen adıyla Singleton, sistemlerde yine sık olarak kullanılan desenlerden birisidir. GOF sınıflandırmasında yaratılışsal desenler içerisinde yer alır. Bence uygulaması en kolay pattern’dir.

Tanımı : Yegane sınıflarlar, belli bir bağlam içerisinde sadece bir örneğe sahip olabilirler.



Gerçek bir örnek verelim. Yapılandırma değerlerimizi dosyadan okuduğumuzu varsayalı. Her değer okumak istediğimizde, gidip bunu dosyayı açarak okumak mantıklı olmayacaktır. Bütün yapılandırıcı değerler dosyadan bir kere okunduktan sonra, bunları hafızadan almak daha yapılabilir bir çözüm olur.

YeganeSinif : YapilandirmaOkuyucu

Gerçekten çok basit bir desendir. Yapilandirma okuyucunun private bir constructor’ı vardır ve bu sınıfı kullanmak isteyen diğer sınıflar, YapilandirmaOkuyu.Ornek property’sinini kullanmalıdır. Ornek property’si gerçek yegane örneği taşıyan static alan’ı kontrol eder, eğer daha önceden örnek buraya atanmışsa, aynısını kullandırtır. Daha önceden hiç örnek yaratılmamışsa, yaratır ve static alanımıza atadıktan sonra kullanılmak üzere dışa sunar. Bırakalım kodlar açıklasın:

Mock Object Frameworks

Temel olarak mock object framework'leri bizim interface (gerçekten!) ve sınıflarımızın proxy'lerini oluşturarak, bizim bu nesneler üzerindeki erişimi kontrol etmemize yarıyorlar. Bu şekilde proxy'ler üzerinden beklentilerimizi ve stub davranışlarımızı set edebiliyoruz.

Bence gerçekten incelemeye değer iki tane framework var. Rhino Mock ve TypeMock.

Rhino Mock open source ve ücretsiz bir framework. Gerçekten, piyasada mock denince akla gelen ilk framework. Oren Eini gerçekten süper bir iş çıkarmış ve dotnet'in gelişimine paralel olarak framework'ü sürekli güncellemiş. Bu şekilde framework eskimeden sürekli ayakta kalmış bir durumda. (www.ayende.com)

TypeMock ücretli ticari bir ürün. Piyasada daha az tutuluyorsa, bence tek nedeni ücretli olması . Rhino Mock'a kafa tutar ve hatta çalım atabileceği çok üstün bir özelliği var. Rhino Mock için gerçekten test edilebilir bir kod yazmak gerekirken, TypeMock (en azından bir yere kadar) ise hemen hemen bütün kodları test edilebilir kılıyor. Bir mock object framework'ünden fazlası var. (www.typemock.com)

Kısmet olursa Rhino Mock hakkında daha fazla yazmak istiyorum. TypeMock'u da o kadar methettik ama onun hakkında yazmamın bir anlamı yok sonuçta, sonuçta ücretli bir ürün. Ben para verebilirim diyen, trial'ını download eder inceler:)

1/08/2010

Mock Testleri

Mock testleri ilgimi uzun süredir ilgimi çekiyor. Pratikte test yazacak çok zamanımız olmasa da, mock testleri ile test edilmesi güç, hatta fizibil olmayan senaryoları, test edilebilir hale getirebiliyoruz. Bu güzel bişey tabi.

Yalnız aklıma takılan bir husus şudur ki, kavramsal olarak mock testleri esasında bir beklentinin testini ifade ediyor. Yalnız şunu gerçek ki; ben, çoğu zaman mock testi dediğim kavramdan sadece stub'ları oluşturabilmek için yararlanmak istiyorum. Bknz. (http://martinfowler.com/articles/mocksArentStubs.html). Bu konu, üzerinde düşünmeye gerçekten değer. Bence; entegrasyon testlerinin, davranış beklentilerinin önceden ayarlanması ile, oluşturulması çok faydalı olabilecek bir pratik.

Google Desktop

Yeğenimin resmini desktop'a bir resim çerçevesi olarak koymak istiyordum. Internette bunu yapabilecek uygulamalara bakarken, farkettim ki o kadar da uzaklara gitmeye gerek yok:) Google Desktop'ın gadget'larından biri bu işi yapmaya zaten talipmiş. Seçeneklerinde, ilgili dizinleri ekleyerek, bu dizinler altında yer alan resimleri slide show olarak ekranımız sağ tarafında her zaman bulundurabiliyoruz. Ayrıca yine çok yararlı olabilecek başka gadget'ler da var. Kullanmak isteyenlere tavsiye edilir.