arşiv

‘istihza.com’ kategorisi için arşiv

Kısa Bir Ara…

Cuma, 19 Kas 2010

Sevgili Arkadaşlar,

Birkaç gün önce yeni bir eve taşındım. Şu anda evimde internet bağlantısı yok. O yüzden internet erişimim son derece kısıtlı. Bu süre içinde gerek istihza.com üzerinden, gerekse e.posta yoluyla gelen mesajlara cevap veremiyorum.

Bayramdan sonra tekrar görüşmek üzere herkese iyi bayramlar…

Fırat

istihza.com

Kod Bankası

Salı, 05 Eki 2010

istihza.com‘un en temel amacı, Python severlere Python programlama diline ilişkin olabildiğince güncel ve çağdaş bir Türkçe kaynak sunabilmektir. istihza.com kurulduğu günden bu yana, bu amacı gerçekleştirebilmek için elimden gelen çabayı gösterdim ve göstermeye devam edeceğim.

İşte bu temel amacın bir parçası olarak 05.10.2010 tarihi itibariyle istihza.com’a yepyeni bir bölüm daha ekledik. Bu yeni bölümün adı “Kod Bankası”.

Adından da anlaşılacağı gibi, bu bölümün amacı Python’la yazılmış örnek kod parçalarını bir araya getirmek. Bu bölümle, Python severler için geniş bir kod havuzu oluşturmayı hedefliyoruz.

“Kod Bankası” bölümüne http://www.istihza.com/kodbankasi/index.html adresinden ulaşabilirsiniz.

Başlangıç olarak, Kod Bankası’na birkaç örnek kod ekledim. Bu örnek kodlar, bugüne kadar çeşitli ortamlarda Python kullanıcılarının sorduğu sorulara verdiğim yanıtlardan oluşuyor.

Kodlarla ilgili yorumlarınızı, ilgili kodların bulunduğu sayfanın en altında yer alan yorum bölümünde belirtebilirsiniz. Eğer yorumlarınızda bir kod örneği verecekseniz kodlarınızı http://paste-it.net/ adresine yapıştırarak, kod bağlantısını yorumunuza ekleyebilirsiniz. Dikkate değer kod önerileri iyileştirme önerisi başlığı altında makaleye eklenecektir.

Kod Bankası bölümünde her bir kod örneği için sayfada  şu bilgiler yer alıyor:

Sürümü: Python 2.x veya Python 3.x

Platform: Windows veya GNU/Linux

Dosyalar: Kodu içeren betik ve ilgili dosyalar

Etiketler: Kodun ilgili olduğu alana ilişkin birkaç anahtar kelime

Açıklama: Kodla ilgili kısa bir açıklama.

Kod Bankası ile ilgili önerileriniz varsa bana bildirmekten çekinmeyin.

Faydalı olması ümidiyle…

istihza.com ,

Sponsor Değişikliği

Cuma, 24 Eyl 2010

Bildiğiniz gibi istihza.com, sponsor tarafından barındırılan bir site… 13 Ocak 2009 tarihinden bu yana sitemizin sponsorluğunu blogkocum.com‘un sahibi Sevgili Semih Masat yürütüyordu. istihza.com olarak, bugüne kadar sponsorumuzdan son derece kaliteli bir barındırma hizmeti aldık. Bu bakımdan Semih Masat’a büyük bir minnettarlık duyuyorum. Bugüne dek verdiği kaliteli hizmetten dolayı kendisine teşekkür ederim. Onun hakkını ödemem mümkün değil.

Bir süredir, yeni bir sponsor ve sunucu arayışı içindeydik. Bu arayışın sonunda sponsorluk teklifi Sevgili Ozan Uzer’den geldi. Böylelikle 24 Eylül 2010 tarihinde istihza.com’u farklı bir sponsor desteğiyle, farklı bir sunucuya taşımış olduk. Taşınma işlemimiz, eski ve yeni sponsorumuzun da yardımıyla sorunsuz bir şekilde halloldu.

Bundan böyle yola Ozan Uzer’in sponsorluğuyla devam edeceğiz. istihza.com’un Python severlerle buluşmaya devam edebilmesini sağlayan yeni sponsorumuz Ozan Uzer’e çok teşekkür ediyorum.

istihza.com , , , ,

DISQUS Yorumları

Salı, 14 Eyl 2010

