arşiv

‘Teknik’ kategorisi için arşiv

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 ,

Content Encoding Error

Salı, 09 Şub 2010

Firefox tarayıcısıyla istihza.com’da bazı sayfaları görüntülemeye çalışırken tarayıcının bazen şöyle bir hata verdiğini farkettim:

Content Encoding Error
The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.
Please contact the website owners to inform them of this problem.

Bu hatayı sadece Firefox veriyor. Google Chrome, Galeon ve IE gibi tarayıcıların bu hatayı verdiğine rastlamadım. İnternette araştırdığıma göre Firefox bu hatayı başka pek çok sitede de veriyormuş…

Bu sorunu gidermek için Firefox’un önbelleğini temizlemeyi deneyebilirsiniz. Bu işlem sorunun çözülmesini sağlıyor… İşin ilginci bu sorun sadece Firefox 3′te var. Bu tarayıcının eski sürümlerinde böyle bir sorun yok.

admin Teknik ,

Ubuntu Karmic Koala’ya Gnome 3 Nasıl Kurulur?

Pazar, 17 Oca 2010

Ubuntu GNU/Linux‘un resmi olarak desteklediği masaüstü ortamı Gnome, yeni ve farklı bir sürüme doğru hızla yol alıyor. Uzun yıllardır hiçbir belirgin değişiklik görmeden kullanageldiğimiz bu sade masaüstü ortamının 3 numaralı sürümü, muhtemelen “Ubuntu 10.10” ile birlikte öntanımlı masaüstü ortamı olarak gelecek. Aslında Gnome 3 Ubuntu’nun 10.04 numaralı sürümü olan Lucid Lynx ile birlikte gelecekti, ancak bu plan şimdilik ertelenmiş gibi görünüyor…

Eğer Gnome 3′ün neye benzediğini merak ediyorsanız, aslında  bu masaüstü ortamının öntanımlı olarak geleceği zamanı beklemenize gerek yok. Şu anda da bu masaüstü ortamını test etme imkanına sahibiz. Ancak şu uyarıyı yapmadan geçmeyelim:

Bu işlemi yapmadan önce önemli bilgilerinizi yedeklemeyi unutmayın. Ne de olsa Gnome 3 henüz geliştirme aşamasında… Yani aşağıda anlatacağım işlemleri yaptıktan sonra bilgisayarınız açılmazsa, “istihza bilgisayarımı bozdu!” demeyin… Sorumluluk tamamen size ait!.. :)

Şimdi Gnome 3′ü Ubuntu’nun Karmic Koala adlı sürümüne nasıl kuracağınızı anlatmaya çalışacağım. Ancak dilerseniz bu işleme başlamadan önce yeni bir kullanıcı oluşturun ve kurma işlemlerini bu yeni kullanıcı ile yapın. Böylece ana kullanıcıyı çok fazla etkilememiş olursunuz… Bu arada, yeni kullanıcıyı oluştururken ona program ekleme/kaldırma yetkisi vermeyi unutmayın… Yetkisiz bir kullanıcıyla istediğimiz işlemleri yapamayız…

Yeni kullanıcıyı oluşturduktan ve ona gerekli yetkileri verdikten sonra bilgisayarı bu yeni kullanıcı hesabıyla açın. Ardından şu komutu vererek gnome-shell adlı paketi kurun:

sudo aptitude install gnome-shell

Gnome-shell, yeni Gnome 3 sürümünün özünü oluşturur. Bu uygulama, Gnome kullanıcısı ile sistemin arkaplanı arasındaki bir arayüz gibidir. Yani bilgisayarımızda kurulu olan programlara nasıl erişeceğimizi belirler. Bu yönüyle Gnome 2′deki üst panelin yerini alır…

Yukarıdaki komut gnome-shell’i sistemimize kurar. Gnome 3′ü test etmeye başlamak için yapmamız gereken tek şey ALT+F2′ye basıp açılan pencereye şu komutu yazmaktır:

gnome-shell –replace

