Havadis – 1
Bulutlararası’na yeni bir içerik formatı kazandıralım dedik. Yazılım geliştirme teknolojilerinde vuku bulan ama tek bir yazıya konu olacak kadar hacmi olmayan hadiseleri ufakça yorumlayıp paylaşıyoruz. Gündemi kuyruğundan da olsa yakalamak gerek.
- Announcing the Release of the August 2009 CTP for the Open XML SDK – Microsoft’un hâlâ sürüne sürüne ilerleyen Open XML SDK kütüphanesi versiyon 2 ve CTP 3 durağına gelmiş. Göze çarpan özellikler, şema doğrulaması üstüne bir de anlamsal doğrulama imkanı ve otomatik kaydetme seçeneği. Yabancı olanlar için söyleyelim: bu kütüphane ile Office 2007 dokümanları oluşturabiliyor, mevcutlar üzerinde düzenleme yapabiliyorsunuz. Open XML dosya biçiminin soyutlaması kısaca. Ancak güllük gülistanlık değil; “tırmala recep” kipinde.
- Daha Faydalı Visual Studio F1 – Brian kardeşimiz, Visual Studio’nun F1 tuşunu, daha faydalı web içeriği listeleyecek makrosuyla ilişkilendirmiş. Standart F1′den daha çok işe yarayacağını söylüyor. Deneyin bakalım, öyle mi? Bu arada kim Visual Studio içinden web gezintisi yapmak ister ki?
- Web.config Temizliği – Microsoft’un elini hamurdan çekmeyen Vice President‘i Scott Bey, .NET 4.0 serisine başladı ve ilk yenilik olarak web.config temizliğinden bahsediyor. Bilen bilir, son ASP.NET sürümlerinde eklenen assembly’ler daha başlangıçta projenin ayar dosyasına giriyordu. MS, web.config’in Orhun Kitabeleri görünümünden rahatsız olduğumuzu anlayıp temizlik yapmış. Yeni sürümünde her şeyi toplamış machine.config’e aktarmış. Yeni proje açılışında beyaz bir config karşılıyor sizleri. Scott Bey’den detayları okursunuz.
- MSBuild ile T4 Şablonları Çalıştırmak – Microsoft’un bence en büyük ayıplarından birisi, T4 adında bir şablonlama motoru yapıp onu geliştiricilere sunmamasıdır. Solda link’ini verdiğimiz yazılar da bu ayıbın neticeleridir. Adamlar MSBuild ile bu T4 motorunu işletmeye çalışıyor. Vah garibim, vah. Tamam deneyin derim. Ama bir programcı bu kadar zora koşulur mu? Ne işi var adamın ufak bir templating işinde proje derleme script’leriyle. Böyle bencillik görülmedi arkadaşlar. Visual Studio için yapılmış ve üzeri örtülmüş bir şey bu T4.
- Windows 7′de VPC 2007 Çalıştırmak – Windows 7, Virtual PC’nin yeni versiyonu ile çalışıyor. Ne hikmetse eski versiyon, yani 2007′yi de reddediyor. Neyse ki dervişler bu tip şeylere hemen çözüm üretiyor. VPC 2007′yi, Rifat Çölkesen’in meşhur deyimiyle, koşturmak için beyaz tavşanı takip edin.
- Windows Kullanıcı Deneyimi Tasarım Kılavuzu – Microsoft’un kıyıda kenarda duracak belgelerinden birisi. PDF olarak ilk defa yayınlandı. Tutarlı bir “look and feel” için ne yapmanız gerektiğini anlatıyor. Kılavuz, tahmin edebileceğiniz gibi tıka basa nasihat dolu. Örneğin “arayüzde kullandığınız metinlerde kibar olun, kırmayın, yüreklendirin” diyor. Meselâ, çok bilinen erişim tuşlarına kafanızdan atamalar yapmayın diyor: “ESC” tuşuyla kaydetmeyi tetiklemek gibi. Bu belgeyi, UI’la iştigal eden programcı tayfasının gözden geçirmesini şiddetle salık veririz.
- Refaktoring > “God Class”ları Kaldıralım – Refactoring’e saran Sean Chambers, bu yazısında genelleşen ve büyüyen sınıfları ufak parçalara ayırmayı öğütlüyor. Onun örneğinden gidersek… Bir müşteri sınıfında hem siparişi ve hem de kayıt operasyonunu toplayacağınıza; müşteri kayıt ve siparişe ait iki ayrı sınıf oluşturun, canımı yiyin diyor.
- Hala WCF’ye Giriş Yapmayanlara – Meşhur bir yazı tarzı vardır hani: Introduction to X. Web’de X ile ilgili bir arama yaptığınızda bulunan yazıların %90′ının o X’e “introduction” meyanında olduğunu görürsünüz. Halbuki “giriş” dönemi geçmiştir: artık “gelişme”deyiz. Olsun. “Giriş” her zaman para eder. Böyle olmasa neden bizim WCF babası Nicholas, sene olmuş 2009, böyle bir giriş yazısını bize anons eder ki? Siz de henüz WCF denen Microsoft icadına uzaksanız, bu makale serisiyle yakınlaşabilir belki kendisiyle sıcak ilişkiler kurabilirsiniz.
- Test Amaçlı Bedava XP ve Vista Geldi - Microsoft, test yapma güdüsüyle hareket edenlere XP ve Vista’nın değişik Internet Explorer sürümü içeren VHD (Virtual Hard Disk) imajlarını indiringe sunmuş. İmajlar, belli bir süre sonra kendini yok etmeye programlı. (Ömür boyu bedava olacak değil ya!)
- Yaşasın Florida ve Yaşasın ASP.NET MVC 2.0 – Esprili yazmamız adamın esprili oluşundan. David Hayden’den bahsediyoruz, Florida .NET Developer‘dan. Bir adam kendine bu kadar antin kuntin bir ünvan seçer mi? Seçebileceğine inandığımdan beri kendimi Kurfalı .NET Developer olarak bilirim. Hadise şu ki David, yolda olan ve ASP.NET’in çekirdek sürümüyle farklı sürümleme kanalında ilerleyen ASP.NET MVC’nin 2.0 sürümüne dair öğretici makaleler derliyor. Amacınız öğrenmek olmasa bile “ne işler çeviriyor bu herifler” modunda göz atabilirsiniz. Bir kaybınız olmaz, artistlik yapmayın.
- INETA, PDC Bileti İçin Yarıştırıyor – Ne işe yaradığını pek anlamadığım INETA organizasyonu, Eylül 1′de başvurusu kapanacak bir yarışma düzenliyor. En iyi bileşen kullanma yarışması… Kural şu: sponsor bileşen firmalarından en azından ikisinin bileşenini kullanıp bir .NET uygulamasını bina edilecek. En baba ödül şu: ilk iki kişi kasımdaki PDC 2009′a katılıyor; yer Los Angeles. PDC Microsoft’un yılda bir yapılan geleneksel profesyonel developer ayini. Memleketimizden katılmak isteyen olur belki, fişekleyelim civanlarımızı.
Web Programlamanın Şaşkın Paradigmaları
İnternetten önce insanoğlu BBS‘lere bağlanıyordu. Web sayfası diye bir kavramın olmadığı bu devirde çevirmeli modemlerle uzaktaki bir sunucuya bağlanıp forum merkezli cemiyetler oluşuyor ve mensup olan ademoğulları deli gibi buluşuyorlar, kaynaşıyorlardı. Bu insanlar internetin hayatımıza dalışıyla sıradanlaştılar ve diğer tüm internet tüketicileri gibi anlık mesajlaşma ve IRC programlarında buhar oldular. Bir devri ve o devrin kültürünü gömmüş olduk.
İnternet ilk safhada, “eşittir” (SuperOnline değil) durağan web sayfalarıydı. Durağan web sayfası, programlamanın yani hayatın olmadığı yerdi. Her birey, web sayfasına berbat bir sayaç, ziyaretçi defteri veya anket koyabilmek için bunları sunan az sayıdaki üçüncü parti, ilkel servislerin yollarını aşındırıyordu.
“Kendin pişir kendin ye” çağına geldiğimizde paradigma kaydı. Artık “muhannete muhtaç”lıktan terfi eden ademoğlu, kendi sitesinde kendi işini görür olmuştu. Eskinin servisleri, sessizce buhar oldular. Anket ve ziyaretçi defterlerini de alıp gittiler.
Son safhada web’in programlama paradigması yine yön değiştirdi. Servis temelli mimari yine moda oldu; ancak daha gelişerek ve sosyalleşerek. Siteler daha önce içlerinde yaptıkları işlemleri, daha kaliteli ve işveli online servislere havale eder oldular. Toz ve buluttan yepyeni bir dünya doğdu.
Şimdi neredeyiz?
Web programlama, sunucu tarafında olduğu kadar tarayıcı tarafında da yüceldi. “Thin client” diye aşağılanan web tarayıcılar birer uygulama platformuna dönüştü. Bu platformun yapamadığı şey neredeyse kalmadı.
Bu gerçeği hasbelkader içinde bulunarak yaşayanlar veya vizyon sahibi olup evelden görenler, şimdi para sayma makinesi aldılar. Dünyanın en büyük şirketleri oldular. Küçük olup büyüdüler, büyüklere satıldılar.
Nihayet web, elimizdeki her şeyi kendine emanet vermemizi isteme noktasına geldi. “Bulut-işlem” yani cloud-computing dev şirketlerin vizyoner dudaklarında şekeri kaçmış, sünmüş bir ciklet oluverdi. Balon olup patlamaz inşallah.
…
Biz de…
Biz de web için kod yazmış, tarzanlık yapmış insanlar olarak, düşe kalka bugünlere gelen ve artık bacasız endüstrilerin önde gideni olan “web”i şaşkınlıkla ve gururla selamlıyoruz. İyi ki var.
Cat Stevens’ten bir sözle bitirelim: It’s a wild world web!
Çünkü bu şaşkın paradigma kaymaları, aynı zamanda vahşiydi de.
Bill Amcanın Bilmediğimiz Yönleri
Larry Osterman‘ın günlüğünde, yıllar önce Bill Gates ile arasında geçen konuşmayı okuyunca Bill amcanın bilmediğimiz bir yönünü öğrenmiş oldum. Development kararları konusunda agresif olabilen Gates, yıllar önce DOS Lan Manager hafızada 64K yer tuttuğu için azıcık sinirlenmiş
Gates’in bu bilinmeyen yönünü siz de merak ediyorsanız, konuşmanın tamamını buradan okuyabilirsiniz.
YAGNI Prensibinin Püf Noktaları
Ağustos 27, 2009 by mrok · Yorum bırakın
Kullanmasını bildiğinizde hayat kurtaran YAGNI (You Ain’t Gonna Need It) prensibi, kullanmasını bilmediğinizde başınıza büyük problemler açabilir. Gereğinden fazlasını yapmama prensibine dayanan YAGNI, bir anlamda günü kurtarma gibi düşünülebilir. Ancak bu prensibi kendinize hedef edinirseniz, günü kurtarayım derken yarını berbat edebilirsiniz. Alan Skorkin tarafından yazılan “Does YAGNI Mean You Ignore The Obvious” makalesi, işte tam bu noktada güzel tavsiyelerde bulunuyor. Detaylı bilgi isteyenlere duyurulur.
Okunası 11 Kitap
Ağustos 25, 2009 by mrok · Yorum bırakın
Geçen hafta şirketimize sipariş edilen kitapların gelmesiyle beraber, tekrar kitap okuma furyasına dalmış oldum. Bugün, gelen kitapların yorumlarını incelerken bir arkadaşın yayınlamış olduğu kitap listesi gözüme çarptı. Kitaplar farklı konularda ama genel bilgi sahibi olmak açısından okumakta büyük fayda gördüğüm kitaplar. Özellikle “Secret of the JavaScript Ninja” henüz tam olarak yayınlanmamış olsa da şimdiden favorilerim arasında diyebilirim. Bu kitap JQuery‘nin geliştiricisi olan John Resig tarafından yazılıyor olup, kasım 2009 gibi piyasaya çıkması planlanıyor. JavaScript konusunda kendini geliştirmek isteyen profesyoneller için biçilmiş kaftan diyebiliriz. Umarım liste sizler için faydalı olur.
Bir C# Kitabına Daha İhtiyaç Var mı?
Ağustos 23, 2009 by mucit · Yorum bırakın