Daha önce duyurduğumuz gibi istihza.com’a eklenen DISQUS desteği sayesinde artık istihza.com takipçileri Python 2.x derslerine yorum da yazabiliyor. DISQUS sistemi aracılığıyla kullanıcılardan gelen yorumları düzenli olarak takip etmek isterseniz  http://python-programlama-dili.disqus.com/latest.rss adresini kullanabilirsiniz.

İyi çalışmalar

istihza.com

Python Programları: Çalar Saat

Salı, 14 Eyl 2010

istihza.com takipçilerinin Python programlama dilini kullanarak geliştirdikleri uygulamaları tanıttığımız Python Programları bölümümüze bugunü “Çalar Saat” adlı yeni bir uygulama daha eklendi.

Feyyaz Özen tarafından geliştirilen “Çalar Saat” bir Tkinter uygulaması. Hem GNU/Linux hem de Windows’ta çalışan bu program, adından da anlaşılacağı gibi, sizin girdiğiniz bir tarihte, yine sizin belirlediğiniz bir uyarı notu ile sizi uyarabiliyor.

Programın Windows işletim sisteminden alınmış ekran görüntüsü şöyle:

Çalar Saat’in indirme adresine, her zaman olduğu gibi http://istihza.com/programlar/icindekiler_programlar.html adresinden ulaşabilirsiniz.

Programı yazıp bize gönderen Feyyaz Özen’e teşekkür ederim.

istihza.com, Python, Yazılım , , ,

istihza.com’da DISQUS Desteği

Çarşamba, 08 Eyl 2010

Bugüne kadar, istihza.com kullanıcıları site ile ilgili yorumlarını bana yalnızca “Günlük” bölümünden ya da e.posta aracılığıyla iletebiliyorlardı. Bu sayede, istihza.com’da yer alan belgeleri yıllar içinde kullanıcı istekleri doğrultusunda epey yenileyip geliştirebildik.

Bugün, bu etkileşim sistemine bir öğe daha ekliyoruz. Bugünden itibaren istihza.com’a gelen DISQUS desteği sayesinde artık Python 2.x bölümünde yer alan makalelere de doğrudan yorum yapılabilecek. Böylece makalelerdeki olası hataların daha hızlı bir şekilde düzeltilip, makalelerin kalitesini artırmayı hedefliyorum.

Python 2.x bölümündeki bütün makalelerin altında yer alan DISQUS eklentisi aracılığıyla makaleler hakkındaki yorumlarınızı yazabilirsiniz.

Bu sistemin, istihza.com’daki makalelerin kalitesinin yükseltilmesi amacına hizmet etmenin yanısıra başka bir işlevi daha olacağını düşünüyorum. Makalelerin altında kullanıcıların konuya ilişkin bir soru sorması halinde, sorulan soruyu bilen başka kullanıcılar o soruya cevap da verebilecek. Böylece istihza.com’un arkasında ufak da olsa bir topluluk olup olmadığını görme imkanımız olacak. Eğer topluluk zamanla büyürse belki ilerde elbirliğiyle bir de forum açarız… :)

Not: Bu eklenti istihza.com’daki öteki bölümlere de bir süre sonra eklenecek.

Faydalı olması ümidiyle…

istihza.com ,

Python 3 ve Tkinter

Cuma, 27 Ağu 2010

Bildiğiniz gibi, sitemizde devam eden bir anketimiz var. Bu ankette sorduğumuz soru şu:  “Acaba istihza.com’da Python 2.x’e mi yoksa Python 3.x’e mi ağırlık verilmeli?”.

Şu anda ankette Python 3.x önde gidiyor ve Python 2.x’e karşı arayı da gittikçe açıyor… Eğer Python 2.x’çiler son anda bir hamle yapmazsa anketin galibi Python 3.x olacakmış gibi duruyor… :)

Yukarıdaki sebepten ötürü, yakın bir zamanda artık istihza.com‘da Python 3.x konularına ağırlık vereceğim. Yalnız benim burada şöyle bir düşüncem var:

Hepinizin takdir edeceği gibi, günümüzde artık yazılan programlarda arayüz çok önemli bir olgu. Kullanıcılar genellikle konsol üzerinden çalışan, arayüzsüz uygulamalara dudak büküyorlar.  Bu nedenle, Python 3.x’i daha en başından itibaren Tkinter arayüz takımı ile bütünleşik bir şekilde anlatmayı planlıyorum.  Yani programlama konusunda hiç bir bilgisi olmayan bir kimse, Python 3.x’e daha ilk başladığı anda tkinter modülünü içe aktarmayı ve bu modülü kullanmayı öğrenecek. Böylece bir yandan Python’ı öğrenirken öte yandan da Tkinter’le arayüz geliştirmeyi kavramış olacak.

