arşiv

‘Uncategorized’ kategorisi için arşiv

pyc Dosyaları için Özel Dizin

Pazar, 05 Haz 2011

Python’da herhangi bir modülü içe aktardığımızda, .py uzantılı modül dosyasının bulunduğu dizinde .pyc uzantılı bir önbellek dosyası oluşur. Bu önbellekleme mekanizması sayesinde, bu modül tekrar içe aktarılacağı zaman Python içe aktarma işlemini daha hızlı gerçekleştirebilir.

Python 3.2′ye kadar olan Python sürümlerinde bu .pyc uzantılı dosyalar, ana .py dosyasının bulunduğu dizin içinde oluşturuluyordu. Ancak bu durum Python’ın 3.2 sürümü ile birlikte değişti. Artık .pyc dosyaları doğrudan ana .py dosyasının bulunduğu dizin içinde değil, __pycache__ adlı özel bir alt dizin içinde oluşuyor.

Yeni sistemin nasıl çalıştığını görmek isterseniz, mesela masaüstünde bulunan test.py adlı bir dosyayı import test komutuyla içe aktarın. Eğer kullandığınız sürüm Python 3.2 veya üzeri ise masaüstünde yeni bir __pycache__ dizininin oluştuğunu göreceksiniz.

.pyc dosyaları ile ilgili olarak Python 3.2′nin getirdiği tek yenilik farklı bir dizin daha oluşturulması değildir. Bu yeni __pycache__ dizinini açtığınızda karşınıza test.cpython-32.pyc adında bir dosya çıktığını göreceksiniz. Gördüğünüz gibi, artık .pyc dosyalarının adı da farklı. Python’ın 3.2 öncesi sürümlerinde test.py adlı dosyanın önbelleklenmiş hali test.pyc adını taşıyordu. Ama 3.2 sonrası sürümlerde önbelleklenmiş dosya test.cpython32.pyc adını taşıyor.

Peki bütün bu değişikliklerin gerekçesi nedir?

Özellikle sistemde birden fazla Python sürümü kurulu olduğunda eski önbellekleme mekanizması bazı sorunlara yol açabiliyordu. Örneğin Python 2.7 yorumlayıcısı tarafından oluşturulmuş bir .pyc dosyasıyla karşılaşan Python 3.1 yorumlayıcısı bu .pyc dosyasının üzerine yazıp, Python 2.7 yorumlayıcısının o dosyayı kullanmasını engelleyebiliyordu.

Aslında bu sorunun temelinde, bütün Python sürümlerinin test.py gibi bir dosya için test.pyc adlı bir bellek dosyası araması yatıyor. İşte Python geliştiricileri bu sorunu çözmek için her Python derleyicisinin farklı bir bellek dosyası adı oluşturmasına karar verdi. Böylelikle artık Python 3.2 derleyicisi .pyc dosyalarını “modül_adı.cpython32.pyc” adıyla, Python 3.3 derleyicisi ise “modül_adı.cpython33.pyc” adıyla oluşturacak. Ayrıca bütün .pyc dosyaları tek bir __pycache__ dizini altında derli toplu bir şekilde bulunacağı için dosya kirliliğinin de önüne geçilmiş olacak.

Bütün bu değişikliklerin sonucu olarak artık bütün modüllerin bir de __cached__ adlı bir metodu var. Bu metot, önbelleklenmiş dosyanın adını tutuyor. Örneğin:

>>> import test
>>> test.__cached__
'__pycache__/test.cpython-32.pyc'

Eğer bu yeni yapı içindeki “cpython-32″ kısmını almanız gerekirse şu kodları kullanabilirsiniz:

>>> import imp
>>> imp.get_tag() 
'cpython-32'

Ayrıca artık imp modülü de, bu yeni değişiklikler nedeniyle iki yeni metot daha kazandı:

