arşiv

yazılar buna göre etiketlendi; ‘sphinx’

reStructuredText ve Sphinx

Çarşamba, 24 Şub 2010

Bildiğiniz gibi istihza.com‘daki belgeler reStructuredText biçiminde hazırlanıyor. Bu belgeleri farklı biçimlere dönüştürmek için ise Sphinx adlı bir yazılımı kullanıyorum.

Özellikle reStructuredText, belgelendirme çalışmalarıyla uğraşanlar için çok önemli bir araç. Hatta Python programlama dilinin resmi sitesi olan www.python.org‘daki belgelendirme çalışmaları da reStructuredText biçimi kullanılarak yapılıyor. Python geliştiricileri de reStructuredText biçiminde hazırladıkları belgeleri Sphinx adlı yazılım yardımıyla HTML’ye çeviriyorlar. Zaten Sphinx yazılımının geliştiricisi olan Georg Brandl da Python topluluğunun etkin bir üyesi…

Elbette bu önemli konuya istihza.com’da yer vermemek olmazdı. O yüzden Python 2.x bölümüne “reStructuredText ve Sphinx” adlı yeni bir konu ekledim.

Bu konu çok geniş olduğu için henüz tamamlanmadı. Konuları yazdıkça siteye ekleyeceğim. Şimdilik “reStructuredText” ile bir giriş yaptım.

Yeni konu eklemenin yanısıra, Python 2.x bölümünde varolan belgeleri de gözden geçirmeye devam ediyorum. Tabii buna bağlı olarak PDF belgeleri de sürekli olarak tazeleniyor. Yakında istihza.com’da bunun dışında yenilikler de göreceksiniz.

Sevgiler,

istihza

admin Teknik ,

Python Kitabı Hakkında Teknik Bilgiler

Çarşamba, 17 Şub 2010

istihza.com‘da yer alan Python 2.x ve Tkinter 2.x bölümlerinin KODLAB Yayınları‘ndan basılı kitap olarak çıkacağını duyurmuştum. Kitap birkaç gün önce internet mağazalarında satılmaya başlandı. Cuma günü de bu kitabı kitapçıların raflarında görmeye başlayacağız…

Dilerseniz şimdi size kitap hakkında biraz teknik bilgi vereyim.

Bildiğiniz gibi, istihza.com’daki belgeleri reStructuredText biçiminde hazırlıyorum. Bu sayede tek bir biçimde hazırladığım belgeleri  daha sonra rahatlıkla HTML ve PDF biçimlerine dönüştürerek okurlara sunabiliyorum. Yazıları reStructuredText olarak hazırlamak sitenin güncellenmesi açısından da bana çok büyük bir kolaylık sağlıyor. reStructuredText’in sade ve temiz yapısı sayesinde asıl işe odaklanabiliyorum.

Dediğim gibi, reStructuredText (ya da başka bir ifadeyle “rst”) biçiminde hazırlanmış belgeleri başka biçimlere çevirmek mümkün olabiliyor. Ben bu çevirme işi için, Python geliştiricilerinin de python.org’daki belgeleri hazırlamada kullandığı Sphinx adlı yazılımdan faydalanıyorum. Bu yazılımı, belgelendirme ile uğraşan herkese gönül rahatlığıyla önerebilirim…

KODLAB Yayınları bana istihza.com’daki Python 2.x ve Tkinter bölümlerini kitaplaştırmayı teklif ettikten sonra benden belgeleri .doc biçiminde istedi. Benim Windows bilgisayarlara erişimim son derece kısıtlı olduğu için elbette benim bu belgeleri doğrudan .doc biçiminde hazırlamam mümkün değildi. Ama OpenOffice’te hazırlanan .odt belgeleri .doc olarak da kaydedilebildiği için bu durum ciddi bir sorun teşkil etmedi. İşin daha da güzel tarafı, docutils paketi içinde rst2odt adlı bir betik bulunuyor. Bu betik yardımıyla reStructuredText olarak hazırlanmış belgeleri tek bir komutla .odt’ye çevirebiliyoruz. Bu belgeleri .odt’ye çevirdikten sonra da belgeyi OpenOffice ile açıp başlık, kod bloğu, paragraf ve benzeri özel alanlara istediğimiz stilleri uygulamak mümkün.