Dediğim gibi, bu düşünce henüz tasarı aşamasında. Şimdilik sadece beyin jimnastiği yapıyorum. Bu süreçte istihza.com kullanıcılarının da fikrini almak isterim. Böylece bu düşüncenin artı ve eksi yönlerini beraberce ortaya koyma imkanı elde ederiz.

istihza.com, Python

istihza.com: Python 2 ya da Python 3

Perşembe, 29 Tem 2010

Bildiğiniz gibi, Python’un en yaygın kullanılan sürümleri 2.x serisinden… Henüz Python 3.x serisi yeterli yaygınlığa ulaşamadı. Bunun sebeplerini daha önceki günlük girdilerinde tartışmıştık. Python 2.x’in bu durumundan ötürü ben de istihza.com’da 2.x ile ilgili derslere ağırlık veriyorum. Daha önce yaptığımız bir anketin sonucuna göre de  istihza.com kullanıcıları ağırlıklı olarak 2.x serisini kullandığı için sitedeki 3.x belgelerini uzun süredir güncellemiyordum.

Ancak son dönemlerde Python 3.x gelişimi konusunda belli bir hızlanma söz konusu… Bu sebeple ben de istihza.com kullanıcılarına şöyle bir soru yöneltmek istiyorum:

istihza.com’da Python 2′ye mi yoksa Python 3′e mi ağırlık verilmeli?

Bu soruya cevap bulabilmek için yeni bir anket hazırladım. Ankete, sayfanın sağ tarafındaki “Polls” başlığı altından ulaşabilirsiniz. Anketten çıkacak sonuca göre ya Python 2.x belgelerini son hızla güncellemeye devam edeceğim, ya da ağırlığı Python 3.x belgelerine vereceğim.

istihza.com , , ,

Python 3 ve Python 2

Çarşamba, 28 Tem 2010

Python 3.x serisinin ilk kararlı sürümü 3 Aralık 2008 tarihinde yayımlandı. Ancak Python 3 eski sürümlerle uyumlu olmadığı için insanlar hala Python 3′e geçmekte tereddüt ediyor. Çünkü hem etraftaki Python programları, hem Python’la ilgili kaynaklar hem de önemli üçüncü şahıs modülleri henüz Python 3′e taşınmadı. Dolayısıyla, henüz Python 3′e taşınmamış modüllere bağımlılık duyan Python programlarının yazarları 3.x’e geçiş konusunda (haklı olarak) ayak diretiyor.

Python geliştiricileri, bir yandan Python 3′ü geliştirmekle uğraşırken, bir yandan da insanların Python 3′e geçişini hızlandırmak ve korkuları gidermek için bilgilendirici ve yüreklendirici makaleler yayımlıyor. Bu yüreklendirici makalelerden biri de http://wiki.python.org/moin/Python2orPython3 adresinde bulunuyor. Bu makalede, Python kullanıcılarının sıklıkla sorduğu “Python 3′ü mü yoksa Python 2′yi mi kullanmalıyım?” sorusuna bir cevap vermeye çalışıyor Python geliştiricileri…

Bu soruyu İngilizce bilmeyenlerin de sorduğunu dikkate alarak, yukarıdaki bağlantıda verdiğim makaleyi Türkçe’ye çevirdim.

İşinize yaraması dileğiyle…

Not: Özgün makaleyi hızlı bir şekilde Türkçe’ye çevirdiğim için çeviride bazı aksaklıklar gözünüze çarpabilir. Çeviri metin üzerinde iyileştirme çalışmaları yapmaya devam edeceğim. Ayrıca özgün metin üzerinde değişiklikler olursa, bu değişiklikleri çeviri metne de yansıtacağım. O yüzden bu günlük girdisini zaman zaman ziyaret etmenizde fayda olabilir…

Fırat Özgül

************************************

Geliştirme çalışmalarım için Python 2’yi mi yoksa Python 3’ü mü kullanmalıyım?

Bu ikisinin farkı nedir?

Kısa cevap: Python 2.x dilin süregelen durumunu temsil eder. Python 3.x ise yepyeni, pırıl pırıl bir dildir.

