<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GÜVEN ATBAKAN &#187; Web Tasarım &amp; Yazılım</title>
	<atom:link href="http://www.guvenatbakan.net/kategoriler/web-tasarim-yazilim/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guvenatbakan.net</link>
	<description>Lorem ipsum dolor sit amet.</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:40:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Subversion Eğitim Seti</title>
		<link>http://www.guvenatbakan.net/2011/12/05/subversion-egitim-seti/</link>
		<comments>http://www.guvenatbakan.net/2011/12/05/subversion-egitim-seti/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 18:54:27 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[subversion eğitim seti]]></category>
		<category><![CDATA[subversion video]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svn eğitim seti]]></category>
		<category><![CDATA[svn video]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=1125</guid>
		<description><![CDATA[Ülkemizde maalesef screencast olayı çok fazla yok. Aslında makale de çok fazla çıkmıyor. Bu açıdan gerçek anlamda emek verilen ve herkese hitap edebilecek her video eğitimi destekliyorum. Bu destek kapsamında sizlere ceviz.net yöneticilerinden Süleyman Demirkeser&#8217;in hazırladığı &#8220;Subversion sürüm  [...]]]></description>
			<content:encoded><![CDATA[<p>Ülkemizde maalesef screencast olayı çok fazla yok. Aslında makale de çok fazla çıkmıyor. Bu açıdan gerçek anlamda emek verilen ve herkese hitap edebilecek her video eğitimi destekliyorum. Bu destek kapsamında sizlere ceviz.net yöneticilerinden Süleyman Demirkeser&#8217;in hazırladığı &#8220;Subversion sürüm kontrol sistemi&#8221; hakkındaki eğitimi tanıtmak istiyorum.</p>
<p>Windows ortamı için hazırlanan bu eğitim şu konulardan oluşuyor:</p>
<ul>
<li>1. Neden Subversion</li>
<li>2.a Visual SVN Server Kurulumu 04:31</li>
<li>2.b Visual SVN Server ile Reporsitory (Depo) Oluşturmak 06:40</li>
<li>2.c Visual SVN Server Yetkilendirme &#8211; Kullanıcı İşlemleri &#8211; Güvenlik Seviyeleri 09:00</li>
<li>3.a Tortoise SVN Kurulumu 02:11</li>
<li>3.b Tortoise SVN ile Browse, Checkout, Commit, Update İşlemleri 23:23</li>
<li>3.c Geçmişe (History) Dönük İşlemler &#8211; Geçmiş (Show Log), Farklar (Diff) Geri alma (Revert) İşlemleri 10:12</li>
<li>3.d Projeyi Export İşlemi İle Dışarı Alma 02:31</li>
<li>3.e Svn Depo Adresini Değiştirme İşlemi (Relocate) 02:07</li>
<li>3.f Offline Depo İle Çalışmak 05:19</li>
<li>3.g Conflict (Çakışma) Kavramı ve Çözümleme İşlemi 07:29</li>
<li>3.h Tortoise SVN Türkçeleştirme İşlemi 01:50</li>
<li>3.h Tortoise SVN Gözardı edilenler (Ignore) Listesi oluşturma 02:39</li>
<li>3.i Kayıtlı kullanıcı adı ve şifreyi değiştirmek 01:54</li>
<li>4. Dreamviewer ile subversion kullanımı 07:11</li>
<li>5. Google Code ile Subversion Projesi Geliştirmek 06:54</li>
</ul>
<p>Üstelik Süleyman Bey, seti satın aldıktan sonra yeni hazırlayacağı videoları ücretsiz olarak size ulaştırmayı garanti ediyor. Eğitim ücreti ise çok cüzi bir miktar; 10 TL. Eğer sizde svn kurulumunu ve kullanımını öğrenmek istiyorsanız, bu eğitim setini sizlere tavsiye ederim..</p>
<p>http://forum.ceviz.net/duyurular-amp-ilanlar/113053-kod-kaybetmeye-son-subversionsvn-ile-surum-yonetim-sistemi-video-egitimi-cikti.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/12/05/subversion-egitim-seti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ceviz.net güncellendi!</title>
		<link>http://www.guvenatbakan.net/2011/11/01/ceviz-net-guncellendi/</link>
		<comments>http://www.guvenatbakan.net/2011/11/01/ceviz-net-guncellendi/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 22:56:41 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[Web Tasarım & Yazılım]]></category>
		<category><![CDATA[ceviz v6]]></category>
		<category><![CDATA[ceviz wordpress]]></category>
		<category><![CDATA[ceviz.net]]></category>
		<category><![CDATA[ceviz.net yenilendi]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=1112</guid>
		<description><![CDATA[Ceviz.net tasarım değişikliğine gitti ve v5&#8242;ten v6&#8242;ya geçişini gerçekleştirdi.
Uzun yıllar (10 yıldır) bilişim sektöründe Türk kullanıcılarına rehberlik eden ve bu geleneği hiç bozmadan sürdüren Ceviz.net bugün itibariyle yeni site tasarımını kullanmaya başladı. Bununla birlikte v5&#8242;ten  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.grisayfalar.com/wp-content/uploads/2011/11/cevizlogo.png"><img class="alignleft size-full wp-image-1345" title="Ceviz.net" src="http://www.grisayfalar.com/wp-content/uploads/2011/11/cevizlogo.png" alt="" width="142" height="62" /></a>Ceviz.net tasarım değişikliğine gitti ve v5&#8242;ten v6&#8242;ya geçişini gerçekleştirdi.<span id="more-1112"></span></p>
<p>Uzun yıllar (10 yıldır) bilişim sektöründe Türk kullanıcılarına rehberlik eden ve bu geleneği hiç bozmadan sürdüren Ceviz.net bugün itibariyle yeni site tasarımını kullanmaya başladı. Bununla birlikte v5&#8242;ten v6&#8242;ya geçişini tamamlayan site altyapısını da WordPress&#8217;e taşıdı.</p>
<p>Programlama konusunda Türkiye&#8217;de saygın bir yere sahip olan Ceviz.net sahip olduğu Türkçe içerik ile tam bir bilgi deposu konumunda. Ceviz.net, takipçilerine daha doğrusu takip eden yazılımcılara çok şey katmayı başarmıştır. Kullanıcıların programlama üzerine arayıp bulamayacakları bir içerik hemen hemen yok gibi. Web programlama, masaüstü programlama, GNU/Linux, veritabanları, sistem programlama ve bunun gibi birçok konuda yazılmış makalelere ve paylaşımlara siteden erişebilirsiniz.</p>
<p>Yeni yüzü ile birlikte Ceviz.net, kullanıcılara daha fazla bilgi sunabilmeyi amaçlıyor. Kabul etmemiz gerekir ki sitenin eski haline alışık olanlar yeni sayfa görünümünü oldukça karışık buluyorlar. Çünkü eski tasarım çok daha sade bir biçimdeydi. Yeni tasarım ile birlikte yayınlanan haberlerin biraz daha görünür hale geldiğini söylemek mümkün.</p>
<p>Unutmadan Ceviz.net&#8217;in kendine has bir diğer özelliğinden de bahsedeyim: Kariyer köşesi. Burası yazılımcı, tasarımcı, grafiker vb. kişilerin kendilerine iş bulabildikleri, ters açıdan bakacak olursak yazılımcıya veya tasarımcıya ihtiyacı olan kişi ya da kurumların iş verebildiği bir ortam. Diğer bilişim portallarında böyle bir hizmetten söz etmek pek mümkün değil.</p>
<p>Umarım Ceviz.net yeni arayüzü ve yeni altyapısıyla Türk bilişim sektörüne katkı sağlamaya devam eder.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/11/01/ceviz-net-guncellendi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress blogunuzda LaTeX kodları yazın</title>
		<link>http://www.guvenatbakan.net/2011/08/28/wordpress-blogunuzda-latex-kodlari-yazin/</link>
		<comments>http://www.guvenatbakan.net/2011/08/28/wordpress-blogunuzda-latex-kodlari-yazin/#comments</comments>
		<pubDate>Sun, 28 Aug 2011 09:09:29 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[batman equation]]></category>
		<category><![CDATA[latex kodları yazma]]></category>
		<category><![CDATA[wordpress ile latex kodları]]></category>
		<category><![CDATA[wordpress latex]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=1042</guid>
		<description><![CDATA[Bir matematikçi(?) olarak WordPress.com un sunduğu yeni bir hizmet olan Jetpack&#8216;in getirdiği özelliklerden en çok  modülünü beğendim. LaTeX bildiğiniz üzre matematik formülleri yazmamıza yarayan bir betik dili. Tabi sadece matematik formülü yazdıran bir dil dersek LaTeX abimize ayıp etmiş oluruz.  [...]]]></description>
			<content:encoded><![CDATA[<p>Bir matematikçi(?) olarak WordPress.com un sunduğu yeni bir hizmet olan <a href="http://jetpack.me/">Jetpack</a>&#8216;in getirdiği özelliklerden en çok <img src='http://s0.wp.com/latex.php?latex=LaTeX&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='LaTeX' title='LaTeX' class='latex' /> modülünü beğendim. LaTeX bildiğiniz üzre matematik formülleri yazmamıza yarayan bir betik dili. Tabi sadece matematik formülü yazdıran bir dil dersek LaTeX abimize ayıp etmiş oluruz. Detaylı bir yazıyı hakediyor <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Siz de sevgili matematikçiler, matematik formüllerini resim olarak koymak yerine LaTeX ile yazın, mutlu olun <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Bunun için tek yapmanız gereken Jetpack eklentisini yüklemek. Eklentiler bölümünden jetpack araması yaparak kolayca yükleyebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/08/28/wordpress-blogunuzda-latex-kodlari-yazin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>İçimizden bir URL kısaltma servisi</title>
		<link>http://www.guvenatbakan.net/2011/07/18/icimizden-bir-url-kisaltma-servisi/</link>
		<comments>http://www.guvenatbakan.net/2011/07/18/icimizden-bir-url-kisaltma-servisi/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 23:44:47 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[Web Tasarım & Yazılım]]></category>
		<category><![CDATA[oral ünal]]></category>
		<category><![CDATA[togl]]></category>
		<category><![CDATA[togl url kısaltma servisi]]></category>
		<category><![CDATA[togl url shortener]]></category>
		<category><![CDATA[togl.me]]></category>
		<category><![CDATA[trkodlama]]></category>
		<category><![CDATA[url kısaltma servisi]]></category>
		<category><![CDATA[url shortener]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=1005</guid>
		<description><![CDATA[Oral Ünal ile tanıştığımda Matematik ve Bilgisayar Bilimleri bölümünden programlama ile ilgili ve -özellikle- bilgili bir kişi daha bulmuş olmanın sevincini yaşıyordum   Kendisinin oldukça başarılı projeleri var. Bunlardan birisi yazıya konu olan URL Kısaltma Servisi http://www.togl.me
Aslında  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/#!/oralunal">Oral Ünal</a> ile tanıştığımda Matematik ve Bilgisayar Bilimleri bölümünden programlama ile ilgili ve -özellikle- bilgili bir kişi daha bulmuş olmanın sevincini yaşıyordum <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Kendisinin oldukça başarılı projeleri var. Bunlardan birisi yazıya konu olan URL Kısaltma Servisi <a href="http://www.togl.me">http://www.togl.me</a></p>
<p>Aslında domain çok kısa değil <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Açılımı ne onu da bilmiyorum ama topraklarımızdan ve özellikle bölümümden çıkan bu projeyi kutluyorum ve başarılarının devamını diliyorum.  Ben url kısaltması yapacağım zaman bu siteyi kullanacağım. Üstelik üyelik ile birlikte daha önce kısalttığınız linkleride görüntüleme imkanına sahipsiniz. Bir de api ile ilgili güzel bir dökümantasyon hazırlarsa, diğer tüm projelerimizde kullanmamak için bir neden yok sanırsam. Kendisini kutluyor, başarılarının devamını diliyorum.</p>
<p>Oral Ünal ile ilgili bir not: Ceviz.net ten defalarca banlanma yeteneğini göstermiş kişidir <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Övüyorsam illa ki yererim de <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/07/18/icimizden-bir-url-kisaltma-servisi/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>RSA Şifreleme Algoritması</title>
		<link>http://www.guvenatbakan.net/2011/05/08/rsa-sifreleme-algoritmasi/</link>
		<comments>http://www.guvenatbakan.net/2011/05/08/rsa-sifreleme-algoritmasi/#comments</comments>
		<pubDate>Sun, 08 May 2011 18:02:47 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[rsa ile şifreleme]]></category>
		<category><![CDATA[rsa matematiksel yöntemi]]></category>
		<category><![CDATA[rsa şifreleme]]></category>
		<category><![CDATA[rsa şifreleme algoritması]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=853</guid>
		<description><![CDATA[Matematik ve Bilgisayar Bilimleri okuduğumu hissettiren tek ders &#8220;Ayrık Matematik&#8221; oldu. Sebebi; şu anda dünyada en çok kullanılan ve en güvenli şifreleme algoritması olan RSA&#8217;nın matematiksel algoritmasını öğrenmemiz   Hemen bu şifreleme metoduyla ilgili detaylara geçeyim.
RSA nasıl ortaya  [...]]]></description>
			<content:encoded><![CDATA[<p>Matematik ve Bilgisayar Bilimleri okuduğumu hissettiren tek ders &#8220;Ayrık Matematik&#8221; oldu. Sebebi; şu anda dünyada en çok kullanılan ve en güvenli şifreleme algoritması olan RSA&#8217;nın matematiksel algoritmasını öğrenmemiz <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Hemen bu şifreleme metoduyla ilgili detaylara geçeyim.<span id="more-853"></span></p>
<p><strong>RSA nasıl ortaya çıktı?</strong></p>
<p>İki genç birbirini çok sevmekteydi ve gizlice mektuplaşmaktaydılar. Bir gün kızın annesi mektupları gördü ve babasına söyledi. Babası çok kızdı ve bir daha mektup görürse kızını sürgüne göndereceğini söyledi. Bunun üzerine çok üzüldü kız.</p>
<p>Bir gün kız kütüphaneye gidiyorum bahanesiyle çocukla buluştu. Durumu anlattı. Neyseki kız ve çocuk matematikçiydiler. Bunun üzerine birlikte bir çözüm buldular. Gönderdikleri mektupları şifreleyeceklerdi!</p>
<p>Hemen basit bir şifreleme algoritması oluşturdular. Bu algoritmaya göre her harfin bir sayısal karşılığı vardı. Örneğin A için 01 kullanıyorlardı. Bu durumda ASKIM kelimesinin şifreli hali 01 19 09 11 13 oluyordu. Ancak delikanlı bir an duraksadı. Çünkü bu geri dönüşümlü bir şifreydi. Herkes kırabilirdi. Hemen farklı bir yöntem düşündü. Şifrelemek için farklı bir yöntem, şifreyi çözmek için farklı bir yöntem kullanmaları gerekiyordu. Şifreleme yöntemi bulunsa bile şifreyi çözme yöntemi bulunamayacaktı. Ve bunu sadece kendileri bileceklerdi. Euler Teoremi ve Sayılar Teorisi&#8217;ni kullanarak bir yöntem buldu. Bu yöntem aşama aşama şöyleydi:</p>
<ol>
<li><span style="text-decoration: underline;">p</span> ve <span style="text-decoration: underline;">q</span> iki asal sayı olmak üzere seçilir.</li>
<li><span style="text-decoration: underline;">n</span> = p * q olacak şekilde bir n sayısı bulunur.</li>
<li><span style="text-decoration: underline;">φ(n)</span> = (p-1)*(q-1) olacak şekilde bulunur.</li>
<li><span style="text-decoration: underline;">φ(n)</span> ve <span style="text-decoration: underline;">E</span> aralarında asal olacak şekilde keyfi bir <span style="text-decoration: underline;">E</span> tamsayısı seçilir. <span style="text-decoration: underline;">E</span> tamsayısı 1 ile φ(n) arasında olmalıdır.</li>
<li>Seçilen <span style="text-decoration: underline;">E</span> tamsayısının mod <span style="text-decoration: underline;">φ(n)</span>&#8216;de tersi alınır. Sonuç <span style="text-decoration: underline;">D</span> olsun.</li>
</ol>
<p>Şifreleme yaparken <span style="text-decoration: underline;">n</span> ve <span style="text-decoration: underline;">E</span> sayılarını kullanacaklardı. Şifreyi çözerken ise <span style="text-decoration: underline;">n</span> ve <span style="text-decoration: underline;">D</span> sayılarını kullanacaklardı. Birisi şifrelemeyi yapan <span style="text-decoration: underline;">n</span> ve <span style="text-decoration: underline;">E</span> sayılarını bulabilirdi. Fakat <span style="text-decoration: underline;">D</span> sayısını bulmak için <span style="text-decoration: underline;">φ(n)</span>&#8216;i, dolayısıyla <span style="text-decoration: underline;">p</span> ve <span style="text-decoration: underline;">q</span> sayılarını bilmeleri gerekmekteydi. Bu sayıları bulmakta o günkü teknolojiyle imkansızdı. Hoş bugünkü teknolojiyle de imkansız, orası ayrı. Dolayısıyla çocuğun sivri zekası kusursuz bir şifreleme algoritması yapmalarını sağlamıştı.</p>
<p>İlk mektubu şifreleyerek çocuk gönderdi. Mektup eve ulaştığında babası el koydu ve sadece sayılardan oluşan bir mektup gördü. Kızına sordu hemen bu ne diye? Kızıda bastı palavrayı: &#8220;Baba onu okuldan gönderdiler, derslerle ilgili.&#8221; Babası hiç birşey anlamadığı için doğal olarak inandı. Kız mektubu aldı şifreyi çözdü. Mektubu okudu cevabını şifreleyerek yazdı. Kimse bu durumdan birşey anlamadı, mutlu mesut haberleştiler.</p>
<p>İşin aslı, bu şifreleme algoritması daha önce 1977 yılında Ron <strong>R</strong>ivest, Adi <strong>S</strong>hamir ve Len <strong>A</strong>dleman tarafından bulunmuştu. Öyle ki 1983 yılında patenti alınmıştı. İşin aslı böyle işte. Şimdi bu teorikteki 5 maddeyi pratiğe dökelim.</p>
<p>Yukarıdaki 5 adımda kapalı ve açık anahtarları ürettik. <span style="text-decoration: underline;">E</span> ve <span style="text-decoration: underline;">n</span> bizim açık anahtarımız, <span style="text-decoration: underline;">D</span> ve <span style="text-decoration: underline;">n</span> ise kapalı anahtarımız olacak. <span style="text-decoration: underline;">E</span> ve <span style="text-decoration: underline;">n</span> sayılarını kullanarak veriyi şifreleyeceğiz, <span style="text-decoration: underline;">D</span> ve <span style="text-decoration: underline;">n</span> sayılarını kullanarak şifreli metni orjinal halinde getireceğiz. Peki bu işlemler nasıl yapılıyor derseniz; çok basit olduğunu söylemekle birlikte hemen gösterelim.</p>
<p><strong>Şifreleme:</strong> <span style="text-decoration: underline;">M</span> bizim metnimiz olsun ve bunu şifreleyelim. Tabii ki bu işlemler sadece sayılar üzerinde gerçekleştirildiğinden <span style="text-decoration: underline;">M</span> metnini öncelikle sayısal değere çevirmeliyiz. Bu işlem okuyucuya bırakılmıştır ve <span style="text-decoration: underline;">M</span> metni sayıymış gibi devam edilecektir. <span style="text-decoration: underline;">M^E mod n</span> bize şifreli metni verecektir. Daha da açarsak bunu <span style="text-decoration: underline;">M</span> sayısının <span style="text-decoration: underline;">E</span>&#8216;inci kuvvetini alıyoruz. Daha sonra <span style="text-decoration: underline;">mod n</span> tabanında karşılığını yazıyoruz.</p>
<p><strong>Şifreyi çözme: </strong>Şifrelemeye benzer şekilde bu kez tersi işlem yapıyoruz. Bu kez şifrelenmiş metnin <span style="text-decoration: underline;">D</span>&#8216;inci kuvvetini alıyoruz. Ve bunun <span style="text-decoration: underline;">mod n</span> tabanında karşılığını yazıyoruz. Bu yaptığımız işlemler sonucunda karşımıza orjinal metnin sayısal değeri çıkıyor. Orjinal metnin sayısal değerini siz bulduğunuz için bu sayısal değeri rahatlıkla orjinal metne çevirebilirsiniz <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Matematikçileri ve mühendisleri algoritma konusunda kıyaslarsak; futboldan benzetme yaparak, mühendisler teknik oyunculardır, matematikçiler taktik oyunculardır. Şöyleki; matematikçiler maçın taktiğini belirler. Taktikte hata yoktur. Herşey ortadadır ve ispatlanmıştır. Bunu uygulamak teknik oyuncuların elindedir. Taktik bilgisi olmayan teknik futbolcular bir işe yaramazlar bildiğiniz üzre. Bu kapsamda matematikçiler ve mühendisler birbirlerini tamamlarlar. Ülkemizde özellikle algoritma konusunda büyük eksiklikler çekilmektedir. Bu kapsamda &#8220;Matematik ve Bilgisayar Bilimleri&#8221; bu eksikliği kapatacak bir bölümdür.</p>
<p>RSA ile ilgili detayları içerecek olan ikinci yazımızda görüşmek üzere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/05/08/rsa-sifreleme-algoritmasi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP ile basit SEF yapımı (URL Rewrite)</title>
		<link>http://www.guvenatbakan.net/2011/02/20/php-ile-basit-sef-yapimi-url-rewrite/</link>
		<comments>http://www.guvenatbakan.net/2011/02/20/php-ile-basit-sef-yapimi-url-rewrite/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 23:29:00 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[arama motoru dostu bağlantılar]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[php sef]]></category>
		<category><![CDATA[php seo yapımı]]></category>
		<category><![CDATA[search engine friendly]]></category>
		<category><![CDATA[sef]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[url rewrite php]]></category>
		<category><![CDATA[URL Rewriting]]></category>
		<category><![CDATA[URL Rewriting php]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=855</guid>
		<description><![CDATA[Apache bizlere SEF konusunda çok büyük bir nimet sağlıyor. Bunun adı .htaccess   Bu dosya içerisine çeşitli kurallar yazıyorsunuz ve o kurallara göre arama motoru dostu bağlantıları kullanabiliyorsunuz. Ancak bu kural yazma işi can sıkıcı olabiliyor. Zira RegExp (Regular Expression &#8211; Koşullu  [...]]]></description>
			<content:encoded><![CDATA[<p>Apache bizlere SEF konusunda çok büyük bir nimet sağlıyor. Bunun adı .htaccess <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Bu dosya içerisine çeşitli kurallar yazıyorsunuz ve o kurallara göre arama motoru dostu bağlantıları kullanabiliyorsunuz. Ancak bu kural yazma işi can sıkıcı olabiliyor. Zira RegExp (Regular Expression &#8211; Koşullu ifadeler) bilmeniz gerekmekte. Ve bazen baya uğraştırıcı olabiliyor. Ben bu konuda daha farklı bir yöntem kullanıyorum. Belki performans açısından direkt olarak kural yazmaya göre daha kötü olabilir ama çok çok büyük bir projede çalışmıyorsanız çok fazla etkileyeceğini düşünmüyorum.</p>
<p>Öncelikle nasıl bir sistem kullandığımdan bahsedeyim, sonrasında bir kaç kod ile örnek göstereyim. Yazının sonunda ise çok basit bir örnek sistemi indirebilirsiniz. <span id="more-855"></span></p>
<p>Linkimizin http://site.com/haberdetay/basligin-sef-hali/432 olduğunu varsayalım. Buradaki &#8220;haberdetay&#8221; bizim modül(controller) sayfamız oluyor. &#8220;basligin-sef-hali&#8221; anladığınız üzere haber başlığının özel karakterlerden arındırılarak urlye yerleştirilmiş hali oluyor. 432 ise haberin eşsiz idsi oluyor.</p>
<p>Şimdi neler yapacağız? Öncelikle haberdetay modülünü çağıracağız, bu modül dosyası içinde id&#8217;yi göstereceğiz ve ona göre işlemler yaptıracağız. Asıl işin canalıcı kısmı bu modül ismini ve idyi nasıl aldığımız. İşte burada .htaccessten yararlanıyoruz.</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</pre>
<p>Bu dosyada yaptığımız işlem şu. URL&#8217;yi al, siteadi.com/ dan sonraki herşeyi index.php dosyasına $url olarak gönder. Yani biz http://site.com/haberdetay/basligin-sef-hali/432 linkine gittiğimizde aslında http://site.com/index.php?url=/haberdetay/basligin-sef-hali/432 çalışıyor. Yapacağımız şey çok basit.</p>
<p>index.php dosyasına şöyle bir değişken yazıyoruz.</p>
<pre class="brush: php; title: ; notranslate">

 $url = explode(&quot;/&quot;, $_GET['url']);
</pre>
<p>Bu değişken  /haberdetay/basligin-sef-hali/432 linkini bizim için parçalara ayırıyor. Son durumda $url değişkeninin değeri şu şekilde oluyor:</p>
<p>$url[0] = &#8220;haberdetay&#8221; | Modülümüzün adı<br />
$url[1] = &#8220;basligin-sef-hali&#8221; | SEF Başlığımız<br />
$url[2] = &#8220;432&#8243; | Haber ID</p>
<p>Artık index.php içinde modül dosyamızı çağırmaya geçebiliriz.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

 	$url = explode(&quot;/&quot;, htmlspecialchars( strtolower( $_GET['url'] ) ) );

	if ($url[0] == &quot;&quot; )
	{
		$url[0] = &quot;anasayfa&quot;;
	}

include(&quot;header.php&quot;); //klasik olarak header yüklüyoruz.

if (file_exists(&quot;modul/&quot;.$url[0].&quot;.php&quot;))  //Eğer modül dosyamız varsa çağırıyoruz. Yoksa hiç bir işlem yapmayacak.
{
	include(&quot;modul/&quot;.$url[0].&quot;.php&quot;); // modül klasöründeki modülümüzü çağırdık.
	//Yani şöyle oldu: include(modul/haberdetay.php);
}

include(&quot;footer.php&quot;); //klasik olarak footer dosyamızı yüklüyoruz

?&gt;
</pre>
<p>İşte index.php dosyamız bundan ibaret. (Kodlar ile açıklamalar yorum satırı olarak mevcut.) Şimdi modul/haberdetay.php dosyasına geçip ve orada istediğimiz işlemi yapabilirsiniz. Haberdetay.php sayfasında id kullanmamız gerektiğinde $url[2] değişkenimiz bizim ID değerimiz oluyor. Veya linkteki herhangi bir sırayı da çağırabiliriz.</p>
<p>Ancak url değişkenini alırken gerekli güvenlik kontrollerini yapmayı unutmayın. Bunun yanı sıra modül dosyalarıyla birlikte Smarty ve benzeri bir tema motoru kullanmanız yararınıza olacaktır. Şahsen ben o şekilde kullanıyorum <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Umarım yararlı bir yazı olmuştur, sormak istediklerinizi yorum bölümünü kullanarak sorabilirsiniz.</p>
<h2><a href="http://www.guvenatbakan.net/wp-content/uploads/sefornek.tar.gz">PHP SEF Örnek Siteyi İndirmek İçin Tıklayın</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/02/20/php-ile-basit-sef-yapimi-url-rewrite/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux&#8217;ta Sıkıştırılmış Yedek Oluşturma</title>
		<link>http://www.guvenatbakan.net/2011/01/18/linuxta-sikistirilmis-yedek-olusturma/</link>
		<comments>http://www.guvenatbakan.net/2011/01/18/linuxta-sikistirilmis-yedek-olusturma/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 17:35:51 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash ile yedek alma işlemi]]></category>
		<category><![CDATA[c++ bash komutları çalıştırma]]></category>
		<category><![CDATA[c++ ile konsol kullanımı]]></category>
		<category><![CDATA[Execute bash commands and running programs by c++]]></category>
		<category><![CDATA[linux yedekleme]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=825</guid>
		<description><![CDATA[Zayıf C++ bilgimle istenilen dosyayı/klasörü istenilen klasöre yedekleyen bir program yazdım.
Ancak bu program öyle ahım şahım değil. Zaten Linux komut satırını kullanıyor. Linuxta konsola yazdığınız kodu kısmen bu program içerisine yazıyorsunuz. Bunu konsoldan da yapabilirim diyebilirsiniz, ancak  [...]]]></description>
			<content:encoded><![CDATA[<p>Zayıf C++ bilgimle istenilen dosyayı/klasörü istenilen klasöre yedekleyen bir program yazdım.</p>
<p>Ancak bu program öyle ahım şahım değil. Zaten Linux komut satırını kullanıyor. Linuxta konsola yazdığınız kodu kısmen bu program içerisine yazıyorsunuz. Bunu konsoldan da yapabilirim diyebilirsiniz, ancak isterseniz cronjob ile dilediğiniz zaman programın çalıştırılıp yedek almasını sağlayabilirsiniz. Ben bilgisayar kapanırken veya yeniden başlatılırken yedek almasını sağlamak için yapacağım bunu.</p>
<p>Programın kodları aşırı derece de amele usulü olabilir, kabulümdür. Malum üniversitemizde C++ öğreteceğiz dediler ama for,while ve bir kaç string fonksiyonu dışında hiçbirşey göstermediler. Buna rağmen araştırmacı kişilik olarak işimi görecek bu programı yazmayı başardım <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Kodların devamında açıklamalarda bulunacağım.<span id="more-825"></span></p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/wait.h&gt;
#include &lt;string.h&gt;
#include &lt;time.h&gt;

using namespace std;

int RunCommand(const char *strCommand)
{
	int iForkId, iStatus;
	iForkId = vfork();
	if (iForkId == 0)	// This is the child
	{
		iStatus = execl(&quot;/bin/sh&quot;,&quot;sh&quot;,&quot;-c&quot;, strCommand, (char*) NULL);
		exit(iStatus);	// We must exit here,
				// or we will have multiple
				// mainlines running...
	}
	else if (iForkId &gt; 0)	// Parent, no error
	{
		iStatus = 0;
	}
	else	// Parent, with error (iForkId == -1)
	{
		iStatus = -1;
	}
	return(iStatus);
} 

int main(int argc, char *argv[])
{
	int iNumProc = 0, iChildiStatus = 0, iStatus = 0, iDeadId = 0;
	int iExitFlag = 0;

    time_t rawtime;
	struct tm * timeinfo;
	char buffer [80];

	time ( &amp;rawtime );
	timeinfo = localtime ( &amp;rawtime );

	strftime (buffer,80,&quot;%Y_%m_%d-%H.%M.tar.gz&quot;,timeinfo);

	//puts (buffer);
	//cout&lt;&lt;buffer;

	char command[100] = &quot;tar cvzf &quot;;
	char topath[100] = &quot;/home/guven/yedekler/&quot;;
	char tocompress[100] = &quot;/home/guven/public_html/&quot;;
	char topath2[200];
	// Yedek oluşturulacak dosya
	strcat(topath2,topath);strcat(topath2,buffer);

	//komuta yedek dosyası ekleniyor
	strcat(command,topath2);
	strcat(command,&quot; &quot;);
	//dosyaya sıkıştırılacak konum-dosya ekleniyor
	strcat(command,tocompress);

	//if (Exists( topath ) )
	//{

		clock_t baslangic = clock(); // performans bilgisi

		iStatus = RunCommand(command);
		if (!iStatus)
			iNumProc++;
	//}

	// Wait till the commands complete
	while (iNumProc &amp;&amp; !iExitFlag)
	{
		iDeadId = waitpid(-1, &amp;iChildiStatus, WNOHANG);
		if (iDeadId &lt; 0)
		{
			// Wait id error - exit the loop
			iExitFlag = 1;
		}
		else if (iDeadId &gt; 0)
		{
			iNumProc--;
			// You can check the process exit iStatus here - its in the
			// iChildiStatus variable
		}
		else  // iDeadId == 0, no processes died
		{
			sleep(3);	// give them time to die
		}
	} 

	clock_t bitis = clock(); // performans bilgisi
	cout&lt;&lt;endl&lt;&lt;&quot;Bu islem &quot;&lt;&lt;(((double)bitis - (double)baslangic) / (double)CLOCKS_PER_SEC)&lt;&lt;&quot; saniyede yapildi.&quot;&lt;&lt;endl;

	return 0;
}
</pre>
<ul>
<li>Programın 52. satırındaki kodda yedeğin yapılacağı hedefi belirtiyorsunuz. Şöyle ki ben /home/guven/yedekler klasörüne atıyorum sıkıştırılmış dosyayı.</li>
<li>53. satırdaki kodda ise yedek alınacak dosya veya klasörü giriyorsunuz. Örneğin ben public_html klasörümü yedekliyorum.</li>
<li>Programda klasörü/dosya var mı yok mu kontrolü bulunmuyor. Dolayısıyla hedef ve kaynak dosyalarınızın/klasörlerinizin mutlaka bulunması gerekmektedir, yoksa program hata verir ki normali de budur <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Yedek dosyasının ismi şu şekilde oluşturulmaktadır: 2011_01_18-19.31.tar.gz Yani Yıl_Ay_Gün-Saat.Dakika.tar.gz.</li>
</ul>
<p>Şimdilik bunlar aklıma geldi, kafanıza takılan birşey olursa yorum bölümünden sorabilirsiniz. Bir sonraki yazımda bu programı bilgisayarın kapanış servislerine eklemeyi göstereceğim, tabii ki öncelikle bu işlemi doğru düzgün yapabilmem gerekecek <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Kaynakça</strong><br />
<a href="http://kengine.sourceforge.net/tutorial/g/execute-command-eng.htm" target="_blank">Execute bash commands and running programs by c++</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/01/18/linuxta-sikistirilmis-yedek-olusturma/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MVC Yapısının Önemi</title>
		<link>http://www.guvenatbakan.net/2010/12/27/mvc-yapisinin-onemi/</link>
		<comments>http://www.guvenatbakan.net/2010/12/27/mvc-yapisinin-onemi/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 01:18:09 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[model view controller]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[mvc ne işe yarar]]></category>
		<category><![CDATA[mvc nedir]]></category>
		<category><![CDATA[mvc yapısı]]></category>
		<category><![CDATA[mvc yapısı nedir]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=792</guid>
		<description><![CDATA[Uzun zamandır yazmaya başladığım yazıları sonlandıramıyorum. Öyle taslakta kalıyorlar, bir süre sonra da siliyorum. Umarım bu sefer başladığım yazı yarım kalmaz.
Öncelikle MVC&#8217;nin tanımından başlamak gerekiyor sanırsam.
MVC yani Model-View-Controller benim anladığım kadarıyla sitenin kod kısmı ile  [...]]]></description>
			<content:encoded><![CDATA[<p>Uzun zamandır yazmaya başladığım yazıları sonlandıramıyorum. Öyle taslakta kalıyorlar, bir süre sonra da siliyorum. Umarım bu sefer başladığım yazı yarım kalmaz.</p>
<p>Öncelikle MVC&#8217;nin tanımından başlamak gerekiyor sanırsam.</p>
<p>MVC yani Model-View-Controller benim anladığım kadarıyla sitenin kod kısmı ile tasarım kısmının birbirinden ayrılmasını sağlıyor. Emin olun bir yazılımcı için çok büyük kolaylıklar sağlıyor. En büyük özelliği de bir başkasının kodlarınızı incelediğinde basit bir yapıyla karşılaşması. Bu, iş hayatında çok önemli. Bir proje yaparsınız ve bir başka iş arkadaşınız kodlarınızdan hiç birşey anlamadığında hiç hoş olmaz. <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p>Model-view-controller, <a title="Yazılım mühendisliği" href="http://tr.wikipedia.org/wiki/Yaz%C4%B1l%C4%B1m_m%C3%BChendisli%C4%9Fi">yazılım mühendisliği</a>&#8216;nde kullanılan bir &#8220;<a title="Mimari desen" href="http://tr.wikipedia.org/wiki/Mimari_desen">mimari desen</a>&#8220;dir. Kullanıcıya yüklü miktarda verinin sunulduğu karmaşık uygulamalarda veri ve gösterimin soyutlanması esasına dayanır. Böylece veriler (model) ve kullanıcı arayüzü (view) birbirini etkilemeden düzenlenebilir. Model-view-controller, bunu controller adı verilen ara bileşenle, veri gösterimi ve kullanıcı etkileşiminden, veri erişimi ve iş mantığını çıkarma suretiyle çözmektedir.<br />
<a href="http://tr.wikipedia.org/wiki/Model-view-controller"><em><br />
</em>Model-view-controller - <em>Vikipedi</em></a></p></blockquote>
<p>MVC kavramını ilk duyduğumda biraz araştırdım ve ne gerek var gibi bir cümle kurdum. Hem tasarımımı yaparım hem de kodlarımı yazarım aynı sayfada dedim. Kaldı ki bu dediğimde kendi açımdan çok zor değil. Gayet rahat bir şekilde yapabiliyorum. Ancak MVC ile ilk proje geliştirdiğimde gerçekten ne kadar rahat olduğunu gördüm.</p>
<p>Biraz detaya gireyim; MVC denilen kavram üç temel olaydan oluşuyor.</p>
<p><strong>Model:</strong> Veritabanı ile bağlantı işlemleri burada yapılıyor.<br />
<strong>View:</strong> Sitenin tasarımı controllerdan alınan verilerle view sayfalarında yapılıyor.<br />
<strong>Controller:</strong> Bir nevi model ile view arasında köprü görevi görüyor.</p>
<blockquote><dl>
<dt>M (Model)</dt>
<dd>M (Model), İş Mantığını ve veri işleme süreçlerini yürütür. C (Controller) tarafından gönderilen emirlere göre hareket eder. Bilgi işleme sürecinden sonra veriyi C&#8217;ye, diğer modellere veya doğrudan V (View)&#8217;ye gönderir.</dd>
</dl>
<dl>
<dt>V (View)</dt>
<dd>V (View) son kullanıcıya gösterilecek olan verinin sunumu ile ilgilenir. V, bu bilgiyi C veya M&#8217;den alır, aynı zamanda son kullanıcıdan gelen talepleri C&#8217;ye iletir.</dd>
</dl>
<dl>
<dt>C (Controller)</dt>
<dd>C ise sistemin ana kısmıdır. Gelen talepleri kontrol eder ve sistemin diğer elemanlarının (M,V) bilgiyi uygun şekilde alıp, göndermelerini sağlar.</dd>
</dl>
<p><a href="http://tr.wikipedia.org/wiki/Model-view-controller">Model-view-controller - Vikipedi</a></p></blockquote>
<p>Böyle söyleyince bu tanımların çok havada kaldığını tahmin edebiliyorum. O zaman çok fazla kod kullanmadan basit bir sistem yazalım. <span id="more-792"></span></p>
<p>Şöyleki bu basit bir forum sistemi olsun. Kategoriler olsun, kategoriye göre konu listelensin, yeni konu eklensin ve konu görüntülensin.</p>
<p><em>Codeigniter MVC Framework baz alınarak kodlar yazılacaktır.</em></p>
<p>Normal şartlarda bu istekler 3 sayfada yapılacaktı.</p>
<ul>
<li>kategori.php // Tüm konuların ve kategorideki konuların listeleneceği sayfa</li>
<li>konu.php // Tek bir konunun görüntüleneceği sayfa</li>
<li>konuekle.php // Yeni bir konunun ekleneceği sayfa</li>
</ul>
<p>O zaman controller sayfamızla başlamamız gerekiyor. Kodların hemen hepsini yazacağım ve içerisinde açıklama satırları bulunacak.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

	// Forum sayfamız ilk açıldığında bu fonksiyon gerçekleştirilecek
	function index()
	{
		//Kategori fonksiyonunu parametresiz çağırıyoruz. Bu demek oluyor ki  kategori bağımsız tüm konuları listele
		$this-&gt;kategori();
	}

	//Bu fonksiyonda konular listelenecek
	//Eğer parametre ile çağrılırsa o kategoriye ait konular listelenecek
	function kategori($id = null)
	{
		if(isset($id))
		{
			// model sayfamızda tanımladığımız fonksiyon çağrılıyor.
			// Aslında genel olarak model ile controller ı aynı anda kodluyorum ancak burda tanıtma yoluna gittiğim için çok fazla değinmeyeceğim
			$posts = $this-&gt;forum_model-&gt;get_posts($id);
		}
		else
		{
			$posts = $this-&gt;forum_model-&gt;get_posts(null);
		}

		// posts değişkenimiz bir array içerisine alınıyor.
		// View de görünmesini istediğimiz tüm veritabanı öğelerini
		// bir dizi yardımıyla view dosyasına göndereceğiz
		$data  = array(
		'posts' =&gt; $posts
		);

		// forum_kategori view dosyamızı yüklüyoruz ve içerisine $data değişkenini gönderiyoruz
		// İşte bu kadar basit
		$this-&gt;load-&gt;view('forum_kategori',$data);

	}

	// Bu fonksiyon konu eklememizi sağlayacak
	function konuekle()
	{
		// aynı tek sayfa kodlamarında olduğu gibi burada da veri ekleme için aynı sistem kullanılıyor.
		// eğer post edilmiş veri varsa şu satırı yap
		if ($this-&gt;input-&gt;post('submit'))
		{
			// formdaki verileri alıyoruz
			$baslik = $this-&gt;input-&gt;post('baslik'); // $_POST['baslik'] ile eşdeğer
			$icerik = $this-&gt;input-&gt;post('icerik');
			$kategori = $this-&gt;input-&gt;post('kategori');

			// modeldeki insertpost fonksiyonunu parametrelerle çağırıyoruz
			// modelden veritabanına bilgi eklendikten sonra insertid return ediliyor
			$konuid = $this-&gt;forum_model-&gt;insertpost($baslik,$icerik,$kategori);

			// konu eklendikten sonra o konunun görünmesi için konu fonksiyonumuzu çağırıyoruz.
			$this-&gt;konu($konuid);
		}
		else
		{
			//eğer herhangi veri post edilmemişse konuekle view ini çağırıyoruz
			$this-&gt;load-&gt;view('forum_konuekle');
		}

	}

	// bu fonksiyonumuz ile konuyu göstereceğiz
	function konu($id)
	{
		// yine view de gösterilmek üzere değişkenimizi data dizisi içine atıyoruz.
		$data = array(
		// burada modelden get_single_post ile belirtilen id deki konuyu aldık
		'konu' =&gt; $this-&gt;forum_model-&gt;get_single_post($id)
		);

		// view dosyamızı verilerimizle birlikte çağırdık
		$this-&gt;load-&gt;view('forum_konu',$data);
	}
</pre>
<p>Benim yaptığım sistemde konulara cevap yazma, dosya yükleme gibi özellikler de bulunuyor ancak ufak bir örnek olması için birkaç kısmı çıkarttım.</p>
<p>Controller dosyamızı oluşturduktan sonra model dosyamıza geçelim.</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
	// bu fonksiyon controllerdan hatırlayacağınız üzere tek bir konuyu göstermemize yarıyor.
	function get_single_post($forumid)
	{
		// sql sorgumuzu oluşturup veritabanına sorgulatıyoruz
		$sql = &quot;select * from forum_konular id= &quot;.$forumid;
		$query = $this-&gt;db-&gt;query($sql);

		// her bir verimizi diziye aktarıyoruz. Tabi burada tek bir konu olacağı için
		// tek bir veri olarak, aslında gereksiz bir işlem yapmışım, şimdi farkettim <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
		$i=0;
		foreach ($query-&gt;result() as $row)
		{

			$gonder[$i]['id'] = $row-&gt;id;
			$gonder[$i]['baslik'] = $row-&gt;baslik;
			$gonder[$i]['icerik'] = $row-&gt;icerik;
			// yine model içinde kullandığımız bir fonksiyon ile kategori ismini de diziye aktarıp return ediyoruz
			$gonder[$i]['kategori'] = $this-&gt;_get_cat_name($row-&gt;kategori);
			$gonder[$i]['kategoriid'] = $row-&gt;kategori;
			$i++;
		}

		if (isset($gonder))
		{
		return $gonder;
		}

	}

	// bir kategoriye ait konuları veya tüm konuları listeliyoruz
	function get_posts($kategori = null)
	{
		//sql sorgumuzu oluşturuyoruz
		$sql = &quot;select * from forum_konular&quot;;

		// kategori id si parametre olarak gönderilmişse sql sorgusuna ekliyoruz
		if ($kategori != null)
		{
			$sql .= &quot; where kategori = &quot;.$kategori;
		}

		//sorgumuzu çalıştırıyoruz
		$query = $this-&gt;db-&gt;query($sql);

		// burada tüm verileri diziye aktarıyoruz get_single_post fonksiyonunda olduğu gibi
		$i=0;
		foreach ($query-&gt;result() as $row)
		{

			$gonder[$i]['id'] = $row-&gt;id;
			$gonder[$i]['baslik'] = $row-&gt;baslik;
			$gonder[$i]['icerik'] = $row-&gt;icerik;
			$gonder[$i]['kategori'] = $this-&gt;_get_cat_name($row-&gt;kategori);
			$gonder[$i]['kategoriid'] = $row-&gt;kategori;

			$i++;
		}

		if (isset($gonder))
		{
		return $gonder;
		}
	}

	// konu ekleme fonksiyonumuz
	function insertpost($baslik,$icerik,$kategori)
	{

		// burada standart veri insert etme işlemini gerçekleştireceğiz
		// ancak codeigniter in sunduğu özellik sayesinde ben böyle bir yöntem kullanmışım.
		// aslında yapılan işlem bildiğimiz Insert Into <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
			$data = array(
               'baslik' =&gt; $baslik,
               'icerik' =&gt; $icerik,
               'kategori' =&gt; $kategori,
            );

		$this-&gt;db-&gt;insert('forum_konular', $data);

		// konumuzu veritabanına ekledik ve kayıt id sini return ediyoruz.
		// hatırlayacaksınız konu eklendikten hemen sonra görüntülenmesi için
		return $this-&gt;db-&gt;insert_id();

	}

	// bu fonksiyon sadece model içinde kullanılıyor. View dosyasına kategori id si ile birlikte adını da göndermek için
	function _get_cat_name($id)
	{
		$query = $this-&gt;db-&gt;query('SELECT * FROM forum_kategori where id = '.$id.' limit 1');

		foreach ($query-&gt;result_array() as $row)
		{
			return $row['kategoriadi'];
		}
	}
</pre>
<p>Controller dosyamızdaki veritabanı işlemlerini gerçekleştiren fonksiyonları içeren model dosyamızı da oluşturduk. Şimdi sıra geldi view dosyalarımıza bakmaya. Bunun için sadece kategori dosyasını göstereceğim.</p>
<pre class="brush: php; title: ; notranslate">
	&lt;table&gt;
		&lt;tr&gt;
			&lt;td colspan=&quot;5&quot; class=&quot;pagination&quot;&gt;
				&lt;b&gt;&lt;a href=&quot;forum/konuekle&quot; class=&quot;curved&quot;&gt;Yeni Konu Ekle&lt;/a&gt;&lt;/b&gt;
			&lt;/td&gt;
		&lt;/tr&gt;

		&lt;tr&gt;
			&lt;th&gt;Başlık&lt;/th&gt;
			&lt;th&gt;Kategori&lt;/th&gt;
		&lt;/tr&gt;
		&lt;tbody&gt;
		&lt;?php
		if (isset($posts)):
		foreach($posts as $item):?&gt;
			&lt;tr&gt;
				&lt;td&gt;&lt;a href=&quot;forum/konu/&lt;?php echo $item['id']?&gt;&quot;&gt;&lt;?php echo $item['baslik'];?&gt;&lt;/a&gt;&lt;/td&gt;
				&lt;td&gt;&lt;a href=&quot;forum/kategori/&lt;?php echo $item['kategoriid']?&gt;&quot;&gt;&lt;?php echo $item['kategori'];?&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
		&lt;?php endforeach;
		endif;?&gt;
		&lt;/tbody&gt;
	&lt;/table&gt;
</pre>
<p>Controller dosyasında kategori fonksiyonunda konuları $posts değişkenine aktarıp view e göndermiştik. İşte burada o değişkeni kullanarak bir döngü oluşturuyoruz ve tüm verileri listeliyoruz.</p>
<hr />İşte MVC dediğimiz olay bu kadar basit. Çok mu karışık geldi? Olabilir, bana da karışık gelmişti zamanında <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ancak yeni birşeyler öğrenmenin en iyi yolu onu bir projede kullanmaktır. Siz de bir projenizi MVC yapısı sunan bir framework ile geliştirirseniz emin olun çok rahat öğreneceksiniz. Ve ne kadar kolay, kod okumasını kolaylaştıran, spaghetti code kullanımını azaltan bir yapı olduğunu göreceksiniz.</p>
<p>Ben MVC yapısını Esogü Bilişim Günleri 2011 için geliştirdiğim bir projede öğrendim ve bundan sonra ufak çaplı olmayan tüm projelerimde MVC kullanacağımı düşünmekteyim.</p>
<p>Bu arada bir tüyo verdim sanırsam, Bilişim Günleri 2011 çalışmaları başladı <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Yakın bir zamanda çalışmaların başlamasıyla ilgili de bir blog girdisi düşmek istiyorum bloguma.</p>
<p>Umarım bu yazdıklarım yararlı olmuştur, yardımcı olmuştur. Yazdıklarımın yararı dokunacak bir kişi bile çıksa mutlu olurum. Sanırsam uzun süre sonra başladığım bir yazıyı bitirdim ve bunun mutluluğunu yaşıyorum şu an <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bir başka yazıda görüşmek üzere</p>
<p><strong>Bilgilendirebilecek forum konuları:</strong><br />
<a id="thread_title_98895" href="http://forum.ceviz.net/framework-mvc/98895-mvc-nedir-mvcnin-avantajlari-nelerdir.html">MVC Nedir? MVC&#8217;nin avantajları nelerdir?</a><br />
<a id="thread_title_99157" href="http://forum.ceviz.net/framework-mvc/99157-framework-nedir-avantajlari-nelerdir.html">Framework Nedir? Avantajları Nelerdir?</a><br />
<a id="thread_title_91351" href="http://forum.ceviz.net/framework-mvc/91351-framework-ve-mvc-nedir-neden-kullanilir.html">Framework ve MVC nedir? Neden Kullanılır?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2010/12/27/mvc-yapisinin-onemi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>TBDGenç Algoritma Sorusu 8: Yalancılar</title>
		<link>http://www.guvenatbakan.net/2010/11/28/tbdgenc-algoritma-sorusu-8-yalancilar/</link>
		<comments>http://www.guvenatbakan.net/2010/11/28/tbdgenc-algoritma-sorusu-8-yalancilar/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 23:41:20 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[c++ türkçe karakter kontrolü]]></category>
		<category><![CDATA[tbdgenc]]></category>
		<category><![CDATA[tbdgenc algoritma sorusu]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=767</guid>
		<description><![CDATA[Geçen ayki sorunun çözümünü gecikmeli de olsa paylaşıyorum. Soruya ulaşmak için tıklayın.
Çözümü görmek için yazının devamına bakın.

]]></description>
			<content:encoded><![CDATA[<p>Geçen ayki sorunun çözümünü gecikmeli de olsa paylaşıyorum. Soruya ulaşmak için <a href="http://www.tbdgenc.com/soru/soru8.html" target="_blank">tıklayın</a>.</p>
<p>Çözümü görmek için yazının devamına bakın.<br />
<span id="more-767"></span></p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
#include &lt;string.h&gt;

using namespace std;

int turkcekontrol(char kelime[100])
{
	int sonuc=0;
	unsigned int i;
	unsigned int uzunluk = strlen(kelime);
	for(i=0;i&lt;uzunluk;i++)
	{
		if(!((kelime[i] &gt;= 95 &amp;&amp; kelime[i] &lt;= 122) || (kelime[i] &gt;= 65 &amp;&amp; kelime[i] &lt;= 90 )) )
		{
		sonuc = 1;
		}
	}

	if (sonuc==1)
		return 1;
	else
		return 0;
}

int main()
{
	int k,n,i,m,j;
	char * bulunan;
	char * bulunan2;
	char * bulunan3;
	char * boslukvarmi ;

	cout&lt;&lt;&quot;Kasabadaki kisi sayisini girin:&quot;;

	ntekrar:
	cin&gt;&gt;n;
	cin.ignore(256, '\n');

	if (n&lt;1 || n&gt;1000)
	{
	cout&lt;&lt;&quot;Yanlis giris yaptiniz! Kasabadaki kisi sayisini girin:&quot;;
	goto ntekrar;
	}

	int listuzunluk = (n*100)+n+2;

	char name[n][100],kisi[n-1][100],list1[listuzunluk],list2[listuzunluk];

	strcpy(list1,&quot;,&quot;);
	strcpy(list2,&quot;,&quot;);

	for(k=0;k&lt;=n-1;k++)
	{

		nametekrar:
		cout&lt;&lt;endl&lt;&lt;&quot;Kasabadaki &quot;&lt;&lt;k+1&lt;&lt;&quot;. kisiyi girin:&quot;;
		cin.getline(name[k],100);

		boslukvarmi = strstr(name[k],&quot; &quot;);

		if (strlen(name[k])&lt;1 || strlen(name[k])&gt;10)
		{
			cout&lt;&lt;&quot;\nGirdiginiz isim hatali! Maksimum 10 karakter giriniz! \n&quot;;
			goto nametekrar;
		}
		else if (turkcekontrol(name[k])==1)
		{
			cout&lt;&lt;&quot;\nIsimler turkce karakter-bosluk-sayi-ozel karakter iceremez. Lutfen tekrar giriniz! \n&quot;;
			goto nametekrar;
		}

		mtekrar:
		cout&lt;&lt;name[k]&lt;&lt;&quot; kac kisinin ismini vericek:&quot;;
		cin&gt;&gt;m;
		cin.ignore(256, '\n');

		//öyle bi kontrol işte
		if(m+1&gt;n)
		{
			cout&lt;&lt;&quot;Kasabadaki kisi sayisi asildi: Tekrar giris yapin! \n&quot;;
			goto mtekrar;
		}

		if (m!=0)
		{
			for(i=0;i&lt;=m-1;i++)
			{
			kisitekrar:
			cout&lt;&lt;&quot;\t &quot;&lt;&lt;i+1&lt;&lt;&quot;. kisiyi girin: &quot;;
			cin.getline(kisi[i],100);

			if (strlen(kisi[i])&lt;1 || strlen(kisi[i])&gt;10)
			{
				cout&lt;&lt;&quot;\nGirdiginiz isim hatali! Maksimum 10 karakter giriniz! \n&quot;;
				goto kisitekrar;
			}
			else if (turkcekontrol(kisi[i])==1)
			{
				cout&lt;&lt;&quot;\nIsimler turkce karakter-bosluk-sayi-ozel karakter iceremez. Lutfen tekrar giriniz! \n&quot;;
				goto kisitekrar;
			}
				//ilk kayıt için kişiler listelere otomatik yazılıyor
				//söyleyen list1 e
				//söylenenler list2 ye
				if(k==0)
				{
					//söyleyen kişi list1 de tekrar tekrar yazılmasın diye kontrol
					bulunan = strstr(list1,name[k]);
					if (!bulunan)
					{
					strcat (list1,name[k]);
					strcat (list1,&quot;,&quot;);
					}

					strcat (list2,kisi[i]);
					strcat (list2,&quot;,&quot;);
				}
				else
				//dananın kuyruğu kopuyo
				{
					//eğer söyleyen kişi herhangi bir listede varsa
					//söylediği kişiler fişleniyor
					bulunan = strstr(list1,name[k]);
					bulunan2 = strstr(list2,name[k]);
					if (bulunan || bulunan2)
					{
						if(bulunan)
						{
							bulunan3 = strstr(list2,kisi[i]);
							if(!bulunan3)
							{
							strcat (list2,kisi[i]);
							strcat (list2,&quot;,&quot;);
							}
						}
						else if (bulunan2)
						{
							bulunan3 = strstr(list1,kisi[i]);
							if(!bulunan3)
							{
							strcat (list1,kisi[i]);
							strcat (list1,&quot;,&quot;);
							}
						}
					}
					else
					//eğer söyleyen kişi herhangi bi listede yoksa
					//söylediği kişiler içinde herhangi bi listede olan varsa
					//ona göre söyleyen kişi fişlenecek
					{
						bulunan = strstr(list1,kisi[i]);
						bulunan2 = strstr(list2,kisi[i]);
							if (bulunan || bulunan2)
							{
								if(bulunan)
								{
									strcat (list2,name[k]);
									strcat (list2,&quot;,&quot;);
								}
								else if (bulunan2)
								{
									strcat (list1,name[k]);
									strcat (list1,&quot;,&quot;);
								}
								//söyleyeni listeye yazdığımıza göre
								//bu kişiden önceki tüm söylediği kişileri
								//gerekli listeye yazalım
								//tabi bu söylenen kişi ilk kişi değilse
								if(i!=0)
								for(j=0;j&lt;=i-1;j++)
								{
										if(bulunan)
										{
											strcat (list1,kisi[j]);
											strcat (list1,&quot;,&quot;);
										}
										else if (bulunan2)
										{
											strcat (list2,kisi[j]);
											strcat (list2,&quot;,&quot;);
										}
								}
							}
					}
				}//dananın kuyruğu bitiş
			}
		}

	}
	unsigned int l;
	int list1sayi = 0,list2sayi=0;

	for (l=0;l&lt;= strlen(list1);l++)
	{
	if (list1[l] == ',')
	list1sayi++;
	}

	for (l=0;l&lt;= strlen(list2) ;l++)
	{
	if (list2[l] == ',')
	list2sayi++;
	}

	cout&lt;&lt;endl;

	if (list1sayi == 0 &amp;&amp; list2sayi == 0)
	cout&lt;&lt;n&lt;&lt;&quot; 0&quot;;
	else if (list1sayi&gt;list2sayi)
	cout&lt;&lt;list1sayi-1&lt;&lt;&quot; &quot;&lt;&lt;list2sayi-1;
	else if (list2sayi&gt;=list1sayi)
	cout&lt;&lt;list2sayi-1&lt;&lt;&quot; &quot;&lt;&lt;list1sayi-1;

	cout&lt;&lt;endl&lt;&lt;endl;
	return 0;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2010/11/28/tbdgenc-algoritma-sorusu-8-yalancilar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tic Tac Toe Hakemi &#124; TBDGenç Algoritma Sorusu</title>
		<link>http://www.guvenatbakan.net/2010/10/22/tic-tac-toe-hakemi-tbdgenc-algoritma-sorusu/</link>
		<comments>http://www.guvenatbakan.net/2010/10/22/tic-tac-toe-hakemi-tbdgenc-algoritma-sorusu/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 21:20:53 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[Yazılım]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=740</guid>
		<description><![CDATA[TBD Genç Ankara&#8217;nın her ay düzenlediği ödüllü algoritma yarışmasına Ağustos ayında katılmış, algoritmamım doğru olmasına rağmen çekiliş sonucunda ödülü kazanamamıştım  
http://www.tbdgenc.com/soru/soru6.html
Sonuçlar açıklandıktan sonra algoritmamı burada yayınlamak hiç aklıma gelmemişti. Belki de  [...]]]></description>
			<content:encoded><![CDATA[<p>TBD Genç Ankara&#8217;nın her ay düzenlediği ödüllü algoritma yarışmasına Ağustos ayında katılmış, algoritmamım doğru olmasına rağmen çekiliş sonucunda ödülü kazanamamıştım <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.tbdgenc.com/soru/soru6.html" target="_blank">http://www.tbdgenc.com/soru/soru6.html</a></p>
<p>Sonuçlar açıklandıktan sonra algoritmamı burada yayınlamak hiç aklıma gelmemişti. Belki de baya bi amele usulü olduğu için olabilir, bilmiyorum <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ekim ayının sorusunu çözmeye çalıştığım şu günlerde bu algoritmayı sizlerle paylaşmak geldi aklıma. Buyrun inceleyin, ama amelelik yüzünden acımasızca eleştirmeyin <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><span id="more-740"></span><br />
Yaptığım uygulamaya şöyle bir baktım ki ben bile anlamadım <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
using namespace std;

int main()
{
	int oyun[4][4],oyun2[4][4],i,j,g,kazanan,sifirsayisi=0,birsayisi=0,ikisayisi=0;

	for(i=1;i&lt;=3;i++)
	{
		cout&lt;&lt;i&lt;&lt;&quot;. satiri gir:&quot;;
		for(j=1;j&lt;=3;j++)
			{
				cin&gt;&gt;oyun[i][j];
					if (oyun[i][j]==0)
						sifirsayisi+=1;
					else if (oyun[i][j]==1)
						birsayisi+=1;
					else
						ikisayisi+=1;
			}
	}	

	for(i=1;i&lt;=3;i++)
		{
			g=oyun[i][1];
				for(j=1;j&lt;=3;j++)
					{
						if (g!=oyun[i][j])
						{
							kazanan=8;
							break;
						}
						else
						{
							kazanan=oyun[i][j];
						}
					g = oyun[i][j];
					}
			if (kazanan!=8 )
				i=3;
		}

		if(kazanan == 8 ){
		for(j=1;j&lt;=3;j++)
		{
			g=oyun[1][j];
				for(i=1;i&lt;=3;i++)
					{
						if (g!=oyun[i][j])
						{
							kazanan=8;
							break;
						}
						else
						{
							kazanan=oyun[i][j];
						}
					g = oyun[i][j];
					}
			if (kazanan!=8 )
				j=3;
		}
		}//if durum!=8

	// Çaprazlamalar Bakılıyor
	if( (oyun[1][1]==oyun[2][2] &amp;&amp; oyun[2][2]==oyun[3][3]) &amp;&amp; kazanan == 8 )
	{
		if(oyun[1][1] != 0)
		{
			if(oyun[1][1] == 1)
			{
			    kazanan=1;
			}
			else
			{
				kazanan=2;
			}
		}
	}

	if((oyun[1][3]==oyun[2][2] &amp;&amp; oyun[2][2]==oyun[3][1]) &amp;&amp; kazanan == 8 )
	{
		if(oyun[1][3] != 0)
		{
			if(oyun[1][3] == 1)
			{
			    kazanan=1;
			}
			else
			{
				kazanan=2;
			}
		}
	}
	//Çapraz bitiş

	if(sifirsayisi &gt;=2 &amp;&amp; kazanan == 8 ){
		kazanan = 0;
	}
	else if (sifirsayisi == 0 &amp;&amp; kazanan == 8 )
	{
		kazanan = 3;
	}
	else if (sifirsayisi == 1 &amp;&amp; kazanan == 8 )
	{
			if (birsayisi==ikisayisi)
			{
			//sifir olan yere bir koy kontrol et
			//kazanan çıkarsa oyun bitmemiş, kazanan çıkmazsa oyun berabere
				for(i=1;i&lt;=3;i++)
					for(j=1;j&lt;=3;j++)
						{
							if (oyun[i][j]!=0)
								oyun2[i][j]=oyun[i][j];
							else
								oyun2[i][j]=1;
						}

						//yapay sonuç1//
								for(i=1;i&lt;=3;i++)
									{
										g=oyun2[i][1];
											for(j=1;j&lt;=3;j++)
												{
													if (g!=oyun2[i][j])
													{
														kazanan=8;
														break;
													}
													else
													{
														kazanan=oyun2[i][j];
													}
												g = oyun2[i][j];
												}
										if (kazanan!=8 )
											i=3;
									}

									if(kazanan == 8 ){
									for(j=1;j&lt;=3;j++)
									{
										g=oyun2[1][j];
											for(i=1;i&lt;=3;i++)
												{
													if (g!=oyun2[i][j])
													{
														kazanan=8;
														break;
													}
													else
													{
														kazanan=oyun2[i][j];
													}
												g = oyun2[i][j];
												}
										if (kazanan!=8 )
											j=3;
									}
									}//if durum!=8

								// Çaprazlamalar Bakılıyor
								if( (oyun2[1][1]==oyun2[2][2] &amp;&amp; oyun2[2][2]==oyun2[3][3]) &amp;&amp; kazanan == 8 )
								{
									if(oyun2[1][1] != 0)
									{
										if(oyun2[1][1] == 1)
										{
											kazanan=1;
										}
										else
										{
											kazanan=2;
										}
									}
								}

								if((oyun2[1][3]==oyun2[2][2] &amp;&amp; oyun2[2][2]==oyun2[3][1]) &amp;&amp; kazanan == 8 )
								{
									if(oyun2[1][3] != 0)
									{
										if(oyun2[1][3] == 1)
										{
											kazanan=1;
										}
										else
										{
											kazanan=2;
										}
									}
								}
								//Çapraz bitiş
						//yapay sonuç1//

					if(kazanan == 8 )
						kazanan=3;
					else
						kazanan=0;

			}
			else if (birsayisi&gt;ikisayisi)
			{
			//sifir olan yere iki koy kontrol et
			//kazanan çıkarsa oyun bitmemiş, kazanan çıkmazsa oyun berabere
				for(i=1;i&lt;=3;i++)
					for(j=1;j&lt;=3;j++)
						{
							if (oyun[i][j]!=0)
								oyun2[i][j]=oyun[i][j];
							else
								oyun2[i][j]=2;
						}

						//yapay sonuç2//
								for(i=1;i&lt;=3;i++)
									{
										g=oyun2[i][1];
											for(j=1;j&lt;=3;j++)
												{
													if (g!=oyun2[i][j])
													{
														kazanan=8;
														break;
													}
													else
													{
														kazanan=oyun2[i][j];
													}
												g = oyun2[i][j];
												}
										if (kazanan!=8 )
											i=3;
									}

									if(kazanan == 8 ){
									for(j=1;j&lt;=3;j++)
									{
										g=oyun2[1][j];
											for(i=1;i&lt;=3;i++)
												{
													if (g!=oyun2[i][j])
													{
														kazanan=8;
														break;
													}
													else
													{
														kazanan=oyun2[i][j];
													}
												g = oyun2[i][j];
												}
										if (kazanan!=8 )
											j=3;
									}
									}//if durum!=8

								// Çaprazlamalar Bakılıyor
								if( (oyun2[1][1]==oyun2[2][2] &amp;&amp; oyun2[2][2]==oyun2[3][3]) &amp;&amp; kazanan == 8 )
								{
									if(oyun2[1][1] != 0)
									{
										if(oyun2[1][1] == 1)
										{
											kazanan=1;
										}
										else
										{
											kazanan=2;
										}
									}
								}

								if((oyun2[1][3]==oyun2[2][2] &amp;&amp; oyun2[2][2]==oyun2[3][1]) &amp;&amp; kazanan == 8 )
								{
									if(oyun2[1][3] != 0)
									{
										if(oyun2[1][3] == 1)
										{
											kazanan=1;
										}
										else
										{
											kazanan=2;
										}
									}
								}
								//Çapraz bitiş
								//yapay sonuç2//

				if(kazanan == 8 )
						kazanan=3;
					else
						kazanan=0;
			}
	}

	cout&lt;&lt;endl;

	for(i=1;i&lt;=3;i++)
	{
		for(j=1;j&lt;=3;j++)
		{
			cout&lt;&lt;oyun[i][j]&lt;&lt;&quot; &quot;;
		}
		cout&lt;&lt;endl;
	}
	cout&lt;&lt;endl;
	for(i=1;i&lt;=3;i++)
	{
		for(j=1;j&lt;=3;j++)
		{
			if(oyun[i][j]==0)
			cout&lt;&lt;&quot;  &quot;;
			else if (oyun[i][j]==1)
			cout&lt;&lt;&quot;X &quot;;
			else if (oyun[i][j]==2)
			cout&lt;&lt;&quot;O &quot;;
		}
		cout&lt;&lt;endl;
	}

	cout&lt;&lt;endl&lt;&lt;&quot;Sonuç:&quot;&lt;&lt;kazanan&lt;&lt;endl&lt;&lt;endl;

	return 0;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2010/10/22/tic-tac-toe-hakemi-tbdgenc-algoritma-sorusu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