OpenOffice bu .odt belgelerini .doc biçiminde de kaydedebildiği için bunları KODLAB’ın istediği şekilde kendilerine teslim ettim. Yalnız bu noktada şöyle bir durum ortaya çıktı. Ben elimdeki rst belgelerini rst2odt betiği yardımıyla .odt’ye dönüştürdükten ve gerekli stilleri .odt belgesine uyguladıktan sonra metni son haline getirmek için doğrudan .odt belgeleri üzerinde çalıştım. Bu sayede epey zaman kazanmış oldum. Çünkü eğer yapacağım değişiklikleri doğrudan rst üzerinde yapsaydım bu belgeleri tekrar tekrar .odt’ye dönüştürüp, tekrar tekrar gerekli stilleri uygulamam gerekecekti.

Bu nedenle KODLAB’a teslim ettiğim belgelerle istihza.com üzerindeki belgeler arasında bazı metin farklılıkları ortaya çıkmış oldu. Örneğin Python 2.x bölümündeki Fonksiyonlar ve Modüller kısımlarını KODLAB’a teslim ettiğim belgelerde baştan aşağı  yeniden yazdım. Ancak istihza.com takipçilerinin endişelenmesine hiç gerek yok, çünkü değiştirdiğim .odt belgelerini tekrar rst’ye dönüştürüp istihza.com’a ekledim ve eklemeye devam ediyorum. Ancak ne yazık ki “odt2rst” diye bir betik bulunmuyor… Aslında bu ada sahip bir betik var, ama bu betik henüz geliştirme aşamasında olduğu için doğru düzgün çalışmıyor. O yüzden .odt belgelerini .rst’ye elle çevirmem gerekiyor. Bu da zaman alıcı bir işlem olduğu için beni biraz zorluyor.

Bu arada hatırlatmama gerek var mı bilmiyorum, ama söyleyeyim: KODLAB’dan çıkacak Python kitabının içindeki bilgilere ücretsiz olarak istihza.com üzerinden erişebilmeye devam edebileceksiniz. Ben istihza.com’daki bu belgeleri eskisi gibi güncellemeye devam edeceğim. Yukarıda bahsettiğim teknik nedenden ötürü site ve kitap arasında oluşan farklılık çok büyük değil. Zaten ben bu değişiklikleri istihza.com’a aktarıyor olduğum için endişelenmenizi gerektirecek bir durum yok.

Bu arada, kitabı hazırlama sürecinde Samsun Ondokuz Mayıs Üniversitesi Bilgisayar Mühendisliği Bölümü’nden, istihza.com’daki belgeleri üniversitede verilecek Python derslerinde kullanmak için izin isteyen bir mektup aldım. Elbette ben de kendilerine sitedeki belgeleri istedikleri gibi indirip kopyalayabileceklerini söyledim. Ancak bildiğiniz gibi, istihza.com’daki konuları hazırlarken oldukça “teklifsiz” ve “rahat” bir dil kullanıyorum. Bu belgeleri KODLAB’a teslim etmek üzere hazırlarken bazı yerlerde bu rahatlık meselesinin dozunu biraz kaçırmış olduğumu farkettim… :) Ben belgeleri KODLAB’ın istediği şekilde hazırlayıp kendilerine teslim ettiğimde KODLAB da bu konuda beni uyardı. Yukarıda dediğim gibi, kitabın üniversite çevrelerinde kullanılma olasılığı da olduğu için, metinlerdeki ses tonunu bir miktar ciddileştirdim. Kitap için yaptığım değişiklikleri istihza.com’a da aktaracağım için, yakın zamanda bu ses tonu istihza.com’a da yansıyacak. Ancak elbette “ciddi” derken “asık suratlı”yı kastetmiyorum. istihza.com’daki bilgiler yine olabildiğince eğlenceli ve herkesin anlayabileceği tarzda sunulmaya devam edecek.

