Friday, May 28, 2010

JTPD Semineri

28 Mayis 2010 tarihli "Bulut, Mobil, NoSQL, HTML5" seminerimizin prezentasyonunu suradan indirebilisiniz.

JTPD

Sunday, May 9, 2010

Sirketlerin 'Bulut'una Karsi Diaspora

Gittikce daha fazla yazilimin buluta (Amazon EC2, Google App Engine) ve sosyal iletisim bilgisinin sosyal ag sirketlerine (Facebook, Twitter) kaymaya baslamasi ile birlikte, kisisel verilerin, yazilimin kime ait, kimin kontrolu altinda oldugu konusu tartisilmaya baslandi. Facebook'un ikidebir degisen gizlilik politikalari bu tartismalara yakit veriyor.

Bu konuya yeni bir yaklasim Diaspora adli yazilimi ortaya cikartti. Yazilimin ruhu aslinda Bittorrent, Tor mentalitesiyle benzesiyor (hatta ileride Diaspora'nin bu hizmetleri kapsayabilecegi de soylenmekte); eger Internet'in temeli daginik yapida olmasi ise, o zaman herkes -kendimize basta olmak uzere- sosyal ag hizmeti, herkes web hizmeti, herkes e-mail hizmeti, herkes veri depolama hizmeti veremez mi?

Daha detaylandiracak olursak; Facebook ornegini ele alalim. Diaspora bu hizmeti soyle halledecek. 1) Herkes bir Diaspora aginda hem kullanici hem servis isini gorecek, yani bilgisayarinizda bir servis, bir kullanici programi isliyor olacak 2) kisisel veriler kullanicinin kendi bilgisayarinda tutulacak, kullanici istedigi kadar kisisel bilgiyi istedigi sekilde disari acacak. 3) Diaspora protokolu kisisel veriyi yakinindaki diger makinalara -sifrelenmis halde tabii- yedekleme amacli kopyalayabilecek 4) iletisim olabildigi olcude birebir makinalar arasinda halledilecek.

Bu durumda, bir Web sitesi isletmek te kendi bilgisayarinizda Web sayfalari bir yerlere koymak kadar basit bir islem olabilir. Diaspora her turlu hizmeti dis dunyaya acabilecegi icin, bu sayfalarin Web uzerinden iletisimi de bu "koca bulutun" icinde halledilecektir. Peki insanlar bu bulutu performans amacli istismar edebilir mi? Bunun onune bant genisligi baglaminda "verdiginden fazlasini alamayacagini" garanti eden basit kontroller halledebilir. Donanim zaten o kadar ucuzlasti ki, insanlar kendi satin aldiklari ufak bilgisayarlari evinde Diaspora network'une dahil ederek islem kapasitelerini arttirabilirler. Diger yandan istismar edilemeyecek statik sayfalar, kullanim durumuna gore -cok erisilenler icin mesela- diger Diaspora makinalarina kopyalanarak, satha yayilarak erisimleri daha da hizlandirilabilir. Su anda Akamai, Dropbox gibi sirketlerin verdigi hizmetin bir benzerinden bahsediyoruz.

Email gibi bir servis, zaten noktadan noktaya oldugu icin Diaspora bunu halleder. Hedef noktadaki makina acik degilse, cografi olarak ona yakin olan Diaspora makinalarinda gecici olarak mesajlar -sifrelenmis olarak- bekletilebilir. Yani Internet'in iletisim paketleri icin cok alt seviyede yaptiginin benzeri, daha ust seviyedeki iletisim protokolleri icin, benzer bir sekilde halledilebilir. Bu Internet'in ruhuna uygundur.

Olasi bir Diaspora network'un gucu tabii ki kullanici sayisiyla orantili olacak. Fakat simdiden boyle bir agi kullanmanin avantaji var. Diaspora ilk surumu cikartti, bu surumda tum sosyal aglardaki hesaplariniza baglanip, mesajlarinizi toplayip, eklemenizi saglayabiliyor. Boyle bir ucuncu parti entegrasyonu, partiler arasi gecisi de kolaylastiriyor - Flickr'a bir resim eklemeniz, Twitter hesabinizda bir baglanti paylasilmasini saglayabiliyor mesela.

Yazinin basinda bahsettigimiz Tor servisi, benzer sekilde, Diaspora icinde halledilebilir. Cin gibi yasakci ulkelerin erisim kontrolleri Diaspora uzerinden delinebilir. Su anda bu Tor ile de yapiliyor, fakat Diaspora daha fazla ek hizmet verecegi icin, daha fazla kullaniciya sahip olacaktir, ve daha fazla kullanici daha guclu bir ag demektir, bu yasakci kontrollerin delinmesini kolaylastirir. Zaten yapilan is yazilim seviyesinde benzer oldugu icin ayni protokol uzerinden bu hizmetin de verilmesi mantikli olur.

Yani gelecekte, su anda bilgisayara bir isletim sistemi kurdugumuz gibi, bilgisayari alir almaz bir Diaspora sistemi de kuruyor olabiliriz - boyle bilgisayarlari kurulu halde aliyor da olabiliriz.

Ilginc bir sekilde Diaspora aslinda Tim O'Reilly'nin bahsettigi Internet Isletim Sistemi'nin ta kendisi. O'Reilly bir PC isletim sisteminin o makinanin ic kaynaklarini idare etmekte oldugundan hareketle, su anda bulutta gozukmeye baslayan hizmetlerin / kaynaklarin boyle bir kontrolor sisteme ihtiyaci oldugunu ileri surmekteydi. Fakat o, bu isletim sisteminin tek bir sirket tarafindan yukaridan asagiya entegre olmus sekilde ortaya cikarilabilecegini one suruyordu. Diaspora bu isi daginik bir sekilde halletmenin yolu olabilir. Ayrica Diaspora'nin yaygin oldugu bir dunyada IOS tek bir sirkete ait olmayacaktir. Bulut hic kimsedir, ayni anda bulut herkesdir.

Bu cozum su anda bulut servislerinin musterisi olan sirketler icin tercih edilir olabilir; cunku verilerini kendi bilgisayarlarinda depolamaya devam ediyor olacaklar. "Baskasinin" makinasina kopyalamalari gerekmeyecek.

Peki boyle bir ekosistem icinde inovasyon olabilir mi? Mesela Google App Engine benzeri bir servis, olasi bir Diaspora aginda cikabilir miydi? Buna cevap cok basit. Su an bulut servisleri veren sirketler de zaten ayni temel yazilimlari kullaniyorlar. App Engine icinde Python, Django, Linux gibi yazilimlar var. Bu yazilimlari herkes kendi bilgisayarinda isletebilir / zaten isletiyor. Diaspora sadece, bu ornek baglaminda, port 80 erisiminizin guvenli bir sekilde dis dunya ile paylasilmasini kolaylastiracak.

Sistemin bir dezavantaji su olabilir: verinin ayni yerde olmasi sayesinde verilebilecek ek hizmetlerin verilebilmesi zorlasabilir. Mesela LinkedIn herkesin is gecmisiyle alakali verileri bir yerde depolayabildigi icin bazi ek hizmetleri verebiliyor. O veri uzerinde veri madenciligi (data mining) algoritmalari isleterek bazi iyilestirmeler yapabiliyor, bazi ek mesajlar gonderebiliyor, vs. Bu tur hizmetleri verisi esasen daginik sekilde olan bir Diaspora aginda vermek ne kadar kolay olur? Imkansiz degil muhakkak, fakat dusunulmesi gereken konular. Belki de LinkedIn gibi bir sirket Diaspora aginda insanlarin is gecmisi ile alakali acik verinin 'musterisi' haline gelebilir, ve bu veriyi gezerek, kendi uc noktasinda toplayarak istedigi ek servisleri verebilir. Bu durumda isteyen herkes bir LinkedIn olabilir, en azindan "is gecmisleri hakkinda" veri tekeli LinkedIn elinde olmaz.

