<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-23831712</id><updated>2011-04-22T04:13:32.515+03:00</updated><category term='java 1.5'/><category term='flash'/><category term='yahoo'/><category term='pc'/><category term='postgresql'/><category term='planet'/><category term='javy'/><category term='synth'/><category term='penguin'/><category term='wepy'/><category term='adobe'/><category term='penguen'/><category term='xul'/><category term='saç baş yolduran hikayeler'/><category term='dhtml'/><category term='ch'/><category term='firefox'/><category term='programlama'/><category term='rss'/><category term='antlr'/><category term='windows'/><category term='ch language'/><category term='programming language'/><category term='xhtml'/><category term='yeni teknoloji'/><category term='pipes'/><category term='gcj'/><category term='merge'/><category term='linux'/><category term='scripting'/><category term='jline'/><category term='feed'/><category term='gezegen'/><category term='java'/><category term='ch dili'/><category term='ajax'/><category term='hayat dersi'/><category term='howto'/><category term='kurulum'/><category term='yerel problemi'/><category term='görüş'/><category term='novell'/><category term='bash'/><category term='c'/><category term='programlama dili'/><category term='solaris inceleme'/><category term='betik'/><category term='nasıl belgesi'/><category term='groovy'/><category term='generics'/><category term='genel'/><category term='mac'/><category term='expect'/><category term='jenerik'/><category term='kullanılabilirlik'/><category term='pear'/><category term='symfony'/><category term='genç parti'/><category term='jython'/><category term='ide'/><category term='cem uzan'/><title type='text'>penguenyuvası | Fırat KÜÇÜK</title><subtitle type='html'>latince "peng ueny uvası" yani penguen en teknolojik hayvandır ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23831712.post-2213542849463064691</id><published>2007-08-05T01:04:00.000+03:00</published><updated>2007-08-05T17:35:38.082+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synth'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='yerel problemi'/><category scheme='http://www.blogger.com/atom/ns#' term='yeni teknoloji'/><title type='text'>yerel ayrımcılığı 2</title><content type='html'>&lt;p&gt;Synth, yeni nesil java uygulamaları için şahane estetik arabirimler yapmamızı sağlayan bir teknoloji. Fakat Türkçe yerelinde problemler çıkartmakta idi. Tabi bunu yaklaşık 6 - 7 saat uğraştıktan sonra anladım ve 10 - 12 saat sonra bir &lt;a href="https://jdk6.dev.java.net/issues/show_bug.cgi?id=14"&gt;patch&lt;/a&gt; yazdım. Umarım kabul edilir.&lt;/p&gt;

&lt;p&gt;Gelelim Synth'e aşağıda vereceğim Java Web Start örneklerini Patch JDK6'ya eklenene kadar sisteminizi İngilizceye alıp görüntüleyebilirsiniz:&lt;/p&gt;

&lt;br /&gt;
&lt;b&gt;Nimbus : Swing'in yeni hali:&lt;/b&gt;
&lt;br /&gt;

&lt;a href="http://javadesktop.org/swinglabs/demos/nimbus/nimbus.jnlp"&gt;&lt;img src="http://java.sun.com/docs/books/tutorial/images/jws-launch-button.png" alt="WebStart Demo" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;synthetica temaları:&lt;/b&gt;

&lt;br /&gt;
&lt;a href="http://www.javasoft.de//downloads/public/synthetica/syntheticaSkyMetallicSimpleDemo.jnlp"&gt;&lt;img src="http://java.sun.com/docs/books/tutorial/images/jws-launch-button.png" alt="WebStart Demo" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;a href="http://www.javasoft.de//downloads/public/synthetica/syntheticaMauveMetallicSimpleDemo.jnlp"&gt;&lt;img src="http://java.sun.com/docs/books/tutorial/images/jws-launch-button.png" alt="WebStart Demo" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;a href="http://www.javasoft.de//downloads/public/synthetica/syntheticaOrangeMetallicSimpleDemo.jnlp"&gt;&lt;img src="http://java.sun.com/docs/books/tutorial/images/jws-launch-button.png" alt="WebStart Demo" border="0"&gt;&lt;/a&gt;
&lt;br /&gt;


&lt;a href="http://www.javasoft.de/downloads/public/synthetica/syntheticaDemo.jnlp"&gt;&lt;img src="http://java.sun.com/docs/books/tutorial/images/jws-launch-button.png" alt="WebStart Demo" border="0"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;

&lt;b&gt;Java'nın standart örnekleri&lt;/b&gt;
&lt;a href="http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/"&gt;http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/&lt;/a&gt;

&lt;br /&gt;
&lt;a href="http://java.sun.com/docs/books/tutorialJWS/uiswing/lookandfeel/ex6/SynthDialog.jnlp"&gt;&lt;img src="http://java.sun.com/docs/books/tutorial/images/jws-launch-button.png" alt="WebStart Demo" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://java.sun.com/docs/books/tutorialJWS/uiswing/lookandfeel/ex6/SynthApplication.jnlp"&gt;&lt;img src="http://java.sun.com/docs/books/tutorial/images/jws-launch-button.png" alt="WebStart Demo" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-2213542849463064691?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/2213542849463064691/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=2213542849463064691&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/2213542849463064691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/2213542849463064691'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/08/yerel-ayrmcl-2.html' title='yerel ayrımcılığı 2'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-7631636249147019418</id><published>2007-07-16T21:57:00.000+03:00</published><updated>2007-07-16T22:44:26.966+03:00</updated><title type='text'>gsm operatörlerinin kullandığı teknolojiler</title><content type='html'>&lt;p&gt;mobil pazardaki rekabet her gün kızışıyor. Peki bu operatörler bize en iyi hizmeti verebilmek için hangi web teknolojilerini kullanıyorlar?&lt;/p&gt;

&lt;b&gt;AVEA&lt;/b&gt;

&lt;p&gt;Server: HP-UX_Apache-based_Web_Server&lt;/p&gt;

&lt;p&gt;Evet, Apache HP UNIX üzerinde meşhur açık kaynak Web sunucusu olan Apache'yi kullanıyor. Peki web teknolojisi olarak ne kullanıyor olabilir?&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A81MeCmETic/RpvBGYB2PlI/AAAAAAAAACA/jZqrLmkOTB8/s1600-h/avea.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_A81MeCmETic/RpvBGYB2PlI/AAAAAAAAACA/jZqrLmkOTB8/s400/avea.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5087872519318683218" /&gt;&lt;/a&gt;

&lt;p&gt;Bu hatayı almak için çok bir şey yapmanıza gerek yok. Siteye girin "Satış Noktaları", "Yardım" gibi herhangi bir bağlantıyı tıklayın.&lt;/p&gt;

&lt;p&gt;Hatanın anatomisi şöyle Bea WEBLOGIC kullanılıyor. Muhtemel AJP protokolü ile Apache arkasında bu çalışıyordur. Ve özel bir MVC altyapısı kullanıyor. Bunun haricinde XHTML 1.0 Transitional kullanılıyor. Teknoloji tamam ama siteye bakan kimse yok sanırım.&lt;/p&gt;

&lt;b&gt;VODAFONE&lt;/b&gt;

&lt;p&gt;Server: Apache/2.0.59 (Unix) DAV/2 PHP/5.2.1
&lt;/p&gt;

&lt;p&gt;Vodafone basit ama işlevsel olan PHP'i tercih etmiş. Hatta site bağlantı adresleri o kadar basitki. Bir an tok canım mod_rewrite kullanıyordur dedim. Fakat arama sayfasından da anlaşılacağı üzere sanırım her alt menu için ayrı bir PHP sayfası oluşturulmuş. Sanırım webmaster sayfa başı ücretlendiriliyor. :) Bu arada XHTML 1.0 Transitional kullanılmış.&lt;/p&gt;

&lt;b&gt;TURKCELL&lt;/b&gt;

&lt;p&gt;Server: Apache&lt;/p&gt;

&lt;p&gt;Bu ifade bir UNIX ailesi olduğunu göstermeye yeterli fakat başka?&lt;/p&gt;

&lt;p&gt;X-WebLogic-Cluster-List: .....&lt;/p&gt;

&lt;/&gt;Turkcell, java tabanlı iyi bir yapılanma içerisine girmiş. Bu kadar da kalmamış bir kümeleme teknolojisi kullanmış. Bitti mi?&lt;/p&gt;

&lt;p&gt;Via: 1.1 redline (Redline Networks Web I/O Processor - T|X 4.1.29 0)
&lt;/p&gt;

&lt;p&gt;Bu da sinekten yağ çıkartmak için daha yük dengeleme ve uygulama hızlandırma teknolojisi teknolojisi kullanıldığını gösteriyor.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-7631636249147019418?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/7631636249147019418/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=7631636249147019418&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/7631636249147019418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/7631636249147019418'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/07/gsm-operatrlerinin-kulland-teknolojiler.html' title='gsm operatörlerinin kullandığı teknolojiler'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A81MeCmETic/RpvBGYB2PlI/AAAAAAAAACA/jZqrLmkOTB8/s72-c/avea.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-5934755402904439821</id><published>2007-07-14T18:32:00.000+03:00</published><updated>2007-07-14T19:40:55.097+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='gcj'/><title type='text'>gcj ile daha hızlı java uygulamaları</title><content type='html'>&lt;p&gt;GCJ ile &lt;a href="http://www.penguenyuvasi.org/2006/06/gcj-ile-jreden-bamsz-uygulamalar.htm"&gt;daha önce&lt;/a&gt; linux üzerinde native kod'a derleme işlemi yapmıştık. Yaptığımız çapraz-platform uygulamaları windows'a da aktarmak için çoğu GNU projesinin çalışma mekanizmasını uygulamalıyız.&lt;/p&gt;

&lt;p&gt;Bunu yapmak için ufak bir linux bash kabuğuna ve izole bir sisteme sahip olmamız gerekli. Ama daha önce bir mingw yani (minimalist Gnu for windows) kurulumu yapalım. mingw adresinden son sürümünü indiriyoruz. Kurarken yapacağınız uygulamalara göre programlama dili derleyicileri sunulmakta. Buradan java'yı işaretlersek gcj derleyicisini bu ortama taşımış oluyoruz. Şimdi izole sistemimizi kurabiliriz. Aynı siteden MSYS (minimal system) adlı yazılımı indiriyoruz. Bu uygulamayı kurduktan sonra bir kurulum sonrası aşama var. burada mingw kurulumunuzun hangi dizinde olduğunu söylüyorsunuz. Bu aşamada /etc/fstab dizininde /mingw dizinini harddiskinizdeki kurulu mingw dizinine bağlıyor. Aynı işlemi siz başka aygıt ve dizinler için de yapabilirsiniz.&lt;/p&gt;

&lt;p&gt;Daha sonra sırası ile wget paketini indirip. wget.exe'yi mingw'nin bin dizini içeirisine atıyoruz. Artık meşhur wget kullanılabilir. daha sonra libiconv paketini indirelim ve bunun içerisindeki mingwPort.sh'ı msys bash uçbiriminden çalıştıralım. libiconv paketi wget ile indirilip derlenecektir.&lt;/p&gt;

&lt;p&gt;Artık java programlarini derleyebiliriz:&lt;/p&gt;

&lt;pre&gt;
gcj.exe --main=Ornek -o Ornek Ornek.java
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-5934755402904439821?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/5934755402904439821/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=5934755402904439821&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/5934755402904439821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/5934755402904439821'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/07/gcj-daha-hzl-uygulamalar.html' title='gcj ile daha hızlı java uygulamaları'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-8516127870345879595</id><published>2007-07-11T01:09:00.000+03:00</published><updated>2007-07-11T01:11:22.675+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='genç parti'/><category scheme='http://www.blogger.com/atom/ns#' term='cem uzan'/><title type='text'>XHTML</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A81MeCmETic/RpQD4sQf9pI/AAAAAAAAABw/TVu6b7ouexE/s1600-h/xhtml.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_A81MeCmETic/RpQD4sQf9pI/AAAAAAAAABw/TVu6b7ouexE/s400/xhtml.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5085694151696053906" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-8516127870345879595?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/8516127870345879595/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=8516127870345879595&amp;isPopup=true' title='4 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/8516127870345879595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/8516127870345879595'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/07/xhtml.html' title='XHTML'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A81MeCmETic/RpQD4sQf9pI/AAAAAAAAABw/TVu6b7ouexE/s72-c/xhtml.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-3089520725492624918</id><published>2007-07-09T20:37:00.000+03:00</published><updated>2007-07-09T20:45:23.505+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='saç baş yolduran hikayeler'/><category scheme='http://www.blogger.com/atom/ns#' term='pear'/><category scheme='http://www.blogger.com/atom/ns#' term='hayat dersi'/><title type='text'>yerel ayrımcılığı</title><content type='html'>&lt;p&gt;Bu girdiyi başka biri daha karşılaşırda saç baş yolar belki diye yazıorum. ubuntu 7.04 feisty dağıtımında php-pear paketini kuruyoruz. Herşey güzel. Fakat upgrade yapmaya kalkınca.&lt;/p&gt;

&lt;pre&gt;
root@minik:~# php-pear upgrade-all
Will upgrade console_getopt
Will upgrade pear
Did not download optional dependencies: pear/XML_RPC, use --alldeps to download automatically

Fatal error: Call to undefined method PEAR_Registry::packageinfo() in /usr/share/php/PEAR/Dependency2.php on line 659
&lt;/pre&gt;

&lt;p&gt;eveet, php paketlerini milyon defa inceleyip kodlarını bile inceledim. Sonunda sonucun yerel ayrımcılığından kaynaklandığını buldum.&lt;/p&gt;

&lt;pre&gt;
root@minik:/var/log# export LANG=en_US
root@minik:/var/log# pear upgrade-all
Will upgrade console_getopt
Will upgrade pear
Did not download optional dependencies: pear/XML_RPC, use --alldeps to download automatically
pear/PEAR can optionally use package "pear/XML_RPC" (version &gt;= 1.4.0)
downloading Console_Getopt-1.2.3.tgz ...
Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
....done: 4,011 bytes
downloading PEAR-1.6.1.tgz ...
Starting to download PEAR-1.6.1.tgz (295,780 bytes)
...done: 295,780 bytes
downloading Structures_Graph-1.0.2.tgz ...
Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
...done: 30,947 bytes
upgrade-all ok: channel://pear.php.net/Structures_Graph-1.0.2
upgrade-all ok: channel://pear.php.net/PEAR-1.6.1
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
upgrade-all ok: channel://pear.php.net/Console_Getopt-1.2.3
To install use "pear install pear/PEAR#featurename"
root@minik:/var/log# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.2   stable
Console_Getopt   1.2.3   stable
PEAR             1.6.1   stable
Structures_Graph 1.0.2   stable
&lt;/pre&gt;

&lt;p&gt;Bu bir şey mi? symfony adlı framework'de &lt;b&gt;symfony propel-build-all&lt;/b&gt; çalışmamasının nedeni de yerel ayrımcılığıymış. Burdan çıkaracağımız ders. Bir hata olduğunda önce yabancı yereller ile dene. Sonra caanım Türkçem ile dene.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-3089520725492624918?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/3089520725492624918/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=3089520725492624918&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/3089520725492624918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/3089520725492624918'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/07/yerel-ayrmcl.html' title='yerel ayrımcılığı'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-526978839806113047</id><published>2007-07-08T09:29:00.000+03:00</published><updated>2007-07-08T09:41:21.592+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ch language'/><category scheme='http://www.blogger.com/atom/ns#' term='ch dili'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><category scheme='http://www.blogger.com/atom/ns#' term='betik'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='ch'/><title type='text'>Betik C</title><content type='html'>&lt;p&gt;Betik (Scripting) diller'i derlemezsiniz (compiling), bağlamazsınız (linking) yalnızca çalıştıtırsınız. Bu nedenle betik diller ile uygulama geliştirmek zevkli ve hızlıdır. İşte C tutukusundan vazgeçemeyenlere bir betik dil daha.&lt;/p&gt;

&lt;p&gt;Ch'yi &lt;a href="http://www.softintegration.com/"&gt;softintegration.com&lt;/a&gt; adresinden indirebilirsiniz.&lt;/p&gt;

&lt;p&gt;İşte beklenen Merhaba Dünya:"&lt;/p&gt;

&lt;pre&gt;
#!/bin/ch

#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

int main(int argc, char** argv) {

    if (argc &gt; 1)
        printf("Merhaba %s!\n", argv[1]);

    return EXIT_SUCCESS;
}
&lt;/pre&gt;

Çalıştırıyoruz.

&lt;pre&gt;
pismikrop@minik:~/Desktop$ ./merhaba.ch Abi
Merhaba Abi!
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-526978839806113047?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/526978839806113047/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=526978839806113047&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/526978839806113047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/526978839806113047'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/07/betik-c.html' title='Betik C'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-225090001866133324</id><published>2007-07-07T19:52:00.000+03:00</published><updated>2007-07-08T09:42:32.142+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='expect'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Great Expectations: Expect</title><content type='html'>GUI scriptin yani KGA tabanlı betik programlama bir çok konu da derde deva. Örneğin uzak bir sunucuya SSH ile bağlanıyor bir dizi işlem yapıp çıkıyorsunuz. Yada bir anonim ftp'ye bağlanıp bir çok işlem yapıp geri dönüyorsunuz. Bu işleri otomatik hale getirmek expect ile olabildiğince kolay.

&lt;pre&gt;
#!/usr/bin/expect -f                                                                                                                

spawn ftp $argv
expect "Name"
send "anonymous\r"
expect "Password:"
send "anonymous\r"
expect "ftp&amp;gt; "
send "ls\n"
interact
&lt;/pre&gt;

Bu programı aftp.exp olarak kaydedip çalıştırılabilir dosya yetkisi verelim.

&lt;pre&gt;
pismikrop@minik:~/Desktop$ ./aftp.exp ftp.linux.org.tr
spawn ftp ftp.linux.org.tr
Connected to ftp.linux.org.tr.
220 ftp.linux.org.tr
Name (ftp.linux.org.tr:pismikrop): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp&gt; ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    5 1005     1006         1024 May 26 20:56 pub
226 Directory send OK.
ftp&gt;
&lt;/pre&gt;

&lt;p&gt;Şahsen SSH ile uzaktaki sistem yedeklerini almak için key-agent kullanmaktan çok daha akıllıca bir durum. Bir expect betiği ile SSH'a bağlanıp, istediğiniz dizinleri yedek alabilirsiniz. Daha sonra ssh'dan çıkıp sftp kanalı ile kendi sisteminize aktarabilirsiniz.&lt;/p&gt;

&lt;p&gt;Böyle bir periodik işlem için Cron kullanmanıza da gerek yok. "fork" ile bir alt process oluşturup. sleep ile alt süreci istediğiniz kadar bekletebilirsiniz. Böylelikle tek bir program çalıştırarak günlük işlemlerinizi halletmiş olursunuz.&lt;/p&gt;

&lt;p&gt;Bu kadar da değil:&lt;/p&gt;

&lt;pre&gt;
set send_human {.1 .3 1 .05 2}
send -h "Çok açım yemeğe gidelim mi?\n"
&lt;/pre&gt;