Gelelim kitabın içeriğine…

Sevgili arkadaşlar, istihza.com’daki bütün bilgileri topladığınız zaman ortaya 1000 sayfaya yakın bir belge bütünü çıkıyor. KODLAB’a teslim ettiğim Python kitabında istihza.com’daki Python 2.x ve Tkinter bölümleri yer alıyor. Ayrıca bu iki bölüme ek olarak, sitede “Özel Konular” başlığı altında sunduğumuz bazı makalelere de yer verdim. Ancak bu makalelerin hepsini kitaba almadım. Çünkü KODLAB’a teslim ettiğim kitap şu haliyle bile tam 544 sayfa oldu. :) Eğer her şeyi kitaba almaya kalksaydım, ortaya hem tuğla gibi, hem de KODLAB açısından haddinden fazla  maliyetli bir kitap çıkmış olacaktı…

Bilirsiniz, eskiden kitap yazarı denince akla oldukça fantastik bir şey gelirdi. Bundan birkaç yıl öncesine kadar kitap yazarları biz okurlar için ulaşılmaz bir konumdaydılar. Yazar kitabı hazırlar ve köşesine çekilirdi. Kitap hakkındaki sorularımız, şüphelerimiz konusunda çaresizdik. Ama bu Python Kitabı’nda durum böyle değil. Kitabın yazarına nereden ulaşacağınızı biliyorsunuz… :) Kitapta gördüğünüz eksiklikleri ve önerilerinizi bildirmek konusunda yalnız ve çaresiz değilsiniz. Kitapla ilgili herhangi bir sorunuz olması durumunda istihza.com’a başvurabilir, kistihza[at]yahoo[nokta]com adresinden bana ulaşabilirsiniz. Bu arada istihza.com’u da takip etmeyi unutmayın. Çünkü kitap dediğiniz şey statik bir ortamdır. istihza.com ise dinamik…

Dediğim gibi, kitabın içindeki bilgilere (ve hatta daha fazlasına) istihza.com üzerinden ücretsiz olarak da erişebilmeye devam edeceksiniz. Bu kitabı çıkarmamızın amacı kitaptan okumayı sevenlerin isteğine yanıt verebilmek. Eğer kitabı satın alırsanız istihza.com’u maddi olarak desteklemiş olursunuz, ancak tabii ki böyle bir zorunluluk asla söz konusu değil. Kitabı satın almak istemiyor olabilirsiniz, maddi gücünüz kitabı almaya yetmiyor olabilir,  ya da bambaşka sebepleriniz olabilir. Hiçbirine itirazım yok. Bu durumda istihza.com’daki bilgileri site üzerinden veya PDF biçiminde indirerek ücretsiz olarak takip etmeye devam edebilirsiniz. Her zaman dediğim gibi, istihza.com projesinin amacı bilgiye erişimi olabildiğince kolaylaştırmaktır. İnsanları kitabı satın almaya yönlendirmek için istihza.com’un geri bırakılması, güncellemeden kaçınılması kesinlikle söz konusu değil. Önümüzdeki günlerde istihza.com gümbür gümbür büyümeye devam edecek… :)

Bu kitapla ortaya güzel ve faydalı bir şey çıkarmaya çalıştık. Python programlama diliyle ilgilenen herkesin bu kitapta kendilerine uygun bir şeyler bulabileceğini ümit ediyorum. Böyle bir projeye omuz verdiği için KODLAB’a da teşekkür ediyorum.

admin Uncategorized , , , , , , , ,

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 , , , , ,

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 , , ,

Altyapı Çalışmaları…

Pazar, 13 Eyl 2009

Bir süredir istihza.com’u tamamen Sphinx altyapısına geçirmek için uğraşıyordum. Nihayet bugün istihza.com tamamen Sphinx’le hazırlanır hale geldi… Bugünkü düzenlemelerden sonra Python 2.x, Python 3.x, Tkinter 2.x ve PyGtk 2.x bölümleri birbirleriyle uyumlu bir görünüm kazandı.

