Web teknolojileri ile ilgili teknik bir blog…

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

Yeni maceralara yelken açarken :P

Başlık biraz geyik oldu ya neyse…
Şöle bi baktım da yazmayalı epey bir ay olmuş… Ama huysuz olmamın dışında mazeretim var… Nokta‘daki görevimi bırakıp tekrar Bilkent Üniversitesi‘ne dönüş yaptım.

Nokta benim çok değer verdiğim insanların kurduğu çok özel ve Türkiye’ye çok büyük katkısı olan gönülden bağlı olduğum bir firma. Oldukça emeğimin geçtiğini düşündüğüm de bir firma, Nokta’nın teknik yapısını yönlendirirken kuramadığım kendi şirketim yerine koyacak derecede özümsediğim bir firma diyebiliriz.

Çocuğum gibi büyüttüğüm FotoKritik‘i, ona gözü gibi bakacağından şüphemin hiç olmadığı bir ana-babaya tamamen, gönül rahatlığıyla bıraktım. FotoKritik’in daha da iyi yerlere geleceğinden hiç şüphem yok…

IE6′dan kurtuluyo muyuz nedir?

Bugün otomatik güncelleştirmeler Internet Explorer 7′yi getirdi karşıma… Tasarım testleri için makinemde IE6′yı bulunduruyordum hala…
Bu güncelleştirmede dikkatimi çeken nokta “free” olarak bahsedilmesiydi…
Çünkü bildiğim kadarıyla Internet Explorer 7′yi yüklerken Windows’un kopya olup olmadığını kontrol ediyordu Microsoft…
Bu kontrolün kalkması demek Windows’u kaçak kullanan bir sürü insanın Internet Explorer 7′ye geçeceği anlamına geliyor aslında…
Windows Vista’nın da yaygınlaştığı düşünülürse artık yavaş yavaş kurtuluyoruz Internet Explorer 6′dan sanırım…

Gece gece mutlu oldum

Agile Programming – Esnek Programlamanın temel ilkeleri

Esnek programlamayı özetlersek:

  • Kullanışlı yazılımın müşteriye hızlı ve sürekli çıkarılması ile müşteri memnuniyeti
  • Çalışan haldeki yazılım sık aralıklarla çıkarılır (Aylar yerine haftalar)
  • Çalışan haldeki yazılım devam eden işleyişin temel ölçütüdür
  • Yazılıma başladıktan sonra ortaya çıkan ihtiyaçlar da karşılanır
  • Müşteri ile yazılımcı arasında sıkı, günlük iletişim ve kooperasyon
  • Yüzyüze konuşmak iletişimin en iyi yöntemidir
  • Projeler motive olmuş ekip elemanları üzerinden yürür, ekip elemanlarına sorumluluk almaları konusunda güvenilmelidir.
  • Teknik olarak mükkemmeliyetçiliğe ve güzel tasarıma sürekli dikkat edilir
  • Basitlik
  • Kendi kendini organize eden takımlar
  • Değişken çevre koşullarına sürekli adaptasyon

Yazının Devamı»

Zaman Framework Zamanı

Ruby on Rails’i ilk gördüğümde çok etkilenmiştim ancak Ruby’nin hantallığı ve yıllardır süregelen PHP alışkanlıklarım Rails’i boş zamanlarımda minik uygulamalar yaptığım ve tasarlayanların bulduğu kolaylıkları öğrenme amaçlı kullandığım bir araç mertebesinde bıraktı.

Daha sonra Zend Framework çıktı (Symfony ve Cakephp de var framework olarak ama onları seçmeme nedenim ayrı) ama açıkçası ZF benim için hep “hiç yoktan iyidir” framework’ü oldu zira şu haliyle ZF’yi anlamak için bol bol araştırma yapmak ve debugger’ınızı açıp adım adım nasıl çalıştığını görmeniz gerekiyor.

21 Aralık’ta ZF ekibinin duyurduğuna göre ZF v1.5′te bence en büyük eksiklik olan “programcıyı yönlendirme” işine eğilmiş gözüküyorlar. Zend Framework’ün diğer framework’lerden farkı programcıyı kendi altyapısına uymaya zorlamaması. Kütüphaneleri veriyor ve programcıyı istediği yapıda kullanmakta özgür bırakıyor ancak MVC Model 2′nin karmaşıklığı, framework’teki kütüphanelerin çokluğu öğrenme zorluğu yaratıyor. Özellikle projenin organizasyonu hakkında (modeller nerede duracak, kontroller yapısı nasıl olacak vs.) Öğrenip kullanmaya başladığınızda ise birçok şeyi kopyala – yapıştır yaptığınızı fark ediyorsunuz.

ZF v1.5′te opsiyonel olarak proje yapısını otomatik sunma betiklerle işlemleri kolaylaştırma üzerine yoğunlaşmışlar gibi gözüküyor. Rails’i inceleyenler bu tür betiklerin getirdiği kolaylıkların farkındadır zaten, ZF’de de artık bu kolaylıkları görebileceğiz gibi duruyor.

