arşiv

‘Python’ kategorisi için arşiv

Herkes İçin Python: Bir İnceleme Yazısı

Pazar, 28 Şub 2010

Yaklaşık bir hafta önce piyasaya çıkan “Herkes İçin Python” adlı kitabımız hakkında Sayın Uğur Özyılmazel bir inceleme yazısı yazmış.

İnceleme yazısına http://vigoyla.blogspot.com/2010/02/python-kitab.html adresinden ulaşabilirsiniz.

Kitabı okuyup incelediği için Uğur Özyılmazel’e teşekkür ederim.

admin Python , , , ,

Python Kitabı Çıktı!

Cumartesi, 20 Şub 2010

Sevgili Arkadaşlar,

Birkaç gün önce duyurduğumuz Python kitabı bugün itibariyle kitapçılardaki yerlerini aldı.

Kitabın duyurusu için http://www.istihza.com/blog/python-kitab.html/ adresini, kitap hakkında bazı teknik ayrıntıları öğrenmek için ise http://www.istihza.com/blog/python-kitabi-hakkinda-teknik-bilgiler.html/ adresini ziyaret edebilirsiniz.

Kitabı yayımlayan KODLAB Yayınevi’ne ve “Math Modülü” adlı makaleyi kitaba almama izin veren Kürşat Örsel’e teşekkür ederim.

Bayinizden ısrarla isteyiniz!.. :)

admin Python , , ,

istihza.com’daki Yenilikler

Pazar, 17 Oca 2010

Bugün istihza.com‘daki Python 2.x bölümüne yeni bir konu ekledik. Konumuzun adı “Python’da Biçim Düzenleyiciler” (format modifiers). Konuyu olabildiğince ayrıntılı bir şekilde incelemeye çalıştık.

Yeni konumuz şu başlıklardan oluşuyor:

  • Biçim Düzenleyiciler
    • Biçim Düzenlemede Kullanılan Karakterler
      • “d” Harfi
      • “i” Harfi
      • “o” Harfi
      • “x” Harfi
      • “X” Harfi
      • “f” Harfi
      • “c” Harfi
    • İleri Düzeyde Karakter Dizisi Biçimlendirme
      • Karakter Dizisi Biçimlendirmede Sözlükleri Kullanmak
      • Sayılarda Hassas Biçimlendirme
      • Sayıların Soluna Sıfır Eklemek
      • Karakter Dizilerini Hizalamak
      • Karakter Dizilerini Hem Hizalamak Hem de Sola Sıfır Eklemek

Konunun ilginizi çekmesini umuyorum…

Bu arada, istihza.com’daki HTML ve PDF belgelerini otomatik olarak oluşturmakta kullandığımız Sphinx adlı yazılım 0.6.4 sürümüne yükseltildi. Biz de istihza.com’daki bütün HTML ve PDF belgelerini yeni sürümle derledik. Yeni belgeleri ilgili bağlantılardan indirebilirsiniz.

Ayrıca Python 2.x bölümündeki bazı konuları da gözden geçirdik. İlerleyen günlerde özellikle “Fonksiyonlar” konusu tamamen elden geçirilecek.

İyi çalışmalar,

istihza

admin Python , , , , ,

MD5 Kaydedici

Pazartesi, 11 Oca 2010

Uzun bir aradan sonra Python Programları bölümümüzün yeni bir konuğu var. Bu bölüme eklenen son program Demren Güner tarafından yazılmış, “MD5 Kaydedici” adlı bir uygulama. Demren Güner bu uygulamayı Tkinter arayüz takımını kullanarak hazırlamış. Peki bu uygulama ne işe yarıyor?

Adından da anlaşılacağı gibi bu uygulamanın işi MD5 özetleriyle… Program şöyle bir arayüze sahip:

MD5 Kaydedici