Bu komutu verdikten sonra şuna benzer bir ekranla karşılaşmış olmalısınız (Resimleri daha net görebilmek için resimlerin üzerine tıklayabilirsiniz):

Gördüğünüz gibi, Gnome 3′te alt panel yok. Bu yeni masaüstünde bütün işlevler üst paneldeki “Activities” adlı menünün içinde toplanmış durumda. “Activities” menüsünün içeriğine ulaşmak için sol üst köşede görünen “Activities” düğmesine tıklayabilirsiniz. Ya da fare imlecini sol üst köşeye çarptırarak da aynı etkiyi elde edebilirsiniz. Activities menüsüne girdiğimizde şöyle bir ekranla karşılaşıyoruz:

Activities menüsüne girdiğimizde ekran ikiye bölünüyor. Ekranın sol tarafında “Applications“, “Places” ve “Recent Documents” adlı üç yeni menü görüyoruz. Bu üç menünün her biri bizi bilgisayarımızın farklı bir alanına ulaştırıyor. Applications menüsü içinden bilgisayarımızdaki programlara; Places menüsü içinden bilgisayarımızdaki önemli dizinlere; Recent Documents menüsü içinden ise son kullandığımız belgelere erişebiliriz. Ayrıca en tepede gördüğümüz “Find” adlı arama kutucuğu ise bilgisayarımızdaki uygulamalara kolayca ulaşabilmemiz için tasarlanmış. Oraya mesela “firefox” yazarak, Firefox internet tarayıcısına ulaşabiliriz.

Applications adlı menünün sağ tarafında görünen “More” adlı düğme ise bilgisayarımızdaki bütün uygulamalara erişebileceğimiz bir liste açar bize…

Dikkat ettiyseniz, yukarıdaki ekran görüntüsünde sağ alt köşede bir artı düğmesi görünüyor. Bu düğmeye bastığınızda yeni bir masaüstü çalışma alanı açılacaktır.

Oluşturduğunuz yeni çalışma alanını kaldırmak için, yukarıdaki ekran görüntüsünden çalışma alanı üzerinde görünen eksi düğmesine basabilirsiniz…

Eğer Gnome 3′ü sisteminize başarıyla kurduysanız, bu yeni masaüstü ortamını biraz kurcalayın. Aslında oldukça mantıklı bir şekilde tasarlandığını göreceksiniz. Ben bu yeni masaüstü ortamını beğendiğimi söyleyebilirim. Yeniliklerin, en azından KDE4′teki kadar yıkıcı olmaması benim açımdan sevindirici bir durum… Muhtemelen ilerleyen günlerde Gnome 3 yeni özellikler ve yetenekler kazanacak. O günler geldiğinde bu yeni masaüstü ortamını daha sağlıklı bir şekilde değerlendirme imkanımız olacak.

Son bir ekran görüntüsü ile bu yazıyı kapatalım:

admin GNU/Linux, Teknik , , , ,

Uçbirimi Kapatmak İstediğinize Emin Misiniz?

Cumartesi, 16 Oca 2010

Bildiğiniz gibi, Ubuntu’da Python’un etkileşimli kabuğuyla çalışırken uçbirimi kapatmaya çalışırsanız uçbirimi kapatmak istediğinize emin olup olmadığınızı soran bir pencere açılıyor. Eğer siz de bu onay penceresinden gıcık kapıyorsanız, bu “özelliği” şu şekilde kapatabilirsiniz:

ALT+F2′ye basın ve açılan pencereye “gconf-editor” yazarak enter’e basın. Orada “apps > gnome-terminal > global” yolunu takip edin ve sağ taraftaki “confirm_window_close” değerinin sağındaki kutucuğun üzerindeki onay işaretini kaldırın…

admin GNU/Linux, Teknik , , ,

Windows’ta bir PyGtk Hatası

Salı, 06 Eki 2009

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

ÖNEMLİ NOT: Bu yazıdaki bazı bağlantılar eskimiştir. Bağlantıların yeni adresleri için http://www.istihza.com/blog/pygtk-ve-windows.html/ sayfasındaki yazımızı inceleyiniz…

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