Bu makalenin yazıldığı sırada (4 Temmuz 2010) Python’ın kararlı 2.7 sürümü yayımlanmış, serinin bu son sürümünün uzun süre destekleneceği de ifade edilmişti. 2.7’den sonra 2.x serisinde artık başka bir ana sürüm olmayacak. 3.x serisi etkin bir şekilde geliştirilmeye devam ediyor. Bu serinin 3.1 sürümü yayımlandı. 3.2 sürümü ise bu yılın sonuna doğru yayımlanacak.

3.x, Python’un en yeni dalı olup bu dilin geleceğidir. Python programlama dilinin baş geliştiricisi Guido Van Rossum, 2.x serisindeki sürümlerin aksine geriye dönük uyumluluğu gözardı ederek Python 2.x üzerinde adamakıllı bir temizlik yapmaya karar verdi. Bu yaklaşım sayesinde dilin bazı temel yönleri (mesela print ve exec’in birer deyim olması, tamsayılarda taban bölme kullanılması), bu dili yeni öğrenenler için daha kolay anlaşılır bir hale getirilebilme imkanına kavuşurken, bu yönlerin dilin geri kalanıyla da daha uyumlu olması sağlanabilecek. Böylelikle dile yakın zamanda eklenmiş özelliklerin (mesela döngü kurucular) dilde eskiden beri varolan özelliklere uyarlanması da mümkün olacak (mesela range gömülü fonksiyonunun 2.x serisinde liste döndürürken, 3.x serisinde döngü kurucu döndürmesi).

Python 3.0’daki Yenilikler adlı belgede dildeki başlıca değişiklikler ve mevcut 2.x kodlarıyla olan muhtemel uyumsuzluklar gayet güzel bir şekilde özetleniyor.

Geçen yıllar içinde geniş Python ekosistemi çok sayıda kaliteli yazılım ortaya çıkardı. 3.x serisiyle birlikte geriye dönük uyumluluğun ortadan kaldırılmasının dezavantajı, bu yazılımların 3.x serisinde çalışmaz hale gelecek olmasıdır.

O halde hangi sürümü kullanmalıyım?

Hangi sürümü kullanmanız gerektiği, çoğunlukla amacınızın ne olduğuna bağlıdır.

Yapmak istediğiniz şeyi Python 3.x ile yapabiliyorsanız ne ala! Python 3.x’te nispeten kısıtlı sayıda kütüphane desteği olması ve mevcut GNU/Linux dağıtımları ile Mac’lerin hala öntanımlı olarak 2.x sürümleriyle birlikte gelmesi gibi birkaç dezavantaj dışında Python 3.x bir dil olarak her yönüyle kullanıma hazırdır. Python 3.x’in kullanıcılarınızın bilgisayarlarında bulunduğu (bu makaleyi okuyan pek çok kişinin sadece kendi için veya denetleyebildikleri bir hedef kitle için geliştirme yaptığını düşünürsek bunu sağlamak pek de zor olmasa gerek) ve üçüncü şahıs yazılımların eksikliğinin ayak bağı olmadığı (veya ihtiyacınız olan paketlerin Python 3’ü desteklediğini bildiğiniz) durumlarda Python 3.x kusursuz bir seçimdir. Ayrıca şu anda öntanımlı sürüm olarak kullanmasalar da pek çok GNU/Linux dağıtımı son kullanıcılar için Python 3.x paketleri sunabilmektedir.

Ancak yine de Python 3 yerine Python 2 kullanmanızı gerektiren bazı ciddi meselelerle karşılaşabilirsiniz.

Birincisi, eğer programınız denetiminiz dışındaki bir ortamda çalışacaksa, kullanacağınız Python sürümünü seçme özgürlüğünüz olmayabilir. Böyle bir durumda belli bir Python sürümü kullanmak durumunda kalabilirsiniz.

İkincisi, eğer henüz Python 3 ile uyumlu bir sürümü yayımlanmamış belli bir üçüncü şahıs paketi ya da uygulaması kullanmak istiyorsanız, üstelik bu paketi Python 3.x sürümüne taşımak hiç de kolay bir iş değilse, o paketten yararlanabilmek için Python 2’yi kullanmayı tercih edebilirsiniz.

