Linux
Paket Aramaya Devam
22nd Tem 2009 | Sınıfı: Linux 1

Kanada dönüşü yarım kalan işlerden Paket Arama sitesini tamamlamam gerekiyordu. Sistem düzgün bir şekilde çalışmasına rağmen eklemeyi düşündüğüm veya başkalarının aklına gelen bir takım ek özellikler vardı. Birçoğu ilk okunduğunda anlaşılabilir durumda ancak bazılarını açıklayacağım.

  • Arama yapılınca arama kutusunda arama metninin kalması.

  • Sayfa açılınca imlecin arama kutusunda yanıp sönmesi

  • Sonuç sayısı gösterme

  • Pardus 2009 desteği

  • Verilerin tek tabloda tutulması

  • Lâl teması

  • Önbellekleme kullanımı

  • Hoşgeldiniz yazısı, tanıtım

    • Geri bildirimlere göre Paket Arama, paket listesinde ve açıklamalarında arama yapıyor gibi bir izlenim veriyormuş. Bu sebeple paket içeriklerini taradığımızı ifade ettim.

  • Arama sonuçlarında paket sayfalarına bağlantı

    • Paket içeriği görüntülenirken sonuç sayfasında paket hakkında daha fazla bilgi alabileceğiniz bağlantılar mevcut olacak.

  • POST sonrasında URL güncelleme

    • Şimdiye kadar arama terimini POST metodu ile gönderdiğimizde URL değişmiyordu. Dolayısıyla o anki sonuçların adresini bir başkasına göndermek mümkün değildi. Bu sebeple arama terimini alan, inceleyen ve ona göre gerekli URL’e yönlendiren; böylelikle URL devamlılığını sağlayan bir sistem çözümü getirdim.

  • Türkçe karakter ile arama desteği

    • Türkçe karakter ile arama yapıldığında Django hata veriyordu çünkü URL eşleştirmeleri ascii düzenli ifadeler üzerinden yapılıyordu. Bu sebeple Unicode karşılaştırmaya izin vermenin bir yolunu bulmam gerekti. Bunu diğer bir yazıda anlatacağım.

  • Sonuçları sayfalandırma özelliği

    • Sonuçlar çok sayıda olduğunda sisteme yük bindirmekteydi. Bu yüzden onları 100′er sayfalandırma yoluna gittim. Bunun için Django’nun hazır pagination modülünü kullandım. Onu da farklı bir yazıda anlatabilirim.

Hala çözmem gereken sorunlar mevcut. Bunların en başında tembel sayfalandırma geliyor. Öyle ki 10000 sonucu sayfalamaya kalktığımda önce 10000 sonucun hepsini bir listeye atıp ondan sonra sayfalandırıyor. Bu da darboğaza sebebiyet veriyor. Diğer bir sorun settings.py ayarlarının üzerine yüklenen local_settings.py dosyasına yazdığım DOCUMENT_ROOT ve WEB_URL’in TEMPLATE_DIR değişkenini etkilememesi. Çünkü bu değişken settings.py’de statik olarak tanımlanıyor. Çözüm önerilerinizi beklerim.

Sistemin eski hali burada, son hali şurada, kodları orada yayında. Son halinde Türkçe karakter sorunu devam ediyor olabilir. Sebebinin ise Python sürümünün eski olması olduğunu tahmin ediyorum.

One Comment
  1. Ahmet Emre Aladağ
    12.31 on Ağustos 4th, 2009

    Bahsettiğim en son local_settings.py sorununa bir çözüm buldum ancak tam olarak çalıştıramadım. Çözüm şöyle. local_settings’i settings.py’nin en başında import ediyorum. Sonra, herhangi bir değişkenin dir() içerisinde olup olmadığını denetleyen, varsa eval(değişken)i döndüren bir value fonksiyonu yazıyorum.

    Bundan sonra yapmam gereken şey:

    DOCUMENT_ROOT = value(“DOCUMENT_ROOT”) or “/home/emre/…”

    Eğer DOCUMENT_ROOT diye bir şey tanımlı değilse “/home/emre/…” olarak tanımlıyor. Eğer tanımlıysa değiştirmiyor. Bu yöntem bazı değişkenlerde işe yarasa da bazı değişkenlerde işe yaramıyor. or’un sağ kısmını kabul ediyor. Çözemedim gitti.

Leave a Reply

IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 15 + 7 ?
Please leave these two fields as-is: