* You are viewing the archive for the ‘web’ Category

BLOGMANİ, BİR BLOGRAZZI KLONU DEĞİL

Birisi, “blograzzi varken neden uğraşıyorsun?” dedi.

Güzel soru; itiraf edeyim, Serhan fikri ortaya attığında aynısını söylemiş ve ilgilenmemiştim.
Gelgelelim; bu sistem Blograzzi’den farklı çalışıyor. Blogmani, ratingden çok, yazı ve yazar merkezli bir sistem.

Bu birinci neden; bir yenilik getiriyoruz.

İkinci neden, Wordpress’in komünite sistemi olmamasını farkedip, bundan rahatsız olmuş olmam. İleride projeyi belli bir noktaya getirip, GPL lisansıyla dağıtabilirim.

Üçüncü neden, “gizli” puanlama sisteminden rahatsız olmam. Blogmani, belli bir yere gelirse, Blograzzi’yi bu konuda açık olmaya itebilir. Açıkçası, Blograzzi’yi önemli buluyorum; ama gizli bir puan sistemiyle desteklemiyorum.

Dördüncü neden, rekabet yaratmak. Bunu daha önce Pozitif PC e-dergi ile yaptık. O zamanlar yeterince farkında değildik ama, zaman içinde Pozitif PC’nin birçok taşı yerinden oynattığını, e-dergi furyası başlatıp olanlarında kalitesini yükselttiğini farkettik. Blogmani ile de böyle bir etki yaratmak istiyoruz. Umuyorum başarılı oluruz; kendi açımdan değil. Zira, ben rating başarılarına prim veren biri değilim. Benim için Blogmani’nin başarısı, daha fazla kişisel yayıncı kazanmak, olanları da teşvik etmektir.

Blogmani – Google ve Alexa verilerini çekmek

Daha önce, Technorati verilerini, Technorati API’si kullanarak çektiğimi söylemiştim.

Aynı şeyi, Alexa için yapamadım-miktar ne olursa olsun, Alexa API’lerini kullanmak için para ödemek zorundasınız.

Bu durumda, geriye iki seçenek kalıyordu: PHP’nin CURL fonksiyonları, ya da sayfaya soket açıp, sayfa içeriğini işlemek.

CURL kullanmanızı tavsiye etmem: aslında harika çalışıyor; ancak makinaya minimal bir Apache kurduktan sonra, CURL fonksiyonlarının çalışmadığını farkettim. Standart Apache kurulumu ile gelmeyen çoğu kütüphaneyi kullanmak risklidir - sunucunuzda da o fonksiyonlar olamayabileceğinden, bilgisayarınızdaki web sunucusunda güzel güzel çalışan projeniz, hostunuz üzerinde patlayabilir.

O zaman, ben de soket açarım dedim ve fsockopen’ı bol bol kullandım!

fsockopen ile açtığınız sayfalardan spesifik bir bilgiyi alabilmek için, Regular Expressions’ın kucağına düşüyorsunuz. Eğer çok iyi düzeyde Reg Ex bilginiz yoksa -benim gibi!- ve problemi hızlı çözmek zorundaysanız, bildiğiniz kadar Reg Ex ile, sprintf (ve türevleri) ile birlikte, PHP’nin katar işleme fonksiyonlarını kombine kullanın. 15 sene önce olsa farklı konuşurdum; artık yazılım geliştirmek kolay ama zaman çok kısıtlı. Günümüzde en kıymetli kodcu, hızlı olan. Bilgisayarlarda çok hızlı olduğundan, genelde yazabileceğiniz en kötü kod bile, aletlere ter attıramıyor. (Simulatör, 3D oyun, ya da genetik alanında kullanılan tarzda karmaşık programlar yazmadığınızı varsayıyorum!)

Alexa sorununu nispeten kolay çözdüm; zira verilerin düzenli bir XML formatında geldiği bir sayfaya çengel atmayı başarabildim!

Google API’leri günde 1000 sorguya izin verdiği ve sonuçları hala parse etmeniz gerektiği için, yine API kullanmama kararı aldım.

Google ile işim, kolay görünmesine rağmen, biraz maceralı geçti. Pagerank’i alan kodu Internet’ten 10 dakika içinde çalıp(!) neredeyse aynen kullandım. Gelgelelim, arama sonuçlarını veren bir kod bulamadım. Bulduğum üç örneğin ikisi CURL’e dayandığı için, daha ilk anda çalışmadılar. Üçüncü, soket kullanan örnek ise, yazılan yanlış Reg Ex ifadeleri yüzünden çalışmıyordu.

