Web’in Görmezden Gelinen Kahramanı "HTML"
Ailenin dışlanan çocuğu HTML, modern web deneyimlerinin vazgeçilmezi olan dijital dünyanın sessiz kahramanı..
CSS ve JavaScript kadar göz önünde olamasa da aslında bu iki arkadaş her şeyi HTML’e borçludur. Yani bir nevi, CSS ve Javascript eğer iPhone ise, HTML bir Nokia’dır hatta Ericsson’dur :). HTML olmadan, web sadece bakıldığında anlamak için ciddi çaba sarf etmeniz gereken bir şey haline gelirdi. Yabancıların genellikle zor olmayan bir şey için kullandıkları deyime gönderme yapmak gerekirse HTML için şunu diyebilirim. “It’s rocket science.” 🙂 Ama telaş etmeyin şükürler olsun ki öyle bir evrende yaşamıyoruz.
“Hyper Text Markup Language” kelimelerinin baş harflerinden meydana gelen bu dil web sayfalarındaki metinleri düzenlemek ve işaretlemek için kullanılır. Türkçesi, internet tarayıcınızın anlayacağı dilde bir hiyerarşide yazılan kodlar sayesinde her gün onlarca web sitesinde, yüzlerce textbox’lara yazılar yazıp butonlara tıklayarak işleminizi kolaylaştırarak filmlerdeki hackerlar (!) gibi kod blokları ezberleyip tıkı tıkı komutlar yazmanıza gerek kalmıyor. Şahsen 20 seneyi geçkin bir yazılım geçmişim var ama hala filmlere yetişemiyorum ne yalan söyleyeyim. “Bill Gates misin be mübarek!” derler adama. Hoş, Bill amcanın da böyle kod yazdığını düşünmüyorum açıkcası :).
HTML5 ile Birlikte Gelen Özellikler
- Web Workers
- Drag-and-Drop
- Canvas ve WebGL Desteği
Çok yaygın kullanılmasa da <canvas> tagi dinamik ve etkileyici grafikler yaratmakta oldukça başarılı. WebGL’e gelince ister istemez “Wow, wait a minute!” diyerek orada bir durmak istiyorum. Kendi hayatımdan bir hikaye anlatmak istiyorum o yüzden bu bölümü direkt geçebilirsiniz isterseniz.
***
Yıl 2000 o zamanlar 8 yaşındayım ve internetin ülkemizde yeni yaygınlaşmaya başladığı bir dönemdi. ADSL falan hak getire, Evinde KabloTV, Kablonet’i olanı internet kafeden attığımız zamanlardan söz ediyorum hahah. 2 boyutlu MMORPG oyunları yeni yeni keşfediliyor. Ultima Online isimli efsane bir oyuna sarmıştım. Günlerimi internet kafede geçiriyordum o derece. Aksi gibi evdeki bilgisayarımda da bu oyunu kuracak yer yoktu. (Oyun 700 MB bu arada). Evet, bir dönemler 200 MB’lık 500 MB’lık harddiskler vardı bilgisayarlarımızda. O sıralar hep düşünürdüm ya keşke şu oyunlar Internet Explorer’dan girip oynanabilse diye. (Tabi o zamanlar browserda çalışan uygulamaların cache için belleğe ihtiyacı olduğundan bir haberdim.) Ve yıl 2017’ye geldiğinde hayalim ütopik olmaktan çıkmıştı ama ben de çocuk değildim.
***
WebGL Hayatımıza 2017 itibariyle girince artık browser üzerinde 3D görseller renderlama imkanı doğdu. Tabii bu da browser gaming sektörüyle tanıştırdı bizi. Hala HTML cazip gelmediyse sana o halde okumaya devam etmelisin.
- Geolocation API Desteği
- Web Storage
Günümüzde hemen hemen her web uygulamada kullanılan localstorage yapısı işte HTML5’in yazılımcılar için en hayat kolaylaştıran hedefidir. Bir data tutmanız gerekiyor ama veri tabanınızı yormak istemiyorsunuz ya da sadece HTML kullanarak site yapıyorsunuz belki de? 🙂 Nereye kaydedeceksiniz dataları? Sayfa kapatılsa bile kaybolmaması gerekiyor. Web Storage işte burada devreye giriyor. Tabii eskiden bu işlemi yapmak için Cookie’ler gibi ya da Bookmark’a atılan QueryString linkler gibi alternatif yöntemler mevcuttu. Ama bu kadar verimli değildi tabii ki.
- Offline Web Application Desteği
Adından da anlaşılabileceği gibi internet bağlantınız olmadığı zamanlarda uygulamalarınızı çalıştırmaya olanak sağlayan bir service yapısı. Çalışma prensibi temelde önbellekleme mekanizmaları ile yapılan işlemleri kayıt altına alıp internet bağlantınız geldiğinde service worker’ların sunucu tarafına işlemleri aktarmasından ibaret. Basit yani anlayacağınız. 🙂
- Yeni Input Type ve Attributelar
Desktop uygulamalardan aşina olduğumuz component’ler, web uygulamalara geçince tabii eksikliğini hissettirdi ve bu alanda yeni ihtiyaçlar meydana getirdi. Bu vesileyle HTML5 ile hayatımıza yeni typeta input elementleri de girmiş oldu. Bunlardan bazıları DatePicker, ColorPicker, Otomatik tamamlayıcılardır.
- Audio ve Video Elementleri
- Bonus: ContentEditable Attribute