<?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>serkan &#187; django</title>
	<atom:link href="http://serkan.gen.tr/kategori/django/feed" rel="self" type="application/rss+xml" />
	<link>http://serkan.gen.tr</link>
	<description>her kelebek bir süre tırtıl olarak yaşar</description>
	<lastBuildDate>Thu, 02 Sep 2010 15:29:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Yazmayı Unuttum Neredeyse</title>
		<link>http://serkan.gen.tr/aug/254</link>
		<comments>http://serkan.gen.tr/aug/254#comments</comments>
		<pubDate>Thu, 11 Feb 2010 16:45:03 +0000</pubDate>
		<dc:creator>serkan</dc:creator>
				<category><![CDATA[ben yaptım]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://serkan.gen.tr/aug/254</guid>
		<description><![CDATA[En son iki ay önce yazı yazmışım buraya. Aslında bu kadar ara vermiyordum. Her ay en az bir yazım oluyordu. Hatta geçtiğimiz Ocak ayı hiç yazı içermeyen ikinci ay oldu aylar sonra. Neyse çok önemli değil. Vakit bulamıyorum demek de doğru değil. Yazmak içimden gelmiyor. Bazen böyle oluyor. Bazen de söyleyecek bir şey kalmıyor. Elbette [...]]]></description>
			<content:encoded><![CDATA[<p>En son iki ay önce yazı yazmışım buraya. Aslında bu kadar ara vermiyordum. Her ay en az bir yazım oluyordu. Hatta geçtiğimiz Ocak ayı hiç yazı içermeyen ikinci ay oldu aylar sonra. Neyse çok önemli değil. Vakit bulamıyorum demek de doğru değil. Yazmak içimden gelmiyor. Bazen böyle oluyor. Bazen de söyleyecek bir şey kalmıyor. Elbette yazacak çok şey var ama bu çoğu zaman yazmak ya da daha doğrusu yazmaya başlamak için yeterli olmuyor.</p>
<p>Arada bir bloğumun yapısında biraz değişiklik yapmayı düşünüyorum. Bazı konulara biraz daha odaklanmayı ve ciddi yazılar yazmayı planlıyorum. Şimdilerde bu planlar sadece kağıt üstünde kalıyor. Henüz bunun için kılımı kıpırdatabilmiş değilim. Bir süre daha böyle gideceğine eminim. Başka işlerim var.</p>
<p>İş demişken. Geçenlerde uluslararası bir kongre olan <a href="http://www.sip2010.org/">SIP2010</a> için kayıtları, başvuru özetlerini ve ödemeleri kabul eden bir web uygulaması yazdım Django ile. Tabi tasarımı ben yapmadım. O yüzden iyi çalışmanın yanında güzel de görünür oldu. Bunu buraya not düşmek istedim çünkü ciddi anlamda bir başkası için kod yazdığım ilk durum oldu bu. Genelde sadece kendi kendime ya da birileri ile birlikte yazılım geliştirip web servisi olarak sunmaya çalışıyorum.</p>
<p>Tekrar yazı yazmıyor olmama dönersek&#8230; Sanırım bu olaydaki en büyük katkıya FriendFeed sahip. <a href="http://friendfeed.com/serkan">Aslında orada da çok sık yeni bir şeyler söylediğim yok</a> ama takip etmek ve az da olsa yorum yazmak ses çıkarma arzumı bastırmama sebep oluyor galiba. Evet asıl suçlu FriendFeed ve bir süre daha böyle kalabilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://serkan.gen.tr/aug/254/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google App Engine&#8217;de Django 1.0 kullanmak</title>
		<link>http://serkan.gen.tr/aug/196</link>
		<comments>http://serkan.gen.tr/aug/196#comments</comments>
		<pubDate>Mon, 19 Jan 2009 22:19:00 +0000</pubDate>
		<dc:creator>serkan</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Linux Gezegeni]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://serkan.gen.tr/aug/196</guid>
		<description><![CDATA[Google App Engine, şuan halen varsayılan olan 1 numaralı uygulama geliştirme arayüzü (API) ile yayına başladığında içerisinde o zamanın kararlı sürümü Django 0.96 ile geliyordu. O zaman bile eskimiş olan bu Django sürümü üstüne şimdi 1.0 ve onun güvenlik güncellemeleri ile örneğin şuan 1.0.2 çıkmış durumda. Google&#8217;ın App Engine için yeni bir API versiyonu çıkarmadan [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/appengine/">Google App Engine</a>, şuan halen varsayılan olan 1 numaralı uygulama geliştirme arayüzü (API) ile yayına başladığında içerisinde o zamanın kararlı sürümü <a href="http://www.djangoproject.com/">Django</a> 0.96 ile geliyordu. O zaman bile eskimiş olan bu Django sürümü üstüne şimdi 1.0 ve onun güvenlik güncellemeleri ile örneğin şuan 1.0.2 çıkmış durumda. Google&#8217;ın App Engine için yeni bir API versiyonu çıkarmadan django sürümünü güncellemesi mümkün değil. Yeni bir API sürümünün ne zaman çıkacağı da belli değil. Bunlar bir kenara böyle birşeyi beklemek ise hiç mantıklı değil. Haliyle siz kendi ellerinizle kurabileceğiniz bir sürüm kullanmak isteyebilirsiniz.</p>
<p>App Engine disk alanında binden fazla dosya barındırmamak gibi bir sert limite sahip. Hatta bu donanım kaynaklı bir kısıtlama olduğundan ilerde parasını ödeyip genişletebileceğiniz bir özellik olmayacak. Oysa tek başına Django bile bu dosya sayısından fazlasını içeriyor. O halde ne yapmalı? Python&#8217;un geliştiricisi ve App Engine takımının da başı olan Guido&#8217;nun tavsiyesine göre Django&#8217;yu sıkıştırarak tek bir zip dosyası haline getirmek ve sunucuya yollamak ile tamamen açık olarak yollamak arasında bir fark yok. Zaten sunulmadan önce derleyip gerektiği gibi algılayan sisteme ilgili modülleri zip dosyası içerisinden yükleme emri vermek hem kolay hem de verimli.</p>
<p>Yanlız App Engine&#8217;de farklı bir kısıtlama daha var. Hiç bir dosya 1MB&#8217;dan daha büyük olamaz. Bu kısıtlamaya tabi ki bizim ziplenmiş Django kütüphaneniz de dahil. Django&#8217;nun python dosyalarından oluşan kısmını olduğu gibi sıkıştırıp boyutunu kontrol ettiğinizde 3.5MB&#8217;lık bir dosya ile karşılaşıyorsunuz. Ama tabi ki otomatik admin arayüzü gibi zaten Google App Engine üzerinde çalışmayan kısımları ayıklayarak 1MB sınırının epeyce altına inmek mümkün. Ben bir de desteklenmeyen uluslararasılaştırma dosyalarını yok ettim. Hatta yetmedi Django içine yeni eklenmiş Gis frameworke veda ettim.</p>
<p>Bunun için Google Code&#8217;daki App Engine sayfasında <a href="http://code.google.com/appengine/articles/django10_zipimport.html">bir makale</a> yayınlamışlar. Tüm bunları ben de o makaleden öğrendim ama bana kalırsa pek yeterli değil. Ben ona uyduğumda elimde halen 2.5MB boyutunda yani yeterince kırpılmamış bir kütüphane dosyasına sahiptim. O makaleye ek olarak hangi klasörlerin silinmesinin tamamen zararsız olsuğunu gösteren bir ip ucu lazım. Benim keşfettiğim haline bir bakalım.</p>
<p>Öncelikle hatırlatmakta fayda var. <a href="http://www.djangoproject.com/download/">DjangoProject&#8217;den indirdiğiniz</a> dosya muhtemelen Django-1.0.2-final.tar.gz gibi bir isme sahip ya da sürüm numarası değişik. Bu dosyayı açtığınızda içerisinde bir sürü dizinle karşılaşacaksınız. Bizim ilgilendiğimiz bu dizinler arasından &#8220;django&#8221; isimli olanı. O dosyayı bir kenara alın ve içerisindeki -aşağıda bahsettiğim- gereksiz kısımları silmeye başlayın:</p>
<blockquote><p><strong>/django/contrib/admin<br />
/django/contrib/admindocs<br />
/django/contrib/gis</strong> <em>(dev gibi, sadece bunu silseniz bile yeter)</em><br />
<strong>/django/conf/locale/*</strong> <em>(bu dizin içinde sadece kendi ilgilendiğiniz dili bırakın gerisini yok edin, hatta hiç birini bırakmasanız bile muhtemelen sorun olmayacak)</em><br />
<strong>/django/bin</strong><br />
<strong>/django/test</strong></p></blockquote>
<p>Ben Google App Engine&#8217;deki tüm çalışmalarımda Django kullanyorum ve şimdiye kadarki her denememde büyük kolaylık sağlayan <a href="http://code.google.com/p/google-app-engine-django/">Google App Engine Helper for Django</a> yazılımını kullandım. Google tarafından destekleniyor olması güvenmemin tek sebebi, yoksa bel bağlamak doğru olmazdı. Yanlız dikkatli olmak gerek. Kod deposunun anasayfasında 52.revizyondan kalma indirilebilir bir sürüm var. Eğer 1.0 öncesi haliyle kullanmak istiyorsanız uygun ama Django 1.0 için <a href="http://code.google.com/p/google-app-engine-django/source/checkout">trunk versiyonunu</a> çekmelisiniz. Şuan yayında olan 64.revizonu indirdikten sonra üstte belirttiğim dizinlerden arındırılmış ve sıkıştırılmış django.zip dosyasını helper uygulamasının ana dizinine koymanız ve yerel sunucunuzu olağan şekilde çalıştırmanız yeterli. Eğer dosyayı doğru yere koymazsanız zaten sunucu başlangıcında Django 1.0&#8242;a ihtiyaç olduğunu belirten bir hata mesajı ile karşılaşacaksınız. Yerel sunucuda 3.5MB&#8217;lık dev halini kullanmanız sorun çıkarmaz ama sunucuya göndermenin mümkün olmadığını unutmayın.</p>
]]></content:encoded>
			<wfw:commentRss>http://serkan.gen.tr/aug/196/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>biyoloji.org</title>
		<link>http://serkan.gen.tr/aug/134</link>
		<comments>http://serkan.gen.tr/aug/134#comments</comments>
		<pubDate>Wed, 23 Apr 2008 16:11:27 +0000</pubDate>
		<dc:creator>serkan</dc:creator>
				<category><![CDATA[ben yaptım]]></category>
		<category><![CDATA[biyoloji.org]]></category>
		<category><![CDATA[biyoteknoloji]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://serkan.gen.tr/aug/134</guid>
		<description><![CDATA[Nihayet :) Duyurmanın vakti geldi dedik. Bu günü seçmiştik. Çok kötü bir tercih değil sanırım. Biyoloji.org için sadece 2008 içinde yapılan ve terk edilen plan sayısı bile pek çok kimsenin tahmininden daha fazla. Gerçek sayısını ben de bilmiyorum aslında. Şuan tematik bir ekşi sözlük klonu olduğunu söyleyebiliriz. Eğer WebFaction daha fazla bellek işgal etmemize müsaade [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Nihayet :)</p></blockquote>
<p>Duyurmanın vakti geldi dedik. Bu günü seçmiştik. Çok kötü bir tercih değil sanırım.<a href="http://www.biyoloji.org/"></a></p>
<p><a href="http://www.biyoloji.org/">Biyoloji.org</a> için sadece 2008 içinde yapılan ve terk edilen plan sayısı bile pek çok kimsenin tahmininden daha fazla. Gerçek sayısını ben de bilmiyorum aslında.</p>
<p>Şuan <a href="http://www.biyoloji.org/sozluk/eksi-sozluk/">tematik bir ekşi sözlük klonu</a> olduğunu söyleyebiliriz. Eğer WebFaction daha fazla bellek işgal etmemize müsaade etseydi daha güzel olacaktı ama şimdilik olsun bakalım.</p>
<p>Görünüşe bakılırsa zamanla sözlüğün yanına pek çok kardeş gelecek ve tabi ki hepsi birbirine tümleşik şekilde çalışacak, şimdiden kaydettirilmiş tek bir hesap yeterli olacak. Diğer uygulamaların ilk örneklerini belki yakında test edebileceksek bile kısa sürede kullanılabilir hale getiremeyeceğimden uzunca bir süre tek hizmet vermeye devam eden özelliğimiz sözlük olacak.</p>
<p>Ayrıca sözlüğün şu halinin de yetersiz olduğunun farkındayım. Bu sadece ilk sürüm.</p>
<p>Bir de beni tanıyanların bileceği gibi tasarım dediğimiz şeyden hiç anlamadığım gerçeği var ki bu sefer en azından acısız bir çözüm bulmanın keyfini çıkardım. Kısacası hiç bulaşmadım. Sitenin XHTML ve CSS&#8217;sini <a href="http://www.cihan.us/">Cihan İnan</a> hazırladı. Hatta renk seçiminde yardımcısı <a href="http://ardabutlan.blogspot.com/">Samet Alboy</a> oldu. Logomuzu ise Cihan&#8217;ın arkadaşlarından Yasemin Kuleli çizdi.</p>
<p>Tüm biyoloji ilgililerine hayırlı uğurlu olsun diyorum. Eleştirileri ve önerileri ne şekilde olursa olsun bekliyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://serkan.gen.tr/aug/134/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Google App Engine</title>
		<link>http://serkan.gen.tr/aug/133</link>
		<comments>http://serkan.gen.tr/aug/133#comments</comments>
		<pubDate>Sun, 13 Apr 2008 21:33:58 +0000</pubDate>
		<dc:creator>serkan</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://serkan.gen.tr/aug/133</guid>
		<description><![CDATA[Google bu sefer gerçekten bahsedilmeyi hak ediyor. Ne OpenSocial&#8216;ı duyunca ne de Android&#8216;e sıra gelince buraya taşıma gereği duymadım ama App Engine biraz farklı. Aslında (benim için) biraz farklı dememin tek sebebi halihazırda yapmakta olduğum bir çalışmaya denk gelmesinden yoksa Google babamın oğlu olduğundan falan değil. Django ile çalışıp kullandığı paylaşımlı sunucunun kaynak tüketim politikasını [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Google bu sefer gerçekten bahsedilmeyi hak ediyor. Ne <a href="http://code.google.com/apis/opensocial/">OpenSocial</a>&#8216;ı duyunca ne de <a href="http://code.google.com/android/">Android</a>&#8216;e sıra gelince buraya taşıma gereği duymadım ama <a href="http://code.google.com/appengine/">App Engine</a> biraz farklı.</p></blockquote>
<p>Aslında (benim için) biraz farklı dememin tek sebebi halihazırda yapmakta olduğum bir çalışmaya denk gelmesinden yoksa Google babamın oğlu olduğundan falan değil.</p>
<p><a href="http://www.djangoproject.com/">Django</a> ile çalışıp kullandığı paylaşımlı sunucunun kaynak tüketim politikasını zorlayan uygulamalar yüzünden ağırdan almak zorunda kalan biri olarak Google bana &#8220;buyur burada misafir edelim&#8221; deyince teklife göz atmamak olmaz.</p>
<p>Servisi daha bugün fark ettiğimden ve sadece belgeleri okuyup kendi bilgisayarımda denemeler yapma fırsatı bulduğumdan üstüne konuşmak için biraz daha zamana ihtiyacım var ama şimdilik iyi ki akıl etmişler demeden geçemiyorum.</p>
<p>Aslında herkesin rahatlıkla aklına gelebilecek Google&#8217;ı bir hosting sağlayıcıymış gibi gösterecek bir hizmet ama durum bununla sınırlı değil. Google kendi kurallarını koyduğu bir framework geliştirmiş. Django&#8217;dan bayağı esinlenmiş. Bunun yanında Django ve benzeri diğer Python kütüphanelerini de işin içine dahil edilebilir hale getirmiş. Hatta ilk versiyonun sadece Python ile yayınlanmasına bakmayın herkesin Python programcısı olmadığını biliyorlar. Benim ikinci dil tahminim Ruby.</p>
<p>İşin güzel tarafı Google tarafından sağlanan ölçeklenebilir veri merkezinin uygulama geliştiricilerinin hizmetine açılması. Yani elimizdeki uygulama çok fazla sistem kaynağı tüketiyor diye düşünmeyeceğiz. Düşünsek bile bunu Google&#8217;dan ücreti karşılığında satın alabileceğiz. Hobi projemiz büyüdü diye sunucu satın almak onu bakımını yapmak zorunda kalmayacağız.</p>
<p>Henüz deneyemediğim ama videolardan izleyerek öğrendiğim admin panelleri ise beni mest etti diyebilirim. Şuan üstünde çalıştığım web uygulamalarında karşılaştığım en büyük sorun birileri onları kullanırken nasıl yenileyebileceğimdir. Çalışan ve bir de üstünde kritik veriler tutan bir web uygulaması geliştiriyorsanız ve bir de siz tam bir şeyler değiştirmeye kalkacakken birilerinin onu kullanıyor olma ihtimali varsa nasıl güncelleme yaparsınız? Elbette yolu var ama ben pek zevk almıyorum bu işi yaparken. Hatta bu durum bende öyle önüne geçilmez bir korku oluşturdu ki çalışmalarımı iyice kararlı hale getirmeden yayına çıkaramıyorum. Bu aşırı mükemmeliyetçilik de çoğu zaman hiç bir şey çıkarmamak demek oluyor. İşte <a href="http://code.google.com/appengine/">Google App Engine</a>&#8216;de buna çok basit bir çözüm var. Eğer yanlış anladığım bir kısım yoksa, App Engine&#8217;de yeni uygulamanızı yükleyin test edin ve eğer sorunsuz olduğunu görürseniz son kullanıcının yeni sürümü kullanmasını sağlayın. Bu arda ziyaretçiniz halen eski sürümle sanki hiç bir şey olmamış gibi hayatına devam edebilir. Daha ne isterim&#8230; (Bir an önce denemeyi tabi ki! Daha denemeden üstüne bu kadar konuşabildiğime göre herhalde en çok istediğim şey buymuş!)</p>
<p>Bir yandan da Sun Microsystems&#8217;ın <a href="http://network.com/">network.com</a> servisine rakip olduğunu düşünmüyor değilim. Basit moleküler deneyleri sıradan bir Genetikçi bile burada yazacağı web uygulamaları ile halledebilir. Sonuçta ihtiyaç duyulan işlemci gücünü Google ücreti mukabilinde sağlayacak ve Türk müşterilere tenezzül bile etmeyen Sun&#8217;da <em>kedi ulaşamadığı ciğere mundar der</em> misali &#8220;biz zaten yüksek güç tüketecek müşterilere bakıyoruz&#8221; diyecek. (Sun&#8217;ın hazır uygulama sağladığını ama Google App Engine&#8217;de uygulamanın sıfırdan geliştirilmesi gerektiğini de unutmamalı tabi.)</p>
<p>Belgeleri inceleyince özellikle Google hesaplarının web uygulamalarına entegre edilmesinin çok kolaylaştığını fark ettim. Hatta acaba ben de burada sunacağım bir uygulamada herkese yeni bir kullanıcı adı ve şifre vermek yerine zaten sahip oldukları Google hesaplarını kullanmalarına izin mi versem diye düşündüm? (Muhtemelen en az bir kere denerim de.) Ama bunun yanılmıyorsam taa 2001 yılında Microsoft tarafından Passport projesi ile hayal edildiği ve başarısız bir girişime çoktan dönüştüğünü unutmamalı. O zamanlar MS Passport ne kadar kullanışlı ve kolay geliştirilebilir bir üründü bilmiyorum ama bu sefer ki Google servisi (hele bir de bu kadar çok Google hayranı olduğu düşünülürse) kolaylıkla popüler olacak gibi duruyor.</p>
<p>Google App Engine&#8217;i denemeyi hemen hemen tüm Django kullanıcılarına tavsiye ederim. Django&#8217;nun çalışma prensibine benzer bir yapısı var zaten. Fazla kafa yormadan 5-6 saate neyin ne olduğunu kapmak mümkün ama tabi üstünde ciddi şekilde uygulama geliştirmeden çok şey söylemek zor. Hem bu bir PREVIEW RELEASE ve helen ilk sürümünde&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://serkan.gen.tr/aug/133/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WebFaction&#8217;da Django Projesi Oluşturmak</title>
		<link>http://serkan.gen.tr/aug/125</link>
		<comments>http://serkan.gen.tr/aug/125#comments</comments>
		<pubDate>Sun, 10 Feb 2008 15:42:36 +0000</pubDate>
		<dc:creator>serkan</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://serkan.gen.tr/aug/125</guid>
		<description><![CDATA[Daha önce yaparım dediğim bir şeyi ilk defa bu kadar erken başarıyorum. İşte WebFaction&#8217;da Django&#8217;yu en verimli şekilde kurma klavuzu. WebFaction, Django için en uygun servis sağlayıcılardan biri. Panelden otomatik olarak uygulamanızı oluşturup hemen kullanmaya başlayabiliyorsunuz. Ancak bu durumda proje ismi myproject oluyor ki bu çok gıcık bir durum. Hele hele elinizde daha önceden yazılmış [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://serkan.gen.tr/aug/121">Daha önce yaparım dediğim bir şeyi</a> ilk defa bu kadar erken başarıyorum. İşte WebFaction&#8217;da Django&#8217;yu en verimli şekilde kurma klavuzu.</p></blockquote>
<p><a href="http://www.webfaction.com/signup?affiliate=serkan">WebFaction</a>, Django için en uygun servis sağlayıcılardan biri. Panelden otomatik olarak uygulamanızı oluşturup hemen kullanmaya başlayabiliyorsunuz. Ancak bu durumda proje ismi <em><strong>myproject</strong></em> oluyor ki bu çok gıcık bir durum. Hele hele elinizde daha önceden yazılmış ve doğal olarak ismi <em><strong>myproject</strong></em> olmayan bir kod varsa bir şekilde var sayılan proje ismini değiştirmek zorundasınız. Elinizdeki kodu değiştirmek çok zaman alıcı olacaktır.</p>
<p>Benim adımlarımı teker teker takip etmeden önce <a href="http://www.webfaction.com/demos/control-panel">panelin nasıl kullanıldığına ilişkin WebFaction Screencast</a>&#8216;ını izlemek çok iyi bir fikir.</p>
<p>Aslında anlatacağımın <a href="http://forum.webfaction.com/viewtopic.php?id=570">bir benzerini WebFaction forumunda İngilizce olarak bulmak mümkün</a>. Ben de burada Türkçe anlatmayı seçtim. Onun tıpkısının aynısı değil ama ben de oradan öğrendim.</p>
<p>Önce projemizi oluşturalım.</p>
<p><em>Domain / websites &gt; Applications</em> sayfasında <strong>arborea</strong> isminde bir uygulama oluşturalım. <em>İsim olarak başka bir şey seçerseniz her adımda arborea sözcüğü yerine seçtiğiniz ismi kullanmayı unutmayın.</em> <em>App type</em> olarak ben <strong>Django (0.96) with Python (2.5)</strong> seçtim.</p>
<p><em>Domain / websites &gt; Domains</em> kısmına girip kendimize yeni bir alan adı veya alt alan adı ekliyoruz. Benim yaptığım, eklenmiş alan adlarımdan birine alt alan adı ön eki eklemekten ibaret oldu.</p>
<p><em>Domain / websites &gt; Websites</em> sayfasında ise alan adımızı ve uygulamamızı birbirine bağlayacağız. Alan adları arasından gereken(ler)i seçip hemen alttaki <em>App</em> açılır menüsünden <strong>arborea</strong> uygulamasını seçili hale getiriyoruz. Eğer seçtiğimiz alan ad(lar)ının herhangi bir alt dizinine bağlamak istemiyorsak <em>URL path</em> kısmına sadece <strong>/</strong> koyuyoruz. Eğer bir alt dizine koyacaksak <strong>/altdizinismi</strong> gibi yazmak gerekecek.</p>
<p>Tercih ettiğiniz FTP istemcinizi açın ve <strong>/home/kullanıcıadınız/webapps/arborea</strong> dizinine bilgisayarınızda daha önce geliştirdiğiniz <strong>arborea</strong> ismindeki projenizi gönderin. Sonuç olarak sunucuda üç farklı dizin (apache2, myproject, arborea) bulunmalı. Eğer halihazırda üretilmiş bir projeniz yoksa şimdi üretin ve yollayın. <em><strong>myproject</strong></em> isimli dizini değiştirmeyin. Yoksa içindeki dosyalarda da değişiklik yapmanız gerekir. Tercih sizin.</p>
<p>Daha sonra GNU/Linux konsolu ile veya Windows&#8217;ta Putty gibi bir uygulama ile ssh üstünden sunucuya bağlanmanız gerekiyor.</p>
<blockquote><p><strong>ssh kullaniciadiniz@web24.webfaction.com</strong> (Burada web24 yerine sizin sunucunuzun ön eki gelmeli.)</p></blockquote>
<blockquote><p><strong>cd webapps/arborea</strong><br />
<strong>ls</strong></p></blockquote>
<p>&#8230;komutları ile apache2, myproject ve arborea diye üç dizinle karşılaşacaksınız. Yani FTP ile yükleme yaptığımız yere ulaştık.</p>
<p>Şimdi istediğimiz bir metin editörü ile <strong>httpd.conf</strong> üzerinde değişiklik yapmamız gerek. Ben <em>emacs</em>&#8216;i tercih ediyorum siz <em>nano</em> vs. de kullanabilirsiniz.</p>
<blockquote><p><strong>emacs apache2/conf/httpd.conf</strong></p></blockquote>
<p>&#8230;komutu ile açıp</p>
<blockquote><p><strong>SetEnv DJANGO_SETTINGS_MODULE myproject.settings</strong></p></blockquote>
<p>satırını</p>
<blockquote><p><strong>SetEnv DJANGO_SETTINGS_MODULE arborea.settings</strong></p></blockquote>
<p>şeklinde düzeltmemiz gerekiyor.</p>
<p>Emacs kullandığımıza göre <em>Ctrl+X Ctrl+S</em> tuşlarına sırayla basarak kaydediyoruz ve ardından  <em>Ctrl+X Ctrl+C</em> ile çıkıyoruz. (Çıkış sırasında kaydetmek isteyip istemediğimi sormasını hiç sevmem. :p )</p>
<p>Sunucumuzu yeniden başlatmamız gerek. Bulunduğumuz dizini değiştirmeden</p>
<blockquote><p> <strong>./apache2/bin/restart</strong></p></blockquote>
<p>&#8230;komutunu kullanmamız yeterli.</p>
<p>Teorik olarak yapılması gereken başka işlem kalmadı ancak bu durum hiç bir statik dosya sunmayacaksanız geçerli. İçerisinde en azından bir tane resim dosyası bulunmayan web uygulaması olmayacağını düşünürsek işimizin bittiğini söyleyemeyiz.</p>
<p>WebFaction artık herhangi bir uygulama sayısı sınırı koymadığından <em>Domain / websites &gt; Applications</em> sayfasında üreteceğiniz bir <em>symbolic link</em> uygulaması ile istediğiniz bir dizini webe açın. Bu dizinde de .gif, .css gibi tüm statik dosyalarınzı saklayın. İster bir alt alan adınıza ister bir alt dizininize <em>Domain / websites &gt; Websites</em> sayfası aracılılığı ile bağlayın. Django projenizin <strong><em>settings.py</em></strong> dosyasında da MEDIA_ROOT ve MEDIA_URL değişikliklerini yaptıktan sonra statik dosyaları sunamamanız için herhangi bir sebep kalmayacak.</p>
<p>Unutmayın admin paneliniz de benzer şekilde dosyalar sunmaya ihtiyaç duyar. <strong>contrib/admin/media</strong> dizininizi buraya taşıyıp settings.py&#8217;deki ADMIN_MEDIA_PREFIX ayarı ile oynamayı unutmayın. Tabi isterseniz admin sayfasının statik öğelerini hiç taşımadan ona özel bir sembolik link uygulaması dahi oluşturabilirsiniz. Seçim tamamıyla size kalmış.</p>
]]></content:encoded>
			<wfw:commentRss>http://serkan.gen.tr/aug/125/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebFaction&#8217;da Django</title>
		<link>http://serkan.gen.tr/aug/92</link>
		<comments>http://serkan.gen.tr/aug/92#comments</comments>
		<pubDate>Fri, 19 Oct 2007 18:32:57 +0000</pubDate>
		<dc:creator>serkan</dc:creator>
				<category><![CDATA[alışveriş]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://serkan.gen.tr/aug/92</guid>
		<description><![CDATA[Yoğun olarak başka işlerle uğraştığım bir sırada WebFaction üstünde Django ile çalışma fırsatı buldum. Bu sebeple fazla ayrıntılı bir inceleme değil bu. Daha önce uygunsuz bir sunucuda kurulum için bile uğraşmış biri olarak Django&#8216;ya özel hizmet sağlayan WebFaction çok rahat geldi. Yanlız bu servis sağlayıcıdan hesap almak isteyecek olanların önceden bilmek isteyecekleri bir konuya değinmeli. [...]]]></description>
			<content:encoded><![CDATA[<p>Yoğun olarak başka işlerle uğraştığım bir sırada <a href="http://www.webfaction.com/signup?affiliate=serkan">WebFaction</a> üstünde <a href="http://www.djangoproject.com">Django</a> ile çalışma fırsatı buldum. Bu sebeple fazla ayrıntılı bir inceleme değil bu.</p>
<p>Daha önce uygunsuz bir sunucuda kurulum için bile uğraşmış biri olarak <a href="http://www.djangoproject.com">Django</a>&#8216;ya özel hizmet sağlayan <a href="http://www.webfaction.com/signup?affiliate=serkan">WebFaction</a> çok rahat geldi.</p>
<p>Yanlız bu servis sağlayıcıdan hesap almak isteyecek olanların önceden bilmek isteyecekleri bir konuya değinmeli. Benim kullanma fırsatı bulduğum <a href="http://www.webfaction.com/shared_hosting?affiliate=serkan">Shared 1 paketinin</a> özellik listesinde satın aldığınız hizmetle neler yapabileceğinizi gösteren bir bölüm var ve üç tane küçük Django, RoR vs uygulaması çalıştırılabileceğinden bahsedilmiş. Aslında bu bilgi de bir yanlışlık yok ancak hazırladığınız projeyi -doğal olarak- web sayfası olarak sunacaksanız statik dosyalarınızın bir şekilde http yoluyla erişilebilir bir url adresine koymanız gerekiyor. Elinizdeki hesapta bunu yapmanın yolu da kontrol paneldeki <em>Symbolic Link</em> uygulamasını kullanmak. Dikkat <em>Symbolic Link</em> bir uygulama ama aslında bizim Unix&#8217;in klasik <em>ln</em> komutu. Sonuç:</p>
<ol>
<li>Uygulama: asıl Django projeniz.</li>
<li>Uygulama: admin için gereken statik dosyalara symbolic link uygulaması.</li>
<li>Uygulama: diğer statik dosyalarınız için symbolic link uygulaması.</li>
</ol>
<p>Sonuçta üç hakkınızı da doldurmuş oluyorsunuz ve eğer başka projeleriniz varsa paketinizi yükseltmek zorundasınız. Benim yaptığım listedeki 2. ve 3. uygulama gayet tabi birleştirilip tek bir uygulama şeklinde kullanılabilir ve böylece bir de ayrık bir bloğa yer açılabilir gibi duruyor.</p>
<p>WebFaction kaliteli ve sorunsuz diyebileceğim bir sunucu düşük önemde işaretlediğim sorularımı bile uzun sayılmayacak sürelerde cevapladılar. <a href="http://forum.webfaction.com/">Forumları</a>na fazla işim düşmediyse de çoğu kimsenin sorununu çözdüğü ortada. Bu yazdığım durumu da müşterisi olmayanlardan bile saklamadıklarını göreceksiniz.</p>
<p>En beğendiğim özellikleri de bugün karşıma çıktı. Vakit sıkıntısı sebebiyle üzerinde çalıştığım projeyi askıya almak zorunda kalınca herhangi bir mazeret bildirme ihtiyacı hissetmeden hesabımı kapatmak istediğimi ve paramı geri ödemelerini söyledim. Bu sefer destek talebime verdikleri cevaplama hızından daha kısa sürede paramı geri ödediklerini gördüm (anlaşılan çok bıktırmışım :) ).</p>
]]></content:encoded>
			<wfw:commentRss>http://serkan.gen.tr/aug/92/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kitaplar 0.1 Çıktı</title>
		<link>http://serkan.gen.tr/aug/58</link>
		<comments>http://serkan.gen.tr/aug/58#comments</comments>
		<pubDate>Sun, 05 Aug 2007 20:21:24 +0000</pubDate>
		<dc:creator>serkan</dc:creator>
				<category><![CDATA[ben yaptım]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://serkan.gen.tr/aug/58</guid>
		<description><![CDATA[Bir süredir uğraştığım Django ile ilk işe yarar uygulamam hazır. Kitaplığındaki kitapları tehşir etmeyi ya da grupça web kütüphanesi oluşturmayı düşünenler için ideal. Google Code&#8217;da bulunan proje sayfasında özgürce kullanılmaya açık vaziyette. Fırsat buldukça proje wikisine yeni bilgiler eklemeyi de planlıyorum. Şuan yeterince açıklayıcı olmamış gibi gözüküyor. Orada yazdıklarımı tekrarlamak istemiyorum ama çok önemli olduğu [...]]]></description>
			<content:encoded><![CDATA[<p>Bir süredir uğraştığım Django ile ilk işe yarar uygulamam hazır. Kitaplığındaki kitapları tehşir etmeyi ya da grupça web kütüphanesi oluşturmayı düşünenler için ideal. Google Code&#8217;da bulunan <a href="http://code.google.com/p/kitaplar/">proje sayfasında</a> özgürce kullanılmaya açık vaziyette. Fırsat buldukça proje wikisine yeni bilgiler eklemeyi de planlıyorum. Şuan yeterince açıklayıcı olmamış gibi gözüküyor. Orada yazdıklarımı tekrarlamak istemiyorum ama çok önemli olduğu için buraya da eklemeli. DreamHost üzerinde geliştirildi ve ayarlarla oynamadığınız sürece başka yerde çalışmaz. Sunucudan bağımsız çalışabilmesi için gerekli belgeleri ve kodları ekleyeceğimi tahmin ediyorum.</p>
<p>Ön yüzünün neye benzediğini görmek için http://kitaplar.serkan.gen.tr/ adresine bakabilirsiniz. Daha anlaşılabilir olması için hiçbir kısmında değişiklik yapmadan sadece bir kaç kitap ekledim. Tabi daha sonra bu adres benim kişisel kitaplığıma dönüşecektir ancak uzunca bir süre fırsat olmayacak.</p>
<p>Büyük yıl dönümüne iki gün kala gecikmiş bir uygulama olduğu kanısındayım.</p>
]]></content:encoded>
			<wfw:commentRss>http://serkan.gen.tr/aug/58/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