Kolları sıvayarak 2-3 saat içinde, link sayısını veren Google kodunu yazdım. Aslında, uzamanın nedeni, yine bir Reg Ex-PHP azizliğiydi…

Benim kullandığım Apache+PHP sunucusunda, Unicode’dan (UTF-8), ISO tabanlı dil kodlamalarına çeviri yapan fonksiyonlar çalışmıyor. (Açıkcası, hala geliştirilme aşamasında ve PHP’yi ICU desteği ile derlemeniz gerek). Sorun şu; sayfadan Türkçe karakterler geliyor ve Reg Ex, Unicode anlıyor olması gerektiği halde, anlamıyor ve unicode karakterleri bulamıyor. Çözüm? Unicode harfler yerine, Reg Ex’in (.) -nokta- güzelliğini kullanmak! Böylece, katarınız içindeki unicode karakterlerini “her ne gelirse” diye geçiştiriyorsunuz. Harika bir çözüm değil ama her koşulda işe yarıyor. En azından, insanlar php.net’te ve forumlarda “reg ex ile unicode işleyemiyoruz” diye ağlaşırken, siz geminizi yürütüyorsunuz.

Sonuç olarak, Google Pagerank, link sayısı ve Alexa verileri gibi bilgileri de çekmeyi başardım. Technorati işini de dün çözdüğüm için, geriye birkaç iş kaldı.

Bunlardan biri, çektiğim verileri veritabanına yazmak. Bu, en kolay iş.

İkincisi, bu sitelere ulaşılamadığında, scriptimin neler yapacağına karar verecek ek fonksiyonları yazmak. Örneğin, Technorati’den veri gelmezse, tekrar deneme yapılacak mı? Kaç kere denenecek?

Bu tip detaylar…

Üçüncüsü, bu modülü ne zaman ve nasıl çalıştıracağıma karar vermek. Bunun içinde sunucu üzerinde bazı denemeler yapmak gerekiyor. Örneğin, bana üzerinde cron çalıştırmak için izin veriyor mu? Şayet cron iznim yoksa, scripti manuel çalıştırmak gerek.

Son olarak, iş puanlama algoritmasını çıkarmaya kalıyor. Bu iş aslında son derece basit. Tek bir zorluğu var; o da adil ama rekabetçi bir algoritma çıkarmak.

Umuyorum, bir ve iki numaralı maddeleri Pazar ve Pazartesi günü hallederim.

Technorati API, Blograzzi ve PHP

Blogmani projemden daha önce bahsetmiştim.

İki gündür, projeyi kendi bilgisayarıma aldığım için hızlı ilerleyebiliyorum. Yaklaşık 20 gündür, sunucu üzerinde değişiklik yapıp, sonuçları bekleyerek boşu boşuna debelendim. Yarım saatlik bir emekten sonra, çok daha hızlı çalışabilmeye başladım. Her kodcunun bazı komik tembellikleri vardır; benimkisi de, çalışma hızı ve rahatlığını artıracak basit işlemlerden sürekli kaçınıyor olmak.

Şu an, basit bir komünite sistemi için “yeterli” olan bazı geliştirmeleri tamamladım. Umuyorum, gece server’a upload edeceğim. Şu haliyle site feci görünüyor ve bazı şeyler darmadağınık. Puanlama sistemini de halledince, Serhan’la birlikte tema gibi konulara da eğileceğiz ve biraz biraz kullanılabilir bir altyapı çıkacak ortaya.

Zamanımın çoğu, Wordpress’in bazı saçmalıklarıyla debelenmekle geçiyor. Bunlardan bir tanesi, usermeta isimli veritabanı tablosu. Nedense, bilinen tüm veritabanı tasarım kurallarına karşı gelerek, kullanıcı bilgilerinin tutulduğu tuhaf bir tablo hazırlamışlar. Wordpress, kullanıcı adı ve şifre gibi temel bilgileri users tablosunda tutarken, isim,soyad gibi bilgileri usersmeta isimli bir başka tabloda tutuyor. Bazı durumlarda, kullanıcı bilgilerini çekmek, deveye hendek atlatmaktan beter. Mümkün değil demiyorum; ama öylesine “çakma” çözümler geliştirmek zorundasınız ki, site büyüdüğünde (özellikle ziyaretçi sayısı arttığında) verdiğiniz yanlış kararların altında ezilmeniz işten bile değil. Bu yüzden, usersmeta’yı olduğu gibi bırakarak -çünkü bazı eklentiler ve iç fonksiyonlar onu kullanıyor ve hepsini değiştirmeye kalkmak, sistemi yeni baştan yazmaktan daha zor-, kritik alanları users tablosuna taşıdım.