Bu bölümlerde konu edilen derslerin güncel PDF sürümlerine şu bağlantılardan ulaşabilirsiniz:

Python 2.x’i PDF olarak indirmek için: http://www.istihza.com/py2/pdf/Python2x.pdf

Python 3.x’i PDF olarak indirmek için: http://www.istihza.com/py3/pdf/Python3x.pdf

Tkinter 2.x’i PDF olarak indirmek için: http://www.istihza.com/tk2/pdf/Tkinter2x.pdf

PyGtk 2.x’i PDF olarak indirmek için: http://www.istihza.com/gtk/pdf/Pygtk2x.pdf

Bunların dışında, istihza.com’da bulunan “Makaleler” bölümünde de bazı değişiklikler yaptım. Artık tek başına, ayrı bir “makaleler” bölümü yok. Buradaki konuları doğrudan Python 2.x bölümüne “özel konular” başlığı ile taşıdım. Kendi yazdığım makalelerle birlikte, istihza.com takipçilerinden gelen makaleler de bu bölümde yayımlanacak. Örneğin Sevgili Kürşat Örsel’in istihza.com için hazırlamış olduğu “math modülü” yazısı da “özel konular” bölümü içinde yer alıyor…

istihza.com içinde yer alan “Python Programları” ve “Harman” adlı bölümlere dokunmadım. Bu bölümler sadece tek sayfadan oluştuğu için bunlar bu şekilde kalacak. Ayrıca ana sayfamızı da elle düzenlemeye devam edeceğim.

Her zaman olduğu gibi, sitede bulduğunuz hataları kistihza [at] yahoo [nokta] com adresine iletebilirsiniz…

Sevgiler,

istihza

admin Uncategorized , , , , , ,

Python 2.x Bölümü, Sphinx ve Yeni PDF…

Salı, 08 Eyl 2009

Kısa bir süre önce Python 3.x bölümünü tamamen Sphinx adlı yazılım ile hazırlamaya başladığımı duyurmuştum. Elbette site içinde bir bütünlük sağlayabilmek açısından öteki bölümleri de Sphinx ile hazırlamak mantıklı olacaktı… Bu bütünlüğü sağlamada bir adım daha atabilmek için Python 2.x bölümünü de Sphinx’e aktardım. Yeni Python 2.x bölümümüze http://www.istihza.com/py2/icindekiler_python.html adresinden ulaşabilirsiniz.

Daha önce de söylediğim gibi, Sphinx adlı yazılım, belgelendirme projelerinde çalışanlara çok büyük kolaylıklar sağlıyor. Sphinx sayesinde işin teknik kısmı büyük ölçüde otomatikleştirildiği için belge hazırlayan kişi sadece belgeleri oluşturma işine odaklanabiliyor… Eğer belgelendirme projeleriyle uğraşıyorsanız Sphinx’e mutlaka zaman ayırın. Onsuz geçen yıllarınıza acıyacaksınız!…

Ayrıca Sphinx’in PDF çıktısı da verebilmesi sayesinde istihza.com’un güncel halini PDF biçiminde de kolayca sunabiliyorum. Sphinx’in bu işlevinin ürünü olan Python 2.x PDF dosyasını http://www.istihza.com/py2/pdf/Python2x.pdf adresinden indirebilirsiniz…

Anlaşıldığı gibi, artık hem Python 3.x hem de Python 2.x bölümünün PDF dosyalarını hazırlamak bundan sonra Sphinx’in görevi… Bu noktada Sevgili Kürşat Örsel ve Sevgili Metehan Özbek’in adlarını anmadan geçmek olmaz. Bu iki arkadaşım şimdiye kadar sitenin PDF dosyalarını hazırlayarak istihza.com’a çok büyük bir katkıda bulundular. Sphinx onları da PDF güncelleme derdinden kurtarmış oldu. Katlandıkları eziyet için bu iki arkadaşıma tekrar tekrar teşekkür ederim. Kol kuvvetiyle PDF hazırlamak gerçekten de hiç kolay bir iş değil…