Bir-iki gün önce bir arkadaş bana e.posta göndererek, Windows’ta PyGtk’yi kullanamadığını, herhangi bir PyGtk programını çalıştırmaya çalıştığında şöyle bir hata aldığını söyledi:

from _gobject import type_from_name
ImportError: DLL load failed: Belirtilen modül bulunamadı.

Bunun üzerine deneme yapmak için ben de daha önce PyGtk kurduğum ve düzgün bir şekilde çalışan Windows’lu bir bilgisayardaki PyGtk ve PyGtk’ye ilişkin bütün paketleri önce kaldırıp daha sonra PyGtk ve ilgili paketleri yeniden kurdum bu bilgisayara…

Dediğim gibi, eski kurulumda bir sorun yoktu, ancak bu kez PyGtk’yi kurup herhangi bir PyGtk programını çalıştırmaya çalıştığımda ben de hemen hemen aynı hatayı aldım.

Benim aldığım hata da şöyleydi:

ImportError: DLL load failed: The specified module could not be found.

Sanırım son GTK paketlerinden birinde bir uyumsuzluk var… Eğer siz de Windows üzerine PyGtk kurarken yukarıdakine benzer bir hata alıyorsanız, sorunu şu şekilde çözebilirsiniz:

1. Önce PyGtk ile ilgili kurduğunuz bütün programları kaldırın.

2. Daha sonra sırasıyla şu programları indirin:

** http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.16/gtk+-bundle_2.16.6-20090911_win32.zip

** http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.4/pycairo-1.4.12-2.win32-py2.6.exe

** http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.14/pygobject-2.14.2-2.win32-py2.6.exe

** http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.12/pygtk-2.12.1-3.win32-py2.6.exe

3. İlk paket hariç ötekilerin kurulum betikleri var. Bunları çift tıklayarak kurabilirsiniz. Yalnız bu paketleri kurarken listeden Python 2.6 sürümünü seçmeyi unutmayın…

4. İlk “bundle” paketini C dizini içinde GTK adlı bir klasörün içine açın. Daha sonra C:\GTK\bin klasörünü “PATH” değişkeninize ekleyin.

Eğer bu dizini “PATH” değişkenine nasıl ekleyeceğinizi bilmiyorsanız şu makalemizden yararlanabilirsiniz: http://www.istihza.com/py2/windows-path.html

admin Teknik , , ,

lshw Komutu ile Donanım Bilgileri

Pazartesi, 05 Eki 2009

GNU/Linux’ta, sahip olduğunuz donanımlarla ilgili son derece ayrıntılı bilgiler veren “lshw” adlı bir komut bulunur. Bu komutu şöyle kullanıyoruz:

sudo lshw

Eğer sisteminizde “lshw-gtk” adlı program kuruluysa yukarıdaki komutu şöyle verebilirsiniz:

sudo lshw -X

Bu komut lshw’nin grafik arayüzünü çalıştıracaktır.

lshw komutu normalde epey uzun bir çıktı verir. Ama eğer biz istersek bu komutu bazı parametrelerle birlikte kullanarak çıktıyı süzebiliriz.

Örneğin sadece işlemci ile ilgili bilgi almak için bu komutu şu şekilde yazabilirsiniz:

sudo lshw -C processor

Böylece önünüze sadece işlemci ile ilgili ayrıntılar gelecektir. Bu komutu şu şekilde de kullanabilirsiniz:

sudo lshw -class processor

Eğer lshw’nin size tablo görünümünde ve kısaltılmış bir çıktı vermesini isterseniz şöyle bir şey deneyebilirsiniz:

sudo lshw -short

Ayrıca bu komutun çıktısına bakarak “lshw” içindeki “class”ları (sınıf) da görebilirsiniz. Mesela lshw’de “disk” adlı bir sınıf olduğunu görüp şöyle bir komut vererek sadece disk sürücülerine ilişkin ayrıntılı bilgi edinebilirsiniz:

sudo lshw -C disk

veya:

sudo lshw -class disk

Eğer isterseniz birden fazla sınıfı bir arada da kullanabilirsiniz:

sudo lshw -class network -class disk

Bu komut hem ağ hem de sürücü bilgilerini bir arada verecektir…

Bu komutun başka pek çok özelliği bulunur. Şu komutu vererek lshw’nin bütün özellikleri hakkında bilgi edinebilirsiniz:

man lshw

Ama lshw’nin en güzel özelliğini henüz anlatmadık. Bu komut, donanımımızla ilgili bütün bilgileri bir html veya xml belgesi biçiminde almamıza da olanak tanır. Şöyle:

sudo lshw -html > deneme.html

Bu komut, o anda içinde bulunduğunuz dizinde deneme.html adlı bir dosya oluşturacaktır…

Eğer donanımınıza ilişkin bütün bilgileri bir xml dosyası olarak almak isterseniz şu komutu vermelisiniz:

sudo lshw -xml > deneme.xml

Bu komut da, bulunduğunuz dizin içinde deneme.xml adlı bir xml dosyası oluşturacaktır…

lshw oldukça yararlı bir araçtır. Yeri geldiğinde sizi pek çok sıkıntıdan kurtardığını göreceksiniz…

admin GNU/Linux, Teknik , , , ,

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

Ubuntu Karmic Koala Alpha 2′de Disk Bağlama Hatası

Pazar, 28 Haz 2009

Bundan kısa bir süre önce, Ubuntu’nun “Jaunty Jackalope”den sonraki sürümü olan Karmic Koala’nın Alpha 2’si yayımlanmıştı… Ben de bir süredir Karmic Koala’yı kullanıyorum. Karmic Koala henüz test aşamasında olmasına rağmen bugüne kadar ciddi bir hatayla karşılaşmamıştım. Ancak bugün yayımlanan son güncellemelerde önemli sayılabilecek bir sorun ortaya çıktı. Taşınabilir diskler sisteme bağlanmaya çalışılırken DBus hatası alınıyor ve mesela USB parmak belleğiniz sisteme bağlanamıyor… Bu durum muhtemelen DBus’un son sürümündeki bir uyumsuzluktan kaynaklanıyor. Eğer siz de Ubuntu Karmic Koala’nın Alpha 2 sürümünü kullanıyorsanız ve harici disklerinizi sisteme doğrudan bağlayamıyorsanız şimdilik bu sorunu şu şekilde çözmeyi deneyebilirsiniz:

1. Bir komut satırı açıyoruz.

2. /mnt klasörü içinde “parmak” adlı bir klasör oluşturuyoruz:

sudo mkdir /mnt/parmak

3. Parmak belleği USB girişine takıyoruz ve aldığımız DBus hatasını görmezden geliyoruz.

4. Parmak belleği /mnt/parmak klasörüne bağlıyoruz:

sudo mount -t vfat /dev/sdc1 /mnt/parmak

Artık /mnt/parmak dizininin içinden, parmak belleğin içeriğine ulaşabilirsiniz. Tabii ben burada parmak belleğin “sdc1″ olduğunu varsaydım. Bu isim sizde farklı olabilir. Eğer parmak belleğin hangi adla sisteme bağlandığını bilmiyorsanız bunu

sudo fdisk -l

komutuyla öğrenebilirsiniz…

Ancak parmak belleği yukarıdaki komut yardımıyla sisteme bağladığınızda, bellekteki dosyalara yazabilmek için root olmanız gerekir. Eğer parmak belleği okuma-yazma yetkileriyle bağlamak isterseniz şöyle bir komut kullanabilirsiniz:

sudo mount -t vfat -o rw,uid=1000,gid=100,umask=0022 /dev/sdc1 /mnt/parmak

Karmic Koala’daki bu sorunun bir sonraki güncellemelerde düzeltileceğini zannediyorum.

İşinize yaraması dileğiyle…

admin Teknik , , ,

Kubuntu Jaunty Jackalope’de Eciş Bücüş Harfler

Pazar, 31 May 2009