Neyse ki, şu an için sorun yok. Aslında, kontrol panelinin tasarımı da ciddi zorlayıcı etkenlerden biri. Buna daha sonra geleceğim; sistem tamamlandıktan sonra, şayet kullanıcı sayısı artarsa, oraya da el atacağım.

Az önce, puanlama sistemine başladım.

Blograzzi’nin izinden gideceğim: Google, Technorati verilerini çekip, bunu başka parametrelerle birlikte kullanıp, puanlama sistemini yazacağım. Daha önce de bahsettiğim gibi, puanlama sır filan olmayacak. En sonunda algoritmayı açıklayacağım; bununla oturup kendi puanınızı kendiniz hesaplayabileceksiniz.

İlk olarak, Technorati verilerini çekmeye karar verdim…hatta çektim de. (Resmi büyütün).


Technorati API, Blograzzi ve PHP

Verileri çekerken izleyebileceğim birkaç metod vardı.

1.Kullanıcının sayfasını technorati içinden açıp, gelen HTML sayfayı parse ederek istediğim alanları çekmek. Bu daha önce yapmadığım iş değil. Hala birileri farkında olmasa da, PHP, RegEx (Regular Expressions – Düzenli İfadeler) konusunda neredeyse PERL kadar iyi; üstelik POSIX ya da PERL uyumlu Reg Ex kullanabiliyorsunuz.

Bunu yapmadım. Çünkü Technorati API’nin varlığından haberdarım ve daha önce bahsettiğim gibi, “uydurma” işleri sevmiyorum (mecbur değilsem, vaktim varsa)

2.Blograzzi’den verileri “çalabilirdim”. Bunu da doğal olarak yapmadım. Birincisi, özellikle veri, fikir ve bilgi hırsızlığına karşıyım. İkincisi, pragmatik bir çözüm olmasına rağmen, bu bir klon site değil. Aslında amacım bir yandan, daha önce Pozitif Linux’ta ve Pozitif PC’de yaptığım gibi, insanları teşvik etmek; birşeylerin sanıldığından çok daha kolay olduğunu göstermek.

3.Son olarak, Technorati API’yi kullanabilirdim ve bunu yaptım.

Gelgelelim, bunun bazı sakıncaları var.

Eğer para ödemezseniz, Technorati, API’si üzerinden, günde 500 query yapmanıza olanak tanıyor. Bunun anlamı şu: sonuçları günlük güncelleyeceksem, üye sayım 500′ü geçemez. Ya da para ödemem gerek, ama para kazanmadan doğal olarak Technorati’ye para verecek halim yok(!).

Birkaç API key almak da bir başka çözüm; kodda minik bir oynamaya bakar;)

Aslında API key’i limitsiz kullanabilsem, Blogmani içine çok çok daha kullanışlı bir dizi fonksiyon ilave edebilirdim. Öte yandan, buna zamanım ve isteğim de yok. Eminim, bir gün projeyi açarsam, birsürü insan bu tür siteler yapacaktır.

Technorati API’lerini kullanmak kolay olsa da, kod hamallığından kaçınmak için hazır bir kütüphane buldum. Duck Soup, bu işi hakkıyla yapıyor. Kodu inci gibi yazılmış. Gelgelelim, Technorati sunucuları pek hızlı sayılmaz; böylece Blograzzi’nin neden sonuçları anlık değilde günlük güncellediğini de keşfetmiş oldum.

Bundan sonra yapacağım şu: bir tablo açıp, Technorati’den çektiğim verileri günlük olarak buraya kaydedeceğim. Bunu da, günün “ölü saatlerinde” yapmam gerek ki, sunucum isyan etmesin. Bu arada, Linux tabanlı sunucumun Cron hakkında bana ne gibi haklar tanıdığını da öğrenmem gerek. Aslında, sunucu elimde olsa, yapacağım iş çok basit: cron.daily içine bir script atacağım; bu da PHP ile yazdığım, verileri toplayıp veritabanına giren PHP kodunu çalıştaracak (komut satırından, ya da shell script içinden, “php phpscriptim.php” şeklinde PHP kodu çalıştırabilirsiniz). Elbette, bu kadar hakkın, paylaşımlı bir sunucu içinde bana tanınmış olacağını sanmıyorum; ama birkaç saat içinde çözebileceğim, basit bir problem bu…