&lt;p&gt;Bu ifade yazışmalarınızda; karşınızda biri klavye kullanıyormuş havası vermeye yarar. expect komutu ile karşıdaki kişiden gelen yanıta göre sohbeti dallandırabilirsiniz.&lt;/p&gt;

&lt;p&gt;Expect'in tcl ve python modülü de bulunmakta.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-225090001866133324?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/225090001866133324/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=225090001866133324&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/225090001866133324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/225090001866133324'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/07/expect.html' title='Great Expectations: Expect'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-9159886848672691599</id><published>2007-06-22T09:52:00.000+03:00</published><updated>2007-06-22T10:04:07.857+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='java 1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='generics'/><category scheme='http://www.blogger.com/atom/ns#' term='jenerik'/><title type='text'>derin generics</title><content type='html'>&lt;p&gt;Java 1.5 gelen jenerik tipler sayesinde tip dönüşümüne (casting) gerek kalmayan tip dönüşümleri yazmamız mümkün. Örneğin:&lt;/p&gt;

Java 1.4 yaklaşımı:

&lt;pre&gt;
ArrayList liste = new ArrayList();
liste.add("Örnek String");
String ornek = (String) liste.get(0);
&lt;/pre&gt;

Java 1.5 yaklaşımı:

&lt;pre&gt;
ArrayList&amp;lt;String&amp;gt; liste new ArrayList&amp;lt;String&amp;gt;();
liste.add("Örnek String");
String ornek = liste.get(0);
&lt;/pre&gt;

&lt;p&gt;Java 1.5 jenerik tipi sayesinde String açık dönüşümü (explicit conversion) yapılmamış oldu.&lt;/p&gt;

&lt;p&gt;Efendim bu da bugün yapmak zorunda kaldığım jenerik tiplerine uç bir örnek:&lt;/p&gt;

&lt;pre&gt;
private Hashtable&amp;lt;String, Hashtable&amp;lt;String, ArrayList&amp;lt;String&amp;gt;&amp;gt;&amp;gt; ipTable;
ipTable = new Hashtable&amp;lt;String, Hashtable&amp;lt;String, ArrayList&amp;lt;String&amp;gt;&amp;gt;&amp;gt;();
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-9159886848672691599?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/9159886848672691599/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=9159886848672691599&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/9159886848672691599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/9159886848672691599'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/06/derin-generics.html' title='derin generics'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-6663043602615740126</id><published>2007-06-04T23:04:00.000+03:00</published><updated>2007-06-04T23:12:40.464+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='wepy'/><category scheme='http://www.blogger.com/atom/ns#' term='javy'/><title type='text'>javy baba dedi</title><content type='html'>&lt;/p&gt;Javy programlama dili 0.1 sürümüne yaklaştı. Şu an da JavaScript ve Python karışımı özelleştirilebilir imlası ile ufak çaplı swing programları, uç birim uygulamamaları ve hatta web uygulamaları yazılmakta.&lt;/p&gt;

&lt;p&gt;Javy ile bu iletiyi yazdığım sırada bir web uygulaması yazmayı başardık. "org.javy.servlet.JavyServlet" sınıfı sayesinde dosyalar JavyInterpreter'a gönderilebilmekte. Wepy projesinin tecrübesini ve kodlarını da bu projenin web kısmına aktarmayı düşünmekteyiz.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-6663043602615740126?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/6663043602615740126/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=6663043602615740126&amp;isPopup=true' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/6663043602615740126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/6663043602615740126'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/06/javy-baba-dedi.html' title='javy baba dedi'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-231786842135016390</id><published>2007-05-04T17:32:00.000+03:00</published><updated>2007-05-04T18:02:54.334+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='planet'/><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><category scheme='http://www.blogger.com/atom/ns#' term='merge'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='pipes'/><category scheme='http://www.blogger.com/atom/ns#' term='feed'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><category scheme='http://www.blogger.com/atom/ns#' term='yeni teknoloji'/><title type='text'>kod yazmadan nasıl gezegen yapılır?</title><content type='html'>&lt;p&gt;Gezegen kavramı web 2.0 ile gelen bir kavram. Bir çok RSS çıktısını bir araya alıp görüntülemenize olanak tanıyor. Gezegen kavramının meşhur olmasını sağlayan ise hiç şüphesiz python tabanlı &lt;a href="http://www.planetplanet.org/"&gt;planet-planet&lt;/a&gt; yazılımı. Fakat biz bunu kullanmıyacağız.&lt;/p&gt;

&lt;p&gt;Öncelikle ihtiyacımız olan RSS'e ait XML dosyalarını birleştiren bir hizmet sitesi. Bunun için &lt;a href="http://www.feedblendr.com/"&gt;feedblendr&lt;/a&gt; ve &lt;a href="http://www.feedshake.com/"&gt;feedshake&lt;/a&gt; gibi siteler mevcut. Fakat son günlerin gözdesi harika araç yahoo pipes'ı öneriyorum.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://pipes.yahoo.com/pipes/"&gt;Yahoo pipes&lt;/a&gt; kullanarak sürükle bırak işleçler ve olaylar kullanarak harika XML çıktılar vedaha fazlasını alabilyorsunuz. Yahoo'nun gelişmiş ajax alt yapısını burada tam manası ile görebiliyorsunuz. Bu işlemi nasıl yapacağınızı gösteren bir video mevcut.&lt;/p&gt;

&lt;p&gt;&lt;embed src="http://web.splashcast.net/go/so/1/p/WGZW8854FL" wmode="transparent" type="application/x-shockwave-flash" height="440" width="480"&gt;&lt;/embed&gt;&lt;/p&gt;

&lt;p&gt;Pipes'tan aldığınız çıktıyı daha zenginleştirmek için &lt;a href="http://www.feedburner.com/"&gt;feedburner&lt;/a&gt;'a gönderiyoruz. Feedburner'ı esas kullanmamızın nedeni HTML çıktı sağlamamız için ufak bir javascript kodu vermesi. Feedburner'dan aldığımız javascript kodunu ise istediğiniz ücretli veya ücretsiz bir sitedeki HTML dosyasının içine yapıştırabilirsiniz.&lt;/p&gt;

&lt;p&gt;Ben &lt;a href="http://www.googlepages.com/"&gt;googlepages&lt;/a&gt; içerisinden bir layout seçip buraya yapıştırdım. Böylelikle estetik gözüken bir siteye de sahip olabiliyoruz. Eğer googlepages kullanıyor iseniz ve bir üst seviye alan adına sahipseniz. DNS ayarlarından CNAME tanımlayarak veya URL forwarding ile alan adınızı googlepages gibi bir alana yönlendirebilirsiniz.&lt;/p&gt;

Örnek çalışma: &lt;a href="http://www.kucuk.org/"&gt;kucuk.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-231786842135016390?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/231786842135016390/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=231786842135016390&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/231786842135016390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/231786842135016390'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/05/kod-yazmadan-nasl-gezegen-yaplr.htm' title='kod yazmadan nasıl gezegen yapılır?'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-3748001038711355875</id><published>2007-03-21T23:58:00.000+02:00</published><updated>2007-03-22T00:27:58.156+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='pc'/><category scheme='http://www.blogger.com/atom/ns#' term='novell'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>ben de burdayım</title><content type='html'>&lt;p&gt;Macintosh'un "hello i am a pc and i am a mac" ile başlıyan reklamlarını biliyorsunuzdur heralde. Bilmiyorsanız &lt;a href="http://www.youtube.com/results?search_query=apple+mac+pc+commercial&amp;search=Search"&gt;youtube&lt;/a&gt;'dan hemen izleyin derim. E novell de boş durmamış. Bu reklamlara linux'u da eklemiş :)&lt;/p&gt;

&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cldeHjFig_c"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/cldeHjFig_c" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;br /&gt;&lt;br /&gt;

&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GVOnFdMf0RU"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/GVOnFdMf0RU" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;ve dahasına novell'in sitesinden bakabilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.novell.com/video/"&gt;http://www.novell.com/video/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-3748001038711355875?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/3748001038711355875/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=3748001038711355875&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/3748001038711355875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/3748001038711355875'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/03/pc-mac-linux.htm' title='ben de burdayım'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-4751468575251612371</id><published>2007-03-19T12:20:00.000+02:00</published><updated>2007-05-09T17:46:02.994+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programlama dili'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='nasıl belgesi'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><category scheme='http://www.blogger.com/atom/ns#' term='javy'/><title type='text'>hesap makinesi</title><content type='html'>&lt;span style="font-weight:bold;"&gt;simple calculator language design via using antlr v3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;

&lt;p&gt;Ufak işler için ufak programlama dillerine ihtiyac duyabiliriz. Örneğin matematiksel ifadeleri resim'e dönüştüren bir dil olabilir ya da matris hesaplamaları yapan bir dil ya da belirlediğimiz özel bir metin biçeminde sorgu yapan bir dil ya da oyuncak arabamızı kontrol eden bir dil ya da siteniz için tema motoru.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.javy.org/"&gt;Javy&lt;/a&gt;'de kullandığımız antlr çözümleyici oluşturucu (parser generator) ve jline konsol paketleri ile ufak bir hesap makinesi dili yapmaya çalışalım. Bu takdirde Javy'nin temel çalışma mantığı da göstermiş olacağım.&lt;/p&gt;

&lt;p&gt;Bir betik veya uçbirim (konsol) girdisi, derleyici veya yorumlayıcı tarafında iki aşamada çözümlenir. Birinci aşama sözcük çözümleme (lexing) ikinci aşama ise sözdizim çözümlemedir (parsing). Bu çözümleme çeşitli kurallara göre yapılmalıdır. Ve bu kuralları oluşturacağımız da bir betimleme dili olmalıdır. İşte bu betimleme dili BNF'tir.&lt;/p&gt;

&lt;p&gt;Oluşturacağımız lexer ve parser kural dosyası şu şekildedir.&lt;/p&gt;

&lt;pre&gt;
grammar HesapMakinesi;

options {
    output       = AST;
    ASTLabelType = Tree;
}

// ### SOZ DIZIM COZUMLEYICI - AYRISTIRICI (PARSER) KURALLARI

basla             :    (islem (SATIR_SONU islem)* SATIR_SONU?)?           ;
// basla kurali icin gerekli olanlar
//   * Bos bir ifadeye imkan taninabilmeli. Hicbir veri girilmese de
//     soz dizim dogru olmalidir.
//   * Islem Betigin son islemi ise satir sonu gelmeyebilir. Bunun haricinde
//     her islemden sonra satir sonu gelmelidir.
//   * Iki bagimsiz islem arada islec (operator) olmadan asla arka arkaya
//     gelmemelidir.

islem             :    oncelikli_islem ((ARTI^ | EKSI^) oncelikli_islem)* ;
oncelikli_islem   :    SAYI ((CARPI^ | BOLU^) SAYI)*                      ;

// ### SOZCUK COZUMLEYICI (LEXER) KURALLARI

SATIR_SONU         :    ('\u000D' | '\u000A')                             ;
SAYI               :    RAKAM+                                            ;
ARTI               :    '+'                                               ;
EKSI               :    '-'                                               ;
CARPI              :    '*'                                               ;
BOLU               :    '/'                                               ;
BEYAZ_BOSLUKLAR    :    (' ' | '\t')+   {$channel = HIDDEN;}              ;

// ### SOZCUK COZUMLEYICI ALT PARCALARI

fragment
RAKAM              :    '0' .. '9'                                        ;
&lt;/pre&gt;

&lt;p&gt;BNF ile DFA (Deterministic Finite Automata - Belirgin Sonlu Otomat) oluşturabiliriz. Önce sözcük çözümleyicisi (lexer) için BNF kuralları oluşturalım.&lt;/p&gt;

&lt;pre&gt;
ARTI : '+';
&lt;/pre&gt;

&lt;p&gt;ARTI adlı bir sözcüğümüz (token) oldu. Bu tarayıcı sözcüğüne (token) atanan karakter ise '+'dır. Benzer şekilde diğer işleçlerimizi (operatör) de yazalım.&lt;/p&gt;

&lt;pre&gt;
EKSI : '-';
CARPI : '*';
BLU : '/';
&lt;/pre&gt;

&lt;p&gt;Bunlara ilaveten satır sonlarını gösteren de bir kural eklememiz gerekir.&lt;/p&gt;

&lt;pre&gt;
SATIR_SONU : ('\u000D' | '\u000A') ;
&lt;/pre&gt;

&lt;p&gt;SATIR_SONU sözcüğü ya 0D ya da 0A onaltılık değerlere sahip olacaktır. BNF dilinde anlaşıldığı gibi '|' düşey boru işareti yada (OR) manasına gelir.&lt;/p&gt;

&lt;p&gt;Yazdığımız bu dilde işe yaramayan boşluk karakterlerini ise aşağıdaki kural ile tanımlayalım.&lt;/p&gt;

&lt;pre&gt;
BEYAZ_BOSLUKLAR : (' ' | '\t')+ ;
&lt;/pre&gt;

&lt;p&gt;DFA'nın bir başka şekli olan Düzenli ifadeler (regular expressions) ile uğraşmış olan geliştiriciler bilirler. + işleci birden fazla tekrar manasına gelir * ise 0'dan fazla tekrar manasına gelir. Örnek kural üzerinde gösterelim.&lt;/p&gt;

&lt;pre&gt;
SAAT : 's' 'a'+ 't'
&lt;/pre&gt;

&lt;p&gt;Yukarıdaki kural 'sat', 'saat', 'saat', 'saaaaaaaaaat' ifadeleri ile eşleşecektir. Fakat 'st' ile eşleşmeyecektir. Çünkü + işleci 1 ve 1 den fazla tekrar manasına gelir. * işleci ise 0 veya daha fazla tekrar manasına geleceğinden 'st' ile de eşleşebilir.&lt;/p&gt;

&lt;pre&gt;
SAAT : 's' 'a'* 't'
&lt;/pre&gt;

&lt;p&gt;Yukarıdaki kural, 'st', 'sat', 'saat', 'saaaaaaat' gibi ifadeler ile eşleşir. Benzer şekilde BEYAZ_BOSLUKLAR sözcüğü (token) 'sekme', 'boşluk', 'sekme-boşluk', 'bosluk-sekme', 'sekme-sekme', 'sekme-sekme-sekme', 'boşluk-boşluk-sekme' gibi daha birçok eşleşmeye sahiptir. Yani betiğimizdeki tüm boşluk ifadelerini kapsar.&lt;/p&gt;

&lt;pre&gt;
RAKAM : '0' .. '9';
&lt;/pre&gt;

&lt;p&gt;RAKAM sözcüğü 0'dan 9'a kadar tüm rakamlar ile eşleşir. Yukarıda aralık belirten '..' işleci aslında birçok &lt;b&gt;veya&lt;/b&gt; işleminin kısa yoludur. Yukarıdaki kural şu şekilde de yazılabilirdi.&lt;/p&gt;

&lt;pre&gt;
RAKAM : '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
&lt;/pre&gt;

&lt;p&gt;Tüm kurallara ilaveten son sözcük çözümleyici (lexer) kuralımız ise şu şekilde olmalıdır.&lt;/p&gt;

&lt;pre&gt;
SAYI : RAKAM+;
&lt;/pre&gt;

&lt;p&gt;SAYI sözcüğü (token), bir veya birden fazla rakamın birleşmesinden oluşacaktır. '1', '12', '1000', '0122' gibi bir çok eşleşme SAYI sözcüğü ile ifade edilebilir.&lt;/p&gt;

&lt;p&gt;Örnek hesaplama ifademiz:&lt;/p&gt;
&lt;pre&gt;
1 + 56 - 31 / 89 * 21
&lt;/pre&gt;

&lt;p&gt;Bu ifadeyi söcük çözümleyici şu şekilde çözümler.&lt;/p&gt;

&lt;pre&gt;
SAYI ARTI SAYI EKSI SAYI BOLU SAYI CARPI SAYI
&lt;/pre&gt;

&lt;p&gt;Tabi şu anda yaptığımız ayrıştırıcı gerekli sözcükleri çözümlüyor. Fakat sözdizim konusunda sorunları bulunmakta örneğin:&lt;/p&gt;

&lt;pre&gt;
++4423412+++++++++++3444++--++ 14324 142314
&lt;/pre&gt;

&lt;p&gt;İfadesi de benzer şekilde ayrıştırılacaktır. Bu bağlamda söz dizim kurallarımız olması gerekir bu işlemi ise parser dediğimiz söz dizim çözümleyicisi yapacaktır. Bu kurallar sayesinde işleç öncelikleri de belirleyebiliriz.&lt;/p&gt;

&lt;p&gt;Öncelikle bir kök kuralımız olması gerekmektedir. Bu kök kural şunları gözetmeli:&lt;/p&gt;

&lt;pre&gt;
 * Boş bir ifadeye imkan tanınabilmeli. Hiçbir veri girilmese de söz dizim doğru olmalı
 * İşlem Betiğin son işlemi ise satır sonu gelmeyebilir. Bunun haricinde her işlemden sonra satır sonu gelmelidir.
 * İki bağımsız işlem arada operatör olmadan asla arka arkaya gelmemelidir.
&lt;/pre&gt;

&lt;p&gt;Bu veriler ışığın da kuralımız şu şekilde olabilir.&lt;/p&gt;

&lt;pre&gt;
basla : (islem (SATIR_SONU islem)* SATIR_SONU?)? ;
&lt;/pre&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A81MeCmETic/RkHcU-NQABI/AAAAAAAAABI/fAqmiXZbkHc/s1600-h/islem.png"&gt;&lt;img 
style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_A81MeCmETic/RkHanONQAAI/AAAAAAAAABA/TwdDec_FPts/s400/kok.png" /&gt;&lt;/a&gt;

&lt;p&gt;Kuralın DFA grafiği yukarıdaki şekilde olabilir. Kural direkt geçilebiliyor bu da demek oluyor ki boş bir ifade de kabul edilebilir. Ve bir işlem'den sonra SATIR_SONU gelebilir veya gelmeyebilir ama iki işlemden sonra arada mutlaka SATIR_SONU olmalıdır. Fakat son işlemden sonra her zaman SATIR_SONU ister konulabilir ister konulmayabilir.&lt;/p&gt;

&lt;p&gt;Yukarıdaki kurallardan sonra işlem kuralını açalım. İşlem kuralında önce bir toplama - çıkarma işlemi yapıyoruz. Böylelikle işleç önceliğini çarpma ve bölmeye vermiş oluruz.&lt;/p&gt;

&lt;p&gt;Kural şu şekilde olmalıdır.&lt;/p&gt;

&lt;pre&gt;
islem : oncelikli_islem ((ARTI | EKSI) oncelikli_islem)*;
&lt;/pre&gt;

&lt;p&gt;Bir öncelikli işlemden sonra başka bir veya birden fazla öncelikli işlem geliyor ise mutlaka ARTI veya EKSI ile birleştirilmelidir.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A81MeCmETic/RkHcU-NQABI/AAAAAAAAABI/fAqmiXZbkHc/s1600-h/islem.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_A81MeCmETic/RkHcU-NQABI/AAAAAAAAABI/fAqmiXZbkHc/s400/islem.png"  /&gt;&lt;/a&gt;

