Python Seferberliği

Python, dinamik dillerin itibarının tekrar yükselmesiyle gündemin baş sıralarında. Dinamik programcılar, şimdi dillerinden bu esnek dilleri düşürmüyorlar. Akademik camianın heyecanı zaten hep bu kanalda devam ediyor. Herkes bir şekilde bu dillerden öğrenmeye çalışırken Türkiye’deki uzmanlarımız da boş durmamışlar, kaleme sarılmışlar. Size iki ayrı Türkçe başvuru kaynağını haber vereceğiz.
İlki internetten görülebilir: Bilgisayar Bilimcisi Gibi Düşünmek. İngilizce bir metinden çeviri yapılmış güzel bir çalışma. Biraz sözdizim referansı tadında.
İkincisi ise www.istihza.com adresinde ikamet eden PDF belgeler ve şimdilerde yeni çıkan bir kitap: Herkes İçin Python.

Fırat Özgül‘ün site ismi “istihza” olsa da yaptığı işte herhangi bir müstehzilik görmek mümkün değil ve aksine çok ciddi çalışmış. Python öğrenmek isteyenler için güzel bir kaynak olur, umarız. (Tenkit: “yılan” istiaresi figür ile de yapılabilirdi. Ürkünç bir vesika olmuş kapaktaki.)
Dinamik diller, dördüncü .NET’in de olaya müdahil olmak istemesiyle (DLR, IronRuby, IronPython) bu yıllarda daha da çok konuşulacak gibi gözüküyor. Konuşmanın ötesinde, bu diller üzerine yazılan framework‘ler artıyor, ham olanlar olgunlaşıyor meyve veriyor. Programcının birçok platformda birden hareket alanının genişlemesi, pek sevindirici!
VS 2010′un En Çarpıcı Yeniliği

Visual Studio 2010, bizi şaşırtarak “Add Reference” ekranındaki sancıyı gidermiş. Sancı neydi?
Aşağıda Visual Studio 2008′e kadar aynı mantıkla yolculuk etmiş “Add Reference” ekranı var. Bir bakın hele:
Bu ekranın, Visual Studio projesinin üzerinde sağ tuş ile “Add Reference…” emri ile açılması gerekiyor fakat gelin görün ki bir süre sizi ağaç ediyor. Çünkü ekranın ilk sekmesindeki .NET assembly dizisi sistem kaydından o an okunuyor ve bu UI thread’ini okuma işlemi bitene dek blokluyor. Siz de sürüyle bileşene sahipseniz ve GAC’ınızla övünen biriyseniz, karşılığını burada bekleyerek alıyorsunuz.
Bu hiçbir UI geliştirme pratiğinde önerilmeyen uygulama, neden uygulama geliştirdiğimiz cihazda uygulanmış, anlamak mümkün değil. Bakın bir MSDN dokümanına ne diyor: “Uzun ve pahalı işler yapacaksanız, UI’ı bloklamamak için başka thread üzerinden asenkron çağrılar yapın“.
Bu garabet durumun üstesinden gelmek için yerli eklentiler bile yazıldı!
Neyse, buraya kadarmış. 7 senelik yara kapandı ve artık Visual Studio “Add Reference” ekranı asenkron çalışıyor. Müjdeler olsun:
İlk açışta üçüncü sekmenin açılışı da ayrı bir kural dışılık olarak sırıtsa da ekranın hızlı açılması şerefine, bu kusuru sümen altı ediyoruz.(Önce Projects’in açılması güzel ancak üçüncü sıradaki bir sekmenin açılması kullanıcı için olağan dışı bir ön tanım.)
Yasak Kod
“Açık Kaynak” ne demekti arkadaşlar? SourceForge.net adında bir oluşum vardır, uğramışsınızdır. Çok seviyoruz bu felsefeyi ailecek ve toplum olarak. Yazıyoruz, katılıyoruz, okuyoruz, kalkındırıyoruz. Dünya üzerindeki birçok insan da bu güzel yazılım ürünlerini kullanabiliyor. Meselâ sitesine yükleyip, (Bulutlararası gibi) blog yayınlayabiliyor. Açık Kaynak modeli, insanlığın onuruna yakışır hâllerle, beyinlerimizi ve bilgisayarlarımızı besliyor.
Haber vereceğimiz gelişme ise hepimizi bir hayli şaşırtacak. SourceForge denen açık kaynak proje yayınlama destekçisi / yardakçısı site, meğerse 3 ay önce kullanım şartlarında bir değişiklik yapmış:
“Users residing in countries on the United States Office of Foreign Assets Control sanction list, including Cuba, Iran, North Korea, Sudan and Syria, may not post Content to, or access Content available through, SourceForge.net.” (*)
Sitenin ABD tarafından işaretlenmiş “şer” ülkelerine kapatılacağı açık açık yazılmış. Ve şimdi Ocak 2010′da bu kural uygulamaya konmuş. Şer ülkelerinden geldiğinizde yüzünüze çarpan şu mesajla titriyorsunuz:
“403 Error – Forbidden. Your request is being denied as it appears to be coming from a location banned by our Terms of Use.” - http://sourceforge.net/t7.php
Açık Kaynak gibi “ne olursan ol gel” felsefesinde bile siyasal tecritin uygulanması bizlere çok güzel dersler veriyor. Türkiye’de de açık kaynağı, daha çok ABD politikalarına muhâlif çevrelerin sahiplenmesi de başka bir çelişki olarak elimizde duruyor.
Ne olacak yani? Kardeş olamayacak mıyız? Kardeş kardeş kod yazamayacak mıyız? Bir müsade etseniz “deli gömleği” bürünmüş beyinler.
Windows 3.1′e Dönmek İsteyen?