Burada “Giri” adıyla gösterilen kutucuğa md5′e dönüştürmek istediğimiz herhangi bir değer giriyoruz. Ardından “Bu şifre nereye ait?” sorusuyla gösterilen kutucuğa da, girdiğimiz değerin ne ile ilgili olduğunu yazıyoruz. Mesela ilk kutucuğa Gmail parolamızı yazmışsak, ikinci kutucuğa, girilen değerin Gmail’le ilgili olduğunu göstermek için “Gmail parolası” yazabiliriz. Ancak bu kutucuğu doldurmak zorunda değiliz. Program bu kutucuk boş bırakılsa da çalışacaktır.

Bu kutucukları doldurduktan sonra yapmamız gereken şey, alt taraftaki “çıktı ver” adlı düğmeye basmak. Bu düğmeye bastığımızda, ilk kutuya girdiğimiz değerin MD5 özeti “Çıktı” adlı kutucuğa işlenecektir. Bundan sonra “Kaydet” düğmesine basarak bu MD5 özetini kaydedebiliriz. “MD5 Kaydedici” adlı uygulama, bulduğu MD5 özetlerini otomatik olarak “md5list.txt” adlı bir dosyaya kaydedecektir.

Bu uygulama hem GNU/Linux, hem de Windows üzerinde çalışabiliyor. Uygulamayı çalıştırmak için, uygulamanın bulunduğu dizin içinde “python Md5Saver.py” komutunu vermemiz yeterli olacaktır…

Uygulamayı http://www.istihza.com/programlar/icindekiler_programlar.html adresindeki bağlantısından indirebilirsiniz.

Bu uygulamayı bize gönderen Demren Güner’e teşekkür ederim.

admin Python, Yazılım , , ,

Harman 0.8 + .deb + .exe Paketi

Pazartesi, 04 Oca 2010

Bir PDF kesme-birleştirme programı olan HARMAN programının 0.8′inci sürümü bugün itibariyle istihza.com sunucularındaki yerini aldı. HARMAN’ın kaynak dosyalarıyla birlikte Ubuntu .deb paketini ve Windows .exe dosyasıhttp://www.istihza.com/harman/icindekiler_harman.html adresinden indirebilirsiniz…

HARMAN’ın bu sürümünde pek çok yenilik ve iyileştirme bulunuyor… Bu yenilik ve iyileştirmelerin en önemlisi, bu sürümle birlikte HARMAN’ın python-distutils desteği kazanması. Python-distutils desteği sayesinde GNU/Linux kullanıcıları HARMAN’ı tek bir komut yardımıyla sistemlerine kurabilecek…

http://www.istihza.com/harman/icindekiler_harman.html adresinden HARMAN’ı indirdiğinizde, dizin içinde setup.py adlı bir dosya göreceksiniz. Bu dosyanın bulunduğu yerde;

sudo python setup.py install

komutunu çalıştırarak HARMAN’ı sisteminize rahatlıkla kurabilirsiniz. HARMAN kurulduktan sonra “ofis” menüsü içine yerleşecektir. Tabii HARMAN’ı kurmadan önce bu programın bağımlılıkları olan python-gtk2 ve python-pypdf paketlerini sistemimize kurmayı unutmuyoruz… GNU/Linux kullanıcıları bu paketleri kendi paket yöneticileri aracılığıyla kurabilirler.

Yukarıdaki komutu çalıştırdığınızda setup.py betiği “kurulum.txt” adlı bir metin dosyası oluşturacaktır. Bu dosyayı silmeyin. Bu metin dosyasının içini açıp baktığınızda, HARMAN’ın kurulduğu dizinlerin adlarının bu dosyada sıralandığını göreceksiniz. Eğer daha sonra HARMAN’ı sisteminizden tamamen kaldırmak isterseniz bu dosya işinize yarayacaktır…

HARMAN dizini içinde ayrıca “kaldir.py” adlı bir dosya daha göreceksiniz. Eğer HARMAN’ı sisteminizden tamamen kaldırmak isterseniz şu komutu verebilirsiniz:

sudo python kaldir.py kurulum.txt