&lt;p&gt;oncelikli_islem kuralımız ise buna benzer bir ifade olacaktır.&lt;/p&gt;

&lt;pre&gt;
oncelikli_islem : SAYI ((CARPI | BOLU) SAYI)*;
&lt;/pre&gt;

&lt;p&gt;Bir sayı tek veya birden çok çarpı/bölü işleçleri ile birleştirilmiş olmalıdır.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A81MeCmETic/RkHeFeNQACI/AAAAAAAAABQ/UBziRLMjNYA/s1600-h/oncelikli.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_A81MeCmETic/RkHeFeNQACI/AAAAAAAAABQ/UBziRLMjNYA/s400/oncelikli.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5062571641730498594" /&gt;&lt;/a&gt;

&lt;p&gt;Şimdi bir örnek üzerinde kuralların kullanımınından bahsedelim.&lt;/p&gt;

&lt;pre&gt;
1 + 15 / 5 + 1 * 1
&lt;/pre&gt;

&lt;p&gt;Yukarıdaki ifadeyi sözdizimin kök kuralı olarak irdeleyelim öncelikle.&lt;/p&gt;

&lt;pre&gt;
islem
&lt;/pre&gt;

&lt;p&gt;İfade hiçbir SATIR_SONU ile ayrılmamış tek bir işlemdir. 'islem' kuralı nazarından bakarsak şöyle çözümlenecektir.&lt;/p&gt;

&lt;pre&gt;
oncelikli_islem ARTI oncelikli_islem ARTI oncelikli_islem
&lt;/pre&gt;

&lt;p&gt;Görüldüğü gibi islem ifadesi 3 farklı kola ayrıldı.&lt;/p&gt;

&lt;pre&gt;
1. işlem : 1
2. işlem : 15 / 5
3. işlem : 1 * 1
&lt;/pre&gt;

&lt;p&gt;Bu sözdizim kurallarının yanında bir de ağaç yapısı oluşturmuş olduk. Ağaç yapısı şu şekildedir.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A81MeCmETic/RkHeQeNQADI/AAAAAAAAABY/k5FGWzOjLpU/s1600-h/agac.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_A81MeCmETic/RkHeQeNQADI/AAAAAAAAABY/k5FGWzOjLpU/s400/agac.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5062571830709059634" /&gt;&lt;/a&gt;

&lt;p&gt;Bir ağaç sözdizim ayrıştırıcı ile yapılan ifadeleri irdeleyebiliriz. Örnek işlemimizin LISP stili ağaç yapısı şu şekildedir.&lt;/p&gt;

&lt;pre&gt;
(+ (+ 1 (/ 15 5)) (* 1 1))
&lt;/pre&gt;

&lt;p&gt;Böyle bir ağaç yapısını ayrıştırmamız için gelen verileri analiz edecek bir de ağaç çözümleyiciye (tree parser) ihtiyacımız bulunmaktadır. Ağaç çözümleyicinin kuralları şu şekildedir.&lt;/p&gt;

&lt;pre&gt;
tree grammar HesapMakinesiTreeParser;

options {
    tokenVocab   = HesapMakinesi;
    ASTLabelType = Tree;
}

// ### AGAC SOZ DIZIM COZUMLEYICI - AYRISTIRICI (PARSER) KURALLARI

basla
    :   a = ifade {System.out.println(a);}
    ;

ifade returns [int ifd]
    :   ^(ARTI  a = ifade b = ifade {ifd = a + b;})
    |   ^(EKSI  a = ifade b = ifade {ifd = a - b;})
    |   ^(CARPI a = ifade b = ifade {ifd = a * b;})
    |   ^(BOLU  a = ifade b = ifade {ifd = a / b;})
    |   s = SAYI {ifd = (int) new Integer(s.getText());}
    ;
&lt;/pre&gt;

&lt;p&gt;Yukarıdaki antlr tarzı BNF imlasında (+ (+ 1 (/ 15 5)) (* 1 1)) ağaç yapısı yukarıdan aşağı doğru  işletilir. Kıvrık parantezlerdeki Java kodları bir çok ifade oluşturup nihayet kök kural olan 'basla' biterken konsola bulunan ifade yazdırılır.&lt;/p&gt;

&lt;p&gt;Bu kurallar ile antlr kullanılarak 3 adet dosya elde ederiz. HesapMakinesiLexer.java,  HesapMakinesiParser.java,  HesapMakinesiTreeParser.java bu 3 sınıfı çağıran ana programımız ise şu şekilde olabilir.&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#a020f0"&gt;import&lt;/font&gt; org.antlr.runtime.*;
&lt;font color="#a020f0"&gt;import&lt;/font&gt; org.antlr.runtime.tree.*;
&lt;font color="#a020f0"&gt;import&lt;/font&gt; jline.*;

&lt;font color="#2e8b57"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt; HesapMakinesi {

    &lt;font color="#2e8b57"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt; main(String[] args) &lt;font color="#2e8b57"&gt;&lt;b&gt;throws&lt;/b&gt;&lt;/font&gt; Exception {

        ConsoleReader okuyucu = &lt;font color="#a52a2a"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; ConsoleReader();
        String satir;

        &lt;font color="#a52a2a"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/font&gt; ((satir = okuyucu.readLine(&lt;font color="#ff00ff"&gt;&amp;quot;&amp;gt;&amp;gt;&amp;gt; &amp;quot;&lt;/font&gt;)) != &lt;font color="#ff00ff"&gt;null&lt;/font&gt;) {
            CharStream                         karakter_katari      = &lt;font color="#a52a2a"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; ANTLRStringStream(satir);
            HesapMakinesiLexer                 sozcuk_cozumleyici   = &lt;font color="#a52a2a"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; HesapMakinesiLexer(karakter_katari);
            CommonTokenStream                  sozcukler            = &lt;font color="#a52a2a"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; CommonTokenStream(sozcuk_cozumleyici);
            HesapMakinesiParser                sozdizim_cozumleyici = &lt;font color="#a52a2a"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; HesapMakinesiParser(sozcukler);
            HesapMakinesiParser.basla_return   agac                 = sozdizim_cozumleyici.basla();

            &lt;font color="#0000ff"&gt;// AGAC YAPISI LISP STILI GORUNTULEMEK ICIN ASAGIDAKI IFADE KULLANILABILIR&lt;/font&gt;
            System.out.println(&lt;font color="#ff00ff"&gt;&amp;quot;agac yapısı : &amp;quot;&lt;/font&gt; + ((Tree)agac.tree).toStringTree());

            CommonTreeNodeStream               dugumler             = &lt;font color="#a52a2a"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; CommonTreeNodeStream((Tree)agac.tree);
            HesapMakinesiTreeParser            agac_cozumleyici     = &lt;font color="#a52a2a"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; HesapMakinesiTreeParser(dugumler);
            agac_cozumleyici.basla();

        }
    }
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-4751468575251612371?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/4751468575251612371/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=4751468575251612371&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/4751468575251612371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/4751468575251612371'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/03/hesap-makinesi.htm' title='hesap makinesi'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A81MeCmETic/RkHanONQAAI/AAAAAAAAABA/TwdDec_FPts/s72-c/kok.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-586166495740222335</id><published>2007-03-03T00:09:00.000+02:00</published><updated>2007-03-12T11:57:46.907+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jline'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><category scheme='http://www.blogger.com/atom/ns#' term='javy'/><title type='text'>kahve çekirdeğinin kabuğu yok mudur?</title><content type='html'>&lt;p&gt;Java Türkçe kitaplarında sıklıkla karşılaşılan bir hata vardır. Bean kelimesini fasulye diye tercüme eder çoğu kitap. Fakat bean aslında kahve çekirdeğidir. Hani öğütülünce güzel güzel kokan kahve çekirdeğidir "bean" diye bahsedilen. Bu çekirdekler gereğinde &lt;a href="http://java.sun.com/products/ejb/"&gt;Enterprise Java Beans&lt;/a&gt; olur. Gereğinde &lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt; olur.&lt;/p&gt;

&lt;p&gt;İşte birbirinden farklı kabuk şekilleri :&lt;/p&gt;

&lt;pre class="java"&gt;&lt;span style="color: rgb(161, 161, 0);"&gt;import java.io.*;&lt;/span&gt;

&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; JavaKabuk &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;


   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(153, 51, 51);"&gt;void&lt;/span&gt; main&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; args&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

       &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Java Standart Kütüphaneleri ile Basit Kabuk Oluşturma"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;

       &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;try&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;


           &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ABufferedReader+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;BufferedReader&lt;/span&gt;&lt;/a&gt; okuyucu = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ABufferedReader+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;BufferedReader&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AInputStreamReader+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;InputStreamReader&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
           &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; satir;


           &lt;span style="color: rgb(177, 177, 0);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
               &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"kabuk&amp;gt; "&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;


               &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// Mevcut satır okunuyor.&lt;/span&gt;
               satir = okuyucu.&lt;span style="color: rgb(0, 102, 0);"&gt;readLine&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;trim&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;

               &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// Okunan metin tekrar uçbirime yazıl&amp;#305;yor.&lt;/span&gt;

               &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;satir&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;

               &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// Kabuktan çıkmak için "cikis" ifadesini kullanabiliriz&lt;/span&gt;
               &lt;span style="color: rgb(177, 177, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;satir.&lt;span style="color: rgb(0, 102, 0);"&gt;equals&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"cikis"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;break&lt;/span&gt;;
           &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;


       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AIOException+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; ex&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
           &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"okuma hatası!"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ANullPointerException+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;NullPointerException&lt;/span&gt;&lt;/a&gt; ex&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

           &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// Ctrl + D gibi çık&amp;#305;&amp;#351; ifadelerini tutmak için&lt;/span&gt;
           &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// NullPointerException kullanıyoruz.&lt;/span&gt;
       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;
   &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;
&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Yukarıdaki Standart Java Kütüphanelerini kullanan kabuk kodu, basit bir komut uçbirimi sağlayacaktır. Fakat klavyedeki yön tuşlarımız satır üzerinde imleç görevi görmeyecektir. Gıpta ettiğimiz bash tarzı kabuk yaklaşımı için standart Java kütüphanelerinden daha fazlasına ihtiyacımız bulunmakta. UNIX sistemlerde çalışan çoğu kabuk, GNU Readline kütüphanesini veya BSD EditLine kütüphanesini tercih etmekteler. Bu yoğun ilgiden dolayıdır ki bu kütüphaneler bir çok programlama diline tercüme edilmiştir. &lt;a href="http://java-Readline.sourceforge.net/"&gt;Java - Readline&lt;/a&gt; kütüphanesi ise Javanın bu hazineden nasiplenmesi olabilirdi..&lt;/p&gt;

&lt;p&gt;Fakat işler sanıldığı gibi değildir. Java Readline kütüphanesi Java kadar platformlar arası geçiş esnekliğine sahip değil. Bunun en büyük nedeni ise Readline'ın &lt;a href="http://en.wikipedia.org/wiki/Java_Native_Interface"&gt;JNI&lt;/a&gt;'den dolayı platform bağımlı kodlara sahip olmasıdır. JNI'i kullanıp ta Macintosh, Windows, Linux üçlemesini destekleyen bir çok Java projesi mevcutken Java - Readline, yalnızca Linux ve Macintosh'u desteklemektedir. Hal böyle olunca da &lt;a href="http://www.jython.org/"&gt;Jython&lt;/a&gt; gibi büyük bir projede de kullanılan bu kütüphane, daha sonraları eklenti olarak kullanılmaya başlanmıştır. Java Readline, &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; gibi yeni JVM betik dillerinde de kullanım bulamamıştır.&lt;/p&gt;

&lt;p&gt;Şimdiler ise daha işlevsel bir yaklaşıma sahip Platform bağımlı (Native) öğeler içermeyen JLine daha geniş kullanım buluyor. &lt;a href="http://jline.sourceforge.net/"&gt;JLine&lt;/a&gt; sayesinde daha esnek kabuklar yapabiliriz. Basit bir JLine Kabuğu şu şekilde olabilir:&lt;/p&gt;

&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;import&lt;/span&gt; jline.&lt;span style="color: rgb(0, 102, 0);"&gt;*&lt;/span&gt;;
&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;import&lt;/span&gt; java.&lt;span style="color: rgb(0, 102, 0);"&gt;io&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;*&lt;/span&gt;;

&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; JLineKabuk &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;


   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(153, 51, 51);"&gt;void&lt;/span&gt; main&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; args&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

       &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"basit kabuk kullanım&amp;#305;"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
       &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;try&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
           ConsoleReader okuyucu = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; ConsoleReader&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;


           &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; satir;
           &lt;span style="color: rgb(177, 177, 0);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;satir = okuyucu.&lt;span style="color: rgb(0, 102, 0);"&gt;readLine&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"kabuk&amp;gt; "&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; != &lt;span style="color: rgb(177, 51, 102);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

               &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;satir&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
           &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;

       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; ex&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

           &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"okuma hatası!"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;
   &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;


&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;JLine ile artık rahatlıkla girdi yaparken ok tuşlarını, Home, Edit gibi yardımcı tuşları kullanabiliriz. Dahası kod tamamlama bile yapabiliriz. Aşağıdaki kod sayesinde yazdığımız harflerin akabinde sekme (tab) tuşu kullandığımızda "ali", "ayşe", "veli" önermeleri yapılacaktır.&lt;/p&gt;

&lt;pre class="java"&gt;&lt;span style="color: rgb(161, 161, 0);"&gt;import jline.*;&lt;/span&gt;
&lt;span style="color: rgb(161, 161, 0);"&gt;import java.io.*;&lt;/span&gt;
&lt;span style="color: rgb(161, 161, 0);"&gt;import java.util.*;&lt;/span&gt;

&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; JLineKabuk2 &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(153, 51, 51);"&gt;void&lt;/span&gt; main&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; args&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

       &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"basit kabuk kullanım&amp;#305;"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
       &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;try&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
           ConsoleReader okuyucu        = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; ConsoleReader&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
           &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AList+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;List&lt;/span&gt;&lt;/a&gt;          tamamlayicilar = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ALinkedList+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;LinkedList&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;


           tamamlayicilar.&lt;span style="color: rgb(0, 102, 0);"&gt;add&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;
               &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; SimpleCompletor&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;
                   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"ali"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"veli"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"ayse"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;

               &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;
           &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;

           okuyucu.&lt;span style="color: rgb(0, 102, 0);"&gt;addCompletor&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; ArgumentCompletor&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;tamamlayicilar&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;


           &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; satir;
           &lt;span style="color: rgb(177, 177, 0);"&gt;while&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;satir = okuyucu.&lt;span style="color: rgb(0, 102, 0);"&gt;Readline&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"kabuk&amp;gt; "&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; != &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

               &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;satir&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
           &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;

       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AIOException+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; ex&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;

           &lt;a href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: rgb(170, 170, 221); font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"okuma hatası!"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;
   &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;


&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Varın siz karar verin: "kahve çekirdeğinin kabuğu oluyor mu?" diye.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-586166495740222335?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/586166495740222335/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=586166495740222335&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/586166495740222335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/586166495740222335'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/03/kahve-ekirdeinin-kabuu-yok-mudur.htm' title='kahve çekirdeğinin kabuğu yok mudur?'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-3219660376365844013</id><published>2007-02-26T21:03:00.000+02:00</published><updated>2007-02-26T21:20:20.028+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='penguin'/><category scheme='http://www.blogger.com/atom/ns#' term='penguen'/><title type='text'>penguen</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/86/403692802_432d8e25b3.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://farm1.static.flickr.com/86/403692802_432d8e25b3.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Penguen Güvenlidir.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/154/403692804_54d5fef627.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://farm1.static.flickr.com/154/403692804_54d5fef627.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Penguen diğer işletim sistemlerine karşı asil duruşunu kaybetmez.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/183/403692786_514a566870.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://farm1.static.flickr.com/183/403692786_514a566870.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Penguen kültürlüdür.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/164/403692777_7075066fd1.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://farm1.static.flickr.com/164/403692777_7075066fd1.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Penguen teknolojinin yanındadır. (Görüldüğü üzere yanında)&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/123/403692794_713e49099a.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://farm1.static.flickr.com/123/403692794_713e49099a.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Penguen Galatasaraylıdır.&lt;/p&gt;

&lt;p&gt;Bana penguen alarak beni böyle işler yapmaya sevkeden sevgili kardeşim Boğaç'a sonsuz teşekkürler. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-3219660376365844013?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/3219660376365844013/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=3219660376365844013&amp;isPopup=true' title='4 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/3219660376365844013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/3219660376365844013'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/02/penguen.htm' title='penguen'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-761136840632486885</id><published>2007-01-29T11:41:00.000+02:00</published><updated>2007-02-07T16:46:57.817+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kullanılabilirlik'/><category scheme='http://www.blogger.com/atom/ns#' term='programlama'/><title type='text'>programlama dilleri kullanılabilirlik incelemesi</title><content type='html'>&lt;b&gt;// usability comparision for programming languages&lt;/b&gt;

&lt;p&gt;&lt;a href="http://www.javy.org/"&gt;Javy&lt;/a&gt;'nin tam imla yapısı oturmadan çeşitli kullanılabilirlik testleri ile durumu ele almak istiyorum. Bu şekilde daha kolay ve anlaşılır program geliştirme metodunu yakalayabiliriz sanırım. Bu testi yaparken sıralama algoritmalarından bubble sort algoritmasının &lt;a href="http://www.codecodex.com/wiki/index.php?title=Bubble_sort"&gt;codecodex.com&lt;/a&gt; adresindeki örnekleri üzerinde incelemeler yapmak istiyorum.&lt;/p&gt;

&lt;h3&gt;Assembly Dilinde Kabarcık Sıralama&lt;/h3&gt;
&lt;pre&gt;
bs proc array:DWORD,len:DWORD
 mov ecx,len
 mov edx,array
 bs_o:
 xor ebp,ebp
 bs_i:
 mov eax,DWORD PTR [edx+ebp*4+4]
 cmp DWORD PTR [edx+ebp*4],eax
 jb @F
 xchg eax,DWORD PTR [edx+ebp*4]
 mov DWORD PTR [edx+ebp*4+4],eax
 @@:
 add ebp,1
 cmp ebp,ecx
 jb bs_i
 loop bs_o
 pop ebp
 retn 8
bs endp
&lt;/pre&gt;

&lt;p&gt;Aslında yukarıdaki ifade tam bir assemly dili değil. Assembly derleyicisinin (Assembler), belirli bir adrese etiket atama ve offsetler üzerinde aritmetik işlemler yapabilme gibi çeşitli güzel özellikleri ile Assembly dili bir nebze olsun daha kullanıcı dostu hale getirilmiş. HLA (High Level Assembly) adındaki çeşitli projeler sayesinde Assembly dili kodları arasında if, else gibi çeşitli üst düzey ifadeler yazabilmekteyiz. Assembly makine kodlarının anlaşılabilir hale getirilmiş hali olduğu için çok yüksek hızlarda işlem yapabilmekte. Makine dili ve özellikle üst düzey hali (HLA) paylaşılmış kütüphaneler ve durağan kütüphanelerdeki API'leri kullandığı sürece uzun kodlar nispeten daha da kısaltılmış oluyor. Fakat işlemci üzerindeki kaydedicilerin varlığından bile haberdar olmayan programcılardan EAX kaydedicisinin içeriğini yığına atmalarını beklemek hem üretkenliği hem de geliştirici sayısını azaltacaktır.&lt;/p&gt;

&lt;h3&gt;C Dilinde Kabarcık Sıralama&lt;/h3&gt;
&lt;pre&gt;
void bubbleSort(int *array, int length)
{
  int i, j, temp;
  int test; /*use this only if unsure whether the list is already sorted or not*/
  for(i = length - 1; i &gt; 0; i--)
  {
    test=0;
    for(j = 0; j &lt; i; j++)
    {
      if(array[j] &gt; array[j+1]) /* compare neighboring elements */
      {
        temp = array[j];    /* swap array[j] and array[j+1] */
        array[j] = array[j+1];
        array[j+1] = temp;
        test=1;
      }
    } /*end for j*/
    if(test==0) break; /*will exit if the list is sorted!*/
  } /*end for i*/
      
}/*end bubbleSort*/
&lt;/pre&gt;

&lt;p&gt;Assembly dilini insancıl hale getiren en önemli dil hiç şüphesiz C dilidir. Statik bir dilde yani derleme işlemi yapacağımız bir dilde derleme süresinin önemi, Dinamik bir dilin çalışma süresinin önemine kıyasla daha azdır. Eğer yazdığınız bir program 15 sn'de derleniyor ve diğer programlama dillerinin çoğunun veremediği performansı veriyor ise buna katlanabiliriz. -Ki Durağan dillerde modüllere ayrılmış bir yapı ve make ya da ant gibi derleme konusundaki yardımcı araçlar sayesinde. Yalnızca üzerinde işlem yapılan modül derlenebilir. Bu da derleme süresi yavaş olan bir dilde bile harika bir süre tasarrufu demektir. Bu manada dilin imlası derleme süresini arttırsa bile önemli olan üretkenliği de arttırmasıdır.&lt;/p&gt;

&lt;p&gt;C dilinin eksilerinden biri ";"'dür. Aynı hataya düşen bir çok programlama dili mevcut. (PHP, Perl, Java, JavaScript, C# ....) Python bunu eğer aynı satırda iki farklı ifade kullanacaksanız ";" kullanabilirsiniz şeklindeki akılcıl çözümü ile ele almış. Zaten LF yada CR'ın çeşitli kombinasyonları ile satır sonu ayraçları bulunmakta. Noktalı Virgül'e bu manada gerek bulunmuyor.&lt;/p&gt;

&lt;p&gt;C'nin çok satırlı yorum ifadesi ise Python'a veya çok satırlı yorum ifadesi bulunmayan diğer dillere göre bir üstünlük diyebiliriz. Fakat Python API belgelemesi için 3 tırnak arasına istediğimiz kadar satır girmemize olanak sağlayarak bu olayı kendi meşrebince çözmüş. Yani Guido diyorki eğer çok satırlı yorum yapacaksanız; Bunu API dökümantasyonu yapın. E haklıda biraz olsun. Fakat programcı çok satırlı bir yorum ile anında bir kod bloğunu saf dışı bırakabilir. Bu da gösteriyorki yeni nesil bir dilde her ikisi de bulunmalı. Özellikle Dinamik yani devingen bir betik dil ise "#" yorum ifadesine kesinlikle sahip olmalıdır. Bu ifade betiğin UNIX sistemlerinde bash tarafından işlenebilmesine olanak tanınacaktır.&lt;/p&gt;

&lt;p&gt;Kişisel fikrim değilşken tiplerinin belirlenmesi hızlı uygulama geliştirmenin en önemli engellerinden biridir. Bir değişkenin tipinin programcı tarafından belirlenmesi derlenme süresini kısaltacaktır fakat kullanıcıya ait program kodları daha uzun bir hal alacaktır. Değişken tiplerinin belirtilmemesinin (duck typing) dezavantajı ise Java'nın sağladığı gibi bir polymorhism'e sahip olunamayacaktır. Python'da aynı isimde iki method veya işlev bu manada tanımlayamamaktayız. Bu Java gibi dillerde sanal işlev tablosu ile sağlanmakta. Bu manada bir çok biçimliliği python desteklememekte. Her iki özelliği de elde etmek için işlevlerde gerektiğinde durağan tanımlamaların da yapılabildiği dinamik bir dil tercihimdir.&lt;/p&gt;


&lt;h3&gt;PHP Dilinde Kabarcık Sıralama&lt;/h3&gt;
&lt;pre&gt;
function BubbleSort( $items ) {
    $temp = "";
    $size = count( $items );
    for( $i = 0; $i &lt; $size-1; $i++ ) {
         for( $j = 0; $j &lt; $size - 1 - $i; $j++ ) {
              if( $items[$j+1] &lt; $items[$j] ) {
                   $temp = $items[$j];
                   $items[$j] = $items[$j+1];
                   $items[$j+1] = $temp;
              }
         }
    }
}
&lt;/pre&gt;

&lt;p&gt;C hakkında olan tüm eleştirilerimiz PHP içinde geçerli tabiki :) PHP'nin ek olarak alışılmadık bir işlev sistematiği bulunmakta hemen hemen tüm işlevler hiçbir ad uzayı veya paket altında bulunmuyor. İsmini yazdığınız işlevi hemen çağırabiliyorsunuz. Hiçbir paket ya da ad uzayı (namespace) kullanılmadan işevlere direkt erişebiliyorsunuz. Fakat bu sistem, ad karmaşasını da beraberinde getiriyor. PHP'de İşlevler bir sinif içerisinde dahi değiller. Doğrudan erişim esas alınmış. Bunun için php işlevleri, konusuna göre çeşitli önekler alıyor. Mesela mysql hakkındaki bir işlev "mysql_" önekini alıyor. Bu yaklaşım yorumlayıcı hızını düşürmekte esasen ve isim kirliliğini önlemek için de zaten önekler kullanılıyor. Bu manada sinif.metod() çağırımı ile sinif_metod() çağırımı arasında kod uzunluğu bakımından pek bir fark bulunmuyor.&lt;/p&gt;