Eski belgeleri Sphinx’e aktarırken yapmış olabileceğim hataları her zamanki gibi kistihza [at] yahoo [nokta] com adresine bildirebilirsiniz.

Sevgiler,

istihza

admin Python , ,

Sphinx Tabanlı Python 3.x Bölümü Yayımlandı

Cumartesi, 29 Ağu 2009

Dün de söylediğim gibi, Sphinx adlı bir yazılım yardımıyla reST biçimli belgelerden otomatik olarak html ve pdf gibi formatlarda belgeler oluşturabiliyoruz. Python programlama dili ile yazılmış bir uygulama olan Sphinx, programcıların ve belgelendirme faaliyetleriyle uğraşanların hayatını bir hayli kolaylaştıran bir araçtır. Sphinx hakkında geniş bilgiye http://sphinx.pocoo.org/ adresinden; reST hakkında geniş bilgiye ise http://docutils.sourceforge.net/rst.html adresinden ulaşabilirsiniz.

istihza.com’daki belge sayısının sürekli olarak artması nedeniyle ben de Sphinx benzeri bir uygulamaya uzun süredir ihtiyaç duyuyordum. Başka alternatifler arasından Sphinx’i seçmemin en önemli nedeni, Python’un resmi sitesi olan http://www.python.org adresindeki belgelendirme çalışmalarının da Sphinx yardımıyla yürütülüyor olmasıdır. http://docs.python.org/ adresinde gördüğünüz belgelerin tamamı Sphinx kullanılarak hazırlanıyor.

Sphinx üzerinde ilk kez çalışmaya başladığımda, bu yazılımın esasen İngilizce yazılmış belgelerin üretiminde kullanılmaya uygun olduğunu görmek beni biraz endişelendirmişti.

Sphinx’in desteklediği diller arasında Türkçe bulunmuyor. Dolayısıyla ilk iş olarak Sphinx’in arayüzünü Türkçe’ye çevirmem gerekti. Bu sorunu hallettikten sonra, Python 3.x bölümündeki belgeleri HTML biçiminden reST biçimine dönüştürmeye başladım. Burada da karşıma renklendirme sorunu çıktı… Sphinx’in kod renklendirmesinde kullandığı Pygments modülü Türkçe karakterleri renklendirirken olmadık yerlerde sorun çıkarabiliyor. Bu yüzden Python 3.x içindeki bazı kodları yeniden düzenlemem gerekti. Python’un 3.x sürümünde değişkenlere Türkçe karakter içeren adlar verebiliyoruz, ama ne yazık ki Pygments modülü bu Türkçe karakterli adları renklendirmekte zorlanıyor… Bu yüzden bazı yerlerde Türkçe karakterli değişken adlarını değiştirmem gerekti… Bu sorunu da hallettikten sonra usul usul ilerlerken daha büyük bir problemle karşı karşıya olduğumu farkettim. Sphinx’in ürettiği html dosyalarının url adreslerindeki kalıcı bağlantılar Türkçe karakterlerin yerine “-” işareti koyuyordu. Yani mesela “kullanıcıyla-iletişim-input-fonksiyonu” gibi bir başlık, Sphinx’le üretilen html belgesinde “kullan-c-yla-ileti-im-input-fonksiyonu” şeklinde görünüyordu… En mantıklı yol, Sphinx’in bu kalıcı bağlantıyı “kullaniciyla-iletisim-input-fonksiyonu” şeklinde üretmesini sağlamak olacaktı. Epey uğraştıktan sonra sorunun aslında Docutils modülünden kaynaklandığını farkettim. Sorunu çözebilmek için kendi sistemimde bulunan Docutils içindeki “nodes.py” dosyasında değişiklik yapmam gerekti. Bu noktada açık kaynak ve özgür yazılım denen şeyin ne kadar büyük bir nimet olduğunu bir kez daha anladım. Eğer Sphinx ve Docutils yazılımları kapalı kaynaklı olsaydı, ben bunların kaynak kodlarını inceleme fırsatına sahip olmayacağımdan, sorunun nerede olduğunu bilemeyecek ve gerekli düzeltmeyi yapamayacaktım… Bu vesileyle özgür yazılımın babası Richard Stallman’ı bir kez daha saygıyla selamlıyorum…