Benim öngörüm ileride framework’lerin etkisiyle web tabanlı yazılımların üretilme zamanları oldukça kısalacak. Rails, ZF, Django, CakePHP, Symfony derken bunların IDE’lere entegrasyonu önplana çıkacak. Biz web2.0 geliştiricileri performans, güvenlik ve stabilite kaygılarıyla kendi yapılarımıza bağlı kalacağız belki, ancak web tabanlı servis veren diğer yazılımlar için bu altyapılar geliştirme sürelerinin azalmasına ve dolayısıyla maliyetlerin düşmesine destek olacak…

Diğer taraftan Javascript framework’leri de büyük bir hızla gelişiyor. Katmanlı yapı sayesinde birçok geliştirici artık projelerini en az 5-6 katmanda düzenliyor: CSS, Javascript, (X)HTML 3 ayrı katmanda semantik webi de destekleyerek önyüz mühendisliği adı altında gelişirken arkada template sistemi ile önyüze bağlanan page/interaction logic, application logic, data store gibi katmanlar birbirinden ayrı ve düzenli bir yapıya giriyor.

Javascript framework’leri RUI (Rich User Interface) oluşturulmasını hızlandırıyor, hatta biraz iddialı olacak belki ama birçok kişi için mümkün kılıyor. Javascript IDE’leri bile yavaş yavaş ortaya çıkmaya başladı: Bkz. Aptana

Sektör artık framework’lere doğru yönlenmiş vaziyette. Kullanmayacaksak bile altlarındaki çözümleri iyi öğrenmemiz gerek…

Web Sitelerindeki En Yaygın Güvenlik Açıkları

En çok rastlanan güvenlik açıklarına bir göz atalım:

  1. SQL Injection
    SQL cümlesi içerisine parametre olarak gönderilen değişkenin saldırgan tarafından değiştirilerek gönderilmesiyle oluşan açıktır.
  2. Session Fixation
    O an siteye giriş yapmış ziyaretçinin session id’sini bir şekilde alarak ziyaretçinin aktif session’ından yararlanma felsefesine dayalı bir güvenlik açığıdır.
  3. Session Poisoning
    Programcının gönderilen parametreleri kontrolsüz bir şekilde session değişkenlerine ataması nedeniyle oluşan açıktır.
  4. XSS (Cross Site Scripting)
    Saldırganın sayfaya bir açıktan yararlanarak javascript, css, html kodu yazabilmesi nedeniyle oluşan açıktır.
  5. XSRF (Cross Site Request Forgery)
    Saldırganın o an siteye giriş yapmış ziyaretçiye farkında olmadan istediği aksiyonu yaptırması ile ilgili bir güvenlik açığıdır.
  6. RFI (Remote File Inclusion) ve LFI (Local File Inclusion)
    Programcının gönderilen parametreleri kontrolsüz bir şekilde çalışan koda “include” etmesi nedeniyle oluşan bir güvenlik açığıdır.
  7. Referrer Spoofing
    HTTP_REFERER ziyaretçinin bir önce ziyaret ettiği sayfayı tutan bir environment değişkenidir. Ancak bu değişken istemci tarafından gönderildiği için bu değişkene dayanarak yapılan güvenlik kontrolleri kolayca aşılabilir.

Yeni başlayanlar için web teknolojileri

Performansın sayfa ziyaret istatistiklerine etkisi ile ilgili bir yazıma gelen bir yorum ne zamandır aklımda olan web teknolojileri üzerine genel bir bilgilendirme yazısını yazma fikrini getirdi aklıma pazar pazar… Zaten sıkılıyordum :)

Konuya tamamen yeni olan kişiler için derinlemesine fakat mümkün olduğunca kısa bir şekilde anlatmaya çalışacağım…

Bu yazıda şunlar var:

  • Tanımlar
    Web teknolojileri ile ilgili tanımlar. Kulak aşinalığı olsun diye…
  • İstemci Tarafı Teknolojiler
    HTML, CSS, JavaScript, DHTML, Flash nedir
  • Sunucu Tarafı Teknolojiler
    PHP, ASP, JSP, ColdFusion, CGI, Apache, IIS, MySQL, Oracle, PostgreSQL

Bu yazı kimler için?

Eğer web hakkında kulaktan dolma birşeyler bulduysanız ama toparlayamadıysanız, bir sürü terim duyuyor ve “bunlar da ne ola” diyorsanız kendi kendinize, bu doküman sizin için diyebilirim.

Ayrıca birçok geliştiricinin, hatta çok tecrübeli olanların bile, işin arkaplanını bilmedikleri için bariz hatalar yaptıklarına sürekli şahit oluyorum. Bu uzun sıkıcı yazıyı “aman biliyorum ben bunları zaten” demeden okuma sabrını gösterebilirseniz 1-2 ipucu da yakalayabilirsiniz belki…

Yazının Devamı»

Gebze Evden Eve Nakliyat