<?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>Fatih Hayrioğlu&#039;nun not defteri &#187; Javascript</title>
	<atom:link href="http://www.fatihhayrioglu.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fatihhayrioglu.com</link>
	<description>{ CSS, HTML ve Javascript }</description>
	<lastBuildDate>Thu, 09 Feb 2012 08:44:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=2012</generator>
		<item>
		<title>Javascript’te “null” ve “undefined” farkı</title>
		<link>http://www.fatihhayrioglu.com/javascript%e2%80%99te-%e2%80%9cnull%e2%80%9d-ve-%e2%80%9cundefined%e2%80%9d-farki/</link>
		<comments>http://www.fatihhayrioglu.com/javascript%e2%80%99te-%e2%80%9cnull%e2%80%9d-ve-%e2%80%9cundefined%e2%80%9d-farki/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 12:19:58 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[boş]]></category>
		<category><![CDATA[null]]></category>
		<category><![CDATA[tanımsız]]></category>
		<category><![CDATA[typeof]]></category>
		<category><![CDATA[undefined]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=2249</guid>
		<description><![CDATA[Javascript diğer birçok dilden farklı olarak null ve undefined iki ayrı durum olarak kabul eder. null; boş değer anlamına gelen özel bir değerdir. typeof null bize nesne döndürür. undefined değişken bildirilmiş ama henüz değeri atanmamış demektir. Yukarıdaki örneklerde gördüğümüz gibi null özel bir nesne iken undefined tip olarak undefiend döndürür. Atanmamış değişkenlerin değeri javascript tarafında [...]]]></description>
			<content:encoded><![CDATA[<p>Javascript diğer birçok dilden farklı olarak <strong>null</strong> ve <strong>undefined</strong> iki ayrı durum olarak kabul eder.</p>
<p><strong>null;</strong> boş değer anlamına gelen özel bir değerdir. <strong>typeof null</strong> bize nesne döndürür.</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script&gt;
var testDegiskeni = null;
alert(testDegiskeni); //null
alert(typeof testDegiskeni); //object
&lt;/script&gt;
</pre>
<p><strong>undefined</strong> değişken bildirilmiş ama henüz değeri atanmamış demektir.</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script&gt;
var testDegiskeni;
alert(testDegiskeni); // undefined
alert(typeof testDegiskeni); //undefined
&lt;/script&gt;
</pre>
<p>Yukarıdaki örneklerde gördüğümüz gibi <strong>null</strong> özel bir nesne iken <strong>undefined</strong> tip olarak <strong>undefiend</strong> döndürür.</p>
<p>Atanmamış değişkenlerin değeri javascript tarafında otomatik olarak <strong>undefined</strong> olarak atanır.</p>
<p>Javascript asla <strong>null</strong> değeri atamaz. Eğer bir elemanın değeri <strong>null</strong> ise bu javascript tarafından değil, program tarafından atanmış demektir.</p>
<h3>undefined ve null kontrolü</h3>
<pre class="brush: jscript; title: ; notranslate">
if(typeof(test) !== 'undefined' &amp;&amp; test != null) {
    //test değişkenin kullanabiliriz
}
</pre>
<h3>Kaynak</h3>
<ul>
<li><a href="http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-javascript">http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-javascript</a></li>
<li><a href="http://snipplr.com/view.php?codeview&amp;id=14618">http://snipplr.com/view.php?codeview&amp;id=14618</a></li>
<li><a href="http://www.bloggingdeveloper.com/post/JavaScript-null-vs-undefined-The-Difference-between-null-and-undefined.aspx">http://www.bloggingdeveloper.com/post/JavaScript-null-vs-undefined-The-Difference-between-null-and-undefined.aspx</a></li>
<li><a href="http://www.joeyjavas.com/2007/04/25/javascript-difference-between-null-and-undefined/">http://www.joeyjavas.com/2007/04/25/javascript-difference-between-null-and-undefined/</a></li>
<li><a href="http://bonsaiden.github.com/JavaScript-Garden/#core.undefined">http://bonsaiden.github.com/JavaScript-Garden/#core.undefined</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/javascript%e2%80%99te-%e2%80%9cnull%e2%80%9d-ve-%e2%80%9cundefined%e2%80%9d-farki/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jquery 1.3.2 sürümünde check ve radio change olayı sorunu ve çözümü</title>
		<link>http://www.fatihhayrioglu.com/jquery-1-3-2-surumunde-check-ve-radio-change-olayi-sorunu-ve-cozumu/</link>
		<comments>http://www.fatihhayrioglu.com/jquery-1-3-2-surumunde-check-ve-radio-change-olayi-sorunu-ve-cozumu/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 17:48:07 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=2145</guid>
		<description><![CDATA[jQuery biz arayüz geliştiriciler için çok büyük bir yardımcı. Devamlı güncellenen jquery kütüphanesi bazı geniş çaplı sitelerde yeni sürüme geçmek o kadarda kolay olmuyor. Burada yaşadığımız sorun eski sürüm jquery kütüphanesinin bir problemine kütüphane güncellemeden çözüm üretmek olacak. Sorun şu; chackbox veya radio butonlara atanan change olayının işlememesi, daha doğrusu ilk tıklamada değil ikinci tıklamada [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery biz arayüz geliştiriciler için çok büyük bir yardımcı. Devamlı güncellenen jquery kütüphanesi bazı geniş çaplı sitelerde yeni sürüme geçmek o kadarda kolay olmuyor. Burada yaşadığımız sorun eski sürüm jquery kütüphanesinin bir problemine kütüphane güncellemeden çözüm üretmek olacak.</p>
<p>Sorun şu; chackbox veya radio butonlara atanan change olayının işlememesi, daha doğrusu ilk tıklamada değil ikinci tıklamada çalışması ve bu sorunun sadece Internet Explorer sürümlerinde(6,7,8) meydana gelmesi. </p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/fatihhayri/Y4n5j/1/embedded/"></iframe></p>
<p>Çözüm için yapmamız gerekn çok basit</p>
<pre class="brush: jscript; title: ; notranslate">
$(&quot;#fatih&quot;).click(function() { this.blur(); });
</pre>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/fatihhayri/zEBUg/embedded/"></iframe></p>
<p>Aslında yaptığımız input alanından focus’u kaldırmak oldu. Evet belki pek işinize yaramıyacak ama benim gibi çok arayan bir kişi buradan yararlansa yeter.</p>
<h3>Kaynak</h3>
<ul>
<li><a href="http://blog.megamon.com/tag/jquery/">http://blog.megamon.com/tag/jquery/<br />
</a></li>
<li><a href="http://jquery14.com/day-01/jquery-14">http://jquery14.com/day-01/jquery-14</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/jquery-1-3-2-surumunde-check-ve-radio-change-olayi-sorunu-ve-cozumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Googe Chrome 12 ile birlikte gelen güzel bir özellik(Built-in de-obfuscation)</title>
		<link>http://www.fatihhayrioglu.com/googe-chrome-12-ile-birlikte-gelen-guzel-bir-ozellikbuilt-in-de-obfuscation/</link>
		<comments>http://www.fatihhayrioglu.com/googe-chrome-12-ile-birlikte-gelen-guzel-bir-ozellikbuilt-in-de-obfuscation/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 17:31:46 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Haberler]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Built-in de-obfuscation]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[tarayıcı]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=2128</guid>
		<description><![CDATA[Javascript kodlarının daha hızlı yüklenmesi, dosya boyutunun azaltılması için ve kodları kopyala-yapıştır ile kolayca almak isteyenler engellemek için javascript kodlarını sıkıştırırız. Evet güzel bu özelliklerin her biri güzel ancak bir sorun olduğunda kodu göremiyoruz. Chrome yeni sürümünde güzel bir özellik getirmiş. “Sıkıştırmayı geri al” diye Türkçe’ye çevirebileceğim bir özellik ile tek tıkla kodu anlaşılabilir bir [...]]]></description>
			<content:encoded><![CDATA[<p>Javascript kodlarının daha hızlı yüklenmesi, dosya boyutunun azaltılması için ve kodları kopyala-yapıştır ile kolayca almak isteyenler engellemek için javascript kodlarını sıkıştırırız.</p>
<p>Evet güzel bu özelliklerin her biri güzel ancak bir sorun olduğunda kodu göremiyoruz. Chrome yeni sürümünde güzel bir özellik getirmiş. “Sıkıştırmayı geri al” diye Türkçe’ye çevirebileceğim bir özellik ile tek tıkla kodu anlaşılabilir bir hale getirebiliyoruz.</p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/de-obfuscation.gif"><img src="http://www.fatihhayrioglu.com/wp-content/de-obfuscation.gif" alt="" title="de-obfuscation" width="500" height="359" class="size-full wp-image-2129" /></a></p>
<p>Değişken isimlerini kısa göstermesi gibi küçük bir sorun dışında gayet başarılı bir özellik olmuş.</p>
<p>Yeni sürümlerde ikon olarak eklenmiş.</p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/chrome.gif"><img src="http://www.fatihhayrioglu.com/wp-content/chrome.gif" alt="" title="chrome" width="328" height="202" class="alignnone size-full wp-image-2345" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/googe-chrome-12-ile-birlikte-gelen-guzel-bir-ozellikbuilt-in-de-obfuscation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Jquery holdReady() fonksiyonu</title>
		<link>http://www.fatihhayrioglu.com/jquery-holdready-fonksiyonu/</link>
		<comments>http://www.fatihhayrioglu.com/jquery-holdready-fonksiyonu/#comments</comments>
		<pubDate>Tue, 10 May 2011 20:24:26 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[document.ready]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[holdReady()]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=2096</guid>
		<description><![CDATA[Jquery son sürümü 1.6 çıktı. Dokümanları incelerken gözüme holdReady() fonksiyonu takıldı. Jquery holdReady fonksiyonu document.ready olayını tutar veya devam etmesini sağlar. Boolean(true / false) tipi değer döndürür. true değeri dönerse document.redy olayını tutar, false değeri gelirse bırakır ve document.ready olayı gerçekleşir. document.ready olayı DOM yüklenir yüklenmez devreye girer. Ancak bazen öyle durumlar olur ki DOM&#8217;un [...]]]></description>
			<content:encoded><![CDATA[<p>Jquery son sürümü 1.6 çıktı. Dokümanları incelerken gözüme holdReady() fonksiyonu takıldı. </p>
<p>Jquery holdReady fonksiyonu document.ready olayını tutar veya devam etmesini sağlar. Boolean(true / false) tipi değer döndürür. true değeri dönerse document.redy olayını tutar, false değeri gelirse bırakır ve document.ready olayı gerçekleşir.</p>
<p>document.ready olayı DOM yüklenir yüklenmez devreye girer. Ancak bazen öyle durumlar olur ki DOM&rsquo;un yüklenmesini beklemeden yüklememiz gereken javascript dosyaları veya referans aldığımız eklenti dosyaları olur, bu gibi durumlarda araya girip bu dosyaları yükletmemiz gerekir ve sonra işleyişi devam ettirmemiz gerekir. İşte bu gibi durumlarda holdReady fonksiyonu kullanılabilir. </p>
<pre class="brush: jscript; title: ; notranslate">
$.holdReady(true); // biraz bekle
$.getScript(&quot;myplugin.js&quot;, function() { // dosyayi yukledik
     $.holdReady(false); // simdi sen isine donebilirsin
});
</pre>
<p>Bu metot &lt;head&gt; içinde document.ready olayından önce çağrılmalıdır. Eğer sonrasında çağrılırsa işlevsiz kalır. En iyi kullanım yeri jquery kütüphanesi eklendikten sonrasıdır. </p>
<p>Küçük bir örnek yapalım;</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Başlıksız Belge&lt;/title&gt;
&lt;script src=&quot;http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
$.holdReady(true); // durdur
$.getScript(&quot;deneme.js&quot;, function() { // yukle
	$(&quot;p&quot;).css(&quot;background-color&quot;, &quot;#f00&quot;);
     $.holdReady(false); // devam et
});

$(document).ready(function(e) {
    $(&quot;p&quot;).css(&quot;background-color&quot;, &quot;#9C6&quot;);
	alert(&quot;iki&quot;);
});
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;p&gt;Deneme.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Eklediğimiz deneme.js</p>
<pre class="brush: jscript; title: ; notranslate">
// ilk yüklenecek dosya
$(&quot;p&quot;).css(&quot;background-color&quot;, &quot;#ff0&quot;);
alert(&quot;bir&quot;);
</pre>
<p>Örneği görmek için <a href="http://www.fatihhayrioglu.com/dokumanlar/holdReady.html">tıklayınız.</a></p>
<p>Sayfa yükleme sırası; </p>
<p>1- DOM yani yukarıdaki sayfa &lt;p&gt;Deneme.&lt;/p&gt; ve deneme.js dosyası birlikte yorumlanacak. (bir)</p>
<p>2- Sonrasında yükleme sonrası işlemler yapılacak. (iki)</p>
<p>3- $.holdReady(false); sonrasında document.ready içerisindeki kod yorumlanacak. (üç)</p>
<p>Son olarak bir not: birden fazla holdReady kullanımı halinde document.ready olayı tüm holdReady fonksiyonlarının bırakılmasını bekler.</p>
<h3>Kaynaklar</h3>
<ul>
<li><a href="http://api.jquery.com/jQuery.holdReady/">http://api.jquery.com/jQuery.holdReady/</a></li>
<li><a href="http://jquerybyexample.blogspot.com/2011/05/jqueryholdready-new-in-jquery-16.html">http://jquerybyexample.blogspot.com/2011/05/jqueryholdready-new-in-jquery-16.html</a></li>
<li><a href="http://blogs.sitepoint.com/whats-new-in-jquery-16/">http://blogs.sitepoint.com/whats-new-in-jquery-16/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/jquery-holdready-fonksiyonu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>HTML Dokümanında Javascript Dosyalarını Nereye Koymalıyız?</title>
		<link>http://www.fatihhayrioglu.com/html-dokumaninda-javascript-dosyalarini-nereye-koymaliyiz/</link>
		<comments>http://www.fatihhayrioglu.com/html-dokumaninda-javascript-dosyalarini-nereye-koymaliyiz/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 22:09:58 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[defer]]></category>
		<category><![CDATA[hız]]></category>
		<category><![CDATA[javascript dosylarının yeri]]></category>
		<category><![CDATA[paralel yükleme]]></category>
		<category><![CDATA[performans]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=2074</guid>
		<description><![CDATA[Javascript’i web sitelerine eklemek Javascript dosyaları bir web sitesine iki şekilde eklenir. Birincisi satıriçi(inline), ikincisi ayrı bir javascript dosyası hazırlayıp harici olarak eklemek. İlk javascript’i Hakkı Öcal’ın javascript kitapçığından öğrenmeye başlamıştım. İlk örnek şöyle idi; Bu satıriçi kodlamaya örnek olarak verilebilir. Aynı kodu ayrı bir javascript dosyası olarak hazırlayıp .js uzantısı ile kaydedersek ve bunu [...]]]></description>
			<content:encoded><![CDATA[<h3>Javascript’i web sitelerine eklemek</h3>
<p>Javascript dosyaları bir web sitesine iki şekilde eklenir. Birincisi satıriçi(inline), ikincisi ayrı bir javascript dosyası hazırlayıp harici olarak eklemek.</p>
<p>İlk javascript’i Hakkı Öcal’ın javascript kitapçığından öğrenmeye başlamıştım. </p>
<p>İlk örnek şöyle idi;</p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Merhaba Dünya!&lt;/title&gt;
&lt;script&gt;
function merhaba() //merhaba isimli fonksiyonu deklare ediyoruz
{ //bu, fonksiyonun başlama işareti
alert (&quot;Merhaba Dünya!&quot;) //fonksiyonun komutu ve komutun gerektirdiği metin
} //bu fonksiyonun bitme işareti
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;b&gt;Merhaba Dünya&lt;/b&gt;&lt;br&gt;
&lt;form&gt;
&lt;button onclick=merhaba()&gt;TIKLAYINI!&lt;/button&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;html&gt;
</pre>
<p>Bu satıriçi kodlamaya örnek olarak verilebilir. </p>
<p>Aynı kodu ayrı bir javascript dosyası olarak hazırlayıp .js uzantısı ile kaydedersek ve bunu html dokümana eklersek buda harici bir javascript dosyası ekleme kısmına girer. </p>
<pre class="brush: jscript; title: ; notranslate">
function merhaba()
{
alert (&quot;Merhaba Dünya! Sene 2011&quot;)
}
</pre>
<p>Bu dosyayı merhaba.js olarak kaydedip, sonra</p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=windows-1254&quot;&gt;
&lt;title&gt;Merhaba Dünya!&lt;/title&gt;
&lt;script src=&quot;merhaba.js&quot;&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;bodyY&gt;
&lt;b&gt;Merhaba Dünya&lt;/b&gt;&lt;br&gt;
&lt;form&gt;
&lt;input type=&quot;submit&quot; name=&quot;button1&quot; value=&quot;TIKLAYIN!&quot; onclick=&quot;merhaba()&quot;&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Şeklinde HTML dokümanına ekleriz. </p>
<p>Yukarıda kullandığımız her iki yöntem ile de aynı sonucu alırız. Harici javascript dosyası ile eklemenin avantajları vardır;</p>
<ul>
<li>Bir dosya ile tüm sitedeki javascript dosyalarını idare ederiz ve güncellemeleri tek dosya ile daha kolay yaparız.</li>
<li>Sayfa daha hızlı yüklenir, tek dosya ön belleğe alınınca diğer sayfalarda tekrar tekrar yüklenmediği için sayfalar daha hızlı açılır. </li>
</ul>
<p>Javascript o günden bu yana daha fazla önem kazandı ve artık javascript kodumuzu en iyi hale getirmek için daha çok zaman harcıyoruz ve bize zaman kazandıracak her durumu inceleyip uyguluyoruz.</p>
<h3>HTML dokümanında javascript dosyasını nereye eklemeliyiz?</h3>
<p>Web sitelerinin en iyi hale getirmek için çeşitli araçlar ile sitemizi test ederiz. Bunlardan biri Firefox’ın <a href="https://addons.mozilla.org/en-us/firefox/addon/yslow/">YSlow </a>eklentisidir. YSlow eklentisi ile web sitemizi test ettiğimizde javascript dosyalarımızı html dokümanının sonuna eklememizi öneren bir başlık ile karşılaşırız, burada bu başlığı biraz inceleyeceğiz.</p>
<p>CSS dosyalarının &lt;head&gt; içine konmasının öneren YSlow Javascript dosyalarının HTML dokümanının sonuna(&lt;/body&gt;’nin hemen öncesine) konmasını öneriyor. Burada bir çelişki var gibi görünüyor. Buradaki mantık şudur; javascript blokları &lt;head&gt; içine konduğu zaman sayfa ilk açıldığında bu javascript blokları yüklenir ve işlenir. Javascript dosyası yüklenip, işlendikten sonra diğer sayfa üyeleri yüklenir. Javascript dosyası yüklenip işlenmesi bitene kadar sayfa boş bir sayfa olarak görünür, tabi buda istenen bir durum değildir. </p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Javascript yükleme yeri&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;script1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;script2.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;stil.css&quot;&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;İçerik Burada&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Sayfa başına konan javascript dosyalarının yüklenme zamanı aşağıdaki grafikte görüldüğü gibidir</p>
<p><img src="https://lh3.googleusercontent.com/gSZsDGo9nsWt4gD1hgKwiJo2FITV5oh_x706nZ2wKUapQWLl70O6P7NofpZvXVOTxIJKOW2GiPabJKNZVbHCIgcp3CAA9eE7kpdGnNKP0sYqp6EcmNc" alt="" width="400px;" height="217px;" /></p>
<p>Javascript dosyalarını html dokümanın sonuna koyunca sayfa öğeleri tamamen yüklenecek ve sonra javascript dosyaları yüklenecek ve işlenecektir. Böylece ziyaretçi sayfayı açtığı anda görsel öğeler yüklenecek ve ziyaretçi sayfa içeriğini görecektir ve sonra javascript yüklenecek ve işlenecektir. </p>
<p><strong>Paralel Yükleme </strong></p>
<p>Bir diğer problem ise javascript dosyaları paralel yüklemeyi bloklar. Paralel yükelemeyi şöyle açıklayabiliriz; web sitemiz yüklenirken her öğe tek tek yüklemek yerine iki ve daha fazla yükleme, yani paralel olarak yükleme yapabiliyoruz. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4">HTTP/1.1 şartnamesinde</a> her barındırma servisinden(hositng) iki paralel yüklemeye izin verir, buradan şunuda anlayabiliriz ki farklı barındırma servislerinden ikiden fazla yükleme yapabiliriz. Ancak script dosyaları yüklenirken pararlel yüklemeye izin vermez. Bu durumu göz önünde bulundurarak script dosyalarımızı dokümanın sonuna koyarak sayfamızın daha hızlı yüklenmesini sağlayabiliriz.</p>
<p><strong>Uygulanamayan Durumlar</strong></p>
<p>Bazı durumlarda script dosyasını dokümanın altına koymamız mümkün olmaz. Örneğin script içinde <strong>documen.write</strong> ile doküman içine bir şey eklememiz gerektiğinde. Ancak bu durumlar içinde bazı çözümlerin olduğu aklımızın bir köşesinde kalsın. </p>
<p><strong>defer Özelliği</strong></p>
<p>HTML4 ile birlikte &lt;script&gt; etiketi içine defer özelliği eklenmiştir. <strong>defer</strong> özelliği tanımlanmış script dosyaları hemen uygulanmayıp tüm sayfa yüklendikten sonra yüklenir ve çalıştırılır. Bu özelliği İnternet Explorer 4+ ve Firefox3.5+ desteklemektedir. </p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;script1.js&quot; defer&gt;&lt;/script&gt;
</pre>
<p>şeklinde kullanılır. Bu dosyayı html dokümanının istediğimiz yerine koyabiliriz. Tüm tarayıcıların desteklmemesi kullanımı konusunda bizi biraz düşündürüyor. </p>
<h3>Sonuç</h3>
<p>Sonuç olarak javascript dosyalarımızı html dokümanımız sonuna koymak web sitelerimizin daha hızlı açılmasını sağlayacak bir yöntemdir. </p>
<h3>Kaynak</h3>
<ul>
<li><a href="http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_5/">http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_5/</a></li>
<li><a href="http://stackoverflow.com/questions/143486/unobtrusive-javascript-script-at-the-top-or-the-bottom-of-the-html-code">http://stackoverflow.com/questions/143486/unobtrusive-javascript-script-at-the-top-or-the-bottom-of-the-html-code</a></li>
<li><a href="http://robertnyman.com/2008/04/23/where-to-include-javascript-files-in-a-document/">http://robertnyman.com/2008/04/23/where-to-include-javascript-files-in-a-document/</a></li>
<li><a href="http://blog.asp-software.org/advanced-website-optimization-making-your-site-faster/">http://blog.asp-software.org/advanced-website-optimization-making-your-site-faster/</a></li>
<li><a href="http://www.quirksmode.org/js/placejs.html">http://www.quirksmode.org/js/placejs.html</a></li>
<li><a href="http://www.stevesouders.com/blog/2008/12/27/coupling-async-scripts/">http://www.stevesouders.com/blog/2008/12/27/coupling-async-scripts/</a></li>
<li><a href="http://www.yuiblog.com/blog/2007/04/11/performance-research-part-4/">http://www.yuiblog.com/blog/2007/04/11/performance-research-part-4/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/html-dokumaninda-javascript-dosyalarini-nereye-koymaliyiz/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Jquery Geliştiricileri için Güzel Bir FireBug Eklentisi FireQuery</title>
		<link>http://www.fatihhayrioglu.com/jquery-gelistiricileri-icin-guzel-bir-firebug-eklentisi-firequery/</link>
		<comments>http://www.fatihhayrioglu.com/jquery-gelistiricileri-icin-guzel-bir-firebug-eklentisi-firequery/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 22:12:09 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=1987</guid>
		<description><![CDATA[Firefox&#8217;un eklentisi FireBug&#8217;ı bilmeyeniniz yoktur. FireBug öyle büyük bir eklenti ki onun üzerine kurulan birçok eklentiler var. Bu eklentide FireBug yeteneklerini geliştirmek için kullanılan bir eklenti. Bu eklenti jQuery ile kod yazarken çok işimize yarayacak. Bu eklenti sayesinde FireBug&#8217;ın CSS yeteneklerine yakın bir çözümü jQuery üzerinde sağlayacağız. FireBug bize CSS açısından belirlediğimiz nesneye uygulanan css [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fatihhayrioglu.com/wp-content/firequery-64.png"><img src="http://www.fatihhayrioglu.com/wp-content/firequery-64.png" alt="" title="firequery-64" width="64" height="64" class="alignright size-full wp-image-1996" /></a>Firefox&#8217;un eklentisi FireBug&#8217;ı bilmeyeniniz yoktur. FireBug öyle büyük bir eklenti ki onun üzerine kurulan birçok eklentiler var. Bu eklentide FireBug yeteneklerini geliştirmek için kullanılan bir eklenti. </p>
<p>Bu eklenti jQuery ile kod yazarken çok işimize yarayacak. Bu eklenti sayesinde FireBug&#8217;ın CSS yeteneklerine yakın bir çözümü jQuery üzerinde sağlayacağız. FireBug bize CSS açısından belirlediğimiz nesneye uygulanan css özelliklerini yakalama ve hangi css dosyasının hangi satırında olduğu gösterir. Benzer bir özelliği FireQuery bize sağlar.</p>
<p>Bu eklentide jQuery ile etkilediğimiz elemanlar hakkında benzer bir bilgi veriyor bize. Jquery ile etkilenen elemana hangi işlev ile etki yaptığımızı ve hangi fonksiyon ve kod ile etki ettiğimiz gösteriyor. </p>
<p>jQuery bulunmayan sayfalarda da jquery kütüphanesini ekliyor. Böylelikle her sitede FireBug özelliklerini jQuery yardımı ile kullanma imkanı sunuyor bize.</p>
<h3>jQuery Data verileri Gösterir</h3>
<p>Eklentiyi kurduktan sonra Firebug&#8217;ı açarız ve HTML sekmesine geliriz. Aşağıdaki bir pencere ile karşılaşırız. </p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/firequery11.gif"><img src="http://www.fatihhayrioglu.com/wp-content/firequery11.gif" alt="" title="firequery1" width="520" height="209" class="alignnone size-full wp-image-1999" /></a></p>
<p>jQuery data kullanarak web sitesine gömdüğümüz verileri gösterir bize. Bu durum dinamik olarak eklediğimiz jQuery verilerini kontrol ederken çok işimize yarar. </p>
<h3>Bir Elemana Atanmış Fonksiyonları Gösterir</h3>
<p>Test sayfasında h1 elemanına tanımlana aşağıdaki fonksiyon kodunu görüyoruz.</p>
<pre class="brush: jscript; title: ; notranslate">
$('h1').bind('click', function() {
$(this).css('background-color', '#fee');
});
</pre>
<p>Bu tanımı FireBug HTML sekmesinde FireQuery yardımı ile aşağıdaki gibi görürüz.</p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/firequery21.gif"><img src="http://www.fatihhayrioglu.com/wp-content/firequery21.gif" alt="" title="firequery2" width="466" height="18" class="alignnone size-full wp-image-2000" /></a></p>
<p>Bir elemana tanımlanmış fonksiyonları bulmaya yarar. Süper bir özelliktir bu. Tanımlana fonksiyon konsolda yukarıdaki gibi görünür.</p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/firequery41.gif"><img src="http://www.fatihhayrioglu.com/wp-content/firequery41.gif" alt="" title="firequery4" width="550" height="118" class="alignnone size-full wp-image-2001" /></a></p>
<p>function() üzerine geldiğimizde bu elemena atama yapılan kodu ve satır numarasını gösterir. Bu bizi birçok yükten kurtaran süper bir özelliktir. </p>
<h3>jQuery Olmayan Sitelere jQuery Ekleme Özelliği</h3>
<p>Bir sitede jQuery kütüphanesi olmasa da bu eklenti etkin olduğu tarayıcılarda jQuery eklenmiş gibi olur. Bu sayede site üzerinde jQuery kolaylıklarını uygular ve sonuçlarını görebiliriz. </p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/firequery51.gif"><img src="http://www.fatihhayrioglu.com/wp-content/firequery51.gif" alt="" title="firequery5" width="520" height="205" class="alignnone size-full wp-image-2002" /></a></p>
<p>Bu sayede Konsolda jQuery kolaylıklarını kullanarak jquery eklenmemiş olsa da bu sitede jQuery varmış gibi rahat kod yazabiliriz.</p>
<p>Bu eklentiyi bana gösteren Orhan Ekici&#8217;ye ve ona gösteren Volkan Özçelik&#8217;e teşekkürler. </p>
<p>FireBug büyüksün.</p>
<h3>Kaynaklar</h3>
<ul>
<li><a href="http://firequery.binaryage.com/">http://firequery.binaryage.com/</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/12632/">https://addons.mozilla.org/en-US/firefox/addon/12632/</a></li>
<li><a href="http://elijahmanor.com/webdevdotnet/post/digging-into-the-firequery-add-on-for-jquery.aspx">http://elijahmanor.com/webdevdotnet/post/digging-into-the-firequery-add-on-for-jquery.aspx</a></li>
<li><a href="http://www.pgs-soft.com/firequery-firebug-extension-for-jquery-development.html">http://www.pgs-soft.com/firequery-firebug-extension-for-jquery-development.html</a></li>
<li><a href="http://javascriptly.com/2009/12/firequery-an-introduction/">http://javascriptly.com/2009/12/firequery-an-introduction/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/jquery-gelistiricileri-icin-guzel-bir-firebug-eklentisi-firequery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jquery ipuçları &#8211; 4</title>
		<link>http://www.fatihhayrioglu.com/jquery-ipuclari-4/</link>
		<comments>http://www.fatihhayrioglu.com/jquery-ipuclari-4/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 21:04:05 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[closest()]]></category>
		<category><![CDATA[console.log]]></category>
		<category><![CDATA[delay()]]></category>
		<category><![CDATA[has()]]></category>
		<category><![CDATA[next()]]></category>
		<category><![CDATA[parent()]]></category>
		<category><![CDATA[parents()]]></category>
		<category><![CDATA[prev()]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=1924</guid>
		<description><![CDATA[Jquery ipuçları &#8211; 1 Jquery ipuçları &#8211; 2 Jquery ipuçları &#8211; 3 1 &#8211; Mümkünse Class yerine Id kullanmayı tercih edin jQuery ile kod yazarken bize çok büyük kolaylıklar kazandırır. Bunlardan bir tanesi elemana atanmış sınıfı yardımı ile kolayca seçebilme özelliğidir, ancak burada şöyle bir durum söz konusudur; jquery id ile atanmış elemanları normal javascriptteki [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fatihhayrioglu.com/jquery-ipuclari/">Jquery ipuçları &#8211; 1</a><br />
  <a href="http://www.fatihhayrioglu.com/jquery-ipuclari-2/">Jquery ipuçları &#8211; 2</a><br />
<a href="http://www.fatihhayrioglu.com/jquery-ipuclari-3/">Jquery ipuçları &#8211; 3</a></p>
<h3><strong>1 &#8211; Mümkünse Class yerine Id kullanmayı tercih edin</strong></h3>
<p>jQuery   ile kod yazarken bize çok büyük kolaylıklar kazandırır. Bunlardan bir   tanesi elemana atanmış sınıfı yardımı ile kolayca seçebilme özelliğidir,   ancak burada şöyle bir durum söz konusudur; jquery id ile atanmış   elemanları normal javascriptteki gibi <strong>getElementById</strong> ile yakaladığı için daha hızlı çalışırken normal olarak sınıf ile yakalamalarda daha yavaş çalışacaktır. </p>
<p>Bu   nedenle mümkün olduğunca seçicilerde id kullanmaya dikkat edilmelidir.   Tabi bazı durumlarda sınıf kullanmak zorunda kalabiliriz o başka. </p>
<div ><img src="https://docs.google.com/File?id=dhctmbn6_475gb79fp54_b" alt="" /><br />
  <strong>kaynak:</strong> net.tutsplus.com
</div>
<h3><strong>2 &#8211; next() ve prev() kullanımı </strong></h3>
<p>Bu   özelliklerin kullanımı bazen can kurtarıyor ancak kullanırken dikkat   etmek lazım, bazende sorunlara yol açabiliyor. Sonradan eklediğiniz bir   eleman sizin next ve prev kabullerinizi mahvedebiliyor</p>
<p><strong>next()</strong> : next fonksiyonu bir sonraki elemanı yakalar. Sadece sonraki elemanı yakalar alt elemanlarını yakalamaz. </p>
<p>next   fonksiyonu filtreleme özelliği vardır, yani next(&#8216;li.secili&#8217;) tanımı   ile en yakın bir sonraki secili sınıfı tanımlı li elemanını   yakalayabiliriz.</p>
<p>Bir örnek verelim.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ul&gt;
    &lt;li&gt;Adana&lt;/li&gt;
    &lt;li&gt;Ankara&lt;/li&gt;
    &lt;li class=&quot;secili&quot;&gt;İstanbul&lt;/li&gt;
    &lt;li&gt;İzmir&lt;/li&gt;
    &lt;li&gt;Trabzon&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Şeklindeki bir html kodundan</p>
<pre class="brush: jscript; title: ; notranslate">
$('li.secili').next().css('border-bottom', '1px solid #999');
</pre>
<p>next() fonksiyonu yardımı ile bir sonraki elemanı yakalayabiliriz.</p>
<p><strong>prev() :</strong> prev fonksiyonu bir önceki elemanı yakalar. Sadece önceki elemanı yakalar alt elemanlarını yakalamaz.</p>
<p>prev   fonksiyonu filtreleme özelliği vardır, yani prev(&#8216;li.secili&#8217;) tanımı   ile en yakın bir onceki secili sınıfı tanımlı li elemanını   yakalayabiliriz.</p>
<p>Bir örnek verelim.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ul&gt;
    &lt;li&gt;Adana&lt;/li&gt;
    &lt;li&gt;Ankara&lt;/li&gt;
    &lt;li class=&quot;secili&quot;&gt;İstanbul&lt;/li&gt;
    &lt;li&gt;İzmir&lt;/li&gt;
    &lt;li&gt;Trabzon&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Şeklindeki bir html kodundan</p>
<pre class="brush: jscript; title: ; notranslate">
$('li.secili').prev().css('border-bottom', '1px solid #999');
</pre>
<p>prev() fonksiyonu yardımı ile bir önceki elemanı yakalayabiliriz.
</p>
<h3><strong>3 &#8211; Üst Eleman Bulma &#8211; parent(), parents() ve closest()</strong></h3>
<p><strong>parent()</strong></p>
<p>Bir üst elemanı bulma. Geriye bir adet üst eleman döndürür. </p>
<pre class="brush: jscript; title: ; notranslate">
    $('td.secili').parent().css('border-bottom', '#999');
    $('div').parent('.large').css('font-size', '14px');
</pre>
<p>İlk kod üst elemanı yakalarken, ikinci satırda ise seçme işlemini biraz daha daraltarak .large sınıfı tanımlı olan üst  elmanı yakala diyoruz.</p>
<p><strong>parents()</strong></p>
<p>Belirlenen elemanın tüm üst elemanlarını bulmaya yarar.</p>
<pre class="brush: jscript; title: ; notranslate">
    $('li').parents().css('background-color', 'red');
    $('li').parents(&amp;quot;ul&amp;quot;).css('background-color', 'red');
</pre>
<p>İlk satır li&#8217;nin tüm üst elemanlarını yakalarken, ikinci satır li&#8217;nin tüm <strong>ul</strong> etiketli üst elemanlarını yakalar.</p>
<p><strong>closest()</strong></p>
<p>En yakın üst elemanı bulmak içindir. </p>
<pre class="brush: jscript; title: ; notranslate">
  $(document).ready(function()
    {
    $('li.urunler').closest('ul').css('background-color', 'red');
  });
</pre>
<p>HTML</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ul&gt;
    &lt;li&gt;Üst Menü
        &lt;ul&gt;
        &lt;li class=&quot;urunler&quot;&gt;Ürün 1&lt;/li&gt;
        &lt;li class=&quot;urunler&quot;&gt;Ürün 2&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>İçiçe girmiş birçok listede yukarıdaki tanım &#8216;urunler&#8217; sınıfı tanımlanmış öğenin ilk üst ul elemanını yakalamamıza yardım eder.</p>
<h3><strong>4 &#8211; Firebug ve console.log ile kodumuzu izlemek</strong></h3>
<p>Firebug&#8217;ın çalışma hayatımızdaki yerini biliyoruz. jquery ile hata yakalama amacı ile console.log kullanıyoruz. Daha önceleri javascript ile kod yazarken alert fonksiyonun çok kullanırdım. Şimdi aynı işi <strong>console.log</strong> yapıyor ancak popup çıkarıp bizi rahatsız etmiyor.</p>
<pre class="brush: jscript; title: ; notranslate">
  var count = 0;
    while(count &lt; 1000) {
    count++;
    console.log(count);
    setTimeout(&quot;takistHesapla&quot;;, 1000);
  }
</pre>
<p>yazın ve Firebug&#8217;ın console sekmesine bakın. Bu kod Chrome&#8217;da da çalışıyor. </p>
<p>Örneği görmek için <a href="http://www.fatihhayrioglu.com/dokumanlar/console_log.html">tıklayınız.</a> Tabi <strong>takistHesapla </strong>diye bieşy bulamadım diye size bin tane hata verecek oda gayet normal.</p>
<p>Bir uyarı işinizi yayına atarken bu satırı silin yoksa ie&#8217;de hata verir. </p>
<h3><strong>5 &#8211; Animasyon ve Efektleri Geciktirme (delay)</strong></h3>
<p>jQuery   1.4 ile birlikte gelen yeni bir özellik olan delay() animasyonlarımıza   belli bir süre ara vermemizi sağlat, daha önceleri bu işi yapmak için   setTimeout metodunu kullanıyorduk. </p>
<pre class="brush: jscript; title: ; notranslate">
$(&quot;div&quot;).fadeIn().delay(4000).fadeOut();
</pre>
<p>Örneği görmek için <a href="http://www.fatihhayrioglu.com/dokumanlar/delay_metodu.html">tıklayınız.</a></p>
<p>seçtiğimiz katmana fadeIn efekti ver ve sonra 4000 milisaniye bekle ve sonra fadeOut efekti ver diyoruz.</p>
<h3><strong>6 &#8211; has() Metodu</strong></h3>
<p>jQuery 1.4 ile birlikte gelen bir başka yeni özellik <strong>has()</strong> metodudur. Daha önceki sürümlerde :has seçicisi vardı, şimdi <strong>has()</strong> metodu ile daha kolay yakalama işi yapabileceğiz. </p>
<pre class="brush: xml; title: ; notranslate">
&lt;ul&gt;
&lt;li&gt;list item 1&lt;/li&gt;
&lt;li&gt;list item 2
    &lt;ul&gt;
    &lt;li&gt;list item 2-a&lt;/li&gt;
    &lt;li&gt;list item 2-b&lt;/li&gt;
    &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;list item 3&lt;/li&gt;
&lt;li&gt;list item 4&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Yukarıdaki kodda alt menüsü olan li elemanını yakalamak için bu metodu kullanabiliriz.</p>
<pre class="brush: jscript; title: ; notranslate">
$('li').has('ul').css('background-color', 'red');
</pre>
<p>Örneği görmek için <a href="http://www.fatihhayrioglu.com/dokumanlar/has_metodu.html">tıklayınız.</a></p>
<p>Şeklinde altında ul etiketi olan li&#8217;leri ki burada bir tane var oda <strong>list item 2</strong> içeriğine sahip olandır.</p>
<h3>Kaynaklar</h3>
<ul>
<li><a href="http://www.tripwiremagazine.com/2009/10/jquery-and-general-javascript-tips-to-improve-your-code.html"  title="http://www.tripwiremagazine.com/2009/10/jquery-and-general-javascript-tips-to-improve-your-code.html">http://www.tripwiremagazine.com/2009/10/jquery-and-general-javascript-tips-to-improve-your-code.html</a></li>
<li><a href="http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx"  title="http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx">http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx</a></li>
<li><a href="http://webdevmania.com/archive/top_10_jquery_snippets_including_jquery_1.4/"  title="http://webdevmania.com/archive/top_10_jquery_snippets_including_jquery_1.4/">http://webdevmania.com/archive/top_10_jquery_snippets_including_jquery_1.4/</a></li>
<li><a href="http://addyosmani.com/blog/31-jquery-snippets/"  title="http://addyosmani.com/blog/31-jquery-snippets/">http://addyosmani.com/blog/31-jquery-snippets/</a></li>
<li><a href="http://www.smashingmagazine.com/2010/08/04/commonly-confused-bits-of-jquery/"  title="http://www.smashingmagazine.com/2010/08/04/commonly-confused-bits-of-jquery/">http://www.smashingmagazine.com/2010/08/04/commonly-confused-bits-of-jquery/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/jquery-ipuclari-4/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Önden Resimleri(Preloading images) Yükleme Yöntemleri</title>
		<link>http://www.fatihhayrioglu.com/onden-resimleripreloading-images-yukleme-yontemleri/</link>
		<comments>http://www.fatihhayrioglu.com/onden-resimleripreloading-images-yukleme-yontemleri/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 20:44:19 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[önyükleme]]></category>
		<category><![CDATA[performans]]></category>
		<category><![CDATA[resim]]></category>
		<category><![CDATA[web site hızlandırma]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=1822</guid>
		<description><![CDATA[Web sitelerimizi hızlandırmak için çeşitli yöntemler ve metotlar deneriz. Amacımız kullanıcıya daha hızlı cevap vermektir. Bunlardan bir tanesi önden resimleri kullanıcı bilgisayarına yükletip sonra açılacak sayfaların hızlı açılmasını sağlamak gibi bir amacımız olduğu durumlardır. Rollover resimleri, araç ipucu(tooltip), background resimleri vb. resimleri önceden yükletmek bize hem sayfa ilk açıldığında kötü görüntüyü engellememizi sağlar hemde kullanıcıya [...]]]></description>
			<content:encoded><![CDATA[<p>Web sitelerimizi hızlandırmak için çeşitli yöntemler ve metotlar deneriz. Amacımız kullanıcıya daha hızlı cevap vermektir. Bunlardan bir tanesi önden resimleri kullanıcı bilgisayarına yükletip sonra açılacak sayfaların hızlı açılmasını sağlamak gibi bir amacımız olduğu durumlardır. Rollover resimleri, araç ipucu(tooltip), background resimleri vb. resimleri önceden yükletmek bize hem sayfa ilk açıldığında kötü görüntüyü engellememizi sağlar hemde kullanıcıya daha sonraki tercihlerinde daha hızlı cevap vermemizi sağlar.</p>
<p>Ben genelde daha önce kullanmadığım metotları kullanmadan önce bir araştırma yaparım ve sonuçta bana göre iyi olan yöntemi uygularım. Web ajanslarında çalışırken bu araştırmayı kısa tutmam gerekirken tek bir proje geliştirirken bu iş için daha uzun zamanımız oluyor. </p>
<p>Bu işi çin CSS, javascript ve ajax ile çözümler mevcut. </p>
<p>Ben bu yöntemlerden javascript yöntemi ile yapmayı tercih ettim. Diğer yöntemler hakkında genel bir bilgi verip geçeceğim. </p>
<p><strong>CSS Yöntemleri</strong></p>
<p>CSS Sprite yöntemide bu kategoriye girer. </p>
<p>CSS yöntemleri genelde sayfa içine konulan resimlerin tarayıcı görüntüsünden kaçırılması ile yapılan yöntemlerdir ki işin bu kısmı benim hoşuma gitmiyor. </p>
<p>CSS ile bu işi yapan bir örnek verelim. </p>
<pre class="brush: css; title: ; notranslate">
div#preloaded-images {
   position: absolute;
   overflow: hidden;
   left: -9999px;
   top: -9999px;
   height: 1px;
   width: 1px;
}
</pre>
<p>HTML kodu</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;preloaded-images&quot;&gt;
 &lt;img src=&quot;http://deneme.com/image-01.png&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;Image 01&quot; /&gt;
 &lt;img src=&quot;http://deneme.com/image-02.png&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;Image 02&quot; /&gt;
 &lt;img src=&quot;http://deneme.com/image-03.png&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;Image 03&quot; /&gt;
&lt;/div&gt;
</pre>
<p>Yukarıda görüldüğü gibi html içine eklenen resimler CSS yardımı ile kullanıcının göremeyeceği bölgelere itilmiştir. Bu şekilde bir çözüm üretilmiştir.</p>
<p><strong>Javascript Yöntemleri</strong></p>
<p>Javascript ile yapılan yöntemlerin genel yapısı bir sıraya sokulan resimler dinamik olarak doküman içine eklenir. </p>
<p>Javascript ile bu işlemi yapan çeşitli kodlar var. Benim uyguladığım ise aşağıdaki koddur. Bu kodun diğerlerine göre avantajı yükleme yaptığımız sayfanın yüklenmesi bittikten sonra bizim önden yükleme yaptığımız resimleri yüklemesidir. </p>
<pre class="brush: jscript; title: ; notranslate">
function preloader() {
  if (document.images) {
    var img1 = new Image();
    var img2 = new Image();
    var img3 = new Image();

    img1.src = &quot;http://domain.tld/path/to/image-001.gif&quot;;
    img2.src = &quot;http://domain.tld/path/to/image-002.gif&quot;;
    img3.src = &quot;http://domain.tld/path/to/image-003.gif&quot;;
  }
}
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
    if (oldonload) {
      oldonload();
    }
    func();
    }
  }
}
addLoadEvent(preloader);
</pre>
<p>Yukarıdaki javascript kodu işimizi görecektir. </p>
<p>jQuery ile daha kısa ve basit bir kod ile bu işi yapabiliriz.</p>
<pre class="brush: jscript; title: ; notranslate">
// resim onyükleme fonksiyonu
 jQuery.preloadImages = function()
 {
   for(var i = 0; i&lt;arguments.length; i++)
   {
   jQuery(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;, arguments[i]);
   }
 };

// yükleme yap
 $.preloadImages(&quot;images/dexter.jpg&quot;, &quot;images/saydam_ardalan1.gif&quot;, &quot;images/ornek_sayfa.jpg&quot;);
</pre>
<p><a href="http://www.fatihhayrioglu.com/wp-content/resim_on_yukleme_jquery.gif"><img src="http://www.fatihhayrioglu.com/wp-content/resim_on_yukleme_jquery-300x195.gif" alt="" title="resim_on_yukleme_jquery" width="300" height="195" class="alignnone size-medium wp-image-1824" /></a></p>
<p>Yukarıdaki kodu yazınca yükleme yaptığımız sayfadaki öğeler yüklenirken yükleme yaptığımız resimlerde yüklenir. Bu benim istediğim bir durum değildir. Bence yükleme yapılacak sayfanın öğeleri yüklendikten sonra yüklenecek resimler yüklenmelidir. Kullanıcı ilk önce mevcut sayfayı tam görmelidir, sonra kullanıcıya göstermeden diğer sayfa resimlerini yüklemeliyiz.</p>
<p>Bunun için kodumuzu aşağıdaki değiştirmeliyiz.</p>
<pre class="brush: jscript; title: ; notranslate">
 $(document).ready(function() {
 $(window).bind('load', function()
 {

   // resim onyükleme fonksiyonu
   jQuery.preloadImages = function()
   {
   for(var i = 0; i&lt;arguments.length; i++)
   {
     jQuery(&quot;&lt;img&gt;&quot;).attr(&quot;src&quot;, arguments[i]);
   }
   };

   // yükleme yap
   $.preloadImages(&quot;images/dexter.jpg&quot;, &quot;images/saydam_ardalan1.gif&quot;, &quot;images/ornek_sayfa.jpg&quot;);

 });
});
</pre>
<p>Eklediğimiz sadece $(window).bind(&lsquo;load&rsquo; function()) kısmıdır. Burada sayfa yüklendikten sonra bu işlemi yap diyoruz.</p>
<p>Örneği görmek için <a href="http://fatihhayrioglu.com/dokumanlar/onyukleme.html">tıklayınız.</a> </p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/resim_on_yukleme_jquery2.gif"><img src="http://www.fatihhayrioglu.com/wp-content/resim_on_yukleme_jquery2-300x194.gif" alt="" title="resim_on_yukleme_jquery2" width="300" height="194" class="alignnone size-medium wp-image-1825" /></a></p>
<p>Örneklerde dikkatiniz bir yere çekmek istiyorum. Firebug Net sekmesini açtım çünkü sayfa yüklenmesi anını görmenizi istedim. İlk resimde sayfa yüklenirken sonradan görüntüleyeceğimiz resimleride içeren bir durum söz konusu idi. Dikkat ederseniz ilk reismde dikey kırmızı çizgi en sondadır. İkinci resimde ise kırmızı dikey çizgi sayfa öğelerini sonuncusu olan resimden sonra çizilmiştir, daha sonra yükleme yapılan resimler yüklenmiştir.</p>
<h3>Sonuç</h3>
<p>Ben küçük bir araştırma sonucunda bu kodu kullanmayı uygun buldum. Bulduğum bu kodun kendimce gerekçelerini yukarıda açıklamaya çalıştım, eğer sizlerin daha iyi çözümleri ve önerileri varsa yorum kısmında bizlerle paylaşırsanız sevinirim.</p>
<p>Kalın sağlıacakla</p>
<h3>Kaynaklar</h3>
<ul>
<li><a href="http://perishablepress.com/press/2009/12/28/3-ways-preload-images-css-javascript-ajax/">http://perishablepress.com/press/2009/12/28/3-ways-preload-images-css-javascript-ajax/</a></li>
<li><a href="http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript">http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript</a></li>
<li><a href="http://elouai.com/javascript-preload-images.php">http://elouai.com/javascript-preload-images.php</a></li>
<li><a href="http://www.javascriptkit.com/script/script2/preloadimage.shtml">http://www.javascriptkit.com/script/script2/preloadimage.shtml</a></li>
<li><a href="http://stackoverflow.com/questions/761263/what-is-the-best-way-to-preload-multiple-images-in-javascript/761332">http://stackoverflow.com/questions/761263/what-is-the-best-way-to-preload-multiple-images-in-javascript/761332</a></li>
<li><a href="http://www.filamentgroup.com/lab/update_automatically_preload_images_from_css_with_jquery/">http://www.filamentgroup.com/lab/update_automatically_preload_images_from_css_with_jquery/</a></li>
<li><a href="http://snipplr.com/view.php?codeview&amp;id=9612">http://snipplr.com/view.php?codeview&amp;id=9612</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/onden-resimleripreloading-images-yukleme-yontemleri/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>jQuery ipuçları &#8211; 3</title>
		<link>http://www.fatihhayrioglu.com/jquery-ipuclari-3/</link>
		<comments>http://www.fatihhayrioglu.com/jquery-ipuclari-3/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 22:10:35 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[ipuçları]]></category>
		<category><![CDATA[live()]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[size()]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=1785</guid>
		<description><![CDATA[Jquery ipuçları &#8211; 1 Jquery ipuçları &#8211; 2 jQuery ipuçlarını yayınlamaya devam ediyorum. 1- Dinamik oluşturulan elementlere live() ile olay atama Sayfaya dinamik olarak eklenen içeriklerde veya ajax ile doldurduğumuz içeriklerdeki elemanlara bir olay atadığımızda(click, mouseover vd.) çalışmayacaktır. jQuery geliştiricileri bunun için live() fonksiyonunu geliştirmiş. 2 &#8211; Tarayıcı Penceresinin Boyutlarını Değişmesini Yakalamak Belki ara sıra [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fatihhayrioglu.com/jquery-ipuclari/">Jquery ipuçları &#8211; 1</a><br />
  <a href="http://www.fatihhayrioglu.com/jquery-ipuclari-2/">Jquery ipuçları &#8211; 2</a></p>
<p>jQuery ipuçlarını yayınlamaya devam ediyorum. </p>
<h3>1- Dinamik oluşturulan elementlere live() ile olay atama</h3>
<p>Sayfaya dinamik olarak eklenen içeriklerde veya ajax ile doldurduğumuz içeriklerdeki elemanlara bir olay atadığımızda(click, mouseover vd.) çalışmayacaktır. jQuery geliştiricileri bunun için live() fonksiyonunu geliştirmiş.</p>
<pre class="brush: jscript; title: ; notranslate">
$('a.acilSusam').live('mouseover', function() {
 // yapilacak islemler
});
</pre>
<h3>2 &#8211; Tarayıcı Penceresinin Boyutlarını Değişmesini Yakalamak</h3>
<p>Belki ara sıra lazım olacak bir kod ama bazen gerekiyor işte. Pencere boyutu her değiştiğine bazı işlemleri yapmak sistemimizi yorabilir diye setTimeout yardımı ile belli aralıklarla bunu yaptırıyoruz.</p>
<pre class="brush: jscript; title: ; notranslate">
function pencereBoyutuDegisti() {
	alert(&quot;Değişti&quot;);
};

var resizeTimer = null;
$(window).bind('resize', function() {
    if (resizeTimer) clearTimeout(resizeTimer);
    resizeTimer = setTimeout(pencereBoyutuDegisti, 100);
});
</pre>
<h3>3  &#8211; Element miktarını bulmak</h3>
<p>Bir dokümanda seçilen elemandan kaç adet olduğu bulmak için;</p>
<pre class="brush: jscript; title: ; notranslate">
	$('element').size();
</pre>
<h3>4 &#8211; Bir elemanın index değerini bulmak</h3>
<p>index değerini bulmanın farklı bir yolu </p>
<pre class="brush: jscript; title: ; notranslate">
$(&quot;ul &gt; li&quot;).click(function () {
	var index = $(this).prevAll().length;
});
</pre>
<h3>5- Bir elemanın görünür olup olmadığını yakalamak</h3>
<pre class="brush: jscript; title: ; notranslate">
if($(&quot;.eleman&quot;).is(&quot;:visible&quot;)) {
    alert('Burda');
}
</pre>
<h3>6- Kaç tane alt elemanı(çocuk elemanı) var</h3>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;foo&quot;&gt;
&lt;div id=&quot;bar&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;baz&quot;&gt;
&lt;div id=&quot;biz&quot;&gt;
&lt;/div&gt;
&lt;span&gt;&lt;span&gt;
&lt;/div&gt;

//kac tane alt elemanı oldugunu bulmak icin
$(&quot;#foo &gt; div&quot;).length
</pre>
<h3>7- jQuery Kopya Kağıdı(Cheat Sheet)</h3>
<p>jQuery&#8217;nini bir çok özelliği var ve bunları aklımızda tutma imkanımız yok. Bir kopya kağıdı işimize yaraya bilir. </p>
<p><a href="http://www.futurecolors.ru/jquery/">http://www.futurecolors.ru/jquery/</a></p>
<p>Burada son sürümün kopya kağıdı mevcut. Bende css3 özelliklerini kullanarak biraz renklendirdim. <a href="http://fatihhayrioglu.com/dokumanlar/jQuery14.htm">Benim renklendirdiğim</a>(CSS3 içerir, herisi göremez)</p>
<h3>8 &#8211; Select Elemanı ipuçları</h3>
<pre class="brush: jscript; title: ; notranslate">
// secili olan ögenin metnini almak
$(&quot;#myselect option:selected&quot;).text();

// secili olan ögenin degerini almak icin
$(&quot;#myselect option:selected&quot;).val();

// secili ogenin index degeri
$(&quot;#myselect option&quot;).index($(&quot;#myselect option:selected&quot;));

// indeksi 2 olan ögeyi seçili hale getirmek
$(&quot;#myselect option:eq(2)&quot;).attr(&quot;selected&quot;, &quot;selected&quot;);
</pre>
<h3>Kaynaklar</h3>
<ul>
<li><a href="http://blog.kenmoredesign.com/2009/02/02/useful-jquery-snippets/">http://blog.kenmoredesign.com/2009/02/02/useful-jquery-snippets/</a></li>
<li><a href="http://tympanus.net/codrops/2010/01/07/some-useful-javascript-jquery-snippets-part-2/">http://tympanus.net/codrops/2010/01/07/some-useful-javascript-jquery-snippets-part-2/</a>
</li>
<li><a href="http://www.catswhocode.com/blog/10-jquery-snippets-for-efficient-developers">http://www.catswhocode.com/blog/10-jquery-snippets-for-efficient-developers</a></li>
<li><a href="http://tympanus.net/codrops/2010/01/08/some-useful-javascript-jquery-snippets-part-3/">http://tympanus.net/codrops/2010/01/08/some-useful-javascript-jquery-snippets-part-3/</a></li>
<li><a href="http://www.opensourcehunter.com/2010/02/27/26-cool-and-usefull-jquery-tips-tricks-solutions/">http://www.opensourcehunter.com/2010/02/27/26-cool-and-usefull-jquery-tips-tricks-solutions/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/jquery-ipuclari-3/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>FireBug Net Sekmesi ve Kullanımı</title>
		<link>http://www.fatihhayrioglu.com/firebug-net-sekmesi-ve-kullanimi/</link>
		<comments>http://www.fatihhayrioglu.com/firebug-net-sekmesi-ve-kullanimi/#comments</comments>
		<pubDate>Wed, 26 May 2010 21:36:01 +0000</pubDate>
		<dc:creator>fatih.hayrioglu</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[net sekmesi]]></category>
		<category><![CDATA[page speed]]></category>
		<category><![CDATA[YSlow]]></category>

		<guid isPermaLink="false">http://www.fatihhayrioglu.com/?p=1737</guid>
		<description><![CDATA[FireBug hakkında elle tutulur bir bilgi olmadığı için bu makaleyi yazmaya karar verdim. Bu yazımda FireBug Net paneli hakkında olacaktır. FireBug geliştirme ile alakalı bir makale değildir. Özellikleri hakkında genel bir bilgi içerecektir. Web sayfalarının kodlarken bir çok yönünü düşünerek kodlarız. Erişebilirliği, esneklik, farklı tarayıcılara uyumlu olması, performans bunlardan ilk aklımıza gelenler. En önemlilerinden biri [...]]]></description>
			<content:encoded><![CDATA[<p>FireBug hakkında elle tutulur bir bilgi olmadığı için bu makaleyi yazmaya karar verdim. Bu yazımda FireBug <strong>Net paneli</strong> hakkında olacaktır. FireBug geliştirme ile alakalı bir makale değildir. Özellikleri hakkında genel bir bilgi içerecektir. </p>
<p>Web sayfalarının kodlarken bir çok yönünü düşünerek kodlarız. Erişebilirliği, esneklik, farklı tarayıcılara uyumlu olması, performans bunlardan ilk aklımıza gelenler. En önemlilerinden biri performansının iyi olmasıdır. Web sitesi sahipleri sitelerinin tarayıcılar tarafından hızlı gezilmesi için en kısa zamanda açılmasını sağlamak için uğraşır. Performans değerlendirmesi için kullanabileceğimiz araçlardan birisi Firebug&#8217;ın Net panelidir. Burada Firebug&#8217;ın Net sekmesini inceleyeceğiz. Aşağıda benim anasayfamın net panelindeki görüntüsünü görüyorsunuz.<span id="more-1737"></span></p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/fh_firebug_net_sekme.gif"><img src="http://www.fatihhayrioglu.com/wp-content/fh_firebug_net_sekme-298x300.gif" alt="" title="fh_firebug_net_sekme" width="298" height="300" class="alignnone size-medium wp-image-1739" /></a></p>
<h3>Genel Net sekmesi görünümü</h3>
<p><strong>Net Panel Giriş</strong></p>
<p>Net sekmesinin genel amacı kullanıcıya HTTP trafiğini kolayca göstermektir. Her satır sayfayı oluşturan bir girdinin istek/cevabını gösteren bir göstergedir.</p>
<p>Örnek bir sayfa ile devam edelim. </p>
<p><a href="http://fatihhayrioglu.com/dokumanlar/fare_degisen_resim.html" title="http://fatihhayrioglu.com/dokumanlar/fare_degisen_resim.html">http://fatihhayrioglu.com/dokumanlar/fare_degisen_resim.html</a></p>
<p><img src="http://docs.google.com/File?id=dhctmbn6_408d43xkbc6_b" alt="" /></p>
<p>Yukarıdaki resimde sunucuya yapılan iki isteğin sıralaması ile birlikte göstermektedir. İlk istek sayfanın kendisi, ikinci istek ise <strong>degisen_resim.gif</strong> resmi. </p>
<p>Her girdi istek hakkında genel bir bilgiyi gösterir. Zaman çizelgeside grafiksel olarak yüklenme zamanını gösteriyor.</p>
<p>Net sekmesi bize <strong>fare_degisen_resim_klavye.html</strong> içeriğinin 418ms de yüklendiğini ve <strong>degisen_resim.gif </strong>resmininde 146ms de yüklendiğini gösteriyor.</p>
<p>Net sekmesi bize ilk bakışta aşağıdaki bilgileri verir;</p>
<ul>
<li>HTTP istek metodunu (GET)</li>
<li>Cevap durumu ve açıklaması (200 OK)</li>
<li>İstem dosya ismini(fare_degisen_resim_klavye.html) ve fare imlecini üzerine getirirsek hangi adresten çektiğini gösterir.</li>
<li>Cevapların hangi barındırma hizmetinde geldiği (fatihhayrioglu.com)</li>
<li>Cevabın boyutu (778Byte)</li>
<li>Grafiksel gösterge ve yüklenme zamanı (418ms)</li>
</ul>
<p>Birde en sondaki sonuç bilgi satırı var.</p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/firebug_net3.gif"><img src="http://www.fatihhayrioglu.com/wp-content/firebug_net3-300x8.gif" alt="" title="firebug_net3" width="300" height="8" class="alignnone size-medium wp-image-1740" /></a></p>
<ul>
<li>Sayfada 2 adet istek yapıldı</li>
<li>Bu 2 isteğin toplam boyutu 3kb ve eğer önbellekten alıyorsa ne kadarını önbellekten alıyor bilgisi.</li>
<li>Bu 2 isteğin ne kadar zamanda yüklendiği(son isteğin sonu ile ilk isteğin başı arasındaki zaman)</li>
</ul>
<p><img src="http://docs.google.com/File?id=dhctmbn6_411zb4pdnd3_b" alt="" /></p>
<p>Her bir elemanın üzerine gelince popup ekranı ile bize daha detaylı bilgi veriyor. Her rengin bir anlamı var. </p>
<p>
<strong>DNS Lookup:</strong> DNS çözümleme zamanı<br />
<strong>connecting:</strong> Oluşturulan TCP bağlantısı için harcanan zaman<br />
<strong>Blocking:</strong> Ağa bağlanırken tarayıcı bu istekleri belli bir sıraya dizer. Bu sırada beklerken harcadığı zaman. Eğer böyle bir zaman harcanıyorsa gösterilir, yoksa gösterilmez. Aşağıda bu konuya(Tarayıcı Sırasında Bekleme Zamanı) biraz daha ayrıntılı değineceğiz.<br />
<strong>Sending:</strong> Sunucuya gönderilecek veri için istek gönderme zamanı<br />
<strong>Waiting:</strong> Sunucudan dönen cevabın bekleme zamanı(sunucudan gelen ilk byte&#8217;ın bekleme zamanı)<br />
<strong>Receiving:</strong> Gelen cevabın indirilmesi için gereken zaman.
</p>
<p><strong>DOMContenLoaded:</strong>(Mavi dikey çizgi) ilk istek başladıktan +5.48s sonra DOM içeriğinin yüklenme olayı tetiklendi, anlamını taşıyor. Eğer bu değer eksi ise DOM içeriği istek başlamadan önce gönderilmiş demektir.</p>
<p><strong>load:</strong>(kırmızı dikey çizgi) Bu gösterge bize yüklenme olayının ilk istek başladıktan sonra geçen süreyi gösterir. Eksi değer alması ilk istekden önce tetiklendiğini gösterir.</p>
<h3><strong>Tarayıcı Sırasında Bekleme Zamanı</strong></h3>
<p>İsteğin sunucuya gönderilmeden önce tarayıcı sırasında beklemesi sonucu iki durum orataya çıkar. Bu durumları biraz açarsak;</p>
<ul>
<li>Bir web sayfasında iki adet javascript dosyası varsa bunlar aynı anda yüklenmez. İlk önce birisi yüklenir daha sonra ikincisi yüklenir. Bu nedenle mümkünse javascript dosyalarını teke indirmek bize zaman kazandıracaktır.</li>
<li>Her tarayıcının aynı anda sunucudan(her bir domain için) yapacağı istek sayısı sınırlıdır. Mesela bu sayı Firefox 3 için 6&#8242;dır. Yani bunun anlamı eğer sunucudan yapılacak istek sayısı 6&#8242;yı geçerse, altıncıdan sonrası ilk altının yüklenmesini beklemek durumunda kalacaktır. Bu nedenle CSS Sprite tekniği kullanımı önemlidir. 
  </li>
</ul>
<p><strong>Net Sekmesi İstek ve Cevap Detayları</strong></p>
<p>Her isteğin solundaki artı(+) işaretine tıklayarak daha ayrıntılı bilgi alabiliriz. Burada önemli bir noktayı açıklayalım: <strong>request</strong> sunucuya gönderimi <strong>response</strong> geri geleni gösterir. Eğer gösterilen öğe sunucudan veya ön bellekten geliyorsa bir adet <strong>request</strong> ve <strong>response</strong> görünecektir.</p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/firebug_net6.gif"><img src="http://www.fatihhayrioglu.com/wp-content/firebug_net6-300x179.gif" alt="" title="firebug_net6" width="300" height="179" class="alignnone size-medium wp-image-1741" /></a></p>
<p>Açılan alandaki sekmeler ve anlamları;</p>
<ul>
<li>Headers: HTTP istek ve cevapları</li>
<li>Response: Sunucudan dönen veri.</li>
<li>HTML: Verilen cevap HTML&#8217;in ön görünümü(sadece html ögeleri içindir.)</li>
</ul>
<p><img src="http://docs.google.com/File?id=dhctmbn6_306f5kscnhq_b" alt="" /></p>
<p><strong>URL Parametreleri</strong></p>
<p>Eğer sayfada kullanıcıdan veri alınmış ise Net panelinde yukarıdakine ek olarak <strong>Params</strong> sekmesi çıkar. <strong>Params</strong> sekmesinde kullanıcıdan gelen verileri görmemiz mümkündür.</p>
<p>http://www.softwareishard.com/firebug/introduction/net-panel/testPage1.htm?param1=value1&amp;param2=value2</p>
<p><strong>Post ve Put İstekleri</strong></p>
<p>Eğer kullanıcından HTTP üzerinden veri istenmiş ise bunun için Post isimli yeni bir sekme açılacaktır ve kullanıcının gönderdiği veriler listelenecektir. </p>
<p><img src="http://docs.google.com/File?id=dhctmbn6_307fgjfzcgq_b" alt="" /></p>
<p><strong>JSON Cevapları </strong></p>
<p>JSON verisi olması durumunda yeni bir sekme daha açılacaktır ve json verileri bir liste halinde sıralanacaktır. </p>
<p><img src="http://docs.google.com/File?id=dhctmbn6_308g4rd7xgm_b" alt="" /></p>
<p><strong>Tarayıcı Ön Belleği</strong></p>
<p>Eğer sayfa ögesi tarayıcı ön belleğinde geliyorsa <strong>Cache</strong> sekmesi belirecektir. Bu sekme bize ön bellekten gelen bilgileri ayrıntısı ile gösterecektir. </p>
<p><img src="http://docs.google.com/File?id=dhctmbn6_414gjz4tzfk_b" alt="" /></p>
<p>Yukarıdaki ekran görüldüğü gibi listede <strong>304</strong> değişmedi ibaresi olan ögeler tarayıcı ön belleğinden alınıyor demektir. </p>
<p><strong>Dosya Tipine Göre Yükleme Zamanları</strong></p>
<p><img src="http://docs.google.com/File?id=dhctmbn6_412hr8333vz_b" alt="" /></p>
<p>Bazen biz sayfadaki ögelerin her biri için yüklenme zamanını bilmek isteriz, örneğin javascript veya resimler vb. Bunun biz Net sekmesine tıklayıp sonra eskiye göre üstte yenilerde alttaki sekmelerden(javascript, images) yapabiliriz. Buda bize toplam yüklenme zamanı ve farklı dosya tiplerinin yüklenme zamanı ayrımını yapma imkanı verir.</p>
<h3>XMLHttpRequest İzleme</h3>
<p>Şimdiye kadar yapılan istek ve cevapları inceledik. Bununla birlikte web sayfaları asenkron istekler ve cevaplarıda içermektedir, ajax olarak tanımlanan bu istek ve cevaplarıda Net panelinden izlememiz mümkündür. Bir sayfada ajax isteği olduğu durumları Net panelindeki XHR sekmesinden izleyebilir ve bilgilerini buradan alabiliriz.</p>
<p><a href="http://www.janodvarko.cz/firebug/tests/BreakOnXHR/breakOnXHR.html" id="pz-5" title="http://www.janodvarko.cz/firebug/tests/BreakOnXHR/breakOnXHR.html">http://www.janodvarko.cz/firebug/tests/BreakOnXHR/breakOnXHR.html</a> Örnek sayfasını incelersek</p>
<p><a href="http://www.fatihhayrioglu.com/wp-content/firebug_net8.gif"><img src="http://www.fatihhayrioglu.com/wp-content/firebug_net8-255x300.gif" alt="" title="firebug_net8" width="255" height="300" class="alignnone size-medium wp-image-1742" /></a></p>
<p>Yukarıda görüldüğü gibi ajax istek ve cevapları hakkında detaylı bilgi alıyoruz. <strong>Clear</strong> düğmesi ile isteği silebiliriz. </p>
<h3><strong>FireBug Net Sekmesine Yardımı İle Performans Değerlendirmesi Yapmak</strong></h3>
<p>Benim açımdan FireBug Firefox&#8217;un en önemli eklentisidir. Bu nedenle diğer tarayıcılara geçmem şu an itibari ile imkansız. FireBug o kadar büyük bir eklentidir ki bu eklentiye bağlı çıkarılan eklentiler vardır. Bu eklentilerden bir kaçı; </p>
<ul>
<li>Yahoo&#8217;bub çıkardığı <a href="https://addons.mozilla.org/en-US/firefox/addon/5369/" title="YSlow">YSlow</a></li>
<li>Google&#8217;un çıkardığı <a href="http://code.google.com/speed/page-speed/" title="Page Speed">Page Speed</a></li>
</ul>
<p>Bu eklentileri kullanarak web sayfalarımızın performansını ölçebiliriz. Ayrıca bu eklentiler bize sitemizdeki yavaşlamaya neden olan durumları açıkça gösterir ve düzeltmemiz için önerilerde bulunur.</p>
<h3>Kaynaklar</h3>
<ul>
<li><a href="http://getfirebug.com/net.html" title="http://getfirebug.com/net.html">http://getfirebug.com/net.html</a></li>
<li><a href="http://www.softwareishard.com/blog/firebug/introduction-to-firebug-net-panel/" title="http://www.softwareishard.com/blog/firebug/introduction-to-firebug-net-panel/">http://www.softwareishard.com/blog/firebug/introduction-to-firebug-net-panel/</a></li>
<li><a href="http://michaelsync.net/2007/10/15/firebug-tutorial-section-4-net-css-and-dom-tabs" title="http://michaelsync.net/2007/10/15/firebug-tutorial-section-4-net-css-and-dom-tabs">http://michaelsync.net/2007/10/15/firebug-tutorial-section-4-net-css-and-dom-tabs</a></li>
<li><a href="http://cncmachining.wordpress.com/2009/06/22/firebug-tricks/">http://cncmachining.wordpress.com/2009/06/22/firebug-tricks/</a></li>
<li><a href="http://developer.yahoo.com/yslow/netpanelpatch.html" title="http://developer.yahoo.com/yslow/netpanelpatch.html">http://developer.yahoo.com/yslow/netpanelpatch.html</a></li>
<li><a href="http://www.stevesouders.com/blog/2009/11/03/firebug-net-panel-more-accurate-timing/">http://www.stevesouders.com/blog/2009/11/03/firebug-net-panel-more-accurate-timing/</a></li>
<li><a href="http://net.tutsplus.com/tutorials/other/http-headers-for-dummies/">http://net.tutsplus.com/tutorials/other/http-headers-for-dummies/</a> (http headers bilgisi)</li>
<li><a href="http://www.softwareishard.com/blog/firebug/firebug-net-panel-timings/">http://www.softwareishard.com/blog/firebug/firebug-net-panel-timings/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihhayrioglu.com/firebug-net-sekmesi-ve-kullanimi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

