<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Huysuz Adam &#187; frameworkler</title>
	<atom:link href="http://www.huysuzadam.com/tag/frameworkler/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.huysuzadam.com</link>
	<description>Web teknolojileri ile ilgili teknik bir blog...</description>
	<lastBuildDate>Fri, 12 Feb 2010 07:24:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hangi PHP Framework&#8217;ü Daha İyi?</title>
		<link>http://www.huysuzadam.com/2009/02/09/hangi-php-frameworku-daha-iyi/</link>
		<comments>http://www.huysuzadam.com/2009/02/09/hangi-php-frameworku-daha-iyi/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 10:12:44 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[frameworkler]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=208</guid>
		<description><![CDATA[Var olan tonla php framework&#8217;lerinden birini seçerken birçok faktörü göz önünde bulundurmak gerek:

Performans ve scalability
Komunite desteği (Yazılımcı ararken ya da takıldığınız noktayı sorarken lazım olacak)
Geliştiren ekibin güvenilirliği (Kullandığınız framework&#8217;ün gelişmesinin durması kabus olacaktır)
Kolay öğrenilebilirlik
Kolay geliştirilebilirlik
Yeterlilik / Esneklik
Sunduğu özellikler
Desteklediği PHP versiyonları
&#8230;


Zend Framework&#8217;ün Felsefesi
Özellikle Ruby on Rails&#8217;den sonra artan framework talebi sonunda birçoğu rails&#8217;den çok ciddi olarak [...]]]></description>
			<content:encoded><![CDATA[<p>Var olan tonla php framework&#8217;lerinden birini seçerken birçok faktörü göz önünde bulundurmak gerek:</p>
<ul>
<li>Performans ve scalability</li>
<li>Komunite desteği (Yazılımcı ararken ya da takıldığınız noktayı sorarken lazım olacak)</li>
<li>Geliştiren ekibin güvenilirliği (Kullandığınız framework&#8217;ün gelişmesinin durması kabus olacaktır)</li>
<li>Kolay öğrenilebilirlik</li>
<li>Kolay geliştirilebilirlik</li>
<li>Yeterlilik / Esneklik</li>
<li>Sunduğu özellikler</li>
<li>Desteklediği PHP versiyonları</li>
<p>&#8230;
</ul>
<p><span id="more-208"></span></p>
<h2>Zend Framework&#8217;ün Felsefesi</h2>
<p>Özellikle Ruby on Rails&#8217;den sonra artan framework talebi sonunda birçoğu rails&#8217;den çok ciddi olarak esinlenen bir sürü framework çıktı. Arkasından Zend mühendisleri de framework ihtiyacına cevap vermek üzere çalışmalara başladı.</p>
<p>Code Igniter, Kohana, CakePHP, Symfony vb. projeler Rails&#8217;in izinden giderken Zend Framework kendine daha farklı bir yol çizdi. Rails ve türevleri tüm yapı için kesin kurallar koyup işe başlamayı hızlandırırken Zend Framework birbirinden bağımsız çalışabilen ama aynı zamanda birbirleriyle &#8220;iletişim kurabilen&#8221; modüller programlamayı tercih ettiler.</p>
<p>Zend Framework modüllerin yalnız başına kullanılabilir olması eski ve benim hala çok güvenemediğim PEAR kütüphanesinin yeniden yazılması ve Zend ile IBM gibi iki devin bu yeni kütüphaneyi (!) desteklemesi gibi yan bir misyonu da tamamlamış oldu.</p>
<p>Ancak bu yapının önemli bir dezavantajı oldu: Karmaşıklık. Yazılım kısmını geçtim, dokümantasyon kısmı çok karmaşık&#8230; Avantajı ise, örneğin konfigürasyon ayarlarınızı farklı bir şekilde tutmanız gerekse örneğin CodeIgniter&#8217;da hiç şansınız yok ama Zend Framework ile sorunsuz&#8230;</p>
<h2>Dokümantasyon Problemi</h2>
<p>Şu an Rails ve izinden giden framework&#8217;lerle birşeyler gerçekleştirmek çok daha kolay çünkü dokümanlarına baktığınızda son uygulamanızda deneyebileceğiniz şekilde anlatılmış vaziyette. ZF dokümanlarında ise hem tüm yapıdan bahsedilmeli hem de modülün tek başına nasıl kullanılabileceği anlatılmalı. Bu da iletişim konusunda zaten kazma olan Zend&#8217;i biraz aşıyor bence.</p>
<p>Sanırım Zend&#8217;in beklentisi komuniteden bu konuda tonla &#8220;tutorial&#8221; ve kitap çıkması idi ama pek de hızlı birşeyler çıktığını söyleyemeyeceğim.</p>
<h2>Alt Framework</h2>
<p>Rails ve türevlerinin yapısı yazılım mühendisliğinde &#8220;tight coupling&#8221; olarak adlandırılırken ZF&#8217;ninki &#8220;loose coupling&#8221; oluyor. Her ne kadar &#8220;loose coupling&#8221; yazılımlarda tercih edilen bir kavram olsa da web framework&#8217;leri için çoğu durumda tight coupling&#8217;in daha uygun olduğunu düşünüyorum. Küçük ve düşük bütçeli yazılımlar için ihtiyacımız olan &#8220;hızlı geliştirme&#8221;, bu da Zend Framework&#8217;ün şu anki haline hiç uymuyor. </p>
<p>Düşününce kapsamlı projeler için ZF, küçük projeler için diğer bir framework kullanmak öğrenme süreci nedeniyle mantıklı gelmiyor. O yüzden bence ihtiyaç olan ZF&#8217;nin bir alt framework&#8217;ünün olması. </p>
<p>Önceki bir yazımda demiştim ki &#8220;Zend Framework on Rails istiyorum!&#8221;<br />
Eğer şu anda Rails tadında işleri çok hızla sizin adınıza yapacak bir yapıya ihtiyacınız varsa Zend Framework&#8217;ü tercih etmek için kendi &#8220;ZF on Rails&#8221;inizi yapmanız gerekiyor.</p>
<ol>
<li>İndir,</li>
<li>zip&#8217;i aç</li>
<li>Konfigürasyonu yap</li>
<li>Controller ve modelleri hızla ekle</li>
<li>Teste aç ve pragmatik programlamaya devam et&#8230;</li>
</ol>
<p>Bu paketin ZF&#8217;nin son versiyonuyla uyumlu olması gerektiğini düşünürsek paketin de sürekli geliştirilmesi gerekecek demektir.<br />
Eh, bu da başlı başına bir framework gibi birşey oluyor.<br />
ZF üzerine inşaa edilmiş bir alt framework&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/02/09/hangi-php-frameworku-daha-iyi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP</title>
		<link>http://www.huysuzadam.com/2008/06/13/cakephp/</link>
		<comments>http://www.huysuzadam.com/2008/06/13/cakephp/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 21:08:54 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[frameworkler]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/2008/06/13/cakephp/</guid>
		<description><![CDATA[Haziran başında CakePHP 1.2 RC1 çıkmıştı. Yeni versiyonda dokümantasyonu da oldukça toparlamışlar. CakePHP&#8217;yi ilk denediğimde birşeyler yakalayabilmek için epey aranmak gerekiyordu.
Özellikle &#8220;Common tasks&#8221; kısmı çok başarılı olmuş zira framework&#8217;lerle oynarken birşeyler kapıyorsunuz yine ama iş uygulamaya gelince insan aptallaşıp kalıyor. 
Otomatikleştirme ve pratiklik konusunda CakePHP Rails&#8217;e iyice yaklaşmış ama debugger&#8217;da kodu incelemeye başladım az önce, [...]]]></description>
			<content:encoded><![CDATA[<p>Haziran başında <a href="http://cakephp.org/">CakePHP</a> 1.2 RC1 çıkmıştı. Yeni versiyonda dokümantasyonu da oldukça toparlamışlar. CakePHP&#8217;yi ilk denediğimde birşeyler yakalayabilmek için epey aranmak gerekiyordu.</p>
<p>Özellikle &#8220;<a href="http://book.cakephp.org/view/124/common-tasks-with-cakephp">Common tasks</a>&#8221; kısmı çok başarılı olmuş zira framework&#8217;lerle oynarken birşeyler kapıyorsunuz yine ama iş uygulamaya gelince insan aptallaşıp kalıyor. </p>
<p>Otomatikleştirme ve pratiklik konusunda CakePHP Rails&#8217;e iyice yaklaşmış ama debugger&#8217;da kodu incelemeye başladım az önce, insanın kullanası gelmiyor wallahi. CakePHP&#8217;nin yavaş olduğunu duymuştum, bu kodun yavaş olmasına hiç şaşırmadım.</p>
<p>Zend Framework&#8217;ü 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. </p>
<p>Ruby on Rails&#8217;in hayranıyım halen ama ne yazık ki gerçek hayatta Rails&#8217;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&#8217;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&#8230;</p>
<p>Zend Framework on Rails isterim!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2008/06/13/cakephp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zaman Framework Zamanı</title>
		<link>http://www.huysuzadam.com/2007/12/24/zaman-framework-zamani/</link>
		<comments>http://www.huysuzadam.com/2007/12/24/zaman-framework-zamani/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 09:34:16 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[frameworkler]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/2007/12/24/zaman-framework-zamani/</guid>
		<description><![CDATA[Ruby on Rails&#8217;i ilk gördüğümde çok etkilenmiştim ancak Ruby&#8217;nin hantallığı ve yıllardır süregelen PHP alışkanlıklarım Rails&#8217;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 &#8220;hiç [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby on Rails&#8217;i ilk gördüğümde çok etkilenmiştim ancak Ruby&#8217;nin hantallığı ve yıllardır süregelen PHP alışkanlıklarım Rails&#8217;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ı.</p>
<p>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 &#8220;hiç yoktan iyidir&#8221; framework&#8217;ü oldu zira şu haliyle ZF&#8217;yi anlamak için bol bol araştırma yapmak ve debugger&#8217;ınızı açıp adım adım nasıl çalıştığını görmeniz gerekiyor.</p>
<p>21 Aralık&#8217;ta ZF ekibinin duyurduğuna göre ZF v1.5&#8242;te bence en büyük eksiklik olan &#8220;programcıyı yönlendirme&#8221; işine eğilmiş gözüküyorlar. Zend Framework&#8217;ün diğer framework&#8217;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&#8242;nin karmaşıklığı, framework&#8217;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 &#8211; yapıştır yaptığınızı fark ediyorsunuz.</p>
<p>ZF v1.5&#8242;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&#8217;i inceleyenler bu tür betiklerin getirdiği kolaylıkların farkındadır zaten, ZF&#8217;de de artık bu kolaylıkları görebileceğiz gibi duruyor.</p>
<p>Benim öngörüm ileride framework&#8217;lerin etkisiyle web tabanlı yazılımların üretilme zamanları oldukça kısalacak. Rails, ZF, Django, CakePHP, Symfony derken bunların IDE&#8217;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&#8230;</p>
<p>Diğer taraftan Javascript framework&#8217;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.</p>
<p>Javascript framework&#8217;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&#8217;leri bile yavaş yavaş ortaya çıkmaya başladı: Bkz. Aptana</p>
<p>Sektör artık framework&#8217;lere doğru yönlenmiş vaziyette. Kullanmayacaksak bile altlarındaki çözümleri iyi öğrenmemiz gerek&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2007/12/24/zaman-framework-zamani/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Frameworkler, Hibrid Tasarımcı, Web2.0</title>
		<link>http://www.huysuzadam.com/2007/07/28/frameworkler-hibrid-tasarimci-web20/</link>
		<comments>http://www.huysuzadam.com/2007/07/28/frameworkler-hibrid-tasarimci-web20/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 21:56:03 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[frameworkler]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/2007/07/28/frameworkler-hibrid-tasarimci-web20/</guid>
		<description><![CDATA[Nokta&#8217;ya geldiğim günden beri savunduğum bir yaklaşım vardı&#8230; Yeni gelişen web&#8217;de, buna web2.0 diyoruz aslında, teknik anlamdaki başarıyı getiren iki önemli, farklı faktör var: 
1. Sürekli değişim
2. Hibrid tasarımcı kavramı
Sürekli Değişim
Eskiden sağlam bir planlama, tüm fonksiyonlara karar verip analiz etme ve ürünü çıkarma şeklinde işliyordu projeler. 
Sonraki versiyon uzun bir süre sonra, yine benzer aşamalardan [...]]]></description>
			<content:encoded><![CDATA[<p>Nokta&#8217;ya geldiğim günden beri savunduğum bir yaklaşım vardı&#8230; Yeni gelişen web&#8217;de, buna web2.0 diyoruz aslında, teknik anlamdaki başarıyı getiren iki önemli, farklı faktör var: </p>
<p>1. Sürekli değişim<br />
2. Hibrid tasarımcı kavramı</p>
<p><strong>Sürekli Değişim</strong></p>
<p>Eskiden sağlam bir planlama, tüm fonksiyonlara karar verip analiz etme ve ürünü çıkarma şeklinde işliyordu projeler. </p>
<p>Sonraki versiyon uzun bir süre sonra, yine benzer aşamalardan geçtikten sonra çıkıyordu. Çıkana kadar kimsenin bilmediği, gizli kapaklı hummalı çalışmalar sürüyordu.</p>
<p>Yeni yaklaşımda ise planlama yapılırken detaylara gömülmek yerine:</p>
<p>- ilk versiyonu çıkar<br />
- kullanımı analiz et, ihtiyaçları belirle<br />
- yeni versiyonu çıkar<br />
- kullanımı analiz et, ihtiyaçları belirle<br />
- yeni versiyonu çıkar </p>
<p>şeklinde ilerliyor herşey. O kadar çok versiyon çıkıyor ki, versiyon diye bir kavramı kullanmıyor bile bir çok proje&#8230; Versiyonlamamayı &#8220;sürekli beta&#8221; olarak adlandıranlar bir ara çok modaydı.</p>
<p>Bu, tasarımın defalarca değişmesi demek&#8230; Veritabanına eklenen/çıkan yeni alanlar, yazılımın arada bir tepetaklak olması demek. </p>
<p>Buna tasarımcıların ve yazılımcıların kendini hazırlaması ve sürecin doğal bir parçası olarak kabullenmeleri gerek. </p>
<p>Bu &#8220;yap-boz&#8221;ların hızla gerçekleştirebilmesi açısından framework&#8217;ler çok büyük şeyler kattı dünyadaki büyük projelere.<br />
Ya da belki de tam tersi, büyük projeler framework&#8217;lere ilham kaynağı oldu. Framework kullanmayan büyük projeler de framework&#8217;lerin getirdiği avantajları sağlayan altyapılarını kurarak ilerlediler. Kendilerine özgü frameworkler kurdular diyebiliriz belki de&#8230;</p>
<p><strong>Kibrit Tasarımcı!</strong></p>
<p>Ne demek hibrid?? Ah be TDK yetişemiyorsun ne yazık ki gelişen teknolojiye&#8230;</p>
<p>&#8220;Wepçi&#8221; arkadaşlara dedim ki,  </p>
<p>&#8230;.. web tasarımcısı diyelim de ayıp olmasın</p>
<p>Web tasarımcısı arkadaşlara dedim ki, unutun o firmalara sayfa hazırlarken &#8220;ben fotoşop&#8217;ta yaparım, htmlci sayfa haline getirsin çünkü ben programcı değil sanatçıyım&#8221; laflarını&#8230;</p>
<p>Artık öyle bir şey kalmadı üzgünüm. CSS&#8217;i sevgilisinin yuvarlak hatları kadar bilmeyen web tasarımcısı 5-10 sayfalık kurumsal site tasarlamaktan öteye geçemez. Ajax&#8217;ı nerede kullanmaması gerektiğini bilmeyen, actionscript&#8217;in kabiliyetlerinden bihaber olan tasarımcı anca &#8220;bizim yeğen de yapıyor web sitesi&#8221; cümlesinin öznesi olabilir&#8230;</p>
<div style="width:156px;height:174px;padding:5px;float:right;border:1px solid #ccc;margin-left:10px;text-align:center;">
<a href="http://bengidiyorum.blogspot.com"><img src="http://bp3.blogger.com/_BKY_Zn6NOQA/RkR1SeIUouI/AAAAAAAAB9Q/h74tDyFS65I/s320/ucangizmo.jpg" alt="Sevgi Kelebeği - bengidiyorum.blogspot.com" width="156" height="160" border="0" /></a><br />
<em>sevgi kelebeği</em>
</div>
<p>Web tasarımcısı, grafik tasarımcısından farklı olarak, <em>internet gurusu</em> olmalı. Programlamaya, daha doğrusu analitik düşünceye çok ters olmaması lazım. Uçuk kaçık hayal dünyasında yaşayan, <em>sanat kim içindir</em> geyiklerine giren entellektüel sevgi kelebekleri yerine, estetik duygusu güçlü olan ve tasarım ilkelerini bilen, CSS&#8217;te organizasyon yapabilen, javascript&#8217;te 3-5 satır if-else cümleleri kurabilen programcı-tasarımcı arası ortaya karışık web tasarımcıları hayatta kalacak web2.0&#8242;da,  web3.0&#8242;da ve hatta &#8216;web9.0.1rc1 build 3425&#8242;te&#8230;</p>
<div style="clear:both;">
Bu ortaya karışık yanar dönerli şeye hibrid tasarımcı diyoruz.
</div>
<p><strong>Sonuç</strong></p>
<p>Yazılar giriş-gelişme-sonuç şeklinde olmalıdır. Buyrun size sonuç (lisedeyken de nefret ederdim edebiyat derslerinden, öys&#8217;de türkçeden top çekmiştim o ayrı&#8230;)</p>
<p>Arda Kutsal <a href="https://www.blogger.com/comment.g?blogID=14299819&#038;postID=5499005441497590768">şu yazısında</a> Türkiye&#8217;deki geliştiriciler olarak global ürün çıkarmamız gerektiğinden bahsetmiş.<br />
Altına 3 sayfa huysuzluk yaptım, muhtemelen gıcık oldu Arda bana :)</p>
<p>Global ya da lokal, dünyadaki projelerle yarışacak boyutta proje çıkarmak istiyorsak üşenmeyeceğiz&#8230;.</p>
<p>Framework&#8217;lere geçmek için üşenmeyeceğiz,<br />
2 günde bir tasarım mı değişir canım demeyeceğiz,<br />
Ben sanatçıyım kardeşim kodlama benim sanatımı öldürür diye kendimizi kısıtlamayacağız,<br />
script.aculo.us neymiş ben de yazarım ne var ki&#8217;lerle vakit kaybetmeyeceğiz.</p>
<p>Bu iş teknik bir iş&#8230; Hem de çok teknik bir iş. &#8220;Fikrimgeldi&#8221;den öteye geçebilenler Türkiye&#8217;nin internetini ayağa kaldıracak olanlardır.</p>
<p>Benden söylemesi<br />
(evet, hem huysuz hem de ukelayım!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2007/07/28/frameworkler-hibrid-tasarimci-web20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails&#8217;in olayı nedir?</title>
		<link>http://www.huysuzadam.com/2007/02/09/ruby-on-railsin-olayi-nedir/</link>
		<comments>http://www.huysuzadam.com/2007/02/09/ruby-on-railsin-olayi-nedir/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 19:54:40 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[frameworkler]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/2007/02/09/ruby-on-railsin-olayi-nedir/</guid>
		<description><![CDATA[Web teknolojileri konusunda çalışıyor ve sektördeki gelişmeleri takip ediyorsanız muhtemelen Ruby on Rails&#8216;i duydunuz ama fark yaratan özelliğinin ne olduğunu bilmek istiyorsunuz ya da incelediniz ama hala &#8220;geçsem mi geçmesem mi&#8221; kararsızlığını yaşıyorsunuz. Biraz aklınızı çelmeye çalışayım&#8230;
Ben platform olarak PHP&#8217;yi tercih eden bir insan olarak &#8220;15 dakikada weblog yaratın&#8221; screencast&#8217;ini izledikten sonra sinir oldum. Tecrübeli [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" title="Rails" id="image52" alt="Rails" style="margin-right: 10px" src="http://www.huysuzadam.com/wp-content/uploads/2007/02/rails.thumbnail.png" />Web teknolojileri konusunda çalışıyor ve sektördeki gelişmeleri takip ediyorsanız muhtemelen <a target="_blank" href="http://www.rubyonrails.com">Ruby on Rails</a>&#8216;i duydunuz ama fark yaratan özelliğinin ne olduğunu bilmek istiyorsunuz ya da incelediniz ama hala &#8220;geçsem mi geçmesem mi&#8221; kararsızlığını yaşıyorsunuz. Biraz aklınızı çelmeye çalışayım&#8230;</p>
<p>Ben platform olarak PHP&#8217;yi tercih eden bir insan olarak &#8220;<a target="_blank" href="http://www.rubyonrails.com/screencasts">15 dakikada weblog yaratın</a>&#8221; screencast&#8217;ini izledikten sonra sinir oldum. Tecrübeli bir programcı olarak neredeyse haftamı alacak bir işin 15 dakikada bitmesi gerçekten de moral bozucu :) Bu kadar zamandır haybeye uğraşıyormuşum diyor insan kendine.</p>
<p><span id="more-44"></span></p>
<p>İlk şoku (!) atlattıktan sonra daha önce incelediğim otomatik kod üreteçleri gibi mi acaba diye düşündüm. Bu tür yapıların ortak sorunları</p>
<ul>
<li>Yeteri kadar kişiselleştirilememesi</li>
<li>Kişiselleştirmenin kodu sıfırdan yazmaktan daha çok vakit alması</li>
<li>Çok karmaşık olması nedeniyle güvenlik açığı içermesi ya da bug&#8217;lı olması</li>
<li>Performans kaybı</li>
</ul>
<p>olarak özetlenebilir.</p>
<p>Ama rails ile ortaya konan ürünlere baktığımda etkilenmemek imkansızdı o yüzden derinlemesine araştırmaya başladım rails&#8217;i.</p>
<p>Öncelikle Ruby on Rails, web uygulamalarını geliştirmenizi, yayına sokmanızı ve geliştirmenizi kolaylaştıran bir framework, &#8220;acemiler için kod üreteci&#8221; değil. Dolayısıyla hedef kitlesi profesyoneller. (Bkz. &#8220;<a target="_blank" href="http://www.huysuzadam.com/2007/02/11/bizim-yigen-de-yapiyor-web-sitesi/">Bizim yiğen de yapıyor web sitesi</a>&#8220;)</p>
<blockquote><p>Framework, yazılım projelerini geliştirmenizi kolaylaştıran, bunun için size bazı metotlar, şablonlar ve kütüphane sunan, çeşitli komponentlerle esnekliğinizi arttıran sistemlerdir. Programcının navigasyon sistemi nasıl çalışacak, mail nasıl atılacak gibi teknik detaylar yerine doğrudan ihtiyaç ile ilgilenmesine olanak sağlar.</p></blockquote>
<p>Aslında Ruby on Rails birçok programcı tarafından kullanılan pratik uygulamalar ve programlama paradigmalarını bir araya getirmiş ve gerçekten detayları bırakıp uygulamaya odaklanmayı sağlayan &#8220;<a title="İngilizce..." target="_blank" href="http://en.wikipedia.org/wiki/Rapid_application_development">rapid application development</a>&#8221; (hızlı uygulama geliştirme) konusunda, bu sistemin dezavantajlarını azaltarak önemli bir aşama kaydetmiş bir platform. Tabii ki bu aşamalarda <a target="_blank" href="http://www.ruby-lang.org">ruby betik dilinin</a> obje odaklı, pratik yapısının katkısı büyük.</p>
<p>Ama &#8220;hızlı&#8221; tek başına birer kriter değil. Profesyonel geliştiriciler modern, profesyonel tekniklerle geliştirilmiş uygulamalar üretmeyi hedeflerler. RoR bu imkanı sağlıyor bize&#8230;</p>
<p>Rails&#8217;in fark yaratan özelliği, web&#8217;i gerçekten anlayan geliştiriciler tarafından yaratılmış olması.</p>
<p>Ruby on Rails&#8217;in yaratıcısı  <a href="http://www.loudthinking.com/about.html">David Heinemeier Hansson</a> &#8220;<a target="_blank" href="http://www.agilemanifesto.org/">agile software development</a>&#8221; (çevik yazılım geliştirme) manifestosunda  da imzası olan, DRY (Don&#8217;t Repeat Yourself), pragmatik programlama gibi felsefeleri takip eden yaratıcı ve ödüllü bir programcı.</p>
<p>Hansson&#8217;un railsde bir araya getirdiği teknik ve paradigmalardan bazıları:</p>
<ol>
<li>MVC &#8211; Model / View / Controller (JSP kullananlar bilirler)</li>
<li>ORM &#8211; Object Relational Mapping veritabanı arabirimi (Rails&#8217;de ActiveRecord olarak geçiyor)</li>
<li>REST &#8211; REpresentational State Transfer</li>
<li>DRY &#8211; Don&#8217;t Repeat Yourself</li>
<li>Agile Programming</li>
<li>Pragmatic Programming</li>
</ol>
<p>Profesyonel programcılar yazılımları için test programları yazarlar, böylece kodda bir değişiklik yaparken başka bir yeri bozup bozmadıkları otomatik olarak test edilir. PHP&#8217;de uygulamasına pek rastlamadığım bu yaklaşımın altyapısı RoR&#8217;da mevcut.</p>
<p>Ek olarak Ruby on Rails&#8217;in test, development ve production versiyonlarını bir arada tutabilmesi ve aralarında kolayca geçiş yapabilmesi çok başarılı bir özellik.</p>
<blockquote><p>RoR&#8217;un sayfasına giderseniz, <a target="_blank" href="http://www.rubyonrails.com/docs">kitaplar kısmında</a> &#8220;Agile Web Development with Rails&#8221; isimde bir kitap göreceksiniz. Kişisel tavsiyem paraya kıyın ve RoR&#8217;u ister kullanın ister kullanmayın bu dokümanı baştan sona okuyun. Sadece Ruby on Rails&#8217;i tanımayacak, çalışma sistematiği de göreceksiniz adım adım.</p></blockquote>
<blockquote><p>Ben bu kitabı okuduktan sonra FotoKritik&#8217;in php kodlarını yeniden düzenleyerek v3&#8242;ü yayına soktum. Railse geçiş yapmadım ama bana gerçekten de büyük bir esneklik ve scalability (Türkçesini bilmiyorum) sağladı.</p></blockquote>
<p><strong>Performans</strong></p>
<p>Grafik tasarımcı bir arkadaşa yine ballandıra ballandıra railsi anlatırken &#8220;iyi de yavaşmış be abi&#8221; diye bir yorum aldım. Evet belki PHP&#8217;den yavaş ama unutmamak lazım ki PHP de C&#8217;den yavaş, hatta C de assembly&#8217;den yavaş. Assembly mi kullanalım yani?</p>
<p>Aslında genel kural olarak işinizi kolaylaştıran her ek kod bir performans kaybı demek. Dolayısıyla yıllarca örneğin bir database wrapper kullanmayı reddettim, zorunda kalıncaya dek&#8230;</p>
<p>Bu konuda kendimi eleştirdim yıllar önce, konuya bir de şu açıdan yaklaşmak lazım. Her zaman en büyük maliyet işçiliktir. Kullandığınız sunucu bilgisayarın kaç brüt maaşınız ettiğini bir hesaplayın. Yanına aynı sunucudan bir tane daha koyun ama daha az performanslı bir framework sayesinde programlama hızınızın 4 katına çıktığını hesaplayın. Birkaç ayda yeni sunucunuzu amorti edeceksiniz.</p>
<p>Tabii bu demek değil ki performans optimizasyonu yapılmasına gerek yoktur, sıkıştıkça ekleyin bir sunucu. Performans optimizasyonu çok kritiktir ve bir noktadan sonra istediğiniz kadar donanıma yüklenin verim alamayacağınız gibi maliyet katlanarak artmaya başlar.</p>
<p>Ancak RoR da o kadar yavaş değil, içerisinde caching mekanizması mevcut ve hiç de küçük sayılmayacak projelerde başarıyla kullanılıyor.</p>
<p><strong>Sonuç: Kullanmalı mıyım?</strong></p>
<p>Ruby on Rails, screencastlerindeki çalışma hızıyla inanılmaz bir ilgi topladı. Birçok ödül aldı, Web2.0 ile özdeşleşen bir teknoloji oldu, teknolojinin yaratıcısı dergilere kapak oldu, kitabı ödüller aldı. Ruby&#8217;den başka platformlarda da birçok kopyası çıktı. Hatta Zend bile RoR&#8217;dan sonra <a target="_blank" href="http://framework.zend.com/">Zend Framework</a>&#8216;e hız verdi. Bunca ilginin bir nedeni olmalı&#8230;</p>
<p>Rails gerçekten de öğrenmesi zor bir framework, asıl faydasını ise gerçekten öğrendikten sonra görebileceğiniz bir platform. Aslında tüm frameworkleri öğrenmek biraz vakit alır o açıdan gözünüz korkmasın, aslında demek istediğim şuydu:</p>
<p>PHP&#8217;ye hakimim, kendime göre bir sistem oturtmuşum, muhtelif yerlerde muhtelif şekillerde sakladığım hazır kodlarım var ve bunları kopyalayarak yeni projelerde kullanabiliyorum ve yavaş sayılmayacak bir hızda proje geliştirebiliyorken tam hakim olmadığım, iki de bir &#8220;şu nasıl yapılıyor&#8221; diye araştırmam gereken bir framework&#8217;e geçmekte zorluk çekiyorum, üşeniyorum diyebilirim.</p>
<p>Ama birşeyi çok iyi biliyorum, bu platforma geçersem bana faydası büyük olacak. Neden mi:</p>
<ul>
<li>Oturmuş bir ORM yapısı. ORM ile sql cümleleriyle boğuşma derdinden büyük ölçüde kurtulabilirim</li>
<li>Railsin konfigürasyon dosyaları &#8220;varsayılan&#8221; ayarların değiştirilmesi temeline dayanır. Dolayısıyla javadaki kocaman xml dosyaları yerine pratik bir konfigürasyon yapısı vardır.</li>
<li>RESTless url&#8217;lerim olması için parametreleri, rewrite kurallarını ve url&#8217;yi nasıl parse edeceğimi düşünmeme gerek yok</li>
<li>Scaffolding ile CRUD operasyonları ile ilgili kodlamanın %90&#8242;lık kısmını birkaç saniyede üretebilirim</li>
<li>Var olan versiyon çalışırken ve aynı zamanda yeni bir versiyonu geliştirirken, var olan versiyon üzerine bir ek yapmak istediğim zaman pratik bir şekilde &#8220;test&#8221; versiyonunda çalışabilir, stabil olduğundan emin olunca var olan versiyona bunu aktarabilir ve &#8220;developer&#8221; versiyonunda geliştirmeye devam edebilirim. Bunu yaparken test sunucumdaki konfigürasyon dosyasındaki küçük bir değişiklik yeterli olacaktır.</li>
<li><a target="_blank" href="http://script.aculo.us">script.aculo.us</a> kütüphanesi varsayılan olarak var, dolayısıyla şık DHTML etkileri ve AJAX implementasyonu çok pratik</li>
<li>Oturmuş bir MVC yapısı, helper fonksiyonları, kısmı şablon (partial template) gibi kolaylıklar</li>
<li>Şablonlar (templates) ve hatta otomatik üretilen kodları kişiselleştirebilirim.</li>
<li>Webrick sağolsun, sunucu tanımlamakla uğraşmama gerek yok. Özellikle <a target="_blank" title="Ruby on Rails IDE'si" href="http://www.radrails.com">RadRails</a> üzerinden kontrol edebilmek çok pratik.</li>
<li>Uygulamamı otomatik test edecek test uygulaması yazabilirim.</li>
<li>Uygulama, geliştirme ve test versiyonları için farklı hata kayıt kuralları tanımlayabilirim. Versiyonlar arası geçişin çok pratik olduğunu hatırlatırım.</li>
<li>Basit ve kısa kodlar ile daha hızlı kod yazabilirim. Mesela: &#8220;function () {&#8221; yerine &#8220;def&#8221; yazmam yeterli.</li>
</ul>
<p>Peki hiç mi dezavantajı yok railsin? Var tabii ki:</p>
<ul>
<li>Framework öğrenmek her zaman zahmetli bir iştir. Railse geçmek biraz vakit ayırmayı gerektiriyor</li>
<li>API dokümantasyonundan railsi öğrenmek neredeyse mümkün değil. Öğrenmek için rails sayfasından erişebileceğiniz kitapları satın almanız gerek. En azından ben bu yazıyı yazarken durum böyle.</li>
<li>Yeni sayılabilecek bir yapı olduğu için halen yeterli kaynak bulmak zor oluyor.</li>
<li>Stabil bir IDE&#8217;si yok. RadRails çok iddialı geliyor ancak daha vakti var.</li>
<li>Hosting konusunda nispeten sınırlı kaynak var.</li>
<li>Genel olarak çok kısa kodlar yazarak projenizi geliştirebiliyorsunuz ama MVC yapısı, helper dosyaları, yönlendirmeler derken özellikle yeni öğrenirken hangi kod neredeydi kafa karışabiliyor o yüzden frameworkün nasıl çalıştığını gerçekten iyi anlamak gerekli.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2007/02/09/ruby-on-railsin-olayi-nedir/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails türkçeleştirme</title>
		<link>http://www.huysuzadam.com/2006/06/02/scaffolding-icin-tarihleri-kisisellestirme/</link>
		<comments>http://www.huysuzadam.com/2006/06/02/scaffolding-icin-tarihleri-kisisellestirme/#comments</comments>
		<pubDate>Fri, 02 Jun 2006 08:13:05 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[frameworkler]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.fotokritik.com/blog/?p=37</guid>
		<description><![CDATA[Bu yazı, Ruby on Rails&#8217;in scaffolding özelliği ve tarih formatlama fonksiyonları için türkçeleştirme işlemi yapmak isteyenler için. Ruby on Rails&#8217;i ya da scaffolding&#8217;in nasıl yapıldığını yazmayacağım, bunları zaten bildiğinizi farz ederek sadece türkçeleştirmeden bahsetmek istiyorum.

Ruby on Rails&#8217;i türkçe projelerde kullanmak için birkaç noktaya dikkat etmeniz gerekli. Bunlardan ilki encoding.
Diğer bir nokta, Ruby on Rails&#8217;in scaffolding [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazı, Ruby on Rails&#8217;in scaffolding özelliği ve tarih formatlama fonksiyonları için türkçeleştirme işlemi yapmak isteyenler için. Ruby on Rails&#8217;i ya da scaffolding&#8217;in nasıl yapıldığını yazmayacağım, bunları zaten bildiğinizi farz ederek sadece türkçeleştirmeden bahsetmek istiyorum.<br />
<span id="more-37"></span></p>
<p>Ruby on Rails&#8217;i türkçe projelerde kullanmak için birkaç noktaya dikkat etmeniz gerekli. Bunlardan ilki encoding.</p>
<p>Diğer bir nokta, Ruby on Rails&#8217;in scaffolding özelliği ve tarih formatlama özellikleri amerikan formatına göre hazırlanmış. Ancak biraz kurcalayarak bu özelliklerden türkçe projeler için de yararlanabiliriz. Türkçeleştirme işleminden sonra proje  hazırlama hızınız daha da artacaktır.</p>
<p>Bu yazıda bahsettiğim dosyaları biraz kurcalayarak scaffolding ile oluşturulan sayfalar için kendinize özgü bir tasarım da yaratabilirsiniz. Özellikle yönetim arabirimleri için ideal olan scaffolding sayfalarına kendinize ait bir tarz oluşturduktan sonra tasarımıyla hiç vakit kaybetmeden müşterilerinize sunabileceksiniz.</p>
<p>Ayrıca RadRails için de iki önemli ipucu. RadRails hiç çalışmıyorsa ve RadRails&#8217;in encoding desteği ile ilgili&#8230;</p>
<p><strong>Encoding</strong></p>
<p>Benim gibi PHP tabanlıysanız muhtemelen latin5 (iso-8859-9) encodingi kullanıyor olabilirsiniz. Artık UTF-8&#8242;e geçmenin zamanıdır. RoR&#8217;un varsayılan encoding&#8217;i zaten UTF-8. UTF-8 karakter seti aslında tam bir türkçe desteği sağlıyor o nedenle değiştirmeye gerek yok, zira çok uğraşırsınız. Ayrıca Ajax kullanacaksanız zaten diğer encodingleri kullandığınızda karakter sorunu yaşamanız muhtemel, çünkü javascript de utf-8 kullanır. O yüzden iyisi mi siz baştan UTF-8 çalışın.</p>
<p>Burada dikkat etmeniz gereken nokta, veritabanını da UTF-8 kullanacak şekilde ayarlamanız gerekli. Ayrıca UTF-8 desteklemeyen bir text editörü ile dosyalarınızı açarsanız türkçe karakterlerin bozuk gözükmesine neden olmanız muhtemel. Neyseki günümüzdeki editörlerin çoğunluğu UTF-8 destekli.</p>
<p><strong>Scaffolding ve Varsayılan Tarih Formatı</strong></p>
<p>Varsayılan tarih formatı da ingilizce. Ancak bunu değiştirmeniz mümkün:<br />
Önce, tarih formatını düzeltmek için <em>config/environment.rb</em> dosyasına:</p>
<p>[source:ruby]</p>
<p>ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.update(:default => &#8216;%d/%m/%Y %H:%M&#8217;)<br />
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.update(:default => &#8216;%d/%m/%Y&#8217;)<br />
require &#8216;overrides&#8217;</p>
<p>[/source]</p>
<p>satırlarını ekledikten sonra az önce require ettiğimiz <em>overrides </em>dosyasını <em>lib/overrides.rb</em> adı altında yaratıp içerisine gün ve ayların türkçe karşılıklarını yazabiliriz:</p>
<p>[source:ruby]</p>
<p>Date::MONTHS = { &#8216;Ocak&#8217; => 1, &#8216;Şubat&#8217; => 2, &#8216;Mart&#8217; => 3, &#8216;Nisan&#8217; => 4, &#8216;Mayıs&#8217; => 5, &#8216;haziran&#8217; => 6, &#8216;Temmuz&#8217; => 7, &#8216;Ağustos&#8217; => 8, &#8216;Eylül&#8217;=> 9, &#8216;Ekim&#8217; =>10, &#8216;Kasım&#8217; =>11, &#8216;Aralık&#8217; =>12 }<br />
Date::DAYS = { &#8216;Pazar&#8217; => 0, &#8216;Pazartesi&#8217; => 1, &#8216;Salı&#8217; => 2, &#8216;Çarşamba&#8217;=> 3, &#8216;Perşembe&#8217; => 4, &#8216;Cuma&#8217; => 5, &#8216;Cumartesi&#8217; => 6 }<br />
Date::ABBR_MONTHS = { &#8216;Oca&#8217; => 1, &#8216;Şub&#8217; => 2, &#8216;Mar&#8217; => 3, &#8216;Nis&#8217; => 4, &#8216;May&#8217; => 5, &#8216;Haz&#8217; => 6, &#8216;Tem&#8217; => 7, &#8216;Ağu&#8217; => 8, &#8216;Eyl&#8217; => 9, &#8216;Eki&#8217; =>10, &#8216;Kas&#8217; =>11, &#8216;Ara&#8217; =>12 }<br />
Date::ABBR_DAYS = { &#8216;Paz&#8217; => 0, &#8216;Pzt&#8217; => 1, &#8216;Sal&#8217; => 2, &#8216;Çar&#8217; => 3, &#8216;Per&#8217; => 4, &#8216;Cum&#8217; => 5, &#8216;Cmt&#8217; => 6 }<br />
Date::MONTHNAMES = [nil] + %w(Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık)<br />
Date::DAYNAMES = %w(Pazar Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi)<br />
Date::ABBR_MONTHNAMES = [nil] + %w(Oca Şub Mar Nis May Haz Tem Ağu Eyl Eki Kas Ara)<br />
Date::ABBR_DAYNAMES = %w(Paz Pzt Sal Çar Per Cum Cmt)</p>
<p>class Time<br />
alias :strftime_nolocale :strftime</p>
<p>def strftime(format)<br />
format = format.dup<br />
format.gsub!(/%a/, Date::ABBR_DAYNAMES[self.wday])<br />
format.gsub!(/%A/, Date::DAYNAMES[self.wday])<br />
format.gsub!(/%b/, Date::ABBR_MONTHNAMES[self.mon])<br />
format.gsub!(/%B/, Date::MONTHNAMES[self.mon])<br />
self.strftime_nolocale(format)<br />
end<br />
end</p>
<p>[/source]</p>
<p>Aktif hale geçmesi için web server&#8217;ın restart  edilmesi gerektiğini unutmayın&#8230;</p>
<p><strong>Kişiselleştirme</strong></p>
<p>Her proje için bütün bunları tekrar etmenize gerek yok aslında. Ruby on Rails&#8217;in yeni proje yaratırken baz aldığı template dosyalarını bir sefere mahsus güncellemeniz yeterli olacaktır. Windows kurulumunda ilgili referans dosyaları aşağıdaki dizinlerde mevcut.</p>
<p>C:\ruby\lib\ruby\gems\1.8\gems\rails-1.1.6\environments</p>
<p>Scaffolding ile yaratılan dosyalara kendinize ait bir tarz vermek için şablon dosyalar ise şu dizinde:<br />
C:\ruby\lib\ruby\gems\1.8\gems\rails-1.1.6\lib\rails_generator\generators\components\scaffold\templates</p>
<p>Bu dizinlerdeki dosyaları güncelledikten sonra her yeni proje yaratışınızda, projeniz belirlediğiniz ayarlarda yaratılacaktır.</p>
<p><strong>RadRails</strong></p>
<p>RadRails kullanmadıysanız ya da kullanmak isteyip windows üzerinde bir türlü çalıştıramadıysanız daha önce RadRails ile ilgili yazdığım <a href="/2006/06/27/ruby-on-rails-radrails/">kısa yazıya bakabilirsiniz</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2006/06/02/scaffolding-icin-tarihleri-kisisellestirme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