Fiilen olmasa da sanal olarak dönmeniz için gereken yapılmış. Michael Vincent adlı fantastik bir şahsiyet, Windows 3.1′i internet tarayıcı üzerinde taklit etmiş. Adres: www.michaelv.org.
Çok başarılı bir uygulama olduğunu söylememiz gerek. 3.1 ile yaşadığınız tüm hisleri, tekrar, ücretsiz yaşayabilirsiniz. Boş sistem kaynağının %314 olarak gösterilmesi ve sitenin en iyi Firefox‘ta çalışacağının söylenmesi işin hicivli kısımları.
Ha… Mayın tarlası, yani minesweeper oynamayı ve komut satırını kurcalamayı unutmayın.
Havadis #7
2010′un ilk havadis bildirisini okuyorsunuz. Tebrikler.
Mobil Dünya
- Nexus oğlu versus: Gündemde üç akıllı telefon var. Linkte bu üç akıllı telefonun “versus” vuruşması mevcut. İnternetin en sevdiği şeylerden birisi de çarpıştırmak, versus’lamak zaten, biliyorsunuz. Versus piyasası, son olarak “Google Nexus One” adlı akıllı telefonun piyasaya salımıyla yeniden hareketlendi. Android de, IPhone OS ile kafa kafaya çarpışma hevesinde. Geliştirici dostluğu açısından Android öne çıkıyor fakat bu işin karnesi, muhakkak ki market payı. Apple, geliştiriciyi bu kadar boğup bu kadar da zengin bir pazar oluşturuyorsa, tebrik edecek bir şeyler var demektir.
- 27 Ocak Elma Tutulması: Apple, saldığı viral unsurlarla 27 Ocak tarihini hem tüketiciler hem de geliştiriciler açısından beklenir hâle getirdi. Geliştiriciler, 27 Ocak’ta IPhone OS’un 4.0 versiyonunun duyurulacağını bir şekilde öğrendiler. Söylentiler sıradan: UI efektleri gelişecek, multi-tasking imkanı artacak, sync güzelleşecek. Tamam da kardeşler, bu bilgiler sızmasa bile yeni versiyonun standart özelliği bunlar olmaz mıydı? Elma’nın bizi daha fazla şaşırtmasını bekliyoruz. Etkinlikte kopacak diğer fırtınalar için linkteki yerli yazı, gayet tatminkâr. (Şapkalı a’ların nasıl yazılacağı konusunda ufak yardım: shift + 3 + a.)
Güvenlik
- Daha Onyedi Yaşında bir Güvenlik Kaçığı: 32 bit Windows’ların NT 3.1 olanından 7 olanına doğru yolculuk etmiş târihi bir şahsiyetten bahsediyoruz. Evet, bir güvenlik açığı bu kadar yolculuk yapmışsa, bir şahsiyet kazanmış demektir. Yine klasik, sisteme zarar verme imkanları, vs. Açığın ne olduğunu sayfa anlatıyor. Ama 17 senelik bir açığın yeni farkedilmesi, epeyce gülümsetti bizi. Yazılım geliştirici olarak da düşünmeye sevketti. Bazı açıklar, var olsalar bile ortaya çıkmaları için uygun koşulların oluşması gerekir. Bu açıkları hiçbir test metoduyla, hiçbir gözden geçirmeyle fark edemezsiniz, eğer ifşa olma vakti gelmemişse. Ne dediğimi, aylar, yıllar önceki bug’larını bugün hayretle farkeden geliştirici arkadaşlar iyi anlayacaktır. Böyle bug’lar sizce de şahsiyetli değiller mi ve saygıyı haketmiyorlar mı?
Kariyer
- Programcıyı İmtihan Etmek: Siz olsanız hangisini işe alırsınız?
Web
- Firebug 1.5 Oldu: Harika araçların yeni versiyonları salındığında haber yapmak gerekir değil mi?
Genel
- Random ne kadar rasgeledir: Rasgelelik algoritmanızı test edebiliyor musunuz? İşinize yarayacak bir makale.
- Güvenli yazılım geliştirme süreçleri: TÜBİTAK’tan bir ekip, güvenli yazılım geliştirme süreçlerini incelemişler ve güzel makaleye imza atmışlar. Teorik yağışta yürümeyi sevenlere.
- Ruhunu satan Reflector: Geliştirici dostu Reflector, Pro sürümüyle ticari hayata merhaba diyor. ANTS Profiler de ufak bir güncelleme yiyor.
Bir Programcıya “Loose Coupling” Anlatmak
Adamın biri dert yanıyor, programcıma “loose coupling” ve “infromation hiding” gibi meselelerin ehemmiyetini nasıl anlatırım diye. Gelen cevaplar, gerçekten iç açıcı. Örneğin “hayatın içinden” bir resme bakın:
Eğer “gevşek bağlılık” prensibi olmasaydı, fişler, prizler de olmazdı. Tüm bağlantıları elimizle, lehimimizle kendimiz yapardık.
İşte programları kodlarken de bu tarz prensipleri titizlikle uygulamak gerek. Lehim yapmamak, elektriğe karşı yiğitlenmemek gerek.
Ya “bilgi saklama”? Ya yazdığınız nesneler, transparan sahne kıyafetiyle ortamlarda salınıyor ise… Ne kadar ciddi bir problem değil mi? Ciddiyetini anlamayan adama anlatmak için bomba misâl, Boris Pavlović’ten geliyor:
“Senden, cüzdanını isteyip kendi kendime içinden 10 lirayı borç almam hoş olur muydu?”
Ve buradaki “ben”i, “herhangi biri” olarak değiştirin. Cüzdanını veriyorsunuz, herkes kendisi alıyor istediğini. “Information hiding”i böyle anlatırsın demişler.
Yine de hiçbir programcıya bu kavramları, bu prensipleri damdan düşer gibi öğretemeyeceğiniz, kafasına çakamayacağınız kesin. İşin anahtarı dinamik “tecrübe”. Karpuz gibi yatan tecrübenin elbette, bir hocamızın dediği gibi, geminin arka tarafını aydınlatmaktan başka yapacağı yok.
Fiziksel tecrübe, soyut tecrübelerle kıyaslanamayacak kadar değerli. Bu tecrübe de ancak öğrendiğini tatbik ederek kazanılır. (*)
“System” Olarak Konsol Açmak: RunAsSys
Windows sistemlerde, özellikle Vista ve 7‘de System kullanıcısı, bir takım işlemlerde ön tanımlı olarak tek yetkili oluyor ve size, “administrator” yetkilerinde olsanız dâhi pabuç bırakmıyor. Buna en güzel örnek, arka plan servislerinden bazılarını (tasksched, group policy client gibi) kapatamamanız. Çünkü o servisleri ancak “system” yönetebiliyor.
Peki “system” ile Vista ve 7′de nasıl process açacaksınız?
Biraz dolambaçlı da olsa bu işi birileri API üzerinden yapmış ve ihtiyaç sahiplerine sunmuş. RunAsSys, “system” olarak konsol açan minik ve işe yarar bir açık kaynak uygulama. Kodlara web’den gözatabilirsiniz.
Program, Delphi ile yazılmış ve Windows security yapısının nesne yönelimli bir modellemesi olan JWSCL kütüphanesinin ufak bir şovu. Çok yaşasın Christian Wimmer.
Biz demiştik ya bir zamanlar… bir delphi varmış!
C#’ta Tuple
“Tuple” matematikten bilgisayar bilimine hoplayan, karışık tipteki elemanlar bulunduran dizileri temsil eden bir terim. Fonksiyonel diller bunu önceden beri destekliyor. Ama C# kıyılarına, dördüncü .NET‘te geliyor.
var data = new Tuple("bulutlararası", 2010);
Koda kulak verelim: farklı türde iki verinin peşpeşe bir constructor‘a verildiğini anlıyoruz. Oluşan tip, anonim tiplere benziyor. Bir farkla ki bunu az sonra anlatacağız.
Constructor yerine static metodumuz da var.
var data = Tuple.Create<string, int>("bulutlararası", 2010);
Tip çıkarımı, işe yaramaz mı:
var data = Tuple.Create("bulutlararası", 2010);
Şimdilik en kısa oluşturma şekli bu. Gelelim anonim tipler ile farka. Anonim tipler, metodun dönüş değeri olamıyor. Yazıldığı metodda mahpus; metodun kapsamına mahkum. O nedenle çok dar bir kullanım sahası var. Linq sorgusundan gelenleri almada problem yok ama sonrasında anonim tipler yanınızdan uzaklaşıveriyor.
Elemanlara ulaşalım:
var item1 = data.Item1; // "bulutlararası"
var item2 = data.Item2; // 2010
Tuple, bundan ibaret. Bir dördüncü .NET yeniliği. Mono de Icaza, hemen desteklemiş. Kereveti bize kalmış.
Pattern İdeolojisi
“Pattern“ler birçok iş sahasında karşımıza çıkıyor. İş değişiyor, insanlar değişiyor ama pattern’ler sabit kalıyor.
Mesele de bu zaten: pattern’ler sabit kalan şeyler demek.
Yazılım geliştirme literatürü de birçok pattern’in buluştuğu, kaynaştığı ve dev voltran‘ları vücuda getirmek için el ele verdiği bir meydan. Kod yazıyorsanız, bir pattern duvarına çarpmamanız ya da bir pattern polisinin sizi kovalamaması işten değil.
Bu yazımız, size Bulutlararası penceresinden sunacağımız “pattern” serimizin başlangıcını oluşturuyor ve birkaç genel bilgiyi sunmayı amaçlıyor. Önce isterseniz kitaplığa bakalım.
Yazılım tasarlarken ve tasarlanan yazılımı kodlarken bin türlü “yoğurt yeme şekli” ortaya çıkar. Bu binlerce şekilden bazıları kendine bir ad ve kitaplarda yer bulur. İşte bu müstesna yoğurt yeme şekillerini görmek, öğrenmek için de bilginin evrensel taşıyıcısı, aziz kitaplara başvururuz.
Birinci kitap, hakikaten birinci kitap: “Design Patterns: Elements of Reusable Object-Oriented Software“. Kitaplığın olmazsa olmazlarından.

