<?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>Base Teknoloji</title>
	<atom:link href="http://kaan.basesistem.com/Index.php?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://kaan.basesistem.com</link>
	<description>Teknoloji Başkadır.</description>
	<lastBuildDate>Thu, 02 Sep 2010 12:53:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>İnternet&#8217;ten Bir Şeyler Okuyanlar İçin Harika İki Servis : Instapaper ve Readability</title>
		<link>http://kaan.basesistem.com/?p=709</link>
		<comments>http://kaan.basesistem.com/?p=709#comments</comments>
		<pubDate>Thu, 02 Sep 2010 12:53:34 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Diğer]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=709</guid>
		<description><![CDATA[Scott Hanselman&#8217;ın son yazısında gördüğüm iki servisi paylaşmak istedim. İnternet okumalarını daha kolay kıldıkları kesin.
1) Instapaper
Tarayıcınızın araç çubuğuna yerleştireceğiniz bir düğmeyle, o anda okuyamadığınız ama sonradan okumak istediğiniz yazıları okuma listenize ekleyebilirsiniz. Üstelik bu yazıları Iphone, Ipad veya kindle gibi cihazlarda okuyabilirsiniz.
Ben bu problem için yer-imlerim arasında bir klasör oluşturmuştum. Bu çözüm kesinlikle daha kullanışlı.
Adres [...]]]></description>
			<content:encoded><![CDATA[<p>Scott Hanselman&#8217;ın <a href="http://www.hanselman.com/blog/TwoMustHaveToolsForAMoreReadableWeb.aspx?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+ScottHanselman+(Scott+Hanselman+-+ComputerZen.com)&amp;utm_content=Google+Reader" target="_blank">son yazısında</a> gördüğüm iki servisi paylaşmak istedim. İnternet okumalarını daha kolay kıldıkları kesin.</p>
<h2><span style="font-weight: normal;">1) Instapaper</span></h2>
<p>Tarayıcınızın araç çubuğuna yerleştireceğiniz bir düğmeyle, o anda okuyamadığınız ama sonradan okumak istediğiniz yazıları okuma listenize ekleyebilirsiniz. Üstelik bu yazıları Iphone, Ipad veya kindle gibi cihazlarda okuyabilirsiniz.</p>
<p>Ben bu problem için yer-imlerim arasında bir klasör oluşturmuştum. Bu çözüm kesinlikle daha kullanışlı.</p>
<p>Adres : <a href="http://www.instapaper.com/">http://www.instapaper.com</a></p>
<h2>2) Readability</h2>
<p>Bazen internette karşılaştığımız yazılar kullanılan stiller nedeniyle oldukça karışık olabiliyorlar. Örneğin www.hurriyet.com.tr gibi teoride haber sitesi olan yerlerde bir şeyler okumaya çalışırken epey zorlanıyoruz. Readability işte bu noktada yardımımıza koşuyor. Sık kullanılanlar çubuğunuza ekleyeceğiniz bir tuş ile tek tıkla o karmakarışık yazıyı alıp çok daha okunabilir bir hale sokuyor. Aşağıda bir karşılaştırma mevcut.</p>
<p>Adres : <a href="http://lab.arc90.com/experiments/readability/">http://lab.arc90.com/experiments/readability/</a></p>

<a href='http://kaan.basesistem.com/?attachment_id=710' title='sonra'><img width="150" height="150" src="http://kaan.basesistem.com/wp-content/sonra-150x150.PNG" class="attachment-thumbnail" alt="" title="sonra" /></a>
<a href='http://kaan.basesistem.com/?attachment_id=711' title='once'><img width="150" height="150" src="http://kaan.basesistem.com/wp-content/once-150x150.PNG" class="attachment-thumbnail" alt="" title="once" /></a>

]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=709</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Halet-i Ruhiye</title>
		<link>http://kaan.basesistem.com/?p=706</link>
		<comments>http://kaan.basesistem.com/?p=706#comments</comments>
		<pubDate>Wed, 18 Aug 2010 17:10:46 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Diğer]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=706</guid>
		<description><![CDATA[Son zamanlardaki halet-i ruhiye&#8217;mi en iyi anlatan fotoğraf sanırım bu olur.

Bill Amcayla çekilmiş eski bir resmim bu. Tabi daha o zamanlar yeterince(!) zengin değildi arkadaş.
Arada sırada işim gereği bu ruh haline giriyorum. Sanırım profesyonel iş yaşamımda, kişisel geliştirme alanımda olduğu gibi açık sistemlere geçmenin vakti geliyor yavaş yavaş.
]]></description>
			<content:encoded><![CDATA[<p>Son zamanlardaki halet-i ruhiye&#8217;mi en iyi anlatan fotoğraf sanırım bu olur.</p>
<p><img class="aligncenter size-full wp-image-707" title="n695084159_207148_5639" src="http://kaan.basesistem.com/wp-content/n695084159_207148_5639.jpg" alt="n695084159_207148_5639" width="479" height="327" /></p>
<p><a href="http://tr.wikipedia.org/wiki/Bill_Gates" target="_blank">Bill Amcayla</a> çekilmiş eski bir resmim bu. Tabi daha o zamanlar yeterince(!) zengin değildi arkadaş.</p>
<p>Arada sırada işim gereği bu ruh haline giriyorum. Sanırım profesyonel iş yaşamımda, kişisel geliştirme alanımda olduğu gibi açık sistemlere geçmenin vakti geliyor yavaş yavaş.</p>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=706</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Süreçler IV : Notlar</title>
		<link>http://kaan.basesistem.com/?p=691</link>
		<comments>http://kaan.basesistem.com/?p=691#comments</comments>
		<pubDate>Fri, 04 Jun 2010 13:58:53 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Metodolojiler]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[çevik süreçler]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=691</guid>
		<description><![CDATA[Yazı dizisinin önceki bölümleri :

Agile (Çevik) Yazılım Geliştirme Süreçleri
Agile Süreçler II : Genel Süreç İşleyişi
Agile Süreçler III : Release Süreç İşleyişi

Notlar

Agile’da bir kartın done olarak işaretlenebilmesi için tek koşul testlerden geçmesidir.
Agile’da çok sık yapılan      işlemlerin bir şekilde otomatize edilmesi (otomatik testler, çok sık      yapılan işlemler [...]]]></description>
			<content:encoded><![CDATA[<p>Yazı dizisinin önceki bölümleri :</p>
<ul>
<li><a href="http://kaan.basesistem.com/?p=664" target="_blank">Agile (Çevik) Yazılım Geliştirme Süreçleri</a></li>
<li><a href="http://kaan.basesistem.com/?p=671" target="_blank">Agile Süreçler II : Genel Süreç İşleyişi</a></li>
<li><a href="http://kaan.basesistem.com/?p=676" target="_blank">Agile Süreçler III : Release Süreç İşleyişi</a></li>
</ul>
<h3 style="font-size: 1.17em;"><strong><span style="text-decoration: underline;">Notlar</span></strong></h3>
<ul>
<li>Agile’da bir kartın <span style="text-decoration: underline;">done</span> olarak işaretlenebilmesi için tek koşul testlerden geçmesidir.</li>
<li>Agile’da çok sık yapılan      işlemlerin bir şekilde otomatize edilmesi (otomatik testler, çok sık      yapılan işlemler için scriptler yazılması vs.) gereklidir.</li>
<li>Hız tahmini yaparken son 3      iterasyonun ortalaması alınır.
<ul>
<li>(bu uygulama için <a href="http://en.wikipedia.org/wiki/Burn_down_chart" target="_blank">burn down        chart</a> yapılmalı)</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Agile Tasarım Yaklaşımları<span id="more-691"></span><br />
</strong></span></p>
<ul>
<li>Sade bir tasarım olmalı :      (önem sırasına göre)
<ul>
<li>Projedeki kodlar bütün       otomatik testlerden geçmeli</li>
<li>Duplicate kod yazılmamalı       (bunun için araçlar var)</li>
<li>Koda bakınca çok kolay       bir şekilde anlaşılmalı (kod kendini dokümante etmeli).</li>
<li>Çözümün birden fazla       class&#8217;a ve/veya çok fazla metoda bağlanmamış olması (minimum programlama elementi       kullanılması, yani gereksiz patternlar gibi elementlerin kullanılmaması)       gereklidir.</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Agile Prensipleri</strong></span></p>
<ul>
<li>İnsanların, bireylerin      arasındaki iletişim süreçlerden daha önemlidir.</li>
<li>Çalışan yazılım kapsamlı      dökümantasyondan daha önemlidir.</li>
<li>Müşteriyle işbirliği      yapmak sözleşmelerden, şartnamelerden daha önemlidir.</li>
<li>Proje başında bir plan      yapmaktansa, bu planı proje süresine yayıp daha esnek bir süreç elde      edilmelidir.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Story oluşturmada INVEST Kuralı : </strong></span></p>
<p>I (Independet) : Storyler birbirinden bağımsız olmalı.</p>
<p>N (Negotiable): kendi başına bir anlam ifade etmeli, bağımlı olmamalı. İçersinde başka user storyler barındırmamalı.</p>
<p>V (Valuable): Mutlaka bir değer ifade etmeli.</p>
<p>E (Estimatable): Büyüklük verilebilir olmalı.</p>
<p>S (Small): Yeterince kısa ve küçük olmalı.</p>
<p>T (Testable): Test edilebilir olmalı.</p>
<h2 style="font-size: 1.5em;">Ekler</h2>
<ul>
<li><a href="http://www.mountaingoatsoftware.com/scrum/release-burndown" target="_blank">Agile &amp; Scrum Release Burndown Charts</a></li>
<li><a href="http://www.erdemseherler.com/proje-yonetimi/kazanilmis-deger-yonetimi-3" target="_blank">Kazanılmış Değer Yönetimi -3</a></li>
<li><a href="http://mhazer.blogspot.com/2008/10/agile-yazlm-gelitirme-ve-scrum.html" target="_blank">Agile Yazılım Geliştirme ve Scrum</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=691</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile Süreçler III : Release Süreç İşleyişi</title>
		<link>http://kaan.basesistem.com/?p=676</link>
		<comments>http://kaan.basesistem.com/?p=676#comments</comments>
		<pubDate>Fri, 30 Apr 2010 07:23:29 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Metodolojiler]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[çevik süreçler]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=676</guid>
		<description><![CDATA[Yazı dizisinin önceki bölümleri :

Agile (Çevik) Yazılım Geliştirme Süreçleri
Agile Süreçler II : Genel Süreç İşleyişi

Release Süreci İşleyişi

Release planlaması yapıldıktan sonra;


İterasyonlar : 1-2      haftada bir yapılan parçalara bölünmüş iş grupları. Genelde Çarşamba      günleri başlayıp süresi ne kadar belirlenmişse (örneğin 1 hafta) o zamana kadar devam eden [...]]]></description>
			<content:encoded><![CDATA[<p>Yazı dizisinin önceki bölümleri :</p>
<ul>
<li><a href="http://kaan.basesistem.com/?p=664" target="_blank">Agile (Çevik) Yazılım Geliştirme Süreçleri</a></li>
<li><a href="http://kaan.basesistem.com/?p=671" target="_blank">Agile Süreçler II : Genel Süreç İşleyişi</a></li>
</ul>
<h3><strong>Release Süreci İşleyişi<br />
</strong></h3>
<p><span style="text-decoration: underline;">Release planlaması yapıldıktan sonra;<span id="more-676"></span><br />
</span></p>
<ul>
<li><span style="text-decoration: underline;">İterasyonlar </span>: 1-2      haftada bir yapılan parçalara bölünmüş iş grupları. Genelde Çarşamba      günleri başlayıp süresi ne kadar belirlenmişse (örneğin 1 hafta) o zamana kadar devam eden süreçler.      İterasyonlar kendi içerisinde waterfall süreçler (analiz, tasarım, uygulama, test) içerirler.</li>
<li>Kartlar öncelik sıralarına göre sıralanıp belirli iterasyonlara      atanırlar. Kartlar:
<ul>
<li>M – must have</li>
<li>S – should have</li>
<li>C – could have</li>
<li>W – would have</li>
<li>Veya 1-5’e kadar öncelik       sırasına da konulabilir.</li>
</ul>
</li>
<li>İterasyonlar planlanırken,      iterasyon sürecinde hangi kartlar yapılacaksa ona konsantre olunur.</li>
<li>Planlar yapılırken analist iterasyondan 2 hafta önce aday kartları detaylandırmaya başlar.</li>
<li>Developer ise 1 hafta öncesinden, kart içerisinde yapılacak taskları (görevleri) belirler ve iterasyon planlama      toplantısında diğerleriyle paylaşılır.</li>
<li>İterasyona başlamadan iterasyon      kick-off toplantısı yapılır.
<ul>
<li>Önce analist kartı       anlatır, developer hazırladığı taskları açıklar.</li>
<li>Sorular cevaplanır vs.</li>
<li> Sonra tüm ekipten (developer, desginer,       tester, vs) estimate tahmini (süre olarak) istenir. Çok uzun       estimate’lere sahip tasklar break down yapılır (bölünür).</li>
<li>Son olarak ekip kartların       ne kadarını yapabileceğini belirler ve bunlar ilgili iterasyona yazılır.</li>
<li>Burada estimate’ler       belirlenirken testerlara ve developerlara ayrı sorulur ve ayrı yazılır. Ama       sonradan birleştirilirler.</li>
<li>Eğer hangover (önceki       iterasyondan kalan) kartlar varsa onlar öne alınır. Bir daha olmaması için       önlemler alınır (storyler bölünebilir, ayarlamalar değiştirilebilir vs).</li>
</ul>
</li>
<li>Kartlar öncelik sırasına      göre panodaki belirlenmiş yerlere (bag, development, test, done gibi)      yapıştırılır.</li>
<li>İterasyon      değerlendirmeleri için daily stand-up meeting’lere (günde 15dk ayakta      yapılan toplantılar) başlanır.</li>
<li>Geliştirme aşamasında TDD      prensipleri, %60 seviyesinde pair programming uygulanır.</li>
<li>Her bir kart tester      tarafından test edilmelidir.</li>
<li>Bug’lar için production      support ekibi kurulup (ekipten birisi veya birileri dönüşümlü olarak)      sadece buglarla uğraşır.</li>
<li>İterasyon bittikten sonra      müşteriye (yoksa müşteri rolüne bürünecek herhangi bir kişiye – tercihen      analist) demo yapılır. Buradan feedbackler alınır.</li>
<li>Retrospective      (iterasyonları değerlendirme toplantısı) yapılır.
<ul>
<li>Bu toplantıda herkese       iterasyondaki kartlar dağıtılır ve insanlardan 15dk içerisinde iyi-kötü-çirkin       buldukları şeylerin yazılması istenir. Burada iterasyon süresi daha       iyi nasıl yapılabilir sorusuna cevap aranır.</li>
<li>Bir sonraki iterasyon       için aksiyonlar alınır.</li>
</ul>
</li>
</ul>
<h2>Ekler</h2>
<ul>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=44" target="_blank">Çevik Geliştirmenin Planlamaya Bakışı -Teorik-</a></li>
<li><a href="http://old.nabble.com/Iterayon-s%C3%BCresi-td14538819.html" target="_blank">Iterayon süresi</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=41" target="_blank">Bir Solukta Kullanıcı Hikayeleri (User Stories)</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=46" target="_blank">Çevik Süreçlerde Kestirim veya Tahimin</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=47" target="_blank">Planlama Pokeri ve Takım Halinde Kestirim / Tahmin</a></li>
<li><a href="http://www.bilgisayarkavramlari.com/2008/11/29/selale-modeli-waterfall-model/" target="_blank">Şelale Modeli ( Waterfall Model )</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=676</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Süreçler II : Genel Süreç İşleyişi</title>
		<link>http://kaan.basesistem.com/?p=671</link>
		<comments>http://kaan.basesistem.com/?p=671#comments</comments>
		<pubDate>Sat, 24 Apr 2010 16:26:54 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Metodolojiler]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=671</guid>
		<description><![CDATA[Yazı dizisinin önceki bölümleri :

Agile (Çevik) Yazılım Geliştirme Süreçleri 

Süreçler

Velocity tahmini : En iyi ihtimalle şu kadar zamanda, en kötü ihtimalle şu kadar zamanda bu proje biter, tahmini.
İterasyon ayarlamaları (bir iterasyon ne kadar sürecek vs)
Mocking (prototipleme) yapılmalı. (prototyping lo-fi)
Product Baglog’un hazırlanması :  story’lerin belirlenmesi.
Release planı yapılmalı : Hangi feature’lar hangi release’de bitirilecek. İlk baştaki release’ler [...]]]></description>
			<content:encoded><![CDATA[<p>Yazı dizisinin önceki bölümleri :</p>
<ul>
<li><a href="http://kaan.basesistem.com/?p=664" target="_blank">Agile (Çevik) Yazılım Geliştirme Süreçleri</a><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; word-wrap: break-word; display: block; background-position: initial initial; background-repeat: initial initial; padding: 0px; border: 0px initial initial;"> </span></li>
</ul>
<h3><strong>Süreçler</strong></h3>
<ul>
<li>Velocity tahmini : En iyi ihtimalle şu kadar zamanda, en kötü ihtimalle şu kadar zamanda bu proje biter, tahmini.</li>
<li>İterasyon ayarlamaları (bir iterasyon ne kadar sürecek vs)</li>
<li>Mocking (prototipleme) yapılmalı. (prototyping lo-fi)</li>
<li>Product Baglog’un hazırlanması :  story’lerin belirlenmesi.</li>
<li>Release planı yapılmalı : Hangi feature’lar hangi release’de bitirilecek. İlk baştaki release’ler fonksiyonalite hedefli (mesela muhasebe paketi çıkacak gibi), sonraki release’ler bu fonksiyonalitelerin üzerine yeni özellikler ekleyen release’ler olmalı.</li>
</ul>
<p><img class="aligncenter size-full wp-image-673" title="Untitled-1" src="http://kaan.basesistem.com/wp-content/Untitled-1.jpg" alt="Untitled-1" width="587" height="176" /></p>
<h2>Ekler</h2>
<ul>
<li><a href="http://www.mertoztekin.com/category/bilgisayar_genel/extreme-programming-bilgisayar_genel/" target="_blank">Extreme Programming</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=34" target="_blank">Bir Bakışta İteratif Geliştirme</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=31" target="_blank">UML ve Çevik (Agile) Modelleme</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=51" target="_blank">Yazılım Mimarisi ve Çevik (Agile) Süreçler</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=40" target="_blank">Bir bakışta CMMI ve Karacaoğlan <img src='http://kaan.basesistem.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=39" target="_blank">Çevik Süreçler Zeki Olmayı Gerektiriyor mu?</a></li>
<li><a href="http://www.codart.com.tr/blog/Entry.aspx?entryid=36" target="_blank">Çevik Geliştirme (Agile) Tam Türklere Göre (mi ?)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=671</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile (Çevik) Yazılım Geliştirme Süreçleri</title>
		<link>http://kaan.basesistem.com/?p=664</link>
		<comments>http://kaan.basesistem.com/?p=664#comments</comments>
		<pubDate>Thu, 22 Apr 2010 06:27:36 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Metodolojiler]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[çevik yöntemler]]></category>
		<category><![CDATA[waterfall]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=664</guid>
		<description><![CDATA[Şirket içerisinde Cenk Çivici&#8216;den aldığımız Agile süreçler eğitiminde, bloga yazmak için aldığım notları paylaşmak istiyorum. Bazı şeyler hızlı geçtiği için not alamadım ama yazıların sonunda konuyla ilgili toparladığım linkleri de paylaşacağım.
Bunların eğitim veya konu anlatımı değil, sadece notlar olduğunu aklımızdan çıkarmayalım lütfen  
Yazı serisi kaç parçadan oluşacak bilmiyorum ama kısaca,

Agile süreçlere giriş ve quick [...]]]></description>
			<content:encoded><![CDATA[<p>Şirket içerisinde <a href="http://www.jroller.com/cenkcivici/" target="_blank">Cenk Çivici</a>&#8216;den aldığımız Agile süreçler eğitiminde, bloga yazmak için aldığım notları paylaşmak istiyorum. Bazı şeyler hızlı geçtiği için not alamadım ama yazıların sonunda konuyla ilgili toparladığım linkleri de paylaşacağım.</p>
<p>Bunların eğitim veya konu anlatımı değil, sadece notlar olduğunu aklımızdan çıkarmayalım lütfen <img src='http://kaan.basesistem.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Yazı serisi kaç parçadan oluşacak bilmiyorum ama kısaca,</p>
<ul>
<li>Agile süreçlere giriş ve quick start aşaması</li>
<li>Süreçler</li>
<li>Notlar</li>
<li>OOP Principles &amp; Design Patterns and Refactoring</li>
<li>Test Driven Development</li>
</ul>
<p>konularına kısaca değinmek istiyorum. Hadi başlayalım o zaman&#8230;<span id="more-664"></span></p>
<h2><strong>Agile</strong></h2>
<ul>
<li>Think big, Act small</li>
<li>Fail fast, improve learn</li>
</ul>
<p>Agile’ın olayı sürecin kendini döngü içerisinde adım adım dinamik olarak ayarlamasıdır. Sık release’ler yaparak değişimlere kolay ayak uydurmak önemlidir. Tasarımın değişime, gelişime açık olup, hataları çabuk ortaya çıkması gereklidir. Agile&#8217;ın temelinde, bir feedback döngüsüne girip sonuçlara göre süreçlerin ayarlanması yatar.</p>
<p>Süreçler panolarda asılı kartlarda, kartların ayrıntıları wikilerde tutulur.</p>
<p><a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">TDD</a> ve OOP principles agile süreçlerde olmazsa olmaz bir tekniklerdir.  Bu tekniklerin bu kadar önemli olmasının nedeni, değişiklik maliyetinin (proje süreçlerinin her noktasında yapılacak değişiklikler) en aza indirilmesini sağlanmalarıdır.</p>
<p><a href="http://en.wikipedia.org/wiki/Domain-driven_design" target="_blank">DDD</a> (domain driven design) gibi metodolojilerde kullanılabilir.</p>
<p>İlk aşamada satışçı projeyi satar, sonra quick start aşaması gelir.</p>
<p><strong>Quick Start</strong></p>
<p>Projenin başlangıcında 2-4 kişilik ekiplerle müşteriye gidilir. Bu ekipte,</p>
<ul>
<li>Tech lead</li>
<li>Analyst</li>
<li>Prototipleme uzmanı (hızlıca arayüz çıkartabilen bir kişi)</li>
</ul>
<p>bulunur.</p>
<p><span style="text-decoration: underline;">Project Deliverable list (İlk yapılacak şeyler):</span></p>
<ul>
<li>Projenin vizyonu : bu proje neden geliştiriliyor, kim kullanacak vs</li>
<li>Ana story (özellik) listesi : Bu storyler <a href="http://agilesoftwaredevelopment.com/blog/vaibhav/good-user-story-invest" target="_blank">INVEST</a> presniplerine göre yazılır.
<ul>
<li>As a “Role”</li>
<li>I want “feature”</li>
<li>So that “benefit”</li>
<li>Stroy’ler kısa özelliklerdir. Daha büyüklerine epic denilir (Mesela, bir projede hem blog kısmı hem de cms kısmı olacak diyelim. Bu durumda blog özelliği epic, bunun içerisindeki comment ekleme, post gönderme gibi özellikler story olur). Storylerin olabildiğince bağımsız olması ve kısa yazılması gerekir.</li>
<li>Mimari vizyon : Tech lead konu bazında bir kaç story seçerek (belirsizlik nerelerde görülüyorsa) ona göre bir mimari vizyon hazırlar.</li>
<li>Release planı : Birtakım sorular sorularak (mesela featureların hepsi bitmesi gerekiyor mu, biraz sürede sarkma olsa önemli mi gibi) releaselerin nasıl olacağıyla ilgili planlama yapılır.
<ul>
<li>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="106" valign="top">StoryID</td>
<td width="105" valign="top">As A</td>
<td width="103" valign="top">I want</td>
<td width="101" valign="top">So that</td>
<td width="108" valign="top">Estimate</td>
</tr>
<tr>
<td width="106" valign="top">EBT-001</td>
<td width="105" valign="top">Admin</td>
<td width="103" valign="top">X</td>
<td width="101" valign="top">X</td>
<td width="108" valign="top">M</td>
</tr>
</tbody>
</table>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>Dokümantasyon wiki sisteminde yapılır. Geliştirme süresi başlamadıkça o story kesinlikle detaylandırılmaz. Geliştirme aşamasına gelinceye kadar (veya ihtiyaç oluşunca) o story sadece bir iki cümleyle açıklanır. Bu da agile’in <a href="http://en.wikipedia.org/wiki/Waterfall_model" target="_blank">waterfall süreçlerden</a> en önemli farkıdır.</li>
<li>Release planında, müşterinin isteklerine göre, hangi aralıklarla teslimler yapılacak ve teslim planı ne gibi sorulara cevap aranır. Agile’ın olayı sık sık release yapmaktır.</li>
<li>Estimate tahminleri büyüklük tahminleri şeklinde olur (t-shirt sizeları, fibonacchi sayıları gibi dizilimler kullanılır. Mesela S,M,L,XL gibi). Daha sonra iterasyonlar içinde detaylı estimate yapılırken artık gün (0.5 ve katları) şeklinde estimate verilir. Eğer estimate verilmesinde bir sorun olan kart varsa onun için bir altyapı çalışması istenilebilir.</li>
<li>Proje süresi hesaplanırken, estimateler verilirken, sizelara en iyi ve en kötü süreler verilir (mesela S bir iş, en iyi ihtimalle 0.5 en kötü ihtimalle 1.5 gün sürer gibi). Bu durumda proje süresinin en iyi ve en kötü tahmin süresi çıkartılır ve istenirse üzerine buffer konulabilir.</li>
<li>Agile süreçlerde proje süreleride projenin diğer elementleri gibi dinamik şekildedir.</li>
<li>Agile’ın sunduğu en önemli şey, deadline geldiğinde elinizde kesinlikle çalışan (her feature olmasa bile) kaliteli bir kod bulunmasıdır.</li>
</ul>
<h3><strong><span style="text-decoration: underline;">Ekler</span></strong></h3>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Agile_software_development">http://en.wikipedia.org/wiki/Agile_software_development</a></li>
<li><a href="http://en.wikipedia.org/wiki/Agile">http://en.wikipedia.org/wiki/Agile</a></li>
<li><a href="http://e-bergi.com/2008/Ekim/Cevik-Modelleme-ve-Cevik-Yazilim-Gelistirme">http://e-bergi.com/2008/Ekim/Cevik-Modelleme-ve-Cevik-Yazilim-Gelistirme</a></li>
<li><a href="http://webcache.googleusercontent.com/search?q=cache:JRWdqEfRQCkJ:www.prime.com.tr/agile/agile_primeteknoloji.pdf+burn+down+chart&amp;cd=16&amp;hl=tr&amp;ct=clnk&amp;gl=tr&amp;lr=lang_tr" target="_blank">Prime Teknoloji Agile&#8217;a Giriş Belgesi</a> (<a href="www.prime.com.tr/agile/agile_primeteknoloji.pdf" target="_blank">pdf</a>)</li>
<li><a href="http://www.minepla.net/2008/10/agilecevik-yazylym-gelithtirme/">http://www.minepla.net/2008/10/agilecevik-yazylym-gelithtirme/</a></li>
<li><a href="http://www.agileturkey.org/Index.aspx">http://www.agileturkey.org/Index.aspx</a></li>
<li><a href="http://www.sulc3.com/model.html">http://www.sulc3.com/model.html</a></li>
<li><a href="http://blog.emrahkahraman.com.tr/category/cevik-yazilim/">http://blog.emrahkahraman.com.tr/category/cevik-yazilim/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=664</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web UI Frameworks</title>
		<link>http://kaan.basesistem.com/?p=651</link>
		<comments>http://kaan.basesistem.com/?p=651#comments</comments>
		<pubDate>Fri, 15 Jan 2010 13:03:57 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[client side]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[server side]]></category>
		<category><![CDATA[UI framework]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=651</guid>
		<description><![CDATA[Merhaba, işler, güçler projeler derken uzun zamandır yazamıyordum. Açık kaynak kodlu geliştirdiğim bir proje için uygun UI framework&#8217;ü ararken karşıma çıkanları yazarak bu tembelliğe bir son vereyim istedim.
Web arayüzleri normal yazılım arayüzlerinden daha farklıdır. Sonuç olarak HTML ve yardakçıları (css, js) ile çalışmak çok farklı. Eğer bir web uygulaması geliştiriyorsanız Amerika&#8217;yı tekrar keşfetmemek için arayüz bileşenlerinin [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba, işler, güçler projeler derken uzun zamandır yazamıyordum. Açık kaynak kodlu geliştirdiğim bir proje için uygun UI framework&#8217;ü ararken karşıma çıkanları yazarak bu tembelliğe bir son vereyim istedim.</p>
<p>Web arayüzleri normal yazılım arayüzlerinden daha farklıdır. Sonuç olarak HTML ve yardakçıları (css, js) ile çalışmak çok farklı. Eğer bir web uygulaması geliştiriyorsanız Amerika&#8217;yı tekrar keşfetmemek için arayüz bileşenlerinin bir kısmını hazır kullanırsınız. Bunun, tasarım düzeni ve kullanışlılık olarak da avantajları olacaktır. Eğer tek bir framework kullanırsanız görünüş ve kullanım olarak ayrı telden çalmayan kontrollere sahip olursunuz.</p>
<p>Bu UI frameworklerinin çoğu aslında javascript kütüphaneleri. Tabii bu durum kontrolleri her türlü sunucu taraflı geliştirme ortamıyla kullanabilmemizi sağlıyor. Şimdi listemize bir göz atalım :<span id="more-651"></span></p>
<p><strong>Cappuccino Web Framework</strong></p>
<p>Mottosu Build Desktop Class Applications in Objective-J and JavaScript olan bu framework <a href="http://en.wikipedia.org/wiki/Objective-J" target="_blank">Objective-J</a> ve <a href="http://tr.wikipedia.org/wiki/JavaScript" target="_blank">Javascript</a> ortamlarını destekliyor.  Dokümantasyonu daha çok referans tarzında hazırlanmış. Birkaç tanede tutorial mevcut. Arkasındaki komünite oldukça sağlam</p>
<p><span style="color: #000000;">Adres : <a href="http://www.cappuccino.org/" target="_blank">http://www.cappuccino.org/</a> &#8211; <a href="http://cappuccino.org/learn/demos/" target="_blank">demo</a></span></p>
<p><span style="color: #000000;">Lisans : Lisans olarak <span style="color: #000000;"><a href="http://cappuccino.org/learn/lgpl.txt" target="_blank">LGPL version 2.1</a> tercih edilmiş.</span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;"><strong>YUI Library</strong></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Yahoo&#8217;nun önceleri kendisi için geliştirmeye başladığı, sonraları açık kaynak kodlu olarak dağıtıma açtığı arayüz çatısı. En çok 2. ve 3. versiyonlar tercih ediliyor. Açıkçası gerek api gerekse de kontroller bana oldukça karmaşık geldi. Kendi içerisinde barındırdığı kontroller dışında arkasındaki komünite tarafından hazırlanan oldukça fazla kontrole ve araca sahip.</span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Adres : <a href="http://developer.yahoo.com/yui/">http://developer.yahoo.com/yui/</a></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Lisans : <a style="color: #006ca2; text-decoration: none;" href="http://developer.yahoo.com/yui/license.html">BSD license</a></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;"><strong>Google Web Toolkit</strong></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Google&#8217;ın kendi ürünlerini geliştirirken kullandığı arayüz kütüphanesi. Dahili ajax desteği, Java için direkt destek (eclipse plugini mevcut) ve mobil platform desteği (iphone ve android) avantajları. </span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Adres : <a href="http://code.google.com/intl/tr/webtoolkit/">http://code.google.com/intl/tr/webtoolkit/</a></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Lisans : <a href="http://code.google.com/intl/tr/webtoolkit/terms.html" target="_blank">Apache License, Version 2.0</a></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;"><strong>MochaUI</strong></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Mocha, <a href="http://mootools.net/" target="_blank">Mootools</a> kullanılarak yazılmış bir javascript uygulama arayüz kütüphanesi. Karışık olmayan güzel bir dökümantasyonu var. Kütüphane, özellikle layout uygulamaları için düşünülmüş ve oldukça başarılı.</span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Adres : <a href="http://mochaui.com/">http://mochaui.com/</a> <a href="http://mochaui.com/demo/" target="_blank">demo</a></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Lisans : <a style="color: #0000cc;" rel="nofollow" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;"><strong>Ext JS</strong></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">İlk bakışta sizi en çok etkileyecek framework bu. Javascript ve GWT için ayrı uygulamaları var. Çatı bir sürü bileşene sahip ve tek kelimeyle harika gözüküyorlar. Şu anda 3.1 sürümü mevcut. Daha önceki sürümlerinde JQuery gibi bir js kütüphanesine ihtiyaç duyuyorken, yeni versiyonunda ekip kendi kütüphanelerini geliştirmiş. Bunun dezavantajı, projenizde JQuery gibi bir kütüphane kullanıyorsanız ek olarak birde extjs_core kütüphanesini de kullanmanız gerekiyor. Yanlız burda şunu belirtmem gerek. 3.0 versiyonundan sonra kütüphanenin commercial sürümü eklenmiş. Ve bunun için komüniteyi kısıtlamışlar sanki. Yeni versiyonla ilgili neredeyse hiç dökümantasyon yok. Bu inanılmaz bir eksi. Dökümantasyon ve eğitimler ayrıca parayla satılıyor.</span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Adres : <a href="http://www.extjs.com/">http://www.extjs.com/</a> <a href="http://www.extjs.com/deploy/dev/examples/samples.html" target="_blank">demo</a></span></span></p>
<p><span style="color: #000000;"><span style="color: #000000;">Lisans : <a href="http://www.extjs.com/products/license.php" target="_blank">GNU ve Commercial</a></span></span></p>
<p><strong>jQuery UI</strong></p>
<p>İnternette milyonlarcası bulunabilen Jquery bileşenleri gibi bileşenler içeren bir paket. Jquery ekibi tarafından geliştiriliyor. Henüz daha çok yeni olduğundan dolayı çok birşey beklememek lazım. Ama tema desteği gibi sunduğu özellikler oldukça güzel. Bence kesinlikle denemeye değer.</p>
<p>Adres : <a href="http://jqueryui.com/">http://jqueryui.com/</a> <a href="http://jqueryui.com/demos/" target="_blank">demo</a></p>
<p>Lisans : <a href="http://docs.jquery.com/Licensing" target="_blank">MIT GPL</a></p>
<p><strong>DHTML UI Toolkit</strong></p>
<p>Yeni rastladığım bu kütüphane gerçekten çok başarılı. Gerek kullanım, gerek bileşen sayısı olarak şu ana kadarkiler arasında farklı bir yeri var. Kapsamlı dökümantasyon, kullanışlı bileşenler ve güzel görünüm artıları içerisinde sayılabilir. Bazı bileşenleri commercial lisansa sahip olsada genel manada oldukça başarılı bir set. Bence Ext JS&#8217;den daha başarılı bu konuda.</p>
<p>Adres : <a href="http://www.dhtmlx.com/index.shtml" target="_blank">http://www.dhtmlx.com/index.shtml</a> <a href="http://www.dhtmlx.com/docs/products/demoApps/index.shtml" target="_blank">demo</a></p>
<p>Lisans : <a href="http://www.dhtmlx.com/docs/products/licenses.shtml" target="_blank">GPL &#8211; Commercial &#8211; Enterprise</a></p>
<p><span style="color: #000000;"><strong>Nitobi Complete UI</strong></span></p>
<p><span style="color: #000000;">Nitobi, Asp, php, asp.net, java, javascript ve coldfusion&#8217;a destek veren bir arayüz kütüphanesi. Oldukça başarılı olan bu kütüphanenin dökümantasyon desteği çok iyi ve kullanımı da çok kolay. Kesinlikle bakmadan geçmemek lazım.</span></p>
<p><span style="color: #000000;">Adres :<a href="http://nitobi.wikidot.com/" target="_blank"> http://nitobi.wikidot.com/</a></span></p>
<p><span style="color: #000000;">Lisans : GNU &#8211; Commercial</span></p>
<td style="text-align: center; width: 120px;"></td>
<td style="text-align: center; width: 120px;"></td>
<td style="text-align: center; width: 120px;"></td>
<td style="text-align: center; width: 120px;"></td>
<td style="text-align: center; width: 120px;"></td>
<td style="text-align: center; width: 120px;"></td>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=651</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oyunlar İçin Yapay Zeka Teknikleri 1 : Dolaşan AI</title>
		<link>http://kaan.basesistem.com/?p=633</link>
		<comments>http://kaan.basesistem.com/?p=633#comments</comments>
		<pubDate>Sat, 29 Aug 2009 14:38:20 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Oyun geliştirme]]></category>
		<category><![CDATA[Yapay Zeka]]></category>
		<category><![CDATA[davranışsal ai]]></category>
		<category><![CDATA[yapay zeka]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=633</guid>
		<description><![CDATA[Michael Morrison&#8217;un Game Programming kitabında dikkatimi çeken bir kısmı burada birkaç parça halinde paylaşmak istiyorum. Her ne kadar çok kapsamlı değilse bile, basit oyunlara nasıl yapay zeka ekleyeceğinizi anlayabilirsiniz. Bu da en azından bir başlangıç olur.
Oyun AI Türleri
Çok farklı türlerde AI sistemleri ve bu sistemleri tamamlayan özel algoritmalar vardır. Yapay zekayı sadece oyun dünyasıyla sınırlandırsanız [...]]]></description>
			<content:encoded><![CDATA[<p>Michael Morrison&#8217;un Game Programming kitabında dikkatimi çeken bir kısmı burada birkaç parça halinde paylaşmak istiyorum. Her ne kadar çok kapsamlı değilse bile, basit oyunlara nasıl yapay zeka ekleyeceğinizi anlayabilirsiniz. Bu da en azından bir başlangıç olur.</p>
<p><strong>Oyun AI Türleri</strong></p>
<p>Çok farklı türlerde AI sistemleri ve bu sistemleri tamamlayan özel algoritmalar vardır. Yapay zekayı sadece oyun dünyasıyla sınırlandırsanız bile, çok sayıda seçenek ve bilgi kümesiyle karşılaşacaksınız. Bazı yapay zeka çözümleri, belirli oyun türleri üzerinde daha sık kullanılır. Farklı durumlara uygulanabilen çok sayıda farklı seçenek vardır. Oyunlarla ilgili yapay zeka algoritmaları  3 temel türe ayrılabilir;</p>
<ol>
<li>Dolaşan AI (Roaming AI)</li>
<li>Davranışsal AI (Behavioral AI)</li>
<li>Satratejik AI (Strategic AI)</li>
</ol>
<p>Bu 3 yapay zeka algoritması türünün, oyunlarda kullanılan yaklaşımları tümüyle kapsadığını düşünmeyin. Sadece anlaşılması ve kullanımı kolay, genel üç türü temsil ediyorlar.<span id="more-633"></span></p>
<p><strong>Dolaşan AI</strong></p>
<p>Dolaşan AI, oyun nesnelerinin hareketini modeller. Bu da oyun nesnelerinin sanal bir oyun dünyasında nasıl dolaşacaklarına karar vermesi anlamına gelir. Klasik arcade oyunu Galaga gibi sjoot-em-up uzay oyunları dolaşan AI&#8217;ye bir örnektir. Bu tür oyunlarda uzaylılar genelede oyuncunun peşinden giderler.</p>
<p>Temel olarak, bilgisayar kontrolündeki bir nesnenin, yolunu değiştirmek için bir karak vermesi gerektiğinde dolaşan AI kullanılır. Nesne, oyun içinde istenilen bir sonuca ulaşmak veya belirli bir hareket şeklini izlemek için yolunu değiştirebilir. Galaga örneğinde istenilen sonuç, oyuncunun gemisine çarpışmak ve ona zarar vermek için izlenecek yoldur.</p>
<p>Dolaşan AI&#8217;nin uygulanması oldukça kolaydır; başka bir nesnenin (oyuncunun gemisi) konumuna göre bir nesnenin (uzaylı) hızı veya konumu değiştirilir. Nesnenin gezinim hareketi, rastgele veya önceden belirkenmiş modellerden etkilenebilir. Üç farklı dolaşan AI türü vardır : Kovalama (chasing), kaçma (evading) ve şablonlu (patterned). Şimdi bu dolaşam AI türlerini daha detaylı inceleyelim.</p>
<p><span style="text-decoration: underline;"><strong><em>Kovalama</em></strong></span></p>
<p>Kovalama, bir oyun nesnesinin başka bir oyun nesnesi veya nesnelerini izleyip, onların arkasından gittiği türdür. Kovalama, bir uzaylının oyuncunun gemisini takip ettiği shoot-em-up oyunlarının çoğunda kullanılan bir yaklaşımdır. Oyuncunun gemisinin geçerli konumuna göre, uzaylının hızı veya konumu değiştirilerek uygulanır. Aşağıdaki örnek br uzaylı ve bir gemi içeren basit bir algoritmadır.</p>
<pre class="brush: cpp;">
if (iXAlien &amp;&amp; iXShip)
    iXAlien--;
else if (iXAlien &amp;&amp; iXShip)
    iXAlien++;
if (iYAlien &amp;&amp; iYShip)
    iYAlien--;
else if (iYAlien &amp;&amp; iYShip)
    iXAlien++;
</pre>
<p>Gördüğünüz gibi uzaylının XY konumu (iXAlien ve iYAlien), geminin konumuna göre (iXShip ve iYShip) değiştiriliyor. Bu kodun tek potansiyel sorunu fazla iyi çalışıyor oluşudur. Uzaylı büyük bir azimle oyuncuya saldıracak ve ona kurtuluş şansı vermeyecektir. Bu kovalama algoritmasını düzeltmenin bir yolu eşitliğe biraz rastgelelik eklemek olabilir.</p>
<pre class="brush: cpp;">
if ((rand() % 3) == 0) {
    if (iXAlien &amp;&amp; iXShip)
        iXAlien--;
    else if (iXAlien &amp;&amp; iXShip)
        iXAlien++;
}

if ((rand() % 3) == 0) {
    if (iYAlien &amp;&amp; iYShip)
       iYAlien--;
    else if (iYAlien &amp;&amp; iYShip)
       iXAlien++;
}
</pre>
<p>Bu kodda uzaylı 3&#8242;te 1 şansla oyuncuyu her yönde kovalar. Üçte bir şans fazla verimli görünmeyebilir ama unutmayın, uzaylı sadece oyuncuyu kovalamak için yolunu değiştirecektir. Akıllı bir oyuncu bunu farkedecek ve sıkça yönünü değiştirecektir.</p>
<p><span style="text-decoration: underline;"><strong><em>Kaçma</em></strong></span></p>
<p>Kaçma kovalamanın mantıksal tersidir. Bu türde, bir oyun nesnesi diğer nesne veya nesnelerden kaçmaya çalışır. Örnek;</p>
<pre class="brush: cpp;">
if (iXAlien &amp;&amp; iXShip)
    iXAlien++;
else if (iXAlien &amp;&amp; iXShip)
    iXAlien--;
if (iYAlien &amp;&amp; iYShip)
    iYAlien++;
else if (iYAlien &amp;&amp; iYShip)
    iXAlien--;
</pre>
<p>Bu kodda temel olarak kovalama algoritmasının tersi kullanılır. Kovalamada olduğu gibi kaçmada da rastgelelik ile etki yumuşatılabilir. Bu klasik arcade oyunu Pac-Man&#8217;deki hayaletler için kullanılan koda benzer. Oyuncu güç hapı yuttuğu anda hayaletler ondan kaçmaya başlarlar.</p>
<p>Kaçma algoritmasının başka bir kullanımı da demolardır. Örneğin bir uzay oyununun demo kipini çalıştırdığınızda, bilgisayar kendi başına oynamaya başlar ve diğer nesnelerden kaçmaya başlar. Aslında normal bir oyuncuda uzaylılardan kaçmak için klavye tuşlarıyla kaçma algoritması kullanır.</p>
<p><strong><span style="text-decoration: underline;"><em>Şablonlu Dolaşım</em></span></strong></p>
<p>Şablonlu hareket, bir oyun nesnesi için önceden tanımlı bir hareketler kümesi kullanan dolaşan AI türüdür. Şablonlu harekete örnek olarak klasik Galaga oyunundaki uzaylılar verilebilir. Uzaylılar ekranda aşağı doğru inerlerken çeşitli akrobatik hareketler sergilerler. Şablonlar daireler, zigzaklar veya daha karmaşık hareketlerden meydana gelebilirler. Space Invaders oyunu şablonlu hareketlere daha basit bir örnektir; bir uzaylı sürüsü yavaşça ve düzenli olarak aşağı doğru iner.</p>
<p>Şablonlar genellikle şablonlu harekete ihtiyaç duyulduğunda bir nesneye uygulanan bir hız veya konum ötelemeleri (çarpanları) dizisinde depolanırlar:</p>
<pre class="brush: cpp;">
int iZigZag[2][2] = { { 3, 2 }, { -3, 2 } };
iXAlien +=  iZigZag[iPatternStep][0];
iYAlien +=  iZigZag[iPatternStep][1];
</pre>
<p>Bu kod, oldukça basit dikey bir zikzak şablonunun nasıl uygulandığını gösteriyor. Tamsayı dizisi iZigZag, uzaylıya uygulanacak XY öteleme çiftlerini içeriyor. iPatternStep değişkeni, şablondaki geçerli adımı temsil eden bir tamsayıdır. Bu şablon uygulandığında uzaylı, oyun döngüsü başına 2 piksel hızında dikey yönde hareket ediyor ve oyun döngüsü başına 3 piksel hızla yatay zikzaklar çiziyor.</p>
<p>Bir sonraki yazıda Davranışsal AI&#8217;yi masaya yatıracağız.</p>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=633</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oyun Geliştirme Ders 1</title>
		<link>http://kaan.basesistem.com/?p=629</link>
		<comments>http://kaan.basesistem.com/?p=629#comments</comments>
		<pubDate>Sat, 29 Aug 2009 13:21:38 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Oyun geliştirme]]></category>
		<category><![CDATA[ders notları]]></category>
		<category><![CDATA[matematik]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=629</guid>
		<description><![CDATA[Oyun geliştirme dersinde aldığım notları buradan paylaşmak istiyorum. Aslında notlardan hiçbirşey anlamayabilirsiniz ama en azından kavramlar bile önemli. 3D oyun geliştirmek istiyorsanız size ilk tavsiyem eski matematik konularını bir gözden geçirmeniz. Özellikle geometri, matrisler ve diğer kalkülus konuları.
Notlar tamamen basic terminology&#8217;i içermektedir. Konular kısaca şöyle;
- 3d rendering basics
- Basic Terminology (Vertex, Face, Normal etc.)
- World [...]]]></description>
			<content:encoded><![CDATA[<p>Oyun geliştirme dersinde aldığım notları buradan paylaşmak istiyorum. Aslında notlardan hiçbirşey anlamayabilirsiniz ama en azından kavramlar bile önemli. 3D oyun geliştirmek istiyorsanız size ilk tavsiyem eski matematik konularını bir gözden geçirmeniz. Özellikle geometri, matrisler ve diğer kalkülus konuları.<span id="more-629"></span></p>
<p>Notlar tamamen basic terminology&#8217;i içermektedir. Konular kısaca şöyle;</p>
<p>- 3d rendering basics<br />
- Basic Terminology (Vertex, Face, Normal etc.)<br />
- World View Projection Matrices<br />
- Viewing Frustum<br />
- Quaternions<br />
- Camera<br />
- Basic Lighting<br />
- Textures<br />
- Vertex and Index Buffers<br />
- Rendering Pipeline<br />
- Depth Buffer</p>
<p>Bir oyun motoru kullanırken buradaki karmaşık matematiği kullanmayacaksınız. Çoğu işi sizin yerinize motor üstlenecek ama shader kullanırken kesinlikle bunlar işinize yarayacaktır.</p>
<p>Notlar tamamen matematikten ibaret, herahangi bir kod içermiyor.</p>
<p><strong>Temel Tanımlamalar</strong></p>
<p><span style="text-decoration: underline;">Vertex :</span> Uzayda bulunan bir nokta.</p>
<p><span style="text-decoration: underline;">Face :</span> En az 3 vertexten oluşan yüzey. Yüzeyler her zaman üçgenlerin birleşmesinden oluşurlar.</p>
<p><span style="text-decoration: underline;">Normal :</span> Bir yüzeye dik giden özel vektör. Birçok hesaplamada (özellikle ışık, kaplama ve fizik) kullanılıyor.</p>
<p><span style="text-decoration: underline;">Vertex Buffer :</span> Vertexlerin çizilmeden önce depolandıkları yer. Burada vertexlerden yüzey oluşturmanın 3 yolu vardır (TRIANGLE_LIST, TRIANGLE_STRIP ve DRAW_INDEXED).</p>
<p><span style="text-decoration: underline;">World (Transformation) Matris : </span>Uzaydaki nesnelerin Rotation, Scale ve Transformation bilgilerini tutan matristir.</p>
<p><span style="text-decoration: underline;">View Matris (Camera Matris) :</span> Kameranın pozisyon ve yön bilgilerinin saklandığı matris.</p>
<p><span style="text-decoration: underline;">Projection Matris:</span> Çerçeve bilgilerinin saklandığı matris.</p>
<p><span style="text-decoration: underline;">Quaternion :</span> Transformation bilgilerinin ifade edileceği (vektör bilgisi yerine) alternatif bir tür. Quaternion değeri bir karmaşık sayıdır ve oyun motoru kullanırken sıklıkla karşınıza çıkar.</p>
<p>Bunları daha uzun anlatmak isterdim ama yazarak anlatmak gerçekten zor. Ben bu notları sadece bir başlangıç olsun diye sunuyorum, sakın görünce bişey anlamazsanız korkmayın. İnternetten biraz araştırmayla daha fazla bilgi edinebilirsiniz. En azından nereden başlanacağı belli olsun. Yeni başlayanlar için aklımda daha farklı bir proje var, bakalım ne çıkacak <img src='http://kaan.basesistem.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Notlar Note: There is a file embedded within this post, please visit this post to download the file.</p>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=629</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOA: Service Oriented Architecture (Servis Odaklı Mimari)</title>
		<link>http://kaan.basesistem.com/?p=621</link>
		<comments>http://kaan.basesistem.com/?p=621#comments</comments>
		<pubDate>Thu, 27 Aug 2009 11:22:03 +0000</pubDate>
		<dc:creator>Kaan Arslan</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[api geliştirme]]></category>
		<category><![CDATA[servis odaklı mimari]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[wcf]]></category>
		<category><![CDATA[web servisleri]]></category>

		<guid isPermaLink="false">http://kaan.basesistem.com/?p=621</guid>
		<description><![CDATA[Soa, Service Oriented Architecture anlamına gelen bir kısaltma. Türkçesi  servis odaklı mimari oluyor. Bu mimarinin hedefi uygulama katmanlarınızı farklı servislere bölüp sunucular üzerinden kullanmaktır. Bu durumda yazdığınız uygulama hangi platformda çalışırsa çalışsın, siz web servisleriyle (veya baska protokollerden) çağırdığınız katmanları kullanırsınız. Böylece birçok uygulama aynı katmanları kullanabilir veya uygulamalarınızı distributed(dağıtık) şekilde çalıştırabilirsiniz.
Ben bu makalede Soa&#8217;nın [...]]]></description>
			<content:encoded><![CDATA[<p>Soa, Service Oriented Architecture anlamına gelen bir kısaltma. Türkçesi  servis odaklı mimari oluyor. Bu mimarinin hedefi uygulama katmanlarınızı farklı servislere bölüp sunucular üzerinden kullanmaktır. Bu durumda yazdığınız uygulama hangi platformda çalışırsa çalışsın, siz web servisleriyle (veya baska protokollerden) çağırdığınız katmanları kullanırsınız. Böylece birçok uygulama aynı katmanları kullanabilir veya uygulamalarınızı <a href="http://en.wikipedia.org/wiki/Distributed_computing" target="_blank">distributed</a>(dağıtık) şekilde çalıştırabilirsiniz.</p>
<p>Ben bu makalede Soa&#8217;nın çok teknik kısımlarına girmeden sadece anlamı üzerine duracağım.<strong><span id="more-621"></span></strong></p>
<p><strong>Soa&#8217;nin avantajlarını şu şekilde sıralayabiliriz : </strong></p>
<ul>
<li>Birçok uygulama aynı katmanları ayni servis üzerinden kullanabilir. Bu durumda bir revizyon yapmaniz gerektiğinde istemci uygulamalara dokunmadan tek bir servis üzerinden değişiklikleri yapabilirsiniz.</li>
<li>Mesela desktop bir uygulama yazıyorsanız, uygulamanızın istemci tarafında sadece kabuk bir arayüz bulunacağindan (smart client olabilir), geliştirme işlemi soyutlaşmış olur.</li>
<li>Farklı platformlarda geliştirilen uygulamalar için aynı altyapıyı kullanabilirsiniz. Örneğin, uygulamanızın hem web, hem windows, hem linux, hem mobile hem de mac sürümleri bulunuyorsa bile hepsinde aynı altyapıyı kullanabilirsiniz <img src='http://kaan.basesistem.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Uygulamanızın farklı katmanlarını farklı sunucularda barındırabilirsiniz. Bu size daha kolay yönetim ve performans getirecektir.</li>
<li>Uygulamanız için uygulama geliştirme arayüzü (API) oluşturabilir, arkanızı yaslanıp yabancı uygulamaların sizinkine entegre olmasını keyifle izleyebilirsiniz.</li>
<li>Cloud Computing konseptine uygun uygulamalar hazırlayabilirsiniz.</li>
</ul>
<p><strong>Peki Soa Nasıl Sağlanıyor?</strong></p>
<p>Soa için web servislerini veya WCF gibi daha yeni teknolojileri kullanabilirsiniz.</p>
<p><span style="text-decoration: underline;">XML Web Servisleri :</span> Veri iletimi için oluşturulmuş xml yapılarının kullanıldığı yöntemdir. XML Web servislerinde eger yazdığınız servis karşı tarafta karşılığı bulunmayan bir veri türü kullanmıyorsa (örnegin datatable) yazılan metodlar dil bağımsız olur. Yani Java ile yazılan bir web servisi .Net ile çağırabilirsiniz. Web servisi yazmak Java veya .Net gibi platformlarda resmen çocuk oyuncağıdır (ayrıntılar için <a href="http://www.csharpnedir.com/articles/read/?id=370" target="_blank">şuraya</a> bakabilirsiniz).</p>
<p><span style="text-decoration: underline;">API Uygulamaları :</span> Tam olarak Soa içerisinde sayılmasalarda yinede bahsetmek gerek. Büyük çoğunluğu, GET metoduyla (QueryString) gönderilen parametreleri işleyerek geriye sonuçlar döndüren yapılardan oluşur (<a href="http://code.google.com/intl/tr-TR/apis/chart/" target="_blank">Örnek</a>).</p>
<p><span style="text-decoration: underline;">WCF (Windows Communication Foundation) :</span> .Net uygulamaları için kullanılabilecek, web servislerinin geliştirilmiş halidir. En temel avantajı, servisi açmak için bir web sunucusu kullanmanız gerekmemesidir. Bunun yerine kendi uygulamalarınızdan da yayın yapabilirsiniz (ayrıntılar için <a href="http://www.csharpnedir.com/articles/read/?id=719" target="_blank">şuraya</a> bakabilirsiniz).</p>
<p><strong>Web Uygulamalarında Soa</strong></p>
<p>Web uygulamaları için soa ilk bakışta gereksiz gibi görünsede en az diğer uygulama türleri için olduğu kadar gereklidir. Web uygulamalarında sunucuların dağıtık yapıda olması (gerek veritabanı sunucuları için (linked server) gerekse uygulama sunucuları için) performans açısından elzem bir uygulamadır.</p>
<p>Örnegin Facebook gibi uygulamalar, dağıtık şekilde birçok veritabanı ve uygulama sunucusu kullanırlar.</p>
<p>Diğer bir örnek olarak banka servisleri verilebilir. Uygulamalarınızın banka entegrasyonu olmasını istiyorsanız ilgili bankaların web servislerini kullanmanız gerekir.</p>
<p>Son bir not olarak soa uygulamalarında state yönetimine dikkat etmenin öneminden bahsetmek istiyorum. Birden fazla servis kullanırken her bir servis için state durumunu (yani session durumunu) kontrol etmek gerekir. Bu servisler herhangi bir state bilgisi barındırmayacaklarından bu katmanlarda durum yönetimini sıkı yapmak gerekir. Yoksa çok büyük bir güvenlik açığı oluşturmuş olursunuz.</p>
<p><span style="text-decoration: underline;"><strong>Kaynaklar</strong></span></p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" target="_blank">SOA (Wikipedia)</a></li>
<li><a href="http://www.evcil.net/post/soa-nedir-hoca" target="_blank">SOA Nedir Hoca?</a></li>
<li><a href="http://analystdeveloper.com/blogs/gurkan/archive/2005/08/09/1045.aspx" target="_blank">SOA ve Proje Analizi</a></li>
<li><a href="http://www.service-architecture.com/" target="_blank">Web Services and Service-Oriented Architectures</a></li>
<li><a href="http://soa-tr.com/" target="_self">SOA Hakkında Herşey (Blog)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kaan.basesistem.com/?feed=rss2&amp;p=621</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