&lt;p&gt;PHP'nin perl ile benzer bir yaklaşımı daha mevcut değişken tanımlama. Değişkenlerin başına dolar ifadesi konuluyor. Bu başlangıçta bana çok saçma gelmesine karşın. Daha sonraları değişken değişkenleri görünce mantıklı gelmişti. Örneğin $a = deneme ise $$a deneme isimli bir değişkene işaret etmekte. Fakat a = "deneme" $a deneme değişkenine eşit olsaydı daha mantıklı bir yaklaşım olacaktı.&lt;/p&gt;

&lt;h3&gt;Java Dilinde Kabarcık Sıralama&lt;/h3&gt;
&lt;pre&gt;
//Sorts an integer array in ascending order.
//Notice that the array passed must not be a null reference.

//Parameters:
//   data[] - the integer array to sort

//Postcondition:
//   The array is sorted in ascending order.

public static void bubbleSort(int[] data)
{
   boolean isSorted;
   int tempVariable;
   int numberOfTimesLooped = 0;
   
   do
   {
      isSorted = true;

      for (int i = 1; i &lt; data.length - numberOfTimesLooped; i++)
      {
         if (data[i] &lt; data[i - 1])
         {
            tempVariable = data[i];
            data[i] = data[i - 1];
            data[i - 1] = tempVariable;

            isSorted = false;
         }
      }

      numberOfTimesLooped++;
   }
   while (!isSorted);
}
&lt;/pre&gt;

&lt;p&gt;C tarzı dillerin çeşitli güzellikleri de yok değil. Örneğin kıvırcık parantezler tüm programı tek satırda ifade etmemize bile olanak sağlamakta. Ayrıca ++, ! gibi operatörler ise programı oldukça kısaltmakta.&lt;/p&gt;


&lt;h3&gt;Python'da Kabarcık Sıralama&lt;/h3&gt;
&lt;pre&gt;
def bubblesort(l):
    "Sorts l in place and returns it."
    for passesLeft in range(len(l)-1, 0, -1):
        for index in range(passesLeft):
            if l[index] &lt; l[index + 1]:
               l[index], l[index + 1] = l[index + 1], l[index]
    return l
&lt;/pre&gt;

&lt;p&gt;Python harika operatörleri gereği bu işin üstesinden kolaylıkla geliyor. Fakat girintileme zorunluluğu programcıları iyi bir yöne doğrulturken bazen de yapmak istediklerinizi kısıtlayabiliyor. Bu konuda da ruby imdada yetişiyor.&lt;/p&gt;

&lt;h3&gt;Ruby'de Kabarcık Sıralama&lt;/h3&gt;
&lt;pre&gt;
def bubble_sort(list)
  list = list.clone # we should not modify original list
  for i in 0..(list.length - 1)
    for j in 0..(list.length - i - 2)
      list[j], list[j + 1] = list[j + 1], list[j] if ( list[j + 1] &lt;=&gt; list[j] ) == -1
    end
  end
  return list
end
&lt;/pre&gt;

&lt;p&gt;Ruby girintileme kaprisi olmayan nesne modelli bir dil. Ve yazdığınız kodlar son derece okunulabilir olmakta. "in" gibi Python tarzı operatörleri de oldukça işlevsel. Ama if .... end tarzı yaklaşımdan ziyade C tarzı kıvrık parantezler daha hızlı ayrıştırılabilmekte.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-761136840632486885?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/761136840632486885/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=761136840632486885&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/761136840632486885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/761136840632486885'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/01/programlama-dilleri-kullanlabilirlik.htm' title='programlama dilleri kullanılabilirlik incelemesi'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-6472223616214127180</id><published>2007-01-04T17:50:00.000+02:00</published><updated>2007-01-04T18:13:54.898+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='genel'/><category scheme='http://www.blogger.com/atom/ns#' term='programlama'/><title type='text'>şiir gibi program</title><content type='html'>&lt;blockquote&gt;
Your program should read like an essay. It should be as clear and easy to
understand as possible. Good programming style comes from experience and
practice. The style described in the following pages is the result of many years of
programming experience.
&lt;/blockquote&gt;

Evet program yazmanın tarifini böyle anlatıyor Steve Oualline.
Practical C Programming kitabında bu cümleleri görünce bir kez daha program yazmada
önemli olanın kısa ve anlaşılmaz kod yazmak olmadığını tam aksine bol yorum ifadeli, değişken
adları anlamlı, olabildiğince okunulabilir olması gerekliliğini idrak ettim.

Bilhassa açık kaynak projelerde dökümantasyon ve anlaşılır program yazma oldukça önem arzetmekte.
Örneğin:
&lt;pre&gt;
while ('\n' != (*p++ = *q++));
&lt;/pre&gt;

bu örnek ve ...

&lt;pre&gt;
while (1) {
    *destination_ptr = *source_ptr;
    if (*destination_ptr == '\n')
       break;    /* Exit the loop if at end of line */
   destination_ptr++;
   source_ptr++;
}
&lt;/pre&gt;

Ve bu örnek birbirinin aynı. Tabi ilk örnekteki programcı kendinin çok zeki olduğunu vurguluyor. Belki öyle ama ikinci örnekteki programcı yazdığı kod itibari ile programın gelişiminin önünü açmakta. Çünkü yazdığı kod daha anlaşılır ve bir hata esnasında başkaları da programa müdahale edebilir. Açık kaynakta bu demek zaten. Bu takım çalışmasını en özenli bir şekilde yapmamız gerekmekte.

Python, ruby, java, C# gibi yeni programlama dilleri, program yazarken aynı anda API dökümantasyonu oluşturmanıza imkan veriyor. Bunun yanında belirlediğiniz kod standartları da yazılım geliştirmenin olmazsa olmazlarından. Hayatımıza yeni yeni giren UML ise beklenen ilgiyi görecek mi bilmiyorum. Bunu hep birlikte göreceğiz sanırım.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-6472223616214127180?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/6472223616214127180/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=6472223616214127180&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/6472223616214127180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/6472223616214127180'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2007/01/iir-gibi-program.htm' title='şiir gibi program'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-423792172365307332</id><published>2006-12-25T14:40:00.000+02:00</published><updated>2006-12-25T15:21:17.972+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris inceleme'/><title type='text'>solaris bana çok yakışıyor :)</title><content type='html'>&lt;p&gt;Bugün &lt;a href="http://www.gnusolaris.org/"&gt;gnu/solaris nexenta'&lt;/a&gt;nın vmware player'da çalışan sürümünü indirdim. Monolithic kernel, Ubuntu depoları... itiraf edeyim ki; Linux'tan pek farkı yok. Asıl merak ettiğin Sun Java Desktop. Bakalım bir gün onu da inceleyebilecek miyim? Bu arada devlet baba bize bir tablet pc hediye etti. Allah devlete millete zeval vermesin. :) Tabi ona da linux kurup izlenimlerimi yakında aktarıcam buradan. Fakat konumuz Solaris olduğuna göre biraz daha değineyim.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/161/332655661_46c9e3736b_o.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://farm1.static.flickr.com/161/332655661_46c9e3736b_o.png" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Solaris ilk çıktığı zaman BSD türevi bir işletim sistemiydi. Daha sonraları o da büyüdü, gelişti ve her akıllı yazılım gibi kaynak kodlarını açtı. Mark shuttleworth ilk afrikalı uzay turisti (Bizim Turist Ömerimiz var o ayrı.) ve ubuntu'nun babası nihayet bu işe de el attı ve evrensel işletim sistemi Debian'ın çoktan yapması gereken şeyi yaptı; Gnu/Solaris. Tabi bunu RMS okusaydı. O tüy yumağı sakallarının altından pis pis sırıtırdı. RMS'i takip edenler bilirler her fırsatta Gnu/Linux demekten bıkmaz. Belki de doğrusu da odur. Fakat RMS'in yeni zevki Gnu/Solaris demek. E ne dielim yakında Gnu/Hurd'ü de görürüz inşallah.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-423792172365307332?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/423792172365307332/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=423792172365307332&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/423792172365307332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/423792172365307332'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/12/solaris-bana-ok-yakyor.htm' title='solaris bana çok yakışıyor :)'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-544907291769683743</id><published>2006-12-15T11:29:00.000+02:00</published><updated>2006-12-15T11:52:10.071+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='görüş'/><title type='text'>teşekkürler netbeans</title><content type='html'>&lt;p&gt;Java IDE arama maceramda geriye dönüş sinyalleri alıyorum. :) Yaklaşık 2-3 aydır &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ IDEA&lt;/a&gt;'yı açık kaynak lisansı altında kullanıyordum. Bütünleşik JavaScript işlemesi ve harika kod dedektifi (Inspector) ile en gözde IDE'lerimden biri olmuştu. Fakat IntelliJIDEA'nın en büyük eksisi kullanıcı dostu olmamasıydı. Ayrıca yeterince hızlı uygulama geliştiremiyordum. &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;'te de bunu seziyorum. Açılır açılmaz size bir çalışma alanı sunuyor ki çalışacak yer kalmamış. Tamam tüm özelliklerini göstereceksin yaptığın yazılımın ama bukadar da değil :) Programcıyı korkutmamalı belki de :)&lt;/p&gt;

&lt;p&gt;Netbeans 5.5 Visual Web Paketini inceledim. MS Visual Studio'daki sürükle bırak web uygulaması geliştirme Netbeans'te oldukça ileriye bir noktaya gelmiş. Tema desteği ile JSF, JSTL desteği bir harika ve bütünleşik tomcat ile çalıştırır çalıştırmaz uygulama çıktısı alabiliyorsunuz. RAD (Rapid Application Development) hızlı uygulama geliştirme acımasız kapitalizmin bir gereği ve Netbeans minimalist yaklaşımı ile bunu sağlıyor. Sekmeler, VeriIzgaraları bir çok nesne kullanımımızı bekliyor.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-544907291769683743?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/544907291769683743/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=544907291769683743&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/544907291769683743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/544907291769683743'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/12/teekkrler-netbeans.htm' title='teşekkürler netbeans'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-116608780629938538</id><published>2006-12-14T10:59:00.000+02:00</published><updated>2006-12-14T16:43:35.725+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='yeni teknoloji'/><title type='text'>adobe apollo</title><content type='html'>&lt;p&gt;Macromedia'ı kendi saflarına alan &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt;'dan geleceğe dair iddialı planlar duymaya başladık. &lt;a href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;Adobe Apollo&lt;/a&gt;'da bunlardan biri. Günümüz programlama dillerinin yükselen değeri çalışma zamanı motorlarının (runtime engine) her geçen gün sayısı artıyor. Python, Ruby, Java, ParrotCode, MSIL (.NET) ve daha bir çoğu... Apollo'da bakalım bunların arasında yer bulabilecek mi?&lt;/p&gt;

&lt;p&gt;Apollo ilk sürümünde Windows ve MacOS'u destekliyor. Ardından diğer platformları da hedeflediklerini belirtiyorlar. Fakat ücretsiz olacak bu sürümü (free as in beer) olarak nitelendirdiklerinden dolayı özgür yazılım olmayacağını anlıyoruz. Ajax, flash gibi teknolojileri masaüstüne indirecek bu çalışmazamanı motoru. Yakın gelecekte masaüstlerimizin daha renkli bir hal alacağının göstergesi.&lt;/p&gt;

&lt;p&gt;Belki adobe uygulamalarının linux'a da aktarılacağının bir habercisi olabilir. Buna karşın öngörüm &lt;a href="http://www.mtasc.org/"&gt;mtasc&lt;/a&gt;, &lt;a href="http://haxe.org/"&gt;haxe&lt;/a&gt;, &lt;a href="http://www.osflash.org/swfmill"&gt;swfmill&lt;/a&gt; gibi özgür yazılım flash cephesi bu konuda bir adım atacak ya freeapollo ya da benzer bir proje ile bu projeyi özgürleştireceklerdir.&lt;/p&gt;

&lt;p&gt;Bunun yanında kısmi Novell ve MS evliliğinin WindowsForms'a sahip Monosu, GPL Java ve zaten açık kaynak olan Ruby, Python ve ParrotCode'a karşı Adobe'un yanlış bir politika izlediğini söyleyebilirim. Artık akıllı geliştiriciler ücretsiz API yerine özgür API'leri tercih ediyorlar. Google'ın Maps API'si ve GWT'si gibi Yahoo'nun BSD lisansına sahip YUI'si bunların en önemli göstergesi.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-116608780629938538?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/116608780629938538/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=116608780629938538&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116608780629938538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116608780629938538'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/12/adobe-apollo.htm' title='adobe apollo'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-116498879689164882</id><published>2006-12-01T17:57:00.000+02:00</published><updated>2006-12-01T17:59:56.903+02:00</updated><title type='text'>yalnızca dizin kipini değiştirme</title><content type='html'>&lt;p&gt;Oturup bir python programı yazdığım öz yinelemeli dizin kip değiştirme yöntemini bir arkadaş tek satıra indirgemiş. Ee bize de kullanmak kalıyor tabi :)&lt;/p&gt;

dizinler için:
&lt;pre&gt;
find . -type d -exec chmod 755 {} \;
&lt;/pre&gt;

