Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

1 Vývoj hybridní aplikace pro webOS CZ.NIC z.s.p.o. Bedřich Košata / 18. 6. 2011.

Podobné prezentace


Prezentace na téma: "1 Vývoj hybridní aplikace pro webOS CZ.NIC z.s.p.o. Bedřich Košata / 18. 6. 2011."— Transkript prezentace:

1 1 Vývoj hybridní aplikace pro webOS CZ.NIC z.s.p.o. Bedřich Košata / bedrich.kosata@nic.czbedrich.kosata@nic.cz 18. 6. 2011

2 2 Plán přednášky ● Úvod ● Co jsou to datové schránky ● Ukázka výsledné aplikace ● webOS – historie, architektura a zařízení ● webOS – vývojové nástroje ● webOS – ukázka vývoje aplikace

3 3 Úvod ● CZ.NIC, z.s.p.o – správce národní domény.cz – „... vývoj a rozvoj obecně prospěšných služeb pro lokální internetovou komunitu...“ ● CZ.NIC Labs – vývojové oddělení CZ.NIC – personálně oddělené od provozní části – věnuje se projektům zaměřeným na DNS, sítě, ale také datové schránky – DNSSEC Validator for Firefox – BIRD – iDatovka, dsgui, libnicds ● Akademie CZ.NIC - http://www.nic.cz/akademie/ http://www.nic.cz/akademie/ http://labs.nic.cz/

4 4 Datové schránky ● Prostředek pro elektronickou komunikaci s orgány veřejné moci (OVM) ● Připomíná e-mail, ale: – Centrální úložiště zpráv – Jedna organizace má jen jednu DS – Doručení fikcí (10 dní od dodání), doručení přihlášením do schránky – Stav odeslané zprávy lze sledovat – ověření doručení ● OVM má povinnost komunikovat přednostně přes DS (pokud je to možné)

5 5 Způsoby přístupu k DS ● Online webové rozhraní ● SOAP rozhraní pro aplikace třetích stran – HTTPS ● Autentizace – jméno + heslo – jméno + heslo + komerční certifikát – komerční certifikát (pro spisové služby)

6 6 ● Desktop – dsgui & dslib – GUI aplikace v Pythonu + GTK – Linux, Mac OS X, Windows, BSD – libnicds – knihovna pro C ● Mobil – iDatovka – iPhone a iPad (od verze 2.0) – webDatovka – prototyp pro webOS založený na nemodifikované libnicds – https://labs.nic.cz/page/909/webdatovka/ https://labs.nic.cz/page/909/webdatovka/ Svobodné řešení od CZ.NIC Labs

7 7 Ukázka aplikace

8 8 webOS – pohled dovnitř ● založen na jádře Linuxu 2.6.24 ● využívá řadu open source knihoven a programů – http://opensource.palm.com/packages.html http://opensource.palm.com/packages.html ● HTML + JavaScript + SDK pro tvorbu aplikací (renderovací jádro WebKit) ● pro nízkoúrovňové věci je možnost psát rozšíření v C

9 9 webOS – historie ● červen 2009 – Palm představuje webOS na telefonu Palm Pre ● duben 2010 – HP kupuje Palm ● říjen 2010 – vychází webOS 2 spolu s Palm Pre 2 ● únor 2011 – ohlášen telefon HP Pre 3 a tablet HP TouchPad s webOS 3.0 (vydání plánované v létě) ● květen 2011 – vydán minitelefon HP Veer s webOS 2.2

10 10 webOS – produkty ● telefony – Palm Pre (600 MHz, 256 MB RAM, 8 GB, 320×480, 3.1“) – Palm Pre Plus (600 MHz, 512 MB RAM, 16 GB, 320×480, 3.1“) – Palm Pixi (600 MHz, 256 MB RAM, 8 GB, 320×400, 2.6“) – Palm Pre 2 (1 GHz, 512 MB RAM, 16 GB, 320×480, 3.1“) – HP Veer (800 MHz, 512 MB RAM, 8 GB, 320×400, 2.6“) – HP Pre 3 (1.4 GHz, 512 MB RAM, 16 GB, 480×800, 3.6“) ● tablety – HP TouchPad (2x1.2 GHz, 1 GB RAM, 16-32 GB, 1024×768, 9.7“)

