<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>tdgunes'in blogu</title>
	
	<link>http://tdgunes.org</link>
	<description>tdgunes@TDG-PARDUS ~ $ play okul!</description>
	<lastBuildDate>Sat, 06 Mar 2010 22:50:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tdgunes" /><feedburner:info uri="tdgunes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>İşte Mutlu Son!</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/oYM35KHjE1M/</link>
		<comments>http://tdgunes.org/2010/03/iste-mutlu-son/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 22:47:15 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Kişisel]]></category>
		<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Kontrolcu]]></category>
		<category><![CDATA[Kontrolcu 2.0]]></category>
		<category><![CDATA[pyqt]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=614</guid>
		<description><![CDATA[
			
				
			
		
Kontrolcu 2.0 ile Mutlu Son!
r207 ile başlayan r333 ile biten, (yani toplam r126) 14 Kasım 2009&#8242;da 2.0 sürümünün çalışmalarına başladığımız Kontrolcu&#8217;nün yeni sürümünü bugün 06.03.2010 tarihinde çıkardık. 2009&#8242;un Mayıs ayında osmank3 (Osman Karagöz) ile tanışmamız ile başladı ve bugünlere kadar geldi. Çıkardığımız alpha-1, beta-1&#8242;den sonra (tabi arada bir sürü revizyonlarda var.) stabil sürümü yayınlamanın vakti [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/11/kontrolcu-2-0-alphayi-yayinladik/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0-alpha&#8217;yı Yayınladık!'>Kontrolcu 2.0-alpha&#8217;yı Yayınladık!</a></li>
<li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2010%2F03%2Fiste-mutlu-son%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2010%2F03%2Fiste-mutlu-son%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><em>Kontrolcu 2.0 ile Mutlu Son!</em></p>
<p>r207 ile başlayan r333 ile biten, (yani toplam r126) 14 Kasım 2009&#8242;da 2.0 sürümünün çalışmalarına başladığımız Kontrolcu&#8217;nün yeni sürümünü bugün 06.03.2010 tarihinde çıkardık. 2009&#8242;un Mayıs ayında <a href="http://osmank3.blogspot.com/">osmank3</a> (Osman Karagöz) ile tanışmamız ile başladı ve bugünlere kadar geldi. Çıkardığımız alpha-1, beta-1&#8242;den sonra (tabi arada bir sürü revizyonlarda var.) stabil sürümü yayınlamanın vakti geldi.</p>
<p>Öncelikle stabil sürüm beta-1&#8242;den çok farklı değil. Görünüş olarak logomuz ve sağ altaki ? işaretini (?) şeklinde yaptık.  Bunun dışında Windows&#8217;da PyQt&#8217;den kaynaklanan komik bir hata vardı ki Windows&#8217;da QListWidget sürükle bırak&#8221;da kara delik oluşturduğundan, güzel bir &#8216;if os.name == nt&#8217; diyerek bu olayı çözmüş olduk.</p>
<p>Bir başka yeniliğimiz ise artık üç büyük platforma yani Windows, Linux ve Mac OS X&#8217;e destek veriyoruz. Hatta çok isterseniz oturup &#8217;setup.py&#8217; üzerinden can sıkıntısı niyetine, üç platformda derleme çalışmalarına başlayabilirsiniz.</p>
<p>Osman Karagöz&#8217;ün wine ile cebelleşmesi sonucunda artık Windows&#8217;da dil desteğinin önü açılmış oldu. (Tabi ben üşengeçlik edip Mac OS X&#8217;de dil desteği için uğraşmadım. ) Şu an için bazı güncellenmeyen dillerimiz dışında desteğimiz hazır.</p>
<p>İngilizce bir kılavuz hazırlandı ama bir sürü hatası var.  Kılavuzu yazan arkadaş ilgilenecektir umarım. <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Unutmadan KDE için çok güzel bir servis menüsünün bulunduğunu söyleyeyim. Sağ tıkladığınızda &#8216;Eylemler&#8217; bölümünde dosya kontrolü yapabilirsiniz.</p>
<p>Son olarak logomuzu yapan Cemalettin Kara&#8217;ya teşekkür ederiz.</p>
<p>Kontrolcu 2.0 ve Mac OS X adlı resim  ile sizleri  baş başa bırakıyorum.</p>
<div id="attachment_615" class="wp-caption aligncenter" style="width: 496px"><a href="http://tdgunes.org/wp-content/uploads/2010/03/Picture-9-1.png"><img class="size-full wp-image-615" title="Kontrolcu Mac OS X" src="http://tdgunes.org/wp-content/uploads/2010/03/Picture-9-1.png" alt="" width="486" height="441" /></a><p class="wp-caption-text">Kontrolcu Mac&#39;de</p></div>
<p style="text-align: center;">


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/11/kontrolcu-2-0-alphayi-yayinladik/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0-alpha&#8217;yı Yayınladık!'>Kontrolcu 2.0-alpha&#8217;yı Yayınladık!</a></li>
<li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/oYM35KHjE1M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2010/03/iste-mutlu-son/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2010/03/iste-mutlu-son/</feedburner:origLink></item>
		<item>
		<title>C++’de Faktöriyel</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/Oh6dTFA7QWw/</link>
		<comments>http://tdgunes.org/2010/02/cde-faktoriyel/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 19:33:50 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Kişisel]]></category>
		<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Basit]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Faktöriyel]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=606</guid>
		<description><![CDATA[
			
				
			
		
Geçen seneki yazımda, QBasic ve Python&#8217;da nasıl faktöriyel hesaplanır güzelce anlatmışım gibi görünüyor. Bu seferde C++&#8217;de Faktöriyel nasıl olur bir deneme yaptım(Biraz kitaptan yardım aldım tabi   ). Çok da güzel oldu.  For döngüsü ile faktöriyel hesaplamasını basitçe yapıyor.

#include &#60;iostream&#62;
&#160;
int main &#40;int argc, char * const argv&#91;&#93;&#41; &#123;
       [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2010/01/c-baslamak/' rel='bookmark' title='Permanent Link: C++ Başlamak!'>C++ Başlamak!</a></li>
<li><a href='http://tdgunes.org/2009/01/pardus-icin-bir-mini-program-daha/' rel='bookmark' title='Permanent Link: Pardus için Bir Mini Program Daha!'>Pardus için Bir Mini Program Daha!</a></li>
<li><a href='http://tdgunes.org/2009/09/pyguguk-zamandan-kopmayin/' rel='bookmark' title='Permanent Link: PyGuguk &#8211; Zamandan Kopmayın! :)'>PyGuguk &#8211; Zamandan Kopmayın! :)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2010%2F02%2Fcde-faktoriyel%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2010%2F02%2Fcde-faktoriyel%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Geçen seneki <a href="http://tdgunes.org/2009/01/pardus-icin-bir-mini-program-daha/#comments">yazımda</a>, QBasic ve Python&#8217;da nasıl faktöriyel hesaplanır güzelce anlatmışım gibi görünüyor. Bu seferde C++&#8217;de Faktöriyel nasıl olur bir deneme yaptım(Biraz kitaptan yardım aldım tabi <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). Çok da güzel oldu.  For döngüsü ile faktöriyel hesaplamasını basitçe yapıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span> <span style="color: #0000ff;">const</span> argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> endit<span style="color: #008080;">;</span>	
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Enter a number: &quot;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> endit<span style="color: #008080;">;</span>
	endit<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">double</span> factorials<span style="color: #008000;">&#91;</span>endit<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	factorials<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> factorials<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color:#800080;">1.0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> endit<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		factorials<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i <span style="color: #000040;">*</span> factorials<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span> endit<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&lt;</span> endit<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> i <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;! = &quot;</span> <span style="color: #000080;">&lt;&lt;</span> factorials<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Bu arada iki döngü olmasının sebebi, diğer döngüden basit bir düzenleme ile bir sınır verip o sayıya kadar faktöriyel çıkartabilirsiniz.</p>
<p>Python&#8217;da ise şöyle yapmışım,</p>
<p><img class="aligncenter" src="http://tdgunes.org/wp-content/uploads/2009/01/ff.png" alt="" width="644" height="391" /></p>
<p>QBasic&#8217;de ise,</p>
<p><img class="aligncenter size-full wp-image-259" title="faktoriyel" src="http://tdgunes.org/wp-content/uploads/2008/12/faktoriyel.png" alt="" /></p>
<p>Öğrenmeye devam&#8230;</p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2010/01/c-baslamak/' rel='bookmark' title='Permanent Link: C++ Başlamak!'>C++ Başlamak!</a></li>
<li><a href='http://tdgunes.org/2009/01/pardus-icin-bir-mini-program-daha/' rel='bookmark' title='Permanent Link: Pardus için Bir Mini Program Daha!'>Pardus için Bir Mini Program Daha!</a></li>
<li><a href='http://tdgunes.org/2009/09/pyguguk-zamandan-kopmayin/' rel='bookmark' title='Permanent Link: PyGuguk &#8211; Zamandan Kopmayın! :)'>PyGuguk &#8211; Zamandan Kopmayın! :)</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/Oh6dTFA7QWw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2010/02/cde-faktoriyel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2010/02/cde-faktoriyel/</feedburner:origLink></item>
		<item>
		<title>Python’da Glob ile Dosya Yakalamak</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/0nVNdO70nOI/</link>
		<comments>http://tdgunes.org/2010/01/pythonda-glob-ile-dosya-yakalamak/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 20:13:58 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programcılık]]></category>
		<category><![CDATA[Çözümler]]></category>
		<category><![CDATA[glob]]></category>
		<category><![CDATA[kütüphane]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=603</guid>
		<description><![CDATA[
			
				
			
		
Şu günlerde bazı açık kaynak projelerin kurulum dökümanlarına ve başlangıç betiklerine bakarken karşıma &#8216;glob&#8217; isimli bir modül geldi. Meğerse ne şahane bir şeymiş, haberim yok. Efendim glob ile istediğiniz dosyaları uzantılarına göre dosya yakayalabiliyorsunuz. Nasıl mı ? Şöyle:

import glob
pdfdosya = glob.glob&#40;'/home/tdgunes/*.pdf'&#41;

ile pdf dosyalarınızı bulabilirsiniz. Eğer betiği çalıştırdığınız noktadaki dosyaları bulacaksanız yapmanız gereken

import glob, os
pdfdosya = [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/' rel='bookmark' title='Permanent Link: Python ile Konsoldan Tıklanan Tuşları Yakalamak!'>Python ile Konsoldan Tıklanan Tuşları Yakalamak!</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
<li><a href='http://tdgunes.org/2009/08/python-ile-mysql/' rel='bookmark' title='Permanent Link: Python ile MySQL!'>Python ile MySQL!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2010%2F01%2Fpythonda-glob-ile-dosya-yakalamak%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2010%2F01%2Fpythonda-glob-ile-dosya-yakalamak%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Şu günlerde bazı açık kaynak projelerin kurulum dökümanlarına ve başlangıç betiklerine bakarken karşıma &#8216;glob&#8217; isimli bir modül geldi. Meğerse ne şahane bir şeymiş, haberim yok. Efendim glob ile istediğiniz dosyaları uzantılarına göre dosya yakayalabiliyorsunuz. Nasıl mı ? Şöyle:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">glob</span>
pdfdosya = <span style="color: #dc143c;">glob</span>.<span style="color: #dc143c;">glob</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/home/tdgunes/*.pdf'</span><span style="color: black;">&#41;</span></pre></div></div>

<p>ile pdf dosyalarınızı bulabilirsiniz. Eğer betiği çalıştırdığınız noktadaki dosyaları bulacaksanız yapmanız gereken</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">glob</span>, <span style="color: #dc143c;">os</span>
pdfdosya = <span style="color: #dc143c;">glob</span>.<span style="color: #dc143c;">glob</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">getcwd</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> + <span style="color: #483d8b;">'/*.pdf'</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Kurulum betiklerinde genellikle .ui, .qrc gibi dosyaların derlenmesinden önce dosyaların bulunması için kullanılıyormuş. İsterseniz güzel bir betikle tüm diskteki .pdf dosyalarını da bulabilirsiniz.</p>
<p>Python ile dosya bulmakta böylece kolay oldu.</p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/' rel='bookmark' title='Permanent Link: Python ile Konsoldan Tıklanan Tuşları Yakalamak!'>Python ile Konsoldan Tıklanan Tuşları Yakalamak!</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
<li><a href='http://tdgunes.org/2009/08/python-ile-mysql/' rel='bookmark' title='Permanent Link: Python ile MySQL!'>Python ile MySQL!</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/0nVNdO70nOI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2010/01/pythonda-glob-ile-dosya-yakalamak/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2010/01/pythonda-glob-ile-dosya-yakalamak/</feedburner:origLink></item>
		<item>
		<title>C++ Başlamak!</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/RFsHgsy5jPo/</link>
		<comments>http://tdgunes.org/2010/01/c-baslamak/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 22:33:44 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programcılık]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[pardus programlama]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=594</guid>
		<description><![CDATA[
			
				
			
		
Python&#8217;dan sonra bana gücünü gösterebilecek, yapacağım zorlu işleri hızlıca yapabilecek, fakat bir o kadar da karmaşık olan bir dile başlamanın vakti benim için geldi. İlk kafanızı karıştırabilecek soru C++ nedir ? Bence C++, C&#8217;nin daha basitleştirilmiş bir sürümü diyebiliriz. Birçok şeyi daha kolay yapabilmeniz için tasarlanmış.  Tabi beni üzen bir başka konu ise platform bağımsızlığının [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/02/mucize-sayilar/' rel='bookmark' title='Permanent Link: Mucize Sayılar'>Mucize Sayılar</a></li>
<li><a href='http://tdgunes.org/2010/02/cde-faktoriyel/' rel='bookmark' title='Permanent Link: C++&#8217;de Faktöriyel'>C++&#8217;de Faktöriyel</a></li>
<li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2010%2F01%2Fc-baslamak%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2010%2F01%2Fc-baslamak%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Python&#8217;dan sonra bana gücünü gösterebilecek, yapacağım zorlu işleri hızlıca yapabilecek, fakat bir o kadar da karmaşık olan bir dile başlamanın vakti benim için geldi. İlk kafanızı karıştırabilecek soru C++ nedir ? Bence C++, C&#8217;nin daha basitleştirilmiş bir sürümü diyebiliriz. Birçok şeyi daha kolay yapabilmeniz için tasarlanmış.  Tabi beni üzen bir başka konu ise platform bağımsızlığının Python kadar kolay olmaması. Çünkü her platformun derleyicilerinin birbirinden çok farklı oluşu burada büyük bir dezavantaj yaratıyor. Ama şu var ki Qt, platform bağımsızlığını size sunabiliyor.</p>
<p>Her şey bir yana en büyük faktör &#8220;HIZ&#8221; diyebiliriz. Hız, ama ne kadar hızlı ? Python&#8217;da asal sayıları bulan 3 farklı betik hazırlamıştım. İlk sürümünde 40.000.000-400.000.000.000 arasında ilk asal sayıyı 1 dakika  12 saniye 14 salise&#8217;de buldu. Sonra biraz daha geliştirip, saçma olan yerleri düzeltince, ilk sayıyı 23 saniye 66 salise&#8217;de buldu. Azıcık daha uğraşınca, son sürüm ilk asal sayıyı 17 saniye 27 salise&#8217;de buldu. Fakat C++ gelirsek ilk sayıyı bulmasını kronometre ile yakalayamadım diyebilirim. İnanılmaz bir hızla sayıları buluyordu. Son Python betiğimdeki mantığın aynısını C++&#8217;de uygulamıştım. Ve satır sayıları C++&#8217;nin tabiki daha uzundu.</p>
<p>Python&#8217;daki betik şöyleydi:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">aralik = <span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Aralık belirtin(ör: 30-200 ):<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span>
aralik = aralik.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;-&quot;</span><span style="color: black;">&#41;</span>
last = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>aralik<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> 
first = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>aralik<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> 
sayi = <span style="color: #ff4500;">1</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;İşlem Başladı...&quot;</span>
<span style="color: #ff7700;font-weight:bold;">while</span> last<span style="color: #66cc66;">&gt;</span>first:
    first = first + <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> b <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>,first<span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">if</span> b<span style="color: #66cc66;">&gt;</span><span style="color: black;">&#40;</span>first/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>:
	    <span style="color: #ff7700;font-weight:bold;">break</span>
	sayi = first <span style="color: #66cc66;">%</span> b
	<span style="color: #ff7700;font-weight:bold;">if</span> sayi == <span style="color: #ff4500;">0</span>:
	    <span style="color: #ff7700;font-weight:bold;">break</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> sayi <span style="color: #66cc66;">!</span>= <span style="color: #ff4500;">0</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span> first</pre></div></div>

<p>C++&#8217;deki ise:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">long</span> first <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">long</span> last <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">long</span> number <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Enter a number that 'prime' begins:&quot;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> first<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Enter a number that 'prime' stops:&quot;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> last<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;----- Results: -----&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>last<span style="color: #000080;">&gt;</span>first<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        first <span style="color: #000080;">=</span> first <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">long</span> b <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> b<span style="color: #000080;">&lt;</span>first<span style="color: #008080;">;</span> b<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
&nbsp;
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span>first<span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            number <span style="color: #000080;">=</span> first <span style="color: #000040;">%</span> b<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>number <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>number <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Result: &quot;</span> <span style="color: #000080;">&lt;&lt;</span> first <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Satır sayıları gördüğünüz gibi C++&#8217;nin daha fazla. Fakat şunu unutmamak lazım. Python yüksek seviyeli bir dil, bu yüzden hız bakımında C++&#8217;ye yetişemiyor.</p>
<p>Aynı zamanda programlama dillerini yarıştırmak, bunla daha az kod yazılıyor bu çok hızlı demenin pek bir anlamı da yok. Neyse bakalım C++ maceram da neler olacak.</p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/02/mucize-sayilar/' rel='bookmark' title='Permanent Link: Mucize Sayılar'>Mucize Sayılar</a></li>
<li><a href='http://tdgunes.org/2010/02/cde-faktoriyel/' rel='bookmark' title='Permanent Link: C++&#8217;de Faktöriyel'>C++&#8217;de Faktöriyel</a></li>
<li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/RFsHgsy5jPo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2010/01/c-baslamak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2010/01/c-baslamak/</feedburner:origLink></item>
		<item>
		<title>Yeni Yıla, Pardus’la!</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/F1d8_oBRkfU/</link>
		<comments>http://tdgunes.org/2010/01/yeni-yila-pardusla/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 22:06:38 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Kişisel]]></category>
		<category><![CDATA[Pardus]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pardus 2009]]></category>
		<category><![CDATA[pardus tişörtleri]]></category>
		<category><![CDATA[pardus tişörtü]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=584</guid>
		<description><![CDATA[
			
				
			
		
Her şey için teşekkürler Pardus!




2008 tişörtü ise burada.


Herhangi benzer bir yazı yok!


Herhangi benzer bir yazı yok!]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2010%2F01%2Fyeni-yila-pardusla%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2010%2F01%2Fyeni-yila-pardusla%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Her şey için teşekkürler Pardus!</p>
<p style="text-align: center;"><a href="http://tdgunes.org/wp-content/uploads/2009/12/DSC_0507.jpg"><img class="aligncenter size-large wp-image-585" title="ben" src="http://tdgunes.org/wp-content/uploads/2009/12/DSC_0507-706x1024.jpg" alt="" width="424" height="614" /></a></p>
<p style="text-align: center;">
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://tdgunes.org/wp-content/uploads/2009/12/DSC_0507.jpg"></a><a href="http://tdgunes.org/wp-content/uploads/2009/12/DSC_0512.jpg"><img class="aligncenter size-large wp-image-586" title="DSC_0512" src="http://tdgunes.org/wp-content/uploads/2009/12/DSC_0512-680x1024.jpg" alt="" width="408" height="614" /></a></p>
<p>2008 tişörtü ise <a href="http://tdgunes.org/2008/11/pardus-tisortum-geldi/" target="_blank">burada</a>.</p>


<p>Herhangi benzer bir yazı yok!</p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/F1d8_oBRkfU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2010/01/yeni-yila-pardusla/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2010/01/yeni-yila-pardusla/</feedburner:origLink></item>
		<item>
		<title>Kontrolcu 2.0 Beta-1′e Merhaba!</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/jF78B5Qi9Wk/</link>
		<comments>http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 22:00:22 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programcılık]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[Kontrolcu]]></category>
		<category><![CDATA[Kontrolcu 2.0]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=577</guid>
		<description><![CDATA[
			
				
			
		
2.0 Alpha&#8217;dan sonra 21 gün geçmiş. Bu süreçte Alpha&#8217;da çıkan hataları buldukça içimden &#8216;İyi ki Alpha demişiz, ya demeseydik de bu stabil bir sürüm deseydik ne olurdu acaba ?&#8221; diye diye Beta-1&#8242;ye geldik. Alpha&#8217;dan sonra neler yaptık bir sıralayalım bakalım:

Alpha&#8217;daki bence en büyük sorun olan 50 MB&#8217;dan büyük dosyalar için gelen yükleme çubuğunun yaptığı her [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/11/kontrolcu-2-0-alphayi-yayinladik/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0-alpha&#8217;yı Yayınladık!'>Kontrolcu 2.0-alpha&#8217;yı Yayınladık!</a></li>
<li><a href='http://tdgunes.org/2010/03/iste-mutlu-son/' rel='bookmark' title='Permanent Link: İşte Mutlu Son!'>İşte Mutlu Son!</a></li>
<li><a href='http://tdgunes.org/2009/11/pythonda-finally/' rel='bookmark' title='Permanent Link: Python&#8217;da &#8216;Finally&#8217;!'>Python&#8217;da &#8216;Finally&#8217;!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2009%2F12%2Fkontrolcu-2-0-beta-1e-merhaba%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2009%2F12%2Fkontrolcu-2-0-beta-1e-merhaba%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>2.0 Alpha&#8217;dan sonra 21 gün geçmiş. Bu süreçte Alpha&#8217;da çıkan hataları buldukça içimden &#8216;İyi ki Alpha demişiz, ya demeseydik de bu stabil bir sürüm deseydik ne olurdu acaba ?&#8221; diye diye Beta-1&#8242;ye geldik. Alpha&#8217;dan sonra neler yaptık bir sıralayalım bakalım:</p>
<ul>
<li>Alpha&#8217;daki bence en büyük sorun olan 50 MB&#8217;dan büyük dosyalar için gelen yükleme çubuğunun yaptığı her kontrolün yanlış olması, bizi gece gece sinirden çıldırttı. En sonunda Osman&#8217;ın hashlib.xxx &lt;- değerini sıfırlamasıyla bu trajikomik sorundan da kurtulmuş olduk.</li>
<li>Arayüzümüzdeki 2 tane sekmeyi de unutmadık onlara da yükleme çubuğu desteği getirdik ve böylece artık donmalara son verdik.</li>
<li>Güzel bir logo ekledik. Aşağıdaki resimde de görebilirsiniz.</li>
<li>QSlider adlı pencerenin en altındaki sürükleyici ile biliyorsunuz ki &#8216;Check&#8217; bölümünün yazı boyutunu büyütüp, küçültebiliyorduk artık diğer sekmelerde de bu çalışıyor.</li>
<li>Konsola düşen ve hata takibinde işimize yarayabilecek çıktıları düzenledik büyük çapta.</li>
<li>Birkaç kişi &#8220;Bu ne biçim &#8216;AboutBox&#8217; ? &#8221; dedi. Bu yorumlardan sonra onu da güzelce makyajladık.</li>
<li>Ve artık GNOME ve KDE-**&#8217;de dizin sürükleme* desteği geldi. Böylece dizin sürüklediğinizde içindeki dosyaların hepsini listeye ekliyor. Fakat sürüklenen dizinin içindeki dizinlerde bulunan dosyaları ellemiyor. Yoksa kontrol dosyalarında karmaşa olacağını biliyor. ( &#8216;Ne zeki şeymiş diye içinizden geçirin lüften <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8217; )</li>
<li>Türkçe karakterli dosyaları kontrol ederken artık tüm platformlarda sorun çıkarmaması gerekiyor. (Test edilen sistemler:  Arch Linux, Ubuntu 9.10, Pardus 2009, Windows 7)</li>
<li>Ve artık ortaya çıkan hata mesaj kutusu, &#8216;Check&#8217; bölümü şu an için hatalara karşı dayanıklı ama diğer bölümleri bilmiyorum. Aklımızdan &#8216;Traceback&#8217; yakalayan sonra bunu hata mesaj kutusunda belirtip, &#8216;Bunu bildir!&#8217; diyen bir bölüm yapmayı düşünüyoruz. Aklımızda bin türlü fikir var.  Bakalım, bakalım <img src='http://tdgunes.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </li>
</ul>
<p>Bu arada 2.1 ile belki cd-dvd-bluray sürücülerdeki ortamların kontrolünün yapılması işine girişebiliriz. Hatta çaktırmadan söyleyeyim, şu an ki 2.0&#8242;da &#8216;Compare&#8217; bölümüne yol olarak disk yolunu yazarsanız, (/dev/sr1 gibi) bir kontrol yapacaktır ama kontrolcu donabilir ve sürücünüzden garip sesler gelebilir <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Bu çıkan numara ile yazdırdığınız iso&#8217;nun kontrol toplamı aynı olması gerekiyor. Eğer aynı değilse yazarken bir şeyler ters gitmiş olabilir.</p>
<p>*: Hala Windows&#8217;da kara delik oluşturan QListWidget&#8217;a sakın ama sakın önemli bir dosyanızı sürüklemeyin. Sürüklemeden önce 2 defa <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  düşünün. Büyük bir ihtimalle stabil sürümde sürükle-bırak bölümünü Windows&#8217;da devre dışı bırakacağız eğer bunun çözümünü biliyorsanız ya yorum bölümüne yazın ya da sonsuza kadar susun. <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>**: KDE ve GNOME&#8217;da sürükle bırak rahatça çalışsa da XFCE&#8217;de ve Windows&#8221;da (yukarda belirtiğim gibi) sürükle bırak çalışmıyor. Çözümü bile lütfen yorumlara</p>
<p>Not: Beta-1 için çevirmenler ile görüşmedik en son stabil sürümde tüm çevirilerin yapılmasını kararlaştırdık. Şu an için İngilizce ve Türkçe desteği hazır. Windows&#8217;da sadece İngilizce desteği var. Eğer gettext modülünün nasıl Windows&#8217;da dil değişimi yapacağını çözebilirsem, stabil sürüme Windows&#8217;a da diğer dil desteği gelebilir.</p>
<p>Planladığımız dil desteği sekiz olmakla birlikte bu sayının her an değişip, değişmeyeceğini bildirmekte fayda var.</p>
<p>Stabil sürümü yavaş yavaş emin adımlarla geliştirmeye devam ediyoruz. Bir sonraki sürüme kadar hoşça kalın! <img src='http://tdgunes.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<div id="attachment_579" class="wp-caption aligncenter" style="width: 478px"><a href="http://tdgunes.org/wp-content/uploads/2009/12/kontrolcuwin7-2.png"><a href="http://tdgunes.org/wp-content/uploads/2009/12/kontrolcuwin7-21.png"><img class="aligncenter size-full wp-image-581" title="kontrolcuwin7-2" src="http://tdgunes.org/wp-content/uploads/2009/12/kontrolcuwin7-21.png" alt="" width="468" height="506" /></a></a><p class="wp-caption-text">Kontrolcu 2.0 Beta Windows&#39;da</p></div>
<p style="text-align: center;">
<p style="text-align: left;">Son Not:  Niye hep ben Windows&#8217;dan ekran görüntüsü yolluyorum, çünkü en son Windows&#8217;da .exe yapma işi bana kaldığı için size Windows görüntüsü vermek zorundayım. Unutmadan bir sorun yaşarsanız &#8216; ? &#8216; butonuna basın ve gelen kontrolcu&#8217;nun web sitesinden hatalarınızı bizden esirgemeyin.</p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/11/kontrolcu-2-0-alphayi-yayinladik/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0-alpha&#8217;yı Yayınladık!'>Kontrolcu 2.0-alpha&#8217;yı Yayınladık!</a></li>
<li><a href='http://tdgunes.org/2010/03/iste-mutlu-son/' rel='bookmark' title='Permanent Link: İşte Mutlu Son!'>İşte Mutlu Son!</a></li>
<li><a href='http://tdgunes.org/2009/11/pythonda-finally/' rel='bookmark' title='Permanent Link: Python&#8217;da &#8216;Finally&#8217;!'>Python&#8217;da &#8216;Finally&#8217;!</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/jF78B5Qi9Wk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/</feedburner:origLink></item>
		<item>
		<title>Kontrolcu 2.0-alpha’yı Yayınladık!</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/yv_iiReNTYc/</link>
		<comments>http://tdgunes.org/2009/11/kontrolcu-2-0-alphayi-yayinladik/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 19:04:59 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Kişisel]]></category>
		<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programcılık]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Kontrolcu]]></category>
		<category><![CDATA[proje]]></category>
		<category><![CDATA[pyqt]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=567</guid>
		<description><![CDATA[
			
				
			
		
Herkese selamlar,
Öncelikle uzun süredir yazamadığım bloguma artık, yazamamamın sebebini söylemenin zamanı geldi. O da &#8220;Kontrolcu&#8221;. Bu proje aslında çok basit bir iş yapsa da bizi baya uğraştırdı. 2009 Mayıs&#8217;da başladığımız bu projeye,(Buraya yazmak istemedim çünkü ametör bir başlangıç yaptık.) daha yeni 2.0 sürümüne vardık.
Kontrolcu peki nedir ? Bilinen tüm dosyaları kontrol etmek için kullanılan &#8216;checksum&#8217;ları [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
<li><a href='http://tdgunes.org/2010/03/iste-mutlu-son/' rel='bookmark' title='Permanent Link: İşte Mutlu Son!'>İşte Mutlu Son!</a></li>
<li><a href='http://tdgunes.org/2009/05/oi-e-dergi-14-sayi-ve-pardus-2009-alpha/' rel='bookmark' title='Permanent Link: Öİ E-Dergi 14. Sayı ve Pardus 2009 Alpha'>Öİ E-Dergi 14. Sayı ve Pardus 2009 Alpha</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2009%2F11%2Fkontrolcu-2-0-alphayi-yayinladik%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2009%2F11%2Fkontrolcu-2-0-alphayi-yayinladik%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Herkese selamlar,</p>
<p>Öncelikle uzun süredir yazamadığım bloguma artık, yazamamamın sebebini söylemenin zamanı geldi. O da<a href="code.google.com/p/kontrolcu"> &#8220;Kontrolcu&#8221;</a>. Bu proje aslında çok basit bir iş yapsa da bizi baya uğraştırdı. 2009 Mayıs&#8217;da başladığımız bu projeye,(Buraya yazmak istemedim çünkü ametör bir başlangıç yaptık.) daha yeni 2.0 sürümüne vardık.</p>
<p>Kontrolcu peki nedir ? Bilinen tüm dosyaları kontrol etmek için kullanılan &#8216;checksum&#8217;ları oluşturabilen, bunu dosyaya yazabilen ve daha sonra dosyaları karşılaştırabilen 2.0 sürümü ile aklımıza yatan bir python projesi.</p>
<div id="attachment_568" class="wp-caption aligncenter" style="width: 478px"><img class="size-full wp-image-568" title="kontrolcwin7" src="http://tdgunes.org/wp-content/uploads/2009/11/kontrolcwin7.png" alt="kontrolcwin7" width="468" height="505" /><p class="wp-caption-text">Windows 7 Görüntüsü*</p></div>
<p style="text-align: left;">Projeye <a href="osmank3.blogspot.com">Osman Karagöz</a> ile başladık. Pardus kanalında bir dosyanın md5 checksum&#8217;u nasıl oluşturulur diye soruyordum. Bu arada Osman Karagöz ile karşılaşıp, neden bizde bu işi basitleştiricek konsoldan korkanları korkutmayacak bir program yazmayalım dedik. İlk önce <a href="http://code.google.com/p/md5kontrolcu">md5kontrolcu</a> ile başladık. Bir süre sonra ortada başka dosya kontrol tiplerinin olduğunu görüp sadece md5 yerine sha1&#8242;i de ekledik. Bir taraftan arayüz ile bir taraftan konsol tipi ile uğraştık.</p>
<p>Daha sonra 1.0&#8242;ı çıkardık sessiz sedasız. Neden sessiz sedasız, hala sanki bir şeyler eksik dedik. Ben bir taraftan PyQt arayüzünü çıkarırken, Osman üşenmedi oturdu Tkinter arayüzünü yazdı. Kontrolcu&#8217;nün o güzel kütüphanesinin adını da &#8220;libkontrolcu.py&#8221; koyduktan sonra bu proje bitti dedik. Fakat baktık daha bir sürü kontrol tipleri varmış. 1.5 sürümü ile onları da ekledik.</p>
<p>Ama ortada çok komik hatalar vardı. Örneğin 20 GB&#8217;lık bir dosya kontrol edeceksiniz, Kontrolcu ya güzelce donuyor ya da MemoryError diyordu. Python&#8217;un nesne yapısını hiç bilmediğimiz için herşey fonksiyon tabanlıydı ve böyle olduğu için kafamız baya karışıyordu geliştirirken.</p>
<p>Qt&#8217;yi geliştirirken Qt-Designer&#8217;ı hiç bilmemem ve yanlış kaynaklardan çalışmam bir o kadar daha kafamı karıştırmıştı.  Her neyse bu hikaye 1.6 ile devam etti. Bu sefer KDE&#8217;de sağ tıkladığınız da direk kontrol dosyası oluşuyordu.</p>
<p>Uzun süre sonra 1.7 için çalışmalara başladık fakat o kadar saçma sapan kodlama yaptığımızı anladık. (Tabi uzun süre içinde baya şeyler kattık bilgilerimize.) Bir gün, iki gün geliştirdik fakat sonra bıraktık. Osman&#8217;ın 2.0&#8242;ı çıkaralım tavsiyesi üzerine çalışmalara başladık. Baktık ki 1.6&#8242;dan bir şey olmaz oturduk tamamen yeniden yazdık. Yaklaşık üç hafta oldu sanırım. Baya geliştirdik. 2.0-alpha için hazırız.</p>
<p>Bu uzun hikayemiz de İndirilme sayımız çok düşüktü. Hiçbir zaman Kontrolcu&#8217;yu geliştirirken herkes kullansın, ben de ünlü olayım değil, amacımız öğrenmek idi. 2009 Mayıs&#8217;tan bu yana baktığımız da gerçekten Kontrolcu, tüm ekibimize (ben, Osman Karagöz, Okan Okuroğulları(Türkçe çeviriler ve belgelendirme)) çokça şeyler kattı. Umarım 2.0&#8242;ın devamında, Kontrolcu bize daha çok şeyler katar.</p>
<p>2.0-alpha1 diye adlandırdığımız sürüm şu an Türkçe ve İtalyanca çevirileri ile sunduk. Ayrıca şu an elime İspanyolca çevirisi de geldi. İlk İtalyanca çevirisini görünce cidden çok hoşuma gitti. İyi ki İngilizce başlamışız 2.0&#8242;ı yapmaya dedim.</p>
<p>Unutmadan Kontrolcu plasmoidi söyleyeyim. KDE-LOOK sayfasından KDE4 için yaptığımız plasmoidi bulabilirsiniz. (Sadece md5 kontrolü ve MemoryError&#8217;lar ortaya çıkabilir. <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>*: Şu an Pardus&#8217;a geçemediğim için sadece görüntüsü veriyorum afedersiniz <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
<li><a href='http://tdgunes.org/2010/03/iste-mutlu-son/' rel='bookmark' title='Permanent Link: İşte Mutlu Son!'>İşte Mutlu Son!</a></li>
<li><a href='http://tdgunes.org/2009/05/oi-e-dergi-14-sayi-ve-pardus-2009-alpha/' rel='bookmark' title='Permanent Link: Öİ E-Dergi 14. Sayı ve Pardus 2009 Alpha'>Öİ E-Dergi 14. Sayı ve Pardus 2009 Alpha</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/yv_iiReNTYc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2009/11/kontrolcu-2-0-alphayi-yayinladik/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2009/11/kontrolcu-2-0-alphayi-yayinladik/</feedburner:origLink></item>
		<item>
		<title>Python’da ‘Finally’!</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/UPGfmLI2P50/</link>
		<comments>http://tdgunes.org/2009/11/pythonda-finally/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:50:28 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programcılık]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[finally in python]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python'da finally]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=548</guid>
		<description><![CDATA[
			
				
			
		
İnternet&#8217;ten Python öğrenenlerde genellikle bazı konular eksik kalabiliyor. Örneğin &#8216;Finally&#8217; gibi. &#8216;Finally&#8217;, hata yakalarken yaptığınız işlemde son adım olarak ortaya çıkan verilerin temizlenmesi olarak kullanabileceğimiz kullanışlı bir komut. Klasik &#8216;try:&#8217;, &#8216;except:&#8217; yazdıktan sonra &#8216;finally:&#8217; koyabiliyoruz demek oluyor bu. Peki nasıl uyguluyoruz bir bakalım.

a = 10
try:
    a += &#34;10&#34;
except TypeError:
   print [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/' rel='bookmark' title='Permanent Link: Python ile Konsoldan Tıklanan Tuşları Yakalamak!'>Python ile Konsoldan Tıklanan Tuşları Yakalamak!</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
<li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2009%2F11%2Fpythonda-finally%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2009%2F11%2Fpythonda-finally%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>İnternet&#8217;ten Python öğrenenlerde genellikle bazı konular eksik kalabiliyor. Örneğin &#8216;Finally&#8217; gibi. &#8216;Finally&#8217;, hata yakalarken yaptığınız işlemde son adım olarak ortaya çıkan verilerin temizlenmesi olarak kullanabileceğimiz kullanışlı bir komut. Klasik &#8216;try:&#8217;, &#8216;except:&#8217; yazdıktan sonra &#8216;finally:&#8217; koyabiliyoruz demek oluyor bu. Peki nasıl uyguluyoruz bir bakalım.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">a = <span style="color: #ff4500;">10</span>
<span style="color: #ff7700;font-weight:bold;">try</span>:
    a += <span style="color: #483d8b;">&quot;10&quot;</span>
<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">TypeError</span>:
   <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Tipler uyuşmadı.'</span>
<span style="color: #ff7700;font-weight:bold;">finally</span>:
   <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Veriler sıfırlanıyor'</span>
   a = <span style="color: #ff4500;">0</span></pre></div></div>

<p>&#8216;finally&#8217;inin kullanımı böyle. Bu kodu tanımlarsak sırasıyla:</p>
<ol>
<li>Bir a değeri belirledik ve buna 10 dedik.</li>
<li>Sonra bir de üstüne string(yazı) olan &#8220;10&#8243; eklemeye çalıştık.</li>
<li>Bunun sonucunda bir &#8216;TypeError&#8217; aldık.</li>
<li>Sonra a&#8217;yı sıfırladık.</li>
</ol>
<p>Burada merak edeceğiniz mevzu eğer &#8216;TypeError&#8217; oluşmasaydı ne olacağıydı. Eğer bu hata oluşmasaydı, veriler gene sıfırlanacaktı. Finally işlemini temizleme olarak görebilirsiniz. Ama çok isterseniz, bu ifadenin altına da temizleme komutunu yazabilirsiniz. Bu tercih size kalmış.</p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/' rel='bookmark' title='Permanent Link: Python ile Konsoldan Tıklanan Tuşları Yakalamak!'>Python ile Konsoldan Tıklanan Tuşları Yakalamak!</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
<li><a href='http://tdgunes.org/2009/12/kontrolcu-2-0-beta-1e-merhaba/' rel='bookmark' title='Permanent Link: Kontrolcu 2.0 Beta-1&#8242;e Merhaba!'>Kontrolcu 2.0 Beta-1&#8242;e Merhaba!</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/UPGfmLI2P50" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2009/11/pythonda-finally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2009/11/pythonda-finally/</feedburner:origLink></item>
		<item>
		<title>Python ile Konsoldan Tıklanan Tuşları Yakalamak!</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/7rNbO5u06SA/</link>
		<comments>http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 07:28:39 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programcılık]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Çözümler]]></category>
		<category><![CDATA[keycode]]></category>
		<category><![CDATA[klavye]]></category>
		<category><![CDATA[konsol]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[obtaning keycode]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python ile keycode]]></category>
		<category><![CDATA[termios]]></category>
		<category><![CDATA[tty]]></category>
		<category><![CDATA[window]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=541</guid>
		<description><![CDATA[
			
				
			
		
Nesne tabanlı programlamadan sonra bir başka merak ettiğim konu ise: Konsol tabanlı bir program yaptığımda ona verdiğim komutları, hep uzun uzun yazmam gerekiyordu. Mesela bir oyun yaptınız. Konsoldaki haritanızda ileri,geri,sağ ve sola gitmesi için durmadan &#8220;ileri,geri &#8230;&#8221; yazmanız gerekiyor.
Fakat artık direk &#8220;WASD&#8221; tuşları olsun klavyedeki her tuşla programa komutlar gönderebileceksiniz. Yapmanız gereken &#8220;tty&#8221; modülünü kullanmak [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2010/01/pythonda-glob-ile-dosya-yakalamak/' rel='bookmark' title='Permanent Link: Python&#8217;da Glob ile Dosya Yakalamak'>Python&#8217;da Glob ile Dosya Yakalamak</a></li>
<li><a href='http://tdgunes.org/2009/10/python-ile-nesne-tabanli-programlamaya-giris/' rel='bookmark' title='Permanent Link: Python ile Nesne Tabanlı Programlama&#8217;ya Giriş'>Python ile Nesne Tabanlı Programlama&#8217;ya Giriş</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2009%2F10%2Fpython-ile-konsoldan-tiklanan-tuslari-yakalamak%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2009%2F10%2Fpython-ile-konsoldan-tiklanan-tuslari-yakalamak%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Nesne tabanlı programlamadan sonra bir başka merak ettiğim konu ise: Konsol tabanlı bir program yaptığımda ona verdiğim komutları, hep uzun uzun yazmam gerekiyordu. Mesela bir oyun yaptınız. Konsoldaki haritanızda ileri,geri,sağ ve sola gitmesi için durmadan &#8220;ileri,geri &#8230;&#8221; yazmanız gerekiyor.</p>
<p>Fakat artık direk &#8220;WASD&#8221; tuşları olsun klavyedeki her tuşla programa komutlar gönderebileceksiniz. Yapmanız gereken &#8220;tty&#8221; modülünü kullanmak fakat bu modül çok ilginç ki, programı kapattıktan sonra bile sizin klavye komutlarınızı alıyor.  Bunun yerine hem Linux, hem Windows, hem de Macintosh&#8217;larda çalışacak bir yöntem ve sadece &#8220;tty&#8221; modülüyle değil de başka modülleri de kullanmalı. Çünkü tty modülü sadece Linux&#8217;da çalışıyor ve stabil değil.</p>
<p>Küçük bir google araması yaptığınızda karşınıza <a href="http://code.activestate.com/recipes/134892/">şöyle</a> bir site geliyor. (Macintosh desteğini denemediğim için örneklere yazmayacağım ama o siteden Macintosh desteğine bakabilirsiniz.)</p>
<p>İlk önce tane .py dosyası oluşturun ve onun içine şunları yazın.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
<span style="color: #ff7700;font-weight:bold;">class</span> _Getch<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;Gets a single character from standard input.
       Does not echo to the screen.&quot;&quot;&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            <span style="color: #008000;">self</span>.<span style="color: black;">impl</span> = _GetchWindows<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">ImportError</span>:
            <span style="color: #008000;">self</span>.<span style="color: black;">impl</span> = _GetchUnix<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__call__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">impl</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> _GetchUnix<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">tty</span>, <span style="color: #dc143c;">sys</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__call__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">tty</span>, <span style="color: #dc143c;">termios</span>
        fd = <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: black;">fileno</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        old_settings = <span style="color: #dc143c;">termios</span>.<span style="color: black;">tcgetattr</span><span style="color: black;">&#40;</span>fd<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            <span style="color: #dc143c;">tty</span>.<span style="color: black;">setraw</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: black;">fileno</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            ch = <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">finally</span>:
            <span style="color: #dc143c;">termios</span>.<span style="color: black;">tcsetattr</span><span style="color: black;">&#40;</span>fd, <span style="color: #dc143c;">termios</span>.<span style="color: black;">TCSADRAIN</span>, old_settings<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> ch
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> _GetchWindows<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">msvcrt</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__call__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">msvcrt</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">msvcrt</span>.<span style="color: black;">getch</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
getch = _Getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Bunu sonra ana programınıza &#8220;form dosyanız import *&#8221; şeklinde ekleyin. Sonra kullanırken:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> alici <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #008000;">True</span>:
    karakter = getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">upper</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Tıklanan tuş: %s&quot;</span>  <span style="color: #66cc66;">%</span> karakter</pre></div></div>

<p>şeklinde yazabilirsiniz. Burada &#8220;getch().upper()&#8221; yazarken &#8220;upper()&#8221; yazmamızdaki mantık, gelen karakterin büyük ya da küçük problemi yaşamamak için hepsini büyük yapıp öyle işlemektir.  Bu yazdığınız &#8220;.getch()&#8221; bu haliyle Linux&#8217;da ve Windows&#8217;da çalışabilir.</p>
<p>Ayrıca bu olay PyGame gibi başka kütüphanelerle yapılabilir fakat eğer tamamen konsol tabanlı bir programda bunu istiyorsanız tek çözüm bu.</p>
<p>Not: Son örnekteki döngüden kurtulamazsanız kurtarıcınız &#8220;CTRL-C&#8221; olsun.</p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2010/01/pythonda-glob-ile-dosya-yakalamak/' rel='bookmark' title='Permanent Link: Python&#8217;da Glob ile Dosya Yakalamak'>Python&#8217;da Glob ile Dosya Yakalamak</a></li>
<li><a href='http://tdgunes.org/2009/10/python-ile-nesne-tabanli-programlamaya-giris/' rel='bookmark' title='Permanent Link: Python ile Nesne Tabanlı Programlama&#8217;ya Giriş'>Python ile Nesne Tabanlı Programlama&#8217;ya Giriş</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/7rNbO5u06SA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/</feedburner:origLink></item>
		<item>
		<title>Python ile Nesne Tabanlı Programlama’ya Giriş</title>
		<link>http://feedproxy.google.com/~r/tdgunes/~3/ceXmW97nmj8/</link>
		<comments>http://tdgunes.org/2009/10/python-ile-nesne-tabanli-programlamaya-giris/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 15:16:04 +0000</pubDate>
		<dc:creator>tdgunes</dc:creator>
				<category><![CDATA[Pardus]]></category>
		<category><![CDATA[Programcılık]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Çözümler]]></category>

		<guid isPermaLink="false">http://tdgunes.org/?p=534</guid>
		<description><![CDATA[
			
				
			
		
Python&#8217;u ilk duyduğum da, Python&#8217;un nesne tabanlı olduğunu üstüne basa basa söylediler ama şu ana kadar uğraştığım birçok projede olsun, yazdığım kodların çoğunda olsun, &#8220;Ben bunu nesne tabanlı olsun diye yapıyorum.&#8221; diyerek yapmadım ve nesne tabanlı programlamayı da kullanmanın ne kadar büyük bir kolaylık getirdiğinin de farkında değilmişim.
Nesne tabanlı programlamayı basitçe, kendi dünyanıza ekleyeceğiniz nesnelerin [...]


Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/' rel='bookmark' title='Permanent Link: Python ile Konsoldan Tıklanan Tuşları Yakalamak!'>Python ile Konsoldan Tıklanan Tuşları Yakalamak!</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-sifre-olusturmakkullanmak/' rel='bookmark' title='Permanent Link: Python ile şifre oluşturmak/kullanmak'>Python ile şifre oluşturmak/kullanmak</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftdgunes.org%2F2009%2F10%2Fpython-ile-nesne-tabanli-programlamaya-giris%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftdgunes.org%2F2009%2F10%2Fpython-ile-nesne-tabanli-programlamaya-giris%2F&amp;source=tdgunes&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Python&#8217;u ilk duyduğum da, Python&#8217;un nesne tabanlı olduğunu üstüne <strong>basa basa</strong> söylediler ama şu ana kadar uğraştığım birçok projede olsun, yazdığım kodların çoğunda olsun, <em>&#8220;Ben bunu nesne tabanlı olsun diye yapıyorum.&#8221;</em> diyerek yapmadım ve nesne tabanlı programlamayı da kullanmanın <strong>ne kadar büyük bir kolaylık getirdiğinin</strong> de farkında değilmişim.</p>
<p>Nesne tabanlı programlamayı basitçe, k<strong>endi dünyanıza ekleyeceğiniz nesnelerin yapım aracı olarak düşünebilirsiniz.</strong> Ben dünyamda kare istiyorum ve karemin alanı, çevresi belli olsun diyebilirsiniz. Eski bilgilerinizle böyle bir şey isteğiniz de fonksiyonlar yazıp, sonra çağırımlar yapabilirdiniz ama artık nesne tabanlı programlamayla, fonksiyon çağırımlarıyla uğraşmadan direk<strong> </strong>&#8220;<strong>a = kare(2)</strong> <em>(2 burada kenarın uzunluğu)</em>&#8221; diyebilirsiniz.  Kafanızda <em>&#8220;Nasıl olacak bu iş?&#8221;</em> diye bir soru oluştuysa hadi bakalım nasıl oluyormuş.</p>
<p>Şu ana kadar <strong>sınıf(class</strong>) kullanmadıysanız sınıflara merhaba diyin. Eğer kullandıysanız, (Arayüz falan yazarken) belki de bilmeden kullandınız.<em>(Tıpkı benim gibi <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</em> Sınıflar nesneler üretmenin en güzel yoludur. Gelin bir kare nesnesinin sınıfını yazalım.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">class</span> kare<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, kenar<span style="color: black;">&#41;</span>:
	<span style="color: #008000;">self</span>.<span style="color: black;">kenar</span> = kenar
    <span style="color: #ff7700;font-weight:bold;">def</span> cevresi<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">kenar</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">4</span>
    <span style="color: #ff7700;font-weight:bold;">def</span> alani<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">kenar</span><span style="color: #66cc66;">*</span><span style="color: #008000;">self</span>.<span style="color: black;">kenar</span></pre></div></div>

<p>Yaratığımız bu kare sınıfının en çok kafa karıştıran yeri <em>&#8220;__init__&#8221;</em> kısmı olabilir. Peki nedir <em>&#8220;__init__&#8221;</em> kısmı ? <strong>Basitçe burayı bir kitabın içindekiler bölümü olarak görebilirsiniz.</strong> Burada bizim kare için sadece &#8220;kenar&#8221; yerimiz var.  Bir başka soru neden &#8220;self.kenar = kenar&#8221; dediğimiz olabilir. self ile sınıf içinde fonksiyonlara ulaşmak için global gibi bir değer kullanmak yerine kolayca fonksiyonlar arasında bu değerleri kullanabiliyoruz.</p>
<p>Peki son olarak gelin a bir kare nesnesi olsun. Bunu yapmak için &#8220;raw_input&#8221; kullanabiliriz.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">b = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Kare'nin kenarı kaç olsun? : &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
a = kare<span style="color: black;">&#40;</span>b<span style="color: black;">&#41;</span></pre></div></div>

<p>Bundan sonra yapacağımız kare sınıfındaki fonksiyonları çağırmak olacaktır.  Onu da şöyle halledebiliriz:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Çevresi: %s Alanı: %s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>a.<span style="color: black;">cevresi</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, a.<span style="color: black;">alani</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Kare cismimizi yaratarak nesne tabanlı programlama&#8217;yı az da olsa öğrenmiş olduk.</p>
<p>Not: Sınıfların içine yazdığımız fonksiyonlarda,<em><strong> __str__</strong></em> adlı bir fonksiyon olduğunu ve bunla str(a) dediğinizde bir olayı başlatabileceğinizi biliyor muydunuz ? <em><strong>__str__</strong></em> kısmını <em><strong>__int__ </strong></em>yapabilir ve daha birçok built_in fonksiyonlarla oynayabilirsiniz.</p>
<p><em>Python, Python, Python <img src='http://tdgunes.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>


<p>Benzer yazılar:<ol><li><a href='http://tdgunes.org/2009/10/python-ile-konsoldan-tiklanan-tuslari-yakalamak/' rel='bookmark' title='Permanent Link: Python ile Konsoldan Tıklanan Tuşları Yakalamak!'>Python ile Konsoldan Tıklanan Tuşları Yakalamak!</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-mp3-ve-midi-dosyalarini-acmakdinlemek/' rel='bookmark' title='Permanent Link: Python ile .mp3 ve .midi dosyalarını açmak/dinlemek'>Python ile .mp3 ve .midi dosyalarını açmak/dinlemek</a></li>
<li><a href='http://tdgunes.org/2009/09/python-ile-sifre-olusturmakkullanmak/' rel='bookmark' title='Permanent Link: Python ile şifre oluşturmak/kullanmak'>Python ile şifre oluşturmak/kullanmak</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/tdgunes/~4/ceXmW97nmj8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tdgunes.org/2009/10/python-ile-nesne-tabanli-programlamaya-giris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://tdgunes.org/2009/10/python-ile-nesne-tabanli-programlamaya-giris/</feedburner:origLink></item>
	</channel>
</rss>