>>> import imp
>>> imp.cache_from_source("test.py")
'__pycache__/test.cpython-32.pyc'
>>> imp.source_from_cache("__pycache__/test.cpython-32.pyc")
'test.py'

Gördüğünüz gibi, cache_from_source() metodu, parametre olarak modül adını alıyor ve size bu modüle ait önbelleklenmiş dosyanın adını veriyor. Benzer şekilde source_from_cache() metodu ise parametre olarak önbelleklenmiş dosya adını alıyor ve size ana modülün adını veriyor.

Konuyla ilgili PEP:
http://www.python.org/dev/peps/pep-3147/

Resmi belge:
http://docs.python.org/dev/whatsnew/3.2.html#pep-3147-pyc-repository-directories

Uncategorized

Bilgisayar Bilimine ve Programlamaya Giriş

Çarşamba, 20 Eki 2010

Massachusetts Teknoloji Enstitüsü (Massachusetts Institute of Technology – MIT), internet üzerinden insanlara çok güzel bir hizmet sunuyor.  MIT’in sunduğu bu hizmetin adı MIT OpenCourseWare (OCW).

Peki nedir bu OCW?

OCW; MIT’te verilen hemen hemen bütün derslerin internet üzerinden yayımlandığı bir sistem. OCW kapsamındaki çevrimiçi derslerden yararlanabilmek için herhangi bir ücret ödemenize veya kayıt olmanıza gerek yok. İçeriğe herkes doğrudan erişebiliyor.

OCW’nin internet sitesine http://ocw.mit.edu/index.htm adresinden ulaşabilirsiniz.

İnternet üzerinden ücretsiz olarak herkese sunulan bu hizmetin Python programcılarını ilgilendiren yönü, OCW kapsamında verilen dersler arasında “Introduction to Computer Science and Programming” (Bilgisayar Bilimine ve Programlamaya Giriş) adlı bir dersin de olması. Bu derste bilgisayar ve programlama konusu Python programlama dili üzerinden anlatılıyor.

Dersin tam adresi şu: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/

Lisans düzeyinde bir kurs olan “Introduction to Computer Science and Programming”, programlama konusunda hiç bir bilgisi olmayan veya konuyu çok az bilen öğrenciler düşünülerek hazırlanmış.

Yukarıda verdiğim adreste derslerle ilgili şu başlıkları göreceksiniz:

Ders Videosu

Altyazılar

Alıştırma Soruları

Sınavlar ve Cevapları

OCW kapsamında verilen bu derslerin hepimiz için bulunmaz bir nimet olduğunu gönül rahatlığıyla söyleyebilirim. Eğer İngilizce biliyorsanız bu fırsatı kesinlikle kaçırmayın. Eğer bilmiyorsanız, sırf bu dersleri takip etmek için dahi olsa öğrenin!

Bu arada, beni bu derslerden haberdar eden Martinamca‘ya teşekkür ediyorum.

Uncategorized , , , , ,

Mecbur Değilsiniz

Pazartesi, 09 Ağu 2010

Bilgisayarlarında Microsoft Windows işletim sistemi kullanmayanların en büyük dertlerinden biri, markalı bilgisayar satın alırken yanında bir de Windows lisansı almak zorunda kalmalarıdır. İnsanın, kullanmayacağı bir işletim sistemine para vermek zorunda bırakılması gerçekten de son derece tatsız bir durum.

Ancak geçen yıl değerli ağabeyim Avukat Nihad Karslı’nın açtığı dava sonucu bu durum artık değişti. Bundan böyle, satın aldığınız markalı bilgisayarlarla birlikte Windows lisansı almak zorunda değilsiniz. Konuyla ilgili tartışmaya http://forum.pardus-linux.org/viewtopic.php?f=25&t=21098 adresinden ulaşabilirsiniz.

Pardus-Linux.Org ekibi, Bahri Meriç Canlı‘nın önerisiyle, bu önemli konunun forum arşivinde kaybolup gitmemesi için, sadece bu konuyla ilgili bir de web sitesi oluşturdu. Sitenin adresi http://www.mecburdegilsiniz.com/