Internet reklamciligi bile Diaspora uzerinden mumkun olabilir. Zaten su anda tek bir reklam idarecisi yerine (mesela Adsense) pek cok idareciyi birlestiren reklam aglari (ad network) daha iyi islemekte. Tek bir idareciye bagli sayfalarin reklam icerikleri her zaman dolmayabiliyor (fill rate denen durum) fakat Mobclix denen bir sirket pek cok idareciyi birlestirerek yuzde 100 doluluk orani garanti edebiliyor. Bu durumda esas olarak "herkesi" temsil eden bir ag sistemi olarak Diaspora ayni sekilde optimal reklam servisini sagliyor olabilir. Diaspora'nin icinden ciktigi serbest yazilimin hep para kazanmaya ve ticarete karsi oldugu dusunulur, fakat Richard Stallman'in kendisi dahil boyle bir anti-ticaret durusun kulturun cikis noktasiyla alakasi yoktur.

Kaynak

Saturday, May 8, 2010

Ajax ve Geri Don Dugmesi

Pur Ajax bazli bir uygulamayi dusunelim: bu uygulama tamamen Javascript bazli olarak servis bilgilerine gore sayfada dinamik bazi degisiklikler yapacaktir. Bir sayfadan digerine gecis yine pur HTML bazli olur, a href=.. uzerinden gidilecek dosya ismi verilir, o dosya yeri geldiginde kendi Javascript cagrilarini yapar, vs.

Bir problem tarayicida "geri git" dugmesi kullanildiginda cikabilir. Ornek olarak, form bilgilerinin oldugu bir sayfada, bu form bilgilerin alinip bir tiklama/aksiyon sonrasi ayni sayfada dinamik icerik uretildigini dusunelim, sonra a href=.. ile tiklanarak baska bir sayfaya ziplanildigini farzedelim. Bu noktada "geri" dugmesi tiklandiginda o sayfanin ilk 'ic aksiyonu' hatirlanmayacak, ve o sayfa ilk yuklendigi andaki icerigi ile gelecektir (buyuk bir ihtimalle bos olarak). Bu kullanicilar tarafindan 'geri' dugmesinin isleyinden beklenen bir sey degildir.

Sayfanin en son halini 'hatirlamak' icin pek cok teknik, yardimci kutuphane var. Bu kavram literaturde 'derin baglantilamak (deep linking)' olarak geciyor, Facebook bu konuda ozellikle basarili. Yardimci kutuphanelerden jQuery kullananlar icin jQuery Adress diye bir cozum var.

Ek kutuphane olmadan kendimizin kodlayabilecegi bir cozum olarak hash tag ('#' isareti) kullanimi mumkun. Bu tag genelde, statik html icinde belli bir bolgeye ziplamak icin kullanilir, Javascript ile beraber a href='#' seklinde bos kullanimi da gelistiricilere tanidik gelebilir.

Ajax cagrisi yaptigimiz noktada cagri basariyla geri donerse hemen o noktada sayfayi dinamik olarak tekrar uretmeye yetecek kadar veriyi kodlayip window.location.hash degiskeninde depolayabiliriz. Buraya depoladigimiz her deger www.vs.com/sayfa.html#veri1veri2.. olarak URL icinde gozukecek (tabii parametreleri bir ayirac -delimeter- ile ayirmak iyi olabilir). Sonra, o sayfaya 'geri donuldugunde' ve/yani sayfa ilk yuklendigi zaman ilk yaptigimiz is bu hash tag degerini bir kontrol etmek olur. Eger orada bir deger varsa, degeri alip icerik uretmek icin gerekli diger cagrilari yapariz. Kod suna benzer:

if (window.location.hash.indexOf(":") > -1) {
str = window.location.hash;
...
}

Bu kod sayfa 'body' seviyesinde, sayfa her yuklendiginde isleyecek sekilde konumlandirilmali.

Boylece geri dugmesi icerigi hatirlayabilmis olur.