Böylece HARMAN sisteminizden tamamen kaldırılmış olacaktır…

Elbette HARMAN’ı kullanmak için sisteminize kurmak zorunda değilsiniz. GNU/Linux ve Windows kullanıcıları bu programı hiç bir kurulum olmadan doğrudan şu komutla da çalıştırabilir:

python harman.py

Tabii bu komutun işe yarabilmesi için HARMAN’ın bağımlılıkları olan python-gtk2 ve python-pypdf modüllerinin sisteminizde kurulu olması gerekiyor. GNU/Linux ve Windows kullanıcıları bu modülleri bilgisayarlarına nasıl kuracaklarını öğrenmek için http://www.istihza.com/harman/belgeler/harman_intro.html adresindeki “HARMAN Kullanma Kılavuzu”nu inceleyebilirler… Eğer sisteminizde gerekli bağımlılıklar kurulu değilse HARMAN ilk çalışma esnasında sizi kibarca uyaracak ve bilgilendirecektir…

Bu sürümdeki bir başka yenilik ise birleştirme, sayfa ekleme, sayfa silme ve kesme-yapıştırma işlemlerinden sonra “Dizini Göster” ve “PDF’yi Göster” düğmeleri yardımıyla, nihai PDF belgesinin içinde yer aldığı dizini veya PDF’nin kendisini görebilecek olmamız… Böylece işlem sonucunda oluşan PDF belgesine ulaşmak kolaylaşmış oldu (Fikri veren Burak Sezer’e teşekkür ederim).

Bunların dışında, HARMAN arayüzündeki bazı çeviri eksiklikleri ve aksaklıkları da giderildi. Böylece daha kararlı bir HARMAN’a doğru önemli bir adım atmış olduk…

Dediğim gibi, bu programın kaynak dosyalarıyla birlikte .deb ve .exe paketlerini http://www.istihza.com/harman/icindekiler_harman.html adresinden indirebilirsiniz.

HARMAN’la ilgili düşünce ve önerilerinizi kistihza [et] yahoo [nokta] com adresine iletebilirsiniz.

Programın işinize yaraması dileğiyle.

admin Python, Yazılım , , , , , , ,

PyGtk ve Windows

Pazar, 03 Oca 2010

Windows’ta bir PyGtk Hatası başlıklı yazıda PyGtk’nın Windows’ta hata verdiğinden bahsetmiş, bu sorunun nasıl çözülebileceğini anlatmıştık. O yazıda PyGtk’nın Windows’ta çalışabilmesi için indirilip kurulması gereken programların bağlantılarını da vermiştik.  O bağlantıları bugün kontrol ettiğimde bazılarının kaldırılmış olduğunu gördüm. Dolayısıyla Windows’lu bilgisayarlara PyGtk’yi şimdi kuracak olanlar için o yazıdaki bilgileri ve bağlantıları güncellemek gerekiyor… Ancak hatırlatayım, şimdi vereceğim bilgileri, o yazıdaki bilgilerle birlikte değerlendirmelisiniz…

Windows’ta PyGtk’yi kullanabilmek için sisteminizde Python’un 2.6.4 sürümünün kurulu olması gerekiyor. Bu sürümü http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi adresinden indirip kurabilirsiniz.

Python’u kurduktan sonra Python’u Windows PATH değişkenine eklemeyi unutmayın.  Python’u PATH değişkenine nasıl ekleyeceğinizi öğrenmek için http://www.istihza.com/py2/windows-path.html adresindeki makalemizden yararlanabilirsiniz.

Daha sonra http://ftp.acc.umu.se/pub/gnome/binaries/win32/gtk+/2.18/gtk+-bundle_2.18.5-20091215_win32.zip adresinden “GTK Bundle” paketini indiriyoruz. Bu paketi, eski yazıda anlattığımız şekilde C:/GTK dizini içine açıp, C:/GTK/bin dizinini PATH değişkenine ekliyoruz.

Pycairo, Pygobject ve PyGtk paketlerini ise sırayla şu adreslerden indiriyoruz:

