Zırvalama Tahtası symfony, debian, PHP5, SQL ve pek çok ayrıntı

16Mar/090

Bölüm 4) Test aşamasına geçiş

Geliştirme süreçlerinde özellikle yazılımın kodunun paylaşılması ve gözden geçirilmesi yazılımın kararlılığı açısından önemlidir, söz dizimi kurallarından, problemlerin çözümleri için izlenen yollara kadar, yazılımın gözden geçirilmesi gelişim sürecinin ve büyümenin bir parçasıdır. Özgür yazılımlar kamu'nun desteği ile bu problemleri geniş bir zamana yayarak geliştirme süreci ile aynı anda yapmaktadır, ancak eğer uygulamanız kamuya açık değil ise bu süreç için kaynak ve zaman ayırmalısınız. Bu ayrılan zaman gözünüzde zaman kaybı olarak görülebilir ancak hata tespiti ve düzeltmesi süreçlerini hızlandırdığı bir gerçektir, dolayısı ile zaman kaybı değil bir kazançdır.

Uygulamaların geliştiriciden çıkıp son kullanıcıya ulaşma süreci bir dizi işlemi de yanında getirir bunlar; test, bugfix, ve kurulum işlemleridir. Buradaki en zor işlem ise kaynak kodun "derlenerek" test veya ürün sistemine girmesidir. Genel olarak bu işlem 3 adım içermektedir, depodan testi yapılacak uygulamanın kaynak kodunun alınması, paketlenmesi, test sistemine kurulması.
En çok hata ise kurulum sırasında yaşanmaktadır. Tüm bu süreçleri otomatikleştirmek ve tek bir noktadan yönlendirmek, kaynak kodun ürün sistemine girerken kurulum aşamasında yaşanan problemlerin önüne geçecektir.

Geliştirilme yapılan deponun depo yöneticisi veya sürüm yöneticisi tarafından dondurulması sonrasında kaynak kod içerisinde yer alan derlenmesi gereken uygulamalar derlenmeli, oluşan kütüphane ve dosyalar paketlenmeli ardından test sistemine gönderilerek paketin kurulması işlemleri tek bir buton'a tıklama ile veya bir komut çalıştırılarak yapılabilmelidir.

Bu sistemin oluşturulması ve tasarlanması tamamen uygulamaya bağımlıdır, sadece web sayfası için, örneğin geliştiricilerin yazdıkları javascript dosyaları birleştirildikten sonra minifiy edilmesi, css dosyalarının minify edilmesi işlemleri gibi. Günümüz koşullarında bir web uygulaması basit bir web sayfası olmaktan çıkmış yüzlerce ve hatta binlerce bilgisayar tarafından işlenen verilerin biz kullanıcılara anlaşılır bir dil ile gösterilmesi haline dönüşmüştür. Bu noktada sadece web arayüzü için bir script dili değil, arka planda çalışan pek çok farklı dil ile hazırlanmış uygulama söz konusudur. Bu uygulamalarında derlenerek sırası ile paketlenmesi, test sistemine kurulması ve ardından ürün sistemine aktırılması gerekmektedir. Uygulamanın paketlenmesinden kastım, örneğin sisteminizde linux kullanıyor, dağıtım olarak ise debian seçmişseniz tüm kaynak kodun derlendikten sonra deb paketi haline getirilmesidir. Böylece kurulum öncesinde veya sonrasında yapılması gereken işlemler paket yönetim sistemi tarafından yapılacaktır. (örneğin kurulum sonrası cache sisteminin temizlenmesi)

Test ortamı üzerine kurulan yeni uygulama sadece hata düzeltmeleri içerebildiği gibi yeni özelliklerde içerebilir. Test takımı bu değişikliklerin neler olduğunu hata yönetim sistemi üzerinden bilgilendirildikten sonra test etmeli, bulunan hatalar hata takip sistemi üzerinden geliştiricilere bildirilmelidir. tespit edilen hatalar geliştirici takım tarafından düzeltildikten sonra tekrar test takımına teslim edilmeli ve her hangi bir hataya rastlanmamış ise ürün sistemine geçiş süreci başlatılmalıdır.

Uygulama geliştiricileri her ne kadar unit test yazmaktan pek fazla hoşlanmasa da, bu unit testler sayesinde uygulamanın test ortamından ürün ortamanına geçişini hızlandırabilirler, ve eğer bir geliştirici iseniz emin olun unit testler sayesinde proje lideriniz yazılım hataları konusunda başınızı ağrıtamayacaktır :)

7Feb/070

Kurulum

