SlideShare a Scribd company logo
Mutant Web Uygulamaları Azer Koçulu http://azer.kodfabrik.com
Sunum İçeriği Teknik İnceleme Cloudo ve Firebug Lite nasıl geliştirildi? DOM Teknikleri Veri taşıma yöntemleri
Python ve Comet Comet isteği nasıl oluşturulur? Server nasıl yanıt vermeli? CherryPy ile Stream örneği
Geleceğin Browser Teknolojileri HTML5 Javascript 2 Tamari, IronPython&IronRuby ve ScreamingMonkey
Cloudo
Cloudo Web tabanlı DDE (Distributed Desktop Environment) uygulamasıdır. İsveç'te yaşayan Hakan Bilgin ve Selim Çotal geliştiriyor. Geçtiğimiz hafta ikinci Alpha sürümü yayınlandı.
Cloudo, daha verimli kod yazmayı sağlayan extend.js adlı bir javascript kütüphanesinin üzerine kuruludur. Bu kütüphanenin temel özelliklerinden biri, browser'ın native class'ları üzerinde düzenlemeler yaparak eksikleri gidermektir.
Cloudo'nun veri transferlerini xdbc.js adlı ikinci kütüphane sağlıyor. xdbc.js server'dan gelen XML veriyle XSL belgesinin önyüzde işlenmesini sağlar. Bu yöntemle arayüz oluşturmak, klasik DOM ağacı oluşturma tekniğine oranla birkaç kat hızlıdır.
Firebug Lite
Firebug Lite 1.2, geçen nisan ayında çıkan pi.debugger'ın geliştirilmiş ve görsel olarak Firebug'a benzetilmiş yeni halidir. 25 Temmuzda Steve Souders'ın OSCON'da tanıtmasıyla release edildi. Bookmarklet olarak kullanılabiliyor.
IPhone'da çalışıyor. Konsol,Inspector,HTML/CSS/ Script/DOM Explorer ve bir XHR Monitor aracını içeriyor. Browserlar kodun yürütüldüğü thread'e müdahale edilmesine izin verdiğinde, breakpoint, error indicator vb. araçları da içerecek.
Firebug Lite, pi.js adlı kütüphanenin üzerinde geliştirildi. Bu kütüphanenin temel niteliği, web tabanlı yazılım geliştirmek için tasarlanmasıdır. Şu an tamamlanmamış ta olsa, pi.kodfabrik.com adresinde dökümanları bulunuyor.
FBLite 1.2'nin Dojo kütüphanesine eklenmesi için Mike Wilcox Firebug takımına katıldı. FBLite'ın eklendiği kütüphaneler, doğal olarak Pi kütüphanesini de içerecek.
FBLite "firebug" adında bir hash'in içinde çalışır:         var firebug = { version:[1.2,20080725] }; Arayüz pi.element ile oluşturulur:         var myButton = new pi.element("button").         attribute.addClass("MyButton").         environment.addStyle({ "color":"#000", "background":"green" }).         update("Click Me").         event.addListener("click",function(){            alert("Hello World!");          }).         insert(document.body)‏ gh
Arayüzü stilize eden CSS dosyası da pi.element ile açılır:        document.getElementsByTagName("head")[0].appendChild(            new pi.element("link").            attribute.set("rel","stylesheet").            attribute.set("href","http://foo.bar.css").            element        )     CSS ve Script bölümlerinde, dosya kaynaklarını çağırmak için pi.xhr kullanılır:      >>> trace(pi.xhr.get("firebug.js").responseText)‏      "var firebug....."
Firebug Lite'ın yeni versiyonu önümüzdeki hafta çıkacak. Bu versiyonda CSS ve DOM property'lerinin arayüz üzerinde düzenlenmesi, pencere yüksekliğinin arayüzde veya komut satırında değiştirilmesi mümkün olacak.
Python ve Comet
Server'ın gelen isteği bekletmesi ve parça parça cevap vermesi zaman aralığı kısa periyodik veri transferleri yapmayı sağlar. Bu tekniğe Comet adı verilir. Neredeyse tüm browserlar farklı yöntemlerle bu tekniği destekler.          Gecko/Webkit:  Multipart XMLHttpRequest         Trident( MSIE,Maxthon vb ):  HTMLFile&Iframe         Opera:  Serverside Event Listener
SSEL ideal comet tekniğidir. event-source elementiyle stream yapılır: JAVASCRIPT var el = document.createElement("event-source"); el.setAttribute("src","/read"); document.body.appendChild(el); el.addEventListener("NewStream",function(_eventArgs){      trace(_eventArgs.servertime); },false); PSEUDOCODE (Response)‏ header "application/x-dom-event-stream" for i from 0 to 15      write "Event: NewStream\n"      write "servertime: %i"%server_time      flush      sleep 1000
XHR yönteminde klasik XMLHttpRequest isteği gönderilir.  Server isteği bekletirken readyState 3'tür, responseText değiştiğinde callback çalışır. IFrame tekniği tüm browserlarda çalışır ama throbber hareketli görünür.
Bu problemi aşmak için IFrame, HTMLFile adlı ActiveX objesiyle açılan sanal pencereye yerleştirilir. JAVASCRIPT var win = new ActiveX(&quot;HTMLFile&quot;); win.open(); win.write(&quot;<html><body></body></html>&quot;); win.close(); win.body.innerHTML=&quot;<iframe src='/read' />&quot; function read(_serverTime){ trace(_serverTime) }     PSEUDOCODE (Response)‏     header &quot;text/html&quot;     for i from 0 to 15        write &quot;<script>parent.parentWindow.read(%i)</script>&quot;%server_time        flush        sleep 1000
Browserların bugünkü imkanlarıyla comet tekniği biraz karmaşık ve sorunlu. Bu yüzden pek çok kütüphane ve framework türedi, dwr, Orbited, dojo.cometd gibi. pi.comet bunlardan biri, ilk sürümü mart ayında çıkmıştı.            * http://ajaxian.com/archives/picomet-simple-comet-library
Basitçe, cross browser comet kanalı açmayı ve bu kanala veri göndermeyi sağlıyor; JAVASCRIPT pi.comet.get('/read',function(_response){     trace(_response); })‏ PSEUDOCODE (Response)‏ import PIComet response = PIComet(parameter(&quot;PICometMethod&quot;),parameter(&quot;PICometName&quot;))‏ header &quot;Content-type: %s&quot;%response.contentType for i from 0 to 15      response.push(&quot;&quot;%server_time)‏      flush      sleep 1000
CherryPy CherryPy Python'la yazılmış bir HTTP framework'üdür. Basit ve güçlü uygulama sunucusu arayanlar için iyi bir seçenek. Hello World; import cherrypy class HelloWorld(object):      # @cherrypy.expose      def index(self):          return &quot;Hello World!&quot;      index.exposed = True  cherrypy.quickstart(HelloWorld())
import cherrypy,sys,time class helloWorld(object):      @cherrypy.expose      def index:          def content():              for i in range(10):                  yield &quot;<h1>%i</h1>&quot;%i                  sys.stdout.flush()‏                  time.sleep(1)‏          return content()‏ expose._cp_config = {          'response.stream':True      }  cherrypy.quickstart(helloWorld())‏ &quot;yield&quot; operatörüyle de çıktı verilebildiği için kolayca stream yapmayı sağlar;
Multi-threaded serverlar comet için sağlıklı altyapı sağlayamıyor. CherryPy, Orbited, Twisted, Cogen gibi asenkron IO sağlayan yazılımlarla uyumludur. Bu sayede comet uygula artırdığı trafik yükünün altından kalkılabilinir.
Geleceğin Browser Teknolojileri
HTML5 Yeni elementler arasında canvas,video, audio gibi elementler var. Canvas elementi browserda grafik programlama yapmayı sağlıyor. Canvas tabanlı birkaç uygulama: http://www.nihilogic.dk/labs/wolf/ http://www.nihilogic.dk/labs/chess/
Web uygulamalarının kullanıcının makinesinde veri saklamasını sağlayan storage ve database api'leri geliştiriliyor. globalStorage ve sessionStorage Obje'leri kalıcı veri tutmayı sağlar. >>> sessionStorage.foo = &quot;hello world&quot; >>> globalStorage[document.domain].foo = 'hello world' kapat/ac >>> sessionStorage.foo==undefined true >>> globalStorage[document.domain].foo 'hello world'
DOM Storage tekniğini Firefox ve Internet Explorer 8 destekliyor. Internet Explorer'ın daha eski versiyonlarında kalıcı veri tutmak için pi.storage veya persist.js kullanılabilir.
Safari ve Opera'nın bugünkü sürümleri DOM storage'ı desteklemiyor ama ileride destekleyecekleri kesin. Database api'sini henüz sadece Webkit destekliyor; var database = openDatabase(&quot;foo&quot;); database.transaction(function(connection){ connection.executeSql(&quot;create table ?&quot;,[&quot;foo&quot;],callback,onerror);  });
HTML5'e yeni eklenen özelliklerden biri de WebSocket. Browserların çeşitli sunucu-istemcilerle real-time veri gönderip almasını sağlayacak. Henüz herhangi bir browser desteklemiyor.
Javascript 2 Javascript 2 ile Ecmascript 4'e geçiş yapılacak.Bazı önemli yenilikler; Class: class Layer {      var name, _x, _y;      function get x(){          return _x;      }      function set x(value){          _x = value+&quot;px&quot;;      } }; var foo = new Layer; foo.x=10; trace(foo.x) // &quot;10px&quot;
Tür tanımlama: Paket yönetimi: Namespace: var x:int = 10, name:String = &quot;Azer&quot;; { &quot;x&quot;:int, &quot;y&quot;:string } function(x:int, y:string){ // ... }; >>> import pi.util.* >>> pi.util.Random(0,255)‏ 123 >>> import pi.util.* >>> use namespace pi.util >>> Random(0,255)‏ 213
Javascript 2, 2009'da Mozilla 2'nin çıkmasıyla kullanılmaya başlanacak. Mozilla Javascript 2 için Tamarin VM üzerinde çalışmaya başladı. Mozilla'nın IronPython ve IronRuby adlı iki projesi daha var. Python ve Ruby dilleriyle DHTML programlama mümkün olacak.
     Problem; hızlı gelişen teknolojinin karşısında Internet Explorer'ın çok geriden gelmesi.
Çözüm!
ScreamingMonkey http://wiki.mozilla.org/Tamarin:ScreamingMonkey
Mozilla, Internet Explorer'ın Javascript 2 yorumlamasını sağlayacak.
Sorular?

More Related Content

ODP
Javascript Performance Optimisation
ODP
JavaScript sunumu
PPT
PDF
Sqlmap Analiz
PPT
Jquery Giriş
PPTX
Servlet and JSP Lifecycle
PPS
El Metiche
PPT
Ramirez Daniela Procesodehumanizacion
Javascript Performance Optimisation
JavaScript sunumu
Sqlmap Analiz
Jquery Giriş
Servlet and JSP Lifecycle
El Metiche
Ramirez Daniela Procesodehumanizacion

Viewers also liked (6)

PPS
Clinicadental
PPT
Michael
 
PPS
I Asked Krishna
PPT
Artist Magnet
PPT
Workshop Basis Film- en Montagetechniek
PPT
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Clinicadental
Michael
 
I Asked Krishna
Artist Magnet
Workshop Basis Film- en Montagetechniek
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Ad

Similar to Mutant Web Applications (20)

PDF
Jstanbul, Node.js based Socket.IO, Express and HTML5 based Bingo Game
ODP
Ozgur Web Catilari Mobil Uygulama Gelistirme
PPT
HTML5 ve Phonegap
PDF
agem_intern_report
PDF
Modern Frontend
PPTX
PDF
Node.js
DOC
PDF
Sunucularımızı Gözleyelim
PPTX
PhoneGap/Cordova ile Mobil Uygulama Geliştirmeye Giriş
PPTX
Node js part 1 shared
PDF
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
PPTX
Linkle mimari
PDF
Gelecegin Gelistiricileri Icin PHP Programlama Dili ve Oneriler
PPS
Ajax
PPTX
Web development
PPT
Yahoo's Open! Web Developerları İçin..
PDF
Web Crawlers
PPT
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
PDF
PHPkonf'15 - PHP Uygulamanızı Güçlendirin
Jstanbul, Node.js based Socket.IO, Express and HTML5 based Bingo Game
Ozgur Web Catilari Mobil Uygulama Gelistirme
HTML5 ve Phonegap
agem_intern_report
Modern Frontend
Node.js
Sunucularımızı Gözleyelim
PhoneGap/Cordova ile Mobil Uygulama Geliştirmeye Giriş
Node js part 1 shared
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Linkle mimari
Gelecegin Gelistiricileri Icin PHP Programlama Dili ve Oneriler
Ajax
Web development
Yahoo's Open! Web Developerları İçin..
Web Crawlers
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
PHPkonf'15 - PHP Uygulamanızı Güçlendirin
Ad

Mutant Web Applications

  • 1. Mutant Web Uygulamaları Azer Koçulu http://azer.kodfabrik.com
  • 2. Sunum İçeriği Teknik İnceleme Cloudo ve Firebug Lite nasıl geliştirildi? DOM Teknikleri Veri taşıma yöntemleri
  • 3. Python ve Comet Comet isteği nasıl oluşturulur? Server nasıl yanıt vermeli? CherryPy ile Stream örneği
  • 4. Geleceğin Browser Teknolojileri HTML5 Javascript 2 Tamari, IronPython&IronRuby ve ScreamingMonkey
  • 6. Cloudo Web tabanlı DDE (Distributed Desktop Environment) uygulamasıdır. İsveç'te yaşayan Hakan Bilgin ve Selim Çotal geliştiriyor. Geçtiğimiz hafta ikinci Alpha sürümü yayınlandı.
  • 7. Cloudo, daha verimli kod yazmayı sağlayan extend.js adlı bir javascript kütüphanesinin üzerine kuruludur. Bu kütüphanenin temel özelliklerinden biri, browser'ın native class'ları üzerinde düzenlemeler yaparak eksikleri gidermektir.
  • 8. Cloudo'nun veri transferlerini xdbc.js adlı ikinci kütüphane sağlıyor. xdbc.js server'dan gelen XML veriyle XSL belgesinin önyüzde işlenmesini sağlar. Bu yöntemle arayüz oluşturmak, klasik DOM ağacı oluşturma tekniğine oranla birkaç kat hızlıdır.
  • 10. Firebug Lite 1.2, geçen nisan ayında çıkan pi.debugger'ın geliştirilmiş ve görsel olarak Firebug'a benzetilmiş yeni halidir. 25 Temmuzda Steve Souders'ın OSCON'da tanıtmasıyla release edildi. Bookmarklet olarak kullanılabiliyor.
  • 11. IPhone'da çalışıyor. Konsol,Inspector,HTML/CSS/ Script/DOM Explorer ve bir XHR Monitor aracını içeriyor. Browserlar kodun yürütüldüğü thread'e müdahale edilmesine izin verdiğinde, breakpoint, error indicator vb. araçları da içerecek.
  • 12. Firebug Lite, pi.js adlı kütüphanenin üzerinde geliştirildi. Bu kütüphanenin temel niteliği, web tabanlı yazılım geliştirmek için tasarlanmasıdır. Şu an tamamlanmamış ta olsa, pi.kodfabrik.com adresinde dökümanları bulunuyor.
  • 13. FBLite 1.2'nin Dojo kütüphanesine eklenmesi için Mike Wilcox Firebug takımına katıldı. FBLite'ın eklendiği kütüphaneler, doğal olarak Pi kütüphanesini de içerecek.
  • 14. FBLite &quot;firebug&quot; adında bir hash'in içinde çalışır:        var firebug = { version:[1.2,20080725] }; Arayüz pi.element ile oluşturulur:        var myButton = new pi.element(&quot;button&quot;).        attribute.addClass(&quot;MyButton&quot;).        environment.addStyle({ &quot;color&quot;:&quot;#000&quot;, &quot;background&quot;:&quot;green&quot; }).        update(&quot;Click Me&quot;).        event.addListener(&quot;click&quot;,function(){           alert(&quot;Hello World!&quot;);        }).        insert(document.body)‏ gh
  • 15. Arayüzü stilize eden CSS dosyası da pi.element ile açılır:       document.getElementsByTagName(&quot;head&quot;)[0].appendChild(           new pi.element(&quot;link&quot;).           attribute.set(&quot;rel&quot;,&quot;stylesheet&quot;).           attribute.set(&quot;href&quot;,&quot;http://foo.bar.css&quot;).           element       )     CSS ve Script bölümlerinde, dosya kaynaklarını çağırmak için pi.xhr kullanılır:     >>> trace(pi.xhr.get(&quot;firebug.js&quot;).responseText)‏     &quot;var firebug.....&quot;
  • 16. Firebug Lite'ın yeni versiyonu önümüzdeki hafta çıkacak. Bu versiyonda CSS ve DOM property'lerinin arayüz üzerinde düzenlenmesi, pencere yüksekliğinin arayüzde veya komut satırında değiştirilmesi mümkün olacak.
  • 18. Server'ın gelen isteği bekletmesi ve parça parça cevap vermesi zaman aralığı kısa periyodik veri transferleri yapmayı sağlar. Bu tekniğe Comet adı verilir. Neredeyse tüm browserlar farklı yöntemlerle bu tekniği destekler.        Gecko/Webkit: Multipart XMLHttpRequest        Trident( MSIE,Maxthon vb ): HTMLFile&Iframe        Opera: Serverside Event Listener
  • 19. SSEL ideal comet tekniğidir. event-source elementiyle stream yapılır: JAVASCRIPT var el = document.createElement(&quot;event-source&quot;); el.setAttribute(&quot;src&quot;,&quot;/read&quot;); document.body.appendChild(el); el.addEventListener(&quot;NewStream&quot;,function(_eventArgs){     trace(_eventArgs.servertime); },false); PSEUDOCODE (Response)‏ header &quot;application/x-dom-event-stream&quot; for i from 0 to 15     write &quot;Event: NewStream\n&quot;     write &quot;servertime: %i&quot;%server_time     flush     sleep 1000
  • 20. XHR yönteminde klasik XMLHttpRequest isteği gönderilir. Server isteği bekletirken readyState 3'tür, responseText değiştiğinde callback çalışır. IFrame tekniği tüm browserlarda çalışır ama throbber hareketli görünür.
  • 21. Bu problemi aşmak için IFrame, HTMLFile adlı ActiveX objesiyle açılan sanal pencereye yerleştirilir. JAVASCRIPT var win = new ActiveX(&quot;HTMLFile&quot;); win.open(); win.write(&quot;<html><body></body></html>&quot;); win.close(); win.body.innerHTML=&quot;<iframe src='/read' />&quot; function read(_serverTime){ trace(_serverTime) }    PSEUDOCODE (Response)‏    header &quot;text/html&quot;    for i from 0 to 15       write &quot;<script>parent.parentWindow.read(%i)</script>&quot;%server_time       flush       sleep 1000
  • 22. Browserların bugünkü imkanlarıyla comet tekniği biraz karmaşık ve sorunlu. Bu yüzden pek çok kütüphane ve framework türedi, dwr, Orbited, dojo.cometd gibi. pi.comet bunlardan biri, ilk sürümü mart ayında çıkmıştı.           * http://ajaxian.com/archives/picomet-simple-comet-library
  • 23. Basitçe, cross browser comet kanalı açmayı ve bu kanala veri göndermeyi sağlıyor; JAVASCRIPT pi.comet.get('/read',function(_response){    trace(_response); })‏ PSEUDOCODE (Response)‏ import PIComet response = PIComet(parameter(&quot;PICometMethod&quot;),parameter(&quot;PICometName&quot;))‏ header &quot;Content-type: %s&quot;%response.contentType for i from 0 to 15     response.push(&quot;&quot;%server_time)‏     flush     sleep 1000
  • 24. CherryPy CherryPy Python'la yazılmış bir HTTP framework'üdür. Basit ve güçlü uygulama sunucusu arayanlar için iyi bir seçenek. Hello World; import cherrypy class HelloWorld(object):     # @cherrypy.expose     def index(self):         return &quot;Hello World!&quot;     index.exposed = True cherrypy.quickstart(HelloWorld())
  • 25. import cherrypy,sys,time class helloWorld(object):     @cherrypy.expose     def index:         def content():             for i in range(10):                 yield &quot;<h1>%i</h1>&quot;%i                 sys.stdout.flush()‏                 time.sleep(1)‏         return content()‏ expose._cp_config = {         'response.stream':True     } cherrypy.quickstart(helloWorld())‏ &quot;yield&quot; operatörüyle de çıktı verilebildiği için kolayca stream yapmayı sağlar;
  • 26. Multi-threaded serverlar comet için sağlıklı altyapı sağlayamıyor. CherryPy, Orbited, Twisted, Cogen gibi asenkron IO sağlayan yazılımlarla uyumludur. Bu sayede comet uygula artırdığı trafik yükünün altından kalkılabilinir.
  • 28. HTML5 Yeni elementler arasında canvas,video, audio gibi elementler var. Canvas elementi browserda grafik programlama yapmayı sağlıyor. Canvas tabanlı birkaç uygulama: http://www.nihilogic.dk/labs/wolf/ http://www.nihilogic.dk/labs/chess/
  • 29. Web uygulamalarının kullanıcının makinesinde veri saklamasını sağlayan storage ve database api'leri geliştiriliyor. globalStorage ve sessionStorage Obje'leri kalıcı veri tutmayı sağlar. >>> sessionStorage.foo = &quot;hello world&quot; >>> globalStorage[document.domain].foo = 'hello world' kapat/ac >>> sessionStorage.foo==undefined true >>> globalStorage[document.domain].foo 'hello world'
  • 30. DOM Storage tekniğini Firefox ve Internet Explorer 8 destekliyor. Internet Explorer'ın daha eski versiyonlarında kalıcı veri tutmak için pi.storage veya persist.js kullanılabilir.
  • 31. Safari ve Opera'nın bugünkü sürümleri DOM storage'ı desteklemiyor ama ileride destekleyecekleri kesin. Database api'sini henüz sadece Webkit destekliyor; var database = openDatabase(&quot;foo&quot;); database.transaction(function(connection){ connection.executeSql(&quot;create table ?&quot;,[&quot;foo&quot;],callback,onerror); });
  • 32. HTML5'e yeni eklenen özelliklerden biri de WebSocket. Browserların çeşitli sunucu-istemcilerle real-time veri gönderip almasını sağlayacak. Henüz herhangi bir browser desteklemiyor.
  • 33. Javascript 2 Javascript 2 ile Ecmascript 4'e geçiş yapılacak.Bazı önemli yenilikler; Class: class Layer {     var name, _x, _y;     function get x(){         return _x;     }     function set x(value){         _x = value+&quot;px&quot;;     } }; var foo = new Layer; foo.x=10; trace(foo.x) // &quot;10px&quot;
  • 34. Tür tanımlama: Paket yönetimi: Namespace: var x:int = 10, name:String = &quot;Azer&quot;; { &quot;x&quot;:int, &quot;y&quot;:string } function(x:int, y:string){ // ... }; >>> import pi.util.* >>> pi.util.Random(0,255)‏ 123 >>> import pi.util.* >>> use namespace pi.util >>> Random(0,255)‏ 213
  • 35. Javascript 2, 2009'da Mozilla 2'nin çıkmasıyla kullanılmaya başlanacak. Mozilla Javascript 2 için Tamarin VM üzerinde çalışmaya başladı. Mozilla'nın IronPython ve IronRuby adlı iki projesi daha var. Python ve Ruby dilleriyle DHTML programlama mümkün olacak.
  • 36.     Problem; hızlı gelişen teknolojinin karşısında Internet Explorer'ın çok geriden gelmesi.
  • 39. Mozilla, Internet Explorer'ın Javascript 2 yorumlamasını sağlayacak.