Python 3’ü desteklemeyen önemli uygulamalar arasında Twisted (ağ programlama ve başka pek çok şey için kullanılan bir kütüphane), gevent (Twisted’a benzeyen, ama farklı özellikleri olan bir kütüphane), Django ve Pylons (web siteleri hazırlamaya yardımcı uygulamalar), PyGTK ve PySide (grafik arayüz tasarımı), py2exe (programlarınızı Windows için paketlemeye yarayan bir kütüphane), PIL (resim işleme) ve numpy (sayı işlemleri) sayılabilir…

Bu kütüphanelerin çoğu için Python 3.x uyumluluğu üzerinde, farklı aşamalara gelmiş birtakım çalışmalar yürütülüyor. Örneğin numpy üzerindeki çalışmalar tamamlanmak üzere. Bazı kütüphanelerde ise durum bir öncelik meselesinden ibaret. Mesela Twisted çoğunlukla üretim boyutundaki sunucuları hedeflediği için, dilde büyük değişiklikler getiren bir sürüme destek vermek şöyle dursun, Python’un eski sürümlerini desteklemek dahi büyük önem taşıyor. (Twisted, 3.x’e taşıma işleminin hiç de kolay olmadığı paketler denince akla gelen başlıca örnektir.)

Elbette 3.x’e taşınmış pek çok paket de var. Örneğin yazdıkları programlara grafik arayüz eklemek isteyenler PyGTK yerine PyQT veya standart kütüphane içinde gelen Tkinter’i kullanabilir. Python 3.x kullanmak istiyor, ama bir bağımlılıktan ötürü bundan çekiniyorsanız öncelikle biraz araştırma yapmak iyi bir fikir olabilir. Kütüphaneleri taşıma işlemi devam eden bir süreçtir. Ayrıca bu wiki sayfası da zaman zaman güncellenebilir.

Python 3’e geçişle ilgili başka bir sorun da referans kitaplar ve internet üzerindeki pek çok belgenin (örnek kodlar da dahil) hep Python 2.x üzerine olmasıdır. Bu sebeple Python 3 kullanabilmek için kaynaklarda bazı düzenlemeler yapmak gerekebilir. Aynı şekilde IRC üzerinden yardım almaya alışmış kişiler için konuşmak gerekirse, #python kanalının müdavimleri, henüz 3.x’e taşınmamış, eskiden beri kullanılan yazılımlara bel bağlayan güngörmüş geliştiricilerdir (Burada örnek olarak akla Twisted, Zope ve daha önce bahsettiğimiz paketler geliyor). Sonuç olarak, IRC üzerindeki geliştiriciler size Python 3.x ile ilgili veya Python 3.x’e taşınmış kütüphaneler ile ilgili sorunlar konusunda, Python 2.x konularında yardımcı olabildikleri kadar yardımcı olamayabilir. Aynı şey #python kanalı dışındaki ortamlar için de geçerlidir. Elbette bu durum yavaş yavaş düzeliyor. Ayrıca bazı problemler zannettiğiniz kadar 3.x’e özgü olmayabilir. Dolayısıyla #python kanalından veya alternatif kaynaklardan yardım istemek yine de iyi bir fikir olabilir. Her şeye rağmen, comp.lang.python gibi, 3.x kullanıcılarının bolca bulunduğu ve sorunlarınız için yardım alabileceğiniz önemli kanallar da mevcuttur.

Ama 2.x sürümünü bir kenara bırakmak en iyisi değil mi? Ne de olsa bu, pek çok hata barındıran eski bir dil. Üstelik bütün bu hatalar ortadan kalksın diye koca bir sürüm yayımlandı.

Aslında pek de öyle değil. İyi haber şu ki, sırf 2.x kullanıyorsunuz diye 3.x’in bütün nimetlerinden mahrum kalacaksınız diye bir kaide yok. 3.0 ile uygulamaya giren pek çok yenilik 2.6’ya da aktarıldı. Üstelik 3.0, 3.1 ve yakında yayımlanacak olan 3.2 ile gelen daha pek çok yenilik de 2.7 sürümüne aktarılacak. 2.x’te yapamayıp da 3.x’te yapabileceğiniz şeyler çok azdır. Ama 2.x ile yapabilecekleriniz, 3.x ile yapabilecekleriniz kadar şık ve zarif değildir. Yalnızca 3.x sürümlerinde bulunan ve muhtemelen 2.x serisine taşınmayacak olan bazı özellikler şöyle sınıflandırılabilir:

  1. Açıklamalı Fonksiyon Parametreleri (function annotations)
  2. Sadece isimli argümanlardan oluşan fonksiyonlara ait sözdizimi
  3. Genişletilmiş demet çözme
  4. Yerel olmayan değişken tanımlama

