kolmapäev, 26. mai 2010

MediaWiki ja jStorage

Avastasin, et MediaWiki projekti ühe laienduse juures on kasutusel minu loodud jStorage (Y) MediaWiki subersionis on küll üks veidi vanem versioon kui hetkel aktuaalne, kuid kui kiirelt üle vaatasin, milleks nad seda kasutavad, siis polegi tõenäoliselt uuemat versiooni vaja. Viimaseks suuremaks uuenduseks oli nimelt XML elementide salvestamise tugi.

XML elemente on võimalik saada näiteks Ajax'i kaudu serverist laadides - XMLHttpRequest nimetus peaks juba ütlema, mille jaoks see algselt mõeldud oli. XML objektid aga ei ole nagu tavalised JavaScripti objektid, vaid midagi DOM objektide laadset (tegelikult ongi mõlema puhul tegu enamvähem sama asjaga). Seega XML objekti salvestades ei saa seda lihtsalt JSON stringiks muuta ja hiljem tagasi - oluline on säilitada mitte ainult andmed, vaid ka vajalikud meetodid ja omadused XML puu töötlemiseks (firstChild, childNodes, getElementsByTagName jne), mida tava-objektidel pole.

Õnneks on võimalik XML objekte suhteliselt kerge teisendada objekti kujult tekstilisele ja vastupidi, nii lisasingi jStorage sisse väikese lisamooduli nimega XMLService, mis siis vajadusel need teisendused ära teeb (salvestamisel tekstiks ja laadimisel uuesti XML objektiks).

Kusjuures kuna XML ei vaja teisendamiseks suhteliselt mahukat teeki, nagu näiteks JSON, oleks võibolla mõnikord täiesti mõistlik just seda andmeedastusvormi kasutada. Kuigi arvestades keerukuse taset JSON'iga võrreldes, siis ma tõenäoliselt lähen siiski alati JSON'i teed, täiendava teegi vajalikkusest hoolimata. Kogu see XML puus ringi "jalutamine" paneb paremal juhul lihtsalt pea valutama, aga halvemal juhul jäävadki õiged asjad leidmata.

neljapäev, 13. mai 2010

PubSubHubbub

Kirjutasin oma wikisse sissejuhatava artikli kuidas kasutada PubSubHubbub protokolli blogipostituste korjamiseks blogidest reaalajas.