Yazmaktan sıkılmak ve blogların laneti

Yazmaktan sıkıldım. Günde 5-6 post yazdığım günler oluyordu. Şu sıralar hiç de meşgul olmadığım halde, uzun süredir yazmıyorum.

Her insan kendini bir şekilde ifade etme ihtiyacı duyar. Yemek, seks kadar öncelikli olmayan bir dürtü olduğu halde, yine de bazılarında fazlasıyla güçlüdür.

İlk yazmaya başladığımda, yazdıklarımı kimseye okutma ihtiyacı duymamıştım. Entelektüel bir korku filan değildi; denemek ve iyi ya da kötü yazabiliyor olmak, bana o an için yeterli bir tatmin sağlamıştı.

Egosantrik bir herif olduğum doğrudur. Hatta, sırf önem verdiğim bazı yazılar okunsun diye, sürüyle osuruktan yazı yazdım. Bu blogda yaklaşık 600 yazı var. Tezgahımın üstünde yayınlanmamış en az 1000 sayfa duruyor. O 1000 sayfa içinde değer verdiğim birçok hikaye,deneme, hatta berbat bir roman var; ama bu 600 yazıdan beni tatmin edecek 40 tane yazıyı zor seçerim.

Egoist olmakla egosantrik olmak farklı şeyler. Bazı konularda yazıyor olmamın nedeni, insanlığa karşı sorumluluk hissetmemden. (İnsanlara değil!). Belki çok küçük, önemsiz bir şey yapıyorumdur; ama küçük şeyler de zaman zaman fark yaratabilirler. Çok samimi olarak, daha fazla konuşmak, tartışmak ve şüphe duymak gerektiğine inanıyorum.

Bu bahsettiğim tarzda yazılar yazmaktan entelektüel bir haz aldığımı söyleyemem; en azından bir kısmından. Bir roman yazmaya başladım ve bu, entelektüel hazları doyurmak için kesinlikle çok daha iyi bir yol…

Kısacası, burada yazdığım bazı yazılarla kendim gibi düşünen insanlarla iletişim kurmaya, paylaşmaya ve tartışmaya çalışıyorum. Aslında, benim gibi düşünmenizin önemi yok; hatta benden daha akıllıca, ama söylediklerime ters birşeyler söylemeniz daha çok hoşuma gider. Ortada ne kadar çok fikir ve düşünecek alan olursa, ben kendimi o kadar geliştiririm; başkalarının da geliştiğini görmekten zevk alırım.

Gelgelelim; artık “bloglamak” hoşuma gitmiyor. Zamanında bu iyi bir fikir gibi gelmişti. Değil.

Herkese seslenmeye çalışırken, aslında kimse duymuyor. Küçük bir sosyolojik tesbitinizden zevk alacak biri, tesadüfen Nokia N81 ile ilgili bir blog girdisi okuyor ve “işte bir gereksiz blog daha” diyerek sitenizi terkediyor; ya da tersi. Çok kötü bir okuyucu memnuniyeti sicili. Zaman zaman 5000′e yaklaşan okuyucu rakamları yakaladım ve biliyorum ki, bunların en az yarısı bir şekilde “okuduğum zamana acımadım” diyebilecekken, sadece %10 gibi bir kısmı kendi ilgi alanına giren birşeylere ulaştı.

Blogun şekilsel bir dezavantajı var. Blog denen şey, lanetli.

Bir dergi okurken, elinizde indeks var. Çoğu zaman, 300 sayfalık dergiyi karıştırıp, her yazıyı biraz okuyup, acaba ilgimi çeker mi demezsiniz.

Oysa, SEO oyunları yüzünden, blogları okunamaz hale getirdik. Daha fazla insana ulaşayım derken, sitenize gelen mutsuz okurlar sürüleri yarattık.

