<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hamit&#039;in yeri</title>
	<atom:link href="http://hamitsarmis.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hamitsarmis.wordpress.com</link>
	<description>Dev bir Bilişim Hamlesi</description>
	<lastBuildDate>Sat, 21 Jan 2012 23:15:32 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hamitsarmis.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hamit&#039;in yeri</title>
		<link>http://hamitsarmis.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hamitsarmis.wordpress.com/osd.xml" title="Hamit&#039;in yeri" />
	<atom:link rel='hub' href='http://hamitsarmis.wordpress.com/?pushpress=hub'/>
		<item>
		<title>HTTP Headers</title>
		<link>http://hamitsarmis.wordpress.com/2011/05/16/headers/</link>
		<comments>http://hamitsarmis.wordpress.com/2011/05/16/headers/#comments</comments>
		<pubDate>Mon, 16 May 2011 10:56:11 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[Önemli Bilgiler]]></category>
		<category><![CDATA[http headers]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=216</guid>
		<description><![CDATA[HTTP protokolü, halk arasında internet, bazı header&#8217;lara sahiptir. Bu header&#8217;lar, request ve response&#8217;ların yani gönderilen isteklerin ve buna verilen cevapların mesajlarıdır. Aşağıda bazı headerları görebilirsiniz: Accept =&#62; Kabul edilen içerik tipleri =&#62; Accept: text/plain Accept-Charset =&#62; Kabul edilen karakter kodlamaları =&#62; Accept-Charset: utf-8 Accept-Encoding =&#62; Kabul edilen encoding tipleri =&#62; Accept-Encoding: Accept-Language =&#62; Kabul edilen [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=216&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>HTTP protokolü, halk arasında internet, bazı header&#8217;lara sahiptir. Bu header&#8217;lar, request ve response&#8217;ların yani gönderilen isteklerin ve buna verilen cevapların mesajlarıdır. Aşağıda bazı headerları görebilirsiniz:</p>
<p><code>Accept =&gt; Kabul edilen içerik tipleri =&gt; Accept: text/plain</code><br />
<code>Accept-Charset =&gt; Kabul edilen karakter kodlamaları =&gt; Accept-Charset: utf-8</code><br />
<code>Accept-Encoding =&gt; Kabul edilen encoding tipleri =&gt; Accept-Encoding: </code><br />
<code>Accept-Language =&gt; Kabul edilen diller =&gt; Accept-Language: en-US</code><br />
<code>User-Agent =&gt; Web browser'ınızın modelini belirten string =&gt; User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)</code><br />
<code>Referer =&gt; Eğer siteye bir linki tıklayarak gelmişseniz, bu linkin adresi =&gt; Referer: http://www.hamitsarmis.com/</code></p>
<p>Daha fazla header&#8217;ı öğrenmek için küçük bir arama yapabilirsiniz. Benim bu yazıda üzerinde durmak istediğim iki header: User-Agent ve Referer. Diyelim ki bir site yaptınız ve kimlerin sizin sitenize link verdiğini öğrenmek istiyorsunuz. Yapmanız gereken sayfa görüntülenirken Referer header&#8217;ının olup olmadığına bakmak. Eğer Referer varsa birisi linki tıklayarak gelmiştir yoksa adresi manuel yazarak ya da kopyalayarak gelmiştir.</p>
<p>Diğer üzerinde durmak istediğim header: User-agent. <code>Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)</code> şeklinde bir string istek yaptığınız server&#8217;a şu bilgileri verir:<br />
<code><br />
MS Internet Explorer 9.0 =&gt; Kullandığınız browser<br />
Windows NT 6.1 =&gt; Windows 7. (Windows NT 5.x =&gt; XP, Windows NT 6.0 =&gt; Vista)</code></p>
<p>Dolayısıyla bir siteye girdiğiniz zaman işletim sistemi web browser tipi gibi özelliklerinizi otomatik olarak bildirmiş olursunuz. Bunu yapan kullandığınız browser&#8217;dır. Örneğin iphone 3 ile bağlanırsanız:<br />
<code><br />
Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16</code></p>
<p>gibi bir string gönderirsiniz. Örneğin facebook.com&#8217;a bu header&#8217;ı gönderirseniz, facebook sizi otomatik olarak m.facebook.com&#8217;a yönlendirecektir.</p>
<p>Girdiğiniz sitenin hakkınızda bu bilgilere sahip olmasını istemiyorsanız, bir firefox plugini olan User Agent Switcher&#8217;ı denemenizi tavsiye ederim. Bu stringi ister kendi atadığınız saçma bir karakter dizisi olarak da belirleyebilirsiniz, isterseniz iphone 3&#8242;ten giriyormuşsunuz gibi de gösterebilirsiniz. Ama unutmayın browser compability sorunu varsa, header değiştirmek işe yaramaz, sadece girdiğiniz siteyi kandırmış olursunuz&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=216&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2011/05/16/headers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>
	</item>
		<item>
		<title>Rails ActiveRecord</title>
		<link>http://hamitsarmis.wordpress.com/2010/10/28/activerecord/</link>
		<comments>http://hamitsarmis.wordpress.com/2010/10/28/activerecord/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 07:56:13 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=190</guid>
		<description><![CDATA[Ruby On Rails&#8217;in MVC (Model &#8211; View &#8211; Controller) yapısının Model ayağını oluşturan activerecord, Rails&#8217;e &#8216;agile development&#8217; olgusunu kazandıran kullanışlı yapılardan biridir. Size activerecord&#8217;un bazı özelliklerini basit bir örnekle anlatmaya çalışacağım&#8230; Örneğimiz bir makale sitesinin öğeleri arasındaki etkileşimi belirlemek olsun. Kullanıcılar makale ekleyip bu makalelere yorum yapabilsin. Nesneleri tanımlarsak; user =&#62; Sistemi kullanan insanlardır. Makale [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=190&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ruby On Rails&#8217;in MVC (Model &#8211; View &#8211; Controller) yapısının Model ayağını oluşturan activerecord, Rails&#8217;e &#8216;agile development&#8217; olgusunu kazandıran kullanışlı yapılardan biridir. Size activerecord&#8217;un bazı özelliklerini basit bir örnekle anlatmaya çalışacağım&#8230;</p>
<p>Örneğimiz bir makale sitesinin öğeleri arasındaki etkileşimi belirlemek olsun. Kullanıcılar makale ekleyip bu makalelere yorum yapabilsin. Nesneleri tanımlarsak;</p>
<p>user =&gt; Sistemi kullanan insanlardır. Makale ekleyebildikleri gibi, makalelere yorum da yapabilirler. Veritabanında kullanıcı adını, mailini, doğum tarihini tutalım. Sütunlar; username, email ve birthday olsun.</p>
<p>entry =&gt; user tarafından eklenen makalelerdir. Veritabanında kim tarafından eklendiğini, başlığını ve içeriğini tutalım. Sütunlar; entry_header, entry_text ve entry_author olsun. Tahmin edebileceğiniz gibi entry_author makalenin yazarı olup foreign key oluyo <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>comment =&gt; her entry için bir kullanıcı tarafından yorum yapılabilir. Yorumun hangi kullanıcı tarafından yapıldığını, hangi entry için yapıldığını tutalım. Sutunlar; comment_text, commented_to ve commented_by olsun. commented_to hangi makaleye eklendiğini belirten, commented_by ise kim tarafından eklendiğini gösteren foreign keydir&#8230;</p>
<p>Buna göre;</p>
<p>bir user, birden fazla entry sahibi olabilir. Bununla birlikte birden fazla entry için birden fazla yorum yapabilir.</p>
<p>bir entry, bir user&#8217;a ait olup, birden fazla yoruma sahip olabilir.</p>
<p>bir comment, bir entry&#8217;e ait olup, bir user tarafından yapılmıştır.</p>
<p>Bu durumda;</p>
<p>user <code>has_many</code> (çok sayıda sahip) entries (çok sayıda entry ingilizce çoğulu entries ile belirtilir) ve <code>has_many</code> comments,</p>
<p>entry <code>belongs_to</code> (ait olmak) user ve <code>has_many comments,</code></p>
<p>comment ise <code>belongs_to</code> user and <code>belongs_to</code> entry</p>
<p>ilişkilerine sahip olacaktır. Burada işin güzel tarafı entries ya da comments ifadelerinde olduğu gibi sona getirilen çoğul eklerinin nedensiz yere kullanılmamasıdır&#8230;</p>
<p>Örneğin bir comment birden fazla user&#8217;a ya da entry&#8217;e ait olsaydı belongs_to <em><strong><code>users</code></strong></em> ve belongs_to <em><code><strong>entries</strong></code></em> diyecektik yani user ve entry varlıklarının çoğullarını kullanacaktık. Rails modeller arasındaki ilişkiyi buradan anlayacak kadar zekidir&#8230;</p>
<p>Model tanımlamalarımızı bu şekilde yaptıktan sonra bunları kullanma konusuna gelelim:</p>
<p>Örneğin entries için yazdığımız show view&#8217;i için bir entry&#8217;ye ait olan yorumları da listelemek için yapmamız gereken tek şey;</p>
<p><code>&lt;% @entry.comments.each.do |comment| %&gt;</code></p>
<p><code>&lt;p&gt;Comment: &lt;%= comment.comment_text %&gt; &lt;/p&gt;</code></p>
<p><code>&lt;% end %&gt;</code></p>
<p>kodunu eklemek&#8230; Rails burada @entry&#8217;den sonra yazdığımız comments öğelerini bulmak için &#8216;<code>select * from comments where entry_id = 1</code>&#8216; gibi bir sql komutu çalıştırır.</p>
<p>Java MVC frameworklerinde türlü türlü bean&#8217;ler, getter ve setterlar tanımlarken rails sizi bunlarla hiç uğraştırmaz&#8230;</p>
<p>Ancak yukarıdaki kodu kullandığınızda hata alırsınız. Çünkü Comments tablomuzda yorumun hangi entry için yapıldığını tutuyoruz ve bunu entry_id gibi bir sütunda tutmuyoruz commented_to gibi tamamen kendi belirlediğimiz bir sutunda tutuyoruz. Dolayısıyla yukarıda yazdığım sql cümlesi entry_id diye bir sutun bulunamadı der, kızar. Ne yapacağız? Cevap çok basit:</p>
<p><code>:foreign_key =&gt; 'commented_to'</code> kodunu eklemek&#8230;</p>
<p>İşte size model classlarımızın son hali:</p>
<p><strong>user.rb</strong></p>
<p><code>class User &lt; ActiveRecord::Base<br />
has_many :entries<br />
has_many :comments<br />
validates_presence_of :username, :first_name, :last_name, :birthday, :email, :job<br />
validates_uniqueness_of :username<br />
end</code></p>
<p><strong>entry.rb</strong></p>
<p><code>class Entry &lt; ActiveRecord::Base<br />
belongs_to :user, :foreign_key =&gt; 'entry_author'<br />
has_many :comments, :foreign_key =&gt; 'commented_to'<br />
validates_presence_of :entry_header, :entry_text, :entry_author<br />
end</code></p>
<p><strong>comment.rb</strong></p>
<p><code>class Comment &lt; ActiveRecord::Base<br />
belongs_to :user, :foreign_key =&gt; "commented_by"<br />
belongs_to :entry, :foreign_key =&gt; "commented_to"<br />
validates_presence_of :comment_text, :commented_to, :commented_by<br />
end</code></p>
<p>Benim anlatımımı beğenmediyseniz ( ki ben bile beğenmedim <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), aşağıdaki videoyu izleyebilirsiniz:</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='600' height='368' src='http://www.youtube.com/embed/FdeQmEY6phA?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/190/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=190&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2010/10/28/activerecord/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>
	</item>
		<item>
		<title>While içinde Form Değişkenlerini Değiştirmek</title>
		<link>http://hamitsarmis.wordpress.com/2010/08/18/application-doevents/</link>
		<comments>http://hamitsarmis.wordpress.com/2010/08/18/application-doevents/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 16:31:19 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[DoEvents]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=179</guid>
		<description><![CDATA[Bu yazımda C# form uygulaması içerisinde while döngüsü kullandığımızda döngünün içinde form öğelerinin değerlerini nasıl değiştireceğimizi anlatacağım. Aslında işi yapan sadece Application.DoEvents(); kodunu eklemek&#8230; Aradaki farkı görünce ne demek istediğimi daha iyi anlayacaksınız: Aşağıdaki kodla Button1&#8242;e basıldığında label1&#8242;in text&#8217;ini her döngüye girişte elde ettiğimiz değeri gösterecek şekilde değiştiriyoruz ama çalıştırırsanız; işe yaramadığını, programın &#8216;Yanıt Vermiyor&#8217; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=179&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bu yazımda C# form uygulaması içerisinde while döngüsü kullandığımızda döngünün içinde form öğelerinin değerlerini nasıl değiştireceğimizi anlatacağım. Aslında işi yapan sadece Application.DoEvents(); kodunu eklemek&#8230;<br />
Aradaki farkı görünce ne demek istediğimi daha iyi anlayacaksınız:</p>
<p>Aşağıdaki kodla Button1&#8242;e basıldığında label1&#8242;in text&#8217;ini her döngüye girişte elde ettiğimiz değeri gösterecek şekilde değiştiriyoruz ama çalıştırırsanız; işe yaramadığını, programın &#8216;Yanıt Vermiyor&#8217; durumuna geçtiğini görürsünüz.</p>
<p><code>private void button1_Click(object sender, EventArgs e)<br />
{<br />
button1.Enabled = false;<br />
int deger = 0;<br />
while(true)<br />
{<br />
deger++;<br />
label1.Text = "Deger: "+deger;<br />
}<br />
}</code></p>
<p>Yapmanız gereken tek şey</p>
<p><code>label1.Text  =  "Deger: "+deger;</code></p>
<p>satırından sonra;</p>
<p><code>Application.DoEvents();</code></p>
<p>kodunu eklemek&#8230;</p>
<p>Böyle bir durum neden oluşuyor derseniz;  form uygulamasının kullanıcı arayüzünü döngüden çıktıktan sonra güncellemesi ile ilgili&#8230;</p>
<p>Küçük ama faydalı bir paylaşım yaptığımı düşünerek iyi günler diliyorum efendim <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=179&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2010/08/18/application-doevents/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>
	</item>
		<item>
		<title>Java iş görüşmesinde çıkabilecek sorular</title>
		<link>http://hamitsarmis.wordpress.com/2010/07/17/mulakat/</link>
		<comments>http://hamitsarmis.wordpress.com/2010/07/17/mulakat/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 10:59:33 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[J2SE]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=174</guid>
		<description><![CDATA[Soru: Interface ile Abstract class arasında ne fark vardır? Cevap: Bir abstract class, varsayılan bir davranışı gerçekleyen instance metodlara sahip olabilir. Bir interface ise sadece sabitleri ve instance metodları deklare edebilir fakat varsayılan bir davranışı gerçekleyemez, bütün metodlar abstracttır. Bir interface bütün public üyelere sahiptir ama kesinlikle bir gerçekleme yoktur. Abstract class ise (private, protected&#8230;) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=174&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Soru: Interface ile Abstract class arasında ne fark vardır?<br />
Cevap: Bir abstract class, varsayılan bir davranışı gerçekleyen instance metodlara sahip olabilir. Bir interface ise sadece sabitleri ve instance metodları deklare edebilir fakat varsayılan bir davranışı gerçekleyemez, bütün metodlar abstracttır. Bir interface bütün public üyelere sahiptir ama kesinlikle bir gerçekleme yoktur. Abstract class ise (private, protected&#8230;) öğelere sahip olabilir bunun yanında da abstract metodlar olabilir.</p>
<p>Soru:Java&#8217;da garbage collection amacı nedir? Ne zaman kullanılır?<br />
Cevap: Garbage collection, bir java programında artık kullanılmayacak objeleri tespit edip bunların bellekten temizlenmesi suretiyle kaynakları iyi kullanmayı amaçlar. Kullanıldığı programda erişilemez hale gelen bir java objesi garbage collection&#8217;un hedefidir&#8230;</p>
<p>Soru: Multithreadinde synchronization&#8217;ı açıklayın.<br />
Cevap: Synchronization, paylaşılan kaynaklara çok sayıda threadin erişimini kontrol etmeyi sağlar. synchronization olmazsa bir threadin kullandığı değerin bir başka thread tarafından aynı anda erişilmesi sonucu ortaya çıkar ki bu da hatalara neden olur.</p>
<p>Soru: Thread&#8217;in kullanım şekillerini açıklayınız.<br />
Cevap: Runnable interface&#8217;i implement edilerek ya da Thread class&#8217;ı extend edilerek kullanılabilir.</p>
<p>Soru: Pass by reference ve pass by value nedir?<br />
Cevap: Pass by reference değeri değil adresi pass etmektir. Pass by value değerin kopyalanmasıdır.</p>
<p>Soru: HashMap ve Map nedir?<br />
Cevap: Map bir interfacetir. HashMap bunu gerçekler.</p>
<p>Soru: HashMap ile HashTable arasındaki fark nedir?<br />
Cevap: HashMap kabaca HashTable&#8217;a eşittir. Sadece HashMap unsynchronized&#8217;dır ve null&#8217;lara izin verir.</p>
<p>Soru: Vector ile ArrayList arasındaki fark nedir?<br />
Cevap: Vector synchronized iken ArrayList değildir.</p>
<p>Soru: Swing ve awt arasında ne fark vardır?<br />
Cevap: Swing awt&#8217;den daha hızlı çalışır.</p>
<p>Soru: Bir constructor ile metod arasındaki fark nedir?<br />
Cevap: Constructor; bir classta o classtan obje oluşturulmasını sağlar. Classla aynı adı taşır, return tipi yoktur, new kelimesi kullanılarak çağırılır.<br />
Metod ise; kendi adı olan, return tipi olan (void de olabilir) ve . kullanılarak çağırılan fonksiyondur.</p>
<p>Soru: Public, private, protected, default nedir?<br />
Cevap: Public; bütün paketlerde visibledır. Private; sadece tanımlı olduğu class&#8217;a visibledır. Protected; aynı paketteki bütün classlara visibledır. Ayrıca protected bir özelliği olan classın subclasslarına da visibledır. Bu subclasslar farklı paketlerde olabilir. Default ise paket içinde herkese visibledır.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/174/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=174&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2010/07/17/mulakat/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>
	</item>
		<item>
		<title>C# exe içine exe gömme ve çalıştırma</title>
		<link>http://hamitsarmis.wordpress.com/2010/02/12/exe-gomme/</link>
		<comments>http://hamitsarmis.wordpress.com/2010/02/12/exe-gomme/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 22:19:50 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[embedded resources]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=157</guid>
		<description><![CDATA[Bu yazımızda hazırladığımız bir exe dosyasını bir başka programla bilgisayarda istediğimiz bir yere nasıl çıkarır ve oradan nasıl çalıştırırız bunu inceleyeceğiz. Bu tarz bir şeye neden ihtiyacım olur diyebilirsiniz ama bir şekilde program dosyanızın belirlediğiniz bir yerde olmasını ve oradan çalışmasını istiyorsanız bunu kullanmak işinize yarayabilir. Ayrıca sadece &#8216;exe&#8217; uzantılı dosyaları değil herhangi bir dosyayı [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=157&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bu yazımızda hazırladığımız bir exe dosyasını bir başka programla bilgisayarda istediğimiz bir yere nasıl çıkarır ve oradan nasıl çalıştırırız bunu inceleyeceğiz. Bu tarz bir şeye neden ihtiyacım olur diyebilirsiniz ama bir şekilde program dosyanızın belirlediğiniz bir yerde olmasını ve oradan çalışmasını istiyorsanız bunu kullanmak işinize yarayabilir. Ayrıca sadece &#8216;exe&#8217; uzantılı dosyaları değil herhangi bir dosyayı da exe dosyasının içine gömebilirsiniz. Örneğin programınız için gerekli tüm dosyaları bu şekilde exe içinde tutabilirsiniz.</p>
<p>Programımıza gömmek istediğimiz exe dosyası &#8216;a.exe&#8217; olsun. Bunu öncelikle programımıza resource olarak tanıtmamız gerekir. Bunun için Solution Explorer&#8217;da proje adına sağ tıklayıp &#8216;Properties&#8217; diyoruz. Açılan pencerede soldan Resources&#8217;i tıklıyoruz. Add Resource ve Add Existing File dedikten sonra &#8216;a.exe&#8217; dosyamızı seçiyoruz. Aşağıda bu işlemin ekran çıktısını görebilirsiniz.</p>
<p><img class="alignnone" title="resources" src="http://hamitsarmis.files.wordpress.com/2010/02/embed01.png?w=646&#038;h=433" alt="" width="646" height="433" /></p>
<p>Şu anda Resource&#8217;umuzu ekledik. Sıra geldi bu Resource&#8217;un tipini &#8216;Embedded Resource&#8217; yapmaya.. Bunu yapmazsak exe içine gömemeyiz. Bu iş için Solution Explorer&#8217;da Resources klasörünü genişletip exe dosyasına tıklayacağız. Properties Ekranında Build Action özelliğini &#8216;Embedded Resources&#8217; yapıp değişiklikleri kaydedeceğiz. Bu işlem için çıktı da aşağıda:</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2010/02/embed02.png"><img class="alignnone size-large wp-image-159" title="embed02" src="http://hamitsarmis.files.wordpress.com/2010/02/embed02.png?w=627&#038;h=400" alt="" width="627" height="400" /></a></p>
<p>Evet şu anda kullanmak istediğimiz exe dosyasını gömdük. Artık bu exe dosyasını istediğimiz gibi kullanabiliriz. Diyelim ki bu exe dosyasını D:\ içerisine çıkarmak istiyoruz. Bunun için aşağıdaki kodları kullanacağız:</p>
<p><code>Assembly assembly = Assembly.GetExecutingAssembly();<br />
String[] resourceNames =  assembly.GetManifestResourceNames();<br />
Stream stream = null;<br />
foreach (String  resourceName in resourceNames)<br />
{<br />
if  (resourceName.Contains("a.exe"))<br />
{<br />
stream =  assembly.GetManifestResourceStream(resourceName);<br />
FileStream fileStream = new FileStream("<strong>D:\\a.exe</strong>", FileMode.Create,  FileAccess.Write);<br />
dosyayayaz(stream,  fileStream);<br />
}<br />
}<br />
private void dosyayayaz(Stream  readStream, FileStream writeStream)<br />
{<br />
int Length =  256;<br />
Byte[] buffer = new Byte[Length];<br />
int  bytesRead = readStream.Read(buffer, 0, Length);<br />
while (bytesRead  &gt; 0)<br />
{<br />
writeStream.Write(buffer, 0,  bytesRead);<br />
bytesRead = readStream.Read(buffer, 0,  Length);<br />
}<br />
readStream.Close();<br />
writeStream.Close();<br />
}</code></p>
<p>Evet bu kodlardan sonra sistemde bir a.exe dosyamız var artık <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Bu dosyanın çalıştırılmasını istiyorsak da</p>
<p><code>ProcessStartInfo psi = new ProcessStartInfo("D:\\a.exe",  "");<br />
Process.Start(psi);</code></p>
<p>kodlarını sisteme ekleyeceğiz. Böylece C:\Users\Kullanici\Desktop içerisinde çalıştırdığımız program D:\&#8217;de çalışmasını istediğimiz diğer programı oluşturmuş ve çalıştırmış oldu. Ne dersiniz hoş olmadı mı ?</p>
<object width="425" height="334"><param name="movie" value="http://www.dailymotion.com/swf/xftyy0"></param><param name="allowfullscreen" value="true"></param><param name="wmode" value="opaque"></param><embed src="http://www.dailymotion.com/swf/xftyy0" width="425" height="334" allowfullscreen="true" wmode="opaque"></embed></object>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=157&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2010/02/12/exe-gomme/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2010/02/embed01.png" medium="image">
			<media:title type="html">resources</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2010/02/embed02.png?w=1024" medium="image">
			<media:title type="html">embed02</media:title>
		</media:content>
	</item>
		<item>
		<title>C# ile mail gönderme</title>
		<link>http://hamitsarmis.wordpress.com/2010/02/11/c-ile-mail-gonderme/</link>
		<comments>http://hamitsarmis.wordpress.com/2010/02/11/c-ile-mail-gonderme/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 14:09:56 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=148</guid>
		<description><![CDATA[Bu yazımızda program aracılığıyla mail gönderme üzerinde duracağız. Öncelikle belirteyim bu işlemi yapabilmeniz için gmail hesabı kullanmanız gerekiyor. Zaten aşağıda vereceğim ayarlar da gmail&#8217;e yönelik&#8230; MailMessage mesaj = new MailMessage(); mesaj.From = new MailAddress("mailadresiniz@gmail.com", "Gorunmesini istediğiniz isim", System.Text.Encoding.UTF8); SmtpClient smtp = new SmtpClient(); mesaj.To.Add("alici@alici.com"); mesaj.Subject = "Konu"; mesaj.IsBodyHtml = false; // mailde html kullanacaksanız true [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=148&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bu yazımızda program aracılığıyla mail gönderme üzerinde duracağız. Öncelikle belirteyim bu işlemi yapabilmeniz için gmail hesabı kullanmanız gerekiyor. Zaten aşağıda vereceğim ayarlar da gmail&#8217;e yönelik&#8230;</p>
<p><code>MailMessage mesaj = new MailMessage();<br />
mesaj.From = new MailAddress("mailadresiniz@gmail.com", "Gorunmesini istediğiniz isim", System.Text.Encoding.UTF8);<br />
SmtpClient smtp = new SmtpClient();<br />
mesaj.To.Add("alici@alici.com");<br />
mesaj.Subject = "Konu";<br />
mesaj.IsBodyHtml = false; // mailde html kullanacaksanız true yapın</code><code><br />
mesaj.BodyEncoding = System.Text.Encoding.UTF8; mesaj.Body = "Mailin içeriği";<br />
mesaj.Priority = MailPriority.Normal;<br />
smtp.Credentials = new System.Net.NetworkCredential("mailiniz@gmail.com", "sifreniz");<br />
smtp.Port = 587;<br />
smtp.Host = "smtp.gmail.com";<br />
smtp.EnableSsl = true;<br />
smtp.Send(mesaj);<br />
</code><br />
Bu kadar.. Bu yolla mail gönderdikten sonra gmail kutunuzda gönderdiğiniz maili gönderilmiş öğeler kutusunda görebilirsiniz&#8230;</p>
<p>Ayrıca mailinize attachment eklemek istiyorsanız;</p>
<p>mesaj.Attachments.Add(new Attachment(&#8220;C:\\aa.txt&#8221;));</p>
<p>kodlarıyla ekleme yapabilirsiniz&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=148&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2010/02/11/c-ile-mail-gonderme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby On Rails ile Web Development</title>
		<link>http://hamitsarmis.wordpress.com/2009/11/02/rubysample/</link>
		<comments>http://hamitsarmis.wordpress.com/2009/11/02/rubysample/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 17:45:31 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[Ruby On Rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=136</guid>
		<description><![CDATA[Ruby On Rails, Ruby dilinin pratik ve güçlü yapısından faydalanarak development yapabileceğimiz bir platformdur. Avantajları saymakla bitmez. Hızlı development konusunda üstüne yoktur. Çünkü her iş için bir plugin bulursunuz. Ayrıca javayı embed edebilir, Ruby dilinin getirdiği bütün güzelliklerden faydalanabilirsiniz. Dizi tanımlarken değişken tipleriyle uğraşmazsınız, hiç ajax bilmeden ajax kullanabilir, javascript, css dosyalarınızı ruby&#8217;nin gücüyle hazırlayabilirsiniz. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=136&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ruby On Rails, Ruby dilinin pratik ve güçlü yapısından faydalanarak development yapabileceğimiz bir platformdur. Avantajları saymakla bitmez. Hızlı development konusunda üstüne yoktur. Çünkü her iş için bir plugin bulursunuz. Ayrıca javayı embed edebilir, Ruby dilinin getirdiği bütün güzelliklerden faydalanabilirsiniz. Dizi tanımlarken değişken tipleriyle uğraşmazsınız, hiç ajax bilmeden ajax kullanabilir, javascript, css dosyalarınızı ruby&#8217;nin gücüyle hazırlayabilirsiniz. Ayrıca veritabanı bağlantısı noktasında da ruby güçlü bir platform sunar.</p>
<p>Ruby&#8217;yi bu kadar övdükten sonra isterseniz hem kurulumu anlatayım, hem de basit bir uygulamayla ruby on rails&#8217;i tanıyalım. Windows üzerinde çalıştığımızı kabul ederek kurulumu anlatacağım. Linux&#8217;u anlatmama gerek yok çünkü zaten paket yöneticileri sağolsun tek tıkla kurabiliyorsunuz..</p>
<p>Öncelikle <a href="http://rubyonrails.org/download">bu siteden</a> windows Installer ve RubyGems indiriyoruz. Windows installer ile kurulum yaptıktan sonra RubyGems dosyasını bir yere çıkarıyoruz. setup.rb dosyasını çalıştırdığımızda gem de kurulmuş oluyor. GEM, bir çeşit APT-GET gibi YUM gibi paket yöneticisidir. Daha sonra konsolda &#8216;gem install rails&#8217; diyoruz..</p>
<p>Rails kurulumu bittikten sonra sıra web uygulamamıza geldi. Konsoldan uygulamamızı kuracağımız directory altına geliyoruz.</p>
<p><code>rails UygulamaAdi</code></p>
<p>komutunu verdiğimizde UygulamaAdi klasörüne web uygulamamız oluşturuluyor. Uygulamamız veritabanından aldığı verileri listeleyen bir uygulama olsun.</p>
<p>Ruby On Rails kısaca ROR, 3 farklı veritabanı üzerinde çalışma imkanı sunar. Birincisi development, ikincisi test, üçüncüsü production..</p>
<p><code>/config/database.yml</code> dosyasını notepad ya da wordpad ile açıyoruz. Veritabanı olarak MYSQL kullanıyoruz. Dosyayı şu şekilde değiştirmeliyiz:</p>
<p>development:<br />
adapter: mysql<br />
encoding: utf8<br />
reconnect: false<br />
database: development_veritabani<br />
pool: 5<br />
username: root<br />
password: rootşifreniz<br />
host: localhost</p>
<p>Aynı şekilde Production ve Test veritabanlarını da değiştirmeliyiz. database.yml dosyasındaki ayarlara göre veritabanımızı oluşturmak için vermemiz gereken komut oldukça basit:</p>
<p><code>rake db:create</code></p>
<p>rake rails kurulumu sırasında gelir ve veritabanı işlemlerimizi yapar. İleride diğer rake argümanlarını da göreceğiz.</p>
<p>Uygulamamız Student adında bir nesneyle ilişkili olsun. Bunun için Students adında bir tablo oluşturmamız gerekecek. Bunun için sql komutlarıyla falan uğraşmamız gerekmiyor. İşte bu işi nasıl yaparız sorusunun cevabı:</p>
<p><code>ruby script\generate scaffold Student name:string age:integer</code></p>
<p>Bu komuttan sonra students adında bir model oluşturulur.</p>
<p>&#8216;/app/views/students&#8217;, &#8216;/app/controllers/students_controller.rb&#8217;, &#8216;/app/models/students.rb&#8217; &#8230;</p>
<p>şimdi bu scaffold&#8217;a göre veritabanı tablomuzu oluşturmalıyız. Windows&#8217;ta aşağıdaki kodu çalıştırırken hata alıyorsanız <a href="http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll">BU DLL DOSYASINI</a> C:\Ruby\bin\ klasörü içine atınız:</p>
<p><code>rake db:migrate</code></p>
<p>Rake, burada bizim için Students tablosunu oluşturur. Şimdi sıra /config/routes.rb dosyasını değiştirmeye geldi. routes.rb dosyasını wordpad ile açıyoruz. # map.root :controller =&gt; &#8220;welcome&#8221; için arama yapıyoruz. Bu satırı  map.root :controller =&gt; &#8220;students&#8221; olarak değiştirmeliyiz. Ayrıca /public/index.html dosyasını da silmeliyiz.</p>
<p>Bu aşamada artık sitemiz hazır. İsterseniz</p>
<p>ruby script\server diyerek sitenize erişebilirsiniz. Default adres http://localhost:3000/ olarak belirlenmiştir.</p>
<p>&#8220;routes. rb&#8221; dosyasında map.root :controller =&gt; &#8220;students&#8221; diyerek belirttiğimiz şey sitenin anasayfasının students controller&#8217;ı olduğudur. /app/views/students klasöründe  &#8216;index.html.erb&#8217; sayfası artık bizim anasayfamız oldu..</p>
<p>Şu an veritabanından okuyan, veritabanına ekleme yapabilen, güncelleme yapabilen ve veri silebilen bir uygulamamız oldu. İsterseniz gelin bir de zorunlu alanların boş bırakılamaması uyarısı verelim.</p>
<p>Yapacağımız şey oldukça basit:</p>
<p><code>/app/models/student.rb</code> içerisine</p>
<p><code>validates_presence_of :name, :age</code></p>
<p>eklemek..</p>
<p>Şimdi bir veri eklemek istediğinizde name ya da age için hiç bir şey yazmazsanız zorunlu alanlar boş bırakılamaz uyarısı alırsınız&#8230;</p>
<p>Diyelim ki çok fazla sayıda veriniz var ve siz bunları sayfa sayfa görüntülemek istiyorsunuz. Bunun için de kod yazmanıza hiç gerek yok. Tek yapmanız gereken &#8216;will_paginate&#8217; pluginini sitenize eklemek..</p>
<p>/config/environment.rb dosyasında</p>
<p><code>Rails::Initializer.run do |config|</code><br />
kod bloğu içine</p>
<p><code>config.gem 'will_paginate', :version =&gt; '~&gt; 2.3.11', :source =&gt; 'http://gemcutter.org'</code></p>
<p>satırını ekleyin. Daha sonra</p>
<p><code>rake gems:install</code></p>
<p>komutunu verin. Şu anda sitemizde will_paginate plugini kullanıma hazır. Bunu istediğimiz controller için kullanabiliriz.  Students için kullanacağımızdan</p>
<p>/app/controllers/students_controller.rb dosyasını açıyoruz</p>
<p>def index<br />
@students = Student.all<br />
respond_to do |format|<br />
format.html # index.html.erb<br />
format.xml  { render <img src='http://s2.wp.com/wp-includes/images/smilies/icon_mad.gif' alt=':x' class='wp-smiley' /> ml =&gt; @students }<br />
end<br />
end</p>
<p>şeklindeki kod bloğunda <code>@students = Student.all</code> satırını <code>@students = Student.paginate(:per_page =&gt; 10, :page =&gt; params[:page])</code> şeklinde değiştirin. Kaydedip kapatın.</p>
<p>Daha sonra</p>
<p>/app/views/students/index.html.erb</p>
<p>dosyasını açın.</p>
<p>Sayfalama işleminin görünmesini istediğiniz yere</p>
<p><code>&lt;%= will_paginate @students %&gt;</code></p>
<p>kodunu ekleyin. Böylelikle artık her sayfada 10 entry olmak üzere verileriniz listelenecektir.</p>
<p>Diyelim ki bu sayfanın herkes tarafından görüntülenmesini istemiyorsunuz. Basic Http Authentication işleminin ne kadar kolay olduğunu görme zamanınız geldi demektir..</p>
<p>/app/controllers/students_controller.rb dosyasında</p>
<p>class StudentsController &lt; ApplicationController<br />
# GET /students<br />
# GET /students.xml</p>
<p>satırlarını görürsünüz..</p>
<p>class StudentsController &lt; ApplicationController<br />
before_filter :authenticate<br />
# GET /students<br />
# GET /students.xml</p>
<p>şeklinde değiştirin. En sondaki <code>end</code>den önce de şu kodu ekleyin:<br />
<code>protected</code><br />
<code>def authenticate</code><br />
<code>authenticate_or_request_with_http_basic do |username, password|</code><br />
<code>username == "hamit" &amp;&amp; password == "1234"</code><br />
<code>end</code><br />
<code>end</code></p>
<p>Artık kullanıcı adı olarak hamit şifre olarak 1234 girmedikçe kimse sitenize erişemeyecek..</p>
<p>Bir başka tutorialde görüşmek üzere..</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=136&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2009/11/02/rubysample/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>
	</item>
		<item>
		<title>Visual JSF ile Login Uygulaması</title>
		<link>http://hamitsarmis.wordpress.com/2009/09/26/loginapplication/</link>
		<comments>http://hamitsarmis.wordpress.com/2009/09/26/loginapplication/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 13:30:43 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=120</guid>
		<description><![CDATA[Yeni bir tutorial ile daha birlikteyiz. Belki de temel olması açısından önce JSP anlatmalıydım ama JSP ile ilgili bol miktarda kaynak bulabilirsiniz. Bu yazımızda MYSQL veritabanında tuttuğumuz kullanıcı adı ve şifrelerle login işlemi yapacağız. Temelde öğreneceğimiz üç şey var: Session içine kullanıcı adını atmak, JSP sayfasıyla java kodunu bind etmek ve faces-config.xml dosyasını kullanmak.. Netbeans [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=120&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yeni bir tutorial ile daha birlikteyiz. Belki de temel olması açısından önce JSP anlatmalıydım ama JSP ile ilgili bol miktarda kaynak bulabilirsiniz. Bu yazımızda MYSQL veritabanında tuttuğumuz kullanıcı adı ve şifrelerle login işlemi yapacağız. Temelde öğreneceğimiz üç şey var: Session içine kullanıcı adını atmak, JSP sayfasıyla java kodunu bind etmek ve faces-config.xml dosyasını kullanmak..</p>
<p>Netbeans IDE 6.7.1 kullanarak görelim. New -&gt; Project -&gt; Java -&gt; Web Application diyoruz. Projenin ismini verdikten sonra Glassfish ya da Apache Tomcat server seçebilirsiniz. İkisiyle de uygulama çalışır. Daha sonra next diyerek Frameworks kısmından Visual Web Java Server Faces seçip Finish diyoruz.</p>
<p>Daha sonra paletten bir textfield sürükle &#8211; bırak yapıyoruz.  Daha sonra bir passwordfield birer label ve bir de buton ekliyoruz.. Labellerin isimlerini uygun şekilde değiştiriyoruz..</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/visual.jpg"><img class="alignnone size-medium wp-image-121" title="visual" src="http://hamitsarmis.files.wordpress.com/2009/09/visual.jpg?w=600&#038;h=330" alt="visual" width="600" height="330" /></a></p>
<p>Şimdi veritabanını sisteme ekleyelim. Bunun için solda Projects, Files, Services olarak dizilmiş sekmelerden services sekmesine tıklıyoruz. Oradan veritabanımızı alıp yukarıdaki alana sürükle bırak yapıyoruz.<br />
<a href="http://hamitsarmis.files.wordpress.com/2009/09/veritabani.jpg"><img class="alignnone size-medium wp-image-121" title="visual" src="http://hamitsarmis.files.wordpress.com/2009/09/veritabani.jpg?w=600&#038;h=330" alt="visual" width="600" height="330" /></a></p>
<p>Yukarıda gördüğünüz gibi sürükle bırak yaptığımız tablo users tablosudur. Sürükle bırak yapıldığında hem page1.jsp hem de SessionBean1.java değişir. Çünkü yapılan dataprovider oluşturulmasıdır. SessionBean1.java&#8217;da ise bu dataprovider&#8217;a ait rowSet oluşturulur.</p>
<p>İki dosyayı da (Page1.jsp ve SessionBean1.java) kaydediyoruz.</p>
<p>Sırada binding yapmak var.. Bunun için önce Java kodunda bind edeceğimiz nesneleri oluşturmalıyız. Bu nesneler private olup getter ve setter fonksiyonlara sahip olmak zorunda.. Netbeans&#8217;te getter ve setter eklemek için Alt + F2 tuş kombinasyonunu kullanabilirsiniz..</p>
<p>Sırasıyla TextField, PasswordField, Button için 3 adet private obje oluşturacağız.</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/javakodu.jpg"><img class="alignnone size-full wp-image-123" title="javakodu" src="http://hamitsarmis.files.wordpress.com/2009/09/javakodu.jpg?w=600&#038;h=378" alt="javakodu" width="600" height="378" /></a></p>
<p>Getter ve setter metodlarını da Alt + F2 kullanarak eklediğimizde java dosyamızı kaydedebiliriz. Sıra geldi JSP kodunu bind etmeye..</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/binding.jpg"><img class="alignnone size-full wp-image-124" title="binding" src="http://hamitsarmis.files.wordpress.com/2009/09/binding.jpg?w=600&#038;h=235" alt="binding" width="600" height="235" /></a></p>
<p>Binding yaparken örneğin textField1 için  id = &#8220;textField1&#8243; kısmından sonra b tuşuna basıyoruz ve otomatik kod tamamlama bizim için binding çıkarıyor. Eğer çıkmazsa boşluk + ctrl tuşlarına basınız. Daha sonra &lt;&lt;binding = &#8220;&#8221;&gt;&gt; içine #{Page1.userfield} yazdığımızda işlem bitiyor.. Bütün bileşenler için yaptıktan sonra kaydedip kapatıyoruz.</p>
<p>Artık java kodumuzda bunları istediğimiz gibi kullanabiliriz.</p>
<p>Login işlemi Login tuşuna basılınca gerçekleşeceğinden Login tuşuna action eklememiz gerekiyor onu da aşağıdaki gibi sağ tıklayıp Edit Action event handler diyerek yapıyoruz.</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/action.jpg"><img class="alignnone size-full wp-image-125" title="action" src="http://hamitsarmis.files.wordpress.com/2009/09/action.jpg?w=600&#038;h=610" alt="action" width="600" height="610" /></a></p>
<p>Otomatik olarak java kodunda return tipi String olan button1_action() metodu oluşturulur. Bu arada JSP kodu da değişir (Metod eklenmesinden dolayı).  JSP kodunu kaydedin bundan sonra işimiz java koduyla olacak..</p>
<p>Öncelikle yapmamız gereken userField ve passwordField içindeki değerleri almak, bunun için aşağıdaki kodları yazıyoruz:</p>
<p><code>String userFieldString = (String) userfield.getText();<br />
String passFieldString = (String) passwordfield.getText();</code></p>
<p>Daha sonra bunların veritabanında olup olmadığına bakmalıyız. Bunun için de şu kodları yazalım:<br />
<code><br />
String[] fieldIds = new String[]{"username", "password"};<br />
Object[] values = new Object[]{userFieldString,passFieldString};</code></p>
<p>DataProvider nesnemizin findfirst metodundan yararlanacağız. Yukarıda fieldIds ile gördüğünüz string dizisinde veritabanı sütun adı yazıyor. values de bu sütunlara ait değerleri içeriyor.</p>
<p><code>RowKey rk = usersDataProvider.findFirst(fieldIds, values);</code></p>
<p>Bu kodla kullanıcının olup olmadığını kontrol edebiliriz. Eğer RowKey değişkeni null ise girilen kullanıcı adı / şifre kombinasyonu hatalıdır. İsterseniz bir label bind edip hata mesajı da verdirebilirsiniz.</p>
<p>Sıra geldi SessionBean kullanımına.. Bunun için öncelikle sessionbean1.java dosyasını açıyoruz. Aşağıdaki gibi string tipinde loggedInUsername ve boolean tipinde loggedIn değişkenleri tanımlayıp setter ve getter ekliyoruz.</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/session.jpg"><img class="alignnone size-full wp-image-126" title="session" src="http://hamitsarmis.files.wordpress.com/2009/09/session.jpg?w=600&#038;h=507" alt="session" width="600" height="507" /></a></p>
<p>Dosyayı kaydedip tekrar Page1.java &#8216;ya dönüyoruz..</p>
<p>Hatırlarsanız en son rowkey null ise null döndür demiştik. null döndürüldüğünde aynı sayfa tekrar açılır. Burada bir sıkıntı yok. Şimdi yapmamız gereken null dönmemiş değeri sessionbean&#8217;e atamak ve bir string döndürmek..</p>
<p>Kodun son hali aşağıdaki gibi olacak:</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/javason.jpg"><img class="alignnone size-full wp-image-127" title="javason" src="http://hamitsarmis.files.wordpress.com/2009/09/javason.jpg?w=600&#038;h=180" alt="javason" width="600" height="180" /></a></p>
<p>Gördüğünüz gibi success döndürdük. Başka herhangi bir string de döndürebilirdik. Doğru giriş yapanın başka bir sayfaya yönlendirmesini yapacağız. Onun için page2 gibi bir sayfa ekleyelim.</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/page2.jpg"><img class="alignnone size-full wp-image-128" title="page2" src="http://hamitsarmis.files.wordpress.com/2009/09/page2.jpg?w=600&#038;h=284" alt="page2" width="600" height="284" /></a></p>
<p>Orada &lt;&lt;hoşgeldiniz Kullanıcı adı&gt;&gt; yazsın istiyoruz. Yapmamız gereken tek şey bir label atıp hoşgeldiniz demek.. O da aşağıda:</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/sessioned.jpg"><img class="alignnone size-full wp-image-130" title="sessioned" src="http://hamitsarmis.files.wordpress.com/2009/09/sessioned.jpg?w=600&#038;h=310" alt="sessioned" width="600" height="310" /></a></p>
<p>Bundan sonra yapılacak tek bir şey kalıyor. O da faces-config.xml dosyasını page1&#8242;den success stringi geldiğinde page2&#8242;ye yönlendirme yapacak şekilde değiştirmek..</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/09/facesconfig.jpg"><img class="alignnone size-full wp-image-132" title="facesconfig" src="http://hamitsarmis.files.wordpress.com/2009/09/facesconfig.jpg?w=600&#038;h=447" alt="facesconfig" width="600" height="447" /></a></p>
<p><code>&lt;from-view-id&gt;gelen sayfa&lt;/from-view-id&gt;</code></p>
<p><code>&lt;from-outcome&gt;gelen string&lt;/from-outcome&gt;</code><br />
<code><br />
&lt;to-view-id&gt;nereye gittiği&lt;/to-view-id&gt;</code></p>
<p>şeklinde istediğiniz yönlendirmeyi yapabilirsiniz..</p>
<p>Bir başka tutorialde buluşmak üzere&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=120&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2009/09/26/loginapplication/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/visual.jpg?w=600" medium="image">
			<media:title type="html">visual</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/veritabani.jpg?w=600" medium="image">
			<media:title type="html">visual</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/javakodu.jpg" medium="image">
			<media:title type="html">javakodu</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/binding.jpg" medium="image">
			<media:title type="html">binding</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/action.jpg" medium="image">
			<media:title type="html">action</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/session.jpg" medium="image">
			<media:title type="html">session</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/javason.jpg" medium="image">
			<media:title type="html">javason</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/page2.jpg" medium="image">
			<media:title type="html">page2</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/sessioned.jpg" medium="image">
			<media:title type="html">sessioned</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/09/facesconfig.jpg" medium="image">
			<media:title type="html">facesconfig</media:title>
		</media:content>
	</item>
		<item>
		<title>usbden windows ve linux kurmak</title>
		<link>http://hamitsarmis.wordpress.com/2009/08/27/usbdenossetup/</link>
		<comments>http://hamitsarmis.wordpress.com/2009/08/27/usbdenossetup/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 22:28:18 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[Önemli Bilgiler]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[usb windows]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=106</guid>
		<description><![CDATA[Siz de benim gibi CD kullanmaktan hazzetmiyorsanız ve hele bir de CD sürücünüz çalışmıyorsa format atmak kabusunuz olabilir. Sizi bu dertten kurtarmak da benim görevim efendim Şimdi sizlere usb kullanarak hem windows (xp ya da vista) hem de linux kurmayı anlatacağım.. İhtiyacımız olan şeyler bir adet usb bellek ve BIOS&#8217;unuzun usb&#8217;den başlatmayı destekliyor olması.. Öncelikle [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=106&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Siz de benim gibi CD kullanmaktan hazzetmiyorsanız ve hele bir de CD sürücünüz çalışmıyorsa format atmak kabusunuz olabilir. Sizi bu dertten kurtarmak da benim görevim efendim <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Şimdi sizlere usb kullanarak hem windows (xp ya da vista) hem de linux kurmayı anlatacağım.. İhtiyacımız olan şeyler bir adet usb bellek ve BIOS&#8217;unuzun usb&#8217;den başlatmayı destekliyor olması.. Öncelikle windows&#8217;tan başlıyalım müsadenizle..</p>
<p>Yapmamız gereken USB&#8217;mizi ayarlamak.. Bunun için önce başlat &#8211; çalıştır &#8211; cmd diyoruz. Daha sonra diskpart yazıp enterlıyoruz.. DISKPART&gt; gözüktüğünde list disk diyoruz. Aşağıdaki gibi..</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/08/disk_list.jpg"><img class="alignnone size-full wp-image-107" title="disk_list" src="http://hamitsarmis.files.wordpress.com/2009/08/disk_list.jpg?w=600&#038;h=301" alt="disk_list" width="600" height="301" /></a></p>
<p>Şu an yaptığımız iş sistemdeki hard diskleri listelemek. Görüldüğü üzere 93 GB benim kendi hard diskim 7664 MB da usb belleğim oluyor.. Daha sonra şu şekilde komutları sıralıyoruz:</p>
<p><code>select disk 1</code></p>
<p><code>clean</code></p>
<p><code>create partition primary</code></p>
<p><code>select partition 1</code></p>
<p><code>active</code></p>
<p><code>format fs=fat32</code></p>
<p><code>assign</code></p>
<p><code>exit</code></p>
<p>Disk partition ile işimiz an itibariyle bitmiş oluyor. Sırada windows cdmizin içeriğini usb&#8217;ye kopyalamaya geldi. CD deyince hemen kızmayın iso dosyasından bahsediyorum <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  iso dosyamızın içeriğini bir klasöre kopyalıyoruz mesela D:\CD\ olsun.. usbmiz de E:\ olsun.. Cmd&#8217;ye yazacağımız son komut da aşağıda:</p>
<p><code>xcopy D:\CD\* /s/e/f E:\</code></p>
<p>Bu komut bittiğinde artık hazırız.. Bilgisayarı yeniden başlatıp bios&#8217;u ayarladığımızda kuruluma başlayabiliriz.</p>
<p>Sıra geldi linux&#8217;e..</p>
<p>Bunun için bir program kullanacağız. Adı UNetBootin.. <a href="http://garr.dl.sourceforge.net/project/unetbootin/UNetbootin/356/unetbootin-windows-357.exe">Buradan</a> indirebilirsiniz.. İhtiyacımız olan tek şey iso dosyası ve fat32 dosya sistemiyle formatlanmış bir usb..</p>
<p>Aşağıdaki gibi ISO dosyasını seçiyoruz gerisine karışmıyoruz..</p>
<p><a href="http://hamitsarmis.files.wordpress.com/2009/08/unet.jpg"><img class="alignnone size-full wp-image-108" title="unet" src="http://hamitsarmis.files.wordpress.com/2009/08/unet.jpg?w=600" alt="unet"   /></a></p>
<p>Restart yapıp BIOS&#8217;u ayarladıktan sonra çatır çatır kurulumumuzu yapıp işi bitiriyoruz..</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=106&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2009/08/27/usbdenossetup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/08/disk_list.jpg" medium="image">
			<media:title type="html">disk_list</media:title>
		</media:content>

		<media:content url="http://hamitsarmis.files.wordpress.com/2009/08/unet.jpg" medium="image">
			<media:title type="html">unet</media:title>
		</media:content>
	</item>
		<item>
		<title>Strategy Pattern ve ExcelRunner Projesi</title>
		<link>http://hamitsarmis.wordpress.com/2009/08/19/strategypattern/</link>
		<comments>http://hamitsarmis.wordpress.com/2009/08/19/strategypattern/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 13:38:04 +0000</pubDate>
		<dc:creator>hamitsarmis</dc:creator>
				<category><![CDATA[Design Patterns]]></category>

		<guid isPermaLink="false">http://hamitsarmis.wordpress.com/?p=94</guid>
		<description><![CDATA[Strategy pattern mantığını anlatmak için stajda yaptığım  bir örneği yazıyorum. Kullanıcı programı açtığında 3 adet buton karşısına çıkmalıdır. Bu butonlar Office 2003, Office 2007 ve Open Office olmak üzere 3 ayrı programı temsil eder. Bu butonlara basıldığında ilgili butonun programı çalıştırılarak bir excel dosyası açılmalıdır. Açılan bu dosyada bir array içerisinde tutulan isim ve yaş [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=94&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Strategy pattern mantığını anlatmak için stajda yaptığım  bir örneği yazıyorum.</p>
<p>Kullanıcı programı açtığında 3 adet buton karşısına çıkmalıdır. Bu butonlar Office 2003, Office 2007 ve Open Office olmak üzere 3 ayrı programı temsil eder. Bu butonlara basıldığında ilgili butonun programı çalıştırılarak bir excel dosyası açılmalıdır. Açılan bu dosyada bir array içerisinde tutulan isim ve yaş girdileri olmalıdır.</p>
<p>Proje küçük ve basit bir uygulama gibi görünse de strategy pattern kullanımı için idealdir. Strategy pattern hakkında fikir sahibi olunmadığında butonların actionPerformed metodunda kullanılacak if döngüleriyle sorun halledilebilir ya da her buton için ayrı olarak tanımlanacak actionPerformed metodlarında ayrı implementasyonlar yazılabilir. Ama burada can alıcı soru “İleride Office 2010 gibi bir uygulama çıktığında bunun projeye entegrasyonu en kolay nasıl sağlanabilir?” olmalıdır. Bir başka deyişle “Bu işin yapılması için sağlanabilecek çözümler değişkenken nasıl bir dizayn yöntemi düşünülmelidir ki çözümler değişse bile programın modifikasyonu değişmesin?” olarak ifade edilebilir. Bu sorulara cevap veren Strategy patterndir.</p>
<p>Strategy pattern; main class da dahil olmak üzere 4 çeşit objeden oluşur. Burada programın konuşması interface ile olur; concrete classlara bağımlılık yoktur.</p>
<p><span style="text-decoration:underline;">Strategy (Interface)</span> : Söz konusu işi gerçekleştirecek olan classların bu işi yaparken kullanması gereken metodların deklare edildiği arayüzdür.</p>
<p><span style="text-decoration:underline;">Concrete Strategy</span>: Strategy interface implementasyonunu yapan classlardır. Office2003, Office2007 ve OpenOffice bu projenin concrete strategyleridir.</p>
<p><span style="text-decoration:underline;">Context</span>: Strategy interface ile arasında bir ‘has a’ ilişkisi vardır. Bu interface’in sahip olduğu metodları çağırır.</p>
<p><span style="text-decoration:underline;">Main (Runner)</span>: Context classı ile arasında bir ‘has a’ ilişkisi vardır. Strategylerin yapması gereken işleri Context classı üzerinden yaptırır.</p>
<p>Kısaca işleyişi main class contexte istediği concrete strategy üzerinden erişir şeklinde tanımlayabiliriz. Görüldüğü gibi concrete strategy ne olursa olsun programın etkileşimde olduğu class Context classıdır ve concrete strategy’nin değişmesi bu etkileşimi herhangi bir şekilde değiştirmez. Ayrıca Office2010 gibi bir seçenek eklendiğinde yapılması gereken tek şey main classın contexte Office2010 ile erişmesini sağlayacak kodu sisteme eklemektir.</p>
<p>Projenin classları arasındaki ilişkiden sonra iki soru daha öne çıkmaktadır:</p>
<p>1-) Excel dosyasına veri girişi nasıl sağlanacaktır? <em>Java dilini kullanarak excel dosyalarına erişim yapılmasını sağlayan çeşitli open source frameworkler bulunmaktadır. Bunlardan biri seçilerek veri girişi sağlama noktasındaki sıkıntı aşılabilir.</em></p>
<p>2-) Sistemde excel programı nasıl çalıştırılabilir? <em>Javada harici bir process oluşturma işlemi kolaydır. Fakat asıl sıkıntı excel programının kurulu olduğu yolu bilmek ve oradan execute etmektir. Bunun için yöntem ileride düşünülecektir.</em></p>
<p>İnternette ücretsiz olarak yayınlanan open source java excel frameworkleri Apache POI ve JExcel proje için uygun bulunmuştur. JExcel kullanımına karar verilmiştir. JExcel, jxl.jar dosyası indirilip projeye kütüphane olarak eklendikten sonra geliştirmeye başlanmıştır. Dosyaya yazılacak veriler fields adıyla String[][] tipinde tanımlanmıştır. “sample.xls” adında bir dosya oluşturulup bu dosyanın içine veri girişi yapılmalıdır. Bunu yapan objeler şunlardır:</p>
<p><span style="text-decoration:underline;">WritableWorkbook</span>: jxl.write.WritableWorkbook objesidir. jxl.Workbook objesinin static bir metodu olan ve parametre olarak java.io.File tipinden bir değişken alan createWorkbook isimli metod kullanılarak oluşturulur.</p>
<p><span style="text-decoration:underline;">WritableSheet</span>: WritableWorkbook oluşturulduktan sonra bunun üzerinde çalışma yapılabilmesi için bir sayfa oluşturulmalıdır. Bu da WritableWorkbook objesinin, parametre olarak sayfa adını temsil eden bir String ve tamsayı alan, createSheet metoduyla gerçekleştirilir.</p>
<p>Bundan sonra yapılacak işlem WritableSheet objemize dizimizi yazdırmaktır. Bunun için bir for döngüsünde şu kod kullanılır: (i, for döngüsünün değişkeni olup sıfırdan fields.length’e kadar dönülür)</p>
<p>writableSheet.addCell(new Label(0,i,fields[i][0]));</p>
<p>writableSheet.addCell(new Label(1,i,fields[i][1]));</p>
<p>Burada Label objesinin kullanılma sebebi en kısa yoldan excel hücresi oluşturmaktır. Diğer hücre oluşturma yöntemlerinde bu hücrelerin renkleri gibi pek çok özelliklerinin tanımlanmasını gerektiren format objeleri kullanılması gerektiğinden Label kullanılmıştır.</p>
<p>Yukarıdaki kod for döngüsü içerisinde çalıştırıldıktan sonra işlem ciddi anlamda sona ermiştir. writableWorkbook objesinin write metodu çağırıldıktan sonra close metodu da çağırılarak söz konusu excel dosyasının oluşumu tamamlanmış olur.</p>
<p>Burada dikkat edilmesi gereken bir diğer husus da exception’ların handle edilmesidir. Bunu yapmak amacıyla yukarıdaki işlemlerin anlatıldığı kod bloğu try-catch içerisine alınmıştır. Handle edilmesi gereken exceptionlar WriteException ve IOException olarak sıralanabilir.</p>
<p>Projenin  son aşamasında yapılması gereken ise butonuna basılan excel programının sistemde kurulu olup olmadığını anlamak ve parametre olarak “sample.xls” dosyasını vererek programın açılmasını sağlamaktır.</p>
<p>Javada harici bir process oluşturmak için kullanılan yöntemler araştırılmıştır. Araştırmalar sonucunda javanın Runtime özelliği ile bunun yapılabileceği öğrenilmiştir. Runtime özelliğinin statik bir metodu olan ve sistemin çalışma anındaki Runtime objesini döndüren getRuntime() metodu kullanılarak Runtime objesi elde edilmiş ve bu objenin exec(String command) metodu ile de işlemin gerçekleştirilebileceği görülmüştür.</p>
<p>Runtime objesinin exec metoduna nasıl bir command stringi girilmelidir sorusuna cevap aranmıştır. Command stringi hem söz konusu Office uygulamasının yolunu hem de parametre olan “sample.xls” dosyasının yolunu içermelidir. Office uygulamasının yolunu bulmak için yapılacak en doğru şeyin system registry kayıtlarına bakmak olduğu anlaşılmıştır. Fakat Vista gibi işletim sistemlerinde registry erişimi yapmak için administrator yetkisi gerektiğinden bu yolun default yol olarak kullanılması uygun görülmüştür. Buna göre:</p>
<p>Runtime.getRuntime().exec(“C:\\Program Files\\Microsoft Office\\Office12\\excel.exe”);’in sistemdeki Office 2007 kurulumunun excel dosyasını çalıştırması beklenmiştir.</p>
<p>Default kurulum üzerinden programa ulaşıldığı göz önüne alınırsa geriye “…excel.exe ..” ifadesinde iki nokta ile belirtilen ve “sample.xls” dosyasının yolunu veren stringi bulmak kalmıştır. Bunun için de String filename = System.getProperty(“user.dir”) + “\\sample.xls”; koduyla bu yola erişilmiştir. Burada System.getProperty(“user.dir”) şu anda çalışılan dizini vermektedir. Bir çeşit “pwd” komutu olarak da nitelendirilebilir.</p>
<p>Yukarıda anlatılan sample.xls dosyasını oluşturmak ve excel dosyasını çalıştırmak takdir edileceği üzere strategy objelerinin görevidir. Office2003, Office2007 ve OpenOffice classlarında bu implementasyonlar yazılmıştır.</p>
<p>Main classta bulunan Context classının sahip olduğu Strategy arayüzü  her butonun actionPerformed metodunda değiştirilmekte ve yine aynı metodda işi yapan fonksiyonlar çağırılmaktadır.</p>
<p>Kaynak : Staj defterim <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hamitsarmis.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hamitsarmis.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hamitsarmis.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hamitsarmis.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hamitsarmis.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hamitsarmis.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hamitsarmis.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hamitsarmis.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hamitsarmis.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hamitsarmis.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hamitsarmis.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hamitsarmis.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hamitsarmis.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hamitsarmis.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hamitsarmis.wordpress.com&amp;blog=8646876&amp;post=94&amp;subd=hamitsarmis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hamitsarmis.wordpress.com/2009/08/19/strategypattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3947baad6a86cf9603b87c7762d07acd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hamitsarmis</media:title>
		</media:content>
	</item>
	</channel>
</rss>
