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
istihza Teknik harman, hata, KeyError, Round Ceiling
Son Yorumlar