Eğer siz de bu girişime destek olmak isterseniz, http://forum.pardus-linux.org/viewtopic.php?f=196&t=22093 adresinde tartışmaya katılabilirsiniz.

Gösterdikleri çaba ve emekten ötürü Avukat Nihad Karslı’ya, Bahri Meriç Canlı’ya ve Pardus-Linux.Org ekibine teşekkür ederim.

Uncategorized , , , , ,

Dünya Sistem Yöneticileri Gününüz Kutlu Olsun!

Cuma, 30 Tem 2010

Meğer 30 Temmuz “Dünya Sistem Yöneticileri Günü” imiş… :) Bütün sistem yöneticilerinin “sistem yöneticileri gününü” tebrik ediyorum!.. Sayfası bile var: http://www.sysadminday.com/


Uncategorized

Şifreli Metin

Perşembe, 17 Haz 2010

http://www.istihza.com/blog/this-modulu-icindeki-sifreli-metin.html/ adresindeki yazıda Python’daki this modülü içinde yer alan şifreli bir metinden ve bu metnin Python yardımıyla nasıl çözüleceğinden söz ettik.

Sizce o şifreli metni, kesinlikle Python’dan yararlanmadan, sadece İngilizce bilgisi kullanarak çözme imkanı var mı? Yani diyelim ki elinizde sadece bu şifreli metin var ve bildiğiniz tek şey bu metnin İngilizce olduğu… Bir de metindeki “Gur” kelimesinin “The” anlamına geldiğini biliyoruz. Böyle bir durumda acaba bu metin nasıl çözülür?

Metnimiz şu:

“Gur Mra bs Clguba, ol Gvz Crgref. Ornhgvshy vf orggre guna htyl. Rkcyvpvg vf orggre guna vzcyvpvg. Fvzcyr vf orggre guna pbzcyrk. Pbzcyrk vf orggre guna pbzcyvpngrq. Syng vf orggre guna arfgrq. Fcnefr vf orggre guna qrafr. Ernqnovyvgl pbhagf. Fcrpvny pnfrf nera’g fcrpvny rabhtu gb oernx gur ehyrf. Nygubhtu cenpgvpnyvgl orngf chevgl. Reebef fubhyq arire cnff fvyragyl. Hayrff rkcyvpvgyl fvyraprq. Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff. Gurer fubhyq or bar– naq cersrenoyl bayl bar –boivbhf jnl gb qb vg. Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh’er Qhgpu. Abj vf orggre guna arire. Nygubhtu arire vf bsgra orggre guna *evtug* abj. Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg’f n onq vqrn. Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn. Anzrfcnprf ner bar ubaxvat terng vqrn — yrg’f qb zber bs gubfr!”

Bulmaca meraklılarına hodri meydan!… :)

Uncategorized ,

Also Sprach Zarathustra…

Çarşamba, 02 Haz 2010

Hier sitze ich und warte, alte zerbrochene Tafeln um mich und auch neue halbbeschriebene Tafeln. Wann kommt meine Stunde?

- die Stunde meines Niederganges, Unterganges: denn noch Ein Mal will ich zu den Menschen gehn.

Dess warte ich nun: denn erst müssen mir die Zeichen kommen, dass es meine Stunde sei, – nämlich der lachende Löwe mit dem Taubenschwarme.

Inzwischen rede ich als Einer, der Zeit hat, zu mir selber. Niemand erzählt mir Neues: so erzähle ich mir mich selber.

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

Here do I sit and wait, old broken tables around me and also new half- written tables. When cometh mine hour?

-The hour of my descent, of my down-going: for once more will I go unto men.

For that hour do I now wait: for first must the signs come unto me that it is MINE hour–namely, the laughing lion with the flock of doves.

Meanwhile do I talk to myself as one who hath time. No one telleth me anything new, so I tell myself mine own story.

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

