Herhangi bir proje sıfırdan geliştirileceği zaman genellikle nereden başlanacağı doğru belirlenmez. Bunun nedeni kodlama işlemi esnasında hangi pattern (desen, örüntü) kullanılacağı bilinmediğindendir. Birden fazla kişinin üzerinde çalıştığı projelerde bu sorun (bence) daha belirgindir. Eleman başına düşen kısımın nasıl geliştirileceği (belirtilmediyse) tamamen geliştiriciye bağlıdır. Bu ve bunun gibi sorunlar yaşamamak için biz bilgisayar mühendislerine belirli patternler öğretilir. Öğrenirken pek anlaşılır ve mantıklı gelmese de uygulaması bunun tamamen zıttıdır. Pek çok işlemi kolaylaştırmak için sıkça patternler ve frameworkler kullanılır. Öncelikle framework nedir bundan bahsedeyim daha sonra da MVC’ye ucundan dokunayım.
Framework çeviri olarak çatı veya çerçeve olarak kullanılsa da bence tam olarak anlamını karşılamıyor. Terim olarak belirli bir pattern üzerine kurulmuş, belirli temel kodlamaları yapılmış ve geliştiricinin bazı yaygın fonksiyonları kolayca kullanmasını sağlayan yapılardır. Çoğunlukla MVC (Model-View-Controller) Pattern üzerine kurulmuş Frameworkler popüler ve kullanım olarak kolaydır. Web tabanlı projeler için daha uygun olmasına rağmen masaüstü yazılımları için de kullanılabilecek olan Frameworkler var. Ben MVC Pattern ile CakePHP ile tanıştım. Açıkçası öğrenme aşaması hem kolay oldu hem de mantığı çok iyi kavrattı.
Model-View-Controller Pattern
MVC hayatı kolaylaştıran bir pattern. Ögelerinin baş harflerinden oluşuyor.
Model, veritabanı ile ilgili işleri hallediyor. Bu neredeyse bir scriptin veritabanı ayarlarını ayarlamak kadar kolay. Veritabanı tabloları oluşturulduktan sonra Model gerekli bilgilerle dolduruluyor ve Frameworkünüz veritabanı bağlantısını otomatik olarak sağlıyor. Veritabanı doğrulamaları da buradan yapılıyor. Frameworke göre bazı değişiklikler olsa da genellikle birbirlerine benziyorlar.
View, kullanıcıya yansıtılacak olan şeylerin belirlendiği öge. Burada program kodundan çok HTML oluyor. Elbette veritabanından alınan verileri yazdırmak için kod kullanılıyor ama burada oldukça az olarak kod kullanılıyor. Kod kullanımı da oldukça sınırlı. Öntanımlı metotlar dışında dilin kendi kodları kullanılabiliyor. Frameworklerin View’da kullanılabilecek olan metotları genellikle belli ve çok daha sınırlı oluyor.
Controller, işlemlerin yapıldığı öge. Burada metotlar, View’a ne gönderileceği, veritabanı işlemleri (CRUD, create, read, delete, update) yazılıyor. Projenizin bel kemiği Controller kısmı. Geliştirme işleminin çoğu da burada oluyor. İşlem gücü gerektiren şeyler de Controller üzerinden gerçekleştiriliyor.
Anlattıklarım pek açık gelmediyse yandaki resim biraz daha açıklayıcı olabilir. Tabii o resim PHP için (hatta internet bazlı Frameworkler için diye genelleyebiliriz) yapılmış.
MVC Frameworklerinin kolaylığı, veritabanı işlemlerinin kolay olması, sık gerçekleştirilen işlemlerin metot olarak önceden tanımlanmış olması, Framework yeterli olmadığı zaman kullanılan dille eklemeler yapılabilmesi, farklı görevleri olan kodların ayrı olması ve böylece işlerin kolaylaşması, eklenti desteği, javascript, ajax kullanımının kolaylaştırılması… olarak sıralanabilir. Bahsetmediğim bir durum ise bazı MVC Frameworklerde dosya isimlerinin serbest olmaması. Örneğin CakePHP‘de dosya isimleri şu şekilde: veritabanı tabloları çoğul, o tablonun Modeli tekil, Controllerı çoğul ve sonunda “_controller” etkli, Viewü ise Controllerda tanımlanan metot ismiyle aynı olmak zorunda. Karışık gelebilir ama gerçekten çok zor değil. Tabii bu her Frameworkte böyle değil.
CakePHP‘den sonra Ruby on Rails‘i de merak ettim. Sonuçta büyük projelerde yaygın olarak kullanılan MVC Frameworkü Ruby on Rails. Twitter, Xing, Shopify, Github, Lighthouse… gibi büyük servisler Ruby on Rails ile yazılmış. Ruby on Rails, Ruby programlama dilini kullanıyor. Ruby insanların okuyup kodun ne yaptığını anlayabileceği dillerden biri. Gerçekten sizi kendine hayran edecek özellikleri var. Python’a oldukça benziyor. Ruby on Rails konusunda şimdilik çok fazla bir şey söyleyemiyorum çünkü ben de hala tam olarak öğrenmiş değilim. Belki gün gelir Rails ile ilgili bir yazı da yazarım.
Bazı MVC Frameworkler ve Dilleri
CakePHP – http://www.cakephp.org – PHP
Zend Framework – http://framework.zend.com – PHP
Symfony – http://www.symfony-project.org/ – PHP
Ruby on Rails – http://rubyonrails.org/ – Ruby
Cocoon – http://cocoon.apache.org/ – Java
JavascriptMVC – http://www.javascriptmvc.com/ – JavaScript
CodeIgniter – http://codeigniter.com/ – PHP
Django – http://www.djangoproject.com/ – Python
CppCMS – http://cppcms.sourceforge.net/wikipp/en/page/main – C++
Twitter hala yurtdışındaki kadar popüler olamadı. Teknoloji ile ilgilenenler ve ünlüler kullanıyorlar ama sıradan kullanıcıyı pek çekemediği için ülkemizde büyük bir ilgi yok. Tabii bunun yanında Türkçe dil seçeneğinin olmaması ve güncelleme yapabilmek için yurtiçi telefon numarası olmaması da bu ilgisizlikte etkili. Bu blogu okuyanların büyük bir kısmının da twitter kullanmadığını biliyorum. Bu yazıyı twitterı tanıtmak için değil de twitter kullanıcılarının daha aktif hale gelmesi için yazıyorum. Onlar twitter dedikçe çevreleri de ilgi duymaya başlayacaktır.
Bir “Otostopçunun Rock’n Roll Rehberi” vardı demeyin veya deyin de ne siz sorun ne ben söyleyeyim. Sadece isim benzerliği var başka bir şey yok. Bildiğiniz gibi haftanın beş günü yağmur, çamur, kar, kış, soğuk, rüzgar demeden ODTÜ’ye gidip geliyorum. Evden A1’e gitmek zaten ayrı bir problem (bkz.
Otostop çekmek için baş parmağınızı yukarı kaldırıp kolunuzu yola doğru uzatmanız yeterlidir. Ancak bu mesaj ODTÜ içerisinde dışarıya gitmek için (genellikle Kızılay veya Bahçeli) otostop çekiyorum anlamına gelir. ODTÜ içerisinde bir yere gitmek isteniliyorsa baş parmak aşağıya bakıyor olmalıdır.
Star Wars filmlerini izlemeden önce Ankara’ya bir seyahatimde (Ankara’da yaşamıyordum o zaman) Dost kitap evinden Star Wars kitaplarını almıştım. Alma planlarım var mıydı hatırlamıyorum. Orijinal üçlemenin (4-5-6) Lucas tarafından yazılmaya başlanıp sonra başkaları tarafından devam ettirilen resmi serisiydi bu kitaplar. Tekrar basılıyor mu bilmiyorum ama yeni basılan Star Wars kitaplarının arasında ilk üç filmi anlatan herhangi bir kitap yok. Filmlerden önce bu kitapları okumuştum ve ilk filmi izlediğimde Ben Kenobi ile Darth Vader’ın düellosunun sonucunu bildiğim halde heyecanla seyretmiştim. Bugün bu heyecanı bana yaşatabilen pek fazla film veya dizi yok. İşte bu yüzden sıkı bir Star Wars hayranıyım. Öyle olmaya da devam edeceğim, o heyecan kalmadı belki ama yine de o evrenin varlığını bilmek bile bana huzur veriyor.
Bu kitapların en belirgin özellikleri belki de kapaktaki Darth Vader kabartmasıdır. Üç kitap da sadece tek renktir ve hepsinde aynı kabartma vardır. İlk kitap bizzat George Lucas tarafından yazılmış, diğer iki kitap ise Donald F. Glut ve James Kahn tarafından yazılmıştır. Bu kitapların yanısıra Dost Kitabevi Yayınları, Phantom Menace’ın (Gizli Tehlike) kitabını da yayınlamıştır ancak o kitabı bu seriden ayrı tutmak gerekiyor. Ben bu kitapları sanırım 2004 yılında aldım (yanılıyor olabilirim). Bazılarını hala raflarda görebiliyorum ancak hepsini birden bulmanın kolay olup olmayacağından emin değilim. Bu kitapların Star Wars seven herkesin kütüphanesinde olması gerektiğini de düşünüyorum. Mümkünse seriyi tamamlayın.
İthaki Yayınlarından çıkan üç kitaplık bir seri. Han Solo’nun filmlerden önceki kaçakçılık hayatını anlatıyor. Üçü de Biran Daley (Star Wars radyo dizilerinin yapımcısı) tarafından yazılan bu seri ekstra olarak okunabilecek bir seri. Olayların gelişimini etkilemediği gibi sadece Han Solo etrafında dönerek (onun arkasından adlandırıldığı için bu konuda birşey söylemek pek doğru olmaz belki) biraz sınırlı kalıyor. Seri, Han Solo Yıldızın Ucu’nda, Han Solo’nun İntikamı ve Han Solo ve Kayıp Miras isimli kitaplardan oluşuyor. Ben sadece ilk kitabı okudum ama diğerlerini de satın almıştım. Pek tatmin olduğumu söyleyemem ama yine de ortalama bir seviyede. Zaten Han Solo’yu çok sevmem.