Symfony kullanımı kadar, kurulumuda kolay bir Framework'dür. Symfony kurulumunda üç seçeneğiniz var ancak biz sadece iki kurulum biçimini ele alacağız, birincisi PEAR kullanarak, diğeri ise sandbox kurulumu yapmak. Her iki kurulumda basit ve kolaydır ancak sandbox kurulumu ile kolayca framework'ü update edemezsiniz. Elbette her yazılımda olduğu gibi symfony kurulumu içinde ön hazırlıklar yapılması gerekmektedir. öncelikle sisteminizde php5 ve pear'ın kurulu olduğundan ve web sunucunuzun (apache kullanıldığı varsayılacaktır) php5 desteklediğinden emin olmalısınız. Bunun için komut satırından php -v komutunu vermeniz yeterlidir.

PHP 5.1.2 (cli) (built: Nov 7 2006 14:51:12)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

Komut satırından yukardaki gibi bir çıktı alıyorsanız her şey yolunda demektir eğer PHP4 kullanıyor iseniz PHP5'e terfi etmeniz için bir nedeniniz daha var artık. PEAR ile kuruluma başlamadan önce bazı hazırlıklar yapmamız gerekiyor.

Sistemimizdeki PEAR'ın 1.4 ve üstü olması gerekmektedir, kurulu olan pear daha eski bir sürüm ise pear upgrade PEAR komutu ile güncellemeniz gerekmektedir.

1) Pear ile kurulum

Öncelikle PEAR'a symfony kanalını tanıtmamız gerekiyor. Basitçe symfony'i nerenden alabileceğini PEAR'a öğretmiş oluyoruz.


$ pear channel-discover pear.symfony-project.com

Her hangi bir hata almadı iseniz pear.symfony-project.com üzerinden neleri kurabileceğimizi pear remote-list -c symfony komutu ile görebilirsiniz.

Channel symfony Available packages:
===================================
Package Version
pake 1.1.4
sfEzpdo 1.0.1
symfony 1.0.0beta2
sfCrypt 1.0.0
sfDoctrine 0.3.0
sfFeed 1.1.0
sfHelperExamplePlugin -n/a-
sfShoppingCart 1.1.0
sfThumbnail 1.1.0

Yukardaki gibi bir çıktı alıyor iseniz her şey yolunda ve symfony kurulumuna geçebiliriz demektir. pear install symfony/symfony komutu ile symfony kurulumunu tamamlayabiliriz.

Daha önce symfony'nin diğer özgür yazılım projelerinden yararlandığından bahsetmiştik. Symfony kurulumu sırasında yanında bu özgür yazılım projelerinide getirir ve ayrıca kurulumlarına gerek kalmaz ancak eğer 1.0.0 öncesi stable sürüm olan 0.6.3'ü kullanıyor iseniz (bu kitap hazırlandığı tarihte henüz 1.0.0 kararlı sürüm değildi)

$ pear install http://phing.info/pear/phing-current.tgz komutu ile phing kütüphanesini'de kurmanız gerekmektedir. Eğer symfony siz bu kitabı okurken 1.0.0 kararlı sürümüne ulaşmış ise yukardaki komut ile phing kütüphanesini kurmanıze gerek kalmamış demektir.

Symfony ile birlikte gelen symfony adında küçük bir yardımcı komutumuz da beraberinde gelir. Bu komutu kullanarak projeleri oluşturabilir, veri tabanı işlemleri için gerekli hazırlıkları yapabiliriz. PEAR ile symfony kurulumu oldukça basit ve hızlıdır ve kolay güncellenebilinir, ancak her host Symfony kurulumuna izin vermediğinden sandbox kurulumu yapmak ve projenizi sandbox'a taşımak daha akıllıca olacaktır.

2)sandbox kurulumu yapmak

Sandbox kurulumu oldukça basittir bunun nedeni ise Symfony kurulumunun basitçe sistem üzerine değil, her hangi bir dizin içerisinde yapılıp ardından sıkıştırılarak dağıtılmasıdır. Sandbox kurulumu aslında kolayca geliştirme platformunu oluşturmak için hazırlanmıştır ve ürün ortaya çıktığında kullanılması tavsiye edilmez bunun nedeni ise güncellemenin zor olmasıdır. Ama yinede, hadi kuralım;

Sandbox paketini http://www.symfony-project.com/get/sf_sandbox.tgz adresinden indirelim ve web sunucumuzun kök dizinine açalım. Ardından http://localhost/sf_sandbox/web/ adresini browser'a girerek kurulumumuzun çalıştığını kontrol edelim. Eğer Congratulations yazısını görmüyorsanız kurulumda bir hata var demektir, Büyük ihtimalle bir ön bellek sorunumuz vardır, kurulumu yaptığımız dizine giderek komut satırından ön belleği temizlemek için şu komutu vermek bu sorunu çözecektir. ./symfony.sh cc && ./symfony fix-perms. Tekrar browser'dan deneme yapalım ve çalışıp çalışmadığını kontrol edelim. (umarım çalışır)

Unix sistemlerde sistem yereli tr_TR.UTF8 ise kimi sorunlar yaşayabiliriz bunun için /usr/bin/pear dosyası içerisine #!/usr/bin/sh satırının hemen altına export LC_ALL=”C” demeniz gerekebilir. Benzer şekilde symfony komutu için export LC_ALL=”C” && symfony $1 $2 $3 $4 $5 && export LC_ALL=”” gibi bir alias tanımlamanız gerekebilir.