dosyalar için:
&lt;pre&gt;
find . -type f -exec chmod 644 {} \;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-116498879689164882?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/116498879689164882/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=116498879689164882&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116498879689164882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116498879689164882'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/12/yalnzca-dizin-kipini-deitirme.htm' title='yalnızca dizin kipini değiştirme'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-116427243612525611</id><published>2006-11-23T10:20:00.000+02:00</published><updated>2006-11-27T18:12:04.743+02:00</updated><title type='text'>jsp'de ön bellek kullanımı</title><content type='html'>&lt;p&gt;&lt;a href="http://java.sun.com/products/jsp/"&gt;JSP&lt;/a&gt;, &lt;a href="http://java.sun.com/products/jsp/jstl/"&gt;JSTL&lt;/a&gt;, &lt;a href="http://java.sun.com/javaee/javaserverfaces/"&gt;JSF&lt;/a&gt;, &lt;a href="http://myfaces.apache.org/"&gt;MyFaces&lt;/a&gt; gibi üst düzey java web tabanlı geliştirme teknolojileri kullanıyorsunuz. Fakat açılışı yaklaşık 10 sn süren uygulamanıza bir önbellek (caching) mekanizması eklemek için &lt;a href="http://www.stringtemplate.org/"&gt;StringTemplate&lt;/a&gt; veya &lt;a href="http://jakarta.apache.org/velocity/"&gt;Velocity&lt;/a&gt; gibi şablon teknolojilerine yöneliyorsanız; bir de bu metodu deneyin.&lt;/p&gt;

&lt;p&gt;Her zaman harika java makaleleri ile öne çıkan &lt;a href="http://www.onjava.com/"&gt;OnJava.com&lt;/a&gt; editörleri bu işe de el atmışlar sonunda. Bu teknolojiyi araştırırken aynı sitede Andrei CIOROIANU'ya ait &lt;a href="http://www.onjava.com/pub/a/onjava/2005/01/05/jspcache.html"&gt;Caching Dynamic Content with JSP 2.0&lt;/a&gt; adlı makaleyi gördüm.&lt;/p&gt;

&lt;p&gt;Malumunuz JSP &lt;a href="http://tomcat.apache.org/"&gt;Tomcat Catalina&lt;/a&gt; sunucu tarafından jasper adlı bütünleşik motor sayesinde bir servlet'e dönüştürülmektedir. Önbelleğe alma ise en çok kullanılan web tabanlı optimizasyon tekniğidir. Bu tekniği veri önbellekleme (data caching) ve içerik önbellekleme (content caching) olarak ayırabiliriz. Single Thread Model (Tek parçalı model) çalışan web uygulamaları genelde önbellekleme sistemini kullanırken veritabanına veya durağan sayfalara depolayarak bir sonraki çalışmayı daha hızlı hale getirmekte. Fakat Multithread (Çok Parçalı) modelde çalışan bir sistemde içerik hafıza üzerindeki bir değişkene atanarak daha hızlı çağrılması hedeflenebilir. Böylelikle ek bir SQL sistemine veya durağan sayfa çıkartım işlemine gerek kalmadan basit bir JSTL etiketi ile bu olayın üstesinden gelinebilir.&lt;/p&gt;

&lt;pre&gt;
&amp;lt;jc:cache id="cachedFragmentWithCounter"&amp;gt;
    ... &amp;lt;jc:dynamic expr="sessionScope.counter"/&amp;gt; ...
&amp;lt;/jc:cache&amp;gt;
&lt;/pre&gt;

&lt;p&gt;OnJava.com'a ait makaleden başka çözümlerde bulunmakta. Açık kaynak bir proje olan &lt;a href="http://www.opensymphony.com/oscache/"&gt;OsCache&lt;/a&gt;, oldukça gelişmiş bir önbellekleme mekanizması sunuyor. OsCache'de benzer JSTL etiketleri ile kolayca önbellekleme sunmakta.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-116427243612525611?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/116427243612525611/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=116427243612525611&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116427243612525611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116427243612525611'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/11/jspde-n-bellek-kullanm.htm' title='jsp&apos;de ön bellek kullanımı'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-116351740359191443</id><published>2006-11-14T17:04:00.000+02:00</published><updated>2006-11-14T17:18:38.263+02:00</updated><title type='text'>javy emekliyor :)</title><content type='html'>&lt;p&gt;Evet güzel bir şey oldu! &lt;a href="http://www.javy.org/"&gt;javy&lt;/a&gt; ile çalışma zamanında bir frame oluşturmayı başardım. Casting probleminin üstesinden gelirsem daha karmaşık swing formlarını yapabileceğiz.&lt;/p&gt;

&lt;p&gt;Şu anda javy'nin bir çok bug'ı var. Hatta bir çoktan daha çok ama ilerisi için bu bir umut oldu.&lt;/p&gt;

&lt;pre&gt;
frame = getClass("javax.swing.JFrame").newInstance()
frame.setTitle("i love javy")
frame.show()
&lt;/pre&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://penguenyuvasi.org/uploaded_images/i_love_javy.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://penguenyuvasi.org/uploaded_images/i_love_javy.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-116351740359191443?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/116351740359191443/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=116351740359191443&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116351740359191443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116351740359191443'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/11/javy-emekliyor.htm' title='javy emekliyor :)'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-116239055444981674</id><published>2006-11-01T15:45:00.000+02:00</published><updated>2006-11-02T10:29:45.186+02:00</updated><title type='text'>bash için çok renkli girdi alanı</title><content type='html'>&lt;p&gt;Bash kullanan sevgili penguenler, işte renkli renkli bash girdi alanları :)&lt;/p&gt;

&lt;p&gt;normal kullanıcılar için .bashrc dosyanızdaki&lt;/p&gt;

&lt;pre&gt;
# Comment in the above and uncomment this below for a color prompt
&lt;/pre&gt;

&lt;p&gt;yazan yorum alanının hemen altındaki PS1 değişkenini normal kullanıcılar için:&lt;/p&gt;

&lt;pre&gt;
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u\[\033[1;37m\]@\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;33m\]\w\[\033[00m\]\$ '
&lt;/pre&gt;

&lt;pre style="background-color: #222222;"&gt;
&lt;b&gt;&lt;font color="blue"&gt;pismikrop&lt;/font&gt;&lt;font color="#FFFFFF"&gt;@&lt;/font&gt;&lt;font color="#FF0000"&gt;kirmizi&lt;/font&gt;&lt;font color="#FFFFFF"&gt;:&lt;/font&gt;&lt;font color="yellow"&gt;~&lt;/font&gt;&lt;font color="#FFFFFF"&gt;$&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;

&lt;p&gt;root kullanıcıları için ise&lt;/p&gt;

&lt;pre&gt;
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;33m\]\w\[\033[00m\]\$ '
&lt;/pre&gt;

&lt;pre style="background-color: #222222;"&gt;
&lt;b&gt;&lt;font color="#FF0000"&gt;kirmizi&lt;/font&gt;&lt;font color="#FFFFFF"&gt;:&lt;/font&gt;&lt;font color="yellow"&gt;~&lt;/font&gt;&lt;font color="#FFFFFF"&gt;#&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;

&lt;p&gt;yapabiliriz. Bash kabuğu "yeme de yanında yat" oldu. Siz yiyin ama "kabukları yerlere atmayın.".&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-116239055444981674?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/116239055444981674/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=116239055444981674&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116239055444981674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116239055444981674'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/11/bash-iin-ok-renkli-girdi-alan.htm' title='bash için çok renkli girdi alanı'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-116098704502815381</id><published>2006-10-16T11:04:00.000+03:00</published><updated>2006-10-16T11:40:50.793+03:00</updated><title type='text'>eğlencelik programlar</title><content type='html'>&lt;p&gt;Nihayet &lt;a href="http://www.javy.org/"&gt;Javy&lt;/a&gt;'den sıkılıdığım zamanlarda boş zamanlarımı değerlendirecek bir uğraş buldum. Yazılımcılar (oluyorsa)? boş zamanlarını değerlendirmek için yine boş olmayan zamanlarda yaptıkları şeyleri yapıyorlar. :) İşte ben de öyle yaptım. Yapmazsam gözüm açık giderdi.&lt;/p&gt;

&lt;p&gt;Ben de milli oldum artık. Sonunda &lt;a href="http://www.netbeans.org/"&gt;Netbeans 5.5 RC2&lt;/a&gt; ile mobility pack kullanarak bir midlet yazdım. Yani nam-ı diğer cep telofonu yazılımı işte ..&lt;/p&gt;

&lt;pre&gt;
&lt;font color="0000ff"&gt;&lt;strong&gt;import javax.microedition.midlet.*;&lt;/strong&gt;&lt;/font&gt;
&lt;font color="0000ff"&gt;&lt;strong&gt;import javax.microedition.lcdui.*;&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;HelloWorld&lt;/font&gt; &lt;strong&gt;extends&lt;/strong&gt; &lt;font color="#2040a0"&gt;MIDlet&lt;/font&gt; &lt;strong&gt;implements&lt;/strong&gt; &lt;font color="#2040a0"&gt;CommandListener&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;strong&gt;private&lt;/strong&gt; &lt;font color="#2040a0"&gt;Command&lt;/font&gt; &lt;font color="#2040a0"&gt;exitCommand&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;strong&gt;private&lt;/strong&gt; &lt;font color="#2040a0"&gt;TextBox&lt;/font&gt; &lt;font color="#2040a0"&gt;tbox&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;HelloWorld&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;exitCommand&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Command&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;Exit&amp;quot;&lt;/font&gt;, &lt;font color="#2040a0"&gt;Command&lt;/font&gt;.&lt;font color="#2040a0"&gt;EXIT&lt;/font&gt;, &lt;font color="#FF0000"&gt;1&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;tbox&lt;/font&gt;        &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;TextBox&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;Hello world MIDlet&amp;quot;&lt;/font&gt;, &lt;font color="#008000"&gt;&amp;quot;Yapmazsam Gozum Acik Giderdi!&amp;quot;&lt;/font&gt;, &lt;font color="#FF0000"&gt;50&lt;/font&gt;, &lt;font color="#FF0000"&gt;0&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;tbox&lt;/font&gt;.&lt;font color="#2040a0"&gt;addCommand&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;exitCommand&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;tbox&lt;/font&gt;.&lt;font color="#2040a0"&gt;setCommandListener&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;this&lt;/strong&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;protected&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;startApp&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Display&lt;/font&gt;.&lt;font color="#2040a0"&gt;getDisplay&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;this&lt;/strong&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color="#2040a0"&gt;setCurrent&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;tbox&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;commandAction&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;Command&lt;/font&gt; &lt;font color="#2040a0"&gt;cmd&lt;/font&gt;, &lt;font color="#2040a0"&gt;Displayable&lt;/font&gt; &lt;font color="#2040a0"&gt;disp&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;strong&gt;if&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;cmd&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt;&lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;exitCommand&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;destroyApp&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;notifyDestroyed&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Bu ufacık tefecik, insanlık için küçük benim için büyük yazılımcık çıktısı emulatör ile şu şekilde gözükmekte:&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.penguenyuvasi.org/uploaded_images/mobility_hello.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://www.penguenyuvasi.org/uploaded_images/mobility_hello.png" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Netbeans mobility pack'in "Screen Designer" ve "Flow Designer" adı altında iki harika da aracı bulunuyor. Screen Designer bildiğimiz Form tasarlama aracı. Harika nesnelerin yanında Vektör grafiklerde forma ekleyebiliyorsunuz. Sun Studio'daki UML designer'a benzeyen bir akış diagramı düzenleyici de mobil uygulamalar için bulunmakta. Bu araçlar sayesinde Mobil uygulamalar yazarken, bir IDE'nin tüm avantajlarından faydalanabiliyorsunuz.&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.penguenyuvasi.org/uploaded_images/mobility_pack.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://www.penguenyuvasi.org/uploaded_images/mobility_pack.png" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Hadi şimdi daha büyüklerini yazalım :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-116098704502815381?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/116098704502815381/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=116098704502815381&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116098704502815381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/116098704502815381'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/10/elencelik-programlar.htm' title='eğlencelik programlar'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115977371262043266</id><published>2006-10-02T10:04:00.000+03:00</published><updated>2006-10-02T10:21:52.633+03:00</updated><title type='text'>cafe babe</title><content type='html'>&lt;p&gt;Sizi bilmem ama ben bu cafe'yi yeni öğrendim.&lt;/p&gt;

&lt;p&gt;java'da bytecode araştırması yaparken karşılaştım bu cafe ile. Bildiğiniz üzere hemen hemen her dosya biçeminin kendine has bir &lt;a href="http://en.wikipedia.org/wiki/Magic_number_%28programming%29"&gt;sihirli başlangıç katarı&lt;/a&gt;'ı vardır. İşte .class dosyasını hexadecimal editör ile açtığımda bu yazı ile karşılaştım. Başka .class dosyalarına da baktığımda sonuç aynıydı :)&lt;/p&gt;

&lt;pre&gt;
hd Example.class | head -n 1
00000000  &lt;font color="red"&gt;ca fe ba be&lt;/font&gt; 00 00 00 31  00 0f 0a 00 05 00 0c 06  |.......1........|
&lt;/pre&gt;

&lt;p&gt;Ve biraz araştırma ile sizin için seçtiğim güzel sihirli başlangıç katarları.&lt;/p&gt;

&lt;pre&gt;
0xFEEDFACE            Power-PC Mach-O ikilik dosya formatı
0xFEE1DEAD            Linux yeniden başlatma sistem çağrısı
0xBADBADBADBAD B6700  "uninitialized" başlatılmamış hafıza (48-bit words)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115977371262043266?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115977371262043266/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115977371262043266&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115977371262043266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115977371262043266'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/10/cafe-babe.htm' title='cafe babe'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115891685400540381</id><published>2006-09-22T11:54:00.000+03:00</published><updated>2006-09-22T14:36:04.186+03:00</updated><title type='text'>java'da devingen tip değişimi</title><content type='html'>&lt;b&gt;Dynamic type casting with dynamic method invocation&lt;/b&gt;

&lt;p&gt;&lt;a href="http://www.javy.org/"&gt;Javy&lt;/a&gt; için iki gündür uğraştığım; saçlarımın döküldüğü hususu sonunda netliğe kavuşturdum. &lt;a href="http://www.2nci.com/"&gt;Yılmaz&lt;/a&gt;'ın ve &lt;a href="http://blog.cafer.org/"&gt;Cafer&lt;/a&gt;'in başını oldukça ağrıttım ama sonunda çözdük. Üstad cafer, &lt;a href="http://www.kayyo.net/"&gt;kayyo.net&lt;/a&gt;'e yapılan DoS saldırısını defetmekle uğraşıordu. Multithread (Çok kanallı) çalışan sevgili arkadaşım okadar işine rağmen yardım etmeye çalıştı teşekkür ediyorum kendisine :)&lt;/p&gt;

&lt;p&gt;Lakin jenerik tip tanımı yapamadığımdan ve durağan tip değişimi de (static casting / Explicit type conversion) yapamadığımdan dolayı (kullandığım lexer buna imkan vermiyordu.) işler baya sıkıntıya girdi. Aslında Java'yı yapan amcamlar. İşleri biraz yokuşa sürmüş. Mesela;&lt;/p&gt;

&lt;pre&gt;
&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;Deneme&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Object&lt;/font&gt;  &lt;font color="#2040a0"&gt;A&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#FF0000"&gt;45&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Integer&lt;/font&gt; &lt;font color="#2040a0"&gt;B&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;A&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Bu bir durağan tip değiştirme örneği fakat A'nesnesi Object olarak bir işlevden dönüyor ve A'nın Integer'mı String'mi olduğunu bilmiyorsak ne yapmamız gerekiyor? Örnek bir deneme yapalım;&lt;p&gt;

&lt;pre&gt;
&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;Deneme&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Object&lt;/font&gt;  &lt;font color="#2040a0"&gt;A&lt;/font&gt;        &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#FF0000"&gt;45&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

        &lt;font color="#444444"&gt;// A'nın hangi sınıfın örneklendirilmiş nesnesi olduğunu&lt;/font&gt;
        &lt;font color="#444444"&gt;// bilmediğimizi fazedelim. &lt;/font&gt;
        &lt;font color="#444444"&gt;// A'ya ait sınıfı A.getClass() ile çalışma zamanında alıp&lt;/font&gt;
  
        &lt;font color="#2040a0"&gt;Class&lt;/font&gt;  &lt;font color="#2040a0"&gt;className&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;A&lt;/font&gt;.&lt;font color="#2040a0"&gt;getClass&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Integer&lt;/font&gt; &lt;font color="#2040a0"&gt;B&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;className&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;A&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

        &lt;font color="#444444"&gt;// Devingen tip değiştirimi yapmasını beklerdim. Ama olmadı :(&lt;/font&gt;

    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Yukarıdaki kod PHP veya Python gibi esnek bir dil kullansaydınız çalışabilirdi. Ama Java affetmez. className adında bir sınıf olmadığından dolayı. Kodumuz çalışmayacaktır. Uzun araştırmalar sonucunda L'oreal laboratuarları nutri seranidli şampuan yaparken biz de boş durmadık tabi. Devingen metod çağırımı sayesinde bu işi yapacağımızı düşündük;&lt;/p&gt;

&lt;pre&gt;

