WordPress Otomatik Güncelleştirme Hatası

WordPress kullananlar bilir otomatik güncelleştirme gibi güzel bir özelliği vardır.

Bazı sitelerde bu bölüme girdiğinizde sizden bağlantı bilgileri isteyebilir. Bunun sebebi sitenin dizinin ait olduğu kullanıcıyla siteyi çalıştıran apache kullanıcısının farklı olmasıymış.
Bu hatayı düzeltmek için sitenizin yüklü olduğu dizinin haklarını apache kullanıcısına devretmeniz gerekmekte. chown komutunu bu işi çözmek için kullanabilirsiniz. Mesela şu şekilde:
chown -R www-data:www-data /sitenin/dizini/buradayuklu/
Değişikliği yaptıktan sonra sayfayı yenileyip tekrardan otomatik güncelleme tuşuna basarsanız sitenizi rahatça güncellersiniz.

Neler Yapıyoruz?

Blog’a eskisi gibi vakit ayıramıyorum, farkındayım. Bu hem iyi hem kötü bir şey. İyi çünkü boşta değilim ki vakit bulamıyorum, çalışıyorum; kötü çünkü vakit bulamasam da yazmak istediğim çok şey var ve bunları yazamamak beni rahatsız ediyor. Arada sırada elimden geldiğince bir şeyler yapmaya çalışıyorum ama bunlara çok az vakit ayırabiliyorum. İşim İstanbul da olduğu için ömrüm yolda geçiyor. Efe Tur beni şaşırtmamaya devam ediyor, geç gelen seferler, dönüşte sorunlar… Gidişim o kadar kısa sürüyor ki bazen akşam eve dönmeye çalışırken 3 saatim yolda heba olunca hafif kızıyorum. Ama hafif… ya da ufak, mini minnacık. Ne de olsa bu dünya da hiç bir şey kızmaya değmez değil mi? Değmez…

Önce işten bahsedelim. SHR Bilgi Sistemlerinde QA Assistant olarak çalışmaya devam ediyorum. Oyunları test ediyor, hataları bulup raporluyor, çevirilere yardımcı oluyor ve kalitenin artması için çalışıyoruz. Arada foruma destek vermeyi ihmal etmiyoruz. Bu aralar epey yoğunuz oyunlarımızdan Son Destan‘a yeni bir yama geliyor ve seviye sınırını arttırıyor. Aynı zamanda Jamia Online için de çeşitli çalışmalarımız mevcut onlara da bakıyoruz, açık betasını bekleyen epey kişi var.
Gelelim sunucu maceralarımıza! Bugunneizlesem‘i adam ettik diyebilirim. En azından insanlar siteye girdiklerinde karşılarında bir şeyler bulabiliyorlar hafiften içeriğimiz oluşmaya başladı ama bu siteyi geliştirmeyeceğimiz anlamına gelmiyor aksine sürekli yeni neler yapabiliriz nasıl daha iyi oluruz diye düşünüyoruz. Arhavifestivali sitesini uygun bir tema bulduktan sonra düzenleyeceğiz. Galeri bölümü için görsel ayarladık gibi festival tarihçesi, tarihlerinin yanı sıra fırsat bulursam konaklama ve ulaşım bilgilerini girmek istiyorum. Tüm bunlardan sonra diğer dillere çeviri işine sıra gelecek.
Nysera için de boş durmadım. Ufak bir kaç özellik ekledim siteye ama kullanıcıların bunu fark edeceğini sanmam zira içerik namına pek bir olayımız yok, yakında hizmetler bölümünü güncelleyip bazı projeleri duyuracağız. Bunlardan en önemlisi hazırlıklarını uzun süredir yaptığım tarayıcı oyunu olsa gerek. APYGM ile denediğim oyun sistematiğini Django ile Web ortamına aktaracağım. Kapalı beta aşamasına gelindiğinde buradan ya da Nysera dan duyurusunu yaparız.
Sunucuyla aram iyi. Ubuntu kurulu olan sunucumu sürekli güncelliyorum. Güvenlik konusunda çeşitli önlemler aldım ama yeterli olup olmadığını zaman gösterecek. Elimden gelenin en iyisini yapıp olabildiğince çok şey öğrenmeye çalışıyorum. Geçen gün Mysql ile ilgili bir kaç paketi güncelledikten sonra 12 saat boyunca işlemcim %102 oranında çalışmış. (102 nasıl oluyor sormayın, bende bilmiyorum). Sorunu epeyce araştırmama rağmen sebebini tam olarak bulamadım ama sorunu çözmeyi başardım. Arada hafif heyecanlı dakikalar yaşasam da çok şükür şuan bir sorun yok. Yaklaşık 45 günlük bir uptime var. 45 yıl olana kadar durmak yok! 😛
Zaman azlığının diğer bir kötü yanı hikayeme fazla vakit ayıramamam. Arada bir kaç satır yazıyorum ama fazla ilerlediğim söylenemez. Başı-sonu belli bir arayı doldurmaya çalışıyoruz. Tüm kitap belki sadece bir sahneyi görmek için yazılıyor tüm kitaplarda tek bir olayı… Garip… hayalimdekileri paylaşmak istiyorum inşallah kısa sürede bitirebilirim.