Pycairo: http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pycairo/1.4/pycairo-1.4.12-2.win32-py2.6.exe

Pygobject: http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pygobject/2.14/pygobject-2.14.2-2.win32-py2.6.exe

PyGtk: http://ftp.acc.umu.se/pub/GNOME/binaries/win32/pygtk/2.12/pygtk-2.12.1-3.win32-py2.6.exe

Bunların dışında, dilerseniz http://downloads.sourceforge.net/gtk-win/gtk2_prefs-0.4.1.bin-gtk2.10-win32.zip?download adresinden “GTK Preference Tool” adlı uygulamayı da indirebilirsiniz. Bu uygulama, GTK programlarının temalarını değiştirmenizi sağlar.

İyi çalışmalar,

istihza

admin Python ,

Alfanümerik Ne Demek?

Çarşamba, 04 Kas 2009

Geçen gün istihza.com‘un ziyaretçi istatistiklerini incelerken bir şey dikkatimi çekti. İstisnasız her gün “alfanümerik nedir?”, “alfanümerik”, “alfanümerik ne demek?”, “alfanümerik karakter nedir?” gibi Google sorgulamaları yoluyla insanlar istihza.com’a ulaşıyor!…

Şu ana kadar insanların, Google’de yaptıkları aramaların sonuçları aracılığıyla istihza.com’a ulaşmasını sağlayan ilk 5 sorgu dizisi şöyle:

1. istihza

2. python

3. alfanümerik karakter nedir

4. alfanümerik nedir

5. alfanümerik karakter

“alfanümerik” kelimesini içeren arama sorguları daha alt sıralarda başka şekillerde de yer alıyor…

“alfanümerik” konusunun bu kadar merak edildiğini görünce bununla ilgili bir açıklama yapayım dedim…

Efenim, karakterler üçe ayrılır:

1. alfabetik karakterler

2. nümerik karakterler

3. alfanümerik karakterler

“alfabetik” karakterler, adından da az çok anlaşılacağı gibi, alfabedeki harflerin ta kendisidir. Mesela “a”, “b”, “e”, “j”, vb…

Sayılar ve “_?=*” gibi simgeler alfabetik değildir.

Bir karakterin alfabetik olup olmadığını anlamak için Python’da isalpha() adlı fonksiyondan yararlanabilirsiniz:

>>> "a".isalpha()
 
True

Demek ki “a”, alfabetik bir karakter dizisi imiş… Bir de şuna bakalım:

>>> "1".isalpha()
 
False

Demek ki “1″ alfabetik bir karakter değilmiş…

Şöyle bir örnek vererek durumu biraz daha netleştirelim:

>>> for i in "abc234_?=*jkl":
...    if i.isalpha():
...        print "%s alfabetik bir karakter dizisidir"%i
...    else:
...        print "%s alfabetik bir karakter dizisi değildir"%i
...
a alfabetik bir karakter dizisidir.
b alfabetik bir karakter dizisidir.
c alfabetik bir karakter dizisidir.
2 alfabetik bir karakter dizisi değildir.
3 alfabetik bir karakter dizisi değildir.
4 alfabetik bir karakter dizisi değildir.
_ alfabetik bir karakter dizisi değildir.
? alfabetik bir karakter dizisi değildir.
= alfabetik bir karakter dizisi değildir.
* alfabetik bir karakter dizisi değildir.
j alfabetik bir karakter dizisidir.
k alfabetik bir karakter dizisidir.
l alfabetik bir karakter dizisidir.

Ancak burada dikkat edilmesi gereken bir nokta var. Mesela şu örneğe bir bakalım:

>>> "ğ".isalpha()
 
False

Gördüğünüz gibi, isalpha() fonksiyonu Türkçe karakterleri doğru değerlendiremiyor… Bu sorunun üstesinden gelmek için Türkçe karakter dizilerini unicode olarak tanımlamanız gerekir:

>>> u"ğ".isalpha()
 
True

Sadece tek bir karakterin değil, birden fazla karakterden oluşan dizilerin alfabetik olup olmadığını da denetleyebiliriz. Örneğin:

>>> "istihza".isalpha()
 
True

Burada “istihza” karakter dizisi tamamen alfabetik karakterlerden oluştuğu için, “istihza” kelimesi alfabetiktir diyoruz…

Bir de şuna bakalım:

>>> "istihza.com".isalpha()
 
False

“istihza.com” karakter dizisi içinde alfabetik olmayan bir karakter bulunduğu için (“.” karakteri), bu karakter dizisi alfabetik değildir. Dolayısıyla bir karakter dizisinin alfabetik olabilmesi için, o karakter dizisini oluşturan bütün karakterlerin alfabetik olması gerekir. Tek bir alfabetik olmayan karakter dizisi dahi işi bozar…

Bu arada, içinde Türkçe karakterler geçen bir karakter dizisinin alfabetik olup olmadığını denetlerken bu karakter dizisini unicode olarak tanımlamayı unutmuyoruz:

>>> "ışık".isalpha()
 
False

Doğrusu şöyle olacak:

>>> u"ışık".isalpha()
 
True

Gelelim “nümerik” karakterlere…

“nümerik” karakterler “alfabetik” karakterlerin tersidir. Buna göre, sayıları temsil eden karakterlere “nümerik” adı verilir. Örneğin 1, 2, 5, 10, 20 sayıları “nümerik” karakterlerdir.

Bir karakterin nümerik olup olmadığını isdigit() fonksiyonunu kullanarak denetleyebiliriz:

>>> "1".isdigit
 
True

Ama:

>>> "a".isdigit()
 
False

Alfabetik karakter dizilerindeki “ya hep ya hiç” kuralı nümerik karakter dizileri için de geçerlidir. Yani bir karakter dizisinin nümerik olabilmesi için, o karakter dizisini oluşturan bütün karakterlerin nümerik olması gerekir. Tek bir nümerik olmayan karakter dahi, o karakter dizisinin nümerik olmamasına yol açacaktır…

Sıra geldi asıl konumuza. Yani “alfanümerik” karakterlere…

“alfanümerik” karakterler, yukarıda anlattığımız “alfabetik” ve “nümerik” karakterlerinin birleşimidir. Yani içinde hem alfabetik hem de nümerik karakterler barındıran dizilere “alfanümerik” karakter dizileri adı verilir. Tabii sadece alfabetik ve sadece nümerik karakterler barındıran diziler de aynı zamanda birer alfanümerik karakter dizisidir…

Tek bir karakter için konuşmak gerekirse, alfabetik veya nümerik olan karakterlere “alfanümerik” adı verilir.

Bir karakterin alfanümerik olup olmadığını Python’daki “isalnum()” adlı fonksiyon yardımıyla denetleyebiliriz.

Dilerseniz bu açıklamaları birkaç örnekle taçlandıralım:

>>> "a".isalnum()
 
True

Demek ki “a”, alfanümerik bir karaktermiş.

>>> "1".isalnum()
 
True

Demek ki “1″ de alfanümerik bir karaktermiş…

Buradan şu sonuçları çıkarabiliriz:

- Bütün alfabetik karakterler aynı zamanda birer alfanümerik karakterdir. – Bütün nümerik karakterler de aynı zamanda birer alfanümerik karakterdir.
- Bütün alfanümerik karakterler aynı zamanda birer alfabetik karakter OLMAYABİLİR.
- Bütün alfanümerik karakterler aynı zamanda birer nümerik karakter de OLMAYABİLİR.

Birden fazla karakterden oluşan dizilerin durumuna da bakalım isterseniz:

>>> "abc124".isalnum()
 
True
 
>>> "istihza.com".isalnum()
 
False