Deneme sürümlerinden bu yana kullandığım Kubuntu Jaunty Jackalope’de, yine ta deneme sürümlerinden bu yana devam eden bir sorun vardı: Bütün uygulamalarda bazı harflerin, sanki bunların üzerine biri çekiçle vurmuş da o harfleri ezmiş gibi görünmesi… Jackalope’nin deneme sürümlerini kullanırken, bu sorunun kararlı sürümde düzeleceğini düşünüyordum. O yüzden de fazla üzerinde durmamıştım. Ancak Jackalope’nin kararlı sürümü çıktıktan sonra da bu sorun devam edince meseleye bir el atmaya karar verdim. Uzun süre uğraştım, internette araştırdım, ama bir türlü işe yarar bir bilgi bulamadım. Bugün yine bu sorunu çözmek üzere Yazıtipi Yumuşatma ayarlarını karıştırırken, soruna neden olan ayarı buldum… Belki benim gibi bu sorundan muzdarip kişiler vardır diye düşünerek, çözümü burada paylaşayım dedim:

1. KMenu > Sistem Ayarları > Görünüm yolunu takip ediyoruz.

2. Sol taraftaki menüden  Yazı Tipleri’ni seçiyoruz.

3. “Yumuşatma Kullan” ayarı “etkin” iken, hemen sağ taraftaki “yapılandır” düğmesine basıyoruz.

4. Açılan ekranda “Gölgeleme Biçimi” olarak “Hiçbiri”ni seçiyoruz.

5. Bilgisayarı kapatıp yeniden açtığımızda bütün uygulamalar yeni ayarları benimsemiş olacak…

Bu yol, benim yaşadığım sorunu çözdü. Umarım başkalarının da işine yarar…

İyi çalışmalar,

Fırat

admin Teknik , ,

KeyError: ‘ROUND_CEiLiNG’

Salı, 19 May 2009

Bir süredir HARMAN’ın yeni sürümü üzerinde çalışıyordum. Her şey gayet güzel gidiyordu. Ta ki bugüne kadar… Bugün en son HARMAN’ın .mo dosyasını hazırladım ve bu dosyayı program dizini içinde gerekli yere yerleştirip python harman.py komutunu verdim. O da ne?? Komut satırında upuzun bir hata çıktısı ve en son kısımda şu lanetli satır:

KeyError: 'ROUND_CEiLiNG'

Hata mesajlarına baktığımda sorunun pypdf kütüphanesinden kaynaklandığı anlaşılıyordu. Hemen gidip HARMAN’ın eski sürümünü çalıştırmayı denedim. Ama eski sürüm böyle bir hata vermiyordu… Eski ve yeni sürümler arasında, kullanılan modüller açısından herhangi bir fark olmamasına rağmen eski sürüm güzel güzel çalışırken yeni sürüm beni bu hatayla baş başa bırakıyordu.

Hem bu hatayı programı Türkçe yerel ile çalıştırmayı denerken almam, hem de hata mesajındaki eciş bücüş “i” harfleri sorunun tam anlamıyla bir Türkçe problemi olduğunu düşündürüyordu bana… Bunun üzerine konsolda şu komutu vererek sistem dilini tekrar İngilizce’ye çevirdim:

LANG=en_US.UTF8

Bu arada bu komut bazı sistemlerde şöyle de olabiliyor:

LANGUAGE=en_US.UTF8

Evet… Bu şekilde program düzgün çalışıyordu, ama eğer sorunu çözemezsem, HARMAN’ın Türkçe arayüzle açılması imkansız hale gelecekti… Neyle karşı karşıya olduğumu anlamak için internette biraz araştırma yapmaya başladım ve benzer problemlerin Elisa ile Gazpacho programlarında da yaşandığını gördüm… Bu programlar kendi dillerinde düzgün çalışırken, bu programları Türkçe olarak çalıştırmaya kalkışanlar aynen benim aldığım hatayla karşılaşmışlar… Bunların dışında mysql gibi modüller de benzer hatalar verebiliyormuş…