11 11 webOS – vývojové nástroje ● SDK – software development kit – JavaScript + HTML – přístup k interním funkcím z JavaScriptu ● PDK – plugin development kit – gcc cross compiler + knihovny – oficiálně podporován pouze pod Windows a Mac OS X – umožňuje low-level přístup ke zdrojům – grafická stránka je obstarávána knihovnou SDL (snadná portace existujících SDL her) ● hybridní aplikace – spolupráce SDK s binární komponentou založenou na PDK

12 12 webOS – aktivace developer módu ● Nutné pro možnost instalace vytvořených aplikací do telefonu ● dvě možnosti – vyťukat „webos20090606“ – vyťukat „upupdowndownleftrightleftrightbastart“

13 13 webOS SDK – instalace ● nainstalujeme – palm-novacom – VirtualBox (3.0-3.2, 4.0 není podporován, ale je možné na něj později upgradovat) – Java – ia32-libs – na 64 bitovém OS – Palm SDK ● získáme – novaterm – umožňuje terminálový přístup k zařízení – palm-generate, palm-package, palm-install – práce s balíčky – virtuální stroj s testovacím prostředím (bohužel x86) https://developer.palm.com/content/resources/develop/sdk_pdk_download.html

14 14 webOS – emulátor beda@zelva:/tmp$ palm-emulator

15 15 webOS – interakce se zařízením ● novaterm - terminálový přístup k zařízení á la ssh beda@zelva:~$ novaterm -l 41662 5a19a46271ca7c591b2fcc9964c429c4042af610 usb castle-linux 50397 3261aebd20c9cfa70d56e95b22fbf9f55f2198d6 tcp emulator beda@zelva:~$ novaterm root@ - Palm Pre:/# beda@zelva:~$ novaterm -d 3261aebd20c9cfa70d56e95b22fbf9f55f2198d6 root@qemux86:/#

16 16 webOS SDK – první kroky beda@zelva:/tmp$ palm-generate -t new_app -p "{'id': 'cz.nic.labs.test', 'version':'0.1.0', 'vendor':'CZ.NIC', 'title':'Test'}" /tmp/test generating new_app in /tmp/test beda@zelva:/tmp$ tree test test |-- app | |-- assistants | | `-- stage-assistant.js | `-- views |-- appinfo.json |-- framework_config.json |-- icon.png |-- images |-- index.html |-- sources.json `-- stylesheets `-- test.css

17 17 webOS SDK – první kroky beda@zelva:/tmp$ palm-package test creating package cz.nic.labs.test_0.1.0_all.ipk in /tmp beda@zelva:/tmp$ palm-install -d tcp cz.nic.labs.test_0.1.0_all.ipk installing package cz.nic.labs.test_0.1.0_all.ipk on device "emulator" {3261aebd20c9cfa70d56e95b22fbf9f55f2198d6} tcp 39196 beda@zelva:/tmp$ palm-launch -d tcp cz.nic.labs.test launching application cz.nic.labs.test on device "emulator" {3261aebd20c9cfa70d56e95b22fbf9f55f2198d6} tcp 39196 ● webOS eclipse plugin – spouštění webOS aplikací přímo z prostředí eclipse

18 18 webOS SDK – základní pojmy ● Stage – jeviště – základní okno (karta) aplikace ● Scene – obsah karty – aplikace typicky obsahuje více scén – scény se překrývají jako karty v balíčku ● Assistant – JavaScript, který se stará o obsluhu jednotlivých událostí ve scéně – každá scéna má svého asistenta – jeden top-level asistent pro celou aplikaci – asistent může aktivovat další scény a přidat je na stack