Gördüğünüz gibi, “istihza.com” karakter dizisi içindeki “.” karakterinden ötürü karakter dizimiz alfanümerik olma özelliği taşıyamıyor. Bir karakter dizisinin alfanümerik olabilmesi için, barındırdığı bütün karakterlerin alfanümerik olması gerekir…

admin Python , ,

Pygtk 2.x Bölümü

Cuma, 23 Eki 2009

istihza.com temel olarak Python ve Tkinter’e ilişkin bir Türkçe belgelendirme çalışması olsa da, burada Pygtk hakkında bilgiler de veriliyor. istihza.com’daki Pygtk bölümü şu an için “temel atma” aşamasındadır. Ancak bu bölümün de zamanla olgunlaşması için, fırsat buldukça bazı çalışmalar yapıyorum…

“Pygtk Bölümünü Adam Etme Projesi”nin bir parçası olarak bugün bu bölüme bazı yeni konular ekledim. Yeni konular eklemenin dışında, mevcut konuları da tekrar gözden geçirerek bazı yazıları genişlettim.  Ayrıca bu bölüme ait PDF dosyası da HTML belgeleriyle eşzamanlı olarak güncellendi.

Yenilenmiş Pygtk bölümünün HTML sürümüne http://www.istihza.com/gtk/icindekiler_pygtk.html adresinden; PDF sürümüne ise http://www.istihza.com/gtk/pdf/Pygtk2x.pdf adresinden ulaşabilirsiniz.

Yalnız bu aralar aklıma şöyle bir konu takılıyor: Bildiğiniz gibi, istihza.com’daki HTML dosyalarında ne zaman bir değişiklik yapsam, bu değişiklikleri hemen PDF dosyalarına da yansıtıp, yeni PDF dosyasını sunucuya yüklüyorum.  istihza.com’u takip edenler bu PDF belgelerini bilgisayarlarına indirdikleri için, acaba böyle yaparak “PDF kirliliğine” yol açıyor muyum, okurların bilgisayarlarındaki PDF sürümlerinin birbirine karışmasına sebep oluyor muyum diye de düşünmüyor değilim…

O yüzden bu konuda fikrinizi almak isterim.  istihza.com’da yapılan değişiklikler anında PDF olarak yayımlansın mı, yoksa HTML belgeleri belli aralıklarla mı PDF haline getirilsin?

PDF’leri hemen hazırlamak veya belli aralıklarla hazırlamak arasında benim için pek bir fark yok. Sonuçta ben PDF’leri sadece iki komutla oluşturup tek harekette sunucuya yüklüyorum. O yüzden işin “külfet” boyutunu rahatlıkla bir kenara atıp “düzenlilik” boyutuna odaklanabiliriz…

Sevgiler,

istihza

admin Python , , ,

Düzeltme…

Cumartesi, 10 Eki 2009

Bu aralar “ASCII, UNICODE ve Python” üzerine bir makale yazmakla uğraşıyorum. Makale epey ilerledi. Ama “ASCII, UNICODE ve Python” epey derin ve ayrıntılı bir konu olduğu için henüz tam anlamıyla bitmedi makale… Geçen gün Python 2.x bölümüne “Python’da Paket Kurulumu” konusunu eklerken, “ASCII, UNICODE ve Python” makalesinin taslak hali de Sphinx’in HTML ve PDF derleme sürecine karışmış… Böylece henüz tamamlanmış olan makale de istihza.com’daki yerini almış… Ben bunu biraz önce farkettim ve taslak makaleyi istihza.com’dan kaldırdım. Yenilenmiş HTML ve PDF dosyalarına sitemizden ulaşabilirsiniz. Yakın zamanda bu makalenin tam halini sitede bulabileceksiniz.

Sevgiler,

istihza

admin Python , ,

Sphinx’te Okunaklı URL’ler Üretmek

Çarşamba, 23 Eyl 2009