Burada oturmuş bekliyorum. Yanıbaşımda eski, kırık levhalar… Bir de yeni, yarısı yazılmış levhalar… Ne zaman gelecek benim saatim?

- Alçalışımın, inişimin saati. Bir kez daha gideceğim insanlara.

O saati bekliyorum şimdi. Çünkü benim saatimin gelişinin işaretleri görünmeli önce bana. Yani güvercin sürüsü ile gülen aslan.

Bu esnada, vakti bol biri gibi konuşacağım kendimle. Madem kimse bana yeni bir şeyler söylemiyor, ben de kendi öykümü anlatacağım kendime.

Uncategorized ,

Python Projesi

Pazartesi, 29 Mar 2010

İstanbul’da Boğaziçi Ses Hizmetleri adlı şirketin sahibi Salih Arık, şirket bünyesinde yürütülen bir proje için Python programcısı aradıklarını haber verdi. Projeyle ilgili ayrıntılı bilgileri Salih Bey’den alabilirsiniz, ancak projenin genel olarak VoIP üzerine olduğunu söyleyebilirim.

Proje ve ücret konularını görüşmek için 0532 404 33 68 numaralı telefondan Salih Arık‘ı arayabilir ya da saliharik [at] hotmail.com adresinden kendisine yazabilirsiniz.

Uncategorized , , , ,

Python Kitabı

Cumartesi, 13 Şub 2010

Daha önce de bahsettiğim gibi, istihza.com‘un temeli 18 Eylül 2007 tarihinde PLO Vikisi’nde atılmıştı. Bu tarihten sonra istihza.com’un nüvesini oluşturan bilgiler zaman içinde hızla genişledi ve nihayet bugünlere gelindi… istihza.com’un tarihçesi hakkında kısa bir bilgi edinmek için http://www.istihza.com/blog/istihzacoma-dair.html/ adresindeki yazımızı inceleyebilirsiniz.

istihza.com’un yayın hayatı sırasında okur isteklerine olabildiğince cevap vermeye çalıştım. Özellikle burada yayımlanan bilgilerin en kolay ve en verimli bir şekilde okura ulaşabilmesi için olanca gücümle çabaladım. Amacım hep ortaya modern ve yenilikleri takip eden bir bilgi kaynağı çıkarabilmekti.

Yukarıda bahsedilen amacı gerçekleştirebilmek için istihza.com’daki bilgileri okura hem HTML, hem de PDF biçiminde sundum. Böylece hem farklı zevklere hitap etmeyi, hem de bilgiye erişimde kolaylık sağlamayı hedefledim. Dediğim gibi, bu çalışmalar hep okurdan gelen talepleri karşılama gayesi güdüyordu…

Siteyi takip edenlerin bildiği gibi, istihza.com’un yayın hayatı boyunca her şey güllük gülistanlık olmadı… Bu süre içinde ne yazık ki ağızda metalik tat bırakan bazı olaylar da yaşadık. Bu olayların memnuniyet verici yanı ise Python ve özgür yazılım topluluğundan arkadaşların desteğini arkamda görmek oldu. Bu bakımdan, yalnız olmadığımı hissettiren bütün arkadaşlarıma teşekkür ederim.

Dediğim gibi, istihza.com’un en önemli itici gücü, takipçilerden gelen istekler oldu hep… Uzunca bir süredir gerek e.posta yoluyla olsun, gerek başka ortamlarda olsun, istihza.com takipçileri, sitedeki bilgilerin kitap olarak da yayımlanması konusundaki isteklerini bana iletiyorlardı. Elbette bu fikir benim de arzu ettiğim bir şeydi. Ancak bu fikrin, istihza.com’un sürekliliğine zarar vermeden gerçekleşmesini istiyordum.

istihza.com’daki bilgileri kitaplaştırmak için ne yapabilirim acaba diye düşünürken sevindirici haber KODLAB Yayınları‘ndan geldi…