Şu anda Sphinx ve html belgeleriyle ilgili herhangi bir problem yok. Çözemediğim tek problem LaTex yazılımının, pdf belgelerine Türkçe başlıklar koyamaması… Bu yüzden Sphinx ile oluşturduğum PDF belgelerinde “Contents”, “Documentation” ve “Section” gibi kelimeleri Türkçe’ye çevirmedim. Çok büyük bir sorun değil, ama eğer bununla ilgili çözüm önerisi olan varsa dinlemekten memnuniyet duyarım.

istihza.com’daki, Sphinx ile hazırlanmış yeni Python 3.x bölümüne ulaşmak için http://www.istihza.com/py3/icindekiler_python.html adresini ziyaret edebilirsiniz. Bu belgeleri PDF biçiminde bilgisayarınıza indirmek için ise http://www.istihza.com/py3/pdf/Python3x.pdf adresine tıklayabilirsiniz.

Belgeler arasında daha rahat gezinmeyi de sağlaması açısından Sphinx yazılımı kullanıcıya da önemli kolaylıklar sağlıyor. istihza.com’daki bu değişikliği beğeneceğinizi umuyorum.

admin Python, Yazılım , , ,

Sphinx: Otomatik Belge Oluşturma Yazılımı ve ilk PDF

Perşembe, 27 Ağu 2009

istihza.com’daki belge sayısı günden güne artıyor. Haliyle belge sayısı arttıkça bu belgeleri oluşturmak ve yönetmek de bir o kadar zorlaşıyor. Şimdiye kadar istihza.com’daki bütün yazıları html+css kullanarak el kuvvetiyle hazırlıyordum. Ancak belge sayısındaki hızlı artış nedeniyle bu yazıları elle hazırlamak artık büyük bir külfet haline gelmeye başlamıştı. Bu nedenle uzun süredir işlerimi kolaylaştıracak bir alternatif arayışındaydım. Sonunda işimi kolaylaştıracak yöntemin ne olması gerektiğine karar verdim…

Bundan böyle istihza.com’daki belgeleri reST (reStructuredText) biçiminde hazırlayacağım. reStructuredText, bir metin işaretleme sistemidir. Bu sistem sayesinde, düz metne yakın bir biçimde oluşturulan belgeler, farklı formatlarda otomatik olarak yeniden üretilebilir. Örneğin reST biçiminde yazdığınız bir metni, daha sonra otomatik olarak html ve/veya pdf biçimine dönüştürebilirsiniz.

reST biçiminde hazırlanmış belgeleri farklı formatlarda yeniden üretmek için bazı yazılımlardan faydalanılıyor. Mesela Sphinx; reST biçimli belgeleri parçalayıp, bu belgelerden html, pdf ve chm biçimlerinde yeni belgeler üretebilen özel bir yazılımdır. Sphinx’in resmi sitesi http://sphinx.pocoo.org/ adresindedir. Ayrıca reStructuredText hakkında daha geniş bilgi almak için de http://docutils.sourceforge.net/rst.html adresini ziyaret edebilirsiniz… Bu arada Python’un resmi sitesi olan http://www.python.org adresindeki belgelendirme çalışmaları da bu Sphinx adlı yazılım yardımıyla yapılıyor…

Ben şu anda istihza.com’daki Python 3.x bölümünü reST biçimine dönüştürüyorum. Böylelikle hem ben yükümü biraz hafifletmiş olacağım, hem de istihza.com takipçileri Python 3.x bölümünü pdf biçiminde güncel olarak takip edebilecekler…

Sphinx; belge üretme sürecinde LaTex, Docutils, Jinja ve Pygments adlı yazılımlardan faydalanıyor. Örneğin ürettiğiniz belgelerdeki kodlar Pygments yazılımı yardımıyla otomatik olarak renklendirilebiliyor…