istihza.com’daki belgelerin Sphinx adlı yazılım kullanılarak üretildiğini daha önceden duyurmuştum. Ancak orada da bahsettiğim gibi Sphinx adlı yazılım, URL’leri üretirken, içinde Türkçe karakterler geçen başlık adlarını oldukça okunaksız bir hale sokuyor. Mesela “Python Nasıl Çalıştırılır?” gibi bir başlığı, http://www.istihza.com/py3/hakkinda.html#python-nas-l–al-t-r-l-r biçiminde bir URL’ye dönüştürüyor…

Bu durumun sebebi aslında doğrudan Sphinx’in kendisi değil. Bu sorun Sphinx’in yararlandığı Docutils adlı yazılımdan kaynaklanıyor. Sphinx’teki html URL’lerinin nasıl görüneceğini, Docutils içinde yer alan “nodes” adlı bir modül belirliyor. Bu işin asıl sorumlusu ise “nodes” modülü içindeki “make_id()” adlı bir fonksiyon…

“make_id()” adlı fonksiyon “string” adlı bir parametre alıyor. Bu fonksiyonun görevi, kendisine parametre olarak verilen karakter dizisini alıp bu karakter dizisinden bir “tanımlayıcı” (identifier) üretmek.

Bu “nodes” modülü içinde “_non_id_chars” adlı bir değişken belirlenmiş:

_non_id_chars = re.compile('[^a-z0-9]+')

Buradaki düzenli ifade yardımıyla, tanımlayıcı olamayacak karakterler ayıklanıyor. Buna göre eğer bir karakter, sayı veya harf değilse bir tanımlayıcı olarak adlandırılamıyor. Bu süzgeç doğal olarak Türkçe karakterleri dışarıda bırakıyor…

“make_id()” adlı fonksiyon, bu “_non_id_chars” değişkeniyle belirlenen karakterlerin yerine “-” işaretini koyuyor. Bu işi de “make_id()” içindeki şu satır hallediyor:

id = _non_id_chars.sub('-', ' '.join(string.lower().split()))

Dolayısıyla yukarıdaki düzenli ifadenin ayıkladığı karakterler çıktıda “-” işaretiyle gösteriliyor…

İşte Sphinx de bu “make_id()” fonksiyonunun ürettiği tanımlayıcıları URL adlarını belirlemede kullandığı için, Türkçe karakterler barındıran URL adları epey okunaksız bir hale geliyor.

Ben istihza.com’daki belgeleri Sphinx’le üretirken, bu sorunu çözmek amacıyla, “make_id()” fonksiyonuna ufak bir ekleme yaptım. Fonksiyona eklediğim kod parçasını şuraya yapıştırdım:

http://paste-it.net/public/ub37a24/

Eğer bu kodları yama olarak almak isterseniz şuraya bakabilirsiniz:

http://www.istihza.com/denemeler/turkish.patch

Bu kod parçası, URL’lerdeki Türkçe karakterlerin yerine ASCII-benzerlerini koyuyor. Mesela “ş” yerine “s” harfi, “ç” yerine “c” harfi, “ı” yerine “i” harfi gibi… Böylece “python-nas-l–al-t-r-l-r” yerine daha okunaklı bir ifade olan “python-nasil-calistirilir” ifadesini elde ediyoruz.

Bu durumdan ben Docutils geliştiricilerini haberdar ettim. Kodları da kendilerine gösterdim. Docutils geliştiricileri, bu sorunun farkında olduklarını ve Docutils’in svn’deki sürümünde bu sorunu giderdiklerini söyledi. Tabii svn’deki sürüm sadece Türkçe karakterleri değil, İngilizce dışındaki başka dillere ait özel karakterleri de içeriyor…

Eğer Sphinx’teki Türkçe sorununa hızlı bir çözüm arıyorsanız yukarıda verdiğim kodları kullanabilirsiniz. Bu kodları Docutils içindeki “nodes.py” adlı dosyada yer alan “make_id()” adlı fonksiyonun içine yerleştireceksiniz. Kodları “make_id()”  fonksiyonu içindeki “id” tanımlamalarından hemen önce yazıyoruz.

admin Python, Teknik , , ,