&lt;font color="0000ff"&gt;&lt;strong&gt;import java.lang.reflect.*;&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;DynamicCasting&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

        &lt;font color="#2040a0"&gt;DynamicCasting&lt;/font&gt; &lt;font color="#2040a0"&gt;d&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;DynamicCasting&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Object&lt;/font&gt;         &lt;font color="#2040a0"&gt;a&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;d&lt;/font&gt;.&lt;font color="#2040a0"&gt;literal&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;String&amp;quot;&lt;/font&gt;, &lt;font color="#008000"&gt;&amp;quot;4&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Object&lt;/font&gt;         &lt;font color="#2040a0"&gt;b&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;d&lt;/font&gt;.&lt;font color="#2040a0"&gt;literal&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;String&amp;quot;&lt;/font&gt;, &lt;font color="#008000"&gt;&amp;quot;5&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;


        &lt;font color="#444444"&gt;// dynamic casting&lt;/font&gt;

        &lt;font color="#2040a0"&gt;String&lt;/font&gt;    &lt;font color="#2040a0"&gt;result&lt;/font&gt;         &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;null&lt;/strong&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Class&lt;/font&gt;     &lt;font color="#2040a0"&gt;c&lt;/font&gt;              &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;DynamicCasting&lt;/font&gt;.&lt;strong&gt;class&lt;/strong&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Class&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;   &lt;font color="#2040a0"&gt;parameterTypes&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Class&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;a&lt;/font&gt;.&lt;font color="#2040a0"&gt;getClass&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;, &lt;font color="#2040a0"&gt;b&lt;/font&gt;.&lt;font color="#2040a0"&gt;getClass&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Method&lt;/font&gt;    &lt;font color="#2040a0"&gt;plusMethod&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;Object&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;  &lt;font color="#2040a0"&gt;arguments&lt;/font&gt;      &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Object&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;a&lt;/font&gt;, &lt;font color="#2040a0"&gt;b&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

        &lt;strong&gt;try&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;plusMethod&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;c&lt;/font&gt;.&lt;font color="#2040a0"&gt;getMethod&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;plus&amp;quot;&lt;/font&gt;, &lt;font color="#2040a0"&gt;parameterTypes&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;plusMethod&lt;/font&gt;.&lt;font color="#2040a0"&gt;invoke&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;d&lt;/font&gt;, &lt;font color="#2040a0"&gt;arguments&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;NoSuchMethodException&lt;/font&gt; &lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;IllegalAccessException&lt;/font&gt; &lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;InvocationTargetException&lt;/font&gt; &lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;catch&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;IllegalArgumentException&lt;/font&gt; &lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;e&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;Object&lt;/font&gt; &lt;font color="#2040a0"&gt;literal&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;t&lt;/font&gt;, &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;v&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

        &lt;strong&gt;if&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;t&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt;&lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot;Byte&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;Byte&lt;/font&gt;.&lt;font color="#2040a0"&gt;valueOf&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;v&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;else&lt;/strong&gt; &lt;strong&gt;if&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;t&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt;&lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot;Short&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;Short&lt;/font&gt;.&lt;font color="#2040a0"&gt;valueOf&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;v&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;else&lt;/strong&gt; &lt;strong&gt;if&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;t&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt;&lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot;Long&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;Long&lt;/font&gt;.&lt;font color="#2040a0"&gt;valueOf&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;v&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;else&lt;/strong&gt; &lt;strong&gt;if&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;t&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt;&lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot;Integer&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
            &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;.&lt;font color="#2040a0"&gt;valueOf&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;v&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;else&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt; &lt;font color="#444444"&gt;// String&lt;/font&gt;
            &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;v&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;


    &lt;font color="#444444"&gt;// polymorphism yapılacak&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt; &lt;font color="#2040a0"&gt;plus&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;Integer&lt;/font&gt; &lt;font color="#2040a0"&gt;a&lt;/font&gt;, &lt;font color="#2040a0"&gt;Integer&lt;/font&gt; &lt;font color="#2040a0"&gt;b&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;strong&gt;return&lt;/strong&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;Integer&lt;/font&gt;.&lt;font color="#2040a0"&gt;valueOf&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;a&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;+&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;.&lt;font color="#2040a0"&gt;valueOf&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;b&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;plus&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;a&lt;/font&gt;, &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;b&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;a&lt;/font&gt; &lt;font color="4444FF"&gt;+&lt;/font&gt; &lt;font color="#2040a0"&gt;b&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;


&lt;/pre&gt;

&lt;p&gt;Yukarıdaki kod kendi sınıfına ait plus metodunu polymorphism kullanarak seçiyor. Fakat bunun için Object tanımından kurtulup String veya Integer olmaları gerekli. Ama bu çevrime gerek duymadan invoke metodunun nev-i şahsına münhasır yapısı sayesinde Object dizisi olarak parametre yolluyoruz. Umarım merak edenlerin işine yaramıştır. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115891685400540381?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115891685400540381/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115891685400540381&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115891685400540381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115891685400540381'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/09/javada-devingen-tip-deiimi.htm' title='java&apos;da devingen tip değişimi'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115804392576235595</id><published>2006-09-12T09:18:00.000+03:00</published><updated>2006-09-12T09:59:48.386+03:00</updated><title type='text'>bir programlama dili ne kadar karmaşık olabilir ki?</title><content type='html'>&lt;p&gt;ANTLR'ı yazan çılgın profösör &lt;a href="http://www.cs.usfca.edu/~parrt/"&gt;Terrence PARR&lt;/a&gt;'ın ANTLRWORKS adlı yazılımını kurcalarken Java'nın &lt;a href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form"&gt;BNF&lt;/a&gt; söz dizim kurallarını grafiğe dönüştürmek aklıma geldi. Gözüm korktu mu? Galiba korktu :)&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.penguenyuvasi.org/uploaded_images/java_rule_dependency.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://www.penguenyuvasi.org/uploaded_images/java_rule_dependency.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115804392576235595?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115804392576235595/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115804392576235595&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115804392576235595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115804392576235595'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/09/bir-programlama-dili-ne-kadar-karmak.htm' title='bir programlama dili ne kadar karmaşık olabilir ki?'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115754067218545892</id><published>2006-09-06T13:37:00.000+03:00</published><updated>2006-09-06T14:45:11.240+03:00</updated><title type='text'>sütlü kahve</title><content type='html'>&lt;div align="center"&gt;
 &lt;img alt="javy programming language" src="http://www.javy.org/img/javy_logo.png" /&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://www.javy.org/"&gt;Javy&lt;/a&gt;, nam-ı diğer sütlü kahve eski adıyla ise c-star!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.javy.org/"&gt;Javy Projesi&lt;/a&gt;, Java platformunda daha kolay öğrenebilen daha az kod ile daha çok iş yapabilen bir dil olmayı hedefliyor. Benzer amaçla daha önceden yola çıkmış olan &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; projesi bulunmakta. Fakat Groovy'nin benzer projelerden farklılığı lexer ve parserının el ile yazılmış olması. &lt;a href=""&gt;Javy&lt;/a&gt;'nin kodlamasına başlarken, &lt;a href="http://www.jython.org/"&gt;Jython&lt;/a&gt; projesinde kullanılan &lt;a href="https://javacc.dev.java.net/"&gt;JavaCC&lt;/a&gt; ile &lt;a href="http://boo.codehaus.org/"&gt;Boo&lt;/a&gt; projesinde kullanılan &lt;a href="http://www.antlr.org/"&gt;Antlr&lt;/a&gt; arasında kararsız kaldık! JavaCC'ın çalışma zamanı bağımlılığı bulunmaması en büyük artısı fakat Antlr'ın 3 defa baştan yazılmış olması ve &lt;a href="http://www.antlr.org/works/"&gt;ANTLRWorks&lt;/a&gt; gibi harika araçlar ile bezenmesi kalbimizi fethetmeye yetti. :)&lt;/p&gt;

&lt;p&gt;Bu projeye başlarken ben &lt;a href="http://www.mikropyuvasi.org/"&gt;Fırat KÜÇÜK&lt;/a&gt;, saz arkadaşlarım &lt;a href="http://www.2nci.com/"&gt;Yılmaz UĞURLU&lt;/a&gt; ve &lt;a href="http://www.cafer.org/"&gt;Cafer ŞİMŞEK&lt;/a&gt;'i sürekli rahatsız etmeye devam ediyorum. :) Bu güzide arkadaşların yanında eskiden c-star projesinden desteklerini esirgemeyen sevgili kardeşim &lt;a href="http://ean.btturk.net"&gt;Ersin ARSLAN&lt;/a&gt;'a da teşekkür ederim.&lt;/p&gt;

&lt;p&gt;Evet, sütlü kahve pişmeye başlıyor. Herkesin desteklerini bekliyoruz. En azından yeni bir dilde bulunmasını istediğiniz özellikleri bize iletebilirsiniz.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115754067218545892?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115754067218545892/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115754067218545892&amp;isPopup=true' title='5 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115754067218545892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115754067218545892'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/09/stl-kahve.htm' title='sütlü kahve'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115458606108843992</id><published>2006-08-03T09:20:00.000+03:00</published><updated>2006-08-03T09:21:26.660+03:00</updated><title type='text'>XGL büyüyor ...</title><content type='html'>&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-3085800747013767131&amp;hl=en"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115458606108843992?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115458606108843992/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115458606108843992&amp;isPopup=true' title='3 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115458606108843992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115458606108843992'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/08/xgl-byyor.htm' title='XGL büyüyor ...'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115443363379746906</id><published>2006-08-01T14:45:00.000+03:00</published><updated>2006-08-01T15:00:33.816+03:00</updated><title type='text'>Viki çıldırınca</title><content type='html'>&lt;p&gt;Will Smith ve Bridget Moynahan'ın baş rolünü paylaştığı orjinal isimi I, Robot olan filmi geçen gün izlediğimde bir şeye dikkat ettim. Film'in sonunu bilmeyenler daha fazla okumasın :)&lt;/p&gt;

&lt;p&gt;Filmdeki insanların kendi kendilerine zarar verdiğini düşünüp. Hakimiyeti eline alan evrensel bilgi bankasının adı VIKI. Virtual Interactive Kinetic Intelligence'ın kısaltması olan hayal gücünün  son noktasındaki bu mainframe bilgisayarı öldürmenin yolu ise Nanite adı verilen nanorobotic teknoloji ürünü nanorobot veya kısa adı nanobotları VIKI'nin beynine enjekte etmek. VIKI deyip geçmeyin İŞ Bankası kulelerinden bile uzun bu bilgisayar Ünlü bilim kurgu yazarı Isaac ASIMOV'un 1930'da yazdığı bir bilim kurgu dehası.&lt;/p&gt;

&lt;p&gt;Uzun lafın kısası bizim wikipedia ile isim benzerliğine sahip bu bilgi bankasını görünce insan acaba bizim &lt;a href="http://www.wikipedia.org/"&gt;wikipedia&lt;/a&gt;'da ileride böyle bir şeye kalkışır mı demeden geçemiyor :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115443363379746906?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115443363379746906/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115443363379746906&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115443363379746906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115443363379746906'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/08/viki-ldrnca.htm' title='Viki çıldırınca'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115443242152554672</id><published>2006-08-01T14:18:00.000+03:00</published><updated>2006-08-01T14:42:55.283+03:00</updated><title type='text'>açık denizde flash</title><content type='html'>&lt;p&gt;Tüm linux kullanan web geliştiricilerinin hayali, ölçeklenebilir vektör grafikler ile olabildiğince dinamik sayfalar tasarlamaktır. Bunu bizlere sunan &lt;a href="http://www.macromedia.com/"&gt;Macromedia Flash&lt;/a&gt; malesef linux üzerinde çalışmıyor. &lt;a href="http://www.winehq.com/"&gt;Wine&lt;/a&gt; veya &lt;a href="http://www.codeweavers.com/"&gt;Crossover&lt;/a&gt; gibi çözümlerde de lisans problemleri yüzünden bu kadar pahalı bir yazılımı kullanamıyoruz. Bizim penguenler bu konuyu düşünmüşler elbetteki :) comp.compilers haber grubunda dolaşırken derinlere dalıp incelediğim yeni bir teknoloji buna olanak sağlıyor.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://osflash.org/"&gt;Open Source Flash Topluluğu&lt;/a&gt; adındaki bir grup bu tür işe yarayan araçları tek çatı altında toplamayı hedefliyor. Bu topluluk projelerinden en ilgiçlerinden biri &lt;a href="http://www.mtasc.org/"&gt;MTASC - Motion-Twin ActionScript 2 Compiler&lt;/a&gt;. Artık penguenlerin de bir AS derleyicisi bulunuyor. En kısa zamanda bu derleyiciyi deneyip sizlerle paylaşmayı düşünüyorum.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115443242152554672?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115443242152554672/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115443242152554672&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115443242152554672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115443242152554672'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/08/ak-denizde-flash.htm' title='açık denizde flash'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115409752919723031</id><published>2006-07-28T17:33:00.000+03:00</published><updated>2006-07-28T17:41:01.336+03:00</updated><title type='text'>gaplan'da ve diğer projelerde hareketlenme</title><content type='html'>&lt;p&gt;Bu aralar gaplan projesinde bir hareketlilik mevcut. &lt;a href="http://www.uyarer.com/blog/"&gt;Talat&lt;/a&gt;'ın gazı ile bir viki kurup yeni bir tema oluşturduk. Şu anda benim çingene rekleri ile bezediğim temayı kullanıyoruz. Kısmet!! Belki değiştiririz sonra. Bu arada C-star için ilk Lexer-Parser birleşimi olan LXP-1'i yakında sitede duyurmayı planlıyorum. Bundan sonraki ayrıştırıcılara kod isimler koyacağız :) C-star'ın proje üssü &lt;a href="http://sourceforge.net/"&gt;sourceforge.net&lt;/a&gt; olacak. Zira sf.net artık SVN desteği de veriyor. WEPY'nin akıbeti ise c-star ile yazılan servlet adaptasyonu için yeni bir framework oluşturabilirsek proje Java altında devam edecek. Yoksa kodlarımızı mod-python havuzuna aktarmayı düşünüyorum.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115409752919723031?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115409752919723031/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115409752919723031&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115409752919723031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115409752919723031'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/07/gaplanda-ve-dier-projelerde.htm' title='gaplan&apos;da ve diğer projelerde hareketlenme'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115142036614617108</id><published>2006-06-27T17:09:00.000+03:00</published><updated>2006-06-27T18:10:32.953+03:00</updated><title type='text'>katar birleştirmenin anatomisi</title><content type='html'>&lt;p&gt;Bazen yazdığınız bir kaç satır karakter katarını &lt;b&gt;"+"&lt;/b&gt; operatörü ile birleştirmek isteyebilirsiniz. Peki javada bu işlem nasıl yapılıyor? Neler yaparsak daha hızlı bir kod yazarız?&lt;/p&gt;

&lt;pre&gt;
&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;KatarBirlestirme&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;merhaba&amp;quot;&lt;/font&gt; &lt;font color="4444FF"&gt;+&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot; &amp;quot;&lt;/font&gt; &lt;font color="4444FF"&gt;+&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot;dunya&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://www.kpdus.com/jad.html"&gt;jad&lt;/a&gt; ile yazdığımız ve derlediğimiz kodları geri dönüştürürsek analiz edebiliriz. String nesnesi Immutable (değiştirilemez) olduğundan karakter katarı birleşimlerini java StrinBuffer nesnesi dönüştürerek yapar. Ama derleyici hızı açısından burada JVM'in hepsini tek katar olarak düşünmesi beklenir. (Yani ben olsaydım böyle yapardım.) İşte JAD ile geri dönüştürdüğümüz kod:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#444444"&gt;// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.&lt;/font&gt;
&lt;font color="#444444"&gt;// Jad home page: http://www.geocities.com/kpdus/jad.html&lt;/font&gt;
&lt;font color="#444444"&gt;// Decompiler options: packimports(3) &lt;/font&gt;
&lt;font color="#444444"&gt;// Source File Name:   KatarBirlestirme.java&lt;/font&gt;

&lt;font color="0000ff"&gt;&lt;strong&gt;import java.io.PrintStream;&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;KatarBirlestirme&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

    &lt;font color="#2040a0"&gt;KatarBirlestirme&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;merhaba dunya&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Tadaaa .. 10 puan, 10 puan, 10 puan, 10 puan ... JVM'e 10 puan zeki bir yaratık optimizasyonu böyle yapar. Peki olayı biraz çetrefilli hale getirip değişken de ekleyelim.&lt;/p&gt;

&lt;pre&gt;
&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;DegiskenliKatarBirlestirme&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;degisken&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot; dunya&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;merhaba&amp;quot;&lt;/font&gt; &lt;font color="4444FF"&gt;+&lt;/font&gt; &lt;font color="#2040a0"&gt;degisken&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Ve sonuç ...&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#444444"&gt;// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.&lt;/font&gt;
&lt;font color="#444444"&gt;// Jad home page: http://www.geocities.com/kpdus/jad.html&lt;/font&gt;
&lt;font color="#444444"&gt;// Decompiler options: packimports(3) &lt;/font&gt;
&lt;font color="#444444"&gt;// Source File Name:   DegiskenliKatarBirlestirme.java&lt;/font&gt;

&lt;font color="0000ff"&gt;&lt;strong&gt;import java.io.PrintStream;&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;DegiskenliKatarBirlestirme&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

    &lt;font color="#2040a0"&gt;DegiskenliKatarBirlestirme&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;s&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot; dunya&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;StringBuilder&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color="#2040a0"&gt;append&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;merhaba&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color="#2040a0"&gt;append&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;s&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color="#2040a0"&gt;toString&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Burada aklımıza şu soru geliyor. Tüm bunları incelemem için beni gaza getiren Sun dökümanında şu ifade geçiyor: &lt;a href="http://docs.sun.com/source/819-0084-10/pt_tuningapp.html"&gt;Use StringBuffer to Concatenate Strings&lt;/a&gt; Karakter katarlarını birleştirmek için StringBuffer kullanın. Derleyici benim yerime bu işlemi yapıyorsa ben neden bununla vakit geçireyim. Tamam derleme süresini 10 ms uzatabilir ama sonuçta derlendikten sonra benim kodum ve derlenen kod aynı işlemi yapmış olacak. Üşenmedim bir de aynı işlemi ben yapayım dedim, Ve ByteCode düzeyinde olayı irdeleyelim. Bir Önceki sınıfın &lt;a href="http://www.cs.princeton.edu/~benjasik/dis/"&gt;dis&lt;/a&gt; ile disassembly edilmiş hali:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#2040a0"&gt;super&lt;/font&gt; synchronized class DegiskenliKatarBirlestirme extends java/lang/Object

&lt;font color="#2040a0"&gt;Method&lt;/font&gt;  &amp;lt;init&amp;gt; () -&amp;gt; void

0 aload_0      
1 invokenonvirtual #1 &amp;lt;Method java/lang/Object.&amp;lt;init&amp;gt; ()V&amp;gt;     
4 return      

&lt;font color="#2040a0"&gt;Method&lt;/font&gt; public static  main (java/lang/String []) -&amp;gt; void

0 ldc #2 &amp;lt;String &lt;font color="#008000"&gt;&amp;quot; dunya&amp;quot;&lt;/font&gt;&amp;gt;     
2 astore_1     
3 getstatic #3 &amp;lt;Field java/lang/System.out Ljava/io/PrintStream&lt;font color="#444444"&gt;;&amp;gt;    &lt;/font&gt;
6 new #4 &amp;lt;Class java/lang/StringBuilder&amp;gt;    
9 dup      
10 invokenonvirtual #5 &amp;lt;Method java/lang/StringBuilder.&amp;lt;init&amp;gt; ()V&amp;gt;     
13 ldc #6 &amp;lt;String &lt;font color="#008000"&gt;&amp;quot;merhaba&amp;quot;&lt;/font&gt;&amp;gt;     
15 invokevirtual #7 &amp;lt;Method java/lang/StringBuilder.append (Ljava/lang/String&lt;font color="#444444"&gt;;)Ljava/lang/StringBuilder;&amp;gt;     &lt;/font&gt;
18 aload_1      
19 invokevirtual #7 &amp;lt;Method java/lang/StringBuilder.append (Ljava/lang/String&lt;font color="#444444"&gt;;)Ljava/lang/StringBuilder;&amp;gt;     &lt;/font&gt;
22 invokevirtual #8 &amp;lt;Method java/lang/StringBuilder.toString ()Ljava/lang/String&lt;font color="#444444"&gt;;&amp;gt;     &lt;/font&gt;
25 invokevirtual #9 &amp;lt;Method java/io/PrintStream.println (Ljava/lang/String&lt;font color="#444444"&gt;;)V&amp;gt;     &lt;/font&gt;
28 return      
&lt;/pre&gt;

&lt;p&gt;Kodumuzu StringBuffer kullanarak yazarsak&lt;/p&gt;

&lt;pre&gt;
&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;TamponluKatarBirlestirme&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;degisken&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot; dunya&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;StringBuffer&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;merhaba&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color="#2040a0"&gt;append&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;degisken&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color="#2040a0"&gt;toString&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;java assembly hali&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#2040a0"&gt;super&lt;/font&gt; synchronized class TamponluKatarBirlestirme extends java/lang/Object

