<?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>thexpot.net &#187; Araçlar</title>
	<atom:link href="http://www.thexpot.net/tag/araclar/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thexpot.net</link>
	<description>C++ is a gift from sadists to masochists</description>
	<lastBuildDate>Wed, 16 Nov 2011 08:28:37 +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>NUnit.Framework.SyntaxHelpers</title>
		<link>http://www.thexpot.net/2008/07/nunit-framework-syntaxhelpers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nunit-framework-syntaxhelpers</link>
		<comments>http://www.thexpot.net/2008/07/nunit-framework-syntaxhelpers/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 16:19:41 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[NUnit]]></category>

		<guid isPermaLink="false">http://www.thexpot.net/?p=122</guid>
		<description><![CDATA[<a href="http://www.thexpot.net/2008/07/nunit-framework-syntaxhelpers/" title="NUnit.Framework.SyntaxHelpers"></a>.Net&#8217;te test için NUnit&#8217;ten başka kütüphane kullanmıyorum. Uzun zamandır da 2.2 sürümünü kullanmaktaydım ve memnundum fakat geçenlerde 2.4 sürümündeki bir özellik dikkatimi çekti. NUnit.Framework.SyntaxHelpers namespace&#8217;inin altında testleri daha okunaklı kılacak bir takım yardımcı sınıflar ve metodlar eklemişler, güzel olmuş. Örneğin &#8230;<p class="read-more"><a href="http://www.thexpot.net/2008/07/nunit-framework-syntaxhelpers/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2008/07/nunit-framework-syntaxhelpers/" title="NUnit.Framework.SyntaxHelpers"></a><p>.Net&#8217;te test için NUnit&#8217;ten başka kütüphane kullanmıyorum. Uzun zamandır da 2.2 sürümünü kullanmaktaydım ve memnundum fakat geçenlerde 2.4 sürümündeki bir özellik dikkatimi çekti.
NUnit.Framework.SyntaxHelpers namespace&#8217;inin altında testleri daha okunaklı kılacak bir takım yardımcı sınıflar ve metodlar eklemişler, güzel olmuş.
Örneğin önceden yazdığımız bu testi:</p>

<pre><code>Assert.IsNotNull(items);
Assert.AreEqual(2, items.Count);
</code></pre>

<p>artık şu şekilde yazabiliriz:</p>

<pre><code>Assert.That(items, Is.Not.Null);
Assert.That(items.Count, Is.EqualTo(2));
</code></pre>

<p>İşinize yarayabilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2008/07/nunit-framework-syntaxhelpers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ReSharper: Konumlanma, Arama, Tarama</title>
		<link>http://www.thexpot.net/2008/03/resharper-konumlanma-arama-tarama/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=resharper-konumlanma-arama-tarama</link>
		<comments>http://www.thexpot.net/2008/03/resharper-konumlanma-arama-tarama/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 18:34:39 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[ReSharper]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=109</guid>
		<description><![CDATA[Biraz da ReSharper'ın konumlanma, arama tarama özellikleri üzerinden bahsetmek istiyorum. Visual Studio'da bir dosyaya gitmek, bir tipe konumlanmak veya bir dosya içerisinde arama yapmak o kadar zor ve yavaşki Resharper'ın bu özellikleri altın değerinde oluyor.<p class="read-more"><a href="http://www.thexpot.net/2008/03/resharper-konumlanma-arama-tarama/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2008/03/resharper-konumlanma-arama-tarama/" title="ReSharper: Konumlanma, Arama, Tarama"></a><p>Biraz da ReSharper&#8217;ın konumlanma, arama tarama özellikleri üzerinden bahsetmek istiyorum. Visual Studio&#8217;da bir dosyaya gitmek, bir tipe konumlanmak veya bir dosya içerisinde arama yapmak o kadar zor ve yavaşki Resharper&#8217;ın bu özellikleri altın değerinde oluyor.<span id="more-109"></span>
Resharper&#8217;da bir Tipe (Goto Type,<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">T</span>), dosyaya (Goto File, <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">T</span>), sembole (Goto Symbol, <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">T</span>) veya üyeye (Goto Member, <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">*</span>) konumlanma işlemlerinin tümü birbirinin aynı bir arayüzden yapılıyor:
Konumlanmak istediğiniz öğenin ister baş harflerini, isterseniz içinde geçen büyük harfleri ya da DOS&#8217;tan kalma joker karakterleri yazarak arama yapabilirsiniz.<br /></p>

<p><img src="http://www.thexpot.net/img/resharper/rs_gototype.png"/>
Kod editörü içersinde de amaca yönelik konumlanma kısayolları mevcut:</p>

<h5><strong>Navigate To:</strong> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">,</span>)</h5>

<p>Herhangi bir tipin üzerindeyken bu komutu çalıştırdığınızda o tip ile ilgili yapabileceklerinizin menüsü ile karşılaşırsınız. Bir sınıf üzerindeyseniz, alt/üst sınıflarına, tipin tanımlandığı dosyaya gidebilirsiniz:</p>

<p><img src="http://www.thexpot.net/img/resharper/rs_navigate_to.png"/>
<h5><strong>Find Usages:</strong> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">F12</span>)</h5>
Bir tipin tüm proje içinde kullanıldığı yerleri listeletmek için bu komutu kullanabilirsiniz.<br />
<img src="http://www.thexpot.net/img/resharper/rs_find_usages.png"/>
Sonuçlar bir popup içerisinde gelecektir. Eğer sonuçlar görebileceğinizden fazla ise bunları numpaddeki <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">+</span> tuşuna basarak Arama sonuçları penceresine aktarabilirsiniz.</p>

<h5><strong>Highlight Usages In File:</strong> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">F11</span>)</h5>

<p>Kursörün üzerinde bulunduğu tipin dosya içerisinde kullanıldığı tüm yerler işaretlenecektir. Kırmızı zemin rengiyle gösterilenlerde atama/yazma işlemi varken mavi zemin rengi olanlar sadece okuma olduğunuzu gösterir. İşaretli bölgeler arasında dolaşmak için <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">PgUp</span> ve <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">PgDown</span> tuşlarını kullanabilirsiniz.<br />
<img src="http://www.thexpot.net/img/resharper/rs_highlight_usages.png"/></p>

<h5><strong>Type Hierarchy:</strong> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">E</span>,<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">H</span>)</h5>

<p>Kursörün üzerinde bulunduğu bir tipin içinde bulunduğu tüm hiyerarşik yapıyı sorgulayabilirsiniz:<br />
<img src="http://www.thexpot.net/img/resharper/rs_type_hierarchy.png"/></p>

<h5><strong>Locate In Solution Explorer:</strong> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">L</span>)</h5>

<p>Kod editöründe açık olan bir dosyaya solution explorerda konumlanır. Çok basit ama çok pratik bir özellik.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2008/03/resharper-konumlanma-arama-tarama/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ReSharper</title>
		<link>http://www.thexpot.net/2008/03/resharper/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=resharper</link>
		<comments>http://www.thexpot.net/2008/03/resharper/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 17:57:12 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[ReSharper]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=108</guid>
		<description><![CDATA[Efendim, uzun zamandır yapmak isteyipte bir türlü zaman bulamadığım <a href="http://www.jetbrains.com/ReSharper" target="_blank">ReShaper</a> yazı dizisine başlıyorum ziyadesiyle. Öncelikle ReSharper nedir bilmeyen arkadaşları onunla tanışmaya davet ediyorum. Hemen gidip <a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+Nightly+Builds">Nightly Build</a>lerden "Works here" yazanlardan bir tanesini indirip kurun ki anlattıklarımın bir anlamı olsun. ReSharper için kısaca Visual Studio'yu kullanılabilir kılan bir eklenti diyebiliriz. Benzer bir ürün de Developer Express'in <a href="http://www.devexpress.com/Products/NET/IDETools/CodeRush/" target="_blank">CodeRush</a>'ıdır.<p class="read-more"><a href="http://www.thexpot.net/2008/03/resharper/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2008/03/resharper/" title="ReSharper"></a><p>Efendim, uzun zamandır yapmak isteyipte bir türlü zaman bulamadığım <a href="http://www.jetbrains.com/resharper" target="_blank">ReShaper</a> yazı dizisine başlıyorum ziyadesiyle. Öncelikle ReSharper nedir bilmeyen arkadaşları onunla tanışmaya davet ediyorum. Hemen gidip <a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+Nightly+Builds">Nightly Build</a>lerden &#8220;Works here&#8221; yazanlardan bir tanesini indirip kurun ki anlattıklarımın bir anlamı olsun. ReSharper için kısaca Visual Studio&#8217;yu kullanılabilir kılan bir eklenti diyebiliriz. Benzer bir ürün de Developer Express&#8217;in <a href="http://www.devexpress.com/Products/NET/IDETools/CodeRush/" target="_blank">CodeRush</a>&#8216;ıdır. Fakat ikisini de tam anlamıyla denedikten sonra sizde benim gibi Developer Express otursun grid yazmaya devam etsin diyeceksiniz.  ReSharper&#8217;ın belli başlı özelliklerini 4 kategoride toplayabiliriz:
<ul>
    <li>Kullanım kolaylığı sağlayan özellikleri (Smart Enter, Smart Code Completion, Surround With, vs)</li>
    <li><a href="http://www.thexpot.net/2008/03/resharper-konumlanma-arama-tarama/">Konumlanma özellikleri (Find Type, Find Usages, Go To Inheritor )</a></li>
    <li>Refactoringler</li>
    <li>Kod analizi (Quick Fix, Context Actions, vs)</li>
</ul>
<span id="more-108"></span>
Sırayla anlatmaya başlayayım:
<h5><strong>Smart Enter:</strong> </h5>(<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color:black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Enter</span>)
Herhangi bir dil elemanı veya bloğun otomatik olarak tamamlanmasını sağlar. Örneğin:<br /></p>

<p><img src="http://www.thexpot.net/img/resharper/rs_smart_enter.png" alt="" /></p>

<p>if anahtar kelimesinden sonra Ctrl+Shift+Enter tuşlarına basınca if bloğu otomatik olarak tamamlanacaktır.
<h5><strong>Type  Completion:</strong></h5> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Space</span>)
using ile dahil etmediğiniz bir sınıf kullanmanız gerektiğinde önekleri yazdıktan sonra çalıştırdığınızda hem using eklenmesini hem de istediğiniz sınıf adının tamamlanmasını sağlar. Örnek:<br /></p>

<p><img src="http://www.thexpot.net/img/resharper/rs_smart_completion.png" alt="" /></p>

<p>Tamamlama listesinden WebRequest seçildiği zaman usingler arasına System.Net namespace&#8217;i de eklenecektir. Dikkat ettiyseniz WebRequest&#8217;i anlatmak için WebR yazmadık sadece WR harflerini yazmamız yetti, ReSharper&#8217;ın her yerinde CamelHump kullanarak tamamlama yapabilirsiniz.
<h5><strong>Smart Code Completion:</strong></h5> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Space</span>)
Çoğu zaman Bir yerde kod tamamla istediğimizde sadece bulunduğumuz yere uygun önermeleri görmek isteriz. ReSharper bunu yaparken bazı ekstra özelliklerde sunuyor. Örneğin:<br /></p>

<p><img src="http://www.thexpot.net/img/resharper/rs_smart_completion3.png" alt="" /></p>

<p>Count Extension metoduna lambda expression, Predicate veya anonymous delegate geçebiliriz. Yani count içine Func&lt;int,bool&gt; imzasına sahip herhangi bir şey yazılabilir. ReSharper bize hepsini öneriyor. Create method Predicate(int) seçeneğinizi seçersen bool döndüren ve int tipinde tek parametre kabul eden bir metot otomatik olarak oluşturulacaktır.
<h5><strong>Symbol Completion:</strong></h5> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">→</span>)
Bir tipi belirttikten sonra değişken ismini <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">→</span> tuşlarını kullanarak tamamlatabiliriz. Örneğin:<br /></p>

<p><img src="http://www.thexpot.net/img/resharper/rs_smart_completion2.png" alt="" /></p>

<p>WebRequest sınıfı için 2 tane öneri ile geliyor, çoğu durumda bu önerilerden birisi zaten yazmak istediğimiz olacaktır. Bu özelliğin aktif olması için ReSharper&#8217;ın intellisense&#8217;ini kullanıyor olmanız lazım.
<h5><strong>Surround With:</strong></h5> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">E</span>, <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">U</span>)
Herhangi bir kodu seçtikten sonra bu tuş kombinasyonunu uygularsanız, Surround With kısayol menüsü açılır:<br />
<img src="http://www.thexpot.net/img/resharper/rs_surround_with.png" alt="" />
Bu menüde de bir şey yazmanıza gerek yok. Kullanmak istediğiniz seçeneğin kısayoluna basmanız yeterli. Bu özelliği kullandıkça ne kadar rahatlık getirdiğini anlayacaksınız.
<h5><strong>Incremental Selection:</strong></h5> (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">W</span> ya da <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">→</span>) ve (<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Shift</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">W</span> ya da <span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Ctrl</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">Alt</span>+<span style="border:0.2em solid; border-color:#ddd #bbb #bbb #ddd; background:#eee; color: black; padding:0.1em 0.4em; font-size:0.8em; white-space:nowrap;">←</span>)
Incremental Selection komutunu her kullandığımızda kod bloklarına göre seçim gitgide arttırılacaktır. Birkaç deneme yaparak bu özelliğin nasıl çalıştığını anlayabilirsiniz.<br />
<img src="http://www.thexpot.net/img/resharper/rs_incremental_selection.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2008/03/resharper/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Resharper gösterimi</title>
		<link>http://www.thexpot.net/2007/10/resharper-gosterimi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=resharper-gosterimi</link>
		<comments>http://www.thexpot.net/2007/10/resharper-gosterimi/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 23:47:08 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[ReSharper]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=102</guid>
		<description><![CDATA[<a href="http://www.jetbrains.com/resharper/" target="_blank">Resharper</a>, JetBrains tarafından geliştirilmiş bir Visual Studio eklentisinin adı.

Bu eklenti kod yazmayı oldukça kolaylaştıran ve hatta bazı durumlarda olası buglar için bile sizi uyaran mükemmel bir araç. Resharper ile kod yazmanın nasıl olduğunu göstermek için 9 dakika civarında bir video hazırladım. Kullanabildiğim kadar çok özelliği kullanmaya çalıştım. Bazı yerlerde sırf neler önerdiğini göstermek için bilerek hatalı ya da eksik yazdım. Video bittikten sonra birde kendim seyrettim ve size şunu söyleyebilirimki videoda kullandıklarım Resharper'ın yapabildiklerinin sadece %10'u olabilir. Fakat size yinede fikir verir umarım.<p class="read-more"><a href="http://www.thexpot.net/2007/10/resharper-gosterimi/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2007/10/resharper-gosterimi/" title="Resharper gösterimi"></a><p><a href="http://www.jetbrains.com/resharper/" target="_blank">Resharper</a>, JetBrains tarafından geliştirilmiş bir Visual Studio eklentisinin adı.</p>

<p>Bu eklenti kod yazmayı oldukça kolaylaştıran ve hatta bazı durumlarda olası buglar için bile sizi uyaran mükemmel bir araç. Resharper ile kod yazmanın nasıl olduğunu göstermek için 9 dakika civarında bir video hazırladım. Kullanabildiğim kadar çok özelliği kullanmaya çalıştım. Bazı yerlerde sırf neler önerdiğini göstermek için bilerek hatalı ya da eksik yazdım. Video bittikten sonra birde kendim seyrettim ve size şunu söyleyebilirimki videoda kullandıklarım Resharper&#8217;ın yapabildiklerinin sadece %10&#8242;u olabilir. Fakat size yinede fikir verir umarım.</p>

<p>Bir de son not olarak yazdığım kodun bir anlamı veya mantığı yok, sadece bir şeyler yazmak için yazdım :)</p>

<p><a href="http://www.thexpot.net/files/resharper_action/resharper_action.html" target="_blank">Videoyu izlemek için buraya tıklayın</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2007/10/resharper-gosterimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testlerimiz kodumuzun ne kadarını kapsıyor?</title>
		<link>http://www.thexpot.net/2007/10/testlerimiz-kodumuzun-ne-kadarini-kapsiyor/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=testlerimiz-kodumuzun-ne-kadarini-kapsiyor</link>
		<comments>http://www.thexpot.net/2007/10/testlerimiz-kodumuzun-ne-kadarini-kapsiyor/#comments</comments>
		<pubDate>Tue, 02 Oct 2007 18:20:54 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=95</guid>
		<description><![CDATA[Yazdığımız kodun doğru çalışıp çalışmadığını, istediğimiz özellikleri sağlayıp sağlamadığını testler yazarak garantilemeye çalışırız. Birçok programlama dili için test araçları mevcut, Delphi için <a href="http://dunit.sourceforge.net/" targer="_blank">DUnit</a>, java için <a href="http://www.junit.org/" target="_blank">JUnit</a>, .Net için <a href="http://www.nunit.org/" target="_blank">NUnit</a>, <a href="http://www.mbunit.com/" target="_blank">MbUnit</a> vs... Fakat yazdığımız bu testlerin kodumuzun ne kadarını test ettiğini, hiç atladığımız durumlar olup olmadığını merak etmiyor musunuz? İşte bunun içinde başka bir araç var ve adı <a href="http://ncover.org/" target="_blank">NCover</a>. 
<h3>Kod Kapsama nedir?</h3>
Testlerimizin kodun ne kadarına uğradığını ve dolayısıyla tümüne oranla ne kadarlık kod parçasının testlere dahil olduğunu ölçmek için kullanılan kalite kontrol yöntemi "Code Coverage" <i>(Kod Kapsama)</i> diye adlandırılır. 

Kod kapsama ile ne gibi bir ölçüm yaparız?
<ul>
<li>Test senaryolarımız tarafından ulaşılmayan, test edilmeyen kod parçacıklarını tespit edebiliriz
<li>Test edilmeyen kod parçalarını da içerecek yeni testler yazabilir ya da eski testlerimizi genişletebiliriz.
<li>Gereksiz testleri tespit edip kaldırabiliriz.
<li>Aslında hiç kullanmadığımız kod parçacıklarını ayıklayabiliriz
</ul>

Ben Visual Studio için <a href="http://www.testdriven.net/" target="_blank">TestDriven.Net</a> eklentisi kullanıyorum ve bu eklenti ile hazır NCover desteği de geliyor ki işimizi fazlasıyla kolaylaştırıyor. TestDriven.Net, kişisel kullanım için ücretsiz, fakat Visual C# Express Edition kullanıyorsanız bu eklentiden faydalanamazsınız çünkü Express Editionlar eklenti yüklenmesine izin vermiyor. <strike>Başka bir alternatif ise JetBrains'in <a href="http://www.jetbrains.com/unitrun/" target="_blank">UnitRun</a>'ı ki bu üründe ücretsiz.</strike>

Diyelimki bir tane <em>Registration</em> adında bir DTO sınıfınız ve bu sınıftaki bilgileri doğrulayan <em>RegistrationValidator</em> diye başka bir sınıfız var.<p class="read-more"><a href="http://www.thexpot.net/2007/10/testlerimiz-kodumuzun-ne-kadarini-kapsiyor/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2007/10/testlerimiz-kodumuzun-ne-kadarini-kapsiyor/" title="Testlerimiz kodumuzun ne kadarını kapsıyor?"></a><p>Yazdığımız kodun doğru çalışıp çalışmadığını, istediğimiz özellikleri sağlayıp sağlamadığını testler yazarak garantilemeye çalışırız. Birçok programlama dili için test araçları mevcut, Delphi için <a href="http://dunit.sourceforge.net/">DUnit</a>, java için <a href="http://www.junit.org/" target="_blank">JUnit</a>, .Net için <a href="http://www.nunit.org/" target="_blank">NUnit</a>, <a href="http://www.mbunit.com/" target="_blank">MbUnit</a> vs&#8230; Fakat yazdığımız bu testlerin kodumuzun ne kadarını test ettiğini, hiç atladığımız durumlar olup olmadığını merak etmiyor musunuz? İşte bunun içinde başka bir araç var ve adı <a href="http://ncover.org/" target="_blank">NCover</a>.
<h3>Kod Kapsama nedir?</h3>
Testlerimizin kodun ne kadarına uğradığını ve dolayısıyla tümüne oranla ne kadarlık kod parçasının testlere dahil olduğunu ölçmek için kullanılan kalite kontrol yöntemi &#8220;Code Coverage&#8221; <em>(Kod Kapsama)</em> diye adlandırılır.</p>

<p>Kod kapsama ile ne gibi bir ölçüm yaparız?
<ul>
    <li>Test senaryolarımız tarafından ulaşılmayan, test edilmeyen kod parçacıklarını tespit edebiliriz</li>
    <li>Test edilmeyen kod parçalarını da içerecek yeni testler yazabilir ya da eski testlerimizi genişletebiliriz.</li>
    <li>Gereksiz testleri tespit edip kaldırabiliriz.</li>
    <li>Aslında hiç kullanmadığımız kod parçacıklarını ayıklayabiliriz</li>
</ul>
Ben Visual Studio için <a href="http://www.testdriven.net/" target="_blank">TestDriven.Net</a> eklentisi kullanıyorum ve bu eklenti ile hazır NCover desteği de geliyor ki işimizi fazlasıyla kolaylaştırıyor. TestDriven.Net, kişisel kullanım için ücretsiz, fakat Visual C# Express Edition kullanıyorsanız bu eklentiden faydalanamazsınız çünkü Express Editionlar eklenti yüklenmesine izin vermiyor. <span style="text-decoration: line-through;">Başka bir alternatif ise JetBrains&#8217;in <a href="http://www.jetbrains.com/unitrun/" target="_blank">UnitRun</a>&#8216;ı ki bu üründe ücretsiz.</span></p>

<p>Diyelimki bir tane <em>Registration</em> adında bir DTO sınıfınız ve bu sınıftaki bilgileri doğrulayan <em>RegistrationValidator</em> diye başka bir sınıfız var.
<span id="more-95"></span>
<pre class="prettyprint">
public class Registration
{
  string name;
  string password;
  public string Name
  {
    get { return name; }
    set { name = value; }
  }
  public string Password
  {
    get { return password; }
    set { password = value; }
  }
}
public class Validator
{
  public const int MIN&lt;em&gt;PASSWORD&lt;&#47;em&gt;LENGTH = 6;
  public const int MIN&lt;em&gt;NAME&lt;&#47;em&gt;LENGTH = 5;
  protected virtual bool IsValidUserName(Registration registration)
  {
    return registration.Name.Length &gt; MIN&lt;em&gt;NAME&lt;&#47;em&gt;LENGTH;
  }
  protected virtual bool IsValidPassword(Registration registration)
  {
    return
      registration.Password.Length &gt; MIN&lt;em&gt;PASSWORD&lt;&#47;em&gt;LENGTH &amp;&amp;
      registration.Password.IndexOfAny(&#34;0123456789&#34;.ToCharArray())&gt;-1;
  }
  public virtual bool IsValid(Registration registration)
  {
    return IsValidUserName(registration) &amp;&amp; IsValidPassword(registration);
  }
}</pre>
Testlermizi de yazmışız:
<pre class="prettyprint">
&#91;TestFixture&#93;
public class ValidationTests
{
  private Validator &lt;em&gt;validator = new Validator();
  private Registration _registration;
  &#91;SetUp&#93;
  public void SetUp()
  {
    _registration = new Registration();
    _registration.Name = &#34;t-hex&#34;;
    _registration.Password = &#34;abcd&#34;;
  }
  &#91;Test&#93;
  public void Should&lt;&#47;em&gt;not&lt;em&gt;validate&lt;&#47;em&gt;if&lt;em&gt;name&lt;&#47;em&gt;is&lt;em&gt;shorter&lt;&#47;em&gt;than&lt;em&gt;minumun&lt;&#47;em&gt;length()
  {
    Assert.IsFalse(&lt;em&gt;validator.IsValid(&lt;&#47;em&gt;registration));
  }
  &#91;Test&#93;
  public void Should&lt;em&gt;not&lt;&#47;em&gt;validate&lt;em&gt;if&lt;&#47;em&gt;password&lt;em&gt;doesnt&lt;&#47;em&gt;contain&lt;em&gt;numbers()
  {
    Assert.IsFalse(&lt;&#47;em&gt;validator.IsValid(&lt;em&gt;registration));
  }
  &#91;Test&#93;
  public void Should&lt;&#47;em&gt;not&lt;em&gt;validate&lt;&#47;em&gt;if_password__is_shorter_than_minimum_length()
  {
    Assert.IsFalse(_validator.IsValid(_registration));
  }
}</pre>
Buraya kadar her şey güzel, testlerimizi çalıştırdık ve beklediğimiz sonucu aldık.
<code>
3 passed, 0 failed, 0 skipped, took 0,42 seconds.
</code></p>

<p>Peki gerçekten doğru mu yaptık? Bir de NCover ile bakalım:<br />
<img src="http://www.thexpot.net/img/95_ncover1.png" alt="" />
Neden oranlar bu kadar düşük? 100% olması lazım zaten iki üç tane metodu test ediyoruz burada. Hatta sonuçlardan anladımıza göre <em>get_Password</em>, <em>IsPasswordValid</em> metodları hiç çağırılmamış!</p>

<p>Bunun nedeni lazy evaluation. C# derleyicisi tümü &#8220;ve&#8221; ile bağlanmış bir ifade de ilk false döndükten sonrakileri hiç çalıştırmaz çünkü zaten her durumda tüm sonuç false olacaktır. Bu durumda da biz ilk testi yaptığımızda uzunluk 5 karakterden kısa olduğu için false alıyoruz ve aslında şifreyi hiç kontrol etmiyoruz. Hatta daha vahimi ise şifreyi test eden kodumuzu gerçektende yanlış yazmışız, IndexOfAny metodu -1&#8242; eşit değil -1&#8242;den büyük olmalıydı.</p>

<p>Kodumuzu düzeltelim:
<pre class="prettyprint">
protected virtual bool IsValidPassword(Registration registration)
{
  bool valid = registration.Password.Length &gt; MIN&lt;em&gt;PASSWORD&lt;&#47;em&gt;LENGTH;
  valid = valid &amp;&amp; registration.Password.IndexOfAny(&#34;0123456789&#34;.ToCharArray()) &gt; -1;
  return valid;
}
&#47;&#47;testlerde de
&#91;Test&#93;
public void Should&lt;em&gt;not&lt;&#47;em&gt;validate&lt;em&gt;if&lt;&#47;em&gt;password&lt;em&gt;doesnt&lt;&#47;em&gt;contain&lt;em&gt;numbers()
{
  _registration.Name = &#34;longername&#34;;
  _registration.Password = &#34;abcdefg&#34;;
  Assert.IsFalse(&lt;&#47;em&gt;validator.IsValid(_registration));
}</pre>
Çalıştıralım ve 100% kapsamayı görelim.</p>

<p>Burdan 2 sonuç çıkarabiliriz:
Birincisi; Test edilmesi gereken koşulların hepsini &#8220;ve&#8221; ile bağlamayın, bu hem okunurluğu azaltır, hem de yukarıdaki gibi hatalara neden olabilir. Onun yerine önce boolean değişkenlere değerleri atayın sonra kontrol edin.
İkincisi de hiçbir zaman emin olmayın.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2007/10/testlerimiz-kodumuzun-ne-kadarini-kapsiyor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hbm2ddl</title>
		<link>http://www.thexpot.net/2006/04/old57/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=old57</link>
		<comments>http://www.thexpot.net/2006/04/old57/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 13:18:01 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=57</guid>
		<description><![CDATA[Ant Script içinde <b>taskdef</b> ile yeni bir görev olarak belittiğiniz <b>hibernatetool</b> taginin içersinde kullanabileceğiniz altgörevlerden birinin adı <b>hbm2ddl</b>. Adı ise ne yaptığını açıklamaya yetiyor: HBM dosyalarını kullanarak bir DDL script oluşturmak.

build.xml scriptine aşağıdaki eklemeyi yapıp

<code lang="xml">
        <hibernatetool destdir="src">
            <configuration configurationfile="src/hibernate.cfg.xml">
                <fileset dir="src">
                    <include name="*.hbm.xml"/>
                </fileset>
            </configuration>
            <hbm2ddl 
                create="true" 
                update="true" 
                format="true" 
                outputfilename="ddl.sql" 
                delimiter=";"
            />
        </hibernatetool>
</code><p class="read-more"><a href="http://www.thexpot.net/2006/04/old57/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2006/04/old57/" title="hbm2ddl"></a><p>Ant Script içinde <b>taskdef</b> ile yeni bir görev olarak belittiğiniz <b>hibernatetool</b> taginin içersinde kullanabileceğiniz altgörevlerden birinin adı <b>hbm2ddl</b>. Adı ise ne yaptığını açıklamaya yetiyor: HBM dosyalarını kullanarak bir DDL script oluşturmak.</p>

<p>build.xml scriptine aşağıdaki eklemeyi yapıp</p>

<pre class='prettyprint'>&lt;hibernatetool destdir="src"&gt;
   &lt;configuration configurationfile="src/hibernate.cfg.xml"&gt;
     &lt;fileset dir="src"&gt;
    &lt;include name="*.hbm.xml"/&gt;
 &lt;/fileset&gt;
   &lt;/configuration&gt;
   &lt;hbm2ddl 
      create="true" 
      update="true" 
      format="true" 
      outputfilename="ddl.sql" 
      delimiter=";" /&gt;
&lt;/hibernatetool&gt;
</pre>

<p>çalıştırdığımızda console&#8217;da şöyle bir sonuç almamız lazım.</p>

<pre class='prettyprint'>Buildfile: C:eclipse32workspaceHibernateTestbuild.xml
default:
[hibernatetool] Executing Hibernate Tool with a Standard Configuration
[hibernatetool] 1. task: hbm2ddl (Generates database schema)
[hibernatetool] create table Musteri (ID integer not null, AD varchar(20), SOYAD varchar(20), YAS integer, primary key (ID))
BUILD SUCCESSFUL
Total time: 4 seconds
</pre>

<p>Gördüğünüz gibi, Musteri tablosunun DDL bizim için hazırlandı.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2006/04/old57/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ant Script</title>
		<link>http://www.thexpot.net/2006/04/old55/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=old55</link>
		<comments>http://www.thexpot.net/2006/04/old55/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 13:11:51 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=55</guid>
		<description><![CDATA[Eclipse içinde zaten Ant Script editörü mevcut. Tek yapmanız gereken build.xml adıyla bir dosya oluşturmak ve içeriğini şu şekilde belirlemek:

<code lang="xml">
<?xml version="1.0"?>
<project name="project" default="default">
    <property name="hibernate.path" location="c:/eclipse32/hibernate"/>
    <property name="jaybird.path" location="c:/eclipse32/jaybird"/>
    <taskdef 
        name="hibernatetool" 
        classname="org.hibernate.tool.ant.HibernateToolTask">
        <classpath>
            <fileset dir="${hibernate.path}">
                <include name="*.jar"/>
                    <include name="lib/*.jar"/>
                    <include name="tools/*.jar"/>
            </fileset>
            <fileset dir="${jaybird.path}">
                <include name="*.jar"/>
            </fileset>
        </classpath>
    </taskdef>
    <target name="default" description="açıklama">
        <hibernatetool destdir="src">
            <configuration configurationfile="src/hibernate.cfg.xml">
                <fileset dir="src">
                    <include name="*.hbm.xml"/>
                </fileset>
            </configuration>
        </hibernatetool>
    </target>
</project>
</code>
Bu script dosyasını çalıştırmak için üzerine tıklayın Run As > Ant Build... seçeneğini veya editör açıkken Alt+Shift+X,Q kısayol tuşlarını kullanabilirsiniz.

Hibernate Tools ile ilgili detaylı açıklama ve bir el kitabı hibernate.org adresinde mevcut. O yüzden detaylara girmeyeceğim şimdilik.<p class="read-more"><a href="http://www.thexpot.net/2006/04/old55/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2006/04/old55/" title="Ant Script"></a><p>Eclipse içinde zaten Ant Script editörü mevcut. Tek yapmanız gereken build.xml adıyla bir dosya oluşturmak ve içeriğini şu şekilde belirlemek:</p>

<pre class='prettyprint'>&lt;?xml version="1.0"?&gt;
&lt;project name="project" default="default"&gt;
    &lt;property name="hibernate.path" location="c:/eclipse32/hibernate"/&gt;
    &lt;property name="jaybird.path" location="c:/eclipse32/jaybird"/&gt;
    &lt;taskdef 
        name="hibernatetool" 
        classname="org.hibernate.tool.ant.HibernateToolTask"&gt;
        &lt;classpath&gt;
            &lt;fileset dir="${hibernate.path}"&gt;
                &lt;include name="*.jar"/&gt;
                    &lt;include name="lib/*.jar"/&gt;
                    &lt;include name="tools/*.jar"/&gt;
            &lt;/fileset&gt;
            &lt;fileset dir="${jaybird.path}"&gt;
                &lt;include name="*.jar"/&gt;
            &lt;/fileset&gt;
        &lt;/classpath&gt;
    &lt;/taskdef&gt;
    &lt;target name="default" description="açıklama"&gt;
        &lt;hibernatetool destdir="src"&gt;
            &lt;configuration configurationfile="src/hibernate.cfg.xml"&gt;
                &lt;fileset dir="src"&gt;
                    &lt;include name="*.hbm.xml"/&gt;
                &lt;/fileset&gt;
            &lt;/configuration&gt;
        &lt;/hibernatetool&gt;
    &lt;/target&gt;
&lt;/project&gt;
</pre>

<p>Bu script dosyasını çalıştırmak için üzerine tıklayın <code>Run As &gt; Ant Build...</code> seçeneğini veya editör açıkken Alt+Shift+X,Q kısayol tuşlarını kullanabilirsiniz.</p>

<p>Hibernate Tools ile ilgili detaylı açıklama ve bir el kitabı hibernate.org adresinde mevcut. O yüzden detaylara girmeyeceğim şimdilik.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2006/04/old55/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kurulum</title>
		<link>http://www.thexpot.net/2006/04/old54/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=old54</link>
		<comments>http://www.thexpot.net/2006/04/old54/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 12:11:23 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=54</guid>
		<description><![CDATA[Hibernate Tools, eclipse'e plugin olarak hazırlanmış olarak dağıtılıyor. Yani zip dosyası içindeki klasörleri eclipse'in içine kopyaladığınız zaman bu pluginleri kullanmaya başlayabilirsiniz. Ben Ant Script yoluyla bu araçları kullanmayı daha pratik buluyorum o yüzden bir build.xml dosyası hazırlamamız gerekecek. Bunu yapmadan önce indirdiğiniz zip doyasının içinde bulunan pluginsorg.hibernate.eclipse_3.1.0.beta4libtools klasörünün içindeki tüm jar dosyalarını hibernate'i kurduğunuz klasörün içine  tools diye bir klasör altına kopyalayın.<p class="read-more"><a href="http://www.thexpot.net/2006/04/old54/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2006/04/old54/" title="Kurulum"></a><p>Hibernate Tools, eclipse&#8217;e plugin olarak hazırlanmış olarak dağıtılıyor. Yani zip dosyası içindeki klasörleri eclipse&#8217;in içine kopyaladığınız zaman bu pluginleri kullanmaya başlayabilirsiniz. Ben Ant Script yoluyla bu araçları kullanmayı daha pratik buluyorum o yüzden bir build.xml dosyası hazırlamamız gerekecek. Bunu yapmadan önce indirdiğiniz zip doyasının içinde bulunan pluginsorg.hibernate.eclipse_3.1.0.beta4libtools klasörünün içindeki tüm jar dosyalarını hibernate&#8217;i kurduğunuz klasörün içine  tools diye bir klasör altına kopyalayın.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2006/04/old54/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate Tools</title>
		<link>http://www.thexpot.net/2006/04/old53/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=old53</link>
		<comments>http://www.thexpot.net/2006/04/old53/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 11:15:20 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=53</guid>
		<description><![CDATA[Şu ana kadar bir java sınıfı, bir veritabanı tablosu ve bir de bunları eşleyen Mapping Doyası (*.hbm.xml) dosyası oluşturduk. Tanım modelimizi (Domain model) geliştirdikçe veya değiştirdikçe tek tek bütün bu dosyalara uygulamamız gerekecek. Bu işlem çok vakit alır ve zaman kaybına neden olur. 

Hibernate için hazırladığımız eşleme dosyaları tamamen java sınıfı odaklıdır. Yani bu dosyaları tasarlarken hep java tarafından düşünmeliyiz. Veri tabanı ise sadece bunları saklamak için gerekli ve yeni bir model hazırlarken önemli değildir. İşte bu noktada Hibernate bize <a href="">Hibernate Tools</a> adıyla bir takım araçlar sunuyor. Bu araçları kullanarak eşleme dosyalarından DDL ve Java sınıflarını otomatik olarak oluşturabilirsiniz. <p class="read-more"><a href="http://www.thexpot.net/2006/04/old53/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2006/04/old53/" title="Hibernate Tools"></a><p>Şu ana kadar bir java sınıfı, bir veritabanı tablosu ve bir de bunları eşleyen Mapping Doyası (*.hbm.xml) dosyası oluşturduk. Tanım modelimizi (Domain model) geliştirdikçe veya değiştirdikçe tek tek bütün bu dosyalara uygulamamız gerekecek. Bu işlem çok vakit alır ve zaman kaybına neden olur. </p>

<p>Hibernate için hazırladığımız eşleme dosyaları tamamen java sınıfı odaklıdır. Yani bu dosyaları tasarlarken hep java tarafından düşünmeliyiz. Veri tabanı ise sadece bunları saklamak için gerekli ve yeni bir model hazırlarken önemli değildir. İşte bu noktada Hibernate bize <a href="http://www.hibernate.org/255.html">Hibernate Tools</a> adıyla bir takım araçlar sunuyor. Bu araçları kullanarak eşleme dosyalarından DDL ve Java sınıflarını otomatik olarak oluşturabilirsiniz. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2006/04/old53/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kayıtları listelemek</title>
		<link>http://www.thexpot.net/2006/04/old52/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=old52</link>
		<comments>http://www.thexpot.net/2006/04/old52/#comments</comments>
		<pubDate>Thu, 20 Apr 2006 09:15:02 +0000</pubDate>
		<dc:creator>idursun</dc:creator>
				<category><![CDATA[Yazılar]]></category>
		<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://idursun.webfactional.com/blog/?p=52</guid>
		<description><![CDATA[Kod yazarak kayıtları listelemek istiyorsanız: Session sınıfının createQuery metodunu kullanmanız gerekir. 
Aşağıdaki örneği inceleyin.

<code lang="java">
import java.util.Iterator;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class Test1 {
  public static void main(String[] args) {
    Configuration conf = new Configuration();
    conf.addResource("Musteri.hbm.xml");
    SessionFactory sessionFactory = conf.configure().buildSessionFactory();
    Session session = sessionFactory.openSession();
    List list = session.createQuery("from Musteri").list();
    for (Iterator iter = list.iterator(); iter.hasNext();) {
        Musteri musteri = (Musteri) iter.next();<p class="read-more"><a href="http://www.thexpot.net/2006/04/old52/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.thexpot.net/2006/04/old52/" title="Kayıtları listelemek"></a><p>Kod yazarak kayıtları listelemek istiyorsanız: Session sınıfının createQuery metodunu kullanmanız gerekir.
Aşağıdaki örneği inceleyin.</p>

<pre class='prettyprint'>import java.util.Iterator;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;&lt;/code&gt;

public class Test1 
{
  public static void main(String[] args) 
  {
    Configuration conf = new Configuration();
    conf.addResource("Musteri.hbm.xml");
    SessionFactory sessionFactory = conf.configure().buildSessionFactory();
    Session session = sessionFactory.openSession();
    List list = session.createQuery("from Musteri").list();
    for (Iterator iter = list.iterator(); iter.hasNext();) 
    {
      Musteri musteri = (Musteri) iter.next();
      System.out.print(musteri.getId()+" ");
      System.out.print(musteri.getAd()+" ");
      System.out.print(musteri.getSoyad()+" ");
      System.out.println(musteri.getYas()+" ");
    }
    session.close();
  }
}
</pre>

<p>Dikkat ettiyseniz createQuery metodundan sonra list metodunu çağırıyoruz ve sonuç olarak da bize bir List arayüzü (interface) döndürülüyor. Tercihinize göre array(), iterator() metodlarını da kullanabilirsiniz. Eğer dönen kayıtlar üzerinde bir ileri bir geri gidebilmek istiyorsanız scroll() metodunu kullanın.</p>

<p>Parametreli sorgular da hazırlamanız mümkün. Örneğin:</p>

<pre class='prettyprint'>List list = session.createQuery("from Musteri where yas &amp;gt; :yas")
.setInteger("yas", 25)
.list();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.thexpot.net/2006/04/old52/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

