<?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>ftoptas blog &#187; python</title>
	<atom:link href="http://ftoptas.com/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://ftoptas.com</link>
	<description>[beta]</description>
	<lastBuildDate>Mon, 30 Jan 2012 20:19:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>3. Dereceden Denklemin Köklerini Bulma</title>
		<link>http://ftoptas.com/3-dereceden-denklemin-koklerini-bulma/</link>
		<comments>http://ftoptas.com/3-dereceden-denklemin-koklerini-bulma/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 22:06:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[3.dereceden deklem]]></category>
		<category><![CDATA[denklem kökleri]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=463</guid>
		<description><![CDATA[3. dereceden bir denklemin bir]]></description>
			<content:encoded><![CDATA[<p>3. dereceden bir denklemin bir tane reel iki tane de imajiner kökü bulunur. Python ile bu reel kökü bulmak için şu fonksiyonu yazabiliriz:</p>
<pre>def denklem_koku(a,b,c,d):
	return -b / (3.0 * a) - (2.0 ** (1.0 / 3.0) * (-b ** 2.0 + 3.0 * a * c)) / (3.0 * a * (-2.0 * b ** 3.0 + 9.0 * a * b * c - 27.0 * a ** 2.0 * d + math.sqrt(4.0 * (-b ** 2.0 + 3.0 * a * c) ** 3.0 + (-2.0 * b ** 3.0 + 9.0 * a * b * c - 27.0 * a ** 2.0 * d) ** 2.0)) ** (1.0 / 3.0)) + (-2.0 * b ** 3.0 + 9.0 * a * b * c - 27.0 * a ** 2.0 * d + math.sqrt(4.0 * (-b ** 2.0 + 3.0 * a * c) ** 3.0 + (-2.0 * b ** 3.0 + 9.0 * a * b * c - 27.0 * a ** 2.0 * d) ** 2.0)) ** (1.0 / 3.0) / (3.0 * 2.0 ** (1.0 / 3.0) * a)</pre>
<p><span id="more-463"></span></p>
<p>İmajiner kökler için i karmaşık sayısını da eklersek şöyle olur (ASCII formatında):</p>
<p>x1 = -b/(3*a) + ((1 <span style="color: #000000;">+</span> i*math.sqrt[3])*(-b^2 + 3*a*c))/(3*2^(2/3)*a*(-2*b^3 + 9*a*b*c &#8211; 27*a^2*d + math.sqrt[4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2])^(1/3)) &#8211; (1 - i*math.sqrt[3])*(-2*b^3 + 9*a*b*c &#8211; 27*a^2*d + math.sqrt[4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2])^(1/3)/(6*2^(1/3)*a)</p>
<p>x2 = -b/(3*a) + ((1 - i*math.sqrt[3])*(-b^2 + 3*a*c))/(3*2^(2/3)*a*(-2*b^3 + 9*a*b*c &#8211; 27*a^2*d + math.sqrt[4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2])^(1/3)) &#8211; (1 + i*math.sqrt[3])*(-2*b^3 + 9*a*b*c &#8211; 27*a^2*d + math.sqrt[4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2])^(1/3)/(6*2^(1/3)*a)</p>
<p>Kaynak: <a href="http://www.josechu.com/ecuaciones_polinomicas/cubica_solucion.htm" target="_blank">http://www.josechu.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/3-dereceden-denklemin-koklerini-bulma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python ile FTP işlemleri</title>
		<link>http://ftoptas.com/python-ile-ftp-islemleri/</link>
		<comments>http://ftoptas.com/python-ile-ftp-islemleri/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 19:30:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftplib]]></category>
		<category><![CDATA[pys60]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=345</guid>
		<description><![CDATA[Dün cep telefonumdan(eski toprak N6600)]]></description>
			<content:encoded><![CDATA[<p>Dün cep telefonumdan(eski toprak N6600) ftp ile dosya göndermeye çalışırken kullandığım python scriptini sizinle paylaşmak istiyorum. Burada yazacağımız kodları ister bilgisayarınızdan ister Python destekleyen telefonunuzdan çalıştırabilirsiniz. Yapacağımız örneklerin kaynak dosyasını <a href="http://ftoptas.com/wp-content/plugins/download-monitor/download.php?id=1">buradan </a>indirebilirsiniz.</p>
<p>Önce ftplib kütüphanesine sahip olup olmadığımızı anlamak için aşağıdaki kodu yazalım.</p>
<p><span id="more-345"></span></p>
<pre name="code" class="python">
import ftplib
</pre>
<p>eğer hata vermediyse sorun yok devam edebiliriz.</p>
<pre name="code" class="python">
from ftplib import FTP
host= 'ftp.ftoptas.com'
kullanici_adi = 'kullanici'
parola = 'bir-iki-uc'
ftp = FTP(host)
ftp.set_pasv('true')
ftp.login(kullanici_adi,parola)
</pre>
<p>Belirttiğimiz parametreler sonucunda FTP sunucusuna bağlandık. Şimdi bulunduğumuz dizindeki dosya ve dizinleri listeleyelim</p>
<pre name="code" class="python">
ftp.retrlines('LIST')
</pre>
<p>Şimdi de bulunduğumuz dizini değiştirelim</p>
<pre name="code" class="python">
ftp.cwd('app')
</pre>
<p>Bulunduğumuz dizinden herhangi bir dosya indirelim</p>
<pre name="code" class="python">
dosya = 'test.txt'
ftp.retrbinary('RETR '+dosya,open(dosya,'wb').write)
</pre>
<p>veya bir dosya upload edelim</p>
<pre name="code" class="python">
dosya_adi = 'tes2t.txt'
dosya = open(dosya_adi,'r')
ftp.storbinary('STOR '+dosya_adi,dosya,1024)
dosya.close()
</pre>
<p>Son olarak açtığımız FTP bağlantısını kapatalım</p>
<pre name="code" class="python">
ftp.quit()
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ile-ftp-islemleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python ile MySQL Bağlantısı ve Temel İşlemler</title>
		<link>http://ftoptas.com/python-ile-mysql-baglantisi-ve-temel-islemler/</link>
		<comments>http://ftoptas.com/python-ile-mysql-baglantisi-ve-temel-islemler/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 13:02:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[bağlanma]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqldb]]></category>
		<category><![CDATA[python dersleri]]></category>
		<category><![CDATA[veritabanı]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=305</guid>
		<description><![CDATA[Python ile MySQLe bağlanmak için]]></description>
			<content:encoded><![CDATA[<p><img src="http://ftoptas.com/wp-content/uploads/2009/09/python-mysql.jpg" alt="python-mysql" title="python-mysql" width="300" height="124" class="aligncenter size-full wp-image-306" /><br />
Python ile MySQLe bağlanmak için önce MySQLdb kütüphanesini <a href="http://sourceforge.net/projects/mysql-python/" target="_blank">şuradan</a> indirip kuralım. Kütüphanenin doğru çalışıp çalışmadığını kontrol etmek için pythonu açıp kütüphaneyi import etmeye çalışalım.</p>
<pre name="code" class="python">
import MySQLdb
</pre>
<p>Eğer problem yoksa devam edebiliriz. Önce veritabanına bağlanmak için sunucu, kullanıcı adı, parola ve veritabanı ismini girelim.</p>
<pre name="code" class="python">
import MySQLdb
db = MySQLdb.connect(host="localhost",user="root",passwd="par01a",db="python")
cursor = db.cursor()
</pre>
<p>şimdi istediğimiz sorguları yazabiliriz.<br />
<span id="more-305"></span></p>
<pre name="code" class="python">
cursor.execute("select * from users")
result = cursor.fetchall()
</pre>
<p>Eğer tablodan birkaç eleman çekmek istiyorsak fetchall() yerine fetchmany() kullanabiliriz.</p>
<pre name="code" class="python">
result = cursor.fetchmany(3)
</pre>
<p>Tablodaki satır sayısını öğrenmek için</p>
<pre name="code" class="python">
cursor.rowcount
</pre>
<p>Veritabanına bilgi girmek için</p>
<pre name="code" class="python">
s = """insert into users (username, password) values ("yeni-kullanici","yeni-sifre")"""
cursor.execute(s)
</pre>
<p>en son eklenen girdinin id numarasını öğrenmek için</p>
<pre name="code" class="python">
cursor.lastrowid
</pre>
<p>Eğer veritabanına tek seferde birden fazla veri eklemek istiyorsak şu yöntemi kullanabiliriz:</p>
<pre name="code" class="python">
s = "insert into users (username, password) values (%s,%s)"
cursor.executemany(s,[("ali","alininparolali"),("veli","velininparolası"),("ayşe","ayşeninparolası")])
</pre>
<p>Son olarak da işimiz bittikten sonra bağlantıyı kapatıyoruz.</p>
<pre name="code" class="python">
cursor.close()
db.close()
</pre>
<p>Kolay gelsin&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ile-mysql-baglantisi-ve-temel-islemler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python ile Resim Üzerine Yazı Yazma</title>
		<link>http://ftoptas.com/python-ile-resim-uzerine-yazi-yazma/</link>
		<comments>http://ftoptas.com/python-ile-resim-uzerine-yazi-yazma/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 10:01:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[imagedraw]]></category>
		<category><![CDATA[imagedraw.text]]></category>
		<category><![CDATA[pil]]></category>
		<category><![CDATA[resim üzerine yazı]]></category>
		<category><![CDATA[text]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=279</guid>
		<description><![CDATA[Python ile grafik işleme yapabilmek]]></description>
			<content:encoded><![CDATA[<p>Python ile grafik işleme yapabilmek için <a href="http://www.pythonware.com/products/pil/" target="_blank">PIL (Python Imaging Library) </a>kütüphanesini kullanıyoruz. Kütüphanenin işletim sistemi ve Python sürümümüze uygun olan versiyonunu indirip kuralım. Kütüphanenin doğru bir şekilde kurulup kurulmadığını test etmek için Python komut satırına şunu yazalım:</p>
<pre name="code" class="python">
import PIL
</pre>
<p>Herhangi bir hata vermediyse kütüphane yüklenmiştir. Şimdi işlem yapmaya başlayabiliriz.</p>
<pre name="code" class="python">
from PIL import Image
resim = Image.open("test.jpg")
print resim.size
</pre>
<p>(241,172)<br />
<span id="more-279"></span><br />
<img class="alignnone" title="test" src="http://ftoptas.com/wp-content/uploads/2009/08/pil/test.jpg" alt="" width="241" height="172" /></p>
<p>Burada önce PIL içerisinden Image nesnesini çağırdık ve open fonksiyonuyla test.jpg resmini açtık. Resmin boyutlarını öğrenmek için size özelliğine bakarız. Image nesnesiyle kullanacağımız diğer metotlar için şunu yazabiliriz:</p>
<pre name="code" class="python">
dir(resim)
</pre>
<p>Resim üzerine bir yazı yazmak için de ImageDraw nesnesini kullanacağız. Bu yazının fontunu belirlemek için ImageFont nesnesini kullanacağız.</p>
<pre name="code" class="python">
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 35)
ciz = ImageDraw.Draw(resim)
ciz.text((10,10), "ftoptas.com", font=f, fill="#0C3446")
resim.save("test2.jpg")
</pre>
<p><img class="alignnone" title="test" src="http://ftoptas.com/wp-content/uploads/2009/08/pil/test2.jpg" alt="" width="241" height="172" /></p>
<p>Önce yazacağımız yazının fontunu arial ve font büyüklüğünü de 20 olarak belirledik. Ardından 4. satırda açtığımız resmi kullanarak bir Draw nesnesi oluşturduk. Bu nesnenin text metodunu kullanarak (10,10) koordinatına &#8220;#0C3446&#8243; renginde ve ayarladığımız fontta yazı yazmış olduk. text metodunun parametreleri şu şekildedir:</p>
<p>text((x,y), &#8220;yazılacak metin&#8221;, font, renk)</p>
<p>Son olarak  yeni resmi test2.jpg olarak kaydediyoruz.</p>
<p>Yazıya biraz gölge efekti vermek için yazıyı iki defa farklı renkte ve x-y koordinatlarının 2 piksel arttırılmış olarak kaydedelim.</p>
<pre name="code" class="python">
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 35)
ciz = ImageDraw.Draw(resim)
ciz.text((8,8), "ftoptas.com", font=f, fill="#3EA3D1")
ciz.text((10,10), "ftoptas.com", font=f, fill="#0C3446")
resim.save("test3.jpg")
</pre>
<p><img class="alignnone" title="test" src="http://ftoptas.com/wp-content/uploads/2009/08/pil/test3.jpg" alt="" width="241" height="172" /></p>
<p>Yazının arkasına açık renkli bir diktörtgen çizip yazının okunabilirliğini arttırabiliriz.</p>
<pre name="code" class="python">
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 35)
ciz = ImageDraw.Draw(resim)
ciz.rectangle(((8,8),(190,48)),fill="#ffffff")
ciz.text((8,8), "ftoptas.com", font=f, fill="#3EA3D1")
ciz.text((10,10), "ftoptas.com", font=f, fill="#0C3446")
resim.save("test4.jpg")
</pre>
<p><img class="alignnone" title="test" src="http://ftoptas.com/wp-content/uploads/2009/08/pil/test4.jpg" alt="" width="241" height="172" /></p>
<p>Draw nesnesinin rectangle metodunu kullanarak belirtiğimiz koordinatlara bir diktörtgen oluşturduk. Yazıya bir açı vermek için şu yöntemi kullanabiliriz:</p>
<pre name="code" class="python">
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 20)
yazi = Image.new('RGB',(120,50))
ciz = ImageDraw.Draw(yazi)
ciz.text((8,8), "ftoptas.com", font=f, fill="#ffffff")
yazi = yazi.rotate(15)
resim.paste(yazi,(20,20))
resim.save("test5.jpg")
</pre>
<p><img class="alignnone" title="test" src="http://ftoptas.com/wp-content/uploads/2009/08/pil/test5.jpg" alt="" width="241" height="172" /></p>
<p>RGB formatında 120&#215;50 piksel boyutunda yeni bir Image oluşturup yazıyı onun içine yazdık. Ardından içinde yazı olan resme 15 derece açı verip eski resmin üzerinde yapıştırdık.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ile-resim-uzerine-yazi-yazma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python ile HTTP POST/GET Metodu Kullanma</title>
		<link>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/</link>
		<comments>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[httplib]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[post metodu]]></category>
		<category><![CDATA[python dersleri]]></category>
		<category><![CDATA[urllib]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=239</guid>
		<description><![CDATA[Elimizde bazı veriler var ve]]></description>
			<content:encoded><![CDATA[<p>Elimizde bazı veriler var ve bunları POST veya GET metoduyla biyerlere göndermemiz lazım. Yanımızda Python betiklerini çalıştırabilicek bir cihaz (misal: herhangi bir bilgisayar -işletim sistemi farketmez- veya s60 telefon) varsa sorun yok. Hemen kodları yazmaya başlayabilirsiniz. İlk örneğimizde sadece string verileri göndereceğiz. Mesela herhangi bir siteye form bilgilerini giriyoruz.</p>
<pre class="python">import urllib, httplib

veriler = urllib.urlencode({'veri':'herhangi bir veri'})
headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
baglanti = httplib.HttpConnection("ftoptas.com")
baglanti.request("POST","/ornekform/gonder/",veriler,headers)
cevap = baglanti.getresponse()
baglanti.close()</pre>
<p><span id="more-239"></span></p>
<p>Önce kullanacağımız kütüphaneleri çağırıyoruz. Biz burada urllib ve httplib kütüphanelerini kullandık. Ardından göndereceğimiz verileri belirledik.    Gördüğünüz gibi verileri dictionary şeklinde yazıyoruz. İlk değer verinin ismi ikincisi de değeri oluyor. headers parametresiyle de bu bağlantının nereden geldiğini belirtiyoruz. Sunucu bağlantının nereden geldiğini header bilgilerinden anlar. Dolayısıyla buraya yazacağımız değerlerle bağlantının bir web tarayıcısından geliyormuş gibi görünmesini sağlayabiliriz. Bunun nedeni ise google gibi bazı siteler  header bilgilerine göre cevap vermektedir. Bir nevi sunucuyu kandırmış gibi oluyoruz. <span style="color: #0000ff;">baglanti</span> isminde bir bağlantı yapıyoruz ve yaptığımız bağlantıyla <span style="color: #0000ff;">POST</span> metodunu kullanarak <span style="color: #0000ff;">ftoptas.com/ornekform/gonder/</span> adresine bilgileri gönderiyoruz. Eğer bu göndermenin ardında bir cevap dönüyorsa bunu da <span style="color: #0000ff;">getresponse()</span> fonksiyonuyla alıyoruz.  Bu şekilde gönderdiğimiz bilgileri okumak için sunucumuzu da PHP ile şu şekilde kodlarız:</p>
<pre class="php">$dosyaadi = "deneme.txt"
// verileri yazacağımız dosyayı açıyoruz
$dosya = fopen($dosyaadi,'a+')
// POST metoduyla gelen verileri okuyoruz
$veri = $_POST['veri']
// okuduğumuz verileri dosyaya yazdırıyoruz
fwrite($dosya, $veri, strlen($veri))
// dosyayı kapatıyoruz
fclose($dosya)
// cevap olarak istemciye dönecek veri
echo "veri başarıyla iletildi."</pre>
<p>Eğer string değil de bir dosya göndermek istiyorsak bunu da şöyle yapabiliriz:</p>
<pre class="python">dosya = open(dosyaadi,'r')
veri = dosya.read()
dosya.close()
veri = veri.encode("zlib")
headers = {"Content-type":"application/x-gzip","Accept":"text/plain"}
baglanti = httplib.HttpConnection(sunucu)
baglanti.request("POST",yol,veri,headers)
cevap = baglanti.getresponse()
cevap_dosya = cevap.read()
baglanti.close()</pre>
<p>Burada ise okuduğumuz dosyayi read() yöntemiyle stringe dönüştürüyoruz. Bu stringi de zlib ile kodlayarak sıkıştırılmış bir dosya haline getiriyoruz. Dolayısıyla header bilgilerinde bunun sıkıştırılmış dosya biçimi olduğunu belirtiyoruz. Geri kalan kısmı ilk örnekte yaptığımız gibi oluyor. cevap_dosya ise veri gönderme sonucunda sunucun bize verdiği cevabın stringe dönüşmüş halidir. Bu yöntemle gönderilmiş verileri PHP sunucumuzda okumak için aşağıdaki gibi kodlayalım.</p>
<pre class="php">// gelen veriyi okuyoruz
$veri = file_get_contents('php://input')
// sıkıştırılmış olarak geldiği için gelen veriyi
// tekrar eski haline getirmek için uncompress yapıyoruz
$dosya = gzuncompress($veri)
// eğer veri yoksa -1 değer döndürüyoruz
if (!$dosya){
echo -1
die()
}
// veriyi kaydedeceğimiz dosyanın ismini belirtiyoruz.
// dosya ismi unique yani seçiliyor yani aynı isimde 2 farklı dosya
// bu kısma herhangi bir dosya ismi de verebilirsiniz.
$uid = uniqid()
$dosyaadi = "$uid.tmp"
// dosyayı oluşturuyoruz
$yaz = fopen($dosyaadi,'wb')
// verileri dosyaya yazıyoruz
fputs($yaz,$dosya,strlen($dosya))
// dosyayı kapatıp cevap dönüyoruz
fclose($yaz)
echo "dosya iletildi."</pre>
<p>Bu kodların tamamı PyS60&#8242;da da çalışmaktadır. Yani telefondan da bunları yapabiliriz.  Şimdi yaptığımız iki örnekte sunucumuzu PHP ile programladık. Bir sonraki yazımda Python sunucuları kullanacağız. Bunun için de Google App Engine üzerinde Django kurup çalıştıracağız. Yani hem sunucu hem istemci tamamiyle Python ile yazılmış olacak.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Python ve UTF-8 Kullanımı</title>
		<link>http://ftoptas.com/python-ve-utf-8-kullanimi/</link>
		<comments>http://ftoptas.com/python-ve-utf-8-kullanimi/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 14:40:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[encode]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=237</guid>
		<description><![CDATA[Python ile programlama yaparken karakter]]></description>
			<content:encoded><![CDATA[<p>Python ile programlama yaparken karakter sorununa rastladıysanız sorununuzu çözecek olan şey karakter kodlamasını değiştirmektir. Bu hataya genelde Türkçe karakter kullanırken rastlamışızdır. Bunun için şu yöntemleri kullanabilirz:</p>
<p>Python betiğinin en başına şu satırı yazarak betiğin utf-8 olarak kodlanmasını sağlarız:</p>
<pre class="python"># -*- coding: utf-8 -*-</pre>
<p><span id="more-237"></span></p>
<p>Dosyadan veri okuyacağımız zaman open yerine şunu kullanırız:</p>
<pre class="python">import codecs
codecs.open('dosya.txt','r','utf-8')</pre>
<p>Ya da herhangi bir stringi utf-8 şeklinde kodlamak için şunu kullanırız:</p>
<pre class="python">s = 'normal string'
u = unicode(s,'utf-8')</pre>
<p>Unicode şeklinde kodladığımız u değişkenini tekrar normal string haline getirmek için şunu kullanırız:</p>
<pre class="python">normal = u.encode()</pre>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ve-utf-8-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google App Engine ile Uygulama Geliştirme</title>
		<link>http://ftoptas.com/google-app-engine-ile-uygulama-gelistirme/</link>
		<comments>http://ftoptas.com/google-app-engine-ile-uygulama-gelistirme/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 17:36:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[google app engine]]></category>
		<category><![CDATA[app engine kurulumu]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://ftoptas.wordpress.com/?p=218</guid>
		<description><![CDATA[Bugün Google App Engine ile]]></description>
			<content:encoded><![CDATA[<p>Bugün Google App Engine ile biraz uğraşayım dedim. Gerçekten çok hoşuma giti. Guestbook tutorial&#8217;ini sonuna kadar okudum ve uyguladım. Sadece 1.5 KB&#8217;lık bir Python betiği sonucunda ortaya çıkan uygulama gayet şaşırtıcı. Gmail hesabınızla giriş yapıp yazı yazılabileceğiniz bir ziyaretçi defteri. Eğer python ile uygulama geliştriyorsanız veya böyle bir fikriniz varsa şiddetle tavsiye ederim. En çok beğendiğim kısmı ise Django kurabilmemiz. Ayrıca bir proje birden fazla kullanıcı tarafından geliştirilebiliyor. Bir proje için 500 MB alan veriyor (beleş tarifede) . Trafik, CPU kullanımı vs. gibi bazı özellikleri arttırmak istediğimizde ise para ödemek zorunda kalıyoruz. Küçük ve orta ölçekte uygulamalar için para ödemeden kullanılabilir gibi görünüyor.</p>
<p>Kısaca nasıl kullanıldığını anlatayım.</p>
<ul>
<li><a href="http://code.google.com/appengine/" target="_blank">şuradan</a> Google App Engine&#8217;e gmail hesabınızla üye oluyorsunuz. Sms ile aktivasyon yapmanız gerekiyor.</li>
<li><a href="http://appengine.google.com/" target="_blank">şuradan</a> Create an Application dedikten sonra bir uygulama oluşturuyoruz. Bir gmail hesabıyla 10 toplam 10 adet uygulama oluşturabiliyoruz.</li>
<li><a href="http://code.google.com/appengine/downloads.html" target="_blank">şuradan</a> Google App Engine SDK&#8217;yı indirip kuruyoruz.</li>
<li><a href="http://code.google.com/appengine/docs/" target="_blank">şuradan</a> dökümantasyonu okuyup nasıl başlayacağımızı öğreniyoruz.</li>
</ul>
<p><span id="more-218"></span></p>
<p>Tutorialdaki örneği birlikte yapalım:</p>
<ul>
<li><span style="color:#800000;">helloworld</span> isminde bir dizin oluşturup içine <span style="color:#800000;">app.yaml</span> isminde bir dosya oluşturalım ve içeriği şöyle olsun:</li>
</ul>
<pre class="python">application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: helloworld.py</pre>
<ul>
<li>Yukarıda projemizi tanımlayan bir dosya oluşturduk. Uygulama ismi <span style="color:#800000;">helloworld</span>, versiyonu <span style="color:#800000;">1</span>, çalışma ortamı <span style="color:#800000;">python</span>, api versiyonu <span style="color:#800000;">1</span> ve /* adresinin kaynak dosyası da <span style="color:#800000;">helloworld.py</span></li>
<li><span style="color:#800000;">helloworld</span> dizininin içine <span style="color:#800000;">helloworld.py</span> isminde bir dosya oluşturup içeriğini şöyle yapalım:</li>
</ul>
<pre class="python">print 'Content-Type: text/plain'
print ''
print 'Hello, world!'</pre>
<ul>
<li>DOS komut isteminden <span style="color:#800000;">dev_appserver.py helloworld/</span> komutunu verip sunucumuzu çalıştıralım. Bu komutu yazarken <span style="color:#800000;">helloworld</span> dizininin bir üst dizininde olmalıyız.</li>
<li>Web tarayıcımızdan <span style="color:#800000;">http://localhost:8080/</span> yazdıktan sonra kodlarımızın çalıştığını görebiliriz. Ekranda sadece bir <span style="color:#0000ff;">Hello, world!</span> görüyoruz.</li>
<li>Uygulamamızı sunucuya yüklemeden önce app.yaml dosyasındaki <span style="color:#800000;">application: helloworld</span> satırını değiştirmemiz lazım. <span style="color:#800000;">helloworld</span> yerine kaydolurken belirlediğimiz projenin ismini yazalım.</li>
<li>Yaptıklarımızı App Engine sunucularına yüklemek için komut isteminden <span style="color:#800000;">appcfg.py update helloworld/</span> yazdığımızda bizden gmail kullanıcı adını ve parolasını sorduktan sonra yükleyecektir.</li>
<li><span style="color:#800000;">uygulama-adi.appspot.com</span> adresinden uygulamanızı görebilirsiniz.</li>
</ul>
<p>Ayrıntılı dökümantasyon için şuraya bakabilirsiniz. Ama önce şu sayfalara bakmanızı tavsiye ederim: <a href="http://code.google.com/appengine/docs/python/gettingstarted/introduction.html">giriş</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/devenvironment.html">geliştirme ortamı</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/helloworld.html">merhaba dünya</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/usingwebapp.html">webapp çatısının kullanımı</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/usingusers.html">kullanıcı servisleri</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/handlingforms.html">webapp formları</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/usingdatastore.html">datastore kullanımı</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/templates.html">şablon kullanımı</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/staticfiles.html">statik dosya kullanımı</a>, <a href="http://code.google.com/appengine/docs/python/gettingstarted/uploading.html">uygulamayı yükleme</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/google-app-engine-ile-uygulama-gelistirme/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Python lambda Fonksiyonu</title>
		<link>http://ftoptas.com/python-lambda-fonksiyonu/</link>
		<comments>http://ftoptas.com/python-lambda-fonksiyonu/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 19:21:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[lambda]]></category>
		<category><![CDATA[lambda fonksiyonu]]></category>
		<category><![CDATA[lambda function]]></category>
		<category><![CDATA[python dersleri]]></category>

		<guid isPermaLink="false">http://ftoptas.wordpress.com/?p=157</guid>
		<description><![CDATA[Python ile programlama yapmaya başladıktan]]></description>
			<content:encoded><![CDATA[<p>Python ile programlama yapmaya başladıktan sonra, bana pythondan daha eğlenceli gelen bir programlama dili olmadığını düşünüyorum. Pythonun en önemli özelliklerinden biri az kodla çok şey anlatabilme özelliğinin olmasıdır. Bunun bir örneği ise <span style="color:#008000;"><strong>lambda</strong></span> fonksiyonudur.</p>
<p><strong><span style="color:#008000;">lambda</span> Fonksiyonu Ne İşe Yarar?</strong></p>
<p>Fonksiyon yazmak kodlarımızın daha anlaşılır, kısa ve temiz olmasını sağlar. Aynı kodları tekrar tekrar kullanmamamız için yazarız. Fakat bazen ufak tefek işler yapmak için defalarca fonksiyon yazarız. Fonksiyonları kod tekrarı yapmamak için kullanıyorduk hani. İşte tam burada lambda fonksiyonu devreye giriyor. Tek değişkenli bir fonksiyon kullanmamız gerekiyorsa bunu işlem içinde tek satırda ekstra kod veya satır eklemeden olayı halletmemizi sağlar. Mesela elimizde bir dizi var ve dizinin her elemanını bir sayıyla çarpıp başka bir dizi oluşturmamız lazım. Bunu yapmak için bir <span style="color:#008000;"><strong>for</strong></span> döngüsü kullanabiliriz fakat bu fazladan bir değişken kullanmamıza neden olur ve enaz iki satır olur. Hele bi de bu dizinin içindeki bazı elemanları bir eleme yaparak alıyorsak bu da bize bir <span style="color:#008000;"><strong>if</strong></span> kullanmamıza malolur. lambda fonksiyonu genelde <span style="color:#ff6600;"><strong>map(), filter(), reduce()</strong></span> gibi fonksiyonlarla birlikte kullanılır. Lafı fazla uzatmadan örneklere geçelim.</p>
<p><span id="more-157"></span></p>
<p>Bir f fonksiyonu yazalım çıkış değeri giriş değerinin 3 katı olsun.</p>
<pre name="code" class="python">
&gt;&gt;&gt;def f(x):
...    return x*3
...
&gt;&gt;&gt;f(2)
6
&gt;&gt;&gt;
</pre>
<p><span style="color:#ff6600;">f(x)</span> fonksiyonunu tanımladık ve<span style="color:#ff6600;"> f(2)=6 </span>oldu. Şimdi aynı işi lambda ile yapacağız</p>
<pre name="code" class="python">
&gt;&gt;&gt;g=lambda x:x*3
&gt;&gt;&gt;g(2)
6
&gt;&gt;&gt;
</pre>
<p>veya</p>
<pre name="code" class="python">
&gt;&gt;&gt;(lambda x:x*3)(2)
6
&gt;&gt;&gt;
</pre>
<p>Şimdi biraz daha karışık bir örnek yapalım yani lambda yı <strong><span style="color:#ff6600;">filter() </span></strong>fonksiyonu ile kullanma:</p>
<pre name="code" class="python">&gt;&gt;&gt;aylar=["Ocak","Subat","Mart","Nisan","Mayis","Haziran","Temmuz","Agustos","Eylul","Ekim","Kasim","Aralik"]
&gt;&gt;&gt;print filter(lambda x:x[0]=="M",aylar)
['Mart', 'Mayis']
&gt;&gt;&gt;
</pre>
<p>yazdığımız fonksiyon bize M harfi ile başlayan ayları çıkış olarak verdi. lambda fonksiyonunu filter ile kullandığımızda dizinin içinde belli bir koşula uyan (buradaki koşulumuz M harfi ile başlaması) elemanları çekme.</p>
<p>lambda yı<span style="color:#ff6600;"><strong> map()</strong></span> fonksiyonu ile kullanma:</p>
<pre name="code" class="python">
&gt;&gt;&gt;sayilar=[0,1,2,3,4,5,6,7,8,9]
&gt;&gt;&gt;print map(lambda x:x**2,sayilar)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
&gt;&gt;&gt;
</pre>
<p>Burada elde ettiğimiz sonuç sayilar dizisindeki her elemanın karesidir. <span style="color:#ff6600;"><strong>map()</strong></span> fonksiyonuyla her elemana bir işlem uygularız.</p>
<pre name="code" class="python">
&gt;&gt;&gt;sayilar=[0,1,2,3,4,5,6,7,8,9]
&gt;&gt;&gt;print reduce(lambda x,y:x+y,sayilar)
45
&gt;&gt;&gt;
</pre>
<p><strong><span style="color:#ff6600;">reduce()</span></strong> fonksiyonuyla tüm elemanları topladık.</p>
<pre name="code" class="python">
&gt;&gt;&gt;asal=range(2,50) #asal dizisi 2 den 50 ye kadar elemanı olan bir dizi
&gt;&gt;&gt;for i in range(2,8):
...    asal=filter(lambda x:x==i or x%i,asal)</span>
...
&gt;&gt;&gt;print asal
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
&gt;&gt;&gt;
</pre>
<p>Evet gördüğünüz gibi bir lambda fonksiyonuyla 2 ile 50 arasındaki asal sayıları bulduk. Kullandığımız formül &#8220;Sieve of Eratosthenes&#8221; formülü yani kalburdan geçirmek gibi bişey. İlk olarak 2 ile 50 arasındaki sayıları bir diziye yazdık. Ardından kullandığımız döngüde i sayısını 2&#8242;den 8&#8242;e artırdık. Dizideki her elemanı 2 koşula <strong>(x==i or x%i)</strong> bağlı kalması şartıyla dizinin içinde bıraktık. Yani bu 2 koşula uymayanlar döngünü bir sonraki adımında dizinin içinde olmayacak. Böylece döngü bittiğinde asal sayıları elde etmiş olduk.</p>
<pre name="code" class="python">
&gt;&gt;&gt;print map(lambda x:len(x),'suan disarda kar yagiyor'.split())
[4, 7, 3, 7]
&gt;&gt;&gt;
</pre>
<p>split() fonksiyonu ile stringimizi boşlukların olduğu yerlerden bölüyoruz yani örnek verecek olursak<span style="color:#ff6600;"> &#8216;py thon&#8217;.split() </span>yazdığımızda <span style="color:#ff6600;">['py', 'thon']</span> çıktısını alırız. &#8216;suan disarda kar yagiyor&#8217; stringini önce <span style="color:#ff6600;"><strong>split()</strong></span> fonksiyonu ile kelimelere ayırıyoruz sonrada lambda ile her kelimenin kaç harf olduğunu buluyoruz.</p>
<p>Bu örnekleri çoğaltabiliriz. Kısacası <span style="color:#008000;"><strong>lambda</strong></span> fonksiyonu ekstradan bir fonksiyon veya döngü kullanmadan toplu işlem yapmammız içindir.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-lambda-fonksiyonu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PyS60 (Python for Symbian) inbox modülü</title>
		<link>http://ftoptas.com/pys60-python-for-symbian-inbox-modulu/</link>
		<comments>http://ftoptas.com/pys60-python-for-symbian-inbox-modulu/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 08:45:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[pys60]]></category>
		<category><![CDATA[inbox]]></category>
		<category><![CDATA[mobil]]></category>
		<category><![CDATA[modül]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[symbian]]></category>

		<guid isPermaLink="false">http://ftoptas.wordpress.com/?p=49</guid>
		<description><![CDATA[Symbian telefonunuzda Python scriptlerini çalıştırabilirsiniz.]]></description>
			<content:encoded><![CDATA[<p>Symbian telefonunuzda Python scriptlerini çalıştırabilirsiniz. PythonforS60 uygulamasını <a title="buradab" href="http://sourceforge.net/projects/pys60" target="_blank">buradan</a> indirebilirsiniz.Inbox modülü sayesinde gelen kutunuzdaki mesajların adres, içerik, okunmuş olup olmaması ve tarih bilgilerini okuyabilir; okunmamış yapabilir ve silebilirsiniz.</p>
<pre name="code" class="python">#e:systemappspythoninbox_deneme.py
import inbox  #inbox modülünü tanıtıyoruz
kutum = inbox.Inbox() #kutum isminde bir inbox nesnesi tanımlıyoruz
mesaj_no = kutum.sms_messages()#mesaj_no değişkenine tüm mesajların idlerini atıyoruz.

print kutum.address(mesaj_no[0]) #gelen kutusundakii 0 numaralı mesajın adresini ekrana yazdırıyoruz.</pre>
<p><span id="more-49"></span></p>
<pre name="code" class="python">print kutum.content(mesaj_no[0]) #0 nolu mesajın içeriğini ekrana yazdırıyoruz.
print kutum.time(mesaj_no[0]) #0 nolu mesajın tarihini ekrana yazdırıyoruz.
kutum.set_unread(mesaj_no[0]) #0 nolu mesajı okunmamış yapıyoruz.
print kutum.unread(mesaj_no[0]) #eğer mesaj okunduysa 0 okunmadıysa 1 sonucunu verir.
kutum.delete(mesaj_no[0]) #gelen kutusundaki ilk mesajı siliyoruz.</pre>
<p>Yukarıdaki dosyayı <a title="buradan" href="http://www.box.net/shared/fof052u5s5" target="_blank">buradan</a> indirebilirsiniz.</p>
<p>Ayrıca bind komutunu kullanarak mesaj gelir gelmez olacak olan olaylarıda yazabiliriz. Aşağıda yapacağımız örnekte mesaj geldiğinde mesajı hafıza kartında belirlediğimiz bir dizin içerisine [adres]+[tarih]+[.txt] olarak kaydeden bir kod yazacağız.</p>
<pre name="code" name="code" class="python>
#e:systemappspythongeleni_kaydet.py dosyamızın kaydedildiği yer

    import inbox, e32, appuifw  #gerekli kütüphaneleri tanıtılıyor
    def mesaj_geldi(msj_id): #mesaj_geldi ismindi bir fonksiyon yazılıyor
    kutum = inbox.Inbox()   #inbox nesnesi
    icerik = kutum.content(msj_id)  #gelen mesajın içeriği okunur
    adres = kutum.address(msj_id)   #mesajın adresi
    zaman = kutum.time(msj_id)   #mesajın zamanı
    dizin = u'e:/mesajlarim/' #mesajları kaydedeceğimiz dizin.Eğer bu dizin mevcut değilse hemen oluşturalım.
    dosya = open(dizin+adres+'-'+zaman+'.txt','w') # w parametresiyle yeni dosya olşturulur.
    dosya.write(icerik)   #mesaj içeriği dosyaya yazılır
    print 'Mesaj kaydedildi'
    dosya.close() # dosya kapatılır.
    kutum = inbox.Inbox() #yeni bir inbox nesnesi
    kutum.bind(mesaj_geldi) #oluşturduğumuz fonksiyon kutum nesnesine bağlanır böylece her yeni mesajda bu fonksiyon çalışır.
    print 'Uygulama Baslatildi.'
    app_lock = e32.Ao_lock()   #program açıldıktan sonra hemen kapanmaması için uygulamayı bekletiyoruz.
    appuifw.app.exit_key_handler = app_lock.signal
    app_lock.wait()
</pre>
<p style="margin-bottom:0;">Yukarıdaki dosyayı <a title="buradan" href="http://www.box.net/shared/bmnqi0aik3" target="_blank">buradan</a> indirebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/pys60-python-for-symbian-inbox-modulu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django Dersleri &#8211; 1 (Python, Django, MySQL, MySQLdb Kurulumu)</title>
		<link>http://ftoptas.com/22/</link>
		<comments>http://ftoptas.com/22/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 10:58:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[django dersleri]]></category>
		<category><![CDATA[django kurulumu]]></category>
		<category><![CDATA[mysql kurulumu]]></category>
		<category><![CDATA[mysqldb kurulumu]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python framework]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web tasarım]]></category>

		<guid isPermaLink="false">http://ftoptas.wordpress.com/?p=22</guid>
		<description><![CDATA[Django Python tabanlı bir web]]></description>
			<content:encoded><![CDATA[<p style="margin-left:.13cm;text-indent:.58cm;margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:AlMohanad;"><span style="font-size:small;"><span style="background:transparent none repeat scroll 0 0;">Django Python tabanlı bir web geliştirme çerçevesidir.(Web Development Framework) Geliştirilmesindeki amaç web tasarımını kolaylaştırmak, daha kısa sürede yapmak ve kod tekrarını en aza indirebilmektir.Django ile çok kısa sürede yüksek seviyeli ve kaliteli web sayfları hazırlayabilrisiniz.</span></span></span></span></p>
<p style="margin-left:.13cm;text-indent:.58cm;margin-bottom:0;" align="left"><span style="color:#000000;"><span style="font-family:AlMohanad;"><span style="font-size:small;"><span style="background:transparent none repeat scroll 0 0;">Djangoda sizin için hazır kütüphaneler bulumaktadır.Mesela form oluşturmak için sayfalarca kod yazmak yerine hazır kütüphane kullanıp birkaç satırda formunuzu oluşturabilirsiniz.</span></span></span></span></p>
<p><strong>Python Kurulumu</strong></p>
<p>Django kurmak için sisteminizde Pythonun kurulu olması gerekir. Eğer linux tabanlı bir işletim sistemi kullanıyorsanız zaten yüklüdür.Linux tabanlı bir işletim sistemi kullananlar bu kısmı atlayıp Django kurulumuna geçebilir.</p>
<p><span id="more-22"></span></p>
<p>Pythonu <a title="python.org" href="http://www.python.org/" target="_blank">http://www.python.org/</a> adresinden indirip kurabilirsiniz.</p>
<p><strong>Django Kurulumu</strong></p>
<p>Djangoyu <a title="http://www.djangoproject.com/download" href="http://www.djangoproject.com/download" target="_blank">http://www.djangoproject.com/download</a> adresinden indirebilirsiniz. &#8220;Get the latest official version&#8221; başlığının altında son sürümünü indirebilirsiniz. Biz 0.96.2 versiyonunu kullanacağız. İndirdiğiniz dosya sıkıştırılmış bir dosya olacaktır. Bu dosyayı açıp içindeki dosyalar çıkarılır (execute). Daha sonra Terminal (linux kullanıcıları için) veya DOS(windows kullanıcıları için) komut isteminden çıkardığımız dizin seçilir ve <span style="color:#800000;">python setup.py install</span> komutu verilir.</p>
<blockquote><p>dizin seçmek için cd komutu kullanılır.</p></blockquote>
<p><strong>MySQL Kurulumu</strong></p>
<p>Bu kısım ilk etapta gerekmiyor fakat ileride lazım olacağı için şimdiden kuruyoruz. Django veritabanı olarak ben MySQL seçtim ama farklı veritabanı sistemleri de kullanılabilir. Djangonun desteklediği veritabanı sistemleri: PostgreSQL, MySQL, SQLite, Microsoft SQL Server, Oracle.</p>
<p>Eğer linux tabanlı bir işletim sistemi kullanıyorsanız (ör: Ubuntu) MySQL kurmak sizin için çok basit.</p>
<blockquote><p>Terminali açıp <span style="color:#800000;">sudo apt-get install mysql-server</span> yazmanız yeterli.</p></blockquote>
<p>Windows kullanıcılarının biraz daha uğraşması lazım :)</p>
<blockquote><p><a title="http://dev.mysql.com/downloads/" href="http://dev.mysql.com/downloads/" target="_blank">http://dev.mysql.com/downloads/</a> adresinden işletim sisteminize  uygun dosyayı indirip kurmalısınız.</p></blockquote>
<p><strong>MySQLdb Kurulumu</strong></p>
<p>MySQLdb bir python kütüphanesidir. Python içinde MySQL kullanmanızı sağlar. MySQLdbyi <a title="http://sourceforge.net/project/showfiles.php?group_id=22307" href="http://sourceforge.net/project/showfiles.php?group_id=22307" target="_blank">http://sourceforge.net/project/showfiles.php?group_id=22307</a> adresinden indirebilirsiniz veya terminalin gücünü kullanabilirsiniz. İşte ubuntuya geçmek için bir sebep daha. Terminalden <span style="color:#800000;">sudo apt-get install python-mysql <span style="color:#000000;">yazmanız yeterli.</span></span></p>
<p>Artık Djangoya başlayabiliriz.Gerekli yazılımların hepsini kurmuş olduk. Size tavsiyem bir an önce açık koda geçin. Farkı hissedeceksiniz. Başlangıç için Ubuntu 8.04 Hardy Heronu (şu an son sürüm) deneyebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/22/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