19 19 Komponenty aplikace ● Vzhled scény – HTML + CSS + speciální atributy (x-mojo-...) ● Interakce s prvky – JavaScript (definice propojení prvků s daty, obsluha událostí) ● Externí data – Application services (otevření odkazu v prohlížeči, PDF ve čtečce) ● Systémové prostředky - System services via JavaScript (interakce s GPS, accelerometrem) ● Ukládání dat – HTML 5 db [1,2], webOS specifické alternativy12 ● Přístup ke grafice - PDK (SDL) ● Nízkoúrovňové záležitosti - PDK

20 20 webOS – struktura aplikace |-- app | |-- assistants | | |-- account-config-assistant.js | | |--... | | `-- stage-assistant.js | |-- models | | `-- isds-plugin.js | `-- views | |-- account-config | | `-- account-config-scene.html | |--... | `-- message-view | |-- message-list-entry.html | |-- message-list.html | `-- message-view-scene.html |... |-- app | |-- assistants | | `-- stage-assistant.js | `-- views |-- appinfo.json |-- framework_config.json |-- icon.png |-- images |-- index.html |-- sources.json `-- stylesheets `-- test.css

21 21 webOS – PDK ● Oficiální PDK – https://github.com/kayahr/linux-webos-pdk https://github.com/kayahr/linux-webos-pdk – využívá oficiální PDK pro Mac OS X – obsahuje cross-compiler a knihovny – vhodné pro kompilace vlastních programů bez dalších externích závislostí ● WebOS Internals PDK – http://www.webos-internals.org/wiki/WebOS_Internals_PDK http://www.webos-internals.org/wiki/WebOS_Internals_PDK – svobodná varianta oficiálního PDK – obsahuje podporu pro Scratchbox 2 – cross-kompilační prostředí – instalace trvá desítky minut a může být potřeba vyhledat si řešení nějakého problému – umožňuje pohodlně kompilovat externí knihovny s pomocí configure a make

22 22 webOS – interakce s pluginem ● Aplikace → plugin – volání registrovaných funkcí pluginu z JavaScriptu – probíhá synchronně – plugin může zablokovat běh aplikace – lze převést na asynchronní kombinací se zpětným voláním – vždy vrací pouze string – s výhodou lze použít JSON – z pluginu lze vyvolat výjimku ● Plugin → aplikace – volání funkcí definovaných v JavaScriptu z C – na straně aplikace svážeme volání s konkrétní JS funkcí – libovolný počet argumentů typu string – volání se provádí asynchronně bez návratové hodnoty https://developer.palm.com/content/content/api/dev-guide/pdk/js-and-plug-in-interface.html

23 23 webOS – vložení pluginu ● Aplikace – vložit element object s opovídajícími parametry do HTML kódu stránky – úprava appinfo.json + vytvoření package.properties – vytvoření plugin_appinfo.json ● Plugin – definovat funkce, které budou dostupné z JavaScriptu – PDL_bool MyJSHandlerFunc(PDL_JSParameters *parms) – zaregistrovat funkce dostupné z JavaScriptu – PDL_Err PDL_RegisterJSHandler(const char *functionName, – PDL_JSHandlerFunc function) – aktivovat pomocí PDL_JSRegistrationComplete https://developer.palm.com/content/content/api/dev-guide/pdk/js-and-plug-in-interface.html

24 24 webOS – vlastnosti pluginu ● běží v samostatném procesu ● musí se sám udržovat při životě, typicky vlastním event loopem ● životnost procesu odpovídá životnosti scény, která plugin inicializovala ● při vložení do více scén dochází ke vzniku nových instancí ● sdílení pluginu lze řešit vložením pomocí JavaScriptu a následným kopírováním vzniklého DOM objektu do dalších scén