Bundan birkaç hafta önce KODLAB Yayınları’nın sahibi Sayın Hüseyin Üstünel’den bir e.posta aldım. Kendisi yaşanan tatsız olaylarla KODLAB Yayınları’nın herhangi bir alakası olmadığını, daha önceden çıkarılması tasarlanan kitabın istihza.com’dan izinsiz kopyalandığını da sonradan öğrendiklerini anlattı. Hüseyin Bey bana gönderdiği e.postada, istihza.com’dan alınan bilgileri benim adımla kitaplaştırmayı da teklif etti. Ben de kendisine, Talat Uyarer tarafından istihza.com’dan izinsiz kopyalanan bilgilerin alındığı tarihten bu yana siteye pek çok yeni bilgi eklendiğini, ayrıca Talat Uyarer’in istihza.com’dan izinsiz kopyaladığı bilgiler üzerinde ne tür değişiklikler yaptığını bilmediğimi söyledim. Dolayısıyla kitabı sadece üzerindeki ismi değiştirerek yayımlamak doğru olmayacaktı. Bu yüzden Hüseyin Bey’e bilgileri yeniden düzenledikten sonra kitaplaştırma işine girmeyi önerdim. O da bu önerimi kabul etti. Ardından KODLAB ile istihza.com arasında bir anlaşma imzaladık ve kitap üzerinde çalışmaya başladık. Çalışmalarımız birkaç gün önce sona erdi ve ortaya şöyle şık bir şey çıktı:

Kitap, eğer bir aksilik olmazsa iki-üç gün içinde kitap raflarındaki yerini alacak. Bu arada elbette istihza.com da varolmaya ve güncellenmeye devam edecek. Bu kitaptaki bilgilere istihza.com üzerinden de erişebileceksiniz. Bu kitap projesi, Python programlama dilini öğrenmek isteyenlerin bilgiye daha kolay erişebilmesini sağlamak ve uzun bir süredir bana iletilen bir isteği yerine getirmek  için hayata geçirildi. Bu kitabı yayımlayan ve kitaptaki bilgilerin istihza.com üzerinden paylaşılmasına izin veren KODLAB Yayınları’na teşekkür ederim.

Bu süreçte teşekkür etmek istediğim bir arkadaşım daha var: O da sevgili dostum Kürşat Örsel. Bildiğiniz gibi, kendisi istihza.com’daki en önemli makalelerden biri olan “Math Modülü”nü yazan kişidir. Python kitabını hazırlarken Kürşat Örsel’i aradım ve bu makaleyi kitaba alabilmek için kendisinden izin istedim. O da sağolsun beni kırmadı ve makaleyi kitaba almamıza müsaade etti. Kendisine nezaketi için bir kez daha teşekkür ederim.

Aslında özellikle kitabın teknik detayları ve içeriğiyle ilgili söylemek istediğim başka şeyler de var. Ama onları da bu yazıda ifade etmeye kalkışırsam yazı epey uzayacak. O yüzden bu da başka bir yazının konusu olsun… :)

Düzenleme: Python kitabı ile ilgili teknik bilgiler için bkz.: http://www.istihza.com/blog/python-kitabi-hakkinda-teknik-bilgiler.html/

istihza.com, Python, Uncategorized , , ,

Ufak Bir Ara…

Pazar, 27 Ara 2009

Sevgili Arkadaşlar,

Bir süre önce küçük bir ameliyat geçirdim. Nekahat dönemi geçene kadar siteye vakit ayıramıyorum. Bu süre içinde bana e.posta yoluyla soru sorup da cevap alamamış dostlar kusura bakmasın… İyileştiğimde bu sorulara cevap vermeye çalışacağım.

Sevgiler,

istihza

Uncategorized

Yeni Harman

Cuma, 27 Kas 2009

