<?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>www.yalazi.org &#187; php</title>
	<atom:link href="http://www.yalazi.org/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yalazi.org</link>
	<description>Yine bir gayrı ciddi internet günlüğü..</description>
	<lastBuildDate>Thu, 01 Dec 2011 14:57:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Bir karakterin ettikleri</title>
		<link>http://www.yalazi.org/2011/02/24/bir-karakterin-ettikleri/</link>
		<comments>http://www.yalazi.org/2011/02/24/bir-karakterin-ettikleri/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 17:27:58 +0000</pubDate>
		<dc:creator>Onur Yalazı</dc:creator>
				<category><![CDATA[Havadan Sudan]]></category>
		<category><![CDATA[LKD Gezegen]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bugunbugece]]></category>
		<category><![CDATA[display_errors]]></category>
		<category><![CDATA[error_reporting]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[log_errors]]></category>
		<category><![CDATA[mobilada]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://m.yalazi.org/?p=400</guid>
		<description><![CDATA[&#8216;da genellikle lamp yapısı kullanıyoruz. Tabii php ile ciddi anlamda gelistirme yaptığımız için bazı garipliklerle karşılaştığımız oluyor. Bu garipliklerden biri yüzünden, üzerinde çalışırken bir kaç aydır php hatalarını alamıyorduk. Bu da hata yakalama konusunda çok büyük zaman kaybı yaşatıyordu bize. İşin garibi, hataları bazen alıyor bazen alamıyorduk. Aylardır süren bu duruma yeter artık diyerek dün [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mobilada.com" title="mobilada" alt="mobilada"><img width="119" height="20" src="http://www.mobilada.com/images/mobilada-logo.png" /></a >&#8216;da genellikle lamp yapısı kullanıyoruz. Tabii php ile ciddi anlamda gelistirme yaptığımız için bazı garipliklerle karşılaştığımız oluyor.</p>
<p>Bu garipliklerden biri yüzünden, <a href="http://www.bugunbugece.com/" title="bugunbugece" alt="bugunbugece">Bugunbugece</a > üzerinde çalışırken bir kaç aydır php hatalarını alamıyorduk. Bu da hata yakalama konusunda çok büyük zaman kaybı yaşatıyordu bize. İşin garibi, hataları bazen alıyor bazen alamıyorduk.</p>
<p>Aylardır süren bu duruma yeter artık diyerek dün ve bugün çok ciddi biçimde hata takibine giriştim. Açıkçası, sistem yöneticisi olmamın verdiği deneyim ile öncelikle geliştirme sunucumun ayarlarını tekrar tekrar kontrol ettim.</p>
<p><strong><em>display_errors on</em>, <em>error_reporting E_ALL, log_errors on, log_file</em></strong> atanmış olduğu halde, ne hatalar ekrana ne de loga gidiyordu. Bu noktadan sonra sorunun sunucu ayarlarında olmadığından emin olmak için <strong><em>php_info()</em></strong> ile php.ini&#8217;nin doğru yerden alındığını doğruladım. Hala bir sorun bulunmuyordu. <em><strong>.htaccess</strong></em> veya <em><strong>apache conf</strong></em> içinden de php ayarlarında bir değişiklik yapılmadığından emin olduktan sonra bu isin uygulamadan kaynaklandığına ikna oldum.</p>
<p>Sorunu uygulamada aramaya başlayınca ilk olarak kullandığımız alt yapı olan symfony uygulama ayarlarını kontrol etim. Ne elle yaptığımız bir <em><strong>error_reporting</strong></em> ayarı ne de Symfony&#8217;nin kaynak kodunda bir hatalı ayar bulamadım. Ne <em><strong>grep</strong></em> faydalı oldu ne de <em>gözlerim</em>.</p>
<p>Buraya kadar gelince artık hatayı tekrar edip nerede problemin olustuğunu bulmam gerektiğinde karar kıldım. Son yaptığım hatayı aynen yerine koydum. Evet beyaz sayfayı almayı başardım. Ama neden hiç bir hata çıkmıyordu? Hatanın olustuğu satırdan hemen önce ini_get_all ile tüm ayarları aldım.</p>
<p><em><strong>display_errors</strong></em>, global ve yerel ayarları doğru.<br />
<em><strong>error_logging</strong></em>, global ve yerel ayarları doğru.<br />
<em><strong>error_reporting</strong></em> global ayarı doğru ama yerel ayarı 0!!!! Ama nasıl olur? Ben uygulama ve symfony de hiç <em><strong>error_reporting</strong></em> kodu bulamadım??? Biraz geriye doğru <em><strong>error_reporting</strong></em> değeri takip etmeye başladım. viewler  ve layout içinde değer doğruydu.</p>
<p>Kısa süre içinde ilk ipucunu bulmayı başardım. İpucu 1, daha önce farketmediğimiz bir ayrıntı, hatayı <em><strong>view</strong></em> veya <em><strong>layout</strong></em> içinde yaparsak görebiliyoruz. Peki <em><strong>action</strong></em> içinde yaparsak? Evet görüyoruz.<em><strong> Model</strong></em> katmanında yaparsak? Bazen görüyor, bazen görmüyoruz??? En  sevdiğim türden hata.</p>
<p>Ardından ipucu 2 geldi, hata <em>model</em> katmanında veya <em><strong>modelleri</strong></em> init ettiğimiz bir noktada.</p>
<p>Burada uygulamızın kendine has bir özelliğinden bahsetmem doğru olacaktır. Uygulamamızda, <em><strong>action</strong></em>lar içinde kendine has <em><strong>model</strong></em>leri olan ve <em><strong>partial</strong></em> olarak isimlendirdiğimiz <em><strong>view</strong></em> öğeleri kullanıyoruz. Bu öğelerin nerede ne zaman kullanılacagını da db içerisinde saklıyoruz. Yani bu <em><strong>model</strong></em>leri dbye bakıp init eden ve <em><strong>action</strong></em>ların başında olan bir kod parçamız var. İşte sorun da bu kod parçasında init edilen <em><strong>model</strong></em>lerde ortaya çıkıyor. Ancak kod içinde <em><strong>error_reporting</strong></em> ayarı yapılmadığına göre bu değer <em><strong>model</strong></em> içinde nasıl bozulabilir?! İşte burada bizim pek kulanmadığımız hatta hiç sevmediğimiz bir php özelliği kullanılmış. Eski bir geliştiricimiz, bu modellerin init edildiği satırın başına bir <em><strong>&#8216;@&#8217;</strong></em> karakteri koymus!</p>
<p>Hemen svn blame yapalım,  11. ayın başında. Bu <em><strong>@</strong></em> karakteri kullanıldığı satırda <em><strong>error_reporting</strong></em> değerini 0 lıyor. Tabii bu satır içinde bir <em><strong>model</strong> <strong>init</strong></em> edildiği için, <em><strong>modelin</strong></em> yerel hata raporlama değeri 0 olarak kalıyor.</p>
<p>İşte bir <em><strong>@</strong></em> karakteri 5 geliştiricinin 4 ay boyunca hata takibi yapamamasina neden oldu..</p>
<p>Bir <em><strong>@</strong></em> diyip geçmeyin..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yalazi.org/2011/02/24/bir-karakterin-ettikleri/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Şehir Şehir Apache Log</title>
		<link>http://www.yalazi.org/2008/11/28/sehir-sehir-apache-log/</link>
		<comments>http://www.yalazi.org/2008/11/28/sehir-sehir-apache-log/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 11:48:37 +0000</pubDate>
		<dc:creator>Onur Yalazı</dc:creator>
				<category><![CDATA[Havadan Sudan]]></category>
		<category><![CDATA[öldür beni]]></category>
		<category><![CDATA[cityStatlite]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[maxmind]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[spyc]]></category>
		<category><![CDATA[yaml]]></category>

		<guid isPermaLink="false">http://www.yalazi.org/?p=189</guid>
		<description><![CDATA[Hiç sitenize gelen ziyaretçilerin illere göre dağılımını merak ettiniz mi? Eğer dışarıdan bir firmadan istatistik bilgisi almıyorsanız bu tür bilgileri bulmak çok zor olabiliyor. &#8216;de yaptığımız ve barındırdığımız &#8220;Öldür Beni&#8221; filminin sitesi için böyle bir istatistik edinmem gerekince MaxMind&#8216;ın ip veritabanlarını kullanarak çok basit bir istatistik yapabilirim diye düşündüm. Bunun için GeoLiteCity ikili dağıtımı, spyc, [...]]]></description>
			<content:encoded><![CDATA[<p>Hiç sitenize gelen ziyaretçilerin illere göre dağılımını merak ettiniz mi? Eğer dışarıdan bir firmadan istatistik bilgisi almıyorsanız bu tür bilgileri bulmak çok zor olabiliyor.</p>
<p><a style="margin:0;border:0;padding:0" title="Gen3" href="http://www.gen3.com.tr"><img class="alignnone" style="border: 0pt none; margin: 0px;" title="Gen3" src="http://www.gen3.com.tr/gen3_pixart.gif" alt="" width="41" height="17" /></a>&#8216;de yaptığımız ve barındırdığımız <a title="Öldür Beni Filmi" href="http://www.oldurbeni.com">&#8220;Öldür Beni&#8221; filminin sitesi</a> için böyle bir istatistik edinmem gerekince <a title="MaxMind" href="http://www.maxmind.com">MaxMind</a>&#8216;ın ip veritabanlarını kullanarak çok basit bir istatistik yapabilirim diye düşündüm. Bunun için <a title="GeoLiteCity" href="http://www.maxmind.com/app/geolitecity">GeoLiteCity</a> ikili dağıtımı, <a title="Spyc - A Simple Php YAML Class" href="http://spyc.sourceforge.net/">spyc</a>, <a title="Php - Pre Hypertext Processor" href="http://www.php.net">php</a> ve <a title="Pear::Net_GeoIP" href="http://pear.php.net/package/Net_GeoIP">pear:Net_GeoIP</a> yi kulladım ve <a href="http://www.yalazi.org/wp-content/uploads/2008/11/citystatlite.tar.gz">cityStatLite</a> ismini verdiğim programcığı hazırladım.</p>
<p>Şu an için apache loglarını ve sıkıştırılmış halerini inceleyerek, Hangi şehirden kaç istek ve hit gelmiş listesini çıkartıyor. Ayrıca birden fazla logu analiz edebiliyor. Sonuçları city.db.yaml.dump isimli dosyada YAML formatında sunuyor.</p>
<p>Unutmadan ekleyeyim Hitleri hesaplarken aynı ip den gelen istekleri log başına bir hit olarak değerlenriyor. Yani 2.bir log ile aynı ip gelirse 2.bir hit olarak değerlendiriliyor.</p>
<p><strong>SSS: </strong><br />
<em>Neden perl/ruby/haskell/python/ [istediğiniz bir programlama dilini ekleyebilirsiniz] dili ile yazmadın?</em><br />
PHP yi seviyorum. Ve büyük ihtimalle bahsettiğiniz dili bilmiyorum veya bilmek istemiyorum.</p>
<p><em>Bu işi zaten XYZ programı yapmıyor mu?</em><br />
Bilmem. Bilseydim belki bunu yazmazdım. Ya da yazardım. Bilmiyorum. Yeni bişeyler öğrenip denemeyi seviyorum. Sylar gibi kimseyi de öldürmem gerekmiyor..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yalazi.org/2008/11/28/sehir-sehir-apache-log/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

