<?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>rayyildiz.com &#187; java</title>
	<atom:link href="http://rayyildiz.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://rayyildiz.com</link>
	<description>Bilgi Paylaşıldıkça Güzelleşir</description>
	<lastBuildDate>Mon, 16 Jan 2012 11:07:59 +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>Griffon Başlangıç</title>
		<link>http://rayyildiz.com/2011/10/griffon-baslangic/</link>
		<comments>http://rayyildiz.com/2011/10/griffon-baslangic/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 03:53:19 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[Griffon]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/2011/10/griffon-baslangic/</guid>
		<description><![CDATA[Chicago da gerçekleştirilen SpringOne2GX etkinliği kapsamında epey ilginç ve de güzel seyler gördüm. Etkinliğin son gunü, paralel giden konferanslardan sonuncusunda herhangi bir bilgimin olmadigi ve diğer konuları beğenmediğinden dolayı Griffon a katılmayı tercih ettim. Hakkında çok az şey biliyordum. Ancak sunu soylemeliyim ki etkinlik kapsamında bu kadar beni şaşırtan konu olmamıştı. Bu nedenle hakkında bazı [...]]]></description>
			<content:encoded><![CDATA[<p>Chicago da gerçekleştirilen SpringOne2GX etkinliği kapsamında epey ilginç ve de güzel seyler gördüm. Etkinliğin son gunü, paralel giden konferanslardan sonuncusunda herhangi bir bilgimin olmadigi ve diğer konuları beğenmediğinden dolayı  Griffon a katılmayı tercih ettim. Hakkında çok az şey biliyordum. Ancak sunu soylemeliyim ki  etkinlik kapsamında bu kadar beni şaşırtan konu olmamıştı. Bu nedenle hakkında bazı bilgileri paylaşma gereği duyuyorum.<br />
<a href="http://rayyildiz.com/wp-content/uploads/20111028-223216.jpg" rel="lightbox[541]"><img src="http://rayyildiz.com/wp-content/uploads/20111028-223216.jpg" alt="20111028-223216.jpg" class="alignnone size-full" /></a><br />
Eğer Groovy ile program yazdıysanız, hele de grails ile proje geliştirdiyseniz, griffon size çok kolay gelecektir. <span id="more-541"></span></p>
<p><a href="http://griffon.codehaus.org">Griffon</a> grails gibi proje geliştirmek için gelistirilmis bir proje. Griffon JSR 295 ve JSR 296 uyumlu. Su an itibariyle 170 ten fazla plugin e sahip. </p>
<p><strong>Griffon Başlangıç </strong><br />
Griffon indirdekten sonra, bazı ayarlar yapmanız gerekiyor. <a href="http://griffon.codehaus.org/Installing+Griffon">Buradan</a> bilgi alarak bu işlemleri gerçekleştirebilirsiniz. </p>
<p>Grails de olduğu gibi griffon ile bir proje acmak çok kolay. </p>
<blockquote><p>griffon create-app</p></blockquote>
<p>Evet sadece bu kadar. Peki hatırlayalım, grails de bir projeyi çalıştırmak için ne yapıyorduk ? </p>
<blockquote><p>grails run-app</p></blockquote>
<p>Tahmin edebileceğiniz gibi griffon da bir proyi çalıştırmak grails de projeyi çalıştırmak gibi.</p>
<blockquote><p>griffon run-app</p></blockquote>
<p>Java da çeşitli uygulamaları denince applet de akla gelir. Peki bir griffon ile bir applet nasıl yazarız? Cevap çok kolay herhangi bir şey yapmanıza gerek yok: sadece uygulamanızı yazın ve calistirirken şu sekilde çalıştırın.</p>
<blockquote><p>griffon run-applet</p></blockquote>
<p>Aklınıza  applet güzel ama biz bunu web den calistirabilir bir sekilde nasıl yazarız diye gelebilir. Hemen onun da cevabını söyleyeyim. </p>
<blockquote><p>griffon run-webstart</p></blockquote>
<p>Projenizi yazdınız ve deployment yapmak istiyorsunuz. Grails de olduğu gibi</p>
<blockquote><p>griffon dev package</p></blockquote>
<p>demeniz yeterli. Bu sizin için standolone, applet, webstart için paketleri olusuturacaktir. Hatta applet için <em>self signed</em> bir sertifika ile oluşturacaktir.<br />
<a href="http://rayyildiz.com/wp-content/uploads/20111028-2232051.jpg" rel="lightbox[541]"><img src="http://rayyildiz.com/wp-content/uploads/20111028-2232051.jpg" alt="20111028-223205.jpg" class="alignnone size-full" /></a><br />
Swing ve java ile ugrastiysaniz, jar dosyasını dağıtmanın hiç de mantıklı olmadıgını bilirsiniz. Size tavsiyem <strong>installer</strong> adında bir plugin var, onu kullanmanızı tavsiye ederim. </p>
<blockquote><p>griffon installer-plugin installer</p></blockquote>
<p>Plugin kurduktan sonra şu sekilde projenizi paket oluşturabilirsiniz. Bu size MAC OS, Windows ve debian için kurulum paketleir hazirlayacaktir.</p>
<blockquote><p>griffon package dmg izpack deb</p></blockquote>
<p><strong>Griffon Archtype</strong><br />
Eğer Groovy bilmiyorsanız, güzel bir haberim var: griffon scala, Java, jython &#8230; dillerini de destekliyor. Projenizi olustururken archtype belirterek projenizi istediğiniz bir dilde yazabilirsiniz.</p>
<blockquote><p>griffon create-app -archtype=scala<br />
griffon create-app -archtype=java</p></blockquote>
<p><strong>Bizi Ne Bekliyor</strong><br />
Proje su anda 0.9.4 sürümü mevcut. Yıl sonunda 1.0 gelecek. Proje epey iyi bir şekilde yoluna devam ediyor. Avusturalya da çok önemli bir şirket tüm uygulamalarını griffon ile yazmış. Amerika&#8217;da da epey bir şirket projelerini griffon ile yazmaya başlamış.<br />
Şu anda veri tabanı işlemi için datasource adındaki plugin i kullanabilirsiniz. Yalnız griffon 2 ile birlikte GORM birlikte gelecek. Bununla beraber griffon 2.0 da scaffold da geliyor. </p>
<p>Son söz olarak, bu projeyi oldukça başarılı bulduğumu tekrar belirtmek isterim. Desktop projelerimde griffon u kullanmayı hedefliyorum. Şimdilik bu kadar, eve gidince griffon ile geliştireceğim projeleri ve griffon hakkında daha detaylı calışmalarımı paylaşacağım.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2011/10/griffon-baslangic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpringOne 2GX &#8211; KeyNote</title>
		<link>http://rayyildiz.com/2011/10/springone-2gx-keynote/</link>
		<comments>http://rayyildiz.com/2011/10/springone-2gx-keynote/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 01:44:06 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[açılış]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Keynote]]></category>
		<category><![CDATA[s2gx]]></category>
		<category><![CDATA[SpringOne]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/2011/10/springone-2gx-keynote/</guid>
		<description><![CDATA[Uzun süredir beklediğim SpringOne 2GX ilk gunü geride kaldı. Katılımın yüksek olacağı bir etkinliğe benziyor. Bugün gerçekleştirilen &#8220;Keynote&#8221; çok kalabalıktı .Bu kadar kalabalık olacağını tahmin etmemiştim. &#8220;Keynote&#8221; bir hosgeldiniz ve etkinlik kapsamında hangi konuların islenecegi bilgisinin verildiği bir toplantiydi. SpringOne ilk süprizini Keynote da öğrendik. Rod Johnson kolunu kırmış olması ve doktorunun uçma yasağı nedeniyle [...]]]></description>
			<content:encoded><![CDATA[<p>Uzun süredir beklediğim SpringOne 2GX ilk gunü geride kaldı. Katılımın yüksek olacağı bir etkinliğe benziyor. Bugün gerçekleştirilen &#8220;Keynote&#8221; çok kalabalıktı .Bu kadar kalabalık olacağını tahmin etmemiştim.</p>
<p>&#8220;Keynote&#8221; bir hosgeldiniz ve etkinlik kapsamında hangi konuların islenecegi bilgisinin verildiği bir toplantiydi.<br />
<a href="http://rayyildiz.com/wp-content/uploads/20111026-203326.jpg" rel="lightbox[537]"><img src="http://rayyildiz.com/wp-content/uploads/20111026-203326.jpg" alt="20111026-203326.jpg" class="alignnone size-full" /></a><br />
SpringOne ilk süprizini Keynote da öğrendik. Rod Johnson kolunu kırmış olması  ve doktorunun uçma yasağı nedeniyle etkinliğe katılamamasiydi. Ben SpringOne ilk kez katılıyorum ama ben bile etkinliğin Rod olmadan başladığını hatırlamıyorum. Bu Rod un katılmadığı ilk etkinlik olacak. Bunun yaninda Graeme Rocher soğuk algınlığı almış herhalde, sesi çok kötüydü. </p>
<p>Etkinlik kapsamında başlıca islenilecek konular: Spring data, grails, bulut mimariler. Özellikle bulut mimariler bu etkinliğin en önemli konularını içeriyor. Heroku, cloudfoundry, appfog etkinliğe  sponsor olmuşlar.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2011/10/springone-2gx-keynote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Groovy Programlamaya Giriş</title>
		<link>http://rayyildiz.com/2011/02/groovy-programlamaya-giris/</link>
		<comments>http://rayyildiz.com/2011/02/groovy-programlamaya-giris/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 12:41:54 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=438</guid>
		<description><![CDATA[Daha önceki yazımda groovy ve grails&#8217;in nasıl kurulacağı bilgisini vermiştim. Bu yazımda ise groovy programlamaya başlayacağız. Groovy java programlama diline alışkın kişilerin, Python, Ruby, Smalltalk yer alan özellikleri kullanabilmesine olanak sunan agile bir programlama dili olarak tanımlanıyor. Groovy JVM üzerinde çalışır ve tüm groovy nesneleri java.lang.Object ten türemiştir. Groovy ile yazılan bir nesne derlendikten sonra [...]]]></description>
			<content:encoded><![CDATA[<p>Daha <a href="http://rayyildiz.com/2010/08/groovy-ve-grails-kurulumu/">önceki yazımda</a> groovy ve grails&#8217;in nasıl kurulacağı bilgisini vermiştim. Bu yazımda ise groovy programlamaya başlayacağız.</p>
<p>Groovy java programlama diline alışkın kişilerin, Python, Ruby, Smalltalk yer alan özellikleri kullanabilmesine olanak sunan agile bir programlama dili olarak tanımlanıyor.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_jvm.png" rel="lightbox[438]"><img class="alignnone size-full wp-image-439" title="groovy_jvm" src="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_jvm.png" alt="" width="358" height="205" /></a></p>
<p>Groovy JVM üzerinde çalışır ve tüm groovy nesneleri <em>java.lang.Object</em> ten türemiştir. Groovy ile yazılan bir nesne derlendikten sonra bytecode a cevrilir. Oluşan<em> *.class</em> dosyasını classpath&#8217;inize eklenerek java tarafından kullamabilirsiniz. Yani java&#8217;dan groovy&#8217;ye, groovy den ise java&#8217;ya erişmek cok kolaydır.</p>
<blockquote><p>Groovy&#8217; de &#8220;;&#8221; kullanma zorunluğu yoktur.</p></blockquote>
<p>Groovy  mevcut dilin kütüphanelerin dışında, diğer kütüphaneler ve JDK yer alan özelliklerin yer aldığı GDK&#8217;den oluşmaktadır<br />
<a href="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_gdk_java.png" rel="lightbox[438]"><img class="alignnone size-medium wp-image-440" title="groovy_gdk_java" src="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_gdk_java-300x180.png" alt="" width="300" height="180" /></a><br />
Groovy javada yer alan List, Map &#8216; e yeni özellikler katar. örneğin şu satır nesnelerin paketlerini ekrana basar.</p>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz
class ListMapTest {
   static main(args) {
      def classes = [String, Date, Long, Boolean]
      println(classes.'package'.name);
   }
}
</pre>
<p>Bir siteye erişip içeriğini okumak için aşağıda bir code yer almakta, görebileceğiniz gibi groovy de bir rss&#8217;i almak cok kolay.Groovy de closure code yazmak çok kolaşmakta.</p>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz
import java.net.URL
class HelloWorld {
   static main(args) {
      def url = new URL(&quot;http://rayyildiz.com/feed&quot;);
         url.eachLine { ln -&gt;
         println(ln);
      }
   }
}
</pre>
<p>Özellikle java programcılarının çok kolay alışabileceği bir dil olan groovy yi incelemenizi tafsiye ederim. Size farklı bir bakış açışı kazandıracaktır.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2011/02/groovy-programlamaya-giris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java&#8217;da Vector ve ArrayList Performans Karşılaştırması</title>
		<link>http://rayyildiz.com/2010/10/javada-vector-ve-arraylist-performans-karsilastirmasi/</link>
		<comments>http://rayyildiz.com/2010/10/javada-vector-ve-arraylist-performans-karsilastirmasi/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 01:16:13 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[arraylist]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[karşılaştırma]]></category>
		<category><![CDATA[performans]]></category>
		<category><![CDATA[vector]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=295</guid>
		<description><![CDATA[javada, Vector ve ArrayList arasındaki farkın ne olduğunu sorulduğunda, genel olarak şunları söyleriz Vector&#8217;un thread-safe&#8216;dir. Vector kapasitesi 2 kat artacak şekildedir (eğer capacityIncrement değeri verilmediyse). ArrayList her seferinde kapasitesinin yarısı kadar ( %50) kapasitesini artırır. Herikisi de öntanımlı olarak 10 element saklayabilecek şekilde ilklenir. Burada¬† en çok Vector&#8217;un thread-safe özelliği öne çıkar. Yani Vector; ArrayList [...]]]></description>
			<content:encoded><![CDATA[<p>javada, <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html" target="_blank">Vector</a> ve <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html" target="_blank">ArrayList</a> arasındaki farkın ne olduğunu sorulduğunda, genel olarak şunları söyleriz</p>
<ul>
<li> Vector&#8217;un <a href="http://www.javaworld.com/javaworld/jw-03-1998/jw-03-indepth.html?page=1" target="_blank">thread-safe</a>&#8216;dir.</li>
<li>Vector kapasitesi 2 kat artacak şekildedir (eğer capacityIncrement değeri verilmediyse).</li>
<li>ArrayList her seferinde kapasitesinin yarısı kadar ( %50) kapasitesini artırır.</li>
<li>Herikisi de öntanımlı olarak 10 element saklayabilecek şekilde ilklenir.</li>
</ul>
<p>Burada¬† en çok Vector&#8217;un thread-safe özelliği öne çıkar. Yani Vector; ArrayList e göre, içindeki verinin doğruluğunu garanti eder. Hız olarak nasıl bir etkisi olduğuna ise inceleyelim.</p>
<p><span id="more-295"></span></p>
<p>Peki vector ve ArrayList performans olarak nasıl bir farkı vardır. Bunun için örnek yazdığım uygulamayı <a href="http://github.com/rayyildiz/PerformanceTest">http://github.com/rayyildiz/PerformanceTest</a> inceleyebilirsiniz.</p>
<p>Performans karşılaştırılmasında 100.000 tane rastgele oluşturulmuş sayılar eklenip, işlem yapılmaktadır.</p>
<h2>Ekleme İşlemi</h2>
<p>Vector ve ArrayList e rastgele oluşturulmuş 100.000 element ekleniyor</p>
<pre class="brush: java; title: ; notranslate">
IList&amp;lt;Integer&amp;gt; vectorList = new IntegerVectorListImpl();
IList&amp;lt;Integer&amp;gt; arrayList = new IntegerArrayListImpl();
List&amp;lt;Integer&amp;gt; randomIntegers = getRandomIntegers(100000);
long start,end;

write(&quot;Start for inserting ARRAYLIST&quot;);
start = System.currentTimeMillis();
for(Integer i : randomIntegers) arrayList.insert(i);
end = System.currentTimeMillis();
long differenceOfArrayList = end -¬† start;
write(&quot;ArrayList time difference :&quot; + differenceOfArrayList + &quot; ms&quot;);
write(&quot;End for inserting ARRAYLIST&quot;);

write(&quot;Start for inserting VECTOR&quot;);
start = System.currentTimeMillis();
for(Integer i : randomIntegers) vectorList.insert(i);
end = System.currentTimeMillis();
long differenceOfVector = end -¬† start;
write(&quot;Vector time difference :&quot; + differenceOfVector + &quot; ms&quot;);
write(&quot;End for inserting VECTOR&quot;);
</pre>
<p>Bu test işlemi sonucunda alınan değerler şu şekilde.</p>
<table>
<tbody>
<tr>
<th></th>
<th>En İyi Değeri</th>
<th>En Kötü Değeri</th>
<th>Ortalama</th>
</tr>
<tr>
<th>Vector</th>
<td>29</td>
<td>58</td>
<td><strong>36.45</strong></td>
</tr>
<tr>
<th>ArrayList</th>
<td>17</td>
<td>30</td>
<td><strong>24.9</strong></td>
</tr>
</tbody>
</table>
<p>Görüldüğü gibi ArrayList ekleme işlemlerinde daha hızlı çalışıyor.</p>
<h2>Arama İşlemi</h2>
<p>Bir üstteki örnekte olduğu gibi, 100.000 kayıt eklenerek, bu kayıtlar içinden bir değer aranıyor.</p>
<pre class="brush: java; title: ; notranslate">
IList&amp;lt;Integer&amp;gt; vectorList = new IntegerVectorListImpl();
IList&amp;lt;Integer&amp;gt; arrayList = new IntegerArrayListImpl();
List&amp;lt;Integer&amp;gt; randomIntegers = getRandomIntegers(100000);
long start,end;

for(Integer i : randomIntegers) arrayList.insert(i);
for(Integer i : randomIntegers) vectorList.insert(i);

Integer findObj =¬† 777;

write(&quot;Start for search ARRAYLIST&quot;);
start = System.currentTimeMillis();
arrayList.search(findObj);
end = System.currentTimeMillis();
long differenceOfArrayList = end -¬† start;
write(&quot;ArrayList time difference :&quot; + differenceOfArrayList + &quot; ms&quot;);
write(&quot;End for search ARRAYLIST&quot;);

write(&quot;Start for search VECTOR&quot;);
start = System.currentTimeMillis();
vectorList.search(findObj);
end = System.currentTimeMillis();
long differenceOfVector = end -¬† start;
write(&quot;Vector time difference :&quot; + differenceOfVector + &quot; ms&quot;);
write(&quot;End for search VECTOR&quot;);
</pre>
<p>Bununla ilgili sonuc şu şekilde:</p>
<table>
<tbody>
<tr>
<th></th>
<th>En İyi Değeri</th>
<th>En Kötü Değeri</th>
<th>Ortalama</th>
</tr>
<tr>
<th>Vector</th>
<td>6</td>
<td>9</td>
<td><strong>7.6</strong></td>
</tr>
<tr>
<th>ArrayList</th>
<td>6</td>
<td>13</td>
<td><strong>7.4</strong></td>
</tr>
</tbody>
</table>
<p>Görüldüğü gibi ArrayList vector den cok az daha hızlı arama işlemi yapabiliyor sunuz.</p>
<h2>Sonuç Olarak</h2>
<p>Sonuç olarak ise Vector thread-safe özelliğinden dolayı daha güvenli olduğu halde biraz yavaş çalışmaktadır. ArrayList ise daha hızlı olup, multi-thread uygulamalarda verinin doğruluğunu garanti edememektedir</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/10/javada-vector-ve-arraylist-performans-karsilastirmasi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oyun Geliştirmek için Hangi Programlama Dili</title>
		<link>http://rayyildiz.com/2010/08/oyun-gelistirmek-icin-hangi-programlama-dili/</link>
		<comments>http://rayyildiz.com/2010/08/oyun-gelistirmek-icin-hangi-programlama-dili/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 12:23:10 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oyun geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=267</guid>
		<description><![CDATA[√úniversitedeyken hazırladığım, oyun geliştirmek için hangi programlama dili tercih etmek, avantaj ve dezavantajları gibi başlıca konularda fikir veriebilmesi amacıyla yayınlıyorum. https://docs.google.com/present/embed?id=dr9fd4p_58gtqskfcg&#038;interval=5 Aradan epey bir zaman geçtiği için teknolojilerde değişiklikler oldu ama genel anlamda size bilgi verebilir.]]></description>
			<content:encoded><![CDATA[<p>√úniversitedeyken hazırladığım, oyun geliştirmek için hangi programlama dili tercih etmek, avantaj ve dezavantajları gibi başlıca konularda fikir veriebilmesi amacıyla yayınlıyorum.</p>
<p><a href="https://docs.google.com/present/embed?id=dr9fd4p_58gtqskfcg&#038;interval=5">https://docs.google.com/present/embed?id=dr9fd4p_58gtqskfcg&#038;interval=5</a></p>
<p>Aradan epey bir zaman geçtiği için teknolojilerde değişiklikler oldu ama genel anlamda size bilgi verebilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/08/oyun-gelistirmek-icin-hangi-programlama-dili/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JDK6 da Dependency Injection (ServiceLoader)</title>
		<link>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/</link>
		<comments>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 23:33:53 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[di]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk6]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=226</guid>
		<description><![CDATA[DI ne olduğuna dair bir yazıyı buradan ulaşabilirsiniz. JDK6 da ise ServiceLoader gelmektedir. ServiceLoader sayesinde bir nevi DI sağlamış olmaktayız. Bunun nasıl yapacağımızı bir örnekle gösterelim. Uygulamanın örnek test kodlarını github üzerinden bulabilmeniz mümkündür. Bu örneği yapabilmek için 3 tane proje oluşturalım. Bu 3 proje ve açıklaması şu şekildedir: UserAuth : Arayüzün yer aldığı proje.IUserAuthService [...]]]></description>
			<content:encoded><![CDATA[<p>DI ne olduğuna dair bir yazıyı <a href="http://rayyildiz.net/2010/05/what-is-dependency-injection/" target="_blank">buradan</a> ulaşabilirsiniz. JDK6 da ise <a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/util/ServiceLoader.html" target="_blank">ServiceLoader</a> gelmektedir. ServiceLoader sayesinde bir nevi DI sağlamış olmaktayız. Bunun nasıl yapacağımızı bir örnekle gösterelim.</p>
<p>Uygulamanın örnek test kodlarını <a href="http://github.com/rayyildiz/UserAuthSample" target="_blank">github</a> üzerinden bulabilmeniz mümkündür.</p>
<p>Bu örneği yapabilmek için 3 tane proje oluşturalım. Bu 3 proje ve açıklaması şu şekildedir:</p>
<p>UserAuth : Arayüzün yer aldığı proje.IUserAuthService diye bir arayüz yer almakta ve bu arayüz login diye bir metot tanımı içermektedir.</p>
<p>UserAuthImpl: Uygulamanın gerçekleştirildiği sınıf yer alır.</p>
<p>UserAuthTest: Main sınıfının yer aldığı örnek uygulamadır.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/project_tree1.png" rel="lightbox[226]"><img class="alignleft size-medium wp-image-227" title="project_tree" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/project_tree1.png?w=246" alt="" width="246" height="300" /></a>Arayüzün yer aldığı UserAuth projesinde farklı olarak META-INF/services klasörü- ve bu klasör içinde com.rayyildiz.userauth.IUserAuthService dosyası yer almaktadır. Bu dosya içine bakarsanız sadece bir satır yer almaktadır.</p>
<pre class="brush: java; title: ; notranslate">
com.rayyildiz.userauth.impl.UserAuthService
</pre>
<p>ServiceLoader bu dosyalara bakarak hangi implemantosyunu yüklemesi gerektiğini anlar. UserAuth.jar implementasyonun yer aldığı UserAuthImpl.jar referans olarak bilmez. SericeLoader load sırasında bu implementasyonu arayacaktır.</p>
<p>Burada asıl önemli test projemize bakalım:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz.userauth;

import java.util.Iterator;
import java.util.ServiceLoader;

public class Main {
  public static void main(String[] args) {
    ServiceLoader&lt;IUserAuthService&gt; serviceLoader = ServiceLoader.load(IUserAuthService.class);
    Iterator&lt;IUserAuthService&gt; iterator = serviceLoader.iterator();-
    while(iterator!= null &amp;&amp; iterator.hasNext()){
      IUserAuthService userAuthService = iterator.next();
      boolean login = userAuthService.login(&quot;demo&quot;, &quot;password&quot;);
      System.out.println(&quot;Login for username: demo and password:password is &quot; + login);
   }
}
</pre>
<p>Gördüğünüz gibi test uygulaması implementasyon nesnesini görmez. ServiceLoader META-INF/services içinde yer alan dosyalara bakarak implementasyon nesnelerini örnek projenin olduğu klasörde ve CLASSPATH de arar.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Platformunda Tablı Ekranlar</title>
		<link>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/</link>
		<comments>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 21:41:31 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Uygulama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[uygulama geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=210</guid>
		<description><![CDATA[Android ekranları tasarlarken Tab kullanmak güzel bir artı katmakta, Activity ler arasında dolaşmaktan daha avantajlı bir yapı sunmaktadır. Android de tab kullanmak için &#8220;TabActivity&#8221; yararlanacağız. Bunun için ihtiyacımız olan layout xml şu şekilde bir yapıda olmalı. Göreceğiniz gibi ana layout TabHost&#8217;dur. Gördüğünüz bir tane FrameLayout yer almaktadır. Biz code içinde Tab ları ekleyeceğimiz için layout [...]]]></description>
			<content:encoded><![CDATA[<p>Android ekranları tasarlarken Tab kullanmak güzel bir artı katmakta, Activity ler arasında dolaşmaktan daha avantajlı bir yapı sunmaktadır. Android de tab kullanmak için &#8220;<a href="http://developer.android.com/reference/android/app/TabActivity.html" target="_blank">TabActivity</a>&#8221; yararlanacağız. Bunun için ihtiyacımız olan layout xml şu şekilde bir yapıda olmalı.</p>
<pre class="brush: xml; title: ; notranslate">
</pre>
<p>Göreceğiniz gibi ana layout TabHost&#8217;dur. Gördüğünüz bir tane FrameLayout yer almaktadır. Biz code içinde Tab ları ekleyeceğimiz için layout base bir yapıdadır. Tüm Activity leri &#8220;<a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html" target="_blank">AndroidManifest.xml</a>&#8221; içinde tanımlamalısınız.</p>
<p>Tabları host edecek olan nesnemiz ise şu şekildedir:</p>
<pre class="brush: java; title: ; notranslate">
public class ApplicationActivity extends TabActivity {
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    Resources res = getResources();
    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;
    intent = new Intent().setClass(this, DashboardActivity.class);
    spec = tabHost.newTabSpec(&quot;home&quot;).setIndicator(&quot;Home&quot;,
         res.getDrawable (R.drawable.ic_tab_dashboard)).setContent(intent);
    tabHost.addTab(spec);
    intent = new Intent().setClass(this, CreditCardActivity.class);
    spec = tabHost.newTabSpec(&quot;sample1&quot;).setIndicator(&quot;Sample Tab&quot;,
         res.getDrawable (R.drawable.ic_tab_sample1)).setContent(intent);
    tabHost.addTab(spec);
    intent = new Intent().setClass(this, SettingActivity.class);
    spec = tabHost.newTabSpec(&quot;sample2&quot;).setIndicator(&quot;Sample Tab 2&quot;,
        res.getDrawable (R.drawable.ic_tab_sample2)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, AboutActivity.class);
    spec = tabHost.newTabSpec(&quot;about&quot;).setIndicator(&quot;Sample Tab 3&quot;,
        res.getDrawable (R.drawable.ic_tab_about)).setContent(intent);
    tabHost.addTab(spec);
    tabHost.setCurrentTab(0);
  }
}
</pre>
<p>Ben burada daha şık olması amacıyla Tab seçili iken farklı bir ikon görünmesi amacıyla &#8220;ic_tab_xxx&#8221; dosyalarını kullandım. Bunlar şuna benzer bir yapıdadır:</p>
<pre class="brush: xml; title: ; notranslate">
</pre>
<p>Uygulamamızı çalıştırdığımızda ekran görünütüsü buna benzer olmaktadır.</p>
<p><a href="http://rayyildizc.files.wordpress.com/2010/06/android_sample_tab1.png" rel="lightbox[210]"><img src="http://rayyildizc.files.wordpress.com/2010/06/android_sample_tab1.png?w=201" alt="" title="android_sample_tab" width="201" height="300" class="alignnone size-medium wp-image-211" /></a><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_sample_tab21.png" rel="lightbox[210]"><img src="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_sample_tab21.png?w=201" alt="" title="android_sample_tab2" width="201" height="300" class="alignnone size-medium wp-image-217" /></a></p>
<p>Daha sonra daha detaylı bilgi paylaşıyor olacağım, şimdilik hoşcakalın.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Uygulamalarında Veritabanı İşlemleri</title>
		<link>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/</link>
		<comments>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 01:19:18 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Uygulama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[uygulama geliştirme]]></category>
		<category><![CDATA[veritabanı]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=194</guid>
		<description><![CDATA[Bir uygulama geliştirirken verilerin saklanması ihtiyacı doğmakta ve verilerin uygulamadan ayrı bir yapı olarak durması maksadıyla veritabını kullanılmaktadır. Android bir uygulama geliştirirken, aynı nedenden dolayı verilerin saklanması ihtiyacınız olacaktır. Micro device için uygulama geliştirmek, desktop bir bilgisayar için uygulama geliştirmekten daha zordur. Memory ve harddisk&#8217;inizin kısıtlı olması, işlemcinin gücü, multitask uygulama geliştirme sıkıntısı başlıcalarındandır. Android [...]]]></description>
			<content:encoded><![CDATA[<p>Bir uygulama geliştirirken verilerin saklanması ihtiyacı doğmakta ve verilerin uygulamadan ayrı bir yapı olarak durması maksadıyla veritabını kullanılmaktadır. Android bir uygulama geliştirirken, aynı nedenden dolayı verilerin saklanması ihtiyacınız olacaktır. Micro device için uygulama geliştirmek, desktop bir bilgisayar için uygulama geliştirmekten daha zordur. Memory ve harddisk&#8217;inizin kısıtlı olması, işlemcinin gücü, multitask uygulama geliştirme sıkıntısı başlıcalarındandır. Android de ise yerleşik <a href="http://www.sqlite.org/" target="_blank">sqlite</a> veritabanının yer alması ise Android&#8217;e önemli bir artı sunmaktadır.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/sqlite1.gif" rel="lightbox[194]"><img class="alignleft size-full wp-image-195" title="SQLite" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/sqlite1.gif" alt="" width="327" height="97" /></a>Sqlite, oldukça önemli projelerde kullanılmış (Firefox,Skype, Mcfee, iPhone,&#8230;) ve de oldukçe <a href="http://www.sqlite.org/th3.html" target="_blank">iyi test edilmiş</a> bir veritabanıdır. 4K stack ve 100K ise heap için yeterlidir. Android içinde ise gelen sqlite, bir android uygulamasının ihtiyac duyduğu veritabanı işlemlerini karşılayacak düzeydedir.</p>
<p>Bu giriş bilgilerinden sonra örnek bir uygulama geliştirelim. Uygulamamız, ad, soyad ve telefon numarası kayıt edeceğimiz bir &#8220;customer&#8221; tablosu olsun. Linux &#8216;ta sqliteman gibi bir uygulama ile veritabanınızı oluştururun. Örneğimizde kullanacağımız tablonun scripti şu şekildedir:<br />
<span id="more-194"></span></p>
<pre class="brush: sql; title: ; notranslate">

CREATE TABLE &quot;Customer&quot; (
&quot;Id&quot; INTEGER PRIMARY KEY,
&quot;Firstname&quot; TEXT,
&quot;Lastname&quot; TEXT,
&quot;PhoneNumber&quot; TEXT
);
</pre>
<p>Daha sonra ise IDE nizde bir android uygulaması açınız(<a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/list_customers1.png2010/06/android-icin-uygulama-gelistirme/">Android le Uygulama Geliştirme</a> yazısından faydalanabilirsiniz). Ben daha eski telefonlarda kullanılabilmesi için 1.6 uygulması actım. Daha sonra ise droiddraw ana ekran tasarlıyoruz.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw_main1.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-197" title="droiddraw_main" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw_main1.png?w=300" alt="" width="300" height="175" /></a></p>
<p>Veritabanı ilk acıldığında tablonun create edilmesi için create script i kod içine almamız gerekir. Aynı şekilde örneğimizde compiled statement kullanıyoruz. Şu anda sadece insert ve getAll metodunu implemente ettik.</p>
<pre class="brush: java; title: ; notranslate">
public class DbHelper {
  private static final String DATABASE_NAME = &quot;rayyildiz_sample.db&quot;;
  private static final int DATABASE_VERSION = 1;
  private static final String TABLE_NAME = &quot;Customer&quot;;
  private static final String TABLE_CREATE = &quot;CREATE TABLE &quot; + TABLE_NAME + &quot; ( &quot;
      + &quot;  \&quot;Id\&quot; INTEGER PRIMARY KEY,&quot;
      + &quot;  \&quot;Firstname\&quot; TEXT,&quot;
      + &quot;  \&quot;Lastname\&quot; TEXT,&quot;
      + &quot;  \&quot;PhoneNumber\&quot; TEXT&quot; + &quot;)&quot;;
  private static final String TABLE_INSERT = &quot;INSERT INTO &quot; + TABLE_NAME + &quot;(Firstname,Lastname,PhoneNumber) VALUES (?,?,?)&quot;;
  private Context context;
  private SQLiteDatabase database;
  private SQLiteStatement insertSQLiteStatement;

  public DbHelper(Context context) {
    this.context = context;
    DbOpenHelper dbOpenHelper = new DbOpenHelper(context);
    database = dbOpenHelper.getWritableDatabase();
    insertSQLiteStatement = database.compileStatement(TABLE_INSERT);
  }

  public long insertCustomer(Customer customer) {
    if (customer == null) {
      return -1;
    }
    insertSQLiteStatement.bindString(1, customer.getFirstname());
    insertSQLiteStatement.bindString(2, customer.getLastname());
    insertSQLiteStatement.bindString(3, customer.getPhoneNumber());

    return insertSQLiteStatement.executeInsert();
  }

  public List getAllCustomer() {
    List customers = new ArrayList();
    Cursor cursor = database.query(TABLE_NAME, new String[]{&quot;id,Firstname,Lastname,PhoneNumber&quot;}, null, null, null, null, &quot;id desc&quot;);
    if (cursor.moveToFirst()) {
      do {
        Customer c = new Customer();
        c.setId(cursor.getInt(0));
        c.setFirstname(cursor.getString(1));
        c.setLastname(cursor.getString(2));
        c.setPhoneNumber(cursor.getString(3));

        customers.add(c);
      } while (cursor.moveToNext());
    }
    if (cursor != null &amp;amp;&amp;amp; !cursor.isClosed()) {
      cursor.close();
    }
    return customers;
  }

  private static class DbOpenHelper extends SQLiteOpenHelper {
    public DbOpenHelper(Context context) {
      super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
      db.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      db.execSQL(&quot;DROP TABLE IF EXISTS &quot; + TABLE_NAME);
      onCreate(db);
    }
  }
}
</pre>
<p>Bu ise Customer nesnesi</p>
<pre class="brush: java; title: ; notranslate">
public class Customer {
  private int id;
  private String firstname;
  private String lastname;
  private String phoneNumber;

  public String getFirstname() {
    return firstname;
  }

  public void setFirstname(String firstname) {
    this.firstname = firstname;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getLastname() {
    return lastname;
  }

  public void setLastname(String lastname) {
    this.lastname = lastname;
  }

  public String getPhoneNumber() {
    return phoneNumber;
  }

  public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
  }
}
</pre>
<p>İki tane Aktivity ekleyelim birisi MainActivity, diğeri ise Customer bilgilerini giriş yapabileceğimiz Activity olsun.</p>
<p>Bunlardan AddCustomerActivity şu şekilde:</p>
<pre class="brush: java; title: ; notranslate">

public class AddCustomerActivity extends Activity {
    public final static int SUCCESS_RETURN_CODE = 1;
  private DbHelper m_db;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.insert);

    m_db = new DbHelper(this);
    Button saveButton = (Button) findViewById(R.id.btnSave);
    final  EditText textFirstname = (EditText) findViewById(R.id.textFirstname);
    final EditText textLastname = (EditText) findViewById(R.id.textLastname);
    final EditText textPhoneNumber = (EditText) findViewById(R.id.textPhoneNumber);

    saveButton.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
       Intent intent = new Intent();
       Customer c = new Customer();
       c.setFirstname(textFirstname.getText().toString());
       c.setLastname(textLastname.getText().toString());
       c.setPhoneNumber(textPhoneNumber.getText().toString());
       m_db.insertCustomer(c);
       setResult(SUCCESS_RETURN_CODE, intent);
       finish();
     }
    });
  }
}
</pre>
<p>Ve Main Activity şu şekildedir</p>
<pre class="brush: java; title: ; notranslate">
public class MainActivity extends Activity {
  protected static final int SUB_ACTIVITY_REQUEST_CODE = 100;

  private ProgressDialog m_ProgressDialog = null;
  private ArrayList m_customers = null;
  private DataAdapter m_adapter;
  private Runnable viewData;
  DbHelper m_db;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    // ToDo add your GUI initialization code here
    setContentView(R.layout.main);
    m_db = new DbHelper(this);
    // initialize process
    m_customers = new ArrayList();
    this.m_adapter = new DataAdapter(this, R.layout.row, m_customers);
    setListAdapter(this.m_adapter);

    Button refreshButton = (Button)findViewById(R.id.btnRefresh);
    refreshButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View arg0) {
        refresh();
      }
    });

    Button addButton = (Button) findViewById(R.id.btnAdd);
    addButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v
          ) {
        Intent i = new Intent(MainActivity.this,AddCustomerActivity.class);
        startActivityForResult(i, SUB_ACTIVITY_REQUEST_CODE);
        //startActivity(i);
      }
    });
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SUB_ACTIVITY_REQUEST_CODE) {
      refresh();
    }
  }

  private void setListAdapter(DataAdapter m_adapter) {
    ListView lw = (ListView) findViewById(R.id.listCustomer);
    if (lw != null) {
      lw.setAdapter(m_adapter);
    }
  }

  private void insert(Customer c){
    m_db.insertCustomer(c);
  }

  private void refresh(){
    WorkerThread thread = new WorkerThread();
    //Thread thread = new Thread(null, viewData, &quot;MagentoBackground&quot;);
    thread.start();
    m_ProgressDialog = ProgressDialog.show(MainActivity.this,
        &quot;Please wait...&quot;, &quot;Resfreshing data ...&quot;, true);
  }

  private class WorkerThread extends Thread {

    @Override
    public void run() {
      getCustomers();
    }
  }

  private Runnable returnRes = new Runnable() {
    @Override
    public void run() {
      if (m_customers != null &amp;amp;&amp;amp; m_customers.size() &amp;gt; 0) {
        m_adapter.clear();
        m_adapter.notifyDataSetChanged();
        for (int i = 0; i &amp;lt; m_customers.size(); i++) {
          m_adapter.add(m_customers.get(i));
        }
      }
      m_ProgressDialog.dismiss();
      m_adapter.notifyDataSetChanged();
    }
  };

  private void getCustomers() {
    try {
      m_customers = new ArrayList();

      m_customers = (ArrayList) m_db.getAllCustomer();

      //Thread.sleep(2000);
    } catch (Exception e) {
      Log.e(&quot;BACKGROUND_PROC&quot;, e.getMessage());
    }
    runOnUiThread(returnRes);
  }

  public class DataAdapter extends ArrayAdapter{
  private ArrayList items;

  public DataAdapter(Context context, int textViewResourceId, ArrayList items) {
    super(context, textViewResourceId, items);
    this.items = items;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      v = vi.inflate(R.layout.row, null);
    }
    Customer o = items.get(position);
    if (o != null) {
      TextView tt = (TextView) v.findViewById(R.id.listLabeltext);
      if (tt != null) {
        tt.setText(o.getId() +&quot; : &quot; + o.getFirstname() + &quot; &quot; + o.getLastname() + &quot;(&quot;+ o.getPhoneNumber() + &quot;)&quot;);
      }
    }
     return v;
  }
  }
}
</pre>
<p>Örnek uygulamamızın ekran görüntüleri</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/add_customer1.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-202" title="add_customer" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/add_customer1.png?w=198" alt="" width="198" height="300" /></a></p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/list_customers1.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-203" title="list_customers" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/list_customers1.png?w=201" alt="" width="201" height="300" /></a></p>
<p>Uygulamanın kaynak kodunu ise <a href="http://code.google.com/p/nbase/" target="_blank">google code</a> üzerinden indirebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Android için Uygulama Geliştirme</title>
		<link>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/</link>
		<comments>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 11:06:15 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Uygulama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[uygulama geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=174</guid>
		<description><![CDATA[Android ile uygulama geliştirmeye başlamak için Android SDK indirmeniz gerekiyor. İşletim sisteminize göre bir sürümü indirip açtıktan sonra , windows için Setup.exe kullanadarak linux için ise tools klasörü altında yer alan ./android komutuyla android platform indirmeniz gerekiyor. Şu anda en son sürüm 2.2 (Android dilerseniz tüm platformları dilerseniz sadece ihtiyacınız olan platformu indirebilirsiniz. Platformu indirmek [...]]]></description>
			<content:encoded><![CDATA[<p>Android ile uygulama geliştirmeye başlamak için <a href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK</a> indirmeniz gerekiyor. İşletim sisteminize göre bir sürümü indirip açtıktan sonra , windows için Setup.exe kullanadarak linux için ise tools klasörü altında yer alan ./android komutuyla android platform indirmeniz gerekiyor.</p>
<p>Şu anda <a href="http://developer.android.com/sdk/android-2.2.html" target="_blank">en son sürüm 2.2</a> (Android <img src='http://rayyildiz.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> dilerseniz tüm platformları dilerseniz sadece ihtiyacınız olan platformu indirebilirsiniz. Platformu indirmek biraz zaman alabilir.</p>
<p>Bu sırada size tafsiyem UI tasarlayabileniz için <a href="http://www.droiddraw.org/" target="_blank">droiddraw</a> adındaki bir uygulamayı indirmenizdir. Her ne kadar da eclipse için <a href="http://developer.android.com/sdk/eclipse-adt.html" target="_blank">ADT</a> paketi yer alsa da ben droiddraw ı daha çok beğendim. Ayrıca biz örneği <a href="http://www.netbeans.org" target="_blank">netbeans</a> ile geliştireceğiz. Bu yüzden droiddraw ı indirmenizde yarar var. Ayrıca netbeans için geliştirilmiş NBAndroid eklentisini- <a href="http://wiki.netbeans.org/IntroAndroidDevNetBeans" target="_blank">bu adresten yardım alarak</a> veya ÔªøÔªø <a href="http://kenai.com/downloads/nbandroid/updates.xml" target="_blank">http://kenai.com/downloads/nbandroid/updates.xml</a> update adresiyle kurabilirsiniz. Yapmanız gereken netbeans de Tools-&gt;Plugins oradan da Settings de &#8220;Add&#8221; butonuna tıklayarak bu plugini eklemek ve Available Plugins tabında Android diye aratıp bu plugin i kurmaktır.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/application_run1.pngwp-content/uploads/2010/06/nbandroid_plugin_install.png" rel="lightbox[174]"><img class="alignnone size-medium wp-image-176" title="nbandroid_plugin_install" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/nbandroid_plugin_install-e1275732394906.png?w=300" alt="" width="300" height="186" /></a></p>
<p>Daha sonra linux için terminalden aşağıdaki komutu- çalıştırıp DroidDraw ı açın. Windows da eğer Java6 kuruluysa, droiddraw ın içindeki droiddraw.jar ı tıklamanız yeterlidir.</p>
<pre class="brush: bash; title: ; notranslate">
rayyildiz@iceface:~/Downloads/developer/droiddraw-r1b14$ sh droiddraw.sh &amp;amp;
</pre>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw1.png" rel="lightbox[174]"><img class="alignleft size-medium wp-image-179" title="droiddraw" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw1.png?w=300" alt="" width="300" height="174" /></a>Droiddraw ile widgets tab ındaki Button u sürükleyip yandaki alana bırakınız. Daha sonra Button&#8217;a tıklayıp Properties tabı na tıklayınız.Burada şu bilgileri değiştirin:</p>
<p>id&#8212;&#8212;&#8211; : <strong>@+id/btnSample</strong></p>
<p>Width : <strong>100px</strong></p>
<p>Text&#8212;- : <strong>Hi</strong></p>
<p>Bunları değiştirip Apply düğmensine basın. Sizde diğer özellikleri bakabilirsiniz. <em>Burada sadece şu aklınızda olsun; Width, height, left margin değerleri gibi yerlerde mutlaka px ekleyin. Yani 100 değil 100px olmalı</em>. Bu işlemleri tamamlayıp Generete tıklanız. Output ekranında aşağıdakine benzer bir xml üretecek. Bu xml sizin UI nı oluşturacaktır.</p>
<pre class="brush: xml; title: ; notranslate">
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;AbsoluteLayout
android:id=&quot;@+id/widget0&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;
xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
&amp;gt;
&amp;lt;Button
android:id=&quot;@+id/btnSample&quot;
android:layout_width=&quot;100px&quot;
android:layout_height=&quot;wrap_content&quot;
android:text=&quot;Hi&quot;
android:layout_x=&quot;90px&quot;
android:layout_y=&quot;32px&quot;
&amp;gt;
&amp;lt;/Button&amp;gt;
&amp;lt;/AbsoluteLayout&amp;gt;
</pre>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_new_project1.png" rel="lightbox[174]"><img class="alignleft size-medium wp-image-182" title="android_new_project" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_new_project1.png?w=300" alt="" width="300" height="203" /></a>Netbeans de yeni bir proje açalım. <a href="http://kenai.com/projects/nbandroid" target="_blank">NBAdroid</a> eklentisini kurduysanız, yeni bir proje eklerken Android diye bir kısım yer alacaktır. Daha sorna yandaki gibi proje adı, paket adı, activity adı gibi alanları doldurmanız gerekiyor. İlk kez acıyosanız, Manageplatformu tıklayarak kurulum yaptığınız android klasörünü göstermeniz gerekiyor.</p>
<p>İlk kez projeyi actığınızda, Shift + F10 ile projeyi çalıştırabilirsiniz. Burada android emulator acılıp projenizi yükleyecektir ve ekrana klasik &#8220;Hello World&#8221; yazacaktır.</p>
<p>Şimdi uygulamaya geri dönüp Resources/layouts altında yer alan main.xml- i droiddraw ile üretttiğimiz xml i kopyalayıp yağıştıralım. Bunu yaptıktan sonra uygulamayı bir kere build etmenizde yarar var. Bu işlem sonuda otomatik üretilen R.java dosyasında aşağıaki gibi değişiklikler olacaktır.</p>
<pre class="brush: java; title: ; notranslate">

public final class R {
   public static final class attr { }

   public static final class id {
      public static final int btnSample=0x7f040001;
      public static final int widget0=0x7f040000;
  }

  public static final class layout {
     public static final int main=0x7f020000;
  }

  public static final class string {
     public static final int app_name=0x7f030000;
  }
}
</pre>
<p>Daha sonra aşağıdaki kodu MainActivity.java içine yazınız.</p>
<pre class="brush: java; title: ; notranslate">

@Override
public void onCreate(Bundle icicle) {
   super.onCreate(icicle);
   setContentView(R.layout.main);
   final Button button = (Button) findViewById(R.id.btnSample);
   button.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
         alert(&quot;Hello world&quot;);
      }
   });
}

private void alert(String message){
   new AlertDialog.Builder(this).setTitle(&quot;rayyildiz.com&quot;).setMessage(message).setNeutralButton(&quot;Ok&quot;,
      new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,int which) { }
      }).show();
}
</pre>
<p>Uygulamayı çalıştırdığınızda şöylşe çalışacaktır:<br />
<a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/application_run1.png" rel="lightbox[174]"><img src="http://www.rayyildiz.com/wp-content/uploads/2011/02/application_run1.png" alt="" title="application_run" width="500" class="alignnone size-full wp-image-187" /></a><br />
<br />
Uygulamanın kaynak kodunu şu adresten indirebilirsiniz.<a href="http://github.com/downloads/rayyildiz/TestProject/AndroidSample1-v1_0.tar.gz">http://github.com/downloads/rayyildiz/TestProject/AndroidSample1-v1_0.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Netbeans 6.9</title>
		<link>http://rayyildiz.com/2010/05/netbeans-6-9/</link>
		<comments>http://rayyildiz.com/2010/05/netbeans-6-9/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:17:23 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=88</guid>
		<description><![CDATA[Netbeans 6.9 beta sürümü yayınlandı. Netbeans 6.9 adresinden detaylarına bakabilir ve indirebilirsiniz. Netbeans 6.9 da benim uzun süredir beklediğim Spring 3.0 desteği en sonunda gelmiş oldu. Daha önceki sürümlerinde netbeans Spring 2.5 desteği sunuyordu. Özellikle spring 3.0 ile gelen özellikleri kullanabileceğiz. Netbeans 6.9, 9 haziranda release olacak. Google App Engine için geliştirilmiş plugin de mevcuttur. [...]]]></description>
			<content:encoded><![CDATA[<p>Netbeans 6.9 beta sürümü yayınlandı. <a href="http://www.netbeans.com/community/releases/69/" target="_blank">Netbeans 6.9</a> adresinden detaylarına bakabilir ve indirebilirsiniz.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/enterprise-cdi1.png" rel="lightbox[88]"><img class="alignleft size-full wp-image-93" title="enterprise-cdi" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/enterprise-cdi1.png" alt="" width="200" height="126" /></a> Netbeans 6.9 da benim uzun süredir beklediğim <a href="http://www.springsource.com" target="_blank">Spring 3.0</a> desteği en sonunda gelmiş oldu. Daha önceki sürümlerinde netbeans Spring 2.5  desteği sunuyordu. Özellikle <a href="http://blog.springsource.com/2009/12/16/spring-framework-3-0-goes-ga/?__utma=1.1917309320.1267716365.1267724045.1272898185.3&amp;__utmb=1.3.10.1272898185&amp;__utmc=1&amp;__utmx=-&amp;__utmz=1.1272898185.3.3.utmcsr=google|utmccn=%28organic%29|utmcmd=organic|utmctr=spring%203.0&amp;__utmv=-&amp;__utmk=4250035" target="_blank">spring 3.0 ile gelen özellikleri</a> kullanabileceğiz. Netbeans 6.9, <a href="http://www.netbeans.com/community/releases/roadmap.html" target="_blank">9 haziranda release</a> olacak.</p>
<p>Google App Engine için geliştirilmiş plugin de mevcuttur.</p>
<p><span id="more-88"></span><strong>JavaFX</strong></p>
<p>Bildiğiniz gibi Sun &amp; Oracle , linux platformunda javafx desteğini sunmuşlardı. Netbeans ise javafx geliştirmek için en uygun ücretsiz IDE olarak yoluna devam ediyor.</p>
<p><strong>Scala ve Git Desteği</strong></p>
<p>Ayrıca Netbeans <a href="http://wiki.netbeans.org/Scala" target="_blank">Scala</a> ve- <a href="http://nbgit.googlecode.com/" target="_blank">git</a> desteği bulunmaktadır.</p>
<p><a href="http://rayyildiztr.files.wordpress.com/2010/05/scalaeditor_080729_scala.png" rel="lightbox[88]"><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/scalaeditor_080729_scala1.png" rel="lightbox[88]"><img class="alignnone size-medium wp-image-171" title="scalaeditor_080729_scala" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/scalaeditor_080729_scala1.png?w=300" alt="" width="300" height="186" /></a></a></p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/scalaeditor_080729_scala1.png2010/05/early-prototype-small.png" rel="lightbox[88]"><img class="alignnone size-full wp-image-98" title="early-prototype-small" src="http://rayyildiztemp.files.wordpress.com/2010/05/early-prototype-small.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/05/netbeans-6-9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

