<?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</title>
	<atom:link href="http://www.huysuzadam.com/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.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Leadership Lessons from Dancing Guy</title>
		<link>http://www.huysuzadam.com/2010/02/12/421/</link>
		<comments>http://www.huysuzadam.com/2010/02/12/421/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 07:19:33 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/2010/02/12/421/</guid>
		<description><![CDATA[ 

3 dakikalık bir video, bir &#8220;lider&#8221;, lideri ilk takip eden kişinin önemi ve güzel bi liderlik dersi.
Bunu görünce aklıma sosyal ağlar geldi aslında. Projeyi çıkararak aslında liderlik etmiş oluyorsunuz. Ama eğer komuniteyi oluşturan ilk kullanıcılar başarılı değilse projenin de sosyal olarak yayılması sınırlı oluyor&#8230;
37signals&#8216;dan&#8230;
]]></description>
			<content:encoded><![CDATA[<p><strong> </strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://youtube.com/v/fW8amMCVAJQ" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://youtube.com/v/fW8amMCVAJQ"></embed></object></p>
<p>3 dakikalık bir video, bir &#8220;lider&#8221;, lideri ilk takip eden kişinin önemi ve güzel bi liderlik dersi.</p>
<p>Bunu görünce aklıma sosyal ağlar geldi aslında. Projeyi çıkararak aslında liderlik etmiş oluyorsunuz. Ama eğer komuniteyi oluşturan ilk kullanıcılar başarılı değilse projenin de sosyal olarak yayılması sınırlı oluyor&#8230;</p>
<p><a href="http://37signals.com/svn/">37signals</a>&#8216;dan&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2010/02/12/421/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.10 Beta Çıkmış&#8230;</title>
		<link>http://www.huysuzadam.com/2010/01/16/zend-framework-1-10-beta-cikmis/</link>
		<comments>http://www.huysuzadam.com/2010/01/16/zend-framework-1-10-beta-cikmis/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 12:34:38 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=401</guid>
		<description><![CDATA[Dün Zend Framework&#8217;ün yeni bir alt versiyonu daha çıkmış. İçerisinde ilgimi çeken güzellikler var&#8230; Tabii daha detaylı dokümantasyonlar ve nasıl kullanılacakları çok açık değil ama anladığım kadarıyla ne işe yaradıklarını yazayım&#8230;

Zend_Tool
Bana göre Zend Framework&#8217;ün ileride popülaritesini sağlayacak olan şey Zend_Tool&#8217;un başarısı. Bu kadar büyük bir framework&#8217;ü kullanmak için bazı işleri otomatik yapmak şart. 
Zend_Tool&#8217;un şu [...]]]></description>
			<content:encoded><![CDATA[<p>Dün Zend Framework&#8217;ün yeni bir alt versiyonu daha çıkmış. İçerisinde ilgimi çeken güzellikler var&#8230; Tabii daha detaylı dokümantasyonlar ve nasıl kullanılacakları çok açık değil ama anladığım kadarıyla ne işe yaradıklarını yazayım&#8230;</p>
<p><span id="more-401"></span></p>
<h2>Zend_Tool</h2>
<p>Bana göre Zend Framework&#8217;ün ileride popülaritesini sağlayacak olan şey Zend_Tool&#8217;un başarısı. Bu kadar büyük bir framework&#8217;ü kullanmak için bazı işleri otomatik yapmak şart. </p>
<p>Zend_Tool&#8217;un şu ana kadarki hali tek kelimeyle &#8220;rezalet&#8221; ama bu versiyonda epey bir elden geçirdik diyorlar. </p>
<p>Proje üretirken hata oluştuğu zaman hataları loglama / ekrana basma ile ilgili işlemleri de default olarak eklemişler. Tam ne yapmışlar denemedim ama kıl eden gerekli bir eksiklikti bence&#8230;</p>
<p>Model üretimindeki gelişmelerin yanında form ve layout üretimi de eklemişler. Layout&#8217;un nesini üretiyolar anlamadım, deneyince göreceğiz.</p>
<h3>Model Üretimi</h3>
<p>Model üretirken yeni metotlar ürettiklerini söylüyorlar ki eğer aşama kaydettilerse lüzumsuz Zend_Db_Table bir işe yaramaya başlayabilir. </p>
<p>İlk olarak Ruby on Rails ile ilgimi çekmeye başlayan ORM&#8217;leri PHP&#8217;de kullanmak çok zahmetli çünkü setup&#8217;ı yaparken bitiyosun zaten. Onla uğraşana kadar sql yazmak daha kolayıma geliyor benim. Ancak bu işlem otomatikleşirse işin seyri değişebilir.</p>
<h3>Form Üretimi</h3>
<p>Zend_Tool ile form oluşturabildiklerinden de bahsetmişler. Zend_Form da Zend_Db_Table gibi ilgimi çeken ama asla kullanamadığım komponentlerden. </p>
<p>Proje yaparken en çok vaktimi alan kısımlardan biri form üretilmesi, form bilgilerinin kontrol edilmesi ve filtreden geçirilmesi. Yaptığım denemelerde Zend_Form yerine dreamweaver kullanarak formları daha hızlı yaratabildiğimi gördüm. </p>
<p>Ama bu durumda da aynı model üretmek gibi otomatikleştirilirse işin seyri değişebilir.</p>
<h2>Zend_Filter ve Zend_Validate&#8217;te Yenilikler</h2>
<p>Yeni filter&#8217;lar gelmiş&#8230; Boolean ve null&#8230; Ayrıca dosya upload / download işleri için de compress ve decompress işlemini de filtrelere eklemişler. Zend_Form kullanımında ve data kaydının otomatikleştirilmesi için faydalı olacak&#8230;</p>
<p>Validator olarak da barcode, kredi kartı ve posta kodu kontrolleri gelmiş. Posta kodu iddia ettiklerine göre Türkiye de dahil tüm dünyayı kapsıyor.  </p>
<p>Ek olarak Zend_Validate_Callback diye bir komponent daha yapmışlar ki bununla kendi özel validator&#8217;ımızı yazabileceğiz. Kulağa hoş geliyor ama uygulamada ne kadar başarılı göreceğiz.</p>
<h2>Zend_Markup</h2>
<p>BBCode ve textile gibi text markup dillerini parse edebilen bir komponent. Özellikle sosyal ağlarda, mesela kullanıcı yorum yazarken yazısını formatlayabilsin ama formatlarken sitenin html&#8217;ini bozmasın diyorsanız ya kullanıcının girebileceği html tag&#8217;lerini ve attribute&#8217;larını sağlam bi şekilde filtreleyeceksiniz, ya da bu tarz markup dillerini parse edeceksiniz. Faideli bir komponent bence&#8230;</p>
<h2>Zend_Cache_Backend_Static</h2>
<p>Template sistemi olarak smarty kullananlar bilir, en pratik avantajlarından biri template dosyalarını render ettikten sonra cache&#8217;leyebilmesi. </p>
<p>Özellikle yüksekçe hit alan sitelerde sayfanın php tarafından üretilen html kodunu diske kaydeder, sonra da belirli bir süre boyunca bu statik dosyayı sunar. Böylece her yüklenişte PHP tekrar çalışmaz, performans kazanılır.</p>
<p>İşte Zend_Cache_Backend_Static bu işe yarıyor. Aslında 3-5 satır kodla kolayca yapılabilen birşey ama bir framework&#8217;ten bahsediyorsak mutlaka olması gerekiyordu.</p>
<h2>Zend_Cache_Manager</h2>
<p>Cache işine girdiğiniz zaman bi süre sonra çorba olmaya başlıyor işler zira kimi sayfayı 1 gün cache&#8217;leseniz bile oluyor ama diğerini 10 sn. cache&#8217;lemeniz gerekiyor. Bu sefer bir sürü cache tanımlaması gerekiyor. </p>
<p>Bir de ZF&#8217;de mübarek hiçbişey pratik tanımlanamadığı için her seferinde bir sürü birşeyler yazmak gerekiyor. </p>
<p>Zend_Cache_Manager bu rutin işleri merkezi bir yerde derli toplu tanımlananıza ve ihtiyacınız olan yerlerde daha kolay çağırmanız için tasarlanmış. </p>
<h2>Zend_Serializer</h2>
<p>Sanırım artık her boku muhtelif şekillerde serialize edebilecez&#8230; </p>
<p>Serialize olayını ben çok kullanırım, bilmeyenler için array ya da objelerin string haline çevrilmesidir serialize işlemi. Böylece array ve objeleri de veritabanına kaydedebiliyoruz. </p>
<p>Örneğin bir kayıda ait sınırsız sayıda telefon numarası tutmak istiyoruz. İlk akla gelen bu iş için bir tablo yapmak&#8230; Bunun yerine telefon numaralarını bir array&#8217;e yerleştirip serialize edip veritabanına kaydediyoruz. </p>
<p>Sonra çekerken unserialize edip bu arrayi kullanıyoruz. Kayıt güncelleme için array&#8217;le biraz dans etmek gerekiyor ama bir kere kafa yorup çözdükten sonra olayı çözüyorsunuz.</p>
<p><a href="http://www.jetanket.com">JetAnket</a>&#8216;te çokça başvurduk serialize yöntemine, aksi halde o kadar fazla opsiyon ve bilgiyi tutmak hiç de kolay olmayacaktı.</p>
<p>Bakalım Zend_Serializer&#8217;ın ek bi faydası olacak mı bize&#8230;</p>
<h2>Zend_Feed&#8217;de Yenilikler</h2>
<p>1.9&#8242;a kadar feed&#8217;leri okuma üzerine yoğunlaşılmıştı. Zend_Feed_Writer ile feed oluşturulabilecek. </p>
<p>Bir de Zend_Feed_Pubsubhubzartzurt var ki ilk defa duyduğum ve Google&#8217;ın icat ettiği &#8220;PubSubHubbub&#8221; diye bi olayı destekliyormuş. Aslında güzel bir protokol bu. Feed&#8217;ler için bir &#8220;push&#8221; metodu diyebiliriz. Normalde kullandığımız feed reader&#8217;lar belirli periyotlarla feed&#8217;leri sorguluyordu, bu da tabii anında haberdar olmamızı kısıtlıyordu. </p>
<p>Push metodunda feed&#8217;i sunan makineye feed reader kendini kayıt ettiriyor, feed güncellendiğinde sunucu reader&#8217;ı haberdar ediyor&#8230; muş&#8230;</p>
<h2>Zend_OAuth</h2>
<p>OAuth kavramını da ilk defa bu sayede duyuyorum. OAuth digg, flickr, twitter, plaxo gibi servislerin desteklediği ortak bir yetkilendirme protokolü. OpenID&#8217;den biraz farklılıkları var. Merak ediyorsanız bkz: <a href="http://oauth.net " rel="nofollow">http://oauth.net</a></p>
<p>&#8230;&#8230;&#8230;.</p>
<p>Yine bir sürü ıncık mıncık güzelleştirmeler yapılmış. Halen uzun bir yol var Zend Framework&#8217;ün önünde ama hiç yoktan iyidir yine de. Denemek için 20 ocağı bekleyeceğim&#8230;</p>
<p>Ben şahsen Zend Framework komponentlerini kullanarak kendi altyapımı oluşturdum ve <a href="http://www.netbeans.org">NetBeans</a>&#8216;le birlikte açıkçası epey hız kazandırdı bana. En azından sürekli update edilen ve arkasında ciddi bir mühendislik olan bir yapı. </p>
<p>Tek sorun, bana ait olmayan hosting makinelerine framework&#8217;ü atmak uzun sürüyor&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2010/01/16/zend-framework-1-10-beta-cikmis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jetanket.com yayında&#8230;</title>
		<link>http://www.huysuzadam.com/2009/12/09/jetanket-com-yayinda/</link>
		<comments>http://www.huysuzadam.com/2009/12/09/jetanket-com-yayinda/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 09:04:31 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=342</guid>
		<description><![CDATA[Bloguma yazmayalı 3-4 ay olmuş... Evet yazmadım ama bi sor niye? Çok ciks bir ürün çıkardık son üç ayda: <a href="http://www.jetanket.com">http://www.jetanket.com</a>

<div style="text-align:center;">
<a href="http://www.huysuzadam.com/wp-content/uploads/2009/12/jetanket_anasayfa.png"><img src="http://www.huysuzadam.com/wp-content/uploads/2009/12/jetanket_anasayfa-300x199.png" alt="Jet Anket" title="Jet Anket Anasayfası" width="300" height="199" class="size-medium wp-image-352"  style="border:1px solid #ccc; padding:2px; background-color:#eee;"/></a>
</div>]]></description>
			<content:encoded><![CDATA[<p>Bloguma yazmayalı 3-4 ay olmuş&#8230; Evet yazmadım ama bi sor niye? Çok ciks bir ürün çıkardık son üç ayda: <a href="http://www.jetanket.com">http://www.jetanket.com</a></p>
<div style="text-align:center;"><a href="http://www.huysuzadam.com/wp-content/uploads/2009/12/jetanket_anasayfa.png"><img class="size-medium wp-image-352" style="border:1px solid #ccc; padding:2px; background-color:#eee;" title="Jet Anket Anasayfası" src="http://www.huysuzadam.com/wp-content/uploads/2009/12/jetanket_anasayfa-300x199.png" alt="Jet Anket" width="300" height="199" /></a></div>
<p><span id="more-342"></span></p>
<p>Firmaların anketlerini hazırlayıp sitelerine entegre edebilecekleri bir servis jetanket. <a href="http://www.baturorkun.com/">Batur Orkun</a>&#8216;la beraber boş vakitlerimizde uğraştık ve 3 ayda ortaya çıktı.<br />
Fena bir süre değil o yüzden mutluyuz.</p>
<h2>Hipersonik Teknolojik Anket Editörü</h2>
<p>Özellikle anket editörü çok fantastik oldu, sürükle &#8211; bırak falan, teknolojinin dibine vurduk diyebilirim&#8230; Ek olarak oylama imkanı da var, oylamada geyik potansiyeli oldukça yüksek olmakla beraber yine profesyonel anlamda kullanılabilir.</p>
<p>Batur javascript konusundaki tekniğini konuşturdu. Eh, o kadar olacak adam <a href="http://kitap.antoloji.com/web-tasarimcilari-icin-javascript-dhtml-ve-css-kitabi/">kitabını yazmış</a> bu işin.</p>
<div style="text-align:center;"><a href="http://www.huysuzadam.com/wp-content/uploads/2009/12/2.png"><img class="aligncenter size-medium wp-image-362" style="border:1px solid #ccc; padding:2px; background-color:#eee;" title="Anket editörü" src="http://www.huysuzadam.com/wp-content/uploads/2009/12/2-300x191.png" alt="Anket editörü" width="300" height="191" /></a></div>
<h2>Anket ve Oylama Dağıtımı</h2>
<p>Üyelere oylama ve anketlerini hiper-süper teknolojik arabirimimizle yarattırmakla kalmıyoruz, hedef kitleye (arkadaşlar, müşteriler ya da firma çalışanları mesela) ulaştırma imkanı da sağlıyoruz.</p>
<p>Şu an sadece toplu e-posta göndertiyoruz ama yakında bir facebook application&#8217;ı ile milyonlara virüs gibi salma, hastalık yaratma gibi niyetlerimiz güçlü. Viral marketing&#8217;den bahsediyorum evet&#8230;.</p>
<p>Gönderilecek e-posta adreslerinin yönetimini kolaylaştırmak için GMail, Hotmail ve hatta MyNet de dahil birçok servisten irtibatların otomatik aktarımını da dahil ettik.</p>
<div style="text-align:center;"><a href="http://www.huysuzadam.com/wp-content/uploads/2009/12/6.png"><img class="aligncenter size-medium wp-image-367" title="Sosyal ağlar" src="http://www.huysuzadam.com/wp-content/uploads/2009/12/6-300x228.png" alt="Sosyal ağlar" width="300" height="228" /></a></div>
<h2>Raporlama</h2>
<p>Bir güzellik de raporlar&#8230; Anket ve oylamalarla ilgili çok ciks, grafikli raporlar sunuyoruz. Üyeler bu raporları yazdırabilir ya da daha detaylı istatistik bilgileri gerekiyorsa Excel&#8217;e çıktı alıp istediği istatistikleri hesaplayabilir. Şu an çok genel raporlar veriyoruz ama medyan, standart sapma gibi profesyonel kullanıma cevap verecek ek raporlar da planlarımız arasında yer alıyor.</p>
<div style="text-align:center;"><a href="http://www.huysuzadam.com/wp-content/uploads/2009/12/4.png"><img class="aligncenter size-medium wp-image-368" title="Anket raporları" src="http://www.huysuzadam.com/wp-content/uploads/2009/12/4-300x218.png" alt="Anket raporları" width="300" height="218" /></a></div>
<h2>Facebook Connect</h2>
<p>Facebook connect&#8217;i ilk kez uyguladığım proje JetAnket oldu. Burası aynı zamanda rahatlama alanım olduğu için yazmadan edemeyeceğim:</p>
<p>&#8220;Facebook API&#8217;larının dokümanlarını yazanı allah bildiği gibi yapsın!&#8221; (oh be)</p>
<p>Epey bir karın ağrısından sonra facebook connect&#8217;i uyguladık. Siteyi yavaşlatmayacak ve düzgün çalışacak bir connect uygulaması için dokümanların arasında dolanırken kafayı yemek işten değil&#8230;</p>
<p>OpenId entegrasyonu da yine planlar arasında ama tabii önce servis ne kadar ilgi görecek onu görmek lazım&#8230;</p>
<h2>Kullandığımız Teknolojiler</h2>
<p>Sunucu tarafında Zend Framework kullandık. ZF&#8217;nin kendi altyapısı yerine özellikle <a href="http://www.netbeans.org">Netbeans</a> ve muadili bir IDE ile çok hızlı bir şekilde çalışabileceğimiz bir altyapı kurdum. Yine de çalışma mantığı aynı; MVC type2, front controller, bootstrap dosyası, router vs. ama ZF&#8217;nin cinslikleri yok&#8230;</p>
<p>Aynı altyapıyı önümüzdeki yıl içerisinde çıkacağını planladığımız Bilkent Üniversitesi&#8217;nin kütüphane yazılımı için de kullanıyoruz&#8230;</p>
<p>İstemci tarafında <a href="http://jquery.com">jquery</a> ve plug-in&#8217;lerinden oldukça yararlandık. Bunlar dışında birçok açık kaynak kodlu yazılım kullandık, open flash charts, jpgraph, open inviter gibi&#8230;</p>
<h2>İş Modeli</h2>
<p>Jet Anket&#8217;in iş modeli yurtdışında pek yaygın olan ama bizde pek görülmeyen &#8220;Freemium&#8221;. Yani belirli limitlere kadar yazılımı ücretsiz kullanabilirsiniz, eğer limitler yetersizse makul bir ücret karşılığı limitlerinizi arttırabiliyorsunuz.</p>
<p>Uzun süredir denemek istediğim bir model bu:</p>
<p>Uzakta barındırılan web tabanlı yazılım + freemium&#8230;</p>
<p>Klasik yazılımların aksine uzakta barındırılan (remote-hosted) yazılımlarda tüm işlemler tek merkezden yapıldığı için bakım ve kurulum masrafları yok. Usability üzerine yoğunlaşılarak eğitim masraflarını da yok ediyoruz. Tabii komplike yazılımların esnekliğine ve işlevselliğine erişmek imkansız ama çoğunluğun (örneğin KOBİ&#8217;ler) ihtiyacı olan aslında basit fonksiyonlarla hızla ihtiyacına çözüm bulmak.</p>
<p><a href="http://37signals.com">37signals</a>&#8216;in yıllar önce başarıyla uyguladığı bu model daha sonra birçok servise ilham kaynağı oldu. Bakalım Türkiye&#8217;de de tutacak mı?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/12/09/jetanket-com-yayinda/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Yaratıcı FotoKritik Kullanıcısı (Nostalji)</title>
		<link>http://www.huysuzadam.com/2009/07/15/yaratici-fotokritik-kullanicisi-nostalji/</link>
		<comments>http://www.huysuzadam.com/2009/07/15/yaratici-fotokritik-kullanicisi-nostalji/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:01:56 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[FotoKritik]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=305</guid>
		<description><![CDATA[Artık FotoKritik ile bağlantım kalmadığına göre bazı mizahi öğelerden bahsedebilirim.
FotoKritik&#8217;te bizi en çok uğraştıran konu yüksek eğitim seviyesine sahip kullanıcıların hakaret ederken bile çok kibar cümleler kullanmasıydı&#8230;
Aşağıdaki durum artık bunun son noktalarından&#8230;

Hakarete uğrayan kullanıcıya hak vermek ve gerekli reaksiyonu göstermekle beraber gülmekten kendimizi alamamıştık :) Eski maillere bakarken karşılaştım, paylaşayım dedim&#8230;
Olay şu şekilde gelişiyor. İki [...]]]></description>
			<content:encoded><![CDATA[<p>Artık FotoKritik ile bağlantım kalmadığına göre bazı mizahi öğelerden bahsedebilirim.</p>
<p>FotoKritik&#8217;te bizi en çok uğraştıran konu yüksek eğitim seviyesine sahip kullanıcıların hakaret ederken bile çok kibar cümleler kullanmasıydı&#8230;</p>
<p>Aşağıdaki durum artık bunun son noktalarından&#8230;</p>
<p><span id="more-305"></span></p>
<p>Hakarete uğrayan kullanıcıya hak vermek ve gerekli reaksiyonu göstermekle beraber gülmekten kendimizi alamamıştık :) Eski maillere bakarken karşılaştım, paylaşayım dedim&#8230;</p>
<p>Olay şu şekilde gelişiyor. İki üye fotoğrafla ilgili yorumlarda bir konuda tartışıyorlar. Tartışmanın bir noktasında üyelerden biri diğerine bir özür e-postası gönderiyor, içeriği şu şekilde:</p>
<blockquote style="padding:10px"><p>
Merhaba xxx Bey,</p>
<p>Foto kritikteki yorumlarınız inanın ki hiç önemli değil sizi gayet iyi anlıyorum kendinizce haklı ve geçerli sebepleriniz olabilir. Hiç önemli değil :) Ben sizi kırdıysam özür dilerim şahsınızdan ve aramızda ki bu münakaşaya istinaden bir jest olarak size değerli bir portrem olan ve içerdiği metaforik anlam, renk tonlamaları ve fotoğrafçılıkta en zor kategorilerden biri olan portre özellikle oto portre çekimine dair gayet başarılı bulunmuş ve galerilerde çokça ilgi görmüş &#8220;Hareket&#8221; isimli otoportremi hediye etmek isterim, üstelikte şahsım tarafından imzalı bir kopyası. Yorumlarınız ve gosterdiğiniz ilgiden dolayı teşekkür ederim.</p>
<p>Saygılar
</p></blockquote>
<div style="margin-top:30px;">
Bu e-postanın ekinde ise şu &#8220;sanatsal&#8221; fotoğraf yer alıyor:
</div>
<p>.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.</p>
<p><a href="http://www.huysuzadam.com/wp-content/uploads/2009/07/nah.jpg"><img src="http://www.huysuzadam.com/wp-content/uploads/2009/07/nah-300x225.jpg" alt="Özür" title="Özür" width="300" height="225" class="size-medium wp-image-307" /></a></p>
<p>Ne diyeyim, yaratıcılık fotoğraf sanatının doğasında var&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/07/15/yaratici-fotokritik-kullanicisi-nostalji/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8 Kurulumu</title>
		<link>http://www.huysuzadam.com/2009/07/14/zend-framework-1-8-kurulumu/</link>
		<comments>http://www.huysuzadam.com/2009/07/14/zend-framework-1-8-kurulumu/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:26:05 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[ZF Örnek]]></category>
		<category><![CDATA[ZF Kurulum]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=287</guid>
		<description><![CDATA[Daha önce ZF 1.5.2 için bir örnek oluşturmuştum. Ancak 1.8 versiyonundan itibaren işler biraz değişti. Aslında proje yaratmak oldukça kolaylaştı ama ilk kurulum biraz uğraştırabilir.
ZF 1.8&#8242;den itibaren, ilk kez 1.7 versiyonunda gelen Zend_Tool epey önplana çıktı. Artık &#8220;zf create project&#8221; gibi bir komutla çalışır bir proje elde etmek mümkün. Tabii gerekli ayarları yaptıktan sonra&#8230;

Zend Framework [...]]]></description>
			<content:encoded><![CDATA[<p>Daha önce <a href="http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/">ZF 1.5.2 için bir örnek</a> oluşturmuştum. Ancak 1.8 versiyonundan itibaren işler biraz değişti. Aslında proje yaratmak oldukça kolaylaştı ama ilk kurulum biraz uğraştırabilir.</p>
<p>ZF 1.8&#8242;den itibaren, ilk kez 1.7 versiyonunda gelen Zend_Tool epey önplana çıktı. Artık &#8220;zf create project&#8221; gibi bir komutla çalışır bir proje elde etmek mümkün. Tabii gerekli ayarları yaptıktan sonra&#8230;</p>
<p><span id="more-287"></span></p>
<h2>Zend Framework Kurulumu</h2>
<p>Bu örnek windows için oluşturulmuştur ama linux ve mac için de mantık benzerdir.</p>
<p>Düzgün ve çalışan bir Apache &#8211; PHP &#8211; MySQL kurulumu olduğu varsayılmıştır.</p>
<p>PHP&#8217;nin &#8220;C:\php&#8221; altında olduğu varsayılmıştır.</p>
<p>Zend Framework 1.8.4 ile test edilmiştir, eski versiyonlarda çalışmayacağı garanti olup ileriki versiyonlar için söz veremem zira Zend zırt pırt değiştiriyor yapıyı&#8230;</p>
<h3>Yapılacaklar</h3>
<ul>
<li>Her projede ayrı ayrı kopyalar oluşturmamak için ZF&#8217;ü genel bir dizine koyup php&#8217;nin include_path&#8217;ine ekleyeceğiz.</li>
<li>Projeleri otomatik yaratan zf.bat betiğine erişebilmek için zf.bat  ve php.exe dosyalarının sistem PATH&#8217;ine ekleyeceğiz.</li>
<li>Projeyi web sunucusunun kök dizini <strong>dışındaki</strong> bir &#8220;Projeler&#8221; dizininde oluşturacağız. (Güvenlik nedeniyle asla webroot&#8217;ta oluşturmayın!)</li>
<li>Kök dizini dışında olduğumuz için bir virtual host tanımlayacağız. Böylece şık adreslerimiz de düzgün çalışacak.</li>
<li>Projemizi test edip ilk kez çalıştığını göreceğiz.</li>
</ul>
<p><strong>Projenin Geliştirilmesi</strong> (Sonraki Yazı)</p>
<ul>
<li> Proje dizin yapısına bir göz atacağız.</li>
<li>Proje ile ilgili ilk ayarları yapacağız (application.ini)</li>
<li>Veritabanıyla ilgili işlemler için bir model yaratacağız.</li>
<li>Birkaç action oluşturacağız ama silemeyeceğiz !?!? (Açıklaması var)</li>
<li>Bir layout oluşturup view&#8217;lerimizi bu layout ile ilişkilendireceğiz.</li>
<li>Basit bir helper oluşturacağız.</li>
</ul>
<h2>Kurulum</h2>
<p>Öncelikle <a href="http://framework.zend.com/download/latest">son versiyonu</a> indirmekle başlayalım. Full versiyona şimdilik gerek yok o yüzden minimal olan versiyonu indirebilirsiniz.</p>
<p>İndirdiğiniz arşivi açtığınızda bin ve library olmak üzere iki dizin göreceksiniz. Bu dizinlerden bin içerisinde zf.bat, zf.php ve zf.sh dosyaları bulunur. Bu dosyalarla ilgili tanımları yaptıktan sonra projeyi otomatik olarak oluşturacak betikler bunlardır. Diğer dizin olan library altında ise Zend Framework bulunuyor.</p>
<h3>ZF&#8217;ün PHP include_path&#8217;ine Eklenmesi</h3>
<p>PHP kurulumunuzun &#8220;C:\php&#8221; altında olduğunu farz ederek, &#8220;C:\php\ZF&#8221; diye bir dizin oluşturun.</p>
<p>PEAR kütüphanesinin de &#8220;C:\php&#8221; içerisinde olduğunu düşünerek en uygun yerin burası olduğuna karar verdim ama başka yerlere kurmak da mümkün aslında.</p>
<p>Kütüphaneye erişebilmek için php.ini dosyasını açıp <strong>include_path</strong> tanımlamasına &#8220;C:\php\ZF\library&#8221; dizinini ekleyin.</p>
<div style="border-top: 1px solid #cccc99; border-bottom: 1px solid #cccc99; padding: 8px; background-color: #ffffcc;"><strong>Notlar</strong></p>
<ul>
<li>Doğru php.ini&#8217;yi güncellediğinizden emin olun. Bunun için bir php dosyasına &#8220;phpinfo();&#8221; yazıp çalıştırdıktan sonra &#8220;Loaded Configuration File&#8221; kısmına bakın.</li>
<li>PEAR kurduysanız php.ini dosyasının en sonunda bir include_path tanımı daha olabilir.</li>
<li>Birden fazla dizin tanımlanacaksa windows için noktalı virgül, linux ve mac için iki nokta ile ayırılması gerekir. Benim windows bilgisayarımdaki include_path&#8217;in son hali: include_path=&#8221;.;C:\php\pear;C:\php\ZF\library&#8221;</li>
</ul>
</div>
<p>Apache&#8217;yi yeniden başlattığınızda include_path tanımı sayesinde artık hangi dizinde olursa olsun php içerisinden require(&#8220;Zend/&#8230;.&#8221;); şeklinde dosya çağırabilir hale geldiniz. Ama çağırmanıza gerek olmayacak o ayrı.</p>
<h3>ZF Betiğinin Çalıştırılabilir Dizinlere (Path) Eklenmesi</h3>
<p>Bunun için Control Panel → System → Advanced System Settings penceresine gidin (Türkçe windows kullanıcıları başının çaresine baksın).</p>
<p>Environment Varibles&#8217;a tıklayınca açılan penceredeki System Variables altından PATH değişkeninin sonuna &#8220;C:\php\ZF\bin&#8221; ve &#8220;C:\php&#8221; dizinlerini ekleyin. (Noktalı virgülle ayırarak)</p>
<p>Bu aşamadan sonra bilgisayarınız baştan başlatmanız gerekecek maalesef. (Logout &#8211; Login kurtarmaz).</p>
<p>Buraya kadar eğer doğru bir şekilde yaptıysanız &#8220;Command Prompt&#8221; açıp &#8220;zf show version&#8221; yazdığınız zaman şöyle bir şey görmeniz lazım:</p>
<pre>Zend Framework Version: 1.8.4</pre>
<h3>İlk Projemizin Oluşturulması</h3>
<ul>
<li>Eğer yoksa, projeler ile ilgili web sunucunun <strong>kök dizininden farklı bir yere</strong> bir dizin oluşturun. Mesela benimkisi &#8220;D:\Projeler&#8221;.</li>
<li>Bir &#8220;Command Prompt&#8221; açın ve o dizine cd ile gidin. Projeniz için dizin yaratmayın! zf.bat sizin için otomatik olarak halledecek bunu.</li>
<li> Şu komutu verin:
<pre>zf create project zf_deneme</pre>
</li>
</ul>
<p>ZF betiği projeler dizini altında <strong>zf_deneme</strong> diye bir dizin oluşturacak ve başlangıç için önerilen dizin yapısını oluşturacaktır:</p>
<p><img class="size-full wp-image-292" src="http://www.huysuzadam.com/wp-content/uploads/2009/07/zf_directory_structure.gif" alt="Zend Framework Directory Structure" width="185" height="433" /></p>
<h3>Virtual Host Tanımlaması</h3>
<p>Aslında virtual host olayına girmeden de çalışır hale getirmek mümkün. Bir &#8220;<strong>Alias</strong>&#8221; oluşturulabilir (Bkz. <a href="http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/">önceki yazım</a>), ya da güvenliği boşverip doğrudan kök dizinine yerleştirilebilir ki kesinlikle tavsiye etmiyorum, alışmayın&#8230; Ancak her halükarda public dizini için &#8220;<strong>AllowOverride All</strong>&#8221; tanımını yapmalısınız.</p>
<p>Windows&#8217;da virtual host tanımlamak için önce httpd.conf dosyasını bulun. Bu dosyada:</p>
<pre>NameVirtualHost *:80</pre>
<p>satırının comment&#8217;li olmadığından emin olun. Eğer rewrite modülü yüklü değilse</p>
<pre>LoadModule   rewrite_module   modules/mod_rewrite.so</pre>
<p>satırını ekleyin ya da başındaki commenti kaldırın.</p>
<p>Virtual host ile ilgili diğer tanımların bulunduğu yere aşağıdakileri tanımlayın (Bu arada virtual host tanımlamaları ayrı bir dosyada tutuluyor da olabilir, apache&#8217;nin conf dizinine bir bakın) :</p>
<pre>&lt;VirtualHost *:80&gt;
  ServerName localhost
&lt;/VirtualHost&gt;

&lt;VirtualHost *:80&gt;
  ServerName zf_deneme.localhost
  DocumentRoot D:\Projects\zf_deneme\public
  &lt;Directory "D:\Projects\zf_deneme\public"&gt;
    AllowOverride All
  &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</pre>
<p>Yaptığınız değişikliklerin geçerli olması için apache&#8217;yi restart etmeniz gereklidir.</p>
<p>Son olarak <strong>C:\Windows\System32\drivers\etc</strong> dizinindeki <strong>hosts</strong> dosyasını notepad ile açın ve içerisine</p>
<pre>127.0.0.1       zf_deneme.localhost</pre>
<p>satırını ekleyin. Windows&#8217;u restart etmenize gerek yok&#8230;</p>
<p>Artık <strong>http://zf_deneme.localhost/</strong> adresine bağlandığınızda projenize erişebiliyor olmanız lazım:</p>
<p><img class="aligncenter size-full wp-image-295" style="border: 3px solid #ccc;" title="zf_gettingstarted_screenshot" src="http://www.huysuzadam.com/wp-content/uploads/2009/07/zf_gettingstarted_screenshot.jpg" alt="Zend Framework Kurulumu" width="480" height="427" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/07/14/zend-framework-1-8-kurulumu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MySQL türkçe desteği: Collation ve character set nedir?</title>
		<link>http://www.huysuzadam.com/2009/05/23/mysql-turkce-destegi-collation-ve-character-set-nedir/</link>
		<comments>http://www.huysuzadam.com/2009/05/23/mysql-turkce-destegi-collation-ve-character-set-nedir/#comments</comments>
		<pubDate>Sat, 23 May 2009 10:52:33 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=252</guid>
		<description><![CDATA[MySQL 4.1&#8242;den itibaren türkçe karakter işi karıştı. &#8220;SET NAMES latin5&#8243; ile çözdük bu problemi gerçi ama yine de sistemin nasıl çalıştığını bilmezseniz sorun yaşayabilirsiniz. O yüzden MySQL&#8217;in karakter seti ve collation hakkında birşeyler yazayım istedim.
Tanımlar
Konuyu kavramak için önce tanımları ele alalım. Bilmemiz gereken iki tanım var: &#8220;Character Set&#8221; ve &#8220;Collation&#8221; 
Character Set (Karakter Seti)
Adından anlayabileceğiniz [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL 4.1&#8242;den itibaren türkçe karakter işi karıştı. &#8220;SET NAMES latin5&#8243; ile çözdük bu problemi gerçi ama yine de sistemin nasıl çalıştığını bilmezseniz sorun yaşayabilirsiniz. O yüzden MySQL&#8217;in karakter seti ve collation hakkında birşeyler yazayım istedim.</p>
<h2>Tanımlar</h2>
<p>Konuyu kavramak için önce tanımları ele alalım. Bilmemiz gereken iki tanım var: &#8220;Character Set&#8221; ve &#8220;Collation&#8221; </p>
<p><strong>Character Set (Karakter Seti)</strong><br />
Adından anlayabileceğiniz gibi desteklenen karakterleri kast ediyoruz. Örneğin latin5 karakter setindeki &#8220;ı&#8221; harfinin ASCII kodu latin1 karakter setindeki &yacute; harfi ile aynıdır. Dolayısıyla türkçe bir dokümanı latin1 olarak gösterirseniz tüm &#8216;ı&#8217; harfleri &#8216;&yacute;&#8217; olarak gösterilecektir.</p>
<p>Farklı diller aynı karakter setlerine sahip olabilir, örneğin latin1 seti almanca, ispanyolca, ingilizce, isveçce gibi dilleri kapsar.</p>
<p><span id="more-252"></span></p>
<p>Notlar:<br />
- Character set, charset, code page gibi isimleri de vardır.<br />
- latin1: ISO-8859-1 ve windows-1252 ile aynıdır.<br />
- latin5: ISO-8859-9 ve windows-1254 ile aynıdır.  </p>
<p><strong>Collation (koleyşın)</strong><br />
İki karakterin karşılaştırılmasında kullanılır. Pratikte bu tablo alanlarını sorgularken ve sıralamalarda işe yarar:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SET</span> names latin5;
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> deneme <span style="color: #993333; font-weight: bold;">WHERE</span> isim <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Çağrı'</span>;
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> deneme <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> isim;</pre></div></div>

<p>Yukarıdaki sorguların sonucu <code>isim</code> alanının collation&#8217;ına bağlıdır.</p>
<p>Örnekle açıklamak istersek, almancada da &#8220;ü&#8221; harfi var türkçede de, isveçcede de&#8230; Ama bu harflerin alfabedeki yeri dile göre değişiyor yani collation&#8217;ı latin1_swedish_ci seçip sıralama yaparsanız ü başka yerde, latin1_german1_ci seçerseniz başka yerde yer alır. Ya da latin1_german1_ci seçerseniz aramalarda &#8216;ä&#8217; ile &#8216;a&#8217; aynı kabul edilirken latin1_german2_ci seçerseniz farklı kabul edilir.</p>
<p>Collation altçizgiyle ( _ işareti) parçalara ayırırsak ilk kısım karakterin ait olduğu dil ailesini, ikinci kısım dili, üçüncü kısım ise karşılaştırma şeklini ifade eder. </p>
<p>Örneğin <code>latin1_swedish_ci</code> dediğimiz zaman &#8220;latin1&#8243; ailesinden &#8220;isveçce&#8221; dilini büyük-küçük harf ayrımı olmadan sırala demek istiyoruz. </p>
<p>ci: Case-Insensitive (Büyük &#8211; küçük harfe duyarsız)<br />
cs: Case-Sensitive (Büyük &#8211; küçük harfe duyarlı. Sadece bazı diller için geçerli, türkçede kullanılmaz)<br />
bin: Binary (Karakteri tanımlayan byte değerine göre karşılaştır demek. Pratikte büyük &#8211; küçük harfe duyarlılık istendiğinde kullanılır.</p>
<h2>MySQL Dil Ayarı Nasıl Yapılır?</h2>
<p>MySQL&#8217;le biraz uğraşırsanız dilin ayarlanabileceği tonla yer görürsünüz. Büyükten küçüğe doğru gidersek: </p>
<ol>
<li>Sunucu ayarı</li>
<li>Veritabanı ayarı</li>
<li>Tablo ayarı</li>
<li>Tablodaki alanın ayarı</li>
</ol>
<p>Not 1: Bu ayarlardan pratikte sizi tek ilgilendiren: tablodaki alanın karakter seti.<br />
Not 2: Buradaki ayarlar ne olursa olsun son sözü yine bağlantıyı kurduktan sonra verdiğiniz &#8220;SET NAMES utf8&#8243; komutu söyler. </p>
<h3>1. MySQL Sunucusu</h3>
<p>MySQL derlenirken tanımlanabilir:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">shell<span style="color: #000000; font-weight: bold;">&gt;</span> .<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--with-charset</span>=utf8 <span style="color: #660033;">--with-collation</span>=utf8_general_ci</pre></div></div>

<p>Ya da my.cnf / my.ini&#8217;de tanımlanabilir:</p>
<p><!--more--></p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>mysqld<span style="">&#93;</span></span>
<span style="color: #000099;">character-set-server</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">utf8</span>
<span style="color: #000099;">collation-server</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">utf8_general_ci</span></pre></div></div>

<p>Bu tanımlar sadece yeni yaratılacak veritabanları ve tabloların varsayılan karakter setinin utf8, collation&#8217;ının ise utf8_general_ci olmasını sağlar. Yani bu tanımları yapsanız bile yine de &#8220;SET NAMES utf8&#8243; demeniz gerekecektir.</p>
<h3>2. Veritabanı</h3>
<p>Veritabanı yaratılırken tanımlanır. Eğer tanımlanmazsa MySQL sunucusundaki tanım neyse o kullanılır.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">DATABASE</span> mydb
  <span style="color: #993333; font-weight: bold;">DEFAULT</span> CHARACTER <span style="color: #993333; font-weight: bold;">SET</span> utf8
  <span style="color: #993333; font-weight: bold;">DEFAULT</span> COLLATE utf8_general_ci;</pre></div></div>

<p>Bu yapılan tanım da sadece bu veritabanında oluşturulan tabloların varsayılan karakter seti ve collation&#8217;ının ne olacağını belirler.</p>
<h3>3. Tablo</h3>
<p>Tablo yaratılırken tanımlanır. Eğer tanımlanmazsa veritabanındaki tanım kullanılır:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"> <span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> deneme <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`x`</span> INT<span style="color: #66cc66;">&#41;</span> CHARACTER <span style="color: #993333; font-weight: bold;">SET</span> latin5 COLLATE latin5_turkish_ci</pre></div></div>

<p>Bu durumda tabloya eklenen satırların collation&#8217;ı verilmezse latin5_turkish_ci olur.</p>
<h3>4. Tablo Alanı</h3>
<p>Üstteki tabloya ispanyolca bir alan eklemek istediğimizi düşünelim:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">ALTER</span> <span style="color: #993333; font-weight: bold;">TABLE</span> deneme <span style="color: #993333; font-weight: bold;">ADD</span> <span style="color: #ff0000;">`y`</span> VARCHAR<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">&#41;</span> CHARACTER <span style="color: #993333; font-weight: bold;">SET</span> latin1 COLLATE latin1_spanish_ci;</pre></div></div>

<p>Tablonun collation&#8217;ı türkçe olmasına rağmen alan ispanyolca oldu. Bu alana türkçe giriş yaparsanız ı,ş, ğ gibi karakterleri hatalı görürsünüz.</p>
<h2>Çalışma Şekli</h2>
<p>Bu kısımda SET NAMES &#8216;latin5&#8242; ne demek onu detaylandıracağım&#8230;</p>
<p>Veritabanının çalışma şeklini düşünürsek, biz sunucuya bir sorgu gönderiyoruz, sunucu da bu sorguyu okuyup bize bir cevap gönderiyor.</p>
<ol>
<li>Gönderdiğimiz sorgu hangi karakter setinde? Biz örneğin ascii mi gönderiyoruz yoksa utf8 mi?<br />
Bunun için sunucu <code>character_set_client</code> parametresine bakar.</li>
<li>Gönderilen sorguyu sunucu hangi karakter setine çevirmeli? Bunun için de <code>character_set_connection</code> ve <code>collation_connection</code> parametrelerine bakar. Yani sunucu gönderilen sorguyu <code>character_set_client</code> karakter setinden <code>character_set_connection</code> karakter setine çevirir.<br />
<code>collation_connection</code> parametresi sadece iki string birbiriyle kıyaslanacaksa kullanılır. Eğer bir tablo alanını bir string ile karşılaştırıyorsanız kullanılmaz çünkü bu durumda o tablo alanının collation&#8217;ı kullanılır.
</li>
<li>
Sunucu sorguyu işleyip veritabanından sonucu çektikten sonra bize gönderir demiştik, bize göndermeden önce sonucun karakter setini değiştirebilir. Bunun için <code>character_set_results</code> parametresini kullanır.
</li>
</ol>
<p>Bütün bu ayarları sunucunun konfigürasyon dosyasından yapabileceğiniz gibi (my.cnf ya da my.ini) doğrudan bir sql cümlesi ile de yapabilirsiniz. Yani php için:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;set character_set_client='latin5'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>diyebilirsiniz örneğin. </p>
<p>Sadece türkçe kullanacaksanız eğer şu komuyu verebilirsiniz:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET character_set_client='latin5'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET character_set_results='latin5'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET character_set_connection='latin5'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Her seferinde bu satırları aklımızda tutmamıza gerek olmasın diye MySQL bir kısa yol koymuş, o da:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET NAMES latin5&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>SET NAMES satırından nasıl kurtulurum?</h2>
<p>Programcıların SET NAMES satırını unutmaları ihtimaline karşı <code>init_connect</code> parametresini kullanmak pratik olabilir:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>mysqld<span style="">&#93;</span></span>
<span style="color: #000099;">init_connect</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">'SET NAMES latin5'</span></pre></div></div>

<p>Tabii veritabanını başlatırken parametre olarak da verilebilir bu.</p>
<p>Performansı arttırmak için veritabanı ayarlarına <code>skip-character-set-client-handshake</code> parametresini ekleyebilirsiniz. Bu durumda tablo alanının collation&#8217;ı kullanılacaktır ancak SET NAMES ile dili değiştirmek bu durumda mümkün olmayacaktır. Bir de, bu parametre &#8220;super user&#8221; ile bağlandığınızda geçersizdir.</p>
<h2>Türkçe Dil Desteği ile İlgili Diğer Etkenler</h2>
<p>Farklı dillerin doğru desteklenmesi için sadece MySQL&#8217;in doğru ayarlanması tabii ki yeterli değil. Dinamik web sitelerini örnek aldığımızda, Apache &#8211; PHP &#8211; MySQL platformunu düşünürsek:</p>
<ol>
<li>
<strong>Apache&#8217;nin dil ayarı</strong><br />
Header göndererek apache&#8217;de dil tanımlanabilir:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">AddDefaultCharset</span> utf-<span style="color: #ff0000;">8</span></pre></div></div>

<p>Bu tanımlanan dil hatalıysa PHP, HTML ve veritabanındaki ayarlarınız ne olursa olsun sorun yaşarsınız.
</li>
<li>
<strong>PHP</strong><br />
PHP&#8217;den de aynı apache&#8217;deki gibi header gönderilebilir:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-type: text/html; charset=utf-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Bu gönderilen header, apache tarafından gönderilenlerin sonuna eklendiği için apache&#8217;nin ayarlarını değiştiremez ancak burada dil ile ilgili header yanlış gönderilirse HTML ve veritabanındaki ayarlarınız ne olursa olsun sorun yaşarsınız.
</li>
<li>
<strong>HTML</strong><br />
HTML meta komutu ile header bilgisi simüle edilebilir.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">HTTP-EQUIV</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Content-type&quot;</span> <span style="color: #000066;">VALUE</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Eğer PHP ya da apache&#8217;den header gönderildiyse bu değer işe yaramaz. Eğer buradaki bilgi hatalı olursa veritabanından doğru dilde çekseniz bile sorun yaşayabilirsiniz.
</li>
</ol>
<h3>UTF-8 ile ilgili not</h3>
<p>UTF8 sonradan çıkan bir tanım. İçerisinde hemen hemen tüm dilleri barındırdığı için aslında büyük kolaylık. Ancak ilk geliştirilen ASCII formatından farklı bir altyapısı var. Dolayısıyla eğer utf8 kullanmayı seçtiyseniz yukarıdakilere ek olarak bir de dosya formatı sorunu karşınıza çıkıyor. </p>
<p>Eğer PHP ya da HTML sayfalarınızı açtığınız editör UTF8 destekli değilse ya da yeni dosya yarattığınızda dosyayı utf8 olarak kaydetmediyseniz yine sorun yaşayabilirsiniz.</p>
<p>UTF8 başlı başına bir muamma olduğu için çok detaya girmeyeceğim&#8230;</p>
<h3>Karakter sorunu çözmede izleyebileceğiniz yol</h3>
<p>Eğer karakter sorunu yaşıyorsanız aşama aşama şunu yapabilirsiniz:</p>
<p>1. Öncelikle sayfada gösterilen karakterler bozuk mu yoksa yanlış karakter setinde göstermeye çalıştığı için mi öyle gözüküyor onu tespit edin. Bunun için firefox&#8217;ta View / Character Encoding kısmından encoding doğru mu gözüküyor bakın. Eğer doğruysa ve problem utf8&#8242;leyse hata ya ilgili dosyanın utf8 olmamasıdır ya da veritabanından hatalı geliyordur. </p>
<p>2. Eğer encoding hatalıysa header&#8217;larda sorun var mı ona bakın. Header&#8217;ları görmek için firefox&#8217;un firebug extension&#8217;ından ya da ie8&#8242;in developer tools&#8217;undan vs. yararlanabilirsiniz. Eğer header farklı ise header&#8217;ın nereden geldiğini bulun: Ya apache&#8217;den ya da PHP&#8217;den gelir.</p>
<p>3. Header doğruysa &#8220;View source&#8221; diyip meta elemanına bakın. Buna &#8220;view source&#8221; ile bakın zira özellikle dinamik sitelerde kazara birden fazla meta komutunun geldiğine çok şahit oldum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/05/23/mysql-turkce-destegi-collation-ve-character-set-nedir/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Agile Development&#8217;ın bir İleri Adımı: Google App Engine</title>
		<link>http://www.huysuzadam.com/2009/04/10/agile-developmentin-bir-ileri-adimi-google-app-engine/</link>
		<comments>http://www.huysuzadam.com/2009/04/10/agile-developmentin-bir-ileri-adimi-google-app-engine/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 08:36:47 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=247</guid>
		<description><![CDATA[Webrazzi&#8217;de Google App Engine ile ilgili gördüğüm bir yazı üzerine şöyle bir göz atayım dedim ve geçen sene duyurulan Google App Engine&#8216;in güzel bir yol kat ettiğini fark ettim.
Nedir?
Sektörü takip edenler için özetlemek gerekirse &#8220;Amazon Web Services&#8221; ile &#8220;Ruby on Rails&#8220;in işlerini bir arada yapan bir uygulama diyebiliriz.

Bilmeyenler için kısa özet:
Amazon Web Services&#8217;in içerisindeki;

EC2 yoğun [...]]]></description>
			<content:encoded><![CDATA[<p>Webrazzi&#8217;de Google App Engine ile ilgili gördüğüm bir yazı üzerine şöyle bir göz atayım dedim ve geçen sene duyurulan <a href="http://code.google.com/appengine/">Google App Engine</a>&#8216;in güzel bir yol kat ettiğini fark ettim.</p>
<h2>Nedir?</h2>
<p>Sektörü takip edenler için özetlemek gerekirse &#8220;<a href="http://aws.amazon.com/">Amazon Web Services</a>&#8221; ile &#8220;<a href="http://rubyonrails.org/">Ruby on Rails</a>&#8220;in işlerini bir arada yapan bir uygulama diyebiliriz.</p>
<p><span id="more-247"></span></p>
<p><strong>Bilmeyenler için kısa özet:</strong><br />
Amazon Web Services&#8217;in içerisindeki;</p>
<ul>
<li>EC2 yoğun yük altındaki sunucuların ölçeklendirilmesi servisi. </li>
<li>S3 web servisinizdeki verilerin ölçeklendirilmesi servisi. </li>
<li>SimpleDB ise ölçeklenebilen bir veritabanı servisi. </li>
</ul>
<p>Yani kısaca trafiği yükselen ve çok yük alan servisler için zahmetsizce kapasitenizi arttırabildiğiniz ve hatta gerektiğinde maliyeti düşürebilmek için azaltabildiğiniz bir servis. Microsoft&#8217;un benzer servisinin adı ise &#8220;<a href="http://www.microsoft.com/azure/default.mspx">Azure</a>&#8221;</p>
<p>Ruby on Rails&#8217;in özelliği ise çok hızlı ve pratik proje oluşturulabilmesi. Bir ekibin gereksinim duyduğu bütün altyapılara sahip:</p>
<ul>
<li>Geliştirme, test ve son ürün için ayrı konfigürasyon tanımlayabilme (Son üründe hata mesajlarını gösterme, geliştirilen versiyonda göster vs.)</li>
<li>Geliştirme için kullanıma hazır web server. Apache kurayım, PHP tanıtayım falan yok. Web server&#8217;ı çalıştır diyorsunuz, kendi makinenizde herşey hazır olarak çalışıyor.</li>
<li>Arama motorları için adresin anlamlı olması çok önemli o yüzden adresi scriptlere dağıtan &#8220;router&#8221; mekanizması. Geliştirici ve tasarımcı için linkleri verirken de kolaylık oluyor.</li>
<li>Veritabanı için ORM altyapısı.</li>
<li>vs.vs.vs.</li>
</ul>
<p>&#8230;</p>
<p>Google App Engine&#8217;de Rails&#8217;i hatırlatan python tabanlı bir framework kullanabiliyorsunuz. İsteğe bağlı olarak en az Rails kadar ses getirmiş <a href="http://www.djangoproject.com/">Django</a> ya da CGI tabanlı herhangi bir python framework&#8217;ü kullanılabiliyor. Son zamanlarda Java desteği de sağlandı.</p>
<p>Geliştirme esnasında sadece komut satırında web sunucuyu çalıştır diyorsunuz. Veritabanı falan kurmaya gerek yok zira veritabanı da web sunucu ile entegre. Kendine özgü bir veritabanı var. Geliştirmeyi bitirdikten sonra sanki FTP ile upload eder gibi projeyi upload et diyorsunuz ve herşey çalışır hale geliyor.</p>
<p>Veritabanında yük artarsa Google hallediyor, veritabanı otomatik genişliyor.<br />
Web sunucularında yük artarsa Google hallediyor, sunucular ölçekleniyor.</p>
<p>Yakın zamana kadar gördüğün en pratik çalışma ortamı&#8230;<br />
Ama tabii ki soru işaretleri de bırakıyor&#8230;</p>
<h2>Dezavantajları</h2>
<ul>
<li>Paralı bir servis. CPU&#8217;nun kullanım saati başına, hat miktarı başına, disk alanı başına, zart başına zurt başına taksimetre gibi yazıyo. Bir miktarı ücretsiz ama ben şahsen herhangi bir projemin ne kadar CPU kullanacağını önceden öngöremem dolayısıyla proje maliyetini öngörmek biraz sıkıntılı.</li>
<li>Desteklenen diller sadece Python ve yeni yeni Java&#8230; Özellikle Python için Türkiye&#8217;de programcı bulmak zor&#8230;</li>
<li>Özellikle Google&#8217;ın framework&#8217;ünü kullanarak projenizi geliştirirseniz ve ileride örneğin Google&#8217;ın fiyatlandırmasından ya da hizmetinden memnun kalmazsanız projenizi destekleyecek hosting çözümleri nedir allah bilir. Daha yaygın olan Django tercih etseniz bile veritabanı için Google&#8217;ın altyapısı kullanıldığı için başka bir servis sağlayıcıya geçmek zahmetli olabilir.</li>
</ul>
<p>Sonuçta aynı kurumsal şirketlerin personele bağımlı kalmaması gibi projelerin de servis sağlayıcı, programcı gibi parametrelerden mümkün olduğunca bağımsız olması uzun vadede büyük avantajlar sağlıyor&#8230;</p>
<p>Benim öngörüm uzun zamandır geleceğin framework&#8217;ler ve framework&#8217;leri adam gibi destekleyen IDE&#8217;lerde olduğu idi. Framework + IDE ikilisinin yanına <a href="http://en.wikipedia.org/wiki/Cloud_computing">Cloud Computing</a> destekli servisleri de ekleyebilirim sanırım.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/04/10/agile-developmentin-bir-ileri-adimi-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8</title>
		<link>http://www.huysuzadam.com/2009/04/09/zend-framework-18/</link>
		<comments>http://www.huysuzadam.com/2009/04/09/zend-framework-18/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 07:37:34 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=240</guid>
		<description><![CDATA[ZF preview release yayımlanmış. Bence çok önemli bir versiyon bu zira kendileri de Zend Framework&#8217;ün &#8220;framework&#8221; tanımına tam anlamıyla uymadığını kabul etmiş sonunda&#8230;
Framework&#8217;ler kullanıcıya bir uygulamayı nasıl yaratacağı ile ilgili bazı varsayımlar sunar ve bu varsayımlar doğrultusunda kullanıcıyı yönlendirir. ZF tarafında ise &#8220;loose coupling&#8221; dediğimiz modellerin birbirinden bağımsız çalışabilmesi konusu çok daha ön planda tutulmuş. [...]]]></description>
			<content:encoded><![CDATA[<p>ZF preview release yayımlanmış. Bence çok önemli bir versiyon bu zira kendileri de Zend Framework&#8217;ün &#8220;framework&#8221; tanımına tam anlamıyla uymadığını kabul etmiş sonunda&#8230;</p>
<p>Framework&#8217;ler kullanıcıya bir uygulamayı nasıl yaratacağı ile ilgili bazı varsayımlar sunar ve bu varsayımlar doğrultusunda kullanıcıyı yönlendirir. ZF tarafında ise &#8220;loose coupling&#8221; dediğimiz modellerin birbirinden bağımsız çalışabilmesi konusu çok daha ön planda tutulmuş. Bu da ZF&#8217;yi &#8220;çözebilenlere&#8221; büyük esneklik sağlarken ilk başlayanların öğrenmesini ve adaptasyonunu zorlaştırıyor. </p>
<p>Hatta ZF kullananlar için bile yeni bir proje yaratmak çok zahmetli. Yani tamam kendinize kolaylıklar buluyorsunuz mutlaka ama yine de zor.</p>
<p>Açıkçası bu eski gidişatla Zend Framework&#8217;ün efektif kullanılabilmesi için bir alt framework&#8217;e ihtiyacı olacağını düşünüyordum ama bu son hamleyle sanıyorum pratik bir framework olma yoluna döndü ZF.</p>
<p><span id="more-240"></span></p>
<h2>Zend Framework 1.8&#8242;de değişen ne?</h2>
<ul>
<li><strong>Zend_Tool:</strong> Proje yaratmanızı ve projeye yeni parçalar (controller, view, test gibi) eklemenizi kolaylaştıran bir konsol aracı.</li>
<li><strong>Zend_Application:</strong> Bootstrap dosyasını daha organize bir şekilde oluşturmanızı sağlayan araç&#8230;</li>
<li><strong>Zend_Navigation:</strong> Breadcrumb, site haritası gibi tasarımdaki navigasyon elemanları için</li>
<li>Amazon EC2 ve S3 desteği&#8230;</li>
<li>Diğer modüllere bazı ekler ve tabii ki bugfix&#8217;ler</li>
</ul>
<h2>Zend_Tool</h2>
<p>Normalde bir ZF projesi oluşturmak uğraştırıcı bir iş. Genelde benim yaptığım önceden oluşturduğum bir projeden kopyala yapıştır yapıp üzerinde değişiklik yapmak. Ama mutlaka gözden kaçan birşeyler oluyor.</p>
<p>Zend_Tool ile artık şunu yapabileceğiz:</p>
<pre>
> zf create project
</pre>
<p>
Bu komutu verdiğiniz zaman gerekli tüm dizinleri vs. oluşturuyor:
</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">|--</span> application
<span style="color: #339933;">|</span>   <span style="color: #339933;">|--</span> Bootstrap<span style="color: #339933;">.</span>php
<span style="color: #339933;">|</span>   <span style="color: #339933;">|--</span> configs
<span style="color: #339933;">|</span>   <span style="color: #339933;">|</span>   `<span style="color: #339933;">--</span> application<span style="color: #339933;">.</span>ini
<span style="color: #339933;">|</span>   <span style="color: #339933;">|--</span> controllers
<span style="color: #339933;">|</span>   <span style="color: #339933;">|</span>   <span style="color: #339933;">|--</span> ErrorController<span style="color: #339933;">.</span>php
<span style="color: #339933;">|</span>   <span style="color: #339933;">|</span>   `<span style="color: #339933;">--</span> IndexController<span style="color: #339933;">.</span>php
<span style="color: #339933;">|</span>   <span style="color: #339933;">|--</span> models
<span style="color: #339933;">|</span>   `<span style="color: #339933;">--</span> views
<span style="color: #339933;">|</span>       <span style="color: #339933;">|--</span> helpers
<span style="color: #339933;">|</span>       `<span style="color: #339933;">--</span> scripts
<span style="color: #339933;">|</span>           <span style="color: #339933;">|--</span> error
<span style="color: #339933;">|</span>           <span style="color: #339933;">|</span>   `<span style="color: #339933;">--</span> error<span style="color: #339933;">.</span>phtml
<span style="color: #339933;">|</span>           `<span style="color: #339933;">--</span> index
<span style="color: #339933;">|</span>               `<span style="color: #339933;">--</span> index<span style="color: #339933;">.</span>phtml
<span style="color: #339933;">|--</span> library
<span style="color: #339933;">|--</span> <span style="color: #000000; font-weight: bold;">public</span>
<span style="color: #339933;">|</span>   <span style="color: #339933;">|--</span> <span style="color: #339933;">.</span>htaccess
<span style="color: #339933;">|</span>   `<span style="color: #339933;">--</span> index<span style="color: #339933;">.</span>php
`<span style="color: #339933;">--</span> tests
    <span style="color: #339933;">|--</span> application
    <span style="color: #339933;">|</span>   `<span style="color: #339933;">--</span> bootstrap<span style="color: #339933;">.</span>php
    <span style="color: #339933;">|--</span> library
    <span style="color: #339933;">|</span>   `<span style="color: #339933;">--</span> bootstrap<span style="color: #339933;">.</span>php
    `<span style="color: #339933;">--</span> phpunit<span style="color: #339933;">.</span>xml</pre></div></div>

<p>Henüz dokümantasyonu çok boş ve ben de denemedim ama Zend&#8217;in ilgili blogunda bu araç için geliştirmeler yapılacağı yazdığı için muhtemelen eksiklikleri var ama bu haliyle bile işleri oldukça hızlandıracak gibi&#8230;</p>
<p>Bu aracın niye bu kadar geç kaldığı sorusuyla ilgili olarak aklıma gelen ilk cevap Zend&#8217;in editörünü önplana çıkartmak için kasıtlı geciktirmesi. Zira Zend Studio&#8217;da proje bir wizard ile oluşturuluyor ama parasını verip satın alırsanız. PDT ya da piyasadaki diğer editörler için bu imkan yok&#8230;</p>
<h2>Zend_Application</h2>
<p>Yeni proje oluştururken en çok uğraştıran kısım şüphesiz bootstrap dosyası. Ayrıca geliştirme (development), test ve son ürün (production) için farklı konfigürasyon ihtiyacı için halihazırda bir çözüm bulunmuyordu. </p>
<p>Zend_Application ile bu soruna çözüm aranmış sanki. Dokümantasyondan yine her zamanki gibi göz atarak birşey anlamak mümkün değil ama benim anladığım kadarıyla bir konfigürasyon dosyası ile bootstrap dosyasındaki hammaliyelerin birçoğundan kurtulmak mümkün olacak.</p>
<h2>Sonuç</h2>
<p>Ben şahsen ZF&#8217;yi hala bir framework olarak değil de PEAR&#8217;in yerini alan bir kütüphane olarak kullanıyorum. Hala Rails&#8217;in 15 dakikada blog yazma hayallerini kuruyorum ama bu tür gelişmeler ümit veriyor&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/04/09/zend-framework-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetBeans Windows Versiyonu Türkçe Bug&#8217;ı</title>
		<link>http://www.huysuzadam.com/2009/03/10/netbeans-windows-versiyonu-turkce-bugi/</link>
		<comments>http://www.huysuzadam.com/2009/03/10/netbeans-windows-versiyonu-turkce-bugi/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 11:30:02 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[ide'ler]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=232</guid>
		<description><![CDATA[ Son zamanlardaki favori editörüm NetBeans&#8216;de iki önemli sorun vardı: İlki SFTP desteğinin olmayışı, ikincisi de windows versiyonundaki türkçe karakterler ile ilgili bir bug. 
SFTP desteği 6.7M2&#8242;den itibaren verilmeye başlanmış. Türkçe karakterler ile ilgili bug ise çabalarım sonucunda düzeltildi sonunda. *200903060201* numaralı buildden itibaren geçerli olan bu düzeltme sanırım v6.7&#8242;nin stabil sürümüne dahil olacaktır.
Stabil olmasa [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.huysuzadam.com/wp-content/uploads/2009/03/netbeans_logo.jpg" alt="NetBeans" title="NetBeans" width="150" height="75" class="size-full wp-image-234" align="right" /> Son zamanlardaki favori editörüm <a href="http://www.netbeans.org">NetBeans</a>&#8216;de iki önemli sorun vardı: İlki SFTP desteğinin olmayışı, ikincisi de windows versiyonundaki türkçe karakterler ile ilgili bir bug. </p>
<p>SFTP desteği 6.7M2&#8242;den itibaren verilmeye başlanmış. Türkçe karakterler ile ilgili bug ise çabalarım sonucunda düzeltildi sonunda. *200903060201* numaralı buildden itibaren geçerli olan bu düzeltme sanırım v6.7&#8242;nin stabil sürümüne dahil olacaktır.</p>
<p>Stabil olmasa da olur diyenler <a href="http://bits.netbeans.org/download/trunk/nightly/latest/">gecelik derlemeler</a> sayfasından indirilebilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/03/10/netbeans-windows-versiyonu-turkce-bugi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>1</slash:comments>
		</item>
	</channel>
</rss>
