<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>KnbykL Official Web Site | Web Security, Web Applications Security</title>
	
	<link>http://www.knbykl.org</link>
	<description>Web Security, Articles and Applications, Hacking Methods, SQL Injection, CSRF, XSRF and Server Security</description>
	<lastBuildDate>Sat, 04 Jul 2009 10:01:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://feeds.feedburner.com/knbykl?format=skin</thespringbox:skin><media:copyright>?zinsiz Kopyalanmas? Yasakt?r</media:copyright><itunes:author>KnbykL</itunes:author><itunes:explicit>no</itunes:explicit><itunes:subtitle>Web Security, Articles and Applications, Hacking Methods, SQL Injection, CSRF, XSRF and Server Security</itunes:subtitle><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/knbykl" type="application/rss+xml" /><feedburner:emailServiceId>knbykl</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Kimlik Fotokopisi ve Tehlikeleri</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/BaNMbqbnQ-w/</link>
		<comments>http://www.knbykl.org/kimlik-fotokopisi-ve-tehlikeleri/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 10:01:48 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Fotokopi Tehlikeleri]]></category>
		<category><![CDATA[Kimliğim kayboldu]]></category>
		<category><![CDATA[Sahte Belge Yapımı]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=240</guid>
		<description><![CDATA[Bildiğiniz gibi artık her kurumda işlem yaparken, telefon hattı alırken, bir  yerlere abone olurken, kargo alıp-verirken, havale işlemlerinde veya kimlik fotokopisi istenmekte.


Aslında bu yasal değil, sadece koca formu doldurmak yerine kimliğinizin fotokopisini iliştiriyorlar o belgelere ya da kendilerini garantiye alıyorlar ve işleri hızlandırıyorlar. Sebep her neyse. Sonuçta artık kimlik fotokopisi ile çok işlem yapılması alışmış [...]]]></description>
			<content:encoded><![CDATA[<p><a></a>Bildiğiniz gibi artık her kurumda işlem yaparken, telefon hattı alırken, bir  yerlere abone olurken, kargo alıp-verirken, havale işlemlerinde veya kimlik fotokopisi istenmekte.<br />
<img class="alignnone size-full wp-image-241" title="kimlik-fotokopisi-ve-tehlikeleri" src="http://www.knbykl.org/wp-content/uploads/2009/07/kimlik-fotokopisi-ve-tehlikeleri.jpg" alt="kimlik-fotokopisi-ve-tehlikeleri" width="615" height="100" /><br />
<span id="more-240"></span></p>
<p>Aslında bu yasal değil, sadece koca formu doldurmak yerine kimliğinizin fotokopisini iliştiriyorlar o belgelere ya da kendilerini garantiye alıyorlar ve işleri hızlandırıyorlar. Sebep her neyse. Sonuçta artık kimlik fotokopisi ile çok işlem yapılması alışmış bir durum oldu artık. Peki, bu kimlik fotokopiniz ile başkası neler yapabilir diye düşündünüz mü hiç?</p>
<p>Birkaç örnek verecek olursak:</p>
<p>1) <span style="color: #00ccff;">Adınıza bir yerlere üye olunabilir.<br />
</span>2) <span style="color: #00ccff;">Adınıza abonelik açılabilir</span>.<br />
3) <span style="color: #00ccff;">Sizi bir şey için kefil edebilirler.</span></p>
<p>4) En çok görülen vakalardan biri de şu: A<strong>DINIZA BİR SÜRÜ TELEFON HATTI AÇTIRIP, AÇIK HAT OLARAK SATABİLİRLER!</strong> ve bu hatları alanlar herhangi bir suç işlediklerinde direk hat sahibi yani kimlik fotokopisi kullanılarak adına hat açılan kişi zan altında kalmaktadır. (zaten siz de telefoncularda açık hat satıldığına şahit olmuşsunuzdur) -ve bunun gibi birçok örnek</p>
<p>Peki, kendimizi korumak, kimlik bilgilerimizle isteğimiz dışında işlem yapılmasını önlemek çok mu zor? Elbette değil Basit ve etkili bir yöntem var:</p>
<p>Mesela <span style="color: #99cc00;">05xx1234567</span> nolu telefon hattını aldınız.</p>
<p>Form doldururken ve kimlik fotokopisini verirken,FOTOKOPİDE, KİMLİĞİN ÖN VE ARKA YÜZÜNDEKİ BOŞ ALANLARA (hatta uzerine) <strong>SADECE 05XX1234567 HATTIN ABONELİK İŞLEMLERİ/ AKTİVASYONU İÇİNDİR yazıp paraf atmanız sizi koruyacaktır.<br />
</strong></p>
<p>Veya: <strong>SADECE 01/01/200X NOLU , XXXXMİKTARLI HAVALE İŞLEMİ İÇİNDİR..<br />
</strong></p>
<p>vb. ŞEKLİNDE NOT TUTMANIZ İYİ BİR ÖNLEM OLACAKTIR&#8230;</p>
<p>Yazan : <strong><span style="color: #99cc00;">Burak ŞEKERCİOĞLU<br />
</span></strong>Gönderen : <strong><span style="color: #99cc00;">Berkan YILDIRIM</span></strong></p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/BaNMbqbnQ-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/kimlik-fotokopisi-ve-tehlikeleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/kimlik-fotokopisi-ve-tehlikeleri/</feedburner:origLink></item>
		<item>
		<title>Internette Gezinmenin Güvenli Yolları</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/JfUN1C1EZMc/</link>
		<comments>http://www.knbykl.org/internette-gezinmenin-guvenli-yollari/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 17:15:15 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Security]]></category>
		<category><![CDATA[Computer Security Institute]]></category>
		<category><![CDATA[Internette Güvenliği Nasıl Sağlarım?]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=233</guid>
		<description><![CDATA[
İnternetin giderek yaygınlaşması, bilişim güvenliğinin önem kazanan bir konu haline getirdi. Bilişim güvenliği; teknolojik önlemlerle sağlandığı gibi kullanıcıların bilgilenmesi ve internet kullanımında gösterecekleri dikkat ile de sağlanabilir. İşte yapmanız ve yapmamanız gerekenler…


Yaşamımızın bir çok alanında bilgisayar ve ağ teknolojileri olmazsa olmazlar arasında yerini almıştır. Kamu hizmetleri, askeriye, internet bankacılığı, para transferleri, iletişim, ticaret ve daha [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>İnternetin giderek yaygınlaşması, bilişim güvenliğinin önem kazanan bir konu haline getirdi. Bilişim güvenliği; teknolojik önlemlerle sağlandığı gibi kullanıcıların bilgilenmesi ve internet kullanımında gösterecekleri dikkat ile de sağlanabilir. İşte yapmanız ve yapmamanız gerekenler…<br />
<img class="alignnone size-full wp-image-237" title="internette-gezinmenin-guvenli-yollari-image-img" src="http://www.knbykl.org/wp-content/uploads/2009/06/internette-gezinmenin-guvenli-yollari-image-img.jpg" alt="internette-gezinmenin-guvenli-yollari-image-img" width="615" height="100" /><br />
<span id="more-233"></span></p>
<p>Yaşamımızın bir çok alanında bilgisayar ve ağ teknolojileri olmazsa olmazlar arasında yerini almıştır. Kamu hizmetleri, askeriye, internet bankacılığı, para transferleri, iletişim, ticaret ve daha sayamadığımız bir çok alanda bilişim güvenliği karşımıza çıkmaktadır. Teknolojinin bu kadar ilerlemesiyle internet ağı legal olarak kullanıldığı gibi illegal olarak da kullanım göstermektedir.</p>
<p>Bilişim sistemlerine olan bireysel ve toplumsal bağımlılığımız arttıkça bu konuda ki oluşabilecek her türlü saldırıya karşı duyarlılık ve güvenlik politikası artacaktır. Çünkü illegal diye tabir ettiğimiz saldırılara karşı güvenlik önlemlerimiz, saldırıyı gerçekleştiren kişi seviyesinde olmazsa prestij, zaman, para ve dolaylı olarak bilgi kaybına yol açacaktır.</p>
<p>Bilgisayar Güvenliği Enstitüsü (<span style="color: #99cc00;">Computer Security Institute – CSI</span>) ve Federal Araştırma Bürosu (<span style="color: #99cc00;">FBI</span>) tarafından her yıl gerçekleştirilen Bilgisayar Suçları ve Güvenlik Araştırması projelerinin raporlarına göre her yıl neredeyse ikiye katlanacak şekilde artmıştır.</p>
<p>Bilişim Güvenliği kapsamlı bir bölüm olmasına rağmen temel olarak dört prensipten meydana gelmektedir.</p>
<p>« Süreklilik (<span style="color: #99cc00;">Availability</span>)</p>
<p>« Gizlilik (<span style="color: #99cc00;">Confidentiality</span>)</p>
<p>« Veri Bütünlüğü (<span style="color: #99cc00;">Data Integrity</span>)</p>
<p>« Güvenlik Boşluğu (<span style="color: #99cc00;">Vulnerability</span>)</p>
<p>« Süreklilik (<span style="color: #99cc00;">Availability</span>)</p>
<p>Bilişim Sistemleri; yapmakla mükellef olduğu görevleri yerine getirirken bu esnada hedef olarak yüksek performans söz konusudur. Gerçekleştirilen bu performans sayesinde güvenliği sağlanan kişi ya da kurumların memnuniyeti artar böylece daha çok iş olanağı ve teknolojinin daha çabuk ilerlemesine sebep olur. Süreklilik hizmeti; bilişim sistemi içerisinde, içeriden veya dışarıdan gelebilecek her türlü saldırıya karşı korumayı hedefler. Süreklilik hizmeti sayesinde internet kullanıcıları verilerine erişim yetkileri sınırlarında güvenilir bir şekilde ulaşmış olurlar. Bu sayede süreklilik, yalnızca sisteme zarar vermeye çalışan hacker haricinde, sistemin teknik hatalarını ve tekniksel olarak bilinçsiz personeller tarafından hazırlanmış sistemleri ele alır.</p>
<p><strong>« Gizlilik (<span style="color: #99cc00;">Confidentiality</span>)</strong></p>
<p>Gizlilik; verilerin yetkisiz kişilerin eline geçmesini engelleyen bir metottur. Bu yol hem kalıcı ortamlarda bulunan verileri (bknz: hard, flash, vs disk, CD, DVD) hem de ağ üzerinde bir göndericiden bir alıcıya gönderilen veriler için söz konusudur. Hackerlar, yetkileri kısıtlı olan her türlü verilere bir çok metotla erişebilirler. Örnek verecek olursak; Sosyal mühendislik, parolaların çalınmasını sağlayacak keylogger, trojan, worm, vs gibi kendi yöntemleriyle kullanıcının gizli bilgilerine erişebilir, gerek veri kaybı gerek zaman gerekse maddi zarara sebep olabilir.</p>
<p><strong>« Veri Bütünlüğü (<span style="color: #99cc00;">Data Integrity</span>)</strong></p>
<p>Veri bütünlüğü metodunun amacı; gönderilen verinin tamamı ve güvenilir bir şekilde alıcıya iletilmesi işidir. Bu sayede veri, eksiksiz olarak, değiştirilmemiş, ekleme veya eksiltme olmamış, sırası değiştirilmemiş, bir kısmı veya tamamı tekrar edilmemiş bir şekilde alıcısına ulaşır. Veri bütünlüğü konusunda, verinin gönderici tarafından sınaması yapılabilir, bu sayede bilginin değiştirilip değiştirilmediği bariz bir şekilde belli olur.</p>
<p>Yukarıda bahsettiğimiz metotların yanında ağ güvenliği açısından kimlik sınaması şarttır. Şöyle ki; veri alışverişinde, göndericinin alıcı konusunda kimlik sınaması yapıp doğru kişi olup olmadığı belirlenmelidir. Bununla beraber bilişim sistemleri açık ve net olarak fazlasıyla tehditlere maruz kalabilir.</p>
<p>Örneğin internet kullanıcısının sistemi bilinçsizce ve yeterli beceriye, bilgiye sahip olmadan kullanması sonucu kötü niyetli olmayan tehditler görülür. Aksine sisteme zarar verme amacıyla, sisteme yönelik yapılan saldırı ve tehditler de kötü niyetli davranışları gösterir. Bu konuda genel olarak sistemin zafiyetlerinden yararlanılır.</p>
<p><strong>« Güvenlik Boşluğu (<span style="color: #99cc00;">Vulnerability</span>) </strong></p>
<p>Güvenlik boşluğu yani Vulnerability diye adlandırdığımız bu terim, sistem üzerindeki yazılım ve donanımdan kaynaklanan veya sistemdeki açık noktalar, zayıf kalmış yönlerin bütününe verilmiş bir addır. Bu güvenlik boşluğu sayesinde saldırıyı gerçekleştiren hacker, sistem ağına yetkisiz olarak sınırsız yetki ile erişebilir. Yazılım veya donanımdan kaynaklanan bu güvenlik boşlukları, sistem yöneticisi veya başka bir güvenlik grubu tarafından geliştirilen yama program yardımıyla kapanabilir.</p>
<p>Güvenlik Boşluğu oluşturabilecek tehditler;</p>
<p><span style="color: #ff9900;">»</span> Anti virüs yazılımının eksikliği sonucu oluşan virüsler<br />
<span style="color: #ff9900;">»</span> Sistem Ağı üzerindeki zafiyetleri kullanarak sızan hackerlar ve bu sayede ulaşılabilen gizli bilgiler<br />
<span style="color: #ff9900;">»</span> İşletim sistemindeki yanlış bir parametre ve sistemin çalışmasına engel olması<br />
<span style="color: #ff9900;">»</span> Erişim denetim mekanizmalarının yetersizliği<br />
<span style="color: #ff9900;">»</span> İllegal olarak yazılmış bilgisayar programları<br />
<span style="color: #ff9900;">»</span> Güvenliği sağlayacak kişi veya grubun olmayışı<br />
<span style="color: #ff9900;">»</span> Güvenlik duvarlarının yetersiz olması</p>
<p>vs. şeklinde sıralayabiliriz.</p>
<p>Bu tehditler, tedbir yardımı ile azaltılabilir. Şöyle ki alınan her tedbir; güvenlik boşluğunun oluşturduğu zafiyetleri ortadan kaldırır ve hackerın bunu kendi lehine kullanması olasılığını azaltır. Bilişim güvenliğinin sağlanması üç temel açıdan oluşur. Bunlar;</p>
<p><span style="color: #ff9900;">»</span> Yönetsel Önlemler<br />
<span style="color: #ff9900;">»</span> Teknolojik Uygulamalar<br />
<span style="color: #ff9900;">»</span> Eğitim ve Farkındalıktır.</p>
<p><strong>Bilişim Güvenliği ve Bilişim Suçlarına Karşı Mücadele Derneği </strong>adına<strong> Volkan BİLGİÇ</strong></div>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/JfUN1C1EZMc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/internette-gezinmenin-guvenli-yollari/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/internette-gezinmenin-guvenli-yollari/</feedburner:origLink></item>
		<item>
		<title>Cross-Site Request Forgery Atağından Korunmanın Yolu</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/4h9QF_jt4SU/</link>
		<comments>http://www.knbykl.org/cross-site-request-forgery-atagindan-korunmanin-yolu/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 14:01:39 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Security]]></category>
		<category><![CDATA[Cross-Site Request Forgery Security]]></category>
		<category><![CDATA[Cross-Site Request Forgery'den nasıl korunurum?]]></category>
		<category><![CDATA[CSRF Patch]]></category>
		<category><![CDATA[CSRF'den nasıl korunurum?]]></category>
		<category><![CDATA[XSRF Patch]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=202</guid>
		<description><![CDATA[Şubatın 19&#8242;unda Mesut TIMUR tarafından yazılan bir makaleyi sizlerle paylaşmayı düşündüm, bu makaleyi okuyup anladığınızda Cross-Site Request Forgery atağından nasıl korunacağınızı da anlamış olacaksınız. Mesut Bey&#8217;e CSRF Güvenliği&#8217;ne verdiği destekten dolayı teşekkür etmemiz gerekir.


CSRF, Cross-Site Request Forgery, web uygulamalarındaki çeşitli fonksiyonalitelerin mağdur kullanıcının bilgisi dahilinde olmadan onun  hak ve yetkileri ile saldırganlarca kullanılmasıdır. Bu döküman, [...]]]></description>
			<content:encoded><![CDATA[<p>Şubatın 19&#8242;unda <strong>Mesut TIMUR</strong> tarafından yazılan bir makaleyi sizlerle paylaşmayı düşündüm, bu makaleyi okuyup anladığınızda <span style="color: #99cc00;">Cross-Site Request Forgery</span> atağından nasıl korunacağınızı da anlamış olacaksınız. Mesut Bey&#8217;e CSRF Güvenliği&#8217;ne verdiği destekten dolayı teşekkür etmemiz gerekir.<br />
<img class="alignnone size-full wp-image-228" title="csrf-security-güvenlik-image-img" src="http://www.knbykl.org/wp-content/uploads/2009/06/csrf-security-güvenlik-image-img.jpg" alt="csrf-security-güvenlik-image-img" width="615" height="100" /><br />
<span id="more-202"></span></p>
<p>CSRF, Cross-Site Request Forgery, web uygulamalarındaki çeşitli fonksiyonalitelerin mağdur kullanıcının bilgisi dahilinde olmadan onun  hak ve yetkileri ile saldırganlarca kullanılmasıdır. Bu döküman, geliştiriciler için bir CSRF referansı olma amacı gütmekle beraber <strong>çok geç </strong>kaleme alınmıştır.</p>
<h2><strong>Problem Nerede Başlıyor ?</strong></h2>
<p>Problemin başlangıç noktası HTTP&#8217;nin <em>stateless</em> (durum bilgisinden yoksun) bir protokol olmasıdır. Ardı ardına yapılan HTTP istekleri ve cevapları sıra numarası taşımadıkları için, ilgili kişiler dışında başkaları tarafından da oluşturulabilmesi sebebiyle, kullanıcı ile web sunucu arasında başlamış iletişim, saldırganların kurban kullanıcılara yaptırdıkları isteklerle devam ettirilebiliyor. Paket içerisinde sıra numarası, token, anahtar gibi bir mekanizma olması halinde; bu bilgiler saldırganlarca ele geçirilemediği durumlarda, kurban adına istek yapılması mümkün olamayacaktır. Bilgi güvenliğinde bu konu &#8220;Confused Deputy&#8221; problemi olarak sınıflandırılmıştır [1]</p>
<h2><strong>Konunun Önemi </strong></h2>
<p>Bir saldırganın CSRF ile verebileceği zarar, ilgili zafiyetin bulunduğu web uygulamasının yetenekleri ile doğru orantılıdır. Bir elektronik posta hizmeti veren web servisinde ilgili zafiyet tespit edilirse saldırganın yapabileceği mağdur kullanıcının hesabıyla mail atmak olacaktır.</p>
<h1><strong>0&#215;01 : Zafiyetin İncelenmesi</strong></h1>
<h2>Senaryo</h2>
<p>Örneğin bir internet bankacılığı uygulamasında CSRF zafiyeti mevcut olsun. Mağdur kullanıcı, favori internet tarayıcısının bir tab&#8217;ında internet bankacılığı uygulamasını kullanırken, diğer tab&#8217;ında futbol maçları ile ilgili yorumların yapıldığı bir forumu takip etmektedir. Forumun yöneticisi, giriş sayfasına bir resim koymuştur, fakat resim bir sebepten dolayı görüntülenememektedir. Bunun üzerine sayfanın kaynak kodlarından, ilgili resmi ifade eden HTML kodlarına bakan mağdur kullanıcı, birden dehşete düşer.</p>
<p><span style="color: #ccffff;"><span style="color: #33cccc;"><span style="color: #00ccff;">&lt;<span style="color: #ffcc00;">img src</span>=</span>&#8220;</span><span style="color: #99cc00;">http://bank.example/withdraw?account=1&amp;amount=1000000&amp;for=forumadmin</span><span style="color: #00ccff;">&#8220;&gt;</span></span></p>
<p>Tarayıcının, bu resmi yüklemek için src etiketinde verilen adrese istek yapmasından başlayarak oluşan süreci inceleyelim.</p>
<p>1.  İnternet bankacılığı uygulamasına, Mağdur kullanıcının hesabından belli bir paranın saldırganın hesabına geçirilmesi şeklinde istek yapılır.<br />
2.  Eğer uygulamaya o an giriş yapılmış durumda ise, ya da uygulamanın &#8220;Beni Hatırla&#8221; gibi bir seçeneği işaretlenmişse, tarayıcı bu isteğin ardına , gerekli oturum (session) ya da çerez (cookie) bilgilerini ekleyecektir.<br />
3.  İstek internet bankacılığı uygulamasına gelecektir. Mantıklı bir uygulamanın burada yapması gereken istekle beraber gelen oturum ya da çerez bilgilerinin geçerli olup olmadığının kontrolü ardından isteğin yürütülmesidir.<br />
4.  Bir üst adımda problem olmadığı durumda, ilgili istek gerçekleşecek ve para transferi başarı ile sonuçlanacaktır.</p>
<p>Yasal bir şekilde kullanıcı tarafından yapılmış istek sol tarafta gösterilirken, bir CSRF saldırısının diyagramı sağdaki gibidir.</p>
<table style="height: 231px;" border="0" cellspacing="0" cellpadding="3" width="676">
<tbody>
<tr>
<td width="50%"><img class="alignnone size-full wp-image-212" title="d922dvw_21crjh3p6f_b" src="http://www.knbykl.org/wp-content/uploads/2009/06/d922dvw_21crjh3p6f_b.gif" alt="d922dvw_21crjh3p6f_b" width="329" height="222" /></td>
<td width="50%"><img class="alignnone size-full wp-image-213" title="d922dvw_20fn5tjcgv_b" src="http://www.knbykl.org/wp-content/uploads/2009/06/d922dvw_20fn5tjcgv_b.gif" alt="d922dvw_20fn5tjcgv_b" width="329" height="224" /></td>
</tr>
</tbody>
</table>
<h2>Problemin Analizi ve Çözüm Fikirleri</h2>
<p>Görüldüğü üzere kurban kullanıcının bilgisi dahilinde olmadan, onun yerine bir internet uygulaması saldırgan lehine kullanılmıştır. Burada problem kimden kaynaklanmaktadır ?</p>
<p>1. Mağdur Kullanıcı :<br />
İlgili kişinin, her girdiği web sayfasının HTML kodlarını inceleyip ondan sonra yüklemek gibi bir durumu olmadığından kurban kişinin yapabileceği pek bir şey bulunmamaktadır. &#8220;Beni Hatırla&#8221; opsiyonunu kullanmayarak ve kritik bir uygulamada gezerken, internetin geri kalanı ile ilgilenmeyerek bir miktar atak yüzeyini daraltabilir fakat bu önlemler pratik olarak çok uygulanabilir değildir.</p>
<p>2. Kurban Uygulama :<br />
İlgili uygulama, örneğimizdeki gibi oturum ve çerez bilgilerine güvenip çalışıyor ise bu zafiyete karşı korunmasız demektir. Saldırgan örnekte de gösterildiği gibi çok basit şekilde uygulamaya, mağdur kişiden geliyormuşcasına istekler gönderebilirler.</p>
<p>Zafiyet esas itibariyle kurban uygulamadan kaynaklandığı için yapılması gereken ilgili uygulamanın mağdur kişinin kendi bilgisi dışında yapılan istekleri kabul etmemektir. Peki gelen isteğin, kişinin kendisinin mi yaptığı, yoksa başka bir saldırgan tarafından mı tetiklendiği ne şekilde anlaşılabilir ?</p>
<p>Bu noktada yapılması gereken ile ilgili ipucu ilk bölümde verilmiştir. Temel sorun aslında HTTP&#8217;nin <em>stateless </em>bir protokol olması, ve bu durumun geliştirici tarafından giderilmesi gerekliliğidir. Yani tıpkı TCP/IP&#8217;de olduğu gibi giden gelen paketlere numaralar (sıra) verilmeli ve bu sayılar üçüncü şahıslar tarafından tahmin edilememelidir. [3]</p>
<h1><strong>0&#215;02 : Yetersiz Çözümler</strong></h1>
<p>Bu bölümde problem için çözüm olarak ilk akla gelen, fakat yetersiz olan çözüm yollarından bahsedilecektir. Bunlar tek başlarına çözüm olarak işe yaramazken, 0&#215;03 numaralı başlıktaki çözüm önerilerine eklenmeleri durumunda derinlemesine defans önlemi olarak işlev göreceklerdir.</p>
<h2><strong>Referer&#8217;i Kontrol Etmek</strong></h2>
<p>İstek, web uygulamasına ulaştıktan sonra HTTP başlık bilgilerinden &#8220;REFERER&#8221; bilgisine bakılarak nereden geldiği tespit edilebilir ve isteğin kullanıcıdan mı, yoksa saldırı yapmaya çalışan bir web uygulamasından mı geldiği anlaşılabilir. Fakat &#8220;REFERER&#8221; isimli HTTP başlık bilgisi, değiştirilebilir olduğu için bu bilgiye güvenilerek doğrulama yapılması büyük bir hata olacaktır. Ayrıca REFERER başlığını kimi vekil sunucular kesebilmektedir.</p>
<h2><strong>Kritik İşlemleri POST ile Yapmak</strong></h2>
<p>0&#215;01 no&#8217;lu başlığımızda incelenen atak GET dizisi içerisinde işlem tipi ve boyutları gönderilerek gerçekleştiriliyordu. Bundan dolayı bir image etiketinin kaynak bilgisine girilebilmiş, ve resmin görüntülenmesiyle atak gerçekleşmişti. Kritik işlemler ile ilgili bilgilerin taşınması sırasında POST kullanılırsa bu tip zafiyetlerden korunulabilirmiş gibi gelebilir, fakat çok basitçe bir form oluşturup, ilgili kullanıcı o sayfayı görüntüleyince ilgili form kaydettirilerek atak gerçekleştirilmesi mümkündür. Haricinde XMLHTTPRequest nesnesi ile de yapılabilir.</p>
<p>Basitçe şu şekilde yapılır:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="100%"><span style="color: #00ccff;">&lt;script&gt;<br />
<span style="color: #99cc00;"><strong>var</strong> post_data = &#8216;name=value&#8217;;<br />
<strong>var</strong> xmlhttp=<strong>new</strong> XMLHttpRequest();<br />
xmlhttp.open(&#8221;POST&#8221;, &#8216;<span style="color: #ff9900;">http://url/path/file.ext</span>&#8216;, true);<br />
xmlhttp.onreadystatechange = <strong>function</strong> ()<br />
{<br />
<strong> if</strong> (xmlhttp.readyState == 4)<br />
{<br />
alert(xmlhttp.responseText);<br />
}<br />
};<br />
xmlhttp.send(post_data);</span><br />
&lt;/script&gt;</span></td>
</tr>
</tbody>
</table>
<h1>0&#215;03 : Zafiyetin Çözümü</h1>
<p>Zafiyetin çözümü ile ilgili fikirlere bir üst başlıkta değinilmişti. Bu bölümde reel çözüm önerileri ve zafiyetin platformlardaki durumu incelenecektir.</p>
<h2><strong>Platformların Durumu</strong></h2>
<p>ASP.net uygulamaları, ViewState mekanizması aktif durumdayken CSRF zafiyetine karşı korumalı durumdadırlar. Lakin bu mekanizma beraberinde bazı problemleri ve eksikleri bünyesinde barındırmaktadır.[2]      Her ASP.net sayfasında bu mekanizma aktif olmayabilir, ya da yanlışlıkla kapatmış olabilirsiniz. Sadece POST dizisi üzerinde koruma sağlar. GET dizisindeki parametreler, hala CSRF saldırılarına açıktır. ViewState her HTTP isteği için pakete eklediği veriler sebebiyle paket boyutunu arttıracak ve iletişimin hızını düşürecektir.          [3]ViewState, sonuç itibariyle istemci tarafından kontrol edilebileceği için her türlü manipülasyona açık durumdadır. Bundan dolayı ViewState MAC etkin durumda olmalıdır.<br />
Bunun dışında ViewState&#8217;lerin sadece belli bir kullanıcıya ait olduğunda geçerli olması için, <strong>OnInit()</strong> ya da <strong>Page_Init(</strong>) metotlarına aşağıdaki kod eklenmelidir.</p>
<p><strong>ViewStateUserKey = Session.SessionID;</strong></p>
<p>Ruby on Rails haricinde bu zafiyet ile ilgili olarak koruma ya da API sağlayan başka bir dil/framework bulunmamaktadır.[4]</p>
<h2>Temel Çözüm</h2>
<p>Zafiyetin çözülmesi için temek fikir şu şekildedir :</p>
<ol>
<li> Her yapılan isteğin sonucunda kullanıcıya bir adet rastgele değer gönderilmelidir.</li>
<li> Kullanıcı gönderilen sayfa üzerinden tekrar istek yapınca, bu isteğe daha önce kullanıcıya gönderilmiş rastgele değer eklenmelidir.</li>
<li>Kullanıcıdan gelen değer ile , kullanıcıya gönderilmiş olan değer karşılaştırılmalıdır. Eğer birbirini tutuyorsa, ilgili HTTP isteği web uygulaması tarafından gönderilmiş sayfa üzerinden yapılmış, herhangi bir 3. şahıs tarafından yapılmamış demektir.</li>
</ol>
<p>Bu çözüm fikrinin uygulanması noktasında önem teşkil eden unsur rastgele değerin , yeterli entropiye sahip bir havuzdan seçilmesi sonucu gerçekten rastgele olmasıdır.</p>
<h2><strong>Uygulama Fikirleri</strong></h2>
<h3><strong>1.Oturum Bilgilerine Rastgele Token Eklenmesi</strong></h3>
<p>Basitçe, Temel Çözüm&#8217;de ifade edilen modelin uygulanması şeklindedir. Eklenecek Token, gizli bir form parametresi olarak, ya da istek gerçekleştiğinde GET veya POST dizisine parametre olarak eklenecek şekilde yazılabilir.</p>
<table style="height: 201px;" border="0" cellspacing="0" cellpadding="3" width="426">
<tbody>
<tr>
<td width="50%"><span style="color: #00ccff;"><span style="color: #ffcc00;">&lt;?php</span><br />
<span style="color: #99cc00;"> //Token oluşturuluyor</span><br />
$token = GenerateToken($_COOKIE['cookie']);<br />
<span style="color: #ffcc00;">?&gt;</span><br />
&lt;<strong>form</strong> method=&#8221;POST&#8221; action=&#8221;<span style="color: #99cc00;">withdraw.php</span>&#8220;&gt;<br />
&lt;<strong>input</strong> type=&#8221;text&#8221; name=&#8221;account&#8221;&gt;<br />
&lt;<strong>input</strong> type=&#8221;text&#8221; name=&#8221;amount&#8221;&gt;<br />
&lt;<strong>input</strong> type=&#8221;hidden&#8221; name=&#8221;token&#8221; value=&#8221;<span style="color: #99cc00;">&lt;?=$token;?&gt;</span>&#8220;&gt;<br />
&lt;<strong>input</strong> type=&#8221;submit&#8221; name=&#8221;submit&#8221; value=&#8221;Submit&#8221;&gt;<br />
&lt;/<strong>form</strong>&gt;</span></td>
</tr>
</tbody>
</table>
<table style="height: 182px;" border="0" cellspacing="0" cellpadding="3" width="199">
<tbody>
<tr>
<td width="50%"><span style="color: #ffcc00;">&lt;?php</span><br />
<span style="color: #99cc00;"> </span><span style="color: #00ccff;"><span style="color: #99cc00;">//Token kontrol ediliyor</span><br />
<strong>if</strong>(<strong>isset</strong>($_POST['token']))<br />
{<br />
<strong>if</strong> (!CheckToken($_POST['token']))<br />
<strong>die</strong> (&#8221;<span style="color: #99cc00;">Tekrar giriş yapınız</span>&#8220;);<br />
ProcessWithdraw();<br />
}</span><br />
<span style="color: #ffcc00;">?&gt;</span></td>
<td width="50%"><span style="color: #ffcc00;"><br />
</span><span style="color: #ffcc00;"> </span></td>
</tr>
</tbody>
</table>
<p>Kodda görüldüğü üzere, GenerateToken ve CheckToken fonksiyonları ile basitçe token üretilip, kontrol edilmektedir. Bu fonksiyonların ne şekilde implemente edildiği de önemlidir. Fonksiyonların sahip olması gereken özellikler:</p>
<ol>
<li> Ürettiği tokenlerin kaba kuvvet saldırılarına karşı ayakta kalabilmesi için yeterli entropiye sahip olması.</li>
<li> CheckToken() fonksiyonu ile birlikte varolan tokenin geçersiz hale gelmesi ve bir kullanımlık olmasının garantisi.</li>
<li> Algoritma bilinse dahi, tokenlerin tahmin edilemeyecek yapıda olmaları.</li>
<li>Kullanıcı iki farklı tarayıcı ile uygulamayı aynı anda gezebiliyorsa, bu durumun göz önünde bulundurulup tokenlerin karıştırılmaması.</li>
</ol>
<p><strong>2.Çift Oturum ya da Çift Çerez Kullanımı</strong> Oturum ya da çerez bilgileri <em>Same-Origin Policy </em>gereğince, sadece aynı alan adı tarafından yazılır ve okunabilir. Bundan dolayı kurban.com &#8216;un yazdığı oturum ya da çerez bilgisini, saldırgan.com okuyamaz.[5]<br />
Bundan dolayı, CSRF koruması için çerez tabanlı bir koruma kullanılabilir. Rastgele değer olarak, oturum bilgisi okunur ve girilir. Sunucu tarafında ise isteğe eklenmiş oturum bilgisi ile, HTTP başlık bilgisi içerisindeki oturum bilgisi karşılaştırılır, eğer bilgiler tutarsızlık gösteriyorsa istek reddedilir.<br />
Bu örnek için tekrar implementasyon vermek istemiyorum, üstteki implementasyondaki token &#8216;lere, cookie atanıp bunun kontrolunun yapılması yeterlidir.</p>
<h3><strong>3.CAPTCHA Kullanımı</strong></h3>
<p>CAPTCHA (&#8221;Completely Automated Public Turing Test To Tell Computers and Humans Apart&#8221;)&#8217;lar, yapılan isteğin insan ya da otomatize bir kod tarafından yapıldığını anlamak için kullanılabilir. Burada da uygulama önemli işlemler öncesinde bir CAPTCHA ile işlemin saldırgan bir web sitesi tarafından değil de bir insan tarafından yapıldığını doğrulayabilir.</p>
<h3><strong>4.Kanal-Dışı Çözümler</strong></h3>
<p>Kritik işlemler öncesi, özellikle bankacılık uygulamalarında görülen telefon ya da sms ile onaylama isteği sayesinde CSRF engellenmiş olur. Lakin bu uğraştırıcı bir çözüm olduğundan, çok kritik olmayan uygulamalar dışında kullanılması tavsiye edilmeyen bir metotdur.</p>
<h1>0&#215;04 : Yaygınlık Durumu</h1>
<p>Bir çok popüler web uygulaması önlemlerini çoktan almış durumda. Bir uygulamadaki CSRF zafiyetleri genellikle uygulama geliştiricilerinin güvenlik farkındalıklarının durumları konusunda belirleyici bilgi verir.Daha çok ev yapımı ya da görevi kritik olmayan uygulamalarda görülmektedir.<br />
Geçtiğimiz yıllarda çok önemli web uygulamalarında CSRF zafiyetleri tespit edilmiştir. Bir kaç örnek üzerinden geçeceğiz.</p>
<h2>1.GMail E-mail Hijack Technique, Eylül 2007</h2>
<p>GMail e-posta servisinin filtre adında bir fonksiyonalitesi mevcut. Kısaca onceden belirlediğiniz belli filtrelere uyan e-postaları başka hesaplara yönlendirebiliyorsunuz.<br />
Filtre oluşturulması aşamasında bir CSRF zafiyeti tespit edildi ve tüm e-postaların dahil olduğu bir filtre ile kurban kullanıcıya gelen tüm e-postalarının size iletilmesini sağlayabiliyordunuz. Yani sunucuya filtre oluşturma işlemi ulaştığında yapılması gereken, öncelikli olarak bu isteğin korsan şekilde yapılmadığından emin olmak olmalıydı.</p>
<p>Kurban sitede çalışacak olan kod basitçe şu şekilde olmalıydı [6]</p>
<table style="height: 264px;" border="0" cellspacing="0" cellpadding="3" width="629">
<tbody>
<tr>
<td width="100%"><span style="color: #00ccff;"><span style="color: #ffcc00;">&lt;script&gt;</span></span></p>
<p><span style="color: #00ccff;"> </span></p>
<p><span style="color: #00ccff;"> <strong>var</strong> post_data = &#8216;v=prf&amp;cf2_emc=true&amp;cf2_email=<span style="color: #99cc00;">evilinbox@mailinator.com</span>&amp;cf1_from&amp; cf1_to<br />
&amp;cf1_subj&amp;cf1_has&amp;cf1_hasnot&amp;cf1_attach=true&amp;tfi&amp;s=z&amp;irf=on&amp;nvp_bu_cftb=Create Filter&#8217;;<br />
<strong>var</strong> xmlhttp=<strong>new</strong> XMLHttpRequest();<br />
xmlhttp.multipart = true;<br />
xmlhttp.open(&#8221;POST&#8221;, &#8216;<span style="color: #99cc00;">https://mail.google.com/mail/h/ewt1jmuj4ddv/</span>&#8216;, true);<br />
xmlhttp.onreadystatechange = <strong>function</strong> ()<br />
{<br />
<strong>if</strong> (xmlhttp.readyState == 4)<br />
{<br />
alert(&#8217;sorry&#8217;);<br />
}<br />
};<br />
xmlhttp.send(post_data);<br />
<span style="color: #ffcc00;">&lt;/script&gt;</span></span></td>
</tr>
</tbody>
</table>
<h2>2.GMail Kontakt Bilgilerinin CSRF ile Çalınması, Ocak 2007</h2>
<p>Google alan adı üzerindeki bir URL&#8217;den, tüm GMail iletişim bilgilerini almak mümkündü. İlgili URL&#8217;e korsan bir istek gönderilirse, dönen sayfadan iletişim bilgilerinin ayıklanması gayet kolaydı.[7]</p>
<table style="height: 242px;" border="0" cellspacing="0" cellpadding="0" width="771">
<tbody>
<tr>
<td width="100%"><span style="color: #ff9900;">&lt;script type=&#8221;text/javascript&#8221;&gt;</span></p>
<p><span style="color: #00ccff;"><strong>function</strong> google(data)</span></p>
<p><span style="color: #00ccff;"> {</span></p>
<p><span style="color: #00ccff;"><strong>var</strong> emails, i;</span></p>
<p><span style="color: #00ccff;"><strong>for</strong> (i = 0; i &lt;data.Body.Contacts.length; i++)</span></p>
<p><span style="color: #00ccff;"> {</span></p>
<p><span style="color: #00ccff;"> mails += &#8220;&lt;li&gt;&#8221; + data.Body.Contacts[i].Email + &#8220;&#8221;;</span></p>
<p><span style="color: #00ccff;"> }</span></p>
<p><span style="color: #00ccff;"> document.write(&#8221;&lt;ol&gt;&#8221; + emails + &#8220;&lt;/ol&gt;&#8221;);</span></p>
<p><span style="color: #00ccff;"> }</span></p>
<p><span style="color: #00ccff;"> <span style="color: #ff9900;">&lt;/script&gt;</span></span></p>
<p><span style="color: #00ccff;"> <span style="color: #ff9900;">&lt;script type=&#8221;text/javascript&#8221; src=&#8221;data/contacts?out=js&amp;show=ALL&amp;psort=Affinity&amp;callback=google&amp;max=99999&#8243;&gt;</span></span></p>
<p><span style="color: #00ccff;"> <span style="color: #ff9900;">&lt;/script&gt;</span></span></td>
</tr>
</tbody>
</table>
<p><strong>Bu örnekler dışında bir çok popüler web uygulamasında, yakın geçmişte CSRF zafiyetleri tespit edilmiştir.[8]</strong></p>
<h1>0&#215;05 : antiCSurf</h1>
<p>CSRF zafiyetinin çözümü için yapılması gereken &#8220;Oturum Bilgilerine Rastgele Token Eklenmesi&#8221; başlığında incelenmiştir. Bu noktada yapılması gereken ek işlemlerden yukarıda bahsetmiştik. PHP dilinde ilgili işlemleri garanti eden ufak bir kütüphane hazırladım. İlgili kod parçasındaki &#8220;token&#8221; değişkenine, kütüphane yardımıyla şu şekilde &#8220;unique&#8221; değer atanabilir .Kütüphanenin proje sayfasına referanslardan ulaşılabilir.[9]</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="50%"><span style="color: #00ccff;"> </span><span style="color: #ff9900;">&lt;?php<br />
</span><span style="color: #00ccff;"><strong>include</strong>(&#8221;<span style="color: #ff9900;">SecureToken.php</span>&#8220;);<br />
$st=<strong>new</strong> SecureToken();<br />
$sid=$_SESSION['sid'];<br />
$token = $st-&gt;GetToken($sid);<br />
<span style="color: #ff9900;">?&gt;</span></span></p>
<p><span style="color: #00ccff;"><span style="color: #00ccff;"> </span></span></td>
<td width="50%"><span style="color: #00ccff;"><span style="color: #ff9900;">&lt;?php</span><br />
<strong>include</strong>(&#8221;SecureToken.php&#8221;);<br />
$st=<strong>new</strong> SecureToken();<br />
$sid=$_SESSION['sid'];<br />
<strong>if</strong>($st-&gt;CheckToken($_POST['token'],$sid))<br />
Go();<span style="color: #99cc00;">//islemler devam eder</span><br />
<strong>else</strong><br />
<strong>die</strong> (&#8221;<span style="color: #99cc00;">Tekrar giriş yapınız</span>&#8220;);<br />
<span style="color: #ff9900;">?&gt;</span></span></td>
</tr>
</tbody>
</table>
<h1><strong>0&#215;0</strong><strong>6 : Referanslar</strong></h1>
<ol>
<li> http://en.wikipedia.org/wiki/Confused_deputy_problem</li>
<li> https://www.owasp.org/index.php/.Net_CSRF_Guard</li>
<li> http://keepitlocked.net/archive/2008/05/29/viewstateuserkey-doesn-t-prevent-cross-site-request-forgery.aspx</li>
<li> http://spreadsheets.google.com/pub?key=pWqXgSu_wNm-GkSPgOGyOWQ</li>
<li> http://en.wikipedia.org/wiki/Same_origin_policy</li>
<li> http://www.gnucitizen.org/blog/google-gmail-e-mail-hijack-technique/</li>
<li> http://ajaxian.com/archives/gmail-csrf-security-flaw</li>
<li> <a href="http://www.freedom-to-tinker.com/sites/default/files/csrf.pdf">http://www.freedom-to-tinker.com/sites/default/files/csrf.pdf</a></li>
<li> <a title="http://code.google.com/p/anticsurf/" href="http://www.webguvenligi.org/projeler/anticsurf/">http://www.webguvenligi.org/projeler/anticsurf/</a></li>
</ol>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/4h9QF_jt4SU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/cross-site-request-forgery-atagindan-korunmanin-yolu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/cross-site-request-forgery-atagindan-korunmanin-yolu/</feedburner:origLink></item>
		<item>
		<title>JavaScript ile Web Sayfa Düzenlemeleri</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/WU1DokT51eQ/</link>
		<comments>http://www.knbykl.org/javascript-ile-web-sayfa-duzenlemeleri/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 11:18:16 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[java Script' te Uyarı Mesajları]]></category>
		<category><![CDATA[Java Script'te Değişkenler]]></category>
		<category><![CDATA[Java Script'te Döngüler]]></category>
		<category><![CDATA[Java Script'te Fonksiyon Kullanımı]]></category>
		<category><![CDATA[Java Script'te Form Nesneleri]]></category>
		<category><![CDATA[Java Script'te Karşılaştırma İşlemi]]></category>
		<category><![CDATA[Java Script'te Nesne Yaratmak]]></category>
		<category><![CDATA[Java Scrtipt'te Değer Girişi]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Özel Nesneler]]></category>
		<category><![CDATA[Sayfaya Yazı Yazdırmak]]></category>
		<category><![CDATA[Window Nesnesi]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=183</guid>
		<description><![CDATA[Bir Web sayfasına Java Script Eklemek
Bir Web sayfasında JScript ile kod yazabilmek için ilk önce tarayıcımıza kullanacağımız script dilini tanıtmamız gereklidir.


&#60;scriptfont-family: Verdana; color: blue;&#8221;&#62;

&#8230;

JScript kodları


&#8230;


&#60;/script&#62;

Burada;
&#60;script&#62; &#60;/script&#62;
tag&#8217;leri tarayıcımıza komutların HTML değil JScript olduğunu gösterir.Bu satırları eklemememiz halinde tarayıcı komutları tanımayacağından JScript komutlarımız dökümanın bir parçası olarak algılanacak ve ekranda görünecektir.
Unutmamamız gereken noktalar tüm fonksiyonların ve blokların [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Bir Web sayfasına Java Script Eklemek<br />
</strong>Bir Web sayfasında JScript ile kod yazabilmek için ilk önce tarayıcımıza kullanacağımız script dilini tanıtmamız gereklidir.<br />
<img class="alignnone size-full wp-image-194" title="javascript-image-img" src="http://www.knbykl.org/wp-content/uploads/2009/06/javascript-image-img.jpg" alt="javascript-image-img" width="615" height="100" /></p>
<p><span id="more-183"></span></p>
<h4><span style="color: #99ccff;">&lt;scriptfont-family: Verdana; color: blue;&#8221;&gt;</span></h4>
<h4><span style="color: #99ccff;"><br />
&#8230;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p><span style="color: #99cc00;">JScript kodları</span></p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&#8230;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/script&gt;</p>
<p></span></h4>
<p>Burada;</p>
<h4><span style="color: #99ccff;">&lt;script&gt; &lt;/script&gt;</span></h4>
<p>tag&#8217;leri tarayıcımıza komutların HTML değil JScript olduğunu gösterir.Bu satırları eklemememiz halinde tarayıcı komutları tanımayacağından JScript komutlarımız dökümanın bir parçası olarak algılanacak ve ekranda görünecektir.<br />
Unutmamamız gereken noktalar tüm fonksiyonların ve blokların { ve } işaretleri arasında yazılması gerektiği ve her komut satırından sonra ; (noktalı virgül) işaretinin koyulması gerektiğidir.<br />
Ayrıca JScript kodları her tarayıcının her sürümünde doğru olarak çalışmayacağı için özellikle eski tarayıcılarda hata verecektir. Bunu engellemek için</p>
<h4><span style="color: #99ccff;">&lt;script&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;!&#8211; Hide script from older browsers</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&#8230;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p><span style="color: #99cc00;">JScript kodları</span></p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&#8230;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>// End hiding &#8211;&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/script&gt;</p>
<p></span></h4>
<p><strong>Sayfaya Yazı Yazdırmak </strong></p>
<hr size="2" />Java Script kullanarak ekrana yazı yazdırmak document.write komutu ile yapılır. Kullanımı ise:</p>
<h4><span style="color: #99ccff;">window.document.write(&#8221;<span style="color: #99cc00;">Merhaba Dünya !</span>&#8220;);</span></h4>
<p>şeklindedir.<br />
window.documen t kodu nesnemizin şu anda açık olan sayfamız olduğunu anlatır. Write komutu ait olduğu nesneye yazılmasını sağlar. Parametreleri ise parantezler arasına verilir. Eğer yazdırmak istediğimiz metni kodun içinde gireceksek metni &#8220;&#8230;.&#8221; tırnak işaretlerini kullanarak girmemiz gereklidir. Ayrıca + işaretini kullanarak birden fazla giriş yapmak ta mümkündür.</p>
<h4><span style="color: #99ccff;">window.document.write(&#8221;<span style="color: #99cc00;">Merhaba</span>&#8221; + &#8220;<span style="color: #99cc00;">Dünya</span>&#8220;);</span></h4>
<p>veya isim, kullanıcının ismini taşıyan bir değişken olmak üzere</p>
<h4><span style="color: #99ccff;">window.document.write(&#8221;<span style="color: #99cc00;">Merhaba</span>&#8221; + <span style="color: #99cc00;">isim</span>);</span></h4>
<p>yazmamız halinde bu ayrı metinler aralarında bir boşluk karakteri bırakılmak üzere ard arda yazılacaktır.<br />
Ayrıca JScript&#8217;le yazdıracağımız metinleri HTML kodlarıyla şekillendirmemiz mümkündür.</p>
<h4><span style="color: #99ccff;">window.document.write(&#8221;&lt;center&gt;&lt;B&gt;<span style="color: #99cc00;">Merhaba Dünya</span>&lt;/B&gt;&lt;/center&gt;&#8221;)</span></h4>
<p>Her ne kadar linkleri HTML kullanarak yaratmak mümkünse de gelişmiş uygulamalarda gidilecek sayfalara parametre aktarımı yapabilmek için linki JScript&#8217;le oluşturmak gerekebilir. Bunun için JScript&#8217;te window.location.href komutu kullanılır.</p>
<p>Örnek olarak Java.htm isimli sayfaya gitmek için bu komutun kullanımı:</p>
<h4><span style="color: #99ccff;">window.location.href=&#8221;java.htm&#8221;;</span></h4>
<h4>olacaktır. Tırnak işaretleri arasına URL girmek te mümkündür.<span style="color: #99ccff;"> </span></h4>
<h4><span style="color: #99ccff;">window.location.href=&#8221;<span style="color: #99cc00;">http://www.knbykl.org</span>&#8220;;</span></h4>
<p><strong>java Script&#8217; te Uyarı Mesajları </strong></p>
<hr size="2" />JScript&#8217;te uyarı mesajları yazmak için alert komutu kullanılır. Örneğin</p>
<h4><span style="color: #99ccff;">&lt;script&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>alert(&#8221;<span style="color: #99cc00;">Uyarı Mesajı</span>&#8220;);</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/script&gt;</p>
<p></span></h4>
<p>scripti ekrana <strong>Uyarı Mesajı </strong>yazılı ve bir OK butonu bulunan bir mesaj kutusu getirir. OK butonuna basılınca Script, bir alt satırdan çalışmaya devam edecektir</p>
<p><strong>Java Script&#8217;te Fonksiyon Kullanımı </strong></p>
<hr size="2" />JScript te C++ gibi nesneye yönelik bir dildir ve fonksiyonlar bu yapıda en önemli yeri alır. JScript fonksiyonları çağırıldıkları zaman işlemeye başlayan scriptlerdir. Aşağıdaki örnek, butona basıldığında &#8220;Merhaba Dünya&#8221; uyarı mesajı çıkartan fonksiyondur.</p>
<h4><span style="color: #99ccff;">&lt;script&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>function Deneme()</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>alert(&#8221;<span style="color: #99cc00;">Merhaba Dünya</span>&#8220;);</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/script&gt;</p>
<p></span></h4>
<p>Şimdi düğmeye basıldığında bu fonksiyonu çağıran HTML kodunu yazalım</p>
<h4><span style="color: #99ccff;">&lt;form&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;input value=&#8221;<span style="color: #99cc00;">Buraya Bas</span>&#8220;&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/form&gt;</p>
<p></span></h4>
<p>JScript fonksiyonunda sadece alert(&#8221;Merhaba Dünya&#8221;) komutu var. HTML&#8217;de de üzerinde &#8220;Buraya Bas&#8221; yazılı bir buton var ve onclick olayı Deneme isimli fonksiyona yönlendirilmiş. Bu fonksiyona hiç bir parametre gelmiyor ve bir dönüş parametresi de yok. Aynı fonksiyon şu şekilde yazılısaydı:</p>
<h4><span style="color: #99ccff;">&lt;script&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>function Deneme(param)</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>alert(param);</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/script&gt;</p>
<p></span></h4>
<p>ve onu çağıran HTML satırında da fonksiyona &#8220;Merhaba Dünya&#8221; parametresini gönderseydik alınan sonuçta hiç bir değişiklik olmayacaktır.</p>
<h4><span style="color: #99ccff;">&lt;form&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;input value=&#8221;<span style="color: #99cc00;">Buraya Bas</span>&#8220;&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/form&gt;</p>
<p></span></h4>
<p>Burada dikkat edilmesi gereken nokta HTML&#8217;den parametreyi gönderirken fonksiyon adından sonra açılan parantezlere &#8216; ve &#8216; işaretleri arasına yazılması ve fonksiyon için param artık bir parametre olduğu için alert fonksiyonunda parantezlerin içinde tırnak içine alınmaması gereğidir.</p>
<p>JScript fonksiyonları hakkında bilinmesi gereken bir diğer nokta da fonksiyonlar tarayıcı tarafından işlendikten sonra HTML koduna dönüştürüleceğinden (C&#8217;deki precompiler mantığıyla) HTML&#8217;de yerine koyulacak bir değer de fonksiyonla verilebilir. Yani linker fonksiyonu yapılan bir seçime göre bir URL döndürüyorsa HTML&#8217;de &lt;a href=linker(seçim)&gt; yazımında hiç bir sakınca yoktur.</p>
<p>Fonksiyonların gerçekleşmesi için fonksiyonun çağırıldığı <strong>olay </strong>&#8216;ın alması gerekmektedir. Bu olaylardan bazıları:</p>
<p>Olay İsmi Ne Zaman Olur</p>
<p><strong>onClick : </strong>Butona basıldığında</p>
<p><strong>onAbort : </strong>Stop düğmesine veya bir linke basılarak yüklenme durdurulduğunda</p>
<p><strong>onChange : </strong>Seçim yapıldığında veya metin değiştirildiğinde</p>
<p><strong>onError : </strong>Resmin veya ekranın yüklenmesinde hata oluştuğu zamanlar</p>
<p><strong>onLoad : </strong>Sayfa yüklenmesi tamamlandığında</p>
<p><strong>onMouseOut : </strong>Mouse pointer bir alan veya linkten uzaklaştırıldığında</p>
<p><strong>onMouseOver : </strong>Mouse pointer bir alan veya linkin üzerine geldiğinde</p>
<p><strong>onSelect : </strong>Seçim için ayrılmış bir nesne seçildiğinde</p>
<p><strong>onSubmit : </strong>Submit(gönder) butonu basıldığında</p>
<p><strong>onUnload : </strong>Sayfa yüklenmesi bittiğinde(kullanıcı sayfadan çıktığında)</p>
<p><strong>Java Scrtipt&#8217;te Değer Girişi </strong></p>
<hr size="2" />JScript&#8217;te alert komutunu bir çıkış komutu olarak düşünürsek bunun karşılığı olan giriş komutu prompt komutudur. Bu komut</p>
<h4><span style="color: #99ccff;">adsoyad=prompt(&#8221;<span style="color: #99cc00;">Adınızı ve soyadınızı giriniz</span>&#8220;,&#8221;");</span></h4>
<p>şeklinde kullanılır ve kullanıcı tarafından girilen değer adsoyad isinmli değişkene atanır.</p>
<p><strong>Java Script&#8217;te Karşılaştırma İşlemi </strong></p>
<hr size="2" />Conditional statement veya If statement olarak bilinen komut grubu yani IF-THEN-ELSE JScript&#8217;te de mevcuttur. Bu komut grubu bir değerle bir diğerini karşılaştırıp sonuca göre farklı işlemler yapmamızı sağlar. Şimdi az önceki örnekte olduğu gibi kullanıcıdan ismini girmesini isteyelim ve bir karşılaştırma yapalım. Dikkat etmemiz gereken nokta aynı C dilinde olduğu gibi then komutunu kullanmamamızdır.</p>
<h4><span style="color: #99ccff;">adsoyad=prompt(&#8221;<span style="color: #99cc00;">Adınızı ve soyadınızı giriniz</span>&#8220;,&#8221;");</span></h4>
<h4><span style="color: #99ccff;"></p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>if(adsoyad==&#8221;<span style="color: #99cc00;">Emre ER</span>&#8220;) alert(&#8221;<span style="color: #99cc00;">Hosgeldin Emre</span>&#8220;);</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>else alert(&#8221;<span style="color: #99cc00;">Seni Tanımıyorum</span>&#8220;);</p>
<p></span></h4>
<p>Burada bahsedilmesi gereken bir diğer konu da karşılaştırma operatörleri ve mantıksal operatörler. Karşılaştırma operatörleri:</p>
<p>Denk ==</p>
<p>Eşit değil !=</p>
<p>Küçük</p>
<p>&lt; Büyük &gt;</p>
<p>Küçük veya Eşit</p>
<p>&lt;= Büyük veya Eşit &gt;=</p>
<p>Mantıksal operatörler:</p>
<p>Ve &amp;</p>
<p>Veya |</p>
<p>Değil !</p>
<p>XOR ^</p>
<p>Bir de birden fazla karşılaştırmayı birleştirmek için</p>
<p>Ve &amp;&amp;</p>
<p>Veya ||</p>
<p>Ayrıca ++ operatörü birer birer artırmak için ve – operatörü de birer birer azaltmak için kullanılır.</p>
<p>operatörlerini kullanabiliriz. Dikkat edilmesi gereken nokta bir adet = operatörünün eşitleme iki adet ==operatörünün karşılaştırma işleminde kullanılması gerektiği ve ! operatörünün her yerde değil anlamı taşıdığıdır. Yani ! operatörü diğer operatörlerle birlikte değil anlamı vermek üzere kullanılabilir</p>
<p><strong>Java Script&#8217;te Değişkenler </strong></p>
<hr size="2" />JScript&#8217;te değişkenlere diğer diller gibi bir değişken tipi atamak zorunda değiliz. Daha sonra bu değişkeni eşitlediğiniz değere göre bir tip alacaktır.</p>
<p>JScript&#8217;te değişken tipleri olmadığı gibi bir dizi tanımı da yoktur. Bir dizi oluşturmak için basit bir foksksiyon yazmamız ve daha sonra kaç elemanlı dizi açmak istiyorsak bu fonksiyona onu parametre olarak göndermemiz gerekecektir. Bu fonksiyon şu şekilde olabilir:</p>
<h4><span style="color: #99ccff;">function makearray(n) </span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>this.lenght=n;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>for( var i=1;i&lt;=n;i++)</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>this[i]=0;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>return this;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<p>Daha sonra da dizimize vermek istediğimiz ismi ve uzunluğunu bu fonksiyona göndermemiz gerekecek. Yani</p>
<h4><span style="color: #99ccff;">dizi= new makearray(20); </span></h4>
<p>dediğimizde 20 elemanlı ve her elemanı 0 olan bir dizi oluşturalacaktır.</p>
<p>Tabi ki bu ilk değeri olmayan veya çok uzun bir dizi yaratmak için aksi halde Array komutuyla da bir dizi yaratılabilir. Şöyle ki:</p>
<h4><span style="color: #99ccff;">dizi = Array(&#8221;<span style="color: #99cc00;">Ali</span>&#8220;,&#8221;<span style="color: #99cc00;">Ayse</span>&#8220;,&#8221;<span style="color: #99cc00;">Selim</span>&#8220;,&#8221;<span style="color: #99cc00;">Yahya</span>&#8220;,&#8221;<span style="color: #99cc00;">Kemal</span>&#8220;); </span></h4>
<p>Burada dikkat edilmesi gereken nokta dizi elemanlarına ulaşırken diziadı[indexno] syntax&#8217;ı ve dizi index numaralarının( biz aksini belirtmedikçe) 0&#8242;dan başladığıdır. Bu arada bir değişkene string değer atandığı zaman o değişkenin otomatik olarak bir karakterler dizisi olarak algılanmayacağı da önemli bir özelliktir. Yani;</p>
<h4><span style="color: #99ccff;">ad=&#8221;<span style="color: #99cc00;">Emre</span>&#8220;; </span></h4>
<p>şeklinde bir tanımlamada ad[1]=S , ad[2]=e &#8230; olmayacaktır.</p>
<p>Bir stringin içinden bir harfi ya da harf grubunu almak istediğimizde kullanmamız gereken komut substring komutudur.</p>
<h4><span style="color: #99ccff;">harf=ad.substring(0,1); </span></h4>
<p>yazdığımızda harf değişkeni S harfini içerecektir. Buradaki parametrelerden 0, kaçıncı karakterden başlanacağını 1 ise kaçıncı karaktere kadar alınacağını gösterir.(1 hariç)</p>
<p>Yani harf=ad.substring(0,2) deseydik harf değişkeni &#8220;Se&#8221; değerini içerecekti.</p>
<p>Bu işlemin tam tersi de mümkündür. Yani girilen bir karakterin kaçıncı karakter olduğunu bulmak. Bunun için de indexOf komutunu kullanıyoruz.</p>
<h4><span style="color: #99ccff;">sayi=ad.indexOf(&#8221;e&#8221;); </span></h4>
<p>yazdığımızda sayi değişkenine 2 değeri atanır.</p>
<p>Ayrıca bu değişkenin uzunluğunu bulmak için lenght komutu kullanılır.</p>
<h4><span style="color: #99ccff;">sayi=ad.lenght; </span></h4>
<p>dediğimizde sayi değişkeninde 6 değeri bulunacaktır.</p>
<p><strong>Java Script&#8217;te Döngüler </strong></p>
<hr size="2" /><strong>For Döngüsü </strong></p>
<h4><span style="color: #99ccff;">for (var i=0;i&lt;10;i++)</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>window.write(&#8221;<span style="color: #99cc00;">Şu anda</span>&#8221; + i + &#8220;. <span style="color: #99cc00;">numaradasını</span>z&#8221;);</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>if (i==5) window.write(&#8221;<span style="color: #99cc00;">Yarısına geldiniz bile</span>&#8220;);</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<p>döngüsünde önce i değişkenine 0&#8242;dan başlaması gerektiğini, i 10&#8242;dan küçük olduğu sürece devam edeceğini ve i&#8217;nin birer birer artacağını söylüyoruz. Bu şartlarda ekrana &#8220;Şu anda 1. numaradasınız&#8221; , &#8220;Şu anda 2. numaradasınız&#8221; gibi mesajlar gelecek i, 5 olduğunda ise ayrıca &#8220;Yarısına geldiniz bile&#8221; mesajı gelecektir.</p>
<p><strong>While Döngüsü </strong></p>
<p>Bir döngüye ihtiyaç duyduğunuzda döngü içindeki işlemlerin kaç kere yapılması değil de bir durum gerçekleştiği sürece yapılması önemliyse while döngüsü kullanılır.</p>
<h4><span style="color: #99ccff;">isim=array(&#8221;"<span style="color: #99cc00;">Ali</span>&#8220;,&#8221;<span style="color: #99cc00;">Ayse</span>&#8220;,&#8221;<span style="color: #99cc00;">Selim</span>&#8220;,&#8221;<span style="color: #99cc00;">Yahya</span>&#8220;,&#8221;<span style="color: #99cc00;">Kemal</span>&#8220;);</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>i=0;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>j=0;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>while(i != 1)</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>if isim[j]==&#8221;<span style="color: #99cc00;">Yahya</span>&#8221; i=1;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>j++;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<p>kodunda dizide &#8220;Yahya&#8221; ismini bulmak için bir döngü yarattık. Yahya ismini bulduktan sonra döngüde kalması programın yavaş çalışmasını sağlayacağından döngüyü 0&#8242;dan 4&#8242;e kadar for döngüsü yerine bir kontrol elemanının değerine bağladık. Yahya ismi bulununca kontrol değeri 1 yapıldı ve döngüden çıkıldı. J değeri ise Yahya isminin kaçıncı eleman olduğunu gösteren rakamın bir fazlasında kaldı.</p>
<p><strong>Break Komutu </strong></p>
<p>Herhangi bir şart gerçekleştiğine döngüden anında çıkmamız gerekiyorsa break komutunu kullanırız. Deminki örnekte Yahya ismini bulduğumuz halde kontrol döngünün başında olduğu için j bir kez daha artırıldı ve olmasını istediğimiz değerden bir fazla oldu. Oysa ki scripti şöyle yazsaydık:</p>
<h4><span style="color: #99ccff;">isim=array(&#8221;"<span style="color: #99cc00;">Ali</span>&#8220;,&#8221;<span style="color: #99cc00;">Ayse</span>&#8220;,&#8221;<span style="color: #99cc00;">Selim</span>&#8220;,&#8221;<span style="color: #99cc00;">Yahya</span>&#8220;,&#8221;<span style="color: #99cc00;">Kema</span>l&#8221;);</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>i=0;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>j=0;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>while(i != 1)</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>if isim[j]==&#8221;<span style="color: #99cc00;">Yahya</span>&#8221;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>i=1;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>break;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>j++;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<p>Yahya ismi bulununca break komutuyla döngüden çıkacak ve j bir kez daha boşu boşuna artırılmamış olacaktı.</p>
<p><strong>Java Script&#8217;te Nesne Yaratmak </strong></p>
<hr size="2" />Burada bahsedeceğimiz nesne birden fazla özelliği olan bir değişkendir. Bir insanın adı, soyadı, yaşı, kredi kart numarası gibi bilgileri tek bir değişken altında tutmak mümkündür. Bunun için de önce bunu yaratan bir fonksiyon yazıp sonra istediğimiz değişkeni gerekli parametrelerle bu fonksiyon cinsinden tanımlamalıyız.</p>
<h4><span style="color: #99ccff;">function insan(<span style="color: #99cc00;">ad</span>,<span style="color: #99cc00;">soyad</span>,<span style="color: #99cc00;">yas</span>,<span style="color: #99cc00;">kartno</span>)</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>{</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>this.ad=<span style="color: #99cc00;">ad</span>;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>this.soyad=<span style="color: #99cc00;">soyad</span>;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>this.yas=<span style="color: #99cc00;">yas</span>;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>this.kartno=<span style="color: #99cc00;">kartno</span>;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>kisi[1]= new insan(<span style="color: #99cc00;">Emre</span>,<span style="color: #99cc00;">Er</span>,<span style="color: #99cc00;">22</span>,<span style="color: #99cc00;">1234567890123456</span>)</p>
<p></span></h4>
<p>Bu scriptte önce insan nesnesini yaratan fonksiyonu görüyoruz. Buradaki this keyword&#8217;ü bu nesneye ait olan özellikler için(sadece fonksiyonun içinde) kullanılır. Daha sonra kisi isimli dizinin birinci elemanını insan cinsinden yeni bir nesne olduğunu belirtmek için new keyword&#8217;ünü kullanarak ve gerekli parametreleri vererek fonksiyonu çağırıyoruz. Daha sonra gerekli özelliklere erişmek için kisi[1].ad , kisi[1].soyad &#8230; yazılır.</p>
<p><strong>Özel Nesneler </strong></p>
<hr size="2" />JScript&#8217;te bir önceki konuda anlattığımız gibi kendi tanımladığımız nesnelerin yanı sıra halihazırda var olan nesneler de vardır. Bizim için önemli olan document nesnesinin özelliklerini şöyle sıralayabiliriz.</p>
<p>window<br />
parent,frame,self,_top&#8230;<br />
location<br />
history<br />
document<br />
form<br />
text field<br />
text area<br />
checkbox<br />
radio<br />
password<br />
select<br />
button<br />
submit<br />
reset<br />
link<br />
anchor</p>
<p><strong>Window Nesnesi </strong></p>
<hr size="2" />Window nesnesi en üst düzeyli nesne olduğu için özellikleri ve metodların başlarına window. yazmaya gerek yoktur. Frame ve Status Bar window nesnesinin özellikleridir. Status Bar kontrolü</p>
<h4><span style="color: #99ccff;">window.status=&#8221;<span style="color: #99cc00;">Merhaba Dünya</span>&#8220;; </span></h4>
<p>gibi bir kodla kontrol edilebilir. Ayrıca window nesnesinin alert, prompt,confirm ve open gibi metodları vardır. Bunlardan alert ve prompt metodlarını daha önce gördük.</p>
<p><strong>Confirm Metodu: </strong></p>
<p>Confirm metodu kullanıcıdan onay almak için kullanılır. Kullanıcıya sorulan bir soruyu ve birer OK ve CANCEL butonu içerir.</p>
<p><strong>Java Script&#8217;te Form Nesneleri </strong></p>
<hr size="2" />Nesneler JScript&#8217;te özel fonksiyonları bulunabilen birbirinden bağımsız elemanlardır. Text alanları, radio butonlar,check boxlar, butonlar ve drop-down menüler JScript nesneleridir.</p>
<p>Burada unutulmaması gereken durum nesnelerin bir form içinde olmaları yani &lt;FORM&gt; ve &lt;/FORM&gt; HTML kodları arasında tanımlanmaları gerektiğidir. Tanımladığınız nesne içinde bulunduğu formun bir elemanıdır ve daha sonraulaşılması gerektiğinde form adıyla birlikte anılır.</p>
<h4><span style="color: #99ccff;">&lt;form&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;input value=&#8221;<span style="color: #99cc00;">Buraya Basınız</span>&#8220;&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/form&gt;</p>
<p></span></h4>
<p>şeklinde tanıtılmış bir butona daha sonra erişmek istediğimizde form1.but1 yazmamız gerekecektir. Forma isim verilmediği durumlarda aynı butona form.but1 diye erişecektik ki aynı sayfada birden fazla form bulunması durumunda karışıklık çıkacaktı.</p>
<p><strong>Butonlar </strong></p>
<hr size="2" />
<h4><span style="color: #99ccff;">&lt;form&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;input value=&#8221;<span style="color: #99cc00;">Buraya Basınız</span>&#8220;&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;/form&gt; </span></h4>
<p>Bu örnekte input giriş elemanının bir buton olduğunu, name=&#8221;but1&#8243; programda bu butonu but1 olarak isimlendirdiğinizi value=&#8221;Buraya Basınız&#8221; de butonun üzerinde Buraya Basınız metninin yazılacağını gösterir.</p>
<p><strong>Text Alanları </strong></p>
<hr size="2" />
<h4><span style="color: #99ccff;">&lt;script&gt; </span></h4>
<h4><span style="color: #99ccff;"> function Goster (metin) { </span></h4>
<h4><span style="color: #99ccff;"> alert(metin); </span></h4>
<h4><span style="color: #99ccff;"> } </span></h4>
<h4><span style="color: #99ccff;"><br />
&lt;/script&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;form&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;input value=&#8221;<span style="color: #99cc00;">Buraya gireceğiniz yazı butona basınca alert olarak gelecektir.</span>&#8220;&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;input value=&#8221;<span style="color: #99cc00;">Buraya Basın</span>&#8220;&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;/form&gt; </span></h4>
<p>Bu kodda Goster isimli bir fonksiyonumuz var ve metin ismiyle bir parametre alıyor.Daha sonra da bu parametreyi alert fonksiyonuyla gösteriyor. Bu parametreyi gönderen de butonun onclick olayı. Ve butonun gönderdiği parametre form1 formunun text1 nesnesinin değeri. Programda ilk olarak bu değeri Buraya gireceğiniz yazı butona basınca alert olarak gelecektir. vermiştik. Buradan da anlaşılacağı gibi bu değer text alanının içindeki metin. Yani text box&#8217;a birşey yazılmadığı durumda bu alanda Buraya gireceğiniz yazı butona basınca alert olarak gelecektir. yazacak ve butona basıldığında da uyarı kutusunda bu mesaj gelecektir.</p>
<p>Eğer çok satırlı bir text alanı yaratmak istiyorsak</p>
<h4><span style="color: #99ccff;">&lt;input value=&#8221;<span style="color: #99cc00;">Alanın içindeki yazı</span>&#8220;&gt;</span> komutu yerine</h4>
<h4><span style="color: #99ccff;">&lt;textarea rows=&#8221;10&#8243; cols=&#8221;80&#8243;&gt;<span style="color: #99cc00;">Alanın içindeki yazı</span>&lt;/textarea&gt; </span></h4>
<p>Textarea tanımında rows alandaki satır sayısı, cols her bir satırın kaç karakter uzunluğunda olacağını belirten sayıdır.</p>
<p><strong>Radio Butonlar </strong></p>
<hr size="2" />Radio Butonlar genellikle bir çok seçenekten sadece bir tanesinin seçilmesini istediğimiz durumlarda kullanılır. Radio butonların sadece bir tanesinin seçilmesini sağlamak için name özelliklerinin aynı olması gerekmektedir. Aşağıdaki örnekte bilgisayarınızın işlemcisinin markası sorulmaktadır:</p>
<h4><span style="color: #99ccff;">&lt;form&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;input value=&#8221;Intel&#8221; checked&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;input value=&#8221;Cyrix&#8221; name=&#8221;cpu&#8221;&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;input value=&#8221;AMD&#8221;&gt; </span></h4>
<h4><span style="color: #99ccff;"> &lt;/form&gt; </span></h4>
<p>Değeri Intel olan radio butonda bulunan checked kodu sayfa açıldığına bu butonun işaretli olarak geleceğini belirtir. Radio butonların değerlerini alırken (örnekte üç tane olmasına rağmen) cpu adında tek bir nesnemiz varmış gibi form1.cpu.value dememiz gerekecektir. Seçili olan radio butonun değeri Intel, Cyrix veya AMD olarak gelecektir.</p>
<p><strong>Check Boxlar </strong></p>
<hr size="2" />Check Boxlar da radio butonlar gibi iki durumlu giriş elemanlardır. Yalnız burada fark check boxların birden fazlasının da seçili olabilmesi durumudur. Her biri ayrı nesnedir ve her birinin seçili olma veay olmama durumu vardır. Durumunun anlaşılması ise checked komutu ile yapılmaktadır. Örneğin;</p>
<h4><span style="color: #99ccff;">&lt;input name=&#8221;chck1&#8243; value=&#8221;1&#8243;&gt; </span></h4>
<p>şeklinde tanımlanmış bir check box, daha sonra form.chck1.checked komutuyla kontrol edildiğinde seçili ise True seçili değilse False değeri getirecektir.</p>
<p><strong>Drop-Down Menüler </strong></p>
<hr size="2" />Bu eleman birçok seçeneği açılan bir menü şeklinde sunar.</p>
<h4><span style="color: #99ccff;">&lt;script&gt;</span></h4>
<h4><span style="color: #99ccff;"></p>
<p>function goster(metin) {</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>alert(metin);</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>}</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/script&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;select size=&#8221;1&#8243;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>onchange=&#8221;goster (form.drp1.options[drp1.selectedIndex]value)&#8221;&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;option value=&#8221;Intel&#8221;&lt;Intel&lt;/option&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;option value=&#8221;Cyrix&#8221;&lt;Cyrix&lt;/option&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;option value=&#8221;AMD&#8221;&lt;AMD&lt;/option&gt;</p>
<p></span></h4>
<h4><span style="color: #99ccff;"></p>
<p>&lt;/select&gt;</p>
<p></span></h4>
<p>Burada önemli olan bir özellik size özelliğidir. Kaç seçeneğin gösterilmesini istiyorsak size değerini o kadar artırmalıyız. Ayrıca bir çok eleman gibi onClick olayını değil onChange olayını kullanıyoruz. option value=&#8221;Intel&#8221; seçildiğinde gönderilecek değeri, daha sonra yazdığımız isim de menüde gösterilecek yazıyı ifade eder.</p>
<p>&lt;%@%&gt;<br />
&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;SCRIPT&gt;<br />
&lt;/SCRIPT&gt;<br />
&lt;TITLE&gt;JavaScript Mesaj Denemeleri&lt;/TITLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY BGCOLOR=FFFFFF TEXT=000000&gt;<br />
&lt;CENTER&gt;<br />
&lt;FONT SIZE=+2&gt;JavaScript Mesaj Denemeleri&lt;/FONT&gt;&lt;BR&gt;<br />
&lt;/CENTER&gt;<br />
&lt;HR&gt;<br />
&lt;HR&gt;<br />
&lt;FONT SIZE=+2&gt;<br />
&lt;UL&gt;<br />
&lt;LI&gt;&lt;A HREF=&#8221;INDEX1.HTML&#8221;&gt;Sana bir soru.&lt;/A&gt;P&gt;<br />
&lt;UL&gt;<br />
&lt;LI&gt;Status bar&#8217;a bak:<br />
&lt;A HREF=&#8221;index.php3&#8243;&gt;A&lt;/A&gt;<br />
&lt;A HREF=&#8221;index.php3&#8243;&gt;B&lt;/A&gt;<br />
&lt;A HREF=&#8221;index.php3&#8243;&gt;C&lt;/A&gt;<br />
&lt;A HREF=&#8221;index.php3&#8243;&gt;D&lt;/A&gt;<br />
&lt;A HREF=&#8221;index.php3&#8243;&gt;E&lt;/A&gt;&lt;P&gt;<br />
&lt;UL&gt;<br />
&lt;LI&gt;&lt;A HREF=index.php3&#8243;&gt;Bana yaklaşma!&lt;/A&gt;&lt;P&gt;<br />
&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;<br />
&lt;/FONT&gt;&lt;P&gt;&lt;HR&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt;</p>
<p>Bu örnekte kullanıcıya mesaj göndermenin değişik yolları gösterilmiştir. Confirm ve Alert komutlarının nasıl kullanıldığını görmüştük. İkinci satırda ise Status Bar&#8217;a mesaj yazdırmanın yolu görülüyor. Burada self.status denmesinin sebebi ise şu anda aktif olan nesnenin window nesnesi olasıdır. Bunun gibi herhangi bir nesne ile ilgili olarak yapacağımız işlemlerde <strong>self </strong>kullanacağız.</p>
<p>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;SCRIPT&gt;<br />
&lt;!&#8211;<br />
function person(name,pass) {<br />
this.name=name;<br />
this.pass=pass;<br />
}<br />
function makearray(n) {<br />
this.lenght=n;<br />
for (var i=0;i&lt;=n;i++) {<br />
this[i]=&#8221;";<br />
return this;<br />
}<br />
}<br />
function submit1_onclick(form) {<br />
var x=0;<br />
pers= new makearray(3);<br />
var isim;<br />
var pas;<br />
isim=text1.value;<br />
pas=password1.value;<br />
if(!isFieldBlank(isim)) alert(&#8217;ID field cannot be blank&#8217;);<br />
else {<br />
pers[1] =new person(&#8221;serdar&#8221;,&#8221;");<br />
pers[2] =new person(&#8221;yucel&#8221;,&#8221;yucel&#8221;);<br />
pers[3] =new person(&#8221;ali&#8221;,&#8221;veli&#8221;);<br />
for(i=1;i&lt;4;i++) {<br />
if(isim==pers[i].name) {<br />
if(pas==pers[i].pass) x=1; }<br />
}<br />
if(x==1) document.write(&#8217;You made a good job&#8217;);<br />
else alert(&#8217;Password is invalid&#8217;);<br />
}<br />
}<br />
function isFieldBlank(ad) {<br />
if(ad)<br />
return true;<br />
else<br />
return false;<br />
}<br />
//&#8211;&gt;<br />
&lt;/SCRIPT&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;P&gt;<br />
İsim:&lt;BR&gt;<br />
&lt;P&gt;&lt;INPUT&gt;&lt;/P&gt;<br />
&lt;P&gt; &lt;/P&gt;<br />
Şifre:&lt;BR&gt;<br />
&lt;INPUT&gt;&lt;/P&gt;<br />
&lt;P&gt; &lt;/P&gt;<br />
&lt;P&gt;&lt;INPUT value=Gir onclick=&#8221;submit1_onclick()&#8221;&gt;&lt;/P&gt; &lt;P&gt; &lt;/P&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt;</p>
<p>Bu örneğimiz biraz karışık. Öncelikle iki tane form nesnemiz var. Biri text alanı diğeri ise password. Scriptimizde ise <strong>person </strong>isimli bir fonksiyonumuz var. Bu fonksiyondaki <strong>this.name=name </strong>komutu bu fonksiyonu çağıran değişkenin name özelliğinin name ismiyle aktarılan değişken olacağını gösterir. <strong>pers[3] =new person(&#8221;ali&#8221;,&#8221;veli&#8221;); </strong>satırında olduğu gibi pers dizisinin 3. elemanı name özelliği ali, pass özelliği veli olan bir yapı olacak.</p>
<p><strong>isfieldblank </strong>fonksiyonu parametre olarak aktarılan alanın boş olup olmadığını kontrol eden fonksiyonumuz. İsim alanı boş olamayacağından önce bunu kontrol edip eğer boşsa bir uyarı mesajı gönderiyoruz.</p>
<p><strong>makearray </strong>fonksiyonu daha önce de bahsettiğim gibi dizi yaratmak için yazılmış bir fonksiyon. Aynı şekilde bu fonksiyonu çağıran değişkeni aktarılan parametre uzunluğunda bir dizi yapıyor. <strong>pers </strong>dizisi bu fonksiyonla yaratıldıktan sonra her bir elemanına <strong>person </strong>fonksiyonu tarafından name ve pass özellikleri atanıyor. Gerisi ise oldukça basit. Alanlara girilen değerler bir döngü içerisinde pers dizisinin elemanlarıyla karşılaştırılıyor.</p>
<p><strong>Java Script Kullanarak Yeni Bir Pencere Açmak </strong></p>
<hr size="2" />Aşağıdaki scriptte butona tıklayarak yeni bir ekran açılması için bir örnek vardır.Burada kullanılan birtakım özellikler olacaktır.</p>
<p>window.close() komutunun özellikleri yoktur. Sadece o anda aktif olan pencereyi kapatır. window.open(özellikler) komutundaki özellikler ise:<br />
&#8220;HTML&#8221; ; gösterilmesini istediğimiz sayfa<br />
&#8220;window.name&#8221; ; istediğimiz bir başlık<br />
&#8220;toolbar&#8221; ; toolbar&#8217;ın gösterilme özelliği (yes/no ya da 0/1 olarak belirtilir).<br />
&#8220;status&#8221; ; statusbar&#8217;ın gösterilme özelliği (yes/no ya da 0/1 olarak belirtilir).<br />
&#8220;menubar&#8221; ; menubar&#8217;ın gösterilme özelliği (yes/no ya da 0/1 olarak belirtilir).<br />
&#8220;scrollbars&#8221; ; scrollbar denilen sayfayı aşağı-yukarı ve sağa-sola oynatmamızı sağlayan barların gösterilme özelliği (yes/no ya da 0/1 olarak belirtilir).<br />
&#8220;resizable&#8221; ; açılacak olan ekranın boyutunun değiştirilebilir olup olmama özelliği (yes/no ya da 0/1 olarak belirtilir).<br />
&#8220;width&#8221; ; genişlik (pixel olarak belilenir).<br />
&#8220;height&#8221; ; yükseklik (pixel olarak belirlenir).</p>
<p>Gelelim scriptimize ve nasıl kullandığımıza:</p>
<p>&lt;script&gt;<br />
function ekranac()<br />
options=&#8217;toolbar=0,status=0,menubar=0,scrollbars=0,resizable=0,width=300,height=200&#8242;;<br />
content=<br />
&#8216;&lt;body bgcolor=&#8221;beige&#8221;&gt;&#8217;+<br />
&#8216;&lt;p align=&#8221;left&#8221;&gt;&lt;big&gt;&lt;strong&gt;Selam !&lt;/strong&gt;&lt;/big&gt;&lt;br&gt;&lt;/p&gt;&#8217;+<br />
&#8216;&lt;p align=&#8221;left&#8221;&gt;&lt;small&gt;Buraya basarak ekranı kapatabilirsiniz&lt;/small&gt;&lt;/p&gt;&#8217;+<br />
&#8216;&lt;form&gt;&lt;input value=&#8221;Ekranı Kapat !&#8221;&gt;&#8217;+<br />
&#8216;&lt;/form&gt;&#8217;;<br />
acilan = window.open(&#8221;",&#8221;mywindow&#8221;,options);<br />
acilan.document.write(content)<br />
&lt;/script&gt;<br />
&lt;form&gt;<br />
&lt;input value=&#8221;Ekran Aç !&#8221; onclick=&#8221;ekranac()&#8221;&gt;<br />
&lt;/form&gt;</p>
<p>Script çok basit ve öğrenmesi kolay. Özellikleri biliyosanız window.open komutunu kullanmak zor olmayacaktır. Fakat Netscape Navigator&#8217;ın bazı bozuklukları sebebiyle bizim scriptimizde yaptığımız gibi bu özellikleri bir değişkene atayarak kullanmak yararlı olacaktır.</p>
<p>ekran = window.open(&#8221;http://www.programlama.com&#8221;,&#8221;programlama&#8221;,options)</p>
<p>gibi&#8230; Böylece ekrana da Javascript&#8217;in anlayabileceği bir isim vermiş oldunuz; &#8220;ekran&#8221;. Bu ismi kullanarak açılan yeni ekrana istediğinizi yaptırabilirsiniz. Bu özelliği aklınızda tutun. Çünkü frame kontrolünde de bu özellik kullanılmaktadır.</p>
<p>ekran.document.write(&#8217;Selam&#8217;)</p>
<p>gibi pek çok komutu &#8220;ekran&#8221; isimli yeni açılan ekrana aktarabiliriz.<br />
Aşağıdaki scripti kullanarak komutları ve özellikleri biraz daha rahat öğrenebilirsiniz. Her boşluğu doldurmak zorunda değilsiniz. Tek tek de denemeniz mümkün.</p>
<p>Bu komut Internet Explorer&#8217;ın bazı sürümlerinde çalışmamaktadır.</p>
<p><strong>Kullanıcının Tarayıcısını Kontrol Etmek </strong></p>
<hr size="2" />Daha önce de gördüğümüz gibi Javascript komutları tarayıcılara göre değişiklik gösterebiliyor veya hiç çalışmıyor. Bu durumlarda kullanıcının kullandığı tarayıcıyı tespit etmek ve ona göre hareket etmek akıllıca olacaktır. Bunun için kullanılan fonksiyon:</p>
<p>navigator.appName</p>
<p>Tabi sadece tarayıcıyı tespit etmek yeterli olmayabilir. Tarayıcı tanımlama ile ilgili tüm komutlar :</p>
<p>navigator.appName<br />
navigator.appVersion<br />
navigator.CodeName<br />
navigator.userAgent</p>
<p>Javascript ile kullanıcının bilgisayarından o anki tarihi ve saati almanız mümkün. Internet tüm dünyaya hitap ettiğinden sizin sayfanızın bulunduğu Web Server ile kullanıcının bilgisayarındaki saat ve tarih birbirine uymayabilir. Böyle bir durumda kullanıcının bilgisayarından saati ve tarihi almak faydalı olabilir.<br />
Önce saatin ve tarihin atanacağı bir değişken ile new Date() fonksiyonu çağırılır.<br />
zaman = new Date() Böylece zaman isimli değişkenin bir tarih değişkeni olduğunu belirttik. Fakat bu şekilde alınan tarih ve zaman bilgileri ekranda biraz düzensiz görülür. 14 Eylül 1998 tarihinde saat 22:10&#8242;da alınan bilgi ekranda şu şekilde görünecektir:<br />
Fri Aug 14 22:10:54 UTC+0300 1998 Bunu daha anlaşılı bir şekle sokmak için JScript&#8217;in .toLocaleString() komutundan yararlanılır.<br />
Deminki örneğimizde aldığımız zaman değişkenini zaman.toLocaleString() fonksiyonundan geçirdikten sonra alacağımız sonuç:</p>
<p><strong>08/14/1998 22:10:37 </strong>şeklinde olur.</p>
<p>Aynı zamanda kullanacağımız şu zaman fonksiyonlarıyla alacağımız değerler de şöyle olur:</p>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td><strong>KOMUT </strong></td>
<td><strong>YANIT </strong></td>
<td><strong>AÇIKLAMA </strong></td>
</tr>
<tr>
<td><strong>zaman.getDay() </strong></td>
<td>5</td>
<td>Haftanın günü (0 = Pazar)</td>
</tr>
<tr>
<td><strong>zaman.getMonth() </strong></td>
<td>7</td>
<td>Ay (0 = Ocak , 0 &#8211; 11 arası)</td>
</tr>
<tr>
<td><strong>zaman.getDate() </strong></td>
<td>14</td>
<td>14 Ayın kaçıncı günü</td>
</tr>
<tr>
<td><strong>zaman.getYear() </strong></td>
<td>98</td>
<td>Yıl</td>
</tr>
<tr>
<td><strong>zaman.getHours() </strong></td>
<td>22</td>
<td>Saat</td>
</tr>
<tr>
<td><strong>zaman.getMinutes() </strong></td>
<td>10</td>
<td>Dakika</td>
</tr>
<tr>
<td><strong>zaman.getSeconds() </strong></td>
<td>37</td>
<td>Saniye</td>
</tr>
<tr>
<td><strong>zaman.getTime() </strong></td>
<td>903122773920</td>
<td>&#8220;1 Ocak 1990 Geceyarısı&#8221; tarihinden itibaren geçen milisaniye</td>
</tr>
<tr>
<td><strong>zaman.getTimezoneOffset() </strong></td>
<td>-180</td>
<td>Greenwitch&#8217;e göre (GMT) dakika olarak saat farkı</td>
</tr>
</tbody>
</table>
<p><strong>Java Script&#8217;te Resim İşleme </strong></p>
<hr size="2" />Aşağıdaki örnek Internet&#8217;te sıkça kullanılan ve Java Button diye anılan butonların nasıl çalıştığına bir örnektir. Bu butonlar mouse pointer üstlerine geldiği anda değişiyorlar ve pointer üstlerinden çekildiğinde eski hallerine dönüyorlar. Biz de bu işlemi yapan bir fonksiyon yazacağız ve butonun onMouseOver ve onMouseOut olaylarını bu fonksiyona göndererek resmi değiştireceğiz.</p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;script&gt;<br />
{<br />
res1 = new Image();<br />
res1.src = &#8220;resim1.gif&#8221;;<br />
res2= new Image();<br />
res2.src=&#8221;resim2.gif&#8221;;<br />
}<br />
function changeImage(imgDocId,imgObjName) {<br />
document.images[imgDocId].src = eval(imgObjName + &#8220;.src&#8221;);<br />
}<br />
// &#8211;&gt;&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;a href=&#8221;http://www.programlama.com&#8221; onMouseOver=&#8221;changeImage(&#8217;buton&#8217;,'res1&#8242;)&#8221;<br />
onMouseOut=&#8221;changeImage(&#8217;buton&#8217;,'res2&#8242;)&#8221;&gt;<br />
&lt;img src=&#8221;resim1.gif&#8221; border=&#8221;0&#8243; name=&#8221;buton&#8221;&gt;&lt;/a&gt;&lt;br&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>Bir de Internet&#8217;te her gün rastladığımız linklere renk ve hareket getirecek bir script örneği verelim:</p>
<p>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;STYLE&gt;<br />
.on {<br />
font-size:12;<br />
text-decoration:underline;<br />
color:red;<br />
}<br />
.off {<br />
font-size:12;<br />
color:black;<br />
}<br />
&lt;/STYLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;A HREF=&#8221;http://www.programlama.com&#8221; onMouseOver=&#8221;this.className=&#8217;on&#8217;;&#8221; onMouseOut=&#8221;this.className=&#8217;off&#8217;;&#8221;&gt;Gel Bakalim&lt;/A&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt;<br />
Burada STYLE tag&#8217;i içinde iki adet class tanımlıyoruz ve bunlara on ve off adlarını veriyoruz. Linkimize de başlangıç olarak off classını atıyoruz. onMouseOver olayında linkin classını on, onMouseOut olayında ise tekrar off yapıyoruz. Örnekte normalde siyah olan link, üzerine gelindiğinde kırmızı ve alt çizgili olmaktadır. Bu classların yapılarıyla oynayarak çok değişik linkler elde etmek mümkün</p>
<p>Yazan : Serdar Kalaycı</p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/WU1DokT51eQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/javascript-ile-web-sayfa-duzenlemeleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/javascript-ile-web-sayfa-duzenlemeleri/</feedburner:origLink></item>
		<item>
		<title>XML’i Kavramak</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/2w9v1tzZbbM/</link>
		<comments>http://www.knbykl.org/xmli-kavramak/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 04:04:50 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Mail Security]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[XML Dökümanları]]></category>
		<category><![CDATA[XML Kavramak]]></category>
		<category><![CDATA[XML Makaleleri]]></category>
		<category><![CDATA[XML nasıl öğrenilir?]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=175</guid>
		<description><![CDATA[Bilgisayar dünyasının ilk kuşaklarında programcıların tek işlemli uygulamalar üzerine yaptıkları çalışmalar üzerinden nice değişimler geçti. Küçük bir eylemi yapmak için büyük makinelerin açılıp kapatılması gerektiği bir dönemde toplama işlemini yapabilen makineler birer teknoloji harikası görülüyordu.

Bilişimin değişken teknoloji ve fizyonomisini tarihsel bir yaklaşıma yansıttığımız an, her zaman birkaç temel kavramın baskın olduğunu görürüz. “Zaman” ve ”iş” [...]]]></description>
			<content:encoded><![CDATA[<p>Bilgisayar dünyasının ilk kuşaklarında programcıların tek işlemli uygulamalar üzerine yaptıkları çalışmalar üzerinden nice değişimler geçti. Küçük bir eylemi yapmak için büyük makinelerin açılıp kapatılması gerektiği bir dönemde toplama işlemini yapabilen makineler birer teknoloji harikası görülüyordu.<br />
<img class="alignnone size-full wp-image-177" title="xml-kavramak" src="http://www.knbykl.org/wp-content/uploads/2009/06/xml-kavramak.jpg" alt="xml-kavramak" width="615" height="100" /><br />
<span id="more-175"></span>Bilişimin değişken teknoloji ve fizyonomisini tarihsel bir yaklaşıma yansıttığımız an, her zaman birkaç temel kavramın baskın olduğunu görürüz. “Zaman” ve ”iş” kavramlarının, “iş”in hep büyümesi gölgesinde ters orantılı olarak yürütülmesi amaçlanıyordu. Birçok şey, yeni tasarım ve teoremler bekliyordu.</p>
<p>Ve “iş” hep büyüdü, istenilenler çoğaldı, parametreler daha kompleks hâl aldı, cevap bekleyen bir ton soru soruldu, “bunu da yapabilecek mi” beklentileri başladı, oluşan rekabette etik tartışıldı, kazalar oluştu, -farklılık- çok az bir fark olarak görüldü.“Yoksa, sahip olmak istendi.Varsa, daha fazlası istendi”, en zoru da bütün bunlar için mehil verilmiyor, zaman tanınmıyordu. Daha sı ortam “sanal” dı.</p>
<p>Süreç, hergün gebe kalıp erken doğumlar yapıyordu.Evler, işyerleri kapılarını dünyaya açtılar, bireylerin heran yeni coğrafik keşiflere çıkabilmeleri için daha görkemli alanlar yaratıldı, ama hiç asfalt dökülmüyordu bunun için. Daha önce düşünmediğimiz birçok şey artık bizim için olmazsa olmaz sistemler haline geldi. Sunulan teknolojiler, “daha az yeni doktrin daha çok yeni etkinlik”ler getirdi. Artık özellikle yazılım teknolojisi kuram olmaktan çıkıp bir olgu olmuştu. Üretken olana kayıldı,-esneklik, verimlilik, bütünleşme, destek- sözcükleri yazılımcıların dillerinden düşmedi.Yeni lisanın elifbası çoktan yazılmıştı. Kullanıcıya sadece okumak ve bu kavramlarla ilgili cümleler kurmak kaldı. Ancak yazılımcıların ortaya koyduğu ve çeşitli farklı organik yapıya göre değişkenlik gösteren uygulamalar arasında bir standardın olmaması herzaman tartışma konusu oldu. Her yazılımcı çıkardığı birçok yenlikte kendi donelerini kendi bileşenlerini kullandı. Bu hem rekabeti canlı tutuyordu hem de kullanıcılar arasında renkli bir ortam oluşturuyordu. Birinin yaptığını diğeri yapamıyordu. Bu şekilde birbirinden ayrılan ancak aynı amaçlı birçok yazılım ortaya çıkmıştı. Bütün yazılım dillerin genel amacı; en kısa yoldan hızlı, profesyonel,güçlü ve güvenli uygulamalar için altyapı hazırlamaktır. Öngörülen bu mantık çerçevesinde uygulamaların altyapılarında bir standart oluşturulmaya çalışıldı. Özellikle gerek kurumsal bağlamda gerekse bireysel bağlamdaki kullanıcıların birçok zaman veri paylaşım sorunu vardı. Çünkü her kullanıcı verilerini farklı profil ve biçimlerde saklamış kullanmıştı. Yeni bir platform için söz konusu ortamın kopyasını oluşturması gerekiyordu. Başka bir departmandaki veriler arasında aynı organlar olmadığı zaman iletişim kurulamıyordu. Birçok firma bazı standartları oluşturma yoluna girdi özellikle Internet denen bulgu bunun için bulunmuş en güzel fırsattı. Ancak bunun tohumları daha yeni filizleniyor. Yine de yazılım çevresi daha önceki başarılarını üstüne Internet’teki gelişmeleri de başarıyla kaydedip mirasa devam etti. Bununla beraber herkesi aynı ortam üzerinde iletişime götüren Internet geçen hergün genişlediği halde birçok standarttan eksikti. Ve bu kesinlikle gerekliydi. Yani yazılım dünyası, donanım cephesinin kendi içinde kurduğu standartlığı kuramamıştı.<br />
Platform zenginliği yaşadığımız günümüzde yazılımcıların işi daha da zor. Hem işletim sistemi hem de uygulamalar hem de organik platformlar bazında birçok “ayrı” var. Örneğin günümüzde yaşam biraz daha mobil oluyor, biraz daha mekandan bağımsız oluyor, GSM’ce davranıyor, GPRS’ce konuşuyoruz.WAP telefonları, el bilgisayarları ve PDA’lar PC’lerin misyonunu tehdit ediyor. 3. kuşak (3G) denilen UMTS, EDGE gibi teknolojiler için yatırımlar yapılıyor. Artık mekan kavramına mahkum olmadan verilerimize ulaşabilme ihtimali sonuçlanıyor, sesli ve görüntülü iletişim derinden ilerliyor.<br />
Öyle görülüyor ki zor zamanda çok iş yapılmış gibi. Bütün bunlarla beraber insanlığın dramatik bir değişim yaşadığı da en açık ifadedir. Aslında benim üzerinde duracağım XML teknolojisi için böyle bir giriş yapmaya gerek var mıydı bilmiyorum. XML bahsettiğim bu değişimler içinde gerçekten büyük bir konuma sahip mi bunu da hep beraber göreceğiz.<br />
Neyse, yukarıda bahsettiğim gelişimde oturulmak istenen standart kavramlar için belirli nitelikte belirli örneklikte uyulacak tekbiçimler oluşuyor günümüzde. Bunu yapabilecek teknolojiden biri olan ve veri iletişimi sağlayacak XML yapısından söz edeceğim.<br />
Geleceğin iş modelleri değişmektedir. Dünyada birçok yerde Internet ve bilgisayar çözümü kendini normal katsayısında göstermediği halde mobilişim kısa süre içinde gündeme oturdu. “e-”’li birçok şey sanki “m”li olacak.e-işàm-iş. Şu halde bilgisayar dallarının mobil aygıtlara taşınmasıyla beraber kurumlar işlerini de beraberinde bu aygıtlara sorunsuz taşımak istiyorlar. Müşterilerin bir işletme ile kurduğu ilişkiler için kullandığı farklı kanallar mevcuttur. Bu kanallar(web, faks, e-mail,telefon) arasında iletişim her zaman sorun olmuştur. Ve bu entegrasyon olumlu olmadığı sürece iş akış süreci zaman kaybediyor.</p>
<p>Öyle bir şey olmalı ki . . .</p>
<p>Platform sayısı bu kadar fazla iken kullanıcıların veya kurumların verilerini sadece bir alanda değil diğer aygıtlarda da sunulmasını istediklerinde hiç de kolay bir şekilde bunu yapamayacaklardır. Bu veriyi yeniden biçimlendirmeli, kostümünü yeniden şekillendirmelidirler. Yani verinin başka ortamlara alınarak değişik biçimlerde değişik renkte sunulması her zaman sorun olmuştur.</p>
<p>Ayrıca veriyi saklamada ve veriye ulaşmada da metot değişmektedir. Artık ağaç yapısına geçiliyor. Klasik database modellerine karşın iç içe veriler saklanabilecekler. Dolayısıyla aralarındaki ilişki daha toplu olmuş olacaktır. Veriye derinlik kazandırılmaktadır. Bundan dolayı yapısal olarak erişilebilmesi (diğer sistemlerden tarafından),yapılan işe uygun olması, işlevsellik ve entegrasyon açısından XML önemli bir rol oynuyor.</p>
<p>Öyle bir sistem olmalı ki, hem verilerin daha güvenli olarak dolaşması sağlanmalı, aralarda bir yerlerde kaybolmamalı, hem de zamandan büyük kazanç sağlamalı.</p>
<p>Günümüzde mühendislik, ticari ve bilimsel alanlarda yaygın olarak kullanılacak standart bir olgu : XML .<br />
XML : Post-Modern motif ve modern (elektronik) iş arasındaki entegrasyon<br />
Evet entegrasyon sorunu için XML iyi bir çözümdür.</p>
<p>XML içerik sağlıyor, diyor eWeek dergisi.Ve devam ediyor ; XML verinin dış dünyaya nasıl gösterileceği ile beraber verinin içeriğini de dış dünyaya sunuyor. Örneğin bir hava durumu bilgisini XML biçiminde aklayabilirsek; farklı kullanıcılar farklı biçimde bu bilgiye ulaşabilir. Örneğin bir WAP telefonu ile bu bilginin sadece metin tabanlı bölge ve rakamsal sonuçları alınabilirken, bir tarayıcı üzerinden aynı bilginin grafik gösterimi veya gözlerin görmeyenler için de krill alfabesi biçiminde bilgisi alınabilir. XML içinde ilgili veri “Tag”larlar ayrıldığı için, XML üzerine inşa edilen bir arama motoru, sorgunun ilgili diğer bölümlerini kullanıcının isteğine göre birleştirerek de sunabiliyor. Böylece aynı veritabanı içindeki “pazarlama” sonuçları pazarlama müdürüne, “üretim” sonuçları üretim ve planlama müdürüne ulaşırken, genel müdür, bu bilgileri birleştirerek çok farklı bir analiz sonucuna kolayca ulaşabiliyor.<br />
XML şirketler, bankalar, üreticiler, kullanıcılar arası veri değişimi ve depolanması konusunda çok büyük yararlar sağlayacaktır. Özellikle B2B entegrasonunda önemli bir oyun sergileyecektir.</p>
<p>200 organizasyon arasında yapılan bir araştırmada, katılımcıların yüzde 41&#8242;i XML&#8217;e yatırım yapmalarının B2B borsalarına katılmalarıyla ilişkili olduğunu belirttiler. Aşağıda yöneticilerin XML&#8217;e neden para harcamaları gerektiğinin nedenlerini bulacaklar.</p>
<p>* Verilerin XML&#8217;le dönüştürülmesi kurumların arama yeteneklerini genişletiyor<br />
* XML yeni uygulama geliştirme zamanını kısaltıyor<br />
* XML destekli iş süreçleri iş döngülerinin kısalmasını sağlıyor<br />
* XML dahili uygulamalarının müşteri uygulamalarına bağlanmasını sağlıyor<br />
* XML uygulamaları dağıtıcılara ve iş ortaklarına bağlıyor<br />
Kaynak: Zona Research<br />
XML’i kavramak . . .<br />
Üzerinde binlerce makinenin aynı anda haberleşmesini sağlayan bir yapıya sahip Internet gün geçtikçe kavramları, olguları, gelişim, nüfusu ve yoğunluğu ile gündeme oturmaktadır. Gelişim Internet denen dünya ağını öyle bir konumu getirdi ki, artık yalnızca bilgisayarlar değil mobil telefonlar, arabalar, televizyonlar hatta evdeki buzdolabı gibi değişik amaçtaki cihazlar da Internet’e bağlanabiliyorlar. Kendileri bu yeteneğin kazandırıldığı bu aygıtlar değişik amaçlı, fabrikasyon özellikleri farklı, üreticileri, organik yapıları, üzerlerindeki yazılım ve donanım farklı en önemlisi Internet&#8217;e bağlanma yöntemleri farklıdır. Buna rağmen bütün bu cihazların birbirleri ile anlaşmalarını sağlayan ortak bir şey var. Bunların hepsi aynı dili konuşuyorlar. Hepsi TCP/IP isimli adap erkânı biliyor. Internet’e bağlanıp diğer aygıtlarla iletişim kurma hünerlerini bu TCP/IP etiketine borçludurlar. Internet’in tutanağı, iletişimin resmi kurallar kümesi olan bu standart dil bu denli bir esneklik sağlanmıştır.</p>
<p>Şahit olduğunuz gibi, çok daha önce, insanlar arasında bile sorun teşkil edebilen iletişim problemini donanım cephesi halletmiştir. Herkesin kendi algoritmasıyla, kendi doneleriyle, kendi bakış açılarıyla ve en önemlisi kendi pazar paylarını dikkate alarak oluşturdukları yazılımlar, kendi dışındaki yazılımlarla konuşturulmak istendikleri zaman ciddi problemlerle karşılaşılıyordu. Aslında bu bahsettiğim standart yapı, yazılımların her türlü bileşeniyle diğer yazılımlarla haberleşmesi değil veya her yönüyle ona açık olması değildir. Tek sorun ; zaman ve mekandan etkilenmeden hepsinin aynı veriyi kullanabilmesidir. Yazılımların, yalnızca kendilerinin anlayabileceği bir veri biçimi değil bütün yazılım ve aygıtların rahatlıkla alıp kullanabileceği, çıkarım yapabileceği bir yapı olmalıdır. Her türlü veri(data)nin tek bir formatı olmalı ki bu sorun çözülsün.</p>
<p>İşte bahsettiğim, bahsetmeye devam edeceğim ve gelişmeye açık teknoloji olan XML bu sorunun tek çözümüdür. Kimsenin tekelinde olmayan, World Wide Web Consortium (W3C) tarafından oluşturulan XML, veri yapısının, biçiminin oluşturduğu daralanları genişletecektir. Yazılım dünyasının en önemli argümanı olan Veri’yi geniş bir paylaşımda, güçlü bir iletişimle kurumsal pazara açacaktır. Böylece hem yeni pazar payları açacaktır , özellikle e-ticaret alanında esneklik sağlayacaktır, hem de bireysel istekler için kurumsal giriş kapılarını (portallar) açacaktır. XML&#8217;in iş dünyasına getirdiği en önemli şey, kurumların birbirleri ile konuşabilmesi için altyapıyı sağlıyor olması. XML bugüne kadar başarılamayan bir şeyi başardı ve kurumların farklı uygulamalarının birbiri ile konuşabilmesini sağladı.</p>
<p>Terim olarak XML nedir ?<br />
XML&#8217;de veri (data), verinin görünüşünden (presentation) ayrıldığı için programlara, özelliklerini kaybetmeden veriyi ortak bir yapıda saklama imkanı sağlamaktadır. Her uygulama bu veriyi dilediği gibi sunabilmektedir.<br />
Veri, bir veritabanında olduğu gibi yapısal özellikleri korunarak saklandığından, yığın olmaktan kurtulmakta ve gerektiğinde filtre edilebilen, sorgulanabilen bilgi olarak saklanmaktadır. XML, doküman ve verinin çok geniş bir yelpazede mantık tanımını yapabilen bir meta dildir. Evrensel ve esnek yapısı nedeniyle kelime işlem uygulamalarından e-iş uygulamalarına varan geniş ve sınırsız bir uygulama alanında kullanılmaktadır.<br />
Web uygulamalarında XML&#8217;e ihtiyaç duymamızın önemli sebepleri var. Web sayfaları hazırlarken şu ana kadar kullandığımız HTML, öncelikle sununun, görünüşün nasıl olacağına odaklanmış bir script (betik) dili. HTML taglarının büyük çoğunlu sayfalarımızın şeklen nasıl olacağını belirlemek için kullanılıyor.<br />
HTML&#8217;de veri ve biçim iç içe geçmiş durumda. Veriyi, bu sayfanın içinden ayıklamak ve kullanmak mümkün olmamakta.</p>
<p>Kısacası ; XML&#8217;de veri ve verinin sayfamızda nasıl gösterileceği birbirinden ayrılmıştır ve verileri, aynı bir veritabanında yer alan veri gibi etkili bir şekilde kullanabilme imkanımız vardır.<br />
XML Extensible Markup Language (Genişleyebilir İşaretleme Dili)<br />
Markup, yazılı metinlerin gösterim aygıtlarda uygun biçimde yayınlamasını sağlayan özel semboller olarak tanımlanıyor. Bu metinin belirli kısımlarının özel bir anlam kazandırmak üzere işaretlenmesi işlemidir. Bu şekilde kullanılan işaretler, kurallar ve gramer kümesi markup language (işaretleme dili) olarak tanımlanır.<br />
Metin ve belgelerin kolay bir şekilde taşınabilmesi, paylaşılabilmesi ve işlenebilmesi için ilk işaretleme dili GML (Generalized Markup Language) 1960 sonlarında IBM’de yapılan araştırma çalışmaları sonunda ortaya çıktı. GML daha sonra ANSI (American Natitional Stardard Institute) 1978 te oluştuturlan bir grup tarafından geliştirilerek SGML (Standardized Generalized Markup Language) adı altında 1986 yılında ISO (the International Organization for Standardization) kurumunca uluslararası bir standard olarak kabül edildi . Birçok sektörde aktif olarak kullanılan SGML, belge ve metin sunumda kullanılan standartlaşmış bir sözlük, semboller kümesidir. Yeni biçim dillerinin üretilmesine olanak sağlar. SGML çok güçlü bir dil olmasına rağmen son derece karmaşık yapısı ve yüksek uygulama geliştirme maliyeti bu dilin yaygın bir şekilde kullanımını engellemiştir.<br />
Tim Berners-Lee ve Anders Berlung 1989 yılında internet ortamında belge paylaşımını kolaylaştırmak için Web uygulamalarının temel öğelerinden biri olan HTML (Hypertext Markup Language) dilini geliştirdiler. HTML bir SGML uygulaması olarak geliştirildi. Diğer bir deyişle HTML dilinin yapısı SGML dilinde tanımlandı. HTML dili çok basit yapısı ile son derece başarılı oldu. 1996 yılında Word Wide Consortium (W3C, http://www.w3.org)’u SGML güç ve esnekliğini içereçek basit bir işaretleme dili oluşturmak amaçıyla XML dilini tasarlamaya başladı. Şubat 1998’de XML 1.0 bir standard olarak W3C tarafından yayınlandı. XML dili SGML dilinin bir çok özelliğini içeren basitleştirilmiş dildir. SGML dilinin bir alt kümesidir. XML SGML gibi bir meta dildir. Yani başka dillerin yapısını tanımlamakta kullanılan bir dildir.</p>
<p>Gelecek yazılarda XML söz dizimi kuralları, XML DTD, XML Schema, XML Namespaces, Xpath, Xpointer, XSL, XSLT, XSLF, SAX ve DOM gibi bir çok belirtim ve teknolojiden anladığım kadarıyla bahsedeceğim.</p>
<p>XML SÖZ DİZİMİ (SYNTAX)<br />
XML içerisinde kullanılacak işaretleme ifadeleri;<br />
elemanlar (elements),<br />
varlık referansları (entity refererences),<br />
açıklamalar (comments),<br />
işleme komutları (processing instructions),<br />
CDATA bölümleri,<br />
ve veri tipi tanımlamalarından (document type declaretions) oluşur.<br />
Bir XML belgesi yazılmaya başlandığında bu belgenin bir XML belgesi olduğunu ve hangi versiyonu kullandığını belirlemek için ilk satır, aşağıdaki biçimde yazılmak zorundadır. Dökümanı tamamen okuduktan sonra bundan 2 konu önce yazmış olduğum <a title="Permanent Link to XML Başlangıç ve Kullanım Alanı" rel="bookmark" href="http://www.knbykl.org/xml-baslangic-ve-kullanim-alani/">XML Başlangıç ve Kullanım Alanı</a> başlıklı dökümanımı okursanız, daha iyi anlayacağınıza eminim.</p>
<p>Kaynak: Ahmet Kaymaz</p>
<p><!--l version="1.0--></p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/2w9v1tzZbbM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/xmli-kavramak/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/xmli-kavramak/</feedburner:origLink></item>
		<item>
		<title>Oracle – Veri Tabanı Yönetim Sistemi</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/UMVvH8msJiA/</link>
		<comments>http://www.knbykl.org/oracle-veri-tabani-yonetim-sistemi/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 20:03:04 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASE]]></category>
		<category><![CDATA[Inc]]></category>
		<category><![CDATA[INFORMIX]]></category>
		<category><![CDATA[Informix Corporation]]></category>
		<category><![CDATA[Oracle Corporation]]></category>
		<category><![CDATA[Oracle Eğitim]]></category>
		<category><![CDATA[Sybase]]></category>
		<category><![CDATA[Veri Tabanı Yönetim Sistemi]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=171</guid>
		<description><![CDATA[Teknolojinin her dalında olduğu gibi VTYS alanında da çok hızlı gelişmeler yaşanmaktadır. Bu haftaki dersimizde size bazı güncel VTYS&#8217;leri bir miktar tanıtmaya çalışacağız. Tabii ki bu tanıtımda örnek VTYS&#8217;lerin tüm özelliklerini tanıtma iddiasında değiliz.


Sadece temel ve ayırdedici özelliklerini tanıtmayı amaçlıyoruz. Daha ayrıntılı bilgiyi VTYS&#8217;nin web sitesinden veya ilgili şirketlerden edinebilirsiniz.
Örnek VTYS&#8217;lerimiz:
ORACLE &#8211; Oracle Corporation
INFORMIX &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Teknolojinin her dalında olduğu gibi VTYS alanında da çok hızlı gelişmeler yaşanmaktadır. Bu haftaki dersimizde size bazı güncel VTYS&#8217;leri bir miktar tanıtmaya çalışacağız. Tabii ki bu tanıtımda örnek VTYS&#8217;lerin tüm özelliklerini tanıtma iddiasında değiliz.<br />
<img class="alignnone size-full wp-image-172" title="oracle" src="http://www.knbykl.org/wp-content/uploads/2009/06/oracle.jpg" alt="oracle" width="615" height="100" /><br />
<span id="more-171"></span><br />
Sadece temel ve ayırdedici özelliklerini tanıtmayı amaçlıyoruz. Daha ayrıntılı bilgiyi VTYS&#8217;nin web sitesinden veya ilgili şirketlerden edinebilirsiniz.<br />
Örnek VTYS&#8217;lerimiz:<br />
ORACLE &#8211; Oracle Corporation<br />
INFORMIX &#8211; Informix Corporation<br />
ASE &#8211; Sybase, Inc.<br />
ORACLE</p>
<p>İlişkisel Veritabanı Yönetim Sistemleri (Relational Database Management Systems &#8211; RDBMS) büyük miktarlardaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı erişim imkanlarının sağlandığı, bilgilerin bütünlük içerisinde tutulabildiği ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı programlardır. Oracle veritabanı da bir ilişkisel veri tabanı yönetim sistemidir.</p>
<p><strong>Oracle veritabanının özellikleri şunlardır:</strong><br />
<span style="color: #ccffff;">• Büyük miktarda veri tutabilmekte ve verilerin depolandığı alanları ayarlama imkanı vermektedir.<br />
• Aynı anda çok sayıda kullanıcıya verilerin bütünlüğünü bozmadan hizmet verebilmektedir. Oracle 8 sürümü ile birlikte on binlerce kullanıcıya hizmet verebilmektedir.<br />
• Günün 24 saati ve haftalar boyu hiç kapatılmadan çalışabilmektedir.<br />
• İşletim sistemi, veri erişim dilleri ve ağ iletişim protokolleri standartlarıyla uyumludur.<br />
• Yetkisiz erişimleri engelleme ve kontrol edebilme imkanı sağlamaktadır.<br />
• Bütünlüğü veritabanı düzeyinde sağlayabilmektedir, böylece daha az kod yazılmaktadır.<br />
• İstemci/Sunucu mimarisinin bütün avantajlarını kullanabilmektedir.</p>
<p></span>Oracle ile ilk defa karşılaşan kullanıcılar genellikle Delphi, Visual Basic gibi görsel programlama dillerine benzeyen uygulamalarla karşılaşmayı umarlar. Oysa ki yukarıda da belirttiğimiz gibi Oracle bir ilişkisel veritabanı yönetim sistemidir. Yani bir programlama dili değildir. Fakat Oracle tarafından geliştirilen ve Oracle’ın kendi uygulama geliştirme araçları içerisinde kullanılan bir programlama dili vardır. Oracle ürünleri genellikle büyük çaplı veri kontrolünü gerektiren uygulamalarda kullanılır. Öncelikle bir ağda Oracle veritabanı sadece sunucu olarak adlandırılan bilgisayara yüklenir. Bu sunucu Oracle’ın desteklediği herhangi bir işletim sistemiyle çalışıyor olabilir. Yani Oracle’ın faklı işletim sistemleri için farklı sürümleri vardır. Bu sunucu bilgisayara kurulan veritabanı üzerinde tablolar, indeksler, eşanlamlar,tablo uzayları ve ihtiyaç duyulan kayıtlı prosedürler oluşturulur. Bunlar raporun sonraki bölümlerinde anlatılmaktadır. Oracle’ın bu veritabanına erişerek uygulama programı geliştirmeye yarayan diğer ürünleri de istemci bilgisayarlara kurulur. Tabi sunucu bilgisayara da isteğe bağlı olarak bu ürünler kurulabilir.<br />
<strong><br />
Oracle Ürünleri<br />
</strong>Aşağıda şu an kullanımı en güncel olan değişik Oracle ürünleri tanıtılımıştır.<br />
<strong><br />
Oracle RDBMS<br />
</strong>Oracle ilişkisel veritabanı yönetim sistemi Oracle şirketinin ana ürünüdür. Bu ürünün şu an en yeni sürümü Oracle9i RDBMS’dir. Biz bu çalışmada bir önceki sürüm olan Oracle8i’yi esas alacağız. Oracle 8i’den bir önceki sürüm Oracle 7 ve onun bir önceki sürümü de Oracle 6’dır.<br />
<strong><br />
Oracle Uygulama Geliştirme Araçları</strong><br />
Oracle’ın veritabanı uygulamaları geliştirmek için görsel ürünleri bu grupta yer alır. Oracle’ın program geliştirmek için kullanılan bu ürünlerinin eski adı Oracle Power Objects idi. Daha sonra Oracle Developer 2000 ve sonra da Oracle Developer 6 ürünleri geliştirildi. Developer 2000 ve Developer 6 içerisinde Form Builder, Report Builder, Graphics Builder, Procedure Builder ve Schema Builder ürünlerini içerir. Form Builder kullanıcıya sunulacak arayüzlerin geliştirildiği programdır. İşte bu uygulama görsel bir programlama dilinin uygulama geliştirme ortamına benzer. Report Builder ürünü veritabanından elde edilen bilgiler ile raporlar hazırlamaya yarar. Özellikle banka ve kamu kuruluşlarının ihtiyacı olan fatura, evrak gibi belgelerin hazırlanıp, çıktı alınması için geliştirilmiş bir programdır. Procedure Builder sürekli kullanılacak kodların prosedürler halinde oluşturulup, kütüphaneler olarak kaydedilmesi işlemine yarayan bir programdır. Schema Builder ise veritabanı nesnelerinin görsel olarak oluşturulabilmesi için geliştirilmiş bir uygulamadır. Burada tablo, görüntü, eşanlam oluşturma, tablolar arası ilişki kurma,tablo kısıtlamaları oluşturma işlemleri görsel olarak yapılabilir.<br />
<strong><br />
SQL*Plus<br />
</strong>SQL*Plus, Oracle veritabanında sorgulama yapmak ve SQL komutlarını çalıştırmak için kullanılan bir araçtır. SQL*Plus’da SQL komutlarının yanısıra PL/SQL komutları da kullanılabilmektedir. Bu çalışmanın diğer bölümlerinde anlatılan SQL komutları SQL*Plus kullanılarak hazırlanmıştır.<br />
<strong><br />
PL/SQL</strong><br />
PL/SQL (Procedural Language/SQL), yapısal dillere ait özelliklerin standart SQL’e eklenmesiyle ortaya çıkan Oracle’a has bir dildir. PL/SQL Oracle firmasının piyasaya sürdüğü her üründe önemli bir yere sahiptir. Kullanıcılar PL/SQL’i kullanarak programlarına bir çok yeni özellikler katmaktadırlar. Bunlar arasında;<br />
<span style="color: #ccffff;">• PL/SQL tabanlı kaydedilmiş yordamlar(stored procedures) ve veritabanı tetiklemeleri(triggers) ile önemli iş kurallarını programlamak<br />
• Oracle Developer ürünleri ile güçlü ve kolay kullanılabilir görsel ortamlarla programları detaylandırmak ve daha rahat kontrol etmek<br />
• Oracle tabanlı uygulamalarda nesne-tabanlı(object-oriented) tasarımlar yapma Web sayfalarından Oracle veritabanlarına link yapma<br />
</span><br />
PL/SQL’in belki de en önemli özelliği istemci-sunucu ortamları tasarlama ile ağ üzerinde dağıtık işlemler yapma ve bir çok sorguyu çalıştırma imkanı sunmasıdır. PL/SQL dili Ada dilinden sonra tasarlanmıştır. PL/SQL’de en gelişmiş yordamsal dillerde olan veri tipleri, blok yapısı, şartlara bağlı ve bağlı olmayan kontrol cümleleri, bir çok döngü tipi, hata durumlarında kullanılacak yordamlar ve kullanıcı tarafından tanımlanabilecek nesneler yer almaktadır.<br />
<strong><br />
Net8<br />
</strong>Net8 Oracle’ın bir ağ ürünüdür. Farklı bilgisayarların veritabanına bağlantı kurması ve ve istemci-sunucu arasında veri alışverişinin sağlanabilmesi Net8’in ana görevidir. Net8 ağdaki her bilgisayara kurulur. Ağ bağlantısı sağlandığında NET8 istemci ile sunucu arasında bir veri taşıyıcısı gibi işlem görür.</p>
<p>Ağ üzerinde bir istemcinin sunucudaki veritabanına erişebilmesi için, sunucuda bir ağ servis adının(Net Service Name) ve bir dinleyicinin(LISTENER) oluşturulması gerekir. Oracle Enterprise Edition ile birlikte gelen Net8 Assistant ile bu gerçekleştirilebilir. Ağ servis adları, veritabanı gibi bir servisi ağda tanımlamak amacıyla basit bir yöntem olarak kullanılır.<br />
 Verilen şekilde ağ erişimi oluşturmak için gereken işlemler oldukça basittir.</p>
<p><strong>SQL*Net<br />
</strong>SQL*Net Net8’in yardımcı programıdır. Bir istemci bilgisayara Oracle Forms ürününün yüklendiğini düşünelim. Bunun için istemci bilgisayar SQL*Net ile oluşturulan veritabanı takma adını(alias) kullanır. Yukarıda Net8 konfigürasyonunun istemci bilgisayarlarda da yapılması gerektiğini söylemiştik. İşte bu konfigürasyon istemci bilgisayarlarda SQL*Net sayesinde yapılır. Burada veritabanına verilecek takma isim, protokol adı, ana bilgisayar adı (veritabanının bulunduğu) ve veritabanının SID olarak girilen ismi bilgileri girilerek düzenleme yapılır.</p>
<p><strong>Oracle8i Enterprise Edition ve Gerekli Donanım</strong><br />
Bu rapor Oracle8i Enterprise Edition for Windows NT Release 8.1.5 sürümü üzerine düzenlenmiştir. Oracle8i Enterprise Edition CD’sinde üç farklı ürün yer almaktadır:<br />
• Oracle8i Enterprise Edition (Server)<br />
• Oracle8i Client<br />
• Oracle Programmer</p>
<p>Oracle8i Enterprise Edition(Windows NT)</p>
<p><strong>Yükleme Türü Açıklama</strong><br />
Typical Tam anlamıyla bir veritabanı kullanmak isteyenler için tavsiye edilen yükleme türüdür. Bir başlangıç veritabanı, ağ servisleri, Oracle yardımcı ürünleri ve yardım dokümanları yüklenir.720 MB yer kaplar. Pentium 133 ya da Pentium 166 işlemci ile kurulabilir. Önerilen işlemci Pentium 200 dür. 96 MB RAM ile çalışabilir. Tavsiye edilen bellek ise 128 MB ‘tır.<br />
Minimal Minimum veritabanı paketi kullanmak isteyenler için önerilir. Bir başlangıç veritabanı, ağ servisleri ve bazı yardımcı ürünleri içerir. 520 MB yer kaplar. Pentium 133 ya da Pentium 166 işlemci ile kurulabilir. Önerilen işlemci Pentium 200 dür. 64 MB RAM ile çalışabilir. Tavsiye edilen bellek ise 96 MB ‘tır.<br />
Oracle8i Client(Windows NT ve Windows 95/98)</p>
<p><strong>Yükleme Türü Açıklama<br />
</strong>Typical Veritabanı yöneticileri için veritabanına bağlanma ve veritabanı yönetim işlerini gerçekleştirme araçlarını yükler. 299 MB yer kaplar. Intel 80486 işlemci ile çalıştırılabilir. Tavsiye edilen Pentium 133 ya da Pentium 166 dır. En az 32 MB RAM ile çalıştırılabilir. Önerilen 64 MB’tır.</p>
<p>Oracle Programmer(Windows NT ve Windows 95/98)</p>
<p><strong>Yükleme Türü Açıklama<br />
</strong>Typical Veritabanına erişebilen geliştirme araçları ve ara yüzlerini yükler. Bu paket, ön derleyicileri(precompilers), ağ servislerini ve yardım dokümanlarını içerir. 267 MB yer kaplar. Intel 80486 işlemci ile çalıştırılabilir. Tavsiye edilen Pentium 133 ya da Pentium 166 dır. En az 32 MB RAM ile çalıştırılabilir. Önerilen 64 MB’tır.</p>
<p><strong>Oracle Veritabanı Yapısı<br />
</strong>Oracle veritabanının, işletim sistemi tarafından bakıldığında, biri fiziksel diğeri mantıksal olmak üzere iki bölümü vardır. Fiziksel bölüm, işletim sisteminden görünen kısımdır. Bunlar Data File(Veri Dosyası), Control File(Kontrol Dosyası) ve Log File(Log Dosyası) ‘dan oluşmaktadır. Mantıksal Bölüm, bir ya da daha fazla tablo uzayı(Tablespace) ve tablolar(table), görüntüler(view), sıralar(sequence), eşanlamlar(synonym), indeksler(index), kümeler(cluster), veritabanı bağlantıları (database link), prosedürler(procedure), fonksiyonlar(function), ve paketlerden(package) oluşan şema nesnelerinden oluşmaktadır. Fiziksel bölüm işletim sistemi tarafından görülebilmesine rağmen, mantıksal bölüm ancak Oracle’a bağlanıp, SQL komutları çalıştırılarak görülebilmektedir. Yani, Oracle kurulu herhangi bir makinede, SQL bilgisi olmayan bir insan, Oracle’ın sadece fiziksel bölümünü görebilmektedir.<br />
Oracle veritabanındaki her nesnenin bir sahibi(kullanıcı olarak bahsedilir) vardır. Her kullanıcı bir veya daha fazla tablo uzayına sahip olabilir. Her nesne, ait olduğu kullanıcının herhangi bir tablo uzayında (mantıksal olarak) bulunur. Her tablo uzayı da, kendisine sahip olan kullanıcının nesnelerini tutmak için işletim sisteminde bir veya daha fazla veri dosyasına sahip olabilmektedir.<br />
Sonuç itibariyle, veritabanındaki her nesnenin bir kullanıcısı vardır ve bu nesneler mantıksal olarak o kullanıcının sahip olduğu tablo uzaylarının herhangi birinin (hangisi olduğu komutlarla öğrenilebilir) içerisinde, fiziksel olarak da o kullanıcının sahip olduğu tablo uzayının herhangi bir veri dosyasında bulunur. Fakat, o veri dosyasının içerisine işletim sisteminden bu nesneyi bulmak için bakılamaz. Bu nesnenin sahibi ve mantıksal yeri “DML”(veri işleme dili) komutları ile bulunabilmektedir.</p>
<p><strong>Fiziksel Bölüm</strong><br />
Fiziksel bölüm veritabanını oluşturan işletim sistemi dosyalarıdır. Bir Oracle veritabanı fiziksel olarak bir ya da daha fazla veri dosyası, iki ya da daha fazla log dosyası, bir ya da daha fazla kontrol dosyasından oluşur.<br />
<strong><br />
Veri Dosyaları(Data Files)<br />
</strong>Veri dosyaları veri tabanındaki tüm verileri tutan dosyalardır. Tablo, indeks gibi mantıksal veritabanı yapılarının içerisindeki veriler fiziksel olarak veri dosyalarında tutulurlar. Bir veri dosyası kendisi için ayrılan alan dolduğunda, kendi sahip olduğu alanı artırabilecek özelliklere sahiptir. Bir ya da daha fazla veri dosyası mantıksal bir veritabanı depolama ünitesi olan bir tablo uzayını oluşturular.</p>
<p>Normal veritabanı işlemleri boyunca bir veri dosyası içerisindeki veriler okunur ve Oracle için ayrılan belleğe getirilirler. Örneğin bir kullanıcının veritabanındaki bir tablonun verilerine erişmek istediğini varsayalım. Eğer istenilen veriler bellekte yer almıyorsa, ancak o zaman uygun veri dosyasından okunur ve belleğe getirilirler.<br />
Değişikliğe uğrayan veriler ya da yeni eklenen veriler veri dosyalarına hemen yazılmazlar. Sabit diske erişimi azaltmak ve böylece sistemin performansını artırmak için veriler bellek havuzunda tutulur ve gerektiğinde hepsi birden uygun veri dosyalarına kaydedilirler. Bunu Oracle artalan işlemleri belirler.<br />
<strong><br />
Kontrol Dosyaları(Control Files)</strong><br />
Tüm Oracle veritabanları kontrol dosyasına sahiptir. Bir kontrol dosyası veritabanı adı, veri dosyaları ve log dosyalarının adı ve diskteki yeri, veritabanının oluşturulma tarihi vb. veritabanı ile ilgili bilgileri tutar.<br />
Her veritabanı oturumu açıldığında Oracle bu dosyayı kontrol ederek gerekli bilgileri alır. Eğer veritabanında fiziksel bir değişme olursa(yeni bir log dosyası ya da veri dosyası oluşturulması gibi), yapılan değişiklikler Oracle tarafından otomatik olarak kontrol dosyalarına yansıtılır.<br />
<strong><br />
Log Dosyaları(Log Files)</strong><br />
Redo Log dosyaları olarak bilinen bu dosyaların amacı veriler üzerinde yapılan tüm değişiklikleri kaydetmektir. Eğer veri dosyalarına kalıcı olarak kaydedilmiş olan, değişikliğe uğramış kayıtlarda bir bozukluk olursa yapılan değişiklikler redo log dosyalarından sağlanabilir ve işlemler kaybolmaz. Birden fazla tekrarlanan bozukluk durumlarında redo log dosyalarının da bozulmasını engellemek için Oracle farklı diskler üzerinde redo log dosyalarının birden fazla kopyasının alınmasına olanak sağlar.<br />
Bir veritabanı işlemi sırasında elektrik kesilirse, bellekteki veriler veri dosyalarına kaydedilmeyecek ve verilerin kaybolması durumuyla karşılaşılacaktır. Oracle veritabanı tekrar açıldığında redo log dosyalarında yapılan son değişiklikler veri dosyalarına yansıtılarak verilerin kaybolması engellenir.<br />
<strong><br />
Mantıksal Bölüm</strong><br />
Oracle veritabanının mantıksal yapısı tablo uzaylarını(tablespaces), şema nesnelerini(schema objects), veri bloklarını(data blocks), genişlemeleri(extents) ve parçaları(segments) içerir.<br />
<strong><br />
Tablo Uzayı(TableSpace)</strong><br />
Bir veritabanı, ilişkili mantıksal yapıların gruplanmasını sağlayan ve tablo uzayı olarak bilinen mantıksal depolama ünitelerine bölünmüştür.</p>
<p>Yukarıdaki şekil veritabanı, tablo uzayı ve veri dosyaları arasındaki ilişkiyi açıklamaktadır. Buna göre:<br />
<span style="color: #ccffff;">• Bir veritabanı bir ya da daha fazla tablo uzayına bölünmüştür.<br />
• Tablo uzayı içerisindeki tüm mantıksal yapıları fiziksel olarak depolayabilmek için, her tablo uzayı bir ya da daha fazla veri dosyasına sahip olabilir.<br />
• Tablo uzaylarının toplam kapasitesi, sahip oldukları veri dosyalarının toplam kapasitesine eşittir.(Yukarıdaki şekil için SYSTEM tablo uzayı 2MB, USERS tablo uzayı 4MB).<br />
• Tablo uzaylarının toplam kapasitesi veritabanının toplam kapasitesini belirler.(6 MB)<br />
Bir tablo uzayı açık ya da kapalı olabilir. Tablo uzayı kapalı olduğunda bu tablo uzayının içerisindeki nesnelere erişilemez. Bir tablo uzayı yönetim amaçlı olarak kapalı duruma alınabilir.<br />
Veri Tabanı Şema Nesneleri<br />
Şema nesneleri mantıksal veri depolama yapıları olarak bilinir. Veritabanı üzerinde kullanıcının belirli işleri yapabilmesi için tanımlanan bu yapılar tablolar, görüntüler, sıralar, eşanlamlar, indeksler, kümeler, veritabanı bağlantıları, prosedürler, fonksiyonlar, ve paketlerdir. Bir şema ise bu nesnelerin oluşturduğu gruptur.</span></p>
<p><strong>Küme(CLUSTER)</strong><br />
Aynı anda sorgulanan birden fazla tablonun bir arada kaydedilmesine “cluster” denir. Bu yapı, beraber sorgulanan tablolarda hız kazanmak için çok önemlidir. Örneğin “isci” tablosu ile “bolum” tablosunun(bu tabloların yapısı için SQL bölümüne bkz.) her ikisi de ortak olarak “bolum” ve “bolumno” alanlarını içermekte. Yani “isci” tablosundaki “bolum”, “bolum” tablosundaki “bolumno” alanına karşılık geliyor. Burada oluşturulacak bir cluster’da her iki tablo veritabanında yan yana getirilerek aynı veri bloğu içerisine kaydedilir.Böylece daha hızlı erişim sağlanır.<br />
<strong><br />
Indeks(INDEX)</strong><br />
İndeksler tablo ve cluster’lar için kullanılan veri tabanı nesneleridir. Burada amaç aranılan bir kayda daha hızlı erişimdir. Özellikle üzerinde çok arama yapılan alan veya alanlar üzerinde indeks oluşturmak çok etkilidir. İndeks oluşturulduğunda ilgili tablonun kayıtları yer değiştirmez. Sadece ilgili kayıtların kayıt numaraları olarak adlandırılan “rowid” ‘ler alınarak sıralama yapılır.</p>
<p>Bir tablo üzerinde oluşturulabilecek indeks sayısı sütunların kombinasyonları farklı olduğu müddetçe sınırsızdır. Bir sütun diğer sütunlarla değişik kombinasyonlarda kullanıldığı müddetçe birden fazla indeks içerisinde yer alabilir. Aynı sütun kombinasyonlarının indeksi, faklı indeks ismi kullanarak oluşturulmaya çalışılsa bile gerçekleştirilemez.<br />
İndeksleme işleminin gerçekleştirilmesinde Oracle çoğunlukla B-tree indeksleme metodunu kullanır. Bunun yanında “hash cluster indexes”, “reverse key indexes”, ve “bitmap indexes” yöntemlerini de kullandığı bilinmektedir.<br />
İndeksler mantıksal ve fiziksel olarak oluşturuldukları tablodan bağımsızdırlar. Eğer bir indeks silinirse, ilgili tablo zarar görmez, çalışmaya devam eder. Fakat indeks olmadığı için veri erişim süresi artacaktır.<br />
Oracle bir indeks oluşturulduğunda onu otomatik olarak kullanmaya başlar ve indeksin oluşturulduğu tablodaki silme, güncelleme ve ekleme işlemleri indekse otomatik olarak yansıtılır.<br />
<strong><br />
Rol(ROLE)</strong><br />
Oracle veritabanında her nesnenin ait olduğu bir kullanıcı vardır. Bir kullanıcı bir başka kullanıcının nesneleri üzerinde işlem yapmak isterse buna hakkı olması gerekir. Bir nesne üzerinde işlem yapabilme yetkisine hak denir. Örneğin veritabanına bağlanma, tablo oluşturma, bir başkasına ait tablodan kayıt listeleme, bir başkasının prosedürünü çalıştırma birer haktır. Bu haklar kullanıcılara atanmak suretiyle kullanıcıların bu işlemeleri gerçekleştirmeleri sağlanır. Hakların kullanıcılara atanması iki şekilde olabilir. Birinci olarak bir tabloya kayıt ekleme, kayıt silme vb. haklar bir kullanıcıya ya da kullanıcılara ayrı ayrı atanır. İkinci şekilde ise verilmek istenen haklar bir rol altında birleştirilir ve bu rol istenen kullanıcılara aktarılır.<br />
Haklar “sistem hakları” ve “nesne hakları” olmak üzere ikiye ayrılır. Sistem hakları veritabanı ile ilgili olarak önceden tanımlanmış rollerdir. Oracle’da 60’tan fazla sistem hakkı tanımlanmıştır. Nesne hakları ise veri tabanı nesneleri üzerinde işlem yapma haklarıdır. “Create Table”, “Create TableSpace”, “Drop Any Index” gibi haklar sistem haklarına örnek olarak verilebilir. Nesne hakları ise 8 çeşittir. “Select”, “Insert”, “Update”, “Delete”, “Alter”, “Index”, “Execute”, “References”, “All” çeşittir. “All” ayrı bir hak olarak adlandırılmaz. Diğer tüm hakları kapsar. Bu haklar sırayla kayıt seçme, kayıt güncelleme, kayıt silme, nesnelerin yapısını değiştirme, indeks oluşturma, alt program çalıştırma, yabancı anahtar tanımlayabilme işlemlerini içerirler. Rol tanımlama ve hak verme komutları ileride ayrıntılı olarak işlenecektir.<br />
<strong><br />
Geri Alma Parçası(ROLLBACK SEGMENT)<br />
</strong>Oracle veritabanının güvenliği açısından “Select”, “Insert”, “Update”, “Delete” gibi işlemlerin yedeğini almaktadır. Alınan bu yedeklerin konulduğu yerlere geri alma parçası denir. Kullanıcı bu tip işlemleri yaptıktan sonra “Rollback” komutunu uygularsa, yaptığı değişiklikler geri alma parçalarından getirilir ve böylece kayıtlar eski haline dönmüş olur. Kullanıcı “Commit” komutunu verirse yaptığı değişiklikler geri alma parçalarından geri getirilemez. Her veritabanında bir ya da birkaç tane geri alma parçası olabilir.<br />
<strong><br />
Sıra(SEQUENCE)</strong><br />
Tablolardaki kayıtlar için otomatik sıra numarası verilmesi isteniyorsa sıra nesnesi kullanılabilir. Bu sıra numarası veritabanı tarafından otomatik olarak üretilir. Özellikle çok kullanıcılı ortamlarda tekil olarak numara üretilmek istendiğinde çok kullanışlıdır. Birden fazla kullanıcı aynı anda böyle bir sayı üretmek isterse bunun program koduyla yapılması işlem hızını yavaşlatır. Çünkü bir kullanıcı diğeri işini bitirene kadar beklemek zorundadır. Sıra nesnesi bu işi otomatik olarak ve çok seri bir şekilde başarır.<br />
Sıra numaraları Oracle’da tanımlı 38 rakama kadar tamsayılardan oluşur. Bir sıra tanımlaması sıranın adını, artan ya da azalan olacağını, iki sayı arasındaki fark miktarını içerir. Oracle tüm sıra numarası tanımlarını SYSTEM tablo uzayının içerisindeki bir veri sözlüğü tablosuna kaydeder. SYSTEM tablo uzayı sürekli çalışır durumda olduğu için tüm sıra numaraları da aktiftir. Sıra numaraları tablolardan bağımsız olarak üretilir. Yani bir sıra numarası bir ya da daha çok tablo için kullanılabilir.</p>
<p><strong>Kayıtlı Fonksiyonlar(STORED FUNCTION) ve Kayıtlı Prosedürler(STORED PROCEDURE)</strong><br />
Bir grup SQL ya da PL/SQL komutunun belli bir işi gerçekleştirmek için bir araya getirilip veritabanına kaydedilmesi kayıtlı prosedürler ve fonksiyonlar sayesinde olur. Birden fazla uygulama programı içerisinde aynı işi yapan kodları sürekli yazmak yerine kayıtlı prosedür ve fonksiyonlar bir kere yazılır ve tüm uygulamalar tarafından kullanılır. SQL*Plus, Oracle Forms ya da Oracle Reports içerisinden bu prosedürler çağrılabilir. Prosedürler geriye birden fazla değer döndürebilirken, fonksiyonlar sadece bir değer döndürürler.<br />
<strong><br />
Eşanlam(SYNONYM)</strong><br />
Eşanlam bir tablo, görüntü, sıra, prosedür, fonksiyon ya da paket için “alias” olarak adlandırılan bir takma isimdir. Eşanlam bir takma isim olduğu için veri sözlüğü içerisindeki tanımının kapladığı yer haricinde, veritabanında yer kaplamaz. Eşanlamlar güvenlik ve daha rahat kod yazma amacıyla kullanılırlar. Bir eşanlam kullanıldığında ilgili nesnenin adı ve sahibi gizlenir ve SQL komutu içerisinde kullanımı kolaylaşır.<br />
Eşanlamlar genel(Public) ve özel(Private) olarak tanımlanabilirler. “Genel” olarak tanımlanan eşanlamlara tüm veritabanı kullanıcıları erişebilir. “Özel” olarak tanımlanan eşanlamlara sadece ilgili nesnenin sahibi ve sahibi tarafından hak verilmiş bir başka kullanıcı erişebilir.<br />
Bir nesnenin adı değiştirilmek istendiğinde ya da silinmek istendiğinde, bu nesneyi kullanan tüm uygulama programları değiştirilmek zorundadır. Oysa ki bu nesnenin bir eşanlamı oluşturulursa ve uygulama programları bu eşanlamı kullanırsa, eşanlam üzerinde yapılacak değişikliklerle bu silme vb. işlemlerden uygulama programlarının etkilenmesi önlenebilir.<br />
Bir kullanıcı bir başka kullanıcının nesnesini kullanmak istediğinde “kullanıcı_adı.nesne_adı” şeklinde bir yazım kuralına uymak zorundadır. Eğer bir “genel” olarak bir eşanlam tanımı yapılırsa tüm kullanıcılar direk eşanlam ismini kullanarak işlemlerini gerçekleştirebilirler.<br />
<strong><br />
Tablo(TABLE)</strong><br />
İlişkisel Veri Tabanı Yönetim Sistemleri’nde veriler tablolar içerisinde yer alır. Her tablo bir isimle tanımlanır ve her biri bir “kayıt” olarak adlandırılan satırlar ile bu kayıtlardaki verilerin özelliklerini belirleyen sütunlardan oluşur. Her tablo bir ya da daha fazla sütuna sahip olabilir. Her sütunun bir adı ve veri tipi vardır.<br />
Bir tablo oluşturulduğunda Oracle verileri depolamak için bir tablo uzayı içerisinde bir veri segmenti ayırır. Veri segmentinin değerleri değiştirilerek bir tablo için ayrılacak yer miktarı da değiştirilebilir.<br />
<strong><br />
Görüntü(VIEW)</strong><br />
Görüntü bir ya da birkaç tablodan istenilen alanların alınmasıyla oluşturulan sanal bir tablodur. Görüntü bu tablolar üzerinde gerçekleştirilen bir sorgu sonucu oluşturulur. Bir görüntü üzerinde silme, güncelleme gibi işlemler yapılamaz. Çünkü görüntü oluşturulduğu tabloların sadece o anlık görüntüsüdür ve veritabanında kendi tanımının kapladığı yer haricinde yer kaplamaz.</p>
<p>Oracle8 : Veri Tabanı Yönetim Sistemi, günümüzün dinamik çalışma grubu çevrelerinden yüksek hacimli ‘ online transaction&#8217; ve sorgulama bazlı veri ambarı sistemlerine kadar uzanan geniş bir yelpazede en uygun, en iyi performansa ulaşmak için esnek, açık, ölçeklenebilir, bağımsız, güvenli bir ortam yaratan, Web-enabled uygulama yaratımını destekleyen ve kolay kullanılabilir yönetim araçları içeren güçlü bir veri tabanı yönetim sistemine sahiptir. Oracle VTYS, 130’dan fazla donanım üzerinde (UNISYS, IBM, DEC, HP, SUN, MAC, Sequent, PC, Mainframe&#8230;..) ve tüm işletim sistemlerinde çalışmakta, değişik performans ihtiyaçları için tek işlemcili donanımlar’dan, Simetrik Çoklu İşlemcili sistemler üzerinde çalışabilmektedir<br />
Oracle’ın Kominikasyon Aracı, SQL*Net ürünü, client/server ve server/server Oracle veri iletişimini gerçekleştir. SQL*Net, yagın Kullanılan Tüm İletişim Protokollerini Destekler : TCP/IP, OS, APPLETALK, XODIAC,ve diğerleri<br />
Oracle8 VTYS’nin mimarisi yüksek performans sağlayacak bütün teknolojileri kullanmaktadır:</p>
<p>Contention-Free Queries: Oracle8 VTYS&#8217;de sorgulamalar güncelleştirmeleri ve güncelleştirmeler sorgulamaları bloke etmediği için işlemler birbirlerini beklemek zorunda kalmazlar.<br />
Paylaşımlı Derlenmiş SQL: Oracle VTYS, OLTP ortamlarda olduğu gibi çok sayıda kullanıcının aynı grup SQL cümlelerini kullandığı durumlarda bu kullanıcıların SQL cümlelerinin derlenmiş ve ortak bellekte tutulan tek bir kopyasını paylaşmalarına olanak verir. Bu shared compiled SQL yapısı sayesinde hem bellek kullanımı azalır hemde performans artar.</p>
<p>On-line Backup/On-line Recovery: Oracle VTYS, OLTP aktivitenin en yüksek olduğu zamanlarda bile kullanıcıları etkilemeyecek şekilde on-line backup (yedekleme) ve on-line recovery (kurtarma) işlemlerini gerçekleştirebilmektedir.</p>
<p>Otomatik Sıra Numarası Üretimi: Oracle VTYS, veri tabanında sıra numaraları üretilirken herhangi bir tablonun kilitlenmesine gerek olmadığından bu açıdan bir performans darboğazına girmemektedir.</p>
<p>Oracle, veri tabanı kaynaklarına, tablolarına ve verilerine yetkisiz ve kaçak erişimi engellemek ve denetleyebilmek ayrıca DDL komutlarının (create, select, delete vb) kullanım haklarının denetlenmesi için rol bazında güvenlik yöntemini kullanmaktadır. Bu yöntem her kullanıcının her tablo için erişim hakkının sisteme girilmesini gerekli kılan klasik yaklaşıma göre çok daha düşük maliyet getirmektedir. Oracle8 VTYS, güvenlik ve gizlilik nedeniyle erişim ve güncelleştirme için değişik şifrelerle korunma sağlamaktadır. Veri tabanı objelerine erişim yetkileri roller bazında tanımlanabilir (role-based security). Oracle8 VTYS, ANSI/ISO SQL3 güvenlik standardını desteklemektedir.</p>
<p>Rol, bir iş grubunu temsil eder. Veri tabanı kullanıcılarına daha önce tanımlanmış roller verilir. Böylece kullanıcının bulunduğu iş grupları kendisine verilen rollere bağlı olarak tanımlanmış olur. Bir role verilebilecek veri tabanı objelerine değişik erişim yetkileri verilebilir.<br />
Oracle VTYS veri tabanı bütünlüğüne (Integrity) sahiptir. Bir alan üzerinde verilebilecek kısıtlama sayısında herhangi bir limit yoktur. Oracle VTYS veri tabanı bütünlüğüne ilişkin bilgiler aşağıda verilmiştir</p>
<p><strong>Oracle Veri Bütünlüğü Uygulatımı</strong><br />
Oracle VTYS, veri bütünlüğü kurallarının herbirini tanımlamaya ve uygulamaya olanak sağlar. Bu kuralların büyük bir kısmı, bütünlük kısıtlamaları kullanılarak tanımlanır. Bütünlük kısıtlamaları aşağıda sunulmuştur;</p>
<p><strong>Bütünlük Kısıtlamaları (Integrity Constraints)</strong><br />
Bir bütünlük kısıtlaması, bir tablonun bir kolonu için bir kural tanımlamanın bildirimsel (declarative) bir yöntemidir. Bir bütünlük kısıtlaması, Oracle VTYS tarafından veri tabanının temel tablolarına geçersiz veri girişini engellemekte kullanılan bir mekanizmadır. Bütünlük kısıtlamaları, bir veri tabanındaki bilgiler ile ilgili iş kurallarını uygulatmak amacıyla tanımlanabilir. Eğer bir ifade, yürütümünün sonuçlarından herhangi biri bir bütünlük kısıtlamasını ihlal ederse, ifadeye ilişkin değişiklikler ortadan kaldırılır (rollback) ve bir hata kodu döndürülür.</p>
<p>Veri tabanı idarecisinin ya da uygulama geliştiricisinin kolon değerlerinin girdisi üzerinde sınırlamalar koymak için kullanabileceği çeşitli veri bütünlüğü kısıtlamaları vardır.</p>
<p><strong>Oracle VTYS tarafından desteklenen bütünlük kısıtlamaları şunları içerir:</strong><br />
NOT NULL Default olarak, bir tablodaki kolonların tümü &#8220;null&#8221; değere olanak verir. Yani o kolonlara veri girilmesi zorunlu değildir. Bir NOT NULL kısıtlaması, bir tablonun bir kolonundaki null değere izin verilmemesi anlamına gelir. Örneğin, A tablosundaki her kayıt için, B kolonuna, mutlaka bir değerin girilmesini gerektiren bir NOT NULL kısıtlaması tanımlanabilir.</p>
<p>UNIQUE Anahtar Bir UNIQUE anahtar kısıtlaması, bir tablo içinde belirlenen bir kolon ya da kolon seti içinde yinelenen değerlerin olmamasını sağlar. UNIQUE anahtar kısıtlamasının tanımına dahil edilen kolon ya da kolon seti UNIQUE anahtar olarak adlandırılır. Eğer söz konusu UNIQUE anahtar kısıtlaması birden fazla kolondan oluşuyorsa, kısıtlama karma unique anahtar (composite unique key) olarak adlandırılır.<br />
BİRİNCİL (PRIMARY) Anahtar Bir veri tabanı içindeki her tablo, tek bir BİRİNCİL ANAHTAR kısıtlamasına sahip olabilir. Bir tablonun kayıtları, BİRİNCİL ANAHTAR bütünlük kısıtlaması ile yönetilen değerleri kullanarak tanımlanabilir ya da referans edilebilir. BİRİNCİL ANAHTAR&#8217;ın bütünlük kısıtlaması, Oracle VTYS uygulamalarına şunları garanti eder:</p>
<p>Bir kolonun hiçbir iki kaydı belirlenen kolon ya da kolon seti içinde yinelenen değer içermeyecektir. Birincil anahtar kolonu/kolonları null değerlere izin vermeyecektir (yani, her kayıtta birincil anahtar kolonları için bir değer olmalıdır).</p>
<p>YABANCI (FOREIGN) Anahtar Oracle, aşağıdakiler dahil olmak üzere referans bütünlüğü işlemleri tanımlama amacına yönelik YABANCI ANAHTAR bütünlük kısıtlaması kullanımını desteklemektedir:</p>
<p><strong>Referans Bütünlüğü Kısıtlamaları Tarafından Tanımlanan İşlemler</strong><br />
Referans bütünlüğü kısıtlamaları, referans verilen ana anahtar değerinin değiştirilmesi durumunda, bir alt tablo içindeki bağımlı kayıtlar üzerinde gerçekleştirilen özel işlemleri de belirler. Oracle VTYS&#8217;in YABANCI ANAHTAR bütünlük kısıtlamaları ile desteklenen referans işlemleri şunları içerir: GÜNCELLEŞTİR (UPDATE), SİLMEYİ KISITLA<br />
(DELETE RESTRICT) ve BASAMAKLI SİL (DELETE CASCADE)<br />
Basamaklı Silme (Cascading Deletes) Basamaklı silme işlemi, referans edilen ana anahtar değerlerini içeren kayıtlar silindiğinde, bağımlı yabancı anahtar değerlerine sahip alt tablolardaki tüm değerlerin de silineceğini belirtir. Örneğin, eğer ana tablodaki bir kayıt silinirse, bu kaydın ana anahtar değeri alt tablo içindeki bir ya da birden çok yabancı anahtar değeri tarafından referans alınmışsa, alt tablo içinde ana anahtar değerini referans alan kayıtlar da alt tablodan silinir.</p>
<p>Oracle8 VTYS, bir tablonun veri dağılımı ve saklama indekslere ve istatistiklere dayanarak SQL ifadeleri için otomatik olarak bir yürütme planı seçmektedir. Bu özellik, otomatik maliyet-esaslı eniyileyici (Cost-based optimizer) olarak adlandırılmaktadır. Kullanılan istatistikler arasında tablo ebatı, kolonların seçiciliği, verilerin indekslenen değerlerin etrafında fiziksel olarak kümelenme derecesi, vb. yer almaktadır. En etkin erişim yolunu seçerek, sorgulamanın performansını, sorgulama cümlesinin yazılım şeklinden (sözdiziminden) bağımsız hale getirmektedir. Tabloları birleştirme (join) ya da tablo erişim yolu gibi noktalarda eniyileyicinin kararlarını yönlendirmek için, SQL ifadeleri içinde bulunan ve kullanıcı tarafından verilen ipuçları kullanılmaktadır. Oracle8 VTYS&#8217;nin cost-based optimizer&#8217;ı istatistik oluştururken verinin uniform olduğunu farz etmemektedir.</p>
<p>Oracle veri tabanı ailesi ilişkisel mimarinin yanı sıra, nesne yönetimli teknolojiyi de tamamen destekleyen bir mimariye sahiptir. Endüstri eğilimi ve beklentileri sonucunda Oracle hem ilişkisel hem nesnesel mimariyi; paralellik, devamlılık güvenlik, ölçeklenebilirlik, kolay yönetilebilirlik, yüksek performans ve yeni veri tipleri ile birleştirerek bilgi çağında yarattığı devrimin yanı sıra evrensel bir yaklaşım sunmaktadır</p>
<p>Oracle8 ORDBMS, standart veri tipleri dışında kullanıcı tarafından tanımlanmış veri tipleri kullanımına imkan vermektedir. Kullanıcı tarafından tanımlanan veri tipleri ile gerçek nesnelerin modellenmesi mümkün olmaktadır. Bu amaçla Oracle, SQL3 standartları çerçevesinde SQL diline ekler getirmektedir</p>
<p>Kompleks veri nesnelerinin modellenmesi amacıyla, Oracle8 yeni veri tipleri ile veritabanını genişletmek (user-defined veri tipleri) imkanı sunmaktadır. Bu yapı altında; Harici prosedürlerde Object veritipleri tanımlanması, Index-only tablolar, Nested tablolar, Array veri tipleri tanımlanabilmektedir.<br />
Oracle8, mevcut ilişkisel veriler üzerinde Object View’ler yaratarak, ilişkisel ve object (nesne) verilerin bir arada kullanılmasına olanak verir.</p>
<p>Hükümet ve ticari güvenlik ihtiyaçlarını karşılamak amacıyla çok seviyeli güvenlik yaklaşımını destekleyen Oracle veri tabanı ailesinin kişisel bilgisayar ihtiyaçlarına da karşılık veren aynı kernel&#8217;e sahip versiyonu mevcuttur.</p>
<p>Network Computing Architecture (NCA)&#8217;ın anahtar bileşeni olan Oracle8 Enterprise Edition, network-merkezli bilgisayım ve nesne geliştirim yöntemlerinin peformansını, güvenilirliğini ve ölçeklenebilirliğini karşılamak üzere tasarlanmıştır. İster geleneksel şirket uygulamaları ister Web üzerinde elektronik ticaret olsun Oracle8 Enterprise Edition ve NCA; en çok gereksinim duyulan uygulamalara destek vermek üzere performans, güç, network bütünleşmesi ve esneklik sağlar.</p>
<p>Veri depolama uygulamaları, yüklü miktarda veri ile çalışan karmaşık, anlık sorgulamalara bağlı olarak OLTP uygulamalarından daha farklı işleme tekniklerine gereksinim duyarlar. Bu özel gereksinimleri karşılamak üzere Oracle8 çok çeşitli sorgu işleme teknikleri, veri erişim yolunu seçmek üzere incelikli sorgu optimizasyonu ve paralel donanım konfigürasyonundan tam anlamıyla yararlanan ölçeklenebilir bir mimari sunmaktadır.</p>
<p>Oracle8 ile geliştiriciler ve son kullanıcılar fiziksel olarak dağıtımlı veritabanını tek bir mantıksal veritabanı olarak ele alırlar ve dağıtımlı ağ ortamındaki her türlü veriye tek bir lokal makina üzerindeymişçesine erişim sağlarlar ve verinin güncellemesini aynı kolaylıkla yerine getirirler. Üretim uygulamaları da çoklu sistemler üzerine dağıtılabilir.<br />
Personal Oracle8, Oracle8 veritabanının masaüstü sürümü olup yeni sezgisel kullanıcı arabiriminin yanı sıra ileri veri kopyalama özellikleri sunmaktadır.</p>
<p>Personal Oracle8 üzerinde geliştirilen uygulamalar yeni yapılandırmaya gerek kalmadan diğer Oracle8 platformlarında da çalışmaktadır. Personal Oracle8 istemci/sunucu uygulamalarında ideal geliştirim platformudur. P O 8 sayesinde ;<br />
Veritabanı nesnelerini yönetebilirisiniz. Tablo verisi izleyebilir ve düzenleyebilirsiniz. Uzaktaki çoklu bağlantıları yönetebilirsiniz. Otomatik veri uyumu konfigürasyonu yapabilirsiniz.</p>
<p>Personal Oracle Lite bir megabyte bellekten daha azına sığabilen tek kullanıcılı nesne-ilişkisel veritabanıdır.. Personal Oracle Lite az yer kaplayan aygıtlarda tek kullanıcılı, küçük çaplı uygulamalar geliştirmek isteyenler için ideal bir yazılımdır.</p>
<p>Personal Oracle Lite çalışma grupları ve şirketler için kullanılan Oracle veritabanıyla veri kopyalanmasını desteklemektedir. İstemci veritabanı altında kullabılmak üzere geliştirilmiş mükemmel bir gömülü veritabanıdır (embedded database) 1MBtan az bellekten daha azına gereksinim duyan Oracle Personal Lite hem hafif hem de çok güçlüdür. Bu sayede uygulamalar çok az bellek kaynağı gerektirirken istemci veritabanı kullanmanın avantajlarına da sahip olurlar. Personal Oracle Lite SQL nin set-tabanlı ilişkisel özelliklerinin gücünü karmaşık veri temsili birleştirir ve C++ gibi nesne-yönelimli programlama dillerinden doğrudan dolaşma (navigation) erişimine izin verir. Personal Oracle Liteın sahip olduğu bu nesne teknolojisi yeni kuşak Oracle nesne yönelimli araçların, bağlanırlığın ve sunucu ürünlerinin tamamlayacaktır.</p>
<p>Oracle ConText option, Oracle8 ilişkisel veritabanınızın bütün gücünü kullanarak, metin bilgi kaynaklarını yapısal verilerde olduğu kadar kolay ve hızlı kullanımına olanak veren metin yönetimidir. Haber arşivlerinden önemli Web içeriklerine kadar her tür bilgi kaynağına ulaşım ve yönetim için idealdir</p>
<p>The Oracle Video Option, kullanıcıların firma ağı üzerinden istemcilere gerçek zamanlı, tam ekran video ve yüksek kaliteli seslerin saklanması, yönetimi ve kullanımına çözüm sağlayan yazılımdır. Oracle8 Server’a opsiyon olarak Oracle Video Option geleneksel veri modelini yüksek kalitede ses ve video kullanarak geliştirir.</p>
<p>Oracle Advanced Networked Option, firma dizin hizmetleri, tek oturumla açılan hizmetler, network şifreleme, jeton ve kullanıcının biyometrik doğrulanması sayesinde tek kaynaklı bütünleşme ve Oracle8nin OSF Distributed Environmet (DCE) ile birleşimine olanak verir<br />
Oracle değişik bireysel teknolojiler kullanılarak bu tür hizmetler sağlamanın bir çok yolu olduğunun bilincindedir. Advanced Networking Option her bir hizmetin yürütülmesinde bir çok yol sunan &#8220;tabii teknoloji&#8221;dir. Bunun sonucunda, ağ ortamlarına ve güvenlik yazılımlarına yaptığınız yatırımları korurken, yeni teknolojileri de çıktıkça sisteminize katabilirsiniz.</p>
<p><strong>ORACLE UYGULAMA GELİŞTİRME ARAÇLARI</strong><br />
Oracle’ın ölçeklenir uygulama geliştirim çözümü içerisinde iki ürün grubu yer almaktadır: Oracle Designer/2000 ve Oracle Developer/2000™. designer/2000™ iş süreci yeniden yapılandırması (BPR), analiz ve tasarım diyagramcıları ile karmaşık sistemlerin modellenmesine destek verir.<br />
Developer/2000 organizasyonların iş gruplarından şirketlere, çeşitli ölçeklerde, hızlı ve üretken bir biçimde incelikli sistemler üretmelerini sağlar. Ortak bir depo, esnek modelleme ve yöntembilim desteği ve portatif açık mimari sayesinde Designer/2000 ve Developer/2000 endüstrinin tek ikinci kuşak istemci/sunucu ve geliştirim araçlarıdır.</p>
<p><strong>Üretkenlik</strong><br />
Developer/2000in güçlü bildiri yeteneği kullanılarak veritabanı tanımlamalarından, tek bir kod satırı yazmadan, uygulama yaratımı gerçekleştirilebilir.<br />
<strong><br />
İstemci/Sunucu Ölçeklenirliği</strong><br />
Ölçkelenirlik Developer/2000 geliştiricileri için oldukça basit bir işlemdir, çünkü ürünün mimarisi içerisinde bu özellik içsel olarak mevcuttur. Dizi getirme, veritabanı imleçleri, bağ değişkenleri, kayıt noktaları ve sıralar olarak sunucu işlevselliği paralel olamayan desteğinde belirtilmiştir<br />
<strong><br />
Taşınabilir Olma</strong><br />
Taşınabilir olma ve küresel yaygınlaştırım Oracle ürünlerinin ticari markalarıdır.<br />
Birleşik İstemci/Sunucu Düzenleme ve Hata Ayıklama<br />
Developer/2000 uygulamalarınızın özgün hale getirilmesi sunucu nesnelerinizin değiştirilmesi kadar kolaylaşmıştır.<br />
<strong><br />
Tam Bir GUI Desteği</strong><br />
Developer/2000, Windows, Macintosh ve Motif üzerinde doğal bir biçimde taşınanbilir uygulamalar ve character mode sağlar.<br />
<strong><br />
Model Yöneltimli Geliştirim</strong><br />
Geliştiriciler depo tanımlamalarından tam bir Developer/2000 uygulamasını gerçekleştririken Designer/2000 kullanmayı seçebilirler. Herhangi bir başka ürünle bu kadar karmaşık, belgelenmiş, standart hale getirilmiş, serbest kullanımlı uygulamalar yaratmanıza olanak yoktur.<br />
<strong><br />
Kolay Bütünleşme<br />
</strong>Uygulamalarınızın becerilerini genişleten açık mimari sayesinde Developer/2000 esneklik garantisi vermektedir.<br />
<strong><br />
Takım Geliştirimi</strong><br />
Developer/2000 uygulamalarınız, uygulama mantığı ve kullanıcı arabirim nesnelerini paylaşabilmekte, bu sayede size takım geliştirim standartlarını tanımlama ve güçlendirme ve uygulama nesnelerini ya da kodunu bir anda yeniden kullanma olanağı vermektedir.<br />
<strong><br />
Türdeş Olmayan Veri Erişimi</strong><br />
Developer/2000 yalnızca güçlü Oracle8 veritabanı becerilerini kullanmak üzere değil aynı zamanda formatı ve konumu ne olursa olsun organizasyonunuz içerisindeki tüm veriye erişim sağlamak üzere tasarlanmıştır. DB/2, SQL Server, DB2/400, Access ve RDB dahil olmak üzere seçiminizin gerektirdiği veri kaynakları ile iletişim kurmak üzere Open Client Adapter™, Oracle Open Gateway™ teknoloji ya da uygulama programlama arabirimler (API’ler) kullanır.<br />
<strong><br />
Bunun yanısıra;</strong><br />
İlişkendirilmiş veritabalarındaki verileri yönetilen bilgilere dönüştürmeyi mümkün kılıyor. Oracle Express in güçlü olanaklarıyla doğan Discoverer, kullanıcıların tek kaynaktan tüm olası iş araçlarına ulaşmasını sağlıyor. Discoverer ın predictive query governer (tahmini sorgulama yönetimi) özelliği, bir sorgulamanın sonuçlanmasının ne kadar süreceğini bildiriyor ve sorgulamanın tamamlanması kararını kullanıcıya bırakıyor. Bu özellik, sistemi yavaşlatan çok uzun süreli taramalardan tasarruf sağlıyor.<br />
Web yayınlama özelliği sayesinde kullanıcılar Oracle discoverer dan son raporları Web üzerinde yayınlama olanağı buluyor. Bu sayede organizasyon içinde çok fazla kişinin standart Web tarayıcısı kullanarak sonuçlara ulaşmasını sağlıyor.</p>
<p>Arşivimde buldum, paylaşmak istedim.</p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/UMVvH8msJiA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/oracle-veri-tabani-yonetim-sistemi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/oracle-veri-tabani-yonetim-sistemi/</feedburner:origLink></item>
		<item>
		<title>XML Başlangıç ve Kullanım Alanı</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/h3CHDgoeXDA/</link>
		<comments>http://www.knbykl.org/xml-baslangic-ve-kullanim-alani/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 15:23:09 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Attribute XML]]></category>
		<category><![CDATA[DTD Nedir?]]></category>
		<category><![CDATA[Element]]></category>
		<category><![CDATA[Extensible Markup Language]]></category>
		<category><![CDATA[Well-Formed XML Dökümanları]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XML Dökümanları]]></category>
		<category><![CDATA[XML Dökümanlarının Geçerliliği]]></category>
		<category><![CDATA[XML Dökümanlarının Görüntülenmesi Stylesheet Kavramı]]></category>
		<category><![CDATA[XML Hakkında Bilgi]]></category>
		<category><![CDATA[XML Makaleleri]]></category>
		<category><![CDATA[XML Nasıl Kullanılabilir?]]></category>
		<category><![CDATA[XML Nedir?]]></category>
		<category><![CDATA[XML Sözdizimi (XML Syntax)]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=162</guid>
		<description><![CDATA[Teknolojik gelişmelerin sürekli ve hızla devam ettiği bilişim dünyasında Internet,hiç kuşkusuz en önemli araç haline gelmiştir.Bu önemli aracın kullanmış olduğu dil olan HTML ise yapısındaki önemli bazı eksikliklerden dolayı yerini yeni bir dile bırakmaktadır:XML…


XML (Extensible Markup Language) artık çoğumuzun kulağına yabancı gelmeyen bir terim.W3C(World Wide Web Concortium) gibi bağımsız bir organizasyon tarafından geliştirilmiş olan XML, [...]]]></description>
			<content:encoded><![CDATA[<p>Teknolojik gelişmelerin sürekli ve hızla devam ettiği bilişim dünyasında Internet,hiç kuşkusuz en önemli araç haline gelmiştir.Bu önemli aracın kullanmış olduğu dil olan HTML ise yapısındaki önemli bazı eksikliklerden dolayı yerini yeni bir dile bırakmaktadır:XML…<br />
<img class="alignnone size-full wp-image-166" title="xml-dokumani" src="http://www.knbykl.org/wp-content/uploads/2009/06/xml-dokumani.jpg" alt="xml-dokumani" width="615" height="100" /><br />
<span id="more-162"></span></p>
<p>XML (Extensible Markup Language) artık çoğumuzun kulağına yabancı gelmeyen bir terim.W3C(World Wide Web Concortium) gibi bağımsız bir organizasyon tarafından geliştirilmiş olan XML, isminden de anlaşılacağı üzere son derece esnek bir yapıya sahiptir.İşte bu esneklik sayesinde XML, elektronik iş sistemleri, bankacılık, finans, sağlık, eğitim, ulaşım, otomotiv sektörleri gibi bir çok alanda,kısacası bilişim dünyasıyla ilgili olan her sektörde varlığını gün geçtikçe daha da hissettirmektedir.</p>
<p>Okumakta olduğunuz bu döküman sizlere XML ve ilişkili teknolojiler hakkında bilgiler vermek amacıyla hazırlanmıştır. Döküman temel olarak iki bölümden oluşmaktadır. Birinci bölümde XML ile yeni tanışan okuyucular düşünülerek temel sözdizimi(syntax) yapıları, terimler ve XML dilinin başlıca yapı birimlerinden bahsedilmiştir.İkinci bölümde ise daha da teknik detaya inilerek XML dilinin yapısındaki detaylar, programlama dilleriyle olan ilişkileri,veritabanı yönetim sistemlerindeki davranışları, gibi konular anlatılmaya çalışılmıştır.Bu bölümden programcılar,veritabanı yöneticileri,sistem uzmanları,web sayfası tasarımcıları öğrenciler gibi okuyucu gruplarının yararlanması düşünülmüştür.</p>
<p>Hazırlamış olduğum bu dökümanın sizlere faydalı olmasını temenni etmekteyim.Dökümanla ilgili eksik gördüğünüz yönleri, önerilerinizi, sorularınızı ve her türlü yorumlarınızı öğrenmekten memnunluk duyacağımı bilmenizi isterim.</p>
<h4><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">&#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;</span></h4>
<h2><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML Nedir?</span></h2>
<p><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML(Extensible Markup Language) HTML ile pek çok açıdan benzerlik gösteren bir markup dilidir.Verinin tanımlanması ve tarif edilmesi için kulanılır.HTML&#8217;deki yapının aksine XML&#8217;de kullanılacak olan tag&#8217;ler önceden tanımlı değildir.Yani bir XML dökümanının yapısı tamamıyle kullanıcı tarafından oluşturulur.Verinin tarif edilmesi için DTD adı verilen yapılar kullanılmaktadır.XML ve DTD&#8217;nin birlikte kullanılması ile dökümanlar kendini tarif eden bir yapı halini alırlar.<br />
XML ve HTML arasındaki en belirgin fark XML&#8217;in verinin kendisiyle ilgilenmesi HTML&#8217;in ise verinin sunumuyla ilgilenmesidir.Buna bağlı olarak HTML dökümanları veriye ilişkin şekillendirme bilgilerini içerirken XML dökümanları ise verinin tanım bilgilerini içermektedir. XML&#8217;in tasarım amaçlarından biri de verinin taşınmasıdır.<br />
Bahsedilen bu özellikleri incelendiğinde XML&#8217;in pek çok önemli işlevi yerine getirdiği görülmektedir.<br />
Şimdi çok basit bir XML dökümanını birlikte inceleyelim: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;not&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;kime&gt;Alparslan&lt;/kime&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;kimden&gt;Samet&lt;/kimden&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;heading&gt;Hatırlatma&lt;/heading&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;body&gt;Sınav Tarihini Unutma!&lt;/body&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;/not&gt;</span></span></pre>
<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">HTML dökümanlarına çok benzeyen bu yapıda ilk etapta göze çarpan nokta tag yapılarının bizim tarafımızdan tasarlanmış oluşudur.HTML&#8217;de kullanılan <strong>&lt;p&gt;</strong> ve <strong>&lt;h1&gt;</strong> gibi standart tag yapıları yukarıdaki XML dökümanında kullanılmamıştır.Bahsedilen bu özelliği nedeniyle XML dökümanları genişletilebilir(extensible) bir yapıya sahiptir.Dökümanın bu hali gerçek anlamda herhangi bir şey ifade etmez.Dökümanın iletimi(gönderim veya alım) ya da sunumu için başka şeylerin de yapılması gerekmektedir.<br />
Burada önemli bir nokta olarak XML&#8217;i HTML&#8217;in yerine geçecek bir dil olarak düşünmek yerine HTML&#8217;in tamamlayıcısı olacak olan bir dil şeklinde düşünmek uygundur.<br />
Günümüz bilişim dünyasına bakacak olduğumuzda XML&#8217;in her alanda karşımıza çıktığını görmekteyiz.Bu nedenle XML&#8217;i bir anlamda geleceğin web dili olarak tanımlamak mümkündür.</span></p>
<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">&#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;</span></span></p>
<h2><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML Nasıl Kullanılabilir?</span></span></h2>
<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML hakkında bilinmesi gereken en önemli nokta bu dilin veriyi taşımak amacıyla tasarlanmış oluşudur.<br />
XML ile veriler yapı bakımından modülerlik kazanmaktadır.Yukarıda bahsettiğim gibi XML dökümanları verinin içeriğiyle ilgilenmektedir.Bu sayede verilerin içerik,yapı ve sunum kısımları ayrı modüller halinde farklı XML dökümanlarında tutulmaktadır.<br />
XML dökümanları Veri Adaları(Data Islands) adı verilen teknik sayesinde HTML sayfaları içerisinde de depolanabilmektedir.Bu teknik sayesinde verinizin sadece sunumuyla ilgilenilmektedir</span></span></p>
<p>XML ile verinin alışveriş işlemi gerçekleştirilir.XML,yapısının esnekliği sayesinde birbirine uyumlu olmayan sistemler arasında veri alış verişini rahatlıkla gerçekleştirmektedir.Günümüz bilişim dünyasında bilgisayar sistemleri ve veritabanlarının genellikle birbirine uyumsuz sistemler içerebildiklerini görmekteyiz.Bundan dolayı uygulama geliştiriciler Internet üzerinden bu tip uyumsuz verilerin alış veriş işlemini gerçekleştirmek zorundadırlar.<br />
Verinin XML formatına çevrilmesi ile farklı sistemler ve uygulamalardaki verilerin karmaşıklık derecesi indirgenerek alış veriş işleminin kolaylaştırılması sağlanır.<br />
XML ile finansal bilgilerin Internet üzerinden alış verişi sağlanmaktadır.Günümüzde artık hepimizin sıklıkla duyduğu elektronik iş kavramı açısından incelenecek olduğunda XML&#8217;in önemli fonksiyonları yerine getirdiği görülmektedir.Bahsedilen bu fonksiyonları ile XML geleceğin Elektronik İş dili olarak da yeni bir misyonu üstlenmektedir.<br />
XML ile verinin paylaşımı kolaylaştırılır.<br />
XML,veriyi düz metin (plain text) formatında saklamasından dolayı veriyi paylaştırma konusunda da hem yazılım hem de donanımdan bağımsız hareket edebilme imkanını sunmuştur.<br />
Bu sayede farklı uygulamalarda hareket eden farklı veri tipleriyle çalışmak daha da kolaylaşır.Ayrıca işletim sistemlerinin yükseltgenmesi,sunucu,uygulama vb. dışsal faktörlerin yenilenmesi gibi dışsal faktörlerden de asgari ölçüde etkilenilmiş olunur.<br />
XML ile verinin depolanması sağlanır.<br />
XML, verinin dosyalarda veya veritabanlarında saklanması için de kullanılabilir.<br />
XML,yazılım,donanım ve uygulamalardan bağımsız olduğu için verinin daha elverişli olarak kullanımını sağlamaktadır.Yani başka istemci(client) veya uygulamalar tıpkı veri kaynaklarına erişiyormuş gibi XML dosyalarına rahatlıkla erişebilirler.<br />
XML,esnek yapısı nedeniyle başka dillerin de oluşturulabilmesine olanak tanır.Wireless Markup Language(WML) mobil cihazları için kullanılan WAP ortamlarının dilidir ve XML&#8217;in türevidir.</p>
<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">&#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;</span></span></span></span></p>
<h2><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML Sözdizimi (XML Syntax)</span></span></span></span></h2>
<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML Syntax basit bir kaç kuraldan ibarettir.Bundan dolayı kullanımı ve öğrenimi oldukça kolaydır.</span></span></span></span></p>
<p>Bir XML döküman örneğini inceleyelim:</p>
<p> </p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;?xml version="1.0"?&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;not&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;kime&gt;Alparslan&lt;/kime&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;kimden&gt;Samet&lt;/kimden&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;heading&gt;Hatırlatma&lt;/heading&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;body&gt;Sınav Tarihini Unutma!&lt;/body&gt;</span></span><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;/not&gt;</span></span></pre>
<p class="MsoNormal" style="MARGIN-BOTTOM: 12pt"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML dökümanları kendini tarif eden bir syntax&#8217;a sahiptir.<br />
Dökümanın ilk satırı XML deklerasyonu(XML declaration) olarak isimlendirilir.Bu kısımda XML dökümanının versiyon bilgisi tanımlanır.Yukarıdaki örnekte XML dökümanımızın versiyonu 1.0 olarak belirtilmiştir.<br />
Bir sonraki satırda dökümanın &#8220;root element&#8221; adı verilen kök elementi belirtilmiştir.Örneğimizde root element &#8220;not&#8221; tur. </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;not&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">
</span></span><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">

Daha sonraki satırda 4 adet child element belirtilmiştir.(kimden,kime,heading ve body):
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">
&lt;kime&gt;Alparslan&lt;/kime&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;kimden&gt;Samet&lt;/kimden&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;heading&gt;Hatırlatma&lt;/heading&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;body&gt;Sınav Tarihini Unutma!&lt;/body&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">Son olarak root elementin bitişini gösteren tag bulunmaktadır: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;/not&gt;</span></span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">Tüm XML elementleri bir kapanış tag'ine sahip olmalıdırlar.<br />
HTML'de ise bazı elementler bitiş tag'lerine sahip olmayabilir.<br />
Örneğin aşağıdaki kod parçası HTML için geçerli bir kod olmasına rağmen XML için geçerli değildir: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;p&gt;Bu bir paragraftır</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;p&gt;Bu başka bir paragraftır</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">Yukarıdaki kod parçasını XML formatına uyarlayacak olduğumuzda </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;p&gt;Bu bir paragragftır&lt;/p&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;p&gt;Bu başka bir paragraftır&lt;/p&gt;</span></span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">şeklinde bir düzenleme yapmamız gerekecektir.<br />
XML tag'ler için case-sensitive özellik gösterirler.HTML'de ise case-sensitive özellik yoktur. </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;mektup&gt;Bu syntax yanlıştır&lt;/MEKTUP&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;mektup&gt;Doğru bir syntax örneği&lt;/mektup&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML dökümanları içerisinde tüm elementler hiyerarşiye uymalıdırlar.<br />
HTML dökümanlarında bazı elementler düzgün bir içiçe olma yapısında olmayabilirler.<br />
Aşağıdaki örneği inceleyelim: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;b&gt;&lt;i&gt;Burada kullanılacak olan dökümanın formatı bold<span style="mso-spacerun: yes;">  </span>ve italic olacaktır&lt;/b&gt;&lt;/i&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML syntax kurallarına gore yukarıdaki örneği düzenleyecek olursak: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;b&gt;&lt;i&gt;Burada kullanılacak olan dökümanın formatı bold<span style="mso-spacerun: yes;">  </span>ve italic olacaktır&lt;/i&gt;&lt;/b&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">Görüleceği üzere elementler belirli bir düzen çerçevesinde içiçe geçmiş durumdadırlar.<br />
XML syntax'ında tüm XML dökümanlarının bir root elementi olması gerekmektedir.<br />
XML dökümanları içerisinde ilk tag "root tag" olarak isimlendirilir:<br />
Bahsedilen bu root elementin altındaki tüm elementler "child element" olarak adlandırılır.<br />
Bu child elementler ise daha önceden belirtilmiş olan synax'a uymak zorundadır.<br />
Yani elementlerin içiçe geçme durumları belirli bir hiyerarşiye gore olmaktadır. </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;root&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;">
<span style="mso-spacerun: yes;">    <span style="color: #ff0000;"> </span></span><span style="color: #ff0000;">&lt;child&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;"><span style="mso-spacerun: yes;">   </span>&lt;subchild&gt;….&lt;/subchild&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;"><span style="mso-spacerun: yes;">     </span>&lt;/child&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">…………</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;">
<span style="color: #ff0000;">&lt;/root&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">Attribute değerleri daima tırnak içine alınmalıdır.<br />
XML elementleri attribute'lara sahip olabilirler ve bu attribute'lar ise tıpkı HTML'de olduğu gibi isim/değer(name/value) çiftlerini içerebilirler.<br />
Attibute değerlerinin nasıl kullanıldığını bir örnekle açıklayalım: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;?xml version="1.0"?&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;not date="12/10/99"&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;kime&gt;Alparslan&lt;/kime&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;kimden&gt;Samet&lt;/kimden&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;heading&gt;Hatırlatma&lt;/heading&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;body&gt;Sınav Tarihini Unutma&lt;/body&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;/not&gt;</span></span></pre>
<pre><span style="color: blue; font-family: Verdana;"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">Dikkat edilecek olursa "not" elementinin sahip olduğu "date" attribute değeri tırnak işareti içerisinde belirtilmiştir.<br />
HTML'de white space adı verilen boşluk karakteri gözönüne alınmaz.<br />
Oysa XML dökümanlarında white space karakterler de değerlendirmeye alınır.<br />
Yani bir HTML sayfasında "Merhaba,benim adım Samet" cümleciği sunum sırasında "Merhaba,benim adım Samet" şeklinde görüntülenir.</span></p>
<p> </p>
<p> </p>
<div></div>
<p><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"></p>
<p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">--------------------------------------------------------------------------------</span></span></span></span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong>Element</strong></span></span></span></span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">XML dökümanları daha fazla bilgiyi taşıyabilmek için genişletilebilirler.Aşağıdaki kod satırını incelyelim: </span></span></span></span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;not&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;"><span style="mso-spacerun: yes;">   </span>&lt;kime&gt;Alparslan&lt;/kime&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;"><span style="mso-spacerun: yes;">   </span>&lt;kimden&gt;Samet&lt;/kimden&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;"><span style="mso-spacerun: yes;">   </span>&lt;body&gt;Sınav Tarihini Unutma!&lt;/body&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;/not&gt;</span></span></pre>
<pre><span style="COLOR: blue; FONT-FAMILY: Verdana">
</span></pre>
<p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">Şimdi yazmış olduğumuz bu kod satırının nasıl bir çıktı vereceğini inceleyelim: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">Mesaj</span></span></pre>
<pre><span style="COLOR: blue; FONT-FAMILY: Verdana">
<span style="color: #ff0000;">kime:Alparslan</span></span><span style="COLOR: blue; FONT-FAMILY: Verdana">
<span style="color: #ff0000;">kimden:Samet</span></span><span style="COLOR: blue; FONT-FAMILY: Verdana">
<span style="color: #ff0000;">Sınav Tarihini Unutma!</span></span></pre>
<p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">Şimdi dökümanımız içerisinde daha fazla bilgiyi sunmak istediğimizi varsayalım: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;not&gt;</span></span><span style="COLOR: blue; FONT-FAMILY: Verdana">
<span style="color: #ff0000;">&lt;tarih&gt;01-06-2009&lt;/tarih&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;kime&gt;Alparslan&lt;/kime&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;kimden&gt;Samet&lt;/kimden&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;heading&gt;Hatırlatma&lt;/heading&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;body&gt;Sınav Tarihini Unutma&lt;/body&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;/not&gt;</span></span></pre>
<pre><span style="COLOR: blue; FONT-FAMILY: Verdana"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">Görüleceği gibi XML dökümanının yapısında herhangi bir değişiklik yapmaksızın daha fazla bikgiyi görüntüleme olanağını bulduk.<br />
Bu da bize XML dökümanlarının esnek yapısı hakkında bazı fikirler vermektedir.<br />
XML elementleri birbirleriyle ilişki içindedir.Bu ilişki biçimi elementlerin parent ya da child oluşlarıyla belirlenmektedir.<br />
XML elementlerinin parent/child ilişkilerini bir örnek üzerinde açıklayalım: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">Kitap Başlığı: knbykl ve XML</span></span></pre>
<pre><span style="COLOR: blue; FONT-FAMILY: Verdana">
<span style="color: #ff0000;">Bölüm 1: XML'e giriş</span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo1;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"><span style="mso-spacerun: yes;">   </span>HTML ve XML'in karşılaştırılması</span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo1;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"> </span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo1;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"> </span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo1;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"><span style="mso-spacerun: yes;">   </span>XML ve E-Ekonomi</span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo1;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"> </span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo1;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"> </span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">Bölüm 2: XML Syntax</span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo2;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"><span style="mso-spacerun: yes;">   </span>Elementler</span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo2;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"> </span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo2;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"> </span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo2;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;">Attribute'lar</span></span></pre>
<pre style="margin-left: 36pt; text-indent: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo2;"><span style="color: #ff0000;"><span style="font-family: Symbol;">·<span style="font: 7pt 'Times New Roman';">                </span></span><span style="font-family: Verdana;"> </span></span></pre>
<pre style="MARGIN-LEFT: 36pt; TEXT-INDENT: -18pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo2"><span style="COLOR: blue; FONT-FAMILY: Symbol"><span style="color: #ff0000;">·</span><span style="FONT: 7pt 'Times New Roman'">                </span></span><span style="COLOR: blue; FONT-FAMILY: Verdana"> </span></pre>
<pre><span style="COLOR: blue; FONT-FAMILY: Verdana"> </span></pre>
<p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><br />
Çıktı düzeni verilmiş olan bu kitabı tanımlayacak XML dökümanını tasarlayalım: </span></p>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;kitap&gt;</span></span><span style="COLOR: blue; FONT-FAMILY: Verdana">
<span style="color: #ff0000;">&lt;baslik&gt;knbykl ve XML&lt;/baslik&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;urun id="12-112" media="paper"&gt;&lt;/urun&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;bolum&gt;XML'e giris</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;para&gt; HTML ve XML'in karşılaştırılması&lt;/para&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;para&gt; XML ve E-Ekonomi&lt;/para&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;/bolum&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;bolum&gt;XML'e giris</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;para&gt; Elementler&lt;/para&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;para&gt;Attribute'lar&lt;/para&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;/bolum&gt;</span></span></pre>
<pre><span style="font-family: Verdana;"><span style="color: #ff0000;">&lt;/kitap&gt;</span></span></pre>
<pre><span style="COLOR: blue; FONT-FAMILY: Verdana"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
</span></pre>
<p class="MsoNormal"> </p>
<div class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">Dökümanımızın root elementi "kitap" tır."kitap" elementi "baslik" ve "bolum" elementlerinin parent'i durumundadır.<br />
"baslik" ve "bolum" elementleri ise aynı seviyede bulunan elementlerdir ve bunlar arasındaki ilişkiye sibling denir.<br />
Elementler farklı içerik tiplerine sahip olabilirler.<br />
Bir element diğer bir elementi içerebileceği gibi basit,sabit ya da boş(empty) içerkte de olabilir.<br />
Yukarıdaki örneği incelediğimizde "para" elementinin sadece metin(text) içerğinde olduğunu,<br />
"bolum" elementinin diğer elementleri içerebildiğini ve "urun" elementinin ise boş bir içerikte(empty)oldugunu görmekteyiz.</span></div>
<p> </p>
<div><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><strong>Elementlerin İsimlendirilmesi </strong><br />
Elementlerin isimlendirilmelerinde bazı kurallar geçerlidir:</span></div>
<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"> </p>
<p></span></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l10 level1 lfo3"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">İsimler harf,sayı ya da diğer karakterleri içerebilir. </span></li>
<li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l10 level1 lfo3"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">İsimler bir sayı veya _ (underscore) karakteri ile başlamamalıdır. </span></li>
<li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l10 level1 lfo3"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">İsimler "xml"(ya da XML veya Xml) şeklinde başlamamalıdır </span></li>
<li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l10 level1 lfo3"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial">İsimler boşluk içermemelidir. </span></li>
</ul>
<p> <span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">--------------------------------------------------------------------------------</span></span></span></span></p>
<p> </p>
<p></span></span></pre>
<p><strong>Attribute&#8217;lar</strong></p>
<p><span style="font-size: x-small;"><span style="font-family: Verdana;">Elementler attribute değerlerine sahip olabilirler.Attribute&#8217;lar elementler için ek bilgilerin tanımlanmasına olanak veren yapı birimleridir:<br />
Bir HTML sayfasında tanımlanmış olan<br />
&lt;IMG SRC=&#8221;anlatim1.gif&#8221;&gt;<br />
kod parçasında SRC attribute değeri IMG elementi için ek bilgiler tanımlamamıza olanak sağlamaktadır.XML dökümanları için de durum aynıdır.<br />
Veri bir XML dökümanında element veya attribute&#8217;lar içerisinde saklanır.Aşağıdaki örnekleri inceleyelim: </span></span></p>
<div><span style="font-size: x-small;"><span style="font-family: Verdana;"> </span></span></div>
<p><span style="font-size: x-small;"><span style="font-family: Verdana;"> </p>
<p></span></span></p>
<p> <img class="alignnone size-full wp-image-163" title="xml-dokuman-img-1" src="http://www.knbykl.org/wp-content/uploads/2009/06/xml-dokuman-img-1.jpg" alt="xml-dokuman-img-1" width="416" height="313" /></p>
<p><span style="font-size: x-small; font-family: Verdana;">Programlama veya web tasarımı gibi konulara yakınlığı olan okuyucularımız yukarıdaki üç örnekten sonuncusunun syntax bakımından daha avantajlı olduğunu fark edeceklerdir.</span></p>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">&#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;</span></span></span></span></span></p>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong>XML Dökümanlarının Geçerliliği</strong></span></span></span></span></span></p>
<div><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong>Well-Formed XML Dökümanları </strong>Bir well-formed XML dökümanı doğru XML syntax&#8217;ında olan döküman demektir.</span></span></span></span></span></div>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong>Valid XML Dökümanları </strong><br />
Valid bir XML dökümanı doğru XML syntax&#8217;ında olan(yani aynı zamanda well-formed yapıda olan) ve yapı bilgilerini aldığı DTD&#8217;ye uyumluluk gösteren döküman demektir.</p>
<p>Aşağıdaki örnekleri inceleyelim:</p>
<p></span></span></span></span></span></p>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><img class="alignnone size-full wp-image-164" title="xml-dokuman-img-2" src="http://www.knbykl.org/wp-content/uploads/2009/06/xml-dokuman-img-2.jpg" alt="xml-dokuman-img-2" width="442" height="275" /></span></span></span></span></span></p>
<div><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong>DTD Nedir?<br />
</strong>DTD&#8217;leri, XML dökümanlarının yapı bilgilerini tutan modüller olarak tanımlamak mümkündür.Döküman içinde kullanılacak olan tüm varlıklar daha önceden DTD içerisinde tanımlanmalıdır.</span></span></span></span></span></div>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong>XML Schema </strong>XML Schema&#8217;lar da DTD&#8217;ler gibi XML dökümanlarının yapı bilgilerini tutarlar.Ancak DTD&#8217;lere gore daha kullanışlıdır ve en önemli özelliği XML syntax&#8217;ında olmalarıdır.</p>
<p>Not: DTD ve Schema kavramları daha sonraki bölümlerde detaylı olarak incelenecektir.Bu aşamada sadece tanımların öğrenilmesi yeterlidir.</p>
<p><strong>Hata(Error) ve Hata Kontrolü </strong>XML dökümanları içerisinde yapacağımız bir syntax error veya geçerlilik kontrolü hatası(validation error) durumunda program XML dökümanını işleme işine devam etmez ve durur.HTML&#8217;de ise yapılabilecek bir hata da(örneğin bitiş tag&#8217;i yazmayı unuttuğumuzda) program çalışmaya devam eder.</p>
<p></span></span></span></span></span></p>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">&#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;</span></span></span></span></span></span></span></span></span></p>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong>XML Dökümanlarının Görüntülenmesi Stylesheet Kavramı</strong></span></span></span></span></span></span></span></span></span></p>
<p><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><strong><img class="alignnone size-full wp-image-165" title="xml-dokuman-img-3" src="http://www.knbykl.org/wp-content/uploads/2009/06/xml-dokuman-img-3.gif" alt="xml-dokuman-img-3" width="473" height="240" /></strong></span></span></span></span></span></span></span></span></span></p>
<div><span style="font-size: x-small; font-family: Verdana;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><span style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: Arial;">Bir XML dökümanının sunumu sırasında izlenen yollar yukarıdaki şekilde belirtildiği şekilde gerçekleşir.XML dökümanları,yapı bilgilerinin geçerlilik kontrolleri (DTD&#8217;ye bakılarak) yapıldıktan sonra XML Parser adı verilen yazılıma giderler.XML parser bu yapı bilgilerinden yararlanarak dökümanın parçalanma ağç yapısını yani Parse Tree&#8217;sini oluşturur.Parse Tree&#8217;si oluşturulmuş olan döküman &#8220;Stylesheet&#8221; adı verilen işlem kullanılarak sunuma hazır hale getirilir. Daha sonra stylesheet işleminin uygulandığı sunum kısmından(rendering agent) alınan XML dökümanı görüntüleme cihazına aktarılır.<br />
Temel olarak kullanılan iki stylesheet tekniği bulunmaktadır:CSS ve XSL<br />
CSS(Cascaded StyleSheets) ve XSL(Extensible StyleSheets) tekniklerinin her ikisi de XML dökümanlarının şekillendirilmesi amacıyla kullanılır.Amacı aynı olmasına rağmen XSL&#8217;in CSS&#8217;e gore daha esnek ve daha avantajlı olduğunu görmekteyiz.<br />
Aşağıdaki XSL örneğini inceleyelim: </span></span></span></span></span></span></span></span></span></div>
<p><span style="font-size: x-small; font-family: Verdana;"> </p>
<p></span></p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/h3CHDgoeXDA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/xml-baslangic-ve-kullanim-alani/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/xml-baslangic-ve-kullanim-alani/</feedburner:origLink></item>
		<item>
		<title>CSRF Yöntemi ve Örnekli Çalışma Mantığı</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/YTlcRtXavn8/</link>
		<comments>http://www.knbykl.org/csrf-yontemi-ve-ornekli-calisma-mantigi/#comments</comments>
		<pubDate>Thu, 28 May 2009 09:44:01 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Security]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[CSRF Hakkında]]></category>
		<category><![CDATA[CSRF ile Hesaba Havale Yapma]]></category>
		<category><![CDATA[CSRF ile XSS Mantığı]]></category>
		<category><![CDATA[CSRF Info]]></category>
		<category><![CDATA[CSRF Nasıl Yapılır?]]></category>
		<category><![CDATA[CSRF Öğren]]></category>
		<category><![CDATA[XSRF and XSS]]></category>
		<category><![CDATA[XSS'in Mantığı]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=159</guid>
		<description><![CDATA[  Elimden geldigi kadar sizlere CSRF mantığının nasıl işlediğini, nasıl çalıştığını ve nasıl kullanıldığını anlatacağım. CSRF(Cross Site Request Forgery) yöntemi, bir sisteme direk değil de dolaylı yoldan etki eder, yani bunun icin baska bir baglanti kullanmamiz gerekiyor.


  Dolaylı yol derken, bir program yardımıyla değil, açıklamak gerekirse;
  Hedefimizdeki siteyi knbykl.org olarak belirleyelim, hedefe etki etmek için ise kullanacağımız [...]]]></description>
			<content:encoded><![CDATA[<p>  Elimden geldigi kadar sizlere CSRF mantığının nasıl işlediğini, nasıl çalıştığını ve nasıl kullanıldığını anlatacağım. CSRF(Cross Site Request Forgery) yöntemi, bir sisteme direk değil de dolaylı yoldan etki eder, yani bunun icin baska bir baglanti kullanmamiz gerekiyor.<br />
<img class="alignnone size-medium wp-image-153" title="pro-php-security" src="http://www.knbykl.org/wp-content/uploads/2009/02/the-cross-site-request-forgery.jpg" alt="CSRF Hakkında Bilgi" width="615" height="100" /><br />
<span id="more-159"></span></p>
<p>  Dolaylı yol derken, bir program yardımıyla değil, açıklamak gerekirse;</p>
<p>  Hedefimizdeki siteyi <strong>knbykl.org</strong> olarak belirleyelim, hedefe etki etmek için ise kullanacağımız siteyi de biz belirliyoruz, o da <strong>hackerbox.us</strong> olsun. Aklımızın bir köşesinde ise, şunu unutmamamız gerekir, asıl hedef bir site değil, kişidir. O kişiye etki etmek için <strong>knbykl.org</strong> ve <strong>hackerbox.us</strong>&#8216;ı bir araç olarak kullanıyoruz.</p>
<p>  <strong>CSRF</strong> ile zararsız bir atak düşünürsek, hedefimizdeki kişinin <strong>knbykl.org</strong>&#8216;dan çıkış yapmasını sağlayabiliriz.<br />
Ayrıca; Hedefimizdeki kişinin şifresini değiştirebilirz, güvenliği alt düzeyde olan banka sitelerinden hesaba havale yapabilir, alışveriş sitelerinden sepetimize ürün ekleyebilir, sanal marketlerin sistemlerinden cep telefonlarımıza kontör gönderebiliriz.  Bu yöntemin çok tehlikeli olduğunu da &#8220;<strong>bir ülkede 20 milyona yakın insanın dolandırıldığını</strong>&#8221; örnekleyerek belirtebilirim.</p>
<p>  <strong>CSRF</strong>, <strong>XSS</strong>&#8216;e bir nevi benzemektedir ama <strong>CSRF</strong> daha pratiktir. <strong>XSS </strong>ile yaptığımız bir saldırıda &#8220;<strong>cookie</strong>&#8221; yöntemi kullanılır. Amacımıza ulaşmamız için <strong>XSS</strong>&#8216;de karşımızdaki kişinin &#8220;<strong>cookie</strong>&#8220;sini çalmamız gerekir. Ama bu yöntem <strong>CSRF</strong>&#8216;te geçerli değildir, <strong>CSRF</strong> direk etki eder.</p>
<p>  <strong>Örnek:</strong></p>
<p><strong>  </strong>Ziraat Bankası&#8217;nın internet adresi &#8220;ziraat.com.tr&#8221; &#8216;yi örnek olarak kullanabilirim.  Hedefimizdeki kişi <strong>Av. Murat GENÇ</strong> olsun. Artık Murat Bey&#8217;in Ziraat Bankası&#8217;nda bulunan kredi kartındaki 1.000 TL&#8217;yi hesabımıza nasıl aktaracağımızı anlatıyorum.</p>
<p>  Murat Bey, Ziraat Bankası Sanal Bankacılık servisini kullanarak evindeki internetinden alışveriş yapıyor, siz de bunu öğrendiniz. Evinde girdiği için sayfayı kapatma gereği duymuyor. O sırada siz de Murat Bey&#8217;le Msn Messenger&#8217;dan sohbet ediyorsunuz. Arkadaşlığınız çok iyi fakat gerçek bilgilerinizi vermiyorsunuz. Bu en <strong>önemli</strong> noktadır. İnternette Avutkatların bulunduğu bir internet sitesinden tanışmış olabilirsiniz. Herhangi bir şehirde gördüğünüz bir Avukat ismini kullanarak tanışabilirsiniz.</p>
<p>  Sizin bir internet siteniz var, fakat bunu kimse bilmiyor. Görünüşte herkesin girdiği bir site olarak gözükse de bunu siz hedefinize ulaşmak için kullanıyorsunuz.  Bu sitenin adresi de &#8220;<strong>benimmemleketim.com</strong>&#8221; olsun.</p>
<p>  benimmemleketim.com adlı sitemizin index.php&#8217;sine</p>
<blockquote><p>&lt;img src=http://ziraat.com.tr/hesabim.php?hesapismi=murat&amp;benimhesapnumaram=123456789&amp;yontem=havele&amp;miktar=1000&gt;</p></blockquote>
<p>bu kodu koyuyoruz ve Murat Bey&#8217;in <a href="http://www.benimmemleketim.com">www.benimmemleketim.com</a> adlı sitemize girmesini sağlıyoruz. O benimmemleketim.com&#8217;da gezdiğini zannediyor fakat sitemizin arkaplanına koyduğumuz kod parçasıyla arkaplanda Murat Bey&#8217;in hesabında bulunan 1.000 TL, kendimize ait 123456789 numaralı hesap numarasına havale gönderdiğini Murat Bey bilmiyor.</p>
<blockquote><p>  Anlatımda kullandığım site adlarıyla örnekte kullandığım sitelerin farklı olması kafanızı karıştırmasın.</p></blockquote>
<p> </p>
<p>  Bu makale bu tür tuzaklara düşmemeniz için &#8220;<strong>knbykl</strong>&#8221; tarafından yazılmıştır.</p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/YTlcRtXavn8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/csrf-yontemi-ve-ornekli-calisma-mantigi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/csrf-yontemi-ve-ornekli-calisma-mantigi/</feedburner:origLink></item>
		<item>
		<title>Pro PHP Security Kitabı</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/5ozW4gNzKCM/</link>
		<comments>http://www.knbykl.org/pro-php-security-kitabi/#comments</comments>
		<pubDate>Tue, 26 May 2009 12:56:26 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Chris Snyder]]></category>
		<category><![CDATA[Michael Southwell]]></category>
		<category><![CDATA[PHP Güvenlik Kitabı]]></category>
		<category><![CDATA[PHP Security E-Book]]></category>
		<category><![CDATA[Pro PHP Security Book]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=152</guid>
		<description><![CDATA[Pro PHP Security adlı kitap tamamen PHP Güvenliğini ele alarak hazırlanmış bir kitap, PHP konusunda gerçekten önemli bilgiler veren bu kitabı ilgilenenlere öneriyorum. PHP uygulamalarını web hacking ataklarına karşı korumak için içinde detaylı ve öğretici bilgiler bulunmakta. Siteniz için kodların içine yerleştireceğiniz ufak tefek kodlarla güvenlik tedbirinizi almanıza yarayan bir kitap, indirip okuyun.


Yazar:  Chris Snyder [...]]]></description>
			<content:encoded><![CDATA[<p>Pro PHP Security adlı kitap tamamen PHP Güvenliğini ele alarak hazırlanmış bir kitap, PHP konusunda gerçekten önemli bilgiler veren bu kitabı ilgilenenlere öneriyorum. PHP uygulamalarını web hacking ataklarına karşı korumak için içinde detaylı ve öğretici bilgiler bulunmakta. Siteniz için kodların içine yerleştireceğiniz ufak tefek kodlarla güvenlik tedbirinizi almanıza yarayan bir kitap, indirip okuyun.<br />
<img class="alignnone size-medium wp-image-153" title="pro-php-security" src="http://www.knbykl.org/wp-content/uploads/2009/05/pro-php-security.jpg" alt="pro-php-security" /><br />
<span id="more-152"></span><br />
Yazar:  Chris Snyder and Michael Southwell<br />
Sayfa sayısı : 528<br />
Dil: İngilizce<br />
ISBN-10: 1590595084<br />
ISBN-13: 978-1590595084<br />
Format: pdf</p>
<p><a href="http://rapidshare.com/files/237408485/Pro_PHP_Security-KnbykL.rar.html" target="_blank">Download</a> / <a href="http://rapidshare.com/files/237408485/Pro_PHP_Security-KnbykL.rar.html" target="_blank">Indir</a></p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/5ozW4gNzKCM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/pro-php-security-kitabi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<media:content url="http://feedproxy.google.com/~r/knbykl/~5/0oOTN7aBtKI/Pro_PHP_Security-KnbykL.rar.html" fileSize="8327337" type="application/octet-stream" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Pro PHP Security adlı kitap tamamen PHP Güvenliğini ele alarak hazırlanmış bir kitap, PHP konusunda gerçekten önemli bilgiler veren bu kitabı ilgilenenlere öneriyorum. PHP uygulamalarını web hacking ataklarına karşı korumak için içinde detaylı ve öğretici</itunes:subtitle><itunes:author>KnbykL</itunes:author><itunes:summary>Pro PHP Security adlı kitap tamamen PHP Güvenliğini ele alarak hazırlanmış bir kitap, PHP konusunda gerçekten önemli bilgiler veren bu kitabı ilgilenenlere öneriyorum. PHP uygulamalarını web hacking ataklarına karşı korumak için içinde detaylı ve öğretici bilgiler bulunmakta. Siteniz için kodların içine yerleştireceğiniz ufak tefek kodlarla güvenlik tedbirinizi almanıza yarayan bir kitap, indirip okuyun. Yazar:  Chris Snyder [...]</itunes:summary><itunes:keywords>Advisories, Security, Chris Snyder, Michael Southwell, PHP Güvenlik Kitabı, PHP Security E-Book, Pro PHP Security Book</itunes:keywords><feedburner:origLink>http://www.knbykl.org/pro-php-security-kitabi/</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/knbykl/~5/0oOTN7aBtKI/Pro_PHP_Security-KnbykL.rar.html" length="8327337" type="application/octet-stream" /><feedburner:origEnclosureLink>http://rapidshare.com/files/237408485/Pro_PHP_Security-KnbykL.rar.html</feedburner:origEnclosureLink></item>
		<item>
		<title>Google’dan tasarrufu teşvik uygulaması</title>
		<link>http://feedproxy.google.com/~r/knbykl/~3/zrC_paJFZt0/</link>
		<comments>http://www.knbykl.org/googledan-tasarrufu-tesvik-uygulamasi/#comments</comments>
		<pubDate>Mon, 25 May 2009 17:39:03 +0000</pubDate>
		<dc:creator>KnbykL</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google PowerMeter nedir?]]></category>
		<category><![CDATA[Google Tasarrufu]]></category>
		<category><![CDATA[Google'dan Tasarruf]]></category>
		<category><![CDATA[How is Google PowerMeter?]]></category>
		<category><![CDATA[iGoogle]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=145</guid>
		<description><![CDATA[Google&#8217;ın vakıf faaliyetlerini yürüttüğü Google.org yapısı altında sunduğu bir servis olan Google PowerMeter, evlerde bulunan enerji yönetim özellikli cihazlardan topladığı verileri kullanıcıların iGoogle sayfalarında göstererek gerçek zamanlı olarak ne kadar elektrik harcandığını gösteriyor.

Kullanıcılara o an tüketilen enerji miktarını göstermekle birlikte, enerjinin birim başına maliyeti belirtildiği takdirde, enerjiye ne kadar para ödendiğini de hesaplıyor. Servis aynı [...]]]></description>
			<content:encoded><![CDATA[<p>Google&#8217;ın vakıf faaliyetlerini yürüttüğü <a href="http://www.google.org/" target="_blank">Google.org</a> yapısı altında sunduğu bir servis olan <a href="http://www.google.org/powermeter/" target="_blank">Google PowerMeter</a>, evlerde bulunan enerji yönetim özellikli cihazlardan topladığı verileri kullanıcıların <a href="http://www.google.com/ig" target="_blank">iGoogle</a> sayfalarında göstererek gerçek zamanlı olarak ne kadar elektrik harcandığını gösteriyor.<img class="alignnone size-full wp-image-149" title="google-dan-tasarruf-image1" src="http://www.knbykl.org/wp-content/uploads/2009/05/google-dan-tasarruf-image1.jpg" alt="google-dan-tasarruf-image1" width="615" height="100" /><br />
<span id="more-145"></span></p>
<p class="textBodyBlack">Kullanıcılara o an tüketilen enerji miktarını göstermekle birlikte, enerjinin birim başına maliyeti belirtildiği takdirde, enerjiye ne kadar para ödendiğini de hesaplıyor. Servis aynı zamanda enerji tüketimini azaltmak ve faturalardan tasarruf edilebilmesi için ne yapılabileceği konusunda ipuçları veriyor.</p>
<p class="textBodyBlack">Akıllı enerji dağıtım şebeke sistemleri &#8220;Smart Grid&#8221; ve bu sistemle birlikte kullanılan akıllı sayaçlardan yararlanan PowerMeter, daha yeşil bir dünyanın yaratılması için uğraşıyor</p>
<p class="textBodyBlack">Google&#8217;ın servisi, Glasgow EPB, JEA, Reliance Energy, San Diego Gas &amp; Electric, Toronto Hydro–Electric System Limited, TXU Energy, White River Valley Electric Cooperative ve Wisconsin Public Service gibi firmalarla ortaklaşa olarak geliştirdiğini açıkladı.</p>
<p class="textBodyBlack">Kaynak: ntvmsnbc</p>
<img src="http://feeds.feedburner.com/~r/knbykl/~4/zrC_paJFZt0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/googledan-tasarrufu-tesvik-uygulamasi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.knbykl.org/googledan-tasarrufu-tesvik-uygulamasi/</feedburner:origLink></item>
	<copyright>?zinsiz Kopyalanmas? Yasakt?r</copyright><media:credit role="author">KnbykL</media:credit><media:rating>nonadult</media:rating></channel>
</rss>
