3 oluyor bu daha önce 2 resim yayınlamıştım. Onların başlığı farklıydı ama olsun. Şimdi profil var, kayıt olunuyor, albüm var, iletişim formu var, rss desteği var, commentler var, news başlıklı bir dinamik içerik bölümü var istenirse başka da eklenir. sitemap eklenecek kolay iş o tüm içeriği tamamladıktan sonra halledeceğim. Başka ne gerekir buna? Sanırım tag özelliğini eklemem gerek SEO için de lazım oluyor. İşte temaya başladım, hazır bir tema kullanmak istemediğim için sıfırdan yazıyorum. Nerden başlasam diye bir an duraksamıştım sağolsunlar GimpTR sitesine güzel bir bölüm eklemişlerdi gimp ile web teması yapımıyla ilgili o yazı dizisi işimi gördü. Görselleri hazırlamadım sadece kodlarını tamamladım. Görsel işini arkadaşın tekine yıkmayı planlıyorum. 🙂 GimpTR‘yi uzun süredir takip ederim. Hani şu ülkede bu tarz kaç site var bilemiyorum. Açık kaynak bir program hakkında detaylı bilgi veriyorlar ve üstelik bunu çok iyi yapıyorlar, sağolsunlar. Neyse buyrun sitemin son hali. Sakın bunun şu bahsettiğim dizi/sinema portalı olduğunu sanmayın. Hoş onun içinde kullanabilirim ama bu sistemin daha çok pişmesi gerek.
Django URL kalıbını isimlendirme
Her belge için birer link ekleyeceğimi söylemiştim. Bun yapmak basit aslında öncelikle URL kalıbımızı(pattern) isimlendirmemiz gerekiyor mesela örnek olarak benimkileri yapıştırıyım buraya.
url(r’^news/$’, ‘cms.news.views.index’, name=’gmsnews’),
url(r’^news/(?P
Normalde url fonksiyonu içersinde kullanmıyoruz bu kalıpları ama isimlendireceğimiz zaman başına url koymamız gerekiyor. name atadıktan sonra template de istediğimiz şekilde bu urlleri çağırabiliriz. örneğin gmsdetails urlsi şu şekil çağrılıyor:
{%url gmsdetails pnews.id%}
Burada her id için sayfa atayacağı için id numarasınıda değişkenin içine yazmamız gerekiyor. Yazmazsak hata alırız. Normal gmsnews sayfasına dönmek içinse şunu yazıyoruz.
{%url gmsnews%}
Böylelikle uygulamama her haber bağlantısı için birer link ve ayrıntı sayfasınada geri dönüş linki eklemiş oldum. Aynı zamndan çaktırmadan da feed desteğini ekledim ama ondan bahsetmiyeceğim.
Django İle Bugünlük Bu Kadar
Basit bir şeye benziyor değil mi? Sanki düz htmlmiş gibi meret. Şimdilik görsellikle uğraşmadım onu ne sitesi olursa ona göre düzelteceğim. Bugün yaptıklarımı kısaca anlatmak gerekirse eski bir projemi tekrardan dirilttim. Hani şu yeşilli temalı bir blog projesi vardı resmini paylaşmıştım. İşte onu biraz daha geliştiriyorum. Dediğim gibi kodlara uzun süre bakmadığım için unutmuştum bir de başka bir özellik ekleyeceğim derken tüm sistemi dağıttım. Neyse sonradan düzelttim. Şimdi bundan böyle artık üye olabiliyoruz, üyeler giriş yapabiliyor çıkış yapabiliyor. Profillerini düzenleyebiliyorlar avatar yükleyebiliyorlar ama ben o özelliği kullanmayacağım. Sonracığıma statik sayfalar için bir modül vardı onu kaldırdım dediğim gibi hızlı olması için onları ayrı bir klasörde html olarak toplayıp nginx ile yayınlayacağım. Hmm sonra news sınıfıını geliştirdim biraz artık ana sayfada gönderenin adı ve saati yayınlanıyor otomatik. Bundan sonra comment ekleyeceğim. Sonra o sayfa başlıklarının ayrıntılı gözükmesi için başlıklara link vereceğim. Başka ne eklerim bilmiyorum ihtiyaç doğrultusunda bakacağız artık.
Herkese kolay gelsin.
Django Notları
Bugün eski projelerimden birisine bakmam gerekti. Daha önce friendfeed de bir link paylaşmıştım. Django hakkında 10 numara gibi bir şeydi ama paylaşmama rağmen kendimin bu numaraları kullanmadığımın farkına vardım. Kodları Linux’ta yazdığım için dizinleri tek tek linuxa göre yazmıştım. Windows’a gelince tabiki hiç biri çalışmadı. Bende aynı hatayı yapmamak için bu numaralardan birisini çektim. Böylece bundan böyle kodları hangi platforma taşırsam taşıyım çalışacaklar. Unutkanlığımdan kurtulmak için blogda paylaşıyorum böylelikle bir daha aynı hatayı yaparsam insanlar beni kınayabilecek 😛
neyse gelelim koda:
import os ile elbette os modülünü ekliyoruz settings.py dosyasına ondan sonra
SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) satırını ekliyoruz. Böylelikle dosyamızın bulunduğu dizinin adresini alıyoruz.
Sonra artık ne için dizin gerekiyorsa bunun üzerine çalışıyoruz mesala bende templates dizinine girmem gerekiyordu şöyle girdim.
TEMPLATE_DIRS = (os.path.join(SITE_ROOT, ‘templates’),) virgüle dikkat edin.
Diğer bir husus DEBUG’ı sunucuya taşıdımızda False yapmaktı. Bunun için şöyle bir şey buldum:
import socket
if socket.gethostname() == 'xxx111.com':
DEBUG = False
else:
DEBUG = True
Burada da host name’i alıyoruz xxx111.com’sa cevap demek ki sunucuya yollamışız diyoruz ve False ediyoruz. Bu özelliği deneyemedim daha yanlışsa düzeltin beni.
Bir başka numara ki bence benim yaptığım en büyük hatalardan birisi buydu. Statik sayfaları apache’ye yüklettirmekti. Onlar için ayrı bir model bile yazmıştım oysa ne gerek var böyle bir şeye? Statik sayfa için admin paneli gerekmiyor herhangi bir editör ile html olarka oluşturup yayınlasak yeterli. Bunun için nginx kullanıp htmlleri onun üzerinden yayınlamak gerekiyormuş. Bunu sunuya geçtiğimde kullanacağım.
http://docs.djangoproject.com/en/dev/topics/cache/ sitesinde cache olayı anlatılmış uzun uzun. Ben memcached’ı gözüme kestirdim her ne kadar şuan ihtiyacım olmasada ilerde olabilir diye hazırda koda ekleme yapabilirim. Tabi böyle bazı şeyleri denemek ve performans farkını görmek için dolu bir içeriği sunucuda test etmem gerekiyor. DB de 100 veri varken göstereceği farkla 10000 veri varken göstereceği farkı anlamak gerek. Deneyen varsa yorum yapsın bizde bilelim. Ona göre diğer cache yöntemlerinden birisinide kullanabilirim.
Siteyi hızlandırmak için diğer bir yöntemde css ve js’leri sıkıştırmakmış. django-compress isimli bir modül aracılığıyla bu işlem yapılıyor. İki tane js’i sıkıştırsan ne olur sıkıştırmasan ne olur diyebilirsiniz ama django’yu hızlandırmak için yaptığım aramalarda bir kaç kişi bu özelliği anlatmış. Şimdi yine kullanıcı sayısıyla orantılı bir konu. Tek bir js bile olsa 100k kullanıcınız varsa bu yöntemler etkili olabilir. Ama ben sadece blog yazacam derseniz gerekmeyebiliyor. Bana göre basit bir blog dahi yazsakta (ki öyle bir site için 4-5 model bile yetiyor) işimizi düzgün yapıp bu teknikleri uygulamalıyız. İleride belki o uygulamayı başka bir tanesine ekleriz bilemezsiniz gelecekte ne olacağını.
Hız için diğer tavsiyeler apache ile alakalı onları başka bir yazıda paylaşırım. Birde auth modülüyle ilgili güzel örnekler var. Django’nun en sevdiğim özelliği kullanıcı girişi için ekstra bir çalışma yapmamanız. İsterseniz kendi login templateni bile kullanabiliyorsunuz. Başka platformlarda belki uzun uzun kodlar yazmanız gerekir login olabilmesi için kullanıcınızın, djangoda ise template 1-2 link ekliyorsunuz tamam iş.
Neyse, herkese iyi çalışmalar.
Intel Atom Developer Program SDK Yayınlandı
Netbook piyasası için çok önemli olan yeni SDK’in Alpha versiyonu yayınlandı. Bu adresten indirebilirsiniz. Moblin ve Windows ortamında uygulama geliştirmenize olanak sağlayan bu kit umarım işinizi görür.
APyGM with PyQt
XAMPP, Vuze, Drupal ve Windows
Afyona geldiğimden haberiniz vardır. Elimde Windows kurulu eski bir laptop var. Çalışmalarım şu aralar Web’e kaysada çektiğim sıkıntıları ben bilirim. Metin editörü için NotePad++’ı kullanmaya başladım sorunlarımı onunla çözmüş oldum. Sonra Localhost için XAMPP ile Apache serverı kurdum. Yeni site projelerimizi denemek için güzel oldu. Sistem çok kastı ama yapacak bir şey yok. Ardından elbette izleyeceğim diziler için bir torrent programı aradım. BitTorrent ile garip maceralar yaşadım ve virüsleri oradan yeme ihtimalinden kıllandığım için önce Deluge’u denedim. Kurulum sırasında PyGame ile ilgili bir kaç dosya önümden geçti şaşırdım doğrusu. Deluge GTK2’yu kurdu ama ne hikmetse torrent ekleyemedim. Program çalışıyordu ama torrent eklenmiyordu. Basıyorum ekle düğmesine çalışmıyor…
Deluge’den sonra eski bir dost olan Azureus’u kurayım dedim. Adı değişmiş Vuze olmuş. Zaten ağır bir programı daha da ağırlaştırmışlar. 30MB java runtime indirdi ama sorunsuz çalıştı. Sayesinde Stargate Universe’ün yeni bölümünü hızlıca indirip izledim. Sonrasında Drupal’ı indirdim. Gayet güzel sevilen bir CMS ve şimdilik bir projem için yeterli görünüyor. Kurulum sırasında hata verdi PHP bilmeyen ben kurulum dosyalarını açıp hatayı düzelttim. default_settings dosyasını settings.php’ye dönüştürüyoruz oysa kurulum için gerekli dosya eski haliyle arama yapıyor. Hata verilen satırda dosya ismini düzelttiğinizde sorun ortadan kalkıyor ve kurulum tamamlanıyor. Pek sade pek şeker bir sisteme sahip. Hoşuma gitti üzerinde biraz çalışabilirim.
Windows’a Git Kurulumu
Her zaman Linux kurulu bir makine bulamıyoruz, böyle durumlarda Windows ile çalışmak zorundayız. Benim gibi sıkıntı çekmemeniz için bir döküman hazırlamak istedim. Öncelikle Msysgit’i bu adreste ki downloads bölümünden indirin. Benim bu yazıyı hazırladığım sırada ki dosya şuydu: Git-1.6.5.1-preview20091022.exe
Dosyayı indirdiğinizde açmaya çalıştığınız sırada 7Z arşivi değil gibi bir hata alabilirsiniz. Eğer benim gibi bu hatayı almışsanız 7-Zip isimli arşiv programını kurmanızı tavsiye ederim. Hata alırsanız önce 7-zip’i kurun ardından msysgit’i kurmaya geçin. Use git bash only seçeneği işaretleyin. Line ending konusunda kafanıza göre takılın. Ben windows seçeneğini seçtim.
Kurulumu tamamladıktan sonra herhangi bir klasöre sağ tıklayın “Git Bash Here” seçeneğini tıklayın. Bir konsol açılacak burada öncelikle ssh-keyimizi alıyoruz daha önce herhangi bir şekilde ssh key oluşturmuşsanız onu kullanabilirsiniz oluşturmamışsanız şu komutu girin : ssh-keygen -C “[email protected]” -t rsa
Key Windowsta Documents and Settings dizinin alt dizini olan .ssh dizininde. Orada ki id_rsa.pub dosyasını bir metin editörü ile açınız. SSH keyiniz içindeki yazılardır. Bu içeriği kopyalayıp githubda ki profilinizde ki sshkeylere ekleyiniz. Ardından normal şekilde git kullanmaya devam edebilirsiniz. Ben ilk denememi yaptım ama her nedense gönderen kısmında kullanıcı adım gözükmüyor. Onu da halledince buraya yazarım çözümü ama şimdilik bu kadar 🙂
Bu arada yazdığı açıklamalarla git’i windowsa kurmamı sağlayan Kyle Cordes‘a teşekkürler. Thanks Kyle.
Ek: Hatayı buldum kullanıcı adımızı tanıtırken başka bir isim girmişim. git config –global user.name “kullanıcı adı” olacak.
Pardus Üzerinde Sık Kullanılanlarım
Hangi paketlerin gerekli olup olmadığına bir göz atayım derken aklıma geldi böyle bir liste yapmak. Galiba bilgisayarın tüm nimetlerinden faydalanmıyorum neyse liste ve beraberinde ufak açıklamalar şöyle:
Pidgin – Artık başka bir mesajlaşma aracı kullanmıyorum. Sorunsuz bir araç ayrıca kuşları severim.
Firefox – Neredeyse sürekli açık bir program. Eklentileriyle(Adblock, chatzilla, download helper vb.) benim için vazgeçilmez.
Kate – Programlama için artık onu kullanıyorum. Böylece listeyi kısaltmış oldum. Tavsiyesi için Ali E. İmrek‘e teşekkürler.
OpenOffice.Org Writer – Hikaye, haber ve diğer metin içerikli yazılarım buradan çıkıyor. Özellikle PDF dönüştürme işini sevdim çünkü doc, odf gibi formatların diğer platformlara taşınması sorunlu/zahmetli oluyor pdf ise bozulmadan her yere taşınabiliyor.
Amarok – Bana hantal geliyor, pek sevdiğim bir uygulama değil ama alternatiflerini bilmediğimden şimdilik onu kullanıyorum.
Dragon Player – İndirdiğim dizi bölümlerini buradan seyrediyorum. Nedense flv formatıyla sorun yaşadım ama onun içinde diğerleri yetiyor.
Ktorrent – Diziler diziler diziler Supernatural ile StarGate Universe bu aralar favorilerim. Torrent konusunda hepsi bir birinin benzeri gibi ben şimdilik bunu kullanıyorum, bir sorun da yaşamadım.
Aklıma geldikçe bu listeyi güncelleyeceğim. Yeni kullanıcıların işine yarayabilir.