<?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>karalamalar &#187; Web</title>
	<atom:link href="http://www.karalamalar.net/kategori/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.karalamalar.net</link>
	<description>ortaya kişisel bir şeyler...</description>
	<lastBuildDate>Fri, 13 Jan 2012 18:02:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>&#8220;Ambiguous match found&#8221; hatası neden kaynaklanır, nasıl düzeltilir?</title>
		<link>http://www.karalamalar.net/ambiguous-match-found-hatasi-neden-kaynaklanir-nasil-duzeltilir/</link>
		<comments>http://www.karalamalar.net/ambiguous-match-found-hatasi-neden-kaynaklanir-nasil-duzeltilir/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 19:58:54 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[ambiguous match found]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Hata]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=251</guid>
		<description><![CDATA[ASP.NET ile uygulama geliştirirken çok ilginç bir sorunla karşılaştım. Biraz uğraştıktan sonra sorunu çözdüm. Şansıma çok büyük bir proje değildi ve yine şansıma küçük bir değişiklik yaptığım sırada karşıma çıktı. Bu yüzden problemi çok daha kolay tanımlayabildim ve bu da çözüme daha kolay ulaşmamı sağladı. Problem derleme sırasında karşınıza çıkmıyor. Proje sorunsuz bir şekilde yapılandırılıyor [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.karalamalar.net/etiket/asp-net">ASP.NET</a> ile uygulama geliştirirken çok ilginç bir sorunla karşılaştım. Biraz uğraştıktan sonra sorunu çözdüm. Şansıma çok büyük bir proje değildi ve yine şansıma küçük bir değişiklik yaptığım sırada karşıma çıktı. Bu yüzden problemi çok daha kolay tanımlayabildim ve bu da çözüme daha kolay ulaşmamı sağladı.</p>
<p>Problem derleme sırasında karşınıza çıkmıyor. Proje sorunsuz bir şekilde yapılandırılıyor fakat problemin olduğu web sayfasını açmak istediğinizde ilk satırda belirsiz eşleşme (Ambiguous match) bulunduğu ile ilgili bir hata mesajı alıyorsunuz ve sayfa açılmıyor. Aşağıdaki ekran görüntüsüne benzer bir görüntü ortaya çıkıyor.</p>
<p><a href="http://www.karalamalar.net/dosyalar/2011/04/AmbiguosMatchFound.png"><img src="http://www.karalamalar.net/dosyalar/2011/04/AmbiguosMatchFound-300x206.png" alt="" title="Ambiguos Match Found hatası" width="300" height="206" class="aligncenter size-medium wp-image-252" /></a></p>
<p>Bir süre webde araştırınca sorunun neden oluştuğunu, nasıl çözüleceğini <a href="http://dotnetdebug.net/2006/03/21/ambiguous-match-found-in-a-web-control-a-possible-bug/">burada</a> buldum. Temel olarak problem, web sayfasında tanımlanmış bir kontrol ile aynı isme sahip bir değişken tanımlandığında ortaya çıkıyor. C# büyük/küçük harf duyarlı bir dil olsa da nedense bu durumda düzgün çalışmıyor ve hata üretiyor. Yani sayfanızda &#8220;Metin&#8221; isimli bir kontrol bulunuyorsa &#8220;metin&#8221; isimli bir değişken kullanmamanız gerekiyor.</p>
<p>Karşımıza açıklayıcı bir hata mesajı çıkmadığı için bu davranışın bir bug olduğunu düşünüyorum. İşin ilginç yanı konuyla ilgili bulduğum makale 2006 yılına ait, yani en az 5 senedir bu problem var ve Microsoft tarafından konu ile ilgili bir geliştirme/açıklama/düzeltme söz konusu değil&#8230;</p>
<div class="shr-publisher-251"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fambiguous-match-found-hatasi-neden-kaynaklanir-nasil-duzeltilir%2F' data-shr_title='%22Ambiguous+match+found%22+hatas%C4%B1+neden+kaynaklan%C4%B1r%2C+nas%C4%B1l+d%C3%BCzeltilir%3F'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fambiguous-match-found-hatasi-neden-kaynaklanir-nasil-duzeltilir%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fambiguous-match-found-hatasi-neden-kaynaklanir-nasil-duzeltilir%2F' data-shr_title='%22Ambiguous+match+found%22+hatas%C4%B1+neden+kaynaklan%C4%B1r%2C+nas%C4%B1l+d%C3%BCzeltilir%3F'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fambiguous-match-found-hatasi-neden-kaynaklanir-nasil-duzeltilir%2F' data-shr_title='%22Ambiguous+match+found%22+hatas%C4%B1+neden+kaynaklan%C4%B1r%2C+nas%C4%B1l+d%C3%BCzeltilir%3F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/ambiguous-match-found-hatasi-neden-kaynaklanir-nasil-duzeltilir/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wordle ile web profilim</title>
		<link>http://www.karalamalar.net/wordle-ile-web-profilim/</link>
		<comments>http://www.karalamalar.net/wordle-ile-web-profilim/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 08:51:52 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[DYG]]></category>
		<category><![CDATA[Etiket]]></category>
		<category><![CDATA[profil]]></category>
		<category><![CDATA[Wordle]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=248</guid>
		<description><![CDATA[DYG için yazılım geliştirici ararken Wordle&#8216;ı kullanmak gelmişti aklıma. Aradığımız özellikleri ağırlıklarına göre sıralasak, bir kelime bulutu oluştursak, farklı bir şekilde kimi aradığımızı göstersek diye düşünmüştüm. Nedense o sıralar bir çok kereler denememe rağmen Wordle web sitesine girememiş, dolayısıyla da bir türlü kelime bulutunu oluşturamamıştım. Bunun üzerine ben de daha basit bir yöntemle kendi kelime [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>DYG için yazılım geliştirici ararken <a href="http://www.wordle.net">Wordle</a>&#8216;ı kullanmak gelmişti aklıma. Aradığımız özellikleri ağırlıklarına göre sıralasak, bir kelime bulutu oluştursak, farklı bir şekilde kimi aradığımızı göstersek diye düşünmüştüm. Nedense o sıralar bir çok kereler denememe rağmen Wordle web sitesine girememiş, dolayısıyla da bir türlü kelime bulutunu oluşturamamıştım. Bunun üzerine ben de daha basit bir yöntemle kendi kelime bulutumu oluşturmuş ve yayına <a href="http://ik.ntvmsnbc.com/DYG-YU01/">almıştım</a>. Bugün bir yerlerde Wordle yine karşıma çıkınca tekrar siteye girmeye çalıştım ve sorunsuz bir şekilde girebildim. Fırsatı değerlendirip hemen yazılım geliştirici ilanının kelime bulutunu Wordle üzerinde oluşturdum.</p>
<p><a href="http://www.karalamalar.net/dosyalar/2011/04/dyg-yu01.png"><img src="http://www.karalamalar.net/dosyalar/2011/04/dyg-yu01.png" alt="" title="Yazılım Geliştirici" width="450" height="150" class="aligncenter size-medium wp-image-249" /></a></p>
<p>Asıl uzun süredir yapmak istediğim ise başka bir şeydi. Bookmarklarımı saklamak için <a href="http://www.delicious.com">delicious</a> kullanıyorum. <a href="http://www.delicious.com/help/quicktour/firefox">Firefox eklentisi</a> ile beraber çok verimli çalışıyor. Bir bookmark kaydederken mümkün olduğunca ilgili etiketleri girer, daha sonra aradığımda kolay bulabilmeme olanak sağlayacak etiketleri eklerim. Bunun Wordle ile alakasına gelince; Wordle herhangi bir delicious hesabının etiketlerini kelime bulutu haline getirebiliyor. Bu sayede bir nevi web profilinizi ortaya çıkartabiliyorunuz. İşte benim profilim:</p>
<p><a href="http://www.karalamalar.net/dosyalar/2011/04/wordle-profil.png"><img src="http://www.karalamalar.net/dosyalar/2011/04/wordle-profil.png" alt="" title="Wordle Delicious Profilim" width="450" height="270" class="aligncenter size-medium wp-image-250" /></a></p>
<p>Delicious üzerinde hangi etiketleri daha sık kullandığımı görebiliyorum zaten ama bu şekilde gördüğümde çok daha farklı oldu. İlgimi çeken alanların (<a href="http://www.karalamalar.net/etiket/javascript">JavaScript</a>, <a href="http://www.karalamalar.net/etiket/jquery">jQuery</a>, <a href="http://www.karalamalar.net/etiket/php">PHP</a>, <a href="http://www.karalamalar.net/etiket/wordpress">WordPress</a>) bu kadar ön planda olmalarına şaşırmadım ama <a href="http://www.karalamalar.net/etiket/dotNet">.NET</a>, <a href="http://www.karalamalar.net/etiket/cSharp">C#</a> vb etiketleri yeterince büyük görememek şaşırttı açıkçası. Özellikle de hayatımı .NET üzerinde uygulama geliştirerek kazandığım göz önünde bulundurulursa. Bunda .NET ile sürekli olarak uygulama geliştiriyor olmamın payı olabilir. Yaptığım araştırmalar sonucu ortaya çıkan sonuçları projelerde kullanıyorum ve gerektiğinde bu projelere geri dönüp, kendi kodumdan destek alıyorum. Bu sebeple ilgili araştırmalar bookmarklarım arasına girmiyor olabilirler.</p>
<p>karalamalar.net etiket bulutunun delicious etiket bulutu ile bu kadar örtüşmesinden de ilgim olan alanlarda daha çok paylaşım yaptığım sonucunu çıkartıyorum. Son zamanlarda yazmak istediğim bir kaç konu var. Bari onları yazayım da teraziyi biraz olsun dengeleyeyim. :D</p>
<div class="shr-publisher-248"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordle-ile-web-profilim%2F' data-shr_title='Wordle+ile+web+profilim'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordle-ile-web-profilim%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordle-ile-web-profilim%2F' data-shr_title='Wordle+ile+web+profilim'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordle-ile-web-profilim%2F' data-shr_title='Wordle+ile+web+profilim'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/wordle-ile-web-profilim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress 3.0 ile beraber blog hayatınızı değiştirecek 10 yeni özellik</title>
		<link>http://www.karalamalar.net/wordpress-3-0-ile-beraber-blog-hayatinizi-degistirecek-10-yeni-ozellik/</link>
		<comments>http://www.karalamalar.net/wordpress-3-0-ile-beraber-blog-hayatinizi-degistirecek-10-yeni-ozellik/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 08:31:19 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Twenty Ten]]></category>
		<category><![CDATA[WordPress 3.0]]></category>
		<category><![CDATA[WordPress MU]]></category>
		<category><![CDATA[Yenilik]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=236</guid>
		<description><![CDATA[Yedinci yıldönümünde ilk dağıtım adayı yayınlanan WordPress 3.0 bir çok yenilikle beraber geliyor. Bunlardan en öne çıkan 10 tanesini sizler için sıraladım; WordPress MU, WordPress paketi ile birleştiriliyor. Artık sitenizi bir siteler ağına dönüştürebilirsiniz. Dahili menü sistemi geliyor. İstediğiniz yazıyı, sayfayı, kategoriyi ya da etiketi ya da istediğiniz adresi özelleştirebildiğiniz menüde kullanabileceksiniz. Menüleri kullanabilmek için [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://wordpress.org/development/2010/05/lucky-seven/">Yedinci yıldönümü</a>nde <a href="http://wordpress.org/development/2010/05/wordpress-3-0-release-candidate/">ilk dağıtım adayı</a> yayınlanan <a href="http://www.karalamalar.net/etiket/WordPress">WordPress</a> 3.0 bir çok yenilikle beraber geliyor. Bunlardan en öne çıkan 10 tanesini sizler için sıraladım;</p>
<ol>
<li><strong>WordPress MU</strong>, WordPress paketi ile birleştiriliyor. Artık sitenizi bir siteler ağına dönüştürebilirsiniz.</li>
<li><strong>Dahili menü sistemi</strong> geliyor. İstediğiniz yazıyı, sayfayı, kategoriyi ya da etiketi ya da istediğiniz adresi özelleştirebildiğiniz menüde kullanabileceksiniz. Menüleri kullanabilmek için temanızın menüleri destekliyor olması gerekiyor.</li>
<li>Sitenin <strong>arka plan</strong>ını değiştirebilme desteği geliyor.</li>
<li>Varsayılan tema değişiyor. Yeni tema <strong>Twenty Ten</strong> (Yirmi On ya da 2010) WordPress 3.0&#8242;ın gelişmiş özelliklerini destekliyor. Özelleştirilebilir başlık alanı, arka planın özelleştirilmesi, menü kullanımı, özelleştirilebilir yazı formatları vb&#8230;</li>
<li>Yönetim ekranlarına <strong>yardım alanları</strong> ekleniyor. Bir yönetim ekranında neyin ne işe yaradığını öğrenmek için sağ üst köşedeki yardım sekmesini kullanabileceksiniz.</li>
<li>Çekirdek paketi hafifletmek için içeri <strong>aktarıcılar paketten çıkartılıyor</strong>. Bir aktarıcıya ihtiyacınız olduğunda, harici olarak yükleyip kullanmanız gerekecek.</li>
<li><strong>Turbo özelliği</strong> paketten çıkartılıyor. Google, Turbo özelliğini kullanmak için gerekli olan Google Gears uygulamasını geliştirmeyi bıraktığını açıkladığı için, WordPress de paketten çıkartıyor.</li>
<li>Temaları ve eklentileri <strong>toplu güncelleme</strong> desteği geliyor.</li>
<li>WordPress yüklemesi sırasında <strong>kullanıcı adı ve parola seçme özgürlüğü</strong>. Bu sayede admin kullanıcı üzerinden yapılan atakların önüne geçilebilmiş olacak.</li>
<li><strong>Yavru tema</strong> özelliği: Yavru temalar, asıl temaların özelliklerine sahiptirler ve asıl temalara dokunmadan özelliklerini değiştirebilmenize olanak sağlar. Bu sayede asıl tema güncellendiğinde yaptığınız değişiklikleri kaybetmiyorsunuz.</li>
</ol>
<p>3.0 Sürümü için hedeflenen çıkış tarihi olarak <a href="http://wpdevel.wordpress.com/version-3-0-project-schedule/">Haziran ortaları</a> belirtilmiş.</p>
<div class="shr-publisher-236"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordpress-3-0-ile-beraber-blog-hayatinizi-degistirecek-10-yeni-ozellik%2F' data-shr_title='WordPress+3.0+ile+beraber+blog+hayat%C4%B1n%C4%B1z%C4%B1+de%C4%9Fi%C5%9Ftirecek+10+yeni+%C3%B6zellik'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordpress-3-0-ile-beraber-blog-hayatinizi-degistirecek-10-yeni-ozellik%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordpress-3-0-ile-beraber-blog-hayatinizi-degistirecek-10-yeni-ozellik%2F' data-shr_title='WordPress+3.0+ile+beraber+blog+hayat%C4%B1n%C4%B1z%C4%B1+de%C4%9Fi%C5%9Ftirecek+10+yeni+%C3%B6zellik'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fwordpress-3-0-ile-beraber-blog-hayatinizi-degistirecek-10-yeni-ozellik%2F' data-shr_title='WordPress+3.0+ile+beraber+blog+hayat%C4%B1n%C4%B1z%C4%B1+de%C4%9Fi%C5%9Ftirecek+10+yeni+%C3%B6zellik'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/wordpress-3-0-ile-beraber-blog-hayatinizi-degistirecek-10-yeni-ozellik/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>valiDate v2.1</title>
		<link>http://www.karalamalar.net/validate-v2-1/</link>
		<comments>http://www.karalamalar.net/validate-v2-1/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 14:52:06 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[doğrulama]]></category>
		<category><![CDATA[tarih]]></category>
		<category><![CDATA[valiDate]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=230</guid>
		<description><![CDATA[Bugün valiDate metodunu çalışma arkadaşıma gösterirken, neden doğrulama başarılı olduğunda tarih nesnesini döndürmediğim sorusu aklıma geldi. Toplam 7 byte&#8217;lık ufak bir ekleme ile, doğrulama başarılı olduğunda JavaScript tarih nesnesi döndürecek şekilde metodu güncelledim. Bu sayede metottan dönen değeri hala if ifadesi içinde kullanabilirken, isterseniz if ifadesinden önce metottan dönen değeri bir değişkene atayarak, bu değişkeni [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bugün <a href="http://www.karalamalar.net/validate-v2-0/">valiDate</a> metodunu çalışma arkadaşıma gösterirken, neden doğrulama başarılı olduğunda tarih nesnesini döndürmediğim sorusu aklıma geldi. Toplam 7 byte&#8217;lık ufak bir ekleme ile, doğrulama başarılı olduğunda <strong>JavaScript tarih nesnesi</strong> döndürecek şekilde metodu güncelledim. Bu sayede metottan dönen değeri hala if ifadesi içinde kullanabilirken, isterseniz if ifadesinden önce metottan dönen değeri bir değişkene atayarak, bu değişkeni if ifadesinde kullanabilir ve doğrulamayı geçerse değişkeni tarih nesnesi olarak kullanabilirsiniz. Hatta abartıp doğrulamadan dönen değeri direkt if ifadesi içinde değişkeninize atayarak da kullanabilirsiniz. </p>
<pre class="brush:js">/*
 * valiDate
 * http://www.karalamalar.net/
 *
 * Copyright (c) 2009 İzzet Emre Erkan
 * Licensed under Creative Commons Attribution-Share Alike 3.0 Unported License
 * http://creativecommons.org/licenses/by-sa/3.0/
 *
 * Date: 2010-04-16 17:08:32 +0300 (Fri, 16 Apr 2010)
 * Revision: 7
 */
String.prototype.valiDate =
  function() {
    if(/^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}$/.test(this)) {
      var v = this.replace(/[- /]/g,'.').split('.');
      var d=parseInt(v[0],10), m=parseInt(v[1],10), y=parseInt(v[2],10);
      var o = new Date(y, m - 1, d);
      return o.getDate() == d &#038;&#038; o.getMonth() + 1 == m &#038;&#038; o.getFullYear() == y ? o : false;
    }
    else
      return false;
  }</pre>
<p>Metodun küçültülmüş halini (647 byte) <a href='http://www.karalamalar.net/dosyalar/2010/04/valiDate.zip'>buradan</a> edinebilirsiniz.</p>
<div class="shr-publisher-230"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fvalidate-v2-1%2F' data-shr_title='valiDate+v2.1'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fvalidate-v2-1%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fvalidate-v2-1%2F' data-shr_title='valiDate+v2.1'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fvalidate-v2-1%2F' data-shr_title='valiDate+v2.1'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/validate-v2-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tekrarlı Kısaltmalar &#8211; Recursive Acronyms</title>
		<link>http://www.karalamalar.net/tekrarli-kisaltmalar-recursive-acronyms/</link>
		<comments>http://www.karalamalar.net/tekrarli-kisaltmalar-recursive-acronyms/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 15:19:03 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[kısaltma]]></category>
		<category><![CDATA[Recursive Acronym]]></category>
		<category><![CDATA[Tekrarlı Kısaltma]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=224</guid>
		<description><![CDATA[Bugün Engin&#8217;in blogu için hazırladığı makaleyi görünce aklıma geldi. İlginç bulduğum ve sizlerin de ilgisini çekebileceğini düşündüğüm için de paylaşayım dedim. Başlıkta orijinal ismini görebileceğiniz bu terim için öngördüğüm Türkçe karşılık &#8220;Tekrarlı Kısaltma&#8221;. Tekrarlı kısaltma, açılımında yine kendisini tekrar eden kısaltmalar için kullanılıyor. Ağırlıklı olarak bilgisayar dünyasında örnekleriyle karşılaşsak da teknik olmayan kullanımları da mevcut. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bugün Engin&#8217;in <a href="http://www.enginpolat.com/">blogu</a> için hazırladığı <a href="http://www.enginpolat.com/xna-not-an-acronym-ile-oyun-programlama/">makaleyi</a> görünce aklıma geldi. İlginç bulduğum ve sizlerin de ilgisini çekebileceğini düşündüğüm için de paylaşayım dedim.</p>
<p>Başlıkta orijinal ismini görebileceğiniz bu terim için öngördüğüm Türkçe karşılık &#8220;Tekrarlı Kısaltma&#8221;. Tekrarlı kısaltma, açılımında yine kendisini tekrar eden kısaltmalar için kullanılıyor. Ağırlıklı olarak bilgisayar dünyasında örnekleriyle karşılaşsak da teknik olmayan kullanımları da mevcut. Bu tip Türkçe kısaltma hiç bilmediğim için konuyu anlatabilmek için meşhur olanlarından bir kaç tekrarlı kısaltma yazayım. Daha fazlası için <a href="http://en.wikipedia.org/wiki/Recursive_acronym">vikipedi makalesi</a>ne bakabilirsiniz.</p>
<ul>
<li><strong>GNU</strong> &#8211; <strong>G</strong>NU&#8217;s <strong>N</strong>ot <strong>U</strong>nix</li>
<li><strong>PHP</strong> &#8211; <strong>P</strong>HP: <strong>H</strong>ypertext <strong>P</strong>reprocessor</li>
<li><strong>VISA</strong> &#8211; <strong>V</strong>isa <strong>I</strong>nternational <strong>S</strong>ervice <strong>A</strong>ssociation</li>
<li><strong>XNA</strong> &#8211; <strong>X</strong>NA&#8217;s <strong>N</strong>ot <strong>A</strong>cronymed</li>
</ul>
<div class="shr-publisher-224"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftekrarli-kisaltmalar-recursive-acronyms%2F' data-shr_title='Tekrarl%C4%B1+K%C4%B1saltmalar+-+Recursive+Acronyms'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftekrarli-kisaltmalar-recursive-acronyms%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftekrarli-kisaltmalar-recursive-acronyms%2F' data-shr_title='Tekrarl%C4%B1+K%C4%B1saltmalar+-+Recursive+Acronyms'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftekrarli-kisaltmalar-recursive-acronyms%2F' data-shr_title='Tekrarl%C4%B1+K%C4%B1saltmalar+-+Recursive+Acronyms'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/tekrarli-kisaltmalar-recursive-acronyms/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Türkçe Twitter</title>
		<link>http://www.karalamalar.net/turkce-twitter/</link>
		<comments>http://www.karalamalar.net/turkce-twitter/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 15:19:33 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[betik]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[Türkçe]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[userscripts]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=222</guid>
		<description><![CDATA[Bir önceki yazımda Twitter&#8217;ın henüz Türkçe dil desteği olmadığından bahsetmiştim. Dün oturdum biraz uğraştım. Alternatif bir metotla Twitter&#8217;ın Türkçe kullanılabilmesi için bir şeyler yaptım. İşte yapmanız gerekenler; Firefox kullanın. Çünkü sonraki adımları Firefox ile yapabileceksiniz. (Alternatif varsa da ben bilmiyorum.) Firefox&#8217;a Greasemonkey eklentisini yükleyin. userscripts.org üzerinden Türkçe Twitter betiğini yükleyin. Hepsi bu kadar. Artık twitter&#8217;a [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bir önceki <a href="http://www.karalamalar.net/twitter-turkce-kullanmak/">yazımda</a> Twitter&#8217;ın henüz Türkçe dil desteği olmadığından bahsetmiştim. Dün oturdum biraz uğraştım. Alternatif bir metotla Twitter&#8217;ın Türkçe kullanılabilmesi için bir şeyler yaptım.</p>
<p>İşte yapmanız gerekenler;</p>
<ol>
<li><a href="http://www.getfirefox.com">Firefox</a> kullanın. Çünkü sonraki adımları Firefox ile yapabileceksiniz. (Alternatif varsa da ben bilmiyorum.)</li>
<li>Firefox&#8217;a <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> eklentisini yükleyin.</li>
<li>userscripts.org üzerinden <a href="http://userscripts.org/scripts/show/64961">Türkçe Twitter</a> betiğini yükleyin.</li>
</ol>
<p>Hepsi bu kadar. Artık twitter&#8217;a girdiğinizde sitenin bir çok kısmının Türkçe olduğunu göreceksiniz. Vakit buldukça sitenin geri kalanını da Türkçeleştirmeye çalışacağım.</p>
<div class="shr-publisher-222"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fturkce-twitter%2F' data-shr_title='T%C3%BCrk%C3%A7e+Twitter'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fturkce-twitter%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fturkce-twitter%2F' data-shr_title='T%C3%BCrk%C3%A7e+Twitter'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fturkce-twitter%2F' data-shr_title='T%C3%BCrk%C3%A7e+Twitter'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/turkce-twitter/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Twitter&#8217;ı Türkçe kullanmak</title>
		<link>http://www.karalamalar.net/twitter-turkce-kullanmak/</link>
		<comments>http://www.karalamalar.net/twitter-turkce-kullanmak/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 10:22:12 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Türkçe]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter Tools]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=221</guid>
		<description><![CDATA[Böyle bir şey henüz yok. Yani twitter henüz Türkçe dil desteği vermiyor. İngilizce, İtalyanca, İspanyolca, Fransızca, Almanca ve Japonca var ama Türkçe henüz yok. Peki ben bunu neden yazıyorum? Arama motorlarında &#8220;Twitter Türkçe kullanmak&#8221; şeklinde arama yapıp da Twitter Tools Türkçe başlıklı yazıma iniş yapan sevgili ziyaretçiler için daha kolay yoldan aradıkları bilgiye ulaşsınlar diye. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Böyle bir şey henüz yok. Yani twitter henüz Türkçe dil desteği vermiyor. İngilizce, İtalyanca, İspanyolca, Fransızca, Almanca ve Japonca var ama Türkçe henüz yok.</p>
<p>Peki ben bunu neden yazıyorum? Arama motorlarında &#8220;Twitter Türkçe kullanmak&#8221; şeklinde arama yapıp da <a href="http://www.karalamalar.net/twitter-tools-turkce/">Twitter Tools Türkçe</a> başlıklı yazıma iniş yapan sevgili ziyaretçiler için daha kolay yoldan aradıkları bilgiye ulaşsınlar diye.</p>
<p>Yukarıda da dediğim gibi, henüz Twitter Türkçe dil desteği sağlamıyor. Belki birileri çıkar bir betik yazar, userscripts&#8217;e yükler, kullanmak isteyenler de Firefox, GreaseMonkey ve ilgili betik üçlüsü ile Türkçe kullanır. Ama henüz bu yönde bir çalışma yapana da rastlamadım. :)</p>
<div class="shr-publisher-221"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftwitter-turkce-kullanmak%2F' data-shr_title='Twitter%27%C4%B1+T%C3%BCrk%C3%A7e+kullanmak'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftwitter-turkce-kullanmak%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftwitter-turkce-kullanmak%2F' data-shr_title='Twitter%27%C4%B1+T%C3%BCrk%C3%A7e+kullanmak'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Ftwitter-turkce-kullanmak%2F' data-shr_title='Twitter%27%C4%B1+T%C3%BCrk%C3%A7e+kullanmak'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/twitter-turkce-kullanmak/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>JavaScript kapsam ve kaplamları anlamak</title>
		<link>http://www.karalamalar.net/javascript-kapsam-ve-kaplamlari-anlamak/</link>
		<comments>http://www.karalamalar.net/javascript-kapsam-ve-kaplamlari-anlamak/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 12:49:05 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[Closure]]></category>
		<category><![CDATA[Kaplam]]></category>
		<category><![CDATA[Kapsam]]></category>
		<category><![CDATA[Scope]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=219</guid>
		<description><![CDATA[Bu makalenin orijinali (Explaining JavaScript scope and closures) Robert Nyman tarafından kendi blogunda yazılmıştır. Türkçe çevirisi için kendisinden izin alınmış olup, aşağıda okuyacağınız birinci tekil şahıs yine Robert Nyman&#8217;ın kendisidir; Javascript ile uygulama geliştirirken bir çok insanın zorluk çektiği bir konuyu açıklamaya çalışmak istedim. Arkaplan Kapsam ve kaplamları anlatmaya çalışan bir sürü makale olmasına rağmen [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><blockquote><p>Bu makalenin <a href="http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/">orijinali (Explaining JavaScript scope and closures)</a> Robert Nyman tarafından kendi blogunda yazılmıştır. Türkçe çevirisi için kendisinden izin alınmış olup, aşağıda okuyacağınız birinci tekil şahıs yine Robert Nyman&#8217;ın kendisidir;</p></blockquote>
<p>Javascript ile uygulama geliştirirken bir çok insanın zorluk çektiği bir konuyu açıklamaya çalışmak istedim.<br />
<span id="more-219"></span></p>
<h2>Arkaplan</h2>
<p>Kapsam ve kaplamları anlatmaya çalışan bir sürü makale olmasına rağmen bir çoğunun net bir şekilde konuyu ele almadığını söyleyebilirim. Bunun yanında bir çok makalede de herkesin daha önce 15 başka yazılım dili ile uygulama geliştirdiğini varsayılıyor ki deneyimlerime göre JavaScript yazan bir çok kişi C ve Java yerine HTML ve CSS altyapısından geliyor.</p>
<p>Bu nedenle bu makale ile mütevazi hedefim herkesin kapsam ve kaplamların ne olduğunu kavraması, nasıl çalıştıklarını ve daha önemlisi bunlardan nasıl yararlanabileceklerini görmeleri. Okumaya başlamadan önce değişkenler ve fonksiyonların temellerini anlıyor olmalısınız.</p>
<h2>Kapsam</h2>
<p>Kapsam, değişkenlerin ve fonksiyonların nerede erişilebilir oldukları ve hangi bağlam içinde çalıştırıldıklarını refere eder. Basitçe, bir değişken ya da fonksiyon, genel ya da yerel kapsam içinde tanımlanabilir. Değişkenler sözde fonksiyon kapsamına sahiptirler ve fonksiyonlar da değişkenlerle aynı kapsama sahiptirler.</p>
<h3>Genel Kapsam</h3>
<p>Bir şey genel olduğunda bu demektir ki ona kodunuzda istediğiniz yerden erişebilirsiniz. Şu örneği ele alalım:</p>
<pre class="brush:javascript">var maymun = "Goril";

function misafiriKarsila() {
  return alert("Merhaba değerli blog okuyucusu!");
}</pre>
<p>Bu kod bir tarayıcıda çalıştığında, fonksiyon kapsamı pencere olacaktı, bu da ilgili tarayıcı penceresinde çalışan her şey için fonksiyonu erişilebilir kılacaktı.</p>
<h3>Yerel Kapsam</h3>
<p>Genel kapsamın tersine, yerel kapsam bir şeyin, örneğin bir fonksiyonun, kodun belli bir kısmında tanımlanmış olmasıdır. Örneğin;</p>
<pre class="brush:javascript">function terbiyesizKonus() {
  var konusma = "Oh, seni gidi VB sever seni";
  return alert(konusma);
}
alert(konusma); // Hata fırlatır</pre>
<p>Yukardaki koda bakarsanız konusma değişkeni sadece terbiyesizKonus fonksiyonu içinde erişilebilir durumdadır. Fonksiyonun dışında tanımlı değildir. Buraya dikkat: eğer değişkeni tanımlarken öncesinde var kullanmazsanız, değişken otomatik olarak bir genel değişken olur.</p>
<p>Bu aynı zamanda şu manaya da gelir, iç içe fonksiyonlar tanımladığınızda içerdeki fonksiyon, içinde bulunduğu fonksiyonun değişkenlerine ve fonksiyonlarına erişebilir:</p>
<pre class="brush:javascript">function adSakla(ad) {
  function buyukHarfeCevir() {
    return ad.toUpperCase();
  }
  var buyutulmus = buyukHarfeCevir();
  return buyutulmus;
}
alert(adSakla("Robert")); // "ROBERT" döndürür</pre>
<p>Gördüğünüz gibi, iç fonksiyon buyukHarfeCevir işlem yapmak için herhangi bir parametreye ihtiyaç duymadı fakat dış fonksiyon adSakla&#8217;nın parametresi olan ad parametresine tam erişim sağladı. Daha net anlaşılması için bir örnek daha ele alalım:</p>
<pre class="brush:javascript">function kardesler() {
  var kardesler = ["Mehmet", "Mahmut", "Ayşe"];
  function kardesSayisi() {
    var kardeslerUzunlugu = kardesler.length;
    return kardeslerUzunlugu;
  }
  function kardesIsimleriniBirlestir() {
    return "Benim " + kardesSayisi() + " kardeşim var:\n\n" + kardesler.join("\n");
  }
  return kardesIsimleriniBirlestir();
}
alert(kardesler()); // "Benim 3 kardeşim var: Mehmet Mahmut Ayşe" döndürür</pre>
<p>Az önce gördüğünüz gibi, her iki iç fonksiyon da kendilerini kapsayan fonksiyona ait dizi değişkenine erişebildiler ve her iç fonksiyon kendisiyle aynı seviyedeki diğer iç fonksiyonlara (bu durumda kardesIsimleriniBirlestir fonksiyonu kardesSayisi fonksiyonuna erişti) erişebildi. Ne varki kardeslerUzunlugu değişkeni sadece ilgili fonksiyonda erişilebilir durumda, başka bir deyişle o kapsamda erişilebilir.</p>
<h2>Kaplamlar</h2>
<p>Hazır kapsam konusunu daha iyi kavramışken şimdi karışıma bir de kaplamları ekleyelim. Kaplamlar, genellikle, belirli bir bağlamda değişkenlerle çaışabilen ifadelerdir ya da işi daha da kolaylaştırmak adına, dış fonksiyonların yerel değişkenleri ile işlem yapan iç fonksiyonlar kaplamları oluşturur. Örneğin:</p>
<pre class="brush:javascript">function topla(x) {
  return function(y) {
    return x + y;
  };
}
var topla5 = topla(5);
var sayi8 = topla5(3);
alert(sayi8); // 8 döndürür</pre>
<p>Dur bir dakika! Az önce ne oldu? Şunu parçalarına ayıralım:</p>
<ol>
<li>topla fonksiyonu çağırıldığında geriye bir fonksiyon döndürüyor.</li>
<li>Bu fonksiyon ilgili bağlamı kapatıyor ve x parametresinin o anki değerini hafızasında tutuyor.(Yukardaki örnekte 5 değeri)</li>
<li>topla5 değişkenine değeri atanırken, dönen fonksiyon x değerinin 5 olduğunu hep biliyor.</li>
<li>topla5 değişkeni parametre olarak aldığı değere 5 ekleyen bir fonksiyonu refere eder hale geliyor.</li>
<li>topla5 fonksiyonu 3 parametresi ile çağrıldığında, 5 değerine 3 ekliyor ve 8 değerini dönüyor.</li>
</ol>
<p>Yani JavaScript dünyasında topla5 fonksiyonu aslında şuna benzer:</p>
<pre class="brush:javascript">function topla5 (y) {
  return 5 + y;
}</pre>
<h2>Rezil döngü problemi</h2>
<p>Kaç defa, bir döngü yaratıp, i değerini bir elemana atamaya çalıştığınızda, gördünüz ki sadece i&#8217;nin en son değeri geri dönüyor?</p>
<h3>Yanlış referans</h3>
<p>Şimdi, 5 adet a elemanı yaratıp, i değişkeni ile metinlerini oluşturan ve tıklama olayında da i değerini mesaj kutusu (alert) ile ekrana basan, şu yanlış koda bir bakalım. Oluşan a elemanları dokümanın (document) gövdesine (body) eklenecekler:</p>
<pre class="brush:javascript">function baglantiEkle() {
  for (var i=0, baglanti; i < 5; i++) {
    baglanti = document.createElement("a");
    baglanti.innerHTML = "Bağlantı " + i;
    baglanti.onclick = function () {
      alert(i);
    };
    document.body.appendChild(baglanti);
  }
}
window.onload = baglantiEkle;</pre>
<p>Her eleman  "Bağlantı 0", "Bağlantı 1" vb doğru metinlere sahip olacaklar. Fakat hangi bağlantıya tıklarsanız tıklayın, mesaj kutusunda hep "5" yazacaktır. Peki ama neden? Döngünün her yinelenmesinde i değeri bir artıyor ve tıklama olayı sadece elemana bağlanıyor ama henüz çalıştırılmıyor.</p>
<p>Böylece döngü i değeri 5 olana kadar devam ediyor, ki bu da baglantiEkle fonksiyonu çalışmayı bitirmeden önce i'nin aldığı son değer. Sonrasında da her tıklama olayı gerçekleştiğinde, son i değeri kullanılıyor.</p>
<h3>Doğru referans</h3>
<p>Bunun yerine yapmanız gereken bir kaplam yaratmak, böylece tıklama olayını her bağladığınızda o anki doğru i değeri ile olay çalışır. Şöyle ki:</p>
<pre class="brush:javascript">function baglantiEkle() {
  for (var i=0, baglanti; i < 5; i++) {
    baglanti = document.createElement("a");
    baglanti.innerHTML = "Bağlantı " + i;
    baglanti.onclick = function (numara) {
      return function () {
        alert(numara);
      };
    }(i);
    document.body.appendChild(baglanti);
  }
}
window.onload = baglantiEkle;</pre>
<p>Bu kod ile her a elemanına tıkladığınızda "Bağlantı 0", "Bağlantı 1" gibi ilk kod parçasında olmasını beklediğiniz değerler karşınıza çıkacaktır. Burada çözümü sağlayan, tıklama olayına atanan iç fonksiyon numara değişkenini -bu örnekte parametre olarak geçilen i değişkeninin o andaki değeri- refere eden bir kaplam oluşturmasıdır.</p>
<p>Bu fonksiyon geçerli değer ile kapanıyor ve bu sayede tıklama olayı çağırıldığında olması gereken değeri dönebiliyor.</p>
<h2>Kendi kendini çalıştıran fonksiyonlar</h2>
<p>Kendi kendini çalıştıran fonksiyonlar anında çalışan ve kendi kaplamlarını oluşturan fonksiyonlardır. Şuna bir göz atın:</p>
<pre class="brush:javascript">(function () {
  var kopek = "Alpan Çobanı";
  alert(kopek);
})();
alert(kopek); // undefined (tanımlanmamış) geri döner</pre>
<p>Tamam, demek ki kopek değişkeni sadece o bağlamda uygun durumda. Büyük iş, gizli köpekler... Ama, sevgili arkadaşlarım, işte olayın ilginçleştiği nokta da bu! Biraz önceki döngüde sorunumuzu çözen şey bu. Yahoo da bunu <a href="http://yuiblog.com/blog/2007/06/12/module-pattern/">Yahoo JavaScript Modül Deseni</a> için kullanıyor.</p>
<h2>Yahoo JavaScript Modül Deseni</h2>
<p>Desenin özü şu; Kendi kendini çağıran fonksiyonlar kullanarak bir kaplam yaratıyoruz, bu sayede özel ve genel değişkenler ve metotlar oluşturabiliyoruz. Basit bir örnek:</p>
<pre class="brush:javascript">var kisi = function () {
  // Özel
  var isim = "Robert";
  return {
    ismiGetir : function () {
      return isim;
    },
    ismiBelirle : function (yeniIsim) {
      isim = yeniIsim;
    }
  };
}();
alert(kisi.isim); // undefined
alert(kisi.ismiGetir()); // "Robert"
kisi.ismiBelirle("Robert Nyman");
alert(kisi.ismiGetir()); // "Robert Nyman"</pre>
<p>Bunun güzelliği, artık nelerin genel olarak görüneceğini(ve değiştirilebileceğini), nelerin ise özel olacağını dolayısıyla da kimsenin erişememesine ve değiştirememesine siz karar verebileceksiniz. Yukardaki değişkenin ismi fonksiyonun bağlamı dışında gizlidir, fakat ismiGetir ve ismiBelirle fonksiyonları aynı kaplamda yaratıldıkları için ilgili değişkenin referansına sahiptirler ve kendisine ulaşabilirler.</p>
<h2>Sonuç</h2>
<p>Naçizane umudum, bu yazıyı okuduktan sonra, ister acemi, ister uzman bir programcı olun, JavaScript'deki kapsam ve kaplamlar ile ilgili daha net bir görüş açısı kazanmanızdır. Sorular ve geri beslemelere her zaman açığım ve konuyla ilgili gerçekten önemli her türlü bilgi için makaleyi hemen güncellerim.</p>
<p>Mutlu kodlamalar!</p>
<div class="shr-publisher-219"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjavascript-kapsam-ve-kaplamlari-anlamak%2F' data-shr_title='JavaScript+kapsam+ve+kaplamlar%C4%B1+anlamak'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjavascript-kapsam-ve-kaplamlari-anlamak%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjavascript-kapsam-ve-kaplamlari-anlamak%2F' data-shr_title='JavaScript+kapsam+ve+kaplamlar%C4%B1+anlamak'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjavascript-kapsam-ve-kaplamlari-anlamak%2F' data-shr_title='JavaScript+kapsam+ve+kaplamlar%C4%B1+anlamak'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/javascript-kapsam-ve-kaplamlari-anlamak/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>jTopLeft &#8211; Bir elemanın sayfa üzerindeki yerini bulma</title>
		<link>http://www.karalamalar.net/jtopleft-bir-elemanin-sayfa-uzerindeki-yerini-bulma/</link>
		<comments>http://www.karalamalar.net/jtopleft-bir-elemanin-sayfa-uzerindeki-yerini-bulma/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 14:56:17 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[left]]></category>
		<category><![CDATA[position]]></category>
		<category><![CDATA[pozisyon]]></category>
		<category><![CDATA[pozisyon bulma]]></category>
		<category><![CDATA[sol]]></category>
		<category><![CDATA[top]]></category>
		<category><![CDATA[üst]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=215</guid>
		<description><![CDATA[JavaScript ile bir elemanın tarayıcının görüş alanına göre ya da ebeveyni olan diğer bir elemana göre x ve y koordinatlarını belirlemeye yönelik bir betik hazırladım ve jQuery eklentisi haline getirdim. Eklentinin kendisini ve sıkıştırılmış halini aşağıda bulabilirsiniz. Kullanımı: var top = $('#elm').top(); var left = $('#elm').left(); var pos = $('#elm').pos(); top = pos.top; left = [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>JavaScript ile bir elemanın tarayıcının görüş alanına göre ya da ebeveyni olan diğer bir elemana göre x ve y koordinatlarını belirlemeye yönelik bir betik hazırladım ve jQuery eklentisi haline getirdim. Eklentinin kendisini ve sıkıştırılmış halini aşağıda bulabilirsiniz.</p>
<p>Kullanımı:</p>
<pre class="brush:javascript">var top = $('#elm').top();

var left = $('#elm').left();

var pos = $('#elm').pos();
top = pos.top;
left = pos.left;</pre>
<pre class="brush:javascript">/*
 * jTopLeft
 * http://www.karalamalar.net/
 *
 * Copyright (c) 2009 İzzet Emre Erkan
 * Licensed under Creative Commons Attribution-Share Alike 3.0 Unported License
 * http://creativecommons.org/licenses/by-sa/3.0/
 *
 * Date: 2009-10-12 17:56:24 +0300 (Mon, 12 Oct 2009)
 * Revision: 3
 */
(function($){
  $.fn.extend({
    top: function(obj) {
      var o = findPos(this.get(0));
      return obj ? o - findPos(obj) : o;
    },
    left: function(obj) {
      var o = findPos(this.get(0),true);
      return obj ? o - findPos(obj,true) : o;
    },
    pos: function(obj) {
      var pos = {},o;

      o = findPos(this.get(0));
      pos.top = obj ? o - findPos(obj) : o;

      o = findPos(this.get(0),true);
      pos.left = obj ? o - findPos(obj,true) : o;

      return pos;
    }
  });
  function findPos(o,l){
    var x = 0;
    if (o.offsetParent) {
      x = l ? o.offsetLeft : o.offsetTop;
      while (o = o.offsetParent)
        x += l ? o.offsetLeft : o.offsetTop;
    }
    return x;
  }
})(jQuery);</pre>
<p>Paketin küçültülmüş halini (802 byte) <a href='http://www.karalamalar.net/dosyalar/2009/10/jTopLeft.zip'>buradan</a> edinebilirsiniz.</p>
<div class="shr-publisher-215"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjtopleft-bir-elemanin-sayfa-uzerindeki-yerini-bulma%2F' data-shr_title='jTopLeft+-+Bir+eleman%C4%B1n+sayfa+%C3%BCzerindeki+yerini+bulma'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjtopleft-bir-elemanin-sayfa-uzerindeki-yerini-bulma%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjtopleft-bir-elemanin-sayfa-uzerindeki-yerini-bulma%2F' data-shr_title='jTopLeft+-+Bir+eleman%C4%B1n+sayfa+%C3%BCzerindeki+yerini+bulma'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fjtopleft-bir-elemanin-sayfa-uzerindeki-yerini-bulma%2F' data-shr_title='jTopLeft+-+Bir+eleman%C4%B1n+sayfa+%C3%BCzerindeki+yerini+bulma'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/jtopleft-bir-elemanin-sayfa-uzerindeki-yerini-bulma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>strExtensions &#8211; JavaScript için string uzantıları</title>
		<link>http://www.karalamalar.net/strextensions-javascript-icin-string-uzantilari/</link>
		<comments>http://www.karalamalar.net/strextensions-javascript-icin-string-uzantilari/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 06:32:51 +0000</pubDate>
		<dc:creator>kara</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://www.karalamalar.net/?p=212</guid>
		<description><![CDATA[JavaScript kullanırken eksikliğini hissettiğim bir kaç string metot var. padLeft, padRight, trimLeft, trimRight ve trim metotları varsayılan string metotları arasında yer almıyor. Zaman içinde çeşitli projelerde bu metotlara ihtiyaç duydukça yazıp yazıp bir kenara koymuştum. Şimdi bu metotları toplayıp ufak bir paket oluşturdum ve sizlerle de paylaşayım dedim. valiDate v2.0&#8216;ı da bu pakete dahil ettim. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>JavaScript kullanırken eksikliğini hissettiğim bir kaç string metot var. padLeft, padRight, trimLeft, trimRight ve trim metotları varsayılan string metotları arasında yer almıyor. Zaman içinde çeşitli projelerde bu metotlara ihtiyaç duydukça yazıp yazıp bir kenara koymuştum. Şimdi bu metotları toplayıp ufak bir paket oluşturdum ve sizlerle de paylaşayım dedim. <a href="http://www.karalamalar.net/validate-v2-0/">valiDate v2.0</a>&#8216;ı da bu pakete dahil ettim. Metotları aşağıda bulabilirsiniz;</p>
<pre class="brush:javascript">/*
 * strExtensions - String extensions
 * http://www.karalamalar.net/
 *
 * Copyright (c) 2009 İzzet Emre Erkan
 * Licensed under Creative Commons Attribution-Share Alike 3.0 Unported License
 * http://creativecommons.org/licenses/by-sa/3.0/
 *
 * Date: 2009-10-08 17:43:34 +0300 (Thu, 08 Oct 2009)
 * Revision: 2
 */
String.prototype.trimLeft =
  function(c) {
    c = c || ' ';
    return this.replace(new RegExp('^'+c+'+'),"");
  };
String.prototype.trimRight =
  function(c) {
    c = c || ' ';
    return this.replace(new RegExp(''+c+'+$'),"");
  };
String.prototype.trim =
  function(c) {
    return this.trimLeft(c).trimRight(c);
  };
String.prototype.padLeft =
  function(l, c) {
    c = c || ' ';
    var s = this.toString();
    while (s.length < l) s = c + s;
    return s;
  }
String.prototype.padRight =
  function(l, c) {
    c = c || ' ';
    var s = this.toString();
    while (s.length < l) s = s + c;
    return s;
  }
String.prototype.valiDate =
  function() {
    if(/^(0[1-9]|[12][0-9]PO|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}$/.test(this)) {
      var v = this.replace(/[- /]/g,'.').split('.');
      var d=parseInt(v[0],10), m=parseInt(v[1],10), y=parseInt(v[2],10);
      var o = new Date(y, m - 1, d);
      return o.getDate() == d &#038;&#038; o.getMonth() + 1 == m &#038;&#038; o.getFullYear() == y;
    }
    else
      return false;
  }</pre>
<p>Paketin küçültülmüş halini (1130 byte) <a href='http://www.karalamalar.net/dosyalar/2009/10/strExtensions.zip'>buradan edinebilirsiniz.</p>
<div class="shr-publisher-212"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fstrextensions-javascript-icin-string-uzantilari%2F' data-shr_title='strExtensions+-+JavaScript+i%C3%A7in+string+uzant%C4%B1lar%C4%B1'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fstrextensions-javascript-icin-string-uzantilari%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fstrextensions-javascript-icin-string-uzantilari%2F' data-shr_title='strExtensions+-+JavaScript+i%C3%A7in+string+uzant%C4%B1lar%C4%B1'></a><a class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.karalamalar.net%2Fstrextensions-javascript-icin-string-uzantilari%2F' data-shr_title='strExtensions+-+JavaScript+i%C3%A7in+string+uzant%C4%B1lar%C4%B1'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.karalamalar.net/strextensions-javascript-icin-string-uzantilari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

