Karmaşadan hoşlanan herhalde yoktur ki insanlar belli bir yaştan sonra çocukluklarını, sadeliği, basitliği özlüyor. Ben de özlemeye başladım desem yalan olmaz. Bu yüzdendir ki işlerimde de önceki karmaşanın yerini sadelik ve kullanılabilirlik alıyor.
Bunu düşünen gönüllü insanlar bugünü Dünya Kullanılabilirlik Günü, World Usability Day olarak kutluyorlar.
“Why doesn’t this work right? What am I supposed to do with this now?” “Neden doğru çalışmıyor?, Şimdi ne yapmalıyım?” sorularına cevap arayanlardansanız sizin de Dünya Kullanılabilirlik Gününüz kutlu olsun:)
Hayatı Kolaylaştırın!
"keep it secret, keep it safe!"
Bu sözler Yüzüklerin Efendisi üçlemesinin ilk bölümünden. Nostalji yapıyorum da biraz :D
Neyse asıl yazmak istediğim ajax ve güvenlik üzerine birkaç küçük not. Ne alaka demeyin okuyun sonra karar verin;
Dün akşam üstü dolaşırken internetin lüks semtlerinden birinde bir sitede güzel bir oylama sistemi gördüm, yalnız üyeler oy verebiliyormuş, ne güzel güvenliği iyi yapmışlar deyip üye oldum. Hoşuma giden şeyleri inceleyip nasıl çalıştıklarını araştırmayı seviyorum. ama fazla inceleyince kurdu çıkıyor :D
gerçi buradaki programcının hatası ama ajax ile uygulama yapan herkesin düşebileceği hatalardan.
1. Heryerde get metodu kullanmak
2. Sunucu tarafında isteğin gerçekten ajax ile yapılıp yapılmadığını kontrol etmemek.
3. Yapılan işlemlerde yetkilendirme kontrolunun yapılmaması (bu daha çok sunucu tarafını ilgilendiriyor).
get methodu ile çalışmak kolay olduğu için çokça tercih ediliyor ve kodu biraz incelememiz işlemin nasıl olduğu hakkında fikir edinmeniz için yeterli.
Sunucu tarafında isteğin ajax ile olup olmadığını kontrol etmek özellikle get methodu ile çalışıyorsanız güvenlik açısından yararlı olabilir.
Prototype ile çalışanlar için şöyle bir güzellik var; http istek başlığına X-Requested-With: XMLHttpRequest ekliyor. Bu sayede isteğin prototype ile yapıldığını ayırt edebilirsiniz.
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
$_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
//prototype ile istek yapıldı
}
else
//prototypesız istek yapıldı.
bu yöntemi SitePoint de javascritsiz istekleri bulmak için kullanmışlar.
Her ne kadar bunlar güvenliği sağlıyor gibi görünse de asıl olay sunucu tarafını ilgilendiriyor. İsteğin sadece ajax ile yapılacağını düşünüp kullanıcı yetkilendirmelerine yeteri kadar önem verilmiyor.
Şimdi alakayı kuralım ajax Web 2.0ın altın yüzüğü, güvenliği elden bırakmadığınız sürece ;)
The source code makes me weep..
The supervisor rants. He says “This website’s pants! I want my clicks improved by Friday!”
I hit the URL. It’s like the bowels of hell. God give me strength. It’s just not my day.
So raise your hands to Boag and pray that we can fix this website today.
Tonight I need your CSS, coding in the darkness. From now on no more tables nest; you will meet web standards.
The source code makes me weep. There’s tables fifteen-deep. In Netscape 6 it looks like garbage.
The METAs say this turd was made with MS Word. With every click I find new carnage.
So raise your hands to Boag and pray that we can fix this website today.
Tonight I need your CSS, coding in the darkness. From now on no more tables nest; you will meet web standards.
I guess I’ll have to start from scratch – then I can kiss this piece of trash goodbye…
Tasarımcı aşık olunca haliyle böyle bir şarkı ortaya çıkmış, çok da güzel olmuş..
herşey web tabanlı olsun
2 gün önce yazılım mühendisliği dersini veren hocamla görüştüm. derste yapılan projelerin hep aynı online servisler olduğundan yakınıyordu. "Herşey online herşey online" haksız da sayılmaz özellikle bu projeyi görünce siz de aynı fikre kapılacaksınız.
eyeOS kendini açık kaynak kodlu web tabanlı işletim sistemi olarak tanımlıyor. Şimdilik iddia ettiği kadar olmasa da geleceği oldukça parlak gözüküyor. Test ettim beğendim;)
moo.dom ve Behaviour
“Dur hele bunlar da neyin nesi?” diyenleri duyabiliyor gibiyim zira hiçbir türkçe sitede bahsi geçmemiş olması beni oldukça şaşırttı.
moo.dom ve Behaviour farklı fakat aynı iş için yazılmış 2 farklı javascript kodu. Yaptıkları iş web 2.0 ile ilgilenen herkesin ekmeğine yağ sürecek cinsten. Şöyleki az çok javascript ile ilgilenen herkes bilir ki javascript kodumuzu ya script tagları arasına yazar yada farklı bir .js dosyasına yazıp HTML dosyamıza ekleriz ve yazdığımız kodu tetiklemesi için onclick(); gibi fonksiyonları kullanırız. Kullandığımız bu fonksiyonlar HTML kodu içinde olamak zorundadır javascript kodumuz farklı dosyada olsa bile.
İşte moo.dom ve Behaviour bu fonksiyonları HTML kodundan ayırmamıza olanak sağlıyor. Bunu yaparken de CSS tarzı seçim metodu kullanıyor. (.class #id veya HTML elemanı adı ile). Yani HTML kodunuza hiç javascript karıştırmadan istediğiniz eleman yada elemanlara tetikleyiciler (event listeners) ekleyebilirsiniz. Gerçekten harika.
CSS ve XHTML kodlayanlara gün doğdu diyebilirim çünkü bu scriptleri kullanmak için HTML kodunuzu anlamsal olması gerekiyor. Her istediğiniz elemana rahatça erişebilmelisiniz. Bu da her elemanı iyi tanımlamakla oluyor.
Benim kişisel seçimim moo.dom’dan yana. prototype.js kütüphanesini kullanıyor bu ekstradan 50kb bir yük demek diye düşünebilirsiniz. Fakat zaten prototype’a ihtiyacınız olacağı için (ilerde mutlaka kullanacağınıza eminin) sorun olmayacaktır. Ayrıca lite verisiyonu da mevcut. Kod yapısı olarak behaviour’dan daha basit.
Gerisi bize kalmış :)
2 problem 2 çözüm
gelelim sorunlara ajaxın kalbi XMLHTTP nesnesi ile IE arasında bir anlaşmazlık var. bazen rahatsız edici bir güvenlik uyarısı veriyor. neden niye diye ararken buldum bu https olan bir sitede http den yayımlanan bir nesne kullanmak gibi bişey. ilgililer bilir güvenli alanda güvensiz alandan bir nesne çağırınca /* bu resim, js, css olabilir */ IE güvelik uyarısı veriyor ehh haksız da sayılmaz.
Aynı sorun XMLHTTP objesi içinde geçerli. eğer alınan veri farklı bir domainden geliyorsa bu uyarı çıkıyor. meselâ flickrdan rss ile veri alıp kendi sitemde göstermek istiyorum. çözüm basit sunulan verileri kendi sitenizden almanız gerekiyor.
2. sorun Ajax ve Türkçe karakter problemi, sorunun kaynağını tam olarak anlayamadım. gelen verilerde problem yok, sunulan verinin karakteri de doğru. veriyi browser bozuyor olamaz çünkü hepsinde aynı problem var. büyük ihtimalle xmlhhtp objesi bozuyor. kimin bozduğu çokta önemli değil. çözüm olarak hiç Türkçe karakter kullanmamaya karar verdim :D
böyle de çözüm olmaz demeyin oldu bile..
html de her karakterin bir kodu var ç için ç kullanıyoruz. böyle olunca çözüm oldukça basitleşiyor; Türkçe karakterleri ya da düzgün gözükmeyen karakterleri html kodu ile değiştirip sunmak gerekiyor veriyi. PHP için şöyle bir fonksiyonu yazdım.
<?php
function elie_js_friendly($string){
$string = str_replace(
array('ç', 'Ç', 'ğ' , 'Ğ', 'ı', 'İ', 'ö','Ö','ü','Ü','ş','Ş'),
array('ç', 'Ç', 'ğ',
'Ğ', 'ı', 'İ', 'ö',
'Ö', 'ü', 'Ü', 'ş',
'Ş'),$string);
return $string;
}
?>
diğer karakterler için buraya bakıp ekleme yapabiliriniz.
Are you 2.0?
web 2.0 kavramını artık bilmeyenimiz kalmamıştır sanırım. Kimileri yok böyle birşey kandıyorlar sizi deseler de artık web 2.0 uyumunuzu denetleyen web siteleri bile var(mış).
Web 2.0 validator web sitenizi yine “senin benim koyduğum kurallarla” denetleyen bir sistem. ben web 2.0‘ım ya da bir gün olacağım diyorsanız bir göz atmanızda fayda var derim.