Sonuç? Gerçekten çok iyi bir ziyaretçi sayım var. Google sağolsun. Dersimi iyi çalıştım. 3 senedir, hemen her gün, Google’ın nasıl davrandığını anlamaya çalıştım. Bunun karşılığını da hit olarak fazlasıyla aldım. Ama durumdan memnun değilim. Çünkü ulaşmak istediğim insanlara ulaşamıyorum ve blogum umduğum gibi bir etkileşim yaratmıyor. Önemli yazılara doğru dürüst yorum gelmediği halde “osuruktan” diye tabir ettiğim, hiçkimsenin hayatını bir adım ileri götürmeyen konularla ilgili yazılara -cep telefonu vs- akın akın yorum geliyor.

Uzun lafın kısası, uzun süredir keyif aldığım bu hobiyi daha farklı bir formatta sürdürmek niyetindeyim. Kafamda daha netleşmemiş bazı fikirler var. Bunlardan en ağır basanı, blog formatını terketmek ve istediğim ekonomik düzeyi tutturduktan sonra sıfırdan, Wordpress gibi, ama format olarak farklı bir motor geliştirmek ve GPL ile dağıtmak.

Blogmani

Bir süredir Serhan’la birlikte Blogmagazin isimli bir proje üzerinde çalışıyoruz. Artık kod yazmaktan filan kusma noktasına geldiğimden, kendi adıma konuşayım, yavaş ilerliyorum.

Wordpress, harika bir temel olmasına rağmen bazı komik eksiklikleri de var. Bu kadar iyi ve kötü olduğunu, blogmagazin ile uğaşırken farkettim; zira blogculuk maceram boyunca teknik altyapı beni hiç çekmedi; enerjimi hep yazmaya harcadım.

Blogmagazin, umuyorum bu ayın ortasına kadar, blogmani ismiyle açılacak. Öncelikle basit bir topluluk sistemi getiriyoruz Wordpress’e. Bu, hemen hemen bitti diyebilirim. Bazı kullanım kolaylıkları, tema entegrasyonu gibi detaylarla uğraşmaktayım. Wordpress’in bazı iç fonksiyonlarını biraz daha geliştirdik. Mesela, siteye üye olanlar kendi site ya da bloglarının feed’lerini profil sayfalarına ekleyebiliyorlar. Bunu yapabilen bir eklenti olmaması beni çok şaşırttı mesela. Başka bir eklentiyi “bozarak” bu amaç için uyarladım. Üyeler arası mesajlaşma şu an aktif ve çalışrı durumda. Sadece yazılara değil, kullanıcıların kendilerine de yorum yapabiliyorsunuz. Puanlama sistemini ise düşünüp sonradan dahil etmeyi unuttuğumu şimdi yazarken hatırladım(!)

İlk bakışta fazla bir değişiklik yokmuş gibi görünmesine rağmen, neredeyse kurcalanmamış tek bir dosya bile kalmadı.

Kodlamanın bir kısmından memnun değilim; zaman ve sıkıntı faktöründen dolayı bazı hoşuma gitmeyen kestirmeler bulmak zorunda kaldım. Ayrıca, bazı güvenlik açıkları da mevcut(!).

Önümüzdeki hafta, puanlama sistemini kodlamaya başlamayı umuyorum. Blograzzi mantığında bir puanlama olacak bu; ancak bir-iki “adalet” kriteri bulmaya çalışıyorum ve önerilere de açığım. Hemen söyleyeyim; algoritmanın nasıl çalıştığını açıklayacağız.

Bu tip işler büyük bir enerji gerektiriyor; çünkü uğraştığım çok sayıda iş var ve artık bilgisayara dair birçok kavramdan fena halde sıkılmış durumdayım. Dolayısıyla, yavaş yürüyor ve yavaş yürümeye mümkün. Türkiye’de sorun, bu tip projelerin para kazanmıyor olması. Aslında, dışarıda çalıştığının yarısını kazanacağını bilse, web’de girişim yapacak çok sayıda insan vardır diye tahmin ediyorum. En azından ben bu kafadayım. Ama 100-200 dolarlık Google gelirleriyle bu işlere dalmak sadece demoralize ediyor insanı. Hani hiç gelmese daha iyi diyeceğim. Öte yandan, psikolojik olarak da olsa, bir para gelmesi şart; aksi takdirde “öyle ya da böyle, bu da bir iş” halet-i ruhiyesine giremiyorsunuz.

Blogmani’de insanlar girdi yazabilecek ve bloglarını tanıtabilecekler. Blog Kazanı ile Blograzzi’nin birleşimi gibi görebilirsiniz.

Önerilere, her zaman olduğu gibi, açığım.

3, toplam 18 sayfa«123456789101112131415»...Last »