&lt;font color="#2040a0"&gt;Method&lt;/font&gt;  &amp;lt;init&amp;gt; () -&amp;gt; void

0 aload_0      
1 invokenonvirtual #1 &amp;lt;Method java/lang/Object.&amp;lt;init&amp;gt; ()V&amp;gt;     
4 return      

&lt;font color="#2040a0"&gt;Method&lt;/font&gt; public static  main (java/lang/String []) -&amp;gt; void

0 ldc #2 &amp;lt;String &lt;font color="#008000"&gt;&amp;quot; dunya&amp;quot;&lt;/font&gt;&amp;gt;     
2 astore_1     
3 getstatic #3 &amp;lt;Field java/lang/System.out Ljava/io/PrintStream&lt;font color="#444444"&gt;;&amp;gt;    &lt;/font&gt;
6 new #4 &amp;lt;Class java/lang/StringBuffer&amp;gt;    
9 dup      
10 ldc #5 &amp;lt;String &lt;font color="#008000"&gt;&amp;quot;merhaba&amp;quot;&lt;/font&gt;&amp;gt;     
12 invokenonvirtual #6 &amp;lt;Method java/lang/StringBuffer.&amp;lt;init&amp;gt; (Ljava/lang/String&lt;font color="#444444"&gt;;)V&amp;gt;     &lt;/font&gt;
15 aload_1      
16 invokevirtual #7 &amp;lt;Method java/lang/StringBuffer.append (Ljava/lang/String&lt;font color="#444444"&gt;;)Ljava/lang/StringBuffer;&amp;gt;     &lt;/font&gt;
19 invokevirtual #8 &amp;lt;Method java/lang/StringBuffer.toString ()Ljava/lang/String&lt;font color="#444444"&gt;;&amp;gt;     &lt;/font&gt;
22 invokevirtual #9 &amp;lt;Method java/io/PrintStream.println (Ljava/lang/String&lt;font color="#444444"&gt;;)V&amp;gt;     &lt;/font&gt;
25 return      
&lt;/pre&gt;

&lt;p&gt;Burada benim yazdığım kod daha yavaştır çünkü aynı işlemi StringBuffer sınıfı ile yapmaktayım. Fakat J2SE 1.5 ile gelen StringBuilder sınıfı JVM 1.5 tarafından otomatik kullanılmış. Eee buradan çıkaracağımız ders. Aynı şekilde kod yazmaya devam edin. Burda yazılanları bilmeseniz de olurdu. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115142036614617108?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115142036614617108/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115142036614617108&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115142036614617108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115142036614617108'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/06/katar-birletirmenin-anatomisi.htm' title='katar birleştirmenin anatomisi'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115082728595584588</id><published>2006-06-20T21:14:00.000+03:00</published><updated>2006-06-20T21:33:35.800+03:00</updated><title type='text'>servlet'in alamet-i farikası</title><content type='html'>&lt;p&gt;Bu aralar hepinizin de bildiği üzere. Ya da bizim çokça zikrettiğimiz üzere; bir java serüvenidir ki gidiyor. Ee, her zaman yeni bir şeyler öğrenmeli, koşmalı, koşamıyorsa yerinde zıplamalı. Biz de bunu, destur edinerek başımıza böyle işler açıyoruz. Açarken de günlüğümüzü çiziktiriyoruz ki; ne maymunluklar yaptığımızı görün.&lt;/p&gt;

&lt;p&gt;Bu gün bol bol servlet, koddum. (&lt;i&gt;koddum, koddun, koddu yani i code, you code, he/she/it codes&lt;/i&gt;) EE, artık açık kaynak tabi :) Tiger kod adlı java 5.0 ile yolumuza dolu dizgin devam ediyoruz. Yalnız ! Bugün sıyırmama neden olan bir olay ile karşılaştım; &lt;b&gt;HttpServlet&lt;/b&gt; sınıfından miras aldığımız ve çiğneyip, ezip geçtiğimiz (override) &lt;b&gt;doGet&lt;/b&gt; metodunun get ile gönderilen istekleri tuttuğunu, servlet ile uğraşan herkes bilir. Tanımladığım bir &lt;b&gt;Vector&lt;/b&gt; tipli değişken için &lt;b&gt;addElement&lt;/b&gt; metodunu, &lt;b&gt;doGet&lt;/b&gt; metodu içinden çağırdım. İşte sıyırma belirtileri tam burada başladı. &lt;b&gt;Vector&lt;/b&gt; değişkeninin içine attığım veriler bir çok kez tekrar ediyordu. Bunun, oluşturduğum servlete giden parametre miktarınca olduğunu düşündüm ilk önce. &lt;b&gt;Servlet?a=1&amp;b=2&amp;c=3&lt;/b&gt; gibi bir örnek ifadenin, 3 parametre gittiğinden 3 defa &lt;b&gt;doGet&lt;/b&gt; metodunu çağırdığını ve bundan dolayı olduğunu sandım evvela.&lt;/p&gt;

&lt;p&gt;Ama, cıkk! Öyle değilmiş durum. Çünkü dizimizin boyutu git gide artmaktaydı. Bunu, servletimizin başına &lt;b&gt;private int counter = 0;&lt;/b&gt; diye bir sayaç ekleyerek test etmeye karar verdim. &lt;b&gt;doGet&lt;/b&gt; metodunun içine de o meşhuuuur: &lt;b&gt;counter++;&lt;/b&gt; ifadesini yazdım.&lt;/p&gt;

&lt;p&gt;İşte dananın kuyruğunun koptuğu an buydu! Her &lt;b&gt;f5&lt;/b&gt; tuşuna basışımda sayaç bir artıyordu! Bir oturum değişkeni değildi. Sunucuya ait küresel bir değişken de değildi. Yav PHP'de, Python'da böyle bir şey yok! C# programladığım zamanlar da bu tarz birşey ile karşılaşmamıştım. Hem'de &lt;b&gt;private&lt;/b&gt; bir değişkenin bu denli beni madara etmesi bende geçersiz işlem yürüttü.&lt;/p&gt;

&lt;p&gt;Olayın kaynağı tabiki yine cehaletmiş. Servletin çok kanallı (multi-thread) olduğunu biliyoruz. Lakin gelen isteklere nasıl yanıt verdiği konusunda cehaletimiz sürmekteymiş. Efenim! Normal bir PHP betiğine gelen her istek (request), Apache'de bir alt süreç (child process) oluşturur. Bu alt süreçler, talep edilen PHP betiğini çalıştırır. Apache, kendisine istek gelmediği zaman, KeepAlive seçili ise, KeepAlive zaman aşımı süresince yeni istekleri bekler. Eğer istek gelmez ve KeepAlive süresi dolar ise PHP alt süreci, Hakk'ın rahmetine kavuşur. CGI'da da bu yaklaşım aynıdır. Fast-CGI'da ise tüm istekler için tek bir alt süreç oluşur. Fakat Servlet denilen meretin çalışma prensibi bunlardan hiçbirine uymamakta ki değişken sürekli etkin kalmaktaydı!&lt;/p&gt;

&lt;p&gt;Efenim! Servlet sunucusu tek süreç ile çalışmaktadır. Bu süreç, kanalları vasıtası ile servletleri çağırır. Çağrılan servletler isteklere yine aynı metod ile cevap verirler. Bu sayede  hızlı bir çalışma mekanizması kazanılır. Servlet ilk çalıştığında; &lt;b&gt;init&lt;/b&gt; metodu çalışır. Ve servlet çalışmaya devam eder. Her gelen istek &lt;b&gt;doGet&lt;/b&gt; veya &lt;b&gt;doPost&lt;/b&gt; metodunu çağırır. Böylelikle değişkenimiz uygulama kapanana kadar işlevini yerine getirir.&lt;/p&gt;

&lt;p&gt;Buna göre kolayca bir vuru ziyaretçi sayacı (hit counter) yazabiliriz. Bu sayaç, sayfaya gelen istek sayısını gösterir.&lt;/p&gt;

&lt;pre&gt;
&lt;font color="0000ff"&gt;&lt;strong&gt;import java.io.*;&lt;/strong&gt;&lt;/font&gt;
&lt;font color="0000ff"&gt;&lt;strong&gt;import javax.servlet.http.*;&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;Sayac&lt;/font&gt; &lt;strong&gt;extends&lt;/strong&gt; &lt;font color="#2040a0"&gt;HttpServlet&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;private&lt;/strong&gt; &lt;strong&gt;int&lt;/strong&gt; &lt;font color="#2040a0"&gt;sayac&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;doGet&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;HttpServletRequest&lt;/font&gt; &lt;font color="#2040a0"&gt;istek&lt;/font&gt;, &lt;font color="#2040a0"&gt;HttpServletResponse&lt;/font&gt; &lt;font color="#2040a0"&gt;cevap&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;throws&lt;/strong&gt; &lt;font color="#2040a0"&gt;IOException&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;sayac&lt;/font&gt;&lt;font color="4444FF"&gt;+&lt;/font&gt;&lt;font color="4444FF"&gt;+&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;PrintWriter&lt;/font&gt; &lt;font color="#2040a0"&gt;sayfa&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;cevap&lt;/font&gt;.&lt;font color="#2040a0"&gt;getWriter&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

        &lt;font color="#2040a0"&gt;sayfa&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;sayac&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;sayfa&lt;/font&gt;.&lt;font color="#2040a0"&gt;close&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115082728595584588?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115082728595584588/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115082728595584588&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115082728595584588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115082728595584588'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/06/servletin-alamet-i-farikas.htm' title='servlet&apos;in alamet-i farikası'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115071392365848611</id><published>2006-06-19T13:29:00.000+03:00</published><updated>2007-07-14T19:32:43.866+03:00</updated><title type='text'>gcj ile jre'den bağımsız uygulamalar</title><content type='html'>&lt;p&gt;Java'da yazılmış bir program elimize geçti. Hemen çift tıklayıp çalıştırmayı deneriz. Fakat dosya ilişkilendirilmediği için çalışmayacaktır. Tabi bir .class dosyasının ilişkilendirilmesi çok ta mümkün olmuyor. İlişkilendirilse bile main metodu bu sınıfta mevcut mudur? Bu da büyük bir sorun. Sanırım en mantıklısı yazdığımız programları .jar dosyası yapmak. Bu sayede programları hem Linux'ta hem de Windows'ta kolayca ilişkilendirebiliriz. &lt;b&gt;java -jar ornek.jar&lt;/b&gt; yazıp çalıştırabiliriz. Ama yazdığımız programlarda kullanıcıları ilişkilendirme ile uğraştırmak istemiyorsak: en kolay yol; JNLP uzantılı web start dosyası oluşturmak olacaktır.&lt;/p&gt;

&lt;p&gt;Fakat ne yaparsak yapalım sistemde bir JRE (Java Çalışma Zamanı Ortamı) olmadığı sürece yazdığımız hiç bir program çalışmayacaktır. Java ile yazdığımız programları java bytecode'larını es geçerek direkt makine diline derlememiz gcj ile mümkün. Bu sayede çift tıklayıp çalıştırabileceğimiz. JRE gerekmeyen programlarımız olacaktır. (Native Code Compilation) Yerel Kod Derlemesi olarak adlandırabileceğimiz işlem şu şekilde yapılmakta:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="0000ff"&gt;&lt;strong&gt;import javax.swing.JFrame;&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;Ornek&lt;/font&gt; &lt;strong&gt;extends&lt;/strong&gt; &lt;font color="#2040a0"&gt;JFrame&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;args&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

        &lt;font color="#2040a0"&gt;Ornek&lt;/font&gt; &lt;font color="#2040a0"&gt;program&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Ornek&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;program&lt;/font&gt;.&lt;font color="#2040a0"&gt;setDefaultCloseOperation&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;JFrame&lt;/font&gt;.&lt;font color="#2040a0"&gt;EXIT_ON_CLOSE&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

        &lt;font color="#2040a0"&gt;program&lt;/font&gt;.&lt;font color="#2040a0"&gt;setLocation&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#FF0000"&gt;300&lt;/font&gt;, &lt;font color="#FF0000"&gt;300&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;program&lt;/font&gt;.&lt;font color="#2040a0"&gt;setSize&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#FF0000"&gt;300&lt;/font&gt;, &lt;font color="#FF0000"&gt;300&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

        &lt;font color="#2040a0"&gt;program&lt;/font&gt;.&lt;font color="#2040a0"&gt;setVisible&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Swing kullanan bu programı Ornek.java adıyla kaydedip:&lt;/p&gt;

&lt;pre&gt;
gcj --main=Ornek -o Ornek Ornek.java
&lt;/pre&gt;

yazıyoruz. Hepsi bu kadar :) Artık başına java yazmadan kodlarımızı çalıştırabiliriz.

&lt;pre&gt;
./Ornek.java
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115071392365848611?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115071392365848611/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115071392365848611&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115071392365848611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115071392365848611'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/06/gcj-ile-jreden-bamsz-uygulamalar.htm' title='gcj ile jre&apos;den bağımsız uygulamalar'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-115070625975313347</id><published>2006-06-19T10:18:00.000+03:00</published><updated>2006-06-19T11:37:45.096+03:00</updated><title type='text'>python'a semer vurulamıyormuş.</title><content type='html'>&lt;p&gt;Java maceramız tüm hızıyla sürerken Python'daki bir sınıfın metodlarının aşırı yüklenmediğini (overload) farkettim. Aynı adda iki metod oluşturunca python en son yazdığınızı geçerli kılmakta:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#444444"&gt;#! /usr/bin/python&lt;/font&gt;
&lt;font color="#444444"&gt;# -*- coding: UTF-8 -*-&lt;/font&gt;

&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;AsiriYuklemeTesti&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;

&lt;strong&gt;   &lt;font color="ff0000"&gt; def&lt;/font&gt;&lt;font color="ff0000"&gt; metod&lt;/font&gt;&lt;font color="2040a0"&gt;(self, arguman)&lt;/font&gt;:&lt;font color="ff0000"&gt; return&lt;/font&gt;&lt;font color="ff0000"&gt; arguman&lt;/font&gt;
&lt;/strong&gt;
&lt;strong&gt;   &lt;font color="ff0000"&gt; def&lt;/font&gt;&lt;font color="ff0000"&gt; metod&lt;/font&gt;&lt;font color="2040a0"&gt;(self, arguman1, arguman2)&lt;/font&gt;:&lt;font color="ff0000"&gt; return&lt;/font&gt;&lt;font color="ff0000"&gt; arguman1&lt;/font&gt;

&lt;/strong&gt;
&lt;font color="#2040a0"&gt;test&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;AsiriYuklemeTesti&lt;/font&gt;&lt;font color="4444FF"&gt;(&lt;/font&gt;&lt;font color="4444FF"&gt;)&lt;/font&gt;
&lt;strong&gt;print&lt;/strong&gt; &lt;font color="#2040a0"&gt;test&lt;/font&gt;.&lt;font color="#2040a0"&gt;metod&lt;/font&gt;&lt;font color="4444FF"&gt;(&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;yazdir bakalim&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;)&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;İşte python yorumlayıcısının cevabı&lt;/p&gt;

&lt;pre&gt;
Traceback (most recent call last):
  File "./oveload.py", line 11, in ?
    print deneme.metod("yazdir bakalim")
TypeError: metod() takes exactly 3 arguments (2 given)
&lt;/pre&gt;

&lt;p&gt;Peki Java'da durum nasıl?&lt;/p&gt;

&lt;pre&gt;

&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;Overload&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;font color="#2040a0"&gt;main&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;argumanlar&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

        &lt;font color="#2040a0"&gt;AsiriYuklemeTesti&lt;/font&gt; &lt;font color="#2040a0"&gt;test&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;AsiriYuklemeTesti&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
        &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;test&lt;/font&gt;.&lt;font color="#2040a0"&gt;metod&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&amp;quot;hadi bakalim hayirlisi&amp;quot;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;

    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;AsiriYuklemeTesti&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;metod&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;arguman&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

        &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;arguman&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;metod&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;arguman1&lt;/font&gt;, &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;arguman2&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;

        &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;arguman1&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;
    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;

&lt;p&gt;Ama java kullananlar da sevinmesin. Javada da işleç (operator) aşırı yüklemesi bulunmuyormuş. Ama C#'ta bulunuyor.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-115070625975313347?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/115070625975313347/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=115070625975313347&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115070625975313347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/115070625975313347'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/06/pythona-semer-vurulamyormu.htm' title='python&apos;a semer vurulamıyormuş.'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114963086634993541</id><published>2006-06-07T00:41:00.000+03:00</published><updated>2006-06-07T00:54:26.363+03:00</updated><title type='text'>debiancılara bir şeyler oluyor</title><content type='html'>&lt;p&gt;Bu aralar etrafımda gördüğüm tüm debiancılara bir şeyler oluyor. Tabi sen debianın neresindensin derseniz. Ben içinden değilim; köyündenim. Yoksa kabilesindenim mi desem :) Çünkü afrikalı dağıtım ubuntuyu kullanıyorum. Neyse uzun lafın kısası debian kullanan programcı arkadaşları bir java merakı sardı. Ben, c-star'ı java ile yazmaya karar verdim. Sonra &lt;a href="http://2nci.com/"&gt;Yılmaz&lt;/a&gt; tüm şirketini javaya geçirdi. (Gaza getirme konusunda çok başarılıdır.) Ve sonra orta-doğu ve balkanların en iyi sistemcisi &lt;a href="http://cafer.org/"&gt;Cafer&lt;/a&gt; javaya geçti.&lt;/p&gt;

&lt;p&gt;Ben sadece javaya geçmekle kalmayıp, java studio enterprise kullanmaya başladım. Sağolsun Yılmazın gazı ile :) Tam da gedit'e python eklenti desteği eklenmişti. Allah, sonumuzu hayır etsin. Bu java harekatının en büyük nedeni; Javanın açık kaynak saflara geçmesiydi. Aybiem abi, sun'a şöyle demiş; Sun, bak sana diyorum evet Sun'a diyorum; gel bu javayı açık kaynak yapalım. Tut şu işin ucundan he de, sevenleri ayırma, Sonra onlar ermiş muradına biz çıkalım kerevetine.&lt;/p&gt;

&lt;p&gt;Şimdi gelsin mobility pack ile cep telefonumuzda çalışan uygulamalar. Ama gönlüm hala python'da :) Neyse ben bu konuda biraz arsızım sanırım en büyük hobim yeni bir programlama dili öğrenmek.:) Neyse herkese tavsiye ediyorum. Özellikle UML tabanlı uygulama yapmak bir harika :) Yeni mikropyuvası'na geçince bu konuda bir makale yazabilirim belki.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114963086634993541?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114963086634993541/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114963086634993541&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114963086634993541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114963086634993541'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/06/debianclara-bir-eyler-oluyor.htm' title='debiancılara bir şeyler oluyor'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114812447310371656</id><published>2006-05-20T14:11:00.000+03:00</published><updated>2006-05-20T14:35:07.263+03:00</updated><title type='text'>Allah, Java'nın cezayı verecek!</title><content type='html'>&lt;p&gt;Yüksek lisans tezim olan c-star için kolları sıvadım. C-star özelleştirilebilir imlası ile kendini Java ByteCode'larına derleyen bir dil olmayı hedefliyor! Bunu yapmak için de Java kullanmam gerekmekte! Yani kısacası C-star'ı java ile yazıcam! (Cinnet geçirmezsem tabi)&lt;/p&gt;