Problem aslında Türkçe’deki “i”, “ı” ve bunların büyük harfli hallerinden kaynaklanıyor… İngilizce’de “İ” veya “ı” diye bir harf yok. “i” harfinin büyük hali “I”… Doğal olarak “I” harfi küçültüldüğünde ortaya çıkan harf “i”…. Türkçe’de ise durum biraz farklı. Bizde hem “i” var hem de “ı”. “i” harfi büyütüldüğünde “İ” harfini; “ı” harfi büyütüldüğünde ise “I” harfini elde ediyoruz. Bu durumu göz önüne aldığımızda, “round_ceiling” ifadesi, Türkçe yerelleri kullanan herhangi bir programın iç işleyişi gereğince büyütülmeye çalışılırsa “ROUND_CEİLİNG” gibi bir şey elde ediliyor. Halbuki bunun “ROUND_CEILING” olması gerek… Aynı program içinde geçen “kitap” ve “first” kelimelerini düşünelim. Bunlardan ilki Türkçe bir kelime olduğu için büyütülürken “KİTAP” şeklini almalı. Ama “first” kelimesi İngilizce bir kelime olduğu için büyütülürken “FIRST” şekline girmeli… Ne yazık ki bu şekilde “bağlama göre büyütme-küçültme” işlemi yapmak pek kolay değil… İşte bu durumdan ötürü, Türkçe yerelleri kullanan programlar bazen saçmalayabiliyor…

Gördüğüm kadarıyla bu tür problemlerin şöyle bir çözümü var: Eğer açmak istediğimiz program yukarıdaki hatayı veriyorsa komut satırında programımızı “LC_ALL=C” parametresiyle çalıştırmamız gerekiyor… Mesela diyelim ki Elisa veya Gazpacho programı böyle bir hata veriyor. O zaman şöyle yapacağız:

LC_ALL=C elisa

Ben de kendi programımın durumuna bakmak için şöyle bir komut denedim:

LC_ALL=C python harman.py

Program bu parametreyle başarılı bir şekilde çalıştı… Elbette kullanıcıların her defasında bu komutu yazarak programı çalıştırmasını bekleyemem. O yüzden HARMAN’ın kaynak dosyası içine şu satırları ekledim:

import locale
locale.setlocale(locale.LC_ALL, "C")

Bu şekilde şimdilik herhangi bir problem yaşamadan programı çalıştırabiliyorum….

Bu arada HARMAN’ın yeni sürümü (bence) gayet güzel oldu!… :) Kodlarda önemli değişiklikler ve eklemeler yaptım. Artık PDF kesme biçme işlemleri bir kontrol paneli üzerinden yapılacak.

HARMAN’ın yeni sürümünde bir PDF dosyasının art arda gelmeyen sayfalarını da silebileceğiz ve kesip alabileceğiz… Yani mesela önceki sürümde sadece tek bir sayfa veya 30, 31, 32, 33, 34, 35 gibi art arda gelen sayfaları silebiliyorduk. Yeni sürümde ise sayfaları tek tek silebilmenin yanısıra, 30, 35, 40, 43, 45 gibi sayılar vererek aynı anda birden fazla sayfa da silebileceğiz… Ayrıca bu sürümde şifreli pdf dosyaları da program tarafından tanınabilecek. Henüz PDF’lerin şifresini çözmüyoruz. Ama bir sonraki sürümde muhtemelen programa şifre çözme desteği de ekleyeceğim… Tabii burada kastettiğim şey şifresini bilmediğimiz PDF dosyalarını çözmek değil. Bazı PDF oluşturucu programlar PDF’yi oluştururken belgeye otomatik olarak boş bir şifre veriyor. Kastettiğim, bu boş şifreli PDF’leri ve şifresini bildiğimiz başka PDF’leri çözmek…

Şu anda HARMAN’ı test etmeye devam ediyorum. Eğer herhangi bir gecikme olmazsa üç-beş gün içinde programı yayımlayacağım…

Herkese iyi çalışmalar,

Fırat

admin Teknik , , ,