<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Python Programlama Dili</title>
	<atom:link href="http://www.istihza.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.istihza.com/blog</link>
	<description>Sevgili Günlük...</description>
	<lastBuildDate>Thu, 29 Jul 2010 07:50:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>istihza.com: Python 2 ya da Python 3</title>
		<link>http://www.istihza.com/blog/istihza-com-python-2-ya-da-python-3.html/</link>
		<comments>http://www.istihza.com/blog/istihza-com-python-2-ya-da-python-3.html/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 07:50:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[istihza.com]]></category>
		<category><![CDATA[anket]]></category>
		<category><![CDATA[python 2.x]]></category>
		<category><![CDATA[python 3.x]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1285</guid>
		<description><![CDATA[Bildiğiniz gibi, Python&#8217;un en yaygın kullanılan sürümleri 2.x serisinden&#8230; Henüz Python 3.x serisi yeterli yaygınlığa ulaşamadı. Bunun sebeplerini daha önceki günlük girdilerinde tartışmıştık. Python 2.x&#8217;in bu durumundan ötürü ben de istihza.com&#8217;da 2.x ile ilgili derslere ağırlık veriyorum. Daha önce yaptığımız bir anketin sonucuna göre de  istihza.com kullanıcıları ağırlıklı olarak 2.x serisini kullandığı için sitedeki 3.x [...]]]></description>
			<content:encoded><![CDATA[<p>Bildiğiniz gibi, Python&#8217;un en yaygın kullanılan sürümleri 2.x serisinden&#8230; Henüz Python 3.x serisi yeterli yaygınlığa ulaşamadı. Bunun sebeplerini daha önceki günlük girdilerinde tartışmıştık. Python 2.x&#8217;in bu durumundan ötürü ben de istihza.com&#8217;da 2.x ile ilgili derslere ağırlık veriyorum. Daha önce yaptığımız bir anketin sonucuna göre de  istihza.com kullanıcıları ağırlıklı olarak 2.x serisini kullandığı için sitedeki 3.x belgelerini uzun süredir güncellemiyordum.</p>
<p>Ancak son dönemlerde Python 3.x gelişimi konusunda belli bir hızlanma söz konusu&#8230; Bu sebeple ben de istihza.com kullanıcılarına şöyle bir soru yöneltmek istiyorum:</p>
<blockquote><p><strong>istihza.com&#8217;da Python 2&#8242;ye mi yoksa Python 3&#8242;e mi ağırlık verilmeli?</strong></p></blockquote>
<p>Bu soruya cevap bulabilmek için yeni bir anket hazırladım. Ankete, sayfanın sağ tarafındaki &#8220;Polls&#8221; başlığı altından ulaşabilirsiniz. Anketten çıkacak sonuca göre ya Python 2.x belgelerini son hızla güncellemeye devam edeceğim, ya da ağırlığı Python 3.x belgelerine vereceğim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/istihza-com-python-2-ya-da-python-3.html/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Python 3 ve Python 2</title>
		<link>http://www.istihza.com/blog/python-3-ve-python-2.html/</link>
		<comments>http://www.istihza.com/blog/python-3-ve-python-2.html/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 12:56:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[istihza.com]]></category>
		<category><![CDATA[2to3]]></category>
		<category><![CDATA[3to2]]></category>
		<category><![CDATA[Guido Van Rossum]]></category>
		<category><![CDATA[python 3.x]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1254</guid>
		<description><![CDATA[Python 3.x serisinin ilk kararlı sürümü 3 Aralık 2008 tarihinde yayımlandı. Ancak Python 3 eski sürümlerle uyumlu olmadığı için insanlar hala Python 3&#8242;e geçmekte tereddüt ediyor. Çünkü hem etraftaki Python programları, hem Python&#8217;la ilgili kaynaklar hem de önemli üçüncü şahıs modülleri henüz Python 3&#8242;e taşınmadı. Dolayısıyla, henüz Python 3&#8242;e taşınmamış modüllere bağımlılık duyan Python programlarının [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>
<div>
<div>
<p>Python 3.x serisinin ilk kararlı sürümü 3 Aralık 2008 tarihinde yayımlandı. Ancak Python 3 eski sürümlerle uyumlu olmadığı için insanlar hala Python 3&#8242;e geçmekte tereddüt ediyor. Çünkü hem etraftaki Python programları, hem Python&#8217;la ilgili kaynaklar hem de önemli üçüncü şahıs modülleri henüz Python 3&#8242;e taşınmadı. Dolayısıyla, henüz Python 3&#8242;e taşınmamış modüllere bağımlılık duyan Python programlarının yazarları 3.x&#8217;e geçiş konusunda (haklı olarak) ayak diretiyor.</p>
<p>Python geliştiricileri, bir yandan Python 3&#8242;ü geliştirmekle uğraşırken, bir yandan da insanların Python 3&#8242;e geçişini hızlandırmak ve korkuları gidermek için bilgilendirici ve yüreklendirici makaleler yayımlıyor. Bu yüreklendirici makalelerden biri de <a href="http://wiki.python.org/moin/Python2orPython3">http://wiki.python.org/moin/Python2orPython3</a> adresinde bulunuyor. Bu makalede, Python kullanıcılarının sıklıkla sorduğu &#8220;<strong><em>Python 3&#8242;ü mü yoksa Python 2&#8242;yi mi kullanmalıyım?</em></strong>&#8221; sorusuna bir cevap vermeye çalışıyor Python geliştiricileri&#8230;</p>
<div>
<p>Bu soruyu İngilizce bilmeyenlerin de sorduğunu dikkate alarak, yukarıdaki bağlantıda verdiğim makaleyi Türkçe&#8217;ye çevirdim.</p>
<p>İşinize yaraması dileğiyle&#8230;</p>
<p><span style="text-decoration: underline;"><strong>Not:</strong></span> Özgün makaleyi hızlı bir şekilde Türkçe&#8217;ye çevirdiğim için çeviride bazı aksaklıklar gözünüze çarpabilir. Çeviri metin üzerinde iyileştirme çalışmaları yapmaya devam edeceğim. Ayrıca özgün metin üzerinde değişiklikler olursa, bu değişiklikleri çeviri metne de yansıtacağım. O yüzden bu günlük girdisini zaman zaman ziyaret etmenizde fayda olabilir&#8230;</p>
<p>Fırat Özgül</p>
<p>************************************</p>
<p><strong>Geliştirme çalışmalarım için Python 2’yi mi yoksa Python 3’ü mü kullanmalıyım?</strong></p>
<div id="bu-ikisinin-farki-nedir">
<p><strong>Bu ikisinin farkı nedir?</strong></p>
<p>Kısa cevap: Python 2.x dilin süregelen durumunu temsil eder. Python 3.x ise yepyeni, pırıl pırıl bir dildir.</p>
<p>Bu makalenin yazıldığı sırada (4 Temmuz 2010) Python’ın kararlı 2.7  sürümü yayımlanmış, serinin bu son sürümünün uzun süre destekleneceği de  ifade edilmişti. 2.7’den sonra 2.x serisinde artık başka bir ana sürüm  olmayacak. 3.x serisi etkin bir şekilde geliştirilmeye devam ediyor. Bu  serinin 3.1 sürümü yayımlandı. 3.2 sürümü ise bu yılın sonuna doğru  yayımlanacak.</p>
<p>3.x, Python’un en yeni dalı olup bu dilin geleceğidir. Python  programlama dilinin baş geliştiricisi Guido Van Rossum, 2.x serisindeki  sürümlerin aksine geriye dönük uyumluluğu gözardı ederek Python 2.x  üzerinde adamakıllı bir temizlik yapmaya karar verdi. Bu yaklaşım  sayesinde dilin bazı temel yönleri (mesela print ve exec’in birer deyim  olması, tamsayılarda taban bölme kullanılması), bu dili yeni öğrenenler  için daha kolay anlaşılır bir hale getirilebilme imkanına kavuşurken, bu  yönlerin dilin geri kalanıyla da daha uyumlu olması sağlanabilecek. Böylelikle dile yakın zamanda eklenmiş özelliklerin (mesela  döngü kurucular) dilde eskiden beri varolan özelliklere uyarlanması da  mümkün olacak (mesela range gömülü fonksiyonunun 2.x serisinde liste  döndürürken, 3.x serisinde döngü kurucu döndürmesi).</p>
<p><a href="http://docs.python.org/release/3.1.2/whatsnew/3.0.html">Python 3.0’daki Yenilikler</a> adlı belgede dildeki başlıca değişiklikler ve mevcut 2.x kodlarıyla  olan muhtemel uyumsuzluklar gayet güzel bir şekilde özetleniyor.</p>
<p>Geçen yıllar içinde geniş Python ekosistemi çok sayıda kaliteli  yazılım ortaya çıkardı. 3.x serisiyle birlikte geriye dönük uyumluluğun  ortadan kaldırılmasının dezavantajı, bu yazılımların 3.x serisinde  çalışmaz hale gelecek olmasıdır.</p>
</div>
<div id="o-halde-hangi-surumu-kullanmaliyim">
<p><strong>O halde hangi sürümü kullanmalıyım?</strong></p>
<p>Hangi sürümü kullanmanız gerektiği, çoğunlukla amacınızın ne olduğuna bağlıdır.</p>
<p>Yapmak istediğiniz şeyi Python 3.x ile yapabiliyorsanız ne ala!  Python 3.x’te nispeten kısıtlı sayıda kütüphane desteği olması ve mevcut  GNU/Linux dağıtımları ile Mac’lerin hala öntanımlı olarak 2.x  sürümleriyle birlikte gelmesi gibi birkaç dezavantaj dışında Python 3.x  bir dil olarak her yönüyle kullanıma hazırdır. Python 3.x’in  kullanıcılarınızın bilgisayarlarında bulunduğu (bu makaleyi okuyan pek  çok kişinin sadece kendi için veya denetleyebildikleri bir hedef kitle  için geliştirme yaptığını düşünürsek bunu sağlamak pek de zor olmasa  gerek) ve üçüncü şahıs yazılımların eksikliğinin ayak bağı olmadığı  (veya ihtiyacınız olan paketlerin Python 3’ü desteklediğini bildiğiniz)  durumlarda Python 3.x kusursuz bir seçimdir. Ayrıca şu anda öntanımlı  sürüm olarak kullanmasalar da pek çok GNU/Linux dağıtımı son  kullanıcılar için Python 3.x paketleri sunabilmektedir.</p>
<p>Ancak yine de Python 3 yerine Python 2 kullanmanızı gerektiren bazı ciddi meselelerle karşılaşabilirsiniz.</p>
<p>Birincisi, eğer programınız denetiminiz dışındaki bir ortamda  çalışacaksa, kullanacağınız Python sürümünü seçme özgürlüğünüz  olmayabilir. Böyle bir durumda belli bir Python sürümü kullanmak  durumunda kalabilirsiniz.</p>
<p>İkincisi, eğer henüz Python 3 ile uyumlu bir sürümü yayımlanmamış  belli bir üçüncü şahıs paketi ya da uygulaması kullanmak istiyorsanız,  üstelik bu paketi Python 3.x sürümüne taşımak hiç de kolay bir iş  değilse, o paketten yararlanabilmek için Python 2’yi kullanmayı tercih  edebilirsiniz.</p>
<p>Python 3’ü desteklemeyen önemli uygulamalar arasında Twisted (ağ  programlama ve başka pek çok şey için kullanılan bir kütüphane), gevent  (Twisted’a benzeyen, ama farklı özellikleri olan bir kütüphane), Django  ve Pylons (web siteleri hazırlamaya yardımcı uygulamalar), PyGTK ve  PySide (grafik arayüz tasarımı), py2exe (programlarınızı Windows için  paketlemeye yarayan bir kütüphane), PIL (resim işleme) ve numpy (sayı  işlemleri) sayılabilir&#8230;</p>
<p>Bu kütüphanelerin çoğu için Python 3.x uyumluluğu üzerinde, farklı  aşamalara gelmiş birtakım çalışmalar yürütülüyor. Örneğin numpy  üzerindeki çalışmalar tamamlanmak üzere. Bazı kütüphanelerde ise durum  bir öncelik meselesinden ibaret. Mesela Twisted çoğunlukla üretim  boyutundaki sunucuları hedeflediği için, dilde büyük değişiklikler  getiren bir sürüme destek vermek şöyle dursun, Python’un eski  sürümlerini desteklemek dahi büyük önem taşıyor. (Twisted, 3.x’e taşıma  işleminin hiç de kolay olmadığı paketler denince akla gelen başlıca  örnektir.)</p>
<p>Elbette 3.x’e taşınmış pek çok paket de var. Örneğin yazdıkları  programlara grafik arayüz eklemek isteyenler PyGTK yerine PyQT veya  standart kütüphane içinde gelen Tkinter’i kullanabilir. Python 3.x  kullanmak istiyor, ama bir bağımlılıktan ötürü bundan çekiniyorsanız  öncelikle biraz araştırma yapmak iyi bir fikir olabilir. Kütüphaneleri  taşıma işlemi devam eden bir süreçtir. Ayrıca bu wiki sayfası da zaman  zaman güncellenebilir.</p>
<p>Python 3’e geçişle ilgili başka bir sorun da referans kitaplar ve  internet üzerindeki pek çok belgenin (örnek kodlar da dahil) hep Python  2.x üzerine olmasıdır. Bu sebeple Python 3 kullanabilmek için  kaynaklarda bazı düzenlemeler yapmak gerekebilir. Aynı şekilde IRC  üzerinden yardım almaya alışmış kişiler için konuşmak gerekirse, #python  kanalının müdavimleri, henüz 3.x’e taşınmamış, eskiden beri kullanılan  yazılımlara bel bağlayan güngörmüş geliştiricilerdir (Burada örnek  olarak akla Twisted, Zope ve daha önce bahsettiğimiz paketler geliyor).  Sonuç olarak, IRC üzerindeki geliştiriciler size Python 3.x ile ilgili  veya Python 3.x’e taşınmış kütüphaneler ile ilgili sorunlar konusunda,  Python 2.x konularında yardımcı olabildikleri kadar yardımcı  olamayabilir. Aynı şey #python kanalı dışındaki ortamlar için de  geçerlidir. Elbette bu durum yavaş yavaş düzeliyor. Ayrıca bazı  problemler zannettiğiniz kadar 3.x’e özgü olmayabilir. Dolayısıyla  #python kanalından veya alternatif kaynaklardan yardım istemek yine de  iyi bir fikir olabilir. Her şeye rağmen, comp.lang.python gibi, 3.x  kullanıcılarının bolca bulunduğu ve sorunlarınız için yardım  alabileceğiniz önemli kanallar da mevcuttur.</p>
</div>
<div id="ama-2-x-surumunu-bir-kenara-birakmak-en-iyisi-degil-mi-ne-de-olsa-bu-pek-cok-hata-barindiran-eski-bir-dil-ustelik-butun-bu-hatalar-ortadan-kalksin-diye-koca-bir-surum-yayimlandi">
<p><strong>Ama 2.x sürümünü bir kenara bırakmak en iyisi değil mi? Ne de olsa  bu, pek çok hata barındıran eski bir dil. Üstelik bütün bu hatalar  ortadan kalksın diye koca bir sürüm yayımlandı.</strong></p>
<p>Aslında pek de öyle değil. İyi haber şu ki, sırf 2.x kullanıyorsunuz  diye 3.x’in bütün nimetlerinden mahrum kalacaksınız diye bir kaide yok.  3.0 ile uygulamaya giren pek çok yenilik 2.6’ya da aktarıldı. Üstelik  3.0, 3.1 ve yakında yayımlanacak olan 3.2 ile gelen daha pek çok yenilik  de 2.7 sürümüne aktarılacak. 2.x’te yapamayıp da 3.x’te yapabileceğiniz  şeyler çok azdır. Ama 2.x ile yapabilecekleriniz, 3.x ile  yapabilecekleriniz kadar şık ve zarif değildir. Yalnızca 3.x  sürümlerinde bulunan ve muhtemelen 2.x serisine taşınmayacak olan bazı  özellikler şöyle sınıflandırılabilir:</p>
<ol>
<li>Açıklamalı Fonksiyon Parametreleri (<em>function annotations</em>)</li>
<li>Sadece isimli argümanlardan oluşan fonksiyonlara ait sözdizimi</li>
<li>Genişletilmiş demet çözme</li>
<li>Yerel olmayan değişken tanımlama</li>
</ol>
<p>2.x’e taşınan özelliklere ilişkin ayrıntılı bilgi için bkz. <a href="http://docs.python.org/release/2.6.4/whatsnew/2.6.html">Python 2.6’daki Yenilikler</a> ve <a href="http://docs.python.org/dev/whatsnew/2.7.html">Python 2.7’deki Yenilikler</a></p>
<p>İyi yazılmış bir 2.x kodu 3.x koduna benzer. Ancak bunu sağlamak için  bazı şeylere de dikkat etmeniz gerekecektir. Mesela yeni tipte  sınıfları kullanmak, print’in eski ve küflenmiş kullanımlarından uzak  durmak, mümkün olduğunca liste/demet/sözlük üreteçlerinden yararlanmak  gibi&#8230; Buna şöyle bir örnek verebiliriz: İyi bir 2.x kodunda range  yerine xrange kullanılır. xrange 3.x’teki range’e çok benzer (Tabii  Python 3’teki range çok daha yeteneklidir, çünkü sys.maxint’in  gösterdiği değerden çok daha fazlasını kullanabilir).</p>
<p>Her şeyden öte, 2.x’ten 3.x’e geçişin olabildiğince sancısız  olabilmesi için iyi kod yazmaya odaklanmanızı öneriyoruz. Bununla,  eksiksiz birim testleri yazmayı ve Unicode’u düzgün kullanabilmeyi  kastediyoruz (Python 3.x, Unicode ve baytlar konusunda 2.x’e kıyasla  daha tavizsizdir. Bu tavizsizlik iyi bir şey olarak kabul edilir, ama bu  durum bazı yazılımların 3.x’e aktarılmasını da epey zorlaştırabilir).</p>
</div>
<div id="python-3-u-kullanmak-istiyorum-ama-elimde-sadece-python-2-x-ile-calisabilen-kucuk-bir-kutuphane-var-acaba-python-2-ile-devam-mi-etmeliyim-yoksa-o-kutuphaneyi-kullanmaktan-vaz-mi-gecmeliyim">
<p><strong>Python 3’ü kullanmak istiyorum, ama elimde sadece Python 2.x ile  çalışabilen küçük bir kütüphane var. Acaba Python 2 ile devam mı  etmeliyim, yoksa o kütüphaneyi kullanmaktan vaz mı geçmeliyim?</strong></p>
<p>Halihazırda Python 3’ü destekleyen alternatif bir paket bulamadığınızı varsayarsak, yine de önünüzde birkaç seçenek var:</p>
<ol>
<li>O kütüphaneyi 3.x’e taşıyabilirsiniz (“Taşımak”, o kütüphaneyi 3.x üzerinde çalışabilir hale getirmek demektir.)</li>
<li>Eğer taşıma işlemi çok zor olacaksa ve programınızın öteki bütün  bağımlılıkları 2.x ile çalışıyorsa siz de 2.x üzerinde çalışmaya devam  edebilirsiniz. Başka yerlerde de ifade edildiği gibi, bütün  bağımlılıklar başarıyla 3.x’e taşındıktan sonra, iyi yazılmış bir 2.x  kodunu 3.x’e taşımak sancısız bir süreç olacaktır.</li>
<li>O kütüphanenin kattığı özelliğin ne kadar önemli olduğunu kafanızda  tartın. Kimbilir belki o kütüphaneyi programınızdan çıkarsanız da olur.</li>
</ol>
<p>Arzu edilen, o kütüphaneyi 3.x’e taşımaktır. Genellikle birileri  zaten bu iş üzerinde çalışıyordur. Değilse, kütüphanenin geliştiricileri  bu konuda yardım teklifinizi çoğunlukla geri çevirmeyecektir. Çünkü  taşıma işlemi hem özgün yazılım içindeki hataların bulunmasını sağlar,  hem de özgün yazılımın ve 3.x’e taşınmış halinin kalitesini yükseltir.  Taşıma işlemi her zaman o kadar kolay değildir. Ancak taşımak sıfırdan  yazmaktan kolaydır.</p>
<p>Taşıma işleminin nasıl yapılacağı <a href="http://www.python.org/dev/peps/pep-3000/#id9">PEP 3000</a>‘de  açıklanmıştır. Ana fikir, söz konusu kütphanenin 2.x sürümünü alıp,  Python 3’le uyumlu bir sürüm elde etmek için 2to3 adlı dönüşüm betiğini  kullanmak ve bütün birim testlerinin 3.x sürümünde de geçer olup  olmadığını kontrol etmektir. Eğer testler geçersizse özgün 2.x kaynağını  düzenleyip aynı işlemi tekrar edin. Bu yaklaşım sayesinde tek bir 2.x  kod tabanı üzerinden hem 2.x’i hem de 3.x’i kolayca  destekleyebilirsiniz. Bu, 2.x ve 3.x dallarını ayrı ayrı desteklemekten  çok daha kolaydır (Bunu bir de Python geliştiricilerine sorun. Ne  de olsa onlar bu işi yıllardır yapıyor!).</p>
<p>Eğer kütüphane içinde C eklenti modülleri de varsa taşıma işlemi  karmaşık bir hal alabilir, ancak böyle bir durumda bile muhtemelen  taşıma işlemi kendi paketinizi sıfırdan yazmaktan kolay olacaktır.</p>
<p>Python vikisinde bu konuya ilişkin daha ayrıntılı kılavuzlar bulabilirsiniz: <a href="http://wiki.python.org/moin/PortingPythonToPy3k">Python’u Py3k’ya Taşımak</a>, <a href="http://wiki.python.org/moin/PortingExtensionModulesToPy3k">Eklenti Modüllerini Py3k’ya Taşımak</a></p>
</div>
<div id="x-ile-bir-seyler-yazmaya-karar-verdim-ama-simdi-bu-yazdigim-seyi-elinde-sadece-2-x-bulunan-biri-kullanmak-istiyor-ne-yapmaliyim">
<p><strong>3.x ile bir şeyler yazmaya karar verdim, ama şimdi bu yazdığım şeyi  elinde sadece 2.x bulunan biri kullanmak istiyor. Ne yapmalıyım?</strong></p>
<p>2.x kaynak kodlarından 3.x kodları üretilmesine olanak tanıyan 2to3  adlı aracın yanısıra, 3.x kodlarını 2.x koduna dönüştürmeyi amaçlayan  3to2 adlı bir betik de vardır. Teorik olarak, 3.x’te daha az pürüzlü  nokta olduğu için (ne de olsa geriye dönük uyumluluğu kırmanın ana  sebeplerinden biri de bu pürüzlü noktaları olabildiğince gidermekti!)  3to2 aracı daha iyi sonuç verecektir. Ancak 3.x’e özgü özellikleri  (mesela açıklamalı fonksiyon parametreleri veya genişletilmiş demet  çözme) bolca kullanan kodların başarıyla 2.x&#8217;e dönüştürülmesinin de pek  mümkün olmayacağı bilinmelidir.</p>
<p>Ayrıca şu anda 3to2 aracının, 2to3 aracına kıyasla daha az  kullanıldığını söyleyebiliriz. Dolayısıyla 3to2 aracında bazı  aksaklıklarla karşılaşabilirsiniz. Ancak eğer 3.x kodları yazmak  istiyorsanız elbette bu araç denemeye değer&#8230;</p>
</div>
<div id="python-2-ile-python-3-arasinda-secim-yapmaniza-yardimci-olabilecek-baska-kaynaklar">
<p><strong>Python 2 ile Python 3 arasında seçim yapmanıza yardımcı olabilecek başka kaynaklar</strong></p>
<p>#python tayfasından öğütler (aynı zamanda bu makalenin de ilham kaynağıdır): <a href="http://python-commandments.org/python3.html">http://python-commandments.org/python3.html</a></p>
<p>Özellikle Python 3 üzerinden programlama öğretimi konusunda Nick Efford’un bazı önerileri var: <a href="http://www.comp.leeds.ac.uk/nde/papers/teachpy3.html">http://www.comp.leeds.ac.uk/nde/papers/teachpy3.html</a></p>
<p>Mark Pilgrim <em>Dive Into Python</em>’ın Python 3’ü temel alan sürümünü yayımladı: <a href="http://diveintopython3.org/whats-new.html">http://diveintopython3.org/whats-new.html</a></p>
<p>“IronPython kullanıcılarının Python 3 hakkında bilmesi gerekenler”: <a href="http://www.itworld.com/development/104506/python-3-and-ironpython">http://www.itworld.com/development/104506/python-3-and-ironpython</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/python-3-ve-python-2.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Odun ve Parçala</title>
		<link>http://www.istihza.com/blog/odun-ve-parcala.html/</link>
		<comments>http://www.istihza.com/blog/odun-ve-parcala.html/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 06:28:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[Aşkın Yollu]]></category>
		<category><![CDATA[Erdem Artan]]></category>
		<category><![CDATA[Hj-Split]]></category>
		<category><![CDATA[Metehan Özbek]]></category>
		<category><![CDATA[odun]]></category>
		<category><![CDATA[parçala]]></category>
		<category><![CDATA[pardus]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1247</guid>
		<description><![CDATA[istihza.com takipçilerinin Python programlama dilini kullanarak yazdıkları programları tanıttığımız &#8220;Python Programları&#8221; adlı bölümümüze bugün iki yeni program daha ekledik. Bu programlardan birincisi &#8220;Odun&#8221;, ikincisi ise &#8220;Parçala&#8221; adını taşıyor. Dilerseniz önce Odun&#8217;dan başlayalım. GNU/Linux dağıtımlarını kullananların gayet iyi bildiği gibi, interneti olmayan bir bilgisayara program kurmak, &#8220;bağımlılık cehennemi&#8221; denen şeyden ötürü oldukça belalı bir iştir. İşte [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.istihza.com">istihza.com</a> takipçilerinin Python programlama dilini kullanarak yazdıkları programları tanıttığımız &#8220;<a href="file:///F:/web/istihzacom/programlar/icindekiler_programlar.html">Python Programları</a>&#8221; adlı bölümümüze bugün iki yeni program daha ekledik. Bu programlardan birincisi &#8220;Odun&#8221;, ikincisi ise &#8220;Parçala&#8221; adını taşıyor. Dilerseniz önce Odun&#8217;dan başlayalım.</p>
<p>GNU/Linux dağıtımlarını kullananların gayet iyi bildiği gibi, interneti olmayan bir bilgisayara program kurmak, &#8220;bağımlılık cehennemi&#8221; denen şeyden ötürü oldukça belalı bir iştir. İşte Odun adlı program bu meselenin en azından bir kısmını ortadan kaldırmak amacıyla üretilmiş bir yazılım.</p>
<p>Özel olarak Pardus kullanıcılarını hedefleyen bu uygulama, interneti olmayan Pardus makinaların çevrimdışı güncellenmesine yardımcı oluyor.</p>
<p>Bu noktada,  &#8220;Odun&#8221; adı nereden geliyor diye sorduğunuzu duyar gibiyim. &#8220;Odun&#8221; kelimesinin açılımı &#8220;<strong>O</strong>ffline <strong>D</strong>ownloader <strong>U</strong>pdater i<strong>N</strong>staller&#8221;. Yani &#8220;Çevrimdışı İndirme, Güncelleme ve Kurulum&#8221;.</p>
<p>Python programlama dili ve PyQT4 kullanılarak yazılan Odun; Aşkın Yollu, Erdem Artan ve Metehan Özbek imzasını taşıyor. Geliştirilmesi hala devam eden bu yazılımı her zaman olduğu gibi <a href="http://istihza.com/programlar/icindekiler_programlar.html">http://istihza.com/programlar/icindekiler_programlar.html</a> adresinden indirebilirsiniz.</p>
<p>Python Programları bölümümüzün ikinci konuğu ise Metehan Özbek tarafından yazılmış, &#8220;Parçala&#8221; adlı bir program. Python programlama dili ve PyQT4 kullanılarak hazırlanan bu program işlev olarak Hj-Split adlı yazılıma benziyor. Parçala&#8217;nın görevi büyük boyutlu dosyalarınızı parçalayıp birleştirmektir. Parçala, aynı zamanda hash değeri de üretebiliyor.</p>
<p>Bu programı da <a href="http://istihza.com/programlar/icindekiler_programlar.html">http://istihza.com/programlar/icindekiler_programlar.html</a> adresinden indirebilirsiniz.</p>
<p>Bu programları yazan ve bize ulaştıran Aşkın Yollu, Erdem Artan ve Metehan Özbek&#8217;e teşekkür ederim.</p>
<p>İyi çalışmalar,</p>
<p>istihza</p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/odun-ve-parcala.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invent with Python</title>
		<link>http://www.istihza.com/blog/invent-with-python.html/</link>
		<comments>http://www.istihza.com/blog/invent-with-python.html/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 06:46:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Al Sweigert]]></category>
		<category><![CDATA[game programming]]></category>
		<category><![CDATA[invent with python]]></category>
		<category><![CDATA[Kadir Can Çetin]]></category>
		<category><![CDATA[oyun programlama]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1239</guid>
		<description><![CDATA[Dün istihza.com okurlarından Kadir Can Çetin bana Python ve PyGame ile ilgili bir kitaptan söz etti. Kitabın adı &#8220;Invent Your Own Computer Games With Python&#8221; [Python'la Kendi Bilgisayar Oyunlarınızı Tasarlayın]. Bu kitap Al Sweigert adlı bir Python programcısı tarafından, 10-12 yaş arası çocukların anlayabileceği bir dil kullanılarak yazılmış. Ancak yazar bu kitabın her yaştan insana [...]]]></description>
			<content:encoded><![CDATA[<p>Dün istihza.com okurlarından Kadir Can Çetin bana Python ve PyGame ile ilgili bir kitaptan söz etti. Kitabın adı &#8220;<strong>Invent Your Own Computer Games With Python</strong>&#8221; [Python'la Kendi Bilgisayar Oyunlarınızı Tasarlayın].</p>
<p>Bu kitap <strong>Al Sweigert</strong> adlı bir Python programcısı tarafından, 10-12 yaş arası çocukların anlayabileceği bir dil kullanılarak yazılmış. Ancak yazar bu kitabın her yaştan insana hitap ettiğini de vurguluyor. Yazarın web sitesine <a href="http://inventwithpython.com/">http://inventwithpython.com/</a> adresinden ulaşabilirsiniz.</p>
<p>Kitaba erişmenin üç yolu var:</p>
<p>1. Kitabı <a href="http://www.amazon.com/gp/product/0982106017/ref=s9_simh_gw_p14_i1?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-2&amp;pf_rd_r=1STKKHXB4BS893A38AKE&amp;pf_rd_t=101&amp;pf_rd_p=470938631&amp;pf_rd_i=507846">amazon.com</a>&#8216;dan satın alabilirsiniz. Kitabın fiyatı 25 dolar.</p>
<p>2. Kitabı ücretsiz olarak <a href="http://inventwithpython.com/chapters/">internetten </a>okuyabilirsiniz.</p>
<p>3. Kitabı PDF biçiminde bilgisayarınıza <a href="http://inventwithpython.com/IYOCGwP_book1.pdf">indirebilirsiniz</a>.</p>
<p>Kitabın içeriği ise şu konulardan oluşuyor:</p>
<blockquote><p>Chapter 1 &#8211; Installing Python<br />
Chapter 2 &#8211; The Interactive Shell<br />
Chapter 3 &#8211; Strings<br />
Chapter 4 &#8211; Guess the Number<br />
Chapter 5 &#8211; Jokes<br />
Chapter 6 &#8211; Dragon Realm<br />
Chapter 7 &#8211; Using the Debugger<br />
Chapter 8 &#8211; Flow Charts<br />
Chapter 9 &#8211; Hangman<br />
Chapter 10 &#8211; Tic Tac Toe<br />
Chapter 11 &#8211; Bagels<br />
Chapter 12 &#8211; Cartesian Coordinates<br />
Chapter 13 &#8211; Sonar<br />
Chapter 14 &#8211; Caesar Cipher<br />
Chapter 15 &#8211; Reversi<br />
Chapter 16 &#8211; AI Simulation<br />
Chapter 17 &#8211; Graphics and Animation<br />
Chapter 18 &#8211; Collision Detection and Input<br />
Chapter 19 &#8211; Sound and Images<br />
Chapter 20 &#8211; Dodger<br />
Appendix A &#8211; Differences between Python 2 and 3<br />
Appendix B &#8211; Statements, Functions, and Methods Reference<br />
Appendix C &#8211; Running Python Programs Without Python Installed<br />
Appendix D &#8211; Common Error Messages in Python</p></blockquote>
<p>Kitabı yazan Al Sweigert&#8217;e ve beni kitaptan haberdar eden Kadir Can Çetin&#8217;e teşekkür ediyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/invent-with-python.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Şifreli Metin</title>
		<link>http://www.istihza.com/blog/sifreli-metin.html/</link>
		<comments>http://www.istihza.com/blog/sifreli-metin.html/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 21:19:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[İngilizce]]></category>
		<category><![CDATA[şifreli metin]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1227</guid>
		<description><![CDATA[http://www.istihza.com/blog/this-modulu-icindeki-sifreli-metin.html/ adresindeki yazıda Python&#8217;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&#8217;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&#8230; Bir de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.istihza.com/blog/this-modulu-icindeki-sifreli-metin.html/">http://www.istihza.com/blog/this-modulu-icindeki-sifreli-metin.html/</a> adresindeki yazıda Python&#8217;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.</p>
<p>Sizce o şifreli metni, kesinlikle Python&#8217;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&#8230; Bir de metindeki &#8220;Gur&#8221; kelimesinin &#8220;The&#8221; anlamına geldiğini biliyoruz. Böyle bir durumda acaba bu metin nasıl çözülür?</p>
<p>Metnimiz şu:</p>
<blockquote><p>
&#8220;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&#8217;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&#8211; naq cersrenoyl bayl bar &#8211;boivbhf jnl gb qb vg. Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh&#8217;er Qhgpu. Abj vf orggre guna arire. Nygubhtu arire vf bsgra orggre guna *evtug* abj. Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg&#8217;f n onq vqrn. Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn. Anzrfcnprf ner bar ubaxvat terng vqrn &#8212; yrg&#8217;f qb zber bs gubfr!&#8221;</p>
</blockquote>
<p>Bulmaca meraklılarına hodri meydan!&#8230; <img src='http://www.istihza.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/sifreli-metin.html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>this Modülü İçindeki Şifreli Metin</title>
		<link>http://www.istihza.com/blog/this-modulu-icindeki-sifreli-metin.html/</link>
		<comments>http://www.istihza.com/blog/this-modulu-icindeki-sifreli-metin.html/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:22:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[get metodu]]></category>
		<category><![CDATA[şifreli metin]]></category>
		<category><![CDATA[sürpriz yumurta]]></category>
		<category><![CDATA[this modülü]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1197</guid>
		<description><![CDATA[Python&#8217;daki sürpriz yumurtalar içinde en bilineni herhalde şudur: &#62;&#62;&#62; import this Bu komutu verdiğinizde, Python&#8217;un felsefesini anlatan bir metin görürsünüz: The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better [...]]]></description>
			<content:encoded><![CDATA[<p>Python&#8217;daki sürpriz yumurtalar içinde en bilineni herhalde şudur:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">import</span> this</pre></div></div>

<p>Bu komutu verdiğinizde, Python&#8217;un felsefesini anlatan bir metin görürsünüz:</p>
<blockquote>
<p>The Zen of Python, by Tim Peters</p>
<p>Beautiful is better than ugly.<br />
Explicit is better than implicit.<br />
Simple is better than complex.<br />
Complex is better than complicated.<br />
Flat is better than nested.<br />
Sparse is better than dense.<br />
Readability counts.<br />
Special cases aren&#8217;t special enough to break the rules.<br />
Although practicality beats purity.<br />
Errors should never pass silently.<br />
Unless explicitly silenced.<br />
In the face of ambiguity, refuse the temptation to guess.<br />
There should be one&#8211; and preferably only one &#8211;obvious way to do it.<br />
Although that way may not be obvious at first unless you&#8217;re Dutch.<br />
Now is better than never.<br />
Although never is often better than *right* now.<br />
If the implementation is hard to explain, it&#8217;s a bad idea.<br />
If the implementation is easy to explain, it may be a good idea.<br />
Namespaces are one honking great idea &#8212; let&#8217;s do more of those!</p></blockquote>
<p>Ancak &#8220;this&#8221; modülü yukarıdaki metinden ibaret değildir. Bu modülün başka özellikleri de bulunur. Peki nedir bu özellikler?</p>
<p>Yukarıdaki çıktıyı veren &#8220;this&#8221; adlı modülün içeriğine baktığımızda şöyle bir şeyle karşılaşıyoruz:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #008000;">dir</span><span style="color: black;">&#40;</span>this<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: black;">&#91;</span><span style="color: #483d8b;">'__builtins__'</span>, <span style="color: #483d8b;">'__doc__'</span>, <span style="color: #483d8b;">'__file__'</span>, <span style="color: #483d8b;">'__name__'</span>,
 <span style="color: #483d8b;">'__package__'</span>, <span style="color: #483d8b;">'c'</span>, <span style="color: #483d8b;">'d'</span>, <span style="color: #483d8b;">'i'</span>, <span style="color: #483d8b;">'s'</span><span style="color: black;">&#93;</span></pre></div></div>

<p>Demek ki &#8220;this&#8221; modülünün içinde &#8220;c&#8221;, &#8220;d&#8221;, &#8220;i&#8221; ve &#8220;s&#8221; adlı dört adet nitelik var. Ben bu yazıda sizin dikkatinizi &#8220;s&#8221; ve &#8220;d&#8221; niteliklerine çekmek istiyorum.</p>
<p>Önce &#8220;this&#8221; modülünün &#8220;s&#8221; niteliğini kontrol edelim:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> this.<span style="color: black;">s</span>
&nbsp;
<span style="color: #483d8b;">&quot;Gur Mra bs Clguba, ol Gvz Crgref<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Ornhgvshy vf 
orggre guna htyl.<span style="color: #000099; font-weight: bold;">\n</span>Rkcyvpvg vf orggre guna 
vzcyvpvg.<span style="color: #000099; font-weight: bold;">\n</span>Fvzcyr vf orggre guna pbzcyrk.<span style="color: #000099; font-weight: bold;">\n</span>Pbzcyrk 
vf orggre guna pbzcyvpngrq.<span style="color: #000099; font-weight: bold;">\n</span>Syng vf orggre guna 
arfgrq.<span style="color: #000099; font-weight: bold;">\n</span>Fcnefr vf orggre guna qrafr.<span style="color: #000099; font-weight: bold;">\n</span>Ernqnovyvgl 
pbhagf.<span style="color: #000099; font-weight: bold;">\n</span>Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx 
gur ehyrf.<span style="color: #000099; font-weight: bold;">\n</span>Nygubhtu cenpgvpnyvgl orngf chevgl.
<span style="color: #000099; font-weight: bold;">\n</span>Reebef fubhyq arire cnff fvyragyl.<span style="color: #000099; font-weight: bold;">\n</span>Hayrff rkcyvpvgyl 
fvyraprq.<span style="color: #000099; font-weight: bold;">\n</span>Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba 
gb thrff.<span style="color: #000099; font-weight: bold;">\n</span>Gurer fubhyq or bar-- naq cersrenoyl bayl bar 
--boivbhf jnl gb qb vg.<span style="color: #000099; font-weight: bold;">\n</span>Nygubhtu gung jnl znl abg or boivbhf 
ng svefg hayrff lbh'er Qhgpu.<span style="color: #000099; font-weight: bold;">\n</span>Abj vf orggre guna arire.
<span style="color: #000099; font-weight: bold;">\n</span>Nygubhtu arire vf bsgra orggre guna *evtug* abj.<span style="color: #000099; font-weight: bold;">\n</span>Vs 
gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
<span style="color: #000099; font-weight: bold;">\n</span>Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n 
tbbq vqrn.<span style="color: #000099; font-weight: bold;">\n</span>Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f 
qb zber bs gubfr!&quot;</span></pre></div></div>

<p>Karşımıza anlamsız gibi görünen bir karakter dizisi çıktı&#8230; Aslında bu karmaşık ve anlamsız görünen kelime yumağının, en başta verdiğimiz &#8220;The Zen of Python&#8221; adlı metnin &#8220;şifrelenmiş&#8221; hali olduğunu az çok tahmin edebiliyoruz. Peki bundan nasıl emin olabiliriz? </p>
<p>Herhangi bir adım atmadan önce bir de &#8220;this&#8221; modülünün &#8220;d&#8221; niteliğine bakalım:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> this.<span style="color: black;">d</span>
&nbsp;
<span style="color: black;">&#123;</span><span style="color: #483d8b;">'A'</span>: <span style="color: #483d8b;">'N'</span>, <span style="color: #483d8b;">'C'</span>: <span style="color: #483d8b;">'P'</span>, <span style="color: #483d8b;">'B'</span>: <span style="color: #483d8b;">'O'</span>, <span style="color: #483d8b;">'E'</span>: <span style="color: #483d8b;">'R'</span>, <span style="color: #483d8b;">'D'</span>: <span style="color: #483d8b;">'Q'</span>, <span style="color: #483d8b;">'G'</span>: <span style="color: #483d8b;">'T'</span>,
 <span style="color: #483d8b;">'F'</span>: <span style="color: #483d8b;">'S'</span>, <span style="color: #483d8b;">'I'</span>: <span style="color: #483d8b;">'V'</span>, <span style="color: #483d8b;">'H'</span>: <span style="color: #483d8b;">'U'</span>, <span style="color: #483d8b;">'K'</span>: <span style="color: #483d8b;">'X'</span>, <span style="color: #483d8b;">'J'</span>: <span style="color: #483d8b;">'W'</span>, <span style="color: #483d8b;">'M'</span>: <span style="color: #483d8b;">'Z'</span>, 
 <span style="color: #483d8b;">'L'</span>: <span style="color: #483d8b;">'Y'</span>, <span style="color: #483d8b;">'O'</span>: <span style="color: #483d8b;">'B'</span>, <span style="color: #483d8b;">'N'</span>: <span style="color: #483d8b;">'A'</span>, <span style="color: #483d8b;">'Q'</span>: <span style="color: #483d8b;">'D'</span>, <span style="color: #483d8b;">'P'</span>: <span style="color: #483d8b;">'C'</span>, <span style="color: #483d8b;">'S'</span>: <span style="color: #483d8b;">'F'</span>, 
 <span style="color: #483d8b;">'R'</span>: <span style="color: #483d8b;">'E'</span>, <span style="color: #483d8b;">'U'</span>: <span style="color: #483d8b;">'H'</span>, <span style="color: #483d8b;">'T'</span>: <span style="color: #483d8b;">'G'</span>, <span style="color: #483d8b;">'W'</span>: <span style="color: #483d8b;">'J'</span>, <span style="color: #483d8b;">'V'</span>: <span style="color: #483d8b;">'I'</span>, <span style="color: #483d8b;">'Y'</span>: <span style="color: #483d8b;">'L'</span>,
 <span style="color: #483d8b;">'X'</span>: <span style="color: #483d8b;">'K'</span>, <span style="color: #483d8b;">'Z'</span>: <span style="color: #483d8b;">'M'</span>, <span style="color: #483d8b;">'a'</span>: <span style="color: #483d8b;">'n'</span>, <span style="color: #483d8b;">'c'</span>: <span style="color: #483d8b;">'p'</span>, <span style="color: #483d8b;">'b'</span>: <span style="color: #483d8b;">'o'</span>, <span style="color: #483d8b;">'e'</span>: <span style="color: #483d8b;">'r'</span>,
 <span style="color: #483d8b;">'d'</span>: <span style="color: #483d8b;">'q'</span>, <span style="color: #483d8b;">'g'</span>: <span style="color: #483d8b;">'t'</span>, <span style="color: #483d8b;">'f'</span>: <span style="color: #483d8b;">'s'</span>, <span style="color: #483d8b;">'i'</span>: <span style="color: #483d8b;">'v'</span>, <span style="color: #483d8b;">'h'</span>: <span style="color: #483d8b;">'u'</span>, <span style="color: #483d8b;">'k'</span>: <span style="color: #483d8b;">'x'</span>,
 <span style="color: #483d8b;">'j'</span>: <span style="color: #483d8b;">'w'</span>, <span style="color: #483d8b;">'m'</span>: <span style="color: #483d8b;">'z'</span>, <span style="color: #483d8b;">'l'</span>: <span style="color: #483d8b;">'y'</span>, <span style="color: #483d8b;">'o'</span>: <span style="color: #483d8b;">'b'</span>, <span style="color: #483d8b;">'n'</span>: <span style="color: #483d8b;">'a'</span>, <span style="color: #483d8b;">'q'</span>: <span style="color: #483d8b;">'d'</span>,
 <span style="color: #483d8b;">'p'</span>: <span style="color: #483d8b;">'c'</span>, <span style="color: #483d8b;">'s'</span>: <span style="color: #483d8b;">'f'</span>, <span style="color: #483d8b;">'r'</span>: <span style="color: #483d8b;">'e'</span>, <span style="color: #483d8b;">'u'</span>: <span style="color: #483d8b;">'h'</span>, <span style="color: #483d8b;">'t'</span>: <span style="color: #483d8b;">'g'</span>, <span style="color: #483d8b;">'w'</span>: <span style="color: #483d8b;">'j'</span>,
 <span style="color: #483d8b;">'v'</span>: <span style="color: #483d8b;">'i'</span>, <span style="color: #483d8b;">'y'</span>: <span style="color: #483d8b;">'l'</span>, <span style="color: #483d8b;">'x'</span>: <span style="color: #483d8b;">'k'</span>, <span style="color: #483d8b;">'z'</span>: <span style="color: #483d8b;">'m'</span><span style="color: black;">&#125;</span></pre></div></div>

<p>&#8220;d&#8221; niteliği ise, anahtarları ve değerleri alfabetik karakterler olan bir sözlük barındırıyor. Gördüğünüz gibi bu sözlükte belli harfler belli harflerle eşleştirilmiş. </p>
<p>Bu alfabetik sözlüğün de yukarıdaki şifreli metinle bir bağlantısı olduğunu kestirmek çok zor değil. Hemen bir kaç deneme yapalım:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> this.<span style="color: black;">d</span><span style="color: black;">&#91;</span>this.<span style="color: black;">s</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #483d8b;">'T'</span></pre></div></div>

<p>Burada this.s adlı karmaşık karakter dizisinin ilk harfini this.d adlı sözlüğe anahtar olarak verdik. this.s karakter dizisinin ilk harfi &#8220;G&#8221;. Dolayısıyla şöyle bir şey yapmış olduk:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> this.<span style="color: black;">d</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;G&quot;</span><span style="color: black;">&#93;</span></pre></div></div>

<p>Tabii this.d sözlüğünde &#8220;G&#8221; harfinin karşılığı &#8220;T&#8221; harfi olduğu için çıktıda &#8220;T&#8221; harfini aldık. O halde şöyle bir şey yazabiliriz:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> this.<span style="color: black;">s</span>:
...     <span style="color: #ff7700;font-weight:bold;">print</span> this.<span style="color: black;">d</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span></pre></div></div>

<p>Buradan şöyle bir çıktı alırız:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">T
h
e
Traceback <span style="color: black;">&#40;</span>most recent call last<span style="color: black;">&#41;</span>:
  File <span style="color: #483d8b;">&quot;&lt;stdin&gt;&quot;</span>, line <span style="color: #ff4500;">2</span>, <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #66cc66;">&lt;</span>module<span style="color: #66cc66;">&gt;</span>
<span style="color: #008000;">KeyError</span>: <span style="color: #483d8b;">' '</span></pre></div></div>

<p>Bu çıktı bize iki önemli bilgi verdi:</p>
<p>Birincisi, şifreli metnin ilk kelimesini elde ettik. Buna göre ilk kelime &#8220;The&#8221;. Yani doğru yoldayız!</p>
<p>İkincisi, sözlükte sadece alfabe harfleri olduğu için, for döngüsü bir boşluk karakteriyle karşılaştığında doğal olarak KeyError hatası veriyor. Yani kelimeleri birbirinden ayıran boşluk karakterlerinin ve hatta satırları bitiren &#8220;yeni satır&#8221; (newline &#8212; \n) karakterlerinin icabına bakmamız gerekiyor. Bunun için şöyle bir şey yazılabilir:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> a = <span style="color: #483d8b;">&quot;&quot;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> this.<span style="color: black;">s</span>:
...     <span style="color: #ff7700;font-weight:bold;">try</span>:
...         <span style="color: black;">a</span> += this.<span style="color: black;">d</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
...     <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">KeyError</span> <span style="color: #ff7700;font-weight:bold;">as</span> k:
...         <span style="color: black;">a</span> += <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>k<span style="color: black;">&#41;</span>
...
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> a</pre></div></div>

<p>Burada öncelikle a adlı boş bir karakter dizisi tanımladık. Biraz sonra bir for döngüsü ile alacağımız bütün harfleri bu a adlı karakter dizisi içinde toplayacağız.</p>
<p>Sonraki satırda for döngümüzü yazıyoruz. Burada yaptığımız şey şu: this.s adlı karakter dizisi içindeki bütün karakterleri tek tek this.d sözlüğü içinde sorgulayıp, hepsini a adlı karakter dizisine atıyoruz. Ancak this.s adlı karakter dizisi içinde, this.d adlı sözlükte herhangi bir karşılığı olmayan boşluk ve yeni satır karakterleri de olduğu için, KeyError hatası alma ihtimaline karşı, hata veren bütün karakterleri de tek tek a adlı karakter dizisine gönderiyoruz. Böylece şifreli karakter dizisi içindeki bütün boşlukları ve satır başlarını muhafaza etmiş oluyoruz. Eğer bu boşluk ve satır başlarını a karakter dizisine göndermek yerine mesela pass gibi bir deyimle görmezden gelirsek şifreli metindeki boşlukları ve satır başlarını kaybetmiş oluruz. O zaman a adlı karakter dizisindeki bütün harfler çıktıda birbirine bitişik görüneceği için yine anlaşılması zor bir metin ortaya çıkmış olur&#8230;</p>
<p>Son olarak da a adlı karakter dizisini ekrana yazdırıyoruz&#8230;</p>
<p>Bakalım bu kodlar bize ne çıktı veriyor:</p>
<blockquote><p>
The&#8217; &#8216;Zen&#8217; &#8216;of&#8217; &#8216;Python&#8217;,&#8221; &#8216;by&#8217; &#8216;Tim&#8217; &#8216;Peters&#8217;\n&#8221;<br />
\n&#8217;Beautiful&#8217; &#8216;is&#8217; &#8216;better&#8217; &#8216;than&#8217; &#8216;ugly&#8217;.&#8221;\n&#8217;Explicit&#8217;<br />
&#8216;is&#8217; &#8216;better&#8217; &#8216;than&#8217; &#8216;implicit&#8217;.&#8221;\n&#8217;Simple&#8217; &#8216;is&#8217; &#8216;better&#8217;<br />
&#8216;than&#8217; &#8216;complex&#8217;.&#8221;\n&#8217;Complex&#8217; &#8216;is&#8217; &#8216;better&#8217; &#8216;than&#8217;<br />
&#8216;complicated&#8217;.&#8221;\n&#8217;Flat&#8217; &#8216;is&#8217; &#8216;better&#8217; &#8216;than&#8217; &#8216;nested&#8217;.<br />
&#8221;\n&#8217;Sparse&#8217; &#8216;is&#8217; &#8216;better&#8217; &#8216;than&#8217; &#8216;dense&#8217;.&#8221;\n&#8217;Readability&#8217;<br />
&#8216;counts&#8217;.&#8221;\n&#8217;Special&#8217; &#8216;cases&#8217; &#8216;aren&#8221;&#8216;&#8221;t&#8217; &#8216;special&#8217; &#8216;enough&#8217;<br />
&#8216;to&#8217; &#8216;break&#8217; &#8216;the&#8217; &#8216;rules&#8217;.&#8221;\n&#8217;Although&#8217; &#8216;practicality&#8217; &#8216;beats&#8217; &#8216;purity&#8217;.&#8221;\n&#8217;Errors&#8217; &#8216;should&#8217; &#8216;never&#8217; &#8216;pass&#8217; &#8216;silently&#8217;.<br />
&#8221;\n&#8217;Unless&#8217; &#8216;explicitly&#8217; &#8216;silenced&#8217;.&#8221;\n&#8217;In&#8217; &#8216;the&#8217; &#8216;face&#8217; &#8216;of&#8217;<br />
&#8216;ambiguity&#8217;,&#8221; &#8216;refuse&#8217; &#8216;the&#8217; &#8216;temptation&#8217; &#8216;to&#8217; &#8216;guess&#8217;.<br />
&#8221;\n&#8217;There&#8217; &#8216;should&#8217; &#8216;be&#8217; &#8216;one&#8217;-&#8221;-&#8221; &#8216;and&#8217; &#8216;preferably&#8217;<br />
&#8216;only&#8217; &#8216;one&#8217; &#8221;-&#8221;-&#8217;obvious&#8217; &#8216;way&#8217; &#8216;to&#8217; &#8216;do&#8217; &#8216;it&#8217;.&#8221;\n&#8217;Although&#8217;<br />
&#8216;that&#8217; &#8216;way&#8217; &#8216;may&#8217; &#8216;not&#8217; &#8216;be&#8217; &#8216;obvious&#8217; &#8216;at&#8217; &#8216;first&#8217; &#8216;unless&#8217;<br />
&#8216;you&#8221;&#8216;&#8221;re&#8217; &#8216;Dutch&#8217;.&#8221;\n&#8217;Now&#8217; &#8216;is&#8217; &#8216;better&#8217; &#8216;than&#8217; &#8216;never&#8217;.<br />
&#8221;\n&#8217;Although&#8217; &#8216;never&#8217; &#8216;is&#8217; &#8216;often&#8217; &#8216;better&#8217; &#8216;than&#8217; &#8221;*&#8217;right&#8217;*&#8221;<br />
&#8216;now&#8217;.&#8221;\n&#8217;If&#8217; &#8216;the&#8217; &#8216;implementation&#8217; &#8216;is&#8217; &#8216;hard&#8217; &#8216;to&#8217; &#8216;explain&#8217;,<br />
&#8221; &#8216;it&#8221;&#8216;&#8221;s&#8217; &#8216;a&#8217; &#8216;bad&#8217; &#8216;idea&#8217;.&#8221;\n&#8217;If&#8217; &#8216;the&#8217; &#8216;implementation&#8217; &#8216;is&#8217;<br />
&#8216;easy&#8217; &#8216;to&#8217; &#8216;explain&#8217;,&#8221; &#8216;it&#8217; &#8216;may&#8217; &#8216;be&#8217; &#8216;a&#8217; &#8216;good&#8217; &#8216;idea&#8217;.<br />
&#8221;\n&#8217;Namespaces&#8217; &#8216;are&#8217; &#8216;one&#8217; &#8216;honking&#8217; &#8216;great&#8217; &#8216;idea&#8217;<br />
&#8221;-&#8221;-&#8221; &#8216;let&#8221;&#8216;&#8221;s&#8217; &#8216;do&#8217; &#8216;more&#8217; &#8216;of&#8217; &#8216;those&#8217;!&#8217;
</p></blockquote>
<p>Bingo! Böylece şifreli metni çözmüş olduk&#8230; </p>
<p>Şifreli metni çözmemizi sağlayan kodları aslında şu şekilde de yazabilirdik:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> a = <span style="color: #483d8b;">&quot;&quot;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> this.<span style="color: black;">s</span>:
...     <span style="color: black;">a</span> += this.<span style="color: black;">d</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span>i, i<span style="color: black;">&#41;</span>
... 
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> a</pre></div></div>

<p>Gördüğünüz gibi, bu defaki çıktımız çok daha zarif&#8230;</p>
<p>Burada Python sözlüklerinin get() metodunu kullandık. Bu sayede try&#8230;except bloklarıyla uğraşmamıza da gerek kalmadı. get() metodunun ikinci argümanı sayesinde, sözlükte bulunamadığı için hata veren boşluk ve yeni satır karakterlerinin doğrudan a değişkenine eklenmesini sağladık. Bu get() metodunun nasıl çalıştığını daha iyi anlamak için <a href="http://www.istihza.com/py2/sozluk.html#get-ve-has-key">http://www.istihza.com/py2/sozluk.html#get-ve-has-key</a> adresini ziyaret edebilirsiniz.</p>
<p>İyi çalışmalar,</p>
<p></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/this-modulu-icindeki-sifreli-metin.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gish Oyunu</title>
		<link>http://www.istihza.com/blog/gish-oyunu.html/</link>
		<comments>http://www.istihza.com/blog/gish-oyunu.html/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 21:19:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[gish]]></category>
		<category><![CDATA[Hömey]]></category>
		<category><![CDATA[Moğol gırtlak müziği]]></category>
		<category><![CDATA[müzik]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1189</guid>
		<description><![CDATA[Bugün http://www.ozgurlukicin.com/forum/haberler/16523/?page=1#post106779 adresinde bir oyun tanıtımı dikkatimi çekti. Normalde oyun oynamayı seven biri değilimdir. Ama bugünlerde biraz rahatlamaya/gevşemeye/stres atmaya şiddetle ihtiyaç duyduğum için, üstelik bu oyun tanıtımına yapılan &#8220;müzikleri muhteşem&#8221; yorumunu da görünce oyunun kaynak kodlarını sitesinden indirip derlemeye karar verdim. Oyunun müzikleri gerçekten muhteşem. Oyunun müziklerini dinleyebilmek için oyunu derlemenize gerek yok. Kaynak kodların [...]]]></description>
			<content:encoded><![CDATA[<p>Bugün <a href="http://www.ozgurlukicin.com/forum/haberler/16523/?page=1#post106779">http://www.ozgurlukicin.com/forum/haberler/16523/?page=1#post106779</a> adresinde bir oyun tanıtımı dikkatimi çekti. Normalde oyun oynamayı seven biri değilimdir. Ama bugünlerde biraz rahatlamaya/gevşemeye/stres atmaya şiddetle ihtiyaç duyduğum için, üstelik bu oyun tanıtımına yapılan &#8220;müzikleri muhteşem&#8221; yorumunu da görünce oyunun kaynak kodlarını sitesinden indirip derlemeye karar verdim.</p>
<p>Oyunun müzikleri gerçekten muhteşem. Oyunun müziklerini dinleyebilmek için oyunu derlemenize gerek yok. Kaynak kodların içindeki &#8220;music&#8221; adlı dizinin içinde .ogg dosyaları var.</p>
<p>Ama eğer oyunu derlemek isterseniz şu yolu izlemeniz gerekiyor:</p>
<p>1. Öncelikle şu paketleri kurun:</p>
<blockquote><p>cmake</p>
<p>libsdl1.2-dev</p>
<p>libopenal-dev</p>
<p>libvorbis-dev</p></blockquote>
<p>Eğer Ubuntu kullanıyorsanız şu komutla gerekli bütün paketleri kurabilirsiniz:</p>
<div>
<blockquote><p>sudo apt-get install cmake libsdl1.2-dev libopenal-dev libvorbis-dev</p></blockquote>
</div>
<p>2. Daha sonra <a href="http://github.com/blinry/gish"><span style="color: #000000;">http://github.com/blinry/gish</span></a> adresinden &#8220;download source&#8221; bağlantısına tıklayarak kaynak kodları indirin ve indirdiğiniz bu sıkıştırılmış dosyayı açın.</p>
<p>3. &#8220;blinry-gish-b595e01&#8243; adlı dizinin içinde sırasıyla şu komutları verin:</p>
<blockquote><p>mkdir build</p>
<p>cd build</p>
<p>cmake ..</p>
<p>make</p></blockquote>
<p>4. Dizin içinde &#8220;gish&#8221; adlı bir çalıştırılabilir dosya oluşacak.</p>
<p>5. Komut satırında ./gish komutunu vererek oyunu başlatabilirsiniz.</p>
<p>6. Oyunu oynarken ihtiyacınız olan tuşlar &#8220;space&#8221;, &#8220;yön tuşları&#8221;, &#8220;s&#8221; ve &#8220;a&#8221; tuşları.</p>
<p>Gayet keyifli bir oyuna benziyor. Ben biraz oynadım. Ama açıkçası müzikleri daha çok ilgimi çekti&#8230; Dinlemenizi öneririm.</p>
<p>Bu arada giriş müziği Hömey&#8217;e (Moğol gırtlak müziği) benziyor&#8230; Bu işin uzmanları daha iyi bilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/gish-oyunu.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Also Sprach Zarathustra&#8230;</title>
		<link>http://www.istihza.com/blog/also-sprach-zarathustra.html/</link>
		<comments>http://www.istihza.com/blog/also-sprach-zarathustra.html/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 20:09:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Nietzsche]]></category>
		<category><![CDATA[Zarathustra]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1177</guid>
		<description><![CDATA[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, &#8211; nämlich der lachende Löwe mit dem Taubenschwarme. [...]]]></description>
			<content:encoded><![CDATA[<p>Hier sitze ich und warte, alte zerbrochene Tafeln um mich und auch neue halbbeschriebene Tafeln. Wann kommt meine Stunde?</p>
<p>- die Stunde meines Niederganges, Unterganges: denn noch Ein Mal will ich zu den Menschen gehn.</p>
<p>Dess warte ich nun: denn erst müssen mir die Zeichen kommen, dass es <em>meine</em> Stunde sei, &#8211; nämlich der lachende Löwe mit dem Taubenschwarme.</p>
<p>Inzwischen rede ich als Einer, der Zeit hat, zu mir selber. Niemand erzählt mir Neues: so erzähle ich mir mich selber.</p>
<p>*******************</p>
<p>Here do I sit and wait, old broken tables around me and also new half- written tables. When cometh mine hour?</p>
<p>-The hour of my descent, of my down-going: for once more will I go unto men.</p>
<p>For that hour do I now wait: for first must the signs come unto me that it is MINE hour&#8211;namely, the laughing lion with the flock of doves.</p>
<p>Meanwhile do I talk to myself as one who hath time. No one telleth me anything new, so I tell myself mine own story.</p>
<p>*******************</p>
<p>Burada oturmuş bekliyorum. Yanıbaşımda eski, kırık levhalar&#8230; Bir de yeni, yarısı yazılmış levhalar&#8230; Ne zaman gelecek benim saatim?</p>
<p>- Alçalışımın, inişimin saati. Bir kez daha gideceğim insanlara.</p>
<p>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.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/also-sprach-zarathustra.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sphinx 1.0 Yolda&#8230;</title>
		<link>http://www.istihza.com/blog/sphinx-1-0-yolda.html/</link>
		<comments>http://www.istihza.com/blog/sphinx-1-0-yolda.html/#comments</comments>
		<pubDate>Sat, 29 May 2010 18:10:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[istihza.com]]></category>
		<category><![CDATA[çeviri]]></category>
		<category><![CDATA[sphinx]]></category>
		<category><![CDATA[türkçe]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1175</guid>
		<description><![CDATA[istihza.com&#8216;u takip edenlerin artık gayet iyi bildiği gibi, sitedeki HTML ve PDF belgelerini oluşturmak için Sphinx adlı bir yazılımdan yararlanıyorum. Bu yazılımı istihza.com&#8217;daki belgelendirme çalışmaları için kullanmaya ilk karar verdiğimde yazılımın benim amacım açısından en önemli eksikliği Türkçe desteğinin olmamasıydı. Bu yüzden ilk iş olarak Sphinx&#8217;i Türkçe&#8217;ye çevirdim. Böylece istihza.com&#8217;daki HTML belgelerinin arayüzü Türkçe desteğiyle [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.istihza.com">istihza.com</a>&#8216;u takip edenlerin artık gayet iyi bildiği gibi, sitedeki HTML ve PDF belgelerini oluşturmak için <a href="http://sphinx.pocoo.org">Sphinx</a> adlı bir yazılımdan yararlanıyorum.</p>
<p>Bu yazılımı istihza.com&#8217;daki belgelendirme çalışmaları için kullanmaya ilk karar verdiğimde yazılımın benim amacım açısından en önemli eksikliği Türkçe desteğinin olmamasıydı. Bu yüzden ilk iş olarak Sphinx&#8217;i Türkçe&#8217;ye çevirdim. Böylece istihza.com&#8217;daki HTML belgelerinin arayüzü Türkçe desteğiyle okura sunulabilmiş oldu.</p>
<p>Sphinx&#8217;i Türkçe&#8217;ye ilk çevirdiğimde, bu yazılımı istihza.com&#8217;da kullanacağımı düşünerek, sadece kendi amacıma hizmet edecek şekilde Türkçeleştirmiştim. Daha sonra çeviriler üzerinde biraz daha çalışarak, bu çalışmayı Sphinx geliştiricilerine de göndermeye karar verdim.</p>
<p>Sphinx&#8217;in yakın zamanda yayımlanacak olan 1.0 sürümünde Türkçe dil desteği de olacak. Böylece Sphinx&#8217;i Türkçe belgelendirme çalışmalarında kullanmak isteyenler de, Türkçe arayüze sahip HTML belgeleri oluşturabilecek.</p>
<p>Sphinx&#8217;in şu anda beta aşamasında olan 1.0b1 sürümünün en son güncellemeleri de içeren halini indirmek için <a href="http://bitbucket.org/birkenfeld/sphinx/get/tip.gz#egg=Sphinx-dev">şu adresi</a> ziyaret edebilirsiniz. Ama ben size kararlı sürümü beklemenizi tavsiye ederim. Kararlı sürüm yayımlandığında buradan duyuracağım.</p>
<p>Faydalı olması ümidiyle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/sphinx-1-0-yolda.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>istihza.com Twitter&#8217;da!</title>
		<link>http://www.istihza.com/blog/istihza-com-twitterda.html/</link>
		<comments>http://www.istihza.com/blog/istihza-com-twitterda.html/#comments</comments>
		<pubDate>Fri, 14 May 2010 10:27:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[istihza.com]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.istihza.com/blog/?p=1171</guid>
		<description><![CDATA[Bildiğiniz gibi, istihza.com&#8216;a eklenen yeni belgeleri şimdiye kadar hep ana sayfa üzerinden okura duyuruyorduk. Ama artık bu iş için Twitter&#8217;ı kullanacağız. Bundan böyle istihza.com&#8217;daki son değişiklikleri twitter.com/istihza adresinden takip edebilirsiniz.]]></description>
			<content:encoded><![CDATA[<p>Bildiğiniz gibi, <a href="http://www.istihza.com">istihza.com</a>&#8216;a eklenen yeni belgeleri şimdiye kadar hep ana sayfa üzerinden okura duyuruyorduk. Ama artık bu iş için Twitter&#8217;ı kullanacağız. Bundan böyle istihza.com&#8217;daki son değişiklikleri <a href="http://twitter.com/istihza">twitter.com/istihza</a> adresinden takip edebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.istihza.com/blog/istihza-com-twitterda.html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
