Web teknolojileri ile ilgili teknik bir blog…

PHP Editörleri (IDE’ler)

Editör ya da IDE’ler doğru kullanıldığında üreticiliğinizi ve kod kalitenizi kat kat arttırabilirler. Ne yazık ki birçok şeyde olduğu gibi editör konusunda da çok huysuzum. Şöyle huzurla kullanabileceğim bir PHP IDE’sine ne yazık ki kavuşamadım. İşte denediklerim:

  1. Dreamweaver (http://www.adobe.com/products/dreamweaver/)
  2. Zend Studio 5.x, 6.x Eclipse, PDT (http://www.zend.com/en/products/studio/)
  3. NuSphere PHPEd (http://www.nusphere.com/)
  4. TextMate (http://macromates.com/)
  5. NetBeans (http://www.netbeans.org/) Ücretsiz
  6. vim

Yazının Devamı»

Mac’te sevdiklerim ve sevmediklerim

On iki yıl Windows® kullandıktan sonra 3-4 ay önce cesaretimi topladım ve paraya kıyıp bir iMac aldım. İşte bu süre içinde sevdiklerim ve sevmediklerim:

Donanımında Sevdiklerim

Sadece donanımı için iMac alınırmış onu öğrendim.

  • Tıs sesi bile gelmiyor. Süper sessiz.
  • Kasası monitörün içinde, kablosuz teknolojiler entegre o yüzden elektrik fişinden başka kabloya ihtiyaç yok.
  • Üzerinde ihtiyaç duyduğunuz hemen her şey var: Sağlam bir çift hoperlör, USB’ler, firewire’lar, bluetooth, wireless, ethernet, webcam.
  • Klavyeyi herkes sevmeyebilir ama plastik değil alüminyumdan sessiz ve parmaklarınıza oturan şık bir klavye.
  • Klavyenin iki tarafında USB girişleri mevcut böylece USB stick’inizi kolaylıkla kullanabiliyorsunuz.
  • LCD ekranı gerçekten çok kaliteli ve canlı renklere sahip.
  • Bilgisayardan anlamayana masa süsü diye yutturabileceğiniz şıklıkta bir fare…

iMac Yandan Görünüş
Yazının Devamı»

Selenium ile web projelerinin test edilmesi

Selenium LogosuFirefox’un yavaşlığına katlanmamın tek nedeni extension’ları.
Güzel bir extension daha yakaladım gezerken: Selenium

Selenium’a “şu adrese git, oradaki şu linke tıkla, gelen sayfada şu kelime var mı?” gibi komutlar kaydedebiliyorsunuz. Komutları tüm browser’lar çalıştırıyor ancak kaydetme işlemi Firefox extension’ı ile çok kolay.

Web sitelerinin test edilmesi için yaratılmış olmakla beraber yapılan aksiyonu PHP ve ruby de dahil muhtelif programlama dillerinde çalışacak şekilde export edebildiği için başka servislerden data parse etmek isteyenlerin de işini kolaylaştırabilir. (Denemedim)

Çok lafa gerek yok, screencast’i herşeyi özetliyor:
http://selenium.seleniumhq.org/movies/intro.mov

Kodaman.org

Nokta ve Pilli Network ortaklaşa teknolojik bir paylaşım sitesi açmış: kodaman.org

kodaman.org

Dürüst olmak gerekirse tasarım özensiz, tag’leme ise zayıf. Ama daha yeni olmasına rağmen içerisinde kaliteli teknik dokümanlar var. Dokümanları yazanların bazıları yakınen tanıdığım, Nokta’nın kocamaaan siteleriyle güreşen ve Türkiye’nin en iyileri arasında yer alan programcı ve mühendisler…

Örneğin iltaren’in memcached ile ilgili yazısı biraz fazla low level olmakla beraber oldukça faydalı…

Ya da sonsuz sayıda alt kategorilere sahip datayı organize eden “nested set model” adlı algoritma da ilginç…

Nokta ve Pilli’yi eksik bir noktaya parmak bastıkları için kutluyorum. Umarım tutar…

Basit bir Model-View-Controller altyapısı

phpwomen.org diye site varmış, üstelik yarışma düzenliyomuş ödülü Zend Studio lisansıymış.
Üşenmedim, oturdum basit bir PHP altyapısı yazdım gönderdim:

http://www.phpwomen.org/forum/index.php?t=msg&th=488

MVC’nin yandan yemişi olan bu yapı FotoKritik’te kullandığımı andırıyor.

Web tabanlı yazılımlarda kullanılan MVC tip2′nin dezavantajı aynı işlem için çok dosyayla uğraşma gerekliliği. Controller dosyasında model aksiyonunu çağırıp view’a assign edeceksiniz, model dosyasında aksiyonu yazacaksınız, view dosyasında da formatlamayı yapacaksınız. Üstüne bi de helper metotları falan gerekirse onları yazacaksınız falan.

Bu yazdığım yapıda ise görüntüleme için tek, insert/update/delete için de iki dosyaya bakmak yetiyor.
Fazla programcının çalışmadığı küçük ve orta boy projeler için verimli bir şekilde kullanılabilir.

Zend_View_Helper ile Türkçe tarih formatlama

Uzun süredir kullandığım, okuduğumuz şekilde tarih gösteren PHP fonksiyonunun helper haline getirilmişini anlatmak istedim bu gece…

Bu yardımcı ile örneğin 2008-07-08 formatındaki tarihi: “1 gün önce” olarak görüntüleyebilirsiniz. Eğer tarih çok eskiyse 3 yıl 8 ay 12 gün sonra gibi gereksiz bir formata dökmemek için “8 Temmuz 2008″ şeklinde görüntülenecektir.

Şimdi biraz Zend Framework’teki view helper’lardan bahsedip en sonra da fonksiyonu yazayım.

Yazının Devamı»

CakePHP

Haziran başında CakePHP 1.2 RC1 çıkmıştı. Yeni versiyonda dokümantasyonu da oldukça toparlamışlar. CakePHP’yi ilk denediğimde birşeyler yakalayabilmek için epey aranmak gerekiyordu.

Özellikle “Common tasks” kısmı çok başarılı olmuş zira framework’lerle oynarken birşeyler kapıyorsunuz yine ama iş uygulamaya gelince insan aptallaşıp kalıyor.

Otomatikleştirme ve pratiklik konusunda CakePHP Rails’e iyice yaklaşmış ama debugger’da kodu incelemeye başladım az önce, insanın kullanası gelmiyor wallahi. CakePHP’nin yavaş olduğunu duymuştum, bu kodun yavaş olmasına hiç şaşırmadım.

Zend Framework’ü ise çalışır hale getirmek bir eziyet, çalışır hale getirdikten sonra da etkin olarak kullanmak için yine üzerinde epey bir çalışmak lazım.

Ruby on Rails’in hayranıyım halen ama ne yazık ki gerçek hayatta Rails’i kullanmak hiç akıllıca değil: Toplum desteği (community support) zayıf, işe almak için yazılımcı bulmak zor, ileri seviye çözümler gerektiğinde ve yüksek yük altında Rails’in ölçeklendirmesiyle uğraşmak getirdiği avantajları geri götürüyor. Bazen şüpheleniyorum, Signal37 hakkaten KISS (Keep it Simple Stupid) felsefesinden mi yoksa işi karmaşıklaştırmamak için mi özellikleri kısıyor…

Zend Framework on Rails isterim!!!

Bize bişey olmaz, Türküz ya…

Bir web projesinin yedekleme prosedürü en sıkıcı işlerden biridir. Muhtemelen hayatınız boyunca hiç ihtiyacınız olmayan birşey için bir sürü uğraşmanız gerekir.

Yedek alma işlemi öyle ya da böyle sistemlere yük bindirir, yedeğin doğru çalıştığını kontrol etmek vakit alır, yedeklerin kapladığı yer ve transferi sorundur ayrıca felaketlere karşı tam koruma için farklı sunucularda, farklı medyalarda ve hatta farklı şehirlerde kopyalarının bulunması gerekir…

…ve bütün bunları organize etmek onca yetişmesi gereken iş arasında çok değerli vaktimizi alır…

O yüzden özellikle biz Türklerin en çok ihmal ettiği konulardan biri… Aynı emniyet kemerini koltuğa bağlayıp üstüne oturmak, doğalgaz kaçağını çakmakla kontrol etmek, 150km/s’le öndeki arabayı 10 metreden takip etmek gibi…

Konu nerden geldi aklıma?

National Geographic’te şu uçak kazalarını araştıran bugünkü programda bir Türk firmasını işlemişler ismini kaçırdım. Özetle uçağın hız ve irtifa bilgilerini ölçen cihazlardan birinde bir hata meydana geliyor ve uçak çok yavaş gittiği halde göstergelerden biri hızlı gittiğini söylediği için pilot şaşırıp uçağın kontrolünü kaybediyor…

Kalkış sırasında hız göstergelerinden biri artarken diğeri düşüyor ama pilot uçuşu iptal etmiyor. Uzmanlar nedenini çok bilimsel bir şekilde araştırıp bulamamış ama ben biliyorum galiba:

- “Bişey olmaz kaç yıllık gaptan pilotuz şurda”

Uçak hatalı ölçümlerden dolayı arıza veriyor ve bizimkiler çözümü hemen üretiyolar:

- “Sigortaları çıkarıp geri takın!”

Tabii arıza sinyalleri kesiliyo sigorta çıkarılıp takılınca…

Dümen bozulsaydı da kağıt sıkıştıracaklardı heralde…

Türkiye’deki arızaların %90′ı kağıt sıkıştırılarak çözülürmüş ya…

Sonuç

Artizlik yaptığıma bakmayın bir kere yedek almaya üşendiğim, bir kere de aldığım yedekleri kontrol etmediğim için başım yandı.
Bir kere de hosting firmasında yangın var haberi aldığımda kafamdan aşağı kaynar sular dökülmüştü zira yedekleme sunucusu da oradaydı ama allahtan hatalı istihbaratmış…

Türküz ama bize bişeyler olup olup duruyo sadece kadere kısmete bağlamaya alışmışız…

Zend Framework’e giriş ve örnek proje

Zend Framework‘ün dokümanlarını okuyarak hızlı bir başlangıç yapmanız (quickstart) neredeyse imkansız. Bu nedenle Zend Framework’e başlamak isteyenler için örnek bir proje hazırlamaya karar verdim.

Hazırladığım sıkıştırılmış dosyayı açıp web sunucusu ayarlarında yaptıktan sonra çalışan, basit bir örneğe sahip olacaksınız. Kodlar bir sürü yorumumla dolu, dolayısıyla kodları okuyarak birçok şeyi anlayabilirsiniz.

Baştan şunu belirtmeliyim ki Zend Framework bana göre kesinlikle acemiler için bir framework değil. Otomasyon özellikleri de çok zayıf. Eğer Ruby on Rails (RoR) ayarında bir framework arıyorsanız CakePHP ya da CodeIgniter‘ı (CI) takip etmelisiniz.

Zend Framework’ün avantajı tamamen bağımsız kullanılabilen modülleri sayesinde kendi kurallarını koymak isteyen ustalar için sağlam ve hızlı bir altyapı sunması. Dolayısıyla ZF kullanılarak Rails, CI ya da CakePHP ayarında bir alt-framework yaratılabilir.

Örnek Zend Framework Projesi

zf_ornek_proje.zip 18 kB (ZF ayrıca indirilip lib altına konmalı)
zf_ornek_proje_full.zip 3.05 MB (ZF 1.5.2 içerir)

Yazının Devamı»

Kodlama için ideal fontlar ve renkler

İtiraf ediyorum ara ara editörünün renklerini değiştirmek için saatlerini harcayan bir tür “sapık”ım ben… Bu gerçeği sakladım, utandım böyle saçma sapan birşeyle vakit harcadığımı insanların bilmesinden ama artık itiraf ediyorum… Oh be…

Gerçi sevgilisinden ve ailesinden bile daha fazla o abuk subuk işaretlerle dolu ekranı gören bir insan olarak göz zevkime hitap eden bir ortamda çalışmak için çaba sarf etmem belki de o kadar sapıkça değildir… Yani umarım…

Kod ekranınızla oynarken 2 şeye müdahale edebiliyosunuz: Font ve renkler.
Editörün kontrolünde olan satır, karakter ve kelime aralıklarına ise maalesef müdahale edemiyorsunuz. Gerçi bugüne kadar kullandığım editörlerin hiçbirinde (Zend Studio, Eclipse, Dreamweaver ve Nusphere PHPEd) sorun olmadı bu.

Font olarak bu aralar consolas’a takılıyorum. Benden OK alan fonlar:

 

Consolas

Vista’da gelen bu font Office 2008′in de içinden çıkıyor.

Consolas

 

Dejavu Sans Mono / Bitstream Vera Sans Mono

Dejavu serisi fontları normalde de severim zaten. Monosu da gayet şık duruyor…

Dejavu Sans Mono

 

Monaco

Monaco esasında Mac’in çok sevimli bir fontu ama ttf’i windows xp’de bir garip oluyor. Bir havası var ama bilmiyorum, yine de gözümü rahatsız eden birşeyler var… Belki de 8 puntoda bile dana kadar olması…

Monaco

Ekranın güzelleşmesinde fontların anti-aliased olması çok önemli o yüzden biçokları gibi ben de windows ayarlarından fontları ClearType ile anti-alias yapmasını seçiyorum. Zend Studio’nun (eclipse olmayan) görünümü 5.5.1 versiyonunda sonra birşeye benzedi, bunun için windows’unkilere ek olarak Zend’in ayarlardan da anti-alias’ı seçmek lazım.

Renklerrr

Renk konusu çok sinir. Yıllardır her IDE kuruşumda oynarım renklerle hala tam istediğim gibi olmadı bir türlü.
PHPEd için son ayarlarım şu şekilde

R, G, B formatında

PHP Tags      : <?php                           255,0,0 Bold
Variables     : $variable                       255,191,0
Integer       : 15                              192,255,192
Comment       : // Deneme                       172,172,172
Text          : Quick brown stupid fox is dead  224,224,224
Delimeters    : {()}                            224,224,224
PHP Functions : preg_match                      20,154,235
Reserved      : function                        220,79,255
Matched       : {}                              0,0,0/187,206,49
PHP Doc       : $param                          49, 163, 206
Heredoc       : Quick brown stupid fox is dead  28, 227, 107

Bildiğiniz kullandığınız IDE scheme’leri varsa paylaşırsanız beni bahtiyar eylersiniz efenim…

İlgili Alakalı Linkler Falan