NTERNET PROGRAMCILIĞI – I
NTERNET PROGRAMCILIĞI – I
NTERNET PROGRAMCILIĞI – I
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I<br />
Yazarı<br />
Yrd. Doç. Dr. Ahmet Uyar<br />
MERSİN<br />
2009<br />
I
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
İÇİNDEKİLER<br />
Bölüm 1 ........................................................................................... 1<br />
TEMEL İ<strong>NTERNET</strong> KAVRAMLARI ....................................... 1<br />
1.1 Amaç .................................................................................................................... 1<br />
1.2 İnternet Nedir ....................................................................................................... 1<br />
1.3 İnternet’in Kısa Tarihçesi..................................................................................... 1<br />
1.4 İnternet’in Yapısı.................................................................................................. 2<br />
1.5 Paket anahtarlaması.............................................................................................. 4<br />
1.6 IP Adresleri .......................................................................................................... 4<br />
1.7 Routerlar ve Paket İletimi .................................................................................... 5<br />
1.8 Alan İsimleri ve Alan Sunucuları......................................................................... 6<br />
1.9 Güvenilir İletişim: TCP protokolü ....................................................................... 8<br />
1.10 TCP Portları...................................................................................................... 9<br />
1.11 Telnet ve TCP Uygulaması............................................................................... 9<br />
1.12 Windows Vista’da Telnet Kurulumu.............................................................. 10<br />
1.13 İstemci-Sunucu Sistemleri.............................................................................. 11<br />
1.14 HTTP protokolü.............................................................................................. 11<br />
1.15 Web Tarayıcısı Çalışma Şekli ........................................................................ 14<br />
1.16 Referanslar...................................................................................................... 14<br />
Bölüm 2 ......................................................................................... 16<br />
WEB TASARIMINA GİRİŞ ...................................................... 16<br />
2.1 Amaç .................................................................................................................. 16<br />
2.2 Giriş.................................................................................................................... 16<br />
2.3 Web Sunucuları.................................................................................................. 17<br />
2.4 Statik IP Adresleri ve Alan Adları ..................................................................... 18<br />
2.5 Apache Web Sunucusu....................................................................................... 19<br />
2.6 Apache Web Sunucusu Kurulum Programı İndirme.......................................... 19<br />
2.7 Apache Web Sunucusu Kurulumu ..................................................................... 20<br />
2.8 Apache Web Sunucusu Kurulum Kontrolü........................................................ 24<br />
2.9 Apache Web Sunucusu Durdurma ve Başlatma ................................................ 25<br />
2.10 Apache Web Sunucusuna Sayfa Yükleme ..................................................... 25<br />
2.11 Apache Sunucusu Konfigürasyonu ................................................................ 28<br />
2.12 MS-IIS (İnternet Information Services) Sunucusu Kurulumu ....................... 28<br />
2.13 PSPad Editörü................................................................................................. 29<br />
2.14 Referanslar...................................................................................................... 30<br />
Bölüm 3 ......................................................................................... 31<br />
HTML ........................................................................................... 31<br />
3.1 Amaç .................................................................................................................. 31<br />
3.2 Giriş.................................................................................................................... 31<br />
3.3 Web Tarayıcıları................................................................................................. 32<br />
3.4 HTML ile basit bir web sayfası oluşturma......................................................... 32<br />
3.5 Web sayfası belgelerinin uzantıları.................................................................... 35<br />
3.6 Web tarayıcısı ile Web sayfası kaynak kodu görüntüleme ................................ 35<br />
II
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
3.7 HTML imleri...................................................................................................... 36<br />
3.8 HTML Elemanları.............................................................................................. 36<br />
3.9 HTML Belgesi Baş kısmı................................................................................... 37<br />
3.10 HTML Metin Biçimlendirme Elemanları....................................................... 37<br />
3.11 HTML Elemanları Öznitelikleri ..................................................................... 40<br />
3.12 Web Sayfası Arka Plan Rengi Ayarlama ....................................................... 41<br />
3.13 HTML Dilinde Renk Gösterimi ..................................................................... 42<br />
3.14 Özel Karakterler ............................................................................................. 44<br />
3.15 Bağlantılar ...................................................................................................... 46<br />
3.16 Bağlantılar Üzerinde Metin Gösterme............................................................ 48<br />
3.17 Bir web sayfanın alt bölümlerine bağlantı oluşturma..................................... 48<br />
3.18 Göreli Bağlantılar ........................................................................................... 51<br />
3.19 Referanslar...................................................................................................... 54<br />
Bölüm 4 ......................................................................................... 55<br />
GÖRÜNTÜLER........................................................................... 55<br />
4.1 Amaç .................................................................................................................. 55<br />
4.2 Giriş.................................................................................................................... 55<br />
4.3 Görüntülerin Bilgisayarlarda Kaydedilmeleri.................................................... 56<br />
4.4 BMP, GIF, PNG ve JPEG Dosya Tipleri........................................................... 57<br />
4.2.1 BMP Dosya tipi........................................................................................... 57<br />
4.2.2 GIF Dosya tipi............................................................................................. 57<br />
4.2.3 PNG Dosya tipi........................................................................................... 57<br />
4.2.4 JPEG Dosya Tipi......................................................................................... 59<br />
4.5 HTML ile Görüntü Sunumu............................................................................... 60<br />
4.6 Resim Boyu ve Resim Etrafında Metin Görüntüleme ....................................... 63<br />
4.7 Tampon Boşluk: hspace ve vspace ............................................................. 64<br />
4.8 Görüntülerin Düğme Olarak Kullanılması......................................................... 66<br />
4.9 Görüntüler Üzerinde Tıklanabilir Bölgeler........................................................ 67<br />
4.10 Arka Plan Olarak Görüntü Kullanma ............................................................. 70<br />
4.11 Referanslar...................................................................................................... 72<br />
Bölüm 5 ......................................................................................... 74<br />
LİSTELER VE TABLOLAR ..................................................... 74<br />
5.1 Amaç .................................................................................................................. 74<br />
5.2 Liste Çeşitleri ..................................................................................................... 74<br />
5.3 Sıralı Listeler...................................................................................................... 75<br />
5.4 Sırasız Listeler.................................................................................................... 77<br />
5.5 Tanım Listeleri ................................................................................................... 79<br />
5.6 Tablolar .............................................................................................................. 80<br />
5.5.1 Birleşik Satırlar ve Şutunlar: rowspan ve colspan öznitelikleri.................. 82<br />
5.5.2 Tablo Arka Plan Rengi Ayarlama: bgcolor özniteliği............................ 85<br />
5.5.3 Hücreler Arasındaki Mesafeleri Ayarlama: cellspacing ve<br />
cellpadding ........................................................................................................ 88<br />
5.5.4 Tablo Boyu ve Metin Pozisyonu Ayarlama: width, height, align<br />
ve valign.............................................................................................................. 91<br />
5.5.5 Web Sayfası Tasarımı İçin Tablo Kullanımı .............................................. 94<br />
III
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
5.5.6 Tablolarla Başlık, Menü ve Gövde Tipi Web Sayfası Tasarımı................. 96<br />
5.7 Özetle ................................................................................................................. 99<br />
5.8 Referanslar ......................................................................................................... 99<br />
Bölüm 6 ....................................................................................... 100<br />
BASAMAKLI STİL SAYFALARI (CSS)............................... 100<br />
6.1 Amaç ................................................................................................................ 100<br />
6.2 Giriş.................................................................................................................. 100<br />
6.3 Mantıksal ve Fiziksel Düzenleme .................................................................... 100<br />
6.4 İlk CSS Örneği ................................................................................................. 101<br />
6.5 CSS ile Arka Plan Rengi Ayarlama ................................................................. 104<br />
6.6 CSS ile Metin Fontu Ayarlama ........................................................................ 106<br />
6.7 HTML Elemanları id özniteliği ...................................................................... 110<br />
6.8 HTML elemanları class özniteliği................................................................ 112<br />
6.9 HTML imi......................................................................................... 116<br />
6.10 HTML elemanları style özniteliği ve imi.................................... 118<br />
6.11 Harici Stil Sayfaları Kullanarak Bir Sayfaya Stil Eklemek.......................... 120<br />
6.12 Bir Grup HTML Elemanı İçin Stil kuralı Yazma......................................... 123<br />
6.13 Bir HTML Elemanını Çok Sınıfa Dâhil Etme.............................................. 123<br />
6.14 Web Sayfası Tasarımı İçin CSS Kullanımı .................................................. 124<br />
6.15 CSS Kullanarak Web Sayfasını Farklı Alt Bölgelere Ayırma ..................... 128<br />
6.16 Özet............................................................................................................... 132<br />
6.17 CSS ile ilgili Faydalanılabilecek Kaynaklar................................................. 133<br />
6.18 Referanslar.................................................................................................... 133<br />
Bölüm 7 ....................................................................................... 135<br />
JAVASCRİPT ............................................................................ 135<br />
7.1 Amaç ................................................................................................................ 135<br />
7.2 Giriş.................................................................................................................. 135<br />
7.3 Sunucu ve İstemci Tarafı Programlama........................................................... 136<br />
7.4 JavaScript ve VBScript .................................................................................... 136<br />
7.5 JavaScript ve Java ............................................................................................ 136<br />
7.6 Betik Dilleri...................................................................................................... 137<br />
7.7 İlk JavaScript Örneği: imi............................................................ 137<br />
7.8 Değişkenler....................................................................................................... 139<br />
7.9 Stringler............................................................................................................ 141<br />
7.10 Karar Yapıları: if, else, else if....................................................................... 143<br />
7.11 JavaScript dilinde Açıklamalar..................................................................... 145<br />
7.12 Fonksiyonlar ................................................................................................. 145<br />
7.13 Küçük Pencereler: alert(), confirm(), prompt().......................... 148<br />
7.14 JavaScript ile Tablo Oluşturma .................................................................... 153<br />
7.15 Döngüler ....................................................................................................... 155<br />
7.16 Harici JavaScript Dosyası Kullanma............................................................ 157<br />
7.17 Diziler ........................................................................................................... 158<br />
7.18 Özetle............................................................................................................ 161<br />
7.19 JavaScript ile İlgili Bazı Kaynaklar.............................................................. 162<br />
7.20 Referanslar.................................................................................................... 162<br />
IV
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 8 ....................................................................................... 164<br />
MULTİMEDYA......................................................................... 164<br />
8.1 Amaç ................................................................................................................ 164<br />
8.2 Giriş.................................................................................................................. 164<br />
8.3 Dijital Sesin Temelleri ..................................................................................... 164<br />
8.4 Sesin Kaydedilmesi.......................................................................................... 166<br />
8.5 Sesin Sıkıştırılması........................................................................................... 167<br />
8.6 Ses Dosyalarının Web Sayfalarına Konulması ................................................ 169<br />
8.7 Midi Melodi Dosyaları ve Arka Plan Sesi ....................................................... 170<br />
8.8 Video Kaydetme............................................................................................... 172<br />
8.9 Video Dosyalarının Web Sayfasında Sunumu................................................. 174<br />
8.10 Başka Sitelerdeki Videoların Web Sayfasına Yerleştirilmesi ...................... 175<br />
8.11 Flash Videosu Oluşturma ve Web Sayfasına Yerleştirme............................ 178<br />
8.12 Referanslar.................................................................................................... 182<br />
Bölüm 9 ....................................................................................... 183<br />
WEB SAYFASI TASARIMI VE EDİTÖR KULLANIMI.... 183<br />
9.1 Amaç ................................................................................................................ 183<br />
9.2 Giriş.................................................................................................................. 183<br />
9.3 Web Sayfası Tasarımı Prensipleri.................................................................... 183<br />
9.4 HTML Editörleri .............................................................................................. 185<br />
9.2.1 HTML Metin Editörü................................................................................ 185<br />
9.2.2 WYSIWYG Editörü.................................................................................. 185<br />
9.5 HTML Editörü Programları ............................................................................. 186<br />
9.6 Adobe Dreamweaver CS4................................................................................ 186<br />
9.7 Dreamweaver CS4 ile bir Sayfa Oluşturma ..................................................... 186<br />
9.8 Dreamweaver ile Sayfaya Başlık, Paragraf ve Liste Ekleme........................... 189<br />
9.9 Arka Plan Rengi Ayarlama .............................................................................. 191<br />
9.10 Sayfa Marginini Ayarlama ........................................................................... 192<br />
9.11 Metin Font Özellikleri Ayarlama ................................................................. 194<br />
9.12 Bağlantı Oluşturma....................................................................................... 197<br />
9.13 Sayfaya Görüntü Ekleme.............................................................................. 199<br />
9.14 Tablo İşlemleri.............................................................................................. 206<br />
9.15 Site Oluşturma .............................................................................................. 209<br />
9.16 Şablon Oluşturma ......................................................................................... 211<br />
9.17 Şablona Göre Sayfa Oluşturma .................................................................... 214<br />
9.18 Özetle............................................................................................................ 216<br />
9.19 Referanslar.................................................................................................... 216<br />
V
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
DERSİN AMACI<br />
Bu dersimizde hedefimiz, öğrencilerimizin web sayfası tasarım teknolojilerinin<br />
temellerini öğrenmesi ve web sayfası tasarımı yapabilmeleridir. Bu amaçla öncelikle<br />
İnternet ve Web ile ilgili temel kavramlar birimci bölümde işlenmiştir. Bu bölümde<br />
öğrencilerimizin İnternet’in yapısı ve çalışma prensipleri hakkında temel bilgilerle<br />
donanmaları hedeflenmiştir. İkinci bölümde, web tarayıcıları ve sunucuları kavramları<br />
işlenmiş, bu programların kurulum ve çalışma prensipleri açıklanmıştır.<br />
Üçüncü bölümde HTML diline giriş yapılmış, öğrencilerin bu dilin ana<br />
özelliklerini ve kullanma şeklini öğrenmeleri hedeflenmiştir. Dördüncü bölümde, görüntü<br />
dosyalarının temelleri anlatılmış, sıkıştırma algoritmaları işlenmiş ve bu dosyaların web<br />
sayfaları içinde kullanılmasının öğrenilmesi hedeflenmiştir. Beşinci bölümde web<br />
sayfalarında liste ve tablo kullanımı anlatılmış, öğrencilerimizin düzenli verileri web<br />
sayfalarında liste ve tablo halinde sunmayı öğrenmeleri hedeflenmiştir. Ayrıca web<br />
sayfası tasarımında tablo kullanımı anlatılmış, web sayfası tasarımının temellerinin<br />
öğrenilmesi hedeflenmiştir.<br />
Altıncı bölümde CSS metin düzenleme dili anlatılmıştır. Bu dilin ana özellikleri<br />
işlenmiş, web sayfası içinde HTML ile birlikte nasıl kullanılacağı örneklerle anlatılmıştır.<br />
Bu dilin sağladığı avantajlar ve kullanım alanları açıklanmıştır. Öğrencilerin bu dilin ana<br />
özelliklerini öğrenmeleri ve web sayfası içinde bu dili kullanabilmeleri hedeflenmiştir.<br />
Yedinici bölümde JavaScript dili işlenmiş, bu dilin nasıl çalıştığı ve hangi<br />
durumlarda kullanılması gerektiği anlatılmıştır. Bu dilin temel kuralları işlenmiş, bu dil<br />
ile yapılabilecek programlara örnekler verilmiştir. Öğrencilerin bu dil ile yazılan<br />
kütüphane fonksiyonlarını kullanabilme becerilerinin geliştirilmesi hedeflenmiştir.<br />
Sekizinci bölümde web sayfalarında multimedya kullanımı işlenmiştir. Dijital<br />
sesin ve videonun temelleri anlatılmış, web sayfalarına ses ve video koymanın farklı<br />
metodları gösterilmiştir.<br />
Dokuzuncu ve son bölümde ise web sayfası geliştirmek için editör kullanımı<br />
üzerinde durulmuştur. Web sayfası geliştirme editörlerinden Adobe Dreamweaver CS4<br />
editörünün, web sayfası geliştirmek için nasıl kullanılacağı işlenmiştir.<br />
VI
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 1<br />
TEMEL İ<strong>NTERNET</strong> KAVRAMLARI<br />
1.1 Amaç<br />
Bu bölümde amacımız, İnternet’in ve Web’in ne olduğunun ve nasıl çalıştığının<br />
anlaşılmasıdır. Ayrıca İnternet ile Web arasındaki farkların öğrenilmesidir. Bu amaçla,<br />
öncelikle İnternet’in ne olduğu ve tarihçesi kısaca açıklanmıştır. Sonra İnternet’in yapısı<br />
ve çalışma şekli anlatılmıştır. Bu bağlamda paket iletiminin çalışma şekli ve IP protokolü<br />
işlenmiştir. Router’lar ve DNS sistemi açıklanmıştır. Daha sonra güvenilir paket iletimi<br />
için TCP protokolü ve TCP portları anlatılmıştır. Son kısımda ise Web sisteminin transfer<br />
mekanizmasını oluşturan http protokolü işlenmiş, web sunucuları ile web tarayıcılarının<br />
çalışma şekli anlatılmıştır.<br />
1.2 İnternet Nedir<br />
İnternet[1] dünya üzerindeki çok sayıdaki bilgisayar ağının birbirine<br />
bağlanmasından oluşan küresel bir bilgisayar ağıdır. Bu ağ dünya üzerindeki birçok<br />
akademik, ticari ve devlet kurumlarının yerel ağlarının birbirine bağlanmasından oluşur.<br />
Bu küresel ağ vasıtasıyla değişik kurumlardaki ve coğrafyalardaki bilgisayarlar<br />
birbirleriyle haberleşir ve aralarında bilgi alışverişi yaparlar. Şu anda İnternet birçok<br />
farklı alanda dünya genelinde birbuçuk milyardan fazla insan [2] tarafından yaygın olarak<br />
kullanılmaktadır.<br />
1.3 İnternet’in Kısa Tarihçesi<br />
Modern anlamdaki ilk bilgisayar 1946 senesinde ABD'de yapımı tamamlanan<br />
ENIAC[3] olarak kabul edilir. Onu izleyen yıllarda bilgisayar üretimi ve kullanımı arttı.<br />
O yıllarda bu bilgisayarlar daha çok askeri ve araştırma amaçlı kullanılmaktaydı.<br />
1
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bilgisayarların sayısı artıp coğrafi olarak uzak yerlerdeki araştırmacıların bilgi paylaşımı<br />
ihtiyacı doğunca, aradaki iletişimi daha hızlı ve etkin hale getirmek için uzak yerlerdeki<br />
bilgisayarları birbirine bağlama ihtiyacı doğdu. Bu şekilde farklı coğrafi bölgelerdeki<br />
bilgisayarları birbirine bağlayarak oluşturulan ilk bilgisayar ağı ARPANET'dir [4].<br />
ARPANET İnternet’in atası olarak kabul edilir. ARPANET bilgisayar ağı 1969 yılında<br />
ABD'deki dört araştırma laboratuarındaki bilgisayarların birbirine bağlanmasıyla<br />
oluşturuldu. Bu ağ telefon sisteminde kullanılan devre anahtarlaması tekniği yerine paket<br />
anahtarlaması tekniğini kullanarak şu anki İnternet’in temellerini oluşturdu. ARPANET<br />
ağı ABD savunma bakanlığı tarafından desteklenen bir oluşumdu. Onun için gelişimi<br />
daha çok askeri ve araştırma laboratuarlarıyla sınırlı kaldı. Fakat ARPANET'in öncülük<br />
ettiği yöntemler ve teknolojilerin benzerleri kullanılarak başka ağlar kuruldu. Örneğin<br />
İngiltere’de 1983 yılında bu ülkedeki akademik kuruluşları birbirine bağlamak amacıyla<br />
JANET [5] ağı kuruldu. Fakat kurulan ağlardan en önemlisi 1986 yılında ABD'deki<br />
üniversitelerdeki süper bilgisayarları birbirine bağlamak amacıyla oluşturulan NSFNET<br />
[6] bilgisayar ağı oldu. Bu ağ üniversiteler arasındaki iletişim için etkin bir ortam<br />
oluşturdu ve çok kısa zamanda hızla yayıldı. NSFNET sağlamış olduğu etkin ve hızlı<br />
bilgi paylaşımı dolayısıyla özel sektöre ve dünyanın diğer yerlerindeki kurumlara örnek<br />
oldu. Böylece ilerleyen yıllarda birçok ülkede bu tür ağlar kurulmaya başlandı. Ayrıca<br />
büyük ölçekli özel sektör firmaları da kendi ağlarını oluşturdular. İşte dünya geneline<br />
yayılmış olan bu akademik, devlet ve ticari ağların birbirine bağlanmasıyla da bugünkü<br />
İnternet dediğimiz global ağ oluşmuş oldu. Bütün bu ağların birbirleriyle bilgi alışverişi<br />
yapabilmeleri için gereken ortak dil de TCP/IP protokolü oldu. Bu ortak dilin yerleşmesi<br />
ve bilgisayar fiyatlarının düşüp, kullanımın yaygınlaşmasıyla İnternet hızla büyüdü,<br />
gelişti ve yaygınlaştı.<br />
Bilgisayar ağları ilk zamanlar daha çok elektronik dosya paylaşımı (ftp) ve eposta<br />
için kullanılmaktaydı. 1990'larin başında HTML dilinin ve web tarayıcı ve<br />
sunucularının geliştirilmesiyle web tabanlı bilgi paylaşımı arttı. Hemen akabinde ise web<br />
tabanlı e-ticaret uygulamaları gelişti. Bugün artık İnternet çok geniş bir yelpazede hayatın<br />
her alanında kullanılmaktadır. E-posta ve dosya paylaşımı İnternet’te hala önemli bir yere<br />
sahiptir. Fakat artık eğlenceden e-ticarete, oradan sesli ve görüntülü haberleşmeye kadar<br />
çok farklı alanlarda İnternet vazgeçilmez bir ortam olmuş durumdadır.<br />
1.4 İnternet’in Yapısı<br />
İnternet, dünya genelindeki çok fazla sayıda ve ölçekteki bilgisayar ağlarının<br />
birbirine bağlanmasından oluşur. Öncelikle bir kurumdaki bilgisayarlar birbirine<br />
bağlanarak o kurum içinde yerel bir bilgisayar ağı oluşturur. Daha sonra o kurumun yerel<br />
ağı bu kurumun da bir parçası olduğu daha büyük bir üst ağa bağlanır. Bu üst ağ da diğer<br />
global ağlara bağlanır.<br />
Örneğin Mersin Üniversitesinin bilgisayar ağını düşünelim. Bu üniversitedeki<br />
bilgisayarlar birbirine bağlanarak üniversite içinde bir yerel ağ oluştururlar. Bu<br />
bilgisayarlar kendi aralarında dışarıya ihtiyaç duymadan bilgi alışverişi yapabilirler. Yani<br />
Mersin Üniversitesi yerel ağı kendi içinde bir bütündür. Fakat üniversite bünyesindeki<br />
2
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
bilgisayarların diğer üniversitelerdeki bilgisayarlarla haberleşebilmesi için bu üniversite<br />
yerel ağı Türkiye’deki bütün üniversitelerin bağlı olduğu UlakNET[7] üst ağına bağlanır.<br />
UlakNET üst ağı Türkiye’deki bütün üniversiteler ve araştırma kurumlarını birbirine<br />
bağlayan ulusal bir ağdır. Dolayısıyla Türkiye’deki bütün üniversitelerin kendi yerel<br />
ağları ve bütün bu yerel ağların da bağlı olduğu ULAKNET ulusal ağı vardır.<br />
Daha sonra UlakNET ağı Türk Telekom’un ülke geneline yayılmış olan TTNET<br />
ticari ağına bağlanır. Böylece Türk Telekom’dan İnternet hizmeti alan kullanıcılar ile<br />
üniversitelerin kullanıcıları birbirleriyle haberleşebilir. Diğer yandan Avrupa’daki hemen<br />
hemen bütün ülkelerde UlakNET ağına benzer akademik ağlar vardır. Avrupa<br />
ülkelerindeki bu ulusal akademik ağların birbirine bağlanmasından da GEANT[8] adı<br />
verilen Avrupa çapında bir akademik üst ağ oluşmuştur. UlakNET ağı da bu Avrupa<br />
genelindeki akademik üst ağa bağlanarak ülkemiz üniversitelerini Avrupa üniversiteleri<br />
ile bağlar. Öte yandan Türk Telekom’un TTNET ulusal ticari ağı dünyanın diğer<br />
yerlerindeki ticari global ağlara bağlanarak ülkemiz kullanıcılarının dünya ile iletişimini<br />
kurar. Sekil 1-1'de görülen resim UlakNET web sayfasından<br />
(http://www.ulakbim.gov.tr/hakkimizda/tarihce/ulaknet/dunbugun.uhtml) alınmış olup<br />
UlakNET ağının 2009 Ağustosu itibariyle genel şemasını göstermektedir.<br />
Şekil 1.1 Türkiye UlakNET ulusal internet ağı<br />
Benzer şekilde Türkiye’deki İnternet’e bağlı her hangi özel bir şirket, önce<br />
kurumu içindeki bilgisayarları birbirine bağlayarak yerel bir ağ oluşturur. Daha sonra<br />
kendi yerel ağını Türkiye’deki İnternet sağlayıcısı olan Türk Telekom TTNET ulusal<br />
ağına bağlar. Böylece bütün Türkiye’deki TTNET ağına bağlı kişi ve kurumlarla<br />
haberleşebilir. Daha sonra TTNET ağı da diğer global ağlara bağlanır. Böylece bu şirket<br />
dünyanın her yerindeki İnternet’e bağlı bilgisayarlarla iletişim kurabilir.<br />
3
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
1.5 Paket anahtarlaması<br />
İnternet’e bağlı bilgisayarlar arasındaki haberleşmeler karşılıklı bilgi paketi<br />
alışverişi ile olur. Örneğin İnternet’e bağlı iki bilgisayardan A bilgisayarı B bilgisayarına<br />
bir mesaj göndermek istesin. A bilgisayarı göndereceği bilgiyi bir bilgi paketine koyar ve<br />
üzerine B bilgisayarının adresini yazar. Daha sonra kendisinin bağlı olduğu yerel ağdaki<br />
ağ yöneticisi bilgisayarına (router) paketi gönderir. Yerel router'da paketin üzerindeki<br />
adresi inceleyip gitmesi gereken hedefe doğru yönlendirir. Gönderilmek istenen paket bu<br />
şekilde üzerindeki adres yardımıyla ağlar arasında adım adım hedefe doğru<br />
yönlendirilerek B bilgisayarına ulaştırılır. Eğer gönderilecek bilgi tek pakete sığmayacak<br />
kadar büyükse, bu bilgi birbirinden bağımsız birden çok paket halinde gönderilir.<br />
İnternet’teki bilgi alışverişi telefon sistemindeki haberleşme sisteminden daha çok<br />
posta sistemindeki haberleşmeye benzer. Telefon sisteminde iki kişi arasında konuşma<br />
başlamadan önce, bu iki kişi arasında önce fiziksel bir bağlantı kurulur. Bu tür bir<br />
bağlantı sekline devre anahtarlaması denilir. Diğer yandan İnternet’te ise iki birimin<br />
haberleşmesi için arada önce fiziksel bir ağ kurulmasına gerek yoktur. Posta sisteminde<br />
olduğu gibi, bilgi gönderecek bilgisayar alıcı adresini bildikten sonra adresi yazıp mesajı<br />
paket halinde gönderir. Bu tür bir haberleşme şekline ise paket anahtarlaması denilir.<br />
Yalnız İnternette paket iletimi çok hızlı olduğu için bilgiler sanki arada bir bağlantı<br />
varmış gibi hızlı iletilebilir. Dolayısıyla eş zamanlı chat ve ses transferi (İP-telefonu) gibi<br />
uygulamalar da İnternet üzerinden çalışabilir.<br />
1.6 IP Adresleri<br />
İnternet’e bağlı her bilgisayarın bir adresi vardır. Bu adres vasıtasıyla<br />
bilgisayarlar arasında iletişim mümkün olmaktadır. Bu adres İnternet protokolü (IP) ile<br />
tanımlanmış olan 4 byte uzunluktaki bir sayıdır. Buna bir bilgisayarın IP adresi denilir.<br />
Her bilgisayarın IP adresi kendisine özeldir. Böylece dünyanın farklı yerlerindeki<br />
bilgisayarlar birbirileriyle haberleşebilirler. Mesela www.mersin.edu.tr adresindeki<br />
bilgisayarın IP adresi: 193.255.128.4 sayısıdır. IP adresleri yazılırken 4 bölüm halinde<br />
yazılırlar ve araya nokta konulur. Her IP adresi dünya genelinde tek olması gerektiği için<br />
dünya genelinde IP adreslerini dağıtan tek bir otorite vardır. Bu da İnternet Assigned<br />
Numbers Authority (www.iana.org) kurumudur.<br />
IP adresleri tek tek dağıtılmak yerine bloklar halinde kurumlara verilir. Mesela,<br />
Türk Telekom’a çok sayıda IP adresi verilmiştir. Türk Telekom bu adresleri kendi ağı<br />
vasıtasıyla İnternet’e bağlanan ev kullanıcılarına ve şirket kullanıcılarına verir. Bazen bu<br />
adres dağıtma işlemi dinamik olabilirken, bazen da statik olur. Dinamik olduğu<br />
durumlarda bir kullanıcıya değişik zamanlarda değişik IP adresleri verilebilir. Mesela, bir<br />
ADSL kullanıcısının IP adresi dinamikse, bu kullanıcı İnternet’e bağlandığı farklı<br />
zamanlarda farklı IP adresleri alabilir. Eğer IP adresi statik ise, bu durumda aynı<br />
kullanıcıya her zaman aynı IP adresi verilir. Diğer yandan üniversiteler gibi büyük<br />
kurumlara da blok halinde IP adresleri verilir. Bu kurumlar aldıkları IP adres grubunu<br />
kendi iç ağlarındaki bilgisayarlara istedikleri gibi dağıtırlar.<br />
4
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
1.7 Routerlar ve Paket İletimi<br />
İnternet üzerinde bilgi paketleri bir noktadan diğer noktaya gönderilirken birçok<br />
ara birimden geçer. Ağlar arasındaki bilgi paketinin iletimini router denen özel üretilmiş<br />
bilgisayarlar yapar. Routerlar aldıkları paketleri incelerler, gidecekleri adresi kontrol<br />
edip, o adresin bulunduğu ağa doğru paketi yönlendirirler. Mesela, Mersin<br />
Üniversitesi’ndeki bir bilgisayardan Çukurova Üniversitesi’ndeki başka bir bilgisayara<br />
bir paket gönderilsin. Bu paket kabaca şu şekilde bir yol izler. Önce, Mersin<br />
Üniversitesi’ndeki bilgisayar göndereceği paketi Mersin Üniversitesi’ndeki routera<br />
gönderir. Bu router aldığı paketi inceler ve sonra Çukurova Üniversitesi’ne gönderilmesi<br />
için Ankara’daki bir routera gönderir. Çünkü Mersin Üniversitesi ile Çukurova<br />
Üniversitesi arasında direk bir İnternet hattı yoktur. Ankara’daki router da, bu paketi alır<br />
ve Çukurova’daki routera gönderir. Çukurova’daki router da, paketi alıp, son hedefine<br />
gönderir. Özetle İnternet’teki paket iletimini router denen özel üretilmiş bilgisayarlar<br />
yaparlar. Bu iletimi de paketler üzerindeki IP adreslerine göre yaparlar.<br />
Örnek Uygulama:<br />
Bir paketin İnternet üzerinden iletilirken hangi routerlar üzerinden gittiğini<br />
gösteren bir program vardır. Bu programı MS Windows işletim sistemi olan bir<br />
bilgisayarınızda şu şekilde kullanabilirsiniz. Önce başlat menüsüne tıklayınız, bütün<br />
programlar içindeki “Donatılar” kısmından “Komut İstemi” programını çalıştırınız.<br />
Komut satırında tracert komutunu kullanarak bu işlemi gerçekleştirebilirsiniz. Mesela,<br />
bağlı olduğunuz bilgisayardan www.mersin.edu.tr adresine göndereceğiniz bir paketin<br />
izlediği yolu komut satırına şu komutu yazarak görebilirsiniz:<br />
>tracert www.mersin.edu.tr<br />
Şekil 1-2’deki pencere resminde Mersin’deki bir ev ADSL kullanıcısının<br />
bilgisayarından bu komut çalıştığında üzerinden gidilen routerlar gözükmektedir. Evdeki<br />
bilgisayar ADSL ile İnternet’e bağlı olduğu için, önce paket birçok TTNET routerı<br />
üzerinden gidiyor. Sonra UlakNET routerlarına geçiyor ve son adımlarda da hedefe<br />
ulaşıyor.<br />
5
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 1.2 Windows'ta tracert kullanım örneği<br />
1.8 Alan İsimleri ve Alan Sunucuları<br />
Her ne kadar İnternet’e bağlı bütün bilgisayarların kendilerine ait IP adresleri olsa<br />
da, bu IP adreslerini insanların öğrenip hatırlayabilmeleri zordur. Onun için insanların<br />
uzaktan erişmesi gereken ve çeşitli sunucuların çalıştığı bilgisayarlara öğrenmesi,<br />
hatırlaması ve kullanması daha kolay olan alan isimleri (domain name) verilir. Örneğin<br />
Mersin Üniversitesi web sunucusunun çalışmakta olduğu makinenin alan adı<br />
www.mersin.edu.tr'dir. Bu isim aynı makinenin IP adresi olan 193.255.128.4 sayısına<br />
göre öğrenmesi ve hatırlaması çok daha kolaydır. Artık kullanıcılar bu IP adresini hiç<br />
öğrenmeden alan adıyla bu bilgisayara erişebilirler.<br />
Örnek Uygulama:<br />
Şimdi Mersin Üniversitesi web sunucusuna hem IP adresi, hem de alan adıyla<br />
erişelim. Bunun için önce web tarayıcınızı çalıştırınız. Sonra tarayıcıda gitmek istediğiniz<br />
web adresi kısmına http://www.mersin.edu.tr adresini yazınız. Enter tuşuna bastığınız<br />
zaman, tarayıcınız Mersin Üniversitesi web sunucusuna bağlanır ve bu sunucunun<br />
göndermiş olduğu web sayfasını size gösterir. Şimdi aynı işlemi aynı sunucunun IP<br />
adresini kullanarak yapalım. Bu defa tarayıcınızın adres kısmına bu makinenin IP<br />
adresini şu şekilde http://193.255.128.4 yazınız. Enter tuşuna bastığınızda yine aynı web<br />
sayfasının gelmiş olduğunu göreceksiniz. İşte bu şekilde web sunucusunun çalışmış<br />
olduğu makineye hem alan ismiyle hem de IP adresiyle bağlanılabilir.<br />
Yalnız bu artık bilgisayarlar arasındaki paket alışverişinde de IP adresleri yerine<br />
alan adlarının kullanıldığı anlamına gelmez. Paket alışverişinde yine IP adresleri<br />
kullanılmaya devam edilir. Alan isimleri sadece bağlanmak istediğimiz makinenin IP<br />
adresini öğrenmek için kullanılır. Kullanıcı web tarayıcısına bir alan adını yazdığında,<br />
6
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
web tarayıcısı önce bu alan adındaki makinenin IP adresini öğrenir. Sonra da bu IP<br />
adresiyle o makineye bağlanıp paket alışverişini yapar.<br />
Dünyadaki bütün alan isimlerini yöneten tek bir otorite vardır. Bu da İnternet<br />
Corporation for Assigned Names and Numbers (www.icann.org) isimli kuruluştur. Bu<br />
kuruluş alan isimlerinin kişi ve kurumlara verilmesinden ve global alan sunucularının<br />
çalıştırılmasından sorumludur. Hangi alan isimlerinin hangi IP adreslerine karşılık geldiği<br />
alan sunucularında kayıtlıdır. Dünya genelinde çalışan birçok alan sunucusu vardır. Bu<br />
alan sunucularına DNS (Domain Name Server) denilir. Bunlar da kendi aralarında belirli<br />
bir düzenle çalışır. İnternet’e bağlı her bilgisayar en az bir alan sunucusunun adresini<br />
bilir. IP adresini bilmediği bir alan ismi ile karşılaşan bir bilgisayar, adresini bildiği alan<br />
sunucusuna mesaj göndererek bu alan adının hangi IP adresine karşılık geldiğini sorar.<br />
Alan sunucusu kendisine sorulan alan adının karşılık geldiği IP adresini biliyorsa, yani<br />
kendi veri tabanında bu bilgi varsa cevabı hemen gönderir. Eğer bilmiyorsa bu alan<br />
sunucusu diğer alan sunucularına sorar. Bu şekilde istenilen IP adresi bulunana kadar<br />
alan sunucuları arasındaki mesajlaşma trafiği devam eder. Sonunda cevap bulunur ve ilk<br />
istek mesajını gönderen bilgisayara o alan adının hangi IP adresine karşılık geldiği bilgisi<br />
ulaştırılır. Artık bu noktadan sonra bu bilgisayar bu alan adı ile isimlendirilen bilgisayara<br />
o bilgisayarın IP adresini kullanarak iletişim kurar. Görüldüğü gibi İnternet’e bağlı<br />
bilgisayarlar arasındaki mesajlaşma, yani bilgi paketi alışverişi için IP adresleri kullanılır.<br />
Alan isimleri ise ulaşmak istediğimiz bilgisayarların IP adreslerini öğrenmek için<br />
kullanılır.<br />
Alan sunucularını büyük bir telefon defterine benzetebiliriz. Nasıl ki bir telefon<br />
defterinde hangi ismin hangi telefon numarasına karşılık geldiği yazıyorsa, benzer şekilde<br />
alan sunucularında da hangi alan adının hangi IP adresine karşılık geldiği bilgisi vardır.<br />
Benzer şekilde nasıl ki bir arkadaşımıza o kişinin ismiyle değil de telefon numarasıyla<br />
telefon edebiliyorsak, İnternet üzerinden de bir bilgisayara o bilgisayarın alan adıyla değil<br />
IP numarasıyla erişiriz.<br />
İnternet’te her alan adı genellikle bir IP adresine karşılık gelir. Fakat bazı<br />
durumlarda bir alan adı birden fazla IP adresine de karşılık gelebilir. Mesela<br />
www.google.com alan adı farklı ülkelerde farklı IP adreslerine karşılık gelebilir. Bu<br />
durumda Google firmasının her ülkede farklı farklı sunucuları vardır. Aynı adresi<br />
Brezilyada yazan kişi Brezilya’daki Google sunucusuna ulaşırken, Türkiye’de yazan kişi<br />
Türkiye’deki Google sunucusuna ulaşabilir. Bu da Google için daha esnek bir yapı sağlar.<br />
Telefon defteri örneğimiz üzerinde düşünmeye devam edersek; nasılki bazen tek bir<br />
kişinin birden fazla telefon numarası olabilir, benzer şekilde tek alan adına karşılık gelen<br />
birden fazla IP adresi olabilir.<br />
Diğer yönden bazı durumlarda birden fazla alan adı aynı IP adresine karşılık<br />
gelebilir. Örneğin www.birsiteadi.com adresi ile www.birbaskasiteadi.com adresleri aynı<br />
IP adresine karşılık gelebilir. Bu durumda bu iki sitenin web sunucusu da aynı<br />
bilgisayarda çalışıyor demektir. Aynı evde oturan iki kişinin aynı telefon numarasına<br />
sahip olması gibi.<br />
7
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Fakat alan adlarının çoğu tek bir IP adresine karşılık gelir ve dünyanın neresinden<br />
bir alan adına erişilmek istenirse istensin, aynı IP adresine erişilir. Örneğin<br />
www.mersin.edu.tr alan adının karşılık geldiği bir tane IP adresi vardır ve bu alan adını<br />
dünyanın neresinde hangi web tarayıcısına yazarsak yazalım aynı IP adresine ulaşırız.<br />
Örnek Uygulama:<br />
Normalde alan adından IP adresi öğrenme web tarayıcısı veya E-posta programı<br />
tarafından otomatik olarak gerçekleştirilir. Kullanıcı genellikle alan adından IP adresinin<br />
öğrenilme kısmından haberdar değildir. Alan adını web tarayıcısına yazdığında o sayfaya<br />
erişir. Ama arka planda web tarayıcısı eğer o alan adının IP adresini bilmiyorsa önce<br />
DNS sunucularından o alan adına karşılık gelen IP adresini öğrenir. Şimdi alan adından<br />
IP numarası öğrenme hizmeti veren bir web sayfasından çeşitli alan adları için IP<br />
adreslerini öğrenelim. Web tarayıcınızla http://www.lookupserver.com isimli web<br />
sayfasına bağlanınız. Bu web sitesi alan adlarından IP numarası öğrenme ve IP<br />
adreslerinden de alan adları öğrenme hizmeti vermektedir. Bizim için daha çok gerekli<br />
olan, alan adlarından IP adresi öğrenmektir. Bu web sayfasında bulunan “Forward DNS<br />
Lookup” kısmına IP adresini öğrenmek istediğiniz alan adını yazınız ve Lookup<br />
butonuna basınız. Size bu alan adının hangi IP adresine karşılık geldiğini gösterecektir.<br />
Örneğin önce www.mersin.edu.tr adresini “Forward DNS Lookup” kısmına<br />
yazınız ve “Lookup” butonuna tıklayınız. Cevap olarak yukarda vermiş olduğumuz<br />
193.255.128.4 numaralı IP adresini size verecektir. Merak ettiğiniz başka alan adlarının<br />
IP adreslerini bu alana yazarak öğreniniz.<br />
1.9 Güvenilir İletişim: TCP protokolü<br />
İnternet protokolü (IP) İnternet’e bağlı bilgisayarların adreslerinin nasıl olması<br />
gerektiğini tanımlar ve paket iletiminin kurallarını belirler. Bu protokol güvenilir<br />
olmayan bir paket iletim mekanizması öngörür. Yani A noktasından B noktasına bir IP<br />
paketi gönderildiğinde, bu paketin hedefine varacağı garanti değildir. Bazı durumlarda,<br />
özellikle de routerlarda paket yoğunluğu olduğu durumlarda, bazı paketler düşürülebilir.<br />
Dolayısıyla bazı paketler hedeflerine ulaşamayabilirler. Ama birçok uygulama güvenilir<br />
paket iletimi gerektirir. Örneğin bir dosya bir noktadan diğerine gönderilmek<br />
istenildiğinde, bu dosyanın tamamının eksiksiz olarak karşı tarafa ulaşması istenir. Bu<br />
dosya gönderilirken birçok pakete bölündüyse ve bu paketlerden bazıları yolda<br />
kaybolduysa, karşı tarafta aynı dosya oluşturulamaz. Dolayısıyla bu dosya hiç<br />
kullanılamayabilir.<br />
İşte güvenilir iletişim gerektiği uygulamalarda, yani bilginin bir noktadan diğer<br />
noktaya eksiksiz ve tam olarak ulaştırılması gerektiği uygulamalarda, kullanılmak için IP<br />
üzerinde çalışan TCP protokolü geliştirilmiştir. TCP protokolü, paketleri yine IP paketi<br />
olarak gönderir. Fakat her paketin hedefe ulaşıp ulaşmadığını kontrol eder. Hedefe ulaşan<br />
her paket için onay paketi istenir. Böylelikle her paketin hedefe vardığından emin olunur.<br />
8
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Hedefe varmayan paket olursa, bu paketler tekrar gönderilir. Bu şekilde bazı paketler<br />
transfer anında düşürülse bile, tekrar gönderilerek bütün paketlerin karşı tarafa ulaşımı<br />
sağlanmış olur. TCP protokolü IP protokolü üzerinde çalışan bir katmandır. Onun için<br />
TCP/IP diye anılır. Şu anda güvenilir bilgi transferi gereken uygulamalar için kullanılan<br />
en yaygın protokol TCP protokolüdür. İnternet’in gelişmesi ve yayılmasında da TCP<br />
protokolü çok önemli bir rol oynamıştır. Bu protokolü kullanarak değişik ağlar<br />
birbirlerine bağlanabilmiş ve karşılıklı güvenilir paket alışverişi yapılmıştır.<br />
1.10 TCP Portları<br />
Bazen aynı anda bir bilgisayara birden fazla başka bilgisayar farklı uygulamalar<br />
için bağlanmak isteyebilir. Bu durumda aynı bilgisayara gelen paketlerin farklı<br />
uygulamalara yönlendirilmesi gerekir. Örneğin aynı anda bir bilgisayara hem dosya<br />
transferi olabilir hem de e-posta aktarımı olabilir. İşte aynı bilgisayara gelen değişik<br />
uygulamalara ait paketleri sınıflandırabilmek için port kavramı geliştirilmiştir. Bir<br />
bilgisayara bir paket gönderilirken gönderilecek bilgisayarın IP numarasının yanında<br />
hangi porta gönderileceği de belirtilir. Bir bilgisayardaki portlar 1 ile 65535 arasındaki<br />
bir tamsayıdır. Mesela dosya transferi yapan bir program karşı bilgisayarın IP adresinin<br />
yanına o uygulamaya ait port numarası olan 21 sayısını da ekler. Böylece alıcı bilgisayar<br />
bu paketin dosya transferi için geldiğini tespit eder ve gelen paketleri dosya transferi<br />
yapan uygulamaya yönlendirir. Port numaraları özellikle sunucularda önemlidir. Örneğin<br />
aynı makinede hem web sunucusu, hem dosya transferi sunucusu, hem de e-posta<br />
sunucusu çalışabilir. Bütün bu sunucular farklı portlarda çalışarak, gelen paketlerdeki<br />
port numarasına göre hangi uygulamaya geldiği anlaşılır. Yaygın kullanıma göre web<br />
sunucuları port 80'de, E-posta (SMTP) sunucuları port 25'te, dosya transferi (FTP)<br />
sunucuları port 21'de çalışır. Özetle port numarası 1 ile 65535 arasındaki bir tamsayıdır<br />
ve tek bir bilgisayarda birden fazla uygulamanın İnternet üzerinden paket alabilmesine<br />
imkân tanır.<br />
1.11 Telnet ve TCP Uygulaması<br />
Telnet programı bir bilgisayardan diğer bir bilgisayara TCP bağlantısı<br />
gerçekleştirmek ve o bilgisayara komutlar göndermek için uzun zamandır kullanılan bir<br />
uygulamadır. Yalnız son zamanlarda içerdiği bazı güvenlik risklerinden dolayı kullanımı<br />
azalmış ve yerini daha güvenli olan ssh programlarına bırakmıştır. Fakat Telnet ağ<br />
programlarını test etmek için hala sıklıkla kullanılmaktadır. Biz de Telneti böyle bir<br />
amaçla kullanacağız. Telnet kısaca bir bilgisayardan diğerine TCP bağlantısı kurmamıza<br />
ve karşı tarafa veri göndermemize imkan tanır. Yani bir makinede TCP sunucusu varsa<br />
ve kullanıcıların bu makineye TCP ile bağlanmaları gerekiyorsa, bu durumda biz Telnet<br />
programıyla bu sunucuya bağlanıp veri gönderebiliriz. Örneğin dünyanın değişik<br />
noktalarında o anki zaman bilgisini isteyen kullanıcılara sunan bazı sunucular vardır.<br />
Bunlardan bir tanesi utcnist.colorado.edu adresindeki makinede, bir diğeri ise timea.timefreq.bldrdoc.gov<br />
isimli makinede çalışmaktadır. Bu makinelerdeki zaman<br />
sunucuları 13. portta çalışmaktadır. Bu porta bir TCP bağlantısı gerçekleştirildiğinde, o<br />
9
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
anki zaman bilgisi kullanıcıya verilir ve TCP bağlantısı sonlandırılır. Bu uygulamayı şu<br />
şekilde deneyebiliriz:<br />
Önce bilgisayarınızdaki telnet uygulamasını çalıştırınız. Bunun için bir önceki<br />
örnekte olduğu gibi önce Komut İstem penceresini açınız. Komut satırında:<br />
>telnet<br />
Yazıp enter tuşuna basınız. Bu durumda telnet programı çalışmaya başlar. Sonra<br />
bu sunuculardan birine şu şekilde bir TCP bağlantısı gerçekleştiriniz:<br />
>open utcnist.colorado.edu 13<br />
Bu komutu yazıp enter tuşuna basınca, adresi verilen makineye bir TCP bağlantısı<br />
gerçekleştirilir. Adresin yanında yazılan tamsayı bağlanılacak port numarasını gösterir.<br />
Bu komut çalıştığında siz karşı tarafa her hangi bir veri göndermeden, karşı taraf size o<br />
anki zaman bilgisini aşağıdaki formatta gönderir ve bağlantıyı keser:<br />
54218 07-04-28 12:20:04 50 0 0 947.8 UTC(NIST) *<br />
Connection to host lost.<br />
Press any key to continue...<br />
İlk satır gönderilen zaman bilgisini, ikinci satır ise bağlantının kesildiğini gösterir.<br />
İşte bu uygulamada İnternet üzerinden TCP ile zaman hizmeti veren bir sunucuya<br />
bağlandınız ve size gönderilen zaman bilgisini aldınız.<br />
1.12 Windows Vista’da Telnet Kurulumu<br />
Telnet uygulaması Windows XP işletim sisteminde kurulu olarak gelirken,<br />
Windows Vista işletim sisteminde kurulu olarak gelmemektedir. Bunun için Windows<br />
Vista kullanıcılarının önce Telnet servisini kurmaları gerekmektedir. Telnet kurulumu<br />
gayet basit birkaç adımdan oluşmaktadır. Bunun için:<br />
1. “Başlat” menüsünden “Denetim Masası”, oradan da “Programlar ve<br />
Özellikleri” penceresini açınız.<br />
2. “Programlar ve Özellikleri” penceresindeki sol tarafta bulunan “Windows<br />
Özelliklerini aç veya kapat” metnine tıklayınız.<br />
3. Yeni gelecek penceredeki listede “Telnet İstemcisi” seçeneğini seçiniz ve<br />
Tamam butonuna basınız.<br />
10
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu işlemler sonunda Telnet uygulaması Windows Vista bilgisayarlarına<br />
yüklenmiş olur. Artık Komut İstem programı içinden telnet uygulamasını<br />
çalıştırabilirsiniz.<br />
1.13 İstemci-Sunucu Sistemleri<br />
İnternet’teki birçok uygulama istemci-sunucu (kullanıcı-sunucu) mimarisine göre<br />
çalışır. Bir üst bölümdeki zaman hizmeti de bu şekilde çalışan bir uygulama idi. Sunucu<br />
programı yeri ve adresi sabit olan bir bilgisayarda sürekli olarak çalışır. Bu sunucu<br />
programı çoğunlukla kendine TCP protokolü ile gelen isteklere cevap verir. İstemci<br />
programı ise dünyanın her yerinde olabilir. Yerinin ve adresinin sunucu tarafından<br />
bilinmesine ve sürekli olarak çalışmasına gerek yoktur. İstediği zaman sunucuya TCP/IP<br />
ile bağlanır ve sunulan hizmeti almak için ne gerekiyorsa onu yapar. Çoğunlukla alınmak<br />
istenen hizmetle ilgili sunucuya bir mesaj gönderir. Daha sonra sunucu da kullanıcının bu<br />
isteğine olumlu ya da olumsuz bir cevap verir. Dolayısıyla bu sistemde yeri ve adresi<br />
belirli olan ve sürekli çalışan bir sunucu varken, yeri ve adresi belirli olmayan, istediği<br />
zaman sunucuya bağlanıp hizmet alan istemciler vardır. Sunucu tek veya az sayıda iken,<br />
kullanıcı yani istemci çoktur. Diğer yandan aynı anda bir sunucu birden fazla kullanıcıya<br />
da hizmet verebilir. Hatta bazı durumlarda aynı anda binlerce kullanıcıya bile hizmet<br />
verilebilir.<br />
Örneğin bir bakkal sunucu gibi çalışır. Yeri ve adresi sabittir ve en azından<br />
gündüzleri sürekli olarak çalışır. Müşteriler de istemci gibidir. Müşterinin yerinin ve<br />
adresinin belirli olması gerekli değildir. Ayrıca müşteri için bir zaman kısıtlaması da söz<br />
konusu değildir. Müşteri istediği zaman gelip alışverişini yapar. İnternetteki sunucular da<br />
bakkal gibi sürekli çalışır. Fakat onlar gece gündüz durmadan çalışır. Ayrıca yerleri ve<br />
adresleri sabittir. İstemciler de yine dünyanın herhangi bir yerinde olabilir ve günün<br />
herhangi bir anında sunucuya bağlanıp bir hizmet talebinde bulunabilir.<br />
İnternet üzerinde kullanıcı-sunucu mimarisinde çalışan belki de en yaygın<br />
uygulama http yani web sunucusu hizmetidir. Web sunucusu adresi belirli bir makinede<br />
sürekli olarak çalışır ve web tarayıcıları kendisine bağlanarak o adresteki web sayfasını<br />
isterler. Web sunucusu da, istekte bulunan kullanıcılara web sayfasındaki bilgileri<br />
gönderir. Tarayıcı da almış olduğu bu bilgileri kullanıcıya gösterir.<br />
1.14 HTTP protokolü<br />
HTTP (Hypertext Transfer Protocol) kullanıcı-sunucu tarzında tasarlanmış bir<br />
transfer protokolüdür. Bu protokol kullanıcı ile sunucu arasındaki mesaj alışverişinin<br />
hangi formatta olması gerektiğini ve beklenmedik durumlarda nasıl hata yönetimi<br />
yapılacağını belirler. Güvenilir bilgi iletimi gerektirdiği için mesajlar TCP bağlantısı ile<br />
iletilir. Dolayısıyla kullanıcı ile sunucu arasında bir bilgi alışverişi olmadan önce, iki<br />
nokta arasında TCP bağlantısı kurulmalıdır.<br />
11
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu protokol istem/cevap (request/response) seklinde tasarlanmış bir protokoldür.<br />
TCP bağlantısı kurulduktan sonra, önce kullanıcı sunucuya bir istem mesajı gönderir. Bu<br />
istem mesajına karşılık olarak ise sunucu kullanıcıya bir cevap mesajı gönderir. İki nokta<br />
arasındaki haberleşme bu şekilde gerçekleştirilir. Haberleşmeyi başlatan her zaman için<br />
kullanıcıdır. Kullanıcı istem mesajı göndermeden sunucu kullanıcıya her hangi bir mesaj<br />
göndermez. Önce sunucunun kullanıcıya istem mesajı göndermesi ve kullanıcının buna<br />
cevap mesajı göndermesi mümkün değildir. Her zaman ilk olarak kullanıcının sunucuya<br />
bir istem mesajı göndermesi gerekir.<br />
Kullanıcının sunucuya göndereceği mesaj çoğunlukla birkaç satırlık kısa<br />
mesajlardır ve hangi web sayfasının istendiğini belirtir. Mesela aşağıdaki iki satırlık http<br />
istem mesajı bağlanılan sitedeki ana dizinde bulunan web sayfasını ister:<br />
GET / HTTP/1.1<br />
Host: www.mersin.edu.tr<br />
GET kelimesinden sonra gelen taksim işareti ana belgenin istendiğini gösterir.<br />
Ondan sonra gelen HTTP/1.1 ise, bu istemde http protokolünün 1.1 versiyonunun<br />
kullanıldığını gösterir. HTTP protokolünde ilk satırın ilk kelimesi istenilen işi tanımlar.<br />
GET fonksiyonuna ek olarak HEAD, POST gibi birkaç fonksiyon daha tanımlanmıştır.<br />
İkinci satırda ise istenen web sayfasının hangi siteye ait olduğu belirtilir.<br />
HTTP Uygulaması 1:<br />
Şimdi HTTP protokolünün nasıl çalıştığını daha yakından görelim. Bunun için bir<br />
önceki uygulamada olduğu gibi komut satırını açınız. Sonra telnet uygulamasını<br />
başlatınız. Daha sonra bir web sunucusuna bağlanınız. Web sunucuları genellikle 80'inci<br />
portta çalışır. Onun için telnet uygulamasında TCP bağlantısını aşağıdaki gibi kurunuz:<br />
>open www.mersin.edu.tr 80<br />
Bu şekilde web sunucusuna TCP bağlantımızı gerçekleştirdikten sonra, web<br />
sunucusuna bir http istem mesajı gönderiniz. Bu noktada aşağıdaki metni yazınız ve iki<br />
defa enter tuşuna basınız:<br />
HEAD / HTTP/1.1<br />
Host: www.mersin.edu.tr<br />
Bu istem mesajına web sunucusu aşağıdaki gibi bir mesajla cevap verir:<br />
HTTP/1.1 200 OK<br />
Date: Sat, 28 Apr 2007 17:09:33 GMT<br />
Server: Apache/2.0.55 (FreeBSD) PHP/4.4.1 mod_jk2/2.0.4<br />
12
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
X-Powered-By: PHP/4.4.1<br />
Set-Cookie: PHPSESSID=0a88e6f575172ce3105ebe737e026607; path=/<br />
Expires: Thu, 19 Nov 1981 08:52:00 GMT<br />
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,<br />
pre-check=0<br />
Pragma: no-cache<br />
Content-Type: text/html<br />
HEAD fonksiyonu sunucudan bir web sayfasıyla ilgili özet bilgiler istemek için<br />
kullanılır. Web sayfasının içeriğini istemez. Buna cevap olarak ta yukarda gözüktüğü gibi<br />
istenilen web sayfasıyla ilgili özet bir bilgi verilir. Gelen cevabın ilk satırı bu işlemin<br />
sonucunu gösterir. İlk satırdaki 200 kodu ve OK kelimesi, istemin başarıyla<br />
cevaplandığını gösterir.<br />
HTTP Uygulaması 2:<br />
Şimdi de, GET fonksiyonu ile bu web sayfasına ait bilgileri sunucudan isteyelim.<br />
Bu durumda web sayfasının içeriği de gönderilecektir. Yukarıdaki gibi yine aynı adrese<br />
TCP bağlantısı kurunuz. Bağlantı kurulduktan sonra, GET mesajını aşağıdaki gibi<br />
gönderiniz:<br />
GET / HTTP/1.1<br />
Host: www.mersin.edu.tr<br />
Bu durumda alınan cevap çok daha uzun bir mesaj olur. Çünkü<br />
www.mersin.edu.tr web sayfasındaki bütün bilgiler cevap olarak gönderilir. Yalnız cevap<br />
mesajının başlangıç kısmı yine yukarıdaki mesaja benzer. İlk satır yine “HTTP/1.1<br />
200 OK” olur. Bu cevabın başarıyla gönderildiğini gösterir. Ondan sonra mesajın<br />
gövde kısmına kadar yine yukarıdakine benzer satırlar vardır. Daha sonra da web<br />
sayfasının içeriği başlar. Bütün mesajı buraya koymak çok yer alacağından, buna<br />
verilecek cevap mesajı buraya konulmamıştır.<br />
HTTP Uygulaması 3:<br />
Şimdi de başarısız bir istem denemesi yapalım. Bu durumda istenilen web sayfası<br />
sunucuda bulunmasın. Yine aynı sunucuya aynı porttan telnet ile bağlanınız. Daha sonra<br />
aşağıdaki GET mesajını gönderiniz:<br />
GET /d1/s2.html HTTP/1.1<br />
Host: www.mersin.edu.tr<br />
Daha önceki iki istem mesajında web sunucusunun ana sayfalarını istiyorduk. Bu<br />
durumda ise web sunucusunun ana dizini altındaki d1 dizinindeki s2.html dosyasını<br />
13
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
istiyoruz. Böyle bir sayfa şu anda web sunucusunda olmadığı için web sunucumuz<br />
aşağıdaki gibi bir mesajı cevap olarak gönderir:<br />
HTTP/1.1 404 Not Found<br />
Date: Sat, 28 Apr 2007 18:09:21 GMT<br />
Server: Apache/2.0.55 (FreeBSD) PHP/4.4.1 mod_jk2/2.0.4<br />
Content-Length: 208<br />
Content-Type: text/html; charset=iso-8859-1<br />
<br />
<br />
404 Not Found<br />
<br />
Not Found<br />
The requested URL /d1/s2.html was not found on this server.<br />
<br />
Diğer cevap mesajlarından farklı olarak bu cevapta ilk satırda durum kodu 404<br />
olarak verilmiştir. Sonucu ifade etmek için de OK yerine “Not Found” denilmiştir. Bu<br />
istenilen web sayfasının bulunamadığını ve sonucun başarısız olduğunu gösterir. İlk 5<br />
satır http cevap mesajının başlık kısmını gösterirken, ondan sonraki satırlar ise<br />
kullanıcıya gösterilecek web sayfasının içeriğini gösterir. Kullanıcıya gösterilen web<br />
sayfasında böyle bir dosyanın bulunamadığı yazılıdır.<br />
1.15 Web Tarayıcısı Çalışma Şekli<br />
Yukarıdaki yapmış olduğunuz 3 örnekte http protokolünün örnek çalışma<br />
şekillerini gördük. Bir web tarayıcısıyla, örneğin İnternet Explorer veya Firefox<br />
tarayıcısıyla bir web sunucusuna bağlanıldığında, az önceki bölümde telnet ile yapılan<br />
işlemleri web tarayıcısı tarafından arka planda kullanıcı fark etmeden yapılır. Kullanıcı<br />
sadece web sunucusunun göndermiş olduğu sayfaları uygun bir formatta tarayıcı içinde<br />
görür. Mesela son örnekteki aynı işlemi web tarayıcınızla yapabilirsiniz. Bunun için web<br />
tarayıcınızın adres kısmına http://www.mersin.edu.tr/d1/s2.html yazınız. Enter tuşuna<br />
bastığınızda karşınıza gelecek sayfa yukarıdaki ile aynı sayfa olacaktır. Yalnız bu<br />
durumda web tarayıcısı http mesajının başlık kısmını gizler. Gövde kısmında ise HTML<br />
ile belirten bilgiyi gösterir. HTML dilini ilerleyen bölümlerde ayrıntılı olarak ele<br />
alacağız.<br />
1.16 Referanslar<br />
[1] http://tr.wikipedia.org/wiki/İnternet. İnternet. 18 Ağustos 2009.<br />
14
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
[2] http://www.İnternetworldstats.com/stats.htm. World İnternet Users and Population<br />
Stats. 18 Ağustos 2009.<br />
[3] http://tr.wikipedia.org/wiki/ENIAC. ENIAC (Electronic Numerical Integrator and<br />
Computer). 18 Ağustos 2009.<br />
[4] http://en.wikipedia.org/wiki/ARPANET. The Advanced Research Projects Agency<br />
Network (ARPANET). 18 Ağustos 2009.<br />
[5] http://en.wikipedia.org/wiki/JANET JANET (Joint Academic NETwork).<br />
[6] http://www.nsf.gov/news/news_summ.jsp?cntn_id=103050. A Brief History of NSF<br />
and the İnternet.<br />
[7] http://www.ulakbim.gov.tr/hakkimizda/tarihce/ulaknet, UlakNET (Ulusal Akademik<br />
Ağ).<br />
[8] http://en.wikipedia.org/wiki/GEANT GEANT.<br />
15
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 2<br />
2.1 Amaç<br />
WEB TASARIMINA GİRİŞ<br />
Bu bölümde amacımız, web sistemini oluşturan temel bileşenlerden olan web<br />
sunucusu ve web tarayıcısı programlarının çalışma prensiplerinin anlaşılması, bunların<br />
kurulumunun ve kullanılmasının kavranmasıdır. Bu amaçla önce web tarayıcıları<br />
anlatılmış, yaygın olarak kullanılan tarayıcılar açıklanmıştır. Sonra web sunucuları<br />
açıklanmış ve yaygın kullanılan web sunucuları açıklanmıştır. Bu sunuculardan en<br />
yaygını olan Apache web sunucusunun kurulumu, çalıştırılması ve sayfa yüklenmesi<br />
anlatılmıştır.<br />
2.2 Giriş<br />
Bir önceki bölümde açıklandığı gibi web tabanlı sistemler istemci-sunucu<br />
mimarisine göre çalışan sistemlerdir. Bu sistemlerde web sunucusu yeri ve adresi belirli<br />
olan ve sürekli çalışan bir programdır. Kullanıcılar ise İnternete bağlı her hangi bir<br />
bilgisayar olabilir. Kullanıcı web sunucularına web tarayıcıları ile bağlanır. Şu anda en<br />
çok kullanılan web tarayıcılarından iki tanesi Microsoft İnternet Explorer ve Mozilla<br />
Firefox tarayıcılarıdır[1].<br />
Web sunucusu programlar sürekli olarak çalışırlar ve kendilerine İnternet<br />
üzerinden TCP ile bağlanılıp HTTP protokolüyle bilgi istenmesini beklerler. Bir kullanıcı<br />
bu şekilde bir istemde bulunduğunda ise, bu isteğe olumlu ya da olumsuz cevap<br />
gönderirler. Bir önceki bölümde bu mesaj alışverişinden birkaç örnek sunulmuştur.<br />
Kullanıcılar ise web tarayıcısı kullanarak istedikleri sayfaya sahip olan web sunucusuna<br />
bağlanırlar. Web tarayıcısı arka planda gerçekleşen haberleşmelerin karmaşıklığını<br />
kullanıcıdan gizler. Sadece kullanıcıyı ilgilendiren bilgi kısımlarını gösterir.<br />
16
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Örneğin Mersin Üniversitesi web sayfasına bağlanmak isteyen bir kişi, web<br />
tarayıcısının adres kısmına http://www.mersin.edu.tr adresini yazar ve enter tuşuna basar.<br />
Bu durumda www.mersin.edu.tr isimli makinede 80’inci portta çalışmakta olan web<br />
sunucusuna web tarayıcısı önce bir TCP bağlantısı kurar. Sonra ana sayfadaki bilgileri<br />
kendisine göndermesi için web sunucusuna bir http istem mesajı gönderir. Bu istem<br />
mesajını alan web sunucusu, istenen sayfanın içeriğini kullanıcıya gönderir. Bu cevabı<br />
alan web tarayıcısı, kullanıcıya bu sayfanın içeriğini uygun bir formatta gösterir. Bu<br />
adresteki web sunucusu sürekli olarak o makinede çalışır ve kendisinden bilgi istenmesini<br />
bekler. Dünyanın değişik yerlerine yayılmış olan İnternet kullanıcıları da istedikleri<br />
zaman bu sunucuya bağlanırlar ve kendilerine verilen bilgileri tarayıcılarında görürler.<br />
Bu sunucuya aynı anda birçok kullanıcı bağlanabilir. Bu sunucu aynı anda çok sayıdaki<br />
kullanıcıya cevap verebilecek şekilde tasarlanmıştır.<br />
2.3 Web Sunucuları<br />
Web sunucusu olarak çalışmak için yazılmış programlar vardır. Bunlardan en çok<br />
kullanılanı Apache HTTP sunucusudur. Bütün dünyada aktif olarak çalışan web<br />
sunucularının yarıdan fazlası (%51) Temmuz 2009 itibariyle Apache HTTP sunucusudur<br />
[2]. İkinci en popüler web sunucusu ise Microsoft İnternet Information Services (MS-IIS)<br />
sunucusudur. O da dünyadaki web sunucularının yaklaşık dörtte birini oluşturmaktadır<br />
(%24). Geriye kalan kısımda ise çok farklı web sunucuları çalışmaktadır. Dolayısıyla bu<br />
bölümde bu iki web sunucusunun kurulmasını göstereceğiz.<br />
Web sunucuları iki çeşit web sayfası hizmeti verirler: statik ve dinamik. Statik<br />
web sayfaları önceden web sayfası sahibi tarafından hazırlanır ve web sunucusunun<br />
çalıştığı bilgisayara htm veya html uzantılı metin dosyaları halinde kaydedilir. Web<br />
sunucusuna bu tür bir sayfa için bir istem geldiğinde, istenilen sayfayı hard disk’inden<br />
okur ve kullanıcıya gönderir. Web sunucusunun yaptığı hizmet gayet basittir. İstenen<br />
belgeyi okuyup kullanıcıya göndermektir.<br />
İkinci tür hizmet olan dinamik sayfa sunumunda ise, web sayfalarının tamamı<br />
veya web sayfalarının bir kısmı çalışma anında oluşturulur. Cevap olarak oluşturulan<br />
sayfa kullanıcının isteğine göre hazırlanır. Bu durumda web sunucusu çoğunlukla<br />
dinamik sayfa oluşturma işlemini kendisi yapmaz. Böyle bir istek geldiğinde, dinamik<br />
web sayfası oluşturacak başka bir program vardır. Web sunucusu bu programdan sayfayı<br />
oluşturmasını ve kendisine sonucu vermesini ister. Bu yardımcı program da dinamik<br />
sayfayı kendisine verilen parametrelere göre oluşturup web sunucusuna verir. Web<br />
sunucusu da dinamik olarak oluşturulan bu sayfayı kullanıcıya gönderir. Web sunucusu<br />
tarafında dinamik web sayfası üretmek için kullanılan en yaygın programlar PHP, ASP<br />
ve JSP gibi programlardır.<br />
Dinamik web sayfasının oluşturulduğu en yaygın örnek arama motorlarıdır.<br />
Google web sayfasına bağlanıp bir veya birkaç kelimenin aranmasını istediğimizde,<br />
aranmasını istediğimiz kelimeye göre bize farklı bir web sayfası oluşturulur. Web<br />
17
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
sunucusu tarafında arama yapan ve sonuçları bir web sayfası formatına dönüştüren bir<br />
program vardır. Bu program isteğe göre farklı web sayfaları oluşturur.<br />
2.4 Statik IP Adresleri ve Alan Adları<br />
Web sunucuları bir alan adı ve bir sabit IP adresi olan bilgisayarlarda çalışır.<br />
Böylece İnternete bağlı kullanıcılar bu makinenin alan adını kullanarak web sunucusu<br />
tarafından sunulan web sayfalarına erişirler. Web sunucuları kesintisiz hizmet<br />
verebilmeleri için bu makinede sürekli olarak çalışmaları gerekir.<br />
İnternete bağlı her bilgisayarın bir IP adresi olsa da, hepsinin bir alan adı yoktur.<br />
İnternete bağlı bilgisayarların çoğu sunucu olarak çalışmak yerine, kullanıcı olarak<br />
çalışırlar. Bu makinelere uzaktan erişim gerekmez. Bu makineler başka makinelerde<br />
sunulan hizmetlere erişirler. ADSL ve telefon ile İnternete bağlanan bütün bilgisayarlar<br />
bu şekilde kullanıcı makineleridir. Alan adları yoktur. Sadece IP adresleri vardır.<br />
Dolayısıyla bu makinelerde web sunucusu çalıştırmak isabetli olmaz. Eğer bir web<br />
sunucusu çalıştırmak istersek, öncelikle web sunucusunun çalışacağı bilgisayarın statik<br />
bir IP adresinin olması gerekir. İkinci olarak ta bu bilgisayarın bir alan adının olması<br />
gerekir.<br />
Statik IP adresi hangi İnternet servis sağlayıcı yardımıyla İnternete bağlanılıyorsa<br />
ondan alınır. Örneğin Türkiye’deki üniversiteler UlakNET üzerinden İnternete<br />
bağlandıkları için statik IP adreslerini bu kuruluştan alırlar. Diğer yandan Türk<br />
Telekom’un TTNET ağı vasıtasıyla İnternete bağlanan özel kişi ve kuruluşlar da, statik<br />
IP adreslerini bu şirketten alırlar.<br />
Türkiye’deki alan adlarının tahsisini ise ODTÜ Alan Adı Yönetimi isimli bir<br />
kuruluş yapmaktadır. Bu kuruluş tr uzantısıyla biten alan adlarının yönetiminden ve<br />
tahsisinden sorumludur. Türkiye’deki alan adlarına iki örnek olarak www.mersin.edu.tr<br />
ve www.google.com.tr alan adlarını verebiliriz. Türkiye’deki bütün alan adları tr<br />
uzantısıyla biter. ODTÜ Alan Adı Yönetimi isimli kuruluş İnternet üzerinden alan adı<br />
tahsisi için başvuru kabul etmektedir. Bu kurulusun web adresi www.nic.tr ‘dir. Bu web<br />
sayfasından yeni alan adı almak için başvuru yapılabilir.<br />
Kendi web sunucusunu çalıştırmak isteyen bir kurum önce statik IP adresini ve<br />
alan adını alır. Sonra da bu alan adına ve IP adresine sahip bilgisayara web sunucusunu<br />
kurar. Daha sonra geliştirmiş oldukları web sayfalarını web sunucusuna yükler. Bu<br />
aşamadan sonra artık web sunucusunu sürekli çalışır halde tutarak İnternet üzerinden<br />
bütün insanların kendi web sayfalarına erişmelerini sağlarlar.<br />
Kendi web sunucusunu çalıştırmanın bir alternatifi ise, web sunucusu çalıştırma<br />
hizmeti veren şirketlerden bu hizmeti satın almaktır. Bu durumda alan adını yine kurum<br />
sahibi alır. Fakat bu alan adına gelecek web trafiğini web sunucusu hizmeti almış<br />
oldukları şirketin bilgisayarlarına yönlendirir. Şirketin web sayfasına koyacakları<br />
18
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
belgeleri de hizmeti almış oldukları şirketteki bilgisayarlara yüklerler. Böylece belirli bir<br />
ücret karşılığında web sunucusu başka bir şirketin makinelerinde çalıştırılabilir. Bu<br />
şekilde web sitesi sunma hizmeti veren çok sayıda firma vardır. Bu işleme İngilizce’de<br />
“web hosting” denilmektedir. Bu ifade artık Türkçe’de de yaygın olarak kullanılmaktadır.<br />
Bu tip bir firma ararken anahtar kelime olarak “web hosting” ifadesi kullanılabilir.<br />
2.5 Apache Web Sunucusu<br />
Apache web sunucusu açık kaynak kodlu ve bedava bir yazılımdır. Apache<br />
Foundation tarafından geliştirilmektedir. World Wide Web’in ilk gelişim yıllarından beri<br />
kullanılmakta olan bir sunucudur. Yaygın olan bütün bilgisayar platformlarında çalışır.<br />
Microsoft Windows, Linux, Unix, FreeBSD, Mac OS X ve daha birçok işletim<br />
sisteminde çalışır. Sunucuya bu ismin verilmesi bu projeyi geliştiren kişilerin<br />
Amerika’daki Apache Kızılderili kabilesine olan saygılarından ve onların isimlerini<br />
onure etme düşüncesinden kaynaklanmaktadır [3].<br />
Apache web sunucusu hem statik hem de dinamik web sayfaları için<br />
kullanılabilir. Dinamik web sayfası üretilmesi gerektiği durumlarda, dinamik web sayfası<br />
üretimini yapması gereken PHP, ASP ve JSP gibi programlar için konfigür edilmesi<br />
gerekir.<br />
2.6 Apache Web Sunucusu Kurulum Programı İndirme<br />
Her ne kadar web sunucusu kurmak için öncelikle statik IP adresi ve alan adı<br />
almak gerekir ise de, kendi bilgisayarımıza deneme kurulumu yapabiliriz. Bu deneme<br />
kurulumu Apache sunucusunun nasıl kurulduğunu ve çalıştığını öğrenmemiz için güzel<br />
bir imkân olur. Onun için şu anda bu işlemi kendi bilgisayarınızda yapabilirsiniz.<br />
Öncelikle Apache web sunucusu yazılımını indirmeniz gerekir. Bunun için şu<br />
web sayfasına gidiniz:<br />
http://httpd.apache.org/download.cgi<br />
Bu web sayfasında Apache yazılımının en son sürümünü bulunuz. Ağustos 2009<br />
itibariyle en son sürüm 2.2.13’tür. Bu sayfada daha önceki birkaç sürüm daha<br />
bulunmaktadır. Bunlardan en büyük olanı en son sürümdür. En son sürümü altında ise<br />
çeşitli platformlar için seçenekler bulunmaktadır. Bunlardan Windows platformu için<br />
olan binary dosyayı seçiniz ve bu dosyayı indiriniz. Ağustos 2009 itibariyle bu dosya<br />
5.2MB büyüklüğündedir ve ismi ise şöyledir:<br />
apache_2.2.13-win32-x86-no_ssl.msi<br />
19
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu dosya Windows platformunda çalıştırılabilir bir kurulum dosyasıdır. Yani bu<br />
dosyayı indirdikten sonra dosya adı üzerine çift tıklarsanız, kurulum programı başlar. Bu<br />
web sitesi Apache web sunucusunu geliştiren kuruluşun kendi sayfasıdır. Fakat bu<br />
dosyayı başka sitelerden de indirmeniz ya da bir arkadaşınızdan almanız mümkündür.<br />
Önemli olan kurulumu yapabilmek için bu dosyaya sahip olmanızdır.<br />
2.7 Apache Web Sunucusu Kurulumu<br />
Apache web sunucusu kurulum dosyasını indirildikten sonra, indirilen dosya<br />
üzerine çift tıklanarak kurulum işlemi başlatılır. Kurulum programı başlayınca Şekil<br />
2-1’de gözüken pencere gelir. Bu pencere Apache web sunucusunun bilgisayarınıza<br />
kurulacağını belirtiyor. Kurulumu başlatmak için “Next” butonuna tıklayınız.<br />
Şekil 2-1 Apache sunucusu kurulumu ilk adımı<br />
Kurulumun ikinci adımında Şekil 2-2’de gözüken pencere gelir. Bu pencere<br />
Apache web sunucusu lisans anlaşmasını kabul etmenizi istemektedir. Kurulumun<br />
yapılabilmesi için “I accept the terms in the license agreement” seçeneği işaretlenmelidir.<br />
Bu seçenek işaretlendikten sonra “Next” butonuna tıklayınız.<br />
20
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 2-2 Apache sunucusu kurulumu ikinici adımı<br />
Bir sonraki adımda Şekil 2-3’teki pencere gelir. Bu pencerede Apache hakkında<br />
bilgi verilmektedir. Burada Next butonuna tıklayınız.<br />
Şekil 2-3 Apache web sunucusu kurulumu üçüncü basamağı<br />
Bir sonraki adımda Şekil 2-4’te görülen pencere gelir. Bu pencerede ilk satır ve<br />
ikinci satıra şekilde görüldüğü gibi “localhost” yazınız. Çünkü kurmuş olduğunuz<br />
web sunucusu kendi bilgisayarınızda çalışacaktır. Web sunucusuna dışardan kimse<br />
erişmeyecektir. Üçüncü satıra bir email adresi vermeniz gerekmektedir. Buraya bir email<br />
adresi yazınız. Aşağıdaki kurulumda email adresi olarak test@deneme.com adresi<br />
verilmistir. Bu penceredeki bir diğer önemli nokta ise pencerenin alt kısmında bulunan<br />
iki seçenektir. Bunlardan varsayılan olarak gelen for All Users diye başlayan<br />
seçeneği seçmeniz işinizi kolaylaştıracaktır. Daha sonra “Next” tuşuna basınız.<br />
21
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 2-4 Apache web sunucusu kurulumu dördüncü basamağı<br />
Bir sonraki aşamada Şekil 2-5’te gözüken pencere gelir. Burada varsayılan olarak<br />
gelen Typical seçeneği işaretli olarak kalabilir. “Next” butonuna tıklayınız.<br />
Şekil 2-5 Apache web sunucusu kurulumu beşinci basamağı<br />
Bir sonraki adımda Şekil 2-6’da gözüken pencere gelir. Burda kurulumun<br />
yapılacağı dizini size bildirmektedir. Bu kurulumda Apache web sunucusu şu dizine<br />
C:\Program Files\Apache Software Foundation\Apache2.2\<br />
kurulacaktır. Burada bir değişiklik yapmanıza gerek yoktur. “Next” butonuna tıklayınız.<br />
22
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 2-6 Apache web sunucusu kurulumu altıncı basamağı<br />
Daha sonraki adımda Şekil 2-7’de gözüken pencere gelir. Bu pencere artık bütün<br />
seçimlerin yapıldığını ve kurulumun başlayacağını göstermektedir. Bu pencerede<br />
kurulumu başlatmak için Install butonuna tıklayınız.<br />
Şekil 2-7 Apache web sunucusu kurulumu yedinci basamağı<br />
Bir önceki basamakta Install butonuna tıklanınca kurulum işlemi başlar. Kurulum<br />
yapılırken küçük pencerede kurulum hakkında bilgi verilerek kurulum devam eder.<br />
Kurulum bitince Şekil 2-8’de gözüken pencere gelir. Bu pencerede Finish butonuna<br />
basılarak Apache web sunucusu kurulumu tamamlanır.<br />
23
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 2-8 Apache web sunucusu kurulumu son basamağı<br />
2.8 Apache Web Sunucusu Kurulum Kontrolü<br />
Apache kurulumunun en son aşamasında kurulumun başarıyla tamamlanıp<br />
tamamlanmadığını kontrol etmek kalmıştır. Bunun için bilgisayarınızda bulunan bir web<br />
tarayıcısını çalıştırırız. Bu Internet Explorer ya da Firefox olabilir. Daha sonra<br />
tarayıcınızın adres çubuğuna:<br />
http://localhost/<br />
adresini yazıp enter tuşuna basınız. Bunun sonunda tarayıcının Şekil 2-9’da olduğu gibi<br />
bir sayfa göstermelidir. Eğer bu sayfayı görürseniz web sunucusu bilgisayarınıza<br />
başarıyla kurulmuş ve çalışıyor demektir.<br />
Şekil 2-9 Web sunucusu kontrolü<br />
24
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Artık bilgisayarınızda Apache web sunucusu çalışmaktadır. Bundan sonra<br />
bilgisayarınızı her açtığınızda web sunucusu çalışmaya başlayacaktır. Web sunucusunun<br />
çalışıp çalışmadığını her zaman bu şekilde kontrol edebilirsiniz.<br />
Eğer web sunucusunu kurmanızda bir hata oluşmuşsa ve web sunucusu<br />
bilgisayarınızda çalışmıyorsa bu durumda Şekil 2-9’daki sayfa yerine Şekil 2-10’daki<br />
gibi bir sayfa ile karşılaşırsınız. Bu sayfada “It Works” yazısı yoktur. Bunun yerine bir<br />
hata mesajı vardır. Bu hata mesajı kullandığınız tarayıcıya göre değişebilir.<br />
Eğer web sunucusu bilgisayarınıza başarılı bir şekilde kurulmamışsa web<br />
sunucusunu Program Ekle/Kaldır kısmından kaldırıp, sonra tekrar kurabilirsiniz. Tekrar<br />
kurulum yaparken yukarda anlatılan adımları tek tek doğru bir şekilde takip ediniz.<br />
Şekil 2-10 Web sunucusu çalışmıyor<br />
2.9 Apache Web Sunucusu Durdurma ve Başlatma<br />
Apache web sunucusu bilgisayarınıza kurulduktan sonra bilgisayarınızı her<br />
çalıştırdığınızda kendisi otomatik olarak çalışacaktır. Bu programı durdurmak veya tekrar<br />
başlatmak için ekranın sağ alt kısmında çalışan “Apache Monitor” programını<br />
kullanabilirsiniz. Bu programın ikonu üzerinde farenin sağ tuşuna tıkladığınızda size üç<br />
seçenek gösterecektir. Bunlar start, stop ve restart seçenekleridir. Bu seçenekleri<br />
kullanarak web sunucusunu durdurabilir, duran sunucuyu başlatabilir veya çalışan<br />
sunucuyu tekrar başlatabilirsiniz.<br />
2.10 Apache Web Sunucusuna Sayfa Yükleme<br />
Bilgisayarınıza kurmuş olduğunuz web sunucusuna yeni sayfalar yükleyebilir ve<br />
yüklediğiniz bu sayfaları tarayıcınızla görüntüleyebilirsiniz.<br />
25
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Web sunucusu kendisinden bir sayfa istenildiğinde o sayfayı ana belge dizininde<br />
arar. Eğer istenilen belge varsa kullanıcıya döndürür. Yoksa bir hata mesajı verir.<br />
Örneğin siz tarayıcınızın adres çubuğuna<br />
http://localhost/test123.html<br />
yazarsanız, web sunucunuz tarayıcıya bir hata mesajı gönderir. Bu şekilde bir belge<br />
bulamadım der.<br />
Web sunucusunun ana belge dizini, web sunucusunun kurulmuş olduğu dizinin<br />
altındaki “htdocs” isimli dizindir. Bizim kurulumumuzda bu dizinin tam yolu şu<br />
şekildedir:<br />
C:\Program Files\Apache Software<br />
Foundation\Apache2.2\htdocs<br />
Web sunucusu kendisinden istenilen belgeleri bu dizin altında arar. Şimdi bu dizine bir<br />
html belgesi koyalım ve bu belgeyi tarayıcı ile görüntüleyelim. Bunun için bir metin<br />
editöründe Tablo 2-1’de gözüken basit bir html belgesini yazınız. Notepad programını bu<br />
iş için kullanabilirsiniz.<br />
<br />
<br />
ilk HTML sayfam <br />
<br />
<br />
Herkese Merhaba<br />
Web sayfası oluşturmak gercekten çok<br />
güzel.<br />
<br />
<br />
Tablo 2-1 Örnek bir html sayfası<br />
Bu belgeyi deneme.html adıyla htdocs dizini altına kaydediniz. Notepad<br />
programı ile kaydederken uzantının txt yerine html olmasına özen gösteriniz. Bunun<br />
için Farklı kaydet seçeneğini seçip Farklı Kaydetme Tipi olarak bütün dosya tiplerini<br />
seçiniz.<br />
Artık bu html dosyasını tarayıcı ile web sunucusundan alıp görüntüleyebilirsiniz.<br />
Bunun için web tarayıcısının adres çubuğuna<br />
http://localhost/deneme.html<br />
26
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
adresini yazınız. Bu durumda tarayıcı web sunucusundan deneme.html<br />
dosyasını alıp görüntüleyecektir. Sonuç Şekil 2-11’de gözüktüğü gibi olacaktır. Eğer<br />
sonuç Şekil 2-11’deki gibi bir sayfa değilse, ya dosyanızın uzantısı html değildir ya da<br />
dosyanızı yanlış dizine koymuşsunuz demektir. Diğer bir ihtimal de web sunucunuzun<br />
çalışmıyor olmasıdır.<br />
Şekil 2-11 Web suncusuna sayfa yükleme<br />
Web sunucusunun ana belge dizini altında yeni dizinler de oluşturabilirsiniz. Bu<br />
durumda tarayıcıya yazdığınız adres kısmında alt dizinlerin adını da belirtmelisiniz.<br />
Örneğin htdocs dizini altında test isimli bir dizin olusturabilirsiniz. Yukarda<br />
oluşturmuş olduğunuz deneme.html dosyasını bu dizin içine kopyalayınız. Bu durumda<br />
test dizini altındaki deneme.html dosyasını tarayıcı ile şu şekilde isteyebilirsiniz:<br />
http://localhost/test/deneme.html<br />
Artık web sunucusu deneme.html dosyasını ararkan ana dizini olan htdocs<br />
dizini altındaki test dizini içine bakacaktır. Bu şekilde htdocs dizini içinde çok farklı<br />
dizinler oluşturulabilir. Benzer şekilde bu alt dizinler içinde de alt dizinler oluşturulabilir.<br />
Örnek olarak test dizini içinde ders1 adında bir alt dizin oluşturabilirsiniz. Bu<br />
ders1 dizini içine mersin.html isimli bir dosya kaydederseniz, bu dosyaya erişmek<br />
için tarayıcıya artık şu adresi yazmamız gerekir:<br />
http://localhost/test/ders1/mersin.html<br />
Eğer bütün bu işlemleri gerçek bir alan adı olan bir bilgisayarda yapsaydınız, artık<br />
bu dosyalara İnternet üzerinden tarayıcı ile alan adı kullanarak erişebilirdiniz. O durumda<br />
sadece adresin localhost kısmına gerçek alan adını yazmanız yeterli olurdu. Örneğin alan<br />
adınız www.sirketdeneme.com.tr ise, mersin.html dosyasına şu şekilde erişebilirdiniz:<br />
27
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
http://www.sirketdeneme.com.tr/test/ders1/mersin.html<br />
Web sunucusuna sadece http://localhost yazıldığında web sunucusu ana<br />
dizini altındaki index.html isimli belgeyi döndürür. Web sunucusunun htdocs<br />
dizinine bakıldığında orada index.html isimli bir dosya olduğu görülür. Genel bir kural<br />
olarak web sunucuları dosya ismi verilmeden sadece dizin ismi verilerek belge istenirse,<br />
o dizin altındaki index.html isimli dosyayı döndürür.<br />
2.11 Apache Sunucusu Konfigürasyonu<br />
Apache web sunucusunun bazı özelliklerini değiştirmek isterseniz, bunu Apache<br />
sunucunun kurulduğu ana dizin içindeki conf alt dizini içinde bulunan httpd.conf<br />
dosyasını değiştirerek yapabilirsiniz. Bu dosya bu kurulumda şu adreste bulunmaktadır:<br />
C:\Program Files\Apache Software<br />
Foundation\Apache2.2\conf\httpd.conf<br />
Örneğin Apache sunucusu normalde port 80’de çalışır. Eğer bunu herhangi bir<br />
sebeple değiştirmek isterseniz, bu dosya içindeki port değerini değiştirerek yapabilirsiniz.<br />
Ya da web sunucusu belgeleri htdocs dizininden değil de başka bir dizinden servis yapsın<br />
isterseniz, bunu bu dosya içindeki DocumentRoot değişkeninin değerini değiştirerek<br />
yapabilirsiniz.<br />
Bu konfigürasyon dosyasındaki herhangi bir değeri değiştirmeden önce bu<br />
dosyanın bir kopyasını mutlaka alınız. Daha sonra bir problem olursa, bu kopyayı tekrar<br />
yerine koyunuz. Böylelikle yaşanabilecek problemleri azaltmış olursunuz. Bir diğer<br />
önemli nokta ise, mecbur kalmadıkça ve emin olmadıkça bu dosyayı değiştirmemenizdir.<br />
Bu konfigürasyon dosyasında bir değişiklik yapılınca Apache web sunucusu<br />
durdurulup tekrar başlatılmalıdır. Aksi takdirde yapılan değişiklikler etki göstermez.<br />
2.12 MS-IIS (İnternet Information Services) Sunucusu Kurulumu<br />
Apache web sunucusundan sonra en popüler ikinci web sunucusu MS-IIS web<br />
sunucusudur. Bu sunucu Windows XP için kurulum dosyasıyla beraber gelir. Ayrıca<br />
download edilemez. Onun için bu web sunucusunu kurmak için işletim sisteminin<br />
kurulum dosyasına ihtiyaç vardır.<br />
MS-IIS web sunucusunu kurmak için Windows XP bilgisayarında<br />
1. Kontrol panel kısmını açınız<br />
2. Burada program ekle/kaldır kısmına gidiniz.<br />
28
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
3. Bu pencerede Windows komponent ekle/kaldır kısmını seçiniz<br />
4. Gelen pencerede Internet Information Services kısmını işaretleyiniz ve diğer<br />
seçeneklere hiç dokunmadan next tuşuna basınız.<br />
5. Bu noktada Windows XP Pro kurulum dosyasını ister. Onu CD okuyucuya<br />
koyunuz.<br />
6. Bu şekilde MS-IIS web sunucusunu kurabilirsiniz.<br />
Bu web sunucusunu kurduktan sonra artık Apache’de olduğu gibi web<br />
tarayıcınızla http://localhost adresine giderek web sunucusunun çalışıp çalışmadığını<br />
görebilirsiniz. Fakat Apache web sunucusu bilgisayarınızda çalışıyorsa, aynı anda MS-<br />
IIS sunucusunu çalıştıramazsınız. Çünkü 80. portu Apache kullanmaktadır. Aynı portu<br />
MS-IIS sunucusu da kullanmak isteyecektir. Ama kullanamadığı için başlayamayacaktır.<br />
Bunun için önce Apache sunucusunu durdurmanız gerekmektedir.<br />
2.13 PSPad Editörü<br />
HTML sayfaları her hangi bir metin editörü kullanılarak yazılabilir. Fakat HTML<br />
kodu yazmak için çok farklı editörler geliştirilmiştir. Bu editörler kod yazma işlemini<br />
kolaylaştırmak için çeşitli hizmetler sunarlar. Örneğin HTML komutlarını farklı renkte<br />
gösterirler. Böylece yazılan HTML sayfalarının anlaşılması daha kolay olur.<br />
HTML editörlerinden ücretle satılanlar vardır. Diğer yönden bedava olan bazı<br />
editörler de mevcuttur. Bu ders kapsamında göreceğimiz sayfaları bedava bir HTML<br />
editörü kullanarak ta yazabilirsiniz. Bedava HTML editörlerinden birisi PSPad isimli<br />
editördür. Bu editör gayet basit olup ücretsizdir. Bu editörün web sitesi www.pspad.com<br />
adresidir. Bu sitenin donwload bölümünün adresi ise şöyledir:<br />
http://www.pspad.com/en/download.php<br />
Bu sayfadaki Installer seçeneği seçilerek bu editörü indirebilirsiniz. Daha sonra da<br />
indirilen dosyayı çalıştırılarak kurabilirsiniz.<br />
Bu editör kurulduktan sonra kullanılması gayet kolaydır. Notepad gibi her hangi<br />
bir metin editörü ile kullanım tecrübesi olan bir kullanıcı kolaylıkla bu editörü<br />
kullanabilir.<br />
29
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
2.14 Referanslar<br />
[1] http://en.wikipedia.org/wiki/Usage_share_of_web_browsers, Usage share of web<br />
browsers, 18 Ağustos 2009.<br />
[2] http://survey.netcraft.com/Reports/200704/byserver, Netcraft Web Server Survey, 18<br />
Ağustos 2009.<br />
[3] http://www.apache.org/foundation/faq.html#name, Frequently Asked Questions, 19<br />
Ağustos 2009.<br />
30
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 3<br />
3.1 Amaç<br />
HTML<br />
Bu bölümde amacımız HTML dilinin temel özelliklerini anlatma, bu dilin çalışma<br />
şeklini açıklama ve öğrencilerin bu dili kullanabilmesi için gerekli temel bilgileri onlara<br />
sunmaktır. Bu amaçla önce HTML dilini kullanarak basit bir sayfa oluşturma anlatılmış,<br />
HTML dilindeki birçok im gösterilmiş, HTML belgelerinin ana yapısı açıklanmıştır.<br />
Sonra HTML dilinin metin biçimlendirme özellikleri işlenmiş ve HTML elemanlarının<br />
öznitelikleri anlatılmıştır. HTML dilinde renk gösterimi ve web sayfalarının arka plan<br />
rengini ayarlama açıklanmıştır. Ayrıca web sayfalarında bağlantı oluşturma ve bağlantı<br />
kullanımı anlatılmıştır.<br />
3.2 Giriş<br />
HTML (Hypertext Markup Language) web sayfası oluşturmak için kullanılan en<br />
yaygın sayfa düzenleme dilidir. HTML C, C++, C#, Java gibi bir programlama dili<br />
değildir. HTML bir sayfa düzenleme dilidir. Bir sayfadaki bilgilerin (metin, resim,<br />
tablolar, video, vb.) kullanıcıya nasıl gözükmesi gerektiğini düzenler. Sayfadaki hangi<br />
metin başlık olarak gözükecek, hangisi paragraf olacak, hangi bilgiler tablo halinde<br />
gösterilecek, nereye resim konulacak, vb. Diğer yandan programlama dilleri ise<br />
bilgisayarlarda çalışmak üzere programlar yazmak için kullanılır. Yazılan programları<br />
çalıştırarak bir problemi bilgisayar ortamında çözeriz. HTML ile bir program yazmak<br />
mümkün değildir. HTML dilinin temel amacı bir veriyi kullanıcıya daha okunaklı ve<br />
düzenli bir şekilde sunmaktır.<br />
1990’lı yıllara gelindiğinde İnternet hızla yayılma evresindeydi. Özellikle<br />
araştırmacılar tarafından sıklıkla kullanılmaktaydı. Uzak noktalardaki araştırmacılar bilgi<br />
paylaşımı için E-posta ve FTP dosya transfer sistemlerini kullanmaktaydılar. Bilgi<br />
31
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
paylaşım ihtiyacının ve imkânlarının artması bu sistemlerden daha etkin ve kullanımı<br />
kolay bilgi paylaşma tekniklerinin geliştirilmesini teşvik etti. Bu dönemde Avrupa<br />
Nükleer Araştırma Kurumunda (CERN) çalışan Tim Berners-Lee araştırmacılar<br />
arasındaki bilgi paylaşımını daha etkin hale getirmek için HTML veri düzenleme ve<br />
HTTP veri transfer protokollerini geliştirdi [1]. HTML dili verinin düzenlemesinde<br />
kullanılırken, HTTP ise bu verinin bir noktadan diğerine aktarılmasında<br />
kullanılmaktaydı. HTML dilinin ilk versiyonu 1993 yılında basıldı. Daha sonra HTML<br />
dilinin gelişimini World Wide Web Consortium (W3C) devraldı. Şu anda en yaygın<br />
kullanılmakta olan versiyonu HTML 4 olup 1999 yılında basılmıştır [2]. Halen HTML<br />
dilinin 5. versiyonu üzerindeki çalışmalar W3C koordinasyonu altında devam etmektedir<br />
[3].<br />
3.3 Web Tarayıcıları<br />
Bir dosya HTML dilinin imleriyle yazıldıktan sonra bu HTML dosyasının uygun<br />
bir program tarafından kullanıcıya gösterilmesi gerekir. Bu program HTML komutlarını<br />
yani imlerini okuyup yorumlar ve ona göre kullanıcıya düzenlenmiş bir sayfa sunar. Bu<br />
tür programlara web tarayıcıları diyoruz. Su anda en yaygın kullanılan web tarayıcıları<br />
Microsoft İnternet Explorer ve Mozilla Firefox programlarıdır [4].<br />
Web tarayıcılarının temelde iki ana görevleri vardır. Bunlardan ilki web sayfası<br />
transferidir. Bir kullanıcı bir web sayfasını görmek istediği zaman, istenilen dosyayı web<br />
tarayıcısı önce bu dosyanın bulunduğu web sunucusundan kendi bilgisayarına transfer<br />
eder. Bu işlemi HTTP dosya transfer protokolünü kullanarak yapar [5]. İkinci işlevi ise,<br />
indirmiş olduğu bu dosyayı kullanıcıya web sayfası halinde sunmaktır. Web tarayıcısı<br />
dosya transfer işlevini HTTP protokolünü kullanarak yaparken, kullanıcıya bilgi sunma<br />
işlevini ise HTML dilini kullanarak yapar [2].<br />
3.4 HTML ile basit bir web sayfası oluşturma<br />
HTML dilini kullanarak basit bir web sayfasını Tablo 3-1’deki gibi yazabiliriz.<br />
Şimdi bu metni bir web sayfası olarak bilgisayarımıza kaydedelim. Bunun için:<br />
• PSPad editörünü başlatını. “Dosya” menüsünden “Yeni Dosya” elemanını<br />
seçeneğini seçiniz. Gelen dosya tipleri arasından “HTML” tipini seçiniz.<br />
• PSPad editörü içine aşağıdaki tablodaki metni yazınız veya kopyalayıp<br />
yapıştırınız.<br />
• PSPad editöründe yukardaki menü elemanlarından “biçim” elemanı altındaki<br />
“UTF-8” seçeneğini seçiniz.<br />
• Daha sonra bu dosyayı merhaba.html ismiyle kaydediniz.<br />
32
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Eğer bu dosyayı oluşturmak için PSPad editörü yerine Notepad editörünü<br />
kullandıysanız, bu isimle dosyayı kaydederken dosya çeşidi kısmında bütün dosya tipleri<br />
seçeneğini seçmeyi unutmayınız. Yoksa bu dosya merhaba.html.txt olarak<br />
kaydedilebilir. PSPad editöründe bu şekilde bir problem yoktur.<br />
<br />
<br />
Basit bir HTML sayfası. <br />
<br />
<br />
<br />
Herkese Merhaba<br />
Bu benim ilk web sayfam. Web sayfası<br />
oluşturmak gerçekten çok güzel.<br />
<br />
<br />
Tablo 3-1 Basit bir HTML sayfası kodu<br />
Bu metinde görmüş olduğunuz küçüktür işaretiyle başlayıp büyüktür işaretiyle<br />
biten ifadeler HTML imleridir. Bu metindeki html imleri şunlardır: , ,<br />
, , , , , . Bu imler belge içindeki bilgileri<br />
tanımlarlar ve kullanıcıya bu bilgilerin nasıl gösterileceklerini bildirirler. İmlerin<br />
kendileri tarayıcı içinde gözükmezler. İmler sadece tarayıcının sayfa düzenlemesini nasıl<br />
yapması gerektiği ile ilgili komutlardır.<br />
Şimdi bu basit web sayfasının tarayıcı içinde nasıl gözükeceğini görelim. Bu<br />
sayfayı tarayıcı içinde görüntülemenin iki farklı metodu vardır. Bunlardan ilki bu sayfayı<br />
kendi bilgisayarınızda kurmuş olduğunuz web sunucusundan istemektir. Bunun için<br />
öncelikle merhaba.html dosyasını web sunucusu ana belge dizini içine, yani htdocs<br />
dizinine kopyalayınız. Sonra web sunucunuzun çalışıyor olduğundan emin olduktan<br />
sonra, tarayıcınızı çalıştırınız ve tarayıcınızın adres çubuğuna<br />
http://localhost/merhaba.html yazınız. Enter tuşuna bastığınızda bu sayfa tarayıcı içinde<br />
Şekil 3-1’deki gibi gözükecektir.<br />
Bu sayfayı tarayıcı içinde görüntülemenin ikinci yöntemi ise, web sunucusunu hiç<br />
kullanmadan tarayıcıyla bu sayfayı direk olarak açmaktır. Bunun için bilgisayarınızda<br />
web sunucusunun kurulu olmasına da gerek yoktur. Öncelikle merhaba.html dosyasını<br />
bilgisayarınızda her hangi bir kaydedebilirsiniz. Bu dosyanın web sunucusu ana dizini<br />
altında olmasına ya da başka özel bir dizinde olmasına gerek yoktur. Herhangi bir dizin<br />
içinde olabilir. Tek yapmamız gereken web tarayıcısını çalıştırmak ve tarayıcınızın dosya<br />
menüsünden dosya aç seçeneğini seçmek. Sonra da gelen pencerede merhaba.html<br />
dosyasını seçmek. Bu durumda tarayıcı merhaba.html dosyasını web sunucusundan<br />
almaz. Direk olarak işletim sisteminden alır. Yine sayfa tarayıcı içinde Şekil 3-1’deki gibi<br />
gözükür. Tek fark tarayıcı adres çubuğunda http://localhost/merhaba.html yerine<br />
dosyanın yolu ve adının yazmasıdır. Bu ikinci yöntemin bir kısa yolu Windows<br />
33
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
gezgininde merhaba.html dosyası üzerine çift tıklamaktır. Bu şekilde de yine bu sayfayı<br />
tarayıcı içinde görüntüleyebilirsiniz.<br />
Bu dersimizde oluşturacağınız sayfaları her iki yöntemle de çalıştırabilirsiniz.<br />
Hangisi sizin için daha kolay geliyorsa onu kullanabilirsiniz.<br />
Şekil 3-1 İlk HTML sayfası örneği<br />
HTML Belgesi başlangıç ve bitiş imleri: ve <br />
HTML imlerinin kendileri web tarayıcısı içinde gözükmezler. HTML imleri<br />
tarayıcıya ne yapmaları gerektiğini bildirirler. Bu belgedeki imi bu sayfanın<br />
başlangıcını, imi ise bu sayfanın bitimini gösterir. Yani imi başlangıç<br />
imi imi ise bitiş imidir. Dolayısıyla her zaman bir html belgesindeki bütün<br />
bilgiler bu iki html imi arasında olmalıdır.<br />
HTML Belgesi Baş ve Gövde İmleri: ve <br />
Her html belgesi iki ana bölümden oluşur. İlk bölüm baş kısımdır. İkinci bölüm<br />
ise gövde kısmıdır. Baş kısmı imiyle başlar ve imiyle biter. Dolayısıyla<br />
baş kısma ait bilgiler bu iki im arasında olmalıdır. Bir belgenin baş kısmına bu belgeyle<br />
ilgili genel bilgiler konulur. Bu bilgiler tarayıcı içinde gösterilmezler. Belgenin gövde<br />
kısmı ise imiyle başlar ve imiyle biter. Gövde kısmına tarayıcı içinde<br />
gösterilecek bilgiler konulur.<br />
Örnekteki Diğer imler<br />
Yukarıdaki basit HTML sayfası örneğindeki diğer imlerden imi, bu<br />
belgenin başlığını gösteren imdir. Başlık imi içindeki metin web tarayıcısının içinde değil<br />
ama en tepesinde gözükür. Yukarıdaki tarayıcı resminde tarayıcının en üstündeki mavi<br />
kısımda başlık metnini görebilirsiniz. Dolayısıyla web tarayıcısının en tepesinde görmek<br />
istediğiniz metni başlık imi arasına koymalısınız. Metin gövdesindeki , ve<br />
imleri metin biçimlendirme imleridir. sayfa içindeki metnin başlığını gösterir.<br />
34
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu durumda imi arasındaki metnin diğer metinlerden çok daha büyük puntolarla<br />
yazıldığına dikkat ediniz. imi metnin yatay düzlemde merkezde gösterilmesi<br />
gerektiğini belirtir. Yani metin solda ya da sağda değil de merkezde gösterilmelidir. Bu<br />
durumda ile arasındaki metnin yatay düzlemde web tarayıcısının<br />
merkezinde gösterildiğine dikkat ediniz. imi ile im çifti ise bir paragrafı<br />
tanımlar. Bu iki im arasındaki metnin bir paragraf olduğunu belirtir.<br />
Örnek Uygulama:<br />
Yukarıdaki örnekte görmüş olduğunuz; , , , ,<br />
, , imlerini kullanarak çok paragraflı örnek web sayfaları<br />
yapınız ve bu web sayfalarını tarayıcı içinde görüntüleyiniz?<br />
3.5 Web sayfası belgelerinin uzantıları<br />
Web sayfası dosyalarının iki tür uzantısı olabilir. Bunlardan birisi html diğeri ise<br />
htm uzantılarıdır. Örneğin yukarıdaki merhaba.html dosyasında uzantı tipi html olarak<br />
seçilmiştir. Aynı dosya merhaba.htm olarak ta isimlendirilebilirdi.<br />
Diğer yandan bu iki tip isimlendirme statik web sayfaları için geçerlidir. Yani<br />
web sunucusu tarafından çalışma anında üretilmeyen dosyalar için geçerlidir. Dinamik<br />
html belgelerinin çok çeşitli uzantıları olabilir. Bu tip belgeler üretildikleri programa göre<br />
farklı uzantılar alırlar. Mesela PHP programı tarafından dinamik olarak üretilen<br />
belgelerin uzantıları php seklindedir.<br />
3.6 Web tarayıcısı ile Web sayfası kaynak kodu görüntüleme<br />
Web tarayıcısı kullanıcıya web sunucusundan almış olduğu sayfayı düzenlenmiş<br />
olarak gösterir. Fakat bazı durumlarda web tasarımcısı sayfanın kaynak kodunu HTML<br />
imleriyle birlikte görmek ister. Bunun için bütün web tarayıcıları web sayfalarının kaynak<br />
kodlarının görüntülemesine imkan verir.<br />
Örnek Uygulama<br />
Firefox web tarayıcısında yukarıdaki sayfayı görüntülerken tarayıcının<br />
“Görünüm” menüsünden “Sayfa kaynağını göster” seçeneğini seçiniz. Bu durumda o<br />
anda göstermekte olduğu web sayfasının kaynak kodunu html imleriyle birlikte size<br />
gösterir. Yeni bir pencerede html kodunu Şekil 3-2’deki gibi gösterilir. Firefox tarayıcısı<br />
ile sayfa kaynak kodunu görüntülemenin ikinci bir yöntemi de fare tarayıcı içinde bir<br />
noktayı gösterirken sağ fare tuşuna tıklamak ve açılan menüden “Sayfa kaynağını göster”<br />
seçeneğini seçmektir. Benzer şekilde Internet Explorer ile de sayfa kaynak kodu fare sağ<br />
tuşuna tıklayarak ve “Kaynağı görüntüle” seçeneği seçilerek görüntülenebilir.<br />
35
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
3.7 HTML imleri<br />
Şekil 3-2 Web sayfalarının kaynak kodunu görüntüleme<br />
HTML imleri web tarayıcısında gözükecek bilgileri düzenlemek için kullanılır.<br />
Kendileri web tarayıcısı içinde gözükmezler. HTML imleri küçüktür ve büyüktür<br />
işaretleri arasında olur. Örneğin gibi. Bu imler HTML standardında [2]<br />
tanımlanmışlardır.<br />
HTML imleri genellikle bir çift halinde kullanılır. Birisi imin başlangıcını, diğeri ise<br />
imin bitimini gösterir. Örnek:<br />
Basit bir HTML sayfası. .<br />
Bitim iminde küçüktür işaretinden sonra bir de taksim işareti vardır. Bu ekstra<br />
taksim işareti bu imin başlangıç değil de bitim imi olduğunu gösterir.<br />
İki HTML imi arasında bulunan bilgiye im içeriği denilir. Bir imin içeriği başlangıç<br />
imi ile başlar ve bitiş imi ile sona erer.<br />
HTML imleri harf kipine duyarsızdırlar. Yani ile , veya<br />
aynı imi gösterir. Fakat belgelerimizde her zaman aynı tarzı kullanmak iyi bir<br />
alışkanlık olur. Yoksa belgelerimizin okunulurluğu azalır. Onun için belgelerinizde<br />
sürekli olarak ya küçük harflerden oluşa imleri ya da tamamen büyük harflerden oluşan<br />
imleri kullanınız. Küçük harfleri yazmak büyük harflere göre daha kolay olduğu için<br />
küçük harflerle yazılmış imleri tercih edilebilir. Diğer yandan büyük harflerle yazılmış<br />
imler daha kolay okunabilir. Önemli olan her zaman aynı şekilde belgelerinizi yazmaktır.<br />
3.8 HTML Elemanları<br />
HTML elemanları HTML imleriyle oluşturulurlar. Bir HTML belgesi HTML<br />
elemanlarından oluşur. HTML elemanları arasında bir hiyerarşik yapı vardır.<br />
36
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bir HTML belgesi iki HTML elemanından oluşur: head elemanı yani baş elemanı<br />
ve body elemanı yani gövde elemanı. Baş ve gövde elemanlarının da kendi içlerinde<br />
başka elemanları vardır. Mesela yukarıdaki basit web sayfası örneğinde baş elemanı<br />
içinde bir title yani başlık elemanı vardır. Yine aynı HTML belgesindeki gövde<br />
elemanı içinde bir h1 elemanı ve bir paragraf elemanı vardır. Dolayısıyla HTML<br />
elemanları arasında bir hiyerarşik yapı vardır ve tüm elemanlar HTML belgesi içindedir.<br />
Aynı şekilde metnin gövde kısmındaki tüm elemanlar da gövde elemanı içindedir.<br />
3.9 HTML Belgesi Baş kısmı<br />
HTML belgesinin baş kısmında sadece sınırlı sayıdaki imler kullanılabilir. Çünkü<br />
bu kısımdaki bilgiler tarayıcı içinde gösterilmek için değildir. Bu kısımdaki bilgiler bu<br />
html belgesiyle ile bilgilerdir.<br />
HTML standardı baş kısmında kullanılmak için şu imleri tanımlar: ,<br />
, , , , ve .<br />
imi daha önce belirttiğimiz gibi bir belgenin başlığını tanımlamak için<br />
kullanılır. Bu imle tanımlanan başlık web tarayıcısı penceresinin en üst kısmında<br />
gösterilir.<br />
imi bir web sayfası hakkında anahtar bilgiler içerir. Bu bilgiler daha çok<br />
arama motorları tarafından kullanılır. Örneğin çiçeklerle ilgili bilgiler içeren bir web<br />
sayfası olsun. Bu durumda meta imi arasına bu sayfada anlatılan çiçeklerin ismi<br />
yazılabilir. Böylelikle arama motorları bu sayfayı indekslerken bu bilgiyi dikkate alırlar.<br />
imi bir sayfadaki bütün bağlantılar için taban olacak bağlantıyı tanımlar.<br />
Örneğin bir web sayfası içinden http://www.mersin.edu.tr/resimler/kampus.gif ve<br />
http://www.mersin.edu.tr/resimler/lab.gif resim dosyalarına bağlantılar bulunsun. Hatta<br />
aynı dizindeki başka resim dosyalarına da bağlantılar bulunsun. Bu durumda bu<br />
bağlantıların bulunduğu dizini base imi ile tanımladığımız takdirde, artık bu bağlantıların<br />
tüm adresini bağlantı oluştururken yazmak durumunda kalmayız. İlerleyen bölümlerde<br />
bunu daha geniş göreceğiz.<br />
, , ve imlerini de gelecek bölümlerde konusu<br />
geldikçe göreceğiz.<br />
3.10 HTML Metin Biçimlendirme Elemanları<br />
HTML dili belgelerde başlıklar veya paragraflar oluşturmak, metinleri koyu, italik<br />
veya altı çizili yapmak gibi çeşitli metin biçimlendirme imkânları sunarlar.<br />
Tablo 3-2’deki HTML belgesini bir metin editörü ile oluşturunuz.<br />
37
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
<br />
Mersin ili<br />
<br />
<br />
<br />
Mersin<br />
Mersin, Türkiye'nin güneyinde Akdeniz'e kıyısı bulunan Antalya<br />
ve Adana'nın ortasında yer alan bir ildir. Mersin'in tarih<br />
sahnesine çıkışı 19. yüzyılın ortalarına rastlamaktadır. Bu dönemde<br />
henüz bir köy olan bölge, göçmen bir Türkmen aşiretine ev sahipliği<br />
yapar ve adını da bu aşiretten alır. Uzun yıllar İçel adıyla<br />
bilinen il son yıllarda merkez ilçesi olan Mersin'in adını<br />
almıştır.<br />
İlçeleri<br />
Mersin ilinin 9 tane ilçesi vardır. Bunlar; Anamur,<br />
Aydıncık, Bozyazı, Çamlıyayla, Erdemli, Gülnar, Mut, Silifke ve<br />
Tarsus'tur.<br />
Yöresel Yemekleri<br />
Kendine özgü yemeği olan tantuni ile tatlıları<br />
cezerye ve kerebiç çok meşhurdur. Ayrıca, kuş gözü,<br />
telatür, eğe (kaburga) dolması, bandırma, yüzük çorbası, keşkek,<br />
övelemeç ve batırık özel yöresel yemeklerindendir.<br />
<br />
<br />
Tablo 3-2 Biçimlendirilmiş metin için örnek web sayfası kodu<br />
Bu belgeyi bilgisayarınıza kaydedip web tarayıcınızla görüntülerseniz Şekil<br />
3-3’teki gibi görünür.<br />
HTML Başlık Elemanları<br />
Şekil 3-3 HTML İle Metin Biçimlendirme<br />
38
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu HTML belgesinde iki tip başlık elemanı vardır. Bunlardan ilki belge<br />
gövdesinin başında bulunan Mersin metnidir. Mersin<br />
seklinde yazılmıştır. imi bir başlık elemanı tanımlar. Dolayısıyla im çifti<br />
içinde kalan metin başlık olarak tanımlanmış olur. Bu im içinde bulunan imi<br />
ise, bu im çifti içinde kalan elemanın ekranda yatay düzlemde ortada gözükmesini sağlar.<br />
İkinci tip başlık elemanından iki tane vardır. Bunlar paragrafların başlarında<br />
bulunan alt başlıklardır. Bunlardan ilki İlceleri olarak tanımlanmıştır. Bu<br />
başlıkların çeşidi tipidir. başlığının derecesi başlığına göre daha<br />
düşüktür. Dolayısıyla olarak tanımlanmış bir metin ekranda olarak<br />
tanımlanmış başlığa göre biraz daha küçük puntolarla gözükür. Bir belgede genel olarak<br />
belgenin ana başlığı olarak tanımlanır. Sonra bir alt dereceden olan başlıklar <br />
olarak tanımlanır. Sonra daha alt dereceden olan başlıklar olarak tanımlanır. Bu<br />
şekilde , , ve tipi başlıklar da tanımlanabilirler. Başlıkların derecesi<br />
düştükçe gösterilecek metnin puntosu da küçülür.<br />
Örnek Uygulama:<br />
7 değişik başlık tipini kendi oluşturacağınız örnek bir HTML belgesi içinde<br />
kullanarak bunların aralarındaki farkı gözlemleyiniz?<br />
Metin Biçimlendirmeleri<br />
Yukardaki belgede bazı metinler tarayıcı içinde koyu, bazıları altı çizili, bazıları<br />
da italik olarak gösterilmiştir. Örneğin son paragraftaki “tantuni”, “cezerye” ve “kerebiç”<br />
kelimeleri koyu gözükmektedir. HTML belgesine baktığımızda bu kelimelerin etrafında<br />
imi olduğunu görürüz. Dolayısıyla imi bir metnin koyu gözükmesi için<br />
kullanılır. Benzer şekilde imi metinlerin italik, yani öne eğik, imi ise altı çizili<br />
olarak gözükmesini sağlar. Bu imler birbirleriyle birlikte de kullanılabilirler. Örneğin ilçe<br />
isimleri hem koyu hem de italik yapılmışlardır.<br />
Metinleri koyu yapmak için imine ek olarak imi de kullanılabilir.<br />
Benzer şekilde metinleri italik yapmak için imine ek olarak imi de<br />
kullanılabilir. Bu imler yaklaşık aynı sonucu üretirler.<br />
Başlık olmayan bir metnin etrafındaki metinden biraz daha büyük gözükmesini<br />
istersek bunu imiyle yapabiliriz. Benzer şekilde bir metni etrafındaki metinden<br />
biraz daha küçük olmasını istersek bunu imiyle yapabiliriz.<br />
HTML bazı metinleri alt veya üst metin olarak tanımlamamıza da olanak sağlar.<br />
Üst metin diğer metinlerden biraz daha yukarda ve küçük olan metinlerdir. Örneğin x 2<br />
ifadesindeki 2 karakteri üst metindir. Alt metin ise diğer metinlerden biraz daha aşağıda<br />
ve küçük olan metinlerdir. Örneğin x1 ifadesindeki 1 karakteri alt metindir. x 2 ve x1<br />
39
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
ifadelerinin web sayfasında bu şekilde gözükmesi için HTML belgesi içinde ve<br />
imleri kullanılır ve bu işlem şu şekilde yapılır:<br />
x 2 : x2<br />
x1: x1<br />
Paragraflar ve Yeni satırlar<br />
Bir metni paragraf yapmak için imi kullanılır. im çifti arasında kalan<br />
metin bir paragraf olur. Yukarıdaki metinde üç tane paragraf vardır. Tarayıcı yeni<br />
paragraftan önce ve sonra bir satırlık boşluk bırakır.<br />
Bir belgede yeni paragraf oluşturmadan yeni bir satır oluşturmak istersek, bu<br />
durumda imini kullanırız. Yukarıdaki HTML belgesinin ilk paragrafında <br />
iminin örnek kullanımı gözükmektedir. imi bir çift olarak değil de tek bir im olarak<br />
kullanılmıştır. Fakat çift olarak ta kullanılabilir. Bu durumda içi boş bir eleman olur.<br />
şeklinde kullanılır.<br />
İkinci bir yeni satır imi ise imidir. Bu im yeni satır eklemenin yanında<br />
sayfaya yatay bir çizgi de ekler. Bu im de yine imi gibi tek veya çift olarak<br />
kullanılabilir.<br />
HTML Belgelerine Açıklama Eklemek<br />
HTML belgelerine tarayıcı tarafından hiç işlenmemek üzere, sadece bu belgeyi<br />
hazırlayan kişiye ekstra bilgi vermek amacıyla açıklama da eklenebilir. Yukarıdaki html<br />
belgesindeki metni bu<br />
şekildeki bir açıklama elemanıdır. Bu açıklama kısmı tarayıcı tarafından okunup<br />
yorumlanmaz. Dolayısıyla açıklama elemanı imi ile biter.<br />
3.11 HTML Elemanları Öznitelikleri<br />
HTML elemanlarının içeriklerine ek olarak öznitelikleri de olabilir. Öznitelikler<br />
HTML elemanlarının içeriğiyle ilgili ekstra bilgi içerirler. Örneğin HTML gövde yani<br />
elemanının bgcolor isimli bir özniteliği vardır. Bu öznitelik bir HTML<br />
sayfasının arka plan rengini ayarlamak için kullanılır. Benzer şekilde birçok HTML<br />
elemanının align isimli bir özniteliği vardır. Bu öznitelik te HTML elemanlarının<br />
ekranda yatay düzlemde gözükecekleri pozisyonu belirlemek için kullanılır.<br />
40
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
3.12 Web Sayfası Arka Plan Rengi Ayarlama<br />
Şimdi bir HTML belgesinin gövde elemanının bgcolor özniteliğini kullanarak bu<br />
belgenin tarayıcı içindeki arka plan rengini ayarlayalım. Buna ek olarak HTML<br />
elemanlarının belge içindeki yatay düzlemdeki pozisyonlarını da align özniteliklerini<br />
kullanarak ayarlayalım. Bu işlemleri yapan örnek bir web sayfası kodu Tablo 3-3’de<br />
gözükmektedir. Bu tablodaki HTML belgesini bir metin editörü ile oluşturunuz.<br />
<br />
<br />
Arka Plan Rengi Testi<br />
<br />
<br />
<br />
Karacaoğlan<br />
Yaşamı üstüne kesin bilgi yoktur. Bugüne değin<br />
yapılan inceleme ve araştırmalara göre 17.yy'da yaşamıştır.<br />
Çukurova bölgesinde yaşadığı sanılmaktadır.<br />
<br />
<br />
Tablo 3-3 Web sayfası arka plan rengi ayarlama için örnek sayfa kodu<br />
Bu sayfa tarayıcı içinde Şekil 3-4’teki gibi gözükür.<br />
Şekil 3-4 HTML ile arka plan rengi ayarlama<br />
HTML belgesinde gözüktüğü gibi gövde elemanının bgcolor özniteliği şu<br />
şekilde ayarlanır:<br />
<br />
Burada aqua kelimesi arka planın alacağı rengi gösterir, bgcolor anahtar kelimesi<br />
ise arka plan rengi özniteliğinin adını gösterir. Arka plan rengi olarak verebileceğimiz 16<br />
tane renk ismi vardır. Bu isimler şunlardır: aqua, black, blue, fuchsia, gray,<br />
green, lime, maroon, navy, olive, purple, red, silver, teal, white, ve<br />
41
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
yellow. Bu renk isimlerini yukarıdaki örnekte deneyerek hangi renklere karşılık<br />
geldiklerini görebilirsiniz. İkinci bir ihtimal olarak ta http://www.w3.org/TR/css3color/#html4<br />
sayfasına giderek bu renk isimlerinin gösterdikleri renkleri görebilirsiniz.<br />
align özniteliği<br />
Bu örnekte kullanılan ikinci öznitelik ise align özniteliğidir. Bu öznitelik bir<br />
HTML elemanının web sayfasında yatay düzlemde gözükeceği yeri belirler. Alabileceği<br />
muhtemel değerler; center, right, left ve justify kelimeleridir. Bunlar sırayla şu<br />
anlamlara gelirler; orta, sağ, sol ve dağıtık. Bu örnekte başlık ortaya ayarlanmışken<br />
paragraf elemanı sağa ayarlanmıştır.<br />
3.13 HTML Dilinde Renk Gösterimi<br />
HTML dilinde renk ayarlarını yukarıdaki örnekte olduğu gibi yapabilsek te bu<br />
yöntem sadece 16 tane renk seçeneği sunar. Bu da İnternet’te olan çok değişik web<br />
sayfası tasarımı için yetersiz kalır. Her ne kadar doğadaki ana renkler sınırlı olsa da, bu<br />
ana renklerin karışımından oluşan milyonlarca çeşit renk vardır. İşte insanlar bu zengin<br />
renk kombinezonlarını web sayfası tasarımında da kullanmak isterler. Bu çok farklı<br />
amaçlar için tasarlanmış web sayfalarının oluşturulabilmesi için bir gerekliliktir. İşte bu<br />
farklı uygulamaların ihtiyacını karşılamak için HTML dilinde ana renkleri karıştırarak<br />
çok sayıda farklı renk oluşturma imkânı sunulmuştur.<br />
Doğadaki renklerin çoğu üç ana rengin karışımı olarak tanımlanabilir. Bunlar<br />
kırmızı, yeşil ve mavi renkleridir. Genel olarak bilgisayarlarda renkler bu üç rengin<br />
karışımı olarak gösterilir. Dolayısıyla HTML dilinde de aynı şekilde renkler bu üç rengin<br />
karışımı olarak gösterilirler.<br />
Her rengin alacağı 256 değişik değer vardır. Eğer bir rengin değeri 0 ise o rengin<br />
karışımda etkisi hiç yoktur. Değeri 255 ise etkisi maksimum seviyededir. Bu üç rengin<br />
karışımı 16’lik sistemde gösterilir. Dolayısıyla bir renk çeşidinin alacağı minimum değer<br />
00 iken, alacağı maksimum değer FF’tir. FF sayısı 255 sayısının 16’lık sistemdeki<br />
karşılığıdır.<br />
Bu üç renk şu şekilde karıştırılır. Toplam rengi gösteren ifade 6 karakter<br />
uzunluğundadır. Bu 6 karakterin ilk iki karakteri kırmızı rengin değerini gösterir. Sonraki<br />
iki karakter, yani ortadaki iki karakter yeşil rengin karışımdaki değerini gösterir. En son<br />
iki karakter ise karışımdaki mavi rengin değerini gösterir.<br />
Şimdi bu üç rengi karıştırarak nasıl kırmızı, yeşil ve mavi renklerini elde<br />
edeceğimizi görelim. Kırmızı rengi elde edebilmek için kırmızı rengin değeri maximum<br />
iken diğer yeşil ve mavi renklerden hiç karışım olmamalı. Yani yeşil ve mavi değerleri<br />
sıfır olmalı. Dolayısıyla kırmızı rengi şu şekilde oluşturabiliriz:<br />
42
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Kırmızı FF0000<br />
“FF0000” ifadesinde ilk iki karakter yani “FF” kırmızı rengin oluşturulan renkteki<br />
katkısını gösterir. Bu değer de 255’tir. Dolayısıyla kırmızı renk karışıma maximum değer<br />
ile katılmıştır. Sonraki iki karakter yani “00” değeri yeşil rengin karışımdaki etkisini<br />
gösterir. Yeşil renk karışıma sıfır değeriyle katılmıştır. Yani oluşturulan bu renge hiç<br />
yeşil rengi karıştırılmamıştır. Son iki karakter de mavi rengin değerini gösterir. Onun<br />
değeri de sıfırdır. Yani oluşturulan bu yeni renge mavi hiç karıştırılmamıştır. Dolayısıyla<br />
oluşturulan yeni renk sadece kırmızıdan ibaret olmuştur. Dolayısıyla “FF0000” rengi<br />
kırmızıyı göstermektedir.<br />
Benzer şekilde yeşil ve mavi renkleri de şu şekilde oluşturulabilir:<br />
Yeşil 00FF00<br />
Mavi 0000FF<br />
Yeşil rengi oluştururken sadece yeşil değeri maximum değerini almış, diğer ikisi<br />
yani kırmızı ve mavi sıfır değerini almıştır. Benzer şekilde mavi rengi oluşturulmuştur.<br />
Şimdi diğer birkaç karışımı daha görelim.<br />
Siyah 000000<br />
Gri 808080<br />
Sari FFFF00<br />
Eğer üç rengin hepsinin de değerleri sıfır ise, bu durumda ortaya çıkan renk siyah<br />
olur. Eğer bütün renkler yarı değerleriyle karıştırılırlarsa bu durumda ortaya çıkan renk<br />
gri olur. 16’lik sistemde FF sayısının yarısının 80 olduğuna dikkat ediniz. Eğer tam<br />
kırmızı ile tam yeşil karıştırılırsa bu durumda oraya çıkan renk sarı olur.<br />
Bu şekilde üç temel rengi farklı tonlarda karıştırarak çok farklı renkler elde<br />
ederiz. Her rengin 256 farklı değeri olduğu için toplam elde edebileceğimiz farklı renk<br />
sayısı:<br />
Toplam renk çeşidi: 256*256*256 = 16,777,216<br />
Yani 16 milyondan fazla farklı renk HTML ile gösterilebilir.<br />
43
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Yukarıdaki aqua renginin bu sistemdeki karşılığı 00FFFF sayısıdır. Yani tam yeşil<br />
ile tam mavinin karışımıdır. Şimdi aynı sayfada aqua kelimesi yerine bu sayıyı<br />
kullanalım. Bu durumda web sayfası HTML kodu Tablo 3-4’deki gibi olur.<br />
<br />
<br />
Arka Plan Rengi Testi<br />
<br />
<br />
<br />
Karacaoğlan<br />
Yaşamı üstüne kesin bilgi yoktur. Bugüne değin<br />
yapılan inceleme ve araştırmalara göre 17.yy'da yaşamıştır. Çukurova<br />
bölgesinde yaşadığı sanılmaktadır.<br />
<br />
<br />
Tablo 3-4 Web sayfası arka plan renginde renk kodu kullanma örneği<br />
Bu durumda bgcolor özniteliğin değeri yazılırken renk sayısının önüne # işareti<br />
konulur. Bunun amacı rengin değerinin bir renk adı değil, renklerin karışımını gösteren<br />
16’lık bir sayı olduğunu ifade etmek içindir.<br />
İnternet’te birçok sayfada hangi karışımın hangi renge karşılık geldiğine dair<br />
bilgiler vardır. Örneğin http://www.w3schools.com/html/html_colornames.asp sayfasında<br />
100’den fazla farklı rengin 16’lık sistemdeki karışım karşılığı verilmiştir. Bu sayfalarda<br />
verilen 16’lık düzlemdeki renk değerini web sayfalarınızda kullanabilirsiniz.<br />
3.14 Özel Karakterler<br />
HTML’de bazı karakterlerin özel anlamı vardır. Örneğin < karakteri bir imin<br />
başlangıcını, > karakteri ise bir imin bitimini gösterir. Bundan dolayı bu tip özel anlamı<br />
olan karakterlerin tarayıcı içinde gözükmesini istediğimiz zaman, bu karakterleri direk<br />
olarak yazamayız. Mesela 2 < 4 ifadesinin tarayıcı içinde gözükmesini istersek ve bunu 2<br />
< 4 şekilde HTML belgesinde yazarsak, tarayıcı bu ifadedeki < karakterini bir imin<br />
başlangıcı olarak algılar ve hatalı bir gösterim oluşur. Dolayısıyla tarayıcıya bir şekilde<br />
bu ifadedeki küçüktür karakterinin bir im başlangıcı olmadığını ve tarayıcı içinde<br />
kullanıcıya küçüktür karakteri olarak gösterilmesi gerektiğini ifade etmemiz gerekir. İşte<br />
bunu HTML belgesinde yapmanın yolu bu karakterler için özel bir format ve isim veya<br />
değer kullanmaktır. Örneğin < karakterini tarayıcıda göstermek için < ifadesini veya<br />
< değerini kullanırız. Tarayıcıda 2 < 4 gözükmesi için HTML belgesinde 2 < 4<br />
veya 2 < 4 yazarız. Bu şekilde özel gösterim gerektiren karakterler ve bunların<br />
değerleri Tablo 3-5’de verilmiştir.<br />
Karakter Açıklama Özel Karakter Adı Değeri<br />
44
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
boşluk  <br />
< küçüktür < <<br />
> büyüktür > ><br />
& ampersand & &<br />
Tablo 3-5 HTML dili özel karakter tablosu<br />
Özel karakterler & işaretiyle başlar ve noktalı virgül karakteriyle biter. Bunların<br />
bir isimleri vardır, bir de sayısal değerleri vardır. Her ikisi de kullanılabilir.<br />
Boşluk karakteri özel karakterler arasındaki belki de en önemli karakterdir. Çünkü<br />
HTML belgeleri içindeki boşluklar tarayıcı tarafından tek boşluğa indirilir ve tek bir<br />
boşluk olarak kullanıcıya gösterilir. Bundan dolayı birden fazla boşluk gözükmesini<br />
istediğimiz durumlarda her bir boşluk için bir yazmamız gerekir.<br />
Şimdi Tablo 3-6’daki gibi bir HTML belgesi oluşturalım.<br />
<br />
<br />
HTML'de özel Karakterler. <br />
<br />
<br />
<br />
"Özel Karakterler"<br />
Öğretmen şöyle dedi: <br />
"C dilindeki bir if ifadesine şöyle<br />
bir örnek verebiliriz:"<br />
if( x < y){ ... };<br />
<br />
<br />
Tablo 3-6 Web sayfalarında özel karakter kullanma örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 3-5’teki gibi gözükür:<br />
45
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 3-5 HTML sayfalarında özel karakterlerin kullanımı<br />
Tarayıcı içinde ikinci ve üçüncü satırlar satır başından daha ilerde başladığı<br />
gözüküyor. Satır başlarındaki bu boşlukların karakterlerini kullanarak<br />
koyduğumuza dikkat ediniz. Benzer şekilde if (x < y) ifadesindeki < karakterinin de<br />
< ifadesiyle yazıldığına dikkat ediniz.<br />
3.15 Bağlantılar<br />
HTML dilinin sayfa düzenlemeye ek olarak en önemli özelliği İnternet’te bulunan<br />
başka belgelere bağlantı verilmesine imkan sağlamasıdır. Bağlantılar sayesinde<br />
İnternet’teki ayrı ayrı olan belgeler birbirine bağlanır ve dünyayı saran belge ağı meydana<br />
gelir. Kullanıcılar bu sayede İnternet’te sörf yapabilir. Bir belgeden diğerine geçerek<br />
başladığı noktadan çok farklı yerlere ve bilgilere ulaşabilir.<br />
Bir HTML bağlantısı bir HTML sayfasından diğer bir HTML sayfasına işaret<br />
eden tek yönlü bir işaretçidir [6]. Kullanıcı bir bağlantıya tıklayarak o bağlantının işaret<br />
ettiği web sayfasına kolayca ulaşır. Tarayıcı işaret edilen web sayfasının adresinin<br />
yazılmasına gerek kalmadan bir tıklamayla işaret edilen sayfaya gider. Sayfalar<br />
arasındaki bu kolay geçiş imkânı İnternet’teki sörfün temelini oluşturur.<br />
HTML belgelerinde bağlantı oluşturmak için imi kullanılır. Bu im bağlantı<br />
vermek için href özniteliği ile birlikte kullanılır. Bu imin href özniteliğine ek olarak<br />
bağlantılar için kullanılan diğer bazı öznitelikleri ise target, title ve id isimli<br />
öznitelikleridir. Şimdi ilk bağlantı örneğimizi görelim. Bunun için Tablo 3-7’deki gibi bir<br />
HTML belgesi oluşturalım.<br />
<br />
<br />
Akdeniz<br />
<br />
<br />
<br />
Akdeniz<br />
46
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Akdeniz şu kitalarla çevrelenmiştir:<br />
doğuda Asya,<br />
kuzeyde Avrupa ve güneyde<br />
<br />
Afrika . <br />
<br />
<br />
Tablo 3-7 Web sayfalarından bağlantı oluşturma örneği<br />
Bu HTML sayfası web tarayıcısı içinde Şekil 3-6’daki gibi gözükür:<br />
Şekil 3-6 HTML sayfalarında bağlantı oluşturma<br />
Tarayıcı resminden gözüktüğü gibi “Asya”, “Avrupa” ve “Afrika”<br />
kelimelerinden bağlantı oluşturulmuştur. Kendisi için bağlantı oluşturulan metin tarayıcı<br />
içinde maviye boyanır ve altı çizilir. Böylece kullanıcı bu metinlerden bağlantı olduğunu<br />
anlar ve gerektiğinde bu bağlantıların üzerine tıklayarak bu bağlantıların gösterdiği<br />
sayfaya gider. Bağlantıların hangi adresi gösterdiğini bu adreslere gitmeden de öğrenmek<br />
mümkündür. Bir bağlantı üzerine fare ile gelindiğinde o bağlantının işaret ettiği web<br />
sayfası adresi, tarayıcının sol alt köşesinde gözükür. Yukarıdaki tarayıcı resminde fare<br />
“Asya” metni üzerine getirilmiştir ve “Asya” metninin işaret ettiği web sayfasının adresi<br />
tarayıcının sol at köşesinde gözükmektedir.<br />
Görüldüğü gibi “Asya” kelimesinden http://tr.wikipedia.org/wiki/Asya<br />
sayfasına bir bağlantı oluşturmak için imi şu şekilde kullanılır:<br />
Asya<br />
Bağlantı başlangıç imi ile bitiş imi arasında kalan metin için oluşturulur.<br />
Bu örnekte başlangıç ve bitiş imleri arasında kalan metin Asya kelimesidir. Bu<br />
bağlantının işaret edeceği web sayfası adresi ise iminin href özniteliği değeri olarak<br />
47
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
çift tırnak arasında yazılmıştır. başlangıç iminin < işaretiyle başlayıp href özniteliği<br />
değeri sonundaki > işaretiyle bittiğine dikkat ediniz.<br />
3.16 Bağlantılar Üzerinde Metin Gösterme<br />
Bağlantının gösterdiği sayfa hakkında o siteye gitmeden kullanıcıya kısa bir bilgi<br />
vermek mümkündür. Bunun için iminin title özniteliği kullanılır. Bu örnekte<br />
Avrupa metni için oluşturulan bağlantıda bu öznitelik kullanılmıştır:<br />
Avrupa<br />
Bu durumda iminin iki tane özniteliği vardır. İlki href ve ikincisi ise title.<br />
Bu iki öznitelik arasında sadece bir boşluk bırakmak yeterli olur. Bu durumda <br />
başlangıç imi title özniteliği değerinin sonundaki > işaretiyle bittiğine dikkat ediniz.<br />
title özniteliğine atanan metin bu tarayıcı içinde Avrupa bağlantısı üzerine fare ile<br />
gelindiğinde fare imlecinin yanında gözükür.<br />
Bağlantıları Yeni Web Tarayıcı Penceresi İçinde Açma<br />
Yukarıdaki HTML belgesinde gözüktüğü gibi Afrika kelimesi için oluşturulan<br />
bağlantıda target isimli ikinci bir öznitelik kullanılmıştır:<br />
<br />
Afrika <br />
Bu örnekteki target özniteliğinin kullanılmasının amacı bu bağlantıya<br />
tıklanıldığında bu bağlantının işaret ettiği web sayfasının yeni bir tarayıcı penceresi<br />
içinde açılmasıdır. Bu öznitelik kullanılmadığı durumda tıklanılan web sayfası aynı<br />
tarayıcı içinde açılır. Bu örnekte Asya ve Avrupa bağlantılarına tıklanıldığında bu<br />
bağlantıların işaret ettiği sayfalar aynı tarayıcı penceresi içinde açılır. Fakat Afrika<br />
bağlantısına tıklandığında bu bağlantının işaret ettiği sayfa yeni bir tarayıcı içinde açılır.<br />
3.17 Bir web sayfanın alt bölümlerine bağlantı oluşturma<br />
Bazı web sayfaları çok uzun olabilir. Bu durumda web sayfası içindeki bir alt<br />
bölüme yani sayfa içindeki bir HTML elemanına bağlantı vermek gerekebilir. Bu<br />
bağlantı hem aynı web sayfası içinden verilebilir, hem de başka web sayfalarından<br />
verilebilir.<br />
Bir HTML elemanına bağlantı verebilmek için öncelikle bu HTML elemanına bir<br />
isim vermemiz gerekir. Daha sonra bu isim kullanılarak bu HTML elemanına gerek aynı<br />
sayfadan gerekse başka sayfalardan direk bağlantı oluşturulabilir.<br />
48
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bir HTML elemanına isim vermek için o elemanın id özniteliği kullanılır. Şimdi<br />
bununla ilgili bir örnek uygulama yapalım. Bunun için Tablo 3-8’deki gibi bir HTML<br />
belgesi oluşturalım.<br />
<br />
<br />
Kıtalar<br />
<br />
<br />
<br />
Kıtalar<br />
Dünyadaki kıtalardan bazıları şunlardır: <br />
Asya, Avrupa ve Afrika .<br />
<br />
Asya <br />
Avrupanın doğusunda, Büyük Okyanus'un batısında, Okyanusya'nın<br />
kuzeyinde ve Arktik Okyanus'un güneyinde bulunan kıtadır.<br />
Avrupa <br />
Afrikanın kuzeyinde, Asya'nın batısında ve Atlantik Okyanusu'nun<br />
doğusunda bulunan kıtadır. Üzerinde birçok ülke mevcuttur.<br />
Afrika <br />
Avrupa'nın güneyinde, Atlantik Okyanusu'nun doğusunda, Hint<br />
Okyanusu'nun batısında ve Antarktika'nın kuzeyinde bulunan<br />
kıtadır.<br />
Lütfen bu sayfadaki bilgilerle ilgili iletişim için bize yazın.<br />
<br />
<br />
Tablo 3-8 Web sayfası alt bölümlerine bağlantı oluşturma örneği<br />
Bu HTML belgesi web tarayıcısı içinde Şekil 3-7’deki gibi gözükür.<br />
Şekil 3-7 Web sayfası içinde yerel bağlantı oluşturma<br />
49
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Tarayıcı penceresini büyütünce tek pencere içinde bu web sayfasının tamamını<br />
görebiliriz. Ama biz yer darlığından dolayı burada web tarayıcısı penceresini bu şekilde<br />
küçük tuttuk. Şimdi bu pencerede Afrika bağlantısına tıklarsanız, tarayıcının aynı pencere<br />
içindeki Afrika alt bölümünü göstermeye başladığını görürüsünüz. Bu durumda<br />
göreceğiniz tarayıcı sayfası Şekil 3-8’deki gibi olur.<br />
Şekil 3-8 Yerel bağlantı ile erişim<br />
Yukarıdaki HTML belgesinde öncelikle üç alt başlık elemanına da id imiyle isim<br />
verdiğimize dikkat ediniz. Örneğin Afrika alt başlığı şu şekilde tanımlanmıştır:<br />
Afrika <br />
Burada id imiyle alt başlık elemanına bir isim veriyoruz. Artık bu elemana<br />
bu ismiyle erişebiliriz. Burada bu alt başlığın ismi afk olmuş oluyor. Benzer şekilde<br />
diğer iki alt başlık elemanına da id özniteliğini kullanarak isim veriyoruz. Onlara da asy<br />
ve avp isimlerini veriyoruz.<br />
İkinci adımda isimlendirmiş olduğumuz bu alt başlık elemanlarına belgemizin<br />
başka yerlerinden bağlantı veriyoruz. Şimdi Afrika elemanına vermiş olduğumuz<br />
bağlantıya daha yakından bakalım:<br />
Afrika <br />
Bu durumda href özniteliğinin değeri sadece alt başlık elemanının ismi olarak<br />
veriliyor. Çünkü hem bağlantıyı veren hem de bağlantı verilen eleman aynı belge içinde<br />
bulunmaktadır. Ayrıca href özniteliğinin değerini yazarken önce # işaretinin<br />
kullanıldığına dikkat ediniz.<br />
Bazı web sayfalarında HTML elemanlarını isimlendirmek için id özniteliği<br />
yerine name özniteliğinin kullanıldığını görebilirsiniz. Bu, şu anda tavsiye edilmeyen bir<br />
metoddur. Doğrusu id özniteliğinin kullanılmasıdır.<br />
50
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Alt bağlantılar her türlü HTML elemanına yapılabilir. Örneğin paragraf alt<br />
elemanlarına da bağlantı yapılabilir. Fakat bu örnekte alt başlığa yapmak daha mantıklı<br />
olduğu için biz alt başlıklara bağlantı yaptık.<br />
Başka sayfalardaki bir web sayfası içindeki alt bölümlere bağlantı<br />
oluşturmak<br />
Başka sayfalardaki bir web sayfası içindeki alt bölümlere bağlantı oluşturulabilir.<br />
Örneğin yukarıdaki web sayfası<br />
http://www.bilgi.com/kitalar.html<br />
Adresinde bulunsun. Bu durumda bu sayfadaki Afrika alt elemanının web adresi<br />
şöyle olur:<br />
http://www.bilgi.com/kitalar.html#afk<br />
Yani web sayfasının adresinden sonra bir # işareti konulur ve alt bölümün ismi<br />
yazılır.<br />
mailto bağlantısı<br />
Yukarıdaki web sayfasının en altında farklı bir bağlantı şekli gözükmektedir. Bu<br />
ifade şudur:<br />
Lutfen bu sayfadaki bilgilerle ilgili iletisim için bize<br />
yazın.<br />
Bu durumda href özniteliğin değeri olarak bir web sayfası yerine mailto ile<br />
başlayan ve bir E-posta adresi ile devam eden bir ifade verilmiştir. Bunun amacı bu<br />
bağlantıya tıklanıldığında href kısmında belirtilen E-posta adresine E-posta gönderilmesi<br />
için kullanıcının bilgisayarındaki E-posta programının açılmasıdır. Bu web sayfası<br />
sahiplerine E-posta göndermeyi kolaylaştırmak için düşünülmüş bir yöntemdir.<br />
Genellikle web sayfalarının en alt kısmına kullanıcıların görüşlerini almak için konulur.<br />
3.18 Göreli Bağlantılar<br />
Bir web sayfasındaki belgeler kendi sunucusundaki belgelere bu belgelerin tüm<br />
adlarını yazmadan da bağlantı verebilir. Örneğin web sunucusunun kök dizini olan<br />
htdocs dizininin içeriği Şekil 3-9’da gözüken soldaki pencere gibi olsun. Yani kök<br />
dizininde diğer dosyaların yanında mersin.html ve merhaba.html isimli iki dosya<br />
bulunsun. Bunlara ek olarak ilceler isimli bir alt dizin bulunsun. Bu ilceler dizininin<br />
51
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
içeriği de Şekil 3-9’da sağ tarafta gözüken pencere gibi olsun. Yani ilceler dizininde<br />
beş tane ilçe ismiyle HTML dosyaları bulunsun. Bu dizindeki her belgede o ilçeyle ilgili<br />
bir web sayfası olsun.<br />
Şekil 3-9 Göreli Bağlantı İçin Dosyalar<br />
Şimdi mersin.html isimli dosyadan merhaba.html isimli dosyaya ve ilceler<br />
dizini altındaki bazı dosyalara nasıl bağlantı verildiğini görelim. Bunun için Tablo<br />
3-9’daki gibi bir HTML belgesi oluşturalım.<br />
<br />
<br />
Mersin<br />
<br />
<br />
<br />
Mersin<br />
Mersin Valiliğinin sayfasına hoş geldiniz. Valimizin mesajını<br />
okumak için tıklayınız. <br />
Mersinin ilçelerinden bazıları şunlardır:<br />
Tarsus,<br />
Silifke,<br />
Erdemli.<br />
<br />
<br />
Tablo 3-9 Göreli bağlantı oluşturma örnek sayfası<br />
Bu HTML belgesi web tarayıcısı içinde Şekil 3-10’daki gibi gözükür.<br />
52
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 3-10 Web sitesi içinde göreli bağlantılar<br />
Şimdi mersin.html dosyasından aynı dizindeki merhaba.html dosyasına nasıl<br />
bağlantı verildiğine dikkat edelim:<br />
tıklayınız<br />
Aynı dizindeki bir dosyadan diğerine bağlantı vermek için sadece dosya ismini<br />
yazmak yeterli olur. Bu dosyanın tam URL adresini yazmaya gerek yoktur. Dolayısıyla<br />
bu örnekte merhaba.html dosyasına bağlantı vermek için sadece href değeri olarak<br />
sadece merhaba.html denilmiştir. Benzer şekilde bir alt dizindeki bir dosyaya bağlantı<br />
vermek için de yine bu belgenin tam URL adresine gerek yoktur. Yalnız bu durumda<br />
dosya ismine ek olarak dizin adını da vermemiz gerekir. Bu da ilceler için verilen<br />
bağlantı örneğinde görülmektedir:<br />
Tarsus<br />
Bu durumda önce alt dizin adı sonra da dosyanın adı yazılmıştır. Eğer dosyamız<br />
iki alt dizinde olsaydı, bu durumda iki alt dizini de dosya isminden önce belirtmemiz<br />
gerekirdi. Kısaca eğer sadece dosya adı belirtilmişse, web sunucusu bağlantı verilen<br />
dosyayı bağlantı veren dosya ile aynı dizinde arar. Eğer alt dizin adı da verilmişse,<br />
öncelikle belge ile aynı dizinde olan alt dizini arar. Sonra bu alt dizin içinde bağlantı<br />
verilen belgeyi arar.<br />
Bir üst dizindeki belgeden alt dizinlerdeki belgelere, belgelerin dizin yolunu da<br />
yazarak bağlantı veririz. Pekâlâ, alt dizindeki bir belgeden üst dizindeki bir belgeye nasıl<br />
bağlantı verebiliriz? Örneğin yukarıdaki durumda tarsus.html dosyası içinden<br />
mersin.html dosyasına nasıl bağlantı verebiliriz? Şimdi bunu görelim. tarsus.html<br />
dosyası içeriği Tablo 3-10’daki gibi olabilir.<br />
53
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
Tarsus<br />
<br />
<br />
<br />
Tarsus<br />
Tarsus Mersin ilinin en büyük<br />
ilçesidir.<br />
<br />
<br />
Tablo 3-10 Göreli bağlantı oluşturma ikinci örnek sayfası<br />
Görüldüğü gibi tarsus.html belgesi içinden bir üst dizindeki mersin.html<br />
dosyasına şu şekilde bağlantı verilmiştir:<br />
<br />
Yani bir üst dizini göstermek için iki nokta kullanılır. Eğer iki üst dizini<br />
göstermek isteseydik bu durumda iki katlı iki nokta (../..) kullanmak durumunda<br />
kalırdık. Bu şekilde bir web sunucusundaki bütün belgelere tam URL adreslerini<br />
kullanmadan göreli bağlantılarla bağlantı verebiliriz. Diğer yandan tam adreslerini<br />
kullanarak bağlantı vermekte her zaman için mümkündür.<br />
3.19 Referanslar<br />
[1] T. Berners-Lee, "Information Management: A Proposal." CERN (March 1989, May<br />
1990). http://www.w3.org/History/1989/proposal.html.<br />
[2] D. Raggett, A.L. Hors, ve I. Jacobs (editors), "HTML 4.01 Specification",<br />
http://www.w3.org/TR/html4, 24 December 1999.<br />
[3] I. Hickson and D. Hyatt (editors), "HTML 5", http://www.w3.org/TR/html5, W3C<br />
Working Draft 25 August 2009.<br />
[4] http://en.wikipedia.org/wiki/Usage_share_of_web_browsers, Usage share of web<br />
browsers, 18 Ağustos 2009.<br />
[5] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee,<br />
"Hypertext Transfer Protocol -HTTP/1.1", IETF RFC 2616, June 1999,<br />
http://www.ietf.org/rfc/rfc2616.txt.<br />
[6] T. Berners-Lee, R. Fielding, and L. Masinter, "Uniform Resource Identifier (URI):<br />
Generic Syntax", IETF RFC 3986, January 2005,<br />
http://labs.apache.org/webarch/uri/rfc/rfc3986.html.<br />
54
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 4<br />
4.1 Amaç<br />
GÖRÜNTÜLER<br />
Bu bölümde amacımız görüntülerin bilgisayarda nasıl tutulduğunun temellerinin<br />
öğrenilmesi, görüntüleri sıkıştırma tekniklerinin anlaşılması ve görüntülerin web sayfası<br />
içinde kullanımının kavranmasıdır. Bu amaçla önce görüntülerin bilgisayarda<br />
kaydedilmeleri ile ilgili temel konular anlatılmıştır. Sonra görüntüleri sıkıştırma için<br />
kullanılan yaygın algoritmalardan bazıları ve bunların dosya tipleri işlenmiştir. Daha<br />
sonra görüntülerin web sayfalarında sunumları anlatılmıştır. Web sayfalarında<br />
görüntülerin konumlarının ve boylarının ayarlanması, etraflarında tampon boşluk<br />
bırakılması, görüntülerden bağlantı oluşturulması ve görüntülerin arka planda<br />
kullanılmaları işlenmiştir.<br />
4.2 Giriş<br />
Web ilk başlarda daha çok metin ağırlıklı idi. O zamanlar önemli olan bilginin<br />
paylaşılabilmesiydi. Çünkü web ağının yaygınlaşmasından önce bu şekilde hızlı ve etkin<br />
bir bilgi paylaşım mekanizması yoktu. Ama zamanla bilginin paylaşılması yanında<br />
bilginin sunum şekli de önem kazandı. Artık sadece bilginin başkalarının kullanımına<br />
açılması yeterli olmamaya başladı. Bilgi kadar önemli diğer bir unsurun da bilginin<br />
kullanıcıya en güzel ve görsel şekilde sunulması olduğu anlaşıldı. İşte bilginin kullanıcıya<br />
en güzel şekilde sunulmasında görüntüler önemli bir role sahiptir. Artık web sayfası<br />
tasarımı sadece teknik bir iş olmaktan çıkmış ve sanatsal bir faaliyet haline de<br />
dönüşmüştür. Güzel ve etkin bir web sayfası tasarlamak sadece teknik bilgiyle mümkün<br />
olmamaktadır. Teknolojinin sunmuş olduğu imkânların tasarımcıların hayal gücüyle<br />
birleşmesi gerekmektedir. Özetle şunu söylemeliyiz ki güzel web sayfası tasarlamak için<br />
sadece teknik bilgi yeterli olmamaktadır. Onun için programcılar kendi sınırlarının<br />
farkında olmalılar ve gerçekçi plan ve projeler üzerinde çalışmalıdırlar.<br />
55
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
4.3 Görüntülerin Bilgisayarlarda Kaydedilmeleri<br />
Geçen bölümde belirtildiği gibi bilgisayarda gösterilen bütün renkler üç temel<br />
rengin karışımı şeklindedir. Bu üç temel renk; kırmızı, yeşil ve mavi renkleridir [1]. Bu<br />
üç renk karıştırılarak gösterilmek istenen diğer bütün renkler elde edilir. Fakat görüntüler<br />
bu üç rengin karışımı olarak hiç sıkıştırılmadan bilgisayarda tutulursa çok fazla yer<br />
kaplamaktadır. Şu anki bilgisayarlar 24 bitlik renk gösterimini kullanmaktadır [2].<br />
Ekrandaki her bir noktanın rengini göstermek için 24 bit, yani 3 byte’lık bir yer ihtiyacı<br />
vardır. Her bir noktanın rengini gösteren bu 24 bitlik verinin 8 biti rengin kırmızı kısmını,<br />
diğer 8 biti rengin yeşil kısmını ve son 8 biti de mavi kısmını gösterir. Her 8 bitlik kısım<br />
256 değişik renk tonunu gösterebilir (2 8 = 256). Yani hem kırmızının, hem yeşilin, hem<br />
de mavini 256 değişik tonu vardır. Dolayısıyla bu üç rengin değişik tonlarda<br />
karıştırılmasından (256*256*256) 16 milyondan fazla değişik renk elde edilir. Yani<br />
ekrandaki her bir noktanın rengi 16 milyondan fazla değişik renk değeri alabilir. Özetle<br />
ekrandaki her bir noktanın renk bilgisi 24 bit yani 3 byte’lık bir yer kaplar. Dolayısıyla<br />
görüntü dosyaları sıkıştırılmadan tutulurlarsa çok fazla bellek ihtiyacı olur.<br />
Örneğin 600*800 pixel büyüklüğündeki bir resim dosyasını düşünelim. Bu resim<br />
dosyası toplam 600*800 = 480,000 tane pixelden yani noktadan oluşmaktadır. Her bir<br />
nokta 3 byte yer kaplayacağı için bu resim için toplam bellek ihtiyacı 480000*3 =<br />
1,440,000 byte olur. Yani 1.4 mega byte civarında bir dosya olur. Bu da çok büyük bir<br />
alandır. Diğer yandan daha büyük resim dosyalarını düşünürsek, bu büyüklük hızla artar.<br />
Dolayısıyla resim dosyaları bilgisayarda genellikle ham veri olarak tutulmazlar. Ham veri<br />
ile kastedilen bu örnekte olduğu gibi ekrandaki her bir nokta için 24 bitlik bilgi<br />
tutulmasıdır. Özellikle de İnternet üzerinden başkalarına göndereceğimizin resim<br />
dosyalarının mümkün olduğunca küçük boyutlu olmasını isteriz. Çünkü bu dosyaların<br />
kullanıcılara transferi hem zaman alır hem de web sunucularına bir yük oluşturur.<br />
Görüntü dosyalarının ham veri olarak tutulmasının alternatifi değişik sıkıştırma<br />
algoritmalarıyla bu dosyaların sıkıştırılmasıdır [3]. Bu sıkıştırma algoritmaları minimum<br />
alanda çok bilgi tutmayı hedefler. Yani resim dosyalarının boylarını küçültmeyi hedefler.<br />
Resim boylarını küçültmek için çok değişik algoritmalar geliştirilmiştir. Bu<br />
algoritmaların bir kısmı kayıpsız sıkıştırma yaparken bir kısmı kayıplı sıkıştırma yapar.<br />
Kayıpsız sıkıştırma yapan algoritmalar görüntüde hiçbir bilgi kaybı olmaksızın sıkıştırma<br />
yaparlar. Yani görüntüdeki bilgileri farklı bir şekilde tutarak yer kazanımı sağlarlar.<br />
Örneğin resmin arka planı aynı renk ise ve görüntünün çoğu arka plandan oluşuyorsa,<br />
arka plan rengini gösteren her nokta için aynı bilgi 24 bit olarak tekrar tekrar tutulmaz.<br />
Sadece bu noktaların aynı olduğunu gösteren çok daha küçük boyutlu bir sayı aynı işlevi<br />
görür. İşte buna benzer değişik yöntemler kullanılarak sıkıştırma yapılır.<br />
Kayıpsız sıkıştırma algoritmaları [4] bilgisayarda üretilmiş resimler ve çizimler<br />
için çok iyi sonuçlar vermesine rağmen, tabiat görüntülerinden oluşan fotoğraflar için<br />
aynı düzeyde kazanım sağlayamaz. Çünkü bu tür resimlerde aynı rengin tekrarlaması çok<br />
fazla görülmez. Dolayısıyla bu tür resim dosyaları için kayıplı sıkıştırma algoritmaları [5]<br />
56
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
daha çok kullanılır. Bu tür algoritmalar resmin görüntü kalitesini çok az düşürerek ciddi<br />
manada yer kazanımı hedefler.<br />
4.4 BMP, GIF, PNG ve JPEG Dosya Tipleri<br />
4.2.1 BMP Dosya tipi<br />
Bir görüntü dosyasının isminin uzantısı o dosyada kullanılan sıkıştırma<br />
algoritmasını gösterir. Bir dosyanın uzantısı bmp ise, bu görüntü dosyasında görüntü<br />
bilgisi ham veri olarak tutuluyor demektir [6]. Örneğin ev.bmp isimli bir dosya olabilir.<br />
Bu tür dosyalar İnternet üzerinden gönderilmek için uygun değildir.<br />
4.2.2 GIF Dosya tipi<br />
GIF uzantılı dosyalar İnternet’te çok yaygındır. Örnek bir dosya ismi olarak<br />
ev.gif verilebilir. Bu tür dosyalarda kullanılan sıkıştırma algoritması kayıpsız bir<br />
algoritmadır [7]. Dolayısıyla bilgisayarda üretilmiş çizimler ve resimler için sıkça<br />
kullanılır. Üretilen resim dosyalarının boyu genellikle çok küçüktür. En önemli<br />
dezavantajı sadece 256 değişik rengi destekler. 16 milyon değişik renkten sadece 256<br />
farklı renk kullanılabilir. Bu algoritma sadece 256 değişik renk kullanıldığında<br />
kayıpsızdır. Daha fazla rengi olan bir resmi bu algoritmayla sıkıştırmak istediğimizde<br />
kayıplar oluşur. Çünkü bu durumda renk sayısı 256’ya azaltılır. Kısaca gif dosyaları<br />
bilgisayarda oluşturulmuş ve az sayıda değişik renk içeren çizimleri göstermek için<br />
kullanılabilir. Buna ek olarak yine az sayıda renk içeren resimleri içinde gif formatı<br />
kullanılabilir. Diğer yandan doğa resimlerini gif ile göstermek genellikle isabetli olmaz.<br />
Çünkü bu durumda çok fazla renk kaybı olur.<br />
4.2.3 PNG Dosya tipi<br />
GIF şu anda İnternet’te çok yaygındır, fakat artık resimleri daha kaliteli<br />
göstermek için ihtiyaç artmıştır. Çünkü bilgisayarların ve ağların kapasitesi hızla<br />
artmaktadır. PNG sıkıştırma algoritması [8] GIF algoritmasının kısıtlamalarını<br />
genişletmek ve daha kaliteli görüntüler oluşturmak için geliştirilmiştir. GIF gibi yine<br />
kayıpsız sıkıştırma yapar. Fakat GIF’ten farklı olarak 256 renk sınırlandırması yoktur. 16<br />
milyondan fazla rengin hepsini de gösterebilir. Dolayısıyla GIF’e göre PNG ile<br />
sıkıştırılmış dosyalar daha kaliteli olurlar, fakat dosya boyları da daha büyük olur. Yine<br />
GIF gibi daha çok bilgisayarda oluşturulmuş çizimler ve resimler için kullanılır. Doğa ve<br />
tabiat fotoğrafları için kullanılmaz.<br />
Şimdi bilgisayarda üretilmiş bir grafik görüntüsünün png, gif ve bmp olarak<br />
kaydedilmesi arasındaki farkı görmeye çalışalım. Bunun için şu adresteki png resim<br />
dosyasını bilgisayarınıza indiriniz:<br />
57
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
http://commons.wikimedia.org/wiki/Image:Dice_Distribution_(bar).png<br />
Bu dosyayı bilgisayarınıza indirmek için önce tarayıcınızla bu sayfaya gidiniz.<br />
Sonra fareniz resmin üzerindeyken farenizin sağ tuşuna tıklayıp resmi farklı kaydet<br />
seçeneğini seçerek bilgisayarınıza bu dosyayı ZarDagilimi.png olarak kaydediniz. Bu<br />
dosya 800*548 pixel boyunda bir png resim dosyasıdır. Bu resim Şekil 4-1’deki gibi<br />
gözükmektedir.<br />
Şekil 4-1 Örnek grafik resmi<br />
Şimdi bu dosyayı bilgisayarınızdaki Paint programı ile açınız. Sonra bu dosyayı<br />
farklı kaydediniz. Farklı kaydederken önce gif formatını seçiniz. İkinci olarak yine aynı<br />
png dosyasını farklı kaydediniz. Bu defa resim dosyası tipini 24-bit bmp olarak seçiniz.<br />
Şimdi bu üç çeşit resim dosyasının büyüklüğünü kontrol ediniz.<br />
Dosya adı Büyüklüğü<br />
ZarDagilimi.png 21 KB<br />
ZarDagilimi.gif 20 KB<br />
ZarDagilimi.bmp 1285 KB<br />
Tablo 4-1 Farklı sıkıştırma algoritmaları için grafik resmi boyu karşılaştırması<br />
Tablo 4-1’deki değerlerden görüldüğü gibi png ve gif dosyalarının boyları<br />
birbirine çok yakındır. Gif dosyası boyu biraz daha küçüktür. Ama bmp dosyası boyu<br />
diğer ikisinden çok fazla büyüktür. Diğer dosyalardan yaklaşık 60 kat daha büyüktür.<br />
Bunun nedeni bu grafik dosyası çok fazla detay içermiyor. Kullanılan renklerde sınırlı<br />
sayıdadır. Arka plan hep aynı renktir. Grafikteki sütunlar da aynı renktir. Dolayısıyla<br />
sıkıştırma algoritması çok başarılı bir sıkıştırma yapabiliyor. 60 kat kazanç sağlıyor. İşte<br />
bu ve benzeri tipteki bilgisayarda üretilmiş resimler için genellikle png veya gif<br />
sıkıştırma algoritması kullanılır.<br />
58
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Örnek Uygulama<br />
Web’den bulacağınız çeşitli grafik dosyalarını, yani bilgisayar ortamında<br />
üretilmiş görüntü dosyalarını bilgisayarınıza kaydediniz. Bu görüntüler yukardaki örnekte<br />
olduğu gibi bir şeyin grafiği olabilir ya da bilgisayarda yapılmış çizim dosyaları olabilir.<br />
Bu görüntü dosyalarını paint programını kullanarak png, gif ve 24 bit bmp olarak<br />
kaydediniz ve bu dosyalar arasındaki boy farklarını karşılaştırınız? Bmp ham veri dosyası<br />
ile png ve gif sıkıştırma algoritmaları arasındaki kazanç oranlarını hesaplayınız?<br />
4.2.4 JPEG Dosya Tipi<br />
JPEG sıkıştırma algoritması [9] ise daha çok doğa fotoğrafları gibi çok fazla detay<br />
içeren resimler için kullanılır. Bu algoritma kayıplı sıkıştırma yapar. Fakat amacı<br />
kaliteden çok az kaybederek dosya boyundan büyük miktarda tasarruf sağlamaktır. Dijital<br />
fotoğraf makinelerinde de en çok bu format kullanılır. Bu tip dosyaların uzantıları<br />
genellikle JPG veya JPEG olur. İkisi de kullanılabilir.<br />
JPEG sıkıştırma algoritması bilgisayarda üretilmiş ve sınırlı sayıda renk içeren<br />
resimler için genellikle kullanılmaz. Çünkü bu durumda resimlerin kalitesinde azalma<br />
olur. Diğer yandan PNG ve GIF kadar küçük boylu dosya da üretemez. Örneğin<br />
yukarıdaki ZarDagilimi dosyasını JPEG olarak kaydettiğimiz zaman, bu dosyanın boyu<br />
yaklaşık 54 KB olur. Dolayısıyla png ve gif tipine göre çok daha büyük olur. Buna ek<br />
olarak görüntüde bazı noktalarda kailte kaybı meydana gelir.<br />
İnternet’ten bir JPEG dosyası indirelim. Örneğin Şekil 4-2’deki gözüken Rize<br />
Kalesi resmini şu adresten indirebilirsiniz:<br />
http://www.rizedeyiz.com/rize/turizm/mutlaka.html<br />
Şekil 4-2 Örnek manzara resmi<br />
59
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu dosyayı RizeKalesi.JPG ismiyle bilgisayarınıza kaydediniz. Sonra bu<br />
dosyayı Paint programı ile açıp önce PNG formatında kaydediniz. Sonra tekrar<br />
RizeKalesi.JPG dosyasını Paint programı ile açıp, bu defa aynı dosyayı GIF formatında<br />
kaydediniz. Daha sonra da 24-bit BMP dosyası olarak kaydediniz. Şimdi bu dosyaların<br />
boylarını karşılaştırınız. Dosya boylarını Tablo 4-2’de olduğu gibi göreceksiniz.<br />
Dosya adı Büyüklüğü<br />
RizeKalesi.JPG 76 KB<br />
RizeKalesi.gif 77 KB<br />
RizeKalesi.png 507 KB<br />
RizeKalesi.BMP 712 KB<br />
Tablo 4-2 Farklı sıkıştırma algoritmaları için manzara resmi boyu karşılaştırması<br />
Görüldüğü gibi en küçük dosya boyu JPG sıkıştırma algoritmasıyla elde edilir.<br />
GIF dosyası boyu da küçüktür ama bu dosyanın resim kalitesi çok düşüktür. PNG<br />
algoritmasının kalitesi iyidir fakat çok büyük boylu bir dosya üretir. PNG dosyasının<br />
boyu nerdeyse hiç sıkıştırılma yapılmamış olan BMP dosyasına yakındır. Dolayısıyla bu<br />
tip fazla detay içeren resimler için JPEG formatını kullanmak en isabetli olanıdır.<br />
Biz bu örnekte yukarıdaki resim dosyasını kullandık. Eğer bu dosyaya<br />
erişemezseniz veya kullanmak istemezseniz, aynı işlemi kendi bilgisayarınızdaki bir<br />
dijital fotoğrafla da yapabilirsiniz. Veya İnternet’teki başka bir manzara resmini de<br />
kullanabilirsiniz.<br />
Örnek Uygulama<br />
İnternette bulacağınız en az üç tane farklı manzara resmini bilgisayarınıza<br />
indiriniz? Bu dosyaları dört farklı formatta (JPEG, PNG, GIF ve 24BIT-BMP) Paint<br />
programı ile kaydediniz. Daha sonra bu dosyaların farklı formatları arasındaki boy farkını<br />
gözlemleyiniz? Ayrıca bu dosyaların farklı formatları arasındaki kalite farkını<br />
gözlemleyiniz? İndirmiş olduğunuz 3 farklı manzara dosyasında da değişik formatlar<br />
arasındaki fark yaklaşık aynımı oldu? Değilse farkın neden kaynaklandığını açıklamaya<br />
çalışınız?<br />
4.5 HTML ile Görüntü Sunumu<br />
HTML dilinde bir görüntünün web sayfasında gösterilmesi için img imi kullanılır.<br />
Bu imin src özniteliği görüntü dosyasının yerini belirtmek için, align özniteliği ise bu<br />
resmin ekranda yatay düzlemde gösterileceği pozisyonu belirtmek için kullanılır. Şimdi<br />
60
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
bayrak.gif isimli bir resim dosyasını bir web sayfasında görelim. Bunun için Tablo<br />
4-3’teki gibi bir HTML belgesi yazabiliriz.<br />
<br />
<br />
Türk Bayrağı<br />
<br />
<br />
<br />
Türk Bayrağı<br />
<br />
<br />
<br />
Tablo 4-3 İçinde bir görüntü olan örnek web sayfası kodu<br />
Bu HTML belgesi web tarayıcısı içinde Şekil 4-3’teki gibi gözükür.<br />
Şekil 4-3 İçinde sağa yanaşık bir görüntü bulunan web sayfası örneği<br />
HTML belgesinde görüldüğü gibi img imi şu şekilde kullanılır:<br />
<br />
Bu imin src özniteliği bu görüntü dosyasının nerede bulunacağını belirtir. Bu<br />
örnekte bayrak.gif dosyası bu HTML belgesinin bulunduğu dizinin içindeki images2<br />
dizinindedir. Eğer bu web sayfası ile resim dosyası aynı dizinde olsaydı, sadece dosya<br />
ismini vermek yeterli olurdu. Ayrıca src değeri için tam bir URL adresi de verilebilir.<br />
Eğer gösterilmesini istediğimiz resim dosyası başka bir web sayfasında ise bu durumda<br />
img imi Tablo 4-4’deki gibi kullanılabilir.<br />
61
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
Türk Bayrağı<br />
<br />
<br />
<br />
Türk Bayrağı<br />
<br />
<br />
<br />
Tablo 4-4 Başka bir web sitesindeki görüntüyü kendi sayfamızda görüntüleme<br />
Bu durumda web tarayıcısı bu resim dosyası için belirtilen adrese bağlanır ve<br />
resim dosyasını o web sayfasından indirip kullanıcıya gösterir.<br />
Ayrıca bu web sayfasında bayrak resmi tarayıcı içinde sağa yanaşık olarak<br />
gözükmektedir. Bunun sebebi ise align özniteliğinin değerinin right olarak<br />
verilmesidir.<br />
Görüldüğü gibi img başlangıç ve bitiş im çifti arasında herhangi bir şey<br />
bulunmamaktadır. Dolayısıyla bu örnekteki img imini şu şekilde yazmak ta mümkündür:<br />
<br />
Bu durumda bitiş img imi kullanılmaz. Onun yerine başlangıç iminin kapanış<br />
işaretinden yani büyüktür işaretinden hemen önce taksim işareti kullanılır. Bu yöntem tek<br />
bir img imini hem başlangıç hem de bitiş imi olarak kullanmamıza imkan verir.<br />
Örnek Uygulama<br />
İnternette bulacağınız bir görüntüyü bilgisayarınıza indiriniz? Bu bölümde olduğu<br />
gibi indirmiş olduğunuz görüntüyü bir web sayfası içinde görüntüleyiniz? Bunun için<br />
uygun HTML kodunu yazınız? Görüntüyü sayfanın ortasına, soluna ve sağına<br />
yerleştirmeyi deneyiniz?<br />
İlk uygulamanızda görüntü dosyası HTML belgesi ile aynı dizin içinde olsun.<br />
Sonra görüntü dosyasını bir alt dizin içine kopyalayınız ve o şekilde görüntüyü sayfanız<br />
içinde kullanınız? Bir sonraki adımda ise görüntüyü bir üst dizin içinde bir yere koyunuz<br />
ve bu şekilde sayfanız içinde kullanınız?<br />
62
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
4.6 Resim Boyu ve Resim Etrafında Metin Görüntüleme<br />
Bazı durumlarda resmin boyunun ne kadar olduğunu img imi ile belirtmek isabetli<br />
olur. Bunun nedeni ise bazen resmin web tarayıcısı tarafından indirilmesi zaman alır.<br />
Özellikle resimler büyük boyutlu olduğunda bu böyledir. Bir sayfadaki resim veya<br />
resimlerin indirilmesi bitmeden sayfanın kendisinin indirilmesi bitmiş olabilir. Eğer<br />
resmin boy ve eni img iminde belirtilmişse, tarayıcı resim için gereken boşluğu ayırır ve<br />
sayfanın diğer kısımlarını kullanıcıya gösterir. Eğer boy ve en verilmemişse ve resmin<br />
veya resimlerin indirilmesi tamamlanmamışsa bu durumda tarayıcı resimleri indirmeyi<br />
bekler. Bu da sayfayı görüntülerken zaman kaybına yol açar. Dolayısıyla sayfamızdaki<br />
resimlerin boylarını img iminde her zaman belirtmek isabetli olur.<br />
Resimlerin boylarını belirtmek için img iminin height ve witdh öznitelikleri<br />
kullanılır. Bu özniteliklere normalde resmin boyu ve eni ne ise o yazılır. Fakat eğer<br />
resmin daha küçük bir boyda gözükmesini istiyorsak boy ve en değerlerini küçük<br />
değerler olarak ta verebiliriz. Böylece resimlerin gerçek boylarından daha küçük olarak<br />
gözükmelerini sağlayabiliriz. Fakat bu genellikle yapılmaması gereken bir işlemdir.<br />
Çünkü resmi büyük olarak kullanıcıya gönderip, sonra da küçük olarak göstermek<br />
mantıklı olmaz. Eğer kullanıcının resmi küçük görmesini istiyorsak, bu durumda aynı<br />
resmin bir de küçük olan versiyonunu oluşturup onu kullanıcıya göndermemiz daha<br />
isabetli olur. Böylelikle daha küçük boyutlu bir resim kullanıcıya transfer edilmiş olur.<br />
Şimdi img imi ile birlikte height, width ve align özniteliklerinin de kullanıldığı bir<br />
örnek sayfa görelim. Daha önceki bayrak resmini kullanan bu şekildeki örnek bir sayfa<br />
Tablo 4-5’te verilmiştir.<br />
<br />
Türk Bayrağı<br />
<br />
<br />
<br />
Türk Bayrağı<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
<br />
<br />
Tablo 4-5 Görüntülerde en ve boy değerleri kullanma örneği<br />
Bu HTML belgesi web tarayıcısında Şekil 4-4’teki soldaki pencere gibi gözükür.<br />
63
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 4-4 Görüntü boyu ayarlama ve görüntü etrafında metin kullanımı<br />
Bu HTML belgesinde img iminin align özniteliği değeri left olarak verilmiştir.<br />
Bu da resmin solda, resimden sonra gelen metinlerin de onun yanında olmasını sağlar.<br />
Sağdaki sayfanın HTML belgesinde ise, align özniteliğine her hangi bir atama<br />
yapılmamıştır. Yani img imi şu şekildedir:<br />
<br />
Bu durumda align özniteliğine atama yapılmadığı için resimden sonra gelen<br />
metin resmin sağ yanına değil, resmin aşağısına yazılır. Eğer align özniteliği değeri<br />
right olarak verilseydi, bu durumda resim sağda, metin ise solda olacaktı. Yani left<br />
değerinde olduğunun tam tersi şeklinde olacaktı. Dolayısıyla eğer resmin etrafında metin<br />
olmasını istersek, align özniteliğini kullanıyoruz. Eğer resmin etrafında metin olmasını<br />
istemez isek bu durumda align özniteliğini kullanmıyoruz.<br />
Bu örnekte ayrıca height ve width değerlerinin de verildiğini görüyorsunuz. Bu<br />
durumda height ve width değerleri resmin boy ve en değerlerinden daha küçük,<br />
dolayısıyla resim ilk örneğe göre tarayıcı içinde daha küçük gözüküyor.<br />
Örnek Uygulama<br />
Web’den indirmiş olduğunuz bir görüntü dosyasını bilgisayarınıza kaydediniz? Bu<br />
dosyayı tasarlayacağınız bir web sayfası içinde görüntüleyiniz? Daha sonra bu dosyayı<br />
aynı sayfa içinde kendi seçeceğiniz farklı boylarda görüntüleyiniz? Buna ek olarak img<br />
iminin align özniteliğini kullanarak görüntünün etrafındaki metnin farklı şekillerde<br />
görünmesini sağlayınız?<br />
4.7 Tampon Boşluk: hspace ve vspace<br />
Yukarıdaki örnekte metin resmin yanında olduğu durumda, metin resmin hemen<br />
yanında gözükmektedir. Resmin etrafındaki boşluğu ayarlamak için img iminin iki tane<br />
özniteliği vardır: hspace ve vspace. Bu özniteliklere pixel cinsinden değerler vererek<br />
64
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
resmin etrafında ne kadar boşluk olması gerektiği ayarlanır. Yatay olarak resmin sağında<br />
ve solunda olması gereken boşluk miktarı hspace özniteliği ile belirlenir. Dikey olarak<br />
resmin üstünde ve altında olması gereken boşluk miktarı ise vspace özniteliği ile<br />
belirlenir. Şimdi bunun bir örneğini görelim. Yukardaki sayfada tampon boşluk Tablo<br />
4-6’daki gibi kullanılabilir.<br />
<br />
Türk Bayrağı<br />
<br />
<br />
<br />
Türk Bayrağı<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />
Turkiye Cumhuriyetini temsil eder<br />
<br />
<br />
Tablo 4-6 Görüntü etrafında tampon boşluk kullanma örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 4-5’deki gibi gözükür.<br />
Şekil 4-5 Görüntü etrafında tampon boşluk bırakma örneği<br />
Görüldüğü gibi bu durumda bayrak resminin hem sağında hem solunda boşluk<br />
bulunmaktadır. Sağındaki ve solundaki boşluk eşit olup hspace özniteliği ile<br />
65
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
belirlenmiştir ve 50 pixel boyundadır. Benzer şekilde resmin altında ve üstünde de boşluk<br />
vardır. Bu da vspace özniteliği ile belirlenmiştir ve 10 pixel boyundadır.<br />
Örnek Uygulama<br />
Bu örnekte olduğu gibi içinde bir görüntünün ve metinlerin olduğu bir sayfa<br />
tasarlayınız? Tasarladığınız sayfa içindeki görüntü sayfanın sol tarafında değilde sağında<br />
olsun. Görüntünün etrafında da yine metin olsun. Görüntü ile metin arasındaki boşluğu da<br />
hspace ve vspace öznitelik değerlerine farklı değerler vererek ayarlayınız?<br />
4.8 Görüntülerin Düğme Olarak Kullanılması<br />
HTML dilinin önemli bir özelliği de görüntülerden bağlantı oluşturulabilmesidir.<br />
Böylelikle görüntüler web sayfalarında düğme olarak kullanılabilir. Bu hem web<br />
sayfaları için farklı görünüşteki düğmeler tasarlamada faydalı olur, hem de özellikle<br />
kurum sitelerinde kurum logolarına tıklayarak kullanıcıların kurumun bütün web<br />
sayfalardan ana sayfasına kolayca dönülmesini sağlar.<br />
Bir görüntüden bağlantı oluşturan örnek bir sayfa Tablo 4-7’de gözükmektedir.<br />
Bu örnek sayfada Google logosundan Google web sitesine bir bağlantı oluşturulmuştur.<br />
<br />
Görüntüleri Düğme olarak Kullanma<br />
<br />
<br />
<br />
Tıklanabilir Görüntüler<br />
HTML dilinin önemli bir özelliği de görüntülerden bağlantı<br />
oluşturulabilmesidir. Böylelikle görüntüler düğme olarak ta<br />
kullanılabilir.<br />
<br />
<br />
Bunun için <a> baslangıç imi ile bitiş imi arasına<br />
<img> imini yerleştirmek yeterli olur. Yukardaki ikona<br />
tıklayabilirsiniz.<br />
<br />
<br />
Tablo 4-7 Bir görüntüden bağlantı oluşturma örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 4-6’daki gibi gözükür.<br />
66
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 4-6 Görüntüden bağlantı oluşturma<br />
Bir görüntünün tıklanabilir olmasını istersek bunu yukarıdaki HTML belgesinde<br />
olduğu gibi img imini a imi içine koyarak yaparız:<br />
<br />
Şu ana kadar oluşturduğumuz bağlantılarda başlangıç imi ile bitiş imi arasına<br />
bağlantı oluşturulacak metni yazıyorduk, bu durumda metin yerine img imini yazıyoruz.<br />
Böylece resme tıklandığında tarayıcı imi ile tanımlanmış olan adrese yönleniyor.<br />
Örnek Uygulama<br />
Türkiye’deki üç farklı üniversitenin logolarını web sitelerinden kendi<br />
bilgisayarınıza indiriniz? Tasarlayacağınız bir web sayfası içinde bu üç logoyu kullanınız<br />
ve her logodan da o üniversitenin web sitesine bir bağlantı veriniz? Eğer logo boyları<br />
farklı ise görüntü boylarını daha önceki bölümlerde gördüğümüz gibi ayarlayarak bütün<br />
logoların aynı boyda görünmesini sağlayınız?<br />
4.9 Görüntüler Üzerinde Tıklanabilir Bölgeler<br />
HTML dilinin sağladığı diğer önemli bir özellik de görüntülerin farklı bölgelerine<br />
farklı bağlantılar verilebilmesine imkân sağlamasıdır. Özellikle harita tipi uygulamalarda<br />
bu özellik çok faydalı olmaktadır. Haritada hangi mekan üzerine tıklarsanız oraya<br />
verilmiş bağlantı adresine gidilebilmektedir.<br />
Bununla ilgili Tablo 4-8’deki örnek tek bir görüntüdeki farklı gezegen<br />
resimlerinden farklı sayfalara bağlantı yapmayı gösteriyor.<br />
67
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
Görüntülerin alt bölgelerinden bağlantı oluşturma<br />
<br />
<br />
<br />
Alt Bölgeleri Tıklanabilir Görüntüler<br />
Resimdeki gezegenlerden Merkür ve Venüsün resimlerine tıklayarak<br />
o gezegenlerle ilgili wikipedia sayfasına gidebilirsiniz.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Tablo 4-8 Görüntülerin alt bölgelerinden bağlantı oluşturma örneği<br />
Bu web sayfası web tarayıcısı içinde Şekil 4-7’deki gibi gözükür:<br />
Şekil 4-7 Görüntülerin alt bölgelerinden bağlantı oluşturma<br />
Bu web sayfası içindeki gezegenleri gösteren resimde hangi gezegen üzerine<br />
tıklanırsa o gezegenle ilgili bir web sayfasına gidilmesini istiyoruz. Bunun için bu resmin<br />
farklı alt bölgelerinden farklı adreslere bağlantı vermemiz gerekiyor. Bağlantı verebilmek<br />
için de öncelikle aynı resim içinde farklı alt bölgeler tanımlamamız gerekir. Alt bölge<br />
tanımlama için HTML dilinde map imi kullanılır. Bu imle alt bölgelerin sınırları ve bu<br />
bölgelere tıklanıldığında gidilecek web sayfası adresleri tanımlanır. Daha sonra da img<br />
elemanından bu map elemanına referans verilir. Bu örnekte map tanımlama şu şekilde<br />
yapılmıştır:<br />
68
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
<br />
<br />
Resimde dört tane gezegen olmasına rağmen biz bu örnekte kolaylık olması<br />
açışından sadece iki tanesinden bağlantı oluşturduk. Öncelikle map imine bir isim<br />
veriyoruz. Çünkü daha sonra bu ime img elamanı içinden referans vermemiz gerekiyor.<br />
Map elemanına id ve name özniteliklerini kullanarak isim veriyoruz. Bunlardan id<br />
özniteliği şu anda kullanılması tavsiye edilen özniteliktir. Ama eski tarayıcılarda da<br />
sayfamızın çalışması için ikisini de kullanmamızda bir sakınca yok. Sonra map imi içinde<br />
istediğimiz kadar alt bölge tanımlayabiliriz. Bu örnekte biz iki tane alt bölge tanımladık.<br />
İlk alt bölge resimdeki ilk gezegen olan Merkür gezegeni için tanımlanmış bir dikdörtgen<br />
alan. İkinci alt bölge ise ikinci gezegen olan Venüs için tanımlanmış daire şeklinde bir<br />
alan. Merkür için olan alanın dikdörtgen olarak tanımlanmasının tek amacı dikdörtgen<br />
alan tanımlamayı göstermek içindir.<br />
Dikdörtgen bir alan tanımlanırken dikdörtgenin sol alt köşesinin x ve y<br />
koordinatları ile birlikte dikdörtgenin eni ve yüksekliği verilir. Bu örnekte 10 pixellik<br />
mesafe dikdörtgenin sol alt köşesinin resmin başlangıcından olan yatay uzaklığıdır.<br />
Dikdörtgenin sol alt köşesinin resmin tavanından dikey uzaklığı ise bu durumda 110<br />
pixeldir. Dikdörtgen alanın eni 50 pixel, yüksekliği ise 60 pixeldir. Fare ile kullanıcı bu<br />
tanımlanan dikdörtgen bölge üstüne gelip tıkladığında tarayıcı bu area elemanı içinde<br />
tanımlanmış bağlantıyla gösterilen web sayfasına yönlenir.<br />
Benzer şekilde dairevi bir alan tanımlarken dairenin merkezinin x ve y<br />
değerleriyle dairenin yarıçap büyüklüğü pixel cinsinden verilir. Bu örnekte Venüs için<br />
dairevi bir alan tanımlanmıştır.<br />
En çok kullanılan alt alan tanımlama şekilerli daire ve dikdörtgen olmasına<br />
rağmen, çokgen de tanımlanabilir. Çokgenin her köşesinin x ve y koordinatları<br />
verilmelidir.<br />
Örnek Uygulama<br />
Webden bir Türkiye haritası bulunuz ve bu haritayı kendi bilgisayarınıza indiriniz?<br />
Bu haritayı tasarlayacağınız bir web sayfası içinde kullanınız? Daha sonra bu haritanın<br />
içindeki 4 farklı şehirden tıklanabilir bağlantılar oluşturunuz? Her şehrin alt bölgesini<br />
tanımlarken seçtiğiniz şehrin sınırlarının oluşturduğu geometrik şekli dikkate alınız? Bazı<br />
şehirlerde yuvarlak tanımlama, bazılarında ise kare tanımlama daha mantıklı olabilir.<br />
Yapacağınız tanımlamanın şehrin bütün sınırlarını kapsaması gerekmez. Sadece şehir<br />
69
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
sınırlarının bir kısmını içerse yeterli olur. Her bir şehir için uygun geometrik şekli ve<br />
uygun koordinat noktalarını tespit ederek bu uygulamayı yapınız?<br />
4.10 Arka Plan Olarak Görüntü Kullanma<br />
Görüntülerin web sayfalarında bir kullanım şekli de arkla plan olarak<br />
kullanılmalarıdır. Arka plan olarak verilen görüntüler genellikle küçük boyutlu<br />
görüntülerdir ve bu görüntüler sayfada tekrar edilerek tek bir çeşit görüntü oluşturulur.<br />
Bunun için body iminin background özniteliği kullanılır. Böylece bir web sayfasının<br />
tümünün arka plan görüntüsü belirlenmiş olur.<br />
Şimdi küçük bir gif dosyasını arka plan olarak ayarlayalım. Arka plana<br />
koyacağımız görüntü Şekil 4-8’deki resimdir.<br />
Şekil 4-8 Arka planda kullanmak için görüntü örneği<br />
Bu resmin boyutu 247*100 pixeldir. Dosyanın boyu ise sadece 2 KB’dır. Bu<br />
resmi arka planda gösterecek HTML sayfa kodu Tablo 4-9’daki gibi olur.<br />
<br />
Görüntüleri Arka Plan Olarak Kullanma<br />
<br />
<br />
<br />
Arka Planda Görüntü Kullanımı <br />
Bu sayfanın arka planında soluk bir Turkiye resmi bulunmaktadır.<br />
Bu resimde iki tane küçük Turkiye resmi vardır. Bu iki resim<br />
sayfada hem yatay düzlemde hem dikey duzlemde tekrar ederek bütün<br />
sayfayı kaplamaktadır.<br />
<br />
<br />
Tablo 4-9 Sayfa arka planında görüntü kullanma örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 4-9’daki gibi gözükür.<br />
70
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 4-9 Arka planda görüntü kullanımı<br />
Görüldüğü gibi arka plan olarak belirlediğimiz resim arka planda tekrar<br />
etmektedir. Tarayıcı web sayfasının boyu büyükse bile bu resmi arka planda tekrarlar.<br />
Arka plan olarak görüntüleri kullanırken en önemli konu web sayfasının<br />
okunulurluğunun azalmamasıdır. Bu örnekte arka plandaki resimden dolayı metnin<br />
okunması biraz daha zorlaşmıştır. Dolayısıyla arka plan olarak seçtiğimiz resimlerde çok<br />
dikkatli olmalıyız. Genellikle arka plan olarak kullanılan resimler çok açık renkli olmalı<br />
ve metinler de koyu renkli olmalıdır. Böylece metinlerin okunması kolay olmalıdır. Ya da<br />
arka plana çok koyu renkli resimler konulup metinler açık renkli yapılmalıdır. Her ikisi<br />
de mümkündür. Önemli olan web sayfasının kolay okunabilir ve kullanılabilir olmasıdır.<br />
Şimdi biraz daha açık renkli bir resmi arka plana koymayı deneyelim. Bunun için<br />
kullanacağımız resim Şekil 4-10’da gözükmektedir.<br />
Şekil 4-10 Arka planda kullanmak için açık renkli bir görüntü<br />
Bu durumda aynı web sayfası tarayıcı içinde Şekil 4-11’deki gibi görünür. Web<br />
sayfasının okunulurluğu bu kez çok daha iyidir.<br />
71
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 4-11 Arka planda açık renkli görüntü kullanımı<br />
Arka plana konulan resimlerde önemli bir konu da resimlerin tekrar ettiğinin<br />
anlaşılmamasıdır. Bunun için resimlerin bittiği kenarların renklerinin uyumlu olması<br />
gerekir. Yukarıdaki her iki örnekte de resimlerin tekrar ettiği anlaşılmamaktadır. Arka<br />
plana koyacağımız rengi oluştururken buna özellikle dikkat etmemiz gerekir.<br />
Örnek Uygulama<br />
Webde arka planında görüntü kullanılmış olan bazı siteleri tespit ediniz ve o<br />
görüntüleri bilgisayarınıza indiriniz? Bu görüntüleri kendi tasarladığınız bir sayfada<br />
kullanınız?<br />
4.11 Referanslar<br />
[1] RGB color space, http://en.wikipedia.org/wiki/RGB_color_space, 7 Ekim 2009.<br />
[2] RGB color model, http://en.wikipedia.org/wiki/RGB_color_model, 7 Ekim 2009.<br />
[3] Image compression, http://en.wikipedia.org/wiki/Image_compression, 7 Ekim 2009.<br />
[4] Lossless data compression, http://en.wikipedia.org/wiki/Lossless_compression, 7<br />
Ekim 2009.<br />
[5] Lossy compression, http://en.wikipedia.org/wiki/Lossy_compression, 7 Ekim 2009.<br />
[6] BMP file format, http://en.wikipedia.org/wiki/BMP_file_format, 7 Ekim 2009.<br />
[7] Graphics Interchange Format,<br />
http://en.wikipedia.org/wiki/Graphics_Interchange_Format, 7 Ekim 2009.<br />
72
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
[8] Portable Network Graphics,<br />
http://en.wikipedia.org/wiki/Portable_Network_Graphics, 7 Ekim 2009.<br />
[9] JPEG, http://en.wikipedia.org/wiki/JPEG, 7 Ekim 2009.<br />
73
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 5<br />
5.1 Amaç<br />
LİSTELER VE TABLOLAR<br />
Bu bölümde amacımız düzenli verilerin web sayfalarında liste ve tablo halinde<br />
sunulmalarının öğrenilmesidir. Bunun için öncelikle liste çeşitleri işlenmiş, her liste<br />
çeşidinin özellikleri ve kullanım şekli anlatılmıştır. Sonra tablolar gösterilmiş ve gerekli<br />
HTML imleri anlatılmıştır. Tablo hücrelerinin birleştirilmesi, hücreler arasındaki<br />
mesafelerin ayarlanması, hücre içindeki içeriklerle hücre duvarı arasında bırakılacak<br />
boşluğun ayarlanması, hücrelerin arka plan renginin ayarlanması gibi konular işlenmiştir.<br />
Daha sonra tabloların sayfa tasarımında kullanımları anlatılmıştır.<br />
5.2 Liste Çeşitleri<br />
Listeler HTML belgelerinde bulunan bir grup elemanın liste halinde kullanıcıya<br />
sunulması için kullanılır. Örneğin Türkiye’deki il isimlerini kullanıcılara sunmak istersek<br />
bunu bir liste halinde sunmak daha anlaşılır olur. İşte bunun gibi birbiriyle ilgili<br />
elemanları gruplamak için HTML dilinde üç çeşit liste yapma imkanı vardır. Bunlar<br />
sıralı listeler, sırasız listeler ve tanım listeleridir. Bu liste çeşitleri HTML standardının<br />
[1] bir alt bölümünde [2] tanımlanmıştır.<br />
Liste imleri:<br />
: Sıralı liste oluşturma imi.<br />
: Sırasız liste oluşturma imi.<br />
: Tanım listesi oluşturma imi.<br />
74
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu imlere ek olarak imi sıralı ve sırasız listelerde her bir liste elemanını<br />
oluşturmak için kullanılır. Tanım listelerinde ise imi tanım için, imi ise<br />
tanımlanan elemanı açıklamak için kullanılır.<br />
5.3 Sıralı Listeler<br />
Sıralı listeler bir listedeki elemanların sırasının önemli olduğu durumlarda<br />
kullanılır [3]. Listedeki her bir elemanın listede bir yeri vardır. Buna göre sıralı bir liste<br />
oluşturulur. Böyle bir listeye örnek olarak alfabetik olarak sıralanmış şehir isimlerini<br />
düşünebiliriz. Bu listede her şehrin bir yeri vardır. Şimdi bununla ilgili örnek bir HTML<br />
belgesi oluşturalım. Türkiye’deki şehirlerden alfabetik sıraya göre ilk dördünü üç farklı<br />
sıralı liste halinde gösteren HTML kodu Tablo 5-1’de verilmiştir.<br />
<br />
Sıralı Liste Kullanımı<br />
<br />
<br />
<br />
Sıralı Liste Kullanımı<br />
Alfabetik sıraya göre ilk 4 şehrimiz şunlardır: <br />
<br />
Adana<br />
Adıyaman<br />
Afyon<br />
Ağrı<br />
<br />
Alfabetik sıraya göre ilk 4 şehrimiz şunlardır: <br />
<br />
Adana<br />
Adıyaman<br />
Afyon<br />
Ağrı<br />
<br />
Alfabetik sıraya göre ilk 4 şehrimiz şunlardır: <br />
<br />
Adana<br />
Adıyaman<br />
Afyon<br />
Ağrı<br />
<br />
<br />
<br />
Tablo 5-1 Sıralı liste kullanım örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 5-1’deki gibi gözükür.<br />
75
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 5-1 HTML belgesi içinde sıralı liste kullanım örneği<br />
HTML belgesinde gözüktüğü gibi, ilk sıralı liste bu belge içindeki im çifti<br />
arasındaki elemanlardan oluşmuştur. İlk im çifti arasında 4 tane im çifti<br />
vardır. Bunlar listenin her bir elemanını tanımlar. İlk listede başlangıç imi içinde<br />
listenin tipi verilmemiştir. Bu durumda listedeki elemanlar sayılarla sıralanmıştır. İkinci<br />
ve üçüncü listelerde ise başlangıç imi içinde type özniteliği ile listenin<br />
elemanlarının nasıl sıralanacağı belirtilmiştir. İkinci listede type değeri olarak "i",<br />
üçüncü listede ise "a" olarak verilmiştir. Dolayısıyla ikinci listedeki liste elemanları<br />
roma rakamlarıyla, üçüncü listedeki liste elemanları ise alfabedeki küçük harflerle<br />
sıralanmıştır. Üçüncü listede ayrıca sıralamanın hangi elemandan başlaması gerektiğini<br />
göstermek için start özniteliği kullanılmıştır. Bu özniteliğin değeri 3 olarak verildiği<br />
için sıralama üçüncü harften yani "c" harfinden başlamıştır.<br />
Sıralı listelerde type özniteliği değeri a, A, i, I veya 1 olabilir. Yani küçük<br />
harflerle, büyük harflerle, küçük roma rakamlarıyla, büyük roma rakamlarıyla ve<br />
sayılarla sıralama yapılabilir.<br />
Tablo 5-1’deki HTML kodlarında imi içinde bulunan imleri hemen<br />
satır başından değil de biraz daha içerden başlamıştır. Bu bir zorunluluk değildir. Sadece<br />
HTML belgelerinin programcı tarafından okunmasını biraz daha kolaylaştırmak içindir.<br />
Sayfa kodunu bu şekilde yazarsanız HTML belgeniz daha anlaşılır olur ve oluşabilecek<br />
hataları görme imkanınız da daha fazla olur.<br />
Örnek Uygulama<br />
76
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Kendi oluşturacağınız bir sıralı listeyi farklı sıralama karakterleriyle deneyiniz?<br />
Sıralı liste tipi olarak, yani sıralı liste type özniteliği değeri olarak a, A, i, I veya 1<br />
değerlerini veriniz? Bu listeler arasındaki farkları gözlemleyiniz?<br />
5.4 Sırasız Listeler<br />
Sırasız listeler daha çok listelenecek elemanlar arasında belirli bir sıra söz konusu<br />
olmadığı durumlarda kullanılır. Sırasız listelerde liste elemanlarının başında numara veya<br />
harf yerine küçük geometrik işaretler gözükür. Sırasız liste oluşturmak için imi<br />
kullanılır. Sırasız listeler için Tablo 5-2’deki gibi bazı çiçek isimlerini ve bir<br />
üniversitenin Mühendislik ve Fen Edebiyat Fakültelerindeki üçer bölümleri gösteren bir<br />
örnek HTML belgesi oluşturabiliriz.<br />
<br />
Sırasız Liste Kullanımı<br />
<br />
<br />
<br />
Sırasız Liste Kullanımı<br />
Bazı çiçek çeşitleri: <br />
<br />
Lale<br />
Papatya<br />
Gelincik<br />
<br />
Üniversitemizdeki bölümlerden bazıları şunlardır: <br />
<br />
Mühendislik Fakültesi<br />
<br />
Bilgisayar Mühendisliği Bölümü<br />
Gıda Mühendisliği Bölümü<br />
Çevre Mühendisliği Bölümü<br />
<br />
<br />
Fen Edebiyat Fakültesi<br />
<br />
Fizik Bölümü<br />
Kimya Bölümü<br />
Biyoloji Bölümü<br />
<br />
<br />
<br />
<br />
Tablo 5-2 HTML belgesi içinde sırasız liste kullanım örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 5-2’deki gibi gözükür.<br />
77
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 5-2 HTML belgesi içinde sırasız liste kullanım örneği<br />
Sıralı listelerde olduğu gibi sırasız listelerde de type özniteliği kullanılabilir. Bu<br />
durumda type özniteliği şu üç değeri alabilir: disc, circle, square. Tablo 5-2’deki<br />
örnek sayfada çiçek isimlerini gösteren listenin type özniteliği değeri circle olarak<br />
verilmiştir. Circle kelimesi ingilizcede daire demektir ve tarayıcı içinde ilk listenin<br />
elemanları, başında küçük ve içi boş daireler olduğu halde Şekil 5-2’de görünmektedir.<br />
Eğer bu listenin type özniteliği değeri disc olarak verilseydi, bu durumda liste<br />
elemanları başında içi dolu daire şekli olacaktı. Diğer yönden type özniteliği değeri<br />
square olarak verilseydi, bu durumda liste elemanları başında içi dolu küçük bir kare<br />
şekli konulacaktı.<br />
Bu örnekte çiçek isimlerini gösteren ilk liste basit bir liste iken, ikinci liste iç içe<br />
iki listenin kullanıldığı birleşik bir listedir. HTML dilindeki üç çeşit liste de iç içe<br />
kullanılabilir. İç listeler sırasız veya sıralı liste olabilirler. Bu örnekte ilk iç liste sırasız,<br />
ikinci iç liste ise sıralı liste olarak tanımlanmıştır. İç içe liste oluşturmada bir sınır yoktur.<br />
Bu örnekte sadece bir liste içinde diğer iki iç liste vardır. Fakat bir iç liste içinde de başka<br />
iç listeler olabilir. Bu şekilde çok katmanlı listeler oluşturulabilir.<br />
Örnek Uygulama<br />
Bu bölümdeki örnek sayfadaki ikinci listede sırasız bir liste içinde iki tane sıralı<br />
liste kullanılmıştır. Sırasız listenin her iki elemanı da birer sıralı listedir. Benzer bir<br />
uygulamayı siz yapınız? Fakat siz uygulamanızda sıralı bir liste içinde yine sıralı listeleri<br />
78
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
kullanınız? Örneğin 4 tane şehirden oluşan bir sıralı liste oluşturunuz? Fakat her şehrin<br />
ilçeleri de ayrıca bu liste içinde sıralı listeler olarak bulunsun.<br />
5.5 Tanım Listeleri<br />
Tanım listeleri her liste elemanının bir adının olması gerektiği durumlarda<br />
kullanılır. Bu durumda her liste elemanının başına bir numara ya da geometrik şekil<br />
konmaz. Onun yerine her liste elemanının bir adı vardır. Bu durumda her liste elemanı iki<br />
kısımdan oluşur. Birincisi kısım liste elemanının adı ya da başlığı, ikinci kısım ise bu liste<br />
elemanının açıklaması. Tanım listeleri kullanmayla ilgili örnek bir HTML sayfası Tablo<br />
5-3’de verilmiştir. Bu listede bazı çiçek isimleri ve her çiçek için bir açıklama mevcuttur.<br />
<br />
Tanım Listesi Kullanımı<br />
<br />
<br />
<br />
Tanım Listesi Kullanımı<br />
Bazı çiçek çeşitleri: <br />
<br />
Lale<br />
Lale bahar ayında açan kırmızı bir çiçektir.<br />
Papatya<br />
Baharda kırları süsleyen beyaz çiçektir.<br />
Gelincik<br />
Baharda açan bir diğer kırmızı çiçektir.<br />
<br />
<br />
<br />
Tablo 5-3 HTML belgesi içinde tanım listesi kullanım örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 5-3’deki gibi gözükür.<br />
79
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 5-3 HTML belgesi içinde tanım listesi kullanım örneği<br />
HTML belgesinde gözüktüğü gibi tanım listesi oluşturmak için imi<br />
kullanılır. Her bir liste elemanını oluşturmak içinse diğer iki çeşit listede olduğu gibi<br />
imi kullanılmaz. Çünkü her liste elemanı iki kısımdan oluşmaktadır. Liste<br />
elemanının adı imi ile tanımlanır. Liste elemanının açıklaması ise imi ile<br />
yapılır.<br />
Örnek Uygulama<br />
Bir tanım listesi uygulaması da siz yapınız? Bu listeniz yemekler hakkında veya<br />
sizin seçeceğiniz başka bir konu hakkında olabilir. Listenizin tanım kısmındaki metni<br />
koyu ve biraz daha büyük karakterli yapmayı deneyiniz?<br />
5.6 Tablolar<br />
Tablolar web sayfalarında birçok farklı amaç için kullanılan çok faydalı bir<br />
HTML elemanıdır [4]. Bu amaçlardan ilki sunulmak istenen bilginin kullanıcıya bir tablo<br />
halinde gösterilmesidir. İkinci bir amacı ise web sayfa tasarlarken tablolarla web<br />
sayfasını farklı bölgelere ayırmaktır. Tablolarla ilgili kurallar HTML standardının bir<br />
parçası olarak tanımlanmıştır [5].<br />
HTML dilinde tablo oluşturmak için imi kullanılır. Her tablo satırlardan<br />
oluşur. Her bir satır imi ile oluşturulur. Dolayısıyla liste oluşturmada olduğu gibi bir<br />
imi içinde imi ile oluşturulmuş birçok satır bulunur. Sütunları tanımlamak<br />
için ayrıca bir im yoktur. Tablolar sadece satırlardan oluşur. Fakat bu durumda ayrıca her<br />
bir satır içinde birçok hücre elemanı vardır. Bu hücre elemanlarını oluşturmak için ise<br />
imi kullanılır. Her satırdaki hücre sayısı ise tablonun sütun sayısını belirler.<br />
80
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Tablo 5-4’de vize sonuçlarını öğrencilere duyurmak için yapılmış örnek bir tablo<br />
sayfası görünmektedir.<br />
<br />
Tablo Kulanımı<br />
<br />
<br />
<br />
Vize Sonuçları<br />
<br />
<br />
Sıra No<br />
İsim<br />
Not<br />
<br />
<br />
1<br />
Ali Ak<br />
70<br />
<br />
<br />
2<br />
Veli Aslan<br />
80<br />
<br />
<br />
3<br />
İlker Arı<br />
75<br />
<br />
<br />
<br />
<br />
Tablo 5-4 Vize sonuçlarını tablo içinde sunma örneği<br />
Bu örnekte iminin border isimli bir özniteliği kullanılmıştır. Bu<br />
öznitelik tablonun çerçevesinin kalınlığını belirler. border özniteliği değeri 1 olarak<br />
verildiğinde oluşacak tablo Şekil 5-4’deki en soldaki tarayıcı şekli içindeki tablo gibi<br />
olur. border özniteliği değeri 5 olarak verilirse, bu durumda tablonun etrafındaki çerçeve<br />
daha kalın olur ve ortadaki tarayıcı şeklindeki gibi gözükür. border özniteliği hiç<br />
tanımlanmazsa veya sıfır olarak verilirse, bu durumda tablo, en soldaki tarayıcı<br />
şeklindeki gibi çerçevesiz olarak gözükür.<br />
81
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 5-4 Vize sonuçlarını tablo içinde sunma örneği<br />
Tablo imleri: , , , <br />
Tablo 5-4’deki HTML belgesinde görüldüğü gibi bir HTML tablosu imi<br />
ile başlar ve imi ile biter. Tablo elemanını başlatan ve bitiren bu iki im çifti<br />
arasında, her satırı oluşturmak için bir im çifti kullanılır. Ayrıca her satır içindeki<br />
hücreleri tanımlamak için im çiftleri kullanılır. Genellikle her satırda eşit sayıda<br />
hücre bulunur. Örneğin bu tabloda her satırda 3 tane hücre vardır. Her bir hücre de <br />
imi ile tanımlanmıştır.<br />
Tablonun ilk satırı genellikle başlık satırı olur. Bu durumda başlık satırı içindeki<br />
hücreleri tanımlamak için imi yerine imi kullanılır. Böylece tarayıcı başlık<br />
satırındaki metni diğerlerine göre biraz daha koyu renkte gösterir. Fakat sadece ilk<br />
satırdaki hücreler başlık hücresi olabilir diye bir kural yoktur. Örneğin ilk sütundaki<br />
hücreler de başlık hücresi olarak tanımlanabilir.<br />
Örnek Uygulama<br />
Bir örnek tablo uygulaması yapınız? Bu tabloda bir öğrencinin ders isimlerini ve<br />
her dersten aldığı notları tutabilirsiniz. Ya da kendi seçtiğiniz bir konuda tablo<br />
oluşturabilirsiniz. Ayrıca bu bölümdeki uygulamada başlık satırı olarak tablonun ilk satırı<br />
seçilmiştir. Siz uygulamanızda başlık kısmı olarak tablonun ilk sütununu seçiniz?<br />
Tablonuzda ilk sütundaki hücre elemanları biraz daha koyu görünsün.<br />
5.5.1 Birleşik Satırlar ve Şutunlar: rowspan ve colspan öznitelikleri<br />
Bazı durumlarda birkaç hücrenin birleştirilmesi gerekir. Bu birleştirme aynı<br />
satırdaki birkaç hücrenin veya aynı sütundaki birkaç hücrenin birleştirilmesi seklinde<br />
olur. Hatta bazen birleştirilen hücreler hem birden fazla satır hücresinden hem de birden<br />
fazla sütun hücresinden oluşabilir. Bu durumda satırları birleştirmek için hücrelerin<br />
rowspan özniteliği, sütunları birleştirmek için ise hücrelerin colspan özniteliği kullanılır.<br />
82
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu öznitelikler ve imlerinin öznitelikleridir. Bir hücrenin kaç satırdan ve<br />
sütundan oluşacağını belirler.<br />
Şimdi bir önceki bölümdeki örneği biraz daha genişletelim. Tablonun ilk satırı<br />
“Final Sonuçları” metnini içersin. Dolayısıyla bu satırda sadece bir hücre olsun. Yani ilk<br />
satırdaki bütün sütunlar birleştirilmiş olsun. Bu tabloya bir diğer ek olarak ta bir sütun<br />
ekleyelim. Bu sütunda öğrencileri başarı durumunu gösterilsin. Bu durumda HTML<br />
belgemizin yeni hali<br />
Tablo 5-5’deki gibi olur.<br />
<br />
Tablo Kulanımı<br />
<br />
<br />
<br />
<br />
<br />
Final Sonuçları <br />
<br />
<br />
Sıra No<br />
İsim<br />
Not<br />
Durum<br />
<br />
<br />
1<br />
Ali Ak<br />
70<br />
Geçti<br />
<br />
<br />
2<br />
Veli Aslan<br />
80<br />
<br />
<br />
3<br />
İlker Arı<br />
75<br />
<br />
<br />
<br />
Tablo 5-5 HTML tablosunda birleştirilmiş hücre kullanım örneği<br />
Bu HTML belgesi tarayıcı içerisinde Şekil 5-5’deki gibi gözükür.<br />
83
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 5-5 HTML tablosunda birleştirilmiş hücre kullanım örneği<br />
Görüldüğü gibi bu örnekte tablonun ilk satırında yani ilk im çifti içinde<br />
diğer satırların aksine sadece tek bir hücre elemanı bulunmaktadır. Bu hüce<br />
elemanının da colspan özniteliği 4 olarak verilmiştir. Bu ilk satırda tek bir hücre<br />
olacağını ve bu hücrenin 4 sütun genişliğinde olacağını gösterir. Yani ilk satırda tek bir<br />
hücre elemanı olacak ve tablonun bütün satırını kaplayacaktır. Şekil 5-5’deki tarayıcı<br />
şeklinden de görüldüğü gibi, tablonun ilk satırında sadece tek bir hücre elemanı vardır ve<br />
bu hücre 4 sütuna yayılmıştır.<br />
Bu tablodaki ikinci farklılık ise üçüncü satırdaki son hücre elemanındadır.<br />
Üçüncü satırın ilk üç elemanı normal olarak tanımlanmıştır, fakat son hücre elemanı<br />
tanımlanırken bu hücrenin yani iminin rowspan özniteliği 3 olarak verilmiştir. Bu<br />
öznitelik değeri üçüncü satırın son elemanının 3 satır boyunda olacağını göstermektedir.<br />
Fakat bu işlem üçüncü satırın son hücresinin boyunu 3 satır yüksekliğinde yapmak için<br />
yeterli değildir. Ayrıca yapılması gereken bir işlem daha vardır. Dördüncü ve beşinci<br />
satırlar tanımlanırken bu satırların son hücreleri tanımlanmamalıdır. Çünkü bu<br />
satırlardaki son elemanın yerine üçüncü satırın son elemanı genişleyecektir. Dolayısıyla<br />
çok satıra yayılan bir hücre oluşturabilmek için hem o hücrenin rowspan özniteliği değeri<br />
verilir, hem de kendisinden sonra gelen satırlar ona göre ayarlanır.<br />
Örnek Uygulama<br />
Oluşturacağınız bir tabloda farklı noktalardaki hücreleri birleştirmeyi deneyiniz?<br />
Örneğin bu bölümde tablonun son sütunundaki üç tane hücre birleştirilmişti. Siz tablonun<br />
ortasından bir sütundaki üç tane hücreyi birleştirmeyi deneyiniz? Benzer şekilde bu<br />
bölümdeki örnekte ilk satırdaki bütün hücreler birleştirilmişti, siz tablonun diğer<br />
satırlarındaki hücreleri birleştirmeyi deneyiniz?<br />
84
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
5.5.2 Tablo Arka Plan Rengi Ayarlama: bgcolor özniteliği<br />
Tabloların arka plan rengini ayarlamak mümkündür. Tüm tablonun arka planı bir<br />
renk olarak verilebileceği gibi, her bir satırın arka plan rengi farklı farklı da ayarlanabilir.<br />
Hatta her bir hücrenin arka plan rengi kendine özgü olarak belirlenebilir. Bu şekilde arka<br />
plan rengi ayarlanmış üç farklı tablo Şekil 5-6’da gözükmektedir.<br />
Şekil 5-6 Tablo arka plan rengi ayarlama örneği<br />
İlk tabloda bütün tablonun arka plan rengi tek bir renk olarak belirlenmiştir. İkinci<br />
tabloda her satırın arka plan rengi ayrı bir renk olarak ayarlanmıştır. Üçüncü tabloda ise<br />
her sütunun rengi farklı bir renk olarak verilmiştir.<br />
Şimdi yukarıdaki ilk tablonun, yani bütün arka plan renginin tek bir renk olduğu<br />
HTML belgesini görelim. Bu belgenin kodu Tablo 5-6’daki gibi olur.<br />
<br />
Tablo Arka Plan Rengi Ayarlama<br />
<br />
<br />
<br />
<br />
<br />
Sıra No<br />
İsim<br />
Memleket<br />
<br />
<br />
1<br />
Ali Ak<br />
Adana<br />
<br />
<br />
2<br />
Veli Aslan<br />
Mersin<br />
<br />
<br />
<br />
<br />
85
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Tablo 5-6 Tablo arka plan rengi ayarlama örneği<br />
Bütün tablonun arka plan rengi ayarlanmak istendiğinde table iminin bgcolor<br />
özniteliği kullanılır. Bu örnekte iminin bgcolor özniteliği değeri aqua olarak<br />
verilmiştir. Dolayısıyla bütün tablonun arka plan rengi açık mavi olmuştur.<br />
Şimdi Şekil 5-6’daki ikinci tablonun HTML kodunu görelim. Bu durumda her<br />
satırın arka plan rengini ayarlamak için her iminin bgcolor özniteliği kullanılır. Bu<br />
sayfanın HTML kodu<br />
Tablo 5-7’deki gibi olur.<br />
<br />
Tablo Arka Plan Rengi Ayarlama<br />
<br />
<br />
<br />
<br />
<br />
Sıra No<br />
İsim<br />
Memleket<br />
<br />
<br />
1<br />
Ali Ak<br />
Adana<br />
<br />
<br />
2<br />
Veli Aslan<br />
Mersin<br />
<br />
<br />
<br />
<br />
Tablo 5-7 Tablo satırlarının arka plan rengini ayarlama örneği<br />
İlk HTML belgesinde sadece iminin bgcolor özniteliği kullanılmıştı. Bu<br />
örnekte ise her satırın arka plan rengini farklı bir renge ayarlamak için, her iminin<br />
bgcolor özniteliği farklı bir renk olarak verilmiştir.<br />
Son olarak her sütunun farklı bir arka plan rengine sahip olduğu Şekil 5-6’daki en<br />
sağdaki tablonun HTML kodunu görelim. Bu sayfanın HTML kodu<br />
Tablo 5-8’deki gibi olur.<br />
86
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
Tablo Arka Plan Rengi Ayarlama<br />
<br />
<br />
<br />
<br />
<br />
Sıra No<br />
İsim<br />
Memleket<br />
<br />
<br />
1<br />
Ali Ak<br />
Adana<br />
<br />
<br />
2<br />
Veli Aslan<br />
Mersin<br />
<br />
<br />
<br />
<br />
Tablo 5-8 Tablo sütunlarının arka plan rengini ayarlama örneği<br />
HTML tablolarında sütunları belirtmek için direk bir yol yoktur. Bunun yerine her<br />
sütun bütün satırlardaki aynı sırada bulunan hücrelerin toplamı seklinde düşünülür.<br />
Örneğin ilk sütun bütün satırların ilk hücrelerinin toplamından oluşur. İkinci sütun bütün<br />
satırların ikinci hücrelerinin toplamından oluşur. Bütün sütunlar bu şekilde belirlenir.<br />
Dolayısıyla bir sütunun arka plan rengini ayarlamak için, bu sütunu oluşturan bütün<br />
hücrelerin arka plan rengi ayarlanmalıdır.<br />
Bu örnekte ilk sütunun rengini açık yeşil yapmak için, bu sütunu oluşturan bütün<br />
hücrelerin bgcolor özniteliği değeri lime olarak verilmiştir. Yani her satırın ilk<br />
hücresinin bgcolor özniteliği değeri lime olarak ayarlanmıştır. Benzer şekilde ikinci<br />
sütunun arka plan rengini gri yapmak için, bütün satırların ikinci hücrelerinin bgcolor<br />
özniteliği değeri silver olarak verilmiştir. Yine benzer şekilde üçüncü sütunun arka plan<br />
rengini pembemsi yapmak için, bütün satırların üçüncü hücrelerinin bgcolor özniteliği<br />
değeri fuchsia olarak verilmiştir. Bu şekilde üç sütunun arka plan rengi de farklı bir<br />
renk olarak ayarlanmıştır.<br />
Örnek Uygulama<br />
Oluşturacağınız 3x3 bir tabloda sadece ortadaki hücrenin arka plan rengi farklı<br />
olacak şekilde bir arka plan renk ayarlaması yapmayı deneyiniz? Tablonuzda arka plan<br />
rengi olarak farklı renk çeşitlerini kullanınız? Ayrıca tablonuzda arka plan olarak renk<br />
yerine görüntü kullanmayı deneyiniz?<br />
87
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
5.5.3 Hücreler Arasındaki Mesafeleri Ayarlama: cellspacing ve<br />
cellpadding<br />
HTML dili bir tablo içindeki çeşitli boşluk değerlerini ayarlamak için de birçok<br />
imkânlar sunar. Bunun için iminin iki tane özniteliği vardır: cellspacing ve<br />
cellpadding. Bunlardan cellspacing özniteliği hücreler arasındaki boşluk miktarını<br />
pixel olarak belirlemek için kullanılır. Yani iki hücre duvarı arasındaki boşluk miktarını<br />
belirler. cellpadding özniteliği ise hücrelerin içindeki metin ile bu hücrelerin duvarı<br />
arasındaki boşluk miktarını pixel cinsinden belirler.<br />
Tablolada cellspacing özniteliği kullanımını<br />
Tabloların cellspacing özniteliği hücreler arasındaki boşluk miktarını pixel<br />
olarak belirlemek için kullanılır. Şimdi cellspacing ile hücreler arasındaki boşluk<br />
miktarının nasıl ayarlandığını bir örnek HTML sayfası ile görelim. Tablo 5-9’daki<br />
HTML sayfasında cellspacing özniteliğinin örnek kullanımı gözükmektedir.<br />
<br />
Tablolarda boşluk miktarı ayarlama<br />
<br />
<br />
<br />
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
belgesi tarayıcı içinde ortadaki resimde olduğu gibi görünür. Bu durumda hücreler<br />
arasındaki boşluk miktarının ilk duruma göre çok daha küçük olduğu görülür. En son<br />
resimdeki tablonun oluşması için ise cellspacing özniteliği değeri 1 pixel olarak<br />
verilmelidir. Bu durumda hücreler arasındaki boşluk miktarı fark edilmeyecek kadar<br />
azdır. Özetle söylemek gerekirse cellspacing özniteliği hücreler arasındaki boşluk<br />
miktarını belirlemek için kullanılır.<br />
Şekil 5-7 Bir tablodaki hücreler arasındaki mesafeyi ayarlama örneği<br />
Tablolarda cellpadding özniteliği kullanımını<br />
Tablonun cellpadding özniteliği hücrelerin içindeki metin ile bu hücrelerin<br />
duvarları arasındaki boşluk miktarını pixel cinsinden belirler. Şimdi cellpadding<br />
özniteliği ile hücrelerin içindeki metin ile hücrelerin duvarları arasındaki boşluk<br />
miktarının nasıl ayarlandığını bir örnek HTML sayfası ile görelim. Bu amaçla yazılmış<br />
bir HTML sayfası Tablo 5-10’da verilmiştir.<br />
<br />
Tablolarda boşluk miktarı ayarlama<br />
<br />
<br />
<br />
<br />
<br />
Sıra No<br />
Çiçek <br />
Renk<br />
<br />
<br />
1<br />
Lale<br />
Kırmızı<br />
<br />
<br />
2<br />
Gelincik<br />
Kırmızı<br />
<br />
89
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
<br />
Tablo 5-10 Tabloların cellpadding özniteliği kullanımı<br />
Bu HTML belgesi tarayıcı içinde Şekil 5-8’deki en soldaki tarayıcı resminde<br />
olduğu gibi görünür. Bu HTML belgesindeki elemanının cellpadding<br />
özniteliği tanımlanmış olup değeri 10 pixel olarak verilmiştir. Bu 10 pixel hücrelerin<br />
içindeki metinler ile hücre duvarları arasındaki boşluk miktarını gösterir. Örneğin bu<br />
tabloda hücre içindeki metinler daha önceki tablolarda olduğu gibi hemen hücre duvarı<br />
yanında başlamamıştır. Hücre duvarı ile metin arasında hem solda ve sağda, hem yukarda<br />
ve aşağıda 10 pixel miktarında boşluk vardır.<br />
Şekil 5-8’deki ortadaki tarayıcı resmindeki tabloda cellpadding özniteliği değeri<br />
5 pixel olarak verilmiştir. Bu durumda hücre içindeki metin ile hücre duvarı arasındaki<br />
boşluk ilk tabloya göre çok daha küçüktür. Benzer şekilde son tabloda ise cellpadding<br />
özniteliği değeri 1 pixel olarak verilmiştir. Dolayısıyla hücre içindeki metin ile hücre<br />
duvarı arasındaki mesafe en az en soldaki tablodadır.<br />
Şekil 5-8 Tablolarda cellpadding özniteliği kullanımı örneği<br />
Örnek Uygulama<br />
Oluşturacağınız bir tabloda hem cellspacing hem de cellpadding<br />
özniteliklerini birlikte kullanınız? Küçük boyutlu ve büyük boyutlu tablolarda bu<br />
öznitelik değerlerini nasıl kullanmanız gerektiğini farklı sayısal değerler vererek<br />
araştırınız? Bu iki öznitelik değerinin görüntüyü nasıl etkilediğini gözlemleyiniz?<br />
90
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
5.5.4 Tablo Boyu ve Metin Pozisyonu Ayarlama: width, height, align<br />
ve valign<br />
HTML dili web sayfalarındaki tabloların eninin ve yüksekliğinin ayarlanmasına<br />
imkân verir. Bir tablonun tamamının eni ve yüksekliği ayarlanabileceği gibi, her bir<br />
satirinin veya her bir hücresinin de en ve yüksekliği ayarlanabilir. Tabloların en ve<br />
yüksekliğinin ayarlanabilmesi için width ve height öznitelikleri kullanılır. Bu<br />
öznitelikler , , ve imleriyle kullanılabilir. Yani tüm bir tablonun,<br />
veya bir satırın, veya bir hücrenin eni ve boyu ayarlanabilir. Eni ayarlamak için width<br />
özniteliği, yüksekliği ayarlamak için ise height özniteliği kullanılır.<br />
Bazı durumlarda hücre boyu içindeki metinden çok daha büyük olabilir. Bu<br />
durumda hücre içindeki metnin nerede gösterileceği önemlidir. Hücrelerin içindeki<br />
metnin bulunacağı pozisyon align ve valign öznitelikleriyle belirlenir. Metnin yatay<br />
düzlemdeki pozisyonu align özniteliği ile ayarlanır. Metnin dikey düzlemdeki<br />
pozisyonunu ise valign özniteliği ile ayarlanır. Metin yatay düzlemde sola yanaşık,<br />
hücre ortasında veya sağa yanaşık olabilir. Metin dikey düzlemde ise yukarda, ortada<br />
veya aşağıda olabilir.<br />
align özniteliği metnin hücre içinde yatay düzlemdeki pozisyonunu belirler ve şu<br />
değerleri alabilir:<br />
left = sola yanaşık<br />
center = ortada<br />
right = sağa yanaşık<br />
valign özniteliği metnin hücre içinde dikey düzlemdeki pozisyonunu belirler ve<br />
şu değerleri alabilir:<br />
top = yukarda<br />
middle = ortada<br />
bottom = aşağıda<br />
Şimdi tablo boyu ve metin pozisyonu ayarlamasıyla ilgili bir örnek HTML belgesi<br />
görelim. Bu amaçla yazılmış bir sayfa kodu Tablo 5-11’de verilmiştir.<br />
<br />
Tablo Boyu Ayarlama<br />
<br />
<br />
<br />
<br />
91
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
Parça <br />
Açıklama<br />
<br />
<br />
İşlemci<br />
Merkezi İşlem Birimi yani CPU (Central Processing<br />
Unit) bir bilgisayarın beynidir. Mantıksal ve Aritmetik<br />
bütün işlemler burada yapılır.<br />
<br />
<br />
Bellek<br />
Bellek işlemcinin işlem yapacağı bilgilerin ve<br />
komutların tutulduğu bir hafıza birimidir. İşlemci ile<br />
bellek arasinda yuksek hızlı bir veri yolu vardir. <br />
<br />
<br />
<br />
<br />
Tablo 5-11 Tablo boyu ve metin pozisyonu ayarlama örneği<br />
Bu HTML belgesi tarayıcı içerisinde Şekil 5-9’daki gibi gözükür.<br />
Şekil 5-9 Tablo boyu ve metin pozisyonu ayarlama örneği<br />
Tablo genişliği ve yüksekliği ayarlama<br />
Öncelikle tablo boyunun nasıl ayarlandığına bir bakalım. iminde width<br />
ve height öznitelikleri kullanılmıştır. width özniteliği değeri "100%" olarak verilmiştir.<br />
Burada 100 değerinden sonra gelen % karakteri tablo genişliğinin yüzde olarak verildiğini<br />
gösterir. Tablo genişliği tarayıcı penceresi genişliğine göre ayarlanacaktır. Yüzde yüz<br />
demek bu tablonun genişliğinin tarayıcı genişliği kadar olacağı anlamına gelmektedir.<br />
Zaten Şekil 5-9’daki görülen tarayıcı penceresinde de tablonun genişliğinin tarayıcı<br />
genişliği kadar olduğu görülmektedir.<br />
92
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Tablonun yüksekliği ise iminin height özniteliği ile ayarlanmıştır.<br />
Yükseklik de yine yüzde olarak verilmiş ve bağıl olarak ayarlanmıştır. Bu durumda tablo<br />
yüksekliği tarayıcı yüksekliğinin yüzde doksanı olarak verilmiştir. Yukarıdaki tarayıcı<br />
penceresinde alt kısımda bir boşluk gözükmektedir. Bu boşluk yüzde onluk boş kısımdır.<br />
Bu örnekte tablonun hem eni hem de yüksekliği yüzde olarak verilmiştir. Bunun<br />
bir avantajı tablo boyunun tarayıcı penceresi boyuyla orantılı olarak değişmesidir.<br />
Tarayıcı penceresi boyu büyütülürse, tablonun da boyu büyüyecektir. Tarayıcı peceresi<br />
boyu küçültülürse tablo boyu da küçülecektir.<br />
Tabloda satır yüksekliği ayarlama<br />
Bu örnekte ayrıca tablonun ilk satırının yüksekliği 40 pixel olarak verilmiştir.<br />
Yani ilk satırın height özniteliği değeri 40 olarak atanmıştır. 40 değerinin yanında yüzde<br />
işareti yoktur. Bu da yüksekliğin 40 pixel olacağı anlamına gelmektedir. Bu şekilde<br />
yükseklik pixel olarak verildiğinde, tarayıcı boyu büyütülse bile ilk satırın yüksekliği<br />
değişmez. Çünkü yükseklik izafi olarak verilmemiştir. İlk satır yüksekliği her zaman 40<br />
pixel olur.<br />
Tabloda sütun genişliği ayarlama<br />
Bir sütunun genişliği o sütundaki her hangi bir hücrenin genişliği ayarlanarak<br />
ayarlanır. Bu örnekte ilk satırın ilk hücresinin genişliği yani width öznitelik değeri yüzde<br />
20 olarak verilmiştir. Dolayısıyla tablonun ilk sütununun genişliği tablonun toplam<br />
genişliğinin yüzde 20’si kadar olacaktır. Tablo büyürse ilk sütunun genişliği de izafi<br />
olarak büyüyecektir. Şekil 5-9’da tablonun ilk sütununun genişliğinin tablonun toplam<br />
genişiliğinin 100’de 20’si kadar olduğu gözükmektedir.<br />
Hücre içindeki metin pozisyonu ayarlama<br />
Bu örnekte ikinci satırın yatay düzlemdeki metin pozisyonu center olarak<br />
ayarlanmıştır. Bu işlem tablonun ikinci iminin align özniteliği değeri center<br />
verilerek yapılmıştır. Böylelikle ikinci satırdaki bütün hücrelerin içindeki metinler yatay<br />
düzlemde hücre ortasında gösterilmektedir. Yine ikinci satırın ilk hücresi içindeki metnin<br />
pozisyonu dikey düzlemde yukarda olarak ayarlanmıştır. Bu işlemde ikinci satırın ilk<br />
hücresinin yani ilk iminin valign özniteliği değeri top atanarak yapılmıştır. Onun<br />
için tarayıcı içinde ikinci satırın ilk hücresi içindeki metin, yatay düzlemde ortada, dikey<br />
düzlemde ise yukarda gösterilmektedir. Üçüncü satırın ilk hücresinin pozisyonu hem<br />
yatay için hem dikey için ayarlanmıştır. Yatay pozisyonu orta, dikey pozisyonu ise aşağı<br />
olarak ayarlanmıştır. Bu işlem de üçüncü satırın ilk iminin align özniteliği değeri<br />
center, valign özniteliği değeri bottom atanarak yapılmıştır.<br />
Örnek Uygulama<br />
93
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Üç satırlık bir tablo oluşturunuz? Bu tablonun ilk ve son satırlarının boyu sabit<br />
iken, ortadaki satırının boyu değişken olsun. Tarayıcı pencere boyu büyütüldükçe ilk ve<br />
son satır boyları sabit kalsın ama ortadaki satırın boyu pencere boyuna bağlı olarak<br />
değişsin. Bu tablonun iki tane de sütunu bulunsun. İlk sütunun genişliği sabit iken ikinci<br />
sütunun genişliği değişken olsun.<br />
Oluşturmuş olduğunuz bu tablonun ortadaki hücresi içine birçok paragraftan<br />
oluşan bir metin yerleştiriniz. Bu hücrenin cellpadding özniteliğini kullanarak metnin<br />
hücre duvarına olan mesafesini ayarlayınız? Ayrıca tablonun diğer hücre elemanlarının<br />
align ve valign özniteliklerini kullanarak metin pozisyonu ayarlaması yapınız? Bu<br />
öznitelik değerinin farklı değerlerinin nasıl bir etki yaptığını gözlemleyiniz?<br />
5.5.5 Web Sayfası Tasarımı İçin Tablo Kullanımı<br />
Web sayfasını farklı bölgelere ayırmak için tablolar sıkça kullanılır [6]. Böylelikle<br />
web sayfası tarayıcı içinde daha düzenli görünür. Bu durumda tabloların kenarlıkları<br />
genellikle görünmez yapılır. Yani table elemanının border özniteliği değeri sıfır olur.<br />
Web farklı sayfası bölgelere ayrılırken her bölge bir hücreden oluşur. Bu<br />
hücrelerin arka plan renkleri farklı farklı ayarlanabilir. Böylelikle sayfanın kullanım<br />
kolaylığı artar. Tablolarda arka planda renk kullanma yerine görüntü de kullanılabilir.<br />
Aşağıdaki örnek sayfada bir hücrenin arka plan rengi bir görüntü ile ayarlanmıştır.<br />
Web sayfalarını bölgelere ayırırken kullanılan bir diğer teknik de, bir tablo içinde<br />
başka tabloların kullanılmasıdır. Bir tablo içindeki bir hücreye başka bir tablo<br />
yerleştirilebilir. Aşağıdaki örnek sayfada ikinci satırda böyle bir kullanım görülmektedir.<br />
Şimdi bir web sayfasını bir tablo yardımıyla üç ana bölgeye ayıran bir örnek sayfa<br />
tasarımı görelim. Bu bölgelerden birisi sayfanın başlık kısmı, ikincisi menü kısmı ve<br />
üçüncüsü de gövde kısmı olsun. Bu üç farklı bölge sayfa içinde yukardan aşağıya doğru<br />
tek bir sütunda bulunsun. Bu şekilde tasarlanmış bir web sayfası Tablo 5-12’de<br />
verilmiştir.<br />
<br />
Sayfa Tasarımı İçin Tablo Kullanımı<br />
<br />
<br />
<br />
<br />
<br />
<br />
Bilgisayar <br />
<br />
<br />
<br />
<br />
94
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
İşlemci<br />
Bellek<br />
Ön Bellek<br />
Hard Disk<br />
<br />
<br />
<br />
<br />
<br />
<br />
Bilgisayar hem veri işleyen yani<br />
hesaplamalar yapan, hem de veri depolayan bir makinadır.<br />
Modern anlamda ilk gelistirilen bilgisayar 1946 yılında<br />
yapımı tamamlanan ENIAC'tır. <br />
Merkezi İşlem Birimi (CPU)<br />
Merkezi İşlem Birimi yani CPU<br />
(Central Processing Unit) bir bilgisayarın beynidir.<br />
Mantıksal ve Aritmetik bütün işlemler burada yapılır.<br />
<br />
<br />
<br />
Tablo 5-12 Tablo kullanarak web sayfasını farklı bölgelere ayırma örneği<br />
Bu HTML belgesi tarayıcı içerisinde Şekil 5-10’daki gibi gözükür.<br />
Şekil 5-10 Tablo kullanarak web sayfasını farklı bölgelere ayırma örneği<br />
Bu örnekteki bütün bir sayfanın arka plan rengi body elemanının bgcolor<br />
özniteliği kullanılarak olive olarak ayarlanmıştır. Dolayısıyla bu sayfanın arka plan<br />
rengi tarayıcı içinde gözüken zeytin yeşili rengidir. Fakat bu sayfanın gövdesinde bir tane<br />
tablo bulunmaktadır. Bu tablo im çifti içindedir. Böylelikle tablo yatay<br />
düzlemde web sayfasının merkezine yerleştirilir. Sola ya da sağa yanaşık olmaz. Bu<br />
95
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
tablonun kenar çizgileri gözükmesin diye border özniteliği değeri de sıfır olarak<br />
atanmıştır.<br />
Sayfada bulunan ana tablonun üç tane satırı vardır. Her bir satır web sayfasının bir<br />
bölgesini oluşturmak için kullanılır. Her satırda bir tane hücre bulunmaktadır. Bu<br />
tablonun genişliği 500 pixel olarak verilmiştir. Dolayısıyla tarayıcı penceresi büyüklüğü<br />
ne olursa olsun, bu tablonun genişliği değişmeyecektir.<br />
Tablonun ilk satırı web sayfasının başlık kısmını oluşturmaktadır. Bu satırın arka<br />
plan rengi fuchsia olarak verilmiştir ve ilk satırın yüksekliği 60 pixel olarak<br />
ayarlanmıştır. Dolayısıyla bu sayfanın başlık kısmı tarayıcı büyüklüğü ne olursa olsun<br />
sabit kalacaktır. Tablonun bu ilk satırında sadece bir tane hücre vardır ve bu hücre içinde<br />
de bir im çifti içinde “Bilgisayar” metni vardır. Bu da sayfanın başlık kısmını<br />
oluşturmaktadır.<br />
Tablonun ikinci satırında da yine bir tane hücre bulunmaktadır. Bu satırın arka<br />
plan rengi silver olarak ayarlanmıştır. Bu satırın tek hücresi içinde ise bir başka tablo<br />
vardır. Bu tablo içinde ise bir tane satır bulunmaktadır. Bu satırda 4 tane hücre<br />
bulunmaktadır. Her bir hücrede bir bağlantı vardır. Böylece bu satırda bir menü<br />
oluşturulmuştur. Bu satır web sayfasının ikinci bölgesini, yani menü kısmını oluşturur.<br />
Bu satır bir tablo hücresi içinde yeni bir tablo oluşturmaya da bir örnektir.<br />
Tablonun üçüncü satırı ise web sayfasının ana gövdesini oluşturmaktadır. Bu<br />
satırda bir tane hücre vardır. Bu hücrenin arka planı bir gif dosyası olarak ayarlanmıştır.<br />
Görüldüğü gibi bu hücrede web sayfasının gövdesindeki her türlü eleman olabilir. Bu<br />
örnekte gövdede iki tane paragraf ve bir tane de ara başlık bulunmaktadır. Fakat daha<br />
fazla metin, görüntü, veya tablolar da bu gövde de bulunabilirdi.<br />
Örnek Uygulama<br />
Bu bölümde üç satırlık bir tablo web sayfasını farklı bölgelere ayırmak için<br />
kullanıldı. Siz tasarlayacağınız bir sayfada dört satırlık bir tablo kullanınız? Bu tablonun<br />
ilk üç satırı yine bu bölümdeki tablo gibi başlık, menü ve gövde kısımlarını oluştursun.<br />
Dördüncü satır ise sayfanın alt kısmını oluştursun. Bu alt kısımda genellike ya küçük bir<br />
menü ya da sayfa sahibi kurum hakkında kısa bilgiler bulunur. Siz de oluşturacağınız<br />
sayfanın bu alt kısmına ya bir menü ya da sayfa hakkında kısa bilgiler koyunuz? Ayrıca<br />
web’de bildiğiniz bazı sitelere bakıp sayfaların alt bölgelerini hangi amaçla<br />
kullandıklarını araştırınız?<br />
5.5.6 Tablolarla Başlık, Menü ve Gövde Tipi Web Sayfası Tasarımı<br />
Bir önceki bölümde web sayfası bir tablo yardımıyla üç ana bölgeye ayrıldı. Bu<br />
bölgeler başlık, menü ve gövde kısımlarıydı. Bu üç kısımda bir tablonun tek bir<br />
sütununda yukardan aşağıya doğru dizildiler. Bu örnekte yine aynı sayfayı farklı bir<br />
96
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
şekilde tasarlayalım. Bu tasarımda sayfa yine aynı şekilde üç farklı gölgeye ayrılsın.<br />
Fakat bu durumda menü kısmı sayfanın sol tarafında bulunsun. Yine syfa içeriği aynı<br />
şekilde kalsın.<br />
Bu durumda web sayfasında yine bir tane tablo olacak. Bir önceki belgede ana<br />
tabloda üç satır vardı, bu durumda ise iki satır olacak. İlk satır başlık kısmını oluşturacak.<br />
İkinci satırda ise iki tane hücre olacak. İlk hücre menü kısmı içerirken, ikinci hücre web<br />
sayfasının ana gövdesini içerecek.<br />
Bu şekildeki tasarlanmış bir HTML belgesi Tablo 5-13’de verilmiştir.<br />
<br />
Sayfa Tasarımı İçin Tablo Kullanımı<br />
<br />
<br />
<br />
<br />
<br />
<br />
Bilgisayar<br />
<br />
<br />
<br />
<br />
İşlemci<br />
Bellek<br />
Ön Bellek<br />
Hard Disk<br />
<br />
<br />
<br />
Bilgisayar hem veri işleyen yani<br />
hesaplamalar yapan, hem de veri depolayan bir makinadır.<br />
Modern anlamda ilk gelistirilen bilgisayar 1946 yılında<br />
yapımı tamamlanan ENIAC'tır. <br />
Merkezi İşlem Birimi (CPU)<br />
Merkezi İşlem Birimi yani CPU<br />
(Central Processing Unit) bir bilgisayarın beynidir.<br />
Mantıksal ve Aritmetik bütün işlemler burada yapılır.<br />
<br />
<br />
<br />
<br />
<br />
<br />
Tablo 5-13 Tablo kullanarak web sayfasını farklı bölgelere ayırma ikinci örneği<br />
Bu HTML belgesi tarayıcı içerisinde Şekil 5-11’deki gibi gözükür.<br />
97
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 5-11 Tablo kullanarak web sayfasını farklı bölgelere ayırma ikinci örneği<br />
Bu HTML belgesinde sayfanın menü kısmını oluşturabilmek için tablonun ikinci<br />
satırının ilk hücresinde bir tablo oluşturulmuştur. Daha önceki örnekte bu iç tabloda tek<br />
bir satır vardı ve bu satırda da dört tane hücre bulunmaktaydı. Bu örnek sayfada ise,<br />
menü elemanları yukardan aşağı doğru görüneceği için, bu iç tabloda 4 tane satır<br />
oluşturuldu ve her bir satırda da bir tane hücre oluşturuldu. Bu iç tablonun her hücresine<br />
de bir tane bağlantı yerleştirildi. Ayrıca ana tablonun ilk satırı iki hücre genişliğinde<br />
yapılmıştır. Bu işlem de ilk satırda bulunan tek hücrenin colspan özniteliği değeri 2<br />
olarak verilerek yapılmıştır.<br />
Örnek Uygulama<br />
Bu bölümde tasarlamış olduğumuz web sayfasınının aynısını içi içe iki tablo<br />
kullanarak yapınız? İlk tablo iki satırdan oluşsun ve her iki satırında da sadece birer hücre<br />
bulunsun. Fakat ikinci satırdaki hücre içinde yeni bir tablo oluşturunuz? Bu tabloda tek<br />
bir satır olsun. Bu satırda da iki tane hücre bulunsun. Bu şekilde iki tablo kullanarak bu<br />
bölümdeki web sayfasının aynısını elde ediniz?<br />
İkinci bir uygulama olarak ta dört bölgeden oluşan bir sayfa tasarımı yapınız? Bu<br />
bölgelerin ilk üçü bu bölümdeki örnekte olduğu gibi olsun. Dördüncü bölge ise sayfanın<br />
alt kısımda bulunsun. Başlık bölgesi gibi genişliği bütün sayfa genişliği kadar olsun.<br />
Fakat başlık bölgesinden daha küçük ve sayfanın en alt kısmında olsun. Bu sayfa<br />
tasarımını da iki farklı şekilde yapınız? Birinci yöntemde tek bir tabloda dört farklı<br />
bölgeyi oluşturunuz? İkinci yöntemde ise iki farklı tablo kullanarak sayfayı dört farklı<br />
bölgeye ayrınız? Bu durumda ilk tablonun üç satırı olsun. İkinici tablo ise ilk tablonun<br />
ikinci satırında bulunsun ve bir satırında iki hücresi olsun.<br />
98
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
5.7 Özetle<br />
Tablolar web sayfalarında çok farklı amaçlarla kullanılmaktadır. Hem verileri<br />
düzenli bir şekilde kullanıcıya sunmak, hem de web sayfası tasarımı yapmak için<br />
kullanılırlar. Tablolar web tasarımında en sık kullanılan HTML elemanlarından biridir.<br />
Kaliteli sayfa tasarımı yapabilmek için tablo kullanımını programcılar çok iyi<br />
bilmelidirler.<br />
Tablolar tek başlarına kullanılabilecekleri gibi iç içe de kullanılabilirler. Gerek<br />
kullanıcıya veri sunarken, gerek de web sayfası tasarımı yaparken tablolar bazen içi içe<br />
kullanılabilir. Tabloları iç içe kullanmaka bir sınır yoktur. Yani bir tablo içinde başka bir<br />
tablo olabilir. Onun de içinde başka bir tablo olabilir. Bu böylece devam edebilir. Fakat iç<br />
içe tablo kullanımı arttıkça sayfa tasarımı karmaşıklaşacağından çok fazla katmanlı<br />
olarak tabloların kullanılmaması tavsiye edilir.<br />
5.8 Referanslar<br />
[1] D. Raggett, A.L. Hors, ve I. Jacobs (editors), "HTML 4.01 Specification",<br />
http://www.w3.org/TR/html4, 24 December 1999.<br />
[2] Lists, http://www.w3.org/TR/html401/struct/lists.html, 7 Ekim 2009.<br />
[3] HTML Lists, http://www.w3schools.com/html/html_lists.asp, 7 Ekim 2009.<br />
[4] HTML Tables, http://www.w3schools.com/html/html_tables.asp, 7 Ekim 2009.<br />
[5] Tables, http://www.w3.org/TR/html401/struct/tables.html, 7 Ekim 2009.<br />
[6] HTML Layout, http://www.w3schools.com/html/html_layout.asp, 7 Ekim 2009.<br />
99
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 6<br />
BASAMAKLI STİL SAYFALARI (CSS)<br />
6.1 Amaç<br />
Bu bölümde amacımız, CSS stil sayfalarının ne olduğunun, temel özelliklerinin ve<br />
web sayfalarında kullanım şeklinin öğrenilmesidir. Bu amaçla öncelikle HTML ile CSS<br />
bağlantısı anlatılmış, mantıksal ve fiziksel düzenleme kavramları açıklanmıştır.<br />
Böylelikle hangi durumda HTML kullanılması gerektiği, hangi durumlarda ise CSS<br />
kullanılması gerektiği açıklanmıştır. Daha sonra CSS ile renk ayarlama ve metin<br />
özellikleri ayarlama anlatılmıştır. Tek bir HTML elemanı veya bir grup HTML elemanı<br />
için CSS kuralı yazma gösterilmiştir. Ayrıca fiziksel görüntüsü olmayan iki HTML<br />
elemanı tanıtılmıştır: ve . En son kısımda ise CSS ile web sayfası tasarımı<br />
yapma işlenmiştir.<br />
6.2 Giriş<br />
HTML dilinin temel amaçlarından biri bilgi paylaşımını kolaylaştırmaktır. Bunun<br />
için de HTML dilinin mümkün olduğunca basit olması amaçlanmıştır. HTML dilinin<br />
basit olması bir yandan çok önemli bir avantaj sağlamış ve bu dilin hızla yayılmasında<br />
önemli bir etken olmuştur. Diğer yandan bu dilin basitliği bazı dezavantajları da<br />
beraberinde getirmiştir. Örneğin, HTML dili web sayfaların görünümünü daha detaylı bir<br />
şekilde kontrol etmek isteyen programcılara yeterli imkânları sunamamıştır. Bunun için<br />
web sayfalarını daha detaylı kontrol ekmek amacıyla Basamaklı Stil Sayfaları (CSS)<br />
geliştirilmiştir [1, 2].<br />
6.3 Mantıksal ve Fiziksel Düzenleme<br />
Bir HTML belgesinde HTML imleriyle CSS beraber kullanıldığında, genel olarak<br />
HTML imleri bu belgeyi mantıksal olarak düzenlemek için, CSS ise bu belgedeki<br />
100
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
elemanları fiziksel olarak düzenlemek için yani görünümlerini ayarlamak için kullanılır.<br />
Mantıksal düzenlemeden amaç HTML belgesindeki elemanları tanımlamaktır [3].<br />
Örneğin bu belgedeki hangi metinler başlık olacak, hangileri paragraf olacak, hangileri<br />
liste olacak gibi. Bu tanımlamalar HTML ile yapılır. CSS ise tanımlanmış olan bu<br />
elemanların görünümlerini ayarlar. Başlık elemanları nasıl gözükmeli, paragraflar nasıl<br />
olmalı gibi.<br />
6.4 İlk CSS Örneği<br />
CSS stillerinin nasıl kullanıldığını görmek için bir örnekle başlayalım. Bu örnekte<br />
bir web sayfasındaki başlıkların ve paragrafların bazı özelliklerini CSS stili kullanarak<br />
ayarlayalım. Bu amaçla yazılmış bir HTML belgesi Tablo 6-1’de verilmiştir.<br />
<br />
İlk CSS kullanım Örneği<br />
<br />
<br />
h1 {color: green; text-align: center}<br />
h3 {color: brown}<br />
p {color: blue}<br />
<br />
<br />
<br />
Bilgisayar <br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />
hem de veri depolayan bir makinadir. Modern anlamda ilk<br />
geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır. <br />
Merkezi İşlem Birimi (CPU)<br />
Merkezi İşlem Birimi yani CPU (Central Processing<br />
Unit) bir bilgisayarın beynidir. Mantıksal ve Aritmetik<br />
bütün işlemler burada yapılır.<br />
<br />
<br />
Tablo 6-1 İlk CSS örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-1’deki gibi gözükür.<br />
101
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 6-1 İlk CSS örneği<br />
CSS Stil Kurallarının Belge İçindeki Yeri<br />
Bu HTML belgesinde CSS stil kuralları imi içerisinde yazılmıştır. CSS<br />
stil kuralları HTML belgesi içinde iki farklı şekilde daha yazılabilir. Bunları daha sonra<br />
göstereceğiz. Şimdilik yazacağımız bütün CSS stil kuralları imi içinde olacak.<br />
imi<br />
CSS stil kuralları im çifti içerisinde yazılır. Ayrıca her zaman bu imin<br />
type özniteliği yukarda olduğu gibi "text/css" olarak verilir. Böylece tarayıcı bu stil<br />
kuralının bir CSS stil kuralı olduğunu anlar.<br />
<br />
h1 {color: green; text-align: center}<br />
h3 {color: brown}<br />
p {color: blue}<br />
<br />
CSS Stil kuralları<br />
CSS Stil kuralları HTML belgesinde mantıksal olarak tanımlanmış olan elemanlar<br />
için yazılır. Bu örnekte HTML belgesinde tanımlanmış olan üç tane eleman (h1, h3, p)<br />
için stil kuralı yazılmıştır.<br />
CSS Stil kuralı Formatı<br />
CSS Stil kuralları şu formatta yazılır:<br />
102
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
secici {ozellik1: deger1; ozellik2:deger2; ... ozellikN:degerN;}<br />
İlk önce bu kuralın hangi elemana uygulanacağı belirtilmelidir. secici kuralın<br />
uygulanacağı elemanı belirtir. Daha sonra küme parantezi içinde bu elemana uygulanacak<br />
kurallar sıralanır. Her kural bir özellik adı ve bu özelliğin alması istenen değerden oluşur.<br />
özellik adı ile değeri arasında iki nokta konulur. Her iki kural arasına ise noktalı virgül<br />
konulur. Bizim örneğimizde ilk başlık için şu şekilde bir kural yazılmıştır:<br />
h1 {color: green; text-align: center}<br />
İlk önce kuralın uygulanacağı eleman olarak h1 verilmiştir. Satırın başındaki bu<br />
h1 ifadesi, küme parantezi içindeki kuralların web sayfası içindeki h1 elemanlarına<br />
uygulanacağını gösterir. Sonra h1 elemanının uyması gereken iki tane kural küme<br />
paramtezi içinde yazılmıştır. Bunlardak ilk kural h1 elemanının rengini yeşil yapmak<br />
içindir. Bu kuraldaki color ifadesi özellik adıdır ve renk demektir. Bu özelliğin değeri<br />
green (yeşil) olarak verilmiştir. Yani h1 elemanının tarayıcı içindeki rengi yeşil olarak<br />
ayarlanmıştır. İkinci kural ise h1 elemanının yatay düzlemde sayfanın ortasında<br />
gözükmesini sağlamak için yazılmıştır. Bu kuralın özelliğinin adı text-align’dır. Bu<br />
ifade metnin pazisyonu manasınadır ve değeri center, yani ortada olarak verilmiştir.<br />
Dolayısıyla h1 elemanı tarayıcı içinde yatay düzlemde ortada görünecektir.<br />
h3 {color: brown}<br />
p {color: blue}<br />
Diğer iki stil kuralı ise h3 ve p elemanlarının metin rengini ayarlamaktadır. h3<br />
elemanının rengi kahverengiye, p elemanlarının metin rengi ise maviye ayarlanmıştır.<br />
Tekrar eden Elemanlar<br />
Bu HTML belgesinde bir tane h1 ve bir tane de h3 elemanı vardır. Fakat p<br />
paragraf elemanından iki tane mevcuttur. Görüldüğü gibi paragraf elemanı için yazılan<br />
stil kuralı her iki paragrafa da uygulanmıştır. Her iki paragrafın da rengi mavi olarak<br />
gözükmektedir. Dolayısıyla stil içinde yazılan kurallar bir sayfadaki bütün aynı tip<br />
elemanlara uygulanmaktadır. Örneğin bu sayfada 10 farklı paragraf olsaydı, bu paragraf<br />
kuralı bu 10 paragrafın hepsine de uygulanacaktı. Benzer şekilde eğer bu sayfada 3 adet<br />
h3 elemanı olsaydı, h3 için yazılan kural bu sayfadaki bütün h3 elemanlarına<br />
uygulanacaktı.<br />
Mantıksal ve Fiziksel Düzenleme<br />
Bu örnekte de görüldüğü gibi HTML kodları bir belgedeki elemanları mantıksal<br />
olarak tanımlar. Yani hangi bölümlerin başlık, hangi bölümlerin paragraf olacağını<br />
belirler. CSS stil kuralları ise tanımlanmış olan bu HTML elemanlarının görünmesi<br />
gereken şekli belirler. HTML dili elemanların görünümü için bazı imkânlar sunmaktadır.<br />
103
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Fakat bunlar birçok durumda yeterli olmamaktadır. Onun için daha detaylı görünüm<br />
ayarlaması yapabilmek için CSS stil sayfaları kullanmak gerekmektedir.<br />
CSS Stil kuralı Kullanmanın Bir Avantajı<br />
CSS stil kuralları kullanmanın bir avantajı, bu kuralların sadece bir defa sayfa<br />
başında yazılmasıdır. Örneğin bir sayfadaki bütün paragrafların özellikleri bir stil kuralı<br />
ile belirlenebilir. Daha sonra HTML belgesi içinde ayrıca her paragraf için bu kuralları<br />
tekrar etmeye gerek yoktur. Böylece sayfa düzenlemesi yapmak çok daha kolay olur.<br />
Diğer yandan sayfamızdaki paragrafların bir özelliğini değiştirmek istersek, bu durumda<br />
sadece sayfa başında yazılmış tek bir CSS stil kuralını değiştirmek yeterli olur. Eğer her<br />
paragrafta bu özellikler ayrı ayrı yazılsaydı, bu durumda bütün paragrafların bir özelliğini<br />
değiştirmek çok daha zahmetli ve hataya açık olurdu.<br />
Örnek Uygulama<br />
İçinde en az üç tane başlık ve üç tane paragraf bulunan bir sayfa tasarlayınız? Bu<br />
sayfanın başlıklarının reklerini ve pozisyonlarını CSS stil kuralları yazarak ayarlayınız?<br />
Benzer şekilde paragraf metinlerinin renklerini ve pozisyonlarını da CSS stil kuralı<br />
yazarak belirleyiniz?<br />
6.5 CSS ile Arka Plan Rengi Ayarlama<br />
CSS ile bir web sayfasının tamamının arka plan rengi ayarlanabileceği gibi, her<br />
bir elemanın arka plan rengi de ayarlanabilir [4]. Şimdi bu işlemin nasıl yapıldığını<br />
gösteren bir sayfa görelim. Bu amaçla yazılmış bir HTML belgesi Tablo 6-2’de<br />
verilmiştir.<br />
<br />
İlk CSS Kullanım Örneği<br />
<br />
<br />
body {background-image: url("images2/arkaplan.gif")}<br />
h1 {background-color: #C0C0C0; color: #800000; text-align: center}<br />
h3 {background-color: yellow; color: brown}<br />
p {background-color: white; color: blue}<br />
<br />
<br />
<br />
Bilgisayar <br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan, hem de veri<br />
depolayan bir makinadir. Modern anlamda ilk geliştirilen bilgisayar<br />
1946 yılında yapımı tamamlanan ENIAC'tır. <br />
Merkezi İşlem Birimi (CPU)<br />
Merkezi İşlem Birimi yani CPU (Central Processing Unit) bir<br />
bilgisayarın beynidir. Mantıksal ve Aritmetik bütün işlemler burada<br />
yapılır.<br />
<br />
104
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
Tablo 6-2 CSS ile arka plan rengi ayarlama örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-2’deki gibi gözükür.<br />
Şekil 6-2 CSS ile arka plan rengi ayarlama örneği<br />
Web tarayıcı görüntüsünde olduğu gibi, bu örnekte önce bütün belgenin arka planı<br />
bir görüntü olarak ayarlanmıştır. Sonra her bir HTML elemanının arka plan rengi ayrı<br />
ayrı ayarlanmıştır.<br />
İlk HTML belgesindeki CSS kurallarına bu örnekte birkaç ekleme yapılmıştır. Bu<br />
belgenin CSS kuralları şu şekildedir:<br />
<br />
body {background-image: url("images2/arkaplan.gif")}<br />
h1 {background-color: #C0C0C0; color: #800000; text-align: center}<br />
h3 {background-color: yellow; color: brown}<br />
p {background-color: white; color: blue}<br />
<br />
Öncelikle bütün sayfanın arka plan rengini ayarlamak için HTML belgesinin body<br />
elemanı kullanılır.<br />
Arka Plan özellikleri: background-color ve background-image<br />
105
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu örnekte h1, h3 ve p elemanlarının arka plan rengi background-color<br />
özellikleri kullanılarak belirlenmiştir. Body elemanının arka planı ise background-image<br />
özelliği kullanılarak belirlenmiştir. background-color özelliği arka plan rengini bir renk<br />
olarak ayarlamak için kullanılır. Background-image özelliği ise arka plana bir görüntü<br />
yerleştirmek için kullanılır. Arka plan görüntüsünün adı verilirken, görüntü adı yukarda<br />
olduğu gibi url anahtar kelimesiyle birlikte parantez ve tırnak içinde verilir.<br />
CSS’te Renkler<br />
Bu örnekte h3 ve p elemanlarının arka plan rengi renk isimleri verilerek<br />
ayarlanmıştır. CSS’te de HTML’de kullanılan 16 farklı renk isimleri kullanılabilir. Bu<br />
renk isimleri şunlardır:<br />
Black, Green, Silver, Lime, Gray, Olive, White, Yellow,<br />
Maroon, Navy, Red, Blue, Purple, Teal, Fuchsia, Aqua.<br />
Bu örnekte ayrıca h1 elemanının arka planı ve metin rengi 24 bitlik sayısal RGB<br />
gösterim formatı kullanılarak ayarlanmıştır. CSS ayrıca renklerin bu şekilde<br />
tanımlanmasını da destekler. Bu gösterim şekli HTML’de olduğunun aynısıdır. Bu<br />
konuda daha geniş bilgi Görüntülerin anlatıldığı 3. bölümde mevcuttur.<br />
Örnek Uygulama<br />
En az üç farklı başlığın ve üç paragrafın olduğu bir HTML sayfası oluşturunuz?<br />
Bu sayfanın arka plan rengini ayrı, başlıkların arka plan rengini ayrı ve paragrafların arka<br />
plan rengini ayrı bir renge ayarlayınız?<br />
6.6 CSS ile Metin Fontu Ayarlama<br />
CSS ile HTML belgesindeki fontların birçok özelliği ayarlanabilir [5]. Bunlardan<br />
en önemlileri fontların büyüklüğü, fontun çeşidi, eğik veya koyu olması gibi özelliklerdir.<br />
Şimdi bununla ilgili bir örnek sayfa görelim. Bu amaçla tasarlanmış bir sayfa Tablo<br />
6-3’de verilmiştir.<br />
<br />
CSS Kullanım Örneği<br />
<br />
<br />
h1 {color: #800000;<br />
font-size: 20pt;<br />
font-family: arial;<br />
font-style: italic;<br />
font-weight: bold;<br />
text-align: center;<br />
}<br />
106
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
h3 {color: brown;<br />
font-size: 16pt;<br />
font-family: sans-serif;<br />
font-style: normal;<br />
font-weight: 400;<br />
margin-left: 0.5cm;<br />
}<br />
/* Butun paragraflar bu ozellige sahip olacak*/<br />
p {color: blue;<br />
font-size: 120%;<br />
font-family: times, courier;<br />
text-indent: 1cm;<br />
margin-left: 0.5cm;<br />
}<br />
<br />
<br />
<br />
Bilgisayar <br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />
hem de veri depolayan bir makinadir. Modern anlamda ilk<br />
geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır. <br />
Merkezi İşlem Birimi (CPU)<br />
Merkezi İşlem Birimi yani CPU (Central Processing<br />
Unit) bir bilgisayarın beynidir. Mantıksal ve Aritmetik<br />
bütün işlemler burada yapılır.<br />
<br />
<br />
Tablo 6-3 CSS ile metin fontu ayarlama örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-3’deki gibi gözükür.<br />
Şekil 6-3 CSS ile metin fontu ayarlama örneği<br />
107
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
CSS Stil Sayfalarında Boşluklar<br />
Bu HTML belgesinde ilk dikkati çeken özellik, CSS stil kurallarının birden çok<br />
satıra yayılmış olmasıdır. Daha önceki örneklerde bütün bir CSS kuralı tek bir satıra<br />
yazılmıştı. Bu durumda ise bir CSS kuralı içindeki her bir özellik ayrı bir satıra<br />
yazılmıştır. CSS kuralları yazılırken boşluklar ve boş satırlar ihmal edilir. Dolayısıyla<br />
kuralların bu şekilde çok satıra yazılmasında bir sakınca yoktur.<br />
CSS Stil Sayfalarına Açıklama Eklemek<br />
CSS stil sayfalarına açıklamalar eklenebilir. Açıklamanın başlangıcını taksim ve<br />
yıldız, yani /* karakter çifti gösterir. Açıklamanın bitimini ise yıldız ve taksim yani */<br />
karakter çifti gösterir. Bu örnek belgede paragraf için yazılan stil kuralından hemen önce<br />
bir açıklama eklenmiştir. Açıklamalar programlama dillerinde olduğu gibi tarayıcı<br />
tarafından ihmal edilirler. Açıklamalar tarayıcı için değil bu kodu okuyacak insanları için<br />
yazılırlar. Kodun anlaşılmasını kolaylaştırmayı hedeflerler.<br />
Font boyu: font-size<br />
CSS stil sayfalarında bir fontun boyunun ayarlanması için font-size anahtar<br />
kelimesi kullanılır. Yukarıdaki örnekte h1 elemanının boyu 20 punto, h3 elemanının boyu<br />
ise 16 punto olarak ayarlanmıştır. Paragraflardaki metinlerin boyu ise göreli olarak yüzde<br />
120 olarak verilmiştir. Yani bu fontun büyüklüğü tarayıcının varsayılan font boyundan<br />
biraz daha büyük olacaktır. Görüldüğü gibi font boyu çeşitli sekilerde verilebilir. Bu iki<br />
örneğe ek olarak cm veya in (inch) ölçu birimleri de font boyunu belirtmek için<br />
kullanılabilir.<br />
Bunlara ek olarak ayrıca font boyunu belirtmek için şu anahtar kelimeler de<br />
vardır: xx-small, x-small, small, medium, large, x-large, xx-large. Yüzde ile veya<br />
bu anahtar kelimelerle yapılan göreli boy ayarlaması daha esnektir. Farklı ortamlarda<br />
daha iyi sonuçlar vermesi ihtimali yüksektir.<br />
Font çeşidi: font-family<br />
Fontların çeşidi ise font-family anahtar kelimesiyle ayarlanır. Bu belgede h1<br />
başlığının çeşidi arial, h3 baslığının çeşidi sans-serif ve paragraf metinlerinin çeşidi<br />
ise times olarak ayarlanmıştır. Paragraf font çeşidi olarak iki değer verilmiştir. Bu<br />
durumda tarayıcı verilen ilk font çeşidini destekliyorsa onu kullanır. Eğer ilk font çeşidi<br />
desteklenmiyorsa, ikinci verilen font çeşidi kullanılır.<br />
Font stili: font-style<br />
108
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Fontların ne kadar dik veya yatık olacaklarını font-style özellikleri gösterir. Bu<br />
özelliğin alabileceği değerler: italic, normal ve oblique kelimeleridir. Bu özelliğin<br />
değeri normal olursa, font normal halinde olur. Eğer italic veya oblique olursa, bu<br />
durumda fontlar sağa doğru biraz yatırılır.<br />
Font Ağırlığı: font-weight<br />
Fontların ağırlığını yani ne kadar koyu veya açık olacaklarını font-weight<br />
özellikleri gösterir. Bu özellik 100, 200, 300, 400, 500, 600, 700, 800 ve 900 değerlerini<br />
alabilir. 100 değeri fontun en ince halini gösterir. 900 değeri ise fontun en kalın halini<br />
gösterir. 400 değeri normal kullanılan font ağırlığına karşılık gelir. Örneğin bu HTML<br />
belgesindeki h3 elemanının font ağırlığı 400 olarak verilmiştir. Font ağırlığı ayrıca<br />
normal, bold, lighter, bolder gibi kelime değerleri de alabilir.<br />
Solda veya Sağda Boşluk: margin-left ve margin-right<br />
Bir HTML elemanının tarayıcının sol veya sağ tarafına tamamen bitişik olmasını<br />
istemez isek, bu durumda bu eleman ile tarayıcının sol veya sağ tarafı arasında<br />
bırakılması gereken mesafeyi ayarlayabiliriz. Sol taraftaki bırakılması gereken boşluk<br />
mesafesini magrin-left özelliği ile ayarlarız. Bu örnekte h3 elemanı ve paragraflar için<br />
magrin-left özelliği 0.5cm olarak verilmiştir. Tarayıcı penceresinde görüldüğü gibi bu<br />
elemanlar tarayıcının en solu yerine biraz daha içerden başlamıştır. Sağ taraftaki<br />
bırakılması gereken boşluk mesafesini ise magrin-right özelliği ile ayarlarız. Bu<br />
örnekte margin-right özelliği kullanılmamıştır. Fakat benzer şekilde o da tarayıcının<br />
sağında boşluk bırakmak için kullanılabilirdi.<br />
Paragrafın ilk satırı başında boşluk: text-indent<br />
Birden çok satırdan oluşan elemanlarda ilk satırın başlangıcının biraz içerde<br />
olması istenebilir. İlk satırın başında olması gereken boşluk miktarını text-indent<br />
özelliği belirler. Bu örnekte paragrafın text-indent özelliği kullanılmıştır ve boşluk<br />
miktarı 1cm olarak verilmiştir. Tarayıcı penceresinde görüldüğü gibi paragrafların ilk<br />
satırları diğer satırlara göre daha içerden başlamıştır.<br />
Örnek Uygulama<br />
Bu bölümde HTML belgesi içindeki metinlerin birçok özelliğinin CSS kuralları<br />
ile nasıl belirleneceğini gördük. Her bir kuralın alabileceği farklı değerler bu bölümde<br />
açıklanmıştır. Fakat uygulama olarak bu değerlerden sadece bir kısmı gösterilebilmiştir.<br />
Hazırlayacağınız bir sayfa içinde bulunan başlıklar ve paragraflar için bu bölümde<br />
gösterilen font özelliklerini değişik değerlere atayarak sayfa içindeki fontların nasıl<br />
değiştiklerini gözlemleyiniz? Her bir özelliğin metin üzerinde nasıl bir fark<br />
oluşturduğunu anlamaya çalışınız?<br />
109
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
6.7 HTML Elemanları id özniteliği<br />
Bütün HTML elemanlarının id isimli bir özniteliği vardır. Bu öznitelik ile bir<br />
HTML elemanına bir isim verilir. Daha sonra isim vermiş olduğumuz bu HTML elemanı<br />
için CSS stil kuralı yazabiliriz. Şu ana kadar yazmış olduğumuz stil kuralları aynı tip olan<br />
bütün HTML elemanları için geçerli idi. Örneğin h3 için yazılan bir stil kuralı o belge<br />
içindeki bütün h3 elemanları için geçerli idi. Bu bölümde ise her bir HTML elemanına bir<br />
isim vererek tek bir elemana özel stil kuralı yazmayı göreceğiz.<br />
Şimdi id özniteliğinin nasıl kullanıldığını gösteren bir örnek HTML belgesi<br />
görelim. Bu amaçla yazılmış bir sayfa kodu Tablo 6-4’de verilmiştir.<br />
<br />
CSS Kullanım Örneği<br />
<br />
<br />
/* butun paragraflarin ozellikleri*/<br />
p {font-size: 110%;<br />
font-family: times, courier;<br />
text-indent: 1cm;<br />
text-align: justify;<br />
}<br />
/* ikinci paragrafin ozellikleri*/<br />
#p2 {color: maroon;<br />
font-family: arial, courier;<br />
margin-left: 2cm;<br />
margin-right: 2cm;<br />
}<br />
<br />
<br />
<br />
Bilgisayar <br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan, hem<br />
de veri depolayan bir makinadir. Modern anlamda ilk<br />
geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır. <br />
Merkezi İşlem Birimi yani CPU (Central<br />
Processing Unit) bir bilgisayarın beynidir. Mantıksal ve<br />
Aritmetik bütün işlemler burada yapılır.<br />
Bellek işlemcinin işlem yapacağı bilgilerin ve<br />
komutların tutulduğu bir hafıza birimidir. İşlemci ile<br />
bellek arasında yüksek hızlı bir veri yolu vardır.<br />
<br />
<br />
Tablo 6-4 HTML elemanları id özniteliği kullanımı örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-4’deki gibi gözükür.<br />
110
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 6-4 HTML elemanları id özniteliği kullanımı örneği<br />
Bu HTML belgesinin gövde kısmına baktığımızda, ikinci paragraf için id<br />
özniteliğinin tanımlandığını görürüz. İkinci paragraf için id özniteliği şu şekilde<br />
tanımlanmıştır:<br />
<br />
Artık ikinci paragrafın kendine özgü bir ismi vardır. Benzer şekilde diğer iki<br />
paragraf içinde bir id özniteliği tanımlanabilirdi. Fakat bu örnekte buna gerek olmadığı<br />
için sadece ikinci paragraf için tanımlanmıştır. Genel olarak bir HTML belgesindeki<br />
bütün elemanların: başlıkların, paragrafların, listelerin, tabloların, görüntülerin,<br />
bağlantıların, yani her türlü elemanın id özniteliği olabilir. Bir HTML elemanına id<br />
özniteliği kullanılarak bir isim verdikten sonra, bu elemana direk olarak ismiyle<br />
erişmemiz ve sadece ona özgü stil kuralları yazmamız mümkündür.<br />
Bu sayfanın stil kısmında iki tane stil kuralı yazılmıştır. İlk yazılan stil kuralı bu<br />
belgedeki bütün paragraflar içindir. İkinci stil kuralı ise özel ismi p2 olan ikinci paragraf<br />
içindir. İkinci paragrafın kendisi de bir paragraf olduğu için, p için yazılan stil kuralı bu<br />
paragrafa da uygulanır. Bu durumda ikinci paragrafa hem p için yazılan kurallar, hem de<br />
kendisi için yani p2 için yazılan kurallar uygulanır. İkinci paragrafın kendisi için yazılan<br />
kurallar bu paragrafın solunda ve sağında ikişer cm miktarında boşluk bırakılmasını<br />
gerektiriyor. Buna ek olarak font rengini maron olarak ayarlıyor. Dolayısıyla bu paragraf<br />
tarayıcı resminde de görüldüğü gibi daha içerde ve farklı renkte gözükmektedir.<br />
Yalnız dikkat edilirse font-family özelliğinin hem p için hem de p2 için<br />
tanımlandığını görürüz. Bu durumda ikinci paragrafın font ailesi ne olacaktır? Bu<br />
durumda p2 için yazılan kural p için yazılan kuraldan daha baskındır. Çünkü p2 için<br />
111
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
yazılan kural daha özeldir. Genel bir kural olarak, özel olan kurallar daha genel olan<br />
kurallara göre baskın olur. Dolayısıyla bu durumda ikinci paragrafın font ailesi p2 ile<br />
tanımlanan değer olur.<br />
Metin Hizalama: text-align<br />
HTML metin elemanlarının sayfanın yatay düzlemde neresinde bulunacağı<br />
CSS’te text-align özelliği ile belirlenir. Bu HTML belgesinde p için yazılan kuralda<br />
text-align özelliği kullanılmıştır. Bu özelliğin alabileceği değerler: left, right,<br />
center ve justify değerleridir. İsimlerinden anlaşılacağı gibi, left ve right değerleri<br />
metin elemanlarını sola veya sağa yanaşık yapar. Metin elemanlarını ortalamak için<br />
center kullanılır. Dağıtık hizalama için ise justify kullanılır.<br />
Örnek Uygulama<br />
Paragraflardan ve başlıklardan oluşan bir HTML belgesi hazırlayınız? Bu<br />
başlıklardan ve paragraflardan birer tanesinin id özniteliği değerini atayarak onlara özel<br />
ad veriniz? Daha sonra bu özel isimlendirdiğiniz elemanlar için CSS stil kuralı yazınız?<br />
Bu elemanların diğer elemanlardan farkını gözlemleyiniz?<br />
6.8 HTML elemanları class özniteliği<br />
HTML elemanlarının bir diğer önemli özniteliği ise class özniteliğidir. Bu<br />
öznitelik birçok HTML elemanının aynı isim altında gruplanmasını sağlar. Aynı sınıf<br />
ismi altında gruplanan bütün HTML elemanlarına bu sınıf ismiyle tanımlanan CSS<br />
kuralları uygulanabilir. Bir önceki bölümde gösterilen id özniteliği her bir elemanın<br />
kendine özgü bir isminin olmasına imkân tanıyordu. Böylece her bir elemanın ismi<br />
kullanılarak o elemana özgü stil kuralları yazılabiliyordu. Sınıf, yani class özniteliği ise<br />
bir HTML elemanı yerine, bir grup HTML elemanına aynı isimle stil kuralı yazmamıza<br />
imkân tanır. Örneğin bir HTML belgesinde yazacağımız bir stil kuralının bütün<br />
paragraflar veya tek bir paragraf yerine bazı paragraflara uygulanmasını isteyebiliriz. Bu<br />
durumda bu kuralın uygulanmasını istediğimiz paragrafları aynı sınıfa dâhil edip bu sınıf<br />
için bir stil kuralı yazarız. Böylece bu stil kuralı bu sınıfa dâhil olan bütün paragraflara<br />
uygulanır.<br />
Şimdi class özniteliği kullanımı ile ilgili bir örnek HTML belgesi görelim. Bu<br />
amaçla yazılmış bir sayfa Tablo 6-5’de verilmiştir.<br />
<br />
CSS Kullanım Örneği<br />
<br />
<br />
/* butun paragraflarin ozellikleri*/<br />
p {font-size: 110%;<br />
112
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
font-family: times, courier;<br />
}<br />
/* ikinci paragrafin ozellikleri*/<br />
#p2 {margin-left: 2cm;<br />
margin-right: 2cm;<br />
}<br />
/* kelimeleri arasinda cok bosluk olacak*/<br />
.aralıklı {text-indent: 1cm;<br />
word-spacing: 0.5cm;<br />
text-align: justify;<br />
}<br />
<br />
<br />
<br />
Bilgisayar <br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan, hem<br />
de veri depolayan bir makinadir. Modern anlamda ilk<br />
geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır. <br />
Merkezi İşlem Birimi yani CPU<br />
(Central Processing Unit) bir bilgisayarın beynidir.<br />
Mantıksal ve Aritmetik bütün işlemler burada yapılır.<br />
Bellek işlemcinin işlem yapacağı bilgilerin ve komutların<br />
tutulduğu bir hafıza birimidir. İşlemci ile bellek arasında<br />
yüksek hızlı bir veri yolu vardır.<br />
Hard disk ise bilgisayarda sürekli olarak<br />
depolanacak bilgileri kaydetmek için kullanılır. Hard<br />
diskteki bilgiler bilgisayar kapatıldıktan sonra da muhafaza<br />
edilir.<br />
<br />
<br />
Tablo 6-5 HTML elemanları class özniteliği kullanimi örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-5’deki gibi gözükür.<br />
113
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 6-5 HTML elemanları class özniteliği kullanimi örneği<br />
Bu HTML belgesinde üç farklı CSS kuralı tanımlanmıştır. İlk kural bütün<br />
paragraflara uygulanmak için tanımlanmıştır. İkinci kural sadece p2 paragrafına<br />
uygulanmak için tanımlanmıştır. Üçüncü kural ise aralıklı sınıfına dâhil olan bütün<br />
HTML elemanlarına uygulanmak için tanımlanmıştır. Bu belgede class özniteliği<br />
tanımlanmış olan ve bu öznitelik değeri aralıklı olan iki tane paragraf vardır. Bu<br />
paragraflar ikinci ve dördüncü paragraflardır. Dolayısıyla bu belgede aralıklı sınıfına<br />
ait olan paragraflar ikinci ve dördüncü paragraflardır.<br />
Bütün paragraflara uygulanmak için tanımlanmış olan kural sadece p diye<br />
başlamıştır. Diğer yandan sadece ikinci paragraf için, yani özel ismi p2 olan paragraf için<br />
yazılan kural #p2 diye başlamıştır. p2 değerinin başına konulan # karakteri bu kuralın<br />
sadece özel ismi yani id değeri p2 olan eleman için yazıldığını gösterir. Diğer yandan<br />
aralıklı sınıfı için yazılan kural .aralıklı diye başlamıştır. Buradaki nokta ise bu<br />
kuralın bir sınıf için yazıldığını gösterir. Dolayısıyla özel isimler için yazılan CSS<br />
kuralları # karakteri ile başlarken, sınıflar için yazılan CSS kuralları . karakteri ile<br />
başlamaktadır.<br />
Üç farklı CSS stil kuralı yazma şeklini şöyle özetleyebiliriz:<br />
p {...} Bu stil kuralı bu HTML belgesindeki bütün<br />
paragraflara uygulanacaktır.<br />
#p2 {...} Bu stil kuralı sadece id numarası p2 olan HTML<br />
114
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
elemanına uygulanacaktır.<br />
.aralıklı {...} Bu stil kuralı sadece class özniteliği değeri<br />
aralıklı olan, yani aralıklı sınıfına dahil olan<br />
HTML elemanlarına uygulanacaktır.<br />
Bu belgede aralıklı sınıfı için yazılan kural, bu sınıfa ait paragrafların ilk<br />
satırlarının içerden başlamasını, metin hizalamasının dağıtık olmasını ve bu<br />
paragraflardaki kelimeler arasında 0.5cm boşluk olmasını gerektiriyor. Dolayısıyla bu<br />
örnekte aralıklı sınıfına ait olan ikinci ve son paragrafın bu şekilde gösterildiği tarayıcı<br />
görüntüsünden gözükmektedir.<br />
Önce ikinci paragrafın başlangıç iminin nasıl tanımlandığını görelim:<br />
<br />
Görüldüğü gibi bu paragrafın hem id özniteliği hem de class özniteliği<br />
tanımlanmıştır. Dolayısıyla bu paragrafa bu örnekteki üç çeşit stil kuralı da<br />
uygulanmaktadır. Bu eleman bir paragraf olduğu için, p için yazılan stil kuralı uygulanır.<br />
Sonra bu elemanın id değeri p2 olduğu için, p2 için yazılan stil kuralı da uygulanır. En<br />
son olarak bu paragrafın class özniteliği değeri aralıklı olduğu için, aralıklı sınıfı<br />
için yazılan kural da uygulanır.<br />
Son paragrafın ise id özniteliği tanımlanmamış olup sadece class özniteliği<br />
vardır:<br />
<br />
Bu durumda bu paragrafa p ve aralıklı için yazılan iki çeşit stil kuralı<br />
uygulanır. Diğer iki paragrafa ise sadece p için yazılan stil kuralı uygulanır.<br />
Kelimeler arası boşluk miktarı ayarlama: word-spacing<br />
Bir metindeki kelimeler arasındaki boşluk miktarını ayarlamak için wordspacing<br />
özelliği kullanılır. Bu boşluk miktarı birimi cm, in (inch), px (pixel), pc (pica),<br />
em (em ölçu birimi) ve ex (x-yüksekliği) olarak verilebilir. Bu örnekte kelimeler<br />
arasındaki boşluk miktarı 0,5 cm olarak verilmiştir. Yani büyüklük ölçü birimi olarak cm<br />
kullanılmıştır. Dolayısıyla bütün kelimeler arasında 0.5 cm boşluk bırakılmıştır.<br />
Örnek Uygulama<br />
Oluşturacağınız bir HTML belgesinde 4 tane paragraf ve 4 tane de başlık<br />
bulunsun. Bu başlıklardan iki tanesini aynı sınıfa dahil ediniz ve bu elemanlar için bir<br />
115
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
CSS stil kuralı yazınız? Benzer şekilde oluşturmuş olduğunuz paragraflardan iki tanesini<br />
bir sınıfa dahil ediniz ve bunlar için de bir CSS stil kuralı yazınız? Yazmış olduğunuz stil<br />
kuralında word-spacing özelliğini kullanınız? Bu özelliğin ölçü birimi olarak yukarda<br />
anlatılan farklı ölçü birimlerini (cm, in, px, pc, em, ex) kullanınız? Bu ölçü birimlerinin<br />
sonuç üzerinde nasıl bir etki yaptığını gözlemleyiniz?<br />
6.9 HTML imi<br />
HTML span elemanı [6] HTML belgesi içindeki her hangi bir bölgeyi bir HTML<br />
elemanı olarak tanımlamamıza imkân verir. Bu şekilde tanımlanmış bir span elemanının<br />
fiziksel bir görünüm değeri yoktur. Bu eleman sadece mantıksal bir tanımlama yapar. Bu<br />
mantıksal tanımlama yapıldıktan sonra fiziksel görünüm tanımlaması stil kuralları<br />
kullanılarak yapılır.<br />
Örneğin bir paragraf içindeki bir metin parçasını ayrı bir HTML elemanı olarak<br />
tanımlayıp, bu HTML elemanına bazı stil kuralları uygulamak isteyelim. Bu durumda<br />
imini kullanarak bu metin parçasını içinde bulunduğu paragraftan bağımsız bir<br />
HTML elemanı olarak tanımlayabiliriz. Böylece tanımlanmış olan bu elemana<br />
istediğimiz stil kurallarını uygulanabiliriz.<br />
Şimdi span iminin örnek kullanımını gösteren bir örnek bir sayfa görelim. Bu<br />
amaçla yazılmış bir HTML belgesi Tablo 6-6’de verilmiştir.<br />
<br />
CSS Kullanim Örneği<br />
<br />
<br />
.altbaşlık {font-weight: bold;<br />
font-size: large;<br />
font-family: arial, courier;<br />
}<br />
<br />
<br />
<br />
Bilgisayar <br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />
hem de veri depolayan bir makinadir. Modern anlamda ilk<br />
geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır. <br />
CPU: Merkezi İşlem<br />
Birimi yani CPU (Central Processing Unit) bir<br />
bilgisayarın beynidir. Mantıksal ve Aritmetik bütün<br />
işlemler burada yapılır.<br />
Bellek: Bellek<br />
işlemcinin işlem yapacağı bilgilerin ve komutların<br />
tutulduğu bir hafıza birimidir. İşlemci ile bellek<br />
arasında yüksek hızlı bir veri yolu vardır.<br />
Hard Disk: Hard<br />
disk ise bilgisayarda sürekli olarak depolanacak<br />
116
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
bilgileri kaydetmek için kullanılır. Hard diskteki<br />
bilgiler bilgisayar kapatıldıktan sonra da muhafaza<br />
edilir.<br />
<br />
<br />
Tablo 6-6 HTML belgesi içinde span imi kullanımı örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-6’deki gibi gözükür.<br />
Şekil 6-6 HTML belgesi içinde span imi kullanımı örneği<br />
Bu HTML belgesinde 3 tane elemanı tanımlanmıştır. Her span elemanı<br />
bir paragrafın baş kısmındaki bir metin için oluşturulmuştur. Şimdi bunlardan ikinci<br />
paragrafın başında bulunan span elemanının nasıl tanımlandığını görelim:<br />
CPU: Merkezi ...<br />
Bu paragraftaki “CPU:”alt metninin paragrafın diğer kısmından biraz farklı<br />
görünmesini istiyoruz. Yani bu metnin paragraf için bir alt başlık olmasını istiyoruz.<br />
Bunun için metin fontunun biraz büyük ve koyu olmasını istiyoruz. Benzer şekilde diğer<br />
iki paragraf başındaki alt başlık metinlerinin de farklı görünmelerini istiyoruz. Bu alt<br />
metinlerin farklı gözükebilmeleri için, font özelliklerini farklı ayarlamamız gerekiyor.<br />
Font özelliklerini farklı ayarlayabilmemiz için ise öncelikle bu alt metinlerin<br />
paragrafların diğer kısımlarından bağımsız birer HTML elemanı olarak tanımlanmaları<br />
gerekiyor. İşte span imi ile bu alt metinleri farklı birer HTML elemanları olarak<br />
tanımlıyoruz. Farklı birer HTML elemanı olarak tanımladığımız bu 3 elemanın class<br />
özniteliklerini kullanarak hepsini aynı sınıfa dahil ediyoruz. Hepsinin class özniteliği<br />
değeri de altbaşlık olarak verilmiştir. Böylelikle CSS stil kuralını artık altbaşlık<br />
117
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
sınıfı için yazabiliyoruz. CSS stil kuralı altbaşlık sınıfına ait olan HTML elemanlarının<br />
metinlerinin koyu renkte, diğer metinlere göre biraz daha büyük ve fontunun da arial<br />
olmasını sağlıyor. Böylelikle bu sınıfa ait olan üç HTML elemanı da tarayıcı şekilinde<br />
göründüğü gibi diğer metinlerden daha belirgin olarak gözüküyor.<br />
Örnek Uygulama<br />
İçinde en az üç tane paragraf bulunan bir HTML belgesi oluşturunuz? Bu belge<br />
içinde diğer metinlere ek olarak bazı şehir ve ilçe isimleri de bulunsun. Sonra belge<br />
içindeki şehir isimlerini span imi kullanarak ayrı birer HTML elemanı olarak<br />
tanımlayınız ve hepsini aynı sınıfa dahil ediniz? Benzer şekilde belge içindeki ilçe<br />
isimlerini de span imi kullanarak ayrı birer HTML elemanı olarak tanımlayınız ve bunları<br />
da ayrı bir sınıf olarak gruplayınız? Sonra şehir ve ilçe isimlerinin diğer metinlerden biraz<br />
daha farklı gözükmesi için iki farklı CSS stil kuralı yazınız?<br />
6.10 HTML elemanları style özniteliği ve imi<br />
Şu ana kadar görmüş olduğumuz örneklerde, CSS stil kurallarını HTML<br />
belgelerine, sayfanın head kısımlarında tanımladığımız style imi ile ekledik. CSS stil<br />
kurallarını HTML belgelerine eklemenin ikinci bir yolu ise HTML elemanlarının style<br />
özniteliklerini kullanmaktır. Bütün HTML elemanları için style öznitelikleri<br />
tanımlanabilir. style özniteliği değeri olarak ta stil kuralları yazılabilir. Fakat bu şekilde<br />
yazılan stil kuralları sadece o HTML elemanı için geçerli olur.<br />
Bir önceki bölümde görmüş olduğumuz imine benzeyen bir diğer im de<br />
imidir. imi imi gibi mantıksal bir tanımlama yapar. Tek farkı <br />
imi bir blok elemanıdır ve daha çok birden fazla blok elemanını gruplamak için kullanılır.<br />
Örneğin birden fazla paragrafı bir eleman adı altında toplamak için kullanılabilir. Ayrıca<br />
iminin başladığı noktaya tarayıcı yeni satır ekler. Dolayısıyla imi paragraf<br />
içindeki bir alt metni tanımlamak için kullanılamaz. Bunun için bir öenceki bölümde<br />
gösterilen imi kullanılmalıdır.<br />
Şimdi hem style özniteliğinin kullanıldığı hem de div iminin kullanıldığı bir<br />
örnek sayfa görelim. Bu amaçla yazılmış bir sayfa Tablo 6-7’de verilmiştir.<br />
<br />
CSS Kullanim Örneği<br />
<br />
<br />
.altbaşlık {font-weight: bold;<br />
font-size: large;<br />
font-family: arial, courier;<br />
}<br />
<br />
<br />
118
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
Bilgisayar <br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />
hem de veri depolayan bir makinadir. Modern anlamda ilk<br />
geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır. <br />
<br />
CPU: Merkezi İşlem<br />
Birimi yani CPU (Central Processing Unit) bir bilgisayarın<br />
beynidir. Mantıksal ve Aritmetik bütün işlemler burada<br />
yapılır.<br />
Bellek: Bellek<br />
işlemcinin işlem yapacağı bilgilerin ve komutların<br />
tutulduğu bir hafıza birimidir. İşlemci ile bellek<br />
arasında yüksek hızlı bir veri yolu vardır.<br />
<br />
Hard disk ise bilgisayarda sürekli olarak depolanacak<br />
bilgileri kaydetmek için kullanılır. Hard diskteki<br />
bilgiler bilgisayar kapatıldıktan sonra da muhafaza<br />
edilir.<br />
<br />
<br />
Tablo 6-7 HTML belgelerinde div imi kullanım örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-7’deki gibi gözükür.<br />
Şekil 6-7 HTML belgelerinde div imi kullanım örneği<br />
Bu örnekte div imi iki paragrafı aynı eleman adı altında gruplamak için<br />
kullanılmıştır. İlk div imi ikinci paragraftan hemen önce, kapanış div imi ise üçüncü<br />
119
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
paragraftan hemen sonraya konulmuştur. Dolayısıyla bu div imi ile oluşturulan HTML<br />
elemanı ikinci ve üçüncü paragrafları kapsamaktadır. Artık bu div elemanına<br />
uygulanacak stil kuralları ikinci ve üçüncü paragrafa uygulanacaktır. Böylece div imi<br />
kullanılarak ikinci ve üçüncü paragraf tek bir HTML elemanı altında toplanmıştır.<br />
Bu belgede div imi kullanılarak oluşturulan yeni elemana uygulanacak stil kurali<br />
div elemanının style özniteliği kullanılarak yazılmıştır. Bu kural şöyle ifade edilmiştir:<br />
<br />
Bu stil kuralı yazım şeklinde dikkatimizi çeken ilk farklı nokta, stil kuralının bir<br />
isimle başlamıyor olmasıdır. Daha nönceki yazdığımız stil kurallarında ilk başta stilin<br />
uygulanacağı HTML elemanının adı geliyordu. Örneğin h1, ya da p gibi. Fakat bu yazım<br />
şeklinde stil kuralının uygulanacağı eleman zaten içinde tanımlı olduğu HTML elemanı<br />
olduğu için bu kısım yazılmamıştır. Direk olarak stil kuralları yazılmıştır.<br />
Görüldüğü gibi style özniteliğiyle tanımlanan stil kuralları div iminin içerdiği iki<br />
paragrafa da uygulanmıştır. Daha önce de belirtildiği gibi, style özniteliği bu şekilde<br />
bütün HTML elemanları için tanımlanabilir. Fakat sayfa düzeni açısından bütün stil<br />
kurallarının bir yerde toplanması daha iyi olabilir. Dolayısıyla daha önce gösterildiği gibi<br />
bütün stil kurallarının sayfanın baş kısmında bulunması daha isabetli olur. Bu şekilde bir<br />
stil kuralı yazım şekli kısmen daha az tercih edilmelidir.<br />
Örnek Uygulama<br />
En az 3 tane başlık ve 3 tane de paragrafı olan bir HTML belgesi oluşturunuz? Bu<br />
belge içindeki bir başlıkla bir paragrafı div imi ile gruplayınız? Sonra bu div iminin<br />
style özniteliğini kullanarak bu elemanlara bir stil kuralı yazınız?<br />
6.11 Harici Stil Sayfaları Kullanarak Bir Sayfaya Stil Eklemek<br />
Daha önceki bölümlerde bir HTML belgesine stil kuralları eklemenin iki farklı<br />
yöntemini gördük. Bunlardan ilk yöntemde, stil kuralları HTML belgesisin head<br />
kısmında tanımlanan style im çifti kullanılarak eklendi. İkinci yöntemde ise stil kuralları<br />
her HTML elemanının style özniteliği kullanılarak eklendi. Bunlardan ikinci yöntem<br />
birincisine göre daha dar anlamlıdır. Yani bir HTML elemanının style özniteliği<br />
kullanılarak yazılan bir stil kuralı sadece o eleman için geçerlidir. Başka elemanlara aynı<br />
stil kuralı uygulanamaz. Ama head kısmında yazılan stil kuralları bu HTML belgesindeki<br />
bütün HTML elemanlarına uygulanabilir.<br />
Stil kuralları eklemenin üçüncü bir yöntemi ise harici stil sayfaları kullanmaktır<br />
[7]. Bu yöntemde ise stil kuralları HTML belgesi dışında ayrı bir dosyada yazılır. Bu<br />
120
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
dosya .css uzantısıyla kaydedilir. Daha sonra HTML belgesi içinden bu dosyaya <br />
imi kullanılarak bağlantı verilir. Yani tarayıcıya kullanması gereken stil sayfası adresi<br />
söylenir. Böylece tarayıcı bu HTML belgesi için kullanacağı css dosyasını bulur. Bu<br />
yöntemle eklenen stil kuralları da belge içindeki bütün HTML elemanlarına<br />
uygulanabilir.<br />
Stil kuralları eklemek için harici stil sayfaları kullanmak çok sayfalı site<br />
tasarımında diğer iki yönteme göre daha avantajlıdır. Çünkü yazacağımız stil kuralları<br />
sadece bir HTML belgesinde değil, istediğimiz bütün HTML belgelerinde kullanılabilir.<br />
Örneğin bir kurumun web sitesinde birçok sayfanın aynı formatta olması istenir. Bu<br />
durumda stil kurallarını harici bir css dosyasına yazıp, bütün sayfalarda aynı stil<br />
kurallarını uygulamak işimizi çok kolaylaştırır. Aksi halde bu kuralları her sayfanın<br />
başına eklememiz gerekir. Bu da yeni stil kuralları yazmamızı ve stil kuralları üzerinde<br />
değişiklik yapmamızı zorlaştırır. Çünkü yeni yazılan bir stil kuralı bütün HTML<br />
belgelerine eklenmelidir. Aynı şekilde yapılmak istenen bir değişiklik bütün HTML<br />
belgelerinde yapılmalıdır. Ama harici tek bir stil dosyası kullanırsak bu durumda sadece<br />
bu dosyaya ekleme yapmak veya sadece bu dosyada değişiklik yapmak yeterli olur.<br />
Şimdi bir önceki örnek sayfanın aynısını harici stil sayfası kullanarak yapalım. Bu<br />
durumda önce bir metin editöründe stil sayfası yazılır. Stil sayfasının içeriği Tablo<br />
6-8’deki gibi olsun. Bu dosyayı par.css ismiyle kaydedediniz? HTML belgelerinin head<br />
kısmında stil kuralı yazarken style imi kullanılıyordu. Fakat bu dosya içinde style im<br />
çiftinin kullanılmadığına dikkat ediniz. Çünkü style im çifti bir HTML imidir. Oysa bu<br />
dosya bir HTML dosyası olmayıp, bir css dosyasıdır.<br />
.altbaslik {<br />
font-weight: bold;<br />
font-size: large;<br />
font-family: arial, courier;<br />
}<br />
.icparagraf {<br />
background-color:aqua;<br />
margin-left:2cm;<br />
margin-right:2cm<br />
}<br />
Tablo 6-8 Harici stil sayfası içeriği<br />
Daha sonra HTML belgesini Tablo 6-9’deki gibi yazarız.<br />
<br />
CSS Kullanim Örneği<br />
<br />
<br />
<br />
Bilgisayar <br />
121
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bilgisayar hem veri isleyen yani hesaplamalar yapan,<br />
hem de veri depolayan bir makinadir. Modern anlamda ilk<br />
gelistirilen bilgisayar 1946 yilinda yapimi tamamlanan<br />
ENIAC'tir. <br />
<br />
CPU: Merkezi Islem<br />
Birimi yani CPU (Central Processing Unit) bir<br />
bilgisayarin beynidir. Mantiksal ve Aritmetik butun<br />
islemler burada yapilir.<br />
Bellek: Bellek<br />
islemcinin islem yapacagi bilgilerin ve komutlarin<br />
tutuldugu bir hafiza birimidir. Islemci ile bellek<br />
arasinda yuksek hizli bir veri yolu vardir.<br />
<br />
Hard disk ise bilgisayarda surekli olarak<br />
depolanacak bilgileri kaydetmek icin kullanilir. Hard<br />
diskteki bilgiler bilgisayar kapatildiktan sonra da<br />
muhafaza edilir.<br />
<br />
<br />
Tablo 6-9 HTML belgesi içinden harici stil sayfasına bağlantı verme<br />
Bu HTML belgesi içerisinden css dosyasına bağlantı vermek için sayfanın head<br />
kısmında bağlantı imi yani imi kullanılır. Bu örnekte harici stil sayfasına bağlantı<br />
şu şekilde yapılmıştır:<br />
<br />
Bu örnekte par.css dosyası ile HTML belgesinin aynı dizinde olduğu<br />
varsayılıyor. Onun için sadece dosya ismi par.css olarak verilmiştir. Dizin yolu veya<br />
web adresi verilmemiştir. Görüntülerde olduğu gibi harici stil dosyamız da başka bir<br />
dizindeyse veya başka bir web sitesindeyse, dosya ismi ona göre ayarlanmalıdır.<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-7’deki gibi gözükür. Bu sayfanın diğer<br />
sayfadan tek farkı, daha önce div imi içerisinde yazılan stil kuralının da harici stil sayfası<br />
içinde yazılmasıdır.<br />
Örnek Uygulama<br />
Sizde bir önceki bölümün örnek uygulaması için yazmış olduğunuz stil kurallarını<br />
harici bir css sayfası içinde toplayınız? Web sayfanız içinden bu harici css sayfasına<br />
bağlantı vererek bu kuralları sayfanız içinde kullanınız? Oluşturacağınız yeni bir web<br />
sayfasında yine aynı harici stil sayfasındaki kurallardan en az bir tanesini kullanınız?<br />
122
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
6.12 Bir Grup HTML Elemanı İçin Stil kuralı Yazma<br />
Stil kuralları bir grup eleman için de yazılabilir. Bu durumda stil kuralının<br />
uygulanacağı HTML elemanı ismi yazılırken, bir HTML elemanı ismi yerine birden fazla<br />
HTML elemanı ismi yazılır. Bu eleman isimleri virgülle birbirinden ayrılır. Örneğin bir<br />
sayfadaki bütün h1, h2 ve h3 tipi başlıkların font ailesini ve font rengini ayarlayan bir stil<br />
kuralı yazalım. Bu stil kuralı Tablo 6-10’da görüldüğü gibi yazılabilir.<br />
h1, h2, h3 {<br />
color: blue;<br />
font-family: arial, courier;<br />
}<br />
Tablo 6-10 Bir grup HTML elemanı için stil kuralı yazma örneği<br />
Görüldüğü gibi stil kuralının uygulanacağı 3 tane başlık ismi stil kuralından<br />
hemen önce yazılmıştır. Daha sonra küme parantezi ile stil kuralı başlamıştır. Artık bu<br />
kural bu HTML belgesindeki bütün h1, h2 ve h3 elemanlarına uygulanır. Yani bu<br />
sayfadaki bütün h1, h2 ve h3 tipi başlıkların font ailesi ve font rengi aynı olur.<br />
Aynı işlem tabiî ki bu elemanların class özniteliği kullanılarak ta yapılabilirdi.<br />
CSS aynı işlemi yapmanın birçok farklı yöntemini sunar. Web tasarımcısı bu<br />
yöntemlerden birisini seçerek istediği sonuca ulaşır.<br />
6.13 Bir HTML Elemanını Çok Sınıfa Dâhil Etme<br />
Bir HTML elemanı tek bir sınıfa dâhil olmakla kısıtlanmamıştır. Bir HTML<br />
elemanı birden fazla sınıfa dâhil olabilir. Bunun için şu şekilde bir örnek düşünelim.<br />
Önce css kurallarını Tablo 6-11’de olduğu gibi yazalım.<br />
.maviArial {<br />
color: blue;<br />
font-family: arial, courier;<br />
}<br />
.içerde {<br />
margin-left: 1.5cm;<br />
word-spacing: 3px;<br />
}<br />
Tablo 6-11 İki farklı sınıf için stil kuralı<br />
Burada yazılan her iki kural da bir HTML elemanına uygulanabilir. Bu kurallar<br />
bir başlık ve bir paragraf elemanlarına uygulansın. Bu işlem HTML belgesi içerisinde<br />
123
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Tablo 6-12’de olduğu gibi yapılabilir.<br />
... <br />
... <br />
Tablo 6-12 Bir HTML elemanını birden fazla sınıfa dahil etme örneği<br />
Bu durumda h3 ve p elemanlarına iki farklı sınıftan stil kuralı uygulanır. Bu<br />
şekilde HTML elemanları birden fazla sınıfa dâhil olabilirler. Dâhil olabilecekleri sınıf<br />
sayısı konusunda bir sınırlama yoktur.<br />
6.14 Web Sayfası Tasarımı İçin CSS Kullanımı<br />
Bir önceki bölümde HTML tabloları kullanarak bir web sayfasını nasıl alt bölgelere<br />
ayrılabileceğimizi görmüştük. HTML tabloları ile bir web sayfasında başlık bölgesi,<br />
menü bölgesi, içerik bölgesi gibi kısımlar oluşturmuştuk. Alt bölgelere ayırma web<br />
sayfası tasarımının önemli bir aşamasıdır. Bu tasarım web sayfamızın ana yapısını<br />
belirler. Web sayfamızın görselliğinde ve kolay kullanılabilir olmasında önemli bir rol<br />
oynar. Web sayfasını alt bölgelere ayırmanın ikinci bir yöntemi de CSS kullanmaktır [8].<br />
Bu bölümde daha önce tablo kullanarak yaptığımız basit tasarımları CSS kullanarak<br />
yapacağız.<br />
CSS ile web sayfası içinde alt bölgeler tanımlamanın yolu div imini kullanmaktır.<br />
Bu im sayfa içinde fiziksel görüntüsü olmayan bir alt bölge tanımlar. Daha sonra tanımlı<br />
olan bu bölgenin özellikleri CSS kuralları ile ayarlanır. Bu şekilde bir sayfa alt bölgelere<br />
ayrılmış olur. Her alt bölgenin de kendine ait CSS ile tanımlanmış özellikleri vardır. Bu<br />
alt bölgelerin büyüklükleri, sayfa içindeki pozisyonları, arka plan rekleri gibi özellikler<br />
CSS ile belirlenir.<br />
Şimdi 5. bölümün sonunda tablolar kullanılarak oluşturulan sayfa tasarımını div<br />
imi ve CSS kurallarını kullanarak yapalım. Bunun için 4 adet div imi kullanacağız. Bu<br />
sayfa tasarımında 3 adet alt bölge bulunmaktadır: başlık bölgesi, menü bölgesi ve içerik<br />
bölgesi. Her bir bölge için bir div elemanı oluşturacağız. Buna ek olarak bir tane div<br />
elemanı da bu üç div elemanını kendi içinde barındıran ana eleman olacak. Böylece 4<br />
adet div elemanı kullanarak sayfayı üç ana bölgeye ayıracağız.<br />
Sayfayı üç ana bölgeye ayıran HTML ve CSS kodu Tablo 6-13’te verilmiştir.<br />
<br />
CSS İle Sayfayı Alt Bölgelere Ayırma<br />
<br />
<br />
124
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
#büyükKutu {<br />
width: 500px;<br />
}<br />
#başlıkKutusu {<br />
background: fuchsia;<br />
height: 50px;<br />
text-align: center;<br />
}<br />
#bağlantıKutusu {<br />
background: silver;<br />
height: 30px;<br />
}<br />
#içerikKutusu {<br />
background-image:url('images2/arkaplan.gif');<br />
text-indent: 0.5cm;<br />
text-align: justify;<br />
padding: 10px 15px 15px 20px;<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
Bilgisayar <br />
<br />
<br />
<br />
<br />
İşlemci<br />
Bellek<br />
Ön Bellek<br />
Hard Disk<br />
<br />
<br />
<br />
<br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />
hem de veri depolayan bir makinadır. Modern anlamda ilk<br />
gelistirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır.<br />
Merkezi İşlem Birimi (CPU)<br />
Merkezi İşlem Birimi yani CPU (Central Processing Unit)<br />
bir bilgisayarın beynidir. Mantıksal ve Aritmetik bütün<br />
işlemler burada yapılır.<br />
<br />
<br />
<br />
<br />
<br />
Tablo 6-13 Web sayfasını CSS ile alt bölgelere ayırma örneği<br />
125
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-8’deki gibi gözükür.<br />
Şekil 6-8 CSS ile alt bölgelere ayrılmış bir sayfa örneği<br />
Bu örnekte her div elemanına bir isim verilmiştir. Bunun amacı her bir div<br />
elemanı için farklı bir CSS kuralı yazmaktır. İlk div elemanı diğer bütün div<br />
elemanlarını kendi içinde barındıran ve ismi büyükKutu olan elemandır. Bu elemanın<br />
başlangıç imi HTML belgesinin gövde kısmının hemen başındadır, bitiş elemanı ise<br />
gövdenin bitişinden hemen öncedir.<br />
İkinci div elemanı başlık kısmı için tanımlanmış olan elemandır. Bu div<br />
elemanının adı başlıkKutusu olarak verilmiştir. Bu elemanın içinde sadece bir başlık<br />
bulunmaktdır. Daha sonra bu elemanın bitiş imi vardır.<br />
Üçüncü div elemanı menü kısmı için tanımlanmıştır ve adı bağlantıKutusu<br />
olarak verilmiştir. Bu elemanın içinde bir tablo vardır ve bu tabloda bağlantılar<br />
mevcuttur. Daha sonra hem tablo elemanı, hem de bu div elemanı bitmektedir.<br />
Dördüncü div elemanı ise sayfa içeriğini barındırmak için tanımlanmıştır ve adı<br />
içerikKutusu olarak verilmiştir. Bu div elemanının içinde sayfada gösterilen metinler<br />
vardır. İki tane paragraf ile bir tane alt başlık vardır. Daha sonra bu div elemanı<br />
bitmektedir. İlk div elemanı, yani bu üç div elemanını içeren div elemanı bu üçüncü div<br />
elemanından sonra bitmektedir.<br />
büyükKutu div elemanı için CSS Kuralı<br />
126
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
İlk div elemanı için yani adı büyükKutu olan div elemanı için bir tane CSS kuralı<br />
yazılmıştır. Bu kural sayfa içinde şu şekilde yazılmıştır:<br />
#büyükKutu {<br />
width: 500px;<br />
}<br />
Bu kural bu div elemanının genişliğini belirlemektedir. Bu div elemanının<br />
genişliği 500 pixel olarak verilmiştir. Bu elemanın yüksekliği ile ilgili bir değer<br />
verilmemiştir. Bu elemanın yüksekliği kendi içindeki elemanların yüksekliğine göre<br />
ayarlanacaktır. Dolayısıyla bu dış kısımdaki div elemanı tarayıcı içinde büyük bir kutu<br />
tanımlamaktadır. Bu kutunun içinde diğer div elemanları bulunacaktır. Bu kutunun<br />
genişliği 500 pixel miktarında olacaktır. Yüksekliği ise içindeki diğer elemanların<br />
yüksekliğinin toplamı kadar olacaktır.<br />
başlıkKutusu div elemanı için CSS Kuralı<br />
İkinci div elemanı, yani adı başlıkKutusu olan div elemanı için CSS kuralları<br />
sayfa içinde şu şekilde yazılmıştır:<br />
#başlıkKutusu {<br />
background: fuchsia;<br />
height: 50px;<br />
text-align: center;<br />
}<br />
Bu kural başlık bölgesi için bir kutu tanımlamaktadır. Bu kutunun genişliği içinde<br />
bulunduğu büyükKutu kadardır. Bir div elemanının genişliği tanımlanmaz ise, onun<br />
genişliği içinde bulunduğu elemanın genişliği kadar olur. Bu durumda da başlık<br />
kutusunun genişliği büyük kutunun genişliği kadar yani 500 pixel olmaktadır. Bu<br />
kutunun yüksekliği height özniteliği ile ayarlanmıştır ve değeri 50 pixel olarak<br />
verilmiştir. Ayrıca bu kutunun arka plan rengi background özniteliği kullanılarak<br />
ayarlanmıştır. Bu kutu içindeki başlık metnin ortada gözükmesi için de text-align<br />
özniteliği değeri center olarak verilmiştir.<br />
Şekil 6-8’deki tarayıcı şekli içinde her alt kutunun arka plan rengi farklı olarak<br />
verildiği için her birisi kolayca diğerlerinden ayrılabilmektedir. Başlık kutusu en üstte<br />
bulunan, genişliği büyük kutu kadar olan, arka plan rengi de pembe olan kutudur.<br />
bağlantıKutusu div elemanı için CSS Kuralı<br />
Üçüncü div elemanı, yani adı bağlantıKutusu olan div elemanı için CSS<br />
kuralları sayfa içinde şu şekilde yazılmıştır:<br />
#bağlantıKutusu {<br />
127
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
}<br />
background: silver;<br />
height: 30px;<br />
Bu div elemanının da genişliği verilmemiş, sadece yükseklik miktarı veilmiştir.<br />
Dolayısıyla bağlantı kutusunun genişliği büyük kutunun genişliği kadar olacaktır ve<br />
yüksekliği de 30 pixel olacaktır. Bu kutunun ayrıca arka plan rengi ayarlanmıştır. Şekil<br />
6-8’deki tarayıcı şekli içinde bağlantı menüsünü içeren ikinci kutu bağlantı kutusudur.<br />
Görüldüğü gibi genişliği büyük kutu genişliği kadardır ve yüksekliği de başlık<br />
kutusundan biraz daha küçüktür.<br />
içerikKutusu div elemanı için CSS Kuralı<br />
Dördüncü div elemanı, yani adı içerikKutusu olan div elemanı için CSS<br />
kuralları sayfa içinde şu şekilde yazılmıştır:<br />
#içerikKutusu {<br />
background-image:url('images2/arkaplan.gif');<br />
text-indent: 0.5cm;<br />
text-align: justify;<br />
padding: 10px 15px 15px 20px;<br />
}<br />
Bu div elemanının ne genişliği ne de yüksekliği verilmiştir. Dolayısıyla içerik<br />
kutusunun genişliği büyük kutunun genişliği kadar olacaktır, yüksekliği ise kendi<br />
içindeki bulunan metinlerin yüksekliği kadar olacaktır. Bu kutunun arka planı olarak bir<br />
renk yerine bir gif dosyası verilmiştir. Dolayısıyla arka planda bu gif dosyası<br />
gösterilmektedir. Bu içerik kutusu içindeki metinlerin text-indent özniteliği 0.5cm<br />
olarak verilmiştir. Dolayısıyla paragrafların ilk satırları 0.5cm içerden başlamaktadır.<br />
Ayrıca yine metinlerin text-align özniteliği justify olarak verilmiştir. Dolayısıyla<br />
metinler kutu içinde tüm satıra yayılmıştır. Son öznitelik değeri ise padding özniteliğidir.<br />
Bu öznitelik kutu içindeki metinlerin kutu duvarına olan mesafelerini ayarlamak için<br />
kullanılmıştır. Burdaki dört değer sırasıyla metinlerin kutunun üst, sağ, alt ve sol<br />
duvarlarına olan uzaklıklarını belirtmektedir. Dolayısıyla metinler ile kutu duvarları<br />
arasında bir miktar mesafe bırakılmıştır.<br />
Örnek Uygulama<br />
Hazırlayacağınız bir sayfayı CSS ve div elemanları kullanarak 4 alt bölgeye<br />
ayırınız? Bu bölgeler sırasıyla başlık bölgesi, menü bölgesi, içerik bölgesi ve alt bölge<br />
olsun. Alt bölge sayfa sahibine ait bazı bilgileri içersin. Diğer bölgeler bu bölümdeki<br />
bölgelere benzesin. Ayrıca tanımlayacağınız bu bölgelerin padding değerine farklı<br />
değerler atayarak, bu özniteliğin bölgeler üzerindeki etkisini gözlemleyiniz.<br />
128
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
6.15 CSS Kullanarak Web Sayfasını Farklı Alt Bölgelere Ayırma<br />
Bir önceki bölümde CSS kullanarak bir web sayfasını üç alt bölgeye ayırdık. Bu alt<br />
bölgeler yukardan aşağıya doğru başlık bölgesi, menü beölgesi ve içerik bölgesiydi.<br />
Şimdi aynı web sayfasını tablolarla yaptığımız gibi yine üç bölgeye ayıralım. Fakat bu<br />
durumda menü yukardan aşağıya ikinci bölge olmasın. Onun yerine menü bölgesi<br />
sayfanın solunda olsun.<br />
Sayfayı bu şekilde üç ana bölgeye ayırmak için yine div imi ile CSS kurallarını<br />
kullanacağız. Fakat bu durumda div elemanlarının boyutlarını ve pozisyonlarını yeni<br />
sayfa özelliklerine göre ayarlayacağız. Bu sayfadaki kodlar büyük ordan bir önceki<br />
sayfadaki kodlara benzemektedir. Fakat bazı önemli farklar da vardır.<br />
Yeni sayfa için HTML ve CSS kodları Tablo 6-14’te verilmiştir.<br />
<br />
CSS İle Sayfayı Alt Bölgelere Ayırma<br />
<br />
<br />
<br />
#büyükKutu {<br />
width: 500px;<br />
}<br />
#başlıkKutusu {<br />
background: fuchsia;<br />
height: 50px;<br />
text-align: center;<br />
}<br />
#bağlantıKutusu {<br />
float: left;<br />
background: silver;<br />
width: 100px;<br />
height: 80%;<br />
padding: 10px 0px 0px 0px;<br />
}<br />
#içerikKutusu {<br />
margin: 0 0 0 100px;<br />
background-image:url('images2/arkaplan.gif');<br />
text-indent: 0.5cm;<br />
text-align: justify;<br />
padding: 10px 10px 0px 20px;<br />
height: 80%;<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
Bilgisayar <br />
129
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
<br />
İşlemci<br />
Bellek<br />
Ön Bellek<br />
Hard Disk<br />
<br />
<br />
<br />
Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />
hem de veri depolayan bir makinadır. Modern anlamda ilk<br />
gelistirilen bilgisayar 1946 yılında yapımı tamamlanan<br />
ENIAC'tır.<br />
Merkezi İşlem Birimi (CPU)<br />
Merkezi İşlem Birimi yani CPU (Central Processing Unit)<br />
bir bilgisayarın beynidir. Mantıksal ve Aritmetik bütün<br />
işlemler burada yapılır.<br />
<br />
<br />
<br />
<br />
<br />
Tablo 6-14 Web sayfasını CSS ile alt bölgelere ayırma ikinci örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 6-9’daki gibi gözükür.<br />
Şekil 6-9 CSS ile alt bölgelere ayrılmış ikinci sayfa örneği<br />
130
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu örnekte yine bir önceki bölümde olduğu gibi dört adet div imi kullanılmıştır.<br />
Her div iminin fonksiyonu ve ismi aynıdır. Yine bir tane div imi diğer üçünü<br />
içermektedir ve bunun genişliği 500 pixel olarak ayarlanmıştır. İkinci div elemanı da<br />
tamamen bir önceki örnekteki div elemanıyla aynıdır. Sayfanın üst kısmında başlık<br />
bölgesini oluşturmuştur. Farklı olan div elemanları üçüncü ve dördüncü div<br />
elemanlarıdır. Şimdi bunların detaylarını inceleyelim.<br />
bağlantıKutusu div elemanı için CSS Kuralı<br />
Üçüncü div elemanı, yani adı bağlantıKutusu olan div elemanı için CSS<br />
kuralları bu sayfa içinde şu şekilde yazılmıştır:<br />
#bağlantıKutusu {<br />
float: left;<br />
background: silver;<br />
width: 100px;<br />
height: 80%;<br />
padding: 10px 0px 0px 0px;<br />
}<br />
Öncelikle bu div elemanının genişliği 100 pixel olarak verilmiştir. Çünkü bu<br />
bağlantı kutusu sadece sayfanın sol tarafında olmalıdır. Bunun için genişlik 100 pixel<br />
verilmiştir. Diğer önemli öznitelik ise float özniteliğidir. Bu öznitelik, bağlantı<br />
kutusundan sonra gelecek olan içerik kutusunun, bu kutunun hemen yanına<br />
yerleştirilmesini sağlar. Ayrıca bağlantı kutusunun da sayfanın sol tarafına<br />
yerleştirilmesini sağlar. Eğer float öznitelik değeri kullanılmamış olsaydı, bu kutudan<br />
sonra gelecek olan içerik kutusu, bağlantı kutusunun sağ yanına değil de altına<br />
yerleştirilirdi.<br />
Bağlantı kutusunun ayrıca gibi arka plan rengi bir önceki bölümde olduğu<br />
background özniteliği kullanılarak ayarlanmıştır. Buna ek olarak bu kutunun boyu, içinde<br />
bulunduğu tarayıcı penceresinin boyunun yüzde yirmisi olarak ayarlanmıştır. Ayrıca yine<br />
padding özniteliği kullanılmış üst tarafta 10 pixel büyüklüğünde bir boşluk bırakılmıştır.<br />
içerikKutusu div elemanı için CSS Kuralı<br />
Dördüncü div elemanı, yani adı içerikKutusu olan div elemanı için CSS<br />
kuralları sayfa içinde şu şekilde yazılmıştır:<br />
#içerikKutusu {<br />
margin: 0 0 0 100px;<br />
background-image:url('images2/arkaplan.gif');<br />
text-indent: 0.5cm;<br />
text-align: justify;<br />
padding: 10px 10px 0px 20px;<br />
height: 80%;<br />
}<br />
131
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu div elemanının genişliği verilmemiştir. Yüksekliği ise tarayıcı boyunun yüzde<br />
sekseni olarak verilmiştir. Dolayısıyla bu bölgenin yüksekliği bağlantı bölgesinin<br />
yüksekliği ile eşittir. Bu bölge diğer div elemanlarından farklı olarak sayfanın en<br />
sonunda başlamamaktadır. Bu bölgenin başlama konumu margin özniteliği kullanılarak<br />
verilmiştir. margin özniteliğinin son değeri bu div elemanının sol taraftan uzaklığını<br />
belirler. Dolayısıyla bu durumda bu değer 100 pixel olarak verilmiştir. Yani bu div<br />
elemanı ya da içerik kutusu sayfanın solundan 100 pixel içerde başlayacaktır. Bu nokta<br />
tam olarak bağlantı kutusunun bittiği yerdir. Dolayısıyla bağlantı kutusu ve içerik kutusu<br />
yan yana görünür. margin özniteliğinin diğer değerleri bu div elemanın yukardan, sağdan<br />
ve alttan uzaklıklarını tanımlar. Bu durumda bu üç değer de sıfır olarak verilmiştir.<br />
Web Sayfası Tasarımı için Tablomu Yoksa CSS’mi Kullanılmalı?<br />
Web sayfalarını alt bölgelere ayırmak için tablolar sıkça kullanılmaktadır. Fakat<br />
tabloların asıl amacı web sayfası tasarımı değildir. Tablolar verileri kullanıcılara düzenli<br />
bir şekilde bir tablo içinde sunmak için geliştirilmiştir. Fakat sonra web tasarımcıları<br />
sayfa tasatımında da sıkça kullanmışlardır.<br />
Şu anda tavsiye edilen esas metod sayfa tasarımı için CSS kullanılmasıdır. CSS<br />
tablolara göre biraz daha fazla detaya sahip sayfa tasarımı yapma imkanı sunmaktadır.<br />
Ayrıca CSS ile tasarlanan sayfaların tarayıcılar tarafından daha hızlı görüntülenmesi<br />
mümkündür. Fakat ilk başta CSS kullanımı öğrenilme tablo kullanımını öğrenmeye göre<br />
biraz daha zor olabilir.<br />
Örnek Uygulama<br />
Bir sayfayı dört alt bölgeye ayıran bir tasarım yapınız? Bu sayfada başlık bölgesi,<br />
menü bölgesi, içerik bölgesi ve ikinci menü bölgesi olsun. Başlık bölgesi yine bu<br />
bölümde olduğu gibi sayfanın üst kısmında olsun. İlk menü bölgesi de yine sayfanın<br />
solunda olsun. İçerik bölgesi sayfanın ortasında olsun. İkinci menü bölgesi ise sayfanın<br />
sağında olsun.<br />
6.16 Özet<br />
Bu bölümde CSS stil kurallarının ne olduklarını ve HTML belgelerinde hangi<br />
amaçla, nasıl kullanıldıklarını gördük. CSS stil kurallarına neden ihtiyaç duyulduğunu ve<br />
avantajlarını açıkladık. CSS stil kurallarının HTML belgeleri içinde üç farklı şekilde nasıl<br />
kullanıldıklarını örneklerle gösterdik. CSS stil kurallarının temel özelliklerini ve kullanım<br />
alanlarını anlattık. Ayrıca HTML span ve div imlerini gösterdik. Buna ek olarak CSS stil<br />
kurallarının ve div imlerinin web sayfası tasarımında nasıl kullanıldıklarını inceledik.<br />
Ama bu bölümde anlatılanlar CSS stil özelliklerinin az bir kısmını oluşturmaktadır.<br />
CSS burada anlatılanlardan çok daha zengin özelliklere sahiptir. Fakat bu bölümde<br />
anlatılanlar CSS ile ilgili bir temel oluşturmayı amaçlamıştır. Bu bölümü anlayarak<br />
132
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
uygulayan web tasarımcıları, CSS’in sunmuş olduğu diğer özellikleri farklı online<br />
kaynaklardan yararlanarak rahatça öğrenebilirler.<br />
6.17 CSS ile ilgili Faydalanılabilecek Kaynaklar<br />
İnternet’te CSS ile ilgili birçok kaynak bulunmaktadır. Bu kaynakların en<br />
güzellerinden birisi şu adrestedir:<br />
http://www.w3schools.com/css/css_examples.asp<br />
Bu sayfada CSS ile ilgili birçok örnek mevcuttur. Kullanıcılar bu sayfadaki CSS<br />
kodlarını değiştirerek CSS özelliklerinin nasıl çalıştığını daha yakından görme imkânına<br />
sahiptirler.<br />
Ayrıca aynı web sitesinde CSS ile ilgili açıklamalar da vardır. Bunlar da şu<br />
adrestedir:<br />
http://www.w3schools.com/css/default.asp<br />
Türkçe kaynak kitap olarak ise şu kitabı önerebiliriz:<br />
Kitap ismi: HTML ve XHTML: The Complete Reference<br />
Yazarı: Thomas A. Powell<br />
Yayınevi: Alfa Yayınevi<br />
6.18 Referanslar<br />
[1] “Cascading Style Sheets”, http://en.wikipedia.org/wiki/Cascading_Style_Sheets, 2<br />
Ekim 2009.<br />
[2] H. Lie, ve B. Bos, "Cascading Style Sheets, level 1", W3C Recommendation REC-<br />
CSS1-961217, http://www.w3.org/TR/REC-CSS1-961217, December 1996.<br />
[3] Thomas A. Powell, "HTML ve XHTML: The Complete Reference", Alfa Yayınevi,<br />
Mart 2004.<br />
[4] CSS Background, http://www.w3schools.com/Css/css_background.asp, 7 Ekim<br />
2009.<br />
133
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
[5] CSS Font, http://www.w3schools.com/Css/css_font.asp, 7 Ekim 2009.<br />
[6] HTML Tag, http://www.w3schools.com/TAGS/tag_span.asp, 7 Ekim 2009.<br />
[7] Ades Tynyshev, "Creating and Linking External CSS files",<br />
http://www.developertutorials.com/tutorials/css/creating-linking-external-css-files-<br />
050531/page1.html, 7 Ekim 2009.<br />
[8] Adrian Senior, "Designing with CSS <strong>–</strong> Part 3: Using CSS for site layout",<br />
http://www.adobe.com/devnet/dreamweaver/articles/css_concepts_pt3_cs3.html, 7<br />
Ekim 2009.<br />
134
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 7<br />
7.1 Amaç<br />
JAVASCRİPT<br />
Bu bölümde amacımız, JavaScript betik dilinin temel özelliklerinin öğrenilmesi ve<br />
hangi durumlarda kullanılacağının anlaşılmasıdır. Bu amaçla öncelikle basit bir<br />
JavaScript uygulaması ile başladık. Sonra adım adım bu dilin özelliklerini örneklerle<br />
işledik. Bu dilde değişkenler, stringler, karar yapıları, döngüler, diziler, fonksiyonlar gibi<br />
özellikler işlendi. Ayrıca kullanıcıya mesaj vermek, kullanıcıdan veri almak gibi<br />
amaçlarla küçük pencere kullanımı anlatılmıştır.<br />
7.2 Giriş<br />
Şu ana kadar görmüş olduğumuz web sayfaları statik web sayfaları idi [1]. Bu tip<br />
sayfalarda kullanıcıya gösterilen bilgiler sabittir. Tarayıcı HTML belgelerini sunucudan<br />
indirip kullanıcıya gösterdikten sonra bu bilgiler bir daha değişmez. Tarayıcı içinde<br />
gösterilen sayfa aynı kalır. Kullanıcı ile bu sayfanın etkileşime geçmesi söz konusu<br />
değildir.<br />
İkinci tip web sayfaları ise dinamik web sayfalarıdır [2]. Bu tür web sayfaları<br />
kullanıcı ile etkileşebilir. Örneğin bir arama motorunun web sayfasında aranmasını<br />
istediğimiz kelimeleri yazar ve bir butona tıklarız. Arama motoru da bize bu kelimelerle<br />
ilgili sayfaların listesini verir. İşte bu bir etkileşimdir. Bu tür bir web sayfası dinamik bir<br />
web sayfasıdır. Şu ana kadar görmüş olduğumuz statik web sayfalarında böyle bir<br />
etkileşim mümkün değildi.<br />
135
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
7.3 Sunucu ve İstemci Tarafı Programlama<br />
Dinamik web sayfaları iki şekilde oluşturulabilir: sunucu tarafı programlama<br />
[3] ve istemci tarafı programlama [4]. Yukarda vermiş olduğumuz arama motoru<br />
örneği sunucu tarafı programlamaya bir örnektir. Bu metotta kullanıcının girdiği bilgiler<br />
web sunucusuna gönderilir. Web sunucusu yanında çalışan bir program da aranan<br />
kelimelerle ilgili web sayfalarını bulur ve sonucu kullanıcıya yeni bir web sayfası halinde<br />
verir. Dolayısıyla bu etkileşimin gerçekleşebilmesi için sunucu tarafında çalışan bir<br />
program olması gerekir. Bundan dolayı bu metoda sunucu tarafı programlama denilir.<br />
İstemci tarafı programlamaya bir örnek olarak fare üzerine gelince açılan<br />
menüleri gösterebiliriz. Bu durumda fare bir menü elemanı üzerine gelince yeni bir menü<br />
gösterilir. Bu işlemin yapılması için sunucu ile iletişime geçilmez. Bunun yerine tarayıcı<br />
içinde çalışabilen betik yani script programları kullanılır. Bu betik programları yazılırken<br />
fare menü elemanları üzerine gelince kullanıcıya ne gösterileceği yazılır. Böylece web<br />
sayfası ile kullanıcı, sunucu tarafına hiç bağlanmadan etkileşimde bulunabilir. İşte bu tür<br />
programlamaya istemci tarafı programlama denilir. İstemci tarafındaki bu programlar<br />
tarayıcı içinde çalışır.<br />
İstemci tarafı dinamik programlama sunucu tarafı dinamik programlamaya göre<br />
daha hızlıdır. Fakat istemci tarafında yapılabilecek programlama sınırlıdır. Bundan dolayı<br />
istemci tarafı dinamik programlama daha çok basit ve hızlı işlemler için kullanılır.<br />
Karmaşık ve büyük işlemler için sunucu tarafı programlama yapmak gerekir. Sunucu<br />
tarafı programlama yapmak için daha çok PHP, ASP, JSP gibi diller kullanılır.<br />
7.4 JavaScript ve VBScript<br />
İstemci tarafı dinamik programlama için en çok JavaScript [5] ve VBScript [6]<br />
betik dilleri kullanılır. JavaScript programları hemen hemen bütün tarayıcılarda<br />
çalışırken, VBScript programları sadece İnternet Explorer tarayıcısında çalışır. Bu<br />
yüzden JavaScript kullanmak daha avantajlıdır.<br />
7.5 JavaScript ve Java<br />
VBScript Microsoft firması tarafından geliştirilmiştir. Yazım kuralları daha çok<br />
Visual Basic dilini andırır. JavaScript ise Netscape firması tarafından geliştirilmiştir.<br />
Yazım kuralları daha çok C dilini andırır. JavaScript dilinin ilk ismi LiveScript idi. Fakat<br />
o zaman çok popüler bir dil olan Java’nın popülaritesinden istifade etmek amacıyla adı<br />
JavaScript olarak değiştirilmiştir. Yoksa Java dili ile JavaScript dili arasında isim<br />
benzerliğinden öte bir bağ yoktur. Java genel bir programlama dili iken, JavaScript ise<br />
tarayıcı içinde çalışan bir betik dilidir.<br />
136
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
7.6 Betik Dilleri<br />
JavaScript ve VBScript dilleri betik yani script dilleridir. Betik dillerinin özelliği<br />
derlenmeden çalıştırılmalarıdır. C, Pascal, FORTRAN, C++, Java gibi diller önce<br />
derlenir, sonra çalıştırılır. Betik dilleri ise derlenmeden çalıştırılırlar. Bu dilleri<br />
çalıştırmak için betik motorları kullanılır. JavaScript ve VBScript programlarını çalıştıran<br />
betik motorları tarayıcı içine gömülüdür. Tarayıcı ne zaman bir web sayfasında betik<br />
koduyla karşılaşırsa, betik motorundan bu kodu işlemesini ister. Bu şekilde betik kodları<br />
derlenmeden tarayıcı içerisinde betik motorları tarafından çalıştırılırlar.<br />
7.7 İlk JavaScript Örneği: imi<br />
JavaScript program komutları HTML belgesi içinde yazılır. JavaScript program<br />
parçalarını yazmak için imi kullanılır. Böylece tarayıcı bu komutların normal<br />
bir HTML metni olmadığını, çalıştırılması gereken JavaScript komutları olduğunu anlar.<br />
Bu komutları çalıştırması için tarayıcı içindeki JavaScript motorunu çağırır.<br />
Şimdi içinde basit bir JavaScript kodu olan bir HTML belgesi görelim. Bu amaçla<br />
yazılmış bir sayfa Tablo 7-1’de verilmiştir.<br />
<br />
İlk JavaScript Örneği<br />
<br />
<br />
<br />
<br />
document.write(" Herkese Merhaba");<br />
<br />
Bu sayfanın başlığı JavaScript ile yazılıyor. İlk<br />
JavaScript örneğim.<br />
<br />
<br />
Tablo 7-1 ilk JavaScript örnegi<br />
Bu HTML belgesi tarayıcı içinde Şekil 7-1’deki gibi gözükür.<br />
137
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 7-1 ilk JavaScript örnegi<br />
Bu HTML belgesinin gövde kısmında im çifti arasında JavaScript kodu<br />
bulunmaktadır:<br />
<br />
document.write(" Herkese Merhaba");<br />
<br />
Bu kod tarayıcı içinde gösterilmez. Bunun yerine bu kod JavaScript motoru<br />
tarafından çalıştırılır ve bu kodun sonucu web sayfasının bu kısmında gösterilir. Bu<br />
örnekte bu JavaScript kodunda tek bir komut vardır. O da document.write komutudur.<br />
Bu komut parantez içinde verilen metnin web sayfasına yazılmasını sağlar.<br />
Bu örnekte web sayfasına başlık metninin JavaScript kodu ile yazılmasının bir<br />
avantajı yoktur. Aynı işlem JavaScript kullanılmadan daha kolay yapılabilirdir. Bu<br />
örneğin amacı sadece JavaScript ile web sayfası içine nasıl yazı yazılabileceğini<br />
göstermektir.<br />
İfade Sonunda Noktalı Virgül<br />
Bu örnekte document.write komutu sonuna noktalı virgül konmuştur. Bir satırda<br />
tek bir komut olduğu durumda komut sonunda noktalı virgül kullanmak zorunlu değildir.<br />
Dolayısıyla bu örnekte noktalı virgül olmasaydı da sonuç aynı olurdu. Noktalı virgül<br />
daha çok aynı satırda birden fazla komut olduğu durumlarda, komutlar arasında<br />
kullanılır.<br />
Örnek Uygulama<br />
Siz de bu örnekte olduğu gibi basit bir JavaScript örneği yapınız? HTML belgesi<br />
içine JavaScript komutu ile farklı değerler yazdırınız? Hem bir başlık hem bir paragraf<br />
yazdırmayı deneyiniz?<br />
138
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
7.8 Değişkenler<br />
Bütün programlama dillerinde olduğu gibi JavaScript dilinde de değişken<br />
tanımlamak mümkündür [7]. JavaScript dilinde değişken tanımlanırken değişkenin tipi<br />
belirtilmek zorunda değildir. Değişken atandığı değerin tipini alır.<br />
Şimdi iki sayının toplamını bulan ve bunu web sayfasına yazdıran basit bir<br />
program görelim. Bu amaçla yazılmış bir sayfa Tablo 7-2’de verilmiştir.<br />
<br />
JavaScript'te Degiskenler<br />
<br />
<br />
JavaScript'te Degisken Kullanimi<br />
<br />
var sayi1 = 20;<br />
sayi2 = 30.5;<br />
var sonuc = sayi1 + sayi2;<br />
document.write(" Iki sayi toplami. "+sayi1+" +<br />
"+sayi2+" = "+sonuc);<br />
<br />
<br />
<br />
Tablo 7-2 JavaScript'te değişken tanımlama<br />
Bu HTML belgesi tarayıcı içinde Şekil 7-2’deki gibi gözükür.<br />
Şekil 7-2 JavaScript'te değişken tanımlama<br />
Görüldüğü gibi bu sayfadaki JavaScript kodunda üç tane değişken tanımlanmıştır:<br />
var sayi1 = 20;<br />
sayi2 = 30.5;<br />
var sonuç = sayi1 + sayi2;<br />
139
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu değişkenlerden iki tanesi var anahtar kelimesi kullanılarak tanımlanmıştır. Bir<br />
tanesi ise var anahtar kelimesi kullanılmadan tanımlanmıştır. Dolayısıyla değişkenler var<br />
anahtar kelimesi kullanılarak veya kullanılmadan tanımlanabilirler.<br />
Aritmetik İşlem Operatörleri<br />
Tanımlanmış olan iki sayı değişkeni artı işaretiyle toplanmıştır. Diğer birçok<br />
programlama dilinde olduğu gibi JavaScript dilinde de temel aritmetik işlemler için Tablo<br />
7-3’deki karakterler kullanılır.<br />
Değişken İsim kuralları<br />
Operatör Anlamı<br />
+ Toplama<br />
- Çıkarma<br />
* Çarpma<br />
/ Bölme<br />
% Mod alma<br />
++ Bir artırma<br />
-- Bir azaltma<br />
Tablo 7-3 JavaScript aritmetik operator tablosu<br />
JavaScript dilinde değişken isimleri harf kipine duyarlıdır. Dolayısıyla sayi1,<br />
Sayi1, veya SAYI1 farklı değişken isimleridir.<br />
Değişken isimleriyle ilgili ikinci bir konu ise, değişken isimleri sadece harflerle<br />
veya alt tire işaretiyle başlayabilirler.<br />
Örnek Uygulama<br />
Yazacağınız bir HTML belgesi içindeki JavaScript kodunda çeşitli aritmetik<br />
işlemler yapınız? Tablo 7-3’deki bütün aritmetik operatörleri kullanmayı deneyiniz? Bazı<br />
işlemlerde aynı komut içinde birden fazla aritmetik işlem komutu kullanınız? Her bir<br />
operatörün nasıl çalıştığını farklı örnekler yaparak inceleyiniz?<br />
140
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
7.9 Stringler<br />
Stringler karakterlerden oluşur. JavaScript dilinde string değişkenleri tanımlamak<br />
sayı değişkenleri tanımlamaya benzer. Fakat string değişkeni oluştururken verilen değer<br />
çift tırnak veya tek tırnak içinde olmalıdır. Birkaç string tanımlaması örneği şu şekilde<br />
yapılabilir:<br />
ad = "Ali";<br />
var soyad = "Ak";<br />
var sehir = 'Mersin';<br />
bosluk = " ";<br />
Diğer değişkenlerde olduğu gibi string değişkenleri de var anahtar kelimesiyle<br />
veya sadece değişken ismiyle tanımlanabilirler. Görüldüğü gibi string değerleri tek tırnak<br />
veya çift tırnak ile tanımlanabilir. Ama her zaman ya tek tırnak, ya da çift tırnak<br />
kullanmak programımızın düzeni açısından isabetli olur.<br />
String Ekleme<br />
JavaScript dilinde bir string’e diğer bir string artı operatörü kullanılarak<br />
eklenilebilir. String eklemeye örnek olarak şunları gösterebiliriz:<br />
ad = "Ali";<br />
var soyad = "Ak";<br />
bosluk = " ";<br />
tumAd = ad + bosluk + soyad;<br />
tumAd2 = ad + " " + soyad;<br />
document.write(tumAd+": ");<br />
Bu örnekte tumAd değişkeni ad değişkenine bosluk ve soyad değişkenlerinin<br />
eklenmesinden oluşur. Dolayısıyla tumAd değişkeni değeri “Ali Ak” olur. Benzer şekilde<br />
aynı ekleme tumAd2 değişkeninde olduğu gibi de yapılabilir. String ekleme özellikle<br />
document.write() gibi kullanıcıya bilgi veren fonksiyonlar çağırılırken, yukarıdaki gibi<br />
kullanılır. Bu durumda bu fonksiyon çağırılırken tumAd ve ": " stringleri toplanmış<br />
ve sonuç bu fonksiyona gönderilmiştir.<br />
İçinde Tırnak İşareti Olan Stringler<br />
Stringler etrafına tırnak işareti konularak tanımlanırlar. Pekâlâ, tanımladığımız bir<br />
string içinde tek tırnak veya çift tırnak işareti varsa bunu nasıl yapabiliriz. Şimdi bunun<br />
örneğini görelim:<br />
141
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
var str1 = "'Bugun çok mutluyum' dedi.";<br />
var str2 = '"Bugun çok mutluyum" dedi.';<br />
Burada tanımlanan stringlerin birinin içinde iki tane tek tırnak var. Diğerinin<br />
içinde ise iki tane çift tırnak var. İçinde tek tırnak bulunan bir string tanımlanırken, bu<br />
stringi tanımlamak için çift tırnak kullanılır. İçinde çift tırnak olan bir string<br />
tanımlanırken ise, etrafında tek tırnak kullanılır.<br />
String Örneği<br />
Şimdi string değişkenlerinin olduğu basit bir örnek sayfa görelim. Bu amaçla<br />
yazılmış bir sayfa Tablo 7-4’de verilmiştir.<br />
<br />
JavaScript'te Stringler<br />
<br />
<br />
<br />
JavaScript'te String Kullanımı<br />
<br />
ad = "Ali";<br />
soyad = 'Ak';<br />
bosluk = " ";<br />
var tumAd = ad + bosluk + soyad;<br />
var str2 = '"Bugün çok mutluyum" dedi.';<br />
document.write(tumAd+": ");<br />
document.write(str2);<br />
<br />
<br />
<br />
Tablo 7-4 JavaScript'te string kullanımı örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 7-3’deki gibi gözükür.<br />
Şekil 7-3 JavaScript'te string kullanımı örneği<br />
142
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Buradaki string tanımlama ve ekleme işlemleri yukarda açıklanmıştır. Burada<br />
ayrıca yeni satır koymak için HTML imini kullanıldığına dikkat ediniz.<br />
Örnek Uygulama<br />
Oluşturacağınız bir HTML belgesi içindeki JavaScript kodu ile string tanımlama<br />
ve string ekleme örnekleri yapınız? Tarayıcı içinde üç satır halinde gözükecek bir string<br />
tanımlayınız? Bu string içinde satır sonunu göstermek için imleri kullanınız?<br />
7.10 Karar Yapıları: if, else, else if<br />
Bütün diğer dillerde olduğu gibi JavaScript dilinde de karar yapıları vardır [8]. if<br />
karar yapısı bir koşula göre bir kod bloğunu işleme koyar veya koymaz. Eğer iki ihtimal<br />
varsa if ile else birlikte kullanılır. Bu durumda if ifadesinde verilen koşul doğruysa if<br />
bloğu işlem görür, yoksa else bloğu işlem görür. Eğer aynı yerde birden fazla kontrol<br />
edilmesi gereken koşul varsa, bu durumda if ve birden fazla else if ifadeleri<br />
kullanılabilir.<br />
Şimdi bununla ilgili bir örnek uygulama görelim. Bu amaçla yazılmış bir sayfa<br />
Tablo 7-5’te verilmiştir.<br />
<br />
JavaScript'te Stringler<br />
<br />
<br />
<br />
Bugün günlerden:<br />
<br />
var t = new Date();<br />
var gün = t.getDay();<br />
if(gün == 0){<br />
document.write("Pazar");<br />
}else if(gün == 1){<br />
document.write("Pazartesi");<br />
}else if(gün == 2){<br />
document.write("Salı");<br />
}else if(gün == 3){<br />
document.write("Çarşamba");<br />
}else if(gün == 4){<br />
document.write("Perşembe");<br />
}else if(gün == 5){<br />
document.write("Cuma");<br />
}else if(gün == 6){<br />
document.write("Cumartesi");<br />
}<br />
document.write("");<br />
document.write("Bu günün JavaScript'teki sayısal<br />
143
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
karşılığı: "+gün+"");<br />
<br />
<br />
<br />
Tablo 7-5 JavaScript'te karar yapıları kullanım örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 7-4’deki gibi gözükür.<br />
Şekil 7-4 JavaScript'te karar yapıları kullanım örneği<br />
JavaScript dilinde o anki tarihi göstermek için Date() nesnesi kullanılır. Bu tarih<br />
nesnesinin birçok özelliği vardır. Örneğin yıl, ay, gün, saat gibi bilgileri içerir. Bu Date<br />
nesnesinden bir tane su şekilde oluşturulur:<br />
var t = new Date();<br />
Burada t artık bir Date nesnesidir ve o anki tarihi gösterir. Bu değişkenin tutmuş<br />
olduğu değişik değerlere ulamsak için Date sınıfı bazı fonksiyonlar sunar. Bunlardan<br />
bazıları şunlardır.<br />
var y = t.getYear(); // yıl değerini döndürür<br />
var ay = t.getMonth(); // ay değerini döndürür. 0-11 arası<br />
var g = t.getDate(); // gün değerini döndürür. 1-31 arası.<br />
var gg = t.getDay(); // haftanın günü değerini döndürür. 0-6 arası.<br />
Yukarıdaki örnekte bu fonksiyonlardan getDay() fonksiyonu kullanılmıştır. Bu<br />
fonksiyon 0 ile 6 arasında bir tamsayı değer döndürür. Sıfır değeri Pazar gününü<br />
gösterir. Altı değeri ise Cumartesi gününü gösterir. Bu örnekte döndürülen değer her<br />
ihtimal için test edilmiştir. Eğer bu değer sıfır ise tarayıcıya Pazar yazılacaktır. Eğer 1 ise<br />
tarayıcıya Pazartesi yazılacaktır. Bu programı biz çalıştırdığımızda Cuma günüydü. Onun<br />
için yukarıdaki tarayıcı penceresinde Cuma gözükmektedir.<br />
144
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Örnek Uygulama<br />
Bu örnekte olduğu gibi haftanın günleri ile ilgili bir uygulama yapınız? Sizin<br />
yazdığınız JavaScript programı tarayıcı içine iki gün öncesinin gününü yazsın. Örneğin<br />
sayfa Pazar günü görüntülenirse, tarayıcı içine Cuma yazılsın. Eğer sayfa Çarşamba günü<br />
görüntülenirse, tarayıcı içine Pazartesi yazılsın.<br />
İkinci bir uygulama olarak ta çalıştırılan ayın ismini Türkçe olarak tarayıcı içine<br />
yazan bir JavaScript kodu yazınız? Bu örnekteki uygulamaya benzer bir uygulama<br />
olacak. Ama bu uygulamada haftanın günü yerine o ayın ismi yazılacak. Örneğin sayfa<br />
Ocak ayında görüntülenirse, tarayıcı içine Ocak yazılacak. Eğer Nisan ayında<br />
görüntülenirse, tarayıcı içine Nisan yazılacak. Bu şekide sayfa hangi ayda görüntülenirse<br />
o ayın ismi Türkçe olarak tarayıcı içine yazılacak.<br />
7.11 JavaScript dilinde Açıklamalar<br />
JavaScript dilinde programa açıklama metinleri eklemenin iki yolu vardır. Eğer<br />
tek satırlık bir açıklama eklemek istiyorsak, bu durumda çift taksim yani // karakter çifti<br />
kullanılır.<br />
var y = t.getYear(); // yıl değerini döndürür<br />
// Şimdi yıl değerini ekrana yazdıralım<br />
document.write(y);<br />
Görüldüğü gibi çift taksim açıklama karakteri hem satır başında hem satır<br />
ortasında kullanılabilir. Bu karakterden sonra gelen metin açıklama olarak algılanır.<br />
Eğer ekleyeceğimiz açıklama bir satırdan daha çok veya daha az ise, bu durumda<br />
açıklama metninin başlangıcı için taksim ve yıldız karakter çiftini, açıklama metninin<br />
bitimi için ise yıldız ve taksim karakter çiftini kullanırız.<br />
/* JavaScript’te program yazmak çok kolay.<br />
O anki tarihi kolayca ogrenebiliriz.<br />
Bunun için Date sinifinin bir nesnesi kullanılır. */<br />
var y = t.getYear(); /* yıl değerini döndürür*/<br />
document.write(y);<br />
7.12 Fonksiyonlar<br />
Fonksiyonlar bütün programlama dilleri için en temel yapıtaşlarıdır.<br />
Programlarımızı hem alt parçalara bölmemize, hem de her iş için farklı program parçaları<br />
yazmamıza olanak sağlarlar. Fonksiyonlar çağırıldıkları zaman işlem görürler.<br />
145
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
JavaScript dilinde fonksiyonlar [9] hem gövde içinde hem de head yani baş<br />
kısmında olabilir. Fakat çoğunlukla sayfanın baş kısmına konulurlar. Bu durumda baş<br />
kısmındaki bir fonksiyon çağırılmadan işlem görmez. Ne zaman çağırılırsa o zaman<br />
kendi içinde tanımlanan işlemleri yapar.<br />
Şimdi çağırıldığı zaman kullanıcıya küçük bir pencerede mesaj veren bir<br />
fonksiyonun nasıl yazıldığını ve çağırıldığını görelim. Bu amaçla yazılmış bir sayfa<br />
Tablo 7-6’da verilmiştir.<br />
<br />
İlk Fonksiyon ve İlk Buton<br />
<br />
<br />
function göster(){<br />
alert("İlk fonksiyonumdan Merhaba!!!!!!! ");<br />
}<br />
<br />
<br />
<br />
İlk Fonksiyon ve Buton Örneği<br />
<br />
İlk fonksiyonumu çağirmak için:<br />
<br />
<br />
<br />
<br />
Tablo 7-6 Buton ile fonksiyon çağırma örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 7-5’deki gibi gözükür.<br />
Şekil 7-5 Buton ile fonksiyon çağırma örneği<br />
Bu tarayıcı penceresindeki Tıklayınız yazan butona tıklanınca Şekil 7-6’daki<br />
gibi küçük bir pencere gelir.<br />
146
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 7-6 alert fonksiyonu ile oluşturulan küçük pencere<br />
Bu küçük penceredeki OK veya Tamam butonuna basınca da bu küçük pencere<br />
kaybolur.<br />
Bu sayfada öncelikle bir fonksiyonun nasıl tanımlandığına bakalım. Baş<br />
kısımdaki fonksiyon şu şekilde yazılmıştır:<br />
function göster(){<br />
alert("İlk fonksiyonumdan Merhaba!!!!!!! ");<br />
}<br />
JavaScript dilinde bir fonksiyon yazmak için öncelikle function anahtar kelimesi<br />
kullanılır. Bu anahtar kelimeden sonra fonksiyona verilen isim gelir. Bu örnekte<br />
fonksiyonumuzun adı göster() olarak verilmiştir. Her fonksiyonun bir adı vardır. Daha<br />
sonra istenilen her noktadan bu fonksiyon adıyla çağırılır.<br />
Fonksiyon isminden sonra parantez açma ve kapama karakterleri gelir. Bu<br />
fonksiyon eğer parametre alacaksa, alınacak değerler bu parantezler içinde yazılır. Bu<br />
örnekte fonksiyonumuz dışardan parametre almamaktadır. Daha sonra küme açma<br />
parantezi gelir. Fonksiyonun gövdesi küme açma ve küme kapama parantezleri<br />
arasındadır. Bu örnekte fonksiyon gövdesinde sadece bir tane JavaScript komutu vardır.<br />
O da alert fonksiyonunu çağıran ifadedir.<br />
alert fonksiyonu<br />
alert fonksiyonu küçük pencere kutusu oluşturmak için kullanılır. Bu fonksiyona<br />
gönderilen metin oluşturulan pencere içinde kullanıcıya gösterilir. Kullanıcı kendisine<br />
gösterilen küçük penceredeki OK butonuna tıklayınca işlem biter.<br />
HTML Form Elemanı<br />
Bu örnekte HTML sayfasının gövde kısmında im çifti gözükmektedir. Bu<br />
im çifti HTML sayfasında buton ve metin alanları gibi çeşitli grafik arayüzü elemanları<br />
oluşturmak için kullanılır. Bu örnekte form elemanı içinde imi kullanılmıştır.<br />
Bu imin type değeri button olarak verilmiştir. İnput elemanının type değeri button<br />
olarak verildiğinde, web sayfasında bir buton oluşturulur. Bu buton tıklanabilen bir buton<br />
olur. Bu butonun üzerinde gösterilecek metin de value özniteliği değeri olarak verilen<br />
147
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
metindir. Bu durumda üzerinde gösterilmesi için “Tıklayınız” metni verilmiştir. Bu<br />
butona tıklandığında ne yapılacağı ise onclick özniteliği ile belirtilir. Bu örnekte bu<br />
butona tıklandığında göster fonksiyonunun çağırılması istenmiştir.<br />
Fonksiyon Çağırma<br />
Fonksiyonları kullanmanın iki aşaması vardır. İlk aşaması fonksiyonları<br />
yazmaktır. İkinci aşaması ise fonksiyonları gerekli oldukları yerlerden çağırmaktır. Bu<br />
örnekte göster fonksiyonu HTML belgesinin baş kısmında yazılmıştır. Eğer bu<br />
fonksiyon HTML belgesi içinden hiç çağırılmaz ise, hiç işlem görmez. Dolayısıyla<br />
HTML belgesi içinden bu fonksiyonun çağırılması gerekir. Bu örnekte göster<br />
fonksiyonu butona tıklanınca çağırılmaktadır. Butonun onclick özniteliği, butona<br />
tıklanıldığında yapılacak işlemi belirtir. Bu durumda butona tıklanıldığında göster<br />
fonksiyonunun çağırılması istenmiştir.<br />
HTML belgelerinde genellikle fonksiyonlar baş kısımda yazılır ve bir olaya bağlı<br />
olarak çağırılırlar. Örneğin bu belgede kullanıcı butona tıklayınca bu fonksiyon<br />
çağırılmaktadır. Web sayfalarında butona tıklama gibi daha birçok farklı olay olur. İşte<br />
genellikle bu olaylar olduğunda bir fonksiyon çağırılır.<br />
Örnek Uygulama<br />
Bu örnektekine benzer bir web sayfası yazınız? Bu sayfada üç adet buton ve üç<br />
adet JavaScript fonksiyonu bulunsun. Her fonksiyona farklı bir isim veriniz ve her<br />
fonksiyon kullanıcıya farklı bir mesaj versin. Her butona tıklanınca farklı bir fonksiyon<br />
çağırılsın. İlk butona tıklayınca birinci fonksiyon, ikinci butona tıklayınca ikinci<br />
fonksiyon, üçüncü butona tıklayınca üçüncü fonksiyon çağırılsın.<br />
7.13 Küçük Pencereler: alert(), confirm(), prompt()<br />
Bir önceki bölümde görmüş olduğumuz gibi alert() fonksiyonu küçük bir<br />
pencere oluşturmak için kullanılır. Bu küçük pencerenin amacı kullanıcıya bilgi<br />
vermektir. Kullanıcı bu pencere üzerindeki Tamam butonuna basıncaya kadar, bu pencere<br />
ekranda bekler. Bu fonksiyonun örnek kullanımı bir önceki bölümde gösterilmiştir.<br />
Kullanıcının bir konuda onayını almak için ise confirm() fonksiyonu kullanılır.<br />
Bu fonksiyon kullanıcıya Tamam ve İptal seçeneklerini sunar. Kullanıcı bu<br />
seçeneklerden birini seçer. Buna göre program devam eder.<br />
Üçüncü bir küçük pencere çeşidi ise prompt() fonksiyonu ile oluşturulan bilgi<br />
alma penceresidir. Bu pencere ile kullanıcıdan bir bilgi girmesi istenir. Kullanıcının<br />
girmiş olduğu bilgi JavaScript programı içerisinde kullanılır.<br />
148
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şimdi bu üç fonksiyonun da kullanıldığı bir örnek program görelim. Bu amaçla<br />
yazılmış bir sayfa Tablo 7-7’de verilmiştir.<br />
<br />
Arka Plan Rengi Değiştirme Uygulaması<br />
<br />
<br />
function onay(gelen){<br />
var seçim = confirm("Arka plan rengini değiştirmek<br />
istediğinizden emin misiniz?");<br />
if(seçim == false){<br />
return;<br />
}<br />
if(gelen == "SEÇ"){<br />
renk = prompt("İngilizce Renk ismi giriniz:", "BLUE");<br />
document.bgColor = renk;<br />
alert("Arka plan renginiz değiştirildi !!!!!!! ");<br />
}else{<br />
document.bgColor = gelen;<br />
alert("Arka plan renginiz değiştirildi !!!!!!! ");<br />
}<br />
}<br />
<br />
<br />
<br />
Arka Plan Rengi Değiştirme:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Tablo 7-7 Arka plan rengi değiştirme uygulaması kodu<br />
Bu HTML belgesi tarayıcı içinde görüntülendiğinde ve SARI butonuna<br />
tıklandığında Şekil 7-7’deki gibi gözükür.<br />
149
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 7-7 Arka plan rengi değiştirme uygulaması tarayıcı görüntüsü<br />
Bu sayfada herhangi bir butona tıklanırsa, Şekil 7-8’deki gibi bir pencere<br />
gözükür.<br />
Şekil 7-8 Örnek onay penceresi<br />
Bu pencerede eğer kullanıcı Vazgeç butonuna tıklarsa, her hangi bir işlem<br />
yapılmaz. Kullanıcı eğer Tamam butonuna tıklarsa, bu durumda ya arka plan rengi<br />
istenilen renge boyanır veya rengi kullanıcının girmesi istenir. Kullanıcının rengi girmesi<br />
için ise Şekil 7-9’daki gibi bir pencere gelir.<br />
Şekil 7-9 Bilgi giriş penceresi<br />
Bu pencerede kullanıcı arka plan rengini girer ve Tamam butonuna tıklar. Bundan<br />
sonra arka plan istenilen renge boyanır. Bu pencerede varsayılan değer olarak blue<br />
gösterilmiştir. Bu JavaScript kodu içinde belirtilmiştir.<br />
confirm() fonksiyonu<br />
150
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu örnekteki confirm fonksiyonu onay fonksiyonu içinde şu şekilde<br />
kullanılmıştır:<br />
var seçim = confirm("Arka plan rengini değiştirmek<br />
istediğinizden emin misiniz?");<br />
if(seçim == false){<br />
}<br />
return;<br />
Bu fonksiyon true (doğru) ya da false (yanlış) değeri döndürür. Kullanıcı<br />
gösterilen penceredeki Tamam butonuna basarsa true, İptal butonuna basarsa false<br />
değeri döndürülür. Bu programda dönen bu değeri seçim değişkenine atadık. Daha sonra<br />
if karar yapısı içinde seçim değişkeninin değerini kontrol ediyoruz. Eğer seçim<br />
değişkeni değeri false ise, yani kullanıcı İptal butonuna tıklamış ise, bu durumda<br />
fonksiyon biter. Fonksiyonun bitmesi return komutuyla sağlanır. Eğer seçim<br />
değişkeninin değeri false değil ise, yani true ise, bu durumda fonksiyonun diğer kısmı<br />
işlem görmeye devam eder.<br />
Bir fonksiyona değer gönderme<br />
Bir fonksiyon çağırılırken o fonksiyona bir değer gönderilebilir. Bu durumda<br />
öncelikle fonksiyonun bu değeri alabilecek şekilde yazılmış olması gerekir. Bu örnekteki<br />
onay fonksiyonu kendisine gönderilen bir değeri alabilecek şekilde tanımlanmıştır.<br />
Fonksiyonun tanım kısmı şu şekildedir:<br />
function onay(gelen){<br />
Görüldüğü gibi fonksiyon isminden sonra parantez içinde gelen isimli bir<br />
değişken vardır. Bu değişken fonksiyon çağırılırken gönderilen değeri almak için<br />
kullanılır. Fonksiyona gönderilen değer bu değişkende tutulur. Daha sonra fonksiyon<br />
içinde gelen değişkeni ile fonksiyona gönderilen değer istenildiği gibi kullanılır.<br />
Bu durumda fonksiyon çağırılırken de bir değer gönderilmelidir. Bu örnekte onay<br />
fonksiyonu aşağıdaki gibi değer gönderilerek çağırılmıştır:<br />
onclick="onay('RED')"<br />
onclick="onay('BLUE')"<br />
Daha önceki bölümdeki örnekte göster fonksiyonu çağırılırken sadece fonksiyon<br />
ismi yazılıyordu. Bu örnekte ise fonksiyon çağırılırken aynı zamanda bir değer de<br />
gönderilmektedir. Her buton bu fonksiyona farklı bir değer göndermektedir. Böylelikle<br />
aynı fonksiyon farklı butonlar tarafından çağırıldığında web sayfası arka plan rengini<br />
farklı renklere boyayabilmektedir.<br />
151
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
JavaScript ile Arka Plan Rengini Değiştirme<br />
JavaScript ile bir web sayfasının birçok özelliği değiştirilebilir. Bu özelliklerden<br />
biri de arka plan rengidir. Arka plan renk değişimi document.bgColor değerine bir renk<br />
atayarak yapılır. Örneğin arka plan rengi kırmızı yapılmak istenirse bu şu şekilde yapılır:<br />
document.bgColor = 'RED';<br />
Yukarıdaki örnek sayfada da arka plan rengi benzer şekilde değiştirilmiştir.<br />
prompt fonksiyonu<br />
Üçüncü tip küçük pencere prompt fonksiyonu ile oluşturulur. Bu küçük<br />
pencerenin diğer iki küçük pencere tipinden farkı, bu pencerenin kullanıcının bir değer<br />
girmesine imkân vermesidir. Bu örnekte prompt fonksiyonu şu şekilde kullanılmıştır:<br />
renk = prompt("İngilizce Renk ismi giriniz:", "BLUE");<br />
document.bgColor = renk;<br />
Bu şekilde prompt fonksiyonu çağırılarak oluşturulan küçük pencere Şekil 7-9’da<br />
gözükmektedir. prompt fonksiyonuna iki string değeri gönderilir. Bunlardan ilki pencere<br />
içinde kullanıcıya gösterilir. İkinci string ise kullanıcının değer gireceği alanda varsayılan<br />
değer olarak gösterilir. Bu örnekte kullanıcıya sürekli varsayılan değer olarak BLUE<br />
gösterilmektedir. Bu fonksiyondan dönen değer kullanıcının girdiği değerdir.<br />
Kullanıcının girdiği bu değer bu örnekte renk değişkenine atanmıştır. Daha sonra da bu<br />
renk değişkeni sayfanın arka plan rengini değiştirmek için kullanılmıştır.<br />
Örnek Uygulama<br />
Bir sayfanın arka plan rengini 5 renk arasından rasgele bir renge değiştiren bir<br />
uygulama yapınız? Sayfanızda bir tane buton bulunsun. Bu butona tıklanınca sayfa arka<br />
plan rengi sizin seçeceğiniz 5 renkten birine boyansın. Her tıklamada arka planın<br />
boyanacağı renk 5 renk arasından rasgele seçilsin. Bu işlem için bu örnekte olduğu gibi<br />
yine bir fonksiyon yazınız? Butona tıklanınca bu fonksiyonu çağırınız?<br />
Rasgele renk seçimi yapabilmeniz için her butona tıklanıldığında 0 ile 4 arasında<br />
rasgele bir sayı üretmeniz gerekir. JavaScript şu şekilde rasgele 0 ile 4 arasında bir sayı<br />
üretebilirsiniz:<br />
var rasgeleSayı = Math.floor(Math.random()*5);<br />
Bu şekilde rasgele sayı ürettikten sonra, eğer üretilen sayı 0 ise bir renge, 1 ise<br />
farklı bir renge, 2 ise daha farklı bir renge, vb. boyayabilirsiniz.<br />
152
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
7.14 JavaScript ile Tablo Oluşturma<br />
JavaScript web sayfalarında tablo oluşturmak için birçok durumda kullanılır.<br />
Özellikle tablodaki bazı değerler hesaplanarak oluşturulacaksa, JavaScript çok kolaylık<br />
sağlar.<br />
Şimdi bir derse ait vize, final ve ders ortalama notunu öğrencilere duyurmak için<br />
yazılmış bir web sayfası görelim. Bu sayfadaki tablonun her satırı bir JavaScript<br />
fonksiyonu tarafından oluşturulsun. Tabloya bir satır eklemek için yazılmış olan<br />
JavaScript fonksiyonu çağırılsın. Bu örnek sayfanın kodunu içeriği Tablo 7-8’deki gibi<br />
olabilir.<br />
<br />
JavaScript ile Tablo Oluşturma<br />
<br />
<br />
function satırEkle(isim, vize, final){<br />
document.write("");<br />
document.write(""+isim+"");<br />
document.write(""+vize+"");<br />
document.write(""+final+"");<br />
dersNotu = vize*0.4 + final*0.6;<br />
document.write(""+dersNotu+"");<br />
document.write("");<br />
}<br />
<br />
<br />
<br />
Vize ve Final Notları Tablosu: <br />
<br />
İsim Vize Notu Final Notu<br />
Ders Notu<br />
<br />
satırEkle("Ali Ak", 70, 80);<br />
satırEkle("Veli Kara", 80, 90);<br />
satırEkle("Mehmet Uzun", 70, 100);<br />
satırEkle("Tahir Kısa", 50, 90);<br />
<br />
<br />
<br />
<br />
Tablo 7-8 Dinamik tablo oluşturma örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 7-10’daki gibi gözükür.<br />
153
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 7-10 Dinamik tablo oluşturma örneği<br />
Öncelikle bu sayfadaki kodunu HTML gövde kısmını incelersek, ilk önce bir<br />
başlık oluşturuluyor. Sonra bir tablo oluşturuluyor ve bu tablonun ilk satırı HTML<br />
imleriyle oluşturuluyor. Sonra tablonun bilgi içeren diğer satırlarını oluşturmak için head<br />
kısmında yazılan satırEkle fonksiyonu çağırılıyor.<br />
satirEkle("Ali Ak", 70, 80);<br />
satirEkle("Veli Kara", 80, 90);<br />
satirEkle("Mehmet Uzun", 70, 100);<br />
satirEkle("Tahir Kısa", 50, 90);<br />
Dikkat edilirse bu fonksiyona sadece öğrenci ismi, vize ve final notları<br />
gönderiliyor. Ders notu değeri gönderilmiyor. Ders notu vize notu ile final notundan<br />
hesaplanabildiği için satırEkle fonksiyonuna gönderilmiyor. Bu fonksiyon içinde ders<br />
notu vize ve final notlarından hesaplanıp tabloya yazdırılıyor.<br />
Şimdi de satırEkle fonksiyonunu inceleyelim. Bu fonksiyonun amacı tabloya<br />
bir satır eklemektir. Tabloda da dört tane hücre bulunmaktadır. Öncelikle fonksiyon üç<br />
farklı parametre almaktadır. İlk parametre isim, ikinci parametre vize notu ve üçüncü<br />
parametre final notudur. Bu parametreler fonksiyonun her çağırılışında farklı değerler<br />
almaktadır. Fonksiyon içinde önce tablonun bir satırını oluşturmak için başlangıç<br />
imi yazılıyor, sonra da hücreler sırasıyla oluşturuluyor. En sonunda da satır sonu kapanış<br />
imi yani yazılıyor. Ayrıca ders notu vize ve final notu kullanılarak hesaplanılıyor.<br />
Örnek Uygulama<br />
Her satırı bir JavaScript fonksiyonu tarafından üretilen bir tablonun içinde olduğu<br />
örnek bir sayfa hazırlayınız? Tabloda futbol takımlarıyla ilgili bilgiler olsun. Tablonun<br />
her satırında 6 hücre bulunsun. Bu hücreler sırasıyla, takım ismi, toplam maç sayısı,<br />
galibiyet sayısı, beraberlik sayısı, mağlubiyet sayısı ve toplam puanı göstersin. Bu<br />
154
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
değerlerden ilk beşi fonksiyona parametre olarak gönderilsin. En son değer yani takımın<br />
toplam puanı fonksiyon içinde hesaplanarak tabloya yazılsın. Bu tabloya sayfanın gövde<br />
kısmında 5 takıma ait değerler giriniz? Yani bu fonksiyonu 5 defa farklı takımlar için<br />
çağırınız?<br />
7.15 Döngüler<br />
Diğer bütün dillerde olduğu gibi JavaScript dilinde de birçok döngü çeşidi vardır.<br />
JavaScript dilinde iki tip for döngüsü ve iki tip de while döngüsü mevcuttur. JavaScript<br />
dilindeki bu döngüler C ve Java dillerindeki döngülere benzerler.<br />
Şimdi bir for döngüsünün kullanıldığı örnek bir sayfa görelim. Bu sayfadaki for<br />
döngüsü bir çarpım tablosu oluşturmak için kullanılıyor. Bu döngü 1’den başlayarak 10’a<br />
kadar sayıları çarpım tablosuna yazıyor. Döngünün her dönmesinde tabloda bir satır<br />
oluşturuluyor.<br />
Çarpım tablosunu oluşturan fonksiyon yine head kısmında yazılmış olup, gövde<br />
kısmında istenilen değer için çağırılmıştır. Bu şekilde hangi değer gönderilirse o sayı için<br />
çarpım tablosu oluşturulmaktadır. Bu sayfanın HTML kodu Tablo 7-9’da verilmiştir.<br />
<br />
JavaScript ile Çarpım Tablosu Oluşturma<br />
<br />
<br />
function çarpımTablosuOluştur(sayı){<br />
document.write("");<br />
for(i = 1; i
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Tablo 7-9 Döngülerle tablo oluşturma<br />
Bu HTML belgesi tarayıcı içinde Şekil 7-11’deki gibi gözükür.<br />
Şekil 7-11 Döngülerle tablo oluşturma<br />
Bu örnekte tablonun tamamı çarpımTablosuOluştur fonksiyonu içinde<br />
oluşturulmuştur. Dolayısıyla bu örnekteki fonksiyon başında önce tablo oluşturmak için<br />
imi yazılmıştır. Fonksiyonun sonunda ise tablonun kapanış imi yazılmıştır.<br />
Tablonun her bir satırı ise for döngüsünün bir dönmesinde oluşturulmuştur. Daha önceki<br />
örnekte fonksiyonun tamamında tablonun bir satırı oluşturuluyordu, bu örnekte ise for<br />
döngüsünün her dönmesinde tablonun bir satırı oluşturulmaktadır.<br />
JavaScript’te for döngüsü şu şekilde yazılır:<br />
for(i = 1; i
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
içinde yani döngünün gövde kısmında tablonun bir satırını oluşturmak için komutlar<br />
bulunmaktadır.<br />
Örnek Uygulama<br />
Kullanıcının gireceği bir tamsayıdan küçük bütün pozitif sayıları ve karelerini bir<br />
tabloda gösteren bir sayfa yazınız? JavaScript kodu başında önce kullanıcının bir sayı<br />
girmesini isteyiniz? Bunun için prompt() fonksiyonunu kullanınız? Daha sonra bir tablo<br />
oluşturunuz? Tablonun her satırında iki tane hücre olsun. İlk hücre sayıyı, ikinci hücre bu<br />
sayının karesini göstersin. for döngüsünün her dönmesinde tabloda bir tane satır<br />
oluşturunuz? Örneğin kullanıcı 5 sayısını girerse, tablonun ilk satırında 5 ve 25 olmalı.<br />
İkinci satırında 4 ve 16 olmalı. Bu şekilde devam etmeli ve en son satırda 1 ve 1 olmalı.<br />
Bu uygulamada fonksiyon kullanmanıza gerek yok.<br />
7.16 Harici JavaScript Dosyası Kullanma<br />
Bir HTML belgesi içinde kullanacağımız JavaScript fonksiyonlarını head kısmı<br />
yerine harici dosyalarda da yazabiliriz. Bu durumda head kısmında kullanacağımız<br />
JavaScript dosyasına bağlantı veririz. Harici JavaScript dosyalarının kullanımı harici CSS<br />
dosyalarının kullanımına benzer.<br />
Şimdi bir önceki örnekte yazmış olduğumuz JavaScript fonksiyonunu harici bir<br />
JavaScript dosyasında yazalım. Daha sonrada bu fonksiyonun web sayfası içinden nasıl<br />
kullanıldığını görelim.<br />
Tablo 7-10’daki JavaScript kodu carpimtablosu.js isimli bir dosyaya<br />
kaydediniz. Bu dosyanın uzantısının .js olduğuna dikkat ediniz. Ayrıca bu dosya içinde<br />
script iminin kullanılmadığına dikkat ediniz. Çünkü script imi bir HTML imidir.<br />
Oysa bu dosya bir HTML dosyası olmayıp, bir JavaScript dosyasıdır.<br />
function çarpımTablosuOluştur(sayı){<br />
document.write("");<br />
for(i = 1; i
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Daha sonra bu dosya Tablo 7-11’deki gibi bir HTML belgesi içinde bağlantı<br />
verilerek kullanılabilir.<br />
<br />
Harici JavaScript Dosyası kullanımı<br />
<br />
<br />
<br />
Carpim Tablosu:<br />
<br />
carpimTablosuOlustur(5);<br />
<br />
<br />
<br />
<br />
Tablo 7-11 Harici JavaScript dosyası kullanan bir HTML belgesi<br />
Bu HTML belgesinin head kısmında kullanılan script imine dikkat ediniz. Bu<br />
durumda script imi içerisinde JavaScript kodu yerine, bu imin src özniteliği<br />
kullanılmıştır. Bu öznitelik değeri olarak JavaScript kodunun bulunduğu dosya adı<br />
verilmiştir. Bu örnekte HTML belgesi ile JavaScript dosyasının aynı dizinde olduğu<br />
varsayılmıştır. Eğer JavaScript dosyası farklı bir dizindeyse, bu dosyanın yolu uygun bir<br />
şekilde belirtilmelidir. Diğer yandan başka bir web sayfasında bulunan JavaScript<br />
dosyasına bağlantı verilerbilir. Bu durumda src özniteliği değeri olarak bu JavaScript<br />
dosyasının tam URL adresi verilmelidir.<br />
7.17 Diziler<br />
Diğer bütün dillerde olduğu gibi JavaScript dilinde de dizi desteği vardır. Diziler<br />
aynı türden bir çok veriyi gruplamaya imkan verir. Bir değişken tek bir değer tutarken,<br />
bir dizi değişkeni aynı tipten birden fazla veri tutar. JavaScript dilinde dizi bir nesnedir<br />
[10]. Bir dizi değişkeni Array anahtar kelimesi kullanılarak oluşturulur.<br />
Şimdi bir dizinin JavaScript içinde nasıl kullanıldığını örnek bir sayfa ile görelim.<br />
Bu sayfa basit bir oyun sayfasıdır. Kullanıcının rasgele 10 sayıdan birisini tahmin etmesi<br />
istenmektedir. Sonuca göre kullanıcıya eğer bildiyse bir tebrik mesajı, eğer bilemediyse<br />
de farklı bir mesaj verilmektedir.<br />
Bu sayfada bir JavaScript fonksiyonu yazılmıştır. Bu fonksiyon sayfanın head<br />
kısmında bulunmaktadır. Bu fonksiyon sayfa gövdesinde bulunan bir buton tarafından<br />
çağırılmaktadır. Bu sayfanın HTML kodu Tablo 7-12’de verilmiştir.<br />
158
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
Sayı Tahmin Oyunu<br />
<br />
<br />
function tahminEt(){<br />
// bir dizi oluştur<br />
var sayılar = new Array();<br />
// diziye rasgele oluşturulmuş 5 sayı koyalım<br />
for(i = 0; i
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 7-12 Sayı tahmin oyunu penceresi<br />
Bu penceredeki OYNA butonuna kullanıcı tıkladığında, kullanıcının 1 ile 20<br />
arasında bir sayı girmesi için küçük bir pencere gelir. Sonra girdiği sayı eğer rasgele<br />
sayılardan bir tanesiyle aynıysa, kendisine rasgele bir sayıyı bulduğunu belirten yeni bir<br />
mesaj penceresi daha gelir. Eğer girdiği sayı rasgele sayılardan bir tanesiyle aynı değilse,<br />
bu durumda da yine kendisine bu yönde bir mesaj veren küçük bir pencere gelir. Bu<br />
şekilde kullanıcı oyunu istediği kadar oynayabilir.<br />
Şimdi programın içeriğini inceleyelim. Öncelikle tahminEt fonksiyonu içinde bir<br />
dizi oluşturuluyor. Bu dizi şu şekilde oluşturuluyor:<br />
var sayılar = new Array();<br />
Diğer değişkenlerden farklı olarak dizi değişkenlerinin kullanılmadan önce bu<br />
şekilde Array kelimesi ile açıkça oluşturulmaları gerekir. Dizi değişkeni olan sayılar<br />
oluşturulduktan sonra, for döngüsü içinde bu diziye 10 tane rasgele sayı atanıyor. Bu<br />
sayılar 1 ile 20 arasında rasgele üretilen sayılardır. Daha sonra kullanıcıdan bir sayı<br />
girmesi isteniyor ve kullanıcının girmiş olduğu sayı, sayı değişkeninde tutuluyor. Sonra<br />
da yine başka bir for döngüsünde kullanıcının girmiş olduğu sayı değerinin dizideki<br />
sayılardan her hangi birine eşit olup olmadığı kontrol ediliyor. Eğer herhangi birisine<br />
eşitse, kullanıcıya bir mesaj veriliyor ve fonksiyon bitiriliyor. Kullanıcıya mesaj<br />
verildikten sonra gelen return anahtar kelimesi fonksiyonun o noktada biteceğini<br />
gösteriyor. Eğer dizideki bütün elemanlar kontrol edildikten sonra hala eşit bir sayı<br />
yoksa, bu durumda for döngüsü bitince kullanıcıya başka bir mesaj veriliyor ve<br />
fonksiyon bu şekilde bitiyor.<br />
Fonksiyon içindeki str değişkeni programımızdaki önemli bir ayrıntıyı<br />
oluşturuyor. Eğer kullanıcı sayılardan birisini tahmin edemezse bütün sayıları kullanıcıya<br />
göstermek istiyoruz. Bunun için bir string değişkeninde sayıları art arda ekliyoruz.<br />
Döngünün her dönmesinde dizinin bir elemanını str değişkenine ekliyoruz. Böylece for<br />
döngüsü bittiğinde bütün sayılar str değişkenine eklenmiş oluyor. Fonksiyon sonunda<br />
kullanıcıya bilemediğine dair mesajı verirken bütün sayıları da str değişkeninden<br />
yazdırıyoruz.<br />
160
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Dizi Olusturma<br />
Dizi oluşturmanın diğer bir metodu da bütün dizi elemanlarına dizi oluştururken<br />
değer atamaktır. Bu şu şekilde yapılır:<br />
var sayılar = new Array(2, 30, 45, 30, 60);<br />
var isimler = new Array(“Ahmet”, “Mehmet”, “Ali”, “Ayşe”,<br />
“Fatma”);<br />
Bu durumda tek komutla hem sayılar ve isimler dizisi oluşturulur hem de bu<br />
dizilere değerler atanır. sayılar dizisinin ilk elemanının değeri 2, ikinci elemanı değeri<br />
30, vb. olur. Benzer şekilde isimler dizisinde stringler tutulur. Bu dizinin de ilk elemanı<br />
“Ahmet”, ikinci elemanı “Mehmet”, vb. olur.<br />
Rasgele Sayı Üretme<br />
JavaScript dilinde rasgele sayı üretmek için Math.random() fonksiyonu<br />
kullanılır. Bu fonksiyon 0 ile 1 arasında rasgele bir ondalıklı sayı üretir (sıfır üretilebilir<br />
ama 1 üretilemez, yani üretilen sayılara sıfır dahil, 1 ise hariçtir.) Eğer bizim üretmek<br />
istediğimiz sayı daha büyük bir rasgele sayıysa, bu durumda üretilen sayıyı başka bir<br />
sayıyla çarparız. Örneğin bu uygulamada biz 1 ile 20 arasında (ikisi de dahil) rasgele bir<br />
sayı üretmek istiyoruz. Bunun için Math.random() fonksiyonu ile üretilen sayıyı 20 ile<br />
çarpıyoruz. Bu durumda üretilen sayı 0 ile 20 arasında olmuş oluyor (sıfır dahil 20 hariç).<br />
Daha sonra Math.floor() fonksiyonu ile üretilen bu sayıyı tamsayıya çeviriyoruz. Bu<br />
fonksiyon üretilen sayının ondalıklı kısmını atıyor. Eğer üretilen sayı 15.7 ise, bunun<br />
ondalıklı kısmını atıyor ve sonuç 15 oluyor. En son adımda ise, üretine bu ondalıklı<br />
sayıya 1 ekliyoruz. Çünkü bu haliyle üretilen sayı 0 ile 20 arasında oluyor ( sıfır dahil, 20<br />
hariç). Biz ise üretilen sayının 1 ile 20 arasında (ikisi de dahil) olmasını istiyoruz. Bunu<br />
elde edebilmek için de üretilen sayıya 1 ekliyoruz.<br />
Örnek Uygulama<br />
Siz de yazacağınız bir sayfada isim tahmin etme oyunu geliştiriniz? Bir dizide 10<br />
tane kişi ismi tutunuz? Kullanıcının gireceği bir isim listede varsa, kullanıcıya bir tebrik<br />
mesajı veriniz? Eğer girdiği isim listede yoksa, tekrar oynaması için bir teşvik mesajı<br />
veriniz?<br />
7.18 Özetle<br />
Bu bölümde JavaScript dilinin temel özellikleri örneklerle anlatılmıştır. Bu<br />
bölümün amacı JavaScript dilini bütün incelikleriyle anlatmak olmayıp, genel bir temel<br />
oluşturmaktır. Burada oluşturulan temel üzerine isteyen kişiler kendi gayretleriyle<br />
eklemeler yapabilirler.<br />
161
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Ayrıca bu bölümde programlamanın temelleri anlatılmamıştır. Bu bölümü çalışan<br />
kişilerin daha önceden programlamanın temellerini bildikleri varsayılmıştır. Özellikle<br />
değişkenler, karar yapıları, döngü yapıları ve fonksiyonlar gibi konularda okuyucuların<br />
her hangi bir programlama dilinden bilgilerinin olduğu varsayılmıştır.<br />
JavaScript dilinde olaylar önemli bir yere sahiptir. Biz bu bölümde kolaylık<br />
olması açısından sadece butona basılma olayıyla ilgili örnekler yaptık. Ama benzer<br />
şekilde daha birçok olay çeşidi vardır. Bu bölümdeki anlatılan kısımları iyi anlayan bir<br />
kişi diğer çeşit olayları da öğrenmekte çok güçlük çekmeyecektir.<br />
7.19 JavaScript ile İlgili Bazı Kaynaklar<br />
JavaScript ile ilgili daha geniş bilgi için Türkçe kitap olarak şu kıtabı önerebiliriz:<br />
Kitap Adı: JavaScript Temel Başvuru Kılavuzu<br />
Yazarı: Steven HOLZNER<br />
Yayınevi: Alfa Yayınları<br />
ISBN: 9752973310<br />
Ayrıca İnternet’te JavaScript ile ilgili çok fazla kaynak mevcuttur. Bunlardan<br />
bazıları şunlardır:<br />
http://www.w3schools.com/js/default.asp<br />
http://www.w3schools.com/js/js_examples.asp<br />
http://www-k12.atmos.washington.edu/~ovens/javascript/jsindex.html<br />
7.20 Referanslar<br />
[1] Static web page, http://en.wikipedia.org/wiki/Static_web_page, 7 Ekim 2009.<br />
[2] Dynamic web page, http://en.wikipedia.org/wiki/Dynamic_web_page, 7 Ekim 2009.<br />
[3] Server-side scripting, http://en.wikipedia.org/wiki/Server-side_scripting, 7 Ekim<br />
2009.<br />
[4] Client-side scripting, http://en.wikipedia.org/wiki/Client-side_scripting, 7 Ekim<br />
2009.<br />
[5] JavaScript, http://en.wikipedia.org/wiki/JavaScript, 7 Ekim 2009.<br />
162
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
[6] VBScript, http://en.wikipedia.org/wiki/VBScript, 7 Ekim 2009.<br />
[7] JavaScript Variables, http://www.w3schools.com/js/js_variables.asp, 7 Ekim 2009.<br />
[8] JavaScript If...Else Statements, http://www.w3schools.com/js/js_if_else.asp, 7 Ekim<br />
2009.<br />
[9] JavaScript Functions, http://www.w3schools.com/js/js_functions.asp, 7 Ekim 2009.<br />
[10] JavaScript Array Object, http://www.w3schools.com/js/js_obj_array.asp, 7 Ekim<br />
2009.<br />
163
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 8<br />
8.1 Amaç<br />
MULTİMEDYA<br />
Bu bölümde amacımız, dijital ses ve videonun temellerinin anlaşılması ve bunların<br />
web sayfaları içinde sunulmasının öğrenilmesidir. Bu amaçla öncelikle dijital sesin<br />
bilgisayarda kaydedilmesinin temelleri anlatılmıştır. Sonra bu sesin sıkıştırılması<br />
teknikleri anlatılmış ve örnek uygulaması yapılmıştır. Bu ses dosyalarının web sayfaları<br />
içinde sunulması anlatılmıştır. Daha sonra dijital videonun temelleri, bilgisayarda<br />
kaydedilmesi ve web sayfası içinde sunulması gösterilmiştir. Ayrıca Flash video<br />
oluşturma ve web sayfası içinde sunulması işlenmiştir.<br />
8.2 Giriş<br />
Web sayfalarına metin ve görüntüye ek olarak ses ve video eklemek te<br />
mümkündür. Web sayfalarına sadece ses dosyaları eklenebileceği gibi sesli video<br />
dosyaları da eklenebilir. Son yıllarda özellikle video içeriğe sahip web siteleri hızla<br />
artmıştır. Youtube.com gibi sitelerin video kliplerini kolayca ve bedava paylaşma imkanı<br />
sunmasıyla web’de video kullanımı yaygınlaşmıştır. Bu sitelerdeki videoların çoğu<br />
eğlence amaçlı olmakla birlikte eğitim amaçlı, reklam ve tanıtım amaçlı video siteleri de<br />
yaygındır.<br />
8.3 Dijital Sesin Temelleri<br />
Sesler havada titreşimler yardımıyla analog olarak yayılır. Bir kişinin ağzından<br />
çıkan bir ses hava zerreciklerini titreştirerek etrafa yayılır. Dinleyicinin kulağına çarpan<br />
bu hava zerrecikleri sesin duyulmasını sağlar. Ses bilgisayar ortamında ise dijital olarak<br />
saklanır. Analog ses önce microfondan alınır ve dijital hale getirilir [1]. Bu şekilde<br />
bilgisayar ortamında tutulur veya İnternet üzerinden paylaşılır. Bilgisayardaki ses<br />
164
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
dosyaları çalındığında ise ses bilgileri hoporlörlerde dijital halden analog hale çevrilir ve<br />
insanların duyabilmesi için etrafa yayılır.<br />
Seslerin dijital hale getirilmeleri belirli bir periyotla seslerin anlık değerlerinin<br />
kaydedilmeleri ile olur. Örneğin normal bir insan konuşması bilgisayara kaydedilecekse,<br />
bunun için sesin saniyede 8000 tane farklı anlık değeri alınır. Bu şekilde bilgisayar<br />
ortamına aktarılır. Her bir anlık değerin büyüklüğü ise 8 bit olabilir. Bu şekilde bir sesin<br />
bir saniyelik kısmının bilgisayarda kaplayacağı alan şu kadar olur:<br />
8000*8= 64,000 bit. Yani 8,000 byte.<br />
Aynı sesin bir dakikalık kısmının bilgisayarda kaplayacağı alan ise<br />
60*8,000byte = 480,000 byte olur.<br />
Yani bir dakikalık bir ses kaydının bilgisayardaki büyüklüğü 480 KB civarında<br />
olur. Dolayısıyla dijital ses bilgisyarda çok fazla miktarda yer kaplar. Diğer yandan eğer<br />
kaydetmek istediğimiz ses bir kişinin konuşması değil de eğer bir müzik olsaydı, bu<br />
durumda sesi dijital hale getirirken sesin anlık değerinin daha sıklıkla alınması gerekirdi.<br />
Yoksa müzik kalitesinde ciddi orada düşüş meydana gelirdi. CD kalitesinde bir müzik<br />
dijital hale getirilmek istendiğinde saniyede 44,100 örnek alınır ve her bir örnek 16 bit<br />
büyüklüğünde olur. Buna ek olarak streo ses için aynı işlem iki kanal olarak yapılır.<br />
Bunun sonucunda 1 saniyelik dijital ses için gerekli olan alan miktarı:<br />
44,100*16*2= 1,411,200 bit olur. Yani 176,400 Byte olur.<br />
Aynı müziğin bir dakikalık kısmının bilgisayarda kaplayacağı alan ise<br />
60*176,400 = 10,584,000 Byte olur.<br />
Dolayısıyla 1 dakikalık bir müzik dijital halde bilgisayar belleğinde 10MB<br />
civarında yer kaplar. Bu da çok büyük bir miktardır. Özellikle İnternet üzerinden bu tür<br />
dosyaların bu halleriyle paylaşılması uygun değildir. Bunun için görüntülerde olduğu gibi<br />
seste de birçok sıkıştırma algoritması kullanılır. Bu algoritmalar yine görüntülerde olduğu<br />
gibi kayıplı ve kayıpsız olarak iki çeşittir.<br />
Ses ham veri olarak sıkıştırılmadan Windows bilgisayarlarda genellikle wav<br />
dosyalarında tutulur [2]. Wav dosyalarının kullanımı yaygındır. Özellikle üzerinde<br />
değişiklik yapılacak sesler ilk önce wav formatında ham veri olarak kaydedilir. Değişik<br />
programlarla ses dosyası üzerinde işlemler yapıldıktan sonra genellikle ses bir sıkıştırma<br />
algoritmasıyla [3] sıkıştırılır ve bu halleriyle kullanılır. Ses üzerinde değişiklikler yapan<br />
ve başka formatlara dönüştüren programlar çoğunlukla wav dosyaları üzerinde yani ham<br />
ses verisi üzerinde işlem yaparlar.<br />
165
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şu anda ses için en yaygın kullanılan sıkıştırma tekniği kayıplı sıkıştırma<br />
algoritmalarıdır. Bunlar sesin kalitesinden çok az kaybederek büyük ordan yer kazancı<br />
sağlamayı hedeflerler. Bu algoritmalardan en yaygın olanlarından birisi de mp3<br />
algoritmasıdır. Bu algoritma ham veri haldeki sesin boyunu yaklaşık 10’da 1 oranında<br />
azaltır. Fakat ses kalitesinde fark edilir bir düşüş gözlenmez. Çoğunlukla kaybedilen ses<br />
bilgisi insanların duyma sınırının dışında kalan verilerdir. Mp3 [4] gibi daha birçok<br />
kayıplı sıkıştırma algoritmaları vardır. Bunlar kullanım alanlarına ve istenilen ses<br />
kalitesine göre farklılık gösterirler. Diğer yandan kayıpsız sıkıştırma yapan algoritmalar<br />
da geliştirilmiştir. Fakat bunlar kayıplı sıkıştırma yapan algoritmalar kadar yaygın<br />
kullanılmamaktadır.<br />
8.4 Sesin Kaydedilmesi<br />
Bir Windows bilgisayarında ses kaydetmek nispeten kolaydır. Bunun için<br />
öncelikle bilgisayara bağlı bir mikrofon gereklidir. Daha sonra ses kaydetmek için<br />
Windows ile birlikte gelen “Ses Kaydedicisi” programı kullanılabilir. Bu program<br />
Donatılar altındaki Eğlence menüsü içindedir.<br />
Şimdi mikrofondan ses kaydı yapmanın bir örneğini görelim. Bunun için<br />
öncelikle Donatılar altında bulunan Eğlence menüsündeki “Ses Kaydedicisi” programını<br />
başlatınız. Bu programın görüntüsü Şekil 8-1’deki gibidir.<br />
Şekil 8-1 Ses Kaydedicisi programı pencere görüntüsü<br />
Bu program üzerinde bulunan en sağdaki kırmızı yuvarlaklı buton kayıt<br />
butonudur. Bu butona tıklayınca ses kaydı başlar. Bu butona tıklayınız ve mikrofona<br />
konuşmaya başlayınız. Ses kaydı yapılırken bu pencerenin ortasındaki yeşil çizginin sesin<br />
şiddetine göre değiştiğini gözlemleyiniz. Daha sonra bu pencerede bulunan kayıt<br />
butonunun hemen yanındaki stop butonuna basarak kaydı durdurunuz. Artık kaydetmiş<br />
olduğunuz bu sesi tekrar çalabilirsiniz. Bu sesi çalmak için aynı penceredeki oynatma<br />
butonuna tıklayınız. Bu durumda kaydetmiş olduğunuz sesi bilgisayar hopörlöründen<br />
dinlersiniz.<br />
Kaydetmiş olduğunuz sesi bir dosyaya kaydedebilirsiniz. Bunun için Ses<br />
Kaydedicisi penceresindeki Dosya menüsünde bulunan Kaydet seçeneğini seçiniz.<br />
Gelen pencerede dosyanın kaydedileceği dizini seçiniz ve dosyaya bir isim veriniz.<br />
Dosyanızın uzantısı wav şeklinde olacaktır. Çünkü kaydetmiş olduğunuz ses dosyası<br />
sıkıştırılmamış ham veri içeren bir ses dosyasıdır.<br />
166
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu notların yazıldığı zamanda bir Windows XP bilgisayarında bulunan Ses<br />
Kaydedicisi programı, sesi saniyede 22,050 defa örnekleyerek ve her bir örneğin boyu<br />
da 16 bit olarak kaydetmektedir. Bu bilgiyi de Ses Kaydedicisi programının Dosya<br />
menüsünde bulunan Özellikler seçeneğinden kontrol edebilirsiniz. Bu değerler kaydı<br />
yapan mikrofonun özelliklerine göre değişebilir.<br />
Kaydedilen ses dosyası artık herhangi bir medya oynatıcısı ile çalınabilir. Örneğin<br />
Windows Media Player ile kaydetmiş olduğunuz dosyayı çalabilirsiniz.<br />
Örnek Uygulama<br />
Ses Kaydedicisi programını kullanarak değişik sürelerde konuşma kaydediniz?<br />
Üretilen ses dosyalarının boyunun konuşma süresine göre nasıl değiştiğini<br />
gözlemleyiniz? Ses kayıt süresi iki katına çıkınca, dosya boyu da iki katına<br />
çıkmaktamıdır? İnceleyiniz?<br />
8.5 Sesin Sıkıştırılması<br />
Ses dosyaları ham veri olarak yani wav dosyası halinde çok yer kapladığından<br />
web sayfalarına bu halleriyle konulmaları uygun olmaz. Bu dosyaların önce<br />
sıkıştırılmaları gerekir. Daha önceki bölümlerde vurguladığımız gibi sesi sıkıştırmak için<br />
çok farklı algoritmalar geliştirilmiştir. Bu bölümde biz Microsoftun bir sıkıştırma<br />
programı olan Windows Media Encoder programını kullanarak ses dosyasını önce<br />
sıkıştıracağız, sonra da web sayfası içine yerleştireceğiz.<br />
İlk adım olarak Windows Media Encoder programını indirip bilgisayarınıza<br />
kurunuz. Bu program bedava bir program olup Eylül 2009 tarihi itibariyle<br />
http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx<br />
adresinden indirilmektedir. Daha sonra eğer bu adres değişirse, bir arama motorundan bu<br />
programın ismini aratarak indirilecek adresi bulabilirsiniz.<br />
Şimdi adım adım bir wav dosyasını Windows Media Encoder programını<br />
kullanarak nasıl sıkıştırılmış bir dosya haline getireceğimizi görelim.<br />
1. Windows Media Encoder programını başlatınız? Bu programı başlattığınızda<br />
bu oturumda ne yapmak istediğinizle ilgili bir küçük pencerede seçim<br />
yapmanız istenir. Bu pencerede dosya formatı değiştirme seçeneğini, yani<br />
“Convert a file” seçeneğini seçiniz. Sonra Next butonuna tıklayınız.<br />
2. Gelen ikinci küçük pencerede kaynak dosya ve hedef dosyaların belirtilmesi<br />
istenir. Bu penceredeki ilk seçenek kaynak dosyadır ve İngilizce olarak<br />
“source file” olarak tanımlanır. Kaynak dosyayı daha önceki kaydetmiş<br />
olduğumuz wav dosyası olarak seçiniz. İkinci seçenek oluşturulacak dosyadır.<br />
167
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
O da İngilizce olarak “Output File” olarak geçmektedir. Bu dosyaya kendisi<br />
otamatik olarak bir değer verir. Siz isterseniz bunun yolunu ve ismini<br />
değiştirebilirsiniz. Sonuçta üretilecek dosya bu olacaktır. Üretilecek dosyanın<br />
uzantısının wma olduğuna dikkat ediniz. Next butonuna tıklayınız.<br />
3. Üçüncü adımda bu dosyanın nasıl kullanılacağı sorulmaktadır. Kullanım<br />
amacına göre farklı sıkıştırma algoritması kullanılacaktır. Biz üretilen ses<br />
dosyasını bir web sunucusundan bir web sayfası ile kullanıcılara sunacağımız<br />
için, bu seçeneklerden web sunucusu seçeneğini seçiniz. Bu seçenek İngilizce<br />
olarak “web server (progressive download)” olarak verilmiştir. Next butonuna<br />
tıklayınız.<br />
4. Dördüncü adımda ise üretilecek ses dosyasının özellikleri sorulmaktadır. Bu<br />
pencerede Audio başlığı yanında bulunan aşağı açılan menüye tıklayınız.<br />
Burada sunulan seçeneklerden “Voice Quality Audio” seçeneğini seçiniz.<br />
Eğer dosyanız bir müzik dosyası olsaydı bu durumda “CD Quality Audio”<br />
seçeneğini seçebilirdiniz. Bu adım sonunda Finish butonuna tıklayınız ve yeni<br />
ses dosyasını üretiniz. Ses dosyası üretildikten sonra encoder programı<br />
penceresinin görüntüsü Şekil 8-2’deki gibidir.<br />
Üretilen ses dosyasının boyutunun ilk wav dosyası boyundan çok küçük olduğunu<br />
göreceksiniz. Bu sıkıştırma sonucu elde edilen yer kazancıdır. Üretilen dosyayı Windows<br />
Media Player veya başka bir medya oynatıcısı ile çalınız ve ses kalitesine dikkat ediniz.<br />
Ses kalitesinde çok açık bir fark olmadığını göreceksiniz.<br />
Örnek Uygulama<br />
Şekil 8-2 Windows Media Encoder görüntüsü<br />
168
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Aynı wav dosyasını Windows Media Encoder programını kullanarak farklı<br />
formatlara dönüştürmeyi deneyiniz? CD Kalitesinde ses için üretilen dosya ile Voice<br />
Quality Audio için üretilen dosyalar arasındaki boy ve kalite farkını karşılaştırınız?<br />
Ayrıca konuşma ve şarkı dosyalarını farklı formatlara dönüştürmeyi deneyiniz? Sonuçta<br />
üretilen dosyalar arasındaki kalite farkını gözlemlemeye çalışınız?<br />
8.6 Ses Dosyalarının Web Sayfalarına Konulması<br />
Bu bölümde bir önceki bölümde oluşturmuş olduğumuz sıkıştırılmış ses dosyasını<br />
web sayfasına nasıl koyacağımızı görelim. Bu amaçla hazırlanmış bir örnek web sayfası<br />
kodu Tablo 8-1’de verilmiştir.<br />
<br />
Web Sayfasına Ses Dosyası Ekleme<br />
<br />
<br />
<br />
Web Sayfasına Ses Dosyası Ekleme<br />
Aşağıdaki medya oynatıcısını kullanarak sesi çalabilirsiniz:<br />
<br />
<br />
<br />
<br />
Tablo 8-1 Web sayfasına ses yerleştirme örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 8-3’deki gibi gözükür.<br />
Şekil 8-3 Web sayfasına ses yerleştirme örneği<br />
Görüldüğü gibi tarayıcı penceresi içinde bir Windows Media Player<br />
görünmektedir. Bu oynatıcı üzerindeki butonlara tıklanarak web sayfasındaki ses dosyası<br />
çalınabilir veya durdurulabilir.<br />
169
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu sayfa içine ses dosyasının yerleştirilmesi için imi kullanılmıştır. Bu<br />
imin birçok özniteliği vardır. Bunlardan src özniteliği çalınacak ses dosyasının adını ve<br />
yolunu gösterir. Bu örnekte ses dosyası adı deneme1.wma olarak verilmiştir ve bu ses<br />
dosyası bu web sayfasının bulunduğu dizinde bulunan kayit dizini içindedir. Width ve<br />
height öznitelikleri medya oynatıcısının eninin ve boyunun büyüklüğünü gösterir.<br />
Autostart özniteliği ise sesin sayfa yüklenince hemen çalınmaya başlanıp<br />
başlanmayacağını gösterir. Bu örnekte bu özniteliğin değeri false olarak verildiği için<br />
sayfa yüklenince ses hemen çalınmaya başlamaz. Ancak kullanıcı play butonuna tıklarsa<br />
o zaman ses çalınmaya başlar. Eğer sesin hemen çalınmaya başlaması istenseydi, bu<br />
durumda autostart özniteliği değeri true olarak verilmeliydi. Bu örnekte kullanılan<br />
diğer bir öznitelik ise loop özniteliğidir. Bu öznitelik sesin çalınması bittikten sonra<br />
tekrar çalınmaya başlanıp başlanmayacağını belirler. Bu örnekte loop değeri false<br />
olduğu için ses tekrar çalınmaya başlamaz. Eğer değeri true olsaydı, bu durumda ses<br />
tekrar tekrar çalınırdı.<br />
HTML dili standardı bu örnekte kullanılan embed imi yerine object iminin<br />
kullanılmasını tavsiye etmektedir. Fakat şu anda object imi standardı bütün tarayıcılar<br />
tarafından aynı şekilde desteklenmemektedir. Bu yüzden örneğimizde embed imi<br />
kullanılmıştır.<br />
Örnek Uygulama<br />
Hazırlayacağınız bir web sayfasına oluşturmuş olduğunuz bir ses dosyasını<br />
koyunuz ve tarayıcı ile bu sesi çalınız? Web sayfanız içindeki embed imi boy değerlerine<br />
(width ve heigth) farklı değerler vererek oynatıcının tarayıcı içinde nasıl göründüğünü<br />
gözlemleyiniz? Ayrıca autostart ve loop öznitelik değerlerine true değeri atayarak bu<br />
özniteliklerin oynatıcı üzerindeki etkisini gözlemleyiniz?<br />
8.7 Midi Melodi Dosyaları ve Arka Plan Sesi<br />
Midi melodi dosyalarının [5] diğer ses dosyalarından farklı bir özelliği vardır. Bu<br />
melodi dosyalarında ses kaydedilemez. Sadece melodiler kaydedilir. Bunun sebebi bu<br />
dosyalarda melodilerin ses değeri olarak değil sadece tanım olarak kaydedilmeleridir.<br />
Diğer ses dosylarında sesler belirli aralıklarla örneklenir ve bu değerler ses dosyalarında<br />
tutulur. Fakat midi dosyalarında ses örnekleri yoktur. Sadece nota bilgisi, sesin şiddeti<br />
gibi bilgiler kayıtlıdır. Bu bilgilerden melodi her defasında tekrar üretilir. Dolayısıyla bu<br />
tip dosyalarda sadece melodiler saklanabilir. Bu dosyaların en önemli avantajları<br />
boylarının çok küçük olmasıdır. Bu tip dosyalar daha çok web sayfalarında arka planda<br />
çalınmak için kullanılır.<br />
Bu bölümdeki örnek sayfamızda kullanmak için öncelikle bir midi dosyasına<br />
ihtiyacımız vardır. Hazır bir midi dosyasını web’den bir siteden indirebilirsiniz. Web’de<br />
bedava midi dosyası bulunduran birçok site vardır. Bu siteleri bir arama motorunda<br />
170
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
“free midi files” diye aratarak bulabiliriz. Örneğin http://www.free-midi.org veya<br />
http://www.mididb.com sitelerinden bedava bir midi dosyası indirebilirsiniz.<br />
Şimdi indirmiş olduğunuz bir midi dosyasını bir web sayfası arka planında<br />
çalacak şekilde ayarlayalım. Bu amaçla hazırlanmış bir örnek web sayfası kodu Tablo<br />
8-2’de verilmiştir.<br />
<br />
Arka planda melodi çalma<br />
<br />
<br />
<br />
Arka planda melodi çalan bir web sayfası<br />
<br />
<br />
<br />
Tablo 8-2 Arka planda melodi çalan bir web sayfası örneği<br />
Bu HTML belgesi tarayıcı içindeŞekil 8-4’deki gibi gözükür.<br />
Şekil 8-4 Arka planda melodi çalan bir web sayfası örneği<br />
Bu örnekteki sayfa herhangi bir tarayıcı ile görüntülendiğinde arka planda<br />
nolove.mid melodi dosyası çalmaya başlar. Bu melodi tarayıcı içinde bu sayfayı<br />
görüntülendiği sürece de çalmaya devam eder. Bunun nedeni embed imi içindeki<br />
autostart ve loop öznitelik değerlerinin true olmasıdır.<br />
Bu örnekteki tarayıcı içinde oynatıcı görünmemektedir. Daha önceki örnekte<br />
tarayıcı içinde bir oynatıcı vardı ve bunun üzerindeki butonlar kullanılarak çalınan ses<br />
kontrol edilebiliyordu. Bu durumda ise tarayıcı içinde herhangi bir oynatıcı görüntüsü<br />
yoktur. Bunun nedeni embed iminin hidden özniteliğinin kullanılmış olması ve değerinin<br />
de true olarak verilmiş olması. Bu öznitelik tarayıcının web sayfası içinde görünmez<br />
olmasını sağlamaktadır.<br />
171
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bu şekilde arka planda melodi dosyası çalınabileceği gibi diğer muzik dosyaları<br />
da çalınabilir. Fakat arka planda müzik ya da melodi çalmak birçok kişi için rahatsızlık<br />
verici olabilir. Onun için arka plana müzik koymadan önce bu konu bütün yönleriyle ele<br />
alınıp o şekilde karar verilmelidir. Çünkü arka planda çalan müziği kullanıcının tarayıcı<br />
içinden kapatma imkanı yoktur. Ancak kullanıcı kendi hopörlörünü kapatabilir. Bu da<br />
kullanıcılara rahatsızlık verebilir.<br />
Örnek Uygulama<br />
Bir web sitesinden indireceğiniz midi dosyalarını hazırlayacağınız bir web<br />
sayfasının arka planında çalınız? Ayrıca arka planda diğer müzik dosyalarını çalmayı<br />
deneyiniz?<br />
8.8 Video Kaydetme<br />
Video bilgisayar ortamında art arda gelen görüntüler şeklinde kaydedilir [6]. Her<br />
saniyede duruma göre 15, 20 veya 30 civarında görüntü kaydedilir. Saniyedeki görüntü<br />
miktarı azaldıkça video kalitesi de düşer. Saniyede 30 civarında görüntü olursa insanlar<br />
videoyu sürekli bir görüntü şeklinde algılar. Televizyonda da saniyede 24 görüntü<br />
geçmektedir. Video kalitesinin ikinci bir önemli parametresi de videonun boyutudur.<br />
Video art arda gelen görüntüler şeklinde olduğu için her görüntünün genişlik ve<br />
yüksekliğindeki pixel miktarı çok öenmlidir. Pixel miktarı arttıkça görüntü kalitesi artar.<br />
Fakat dosya boyu da pixel miktarı ile birlikte hızla artar.<br />
Video bilgisayarda genellikle sesle birlikte aynı dosya içinde saklanır. Çünkü ses<br />
dosyaları videosuz olabilirken, video dosyaları genellikle sessiz olmaz. Dolayısyla video<br />
dosyaları görüntü bilgisiyle birlikte ses bilgisini de içerecek şekilde tasarlanmıştır.<br />
Video dosyaları ham veri halde çok fazla miktarda yer kaplar. Görüntüler bile<br />
ham veri olarak çok yüksek miktarda yer kaplıyordu. Videoda çok fazla miktarda görüntü<br />
art arda geldiği için videonun yer ihtiyacı çok daha fazladır. Dolayısıyla videolar<br />
bilgisayarda genellikle ham veri olarak tutulmaz. Kaydedilen videolar bir sıkıştırma<br />
algoritmasıyla sıkıştırılır.<br />
Şimdi Windows Media Encoder programını kullanarak bir videonun nasıl<br />
kaydedildiğini adım adım görelim. Bunun için öncelikle bilgisayarınızda bir kamera ve<br />
mikrofon olması gerekmektedir:<br />
1. Windows Media Encoder programını çalıştırınız? Bu program çalışınca gelen<br />
küçük pencerede yeni oturum için bir seçim yapmamızı ister. Bu pencerede<br />
“Capture Audio or Video” seçeneğini seçiniz? Bu ifade “ses veya görüntü<br />
kaydet” anlamına gelmektedir.<br />
172
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
2. Bir sonraki pencerede hem video hem de audio seçeneği seçili olarak Next<br />
butonuna tıklayınız.<br />
3. Gelen üçüncü pencerede oluşturulacak dosyanın yerini ve adını veriniz. Dosya<br />
uzantısı otomatik olarak wmv olarak verilecektir. Next butonuna tıklayınız.<br />
4. Dördüncü pencerede “Web server (progressive download)” seçeneğini seçiniz.<br />
Çünkü oluşturulacak olan videoyu daha sonra bir web sayfasına koyacağız.<br />
Next butonuna tıklayınız.<br />
5. Beşinci pencerede videonun ve sesin detayına ait bilgiler istenmektedir. Video<br />
için “VHS Quality Video” seçeneğini, audio için ise “FM Quality Audio”<br />
seçeneğini seçiniz. Finish butonuna tıklayınız.<br />
6. Bu aşamada pencere içinde kameradan gelen videoyu görmelisiniz. Windows<br />
Media Encoder programı Şekil 8-5’te olduğu gibi görünmelidir. Bu noktada<br />
bütün ayarlar yapılmıştır, fakat henüz kayıt başlamamıştır. Kaydı başlatmak<br />
için pencerenin yukarısında bulunan ve yeşil renkte olan “Start Encoding”<br />
yazan butona tıklayınız. Bu andan itibaren kayıt başlamıştır. Mikrofona<br />
konuşunuz ve bir süre kayıt yapınız?<br />
7. Kaydı bitirmek için yine pencerenin yukarı tarafında bulunan Stop butonuna<br />
tıklayınız. Kaydınız başarıyla yapılmıştır. Oluşturulan video dosyasını seçmiş<br />
olduğunuz dizin içinde kontrol ediniz ve bu dosyayı bir medya oynatıcısı ile<br />
çalınız?<br />
Kaydetmiş olduğunuz video dosyasının uzantısı wmv şeklindedir ve sıkıştırılmış<br />
haldedir. Bu dosya web sayfası içine yerleştirilebilecek durumdadır. Ses kaydında olduğu<br />
gibi ayrıca sıkıştırılmasına gerek yoktur. Bir sonraki bölümde bu video dosyasını bir web<br />
sayfası içine yerleştirmeyi göreceğiz.<br />
173
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Örnek Uygulama<br />
Şekil 8-5 Windows Media Encoder görüntüsü<br />
Siz de kendi bilgisayarınızda bir video görüntüsü kaydediniz? Aynı formatta ve<br />
değişik sürelerde video kaydederek zamana bağlı olarak dosya boylarının nasıl değiştiğini<br />
gözlemleyiniz? Buna ek olarak video kayıt formatını değiştiriniz? Yukardaki 5. adımda<br />
yapılan video formatı seçimini değiştirerek hem kaydedilen videonun kalitesini ve<br />
boyunu, hem de oluşturulan dosya boyunu karşılaştırınız?<br />
8.9 Video Dosyalarının Web Sayfasında Sunumu<br />
Videonun web sayfasında sunumu sesin sunumundan farklı değildir. Seste olduğu<br />
gibi yine imi kullanılır. Şimdi bu işlemin nasıl yapıldığını örnek bir sayfa ile<br />
görelim. Bu amaçla hazırlanmış bir örnek web sayfası kodu Tablo 8-3’te verilmiştir.<br />
<br />
Web Sayfasında Video Sunumu<br />
<br />
<br />
<br />
Web Sayfası İçinde Video Sunumu<br />
<br />
<br />
<br />
174
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Tablo 8-3 Web sayfasına video yerleştirme örneği<br />
Bu HTML belgesi tarayıcı içinde Şekil 8-6’daki gibi gözükür.<br />
Şekil 8-6 Web sayfasına video yerleştirme örneği<br />
Görüldüğü gibi videonun web sayfası içine yerleştirilmesi sesin yerleştirilmesi<br />
gibidir. Yine imi kullanılmıştır. Tek fark oynatıcı için verilen genişlik ve<br />
yükseklik değerlerinin video boyuna göre ayarlanmış olmasıdır. Bu örnekte oynatıcı<br />
genişliği 300, oynatıcı boyu da 300 olarak verilmiştir. Ses sunumu yapılan sayfada<br />
oynatıcı boyu daha küçüktü. Çünkü o sayfadaki oynatıcı içinde gösterilecek bir görüntü<br />
yoktu.<br />
Örnek Uygulama<br />
Sizde oluşturmuş olduğunuz video dosyalarını web sayfası içine yerleştiriniz ve<br />
tarayıcı içinde bu videoları oynatınız? Medya oynatıcısı boyuna farklı değerler vererek<br />
videoda meydana gelen değişimleri gözlemleyiniz?<br />
8.10 Başka Sitelerdeki Videoların Web Sayfasına Yerleştirilmesi<br />
İnternette bulunan video paylaşım sitelerinin bir kısmı, sitelerindeki videoların<br />
başka web sayfalarında kullanıcıya gösterilmelerine imkan vermektedir. Örneğin Google<br />
video sitesi video.google.com ve youtube.com siteleri bu şekilde kendi sitelerinde<br />
bulunan videoların başka sayfalar içinde gösterilmesine imkan vermektedirler. Bu imkanı<br />
175
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
kullanan kişiler çektikleri videoları önce bu sitelerden birisine yüklemekte, sonra da<br />
kendi sitelerindeki sayfalar içinde bu videoları kullanıcılarına göstermektedirler. Bu<br />
yöntem sitesinde video sunma imkanı sınırlı olan küçük ölçekli firmalar ve kişisel web<br />
siteleri için uygun bir çözüm olmaktadır. Çünkü videoların boyu genellikle büyük<br />
olduğundan web sitesinde videolar çok fazla ağ kapasitesi gerektirmektedir. Bu da küçük<br />
ölçekli kurumlar için extra maliyet oluşturmaktadır.<br />
Şimdi Google video sitesi video.google.com adresinde bulunan bir videoyu kendi<br />
sayfamız içine nasıl yerleştirebileceğimizi görelim. Önce bu siteden bir video seçelim.<br />
Biz örnek olarak bu sitede bulunan “Winning The DARPA Grand Challenge” isimli<br />
videoyu seçtik. Bu video<br />
http://video.google.com/videoplay?docid=8594517128412883394&ei=_NOfSsy4O4Ss2wL3ypSaBw&hl=en#<br />
adresindedir.<br />
Videoyu seçtikten sonra ikinci olarak yapmamız gereken şey, bu videoyu web<br />
sayfamıza yerleştirmek için gerekli olan HTML kodunu bu sayfada bulmaktır. Google<br />
video sayfalarında videonun alt kısmında “Embed Video” diye bir bağlantı<br />
bulunmaktadır. Bu bağlantıya tıklayınca bir metin alanında sayfamız içine<br />
yerleştireceğimiz HTML kodu görünür. Bu örnek için bu bağlantıya tıkladığımızda Tablo<br />
8-4’te görülen kod verilir. Bu kodu kendi sayfamız içine yerleştirerek bu videonun<br />
sayfamızda görünmesini sağlayabiliriz.<br />
<br />
Tablo 8-4 Bir Google videosunu web sayfasına ekleme kodu<br />
Bu videoyu içinde barındıran bir örnek web sayfası kodu Tablo 8-5’te verilmiştir.<br />
<br />
Web Sayfasına Başka Siteden Video<br />
Ekleme<br />
<br />
<br />
<br />
Video Ekleme - Google Video<br />
Bu sayfada Google video paylaşım sitesi video.google.com<br />
adresindeki "Winning The DARPA Grand Challenge" isimli video<br />
bulunmaktadır. Bu video Google sunucularında olmasına rağmen<br />
bizim web sayfamız içinde gösterilmektedir. <br />
<br />
176
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
<br />
<br />
<br />
Tablo 8-5 Bir Google videosunu içinde bulunduran örnek bir web sayfası<br />
Bu HTML belgesi tarayıcı içinde Şekil 8-7’deki gibi gözükür.<br />
Şekil 8-7 Bir Google videosunu içinde bulunduran örnek bir web sayfası<br />
Görüldüğü gibi hazırladığımız sayfa içinde Google video sitesinde bulunan video<br />
görünmektedir. Bu video Google sunucularında bulunmasına rağmen bizim sayfamız<br />
içinde izlenebilmektedir. Bu şekilde youtube.com gibi bu imkanı veren diğer sitelerdeki<br />
videolar da başka sayfalar içine yerleştirilebilir.<br />
Şimdi web sayfamız içine video yerleştirmenin nasıl yapıldığını inceleyelim.<br />
Öncelikle bizim yaptığımız tek şey Google’ın kendi sitesinde vermiş olduğu HTML<br />
kodunu kendi sayfamız içine kopyalayıp yapıştırmaktır ve sayfamızın diğer elemanlarını<br />
ayarlamaktır. Google’ın sağlamış olduğu ve Tablo 8-4’te görülen kod bizim daha önceki<br />
bölümlerde gördüğümüz imini kullanmaktadır. Bu imin kullanımı bizim önceki<br />
bölümlerde kullanımımıza benzer fakat bizim daha önce kullanmadığımız bazı yeni<br />
öznitelikler içermektedir. Ayrıca src özniteliği değeri olarak bu videonun Google<br />
sunucularındaki tam adresi verilmiştir. Bu özniteliklerden önemli birisi type<br />
özniteliğidir. Bu öznitelik değeri ”application/x-shockwave-flash” olarak<br />
verilmiştir. Bu çalınacak videonun flash videosu olduğunu belirtmektedir.<br />
177
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Örnek Uygulama<br />
Sizde Google video sitesinden ya da youtube.com gibi bu imkanı veren başka bir<br />
siteden seçeceğiniz bir videoyu kendi sayfanız içine yerleştiriniz? Aynı sayfaya birden<br />
fazla videoyu yerleştirmeyi deneyiniz?<br />
8.11 Flash Videosu Oluşturma ve Web Sayfasına Yerleştirme<br />
Şu anda web sayfalarında video sunumu için kullanılan en yaygın format flash<br />
video formatıdır [7]. Bu format özellikle youtube.com ve video.google.com sitelerinin bu<br />
formatı kullanmasıyla yaygınlaşmıştır. Flash oynatıcısının yaygın olan bütün işletim<br />
sistemlerinde ve tarayıcılarda çalışması bunda önemli bir etken olmuştur. Ayrıca flash<br />
oynatıcının performansı ve video sunma kalitesi bu seçimde önemli bir etkendir.<br />
Bu bölümde flash videosu oluşturmayı ve bu videoyu web sayfası içine<br />
yerleştirmeyi göreceğiz. Flash teknolojisi Adobe firmasının bir ürünüdür. Bu firmanın<br />
flash animasyonları ve flash videosu oluşturmak için olan programı “Adobe Flash CS4<br />
Professional” ürünüdür. Bu program kapsamlı animasyonlar ve video geliştirmek için<br />
tasarlanmıştır ve kullanımı çok basit değildir. Bundan dolayı biz bu bölümde flash<br />
videosu oluşturmak için kullanımı daha basit olan ve sadece video amaçlı geliştirilmiş<br />
olan bir ürünü kullanacağız. Bu ürün “Sothink Video Encoder for Adobe Flash” isimli<br />
programdır. Bu ürün bedava değildir fakat 30 günlük deneme süresi vardır. Ürünü bu<br />
deneme süresince bedava kullanabilirsiniz. Bu ürünü<br />
http://www.sothinkmedia.com/flash-video-encoder/ adresinden indirip bilgisayarınıza<br />
kurunuz.<br />
Şimdi Sothink Video Encoder for Adobe Flash programı ile flash videosu<br />
oluşturmayı adım adım görelim.<br />
1. Sothink Video Encoder for Adobe Flash programını çalıştırınız? Bu program<br />
çalışınca ilk gelen pencerede deneme kullanımına devam edip etmeyeceğimizi<br />
soruyor. Deneme kullanımına devam edeceğimiz için “Continue” butonuna<br />
tıklayarak bir sonraki adıma geçiniz?<br />
2. İkinci pencerede flash video dosyasına dönüştürmek için bir video dosyası<br />
seçmemizi istiyor. Daha önce kaydetmiş olduğunuz bir video dosyasını seçiniz.<br />
Bu fotoğraf makinanızla çektiğiniz bir video klibi de olabilir. Bu video üzerinde<br />
değişiklik yapmak isterseniz bu penceredeki “Crop & Trim” butonuna tıklayınız.<br />
Gelen pencerede video üzerinde değişiklik yapınız. Sonra Next butonuna<br />
tıklayarak bir sonraki adıma geçiniz.<br />
3. Üçüncü pencerede üretilecek videonuzun sahip olacağı özellikler<br />
gösterilmektedir. Bunlardan Profiles kısmında bulunan aşağı açılan menüden hızı<br />
178
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
512Kbps olarak seçebilirsiniz. Diğer seçenekler üzerinde bir değişiklik yapmanıza<br />
gerek yoktur. Sonra Next butonuna tıklayarak bir sonraki adıma geçiniz.<br />
4. Dördüncü pencerede oluşturulacak olan video ve diğer dosyalarla ilgili bilgiler<br />
sorulmaktadır. Bu adım sonunda gerekli seçimler yapıldığında program penceresi<br />
Şekil 8-8’deki gibi gözükür.<br />
a. Öncelikle Output Directory kısmında üretilecek dosyaların konulacağı<br />
dizini seçiniz.<br />
b. Sonra “Generate FLV” seçeneği başındaki radyo düğmesinin seçili<br />
durumda olduğunu kontrol ediniz. Seçili değilse radyo düğmesini seçili<br />
hale getiriniz.<br />
c. “Generate SWF” seçeneği başındaki radyo düğmesinin de seçili olduğunu<br />
kontrol ediniz. Seçili değilse radyo düğmesini seçili hale getiriniz. Bu<br />
seçeneğin altında bulunan “Play the created external FLV file<br />
progressivly” seçeneğini seçiniz.<br />
d. “Generate HTML” seçeneği başındaki radyo düğmesini seçili hale<br />
getiriniz.<br />
e. “Create Thumbnail” seçeneği başındaki radyo düğmesini seçili hale<br />
getiriniz.<br />
5. Beşinci adımda gelen pencerede üretilecek oynatıcı penceresinin şeklinin<br />
seçilmesi istenmektedir. Bunlardan her hangi birisini seçip Next butonuna<br />
tıklayınız. Bu adım sonunda seçtiğimiz dizinde dört farklı dosyanın üretildiğini<br />
göreceksiniz.<br />
Üretilen dört farklı dosyanın hepsinin de ismi aynı olmasına rağmen uzantıları<br />
farklı olacaktır. Bunlardan flv uzantılı dosya video dosyasıdır. Boyu en büyük olan<br />
dosya da budur. İkinci önemli dosya swf uzantılı dosyadır. Bu dosya flash oynatıcısının<br />
görüntü dosyasıdır. Flash oynatıcısının tarayıcı içinde nasıl görünmesi gerektiğini<br />
tanımlar. Üretilen üçüncü dosya htm uzantılıdır ve örnek web sayfası kodu içerir. Bu web<br />
sayfası içine üretilen video yerleştirilmiştir. Üretilen dördüncü dosya ise videonun bir jpg<br />
görüntüsüdür.<br />
179
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 8-8 Sothink Video Encoder for Adobe Flash programı görüntüsü<br />
Şimdi üretilen HTML dosyasını inceleyelim ve bu videoyu tarayıcı içinde<br />
görüntüleyelim. Üretilen HTML belgesi Tablo 8-6’daki gibidir. Bu HTML belgesinde<br />
sadece video vardır. Başka bir metin yoktur.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Tablo 8-6 İçinde Flash videosu bulunan ve otomatik üretilen web sayfası kodu<br />
Bu HTML belgesi tarayıcı içinde Şekil 8-9’daki gibi gözükür.<br />
180
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 8-9 Web sayfası içine flash videosu yerleştirme örneği<br />
Sothink Video Encoder for Adobe Flash programı hem videoyu flash formatına<br />
çevirir hem de gerekli oynatıcı dosyasını (swf) ve HTML dosyasını oluşturur. Bu yönüyle<br />
kullanımı gayet kolaydır. Diğer bazı flash videosu üreten programlar sadece flash videosu<br />
ürtmektedirler ve oynatıcı dosyası üretmemektedirler. Bu da programcının işini<br />
zorlaştırmaktadır. Ayrıca bir de oynatıcı dosyası oluşturmak için uğraşması<br />
gerekmektedir.<br />
Bu tarayıcı şekli içinde gözüken oynatıcı şekli bizim seçimimizin bir sonucudur.<br />
Flash Video oluşturma adımlarının 5. adımında eğer farklı bir oynatıcı şekli seçseydik, o<br />
durumda ona göre bir swf dosyası üretilecekti ve tarayıcı içinde de farklı bir oynatıcı<br />
şekli gözükecekti.<br />
Flash videosunun web sayfası içine yerleştirilmesini bir önceki bölümde Google<br />
videosunu yerleştirirken görmüştük. Orada web sayfasına video yerleştirmek için embed<br />
imi kullanılmıştı. Burada ise önce object imi kullanılmıştır. Object imi içinde ayrıca<br />
embed imi kullanılmıştır. Sadece embed imi de kulanılabilirdi. Fakat burada üretilen kod<br />
daha fazla tarayıcı tarafından çalıştırılmaktadır. Dolayısıyla bu web sayfası hem object<br />
imini destekleyen hem de embed imini destekleyen tarayıcılar tarafından çalıştırılır.<br />
Sonuç olarak flash videolarını bu şekilde web sayfasına eklemek daha genel bir<br />
çözümdür.<br />
Örnek Uygulama<br />
Sizde kaydetmiş olduğunuz bir videoyu veya fotoğraf makinanızla çekmiş<br />
olduğunuz bir video klibini bu bölümde anlatıldığı şekliyle flash videosuna<br />
dönüştürünüz? Bu videonun web sayfasında görüntülenmesini sağlayınız?<br />
181
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Video dönüştürme işlemini yaparken 5. adımda farklı oynatıcı şekilleri seçerek<br />
oluşturulan oynatıcının farkını gözlemleyiniz. Web sayfası içinde videonuzunun etrafına<br />
başka metinler ve başlıklar yerleştiriniz?<br />
Video dönüştürme işlemini yaparken 3. adımda farklı hızlar seçerek oluşturulan<br />
video dosyasının boyunu kontrol ediniz? Hangi hızlar için dosya boyutunun nasıl<br />
değiştiğini gözlemleyiniz? Ayrıca oluşturulan videolar arasındaki kalite farkını<br />
gözlemlemeye çalışınız?<br />
8.12 Referanslar<br />
[1] Priscilla Oppenheimer, Digitizing Human Vocal Communication,<br />
http://www.troubleshootingnetworks.com/language.html, 7 Ekim 2009.<br />
[2] WAV, http://en.wikipedia.org/wiki/WAV, 7 Ekim 2009.<br />
[3] Audio compression (data), http://en.wikipedia.org/wiki/Audio_compression_(data),<br />
7 Ekim 2009.<br />
[4] MP3, http://en.wikipedia.org/wiki/MP3, 7 Ekim 2009.<br />
[5] Musical Instrument Digital Interface,<br />
http://en.wikipedia.org/wiki/Musical_Instrument_Digital_Interface, 7 Ekim 2009.<br />
[6] Digital video, http://en.wikipedia.org/wiki/Digital_video, 7 Ekşm 2009.<br />
[7] Flash Video, http://en.wikipedia.org/wiki/Flash_Video, 7 Ekim 2009.<br />
182
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bölüm 9<br />
9.1 Amaç<br />
WEB SAYFASI TASARIMI VE<br />
EDİTÖR KULLANIMI<br />
Bu bölümde amacımız öncelikle web sayfası tasarımının temel prensiplerinin<br />
öğrenilmesi ve web sayfası geliştirme için HTML editörü kullanımının kavranmasıdır.<br />
HTML editörü olarak sık kullanılan editörlerden birisi olan Adobe Dreamweaver CS4<br />
seçilmiştir. Bu editörü kullanarak önce basit sayfalar oluşturulmuştur. Sonra sayfaya<br />
başlık ve liste ekleme, arka plan rengi ayarlama, bağlantı oluşturma, görüntü kullanımı,<br />
tablo kullanımı gibi özellikler işlenmiştir. Daha sonra site oluşturma, şablon oluşturma ve<br />
şablondan sayfa oluşturma anlatılmıştır.<br />
9.2 Giriş<br />
Kaliteli bir web sayfası tasarlamak ve geliştirmek emek ve tecrübe gerektirir.<br />
Teknik bilginin yanında sanatsal kabiliyet de önemlidir. Fakat bu konuda dikkat edilmesi<br />
gereken temel konular bilindiği takdirde ciddi hatalar yapılması engellenebilir. Bu<br />
bölümde önce kaliteli web sayfası tasarımı için dikkat edilmesi gereken konular<br />
anlatılacak. Daha sonra ise web sayfası editörleri kullanımı gösterilecektir. Birçok farklı<br />
kaynakta web sayfası tasarımı için farklı prensipler tavsiye edilmiştir[1, 2, 3]. Biz bu<br />
prensiplerden 6 tanesini aşağıdkai gibi seçtik.<br />
9.3 Web Sayfası Tasarımı Prensipleri<br />
Amaç<br />
183
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bir web sayfası tasarlanırken öncelikle bu web sayfasının amacı iyi<br />
belirlenmelidir. Bu web sayfasının hedef kitlesi iyi tespit edilmelidir. Bu web sayfası<br />
kimler tarafından kullanılacaktır ve kullanıcılar web sayfasından nasıl faydalanacaktır.<br />
Genellikle amaç çok ziyaret edilen ve hatta ziyaret edenlerin başkalarına da tavsiye ettiği<br />
bir web sayfası tasarlamaktır. Çünkü böyle bir web sayfası, birçok maddi ve manevi<br />
kazanç sağlar.<br />
İçerik<br />
Web sayfalarının çok insan tarafından ziyaret edilmesi öncelikle web sayfalarının<br />
içeriğiyle ilgilidir. Bir web sayfasındaki bilgiler kullanıcıların ihtiyaçlarını görüyorsa,<br />
onları bilgilendiriyor veya eğlendiriyorsa, bu durumda kullanıcılar hem bu sayfayı tekrar<br />
ziyaret edecek hem de başkalarına tavsiye edecektir. Dolayısıyla web sayfalarındaki<br />
içerik mümkün olduğunca anlaşılır, doğru ve doyurucu olmalıdır. Gereksiz ve yanlış<br />
bilgiden kaçınılmalıdır.<br />
Sadelik<br />
Web sayfası tasarımında lüzumsuz karmaşıklıktan kaçınılmalıdır. Web sayfaları<br />
kullanıcılara bilgileri en sade ve öz olarak vermelidir. Web sayfası içeriği hazırlanırken<br />
hedef kullanıcı kitlesinin anlayabilme kapasitesi sürekli göz önünde bulundurulmalıdır.<br />
Kolay Kullanılırlık<br />
Web sayfalarının kullanımı mümkün olduğunca kolay olmalıdır. Bunun için<br />
öncelikle iyi bir menü tasarımı ile web sayfası mantıklı alt bölmelere ayrılmalıdır.<br />
Menülerin isimleri açıklayıcı ve net olmalıdır. Buna ek olarak web sayfasında istenilen<br />
bir bilginin bulunabilmesi için arama hizmeti sağlanmalıdır.<br />
Hız<br />
Web sayfaları hızlı olmalıdır. Bir web sayfası mümkün olan en kısa surede<br />
açılmalıdır. Bu hem web sunucusunun hızı ile hem de web sayfasının içeriği ile ilgilidir.<br />
Web sayfasında gereksiz bilgiler ve özellikle de gereksiz resimler olmamalıdır. Aynı<br />
sayfadan çok fazla resim bulundurmaktan kaçınılmalıdır. Çünkü her bir resim dosyası<br />
ayrı bir http istemiyle sunucudan indirildiği için, aynı sayfadaki fazla sayıdaki resim web<br />
sayfasının performansını ciddi manada azaltabilir.<br />
Fontlar<br />
Web sayfalarında kullanılan fontlar kolay okunabilen türde olmalıdır. Web<br />
sayfasında çok farklı türden fontlar kullanılmamalıdır. Kullanıcı web sayfasını okurken<br />
dikkati dağılmamalıdır. Diğer yandan fontların rengi ile sayfanın arka plan rengi birbirine<br />
184
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
yakın olmamalıdır. Yazının kolay okunabilmesi için yazı arka plan üzerinde net bir<br />
şekilde görülmelidir. Bu da yazının renginin arka plan renginden çok açık veya çok koyu<br />
olmasıyla sağlanabilir.<br />
Hatasız Çalışma<br />
Web sayfalarında hata olmamalıdır. Bir web sayfası içindeki HTML elemanları<br />
HTML kurallarına uygun bir şekilde kullanılmadır. Web sayfaları bütün tarayıcılarda<br />
aynı şekilde çalışmalıdır. Bunu garantilemenin en kolay yolu ise HTML kurallarına<br />
uymaktır. Bir web sayfasının HTML kurallarına uygunluğu bir HTML doğrulayıcı<br />
(validator) ile kontrol edilebilir. W3C kurumu HTML belgelerinin doğruluğunu kontrol<br />
için http://validator.w3.org/ adresinde bir HTML doğrulayıcı sağlamaktadır. Yazılan web<br />
sayfaları web sitelerinde yayınlanmadan önce doğrulanmalıdır.<br />
9.4 HTML Editörleri<br />
HTML belgeleri herhangi bir metin editörüyle yazılabilir. Örneğin en basit metin<br />
editörlerinden biri olan Notepad programı kullanılarak HTML sayfaları oluşturulabilir.<br />
Fakat HTML sayfası oluşturmayı kolaylaştırmak için birçok HTML editörü<br />
geliştirilmiştir. Bu editörler HTML sayfası oluşturmayı kolaylaştırmak için birçok özellik<br />
sunarlar.<br />
9.2.1 HTML Metin Editörü<br />
HTML editörlerinin sunmuş oldukları özelliklerden ilki HTML imleri yazmayı<br />
kolaylaştırmaktır. Bu tip editörlere HTML metin editörü denir. Örneğin bu editörler bir<br />
sayfa içindeki HTML imlerini diğer metinlerden farklı bir renge boyarlar. Böylelikle<br />
sayfadaki HTML imlerinin programcı tarafından kolayca görülmesi sağlanır. Buna ek<br />
olarak birçok HTML metin editöründe kod tamamlama özelliği vardır. Örneğin bir<br />
programcı imini yazınca, daha sonra bu imi kapama noktasına gelinip < işaretçi<br />
yazılınca, HTML metin editörü bu kodu tamamlamak için kullanıcıya yardım eder.<br />
Bunlara ek olarak yazılan bir HTML belgesinin tarayıcıda nasıl gözüktüğünü anlamak<br />
için de sayfamızı ayrı bir tarayıcı penceresinde açmamıza gerek yoktur. HTML editörleri<br />
sayfayı tarayıcı içinde bir tuşa basarak gösterebilir.<br />
9.2.2 WYSIWYG Editörü<br />
HTML editörlerinin sunmuş oldukları ikinci önemli bir özellik ise HTML kodu<br />
üretmektir. Bu durumda kullanıcı web sayfasını tarayıcı içinde nasıl gözükecekse o<br />
şekilde yazar. HTML imlerini yazmaz. Arka planda HTML editörü bu sayfa için HTML<br />
imlerini üretir. Bu şekilde web sayfası geliştirmek çok daha kolaydır. Hatta HTML<br />
imlerini hiç bilmeyen kişiler bile bir web sayfası oluşturabilir. Bu tip editörlere<br />
İngilizcede WYSIWYG editörü denilmiştir [4]. Bu kısaltma İngilizce bir cümlenin<br />
kelimelerin ilk harflerinden oluşmaktadır. Bu cümle şudur: What You See Is What You<br />
185
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Get. Bunun anlamı “ne görüyorsan, onu elde ediyorsun” şeklinde verilebilir. Yani yazım<br />
ekranında gördüğün şey, tarayıcı içinde göreceğin sayfa oluyor. Yazım ekranında HTML<br />
imleri görünmüyor. Sadece sayfanın son hali görünüyor.<br />
Bu iki tip özelliğe ek olarak HTML editörleri web sayfalarının web sunucularına<br />
yüklenmesi için de bazı kolaylıklar sağlarlar. Kullanıcı her bir web sayfasını web<br />
sunucusuna tek tek aktarmak zorunda değildir. Editörler bir sitedeki bütün dosyaları veya<br />
üzerinde değişiklik yapılmış olan dosyaları web sunucusuna aktarırlar.<br />
9.5 HTML Editörü Programları<br />
Şu anda piyasada birçok HTML editörü bulunmaktadır. Bunların farklı özellikleri<br />
ve ücretleri vardır. Bunlardan bedava olan bazıları şunlardır: SeaMonkey, Nvu ve<br />
Amaya. Ücretli olup yaygın olarak kullanılan HTML editörlerinden birisi Adobe<br />
Dreamweaver CS4 editörüdür [5]. Bu bölümde örnek olması acısından bu editörünün<br />
kullanım şeklini ve özelliklerini inceleyeceğiz. Benzer özellikler diğer editörler<br />
tarafından da sunulmaktadır. Fakat, her editörün kendisine göre bazı farkları da vardır.<br />
9.6 Adobe Dreamweaver CS4<br />
Adobe Dreamweaver CS4 editörü Adobe firmasının bir ürünüdür. Şu anda en sık<br />
kullanılar HTML editörlerinden biridir. HTML editörlerinin sağlamış olduğu bütün temel<br />
özellikleri desteklemektedir. HTML kodu yazmanın yanında PHP, ASP, JSP, CSS,<br />
JavaScript, XML gibi web sayfası içinde kullanılabilecek birçok teknolojisi<br />
desteklemektedir. Şu anda bu ürünün en son versiyonu Dreamweaver CS4 versiyonudur.<br />
Bu ürün ücretlidir. Fakat bir aylık deneme süresince bedava kullanılabilir. Bu ürünün web<br />
sayfası http://www.adobe.com/products/dreamweaver/ adresidir. Bu sayfadan ürünün<br />
deneme versiyonu indirilebilir ve bir ay süresince bedava kullanılabilir.<br />
9.7 Dreamweaver CS4 ile bir Sayfa Oluşturma<br />
edilir:<br />
Dreamweaver CS4 ile yeni bir site ve sayfa oluşturmak için şu adımlar takip<br />
1. Dreamweaver CS4 programını çalıştırınız?<br />
2. File (Dosya) menüsünden New (Yeni) seçeneğini seçiniz. Bu durumda Şekil<br />
9-1’deki pencere gelir. Bu pencerenin en solundaki seçeneklerden “Blank page”<br />
yani boş sayfa seçeneğini seçiniz? Ortadaki “Page Type” kısmından en üstteki<br />
“HTML” seçeneğini seçiniz? Layout kısmından ise seçeneğini seçiniz?<br />
Create butonuna tıkladığınızda boş bir HTML sayfası oluşturulur.<br />
186
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-1 Dreamweaver CS4 ile boş bir sayfa oluşturma penceresi<br />
3. Bu noktada bir sayfa oluşturuldu. Ama henüz bu sayfada hiçbir şey yoktur. Bu<br />
durumda Dreamweaver CS4 editörü Şekil 9-2’deki gibi gözükür.<br />
Şekil 9-2 Dreamweaver CS4 ile oluşturulmuş boş bir sayfa<br />
Dreamweaver CS4 Editörü Modları: Design, Split, Code<br />
Dreamweaver CS4 editörünün 3 farklı modu vardır. Bu modların isimleri editör<br />
penceresinin sol üst köşesinde gözükmektedir. Bunlar sırasıyla: Code (HTML Kodu),<br />
Split (Bölmeli) ve Design (Tasarım). Yukarıdaki görünen pencerede editör bölmeli yani<br />
187
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
split modundadır. Bu modlar arasında gidiş geliş yapmak için editör penceresideki mod<br />
isimleri üzerine tıklamak yeterli olur.<br />
HTML Kod (Code) Modu<br />
Bu modda editör HTML kodu yazma modundadır. Sayfadaki bütün HTML imleri<br />
gösterilir. Programcı sayfaya ekleyeceği şeyleri HTML imileriyle birlikte ekler veya<br />
sileceği bilgileri HTML imleriyle birlikte siler. Bu modda iken Dreamweaver editörü<br />
HTML imlerini farklı renkte, sayfadaki metinleri ise farklı bir renkte gösterir. Bu HTML<br />
kodu yazmayı kısmen kolaylaştırır. Ayrıca editörün HTML kodlarını tamamlama özelliği<br />
vardır. Örneğin açılış imini programcı yazdığında, kapanış imini yazarken editör<br />
gerisini tamamlar. Dolayısıyla Dreamweaver editörü HTML kodları yazmak için bu iki<br />
şekilde kolaylıklar sağlar.<br />
Tasarım (Design) Modu<br />
Bu mod Dreamweaver editörünün WYSIWYG modudur. Yani bu modda HTML<br />
imleri yazılmaz. Sadece web sayfası kullanıcıya nasıl gözükmesi gerekiyorsa o şekilde<br />
bir sayfa oluşturulur. Dreamweaver editörünü bu modda kullanmak Microsoft Word ile<br />
tecrübesi olanlar için zor olmaz. Sayfanın alt bölmesindeki menüden fontların tipleri,<br />
büyüklükleri, yatay düzlemdeki pozisyonları, vb. Microsoft Word’de olduğuna benzer<br />
şekilde ayarlanır. Dreamweaver editörü yapılan her işlem için eğer gerekiyorsa arka<br />
planda HTML kodu üretir.<br />
Bölmeli (Split) Modu<br />
Dreamweaver editörü bu modda sayfayı ikiye böler. Üst kısımda sayfanın HTML<br />
kodunu gösterir. Alt kısımda ise sayfayı tasarım modunda gösterir. Programcı her iki<br />
bölmeyi de kullanarak sayfaya ekleme veya çıkarma yapabilir. Şekil 9-2’deki editör bu<br />
moda görünmektedir. Üst tarafta bazı HTML kodları gözükmektedir. Bu kodlar sayfanın<br />
genel yapısıyla ilgili kodlardır. Sayfada henüz hiçbir içerik yoktur. Onun için alt kısımda,<br />
yani tasarım kısmında herhangi bir şey gözükmemektedir. Bu modda programcı alt<br />
kısımda yaptığı değişiklikler için üst tarafta HTML kodu üretildiğini her işlem için görür.<br />
Live View (Canlı Görüntü) Modu<br />
Editör içinde üç tane mod butonunun sağında “Live View” butonu<br />
bulunmaktadır. Bu butona tıklanıldığında editör tasarım modundan görüntü moduna<br />
geçer. Yani sayfa tarayıcı içinde nasıl gözükecekse, tasarım modunda da o şekilde<br />
gösterilir. Bu modda tasarım kısmında sayfa üzerinde değişiklik yapılamaz. Bu mod<br />
sayfayı görüntülemek içindir. Fakat HTML kod kısmında sayfada değişiklik yapılabilir.<br />
Live View butonunun yanında bir de “Live Code” butonu vardır. Bu buton sadece Live<br />
View moduna geçildiğinde aktif olur. Bu butona tıklanıldığında sayfa tamamen<br />
188
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
değişikliklere kapanır. Artık sayfa üzerinde HTML kod kısmında da değişiklik<br />
yapılamaz. Değişiklik yapmak için bu moddan çıkmak gerekir.<br />
9.8 Dreamweaver ile Sayfaya Başlık, Paragraf ve Liste Ekleme<br />
Şimdi bu sayfaya bir başlık ve bir de paragraf ekleyelim. Ekleme işlemini bölmeli<br />
modda yapalım. Bölmeli modda eklemeyi tasarım kısmında yapalım. Böylece bizim<br />
yaptığımız her bir değişiklik için nasıl HTML kodu üretildiğini görelim.<br />
Bunun için şu adımları takip ederiz:<br />
Sayfanın ilk satırına “Mersin” kelimesini yazınız ve enter tuşuna basarak ikinci<br />
satıra geçiniz.<br />
1. İkinci adımda Mersin kelimesini seçiniz. Bu kelime seçili iken editörün alt<br />
kısmında bulunan PROPERTIES bölgesinden Format özelliğinin değerini<br />
“paragraph” yerine “Heading 1” olarak seçiniz. Bu işlemi yaptığınızda Mersin<br />
metninin büyüdüğünü ve HTML kod kısmında Mersin metninin imi içine<br />
konulduğunu göreceksiniz.<br />
2. Bu adımda ise Mersin başlığı altına bir metin ekleyelim. Bu metin şöyle bir metin<br />
olabilir: “Mersin Türkiye’nin güneyinde, Akdeniz sahilinde güzel bir şehirdir.”<br />
Eklediğiniz bu metnin bir paragraf yapıldığını HTML kod kısmında<br />
gözlemleyiniz.<br />
3. Bu adımda alt satıra geçiniz ve “Mersinin İlçeleri” ifadesini yazınız?<br />
4. Sonra her birisi yeni bir satırda olacak şekilde “Silifke”, “Anamur” ve “Tarsus”<br />
yazınız? Bu üç satırı yani Silifke, Anamur ve Tarsus kelimelerinin olduğu satırları<br />
seçiniz ve aşağıdaki PROPERTIES bölgesinde bulunan maddeleme butonuna<br />
basınız. Bu butona basınca her bir ilçe adının bir madde olarak görüntülendiğini<br />
göreceksiniz. Aynı zamanda HTML kod bölümünde bir sırasız liste<br />
oluşturulduğunu göreceksiniz. Bir tane imi ve bu im içinde her bir liste<br />
elemanı için de imleri oluşturulacaktır.<br />
5. “Mersinin İlçeleri” metnini seçiniz ve bu metnin tipini Heading 3 yapınız? Bu<br />
durumda da yine HTML kod kısmında bu metin etrafındaki paragraf imleri gider<br />
ve yerine imleri gelir.<br />
Bu haliye sayfamız Dreamweaver editörü içinde Şekil 9-3’teki gibi gözükür.<br />
189
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-3 Dreamweaver editörü içinde bölmeli modda içerik geliştirme<br />
Web Sayfasını Kaydetme<br />
Artık bu web sayfası kaydedilebilir durumdadır. Dreamweaver editörünün File<br />
(Dosya) kısmından Save (Kaydet) seçeneği seçilerek bu dosya istenilen dizine istenilen<br />
bir isimle kaydedilir.<br />
Sayfa Başlığı<br />
Bu sayfaya henüz bir başlık vermedik. Bunun için editör içinde yukarı menü<br />
kısmında Title özelliğinin yanında “Untitled Document” görünmektedir. Bu kısma<br />
istediğimiz bir metni yazarak sayfa başlığını ayarlayabiliriz. Ayrıca HTML kod kısmında<br />
bulunan imi arasındaki metni değiştirerek sayfa başlığı ayarlanabilir.<br />
Örnek Uygulama<br />
Bu örnekte olduğu gibi bir sayfa geliştiriniz? Sayfanızın içinde başlıklar,<br />
paragraflar ve listeler olsun. Sayfayı geliştiriken değişiklikleri hem tasarım penceresinde<br />
hem de HTML kod penceresinde yaparak deneyiniz? Örneğin bir başlık ekleyecekseniz,<br />
önce HTML kod kısmında HTML imlerini kullanarak ekleyiniz. Sonucu görünüz. Daha<br />
sonra tasarım penceresinde aynı işlemi yapınız. Bu iki kısmı birlikte kullanma konusunda<br />
örnekler yapınız? Ayrıca sıralı liste uygulamaları yapınız? Buna ek olarak iç içe liste<br />
uygulaması yapınız? Eğer editör ekranında bazı seçenekleri bulamazsanız, fareyle sağ<br />
tıklayıp, bu özellikleri bulmayı deneyebilirsiniz. Ayrıca editör penceresinin üst<br />
kısmındaki menü elemanlarını da kullanabilirsiniz.<br />
190
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
9.9 Arka Plan Rengi Ayarlama<br />
Şimdi aynı web sayfasının arka plan rengini ayarlayalım. Bunun için bölmeli<br />
modda devam edelim. Tasarım penceresi kısmından arka plan rengi ayarlamak için şu<br />
adımlar takip edilir:<br />
1. Bu sayfanın alt kısmında bulunan PROPERTIES panelinde Page Properties<br />
(Sayfa Özellikleri) diye bir buton bulunmaktadır. Bu butona tıklayınız?<br />
2. Bu durumda ekrana Şekil 9-4’teki küçük pencere gelir. Bu pencerede sayfa ile<br />
ilgili birçok özellik vardır. Bunlardan birisi de arka plan rengidir. Arka plan rengi<br />
ayarlamanın da iki farklı metodu vardır. Birisi CSS kullanmak, diğeri de HTML<br />
kullanmaktır.<br />
3. CSS kullanarak arka plan rengini ayarlamak için önce pencerenin sol tarafında<br />
bulunan “Category” listesinden “Appearance (CSS)” seçeneği seçilir. Daha<br />
sonra pencerenin orta kısmında bulunan Background color seçeneği yanındaki<br />
küçük ok işaretine tıklanır. Bu durumda kullanıcının seçmesi için Şekil 9-4’teki<br />
gibi bir renk seçme kısmı gelir. Bu alandan istenilen renk seçilir ve OK butonuna<br />
tıklanır. Bu işlem sonunda sayfa kaynak kodunda bir CSS kuralı yazıldığı görülür.<br />
Bu kural sayfanın arka plan rengini ayarlar.<br />
4. Aynı işlem HTML kodu kullanılarak ta yapılabilir. Bu durumda önce Category<br />
listesinden “Appearance (HTML)” seçeneği seçilir. Daha sonra yine benzer<br />
şekilde Background color seçeneği ile arka plan rengi ayarlanır. Bu durumda<br />
sayfanın HTML kodunda CSS kuralı yazılmaz. Sadece body iminin bgcolor<br />
öznitelik değeri ayarlanır.<br />
Şekil 9-4 Arka plan rengi ayarlama penceresi<br />
191
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Diğer bir ihtimal de arka planda bir görüntü dosyası kullanmaktır. Bunun için<br />
yine Page Properties penceresi kullanılır. Görüntü de arka plana hem CSS ile hem de<br />
HTML ile eklenebilir. Bu durumda arka plana eklenilecek dosya Bakground image<br />
seçeneği kısmından seçilerek eklenir.<br />
Arka plan rengi ayarlandıktan sonra web sayfası, editör içinde Şekil 9-5’deki gibi<br />
gözükür. Bu sayfanın HTML kod kısmında body iminin bgcolor özniteliği değerinin<br />
#00CC99 olarak verildiğine dikkat ediniz.<br />
Şekil 9-5 Arka plan rengi ayarlanmış bir sayfa<br />
Page Properties penceresi kullanılarak sayfanın arka plan rengine ek olarak,<br />
CSS veya HTML ile sayfada kullanılan metnin varsayılan font çeşidi, boyu ve rengi<br />
ayarlanabilir. Ayrıca sayfanın etrafında yani solunda, yukarısında, sağında ve aşağısında<br />
bırakılacak boşluk miktarı ayarlanabilir. Bu özellikleri kullanmayı sonraki bölümlerde<br />
inceleyeceğiz.<br />
Örnek Uygulama<br />
Hazrılamış olduğunuz bir sayfanın arka plan rengini hem CSS hem de HTML<br />
kullanarak ayarlayınız? Her iki durumda da üretilen kodu inceleyiniz? Buna ek olarak<br />
arka plan rengini bir görüntü kullanarak ayarlayınız? Görüntüyü de hem HTML hem de<br />
CSS kullanarak arka plana ekleyiniz? Her iki durumda da üretilen kodu inceleyiniz?<br />
9.10 Sayfa Marginini Ayarlama<br />
Şimdi Dreamweaver editörü ile bir sayfanın marginini yani HTML belgesi içindeki<br />
elemanlar ile tarayıcı penceresi duvarları arasındaki boşluk miktarını ayarlamayı görelim.<br />
192
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Öncelikle bir ana başlık, iki paragraf ve bir alt başlıktan oluşan bir sayfa oluşturalım. Bu<br />
sayfa ilk haliyle Şekil 9-6’daki gibi olsun.<br />
Şekil 9-6 Font ayarı yapılmamış örnek sayfa<br />
Bu örnekte sayfa içindeki elemanların sadece sol ve sağ pencere duvarına olan<br />
uzaklıklarını ayarlayalım. Bu düzenleme bütün sayfa için geçerli olacağı için bu işlem<br />
sayfa özellikleri (Page Properties) kısmından yapılır.<br />
Editör tasarım modunda iken Page Properties butonuna tıklayınız. Gelen<br />
pencerede Categories bölümünde Appearance (CSS) seçeneğini seçiniz. Sonra bu<br />
pencerenin sağ tarafında bulunan “Left margin” özelliği değeri olarak “1” yazınız ve<br />
birimi olarak ta “cm” seçeneğini seçiniz. Benzer şekilde “Right margin” özelliği değeri<br />
olarak “1” yazınız ve birimi olarak ta “cm” seçeneğini seçiniz. Böylece bu iki seçenek ile<br />
sayfanın sol ve sağ tarafında bırakılacak boşluk miktarı 1cm olarak belirlenmiş oldu. Bu<br />
ayarlamalardan sonra sayfamız Şekil 9-7’deki gibi gözükür. Artık bu sayfada metinler bir<br />
önceki pencerede olduğu gibi tamamen pencere duvarına soldan ve sağdan yanaşık<br />
değildir. Artık metinler ile pencerenin sol ve sağ duvarları arasında yaklaşık 1cm<br />
miktarında boşluk vardır.<br />
193
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-7 Margin değerleri ayarlanmış bir sayfa<br />
Şimdi bu işlemin kaynak kodunda nasıl gerçekleştirildiğini inceleyelim. Kaynak<br />
kodunu kontrol ettiğimizde şu şeklide bir CSS kodu üretildiğini görürüz:<br />
body {<br />
margin-left: 1cm;<br />
margin-right: 1cm;<br />
}<br />
Bu kod HTML belgesinin gövde kısmının pencerenin solundan ve sağından olan<br />
uzaklığını 1cm olarak ayarlamıştır.<br />
Örnek Uygulama<br />
Hazırlayacağınız bir sayfanın marginlerini ayarlayınız? Sayfanın bütün<br />
marginlerini (sol, sağ, üst ve alt) ayarlamayı deneyiniz? Bu marginleri ayarlarken farklı<br />
büyüklük birimlerini kullanınız? Pixel, inch, cm, mm, pico gibi uzaklık birimlerini<br />
deneyiniz?<br />
9.11 Metin Font Özellikleri Ayarlama<br />
Şimdi Dreamweaver editörü ile bir sayfadaki normal metinlerin varsayılan fontunu,<br />
bazı paragrafların ve başlıkların font özelliklerini ayarlamayı görelim. Bu işlemleri bir<br />
önceki bölümde hazırlamış olduğumuz sayfa üzerinde yapmaya devam edelim.<br />
Bir sayfadaki normal metinlerin font düzenlemesi sayfa özellikleri penceresinden<br />
yapılır. Bunun için Page Properties butonuna tıklayınız. Gelen küçük pencerede CSS<br />
kategorisi seçiniz. Bu pencerenin sağ tarafında bulunan özellik değerlerini ayarlayarak<br />
font ayarı yapılır. Page font özelliği değeri olarak “Tahoma, Geneva, sans-serif”<br />
194
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
seçiniz. Font büyüklüğü için “Size” özelliği değerini “12pt” yapınız? Bu seçimlerden<br />
sonra sayfa Şekil 9-8’deki gibi olur. Görüldüğü gibi artık sayfa içindeki metinlerin fontu<br />
değişmiştir.<br />
Şekil 9-8 Font ayarı yapılmış örnek sayfa<br />
Bu işlem kaynak kodunda yine bir CSS kuralı yazılarak gerçekleştirilmiştir. Bu<br />
kural aşağıdaki gibi üretilmiştir:<br />
body,td,th {<br />
font-family: Tahoma, Geneva, sans-serif;<br />
font-size: 12pt;<br />
color: #000;<br />
}<br />
Bu kod HTML belgesinin gövdesindeki metinlerin ve ayrıca varsa tabloların<br />
içindeki metinlerin fontunu istenilen şekilde ayarlamıştır.<br />
Bir Başlığın Fontunu Değiştirme<br />
Şimdi bu belgedeki alt başlığın fontunu değiştirelim. Bunun için editör tasarım<br />
modunda iken alt başlığı yani “Omurgasızlar” metnini seçiniz. Fare seçili metni<br />
gösterirken sağ tıklayınız ve gelen listeden “Font” seçeneği üzerine geliniz. Bu durumda<br />
yeni bir liste daha gelir. Bu listeden de “Arial, Halvetica, sans-serif” seçeneğini<br />
seçiniz. Bu seçimden sonra yeni bir pencere gelir. Bu pencere yeni CSS kuralı yazma<br />
penceresidir ve Şekil 9-9’daki gibidir.<br />
195
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-9 Yeni CSS kuralı yazma penceresi<br />
CSS kuralı yazma bölümünden de hatırlanacağı gibi CSS kuralı HTML imleri için,<br />
bir sınıfa ait olan HTML elemanları veya id özniteliği olan bir HTML elemanı için<br />
yazılabiliyordu. İşte bu pencerede öncelikle CSS kuralınının ne için yazılacağı<br />
sorulmaktadır. Bu da “Selector Type” olarak ifade edilmiştir. Bu kısımda biz “Tag”<br />
yani im seçeneğini seçebiliriz. Bu seçimi yaptığımız takdirde “Selector Name” olarak<br />
h3 gelir. Çünkü bu alt başlığın imi h3 imidir. Sonra OK butonuna tıklayarak CSS kuralını<br />
oluştururuz. Oluşturulan CSS kuralı kaynak kodunda şu şekilde gözükür:<br />
h3 {<br />
font-family: Arial, Helvetica, sans-serif;<br />
}<br />
Görüldüğü gibi bütün h3 tipi başlıkların fontu ayarlanmıştır. Şimdi aynı font<br />
ayarlama işlemini sadece bu başlık için yapalım. Yani belge içinde başka h3 tipi başlıklar<br />
varsa, onların fontunu değiştirmeyelim. Bu işlem için yine Omurgasızlar metnini seçiniz.<br />
Sonra fare ile sağ tıklayınız ve font seçeneği üzerine geliniz. Daha sonra da açılan<br />
menüden “Georgia, Times New Roman, Times, serif” seçeneğini seçiniz. Bu<br />
durumda yine yeni CSS kuralı yazma penceresi gelecektir. Bu defa “Selector Type”<br />
olarak “ID” seçeneğini seçiniz. Sonra “Selector Name” olarak bu HTML elemanını<br />
tanımlayan bir isim vermemiz gerekir. Bu HTML elemanının ismi olarak “b2”<br />
verebiliriz. Sonra OK butonuna basarak CSS kuralını oluşturunuz. Oluşturulan CSS<br />
kuralı kaynak kodunda şu şekilde gözükür:<br />
#b2 {<br />
font-family: Georgia, Times New Roman, Times, serif;<br />
}<br />
196
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Öncelikle kaynak kodunda bu alt başlığın “Omurgasızlar”<br />
şeklinde tanımlandığını görürüz. Yani bu alt başlığa b2 ismi verilmiştir. Daha sonra da bu<br />
alt başlığa özel CSS kuralı yazılmıştır.<br />
Örnek Uygulama<br />
Hazırlayacağınız bir sayfanın içindeki bir alt başlığın rengini ayarlayınız? Bu işlemi<br />
bir CSS kuralı yazarak gerçekleştiriniz? Renk ayarlamak için önce editör penceresinin en<br />
üstündeki Format menüsüne gidiniz. Bu menüde bulunan Color seçeneğini seçiniz?<br />
Sonra gelen pencerede bir renk seçimi yapınız? Bir sonraki adımda yeni CSS kuralı<br />
yazma penceresi gelecektir. O pencerede gerekli seçimleri yaparak CSS kuarlını<br />
oluşturunuz?<br />
Bu örnekte olduğu gibi renk ayarlama işlemi için CSS oluşturmayı, hem html imi<br />
kullanarak hem de id kullanarak iki farklı şekilde yapınız?<br />
9.12 Bağlantı Oluşturma<br />
Dreamweaver editörü ile bağlantı oluşturmak için editör penceresinin sağ tarafında<br />
bulunan “insert” panelindeki “hyperlink” butonu kullanılır. Bu panel Şekil 9-10’daki<br />
gibidir. Bu panelde web sayfasına eklemek için birçok eklenti vardır. Bunlardan birisi de<br />
Hyperlink nesnesidir. Bu panelde ayrıca sayfaya resim eklemek için image butonu,<br />
video veya flash animasyonu eklemek için media butonu, tablo eklemek için table<br />
butonu, div elemanı eklemek için div butonu, ve diğer bazı eklenti seçenekleri vardır.<br />
İlerleyen bölümlerde bunlardan bazılarının kullanımlarını göreceğiz.<br />
Şekil 9-10 Dreamweaver editorü insert paneli<br />
197
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şimdi bağlantı oluşturmayı görelim. Bağlantı oluşturmak için önce bağlantının<br />
oluşturulacağı metin seçilir. Sonra insert panelinden hyperlink butonuna tıklanır. Biz bu<br />
sayfadaki işlemleri yapmak için de bir önceki bölümde kullanmış olduğumuz sayfayı<br />
kullanmaya devam edelim. Önce ilk paragraftaki nöron kelimesini seçiyoruz. Sonra<br />
hyperlink butonuna tıklıyoruz. Hyperlink butonuna tıklanınca Şekil 9-11’deki küçük<br />
pencere gelir. Bu penceredeki Text elemanı bağlantının yapılacağı metindir. Bu örnekte<br />
bu metin nöron metnidir. İkinci eleman Link elemanıdır. Bu da bağlantının yapılacağı<br />
adresi gösterir. Bu örnekte bağlantıyı<br />
http://tr.wikipedia.org/wiki/Sinir_hücresi adresine yaptık. Target seçeneği<br />
eğer bağlantı yeni bir tarayıcı penceresinde açılacaksa _blank olarak verilir. Bu örnekte<br />
biz bu değeri boş bırakıyoruz. Title elemanı ise bağlantının üzerine fare ile gelindiğinde<br />
gözükecek metni ayarlar. Bu durumda bir bu metni Sinir Hücresi olarak verdik. Sonra<br />
OK butonuna tılayarak bağlantı oluşturulur.<br />
Şekil 9-11 Bağlantı oluşturma<br />
Bağlantı oluşturulunca sayfa kodunda bu bağlantı için kod üretilir. Sayfa kodunu<br />
incelediğimizde bu bağlantı için şu şekilde bir imi oluşturulduğunu görürüz:<br />
nöron<br />
Bağlantı Kaldırma<br />
Bir bağlantı oluşturulduktan sonra eğer o metinden bağlantı kaldırılmak istenirse,<br />
fare bağlantıyı gösterirken sağ tıklanır. Gelen menüden Remove Link seçeneği seçilir.<br />
Bu işlem o metinden bağlantıyı kaldırır.<br />
Göreli Bağlantı Oluşturma<br />
Bağlantılarla ilgili bir diğer konu da aynı site içindeki sayfalara bağlantı<br />
oluşturmaktır. Bu işlem için bağlantı pencereseinde Link değeri olarak tam bir URL<br />
adresi yazılmaz. Bunun yerine bu özelliğin sağında bulunan dosya işaretine tıklanarak,<br />
dosya sisteminden bağlantı yapılacak dosya seçilir. Bu şekilde site içindeki başka bir<br />
belgeye göreli bir bağlantı oluşturulur.<br />
198
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Properties Paneli<br />
Dreamweaver editöründeki önemli bir diğer paneli Properties panelidir. Bu<br />
panel editörün alt tarafında bulunmaktadır. Bu panel aktif olan HTML elemanının<br />
özelliklerini gösterir ve bu özelliklerin değiştirilmesine imkan verir. Eğer bizim<br />
sayfamızda yeni oluşturmuş olduğumuz bağlantı için nöron kelimesinin üzerine fare ile<br />
gelir ve tıklarsak, bu durumda Properties paneli Şekil 9-12’deki gibi olur. Bu panelde<br />
oluşturmuş olduğumuz bağlantının bütün özellikleri görülmektedir. Bu özellikler bu<br />
panel kullanılarak değiştirilebilir.<br />
Benzer şekilde Properties panel hangi HTML elemanı aktif olursa o elemanın<br />
özelliklerini gösterir ve o elemanın özelliklerinin değiştirilmesine imkan verir. Örneğin<br />
bir başlık elemanı aktif olursa o başlığın özelliklerini gösterir. Ya da bir görüntü aktif<br />
olursa, o görüntünün özelliklerini gösterir.<br />
Örnek Uygulama<br />
Şekil 9-12 Bağlantı hedef adresi ayarlama penceresi<br />
Oluşturmuş olduğunuz web sayfasında iki farklı bağlantı yapınız? Bu<br />
bağlantılardan birisi bir web sitesindeki bir sayfaya olsun. Diğeri ise siteb içindeki başka<br />
bir belgeye göreli bağlantı olsun. Ayrıca bağlantılardan birisine tıklanıldığında hedef<br />
sayfa yeni bir pencerede açılsın. Buna ek olarak bağlantı oluşturduktan sonra bir<br />
bağlantıyı tekrar kaldırmayı deneyiniz. Bu işlemleri yaparken HTML kodunda meydana<br />
gelen değişiklikleri gözlemleyiniz.<br />
9.13 Sayfaya Görüntü Ekleme<br />
Dreamweaver editörü ile bir sayfaya görüntü eklemek için editör penceresinin<br />
sağında bulunan insert panelindeki image butonu kullanılır. Görüntü eklemeye ek<br />
olarak görüntünün boyunu ayarlamak, görüntü etrafındaki tampon bölge büyüklüğüne<br />
belirlemek ve görüntüden bağlantı oluşturmak için de Dreamweaver editörü programcıya<br />
birçok kolaylık sunar.<br />
Şimdi adım adım görüntü eklemenin detaylarını inceleyelim. Bu bölümde de bir<br />
önceki bölümde üzerinde çalışmış olduğumuz sayfayı kullanmaya devam edelim.<br />
Öncelikle eklenecek olan görüntüyü tespit etmemiz gerekmektedir. Sayfaya<br />
199
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
ekleyeceğimiz görüntüyü http://tr.wikipedia.org/wiki/Sinir_hücresi adresinden aldık. Bu<br />
görüntü Şekil 9-13’teki gibidir. Bu bir png dosyasıdır ve boyutları 400 x 215 pixeldir.<br />
Şekil 9-13 Web sayfasına eklemek için örnek görüntü (Sinir hücresi görüntüsü)<br />
Bu görüntüyü web sayfamıza eklemek için önce fare imlecini görüntünün<br />
konulacağı noktaya getiriyoruz. Bizim sayfamızda görüntüyü birinci paragrafın altına, ara<br />
başlığın hemen üstüne koyalım. Bunun için birinci paragrafın sonunda enter tuşuna<br />
basıyoruz ve orada yeni bir paragraf başlatıyoruz. Fare imleci bu noktada dururken<br />
insert panelindeki image butonuna tıklıyoruz. O butona tıklanınca açılan küçük<br />
menüden yine image seçeneğini seçiyoruz. Bu işlem sonunda görüntü kaynağını<br />
seçmemiz için bir pencere geliyor. Bu pencere Şekil 9-14’teki gibidir. Bu pencere<br />
yardımıyla görüntümüzü dosya sisteminden bulup seçiyoruz ve OK butonuna tıklıyoruz.<br />
Şekil 9-14 Dreamweaver editorü insert paneli<br />
Sonra yeni bir pencere daha gelir. Bu pencerede alternatif metin girmemizi ister.<br />
Alternatif metin, eğer görüntü tarayıcı içinde gösterilemezse, kullanıcıya gösterilecek<br />
metindir. Genellikle resmi tanımlayan kısa bir açıklamadır. Bu örnekte biz “Sinir Hücresi<br />
Resmi” metnini alternatif metin olarak koyduk. Bu pencere Şekil 9-15’deki gibidir. Bu<br />
pencerede OK butonuna basılınca görüntü sayfaya yerleştirilir.<br />
200
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-15 Görüntü için alternatif metin ayarlama penceresi<br />
Görüntü sayfaya yerleştirildiğinde sayfa tasarım modunda Şekil 9-16’daki gibi<br />
görünür. Görüntü sayfaya kendi orijinal boyutunda yerleştirilir. Şekil 9-16’daki editör<br />
penceresinde eklenen görüntü seçili durumdadır. Bu yüzden görüntünün etrafında bir<br />
çerçeve gözükmektedir. Ayrıca editörün altındaki Properties panelinde de bu görüntünün<br />
özellikleri gösterilmektedir. Bu özelliklerden birisi W özelliğidir. Bu özellik görüntünün<br />
genişliğini gösterir. Bu örnekte bu özelliğin değeri 400 pixeldir. Benzer şekilde H özelliği<br />
görüntünün yüksekliğini gösterir. Bu özelliğin değeri de 225 pixeldir. Her ikisi de<br />
görüntünün orijinal boyutlarıdır.<br />
Şekil 9-16 Görüntü konulmuş bir sayfa<br />
Şimdi bu görüntü eklenirken kaynak koda nasıl bir ekleme yapıldığını inceleyelim.<br />
Editörün kod kısmına geçip, kaynak kodu incelediğimizde görüntü için şu imin<br />
eklendiğini görürüz:<br />
<br />
201
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Daha önce görüntü ekleme bölümünde gördüğümüz gibi sayfaya görüntü eklemek<br />
için img imi kullanılmıştır. Bu örnekte bu imin src, width, height ve alt öznitelik<br />
değerleri verilmiştir. Biz bu görüntünün üzerinde değişiklikler yaptıkça bu im özellikleri<br />
de uygun şekilde değiştirilecektir.<br />
Görüntü Boyu Değiştirme<br />
Şimdi eklemiş olduğumuz görüntünün boyutunu değiştirelim. Görüntünün<br />
boyutunu değiştirmenin bir yolu Properties panelindeki W ve H özellik değerlerini<br />
değiştirmektdir. Diğer bir yolu ise fare ile görüntüyü büyütüp, küçültmektir. Bu ikinci<br />
metod birçok yönden daha avantajlıdır. Bu yöntemle görüntünün boyunun kaç pixel<br />
olduğundan daha ziyade sayfada nasıl göründüğü üzerinde durulabilir. Bu da sayfa<br />
tasarımını kolaylaştırır. Fare ile görüntü boyunu küçültmenin diğer bir avantajı da hem<br />
genişliğin hem de yüksekliğin aynı oranda kolayca değiştirilmesidir. Görüntünün sağ alt<br />
köşesinden fare ile tutarak genişlik ve yükseklik aynı ordan küçültülebilir veya<br />
büyültülebilir.<br />
Şimdi fare ile görüntünün boyutunu biraz küçültelim. Görüntünün sağ alt<br />
köşesinden tutarak görüntünün boyutunu biraz küçülttük. Bu işlem sounda görüntü sayfa<br />
içinde daha küçük görünür. Sayfa kodunu incelediğimizde img iminin width ve height<br />
öznitelik değerlerinin değiştirilmiş olduğunu görürüz. Bizim yaptığımız değişiklik sonucu<br />
img imi şu şekilde değişmiştir.<br />
<br />
Görüntüler çoğunlukla hem boyundan hem de genişliğinden aynı oranda<br />
küçültülür. Bu görüntünün bozulmaması için en güzel küçültme şeklidir. Fakat bazı<br />
durumlarda küçültme ya da büyütme sadece genişlikten ya da yükseklikten yapılmak<br />
istenebilir. Bu durumda da yine görüntünün sağ tarafından ya da alt tarafından tutularak<br />
görüntü boyu sadece eninden ya da yüksekliğinden değiştirilebilir.<br />
Eğer bir görüntünün boyu değiştirildikten sonra görüntü boyu tekrar ilk haline<br />
getirilmek istenirse, bunun için görüntü seçili iken fare ile sağ tıklanır. Gelen menüden<br />
Reset Size seçeneği seçilir. Bu işlem görüntüyü ilk boyutuna geri döndürür.<br />
Görüntüden Bağlantı Oluşturma<br />
Bir görüntüden bağlantı oluşturmak Dreamweaver editörü ile çok kolaydır.<br />
Görüntü seçili durumda iken Properties panelinde Link özelliği vardır. Bunun değeri<br />
olarak görüntüden bağlantı verilecek web sayfasının adresi yazılır. Böylelikle bu<br />
görüntüden bir bağlantı oluşturulmuş olur. Editör bu işlem sonunda bağlantı için uygun<br />
HTML kodunu kendisi üretir. Eğer biz sayfaya eklediğimiz görüntüden<br />
202
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
http://tr.wikipedia.org/wiki/Sinir_hücresi adresine bir bağlantı oluşturursak.<br />
Bu durumda img imi bir imi içine yerleştirilir ve kaynak kodunda şu şekilde olur:<br />
<br />
Eğer bu görüntüden oluşturulan bağlantı kaldırılmak istenirse, bu durumda görüntü<br />
seçili durumda iken, fare ile sağ tıklanır. Gelen menüden Remove Link seçeneği seçilir.<br />
Böylelikle görüntüden oluşturulan bağlantı kaldırılır.<br />
Örnek Uygulama<br />
Hazırlamış olduğunuz sayfaya iki adet görüntü ekleyiniz? Bunların boylarını fare<br />
ile ayarlayınız? Bir görüntüden site içindeki bir sayfaya, diğerinden ise webdeki bir<br />
sayfaya bağlantı oluşturunuz? Editör tarafından oluşturulan HTML kodunu inceleyiniz?<br />
Görüntünün Etrafında Tampon Boşluk Bırakma<br />
Görüntünün etrafında tampon boşluk bırakmak için img iminin hspace ve vspace<br />
öznitelik değerleri kullanılıyordu. Hspace öznitelik değeri görüntünün sağındaki ve<br />
solundaki boşluk miktarını ayarlıyordu. Vspace öznitelik değeri ise görüntünün üstündeki<br />
ve altındaki boşluk miktarını ayarlıyordu. Şimdi öncelikle bu tampon boşluk miktarını<br />
ayarlamadan önce görüntünün sağ tarafına metin yerleştirelim. Yani görüntüden sonra<br />
gelen ara başlık ve paragraf, hemen görüntünün sağından devam etsin. Bunun için img<br />
iminin align özniteliği kullanılıyordu. Dreamweaver editörünü kullanarak bunu şu<br />
şekilde yapabiliriz. Görüntü seçili durumda iken, Properties panelinde bulunan align<br />
özelliği değerini Left olarak seçeriz. Bu durumda görüntü pencerenin soluna yerleştirilir.<br />
Sağ tarafta da daha önceki altta olan ara başlık ve paragraf devam eder.<br />
align özelliği Left olarak seçildikten sonra şimdi de hspace ve vspace<br />
özelliklerini ayarlayalım. Bu özelliklerin değerleri yine görüntü seçili durumda iken<br />
Properties panelinden ayarlanır. Properties panelinde aynı isimde iki özellik vardır.<br />
Bunlardan hspace değerini 30, vspace değerini de 40 olarak verelim. Bu işlem sonunda<br />
sayfamız Şekil 9-17’deki gibi gözükür. Hem sonraki paragraf görüntünün sağında devam<br />
etmekte hem de paragraf ile görüntü arasında ayarladığımız kadar tampon boşluk<br />
bulunmaktadır.<br />
Bu işlem sonunda HTML kodunda img imine align, hspace ve vspace öznitelik<br />
değerleri eklenmiştir ve son hali şu şekilde olmuştur:<br />
<br />
203
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-17 Tampon boşlukları ayarlanmış ve etrafına metin konulmuş görüntü<br />
Örnek Uygulama<br />
Sayfanıza eklediğiniz görüntülerden birisini pencerenin soluna, diğerini de<br />
pencerenin sağına yerleştiriniz? Bu görüntülerin etrafındaki boşluk miktarını hspace ve<br />
vspace özniteliklerini kullanarak ayarlayınız?<br />
Görüntü Üzerinde Alt Bölgeler Tanımlama<br />
Görüntü üzerindeki alt bölgelerden bağlantı oluşturabilmek için görüntü üzerinde<br />
önce alt bölgeler tanımlanır. Görüntü üzerinde çoğunlukla dairesel veya dikdörgensel alt<br />
bölgeler tanımlanmaktadır. Buna ek olarak çokgen şeklindeki alt bölgeler de<br />
tanımlanabilir. Şimdi Dreamweaver editörünü kullanarak görüntü üzerinde nasıl alt<br />
bölgeler tanımlayabileceğimizi, ve bu alt bölgelerden nasıl bağlantı oluşturabileceğimizi<br />
adım adım görelim. Bu kısımdaki uygulama için de yine aynı görüntüyü ve sayfayı<br />
kullanmaya devam edelim.<br />
Görüntü üzerinde alt bölge tanımlamanın ilk adımı oluşturulacak map elemanına bir<br />
isim vermektir. Bu işlem görüntü seçili durumda iken Properties panelindeki map<br />
özelliği kullanılarak yapılır. Bu özelliğin yanında bulunan metin alanına atanmak istenen<br />
id değeri yazılır. Bu örnekte map elemanının id değerini map1 olarak verelim.<br />
İkinci adımda görüntü seçili iken Properties panelindeki map özelliği yanında<br />
bulunan şekillerden birisi seçilir. Örneğin önce daire şeklini seçelim. Sonra fare ile<br />
görüntü üzerinde bir daire çizilir. Bu çizim tamamlanınca editör penceresi Şekil<br />
9-18’deki gibidir. Görüldüğü gibi görüntünün sol tarafında dairesel bir alt bölge<br />
tanımlanmıştır.<br />
204
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-18 Görüntü üzerinde tanımlanmış bir alt bölge<br />
Daha sonra bu alt bölgeden bağlantı oluşturulur. Bu işlem için önce görüntü<br />
üzerindeki tanımlanmış olan alt bölge fare ile seçilir. Bu seçim yapıldığında Properties<br />
paneli Şekil 9-19’daki gibi görünür. Bu panelde Link değeri olarak bu alt bölgeden<br />
oluşturulacak bağlantının hedef adresi verilir. Alt özelliği olarak ta alternatif metin<br />
verilir. Biz bu örnekte hedef adres olarak<br />
http://tr.wikipedia.org/wiki/Hücre_biyolojisi adresini, alternatif metin olarak ta<br />
Hücre Biyolojisi metnini kullandık.<br />
Şekil 9-19 Görüntü alt bölgesi Properties paneli<br />
Bu işlemler sonunda görüntünün üzerinde dairesel bir alt bölge tanımlanmış oldu<br />
ve bu bölgeden de bir bağlatı oluşturuldu. Oluşturulan map imi kaynak kodunda şu<br />
şekildedir:<br />
<br />
<br />
<br />
Görüldüğü gibi tanımlanan alt bölgenin koordinatları editör tarafından otomatik<br />
olarak tespit edilmiştir. Bizim her bir alt alanın koordinatlarını tespit etmemize gerek<br />
yoktur. Bu yönüyle alt bölge tanımlamada editör kullanmak işimizi epey kolaylaştırır.<br />
205
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Örnek Uygulama<br />
Bulacağınız bir Türkiye ya da dünya haritası üzerinde alt bölgeler tanımlayınız? Bu<br />
alt bölgelerden bağlantılar oluşturunuz?<br />
9.14 Tablo İşlemleri<br />
Dreamweaver editörü web sayfasına tablo koymak ve bu tablo üzerinde<br />
değişiklikler yapmak için birçok kolaylık sunar. İlk olarak web sayfasına tablo ekleme ile<br />
başlayalım. Bu uygulama için yeni bir sayfa oluşturalım ve bu sayfaya tabloyu ekleyelim.<br />
Bir sayfaya tablo eklemek için Dreamweaver editörünün sağ tarafında bulunan<br />
insert panelindeki Table butonu kullanılır. Önce fare imleci sayfa içinde tablonun<br />
konulacağı noktaya getirilir. Sonra insert panelindeki table butonuna tıklanır. Bu<br />
butona tıklanınca Şekil 9-20’deki pencere gelir. Bu pencerede tablonun satır ve sütun<br />
sayısı, genişliği, kenarlıklarının değeri, cell padding ve cell spacing değerlerinden<br />
istenilenler ayarlanır.<br />
Bu penceredeki ilk özellik olan Row, tablodaki satır sayısını belirler. Bu örnekte 4<br />
olarak verilmiştir. Onun hemen yanındaki Columns özelliği tablodaki sütun sayısını<br />
belirler. Bu örnekte 3 olarak verilmiştir. Table width tablo genişliğini belirler. Bu<br />
örnekte 200 pixel olarak verilmiştir. Fakat bu değerler daha sonra editör içinden<br />
değiştirilebilir. Bu pencerenin ortasındaki Header bölümünde, tablonun başlık satırı için<br />
dört farklı seçenek verilmiştir. Bu seçeneklerden bu örnek için başlık satırının yukarda<br />
olanı seçilmiştir.<br />
Şekil 9-20 Tablo oluşturma penceresi<br />
Tablo bu özelliklerle oluşturulduğunda editör içinde boş bir tablo görünür. Bu<br />
tablonun hücrelerine yazı yazılabilir ve boyutları değiştirilebilir. Tablonun boyutu<br />
köşesinden fare ile tutularak büyütülebilir. Veya tablonun sağ duvarından fare ile<br />
206
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
tutularak genişliği değiştirilebilir. Ya da alt duvarından tutularak yüksekliği<br />
değiştirilebilir. Bunlara ek olarak her bir satırın veya sütunun genişlik veya yüksekliği de<br />
ayarlanabilir.<br />
Bu noktada tabloya sıra no, kitap ismi ve yazar adı ekleyelim. Tablonun boyunu<br />
da ihtiyacımıza göre büyütelim. Bu işlemleri yaptığımızda tablomuz editör penceresi<br />
içinde Şekil 9-21’deki gibi görünür.<br />
Şekil 9-21 Editör içinde tablo eklenmiş bir sayfa<br />
Bu tablonun HTML kodu ise Tablo 9-1’deki gibi üretilmiştir. Bu kodda<br />
gözümüze çarpan önemli noktalar, öncelikle tablonun genişlik ve yükseklik değerleridir.<br />
Buna ek olarak ta tablonun ilk satırındaki her bir hücrenin genişlik değerinin ayarlanmış<br />
olmasıdır.<br />
<br />
<br />
Sıra No<br />
Kitap Adı<br />
Yazarı<br />
<br />
<br />
1<br />
C++ ile Nesnel Programlama<br />
Robert Lafore<br />
<br />
<br />
2<br />
Java 2<br />
Herbert Schildt<br />
<br />
<br />
3<br />
207
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Visual Studio.Net <br />
Richard Grimes<br />
<br />
<br />
Örnek Uygulama<br />
Tablo 9-1 Tablo için üretilen HTML kodu<br />
Sizde hazrılayacağınız bir sayfaya bir tablo ekleyiniz? Bu tabloyu verilerinizle<br />
doldurunuz? Tablonuzun büyüklüğünü, her bir sütunun genişliğini verilerinizin<br />
büyüklüğüne göre ayarlayınız?<br />
Tabloya Satır ve Sütun Ekleme/Silme<br />
Bir tablo oluşturulduktan sonra bu tabloya satır veya sütun eklenebilir. Bunun için<br />
önce imleçle satırın veya sütunun ekleneceği pozisyona gelinir. Sonra Şekil 9-22’deki<br />
gibi farenin sağ tuşuna basılır. Gelen menüden Table seçilir. Daha sonra alt menüden<br />
satır eklemek için Insert Row, sütun eklemek için ise Insert Column seçilir. Yeni satır<br />
imlecin bulunduğu hücrenin üst satırına, yeni sütun ise imlecin bulunduğu hücrenin sol<br />
sütununa eklenir. Bu şekilde tabloya istenildiği kadar satır veya sütun eklenebilir.<br />
Şekil 9-22 Tabloya fare ile satır veya sütun ekleme<br />
Tablolara satır veya sütun eklemek mümkün olduğu gibi satır veya sütun silmek<br />
te mümkündür. Bunun için yine fare kullanılır. Bu defa sağ tıklayınca gelen Table<br />
menüsünden Delete Row seçeneği satır silmek için, Delete Column seçeneği ise sütun<br />
silmek için kullanılır. Satır ve sütün silmede imlecin olduğu hücrenin bulunduğu satır<br />
veya sütun silinir.<br />
208
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Hücre Birleştirme ve Ayrıştırma<br />
Tablolarla ilgili yapılan bir diğer işlem hücre birleştirmek veya birleştirilen<br />
hücreleri sonra tekrar ayrıştırmak işlemidir. Birden fazla hücreyi birleştirmek için önce<br />
hücreler seçilir. Sonra fare ile sağ tıklanır ve Şekil 9-22’deki menü gelir. Bu menüden<br />
Table seçilir ve onun alt menüsünden Merge Cells (Hücre Birleştir) seçeneği seçilir. Bu<br />
işlem seçili hücreleri birleştirir ve tek bir hücre haline getirir.<br />
Birleştirilen hücreler daha sonra istenilirse tekrar ayrıştırılabilir. Birleştirilmiş bir<br />
hücre seçilir ve bu hücre üzerinde sağ tıklanır. Bu durumda yine Şekil 9-22’deki menü<br />
gelir. Bu menüden Table seçilir ve onun alt menüsünden Split Cell (Hücre Ayrıştır)<br />
seçeneği seçilir. Bu işlem daha önce birleştirilmiş olan hücreleri tekrar ayrıştırır.<br />
Örnek Uygulama<br />
Hazırladığınız sayfadakli tablonun ilk satırına bir satır ekleyiniz. Bu satırdaki<br />
bütün hücreleri birleştiriniz? Bu hücre tablonun başlığı olsun. Bu işlemi yaptığınızda<br />
üretilen HTML kodunu kontrol ediniz?<br />
9.15 Site Oluşturma<br />
Şimdi Dreamweaver editörü ile bir site oluşturmayı görelim. Dreamweaver editörü<br />
ile bir kurum için web sitesi geliştirilirken öncelikle bir site oluşturulur. Burdaki site<br />
kavramı proje kavramı gibidir. Nasıl birçok programlama dilinde program geliştiriken<br />
önce editör ile bir proje oluşturulur. Bu proje o probleme ait bütün dosyaları içerir. Onun<br />
gibi buradaki site kavramında da bir kurumun web sitesi için gerekli olan bütün dosyalar,<br />
bir site içinde tutulur.<br />
Site oluşturmanın ilk adımı bir dizin oluşturmaktdır. Oluşturacağınız web sitesine<br />
ait bütün dosyaları içinde tutacağınız bir dizini bilgisayarınızda oluşturunuz.<br />
Sonra Dreamweaver editörü üst menüsünden Site | New Site seçeneğini seçiniz.<br />
Bu seçim sonunda Şekil 9-23’deki pencere gelir. Bu pencerede oluşturacağınız siteye bir<br />
isim veriniz. Bu örnekte site ismi olarak site2 verilmiştir. Bu penceredeki ikinci seçenek<br />
web sitesinin adresini sormaktadır. Eğer gerçekten Web’de yayınlayacağınız bir site<br />
yapıyorsanız, bu alana sitenizin adresini yazınız? Bu adres www.google.com gibi tam bir<br />
adres olmalıdır. Oluşturulacak sayfalar webde yayınlanmayacaksa, sadece<br />
bilgisayarınızda deneme çalışması yapıyorsanız, bu durumda ikinci seçeneği boş<br />
bırakabilirsiniz. Next butonuna tıklayınız.<br />
209
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-23 Yeni site oluşturma için ilk adım penceresi<br />
Bir sonraki adımda sunucu tarafı teknolojilerden birisini kullanıp,<br />
kullanmayacağımız soruluyor. Bu pencere Şekil 9-24’deki gibidir. Burada No seçeneğini<br />
seçiniz.<br />
Şekil 9-24 Yeni site oluşturma için ikinci adım penceresi<br />
Üçüncü adımda bu siteye ait dosyaların yerel bilgisayarda mı yoksa sirek olarak<br />
web sunucusunda mı kaydedileceği soruluyor. Bu pencere Şekil 9-25’teki gibidir. Bizim<br />
dosyalarımız yerel bilgisayarımızda tutulacağı için, burada “Edit local copies” diye<br />
başlayan seçeneği seçiniz. Alt tarafta ise daha önce oluşturmuş olduğunuz dizini seçiniz.<br />
210
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-25 Yeni site oluşturma için üçüncü adım penceresi<br />
Dördüncü adımda web sunucusuna nasıl bağlanacağımızı soruyor. Bu pencere<br />
Şekil 9-25’teki gibidir. Burada “None” seçeneğini seçiniz. Eğer sitenizin dosyaları web<br />
sunucusuna gönderilecekse, burada bağlantı şeklinizi seçmelisiniz. Bizim uygulamada<br />
sayfalar sadece kendi bilgisayarımızda olacağı için None seçilmiştir.<br />
Şekil 9-26 Yeni site oluşturma için dördüncü adım penceresi<br />
Bu işlemlerle birlikte site oluşturmak için gerekli bütün seçimler yapılmış olur. En<br />
son bir pencere daha gelir. Bu pencerede oluşturulan siteye dair bilgiler vardır. O<br />
penceredeki Done butonuna tıklanarak site oluşturma işlemi bitirilir.<br />
9.16 Şablon Oluşturma<br />
Web siteleri hazırlanırken her web sitesi için öncelikle bir şablon oluşturulur [6].<br />
Bu şablon sayfada, sitedeki bütün sayfaların sahip olacağı ortak özellikler bulunur.<br />
211
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Sitedeki sayfaların arka plan rengi, sayfaların sahip olacağı ana bölgeler, ortak menüler<br />
ve bağlantılar, kullanılacak ortak fontlar gibi birçok sayfa özelliği bu şablonda belirtilir.<br />
Daha sonra bu siteye bir sayfa ekleneceği zaman, yeni sayfa bu şablona göre oluşturulur.<br />
Bu bölümde, hazırlayacağımız bir site için nasıl şablon oluşturabileceğimizi<br />
görelim. Oluşturacağımız bu şablonu, Dreamweaver editörü ile gelen başka bir şablondan<br />
türeteceğiz. Dreamweaver editörü ile birçok basit sayfa şablonu gelir. Programcılar bu<br />
şablonları kendi ihtiyaçlarına göre değiştirerek yeni şablonlar oluşturur. Şimdi bu<br />
şablonlardan bir tanesini kullanarak yeni bir şablon oluşturalım.<br />
Dreamweaver editörü ile gelen şablonları kullanarak bir şablon oluşturmanın ilk<br />
adımı File menüsünden New seçneğini seçmektir. Bu seçim yapılınca Şekil 9-27’deki<br />
pencere gelir. Bu pencerede en soldaki menüden Blank Template seçeneğini seçiniz.<br />
Ortadaki Template Type listesinden ise HTML Template seçeneğiniz seçiniz. Onun<br />
yanındaki Layout listesinden her hangi bir seçeneği seçebilirsiniz. Her bir seçeneğin<br />
üzerine fare ile tıkladığınızda, şablonun yapısı sağda görünür. Biz bu uygulamada “2<br />
column elestic, left sidebar, header and footer” seçeneğini seçtik. Bu<br />
şablonda sayfada bir üst bölge, bir sol sütun bir de alt bölge vardır. Buna ek olarak bir de<br />
sayfa içeriği için gövde kısmı mevcuttur.<br />
Şekil 9-27 Dreamweaver şablonundan sayfa oluşturma penceresi<br />
Bu seçimler yapıldığında bu şablona göre bir şablon sayfası oluşturulur. Bu sayfa<br />
Şekil 9-28’deki gibidir. Oluşturulan sayfa içinde örnek metinler ve başlıklar vardır. Bu<br />
sayfanın arka plan rengi, ana bölgeleri ve kullanılan fontların özellikleri şablon tarafından<br />
belirlenmiştir. Bu sayfanın HTML kodu kontrol edildiğinde, şablonun CSS kullanılarak<br />
hazırlandığı görülecektir. Her bir bölge bir div elemanı ile tanımlanmıştır. Ayrıca<br />
sayfadaki kullanılacak fontun özellikleri de CSS ile belirlenmiştir.<br />
212
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-28 Şablona göre oluşturulmuş örnek sayfa<br />
Şimdi bu sayfadaki başlığı değiştirelim. Sol taraftaki bölüme ise tek sütunlu bir<br />
tablo ekleyelim. Bu tabloya sayfamızın ana menüsünü ekleyelim. Tablonun her satırında<br />
bir bağlantı olsun. Tablomuzun çizgilerinin kullanıcıya gözükmemesi için border<br />
özniteliği değerini sıfır yapalım. Benzer şekilde sayfanın alt bölgesindeki kısma, sayfa ile<br />
ilgili genel bir bilgi ekleyebilirsiniz.<br />
Gövde kısmı diğer üç bölgeden farklı olacaktır. Çünkü diğer üç bölge, sitemizdeki<br />
bütün sayfalar için aynı olacaktır. Fakat gövde kısmındaki bilgiler her sayfa için farklı<br />
olacaktır. Dolayısıyla gövde kısmı şablonda boş bırakılacaktır. Ayrıca gövde kısmına her<br />
sayfada yazı yazılabilmesi için bir Editable Region nesnesi eklenecektir.<br />
Editable Region (Yazılabilir Bölge)<br />
Bir şablona göre bir sayfa oluşturulduğunda, o sayfanın sadece Editable Region<br />
nesnesi eklenmiş kısımları değiştirilebilir. Diğer bölgeler üzerinde değişiklik yapılamaz.<br />
Bunun amacı şablon ile bir sitenin genel özelliklerini kontrol etme isteğidir. Bir sitenin<br />
şablonu, o sitenin sayfalarının ortak özelliklerini belirler. Bu ortak özelliklerle ilgili bir<br />
değişiklik yapılacaksa, bu değişiklik şablon üzerinde yapılır. Her sayfaya ait değişiklik<br />
ise ancak o sayfanın yazılabilir bölgesinde yapılır. Bir şablonda değişiklik yapıldığında,<br />
editör bu değişikliği otomatik olarak o şablona göre üretilmiş bütün sayfalara yansıtır. Bu<br />
da site geliştirme işlemini ciddi manada kolaylaştırmaktdır.<br />
Şimdi şablonumuzun gövde bölgesine bir Editable Region nesnesi ekleyelim.<br />
Bunun için öncelikle imleci Editable Region nesnesinin konulacağı gövde kısmına<br />
getiriniz. Sonra insert panelindeki Templates | Editable Region butonuna<br />
tıklayınız. Bu işlem yapılınca şablon sayfamız Şekil 9-29’daki gibi olur. Sonra bu<br />
şablonu dwt uzantılı olarak site içine kaydediniz. Şablonlar site dizini altında Templates<br />
dizini içine kaydedilir.<br />
213
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Örnek Uygulama<br />
Şekil 9-29 Editör ile oluşturulmuş örnek şablon<br />
Bu bölümde olduğu gibi düşündüğünüz bir site için bir şablon geliştiriniz?<br />
Şablonu Dreamweaver ile gelen şablonlardan birisine göre yapınız? Oluşturduğunuz<br />
şablona en az bir menü bir de yazılabilir bölge ekleyiniz?<br />
9.17 Şablona Göre Sayfa Oluşturma<br />
Şimdi bir önceki bölümde oluşturmuş olduğumuz şablona göre sitemiz içinde örnek<br />
bir sayfa oluşturalım. Bu sitedeki bütün sayfalar artık bu şablona göre oluşturulmalıdır.<br />
Eğer sitenin genel yapısında bir değişiklik yapmak istersek, bu değişiklik te şablon<br />
üzerinde yapılmalıdır.<br />
Şablona göre bir sayfa oluşturmak için File menüsünden New seçilir. Bu durumda<br />
Şekil 9-30’da görülen yeni belge oluşturma penceresi gelir. Bu pencerede en soldaki<br />
seçeneklerden Page from Template seçilir. Ortadaki Site menüsünden de<br />
şablonumuzun içinde bulunduğu site ismi seçilir. Bizim durumumuzda site ismi<br />
site2‘dir. Onun yanındaki liste, seçilen sitedeki şablonları göstermektedir. Bu sitede<br />
henüz bir tane şablon olduğu için, o şablon seçilir. Create butonuna tıklanarak yeni sayfa<br />
oluşturulur.<br />
214
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Şekil 9-30 Şablona gore sayfa oluşturma penceresi<br />
Oluşturulan sayfanın sadece gövde kısmında görülen Editable Region kısmı<br />
yazılabilir durumdadır. Diğer kısımlar üzerinde bir değişiklik yapılamaz. Eğer diğer<br />
kısımlar üzerinde bir değişiklik yapılmak istenirse, bu değişiklik şablon üzerinde<br />
yapılmalıdır. Gövde kısmında görülen Editable Region kısmına eklemeler yapınız.<br />
Editable Region kısmı gövde içinde istediğiniz kadar büyüyebilir. Bu eklemeler<br />
yapıldıktan sonra sayfa Şekil 9-31’deki gibi olur. Bu sayfa sitemizdeki sayfalardan bir<br />
tanesi olacaktır. Bu sayfayı html uzantısıyla site dizini içine kaydediniz. Bu şekilde<br />
sitedeki diğer sayfalar da bu şablondan üretilir. Gerek olursa site için başka şablonlar da<br />
üretilebilir.<br />
Örnek Uygulama<br />
Şekil 9-31 Şablondan üretilmiş örnek sayfa<br />
215
İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />
Bir önceki bölümde geliştirmiş olduğunuz şablona göre iki farklı sayfa<br />
oluşturunuz? Bu sayfaların yazılabilir bölgelerine o sayfalara ait bilgileri ekleyiniz.<br />
Sayfaların diğer kısımları üzerinde herhangi bir değişiklik yapılamadığını gözlemleyiniz.<br />
Oluşturmuş olduğunuz bu iki sayfaya şablondaki menüden bağlantı veriniz? Daha sonra<br />
şablon ile yaptığınız değişikliğin, oluşturduğunuz sayfalar üzerinde de olduğunu<br />
gözlemleyiniz?<br />
9.18 Özetle<br />
Bu bölümde Adobe Dreamweaver CS4 editörünü kullanarak web sitesi<br />
hazırlamanın temellerini gördük. Web sayfasında metinlerinin tanımlanmasını ve<br />
özelliklerinin değiştirilmesini, listeler oluşturulmasını, bağlantı kullanımını, görüntü<br />
eklemeyi ve özelliklerini değiştirmeyi, tablolarla ilgili işlemler yapmayı gördük. Ayrıca<br />
site oluşturmayı, sayfalar için şablon üretmeyi ve şablonlara göre sayfa oluşturmayı<br />
gördük. Bu bölümde gördüğümüz konular Dreamweaver CS4 editörünün temel<br />
özelliklerini kapsamaktadır. Bu editörün daha biçok özelliği bulunmaktadır. Bu özellikler<br />
buradaki oluşan temel üzerine programcılar tarafından kolayca öğrenilebilir.<br />
9.19 Referanslar<br />
[1] Bonnie Skaalid, "Multimedia and Web Page Design Principles",<br />
http://www.usask.ca/education/coursework/skaalid/page/design/webdsgn.htm, 7<br />
Ekim 2009.<br />
[2] James R. Grunwald, "Six Basic Principles of Web Page Design", http://www2.mlcwels.edu/jgrunwald/page.html,<br />
7 Ekim 2009.<br />
[3] Smashing Editorial, "10 Principles Of Effective Web Design",<br />
http://www.smashingmagazine.com/2008/01/31/10-principles-of-effective-webdesign,<br />
January 31st, 2008, Accessed 7 Ekim 2009.<br />
[4] WYSIWYG, http://en.wikipedia.org/wiki/WYSIWYG, 7 Ekim 2009.<br />
[5] Adobe Dreamweaver CS4, http://www.adobe.com/products/dreamweaver, 7 Ekim<br />
2009.<br />
[6] Christopher Heng, How to Use Dreamweaver CS4's Templates to Manage and Auto-<br />
Update Multiple Pages on Your Website,<br />
http://www.thesitewizard.com/gettingstarted/dreamweaver-cs4-tutorial-7.shtml, 7<br />
Ekim 2009.<br />
216