Not: Symfony url'ler için akıllı gösterimi destekler (ileride detaylandırılacaktır) ancak bunun için eğer apache kullanıyor iseniz mod_rewrite'ın, eğer ISS kullanıyor iseniz isapi/rewrite'ın kurulu ve çalışyor olduğundan emin olmalısınız.

3Feb/070

Başlamadan önce bilinmesi gerekenler

PHP5 ve yeni Nesne yönelimli programlama mekanizması

Bu dökümanı okuyan pek çok kişi php'yi kullanıyor olmalı, ancak yine pek çok kişi php'nin 4.x.x versiyonunu aktif olarak kullanmakta ve php5'in getirdiği nesne yönelimli programlama hakkında pek fazla bilgiye sahip değil, ne yazık. Bu dökümanı daha iyi anlayabilmeniz için PHP5'in yeni nesne yönelimi programlama tekniklerine bakmalısınız. Bu teknikler programlama dünyasına yabancı değildir sadece PHP'ye yeni eklenmiştir. Bu yeni eklenen özellikler için http://www.php.net/manual/en/language.oop5.basic.php adresine bakmalısınız.

PEAR (PHP Extension and Application Repository)

PEAR yeniden kullanılabilinecek kodların ve frameworklerin kullanımını, dağıtımını, bulunabilirliliğini ve kurulumlarını kolaylaştırmak için geliştirilmiş bir araçtır. Eğer PEAR (http://pear.php.net/) deposunda bulunan bir kütüphaneyi kullanırsanız ve bu yeni yazılımı bir başka yerde çalıştırmak istediğinizde kullandığınız kütüphane yeni sistem üzerinde kurulu değilse fazla üzülmenize gerek kalmadan komut satırı aracı ile kolayca kurabilirsiniz. http://pear.php.net üzerinde bulunan kodlar topluluk tarafından geliştirilir ve erişime açıktır.
ORM (Object Relational Mapping)

Her ne kadar ilerde model başlığı altında hafifçe inceleyecekte olsak ORM ile ilgili genel bilginizin olması gerekmektedir.

YAML

YAML'ın açılımı ise Yet Another Markup Language ve yapılandırma dosyalarının insanlar tarafında kolayca okunabilmesi ve anlaşılabilmesi amacı ile geliştirilmiş bir söz dizimidir. XML ve “ini“ dosyalarından daha okunabilir, hızlı ve güçlüdür. 2001 yılında ilk ortaya atıldığından bu yana pek çok betik dilinde kullanılır olmuştur. YAML söz dizimi ile ilgili adha fazla bilgiye http://www.yaml.org adresinden edinebilirsiniz.

1Feb/070

Neden symfony

Symfony php5 ile hızlı geliştirme ortamını sunar ve bizlere aşağıdaki olanakları sağlar.

      Kolay kurulum
      Kolay öğrenim
      Kolay ürün geliştirme
      Esnek yapılandırma

Basit yapılı olmasına rağmen karmaşık uygulamalar geliştirebilme imkanı Web için en iyi “tasarım yöntemleri” ile en iyi “pratik çözümleri” içermesi, kolay okunabilir ve yönetilebilinir kod üretme imkanı,Açık kaynaklı ve sorunlara hızlı cevap bulabilmek için gerekli ortamı barındırır.

Symfony içerisinde, ortak ve genel sorunlar çözülmüş durumdadır, pek çok işi otomatikleştirmiştir ve geliştiricilerin yazacakları kod üzerinde yoğunlaşmalarını sağlar. PHP5 ile yazılmıştır ve PHP5'in getirdiği nesne yönelimli programlama desteğini çok iyi kullanmaktadır.

Symfony her ne kadar tek başına bi proje gibi görünsede pek çok farklı projeyi başarılı bir biçimde birbilerine entegre etmiş ve tek bir ortam içerisinden erişilebilinir kılmıştır.

Symfony ile birlikte farklı veri tabanlarını kullanabilir, yerelleştirme, form verisi doğrulama, cache yönetimi, AJAX entegrasyonu, template yönetimi gibi konularda otomatize edilmiş çözümler bulabilirsiniz. Ayrıca en güçlü olduğu yanları olan yapılandırma değişikliğinin kolaylığı, çalışma sırasında yazılımı debug edebilmek ve izleyebilmek için loglama, kolay geliştirme ortamı ve unit test ortamı sunması symfony'i oldukça başarılı bir framework olması için iyi nedenler arasındadır.

Symfony aşağıdaki özgür yazılımlardan faydalanır ve içerir.

Creole, Veri tabanı erişim katmanı,
Propel, Veri nesneleri arasında nesne ilişkisi
Mojavi, MVC katmanı (Model-View-Controller)