Pardus Kullanıcıları Grubu 100. Üyesi

2008 Yılının Mayıs ayında Linux.Com yeni sitesini yayına sokmuştu. Sitenin yayına girmesiyle birlikte yeni özelliklerinden biri olan gruplar bölümüne Pardus Linux User Group adı altında bir grup kurmuştuk. Amacı yabancı kullanıcılara Pardus’u duyurmak olan bu grup bugün itibariyle yüzüncü üyesiyle çok daha büyük çok daha güçlü.

Elimizden geldiğince Pardus’un tanıtımına katkı yapmaya çalıştık. Umarım grubumuz daha da büyür ve bazı şeylere ön ayak olur. Son zamanlarda topluluk süreçlerinden oldukça uzak kalmış olsam da 100. üyemiz olan Volkan arkadaşımızın aramıza katılmasından çok mutlu oldum.

Amacımız yabancı kullanıcılarla birlikte olmak olsa da üyelerimizin çoğu Türk. Dilerim onların bu öz verisi yabancı kullanıcılarında dikkatini çeker de daha fazla kullanıcıya ulaşabiliriz. Destek veren herkese teşekkürler.

Neden Django?

Sunucuyu kiralayalı hemen hemen bir ay olmak üzere bu süre zarfında çeşitli içerik yönetim sistemlerini deneme fırsatım oldu. Bunlardan kullanmayı kabul ettiğim sadece WordPress oldu diğerleriyse bana aşırı sorunlu geldi.

En büyük problem sistemlerin karmaşıklığı. PHP bilen birisi değilim, öğrenmek için zaman ayırmayıda düşünmüyorum ama kodu açtığında en azından ne yapmaya çalıştığını anlayabilirim. Sistem ne kadar güzel bir arayüze sahip olursa olsun eğer ki onun geliştirilme aşamalarına ya da çalışma mantığına vakit ayırmazsanız istediğiniz değişlikleri üzerinde yapmak için başkalarının yazdıkları eklentileri kullanmak zorunda kalırsınız. Peki hazırlanmış bir kodlar bütününü öğrenmeye ne kadar vakit gerekir?

Sistem karmaşıklaştıkça bu süreç çok uzuyor. Ve dökümasyon kısmı gerçekten sorunlu. Hani bende kodlama yaparken benden sonra koda bakacakları pek düşünmem ama başkalarıda benim yaptığım yanlışları yapmak zorunda değil. Ben en azından arada sırada yorum eklerim şekli şemalini düzgün yaparım… Birisi bir örnek veriyor ama verdiği örnekteki kod yanlış yazılmış. Yazdığı şeyi denememiş bile!

Böyle durumlarda eğer basit bir site üzerinde çalışacaksak WordPress yeterli oluyor ama iş hafifçe karmaşıklaştıkça ya da bir alanda profesyonelce bir site tasarlamak istediğinizde hazır içerik takip sistemleri bence bir çözüm değil. 20-30 satır kodla dinamik bir sisteme sahip olmak varken oturup başkalarının yazdığı kodları anlamaya çalışmak vakit kaybı.

Neden Django? Çünkü basit. Çünkü anlaması kolay. En basitinden modüler programlama mantığıyla çalışmış bir kişinin yazdığı uygulamaya baktığınızda ne yapmaya çalıştığını hemen anlıyorsunuz. Hepsinin temel mantığı aynı olduğu ve aynı sistemi kullandıkları için isterseniz başkasının yazdığı sistemi kullanırsınız. Ya da onu örnek alıp veya almadan kendi sisteminizi çok hızlı bir şekilde programlayabilirsiniz. Hem güvenli olur hem hızlı olur hem de size özel olur. İstediğiniz zaman istediğiniz şekilde modifiye edebilirsiniz. Üzerine bir şey ekleyeceğiniz zamanda dediğim gibi sistemi basit olduğu için başkalarının yazdıklarını inceleyip onaylamanızda daha az vakit alır.

Tüm bunları neden söylüyorum? Hazır sistemlerin hata kayıtlarını görüp düzeltmekten bıktığım için… Kendi yazdığım sistemde tertemiz bir error.log dosyası varken başkalarının hatalarıyla vakit kaybetmekten bıktım. Belki siteyi ilk açarken hazır şeyleri kullanmak kolay gözüyor ama ileride başınızı ağrıtabiliyor. Bunu anlamak çok şükür fazla vaktimi almadı, bundan böyle Django’dan vazgeçmem.

Excel’e Python ile Resim Ekleme

Oyunlarda ki hataları raporlarken ekran görüntüleri alıp bir tabloya dizmek sonrada yanlarına açıklamaları yazmak gerekiyor. 100’e yakın ekran görüntüsünü elle excel’e ekledikten sonra bunu otomatik yapmak için bir çözüm aramıştım. Diğer dillerde çeşitli kütüphaneler mevcut ama python için işime yarayan sadece bir kütüphane bulabilmiştim. Hazır vaktim varken bloga ekleyelimde tarihin tozlu sayfalarında kaybolmasın.