İngiliz vaiz Jon Skeet‘e göre evrendeki C# konulu kitap arayışı bitmemiş gözüküyor. StackOverflow camiasının sönmeyen yıldızı Jon, MS kalemiyle neşrettiği “The “dream book” for C# and .NET” başlıklı fıkrasında, hâlâ ele gelen, cismi ve ruhu ağır doyurucu bir C# başvuru kaynağının yazılamadığını söylüyor. “Effective Java” kitabının bir karşılığının da .NET dünyasında olması gerektiğini ifade ediyor. Hayal ettiği kitap için içerik haritası ve yazar kadrosu oluşturmuş. Kadroda kendisi de olmak istiyor. Hatırlatmakta fayda var; Jon da kendi başına bir C# kitabının, “C# in depth“in yazarı.
Jon‘un bir Google çalışanı olup C# dünyasına nasıl bu kadar yakın olduğu; hem StackOverflow‘da reputasyonun dibine vurup hem nasıl Pazarları kilisede vaaz verdiği ve tüm bunların arasında nasıl Twitter‘da sürekli cıvıldadığı aklımızın bir köşesine takılıp duruyor. Burası konu dışı elbette.
Bu mevzuda ise, yeni bir C# kitabına ihtiyaç nazarından bakıp Jon’u fantastik buluyoruz. Dünyada artık referans kitaplar daha az oluşuyor. Özellikle yeni programlama temayülleri bir öncekilerin nâmını silerek tüm literatürü değiştiriyor. Düşünün, şimdi tüm dillerde “Repository Pattern” dolaşıyor. Bir referans kitabın, C# âlemini tümüyle kapsayabilmesi ve yaşayabilmesi için sürekli güncel tutulması gerekir.
Bu da demek oluyor ki Jon ve diğer seçilmiş C# üstadlarının nöbet tutması demektir. “Evrendeki tüm C# yazarları; birleşin!” mesajını alacak bir adres göremiyorum ben. Ama yine de Tarantino ne çekse izlediğimiz gibi Jon da ne dese kulak veriyoruz. Hürmetimiz bâki.
Scheme Aşkına
Ağustos 21, 2009 by mrok · Yorum bırakın
Bugün bir konuyu ararken Don Box‘ın bir makalesine denk geldim. Makale başlığı “Scheme Is Love” olunca dikkatimi çekti. Scheme üniversite yıllarımda oldum olası kullanmak istediğim fakat bir türlü ilgilenme fırsatı bulamadığım bir dildi. Bilgisayar mühendisliğinde özellikle eğitim amaçlı kullanımı çok yaygın bir dil olan scheme, yeni başlayanlar için de güzel bir alternatif. Konumuza geri dönersek, Don Box 2005 yılında yazdığı makalesinde scheme’in “Simple But Powerful” konseptine tam anlamıyla uyduğundan, scheme’in basit ama güçlü yapısından bahsediyor. Gerçek aşkı scheme ile bulduğunu söylüyor.
Ufkunu genişletmek isteyenler için bu kısa makaleyi okumanızı tavsiye ederim.
Hata Yakalama ve Iskalama Kültürü
Mike Hodlow‘un başlığını Fight Club’tan esinlendiği “Hata Yakalamanın İlk Kuralı: Hatayı Yakalama!” yazısı, programlamada bir “exception handling” yani Türkçesiyle “hata yakalama” kültürünün olduğunu ve programcı / yazılımcı etiketindeki kimselerin de bu kültüre mutlaka aşina olması gerektiğini bana tekrar hatırlattı.
Yıllar evvel bir programlama aracı anlatan kitapta hatalardan “istisna” olarak bahsedildiğini görmüş ve oldum olası bu kavramdan uzak durmuştum. İstisnalar hem kaideyi bozar hem keyfi kaçırırdı.
Ancak zaman içinde anladık ki bir programcının bilmesi gereken şey aslında her insanın bilmesi gereken şey. Hayatta hata yapmak, yapmamak kadar doğaldır. Bir programın akışında hatalar oluşması da oluşmaması kadar olağan. Ve bu hatalar, yani arızî durumlar her seferinde farklı sebeblerden ortaya çıkabilir. Bir hata, başka hatalardan silsile yoluyla gelmiş olabilir (“Bir exception var exception’dan içerü” prensibi).
Evet, hatalar ne kadar normal dediysek yazıyı bu şekilde bitirip gideceğimizi sanmayınız. Anormal olanı demeden gitmeyiz.
Anormal olan şey, hatayı hesaba katmamaktır veya hataya karşı lakayıt kalmaktır. Bir program kodu oluşabilecek arızî durumlar akılda tutularak yazılmalıdır. Yazılmamışsa bile geri dönüp refactor (adam) edilmelidir. Akılda tutulmuşsa bile formaliteden değil yerinde müdaheleler yapılmalıdır.
Hata yakalama ile ilgili şu altın prensipler, umarım programcı arkadaşlarımız için faydalı olacaktır.
- Programda üç tip arıza oluşur: 1- Programlamadan (sizden!) doğan arıza, 2- İstemciden doğan arıza, 3- Kaynaklardan doğan arıza. Hangi tür olursa olsun, hepsinde program hataya karşı hazır olmalıdır.
- Programlama hataları ölümcül hatalardır. Programınız çakılır, devam edemez. Bir bug‘ınız vardır; siz çözene kadar öyle duracaktır.
- İstemciden doğan arızalar daha çok doğrulama şeklinde yorumlanır. Örneğin kullanıcının size girdiği sayı, alfanumerik karakterler içeriyorsa bir ihlal vardır. Veya gönderdiği bir XML dosyası elinizdeki şemaya göre valid değildir. Bu tip hataları hiçbir şekilde ıskalamamanız ve yakalamanız gerekir.
- Kaynaklar, kullanıcı ile aranıza giren üçüncü şahıslardır. Örneğin bellek dolmuştur. Ya da diskte yer bitmiştir. Bu tür durumları da titizlikle yakalayıp, ayırd edip mantıklı mesajlarla (vmware’yi kapat, biraz divx sil gibi…) kullanıcıyı yönlendirmek lazımdır.
- Genel Exception sınıfları yerine özelleşmiş Exception‘lar yakalanmalıdır. .NET için konuşursak, System.Exception denen hataların babası, sadece tek bir noktada ve global olarak yakalanmalıdır. Bu tek bir nokta, genelde proses sınırı ya da daha anlaşılır bir tabirle Meksika sınırıdır. Kodun hiçbir iç noktasındaki try/catch bu baba hatayı tutmamalıdır. Hiyerarşiye uyulmalıdır. Kimse hatadan anlamadıysa, en son noktada yakalanmalı, log’lanmalı ve mağrur bir şekilde kullanıcıya işlemin devam edemediği bildirilmelidir.
- Herkesin bildiği kural: mantıksal akış için Exception’lara yaslanılmamalıdır. Bu yapılar “iş” amaçlı değildir.
- Herkesin çok ihlal ettiği kural: Exception’ların StackTrace‘i yutulmamalıdır. Eğer catch’lerde yakalayıp “bu yoluna devam etsin” dediğiniz hatalar olur ise onları mutlaka “throw“ ile gönderiniz; eğer “throw new” ile gönderirseniz o zor bulunan, kimi zaman değerine paha biçilmeyen “Stack Trace” sıfırlanmış olacaktır. Özetle “throw new” çok dikkatle kullanılması gereken bir kalıptır. Stack Trace muhafaza edilmesi gereken değerli bir madendir.
- OOP mevsimine aldanıp yeni nesil Exception tipleri icad etmek yerine sistemin sizin için sunduğu öntanımlı olanları kullanınız. .NET size genel ihtiyaçlar için birçok tip sunuyor.
- Exception’lar CLR için pahalı ve ağır lokmalardır. O nedenle mümkün olduğunda onlara bulaşmadan adımlamak lazımdır. Bunu yapmanın en güzel yolu da pattern’lere yani kullanım kalıplarına başvurmaktır.
- Dokümantasyon: Her işimizi belgeli yapmalıyız. .NET’in kod içindeki XML dokumantasyon şeması, Exception’ları yazmaya da imkan veriyor. Eğer düzgünce yazarsanız, kod dokumantasyonunda metodlarınız için “taş düşebilir, ayı çıkabilir” nevinden notlar görülecek. Hoş değil mi?
- Montaj yasası gereği hiçbir şey işe yaramıyorsa övülen pratiklere bakılmalıdır.
“_why”ın Gizemli Kayboluşu
Evet size bir kayıp haberi daha vereceğim. Ruby ‘nin arkasında duran birkaç adamdan biri olan, yazmış olduğu Ruby öğrenme kılavuzu “Why’s (poignant) Guide to Ruby” sayesinde büyük bir hayran kitlesine sahip, gerçek kimliğini bilmediğimiz “Why the lucky stiff” ortadan gizemli bir şekilde kayboldu. Twitter hesabını silen, GitHub hesabını ve tüm sahip olduğu siteleri kapatan bu şahsiyetin kayboluşu, açık kaynak dünyasında büyük bir yankı yaptı. Ruby on Rails dahil olmak üzere birçok projede aktif rol alan bu arkadaş hakkında hiçbirşey bilmiyoruz desek yeridir. Bu yüzden bu kayboluş insanların merakını daha çok cezbetti. Komplo teorileri üretilmeye başlandı bile. Hatta gerçek kimliği hakkında ortaya atılan iddialar bile var. Bakalım CentOS vakası gibi mi olacak yoksa ebediyen _why ‘ı kayıp mı edeceğiz.
Haydi Erlang Öğrenmeye
Erlang programlama dilini bilenler bilir, concurrent programlama için biçilmiş kaftandır. 1986 yılında ilk versiyonu çıkmış olan bu dilin babası bizzat Ericsson ‘dur. Hatta facebook, chat altyapısını bu dille yazmıştır desem yalan olmaz. Bilmeyenler için başlangıç kıvamında hazırlanmış bir web sayfasına düştü bugün yolum. Erlang nedir ne değildir merak eden site müdavimleri, buraya tıklayarak Erlang ‘ın şefkatli kollarına kendilerini teslim edebilirler.
