From: Yuce Tekol (yucetekol@gmail.com)
Date: Tue 08 May 2007 - 14:35:20 EEST
Merhaba
08.05.2007 tarihinde Alper KANAT <tunix@raptiye.org> yazmış:
> Tekrar Merhaba,
>
> Cevap veren herkese teşekkür ederim. Peki Python'da hiç bir altyapı
> (framework) kullanmadan ne yazıyoruz ? Nasıl yazıyoruz ? Açık kalan
> kısım bu şu anda aklımda.. Yazdığım dosyanın soyadı ne oluyor mesela ?
> Py ya da PSP ? PSP'nin bir framework olduğunu bilmiyordum açıkcası..
> Biraz acemi bir soru olduğunun farkındayım ama hiç bir şeye bağımlı
> kalmadan da (örneğin çok basit bir form yazacağımda) sırf Python kodu
> ile işi nasıl halledebilirim ? Bu durumda en iyi çözüm PSP mi, yoksa
> başka bir şey mi ?
Aslinda hicbir altyapi kullanmadan birsey yapmak olanaksiz (en azindan
kendizinin o alt yapiyi hazirlamaniz gerekir) ama kastettiginiz sadece
Python ile gelen standart kutuphanelerle birseyler yapmaksa, onunuzde
iki secenek var, ya CGI kullanacaksiniz, yada Python'in 2.5 ve uzeri
surumlerini hedefliyorsaniz WSGI (diger Python surumleri icin ayri
olarak mevcut).
Eger CGI kullanacaksaniz Python'in kendi web sunucusunu yada Apache,
vs gibi baska bir sunucu kullanabilirsiniz. Harici bir sunucu
kullanacaksaniz sunucuyu .py uzantili dosyalari Python ile calistirmak
icin kendinizin ayarlamasi gerekir. Eger yapacaginiz site ciddi
anlamda kullanilacaksa harici bir sunucuda calistirmaniz lazim.
Google'da arama yaptigimmda Python ve CGI ile ilgili su siteyi buldum:
http://www.cs.virginia.edu/~lab2q/
Eger yapacaginiz is sadece bir form goruntuleyip, girilen bilgileri
veritabanina atmaksa ve sitenin cok fazla ziyaretcisi olmayacaksa CGI
kullanin; ama bence daha da kolayi PHP kullanmak (hedefiniz kucukse,
caninizi fazla acitmayacaktir, ustelik projenizi cok ucuza yada
bedavaya host edebilirsiniz). Ama yaptiginiz is, daha buyuk bir
projenin parcasiysa, kesinlikle CGI olmayan bir Python web framework'u
kullanmanizi oneriririm.
>
> Bu arada veritabanı için kod yazarken genellikle T-SQL kodları hep aynı
> bildiğim kadarıyla.. Arada farkeden veritabanına bağlanış şekli ya da
> başka bir şey mi ?
T-SQL, MS-SQLServer'in SQL diyalekti. SQL'in buyuk kismi
standartlastirilmis, ama butun SQL diyalektleri arasinda onemli
farklar da mevcut, bu yuzden yazdiginiz programi bir SQL diyalekti
uzerine yazarsaniz, buyuk ihtimalle digerine gecmek isterseniz sIkInti
yasayacaksiniz (Bunun bir benzerini birkac yil once MS-Visual Studio
6'da yazdigim C++ programlarini baska hicbir derleyicide
derleyemeyince aci bicimde yasamistim ben de). Bunu asmak icin
veritabanina direkt erisen kodlar ayni modulde toplaniyor, ve
veritabanina dolayli yoldan ulasiliyor (veritabani degistiginde sadece
bu modulu degistirmeniz yetiyor). Daha da iyisi hic SQL kodu yazmayip
SQLAlchemy gibi bir paket kullanmak (Python icin).
SQLAlchemy ile ilgilenenler icin:
http://www.sqlalchemy.org/
> Son olarak, kendi altyapınızı neden yazdığınızı sorsam ? Böyle bir şeye
> neden ihtiyaç duyulur ? Sanırım bu soruyu sormamın sebebi "framework"
> kavramını da tam oturtamadığımdan..
Programcilar ozellikle web programciliginda surekli ayni seyle
ugrasiyor, sunucuya gelen istegi al, yorumla, bir cevap uret, gonder.
Surekli tekrarlanan isleri yapmak icin kitapliklar (yada paketler,
moduller) yaziliyor. Bir framework'de bir kitapliga benziyor, ama bir
kitaplik kodu nasil yazacagimiza, kaynak dosyayi nereye koyacagimiza
pek karismazken, frameworkler bunu da belirliyor. Mesela bazi
frameworklerde yazdiginiz dosyanin gorulmesi icin proje dizininin
altinda "controllers" adinda bir dizine kaydetmeniz gerekiyor; yada
yazdiginiz kontrolor sinifinin adinin "Controller" ile bitmesi
gerekiyor. Bu yapiyi olusturmakta programciya yardim eden
programciklar da frameworkun parcasidir; mesela proje dizinini kurmak
icin kullanilan bir programcik.
Peki neden birisi kendi frameworkunu yazmak ister? Baskalarinin
yazdigini eksik gordugunde, yada yapmak istediklerini kendi yoluyla
yapmak istediginde diyebiliriz.
Bir frameworkun isimizi nasil kolaylastirdigini bir ornekle daha rahat
gorebiliriz. Mesela sunucumuza su istek yapilmis olsun:
http://www.abc.com/sayfa/merhaba?renk=mavi
Sunucu bize bu istegi iletiyor ve cevap bekliyor. Ne yapacagiz? Eger
bir framework kullanmadiysak bize iletilen bu istegi kendimiz
parcalara bolup yorumlamamiz lazim. Bircok Python web framework'u ise
bunu su sekilde yorumlar:
/sayfa/merhaba?renk=red
sayfa : bir kontrolorun adi (bir uygulama gibi de dusunulebilir)
merhaba: sayfa kontrolorunun merhaba yontemi
renk=mavi: merhaba yontemine gonderilen bir parametre
Mesela bu istegi isleyecek olan sinif belki de su sekildedir
(varsayalim ekrana belirtilen renkte 'Merhaba' yazsin):
class Sayfa:
def merhaba(self, renk):
return Response(renk.join(['<div style="', '">Merhaba<"']))
Eger bir framework kullanmasaydik bu kod cok daha uzun olacakti.
Kurabiyeler (cookie), kullanici yetkilendirme (authorization), vs ile
ugrasmak da cabasi.
Son olarak Python web frameworkleri ile kolayca yapip da (benim
bildigim kadariyla) PHP, ASP, JSP, vs ile ayni kolaylikla
yapamayacaginiz birsey su istekler icin uygun kodu yazmak:
www.abc.com/topla/1/2/20.5 => 23.5 degerini gonderir
www.abc.com/topla/1/2/20.5/10/35 => 68.5 degerini gonderir
Umarim yardimci olmustur,
Yuce
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama