<?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; Ruby on Rails</title>
	<atom:link href="http://www.huysuzadam.com/tag/ruby-on-rails/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>Hile yapmak iyidir (bazen)</title>
		<link>http://www.huysuzadam.com/2007/02/20/hile-yapmak-iyidir-bazen/</link>
		<comments>http://www.huysuzadam.com/2007/02/20/hile-yapmak-iyidir-bazen/#comments</comments>
		<pubDate>Tue, 20 Feb 2007 12:17:11 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[performans]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/2007/02/20/hile-yapmak-iyidir-bazen/</guid>
		<description><![CDATA[Bu blog ağırlıklı olarak Ruby on Rails&#8216;e değiniyor. Rails&#8217;in sonuca odaklı hızlı geliştirme yeteneği, yıllardır tercih ettiğim PHP&#8217;ye baskın çıkarken ruby&#8217;nin php&#8217;den yavaş çalıştığı bir gerçek olarak önümüzde yer alıyor. Peki tercih yaparken performansı ne kadar göz önünde tutmalıyız, biraz irdeleyelim&#8230;
Çoğunlukla bir yerden kazanırsanız diğer bir yerden kaybedersiniz. Mühendislikte bir kaldıraç &#8220;dünyayı kaldırabilir&#8221; belki ama [...]]]></description>
			<content:encoded><![CDATA[<p>Bu blog ağırlıklı olarak <a href="http://www.rubyonrails.org/">Ruby on Rails</a>&#8216;e değiniyor. Rails&#8217;in sonuca odaklı hızlı geliştirme yeteneği, yıllardır tercih ettiğim PHP&#8217;ye baskın çıkarken ruby&#8217;nin php&#8217;den yavaş çalıştığı bir gerçek olarak önümüzde yer alıyor. Peki tercih yaparken performansı ne kadar göz önünde tutmalıyız, biraz irdeleyelim&#8230;</p>
<p><span id="more-57"></span>Çoğunlukla bir yerden kazanırsanız diğer bir yerden kaybedersiniz. Mühendislikte bir <a href="http://en.wikipedia.org/wiki/Image:Palanca-ejemplo.jpg" target="_blank">kaldıraç</a> &#8220;dünyayı kaldırabilir&#8221; belki ama kaldırabilmesi için kaldıracın uzun tarafı kilometrelerce yol kat etmesi gerekecektir, yani kuvvetten kazanırken yoldan kaybedersiniz. Ekonomide risk yönetimi prensibidir belki ya da Murphy&#8217;nin kanunlarında her zaman kazandığınızdan çok kaybedersiniz ama sonuçta birçok durum için geçerlidir bu kural.</p>
<p>Programlamada da işini ne kadar kolaylaştırırsanız o kadar performans kaybedersiniz. Veritabanı işlemleri için bir &#8220;wrapper&#8221; kullanmak, ayrı dili olan şablon (template) kullanmak ve hatta bunların hepsini bir arada sunan bir framework kullanmak performansı azaltacaktır. Bu konuda sanırım hepimiz hem fikiriz.</p>
<p>Performans konusunda bir kriter fizibilite. Yani performans kayıplarını daha güçlü ya da paralel çalışan sunucularla gidermek performanslı bir altyapıda daha uzun sürede proje tamamlamaktan daha ekonomik olacaktır, bundan daha önce bahsetmiştim. Ama tabii ki performans optimizasyonu olmasın, sıkıştıkça donanıma abanalım demiyorum.</p>
<p>Standart optimizasyonların dışında birazcık hile yapmak da gerekli&#8230;</p>
<p><strong>Ruby iyi güzel de çok yavaş</strong></p>
<p>Bu blog ağırlıklı olarak Ruby on Rails&#8217;e değiniyor çünkü Rails&#8217;in sonuca odaklı hızlı geliştirme yeteneği, yıllardır tercih ettiğim PHP&#8217;ye baskın çıkıp kafamı karıştırıyor (!) Ancak ruby&#8217;nin php&#8217;den yavaş çalıştığı bir gerçek olarak önümüzde yer alıyor.</p>
<p>Tabii hemen şunu da belirteyim ki mesela bir C programı da mutlaka PHP&#8217;den hızlı çalışacaktır. İşte bu noktada biraz &#8220;hile&#8221; yapmaktan zarar gelmez diyorum.</p>
<p>Mesela FotoKritik&#8217;in &#8220;çöp toplama&#8221; işleri için cron&#8217;da çalışan programları tercih ediyorum. Ya da günün fotoğraflarını her gece çalışan bir cron betiği seçiyor ve seçilmişleri gösteriyorum kullanıcıya. Şu an fotoğrafların küçük hallerini yükleme sırasında PHP&#8217;yle oluşturuyor olsam da günün birinde fotoğraf yükleme miktarı bugünkünün 10 katına çıkarsa fotoğraf işleme işlemini PHP yerine C&#8217;ye yaptırmakta hiç çekinmem.</p>
<p>Bu yazıyı yazmaya aslında <a href="http://www.loudthinking.com/">Loud Thinking</a>&#8216;deki <a href="http://www.loudthinking.com/arc/2006_09.html">bir yazı</a> sayesinde karar verdim. Rails, ilk gördüğüm günden beri kafamdaki karman çorman düşünceleri derleyip toparlaması nedeniyle hayran olduğum bir teknoloji ve bir felsefe. Rails&#8217;in yaratıcısı, ruby&#8217;nin performansı ile ilgili düşüncelerini yine her zamanki gibi %100 katıldığım bir şekilde özetlemiş aslında.</p>
<p>David yazısında, Yahoo&#8217;nun sayfalarını PHP ile sunarken arkaplanda C++&#8217;a dayalı bir sistem olduğundan, amazon&#8217;un C++ ve Java tabanlı altyapısının Perl ve Mason ile sunulduğundan bahsetmiş. Kendisi de basecamp&#8217;te imaj işlemlerini rails&#8217;in rmagick eklentisi yerine shell üzerinde yaptığını itiraf etmiş. Kendi deyimiyle bu hile yapmak, evet. Ama hile işe yarıyor demiş. Eğer fayda sağlıyorsa iyi birşeydir bence de&#8230;</p>
<p>Sonuçta amaç takım tutar gibi rails&#8217;i tutmak ya da zamanında yaptığımız gibi PHP ASP&#8217;yi döver demek değil. Amaç kaliteli bir ürünü, hızlı, sistematik, geliştirilebilir, genişletilebilir ve bakımı kolay bir şekilde ortaya çıkarmak&#8230;</p>
<p>Yazının sonuç cümlesi hoşuma gitti, paylaşmak isterim:</p>
<blockquote><p><em>&#8220;&#8230; So please don&#8217;t let bottlenecks (real or imaginary, usually the latter) dictate  your choice of software development environment. &#8220;</em></p>
<p>&#8230; Dolayısıyla lütfen bottleneck&#8217;lerin (gerçek ya da hayali, genellikle de hayali) yazılım geliştirme platformu seçiminizi etkilemesine izin vermeyin.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2007/02/20/hile-yapmak-iyidir-bazen/feed/</wfw:commentRss>
		<slash:comments>3</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>RadRails</title>
		<link>http://www.huysuzadam.com/2006/06/27/ruby-on-rails-radrails/</link>
		<comments>http://www.huysuzadam.com/2006/06/27/ruby-on-rails-radrails/#comments</comments>
		<pubDate>Tue, 27 Jun 2006 14:37:34 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.fotokritik.com/blog/?p=24</guid>
		<description><![CDATA[Ruby on Rails&#8216;in screencast&#8216;lerindeki programlama hızı gerçekten gözleri kamaştırıyor. Ancak bu hızı sağlayan bir etken de kullanılan editör. Screencast&#8217;lerde kullanılan textmate ne yazık ki sadece Mac OS için var ve textmate yazarları ileride bir windows versiyonu yazmayı düşünmediklerini açıkça belirtmişler.
Bu durumda Ruby on Rails&#8217;in hız ve sistematiğinden yararlanmak için Mac almak dışında bir seçeneğimiz daha [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rubyonrails.com">Ruby on Rails</a>&#8216;in <a href="http://www.rubyonrails.com/screencasts">screencast</a>&#8216;lerindeki programlama hızı gerçekten gözleri kamaştırıyor. Ancak bu hızı sağlayan bir etken de kullanılan editör. Screencast&#8217;lerde kullanılan <a target="_blank" href="http://macromates.com/">textmate</a> ne yazık ki sadece Mac OS için var ve textmate yazarları ileride bir windows versiyonu yazmayı düşünmediklerini açıkça belirtmişler.</p>
<p>Bu durumda Ruby on Rails&#8217;in hız ve sistematiğinden yararlanmak için Mac almak dışında bir seçeneğimiz daha var: <a target="_blank" href="http://www.radrails.org">RadRails</a>. Java tabanlı <a target="_blank" href="http://www.eclipse.org">eclipse</a> altyapısına sahip olduğu için birçok işletim sisteminde çalışıyor. Bu editörle ilgili ilk izlenimlerim şöyle&#8230;</p>
<p><span id="more-24"></span></p>
<p>Var olan fonksiyonları ile RadRails textmate&#8217;e göre bile birçok avantaja sahip. MVC yapısındaki controller ve view arası geçiş kısayolu (Shift + Ctrl + V) çok kullanışlı. Programa entegre generator ve server yapısı sayesinde rails elemanları oluşturmak için komut istemcisine mecbur değilsiniz. Ayrıca test ve hata logları da editöre entegre edilmiş. SQL görüntüsüne de sahip. Biraz doküman okuyarak RadRails&#8217;in etinden sütünden faydalanabiliriz, ancak&#8230;!</p>
<p>Bazı sorunları var RadRails&#8217;in. Öncelikle windows kullanıcıları için java&#8217;nın &#8220;Regional and Language Options&#8221;la ilgili sorun. Daha önce Oracle kurulumunda da karşılaştığım bu sorun nedeniyle Regional and Language Options Turkish seçili iken hata mesajı vermeden editör ölüyor. O yüzden English (US) seçebilirsiniz. Windows&#8217;unuzun tarih ve sayıları amerikan formatında vermemesi için kişiselleştirerek kullanılabilir hale getirebilirsiniz. Bu durumda ne yazık ki windows&#8217;ın takviminde gün ve aylar ingilizce gösterilecektir.</p>
<p>İkinci sorun ise ruby installation&#8217;ı ile ilgili. Normalde RadRails ilk kurulduğu zaman ruby.exe path&#8217;te yer aldığı için yarım yamalak çalışıyor ve server generate etmek isteyince hata vermediği gibi hiçbir şey de yapmıyor. Bunun için RadRails&#8217;in ayarlarından Ruby başlığına girip tüm gerekli olan yerlere ruby.exe&#8217;nin yerini belirtmek gerekiyor.</p>
<p>Bir başka not: Varsayılan encoding CP-1252 gelir, proje özelliklerinden (properties) UTF-8&#8242;e çevirmezseniz türkçe karakter yüzünden dosyayı kaydetmemek gibi huysuzluklar yapabilir. RadRails ayarlarını biraz kurcalarsanız tüm projeler için varsayılan encoding&#8217;i seçme imkanı da mevcut. İsterseniz encoging&#8217;i proje bazında da  ayarlayabiliyorsunuz.</p>
<p>RadRails&#8217;in 0.6&#8242;dan 0.7.2&#8242;ye kadar sürümlerinde kod tamamlama işlevini tam ve doğru bir şekilde çalıştıramadım, o da ayrı bir konu&#8230; İlk stabil versiyonu hevesle beklemekteyim&#8230;<br />
Şimdilik bu kadar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2006/06/27/ruby-on-rails-radrails/feed/</wfw:commentRss>
		<slash:comments>0</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>