Bugün istihza.com’un takipçilerine bu Sphinx adlı yazılım yardımıyla üretilen Pdf belgesini sunarak yeni sürece doğru ilk adımımızı atıyoruz… İlgili pdf belgesine http://www.istihza.com/py3/pdf/Python3x.pdf adresinden erişebilirsiniz (NOT: Bu belge 28.08.09 tarihinde güncellenmiştir). Bu belgede şimdiye kadar Python 3.x bölümüne eklenmiş bütün konuları bulacaksınız. Yalnız bu pdf belgesi ile ilgili bazı uyarı ve hatırlatmalar yapmam gerekiyor:

1. Bu pdf belgesi Sphinx yazılımı yardımıyla otomatik olarak üretilmiştir.

2. Ben istihza.com’un Python3.x bölümündeki html belgelerini reST biçimine dönüştürürken bazı hatalar yapmış olabilirim. Dolayısıyla bu pdf belgesinde bazı eksik veya yanlış kısımlar olabilir. Mesela ekranın dışına taşan kodlar, yazım yanlışları, vb…

3. Göreceğiniz gibi, bu pdf belgesindeki kapak ve sayfa başlıkları gibi kısımlar İngilizce. Bunun nedeni, pdf belgesinin üretilmesinde kullanılan LaTex yazılımının unicode karakter dizilerini tanımakta zorlanması… Bunun için bir çözüm arıyorum. Ancak belgedeki İngilizce kısımlar rahatsız edecek boyutta olmadığı için, neyse ki ölümcül bir durumla karşı karşıya değiliz… Bununla ilgili çözüm önerisi olanları dinlemekten memnuniyet duyarım.

4. Belgedeki hataları ben sürekli olarak düzeltiyorum. Ancak bazı şeyler gözümden kaçabiliyor. Bu yüzden bu konuda sizlerin de yardım ve desteğine ihtiyacım var. Bu pdf belgesi içinde bulacağınız hataları kistihza{at}yahoo.com adresine bildirirseniz, yapacağımız düzeltmeler sayesinde hem daha kaliteli bir pdf, hem de daha düzgün bir html belgesine ulaşabiliriz…

5. Bu pdf belgesini sürekli olarak güncelleyeceğim. Her sürümde, sizlerin de desteğiyle, daha kararlı bir pdf belgesi elde edeceğimize inanıyorum.

6. Aslında istihza.com’daki Python3.x bölümünün html belgeleri de hazır. Ancak bunların yayımlanması daha farklı bir sürece girmeyi gerektirdiği için, bu html belgelerini birkaç gün daha bekleteceğim. Buradaki Pdf belgesi için bildireceğiniz hata düzeltmeleri html belgelerinin de kalitesinin artmasını sağlayacaktır.

7. Şimdiye kadar Python 3.x bölümünün pdf haline getirilmesi işiyle Sevgili Metehan Özbek ilgileniyordu. Ben istihza.com’a her yeni belge ekleyişimde Metehan’ın bu değişiklikleri pdf belgesine yansıtması bir hayli zor oluyordu. İşin kötü tarafı, Python 3.x bölümü yalnızca yeni belge eklemesi almıyor, aynı zamanda eski belgeler de sürekli olarak gözden geçirilip yenileniyor. Bu değişikliklerin insan eliyle pdf’ye aktarılması bir süre sonra kaçınılmaz olarak dayanılmaz bir hal alacaktır… Sevgili Metehan Özbek’e katlandığı bu büyük külfetten ötürü teşekkürü bir borç bilirim. istihza.com’daki bu yenilik onun da yükünü hafifletmiş olacak…

Dediğim gibi, pdf belgesini inceleyip bana hataları bildirirseniz hep beraber ortaya güzel bir iş çıkarmış oluruz.

İlgilenen herkese şimdiden teşekkür ederim.

Sevgiler,

istihza

admin GNU/Linux, Python, Yazılım , , ,