Technológie off-line web aplikácií: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „Kategória:Študentské práce Kategória:Bakalárske práce Kategória:Informatika Kategória:php Kategória:web {{Hlavička_FM|{{PAGENAME}}|Dušan Pag…“)
 
()
Riadok 10: Riadok 10:
 
__TOC__
 
__TOC__
  
= =
+
==Technológie off-line web aplikácií==
 +
V súčasnosti je dostupných niekoľko technológií, ktoré podporujú off-line aplikácie:
  
==Google Gears==
+
* Google Gears
Google Gears [1] je open-source projekt of firmy Google. Pridaním nových funkcií do prehliadača dokáže sprístupniť webovú aplikáciu aj v režime off-line. Užívateľovi stačí nainštalovať rozšírenie (Obr. 2.1) do svojho prehliadača a následne povoliť (Obr. 2.2) prístup konkrétnej webovej lokalite pre použitie tohto rozšírenia.
+
* HTML5
 +
Nová špecifikácia HTML5 je zatiaľ vo vývoji a má byť dokončená v roku 2012. Niektoré jej možnosti sú už dnes podporované vo väčšine prehliadačoch.
  
[[Image:semestralka_dušan_pagáč_v1_0_07.png|framed|none]]
+
===Google Gears===
 +
Google Gears [1] je open-source projekt of firmy Google. Pridaním nových funkcií do prehliadača dokáže sprístupniť webovú aplikáciu aj v režime off-line. Používateľovi stačí nainštalovať rozšírenie (Obr. 2.1) do svojho prehliadača a následne povoliť (Obr. 2.2) prístup konkrétnej webovej lokalite pre použitie tohto rozšírenia.
  
Obr. 2.1 Zobrazenie rozšírenia Google Gears v správe rozšírení prehliadača Firefox
+
[[Image:bakalarka_dušan_pagáč_2_2_FINAL_07.png|framed|none]]
  
[[Image:semestralka_dušan_pagáč_v1_0_08.png|framed|none]]
+
Obr 2.1 Zobrazenie rozšírenia Google Gears v správe rozšírení prehliadača Firefox
  
Obr. 2.2 Nastavenie povolenia rozšírenia pre konkrétnu lokalitu (localhost)
+
[[Image:bakalarka_dušan_pagáč_2_2_FINAL_08.png|framed|none]]
  
===Moduly Google Gears===
+
Obr 2.2 Povolenia rozšírenia pre webovú lokalitu (localhost)
====Rozdelenie modulov====
 
Podstata tohto rozšírenia je, že s ním získame tri nezávislé moduly. Každý z nich vylepšuje nejaký aspekt programovania webovej aplikácie na strane klienta prostredníctvom konkrétneho modulu.
 
  
'''Localserver'''
+
====Moduly Google Gears====
 +
S rozšírením Google Gears získame tri nezávislé moduly: lokálny server, databáza, spracovanie kódu na pozadí. Každý z nich vylepšuje nejaký aspekt programovania webovej aplikácie na strane klienta prostredníctvom konkrétneho modulu.
  
Modul LocalServer (lokálny server) umožňuje aplikácií uložiť a používať jeho HTTP zdroje lokálne bez pripojenia k sieti. Je to špecializovaná URL vyrovnávacia pamäť. Požiadavky na URL vo vyrovnávacej pamäti lokálneho servera sú zachytené a obslúžené lokálne priamo z disku používateľa.
+
'''Lokálny server'''
 +
 
 +
Modul lokálny server (''LocalServer'') umožňuje aplikácii uložiť a používať jeho HTTP zdroje lokálne bez pripojenia k sieti. Je to špecializovaná vyrovnávacia pamäť. Požiadavky na URL vo vyrovnávacej pamäti lokálneho servera sú zachytené a obslúžené lokálne priamo z disku používateľa.
  
 
'''Databáza'''
 
'''Databáza'''
  
Databázový modul poskytuje open-source SQLite databázový systém. Databázová API slúži k neustálemu ukladaní používateľských dát. Dáta ktoré sú uložené používajú bezpečnostnú politiku, ktorá web aplikácií nedovolí prístup mimo jej domény.
+
Databázový modul (''Database'') poskytuje open-source databázový systém SQLite. Databázové API slúži k neustálemu ukladaniu používateľských dát. Pre dáta uložené v lokálnej databáze je definovaná bezpečnostná politika, ktorá web aplikácii nedovolí prístup mimo jej domény.
  
'''Workerpool'''
+
'''Spracovanie kódu na pozadí'''
  
Skript časovo náročný na spracovanie ako napríklad zložitý výpočet môže spôsobiť, že užívateľské prostredie neodpovedá. WorkerPool API dovoľuje web aplikácií spustiť javaskriptový kód na pozadí, bez blokovania vykonávania ostatných skriptov na stránke.
+
Skript časovo náročný na spracovanie, ako napríklad zložitý výpočet, môže spôsobiť, že používateľské prostredie nereaguje. Technika spracovania kódu na pozadí (''WorkerPool API'') dovoľuje web aplikácii spustiť javaskriptový kód na pozadí bez blokovania vykonávania ostatných skriptov na stránke.
  
 
====Google Gears API====
 
====Google Gears API====
S modulmi pracujeme pomocou metód aplikačného rozhrania. Pre prístup k nim musíme do aplikácie zahrnúť súbor ''gears_init.js'' (http://code.google.com/intl/sk/apis/gears/gears_init.js).
+
S modulmi Google Gears API pracujeme pomocou metód aplikačného rozhrania. Pre prístup k nim musíme do aplikácie zahrnúť súbor ''gears_init.js'', ktorý sa nachádza na adrese ''http://code.google.com/intl/sk/apis/gears/gears_init.js''. V nasledujúcom texte budú opísané všetky moduly Google Gears API.
 +
 
 +
=====Factory API=====
 +
Trieda ''Factory'' je použitá na vytvorenie inštancií všetkých Gears objektov. Vytvorenie tejto inštancie (Kód 2.1) je povinné.
  
'''Factory API'''
+
Kód 2.1 Volanie metódy ''create'''' ''triedy'' factory''
  
Trieda ''Factory'' je použitá na vytvorenie inštancií všetkých Gears objektov.
+
{|border="2" cellspacing="0" cellpadding="4" width="100%"
 +
|<nowiki><</nowiki>script type="text/javascript" src="gears_init.js"<nowiki>><</nowiki>/script<nowiki>></nowiki><br><nowiki><</nowiki>script type="text/javascript"<nowiki>></nowiki><br>    if (window.google && google.gears) <nowiki>{</nowiki><br>        var db = google.gears.factory.create(<nowiki>’</nowiki>beta.database<nowiki>’</nowiki>);<br>    <nowiki>}</nowiki><br><nowiki><</nowiki>/script<nowiki>></nowiki>
  
Kód 2.1 Volanie metódy ''create'''' ''triedy'' factory''
+
|}
<source lang="javascript">
+
 
<script type="text/javascript" src="gears_init.js"></script>
+
Na to aby sme vytvorili inštanciu triedy ''Factory, ''je potrebné mať nainštalované samotné rozšírenie Google Gears. Existenciu tohto rozšírenia overíme pomocou kontroly globálnych objektov ''window.google'' a ''google.gears''. V&nbsp;skripte ''gears_init.js'' je definovaný objekt ''google.gears.factory''. Metóda ''create'' triedy ''factory'' vytvorí objekt danej triedy s parametrom ''className''. Parameter ''className ''je typ objektu, ktorý sa má vytvoriť. Kompletná špecifikácia je triedy ''Factory'' je v [2].
<script type="text/javascript">
+
 
    if (window.google && google.gears) {
+
Tabuľka 2.1 Opis metód triedy'' Factory''''.''
        var db = google.gears.factory.create('beta.database');
 
    }
 
</script>
 
</source>
 
  
Existenciu rozšírenia overíme pomocou kontroly globálnych objektov ''window.google'' a ''google.gears''. V&nbsp;skripte ''gears_init.js'' sa definuje objekt ''google.gears.factory''. Metóda ''create'' triedy ''factory'' vytvorí objekt danej triedy s parametrom ''className''. Parameter ''className ''značí typ objektu, ktorý sa ma vytvoriť.
+
{|class="prettytable" width="600px"
 +
|bgcolor = "#a3d1e4"|<font color="#000000">Trieda: </font>
 +
|bgcolor = "#a3d1e4"|<font color="#000000">factory</font>
  
{|border="2"  class="prettytable" width="600"
 
|+ Tabuľka 2.1 Popis metód triedy'' Factory''''.'' (Kompletná špecifikácia je v [2])
 
 
|-
 
|-
!Trieda:
+
|bgcolor = "#EAEAEA"|Metóda:  
!factory
+
|bgcolor = "#EAEAEA"|Object''' create(className, <nowiki>[</nowiki>classVersion<nowiki>]</nowiki>)'''
|-
 
|Metóda:  
 
|Object''' create(className, <nowiki>[</nowiki>classVersion<nowiki>]</nowiki>)'''
 
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Vytvára Gears objekt danej triedy<br>
 
|Vytvára Gears objekt danej triedy<br>
  
 
|-
 
|-
 
|Parametre:
 
|Parametre:
|className – typ objektu ktorý sa má vytvoriť<br>classVersion – parameter sa už nepoužíva, prípadne jeho hodnota <nowiki>’</nowiki>1.0<nowiki>’</nowiki>
+
|className – typ objektuktorý sa má vytvoriť<br>classVersion – parameter sa už nepoužíva, prípadne jeho hodnota <nowiki>’</nowiki>1.0<nowiki>’</nowiki>
  
 
|-
 
|-
Riadok 79: Riadok 80:
 
|Podporované hodnoty parametru className:
 
|Podporované hodnoty parametru className:
  
{|border="1" cellspacing="0" cellpadding="4" width="100%"
+
{|class="prettytable" width="600px"
!className
+
|bgcolor = "#EAEAEA"|className
!Vytvorenie Gears triedy
+
|bgcolor = "#EAEAEA"|Vytvorenie Gears triedy
  
 
|-
 
|-
Riadok 123: Riadok 124:
 
|}
 
|}
  
 +
=====LocalServer API=====
 +
Na správu vyrovnávacej pamäti sú dostupné dve triedy:
 +
 +
'''''ResourceStore'' '''– povoľuje zachytávať dáta (obrázky, PDF súbor), ktoré sú adresované s URL.
  
'''LocalServer API'''
+
'''''ManagedResourceStore''''' – zoznam URL odkazov na súbory, ktoré budú dostupné off-line, sú&nbsp;v&nbsp;súbore ''manifest.'' Pomocou tejto triedy môžeme zabezpečiť aplikácii všetky dáta, ktoré bude potrebovať. Výhoda takéhoto riešenia je v automatickej aktualizácií pri zmene súboru ''manifest''. Príklad použitia je v&nbsp;kóde 2.2.
  
Na správu vyrovnávacej pamäti sú dostupné dve triedy:
+
Kód 2.2 Príklad použitia metódy ''createManagedStor''''e''
 +
 
 +
{|border="2" cellspacing="0" cellpadding="4" width="100%"
 +
|<nowiki><</nowiki>script type="text/javascript" src="gears_init.js"<nowiki>><</nowiki>/script<nowiki>></nowiki><br><nowiki><</nowiki>script type="text/javascript"<nowiki>></nowiki><br>    var localServer = google.gears.factory.create(<nowiki>’</nowiki>beta.localserver<nowiki>’</nowiki>);<br>    var store = localServer.createManagedStore(<nowiki>’</nowiki>test-store<nowiki>’</nowiki>);<br>    store.manifestUrl = <nowiki>’</nowiki>manifest.txt<nowiki>’</nowiki>;<br><nowiki><</nowiki>/script<nowiki>></nowiki>
 +
 
 +
|}
  
'''''ResourceStore'' '''– povoľuje dáta (obrázky, PDF súbor), ktoré sú adresované s URL zachytávať pomocou javaskriptu.
+
Odkazy na súbory uvedené v&nbsp;súbore'' manifest'' (Kód 2.3) sa pri synchronizácií skopírujú na&nbsp;lokálny disk.
  
'''''ManagedResourceStore''''' – zoznam URL odkazov je v súbore ''manifest.'' Pomocou tejto triedy môžeme zabezpečiť aplikácií všetky dáta, ktoré potrebuje definovaním v jednom súbore. Výhoda je v automatickej aktualizácií pri zmene ''manifestu''. Príklad použitia (Kód 2.2).
+
Kód 2.3 Výpis súboru ''manifest.tx''''t''
  
Kód 2.2 Príklad použitia metódy ''createManagedStor''''e''
+
{|border="2" cellspacing="0" cellpadding="4" width="100%"
<source lang="html4strict">
+
|<nowiki>{</nowiki><br>    "betaManifestVersion": 1,<br>   "version": "1.0",<br>    "entries": <nowiki>[</nowiki><br>        <nowiki>{</nowiki> "url": "index.html" <nowiki>}</nowiki>,<br>        <nowiki>{</nowiki> "url": "gears_init.js" <nowiki>}</nowiki><br>    <nowiki>]</nowiki><br><nowiki>}</nowiki><br><br>V&nbsp;tabuľke 2.2 je výpis metód triedy ''LocalServer. ''Kompletná špecifikácia je v [3].
<script type="text/javascript" src="gears_init.js"></script>
 
<script type="text/javascript">
 
    var localServer = google.gears.factory.create('beta.localserver');
 
    var store = localServer.createManagedStore('test-store');
 
    store.manifestUrl = 'manifest.txt';
 
</script>
 
</source>
 
  
Odkazy na súbory uvedené v&nbsp;manifeste (Kód 2.3) sa pri synchronizácií skopírujú na lokálny disk.
+
|}
  
Kód 2.3 Výpis súboru ''manifest.txt''
+
Tabuľka 2.2 Metódy triedy ''LocalServer''.  
<source lang="javascript">
 
{
 
    "betaManifestVersion": 1,
 
    "version": "1.0",
 
    "entries": [
 
        { "url": "index.html" },
 
        { "url": "gears_init.js" }
 
    ]
 
}
 
</source>
 
  
{|border="2" cellspacing="0" cellpadding="4" class="prettytable"
+
{|class="prettytable" width="600px"
|+
+
|bgcolor = "#a3d1e4"|<font color="#000000">Trieda: </font>
Tabuľka 2.2 Výpis metód triedy LocalServer. Kompletná špecifikácia je v [3]
+
|bgcolor = "#a3d1e4"|<font color="#000000">LocalServer</font>
|-
 
!Trieda:
 
!LocalServer
 
  
 
|-
 
|-
Riadok 176: Riadok 166:
  
 
|-
 
|-
|Popis:
+
|Opis:
|Otvorí existujúcu  ManagedResourceStore alebo vytvorí novú, ak žiadná taká neexistuje<br>
+
|Otvorí existujúcu  ManagedResourceStore alebo vytvorí novú, ak žiadna taká neexistuje<br>
  
 
|-
 
|-
Riadok 192: Riadok 182:
  
 
|-
 
|-
|Popis:
+
|Opis:
|Otvorí existujúcu  ManagedResourceStore alebo vráti null, ak žiadná taká neexistuje<br>
+
|Otvorí existujúcu  ManagedResourceStore alebo vráti null, ak žiadna taká neexistuje<br>
  
 
|-
 
|-
Riadok 204: Riadok 194:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Odstráni  ManagedResourceStore a&nbsp;odstráni všetky jej URL z&nbsp;lokálnej<br>vyrovnávacej pamäti<br>
 
|Odstráni  ManagedResourceStore a&nbsp;odstráni všetky jej URL z&nbsp;lokálnej<br>vyrovnávacej pamäti<br>
  
Riadok 220: Riadok 210:
  
 
|-
 
|-
|Popis:
+
|Opis:
|Otvorí existujúcu  ResourceStore alebo vytvorí novú, ak žiadná taká neexistuje<br>
+
|Otvorí existujúcu  ResourceStore alebo vytvorí novú, ak žiadna taká neexistuje<br>
  
 
|-
 
|-
Riadok 236: Riadok 226:
  
 
|-
 
|-
|Popis:
+
|Opis:
|Otvorí existujúcu  ResourceStore alebo vráti null, ak žiadná taká neexistuje<br>
+
|Otvorí existujúcu  ResourceStore alebo vráti null, ak žiadna taká neexistuje<br>
  
 
|-
 
|-
Riadok 248: Riadok 238:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Odstráni  ResourceStore a&nbsp;odstráni a&nbsp;celý jeho obsah<br>vyrovnávacej pamäti<br>
 
|Odstráni  ResourceStore a&nbsp;odstráni a&nbsp;celý jeho obsah<br>vyrovnávacej pamäti<br>
  
 
|}
 
|}
  
 +
=====Database API=====
 +
Database API je aplikačné rozhranie pre prácu s&nbsp;lokálnou databázou SQLite[4]. SQLite je&nbsp;knižnica, ktorá implementuje relačnú databázu bez potreby servera.
  
'''Database API'''
+
Kód 2.4 Príklad práce s&nbsp;lokálnou databázou
  
Database API je aplikačné rozhranie pre prácu s&nbsp;lokálnou databázou SQLite.
+
{|border="2" cellspacing="0" cellpadding="4" width="100%"
 +
|<nowiki><</nowiki>script type="text/javascript" src="'''gears_init.js'''"<nowiki>><</nowiki>/script<nowiki>></nowiki><br><nowiki><</nowiki>script type="text/javascript"<nowiki>></nowiki><br>var db = google.gears.factory.create(<nowiki>’</nowiki>beta.database<nowiki>’</nowiki>);<br>db.open(<nowiki>’</nowiki>moja-databaza);<br>db.execute(<nowiki>’</nowiki>create table if not exists Zoznam<nowiki>’</nowiki> <nowiki>+</nowiki><br>          <nowiki>’</nowiki> (Meno text, Vek int)<nowiki>’</nowiki>);<br>db.execute(<nowiki>’</nowiki>insert into Zoznam values (?, ?)<nowiki>’</nowiki>, <nowiki>[’</nowiki>Peter<nowiki>’</nowiki>, <nowiki>’</nowiki>22<nowiki>’]</nowiki>);<br>var rs = db.execute(<nowiki>’</nowiki>select * from Zoznam order by Vek desc<nowiki>’</nowiki>);<br><br>rs.close();<br><nowiki><</nowiki>/script<nowiki>></nowiki><br><br>V&nbsp;kóde 2.2 je ukážka vytvorenia tabuľky v&nbsp;lokálnej databáze. Metóda ''execute'' vykoná SQL dopyt na databázu. Pri ukončení práce s&nbsp;databázou je doporučené použitie metódy ''close''. V&nbsp;tabuľke 2.3 je výpis metód triedy ''Database.'' Kompletná špecifikácia je v [5].
  
Kód 2.4 Príklad práce s&nbsp;lokálnou databázou
+
|}
<source lang="javascript">
 
  <script type="text/javascript" src="gears_init.js"></script>
 
  <script type="text/javascript">
 
      var db = google.gears.factory.create(’beta.database’);
 
      db.open(’moja-databaza);
 
      db.execute(’create table if not exists Zoznam’ + ’ (Meno text, Vek int)’);
 
      db.execute(’insert into Zoznam values (?, ?)’, [’Peter’, ’22’]);
 
      var rs = db.execute(’select * from Zoznam order by Vek desc’);
 
      rs.close();
 
  </script>
 
</source>
 
  
Metóda ''execute'' vykoná požiadavku na databázu. Pri ukončení práce s&nbsp;databázou je doporučené použitie metódy ''close''.
+
Tabuľka 2.3 Opis metód triedy'' Database''''.''  
  
{|border="2" cellspacing="0" cellpadding="4"  class="prettytable"
+
{|class="prettytable" width="600px"
|+Tabuľka 2.3 Popis metód triedy ''Database.'' Kompletná špecifikácia je v [4]
+
|bgcolor = "#a3d1e4"|<font color="#000000">Trieda: </font>
|-
+
|bgcolor = "#a3d1e4"|<font color="#000000">Database</font>
|bgcolor = "#EAEAEA"|<font color="#000000">Trieda: </font>
 
||<font color="#000000">Database</font>
 
  
 
|-
 
|-
Riadok 288: Riadok 268:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Otvorí databázu<br>
 
|Otvorí databázu<br>
  
Riadok 297: Riadok 277:
 
|-
 
|-
 
|Parametre:
 
|Parametre:
|sqlStatement – reťazec obsahujúci SQL príkaz, so znakom <nowiki>’</nowiki>'''?''' <nowiki>’</nowiki>''' '''ako''' '''zástupný symbol  previazaný s parametrami<br>argArray – voliteľné pole parametrov, ktoré nahradia symboly <nowiki>’</nowiki>'''?''' <nowiki>’</nowiki>
+
|sqlStatement – reťazec obsahujúci SQL príkaz, so znakom <nowiki>’</nowiki>'''?''' <nowiki>’</nowiki>''' '''ako''' '''zástupný symbol  previazaný s parametrami<br>argArray – voliteľné pole parametrov, ktoré nahradia symboly <nowiki>’</nowiki>'''?''' <nowiki>’</nowiki>
  
 
|-
 
|-
Riadok 304: Riadok 284:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Vykoná SQL príkazy.   
 
|Vykoná SQL príkazy.   
  
Riadok 312: Riadok 292:
  
 
|-
 
|-
|Popis:
+
|Opis:
|Ukončí spojenie s&nbsp;databázou. Volanie Database.close()  nie je potrebné<br>
+
|Ukončí spojenie s&nbsp;databázou. Volanie database.close()  nie je potrebné<br>
  
 
|-
 
|-
Riadok 320: Riadok 300:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Zmaže práve otvorenú databázu.<br>
 
|Zmaže práve otvorenú databázu.<br>
  
Riadok 327: Riadok 307:
 
Metóda ''database.execute ''po úspešnom volaní vráti objekt triedy ''ResultSet.'' Obsahuje výsledky vykonaných SQL príkazov.
 
Metóda ''database.execute ''po úspešnom volaní vráti objekt triedy ''ResultSet.'' Obsahuje výsledky vykonaných SQL príkazov.
  
{|border="2" cellspacing="0" cellpadding="4"  class="prettytable"
+
Tabuľka 2.4 Opis metód triedy'' ResultSe''''t''
|+Tabuľka 2.4 Popis metód triedy ''ResultSet''
+
 
|-
+
{|class="prettytable" width="600px"
||<font color="#000000">Trieda: </font>
+
|bgcolor = "#a3d1e4"|<font color="#000000">Trieda: </font>
||<font color="#000000">ResultSet</font>
+
|bgcolor = "#a3d1e4"|<font color="#000000">ResultSet</font>
  
 
|-
 
|-
Riadok 338: Riadok 318:
  
 
|-
 
|-
|Popis:
+
|Opis:
|Vráti true ak môžete volať metódy na extrakciu dát<br>
+
|Vráti true, ak môžete volať metódy na extrakciu dát<br>
  
 
|-
 
|-
Riadok 346: Riadok 326:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Pokračuje na ďalší riadok výsledkov   
 
|Pokračuje na ďalší riadok výsledkov   
  
Riadok 354: Riadok 334:
  
 
|-
 
|-
|Popis:
+
|Opis:
|Je potrebné zavolať metodu close() ak sme skončili s&nbsp;prácou s výsledkami<br>
+
|Je potrebné zavolať metodu close(), ak sme skončili s&nbsp;prácou s výsledkami<br>
  
 
|}
 
|}
  
{|border="2" cellspacing="0" cellpadding="4"  class="prettytable"
+
Tabuľka 2.5 Opis metód na extrakciu dát
|+Tabuľka 2.5 Popis metód na extrakciu dát
+
 
|-
+
{|class="prettytable" width="600px"
| <font color="#000000">colspan = "2"|'''Metódy na extrakciu dát'''<br>ResultSet</font>
+
|bgcolor = "#a3d1e4" <font color="#000000">colspan = "2"|'''Metódy na extrakciu dát'''</font>
  
 
|-
 
|-
Riadok 369: Riadok 349:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Vráti počet polí výsledku<br>
 
|Vráti počet polí výsledku<br>
  
Riadok 381: Riadok 361:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Vráti meno špecifikovaného pola.
 
|Vráti meno špecifikovaného pola.
  
Riadok 389: Riadok 369:
  
 
|-
 
|-
||Parametre:
+
|Parametre:
||fieldIndex – index požadovaného pola
+
|fieldIndex – index požadovaného pola
  
 
|-
 
|-
Riadok 397: Riadok 377:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Vráti obsah špecifikovaného pola v aktuálnom riadku
 
|Vráti obsah špecifikovaného pola v aktuálnom riadku
  
 
|-
 
|-
||Metóda:  
+
|bgcolor = "#EAEAEA"|Metóda:  
||'''fieldByName(string fieldName)'''
+
|bgcolor = "#EAEAEA"|'''fieldByName(string fieldName)'''
  
 
|-
 
|-
Riadok 413: Riadok 393:
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Vráti obsah špecifikovaného pola v aktuálnom riadku
 
|Vráti obsah špecifikovaného pola v aktuálnom riadku
  
Riadok 419: Riadok 399:
  
  
'''WorkerPool API'''
+
=====WorkerPool API=====
 +
Aplikačné rozhranie, ktoré umožňuje spracovávať javaskriptový kód na pozadí. Vďaka tomu neblokuje vykonávanie ďalších skriptov. Kompletná špecifikácia v [6].
  
Aplikačné rozhranie, ktoré umožňuje spracovávať javaskriptový kód na pozadí. Vďaka tomu neblokuje vykonávanie ďalších skriptov. Kompletná špecifikácia v [5].
+
=====Blob API=====
 +
Pomocou objektov typu ''Blob ''môžeme odkazovať na binárne dáta vo webových aplikáciách. Kompletná špecifikácia v [7].
  
 +
=====BlobBuilder API=====
 +
''BlobBuilder'' je pomocný objekt pre vytváranie objektov typu ''Blob.  Blob ''je nemenný, read-only object, rovnaký ako reťazec v&nbsp;Javascripte. ''BlobBuilder'' je používaný na&nbsp;generovanie ''Blobu'' s&nbsp;novým obsahom. Kompletná špecifikácia v [8].
  
'''Blob API'''
+
=====Canvas API=====
 +
Prostredníctvom tejto API môžeme pracovať s&nbsp;obrázkami pomocou javaskriptu. Táto grafická API je inšpirovaná HTML5 canvasom. Obsahuje metódy na rozkódovanie a zakódovanie do&nbsp;binárnych formátov (napr. PNG, JPEG). Kompletná špecifikácia v [9].
  
Pomocou objektov typu ''Blob ''môžeme odkazovať na binárne dáta vo webových aplikáciách. Kompletná špecifikácia v [6].
+
=====Desktop API=====
 +
Desktop API poskytuje rozhranie pre prístup k desktopovým funkciám, ako je vytváranie ikon. V&nbsp;kóde 2.5 je zobrazená funkcia ''createShortcut'', ktorá vytvorí ikony na ploche a paneli nástrojov.
  
 +
Kód 2.5 Ukážka práce s&nbsp;Desktop API
  
'''BlobBuilder API'''
+
{|border="2" cellspacing="0" cellpadding="4" width="100%"
 +
|var desktop = google.gears.factory.create(<nowiki>’</nowiki>beta.desktop<nowiki>’</nowiki>);<br>function createShortcut() <nowiki>{</nowiki><br>      var desktop = google.gears.factory.create("beta.desktop");<br>      var description = "Vytvorenie ikonky ROZVRHU.";<br>      var icons = <nowiki>{</nowiki><br>          "16x16": "16icon.png"<br>          "32x32": "32icon.png",<br>          "48x48": "48icon.png",<br>          "128x128": "128icon.png"<br>      <nowiki>}</nowiki>;<br>      desktop.createShortcut("Rozvrh Fakulty Mechatroniky",<br>          " http://priklad.sk/index.html",<br>            icons,<br>            description);<br><nowiki>}</nowiki>
  
BlobBuilder je pomocný objekt pre vytváranie objektov typu Blob.  Blob je nemenný, read-only object, rovnaký ako reťazec v&nbsp;Javascripte. BlobBuilder je používaný na generovanie Blobu s&nbsp;novým obsahom. Kompletná špecifikácia v [7].
+
|}
  
'''Canvas API'''
+
V&nbsp;tabuľke 2.6 je výpis metód triedy ''Desktop.'' Kompletná špecifikácia v [10].
  
Prostredníctvom tejto API môžeme pracovať s&nbsp;obrázkami pomocou javaskriptu. Táto grafická API je inšpirovaná HTML5 canvasom. Obsahuje metódy na rozkódovanie a zakódovanie do binárnych formátov (napr. PNG, JPEG). Kompletná špecifikácia v [8].
+
Tabuľka 2.6 Opis metód triedy ''Desktop''
  
 +
{|class="prettytable" width="600px"
 +
|bgcolor = "#a3d1e4"|<font color="#000000">Trieda: </font>
 +
|bgcolor = "#a3d1e4"|<font color="#000000">Desktop</font>
  
'''Desktop API'''
+
|-
 +
|bgcolor = "#EAEAEA"|'''Metóda: '''
 +
|bgcolor = "#EAEAEA"|createShortcut(name, url, icons, <nowiki>[</nowiki>description<nowiki>]</nowiki>)
  
Desktop API poskytuje rozhranie pre prístup k desktopovým funkciám, ako je vytváranie ikon. Kompletná špecifikácia v [9].
+
|-
 
+
|Parametre:
Kód 2.5 Ukážka práce s&nbsp;Desktop API
+
|name - meno odkazu<br>url - adresa dokumentu,  ktorý sa má otvoriť<br>icons – Objekt obsahujúci jednu alebo viac hodnôt v tvare:<br>rozmer : URL ikony<br>Napr.'' <nowiki>’</nowiki>128x128<nowiki>’</nowiki>: <nowiki>’</nowiki>http://priklad. sk/icon128x128.png<nowiki>’</nowiki>''<br>descriptions – nepovinný parameter. Text sa zobrazí v potvrdzovacom dialógu.<br><br> <br>
<source lang="javascript">
 
  var desktop = google.gears.factory.create(’beta.desktop’);
 
  function createShortcut() {
 
      var desktop = google.gears.factory.create("beta.desktop");
 
      var description = "Vytvorenie ikonky ROZVRHU.";
 
      var icons = {
 
        "16x16": "16icon.png"
 
        "32x32": "32icon.png",
 
        "48x48": "48icon.png",
 
        "128x128": "128icon.png"
 
      };
 
      desktop.createShortcut("Rozvrh Fakulty Mechatroniky","http://priklad.sk/index.html", icons, description);
 
}
 
</source>
 
  
{| class=wikitable
 
|+Tabuľka 2.6 Popis metód triedy ''Desktop ''
 
|-
 
!Trieda:
 
|Desktop
 
|-
 
!Metóda:
 
|createShortcut(name, url, icons, <nowiki>[</nowiki>description<nowiki>]</nowiki>)
 
 
|-
 
|-
!Parametre:
+
|Opis:
|name - meno odkazu<br>url - adresa dokumentu, ktorý sa má otvoriť<br>icons – Objekt obsahujúci jednu alebo viac hodnôt v tvare:<br>'''''rozmer : URL ikony'''.''<br>Napr.'' <nowiki>’</nowiki>128x128<nowiki>’</nowiki>: <nowiki>’</nowiki>http://priklad. sk/icon128x128.png<nowiki>’</nowiki>''<br>descriptions – nepovinný parameter. Text sa zobrazí v potvrdzovacom dialógu.<br><br> <br>
+
|Vytvorí desktopový odkaz na spustenie aplikácie<br>
|-
 
!Popis:
 
|Vytvorí desktopový odkaz na spustenie aplikácie
 
|}
 
 
 
 
 
'''Geolocation API'''
 
 
 
Geolocation API umožňuje webovej aplikácie získať užívateľa geografickú polohu. Kompletnú špecifikáciu nájdete v [10].
 
 
 
  
'''HttpRequest API'''
+
|}<br clear="all">
  
HttpRequest API implementuje podskupinu XmlHttpRequest W3C špecifikácie. Gears poskytuje vlastný HttpRequest objekt. Obsahuje väčšinu vlastností. Kompletnú špecifikáciu nájdete v [11].
+
=====Geolocation API=====
 +
Geolocation API umožňuje webovej aplikácii získať používateľa geografickú polohu. Kompletnú špecifikáciu nájdete v [11].
  
'''Timer API'''
+
=====HttpRequest API=====
 +
HttpRequest API implementuje podskupinu XmlHttpRequest W3C špecifikácie. Gears poskytuje vlastný HttpRequest objekt. Obsahuje väčšinu vlastností. Kompletnú špecifikáciu nájdete v [12].
  
Obsahuje metódy, ktoré umožnia nastaviť vykonanie skriptov s&nbsp;časovým oneskorením a&nbsp;podobne. Kompletnú špecifikáciu nájdete v [12].
+
=====Timer API=====
 +
Obsahuje metódy, ktoré umožnia nastaviť vykonanie skriptov s&nbsp;časovým oneskorením a&nbsp;podobne. Kompletnú špecifikáciu nájdete v [13].
  
===Podpora===
+
====Podpora Google Gears v&nbsp;operačných systémoch a prehliadačoch====
Funkčnosť Google Gears je overená na nasledujúcich platformách a prehliadačoch:
+
Funkčnosť Google Gears je overená na nasledujúcich platformách a&nbsp;prehliadačoch [14]:
  
 
* Apple Mac OS X (10.4 alebo vyššia, G4, G5 or Intel Processor)
 
* Apple Mac OS X (10.4 alebo vyššia, G4, G5 or Intel Processor)
Riadok 508: Riadok 472:
 
* Motorola Q
 
* Motorola Q
 
* Android 1.0
 
* Android 1.0
===Umiestnenie dát na disku===
+
====Umiestnenie dát na disku====
 
Umiestnenie dát webovej aplikácie na disku záleží na platforme a&nbsp;internetovom prehliadači.
 
Umiestnenie dát webovej aplikácie na disku záleží na platforme a&nbsp;internetovom prehliadači.
  
Riadok 531: Riadok 495:
 
Umiestnenie: <nowiki>~</nowiki>''bob''/.mozilla/firefox/<nowiki><</nowiki>firefox<nowiki>’</nowiki>s profile id<nowiki>></nowiki>/Google Gears for Firefox <br>Príklad: <nowiki>~</nowiki>bob/.mozilla/firefox/08ywpi3q.default/Google Gears for Firefox
 
Umiestnenie: <nowiki>~</nowiki>''bob''/.mozilla/firefox/<nowiki><</nowiki>firefox<nowiki>’</nowiki>s profile id<nowiki>></nowiki>/Google Gears for Firefox <br>Príklad: <nowiki>~</nowiki>bob/.mozilla/firefox/08ywpi3q.default/Google Gears for Firefox
  
===Využitie Google Gears===
+
====Využitie Google Gears====
 
+
Ako prvá začala Google Gears využívať firma Google vo svojej čítačke kanálov Google Reader. V&nbsp;režime off-line umožňuje prehliadať až 2000 príspevkov. Postupne sa podpora pre&nbsp;toto rozšírenie pridala aj do mailovej služby Gmail a on-line kancelárskeho balíka Google Docs.
Ako prvá začala Google Gears využívať firma Google vo svojej čítačke kanálov Google Reader. V&nbsp;režime off-line umožňuje prehliadať až 2000 príspevkov. Postupne sa podpora pre toto rozšírenie pridala aj do mailovej služby Gmail a on-line kancelárskeho balíka Google Docs.
 
  
 
Ďalšie webové služby využívajúce Google Gears:
 
Ďalšie webové služby využívajúce Google Gears:
Riadok 542: Riadok 505:
 
* nástroj pre riadenie projektov''' mindmeister.com,'''
 
* nástroj pre riadenie projektov''' mindmeister.com,'''
 
* open-source redakčný systém '''wordpress.net''' a ďalší.
 
* open-source redakčný systém '''wordpress.net''' a ďalší.
 +
===HTML5===
  
==HTML 5==
+
HTML5 [15] je najnovšia špecifikácia značkovacieho jazyka HTML vyvíjaná medzinárodným združením W3C (World Wide Web Consortium). Najdôležitejšou zmenou v&nbsp;novej verzií je samotná&nbsp;štruktúra&nbsp;HTML dokumentu, veľké množstvo nových elementov a&nbsp;aj podpora off-line web aplikácií. Pretože Google sa snaží dodržiavať štandardy, zastavil vývoj Google Gears a&nbsp;svoju iniciatívu smeruje na HTML5. Je možné, že podpora off-line aplikácií bude mať v novej špecifikácií aj niektoré rysy, ktoré poznáme z Google Gears. V&nbsp;súčasnosti je stále HTML 5 vo&nbsp;fáze vývoja. Dokončenie je plánované na rok 2012. Niekoľko rokov však potrvá jeho úplná podpora vo väčšine prehliadačoch. Prehliadače ako napríklad Firefox podporujú už väčšiu časť nových prvkov HTML5. V&nbsp;našom prehľade sú&nbsp;zaujímavé SQL API a&nbsp;Cache API, ktoré majú poskytovať rovnakú funkcionalitu ako Google Gears.
HTML5 [13] je najnovšia špecifikácia značkovacieho jazyka HTML vyvíjaná medzinárodným združením W3C (World Wide Web Consortium). Najdôležitejšou zmenou v&nbsp;novej verzií je samotná&nbsp;štruktúra&nbsp;HTML dokumentu, veľké množstvo nových elementov a&nbsp;aj podpora off-line web aplikácií. Pretože Google sa snaží dodržiavať štandardy, zastavil vývoj Google Gears a&nbsp;svoju iniciatívu smeruje na HTML5. Je možné, že podpora off-line aplikácií bude mať v novej špecifikácií aj niektoré rysy, ktoré poznáme z Google Gears. V súčasnosti je stále HTML 5 vo&nbsp;fáze vývoja. Dokončenie je plánované na rok 2012. Niekoľko rokov však potrvá jeho úplná podpora vo väčšine prehliadačoch. Prehliadače ako napríklad Firefox podporujú už väčšiu časť nových prvkov HTML5.
 
  
===Elementy štruktúry===
+
====Elementy štruktúry====
Doposiaľ bola štruktúra HTML dokumentu tvorená z&nbsp;''div ''elementov. HTML5 pridáva nové elementy k&nbsp;identifikácií každého z&nbsp;nich. Tieto majú presne stanovený sémantický význam a lepšie sa v nich orientuje aj samotný programátor.
+
Doposiaľ bola štruktúra HTML dokumentu tvorená z&nbsp;''div ''elementov. HTML5 pridáva nové elementy k&nbsp;identifikácií každého z&nbsp;nich. Tieto majú presne stanovený sémantický význam a&nbsp;lepšie sa v nich orientuje aj samotný programátor.
  
Tabuľka 3.1 Zoznam nových sémantických elementov štruktúry HTML5
+
Tabuľka 2.7 Zoznam nových sémantických elementov štruktúry HTML5
  
{|border="2" cellspacing="0" cellpadding="4" width="600px" class="prettytable"
+
{|class="prettytable" width="600px"
 
|section
 
|section
|Všeobecná (často nadradená) časť, ktorá môže združovať ostatné časti stránky. Element DIV, ktorý dostal sémantické meno.
+
|Všeobecná (často nadradená) časť, ktorá môže združovať ostatné časti stránky. Element DIV, ktorý dostal sémantické meno.
  
 
|-
 
|-
Riadok 565: Riadok 528:
 
|-
 
|-
 
|nav
 
|nav
|Časť stránky, ktorá obsahuje odkazy na ostatné stránky alebo časti danej stránky.
+
|Časť stránky, ktorá obsahuje odkazy na ostatné stránky alebo časti danej stránky.
  
 
|-
 
|-
 
|article
 
|article
|&nbsp;Časť stránky, ktorá obsahuje text nezávislý od ostatných dielov stránky.
+
|Časť stránky, ktorá obsahuje text nezávislý od ostatných dielov stránky.
  
 
|}
 
|}
  
===Elementy multimédií===
+
====Elementy multimédií====
Zaujímavých zmien sa dočkala aj podpora multimédií (zvuk, video). Tieto na webe neskutočne rýchlo rozšírili (hlavne jednoduchým šírením pomocou stránok youtube.com a&nbsp;podobne). Preto sú v&nbsp;novej verzií HTML5 prístupné tagy&nbsp;''<nowiki><</nowiki>video<nowiki>></nowiki>''&nbsp;a ''<nowiki><</nowiki>audio<nowiki>></nowiki>.''
+
Zaujímavých zmien sa dočkala aj podpora multimédií (zvuk, video). Tieto sa na webe neskutočne rýchlo rozšírili (hlavne jednoduchým šírením pomocou stránok youtube.com a&nbsp;podobne). Preto sú v&nbsp;novej verzií HTML5 prístupné tagy&nbsp;''<nowiki><</nowiki>video<nowiki>></nowiki>''&nbsp;a ''<nowiki><</nowiki>audio<nowiki>></nowiki>.''
  
Element ''<nowiki><</nowiki>canvas<nowiki>></nowiki>'' reprezentuje 2D kresliacu plochu ovládanú javaskriptom, ktorú môžete využívať napr. na kreslenie grafov, grafických prvkov v hrách a prezentáciách.
+
Element ''<nowiki><</nowiki>canvas<nowiki>></nowiki>'' reprezentuje 2D kresliacu plochu ovládanú javaskriptom, ktorú môžete využívať, napr. na kreslenie grafov, grafických prvkov v hrách a prezentáciách.
  
===Inline elementy===
+
====Inline elementy====
 
HTML5 zavádza nové elementy, ktoré majú pomôcť uviesť základné prvky, ako je čas alebo čísla.
 
HTML5 zavádza nové elementy, ktoré majú pomôcť uviesť základné prvky, ako je čas alebo čísla.
  
Tabuľka 3.2 Zoznam nových inline elementov HTML5
+
Tabuľka 2.8 Zoznam nových inline elementov HTML5
  
{|border="2" cellspacing="0" cellpadding="4" width="600px" class="prettytable"
+
{|class="prettytable" width="600px"
 
|mark
 
|mark
 
|Označenie textu.&nbsp;Slúži napríklad na označenie hľadaného slová v zozname výsledkov
 
|Označenie textu.&nbsp;Slúži napríklad na označenie hľadaného slová v zozname výsledkov
Riadok 589: Riadok 552:
 
|-
 
|-
 
|time
 
|time
|Označuje čas, alebo dátum v bloku textu.
+
|Označuje čas alebo dátum v bloku textu.
  
 
|-
 
|-
Riadok 601: Riadok 564:
 
|}
 
|}
  
===Podpora režimu off-line===
+
====Podpora režimu off-line====
S novou špecifikáciou jazyka HTML 5 prichádza aj podpora off-line aplikácií. K&nbsp;dispozícií máme SQL API a&nbsp;Caching APIs, ktorá je obdobou LocalServer API.
+
S novou špecifikáciou jazyka HTML 5 prichádza aj podpora off-line aplikácií. K&nbsp;dispozícií máme SQL API a&nbsp;Cache API, ktorá je obdobou LocalServer API.
  
====SQL API====
+
=====SQL API=====
SQL databáza na strane klienta umožní štruktúrované dátové úložisko. API pracuje s&nbsp;touto databázou asynchrónne. To znamená, že užívateľské prostredie nebude blokované vykonávaním synchrónneho požiadavku.
+
SQL databáza na strane klienta umožní štruktúrované dátové úložisko. API pracuje s&nbsp;touto databázou asynchrónne. To znamená, že používateľské prostredie nebude blokované vykonávaním synchrónneho požiadavku.
  
Tabuľka 3.3 Zoznam metód návrhu HTML5
+
Tabuľka 2.9 Zoznam metód návrhu HTML5
  
{|width="600px" class="prettytable"
+
{|class="prettytable" width="600px"
 
|bgcolor = "#EAEAEA"|Metóda:  
 
|bgcolor = "#EAEAEA"|Metóda:  
 
|bgcolor = "#EAEAEA"|Object openDatabase(dbname, dbversion, displayname, size)
 
|bgcolor = "#EAEAEA"|Object openDatabase(dbname, dbversion, displayname, size)
  
 
|-
 
|-
|Popis:
+
|Opis:
 
|Vytvára databázový objekt podľa zvolených parametrov<br>
 
|Vytvára databázový objekt podľa zvolených parametrov<br>
  
Riadok 627: Riadok 590:
 
|}
 
|}
  
====LocalStorage API====
+
=====LocalStorage API=====
 
Dáta na lokálnom disku bude reprezentovať objekt ''localStorage.''
 
Dáta na lokálnom disku bude reprezentovať objekt ''localStorage.''
  
Tabuľka 3.4 Zoznám niektorých metód pre prácu s&nbsp;lokálnym úložiskom
+
Tabuľka 2.10 Zoznam niektorých metód pre prácu s&nbsp;lokálnym úložiskom
  
{|border="2" cellspacing="0" cellpadding="4" width="600px" class="prettytable"
+
{|class="prettytable" width="600px"
 
|bgcolor = "#EAEAEA"|Metóda:  
 
|bgcolor = "#EAEAEA"|Metóda:  
|bgcolor = "#EAEAEA"|Popis
+
|bgcolor = "#EAEAEA"|Opis
  
 
|-
 
|-
Riadok 650: Riadok 613:
 
|-
 
|-
 
|length
 
|length
|Počet uložených kľučov
+
|Počet uložených kľúčov
  
 
|-
 
|-
Riadok 661: Riadok 624:
  
 
|}
 
|}
 
Podpora off-line aplikácií je zatiaľ vo fáze vývoja. Preto je podpora v&nbsp;prehliadačoch zatiaľ len minimálna.
 

Verzia zo dňa a času 13:55, 5. september 2010

Tnu wiki.png
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky
Fm wiki.png
Technológie off-line web aplikácií

Semetrálna práca


Autor:
Pedagogický vedúci: Ing. Juraj Ďuďák
Študijný odbor: Mechatronika
Akademický rok

2009/2010

Technológie off-line web aplikácií

V súčasnosti je dostupných niekoľko technológií, ktoré podporujú off-line aplikácie:

  • Google Gears
  • HTML5

Nová špecifikácia HTML5 je zatiaľ vo vývoji a má byť dokončená v roku 2012. Niektoré jej možnosti sú už dnes podporované vo väčšine prehliadačoch.

Google Gears

Google Gears [1] je open-source projekt of firmy Google. Pridaním nových funkcií do prehliadača dokáže sprístupniť webovú aplikáciu aj v režime off-line. Používateľovi stačí nainštalovať rozšírenie (Obr. 2.1) do svojho prehliadača a následne povoliť (Obr. 2.2) prístup konkrétnej webovej lokalite pre použitie tohto rozšírenia.

Bakalarka dušan pagáč 2 2 FINAL 07.png

Obr 2.1 Zobrazenie rozšírenia Google Gears v správe rozšírení prehliadača Firefox

Bakalarka dušan pagáč 2 2 FINAL 08.png

Obr 2.2 Povolenia rozšírenia pre webovú lokalitu (localhost)

Moduly Google Gears

S rozšírením Google Gears získame tri nezávislé moduly: lokálny server, databáza, spracovanie kódu na pozadí. Každý z nich vylepšuje nejaký aspekt programovania webovej aplikácie na strane klienta prostredníctvom konkrétneho modulu.

Lokálny server

Modul lokálny server (LocalServer) umožňuje aplikácii uložiť a používať jeho HTTP zdroje lokálne bez pripojenia k sieti. Je to špecializovaná vyrovnávacia pamäť. Požiadavky na URL vo vyrovnávacej pamäti lokálneho servera sú zachytené a obslúžené lokálne priamo z disku používateľa.

Databáza

Databázový modul (Database) poskytuje open-source databázový systém SQLite. Databázové API slúži k neustálemu ukladaniu používateľských dát. Pre dáta uložené v lokálnej databáze je definovaná bezpečnostná politika, ktorá web aplikácii nedovolí prístup mimo jej domény.

Spracovanie kódu na pozadí

Skript časovo náročný na spracovanie, ako napríklad zložitý výpočet, môže spôsobiť, že používateľské prostredie nereaguje. Technika spracovania kódu na pozadí (WorkerPool API) dovoľuje web aplikácii spustiť javaskriptový kód na pozadí bez blokovania vykonávania ostatných skriptov na stránke.

Google Gears API

S modulmi Google Gears API pracujeme pomocou metód aplikačného rozhrania. Pre prístup k nim musíme do aplikácie zahrnúť súbor gears_init.js, ktorý sa nachádza na adrese http://code.google.com/intl/sk/apis/gears/gears_init.js. V nasledujúcom texte budú opísané všetky moduly Google Gears API.

Factory API

Trieda Factory je použitá na vytvorenie inštancií všetkých Gears objektov. Vytvorenie tejto inštancie (Kód 2.1) je povinné.

Kód 2.1 Volanie metódy create' triedy factory

<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
if (window.google && google.gears) {
var db = google.gears.factory.create(’beta.database’);
}
</script>

Na to aby sme vytvorili inštanciu triedy Factory, je potrebné mať nainštalované samotné rozšírenie Google Gears. Existenciu tohto rozšírenia overíme pomocou kontroly globálnych objektov window.google a google.gears. V skripte gears_init.js je definovaný objekt google.gears.factory. Metóda create triedy factory vytvorí objekt danej triedy s parametrom className. Parameter className je typ objektu, ktorý sa má vytvoriť. Kompletná špecifikácia je triedy Factory je v [2].

Tabuľka 2.1 Opis metód triedy Factory'.

Trieda: factory
Metóda: Object create(className, [classVersion])
Opis: Vytvára Gears objekt danej triedy
Parametre: className – typ objektu, ktorý sa má vytvoriť
classVersion – parameter sa už nepoužíva, prípadne jeho hodnota ’1.0’
Detaily: Podporované hodnoty parametru className:
className Vytvorenie Gears triedy
beta.blobbuilder BlobBuilder
beta.canvas Canvas
beta.database Database
beta.desktop Desktop
beta.geolocation Geolocation
beta.httprequest HttpRequest
beta.localserver LocalServer
beta.timer Timer
beta.workerpool WorkerPool
LocalServer API

Na správu vyrovnávacej pamäti sú dostupné dve triedy:

ResourceStore – povoľuje zachytávať dáta (obrázky, PDF súbor), ktoré sú adresované s URL.

ManagedResourceStore – zoznam URL odkazov na súbory, ktoré budú dostupné off-line, sú v súbore manifest. Pomocou tejto triedy môžeme zabezpečiť aplikácii všetky dáta, ktoré bude potrebovať. Výhoda takéhoto riešenia je v automatickej aktualizácií pri zmene súboru manifest. Príklad použitia je v kóde 2.2.

Kód 2.2 Príklad použitia metódy createManagedStor'e

<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var localServer = google.gears.factory.create(’beta.localserver’);
var store = localServer.createManagedStore(’test-store’);
store.manifestUrl = ’manifest.txt’;
</script>

Odkazy na súbory uvedené v súbore manifest (Kód 2.3) sa pri synchronizácií skopírujú na lokálny disk.

Kód 2.3 Výpis súboru manifest.tx't

{
"betaManifestVersion": 1,
"version": "1.0",
"entries": [
{ "url": "index.html" },
{ "url": "gears_init.js" }
]
}

V tabuľke 2.2 je výpis metód triedy LocalServer. Kompletná špecifikácia je v [3].

Tabuľka 2.2 Metódy triedy LocalServer.

Trieda: LocalServer
Metóda: createManagedStore(string name, [string requiredCookie])
Parametre: name – reťazec identifikujúci úložný priestor
requiredCookie – nepovinný parameter identifikujúci jedinečnosť úložného priestoru
Návratová hodnota: ManagedResourceStore
Opis: Otvorí existujúcu ManagedResourceStore alebo vytvorí novú, ak žiadna taká neexistuje
Metóda: openManagedStore(string name, [string requiredCookie])
Parametre: name – reťazec identifikujúci úložný priestor
requiredCookie – nepovinný parameter identifikujúci jedinečnosť úložného priestoru
Návratová hodnota: ManagedResourceStore
Opis: Otvorí existujúcu ManagedResourceStore alebo vráti null, ak žiadna taká neexistuje
Metóda: void removeManagedStore(string name, [string requiredCookie])
Parametre: name – reťazec identifikujúci úložný priestor
[requiredCookie]
Opis: Odstráni ManagedResourceStore a odstráni všetky jej URL z lokálnej
vyrovnávacej pamäti
Metóda: createStore(string name, [string requiredCookie])
Parametre: name – reťazec identifikujúci úložný priestor
[requiredCookie]
Návratová hodnota: ResourceStore
Opis: Otvorí existujúcu ResourceStore alebo vytvorí novú, ak žiadna taká neexistuje
Metóda: openStore(string name, [string requiredCookie])
Parametre: name – reťazec identifikujúci úložný priestor
requiredCookie – nepovinný parameter identifikujúci jedinečnosť úložného priestoru
Návratová hodnota: ResourceStore
Opis: Otvorí existujúcu ResourceStore alebo vráti null, ak žiadna taká neexistuje
Metóda: void removeStore(string name, [string requiredCookie])
Parametre: name – reťazec identifikujúci úložný priestor
requiredCookie – nepovinný parameter identifikujúci jedinečnosť úložného priestoru
Opis: Odstráni ResourceStore a odstráni a celý jeho obsah
vyrovnávacej pamäti
Database API

Database API je aplikačné rozhranie pre prácu s lokálnou databázou SQLite[4]. SQLite je knižnica, ktorá implementuje relačnú databázu bez potreby servera.

Kód 2.4 Príklad práce s lokálnou databázou

<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var db = google.gears.factory.create(’beta.database’);
db.open(’moja-databaza);
db.execute(’create table if not exists Zoznam’ +
’ (Meno text, Vek int)’);
db.execute(’insert into Zoznam values (?, ?)’, [’Peter’, ’22’]);
var rs = db.execute(’select * from Zoznam order by Vek desc’);

rs.close();
</script>

V kóde 2.2 je ukážka vytvorenia tabuľky v lokálnej databáze. Metóda execute vykoná SQL dopyt na databázu. Pri ukončení práce s databázou je doporučené použitie metódy close. V tabuľke 2.3 je výpis metód triedy Database. Kompletná špecifikácia je v [5].

Tabuľka 2.3 Opis metód triedy Database'.

Trieda: Database
Metóda: void open([name])
Parametre: name – voliteľný
Opis: Otvorí databázu
Metóda: execute(sqlStatement, [argArray])
Parametre: sqlStatement – reťazec obsahujúci SQL príkaz, so znakom ’? ako zástupný symbol previazaný s parametrami
argArray – voliteľné pole parametrov, ktoré nahradia symboly ’?
Návratová hodnota: ResultSet
Opis: Vykoná SQL príkazy.
Metóda: void close()
Opis: Ukončí spojenie s databázou. Volanie database.close() nie je potrebné
Metóda: void remove()
Opis: Zmaže práve otvorenú databázu.

Metóda database.execute po úspešnom volaní vráti objekt triedy ResultSet. Obsahuje výsledky vykonaných SQL príkazov.

Tabuľka 2.4 Opis metód triedy ResultSe't

Trieda: ResultSet
Metóda: boolean isValidRow()
Opis: Vráti true, ak môžete volať metódy na extrakciu dát
Metóda: void next()
Opis: Pokračuje na ďalší riadok výsledkov
Metóda: void close()
Opis: Je potrebné zavolať metodu close(), ak sme skončili s prácou s výsledkami

Tabuľka 2.5 Opis metód na extrakciu dát

Metódy na extrakciu dát
Metóda: Int fieldCount()
Opis: Vráti počet polí výsledku
Metóda: string fieldName(int fieldIndex)
Parametre: fieldIndex – index požadovaného pola
Opis: Vráti meno špecifikovaného pola.
Metóda: field(int fieldIndex)
Parametre: fieldIndex – index požadovaného pola
Návratová hodnota: rôzne
Opis: Vráti obsah špecifikovaného pola v aktuálnom riadku
Metóda: fieldByName(string fieldName)
Parametre: fieldName – názov požadovaného pola
Návratová hodnota: rôzne
Opis: Vráti obsah špecifikovaného pola v aktuálnom riadku


WorkerPool API

Aplikačné rozhranie, ktoré umožňuje spracovávať javaskriptový kód na pozadí. Vďaka tomu neblokuje vykonávanie ďalších skriptov. Kompletná špecifikácia v [6].

Blob API

Pomocou objektov typu Blob môžeme odkazovať na binárne dáta vo webových aplikáciách. Kompletná špecifikácia v [7].

BlobBuilder API

BlobBuilder je pomocný objekt pre vytváranie objektov typu Blob. Blob je nemenný, read-only object, rovnaký ako reťazec v Javascripte. BlobBuilder je používaný na generovanie Blobu s novým obsahom. Kompletná špecifikácia v [8].

Canvas API

Prostredníctvom tejto API môžeme pracovať s obrázkami pomocou javaskriptu. Táto grafická API je inšpirovaná HTML5 canvasom. Obsahuje metódy na rozkódovanie a zakódovanie do binárnych formátov (napr. PNG, JPEG). Kompletná špecifikácia v [9].

Desktop API

Desktop API poskytuje rozhranie pre prístup k desktopovým funkciám, ako je vytváranie ikon. V kóde 2.5 je zobrazená funkcia createShortcut, ktorá vytvorí ikony na ploche a paneli nástrojov.

Kód 2.5 Ukážka práce s Desktop API

var desktop = google.gears.factory.create(’beta.desktop’);
function createShortcut() {
var desktop = google.gears.factory.create("beta.desktop");
var description = "Vytvorenie ikonky ROZVRHU.";
var icons = {
"16x16": "16icon.png"
"32x32": "32icon.png",
"48x48": "48icon.png",
"128x128": "128icon.png"
};
desktop.createShortcut("Rozvrh Fakulty Mechatroniky",
" http://priklad.sk/index.html",
icons,
description);
}

V tabuľke 2.6 je výpis metód triedy Desktop. Kompletná špecifikácia v [10].

Tabuľka 2.6 Opis metód triedy Desktop

Trieda: Desktop
Metóda: createShortcut(name, url, icons, [description])
Parametre: name - meno odkazu
url - adresa dokumentu, ktorý sa má otvoriť
icons – Objekt obsahujúci jednu alebo viac hodnôt v tvare:
rozmer : URL ikony
Napr. ’128x128’: ’http://priklad. sk/icon128x128.png’
descriptions – nepovinný parameter. Text sa zobrazí v potvrdzovacom dialógu.


Opis: Vytvorí desktopový odkaz na spustenie aplikácie

Geolocation API

Geolocation API umožňuje webovej aplikácii získať používateľa geografickú polohu. Kompletnú špecifikáciu nájdete v [11].

HttpRequest API

HttpRequest API implementuje podskupinu XmlHttpRequest W3C špecifikácie. Gears poskytuje vlastný HttpRequest objekt. Obsahuje väčšinu vlastností. Kompletnú špecifikáciu nájdete v [12].

Timer API

Obsahuje metódy, ktoré umožnia nastaviť vykonanie skriptov s časovým oneskorením a podobne. Kompletnú špecifikáciu nájdete v [13].

Podpora Google Gears v operačných systémoch a prehliadačoch

Funkčnosť Google Gears je overená na nasledujúcich platformách a prehliadačoch [14]:

  • Apple Mac OS X (10.4 alebo vyššia, G4, G5 or Intel Processor)
  • Firefox 1.5 alebo vyššia
  • Safari 3.1.1 alebo vyššia (OS X Tiger 10.4.11+ alebo Leopard 10.5.3+, G4, G5 alebo Intel Processor)
  • Linux
  • Firefox 1.5 alebo vyššia
  • Microsoft Windows (XP alebo vyššia)
  • Firefox 1.5 alebo vyššia
  • Internet Explorer 6 alebo vyššia
  • Google Chrome
  • Microsoft Windows Mobile (5 alebo vyššia)
  • Internet Explorer 4.01 alebo vyššia
  • Opera Mobile 9.51 (Presto build 2.1.0+) (Windows Mobile 6 len pre dotykové zariadenia)
  •  Nasledovné zariadenia nie sú podporované
  • Samsung i320 a i320N
  • Orange SPV C600
  • Motorola Q
  • Android 1.0

Umiestnenie dát na disku

Umiestnenie dát webovej aplikácie na disku záleží na platforme a internetovom prehliadači.

Windows Vista - Internet Explorer

Umiestnenie: {FOLDERID_LocalAppDataLow}\Google\Google Gears for Internet Explorer
Príklad: C:\Users\Bob\AppData\LocalLow\Google\Google Gears for Internet Explorer

Windows Vista - Firefox

Umiestnenie: C:\Users\<username>\AppData\Local\Mozilla\Firefox\Profiles\{profile}.default\Google Gears for Firefox
Príklad: C:\Users\Bob\AppData\Local\Mozilla\Firefox\Profiles\uelib44s.default\Google Gears for Firefox

Windows Vista - Chrome

Umiestnenie: C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Plugin Data\Google Gears
Príklad: C:\Users\Bob\AppData\Local\Google\Chrome\User Data\Default\Plugin Data\Google Gears

Mac OS X - Safari

Umiestnenie: ~/Library/Application Support/Google/Google Gears for Safari
Príklad: /Users/Bob/Library/Application Support/Google/Google Gears for Safari

Linux - Firefox

Umiestnenie: ~bob/.mozilla/firefox/<firefox’s profile id>/Google Gears for Firefox
Príklad: ~bob/.mozilla/firefox/08ywpi3q.default/Google Gears for Firefox

Využitie Google Gears

Ako prvá začala Google Gears využívať firma Google vo svojej čítačke kanálov Google Reader. V režime off-line umožňuje prehliadať až 2000 príspevkov. Postupne sa podpora pre toto rozšírenie pridala aj do mailovej služby Gmail a on-line kancelárskeho balíka Google Docs.

Ďalšie webové služby využívajúce Google Gears:

  • správca úloh rememberthemilk.com,
  • sociálna služba myspace.com,
  • on-line správca hesiel passpack.com,
  • nástroj pre riadenie projektov mindmeister.com,
  • open-source redakčný systém wordpress.net a ďalší.

HTML5

HTML5 [15] je najnovšia špecifikácia značkovacieho jazyka HTML vyvíjaná medzinárodným združením W3C (World Wide Web Consortium). Najdôležitejšou zmenou v novej verzií je samotná štruktúra HTML dokumentu, veľké množstvo nových elementov a aj podpora off-line web aplikácií. Pretože Google sa snaží dodržiavať štandardy, zastavil vývoj Google Gears a svoju iniciatívu smeruje na HTML5. Je možné, že podpora off-line aplikácií bude mať v novej špecifikácií aj niektoré rysy, ktoré poznáme z Google Gears. V súčasnosti je stále HTML 5 vo fáze vývoja. Dokončenie je plánované na rok 2012. Niekoľko rokov však potrvá jeho úplná podpora vo väčšine prehliadačoch. Prehliadače ako napríklad Firefox podporujú už väčšiu časť nových prvkov HTML5. V našom prehľade sú zaujímavé SQL API a Cache API, ktoré majú poskytovať rovnakú funkcionalitu ako Google Gears.

Elementy štruktúry

Doposiaľ bola štruktúra HTML dokumentu tvorená z div elementov. HTML5 pridáva nové elementy k identifikácií každého z nich. Tieto majú presne stanovený sémantický význam a lepšie sa v nich orientuje aj samotný programátor.

Tabuľka 2.7 Zoznam nových sémantických elementov štruktúry HTML5

section Všeobecná (často nadradená) časť, ktorá môže združovať ostatné časti stránky. Element DIV, ktorý dostal sémantické meno.
header Hlavička časti, v ktorej je začlenená.
footer Pätička časti, v ktorej je začlenená.
nav Časť stránky, ktorá obsahuje odkazy na ostatné stránky alebo časti danej stránky.
article Časť stránky, ktorá obsahuje text nezávislý od ostatných dielov stránky.

Elementy multimédií

Zaujímavých zmien sa dočkala aj podpora multimédií (zvuk, video). Tieto sa na webe neskutočne rýchlo rozšírili (hlavne jednoduchým šírením pomocou stránok youtube.com a podobne). Preto sú v novej verzií HTML5 prístupné tagy <video> a <audio>.

Element <canvas> reprezentuje 2D kresliacu plochu ovládanú javaskriptom, ktorú môžete využívať, napr. na kreslenie grafov, grafických prvkov v hrách a prezentáciách.

Inline elementy

HTML5 zavádza nové elementy, ktoré majú pomôcť uviesť základné prvky, ako je čas alebo čísla.

Tabuľka 2.8 Zoznam nových inline elementov HTML5

mark Označenie textu. Slúži napríklad na označenie hľadaného slová v zozname výsledkov
time Označuje čas alebo dátum v bloku textu.
meter Predstavuje skalárne meradlá.
progress Reprezentuje pokrok v dokončení úlohy. Môže byť použitý pre vizuálne zobrazenie.

Podpora režimu off-line

S novou špecifikáciou jazyka HTML 5 prichádza aj podpora off-line aplikácií. K dispozícií máme SQL API a Cache API, ktorá je obdobou LocalServer API.

SQL API

SQL databáza na strane klienta umožní štruktúrované dátové úložisko. API pracuje s touto databázou asynchrónne. To znamená, že používateľské prostredie nebude blokované vykonávaním synchrónneho požiadavku.

Tabuľka 2.9 Zoznam metód návrhu HTML5

Metóda: Object openDatabase(dbname, dbversion, displayname, size)
Opis: Vytvára databázový objekt podľa zvolených parametrov
Parametre: dbname – meno databázy
dbversion – verzia databázy
displayname – zobrazený názov databázy
size – predpokladaná veľkosť databázy v bajtoch
Ďalšie Metódy: transaction(), executeSql()
LocalStorage API

Dáta na lokálnom disku bude reprezentovať objekt localStorage.

Tabuľka 2.10 Zoznam niektorých metód pre prácu s lokálnym úložiskom

Metóda: Opis
clear() zmaže celý obsah objektu
getItem() získa obsah objektu podľa názvu
key() získa kľúč podľa čísla
length Počet uložených kľúčov
removeItem() odstráni položku podľa jej mena
setItem() Pridá hodnotu položke