2.x’e taşınan özelliklere ilişkin ayrıntılı bilgi için bkz. Python 2.6’daki Yenilikler ve Python 2.7’deki Yenilikler

İyi yazılmış bir 2.x kodu 3.x koduna benzer. Ancak bunu sağlamak için bazı şeylere de dikkat etmeniz gerekecektir. Mesela yeni tipte sınıfları kullanmak, print’in eski ve küflenmiş kullanımlarından uzak durmak, mümkün olduğunca liste/demet/sözlük üreteçlerinden yararlanmak gibi… Buna şöyle bir örnek verebiliriz: İyi bir 2.x kodunda range yerine xrange kullanılır. xrange 3.x’teki range’e çok benzer (Tabii Python 3’teki range çok daha yeteneklidir, çünkü sys.maxint’in gösterdiği değerden çok daha fazlasını kullanabilir).

Her şeyden öte, 2.x’ten 3.x’e geçişin olabildiğince sancısız olabilmesi için iyi kod yazmaya odaklanmanızı öneriyoruz. Bununla, eksiksiz birim testleri yazmayı ve Unicode’u düzgün kullanabilmeyi kastediyoruz (Python 3.x, Unicode ve baytlar konusunda 2.x’e kıyasla daha tavizsizdir. Bu tavizsizlik iyi bir şey olarak kabul edilir, ama bu durum bazı yazılımların 3.x’e aktarılmasını da epey zorlaştırabilir).

Python 3’ü kullanmak istiyorum, ama elimde sadece Python 2.x ile çalışabilen küçük bir kütüphane var. Acaba Python 2 ile devam mı etmeliyim, yoksa o kütüphaneyi kullanmaktan vaz mı geçmeliyim?

Halihazırda Python 3’ü destekleyen alternatif bir paket bulamadığınızı varsayarsak, yine de önünüzde birkaç seçenek var:

  1. O kütüphaneyi 3.x’e taşıyabilirsiniz (“Taşımak”, o kütüphaneyi 3.x üzerinde çalışabilir hale getirmek demektir.)
  2. Eğer taşıma işlemi çok zor olacaksa ve programınızın öteki bütün bağımlılıkları 2.x ile çalışıyorsa siz de 2.x üzerinde çalışmaya devam edebilirsiniz. Başka yerlerde de ifade edildiği gibi, bütün bağımlılıklar başarıyla 3.x’e taşındıktan sonra, iyi yazılmış bir 2.x kodunu 3.x’e taşımak sancısız bir süreç olacaktır.
  3. O kütüphanenin kattığı özelliğin ne kadar önemli olduğunu kafanızda tartın. Kimbilir belki o kütüphaneyi programınızdan çıkarsanız da olur.

Arzu edilen, o kütüphaneyi 3.x’e taşımaktır. Genellikle birileri zaten bu iş üzerinde çalışıyordur. Değilse, kütüphanenin geliştiricileri bu konuda yardım teklifinizi çoğunlukla geri çevirmeyecektir. Çünkü taşıma işlemi hem özgün yazılım içindeki hataların bulunmasını sağlar, hem de özgün yazılımın ve 3.x’e taşınmış halinin kalitesini yükseltir. Taşıma işlemi her zaman o kadar kolay değildir. Ancak taşımak sıfırdan yazmaktan kolaydır.

Taşıma işleminin nasıl yapılacağı PEP 3000‘de açıklanmıştır. Ana fikir, söz konusu kütphanenin 2.x sürümünü alıp, Python 3’le uyumlu bir sürüm elde etmek için 2to3 adlı dönüşüm betiğini kullanmak ve bütün birim testlerinin 3.x sürümünde de geçer olup olmadığını kontrol etmektir. Eğer testler geçersizse özgün 2.x kaynağını düzenleyip aynı işlemi tekrar edin. Bu yaklaşım sayesinde tek bir 2.x kod tabanı üzerinden hem 2.x’i hem de 3.x’i kolayca destekleyebilirsiniz. Bu, 2.x ve 3.x dallarını ayrı ayrı desteklemekten çok daha kolaydır (Bunu bir de Python geliştiricilerine sorun. Ne de olsa onlar bu işi yıllardır yapıyor!).