25 25 webOS – cross-kompilace ● Scratchbox – cross-kompilační chrootované prostředí – ideální pro existující knihovny a aplikace beda@gaspode:~$ sb2 -M /srv/preware/cross-compile/staging/mapping-armv7 [SB2 mapping-armv7 armv7] beda@gaspode~$ gcc -v Using built-in specs. Reading specs from /usr/share/scratchbox2/modeconf/gcc-specs.simple rename spec cpp to old_cpp Target: arm-none-linux-gnueabi Configured with: /scratch/mitchell/builds/4.3-arm-none-linux-gnueabi- respin/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc- linux-gnu --target=arm-none-linux-gnueabi --enable-threads... Thread model: posix gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203)

26 26 webOS – cross-kompilace ● libnicds – závisí na openssl – používá autoconf a automake ● nejprve zkompilovat a nainstalovat příslušnou verzi openssl (./configure; make; make install) ● poté zkompilovat a nainstalovat libnicds (./configure; make; make install) ● libnicds přikompilovat staticky k pluginu ● není třeba žádných úprav openssl či libnicds

27 27 webOS – debugging ● palm-log – umožňuje sledovat výpisy z aplikace – v aplikaci - console.log(zpráva) – na konzoli - palm-log -f cz.nic.labs.webdatovka ● eclipse plugin – ukazuje log výpisy na konzoli automaticky ● plugin – debugging kódu na PC bez webOS specifických funkcí – výpis do souboru v /media/internal, apod.

28 28 webOS – debugging beda@zelva:~/projects/webdatovka$ palm-log --system-log-level info setting log level to info on device "castle-linux" {5a19a46271ca7c591b2fcc9964c429c4042af610} usb 53412 beda@zelva:~/projects/webdatovka$ palm-log -f cz.nic.labs.webdatovka following logs for application cz.nic.labs.webdatovka on device "castle- linux" {5a19a46271ca7c591b2fcc9964c429c4042af610} usb 53412 [20110615-13:04:31.156127] info: =========> Calling palmInitFramework367, /usr/palm/frameworks/mojo/mojo.js:142 [20110615-13:04:32.079925] info: Requested submission : 367 [20110615-13:04:32.085937] info: Current locale is en_us [20110615-13:04:32.439941] error: Uncaught TypeError: Object # has no method 'screenOrientationChanged' [20110615-13:04:32.668334] warning: document had scroll top set, resetting. [20110615-13:04:32.912078] info: About to activate scene front-page [20110615-13:04:33.088623] info: Transition ended.

29 29 webOS – lokalizace ● JavaScript – lokalizuje se á la gettext označením textu k překladu přímo v kódu – překlady se definují v adresáři resources v souborech strings.json – $L("Hello, world."); ● HTML – v adresáři resources se vytvoří alternativní verze HTML souborů pro každý podporovaný jazyk ● Metadata – jméno aplikace, apod. – v adresáři resources se vytvoří alternativní appinfo.json soubor pro každý podporovaný jazyk https://developer.palm.com/content/api/dev-guide/mojo/localization.html

30 30 webOS – postřehy ● mnoho věcí je asynchronních – přístup k databázi – práce s pluginem, pokud synchronní verze není dostatečně rychlá ● globální proměnné šetří práci

31 31 Závěr ● webOS je rozumně otevřená platforma ● vývoj pod Linuxem není 100% podporován ● existuje komunita schopná pomoci ● dokumentace je dostatečná (i když je stále co zlepšovat) ● HP bude webOS silně prosazovat – doufejme, že brzo již uvidíme oficiální prodej i u nás

32 32 Děkuji za pozornost Bedřich Košata bedrich.kosata@nic.cz http://labs.nic.cz/datove-schranky/ http://www.nic.cz


Stáhnout ppt "1 Vývoj hybridní aplikace pro webOS CZ.NIC z.s.p.o. Bedřich Košata / 18. 6. 2011."

Podobné prezentace


Reklamy Google