&lt;p&gt;Ama bunca zaman python kodu yazıp, Java'ya geçince attan inip eşeğe binmiş gibi oluyorum. Bir dil  kodlamayı bukadar mı uzatır? C# kullananlar hiç sevinmesin onun da Java'dan hiç farkı yok!&lt;/p&gt;

&lt;p&gt;Az Kod, Çok iş sloganı ile yola çıktık! Valla nasıl yapıcam bende bilmiyorum. Allah yardımcımız olsun!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114812447310371656?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114812447310371656/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114812447310371656&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114812447310371656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114812447310371656'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/05/allah-javann-cezay-verecek.htm' title='Allah, Java&apos;nın cezayı verecek!'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114640011666374479</id><published>2006-04-30T14:09:00.000+03:00</published><updated>2006-04-30T15:28:36.723+03:00</updated><title type='text'>wikipedia vandalism</title><content type='html'>&lt;p&gt;Miladın başlangıç yıllarında Avrupa'da yaşayan acımasız bir Germen halkı varmış. Roma ile yaptıkları savaşlarda ünsalmışlar. Eski kültür ve sanat yapılarını ve kütüphaneleri ateşe veriyorlarmış.&lt;/p&gt;

&lt;p&gt;Bunu neden anlatmış olabilirim ? :), eğer özgür ansiklopedi &lt;a href="http://.wikipedia.org/"&gt;wikipedia&lt;/a&gt;'da saçma sapan bir değişiklik yaparsanız. Mesela sayfayı tamamen silip "wikipedia hacked by lazylamer" yazarsanız. Buna wikice vandalizm deniyor.&lt;/p&gt;

&lt;p&gt;Efenim ayrıntılı bilgiye: &lt;a href="http://en.wikipedia.org/wiki/Wikipedia:Vandalism"&gt;http://en.wikipedia.org/wiki/Wikipedia:Vandalism&lt;/a&gt; adresinden ulaşabilirsiniz. Demekki neymiş; bundan sonra böyle tipleri "Vandallık yapma olum !" diye terslememiz gerekiyormuş. Böyle arkadaşlara git sen kumda oyna diyerek; &lt;a href="http://en.wikipedia.org/wiki/Wikipedia:Sandbox"&gt;http://en.wikipedia.org/wiki/Wikipedia:Sandbox&lt;/a&gt; adresine yönlendiriyoruz.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114640011666374479?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114640011666374479/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114640011666374479&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114640011666374479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114640011666374479'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/04/wikipedia-vandalism.htm' title='wikipedia vandalism'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114599375329296266</id><published>2006-04-25T22:33:00.000+03:00</published><updated>2006-04-25T22:35:53.306+03:00</updated><title type='text'>taşındık</title><content type='html'>&lt;p&gt;penguenyuvası'nı artık penguenyuvasi.org adresine taşıdım. Linux ve özgür yazılım hakkında yazmak isteyen çok sevgili pek kıymetli arkadaşlarım, bir blogger hesabı alarak bana bildirirlerse artık penguenyuvasi.org adresini beraber doldurabiliriz :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114599375329296266?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114599375329296266/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114599375329296266&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114599375329296266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114599375329296266'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/04/tandk.htm' title='taşındık'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114461029925022797</id><published>2006-04-09T22:08:00.000+03:00</published><updated>2006-04-09T22:30:56.860+03:00</updated><title type='text'>kim demiş!</title><content type='html'>&lt;p&gt;&lt;a href="http://www.vt.edu/"&gt;Virginia Tech&lt;/a&gt; human computer interaction bölümü laboratuarlarında &lt;a href="http://infovis.cs.vt.edu/gigapixel/"&gt;gigapixel&lt;/a&gt; projesi kapsamında 12 node linux sunucuyu kümeleme (clustering) ile bir araya getirip 24 monitör destekli bir sistem ile birleştirmişler. Tabi bunun en büyük faydası navigasyon ve uydu görüntüleme sistemleri üzerine çalışmak.&lt;/p&gt;

&lt;p&gt;Yukarıdaki paragrafın son cümlesini unutun. İşte en büyük faydası :)&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3341/1934/1600/quake_front.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3341/1934/320/quake_front.jpg" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;Kim demiş linuxta oyun oynanmaz diye. Yalnızca tek monitörde oynamak pek zevk vermiyor :) &lt;a href="http://www.plastk.net/"&gt;plastk.net&lt;/a&gt; adresinde &lt;a href="http://stratagus.sourceforge.net/"&gt;stratagus&lt;/a&gt; strateji motoru kullandıkları sahneler bulunuyor. Temelde sistem &lt;a href="http://chromium.sourceforge.net/"&gt;chromium&lt;/a&gt; denilen bir kümeleme sistemi üzerine kurulmuş. Paralel çalışan X11 sunucuların görüntüleri ise bir harika. Bir tane de eve ben alıcam :P&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114461029925022797?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114461029925022797/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114461029925022797&amp;isPopup=true' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114461029925022797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114461029925022797'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/04/kim-demi.htm' title='kim demiş!'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114432353586006224</id><published>2006-04-06T14:35:00.000+03:00</published><updated>2006-04-06T14:38:55.876+03:00</updated><title type='text'>open.sakarya.edu.tr</title><content type='html'>&lt;p&gt;Uzun uğraşlarımız sonucu sakarya üniversitesini de açık kaynak camiasına çektik. Artık öğrenciler svn sunucumuz üzerinden yazılımlarını paylaşıp makaleler yayınlayabilecekler. Bu oluşuma destek verecek herkesi bekliyoruz.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114432353586006224?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114432353586006224/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114432353586006224&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114432353586006224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114432353586006224'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/04/opensakaryaedutr.htm' title='open.sakarya.edu.tr'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114432213702431630</id><published>2006-04-06T14:12:00.000+03:00</published><updated>2007-05-09T17:49:35.750+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='kurulum'/><title type='text'>postgresql nasıl kurulur?</title><content type='html'>&lt;p&gt;Evet biliyorum bir sürü ders içeriği hazırlamam lazım. Gereksiz işler bakanı olan ben, oturdum kurmak isteyen arkadaşlar için postgresql nasıl kurulur dökümanı hazırladım.&lt;/p&gt;

&lt;a href="http://firatkucuk.googlepages.com/postgresql_kurulum.pdf"&gt;buradan yakın&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114432213702431630?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114432213702431630/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114432213702431630&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114432213702431630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114432213702431630'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/04/postgresql-nasl-kurulur.htm' title='postgresql nasıl kurulur?'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114392381161212806</id><published>2006-04-01T23:20:00.000+03:00</published><updated>2006-04-03T22:42:40.690+03:00</updated><title type='text'>ağzım kulaklarıma varıyor :)</title><content type='html'>&lt;p&gt;Evet bu tabir yerinde oldu sanırım. :) Çünkü &lt;a href="http://linode.com/"&gt;linode.com&lt;/a&gt;'dan kendime aylık 20$'a bir VPS sunucu aldım. VPS'in temelinde linux kernelinin virtual server olarak çalıştırılması yatıyor. Linux'un bu özelliği sayesinde sistemde bir sürü izole sistem olabiliyor. Yani bir sunucu üzerinde 5 - 10 adet dedicated sunucu olabiliyor diyebiliriz. Bizimkisi de fakir işi dedicated sunucu işte :)&lt;/p&gt;

&lt;p&gt;Her neyse şimdi ballandıra ballandıra anlatma kısmına gelelim. 10 saniye içerisinde seçtiğiniz bir linux dağıtımını kuruyorsunuz. Ben ubuntu kurdum. Disk alanınızın yarısına redhat yarısına debian vs.. kurabiliyorsunuz. İstediğiniz profili boot etmeniz mümkün. Yani paket yapacak geliştiriciler için de harika bir ortam. Önce fedora'yı boot et rpm paketi yap. Sonra debian'ı boot edip deb paketi yap. Olay bu kadar basit :)&lt;/p&gt;

&lt;p&gt;Neyse yeni oyuncağımı o kadar sevdimki. Bu gece onunla oynıycam. Tabi VPS sistemini bana tanıtan hayatımda gördüğüm en iyi sistem admini &lt;a href="http://cafer.org/"&gt;Cafer&lt;/a&gt;'e teşekkürlerimi sunuyorum. :) Şimdi ben bu sunucuya bir DNS, bir e-posta, bir jabber sunucusu kurmaz mıyım? heyyyyt. Yani bunları söylemek bile beni heycanlandırıyor.:) Aslında bu işi iş yerinde milyon defa yapıyorum. Hatta istesem NAT ayarları ile oynayıp Evime bir dedicated sunucu da koyabilirim. Ama bunun tadı nedense bir başka oldu.&lt;/p&gt;

&lt;p&gt;Tabi böyle bir hosting seçmemin başlıca nedeni: &lt;a href="http://wepy.org/"&gt;wepy&lt;/a&gt; :), &lt;a href="http://2nci.com/"&gt;Yılmaz&lt;/a&gt;, wepy ile bir blog uygulaması yazdı. Tam manasıyla mod_python kurulu bir hosting bulmak pekte kolay değil. Okuldaki sunucuları da kendi kişisel fantazim için kullanmak etik olmaz. Bu nedenle en iyisi VPS.&lt;/p&gt;

&lt;p&gt;Yakında tüm alan adlarımın mekanı değişeceğinden görüntüleme konusunda bazen aksaklıklar yaşanabilir. Takip edenlerden özür diliyorum.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114392381161212806?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114392381161212806/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114392381161212806&amp;isPopup=true' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114392381161212806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114392381161212806'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/04/azm-kulaklarma-varyor.htm' title='ağzım kulaklarıma varıyor :)'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114324071234429155</id><published>2006-03-25T00:30:00.000+02:00</published><updated>2006-03-25T10:58:54.233+02:00</updated><title type='text'>wepy 0.04</title><content type='html'>&lt;p&gt;Web ile &lt;a href="http://python.org/"&gt;Python&lt;/a&gt;'u &lt;a href="http://php.net/"&gt;PHP&lt;/a&gt; aroması ile karıştırıp, karmaşıklıktan uzak, &lt;a href="http://gnome.org/"&gt;Gnome&lt;/a&gt; sadeliğinde ve &lt;a href="http://www.python.org/doc/Humor.html#zen"&gt;python zen&lt;/a&gt;inde bir web kütüphanesi yapma çalışmalarımız tüm hızıyla sürmekte. &lt;a href="http://wepy.org/"&gt;Wepy&lt;/a&gt;'i yaparken ki amacımız; herkesin web programlama yapabilmesi. PHP'nin bu konudaki yetenekleri tartışılmaz. Fakat şahsım adına PHP'nin en önemli eksiklikleri demode bir imlasının olması ve başlangıç olarak herşeyi işlevlerle yapmanız. Bu nedendir ki PHP kullanan çoğu profesyonel soluğu &lt;a href="http://www.phpclasses.org/"&gt;PHPClasses&lt;/a&gt; gibi sitelerde alır. Python bu konuda imdada yetişiyor. &lt;a href="http://www.cheetahtemplate.org/"&gt;Cheetah Şablon&lt;/a&gt; motoruyla da birleştiğinde tadından yenmiyecek harika sanatlar çıkıyor meydana.&lt;/p&gt;

&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;

&lt;p&gt;Kral çıplak veya ben bir şey yazmadım. Yanıt veriyorum; her ikisi de! Wepy 0.04 ile hiç bir şey yazmasanız da ekrana boş bir HTML sayfası gelmekte.&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#a52a2a"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt; &amp;quot;&lt;font color="#ff00ff"&gt;merhaba dünya&lt;/font&gt;&amp;quot;
&lt;/pre&gt;

&lt;p&gt;Bu özellik ise 0.04 sürümümüz ile eklendi. Artık hiçbir ek kütüphane eklemeden print diyerek yolumuza devam ediyoruz.&lt;/p&gt;

&lt;pre&gt;HEADERS['&lt;font color="#ff00ff"&gt;Content-Type&lt;/font&gt;'] = '&lt;font color="#ff00ff"&gt;image/png&lt;/font&gt;'
&lt;font color="#a52a2a"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt; open('&lt;font color="#ff00ff"&gt;penguin.png&lt;/font&gt;', '&lt;font color="#ff00ff"&gt;rb&lt;/font&gt;').read()&lt;/pre&gt;

&lt;p&gt;2 satırda wepy ile resim gönderme sanatı :) Ve en beğendiğim özelliklerden birisi ise ?a=1&amp;a=2&amp;a=3&lt;/p&gt;

&lt;pre&gt;a: ['1', '2', '3']&lt;/pre&gt;

&lt;p&gt;Wepy, aynı değiken ismine sahip olan verileri liste haline getirdi. Wepy, bunlardan başka Session yönetimi, Cookie yönetimi, COOKIES, HEADERS, GET, POST, SERVER, CONFIG, REQUEST gibi tanıdık yüzlere sahip.&lt;/p&gt;

&lt;p&gt;Bir sonraki sürümde, daha estetik ve ayrıntılı error handling, yerel yapılandırma dosyaları, Marshal çerezler gibi özellikleri düşünmekteyim. Fakat mevcut özellikleri ile çok rahat bir site meydana gelebilmekte. Şahsen ben, ufak bir CMS, adalms, adapoll gibi uygulamaları wepy ile yazdım. Sevgili Yılmaz arkadaşımız ise bir günlük uygulaması yazmakta. Bunların dışında Cafer kardeşim ise kurumsal bir e-posta uygulaması yapmakta. Hadi bakalım hayırlısı.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114324071234429155?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114324071234429155/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114324071234429155&amp;isPopup=true' title='3 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114324071234429155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114324071234429155'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/03/wepy-004.htm' title='wepy 0.04'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114245033514752578</id><published>2006-03-15T21:14:00.000+02:00</published><updated>2006-03-25T10:35:40.636+02:00</updated><title type='text'>arkandayız koçum linus</title><content type='html'>&lt;embed style="width:400px; height:326px;" id="VideoPlayback" align="middle" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DnAAAAEwIvTQtz5X0v9wMpiZVbqWVsoEj8-_VwSEye2cUYNzVMw7EpvTWJCQJ5vf2JGl9gwumVkmW1aBlbHYiuhkqYIAOQEt2MB83P2b33h-VU8U4Udds1iERp3wF1hldarRVTwecTGqwYi1X6DV2vf4ovDQQcFIoflTg3wF-s1TTZBbjlUGcEl7Xu86C0LmWSDOW-GRAmA54-WorJ7RbhB1P_LQ%26sigh%3DwW6jFr6pAR9IRTsCP1Lel-99KLQ%26begin%3D0%26len%3D30199%26docid%3D-4444798273768475649&amp;thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3D7b19dea02d0a45a2%26second%3D5%26itag%3Dw320%26urlcreated%3D1142449771%26sigh%3DpwGdtb8Wgmmi1t_2PgNRyVTHmwM&amp;playerId=-4444798273768475649" allowScriptAccess="sameDomain" quality="best" bgcolor="#ffffff" scale="noScale" wmode="window" salign="TL"  FlashVars="playerMode=embedded"&gt;&lt;/embed&gt;

&lt;p&gt;Beni de destekler misin aybiem abi?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114245033514752578?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114245033514752578/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114245033514752578&amp;isPopup=true' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114245033514752578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114245033514752578'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/03/arkandayz-koum-linus.htm' title='arkandayız koçum linus'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114242041072561600</id><published>2006-03-15T12:53:00.000+02:00</published><updated>2007-05-09T17:12:35.738+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='xul'/><title type='text'>modüler sistem nedir ?</title><content type='html'>budur:

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/93/206361258_24adf64159_o.png"&gt;&lt;img src="http://farm1.static.flickr.com/93/206361258_24adf64159.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;firefox adres satırına &lt;a href="chrome://browser/content/browser.xul"&gt;chrome://browser/content/browser.xul&lt;/a&gt; yazıp XUL'in ne kadar harika bir kütüphane olduğunu görebilirsiniz. XUL ve python entegrasyonunun hız kazanmasını ümit ediyoruz.&lt;/p&gt;

&lt;p&gt;diğer oyuncaklar:&lt;/p&gt;
&lt;a href="chrome://browser/content/aboutDialog.xul"&gt;chrome://browser/content/aboutDialog.xul&lt;/a&gt;&lt;br /&gt;
&lt;a href="chrome://browser/content/pageInfo.xul"&gt;chrome://browser/content/pageInfo.xul&lt;/a&gt;&lt;br /&gt;
&lt;a href="chrome://browser/content/bookmarks/bookmarksPanel.xul"&gt;chrome://browser/content/bookmarks/bookmarksPanel.xul&lt;/a&gt;&lt;br /&gt;
&lt;a href="chrome://browser/content/bookmarks/bookmarksManager.xul"&gt;chrome://browser/content/bookmarks/bookmarksManager.xul&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114242041072561600?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114242041072561600/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114242041072561600&amp;isPopup=true' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114242041072561600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114242041072561600'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/03/modler-sistem-nedir.htm' title='modüler sistem nedir ?'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23831712.post-114219832371196894</id><published>2006-03-12T23:10:00.000+02:00</published><updated>2006-03-25T10:57:11.803+02:00</updated><title type='text'>penguen yuvası</title><content type='html'>&lt;p&gt;Düşündüm taşındım, "&lt;i&gt;Bir emir erinin yeri; gemisidir.&lt;/i&gt;" diye karar verdim. Artık bilgisayara dayalı muhabbetleri buradan yürütme kararı aldım.&lt;/p&gt;

&lt;pre&gt;
-- Fırat senin sitene girdik yok gnome, yok linux falan ne öyle!
   Adam gibi bişeyler yok mu hiç?
-- Ama .. Ama ...
&lt;/pre&gt;

&lt;pre&gt;
-- Fırat, abi senin sitene girdik, linux felan bişiler vardı. Abi ne oluo bu linux?
-- Şimdi hocam bu özgür yazılım, istediğin gibi kodlarını değiştirion.
-- Yani beleş mi?
-- Beleş değil! Özgüüür..
&lt;/pre&gt;

&lt;p&gt;Valla haklısınız diyorum, siz beni dinledikten sonra on parçaya da bölünürüm. :P&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23831712-114219832371196894?l=penguenyuvasi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://penguenyuvasi.blogspot.com/feeds/114219832371196894/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23831712&amp;postID=114219832371196894&amp;isPopup=true' title='11 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114219832371196894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23831712/posts/default/114219832371196894'/><link rel='alternate' type='text/html' href='http://penguenyuvasi.blogspot.com/2006/03/penguen-yuvas.htm' title='penguen yuvası'/><author><name>Fırat KÜÇÜK</name><uri>http://www.blogger.com/profile/05604261011634906365</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_A81MeCmETic/Sui9hMefusI/AAAAAAAAALo/knduV8TgBGg/s1600-R/buzz.jpg'/></author><thr:total>11</thr:total></entry></feed>