Eğer kütüphane içinde C eklenti modülleri de varsa taşıma işlemi karmaşık bir hal alabilir, ancak böyle bir durumda bile muhtemelen taşıma işlemi kendi paketinizi sıfırdan yazmaktan kolay olacaktır.

Python vikisinde bu konuya ilişkin daha ayrıntılı kılavuzlar bulabilirsiniz: Python’u Py3k’ya Taşımak, Eklenti Modüllerini Py3k’ya Taşımak

3.x ile bir şeyler yazmaya karar verdim, ama şimdi bu yazdığım şeyi elinde sadece 2.x bulunan biri kullanmak istiyor. Ne yapmalıyım?

2.x kaynak kodlarından 3.x kodları üretilmesine olanak tanıyan 2to3 adlı aracın yanısıra, 3.x kodlarını 2.x koduna dönüştürmeyi amaçlayan 3to2 adlı bir betik de vardır. Teorik olarak, 3.x’te daha az pürüzlü nokta olduğu için (ne de olsa geriye dönük uyumluluğu kırmanın ana sebeplerinden biri de bu pürüzlü noktaları olabildiğince gidermekti!) 3to2 aracı daha iyi sonuç verecektir. Ancak 3.x’e özgü özellikleri (mesela açıklamalı fonksiyon parametreleri veya genişletilmiş demet çözme) bolca kullanan kodların başarıyla 2.x’e dönüştürülmesinin de pek mümkün olmayacağı bilinmelidir.

Ayrıca şu anda 3to2 aracının, 2to3 aracına kıyasla daha az kullanıldığını söyleyebiliriz. Dolayısıyla 3to2 aracında bazı aksaklıklarla karşılaşabilirsiniz. Ancak eğer 3.x kodları yazmak istiyorsanız elbette bu araç denemeye değer…

Python 2 ile Python 3 arasında seçim yapmanıza yardımcı olabilecek başka kaynaklar

#python tayfasından öğütler (aynı zamanda bu makalenin de ilham kaynağıdır): http://python-commandments.org/python3.html

Özellikle Python 3 üzerinden programlama öğretimi konusunda Nick Efford’un bazı önerileri var: http://www.comp.leeds.ac.uk/nde/papers/teachpy3.html

Mark Pilgrim Dive Into Python’ın Python 3’ü temel alan sürümünü yayımladı: http://diveintopython3.org/whats-new.html

“IronPython kullanıcılarının Python 3 hakkında bilmesi gerekenler”: http://www.itworld.com/development/104506/python-3-and-ironpython

istihza.com, Python , , , ,

Sphinx 1.0 Yolda…

Cumartesi, 29 May 2010

istihza.com‘u takip edenlerin artık gayet iyi bildiği gibi, sitedeki HTML ve PDF belgelerini oluşturmak için Sphinx adlı bir yazılımdan yararlanıyorum.

Bu yazılımı istihza.com’daki belgelendirme çalışmaları için kullanmaya ilk karar verdiğimde yazılımın benim amacım açısından en önemli eksikliği Türkçe desteğinin olmamasıydı. Bu yüzden ilk iş olarak Sphinx’i Türkçe’ye çevirdim. Böylece istihza.com’daki HTML belgelerinin arayüzü Türkçe desteğiyle okura sunulabilmiş oldu.

Sphinx’i Türkçe’ye ilk çevirdiğimde, bu yazılımı istihza.com’da kullanacağımı düşünerek, sadece kendi amacıma hizmet edecek şekilde Türkçeleştirmiştim. Daha sonra çeviriler üzerinde biraz daha çalışarak, bu çalışmayı Sphinx geliştiricilerine de göndermeye karar verdim.

Sphinx’in yakın zamanda yayımlanacak olan 1.0 sürümünde Türkçe dil desteği de olacak. Böylece Sphinx’i Türkçe belgelendirme çalışmalarında kullanmak isteyenler de, Türkçe arayüze sahip HTML belgeleri oluşturabilecek.

Sphinx’in şu anda beta aşamasında olan 1.0b1 sürümünün en son güncellemeleri de içeren halini indirmek için şu adresi ziyaret edebilirsiniz. Ama ben size kararlı sürümü beklemenizi tavsiye ederim. Kararlı sürüm yayımlandığında buradan duyuracağım.

Faydalı olması ümidiyle.

istihza.com , , ,