Ama yeterli değil. Bu kitapla beraber tüketilen başka bir şey daha var: “Pattern Hatching: Design Patterns Applied“.
Elbette, pattern kelimesine sponsor olmuş bir adamın, Martin Fowler‘in kitabı var sırada: “Patterns of Enterprise Application Architecture“.

Düz yazı mide bulantısı yaptığı taktirde size hiyeroglif önerimiz var, hazırda bekleyen: “Head First: Design Patterns“. Pattern ideolojisine kafa göz dalmanız için, O’Reilly’den.

Son olarak MS kulvarındaki programcılara daha çok hitap eden bir eser rafta duruyor: “Code Complete“.

Hepsi yazılım geliştiricinin kitaplığını ağırlaştıran ve anlamlılaştıran eserler. Eğer tasarım ve kodun bilfiil içindeyseniz, bu kitaplar da içinizde olmalı. Dünyadaki en güzel yoğurdu siz yiyebilirsiniz ama en güzel “yoğurt yeme şeklini” bil(e)miyor olabilirsiniz.
Pattern’ler dar vakitlerde geniş çözümler sunan, hayat kurtarıcı, zaman kazandırıcı, el yapımı mucizelerdir. Bu mucizelere ne kadar yakın olursak, onlardan o kadar fazla istifade ederiz.
Kitaplıktaki raflar doladursun, Bulutlararası yazıları da hazırlanacak. Fanatiği ve gönüllüsü olduğunuz bir pattern ve onu anlatacak mecaliniz var ise, müracata gelin, konuşalım.