import os
from xlwt import Workbook

imagetype = ('.bmp','.BMP')
ourpath = os.path.realpath(os.path.dirname(__file__))
row_number = 0
w = Workbook()
ws = w.add_sheet('Image')
for files in os.listdir(ourpath):
t = os.path.splitext(files)
limits = len(t)/2
addedimage = 0
if t[1] in imagetype and addedimage < limits:
addedimage = addedimage + 1
ws.insert_bitmap(files, row_number, 0)
row_number = row_number + 15
print "file name is %s" % files
print "the image file added to excel"
w.save('images.xls')

Yağmur

Renksizdir, sadece etrafındakilerin renklerini çalar.
Sessizdir, duyduğunuz ya onu doğuran anasının çığlıklarıdır,
Ya da vurduklarının haykırışları…
Düşüncesizdir, kime zarar vereceğini kime yardım edeceğini hesaplamaz.
Acımasızdır, toprağa can verir ama kayayı da parçalar.

Django İle Sunucuya Taşınma

Sonunda taşınma işi bitti! Evet arkadaşlar sorunları halledip sistemimi tamamen sunucuya taşıdım. İlk django sitem nysera.net artık açık ama test yayınında diye not düşüyorum! Duyurusunu şimdiye kadar yapmamıştım çünkü tüm problemleri halledememiştim lanet bir satırın sonuna “/” işaretini koymayı unuttuğum için 10 sayfa hata kaydını okumak zorunda kaldım. Baştan daha dikkatli okusaydım bu sorunu yaşamayacaktım hatalara bakıyordum “mediaccs” diye bir şey var dikkatimi çektide anca fark ettim.

Django’yu Ubuntu kurulu bir sunucu üzerinde Emre Yılmaz‘ın tavsiyesi ile apache ve mod_wsgi ile çalıştırıyorum. Aslında çoğu sitede mod_python örneği gösterildiği için onu kullanacaktım ama Emre’nin uyarısıyla mod_wsgi’a geçtim. Kendi hatalarımda dışında gayet memnunum.

Neyse mod_wsgi kullanmak için bu dökümanı tavsiye ederim.

Temel olarak kaynak kodlarınız arasına django.wsgi isimli bir dosya ekliyorsunuz sonra apache de confing dosyanıza bir iki ekle site hazır hale geliyor. Fazla uğraştıracak bir kısmı yok ama ben admin medya dosyalarının adresini düzgün yazmamışım. Öncelike ilk hata dökümanın tekinden direkt kopyalamam olmuştu. Bu Linux’a ne kadar alışık olduğunuzla alakalı bir şey hiç aklıma gelmemişti kütüphanenin orada olmayabileceği, sonra kendim arayıp doğru dizini buldum. Belki de bilerek yanlış yazmışlardı doğrusunu öğrenmemiz için… /usr/lib/ altına bakmanızı tavsiye ederim. Sonra bu konumu yazarken satırın sonuna “/” eklemeyi unutmayın derim. Apache’yi yeniden başlatırken bir uyarı vermiyor ama sitenizin kayıtlarına baktığınızda uzun bir listeyle karşılaşıyorsunuz^^

Bir başka hata debug seçeneğini kapattıktan sonra 404.html ve 500.html gibi hatalar için gerekli dosyaları oluşturmamaktı. Debug seçeneği açıkken Django’nun kendi hata sayfalarıyla karşılaşıyorsunuz ama debug’ı kapattığınızda bu dosyaların template klasörünüzde bulunması gerekiyormuş.

Bir diğer hata Türkçe karakter problemiydi. Şimdiye kadar hep sqlite üzerinde çalıştığım için mysql’de ayarların nasıl yapılacağı konusunda pek bilgim yoktu. Türkçe karakter problemini gidermek için yeni bir veritabanı oluşturmam gerekti ama bu sefer veritabanını oluştururken CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; şeklinde karakter set ve collation ayarlarını ekledim. Bu Türkçe karakter problemini ortadan kaldırdı. Zaten kodları utf8 ile kaydediyorum tema dosyalarında da kodlama bilgisi utf8 olarak geçtiği için başka bir ayar yapmama gerek kalmadı. Bu tüyoyuda Ozan Hazer‘in blogundan öğrendim, kendisine buradan teşekkür ederim.

Başka bir hata da setuptools’u kurmayışımdı. Django eggs dosyalarını kullanıyormuş. Ben bunu bilmiyordum dökümanın tekinde de kurulması gerektiği yazmıyordu ama eğer kendi sunucunuzu yönetiyorsanız python-setuptools’u da mutlaka yükleyin. Egg nedir merak ediyorsanız IBM’in geliştirici sitesinde çok güzel bir makale mevcut, işinize yarayacaktır.

Umarım bu yazı işinize yarar. Herkese kolay gelsin