<?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>Çağdaş&#039;ın Günlüğü</title>
	<atom:link href="http://www.cagdastopcu.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cagdastopcu.com</link>
	<description>THE GNU HARDWARE DEVELOPER</description>
	<lastBuildDate>Sat, 21 Apr 2012 18:04:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Upstart ve System V init Karşılaştırması</title>
		<link>http://www.cagdastopcu.com/upstart-ve-system-v-init-karsilastirmasi.html</link>
		<comments>http://www.cagdastopcu.com/upstart-ve-system-v-init-karsilastirmasi.html#comments</comments>
		<pubDate>Mon, 16 Apr 2012 11:13:52 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking init]]></category>
		<category><![CDATA[olay güdümlü]]></category>
		<category><![CDATA[runlevel]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[System V init]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Upstart]]></category>
		<category><![CDATA[yeni]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=499</guid>
		<description><![CDATA[Ubuntu Boot Proseslerinin devamı olan çeviri ve notlarıma Upstart konusuyla devam ediyorum. Aradaki farkları görmem için iyi oldu. Upstart scriptleri yazabilecek seviye gelmeye çalışacağım. Önümüzdeki yazı da büyük bir ihtimalle o konuyla ilgili olacak. System V init iyi bir sistemdi ve Linux üzerinde yıllarca iyi bir şekilde çalıştı. Buna rağmen kusursuz değildi. Eğer servisler sonlanırsa &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/upstart-ve-system-v-init-karsilastirmasi.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2012/04/upstart80.png"><img class="size-full wp-image-500 alignleft" title="upstart80" src="http://www.cagdastopcu.com/wp-content/uploads/2012/04/upstart80.png" alt="" width="300" height="80" /></a></p>
<p>Ubuntu Boot Proseslerinin devamı olan çeviri ve notlarıma Upstart konusuyla devam ediyorum. Aradaki farkları görmem için iyi oldu. Upstart scriptleri yazabilecek seviye gelmeye çalışacağım. Önümüzdeki yazı da büyük bir ihtimalle o konuyla ilgili olacak.</p>
<p>System V init iyi bir sistemdi ve Linux üzerinde yıllarca iyi bir şekilde çalıştı. Buna rağmen kusursuz değildi. Eğer servisler sonlanırsa init scripti bunları tekrardan yaratacak otomatik bir mekanizmaya sahip değildi. Örneğin planlanmış programları çalıştıran cron programı (cron daemon, UNIX man pages) bazı sebeplerden dolayı patlarsa, bunu izleyebileceğiniz ve prosesi yeniden başlatabileceğiniz bazı araçlara ihtiyacınız olacaktır.</p>
<p>init scriptlerle ilgili diğer bir problem ise genellikle runlevel değişimlerinde ve sistem açılışında etkili olmalarıdır bunların dışında elle müdahale etmediğimiz sürece çalışmayacaklardır. Network bağlantısına bağımlı olan init scriptler buna güzel bir örnek. Ubuntu üzerinde networking adındaki init script ağ bağlantılarını sağlar. Ağ bağlantısına bağımlı olan bütün scriptler bu init scriptten daha sonra gelen bir isimle tanımlanmıştır ve böylece ağ bağlantısı kurulduktan sonra çalışırlar. Eğer ağ kablosunu çıkarıp sistemi çalıştırırsak ne olur? Networking scripti çalışır fakat ağ bağlantısına ihtiyaç duyan diğerleri birer birer zaman aşımına uğrar. Er ya da geç giriş ekranına gelecek ve giriş yapabileceksiniz. Sisteme giriş yaptıktan sonra ağ kablosunu takıp networking sevisini yeniden başlatırsanız ağa bağlanacaksınız ama ağ bağlantısına ihtiyaç duyan servislerin hiç birisi otomatik olarak başlamayacaktır. Hepsini elle tek tek yeniden başlatmak zorundasınız.</p>
<p>Upstart sadece System V init&#8217;in eksikliklerini kapatmak için tasarlanmadı ayrıca daha dayanıklı bir yönetim servisleri sistemini sağlar. Upstart ana getirilerinden birisi olay güdümlü olmasıdır. Upstart sürekli olarak kaçınılmaz olayların olmasını izler ve olduklarında bu durumlara göre kendisini yeniden konfigüre edip harekete geçer. Bazı örnek olaylar, açılış, kapanış, CTRL+ALT+DEL tuş kombinasyonuna basılması, renlevel değişimi ve Upstart scriptinin çalışması veya durmasıdır. Olay güdümlü sistemin geleneksel init scriptini nasıl geliştirdiğini görmek için ağ bağlantısı kesilmiş bir sistemin boot edildiği örneğine geri dönelim. Network kablosu bağlanınca tetiklenecek bir Upstart scripti yazabilirsiniz. Bu servis sizin için ağ servisini yeniden başlatabilir. Ağ bağlantısına ihtiyaç duyan servisleri, ağ servisi başarılı bir şekilde sağlandığında tetiklenecekleri şekilde konfigüre edebilirsiniz. Şimdi boot işlemi olurken istediğiniz zaman ağ kablosunu takabilirsiniz, Upstart scriptleri bütün hepsiyle ilgilenecektir.</p>
<p>Upstart, System V init yapısının yerini tamamıyla almamıştır ama en azından servisler için getirilmiştir. Upstart şu anda init ve /etc/inittab dosyasının görevini yerine getirmektedir ve runlevellarındaki değişiklikleri, açılış ve kapanışları, uçbirim ttyleri, daha fazla çekirdek özelliklerini halledebilecek kadar geliştirilmiştir. Fakat /etc/init.d içindeki standart init scriptlerini ve bütün /etc/rc?.d sembolik bağlantılarını (symlinks) hala bulabilirsiniz. Şu anda aralarındaki fark Upstart runleveller değişince servisleri çalıştırıp durdurmaktadır.</p>
<p>Bu yazı aşağıdaki yazımın devamıdır.</p>
<p><a title="Ubuntu Boot Prosesleri" href="http://www.cagdastopcu.com/ubuntu-boot-prosesleri.html" target="_blank">http://www.cagdastopcu.com/ubuntu-boot-prosesleri.html</a></p>
<p>Kullanılan kaynaklar:</p>
<p>Official Ubuntu Server Book (The Second Edition)</p>
<p><a title="UNIX man page" href="http://www.ma.utexas.edu/cgi-bin/man-cgi" target="_blank">UNIX man page</a></p>
<div class="shr-publisher-499"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/upstart-ve-system-v-init-karsilastirmasi.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu Boot Prosesleri</title>
		<link>http://www.cagdastopcu.com/ubuntu-boot-prosesleri.html</link>
		<comments>http://www.cagdastopcu.com/ubuntu-boot-prosesleri.html#comments</comments>
		<pubDate>Sat, 14 Apr 2012 21:27:47 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[Kategorilenmemiş]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[GRUB]]></category>
		<category><![CDATA[init]]></category>
		<category><![CDATA[initramfs]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[proses]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=490</guid>
		<description><![CDATA[Bu yazımda Ubuntu Server sisteminde boot işlemi üzerine tuttuğum notları ve çevirimi paylaşıyorum. Boot işlemi benim için her zaman büyülü anlaşılması zor olan bir kavramdı. Şimdi bunun oldukça mantıklı bir sistemle ve gereksinimler üzerine inşa edildiğini anladım. Proseslerin Kontrolü Öncelikle işimize yarayacak bazı kodlara bakalım. Bunları eminim herkes biliyordur ancak hatırlatma gibi olsun istedim. top &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/ubuntu-boot-prosesleri.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bu yazımda Ubuntu Server sisteminde boot işlemi üzerine tuttuğum notları ve çevirimi paylaşıyorum. Boot işlemi benim için her zaman büyülü anlaşılması zor olan bir kavramdı. Şimdi bunun oldukça mantıklı bir sistemle ve gereksinimler üzerine inşa edildiğini anladım.</p>
<h2 class="western">Proseslerin Kontrolü</h2>
<p style="margin-bottom: 0in;">Öncelikle işimize yarayacak bazı kodlara bakalım. Bunları eminim herkes biliyordur ancak hatırlatma gibi olsun istedim.</p>
<ul>
<li>
<p style="margin-bottom: 0in;">top</p>
</li>
</ul>
<p>Sistemimizdeki en çok sistem kaynaklarını tüketen programları anlık olarak takip etmemizi sağlar.</p>
<ul>
<li>
<p style="margin-bottom: 0in;">ps -ef</p>
</li>
</ul>
<p>Sistem açıldığından itibaren kullanılan prosesleri yazdırır.</p>
<ul>
<li>
<p style="margin-bottom: 0in;">ps – ef | less</p>
</li>
</ul>
<p>Bir önceki komutun çıktısını daha sade hale getirir.</p>
<ul>
<li>
<p style="margin-bottom: 0in;">kill $PID</p>
</li>
</ul>
<p>Proses ID&#8217;si ile prosesi sonlandırmanızı sağlar.</p>
<ul>
<li>
<p style="margin-bottom: 0in;">kill -9 $PID</p>
</li>
</ul>
<p>Her proses kill işlemine cevap vermeyebilir bunun için onu zorlayabiliriz. Bu koddan önceki kodu denememiz daha uygundur. Böylece proses kendisini daha düzgün sonlandırmayı dener.</p>
<p style="margin-bottom: 0in;">Çıktılar ekrana sığmıyorsa shift PgUp-PgDown tuşlarıyla sonuçlar üzerinde gezinebilirsiniz.</p>
<p> Sistemde root hesabını kullanmak güvenlik açısından pek tavsiye edilmez. Onun yerine hepimizin sevgilisi olan sudo kullanılır <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li>
<p style="margin-bottom: 0in;">sudo reboot</p>
</li>
</ul>
<p>&nbsp;</p>
<h2 class="western">Ubuntu Boot Prosesleri</h2>
<p style="margin-bottom: 0in;">Ubuntu Upstart servisleriyle tamamiyle değişik start-up prosesi kullanır. System V init modeliyle uyumlu olarak tasarlanmıştır.</p>
<h3 class="western">Grub Boot Loader</h3>
<p style="margin-bottom: 0in;">Mster Boot Record&#8217;da (harddiskin ilk 512 byte&#8217;ı) bulunan bir koddur. Hangi Linux kernelinin boot edileceğini kontrol eder.</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0in;">Konfigurasyon dosyası: /boot/grub/grub.cfg.</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0in;">Bu dosyayı elle değiştirmiyoruz. Değişiklik yapmak istersek /etc/default/grub u düzenliyor ve aşağudaki kodu çalıştırıyoruz:</p>
<p>&nbsp;</p>
<ul>
<li>
<p style="margin-bottom: 0in;">sudo update-grub</p>
</li>
</ul>
<p style="margin-bottom: 0in;">Desktop versiyonu için bunu kullanmamız gerekmese de Ubuntu Server için bu dosya üzerinde değişiklikler yapmamız gerekebilir. Dökümantasyon için bu konfigurasyon dosyalarındaki yorumları veya projenin kendi sitesine bakabilirsiniz. Döküamnın hepsi için:</p>
<p>&nbsp;</p>
<ul>
<li>
<p style="margin-bottom: 0in;">info -f grub -n &#8216;Simple configuration&#8217;</p>
</li>
</ul>
<p style="margin-bottom: 0in;">Grub ayarları açılışta da yapılandırılabilir. Eğer Grub menüsünü göremiyorsanız shift tuşuna basın. Ardından menüde değiştirmek istediğiniz Kernel sürümünü seçip E tuşuna basın. Bundan sonra istediğiniz ayarı değiştirebilirsiniz. Ctrl x ile menüye geri dönün.</p>
<p style="margin-bottom: 0in;">Eğer shift tuşuna zamanında basmakta zorlanıyorsanız /etc/default/grub içindeki GRUB_HIDDEN_TIMEOUT değeri daha büyük bir değerle değiştirin (10 gibi) ardından</p>
<ul>
<li>
<p style="margin-bottom: 0in;">sudo update-grub</p>
</li>
</ul>
<p style="margin-bottom: 0in;">komutunu çalıştırın.</p>
<h3 class="western">Kernel Boot Prosesi</h3>
<p>GRUB menüsünden kerneli seçtiğimizde GRUB o kerneli bellekteki initrd dosyasına (initial RAM disk) yükler. initrd dosyası aslında initramfs dosyası olarak bilinen gziplenmiş cpio arşividir. Eğer bu özel initramfs dosyasına eklenen dosyaları merak ediyorsanız aşağıdaki işlemleri uygulayınız:</p>
<ul>
<li>
<p style="margin-bottom: 0in;">cp /boot/initrd.img-3.0.0-12-server /tmp/initrd.img-3.0.0-12-server.gz</p>
</li>
<li>
<p style="margin-bottom: 0in;">cd /tmp</p>
</li>
<li>
<p style="margin-bottom: 0in;">gunzip initrd.img-3.0.0-12-server.gz</p>
</li>
<li>
<p style="margin-bottom: 0in;">mkdir initrd</p>
</li>
<li>
<p style="margin-bottom: 0in;">cd initrd</p>
</li>
<li>
<p style="margin-bottom: 0in;">cpio -idv &lt; /tmp/initrd.img-3.0.0-12-server</p>
</li>
</ul>
<p>Şimdi bu /tmp/ dizininde root dizinine benzer dizinlerin bir kısmını göreceksiniz. Kernel boot olurken öncelikle temel konfigürasyon dosyalarına, kernel modüllerine ve sistem binarysini yükleyecek kadar root dosya sistemini oluşturur.</p>
<p>&nbsp;</p>
<p><a href="http://www.cagdastopcu.com/wp-content/uploads/2012/04/initramfs.png"><img class="aligncenter size-medium wp-image-491" title="initramfs" src="http://www.cagdastopcu.com/wp-content/uploads/2012/04/initramfs-300x199.png" alt="" width="300" height="199" /></a></p>
<p>Kernel modüllerinin root dosya sisteminde olması, o dosya sistemine erişebilmek için de bu kernel modüllerine ihtiyaç duyulması mantıksal bir problem oluşturur(tavuk yumurta problemi). Bu da initramfs dosyasına açıklık getirir. initramfs dosyası root dosya sisteminin yüklenebilmesi ve boot işlemine devam edilmesi için gerekli olan temel kernel modülleriyle birlikte kerneli ve sistem binarisini sağlar. Kernel derlenirken kernelin boot olabilmesi için gerekli olan bu initramfs dosyasını yapılandırır.</p>
<p>Kernel boot olurken initramfs RAM&#8217;e açılır ve onun root dizinindeki init scripti çalışır. Yukarıdaki yönergeyi izleyerek bu koda ulaşabilirsiniz. Mount işlemlerini sağlayan bash kodundan ibarettir. Görevini tamamladıktan sonra kurduğu gerçek root dosya sistemindeki /sbin/init kodunu çalıştırır. Bu boot prosesindeki diğer fazı başlatır.</p>
<h4 class="western">/sbin/init</h4>
<p>/sbin/init programı sistemde çalışan bütün programların öncül prosesidir. Bu prosesin PID&#8217;si her zaman 1&#8242;dir ve Linux sistemindeki bütün proseslerden sorumludur. Unix sistemlerinde farklı başlatma standratları vardır fakat klasik Linux sistemlerinin çoğunluğu System V init modelini kullanır. Ubuntu Server bunun yerine Upstart modeline geçmiştir. Ubuntu runlevels ve /etc/rc?.d dizinleri gibi bir çok yapıyı eskiye yönelik uyumluluk için korumuştur. Upstart artık kaputun altındaki herşeyi yönetmektedir.</p>
<h4 class="western">Classic System V init</h4>
<p>Bu init sisteminde, init prosesi /etc/inittab konfigürasyon dosyasını öntanımlı runlevelini keşfetmek için okunur. Ardından bu runlevele (çalışma aşaması) girilir ve runlevelde çalışacal konfigüre edilmiş prosesler çalıştırılır.</p>
<h4 class="western">RUNLEVELLAR</h4>
<p>System V init prosesi farklı sistem durumlarıyla tanımlanmıştır bunlar runlevelleri olarak bilinir. Runlevelleri 0&#8242;dan 6&#8242;ya kadar numaralarla ayrılmıştır. Her numara tamamiyle değişik durum sistemini belirtir. Örneğin runlevel 0 halted sistem durumu için ayrılmıştır. Eğer runlevel 0&#8242;a girerseniz, sistem bütün prosesleri kapatır, bütün sistem dosyaları unmount edilir ve enerji kesilir. Runlevel 6 ise reboot işlemi için ayrılmıştır. Runlevel 1 tek kullanıcı modu için ayrılmıştır-sadece bir kullanıcı bu durumda sisteme giriş yapabilir. Bu tek kullanıcı modunde genellikle az sayıda proses çalıştırılır. Sistemin tamamıyla boot olamadığı durumlarda arıza giderimi için oldukça kullanışlıdır. GRUB menüsündeki recovery modu runlevel 1&#8242;e girmenizi sağlar.</p>
<p>2&#8242;den 5&#8242;e kadar olan runlevelleri dağıtımların tanımlaması için bırakılmıştır. Birçok Farklı runlevellerinin olmasının altında yatan serverin girebileceği birçok modu kullanıcının yaratabilmesini sağlamaktır. Geleneksel olarak Linux sistemleri bir grafik masaüstü runleveli (RedHat için 5) ve bir de grafiksiz runleveli (RedHat için 3) içerirler. Kullanıcı diğer runlevellerini tanımlayabilir, örneğin network bağlantısı olmadan açılış gibi. Boot ederken bu runleveli seçebilirsiniz. Ayrıca sistem boot edildikten sonra init komutu ile runlevelinizi değiştirebilirsiniz. Ubuntu Server sisteminizde tek kullanıcılı moda geçmek için aşağıdaki kodu çalıştırabilirsiniz.</p>
<ul>
<li>
<p style="margin-bottom: 0in;">sudo init 1</p>
</li>
</ul>
<p style="margin-bottom: 0in;">Sisteminizi kapatmak için halt komutuna alternatif olarak aşağıdaki kodu kullanabilirsiniz.</p>
<ul>
<li>
<p style="margin-bottom: 0in;">sudo init 0</p>
</li>
</ul>
<h4 class="western">init Scriptleri</h4>
<p>/etc/inittab&#8217;ın yanında sistemdeki bütün büyük servsiler için açılış ve kapanış scriptleri, init scriptlerini barındıran önemli V System dosya ve dizinleri içerir.</p>
<p>etc/init.d</p>
<p>Bu dizin bütün runlevellerindeki açılış scriptlerini içerir. Bunlar tipik olarak shell scriptleridirler ve temel standartlara uyarlar. Her script en az iki argümana sahiptir. Bunlar başla ve dur&#8217;dan oluşur ki bunlarla servisiniz başlatılıp durdurulur (örneğin Web Server). Buna ek olarak init scriptleri başka özellikleri de içinde barındırır. Bunlar, restart (servisi durdur ve çalıştır), status (servisin o anki durumunu geri döndürür), reload (servise konfigürasyon dosyalarından ayarların tekrar yüklenmesini söyler) ve force-reload (servisi ayarları yeniden yüklemesi için zorlar). Eğer scripti argümansız çalıştırırsak, genellikle kabulettiği argümanların listesini geri döndürecektir.</p>
<p>/etc/rc0.d &#8211; /etc/rc6.d</p>
<p>Bu dizin runlevellerine göre init scriptlerini içerir. Pratikte bunlar /etc/init.d&#8217;deki gerçek dosyalara sembolik olarak (symlink) bağlanmışlardır. Bu init scriptleri D,S,K gibi haflerle başlamış ve ardından bir sayı gelen isimlendirmeye sahiptir. init bir runlevel&#8217;e girdiğinde K ile başlayan bütün scriptleri sayısal sırasıyla çalıştırır ve dur argümanına geçer (bu sadece çağırılan init script önceki runlevel&#8217;e aitse geçerlidir). Daha sonra init script bütün S scriptlerini sırasıyla çalıştırır ve başla argümanına geçer. D ile başlayan bütün scriptler ihmal edilir. Bu size özel bir runlevelde bir init scriptini geçici bir süre için kapatabilmenize izin verir. Sadece symlinkini silerek de bunu yapabilirsiniz. S01foo ve S05bar adında iki scriptimiz olsun, init scriptimiz farklı bir runlevele girdiğinde önce S01foo start ardından S05bar start işlemlerini çalıştırır.</p>
<p>/etc/rcS.d</p>
<p>Bu dizinde açılış esnasında runleveli değişmeden önce çalışan bütün init scriptlerini bulabilirsiniz. Bu dizindeki scriptlerde değişiklikleri yaparken dikkatli olmalısınız çünkü bu tek kullanıcı moduna (kurtarma kipi) geçmenizi engelleyebilir.</p>
<p>/etc/rc.local</p>
<p>Bütün dağıtımlar rc.local kullanmaz ama geleneksel olarak bu kullanıcının değiştirebileceği bir shell scriptidir. Bu genellikle init işleminin sonunda çalıştırılır. Yeni bir init scripti oluşturmaya gerek kalmadan kendi kodlarnızı koyabilirsiniz.</p>
<p>V System init sistemini bir boot örneğiyle açıklayalım. İlk önce init çalışır ve /etc/inittab &#8216;ı öntanımlı runleveli belirlemek için okur, bizim örneğimizde bu runlevel 2. Ardından init /etc/rcS.d&#8217;ye gider ve S ile başlayan bütün scriptleri start argümanıyla çalıştırır. Daha sonra aynı işlemi /etc/rc2.d dizini için yapar. Son olarak init durdurulmuştur ancak runlevelin değişmesini bekler halde arkaplanda çalışmaya devam eder.</p>
<p>Bu yazının ardından devamı niteliğinde Upstart konusu üzerinde durulacaktır. Yazıdaki kodlar Ubuntu Server 11.10 Virtualbox üzerinde denenmiştir. Kaynak olarak http://www.amazon.com/Official-Ubuntu-Server-Book-Edition/dp/0137081332/ref=dp_ob_title_bk kitabı kullanılmıştır.</p>
<p>Upstart Bölümü geçikmedi <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Yazının devamını aşağıdaki linkten okuyabilirsiniz:</p>
<p><a title="Upstart ve system V init karşılaştırması" href="http://www.cagdastopcu.com/upstart-ve-system-v-init-karsilastirmasi.html" target="_blank">http://www.cagdastopcu.com/upstart-ve-system-v-init-karsilastirmasi.html</a></p>
<p>&nbsp;</p>
<div class="shr-publisher-490"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/ubuntu-boot-prosesleri.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Linux BackTrack 5 Kitabı Çıktı</title>
		<link>http://www.cagdastopcu.com/linux-backtrack-5-kitabi-cikti.html</link>
		<comments>http://www.cagdastopcu.com/linux-backtrack-5-kitabi-cikti.html#comments</comments>
		<pubDate>Tue, 04 Oct 2011 14:50:51 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[backtrack]]></category>
		<category><![CDATA[güvenlik]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[inceleme]]></category>
		<category><![CDATA[kitap]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[metasploit]]></category>
		<category><![CDATA[nmap]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=486</guid>
		<description><![CDATA[Kemal Demirez&#8217;in yeni kitabı Linux BackTrack 5 çıktı. Bugün aldım çok merak ettiğim konular var içerisinde. Fiyatı kitapçılarda 20 lira. Ancak yazarına ulaşarak incelemek için ücretsiz olarak temin eden ubuntu-tr kullanıcısı da var. Kitap daha çok nereden başlayacağını bilmeyen güvenlikle alakalı konuları merak eden insanlar için yazılmış. Bölüm bölüm içindekileri aktarmaya çalışacağım: 1- Tanımlar Güvenlik &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/linux-backtrack-5-kitabi-cikti.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="alignnone" title="BackTrack Logo" src="http://upload.wikimedia.org/wikipedia/commons/0/09/Backtrack_logo.png" alt="" width="647" height="152" /></p>
<p>Kemal Demirez&#8217;in yeni kitabı Linux BackTrack 5 çıktı. Bugün aldım çok merak ettiğim konular var içerisinde. Fiyatı kitapçılarda 20 lira. Ancak yazarına ulaşarak incelemek için ücretsiz olarak temin eden ubuntu-tr kullanıcısı da var. Kitap daha çok nereden başlayacağını bilmeyen güvenlikle alakalı konuları merak eden insanlar için yazılmış.</p>
<p>Bölüm bölüm içindekileri aktarmaya çalışacağım:<br />
<strong><br />
1- Tanımlar</strong></p>
<p>Güvenlik ve internetle ilgili temel tanımlar var. Porttan Buffer Overflow&#8217;a kadar bir çok terim kısa kısa açıklanmış.</p>
<p><strong>2- BackTrack 5 Kurulumu</strong></p>
<p>Vmware üzerine kurulumu anlatılmış ve genel olarak BackTrack 5 dağıtımı hakkında bilgiler verilmiş.</p>
<p><strong>3- Linux Shell ve Konsol</strong></p>
<p>Basit shell komutları, genel olarak penetrasyon ve test methodları ile izlenen yollar anlatılmış.</p>
<p><strong>4- BackTrack Araçları<br />
</strong></p>
<p>En güzel bölüm bu sanırım. WireShark&#8217;tan Metasploit&#8217;e bir çok program giriş seviyesinde anlatılmış.</p>
<p><strong>5- Forensics</strong></p>
<p><strong>6- Raporlama Araçları</strong></p>
<p>Güvenlikle alakalı konuları merak edenler için güzel bir giriş kaynağı. Okudukça yorumlarımı paylaşacağım.</p>
<div class="shr-publisher-486"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/linux-backtrack-5-kitabi-cikti.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Arm Cortex Programlama &#8211; 1</title>
		<link>http://www.cagdastopcu.com/arm-cortex-programlama-1.html</link>
		<comments>http://www.cagdastopcu.com/arm-cortex-programlama-1.html#comments</comments>
		<pubDate>Mon, 03 Oct 2011 15:01:23 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[elektronik]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[board]]></category>
		<category><![CDATA[cortex]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[freertos]]></category>
		<category><![CDATA[lpc1114]]></category>
		<category><![CDATA[lpcxpresso]]></category>
		<category><![CDATA[m0]]></category>
		<category><![CDATA[real time]]></category>
		<category><![CDATA[real time programming]]></category>
		<category><![CDATA[rtos]]></category>
		<category><![CDATA[task]]></category>
		<category><![CDATA[thread]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=474</guid>
		<description><![CDATA[Arm Cortex M serisi ile maceram yeni başladı. Arm Cortex programlama hakkında öğrendiklerimi yazı dizisi halinde yayınlamayı düşünüyorum. Bu ilk yazım bir nevi hello world yazısı olacak. Taskler ve onların tanıtılıp yaratılması ile real time programlamaya giriş yapılacak. Kullandığım Araçlar: Kit (Donanım): LPC 1114 LPCXpresso kiti. Üzerinde Arm Cortex M0 var. Usb kablo ile enerjilenebiliyor &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/arm-cortex-programlama-1.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/10/arm_cortex-m0_cagdas_topcu_design.jpg"><img class="size-medium wp-image-481 alignleft" title="arm_cortex-m0_cagdas_topcu_design" src="http://www.cagdastopcu.com/wp-content/uploads/2011/10/arm_cortex-m0_cagdas_topcu_design-300x267.jpg" alt="" width="300" height="267" /></a></p>
<p>Arm Cortex M serisi ile maceram yeni başladı. Arm Cortex programlama hakkında öğrendiklerimi yazı dizisi halinde yayınlamayı düşünüyorum. Bu ilk yazım bir nevi hello world yazısı olacak. Taskler ve onların tanıtılıp yaratılması ile real time programlamaya giriş yapılacak.</p>
<p><strong>Kullandığım Araçlar:</strong></p>
<p>Kit (Donanım): LPC 1114 LPCXpresso kiti. Üzerinde Arm Cortex M0 var. Usb kablo ile enerjilenebiliyor ve programlanabiliyor.</p>
<p>İşletim Sistemi: Ubuntu 11.04 Gnome Classic</p>
<p>LPCXpresso (IDE): Programları yazıp, derleyip kitimize yükleyebildiğimiz eclipse tabanlı IDE.</p>
<p>FreeRTOS: Küçük boyutlarda Real Time (gerçek zamanlı) işletim sistemi. LPC 1114 için oluşturulmuş hazır proje örneğini direkt atabiliyorsunuz kitinize.</p>
<p><strong>Başlamadan Önce Önemli Not:</strong> Yazdığınız kodları kitinize atmanız zaman alabilir veya atarken donmalar olabilir, bazen de haza verebilir. Bunun gibi şeylerle karşılaştığınızda LPCXpresso&#8217;yu kapatın. Cihanızın USB kablosunu ayırın ve LPCXpressoyu yeniden çalıştırıp yükleme işlemini tekrarlayın. Yılmayın kodunuzda hata olmadığı sürece tekrar deneyin. Üçüncü denemenizde muhtemelen olacaktır. FreeRTOS&#8217;u içine gömdüğünüz için biraz uzun sürüyor ve hata verebiliyor.</p>
<p>Gerçek Zamanlı sistemleri basitleştirmek için aynı anda bir çok işi yapabilme olarak düşünebiliriz. Daha düzgün bir tanımı için belki bir yazı daha yazabilirim. Böylece ufacık kitinizde bir program parçası sensörden veri okurken diğer bir program parçası da internetten gelebilecek istekleri bekler konumda tutulabilir. Bu program parçacıklarına Task diyoruz.</p>
<p><strong>Task / Thread Nedir, Neden Gereklidir?</strong></p>
<p>Task aslında programcıların bildiği threaddir. Ancak gömülü sistemlerde task terimi daha çok kullanılmaktadır. Task nedir sorusunun yanıtı aslında neden kullanılır sorusunun yanıtıdır. Diyelim iki sonsuz döngünüz var kodunuzun içinde ve çalıştırdınız. Programınız birinci döngüye girer ve döngüyü kırmadığınız sürece oradan çıkamaz. Ancak elimizde iki tane sonsuz döngü var ve biz bu iki işlemin de sürekli olarak yapılmasını istiyoruz! İşte burada thread / task kavramı ortaya giriyor. İki task oluşturuyoruz ve işlemcinin bu ikisini de yapabilmesini sağlıyoruz.</p>
<p><strong>FreeRTOS</strong></p>
<p>Kendi seçimim olmayan hazır örneği olduğu için başlangıçta kullanıp real sistemlerini öğrenmeyi hedeflediğim işletim sistemi. Open-Source ve küçük boyutlarda olması en büyük artısı ancak kullanım klavuzu 60 dolar. İnternette bulmama rağmen hiç de hoşnut değilim. 170 sayfalık kitapçığın 60 dolara satılması gereksiz. En azından sitede başlangıç için bir iki makale olmasını isterdim o da yok. En kısa zamanda linux tabanlı veya açık kaynaklı daha düzgün bir RT sistemine geçmeyi planlıyorum.</p>
<p>FreeRTOS&#8217;un en güzel yanı ise elimizde src/ dizininin altında bir main.c dosyası olması ve onunla istediğimiz gibi oynayabilmemiz. Ayrıca ayarlamalar için diğer kütüphane dosyalarında oynamalar yapmamız gerekecektir ileride ancak başlangıç için hiçbir ayar yapmadan kodunuzu yazabiliyorsunuz.</p>
<p><strong>Task / Thread Tanımlama</strong></p>
<p>Açıkçası çok kolay geldi. Generik bir pointerla void olarak fonksiyonumuzu tanımlamamız yeterli. Elbette içinde bir sonsuz döngü olması mantıklı. Yoksa neden task kullanalım <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Aşağıdaki kodda iki task oluşturduk. Bunun gibi bir çok taski kolayca oluşturabiliriz. Aşağıdaki kodda debug_puts fonksiyonu ile LPCXpresso&#8217;nun konsoluna hello world&#8217;umuzu yazdırmış oluyoruz.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> vTaskDebuggerHeartbeat1<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span> <span style="color: #339933;">*</span>pvParameters<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		debug_puts<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Merhaba Dunya! &amp;gt;&amp;gt; Task1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		vTaskDelay<span style="color: #009900;">&#40;</span>configTICK_RATE_HZ<span style="color: #339933;">*</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> vTaskDebuggerHeartbeat2<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span> <span style="color: #339933;">*</span>pvParameters<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		debug_puts<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Merhaba Dunya! &amp;gt;&amp;gt; Task2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		vTaskDelay<span style="color: #009900;">&#40;</span>configTICK_RATE_HZ<span style="color: #339933;">*</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Task / Thread Yaratma</strong></p>
<p>Sıra geldi tanıttığımız taskleri kullanmaya: bunun için C API&#8217;nin xTaskCreate() methodunu kullanıyoruz. Bu fonksiyonları tahmin edilebileceği gibi main methodunun içinde kullanmalıyız.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">xTaskCreate<span style="color: #009900;">&#40;</span> vTaskDebuggerHeartbeat1<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> <span style="color: #993333;">signed</span> portCHAR <span style="color: #339933;">*</span> <span style="color: #993333;">const</span><span style="color: #009900;">&#41;</span><span style="color: #ff0000;">&quot;ping&quot;</span><span style="color: #339933;">,</span> configMINIMAL_STACK_SIZE<span style="color: #339933;">,</span>
			NULL<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
xTaskCreate<span style="color: #009900;">&#40;</span> vTaskDebuggerHeartbeat2<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> <span style="color: #993333;">signed</span> portCHAR <span style="color: #339933;">*</span> <span style="color: #993333;">const</span><span style="color: #009900;">&#41;</span><span style="color: #ff0000;">&quot;ping1&quot;</span><span style="color: #339933;">,</span> configMINIMAL_STACK_SIZE<span style="color: #339933;">,</span>
			NULL<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ardından FreeRTOS Scheduler&#8217;ı başlatılır:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">vTaskStartScheduler<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Eğer tek bir işlemci vsadarsa, işlemci üzerinde anlık olarak sadece bir task çalışabilir. Ardından başka bir taske geçilir. Bu sebeple taskin iki durumundan sözedebiliriz: Running ve not running. Not running&#8217;de başka şeyler de var. Ama kolaylık olsun diye şimdilik böyle ayırdık. Not running kısmında taskin durumu kaydedilir ve resume olması beklenir. Aşağıdaki şekil daha açıklayıcı olabilir:</p>
<p>&nbsp;</p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_475" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/10/cagdas_task_life_cycle_embedded_free_rtos.png"><img class="size-medium wp-image-475" title="cagdas_task_life_cycle_embedded_free_rtos" src="http://www.cagdastopcu.com/wp-content/uploads/2011/10/cagdas_task_life_cycle_embedded_free_rtos-300x189.png" alt="" width="300" height="189" /></a></dt>
</dl>
</div>
<p>&nbsp;</p>
<p>Task geçişi not running kısmından running kısmına geçince “switching in” veya “swapped in” denilir. Tam tersi için ise “switched out” veya “swapped out” denilir. FreeRTOS Schedulerı bu switch in ve out işini yapan tek birimdir.</p>
<p><strong>Pragramın Çalıştırılması</strong></p>
<p>Eklediğimiz kısımlarla kodumuzu kaydediyoruz ve freertos projesine sağ tıklayıp run diyerek kodumuzu atıyoruz. Sonuç olarak LPCXpresso konsolunda aşağıdakine benzer bir çıktı aldım.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> Task1
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task2
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task1
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task2
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task1
Merhaba Dunya<span style="color: #339933;">!</span> <span style="color: #339933;">&gt;&gt;</span> Task2</pre></div></div>

<p><strong> Sonuç</strong></p>
<p>Başka bir programlama dilinde thread kavramına hakimseniz çok da zorlanıcağınızı düşünmüyorum. Çalışmalarıma devam edip yeni şeyler öğrendikçe buradan yazmaya devam edeceğim. Ayrıca RTOS için önerilere açığım. Kendi sistemim için herhangi bir RTOS&#8217;u nasıl uygun hale getireceğim konusunda bilgi ve tecrübe eksikliğim var. Yardımcı olabilicekler varsa buradan yazabilirlerse sevinirim.</p>
<div class="shr-publisher-474"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/arm-cortex-programlama-1.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Java ile Thread Kullanarak Socket Programlama</title>
		<link>http://www.cagdastopcu.com/java-ile-thread-kullanarak-socket-programlama.html</link>
		<comments>http://www.cagdastopcu.com/java-ile-thread-kullanarak-socket-programlama.html#comments</comments>
		<pubDate>Fri, 30 Sep 2011 13:32:42 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=469</guid>
		<description><![CDATA[Bu yazımda çok işlevsel olmasa da Android için telnet client&#8217;ı yazarken kullandığım echo server kodlarını anlatacağım. NIO paketini kullanmadığım için aslında çok da sağlıklı değil ve her bağlantı için ayrıca bir thread oluşturulmaktadır. Bu nedenle çok fazla yüklenmelere dayanamayacak bir server olacak bizimkisi. Önce Java&#8217;da socket işleri nasıl yürüyor ona bakalım. Javada ServerSocket ve Socket &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/java-ile-thread-kullanarak-socket-programlama.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bu yazımda çok işlevsel olmasa da Android için telnet client&#8217;ı yazarken kullandığım echo server kodlarını anlatacağım. NIO paketini kullanmadığım için aslında çok da sağlıklı değil ve her bağlantı için ayrıca bir thread oluşturulmaktadır. Bu nedenle çok fazla yüklenmelere dayanamayacak bir server olacak bizimkisi.</p>
<p>Önce Java&#8217;da socket işleri nasıl yürüyor ona bakalım. Javada ServerSocket ve Socket olmak üzere kullanıma hazır iki socket türü var(Aslında LocalSocket de var). Server sürekli bekleme işini yaptığımız ve dışardan birisi bağlanırsa ona gereken cevabı verdirttiğimiz makinede sürekli çalışmak zorunda olan programımız. ServerSocket sınıfının constructoru ile hangi porttan bu server hizmetini vereceğimizi belirlememiz gerekiyor.</p>
<p><strong>Olay ise şundan ibaret:</strong></p>
<p>1- ServerSocket&#8217;imiz bir portu izler durur.</p>
<p>2- Client bir Socket yardımıyla bizim Server&#8217;ımızın portuna naber der.</p>
<p>3- ServerSocket bu bağlantıyı accept() static methoduyla aldıktan sonra bir socket oluşturur.</p>
<p>4- Bu oluşturulan socket ile haberleşirler. Ve mutlu son <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Neden Thread Kullanmalıyım?</strong></p>
<p>Çok basit! Server&#8217;a birden fazla client&#8217;ın bağlanabilmesi için bu yapılır. Client tarafından gelen verinin ne kadar sürede geleceği belli değildir. Bu sebeple o verilerin alınma işlemleri bir thread&#8217;ın run methodunun içine gömülür. Ardından serverda start() static methodu ile thread çalıştırılır.</p>
<p><strong>Server&#8217;ımızın Kodu:</strong></p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.cagdas.network</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.net.InetAddress</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.net.ServerSocket</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.net.Socket</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> EnterpriseEchoServer <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/**
	 * @param args
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">ServerSocket</span> ss<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			ss <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ServerSocket</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">23</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">InetAddress</span>.<span style="color: #006633;">getLocalHost</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; hazir&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
				<span style="color: #003399;">Socket</span> s <span style="color: #339933;">=</span> ss.<span style="color: #006633;">accept</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>s.<span style="color: #006633;">getInetAddress</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getHostName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; &quot;</span>
						<span style="color: #339933;">+</span> s.<span style="color: #006633;">getInetAddress</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getHostAddress</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; baglandi&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">new</span> EESThreadPart<span style="color: #009900;">&#40;</span>s<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// TODO Auto-generated catch block</span>
			e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #666666; font-style: italic;">// Telnet hizmeti</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Burada 23 numaralı telnet portunu seçtim. Kodda görüldüğü üzere s socketi serversocketinin accept metodu ile gelen isteği kabul edilip oluşturuluyor. getInetAdress() methodu ile bağlanan kişinin bilgileri HostName ve HostAdress gibi bilgileri alınabiliyor. Ardından s socketi thread&#8217;li kısma gönderiliyor.</p>
<p>&nbsp;</p>
<p><strong>Thread kullanılan Sınıf</strong></p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.cagdas.network</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.PrintStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.net.Socket</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Scanner</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> EESThreadPart <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">Thread</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Socket</span> s<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> EESThreadPart<span style="color: #009900;">&#40;</span><span style="color: #003399;">Socket</span> s<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">s</span> <span style="color: #339933;">=</span> s<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">PrintStream</span> pr<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			pr <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">PrintStream</span><span style="color: #009900;">&#40;</span>s.<span style="color: #006633;">getOutputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			Scanner sc <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Scanner<span style="color: #009900;">&#40;</span>s.<span style="color: #006633;">getInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			pr.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Server'a baglandiniz. Cikmak icin bye yazin.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Client'a</span>
			<span style="color: #003399;">String</span> gelen<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// gonderiliyor</span>
			<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// sonsuz dongu</span>
				gelen <span style="color: #339933;">=</span> sc.<span style="color: #006633;">nextLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// client'dan geliyor</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>gelen.<span style="color: #006633;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">equalsIgnoreCase</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;bye&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
					<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Client:&quot;</span> <span style="color: #339933;">+</span> gelen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				pr.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Echo:&quot;</span> <span style="color: #339933;">+</span> gelen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			s.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>
					.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>s.<span style="color: #006633;">getInetAddress</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getHostName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; &quot;</span>
							<span style="color: #339933;">+</span> s.<span style="color: #006633;">getInetAddress</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getHostAddress</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
							<span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; serverdan cikti!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// TODO Auto-generated catch block</span>
			e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Burada PrintStream kullanılarak Client&#8217;a veri gönderilmiş ve ondan gelenler de Scanner yardımıyla sonsuz döngü içerisinde beklenmiştir. Bye yazıca client ile bağlantıyı sağlayan socket sonlandırılmakta.</p>
<p><strong>Server&#8217;ımızı Nasıl Deneriz?</strong></p>
<p>Telnet portunu (23) kullanmamızın bir nedeni vardı <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Herhangi bir telnet clientı ile programınız çalışıyorken denemelerinizi yapabilirsiniz. Mesela ubuntuda şöyle kullanılabilir:</p>
<p>cagdas@cagdas-K53SV:~$ telnet<br />
telnet&gt; open localhost<br />
Trying 127.0.0.1&#8230;<br />
Connected to localhost.<br />
Escape character is &#8216;^]&#8217;.<br />
Server&#8217;a baglandiniz. Cikmak icin bye yazin.</p>
<div class="shr-publisher-469"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/java-ile-thread-kullanarak-socket-programlama.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>My First Design Pattern in Java : Singleton</title>
		<link>http://www.cagdastopcu.com/my-first-design-pattern-in-java-singleton.html</link>
		<comments>http://www.cagdastopcu.com/my-first-design-pattern-in-java-singleton.html#comments</comments>
		<pubDate>Wed, 29 Jun 2011 19:13:36 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=382</guid>
		<description><![CDATA[I learned my first design pattern at my oop based java lesson. If you need to create only one instance  and reuse this instance forever (or some classes need only one instance who knows?) you can use this pattern. This pattern was published by GoF. Where we can use? Some application need unique items. For &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/my-first-design-pattern-in-java-singleton.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I learned my first design pattern at my oop based java lesson. If you need to create only one instance  and reuse this instance forever (or some classes need only one instance who knows?) you can use this pattern. This pattern was published by GoF.</p>
<p>Where we can use?</p>
<p>Some application need unique items. For example, my company use unique billing system in crm program because we need a unique reference.</p>
<p>How can I use?</p>
<p>First we add private constructor at our claas. It means that we can not use &#8220;new&#8221; operator at other class. Because when we use &#8220;new&#8221; operator, it calls class&#8217;s constructor for creating instance. Actually, if I can not use new operator at other class and how can I create new instance? Static keyword is the answer of the question. I write a static and public method for getting a new object and then I can create new objects. Then we can count creating of instances via a static integer field (I call it count in my piece of code).  Finally, I use if statement for creating my instance in static getCagdasSingleton() method.</p>
<p>Blueprint of CagdasSingleton class:</p>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/06/CagdasSingleton.jpg"><img class="size-medium wp-image-396 aligncenter" title="CagdasSingleton Blueprint UML Diagram" src="http://www.cagdastopcu.com/wp-content/uploads/2011/06/CagdasSingleton-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>&nbsp;</p>
<p>and finally simple java code of my singleton class:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
 *
 */</span>
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.cagdastopcu.designpatterns</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * @author cagdas
 *
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CagdasSingleton <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> count<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> nediryani<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> index<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> CagdasSingleton single<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> CagdasSingleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		index <span style="color: #339933;">=</span> count<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> CagdasSingleton getCagdasSingleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// if (single == null)</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>count<span style="color: #339933;">++</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Is it the first creation?</span>
			single <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CagdasSingleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// if yes we create our instance</span>
		<span style="color: #000000; font-weight: bold;">return</span> single<span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">// if no we use old instance :)</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> setNediryani<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		nediryani <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">int</span> getLan<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> nediryani<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">int</span> getIndex<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> index<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>This is the test class:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.cagdastopcu.designpatterns</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CagdasSingletonDriver <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		CagdasSingleton mySingleton1 <span style="color: #339933;">=</span> CagdasSingleton.<span style="color: #006633;">getCagdasSingleton</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton1.<span style="color: #006633;">getIndex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		CagdasSingleton mySingleton2 <span style="color: #339933;">=</span> CagdasSingleton.<span style="color: #006633;">getCagdasSingleton</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton2.<span style="color: #006633;">getIndex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		CagdasSingleton mySingleton3 <span style="color: #339933;">=</span> CagdasSingleton.<span style="color: #006633;">getCagdasSingleton</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton3.<span style="color: #006633;">getIndex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		CagdasSingleton mySingleton4 <span style="color: #339933;">=</span> CagdasSingleton.<span style="color: #006633;">getCagdasSingleton</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton4.<span style="color: #006633;">getIndex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>mySingleton4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>&nbsp;</p>
<p>Output:</p>
<p>&nbsp;</p>

<div class="wp-terminal">cagdas@zanpakutou:$ <br/><br/>1<br/>1<br/>1<br/>1<br/>com.cagdastopcu.designpatterns.CagdasSingleton@30c221<br/>com.cagdastopcu.designpatterns.CagdasSingleton@30c221<br/>com.cagdastopcu.designpatterns.CagdasSingleton@30c221<br/>com.cagdastopcu.designpatterns.CagdasSingleton@30c221<br/></div>

<p>&nbsp;</p>
<p>I tested my singleton design pattern with print reference fields. They point to same heap adress.</p>
<div class="shr-publisher-382"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/my-first-design-pattern-in-java-singleton.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Geliştirme Araçlarının Kurulumu</title>
		<link>http://www.cagdastopcu.com/android-gelistirme-araclarinin-kurulumu.html</link>
		<comments>http://www.cagdastopcu.com/android-gelistirme-araclarinin-kurulumu.html#comments</comments>
		<pubDate>Fri, 20 May 2011 06:43:21 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[Kategorilenmemiş]]></category>
		<category><![CDATA[adt]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=373</guid>
		<description><![CDATA[Uzun zamandır yazmamışım. Unutmamak adına kendime hazırladığım dökümanı paylaşmak istedim. Belki çoğu kişi kolayca halletmiştir ancak kurarken karşılaşabileceğimiz sorunları da içerdiğinden gerekli olduğunu düşündüm. Öncelikle eclipse&#8217;imiz kurulu olmalı ve javamız sun&#8217;ın olmalı. İlk olarak android sdk şu adresten indirelim: &#160; http://developer.android.com/sdk/index.html &#160; ben ubuntuda olduğum için linux&#8217;u seçtim. Kullanıcı klasörümüze açalım bu android sdk dosyasını: &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/android-gelistirme-araclarinin-kurulumu.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/05/honeycombdroid.png"><img class="alignleft size-full wp-image-376" title="honeycombdroid 3.0 Android" src="http://www.cagdastopcu.com/wp-content/uploads/2011/05/honeycombdroid.png" alt="" width="300" height="240" /></a></p>
<p>Uzun zamandır yazmamışım. Unutmamak adına kendime hazırladığım dökümanı paylaşmak istedim. Belki çoğu kişi kolayca halletmiştir ancak kurarken karşılaşabileceğimiz sorunları da içerdiğinden gerekli olduğunu düşündüm.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H6 { margin-bottom: 0.08in } 		H6.cjk { font-family: "DejaVu Sans" } 		H6.ctl { font-family: "DejaVu Sans" } 		A:link { so-language: zxx } -->Öncelikle eclipse&#8217;imiz kurulu olmalı ve javamız sun&#8217;ın olmalı. İlk olarak android sdk şu adresten indirelim:</p>
<p>&nbsp;</p>
<p><span style="color: #000080;"><span style="text-decoration: underline;"><a href="http://developer.android.com/sdk/index.html">http://developer.android.com/sdk/index.html</a></span></span></p>
<p>&nbsp;</p>
<p>ben ubuntuda olduğum için linux&#8217;u seçtim. Kullanıcı klasörümüze açalım bu android sdk dosyasını:</p>
<p>&nbsp;</p>
<h6><em><span style="color: #383838;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: x-small;">tar xvfz android-sdk_r11-linux_86.tgz</span></span></span></em></h6>
<h6><em><span style="color: #383838;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: x-small;">rm android-sdk_r11-linux_86.tgz</span></span></span></em></h6>
<p>&nbsp;</p>
<p>Burada ilk olarak oyunlar oynayacağımız android emulatörünü oluşturacağız fakat bazı güncellemeler yapmak lazım. Android SDK&#8217;sını çalıştırmak için şunları yapalım:</p>
<p>&nbsp;</p>
<p>cagdas@zanpakutou:~$ cd android-sdk-linux_x86/</p>
<p>&nbsp;</p>
<p>cagdas@zanpakutou:~/android-sdk-linux_x86$ cd tools/</p>
<p>&nbsp;</p>
<p>cagdas@zanpakutou:~/android-sdk-linux_x86/tools$ ./android</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center;">yani o dosyanın içindeki tools klasörüne geçip orada ./android&#8217;i çalıştırdık. Ben androidimi oluşturduğum için şöyle bir ekran geldi:</p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: center;"><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/05/sdk.jpg"><img class="aligncenter size-medium wp-image-374" title="android sdk ve adt yöneticisi" src="http://www.cagdastopcu.com/wp-content/uploads/2011/05/sdk-300x174.jpg" alt="" width="300" height="174" /></a></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p>Burada ilk önce available packages kısmından hangi android sdk&#8217;sına ihtiyacımız varsa onu indiriyoruz başta. Eğer https sıkıntı çıkarıyorsa settings bölümünden force https diye bir sekme var  onu tiklememiz lazım.</p>
<p>&nbsp;</p>
<p>Sonra available packages sekmesinden istediğimizi seçiyoruz. Third party dediği kısım telefonunuz samsungsa ona özel bir arayüz yayınlamış samsung ve oradan bunu indirebiliyoruz.</p>
<p>&nbsp;</p>
<p>Gerekli olan arayüzü indirdikten sonra virtual devices sekmesinden New diyoruz. Burada yazılanlar gibi boşlukları dolduruyoruz. Ancak platformu Android 1.5 ve yukarısında hangi platformda çalışmak istersek onu seçebiliriz.</p>
<p>&nbsp;</p>
<p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/05/olusturma.png"><img class="aligncenter size-medium wp-image-375" title="Android SDK Emulatör oluşturulması" src="http://www.cagdastopcu.com/wp-content/uploads/2011/05/olusturma-194x300.png" alt="" width="194" height="300" /></a></p>
<p>&nbsp;</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } --><span style="font-family: Arial, sans-serif;"><span style="font-size: small;">Bu tamamsa sıra geldi eclipse pluginini kurmaya. Android için olan eclipse plugin&#8217;inin adı ADT. Onu eclipse&#8217;in içinden kuruyoruz.</span></span></p>
<p>&nbsp;</p>
<p><span style="font-family: Arial, sans-serif;"><span style="font-size: small;">Eclipse&#8217;de help&gt;install new software seçiyoruz ve karşımıza gelen kısma aşağıdaki linki kopyalıyoruz:</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080;"><span style="text-decoration: underline;"><span style="font-family: Arial, sans-serif;"><span style="font-size: small;"></span></span></span></span></p>
<p>&nbsp;</p>
<p><span style="color: #383838;"><span style="font-family: Arial, sans-serif;"><span style="font-size: small;">Add dedikten sonra aşağıdaki developer tools&#8217;u kuruyoruz. </span></span></span></p>
<p>&nbsp;</p>
<p><span style="color: #383838;"><span style="font-family: Arial, sans-serif;"><span style="font-size: small;">Eclipse restart isteyecektir. Restart&#8217;tan sonra Eclipse&#8217;deki Window menüsünden Android SDK and AVD manager&#8217;e gelip daha önceden oluşturduğumuz android emülatörünü start&#8217;a basarak çalıştırıyoruz. Burada önemli olan boyutu. Starta bastıktan sonra scale display to real size&#8217;ı seçip screen size (n)= 6 monitor dip 119 yapıyoruz. Neden çalıştırdık ki daha kod yok ortada diyebilirsiniz. Android emülatörü çok yavaş açıldığından bir dafa başta görünüm boyutunu da ayarlayarak açıyoruz ve yazdığımız kodları proje sekmesinde üzerlerine sağ tıklayıp run&#8217;a basarak o çalıştırıyoruz. Böylece her defasında o açılışşı beklememiş oluyoruz.</span></span></span></p>
<p>&nbsp;</p>
<p><span style="color: #383838;"><span style="font-family: Arial, sans-serif;"><span style="font-size: small;">Şimdi new android projectle direkt denemenizi yapabilirsiniz. Hello World uygulaması içinde hazır olarak var zaten.</span></span></span></p>
<p>&nbsp;</p>
<div class="shr-publisher-373"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/android-gelistirme-araclarinin-kurulumu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java BlackBerry Eclipse Plugin</title>
		<link>http://www.cagdastopcu.com/java-blackberry-eclipse-plugin.html</link>
		<comments>http://www.cagdastopcu.com/java-blackberry-eclipse-plugin.html#comments</comments>
		<pubDate>Wed, 20 Apr 2011 22:14:25 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[programlama]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[indir]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[yükle]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=365</guid>
		<description><![CDATA[Kendi sitesinden indirmek sürekli donmalar olduğu için biraz sıkıntılıydı. İkinci bir link olmasını istedim. Java BlackBerry Eclipse Plugin 1.3 versiyonunu şu linkten indirebilirsiniz: Java BlackBerry Eclipse Plugin 1.3 Maalesef linux versiyonu olmadığından BlackBerry için ubuntuda kod yazmak sıkıntılı. Virtual Machine üzerinden bu tarz atraksiyonlara girilebilir ancak. Gereksinimleri: Eclipse 3.6 Helios 32-bit Windows® XP, Windows Vista® &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/java-blackberry-eclipse-plugin.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/04/blackberryicon.jpg"><img class="alignleft size-medium wp-image-366" title="blackberryicon" src="http://www.cagdastopcu.com/wp-content/uploads/2011/04/blackberryicon-300x300.jpg" alt="" width="180" height="180" /></a></p>
<p>Kendi sitesinden indirmek sürekli donmalar olduğu için biraz sıkıntılıydı. İkinci bir link olmasını istedim.</p>
<p>Java BlackBerry Eclipse Plugin 1.3 versiyonunu şu linkten indirebilirsiniz:</p>
<p><a title="Java BlackBerry Eclipse Plugin 1.3 indir download" href="http://hotfile.com/dl/115225891/c37be37/BlackBerry_JDE_PluginFull_1.3.0.201102031007-19.exe.html" class="broken_link">Java BlackBerry Eclipse Plugin 1.3</a></p>
<p>Maalesef linux versiyonu olmadığından BlackBerry için ubuntuda kod yazmak sıkıntılı. Virtual Machine üzerinden bu tarz atraksiyonlara girilebilir ancak.</p>
<p>Gereksinimleri:</p>
<ul>
<li>Eclipse 3.6 Helios</li>
<li>32-bit Windows® XP, Windows Vista® veya Windows 7 (<strong>Note:</strong> 64-bit versionlar 32-bit Java® ve Eclipse&#8217;e ihtiyaç duyar)</li>
<li>Java SE Development Kit (JDK) 6, update 10 veya daha üstü</li>
</ul>
<p>Programlama manueli:</p>
<p><a href="http://www.blackberry.com/developers/docs/6.0.0api/">http://www.blackberry.com/developers/docs/6.0.0api/</a></p>
<div class="shr-publisher-365"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/java-blackberry-eclipse-plugin.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Android XML Uygulaması</title>
		<link>http://www.cagdastopcu.com/android-xml-uygulamasi.html</link>
		<comments>http://www.cagdastopcu.com/android-xml-uygulamasi.html#comments</comments>
		<pubDate>Sun, 03 Apr 2011 15:04:24 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[izleme]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=357</guid>
		<description><![CDATA[Android işletim sistemi üzerine çalışırken working with xml on android makalesine denk geldim. XML parsing üzerine yazılmış çok güzel bir yazı. Buradaki proje dosyasını indirip bazı geliştirmeler yaparak kısa sürede internetten xml dosyasını çekip bunun üzerinde işlemlerinizi yapabilirsiniz. XML parsing internet sitelerinde kullanılabileceği gibi bir endüstriyel otomasyon sistemlerinden verilerin anlık olarak android telefon üzerinden izlenmesini &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/android-xml-uygulamasi.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Android işletim sistemi üzerine çalışırken <a href="http://www.ibm.com/developerworks/opensource/library/x-android/index.html?ca=dgr-lnxw82Android-XML&amp;S_TACT=105AGX59&amp;S_CMP=grlnxw82">working with xml on android</a> makalesine denk geldim. XML parsing üzerine yazılmış çok güzel bir yazı. Buradaki proje dosyasını indirip bazı geliştirmeler yaparak kısa sürede internetten xml dosyasını çekip bunun üzerinde işlemlerinizi yapabilirsiniz. XML parsing internet sitelerinde kullanılabileceği gibi bir endüstriyel otomasyon sistemlerinden verilerin anlık olarak android telefon üzerinden izlenmesini de mümkün hale getiriyor. Yani uygulama alanı sınırsız bir konu =)</p>
<p>Projede FeedParserFactory.java ve string.xml dosyalarını değiştirerek hızlıca çalışıp çalışmadığını kontrol edebilirsiniz. Kendi sitemin /feed.xml dosyasını çektim ve aşağıdaki rss beslemesini elde ettim. Ayrıca konu başlıklarına tıklayarak sitenin kendisine bağlanmak da mümkün.</p>
<p><a href="http://www.ibm.com/developerworks/apps/download/index.jsp?contentid=398121&amp;filename=AndroidXml.zip&amp;method=http&amp;locale=worldwide">Android XML parsing apisini</a> indirip sizde xml işlemlerine başlayabilirsiniz.</p>
<p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/04/xmlonandroid.png"><img class="aligncenter size-medium wp-image-358" title="xmlonandroid" src="http://www.cagdastopcu.com/wp-content/uploads/2011/04/xmlonandroid-260x300.png" alt="" width="260" height="300" /></a></p>
<p>Basit bir şekilde renk ve tema değişikliğiyle biraz şeffaf, esc tuşuyla ana ekrana hızlıca geçilen daha kullanışlı bir hale getirebiliriz.</p>
<p>AndroidMainfest.xml dosyasında şu değişikliği yapmak lazım temayı değişirmek için:</p>
<blockquote><p>&lt;activity android:name=&#8221;.MessageList&#8221;<br />
android:label=&#8221;@string/app_name&#8221;<br />
android:theme=&#8221;@android:style/Theme.Dialog&#8221;&gt;</p></blockquote>
<p>Sonuç çok güzel <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/04/androidxml1.png"><img class="aligncenter size-medium wp-image-362" title="androidxml1" src="http://www.cagdastopcu.com/wp-content/uploads/2011/04/androidxml1-184x300.png" alt="" width="184" height="300" /></a></p>
<div class="shr-publisher-357"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/android-xml-uygulamasi.html/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>İlk Android Programım</title>
		<link>http://www.cagdastopcu.com/ilk-android-programi.html</link>
		<comments>http://www.cagdastopcu.com/ilk-android-programi.html#comments</comments>
		<pubDate>Thu, 24 Mar 2011 22:51:35 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[yazılım]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=348</guid>
		<description><![CDATA[Sonunda ilk kodumu çalıştırmayı başardım. Google Android SDK ile gelen emulatör 15 dakikada açılıyor ve programlarımı çalıştıramıyordum. Biraz araştırınca bu sorunun herkeste olduğunu gördüm. Ardından bilgisayarımı yedekleyip formatı çaktım Daha hızlandı mı dersiniz? Eh 15 dakika olmasa da 5 dakikada açılıyor artık android oyuncağım. İşin püf noktası emulatörü sadece bir defa açıp uygulamaları modifiye ettikçe &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/ilk-android-programi.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/03/ilkandroid.png"><img class="aligncenter size-medium wp-image-349" title="ilkandroid" src="http://www.cagdastopcu.com/wp-content/uploads/2011/03/ilkandroid-300x278.png" alt="Android İlk Projem" width="300" height="278" /></a></p>
<p>Sonunda ilk kodumu çalıştırmayı başardım. Google Android SDK ile gelen emulatör 15 dakikada açılıyor ve programlarımı çalıştıramıyordum. Biraz araştırınca bu sorunun herkeste olduğunu gördüm. Ardından bilgisayarımı yedekleyip formatı çaktım <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Daha hızlandı mı dersiniz? Eh 15 dakika olmasa da 5 dakikada açılıyor artık android oyuncağım. İşin püf noktası emulatörü sadece bir defa açıp uygulamaları modifiye ettikçe onda uygulamakmış. Eclipse&#8217;e o kadar da hakim olmamamdan kaynaklanan bir durum aslında bu. Projenin üzerine sağ tıklayıp run as android application&#8217;u tıklamamız yeterliymiş <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) top komutuyla aldığım çıktıda cpu %23 bellek de %16 çıktı. Bu da benim eski bilgisayarım için yeterli bir değer <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>cagdas    20   0  403m 158m 7640 R   23 16.0   5:44.53 emulator</p>
<p>SDK&#8217;nın kurulumunda kullandığım belgeler:</p>
<p>http://www.helloandroid.com/tutorials/how-set-eclipse-android-sdk-ubuntu-linux-904910-updated</p>
<p>Hello World Programı:</p>
<p>http://developer.android.com/resources/tutorials/hello-world.html</p>
<p>Android Emulatörün Eclipse ile kullanımını anlatan güzel bir video:</p>
<p><object width="590" height="357"><param name="movie" value="http://www.youtube.com/v/SVZ1P35xgNQ?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SVZ1P35xgNQ?version=3" type="application/x-shockwave-flash" width="590" height="357" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>&nbsp;</p>
<p>Devamında XML öğrenmem gerektiğini farkettim. XML ile şöyle bir arayüzü yapmamız bir iki dakikalık iş <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/03/deneme1.png"><img class="aligncenter size-medium wp-image-353" title="deneme1" src="http://www.cagdastopcu.com/wp-content/uploads/2011/03/deneme1-185x300.png" alt="android gui arayüz tasarımı xml" width="185" height="300" /></a></p>
<div class="shr-publisher-348"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/ilk-android-programi.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Android SDK Tehlikelidir Yasaktır</title>
		<link>http://www.cagdastopcu.com/google-android-sdk-tehlikelidir-yasaktir.html</link>
		<comments>http://www.cagdastopcu.com/google-android-sdk-tehlikelidir-yasaktir.html#comments</comments>
		<pubDate>Tue, 22 Mar 2011 21:20:15 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=344</guid>
		<description><![CDATA[Saçmalık ancak Android&#8217;in sitesi birçok google hizmeti gibi yasaklanmış. Android için yazılım geliştirmede kullanılan SDK&#8217;yı ubuntuda kurmak istiyorsanız önce haysiyetsiz beyinciklerce yasaklanmış olan google sitelerini açıyoruz. Bunun için komut satırına sudo gedit /etc/hosts yazın ve çıkan dosyaya aşağıdakileri kopyalayıp kaydedin. Böylece rahatça sdk&#8217;nızı indirip programlamaya başlayabilirsiniz. 72.14.221.100 maps.google.com 72.14.221.100 earthserver.google.com 72.14.221.100 maps.gstatic.com 72.14.221.100 picasaweb.google.com 74.125.43.103 &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/google-android-sdk-tehlikelidir-yasaktir.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Saçmalık ancak Android&#8217;in sitesi birçok google hizmeti gibi yasaklanmış. Android için yazılım geliştirmede kullanılan SDK&#8217;yı ubuntuda kurmak istiyorsanız önce haysiyetsiz beyinciklerce yasaklanmış olan google sitelerini açıyoruz. Bunun için komut satırına</p>
<p>sudo gedit /etc/hosts</p>
<p>yazın ve çıkan dosyaya aşağıdakileri kopyalayıp kaydedin. Böylece rahatça sdk&#8217;nızı indirip programlamaya başlayabilirsiniz.</p>
<p><span id="more-344"></span></p>
<pre>72.14.221.100 maps.google.com
72.14.221.100 earthserver.google.com
72.14.221.100 maps.gstatic.com
72.14.221.100 picasaweb.google.com
74.125.43.103 docs.google.com
74.125.43.103 translate.google.com
74.125.43.103 code.google.com
74.125.43.103 pages.google.com
74.125.43.103 video.google.com
74.125.43.103 translate.google.com.tr
74.125.43.103 docs.google.com
74.125.43.103 sites.google.com
74.125.43.103 books.google.com
74.125.43.103 chrome.google.com
74.125.43.103 sketchup.google.com
74.125.43.103 froogle.google.com
74.125.43.103 labs.google.com
74.125.43.103 mars.google.com
74.125.43.103 moon.google.com
74.125.43.103 notebook.google.com
74.125.43.103 toolbar.google.com
74.125.43.103 browsersync.google.com
74.125.43.103 catalog.google.com
74.125.43.103 codesearch.google.com
74.125.43.103 dir.google.com
74.125.43.103 earth.google.com
74.125.43.103 groups.google.com.tr
74.125.43.103 shopping.google.com
74.125.43.103 sky.google.com
74.125.43.103 support.google.com
74.125.43.103 tools.google.com
74.125.43.103 wap.google.com
74.125.43.103 answers.google.com
74.125.43.103 google-analystics.com
74.125.43.103 clients2.google.com
74.125.43.103 https://dl-ssl.google.com/android/repository/repository.xml
74.125.43.103 youtube.com
74.125.43.103 www.youtube.com
74.125.43.103 docs.google.com
209.85.229.99 youtube.com
209.85.229.99 www.youtube.com
209.85.227.101 translate.google.com
209.85.227.105 maps.google.com
209.85.227.101 code.google.com
209.85.227.113 pages.google.com
209.85.227.100 video.google.com
209.85.227.138 docs.google.com
209.85.227.101 sites.google.com
209.85.227.100 books.google.com
209.85.227.101 chrome.google.com
209.85.227.113 sketchup.google.com
209.85.227.102 froogle.google.com
209.85.227.102 labs.google.com
209.85.227.102 mars.google.com
209.85.227.139 moon.google.com
209.85.227.113 notebook.google.com
209.85.227.101 toolbar.google.com
209.85.227.102 catalog.google.com
209.85.227.113 codesearch.google.com
209.85.227.113 dir.google.com
209.85.227.138 earth.google.com
209.85.227.139 groups.google.com
209.85.227.100 groups.google.com.tr
209.85.227.139 shopping.google.com
209.85.227.138 sky.google.com
209.85.227.139 support.google.com
209.85.227.139 tools.google.com
209.85.227.102 wap.google.com
209.85.227.100 answers.google.com
74.125.43.103 docs.google.com
74.125.43.103 translate.google.com
74.125.43.103 code.google.com
74.125.43.103 pages.google.com
74.125.43.103 video.google.com
74.125.43.103 translate.google.com.tr
74.125.43.103 docs.google.com
74.125.43.103 sites.google.com
74.125.43.103 books.google.com
74.125.43.103 chrome.google.com
74.125.43.103 sketchup.google.com
74.125.43.103 froogle.google.com
74.125.43.103 labs.google.com
74.125.43.103 mars.google.com
74.125.43.103 moon.google.com
74.125.43.103 notebook.google.com
74.125.43.103 toolbar.google.com
74.125.43.103 browsersync.google.com
74.125.43.103 catalog.google.com
74.125.43.103 codesearch.google.com
74.125.43.103 dir.google.com
74.125.43.103 earth.google.com
74.125.43.103 groups.google.com.tr
74.125.43.103 shopping.google.com
74.125.43.103 sky.google.com
74.125.43.103 support.google.com
74.125.43.103 tools.google.com
74.125.43.103 wap.google.com
74.125.43.103 answers.google.com
74.125.43.103 google-analystics.com
74.125.43.103 clients2.google.com
72.14.213.136 khm0.google.com
72.14.213.91 mt0.google.com
72.14.213.136 khm1.google.com
72.14.213.136 mt1.google.com
72.14.213.93 lh4.ggpht.com
74.125.53.139 gg.google.com
72.14.213.136 khm0.google.com
72.14.213.91 mt0.google.com
72.14.213.136 khm1.google.com
72.14.213.136 mt1.google.com
72.14.213.93 lh4.ggpht.com
74.125.53.139 gg.google.com
72.14.213.93 kh.google.com
72.14.213.103 maps.google.com
72.14.213.113 auth.keyhole.com
74.125.43.105 earth.google.com
209.85.229.99 www.youtube.com
209.85.229.99 youtube.com
209.85.229.99 www3.l.google.com
209.85.229.99 youtube-ui.l.google.com
209.85.229.99 ns1.google.com
209.85.229.99 ns2.google.com
209.85.229.99 ns3.google.com
209.85.229.99 ns4.google.com
209.85.229.99 uk.youtube.com
209.85.229.99 de.youtube.com
209.85.229.99 translate.google.com
209.85.229.99 suggestqueries.google.com
209.85.229.99 earth.google.com
209.85.229.99 books.google.com
209.85.229.99 code.google.com
209.85.229.99 code.l.google.com
209.85.229.99 dl.google.com
209.85.227.106 dl-ssl.google.com
74.125.93.121 developer.android.com</pre>
<p>&nbsp;</p>
<div class="shr-publisher-344"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/google-android-sdk-tehlikelidir-yasaktir.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ücretsiz Arm Cortex Geliştirme Kiti</title>
		<link>http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html</link>
		<comments>http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html#comments</comments>
		<pubDate>Tue, 15 Mar 2011 10:30:38 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[elektronik]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Güç Elektroniği]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[Robotik]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=340</guid>
		<description><![CDATA[Geçenlerde ücretsiz arm boardları var mı diye araştırırken hackaday&#8217;de karşıma ilginç bir ilan çıktı. İlana göre kendi 8-16 bitlik mikrodenetleyicimizi parçalayıp video veya fotoğrafını yollarsak Arm Cortex M0 işlemcili NXP firmasının ürettiği LPCXpresso kitlerinden yollayacaklardı. NXP philips firmasının elektronik eleman üreten firması bu arada. Türkiye&#8217;ye yollamazlar ama şansımı deneyeyim diye yolladım ben de kendi 16f628a &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.cagdastopcu.com/wp-content/uploads/2011/03/board.jpg"><img class="aligncenter size-full wp-image-341" title="LPCXpresso board" src="http://www.cagdastopcu.com/wp-content/uploads/2011/03/board.jpg" alt="" width="480" height="436" /></a></p>
<p>Geçenlerde ücretsiz arm boardları var mı diye araştırırken <a href="http://hackaday.com/2011/02/19/free-as-in-free-beer-arm-kit/">hackaday&#8217;de</a> karşıma ilginç bir ilan çıktı. İlana göre kendi 8-16 bitlik mikrodenetleyicimizi parçalayıp video veya fotoğrafını yollarsak Arm Cortex M0 işlemcili NXP firmasının ürettiği <a href="http://ics.nxp.com/lpcxpresso/">LPCXpresso</a> kitlerinden yollayacaklardı. NXP philips firmasının elektronik eleman üreten firması bu arada.</p>
<p>Türkiye&#8217;ye yollamazlar ama şansımı deneyeyim diye yolladım ben de kendi 16f628a içeren fotoğrafımı ve vola şöyle bir mail döndüler dün gece:</p>
<p>Dear contributor,</p>
<p>Your video has been approved! We will send you a free LPCXpresso as soon as possible.</p>
<p>Kind regards,<br />
NXP Semiconductors</p>
<p>Forumlardan araştırdığım kadarıyla 20 gün içerisinde yollayacaklar kitimi. Hackaday.com sitesinde yüzlerce yorum yapılmış bu yarışmaya. Vandallıkla suçlayanlar bile olmuş ancak 2011 yılında hala 8-bitlik işlemcileri bize reva gören karaköy esnafının bu çılgınlıkta hiç mi suçu yok ha?  Karaköy pasajında her gidişimizde 50 liralık alışveriş yaptığımız bahadır abinin, bahadır abinin toptancısının hiç mi suçu yok sorarım sizlere <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  8 bitlik kullandığım en son alet tetrisimdi. Neden hala 8 bit diye kasıyorlar anlamıyorum. Daha pahalı da değil aslında 8 bitlik PIC&#8217;lere göre.. Arm Cortex&#8217;lerle, Armın geliştiricileri dünya 32-bit olsun bitsin artık bu çile dedi sanıyorum.</p>
<p>Yapacaklarımız çok kolay:</p>
<p><a href="http://www.nxp.com/campaigns/cortex-m0/index.php?sub=gallery">Ücretsiz LPCXpresso</a> sitesine girin, sağ tarafta get it for free butonu var ona tıklayın. Karşınıza gelen formu gerçek bilgilerinizle doldurun. Çünkü evinize buranın aracılığıyla yollayacaklar. İş mailinizi istese de ben kişisel gmailimi kullandım. Malum kişisel tarihim pek da iyiye gitmiyor, işsizlik açlık sefalet durumları. Ardından video veya fotoğraf gönderebileceğiniz bir bölüme geçeceksiniz. Burada upload ederken parçalama işlemini nasıl yaptığınızı da anlatmanız gerekiyor.</p>
<p>Eğer elime ulaşırsa LPCXpresso LPC1114 boardı yollayacaklar. Umut, heyecan, gözyaşı her şey var elbette ptt ile gelen ürünlerde.</p>
<p>Sabırsızlanıyorum <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p><strong>Edit: Sonunda geldi beleş boardım. Bu yazıyı 15 martta yazmıştım ve 6 mayısta elime geçti. Eve bir süredir uğramadığımdan hadi 3 mayısta gelmiş olsun. 50 gün sonra ulaştı elime arm cortex kiti. Dökümanlarını okuyup geliştirmeye başlayacağım. Mutlu son ancak insanın hevesi kırılıyor o kadar bekleyince <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p></blockquote>
<p>&nbsp;</p>
<div class="shr-publisher-340"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/ucretsiz-arm-cortex-gelistirme-kiti.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Yeni Yıl Makyajı</title>
		<link>http://www.cagdastopcu.com/yeni-yil-makyaji.html</link>
		<comments>http://www.cagdastopcu.com/yeni-yil-makyaji.html#comments</comments>
		<pubDate>Mon, 27 Dec 2010 08:43:40 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[hayat]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=326</guid>
		<description><![CDATA[Sitemin temasından sıkılmıştım artık ve tema geliştiricisi arkadaş bu sıralar pek güncelleme yapma niyetinde değildi. WordPress&#8217;in önerdiklerinden suffusion 200 bine yakın indirme ve yüzlerce iyi geribildirimle dikkatimi çekmişti. İlk başta web tasarımcılar için çalışma alanı sağladığını düşündüğüm tema aslında kod yazmadan kendi temamızı oluşturmamızı sağlayan bir sistemmiş. WP kontrol panelinde suffusion sekmesine gelip favicondan istediğimiz &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/yeni-yil-makyaji.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Sitemin temasından sıkılmıştım artık ve tema geliştiricisi arkadaş bu sıralar pek güncelleme yapma niyetinde değildi. WordPress&#8217;in önerdiklerinden <a href="http://www.aquoid.com/news/themes/suffusion/" target="_blank">suffusion</a> 200 bine yakın indirme ve yüzlerce iyi geribildirimle dikkatimi çekmişti. İlk başta web tasarımcılar için çalışma alanı sağladığını düşündüğüm tema aslında kod yazmadan kendi temamızı oluşturmamızı sağlayan bir sistemmiş. WP kontrol panelinde suffusion sekmesine gelip favicondan istediğimiz header resmine kadar herşeyi özelleştirebilmek mümkün. Kullanımı da oldukça kolay. Başta yaptığım değişiklikler neden olmuyor diye sorgularken sitemin cache sistemi yüzünden olduğunu anladım ve anasayfadan olmasa da altsayfalardan yaptığım değişiklikleri anında görebildim. Yeni yıl yeni tema mutlu parmaklar <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  en mutluları da ayak parmakları <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>not: öef bu ne mavi mavi karman çorman pok gibi diyen varsa daha güzel resimlere açığım. Estetik yoksunu değilim fotoşop/gimp özürlürlüyüm <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="shr-publisher-326"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/yeni-yil-makyaji.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Latex Türkçe Kullanımı</title>
		<link>http://www.cagdastopcu.com/latex-turkce-kullanimi.html</link>
		<comments>http://www.cagdastopcu.com/latex-turkce-kullanimi.html#comments</comments>
		<pubDate>Mon, 13 Dec 2010 08:37:59 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[bilim]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[akademik]]></category>
		<category><![CDATA[kullanım]]></category>
		<category><![CDATA[kullanım notları]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[türkçe]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=315</guid>
		<description><![CDATA[akademik makalelerin yazımında kullanılan standartlaşmış bir dildir. Matematiksel gösterimleri ve yazımı akademik dergilerin standartlarına uygun yazmak için kullanabileceğimiz tek araçtır. Ubuntu kullanıyorsak aşağıdaki paketleri direkt synaptic paket yöneticisinden bulup indirelim. dblatex texlive-lang-other ardından aşağıdaki başlıkları ekleyelim dosyamıza ve deneme.tex diye kaydedelim. \documentclass[12pt]{article} \usepackage[english,turkish]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \selectlanguage{turkish} \begin{document} \section*{Denemeı} \large içüğşıöÜŞÇÖİ \begin{equation} \sqrt{\pi} \end{equation} \end{document} Bir &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/latex-turkce-kullanimi.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img src='http://s.wordpress.com/latex.php?latex=%5CLaTeX&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\LaTeX' title='\LaTeX' class='latex' /> akademik makalelerin yazımında kullanılan standartlaşmış bir dildir. Matematiksel gösterimleri ve yazımı akademik dergilerin standartlarına uygun yazmak için kullanabileceğimiz tek araçtır.</p>
<p>Ubuntu kullanıyorsak aşağıdaki paketleri direkt synaptic paket yöneticisinden bulup indirelim.</p>
<p>dblatex<br />
texlive-lang-other</p>
<p>ardından aşağıdaki başlıkları ekleyelim dosyamıza ve deneme.tex diye kaydedelim.</p>
<p>\documentclass[12pt]{article}<br />
\usepackage[english,turkish]{babel}<br />
\usepackage[utf8]{inputenc}<br />
\usepackage[T1]{fontenc}<br />
\selectlanguage{turkish}<br />
\begin{document}<br />
\section*{Denemeı}<br />
\large<br />
içüğşıöÜŞÇÖİ<br />
\begin{equation}<br />
\sqrt{\pi}<br />
\end{equation}</p>
<p>\end{document}</p>
<p>Bir terminal açın<br />
Kaydettiğimiz dosyanın olduğu konuma cd komutuyla geçin.<br />
Örneğin cd /home/cagdas/belgeler/texbelgeleri<br />
tex dosyamızı direkt pdf&#8217;e çevirmek için<br />
pdflatex deneme.tex<br />
yazmamız yeterli.</p>
<p>Eğer dvi formatında istiyorsak<br />
latex deneme.tex<br />
postscript olarak istiyorsak dvi&#8217;a dönüştürdüğümüz dosyayı<br />
dvips deneme.dvi ile postscript haline getirmiş oluruz.</p>
<div class="shr-publisher-315"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/latex-turkce-kullanimi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Kullanım Notları</title>
		<link>http://www.cagdastopcu.com/mysql-kullanim-notlari.html</link>
		<comments>http://www.cagdastopcu.com/mysql-kullanim-notlari.html#comments</comments>
		<pubDate>Sun, 05 Dec 2010 11:32:45 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[pragramlama]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[kullanım notları]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[notlar]]></category>
		<category><![CDATA[notları]]></category>
		<category><![CDATA[programlama]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=307</guid>
		<description><![CDATA[C++ ve libmysqlclient kütüphanesi ile database uygulamalarına başladım. Buna başlamadan önce temel bir MySQL bilgisi gerekmektedir. MySQL tutorial&#8217;ını çalışırken kendime çıkardığım notlardır. Çok kapsamlı olmasa da ilk giriş dersi olabilir. mysql&#8217;i başlatma kod $ sudo /etc/init.d/mysql start kod$ mysql&#8217;e bağlanma kod $ mysql -u root -p kod $ Eğer kurulumu düzgün olmuşsa aşağıdaki gibi bir &#8230; </p><p><a class="more-link block-button" href="http://www.cagdastopcu.com/mysql-kullanim-notlari.html">Continue reading &#187;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="alignleft" title="mysql tasarım" src="http://lh5.ggpht.com/_gVfZHGgf5LA/Sn9FwCWpCgI/AAAAAAAAAto/oTCPwV8WCI0/planet_mysql_voting2.jpg" alt="" width="333" height="259" /></p>
<p>C++ ve libmysqlclient kütüphanesi ile database uygulamalarına başladım. Buna başlamadan önce temel bir MySQL bilgisi gerekmektedir.</p>
<p>MySQL tutorial&#8217;ını çalışırken kendime çıkardığım notlardır. Çok kapsamlı olmasa da ilk giriş dersi olabilir.</p>
<div>mysql&#8217;i başlatma</div>
<div>kod $</div>
<div>sudo /etc/init.d/mysql start</div>
<div>kod$</div>
<div>mysql&#8217;e bağlanma</div>
<p>kod $</p>
<p>mysql -u root -p</p>
<p>kod $</p>
<p>Eğer kurulumu düzgün olmuşsa aşağıdaki gibi bir şey göreceğiz.</p>
<p>Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 52Server version: 5.1.41-3ubuntu12.7 (Ubuntu)</p>
<p>Type &#8216;help;&#8217; or &#8216;\h&#8217; for help. Type &#8216;\c&#8217; to clear the current input statement.</p>
<p>mysql&gt;<br />
mysql db oluşturma<br />
kod mysql&gt;</p>
<p>CREATE DATABASE dbadi;</p>
<p>kod mysql&gt;</p>
<p>kullanılacak db&#8217;yi seçmek</p>
<p>kod mysql&gt;</p>
<p>USE dbadi;</p>
<p>kod mysql&gt;</p>
<p>kullanılacak db&#8217;yi mysql açılırken seçmek</p>
<p>kod $</p>
<p>mysql -h host -u user -p dbadi</p>
<p>kod $</p>
<p>örnek localhost ve root kullanıcısı için</p>
<p>kod $</p>
<p>mysql -h localhost -u root -p dbadi</p>
<p>kod $</p>
<p>Table&#8217;ları göstermek</p>
<p>kod mysql&gt;</p>
<p>SHOW TABLES;</p>
<p>kod mysql&gt;</p>
<p>bunun için USE komutu ile bir DB&#8217;yi seçmiş olmamız gerekiyor.eğer table yoksa</p>
<p>cikti mysql&gt;</p>
<p>mysql&gt; SHOW TABLES;Empty set (0.00 sec)</p>
<p>cikti mysql&gt;</p>
<p>sonucunu verir.</p>
<p>Table oluşturmak</p>
<p>kod mysql&gt;</p>
<p>CREATE TABLE tableadi (name VARCHAR(20), owner VARCHAR(20),species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);</p>
<p>kod mysql&gt;</p>
<p>burada tabloda tutulacak bilgiler de belirtilmiştir. VARCHAR uzunluğunubelirleyebildiğimiz karakter alanı açar. DATE ise tarih bilgisini saklamakiçindir.</p>
<p>oluşturduğumuz table&#8217;a bakmak</p>
<p>kod mysql&gt;</p>
<p>DESCRIBE tableadi;</p>
<p>kod mysql&gt;</p>
<p>Bu kod table&#8217;daki değişkenlerin türünü gösterir.</p>
<p>Tabloya veri göndermek</p>
<p>iki türlü yapılabilir:</p>
<p>a- Bir dosyadan veriyi almak</p>
<p>Dosyamıza verilerimizi sırasıyla tab ile boşluklar bırakarak yazıp txt uzantısıyla kaydediyoruz.<br />
örnek olarak</p>
<p>Badem	Cagdas	kopek	m	1996-06-06	/N</p>
<p>Arnould	Cagdas	kaplumbaga	m	1999-08-08	/N</p>
<p>Mavis	Abla	kus	m	1995-06-06	/N</p>
<p>Yesim	Abla	kus	m	1995-07-07	/N</p>
<p>Rocky	Cagdas	horoz	m	1993-04-04	1995-01-01</p>
<p>yazıp kaydettim.</p>
<p>Verileri istediğimiz tabloya şu şekilde göndeririz:</p>
<p>kod mysql&gt;</p>
<p>LOAD DATA LOCAL INFILE &#8216;/home/zanpakutou/dosyaadi.txt&#8217; INTO TABLE pet LINES TERMINATED BY &#8216;\n&#8217;;</p>
<p>kod mysql&gt;</p>
<p>burada dosyanın yerinin gösterimi önemli. Ben kullanıcı klasarümekaydetmiştim o yüzden bu şekilde yazdım.</p>
<p>b- komut satırından tek tek verilerin girilmesi<br />
kod mysql&gt;</p>
<p>INSERT INTO pet VALUES (&#8216;Minik&#8217;,'Cagdas&#8217;,'hamster&#8217;,'f&#8217;,&#8217;1999-03-30&#8242;,NULL);</p>
<p>kod mysql&gt;</p>
<p>Burada girdiğimiz NULL ve /N değerleri veri yok anlamında kullanılır.<br />
Tablodaki bütün verileri çekmek</p>
<p>kod mysql&gt;</p>
<p>SELECT * FROM tableadi;</p>
<p>kod mysql&gt;</p>
<p>+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;+</p>
<p>| name    | owner  | species    | sex  | birth      | death      |</p>
<p>+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;+</p>
<p>| Badem   | Cagdas | kopek      | m    | 1996-06-06 | 0000-00-00 |</p>
<p>| Arnould | Cagdas | kaplumbaga | m    | 1999-08-08 | 0000-00-00 |</p>
<p>| Mavis   | Abla   | kus        | m    | 1995-06-06 | 0000-00-00 |</p>
<p>| Yesim   | Abla   | kus        | m    | 1995-07-07 | 0000-00-00 |</p>
<p>| Rocky   | Cagdas | horoz      | m    | 1993-04-04 | 1995-01-01 |</p>
<p>+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;+</p>
<div>
<div>Tabloyu temizlemek</div>
<div>DELETE FROM pet;</div>
<div>Veriyi değiştirmek</div>
<div>kod mysql&gt;</div>
<div>UPDATE pet SET birth = &#8217;1999-04-21&#8242; WHERE name = &#8216;Arnould&#8217;;</div>
<div>kod mysql&gt;</div>
<div>Burada pet tablosunda name bölgesindeki Arnould isimli dizinin</div>
<div>birth bölgesi değiştirilmiştir. birth verisi tarih olarak tanımlı</div>
<div>olduğundan tarih şeklinde girdik veriyi.</div>
<div>Sıralı veri alma</div>
<div>kod mysql&gt;</div>
<div>SELECT Name,owner FROM pet ORDER BY Name;</div>
<div>kod mysql&gt;</div>
<div>Burada owner bölgesindeki verileri isimlerin sırasına göre beraber çektik.</div>
<div>Çıktısı şu şekilde olacaktır:</div>
<div>+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+</div>
<div>| Name    | owner  |</div>
<div>+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+</div>
<div>| Arnould | Cagdas |</div>
<div>| Badem   | Cagdas |</div>
<div>| Mavis   | Abla   |</div>
<div>| Rocky   | Cagdas |</div>
<div>| Yesim   | Abla   |</div>
<div>+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+</div>
<div>5 rows in set (0.58 sec)</div>
<div>Latex Denemesi:</div>
<img src='http://s.wordpress.com/latex.php?latex=e%5E%7B%5Ci%20%5Cpi%7D%20%2B%201%20%3D%200&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='e^{\i \pi} + 1 = 0' title='e^{\i \pi} + 1 = 0' class='latex' />
<div><span style="font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; line-height: 18px; color: #333333;"></p>
<p></span></div>
</div>
<div class="shr-publisher-307"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/mysql-kullanim-notlari.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.581 seconds -->
<!-- Cached page served by WP-Cache -->