Hatırlarsanız PDF dosyaları üzerinde kesme ve birleştirme gibi işlemleri yapabilmek için HARMAN adlı bir program yazmıştım. HARMAN’ı kullanarak şu işlemleri yapabilirsiniz:

- Birden fazla PDF dosyasını uç uca birleştirebilirsiniz.

- Bir PDF dosyasının herhangi bir yerine başka bir pdf dosyası ekleyebilirsiniz.

- Bir PDF dosyasının herhangi bir yerinden tek veya daha fazla sayfayı silebilirsiniz.

- Bir PDF dosyasının herhangi bir yerinden tek veya daha fazla sayfayı kesip alabilirsiniz.

HARMAN’ın son sürümü 0.5 numaralı idi ve bu sürüme kadar arayüz takımı olarak hep Tkinter’i kullanmıştım. Tabii Tkinter nedeniyle, “arayüzün çirkinliği” konusunda bazı eleştiriler aldım. Bu eleştirilerin en belirginleri sevgili dostlarım Burak ve Gürkan‘dan geldi… :) Bu arkadaşlar ısrarla HARMAN’ın GTK arayüz takımı kullanılarak yazılması gerektiğini belirttiler… Ben de onları kıracağıma kafamı kırarım diyerek HARMAN’ı PyGTK ile yazmaya karar verdim. Sonunda ortaya “G-HARMAN 0.6″ çıktı…

G-HARMAN GNU/Linux’ta şöyle görünüyor:

G-Harman beni epey uğraştırdı, ama sanırım sonunda ortaya çıkan şey fena olmadı..

HARMAN bu sürümle birlikte bazı yeni yetenekler de kazandı. Mesela artık HARMAN “sürükle-bırak” özelliğine sahip. Yani artık bilgisayarınızdaki PDF dosyalarını arayüz üzerindeki liste kutusuna fare yardımıyla sürükleyip bırakabilirsiniz.

Ayrıca HARMAN artık yapılan bir işlemin ilerleme durumunu daha düzgün gösterebiliyor. Bu sürümle birlikte daha yetenekli bir ilerleme çubuğuna sahibiz…

Bunların dışında, HARMAN’ın işleyiş biçiminde de bazı değişiklikler yaptım. Artık bütün PDF dosyaları tek bir liste kutusundan çağrılıyor. Böylece dosya birleştirme, kesme ve ekleme işlemleri için ayrı ayrı yerlere dosya eklemek gibi bir zorunluluğumuz kalmadı. Bu şekilde arayüzün daha da basitleştiğini düşünüyorum.

HARMAN tabii ki GNU/GPL v3 ile lisanslanmış özgür bir yazılım. Bu programın kaynak dosyalarını http://www.istihza.com/harman/icindekiler_harman.html adresinden indirebilirsiniz. Ayrıca o adreste de göreceğiniz gibi, HARMAN’ın .deb ve .exe paketlerini de hazırladım. HARMAN’ın .exe dosyasını py2exe adlı programı kullanarak oluşturdum. Exe dosyası aslında boyut olarak epey büyük. Bu yüzden, en fazla sıkıştırma oranını elde etmek için .exe ile ilgili dosyaları barındıran klasörü 7zip adlı programı kullanarak sıkıştırdım.

HARMAN’ın bir özelliği de çift dilli bir program olmasıdır. Eğer kullandığınız sistem Türkçe ise HARMAN Türkçe bir arayüzle açılır, eğer sisteminiz Türkçe dışında bir dil ise HARMAN İngilizce bir arayüzle açılacaktır.

HARMAN’la ilgili daha ayrıntılı bilgiye http://www.istihza.com/harman/belgeler/harman_intro.html adresinden erişebilirsiniz.

HARMAN’ın, ihtiyacı olanların işine yaramasını ümit ediyorum.

Her zamanki gibi, programda bulacağınız hataları veya programla ilgili görüşlerinizi kistihza [at] yahoo [nokta] com adresine iletebilirsiniz.

Uncategorized , , , , , ,