Modul pro £tení zpráv pro Android
Transkript
eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£· Bakalá°ská práce Modul pro £tení zpráv pro Android Zden¥k Du²átko Vedoucí práce: Ing. Tomá² Novotný Studijní program: Elektrotechnika a informatika, strukturovaný, Bakalá°ský Obor: Výpo£etní technika 22. kv¥tna 2011 iv v Pod¥kování Rád bych pod¥koval vedoucímu práce Ing. Tomá²i Novotnému za ochotu a cenné rady poskytnuté p°i vypracovávání této bakalá°ské práce. Dále bych cht¥l pod¥kovat své rodin¥ za podporu p°i studiu. vi vii Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon). V Praze dne 15. 5. 2011 ............................................................. viii Abstract This bachelor thesis deals with the development of Google Reader application for mobile phones with Android operating system from the company Google. The reader supports star and label synchronisation, article sharing and feeds addition. The second part of this thesis deals with the design and implementation of a server based application, which browses through user's Atom/RSS feeds and extracts individual articles according to a previously dened set of rules. These articles are then saved into the inboxes of registered users using the IMAP protocol. Abstrakt Tato práce se zabývá vývojem Google Reader £te£ky pro mobilní telefony s opera£ním systémem Android od spole£nosti Google. te£ka podporuje synchronizované hv¥zdi£kování, ²títkování, sdílení £lánk· a p°idávání zdroj·. Druhá £ást této práce se zabývá návrhem a implementací serverové aplikace, která prochází Atom/RSS zdroje uºivatel· a extrahuje jednotlivé £lánky na základ¥ d°íve denovaných pravidel. Tyto texty jsou následn¥ p°es IMAP protokol ukládány do schránek zaregistrovaných odb¥ratel·. ix x Obsah 1 Úvod 1 2 Popis problému, vymezení poºadavk·. 3 2.1 Popis °e²eného problému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Analýza poºadavk· serverové aplikace ExtBrain feedExtractor 3 2.3 . . . . . . . . 2.2.1 Funk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2.2 Nefunk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Analýza poºadavk· £te£ky pro Android OS . . . . . . . . . . . . . . . . . . . 4 2.3.1 Funk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3.2 Nefunk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3 Existující °e²ení Google Reader £te£ek 7 3.1 gReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 Google Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3 NewsRob 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Google Reader API 9 4.1 Google Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Google API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Google Data Protokol 4.2.2 Ov¥°ovaní identity . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 4.2.2.1 ClientLogin . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2.2.2 OAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.2 13 Analýza a návrh £te£ky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Analýza a návrh °e²ení 5.1 9 13 Pouºité technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.1.1 . . . . . . . . . . . . . . . . . 13 5.1.2 Analytický doménový model . . . . . . . . . . . . . . . . . . . . . . . 14 5.1.3 P°ípady uºití Android aplika£ní framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh serverové aplikace feedExtractor 15 . . . . . . . . . . . . . . . 17 5.2.1 Pouºité technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2.2 Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2.3 Analytický doménový model . . . . . . . . . . . . . . . . . . . . . . . 18 5.2.4 P°ípady uºití 19 5.2.1.1 Servlety a JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi xii OBSAH 6 Realizace 6.1 6.2 6.3 21 Nástroje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.1.1 Android SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.1.2 ADT plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.1.3 Enterprise Architect 6.1.4 Mercurial . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Implementace ExtBrain £te£ky . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2.1 GoogleReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.2.2 IMAPReader 23 6.2.3 IMAPLocalReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.2.4 Gracké uºivatelské rozhraní . . . . . . . . . . . . . . . . . . . . . . . 24 Implementace ExtBrain feedExtractoru . . . . . . . . . . . . . . . . . . . . . 24 6.3.1 SelectorGadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6.3.2 Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.3.2.1 jQuery °e²ení . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.3.2.2 JSoup °e²ení . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.3.2.3 Automatické spou²t¥ní . . . . . . . . . . . . . . . . . . . . . 26 Plán nasazení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Testování 29 7.1 Monkey 7.2 Uºivatelské testování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 8 Záv¥r 31 A Seznam pouºitých zkratek 37 B Instala£ní a uºivatelská p°íru£ka 39 B.0.1 B.0.2 ExtBrain feedExtractor . . . . . . . . . . . . . . . . . . . . . . . . . . 39 B.0.1.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 B.0.1.2 Zaloºení nového ú£tu a p°ihlá²ení do systému . . . . . . . . 40 B.0.1.3 Správa zdroj· . . . . . . . . . . . . . . . . . . . . . . . . . . 40 B.0.1.4 Denice extrak£ních pravidel . . . . . . . . . . . . . . . . . 41 . . . . . . . . . . . . . . . . . . 42 B.0.2.1 Modulární £te£ka zpráv pro Android Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 B.0.2.2 Správa ú£t· . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 B.0.2.3 P°ehled hlavní nabídky . . . . . . . . . . . . . . . . . . . . . 43 B.0.2.4 Seznam £lánk· a základní volby . . . . . . . . . . . . . . . . 43 B.0.2.5 Správa kanál· a náhled £lánku 44 C Obsah p°iloºeného CD . . . . . . . . . . . . . . . . 45 Seznam obrázk· 4.1 Komunikace p°i p°ihla²ování uºivatele . . . . . . . . . . . . . . . . . . . . . . 11 5.1 ExtBrain te£ka - Doménový model . . . . . . . . . . . . . . . . . . . . . . . 14 5.2 ExtBrain te£ka - P°ípady uºití . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.3 Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.4 ExtBrain feedExtractor - Doménový model . . . . . . . . . . . . . . . . . . . 19 5.5 ExtBrain feedExtractor - P°ípady uºití . . . . . . . . . . . . . . . . . . . . . 19 6.1 Android £te£ka - moduly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2 Diagram nasazení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 B.1 P°ihla²ovací stránka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 B.2 Správa zdroj· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 B.3 Denice pravidel 41 B.4 Seznam ú£t· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 B.5 Vytvá°ení nového ú£tu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 B.6 Google Reader ú£et . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.7 IMAP ú£et . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.8 Seznam v²ech £lánk· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kontextové menu £lánku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.10 Správa kanál· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 B.11 Náhled £lánku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 C.1 45 Obsah CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii xiv SEZNAM OBRÁZK Kapitola 1 Úvod S rostoucím po£tem a oblibou r·zných blog· a zpravodajských portál· vzniká tzv. online syndikace. Online syndikace nebo syndikace obsahu ozna£uje stálé dodávky aktualizovaných informací z r·zných zdroj·. V dne²ní dob¥ uº tém¥° kaºdý zpravodajský server nebo blog umoº¬uje odb¥r novinek pomocí Atom/RSS kanál·. Uºivatel uº tedy nemusí v²echny své oblíbené blogy a zpravodajské servery procházet jednotliv¥, nýbrº v²echny novinky a informace, které ho zajímají, má díky Atom/RSS £te£ce soust°ed¥né na jednom míst¥. Samotná £te£ka m·ºe mít mnoho podob. M·ºe to být dopln¥k v jiném programu, nap°. ve webovém prohlíºe£i. Lze se sní setkat i jako se samostatnou aplikací nebo online webovou sluºbou. Nejznám¥j²ím °e²ením online webové £te£ky nabízí od roku 2005 pod názvem Google Reader kalifornská spole£nost Google. Nespornou výhodou tohoto °e²ení je moºnost p°ipojit se z kteréhokoli po£íta£e ke svému ú£tu a mít £te£ku k dispozici kdekoli na sv¥t¥. Nevýhodou m·ºe být sd¥lování informací o svých zájmech a informa£ních kanálech, kterým dáváte p°ednost, poskytovateli sluºby. Google Reader p°iná²í propracované a p°ehledné uºivatelské rozhraní, snadné vyhledávání a p°idávání zdroj· a dal²í uºite£né dopl¬kové funkce jako nap°. ²títkování a sdílení £lánk·. Jedním z cíl· této práce je implementovat aplikaci pro mobilní telefony s opera£ním systémem Android, která s vyuºitím GData protokolu zp°ístupní ú£et a funkcionalitu sluºby Google Reader. Motivací této práce je v neposlední °ad¥ také skute£nost neexistence aplika£ního programového rozhraní (API) pro sluºbu Google Reader. Díl£ím cílem práce je vytvo°it modul implementující hlavní £ást Google Reader API v jazyce Java. Mobilní platformu Android, rovn¥º od spole£nosti Google, jsem si vybral z d·vodu nejrychlej²ího rozvoje a roz²í°ení mezi tzv. chytrými mobilními telefony ze v²ech sou£asných mobilních platforem. Android OS je pom¥rn¥ mladý opera£ní systém ur£ený pro mobilní za°ízení. První telefon s tímto opera£ním systémem byl uveden na trh mobilním operátorem T-mobile teprve v roce 2008. Jedná se o otev°ený opera£ní systém postavený na Linuxu. Spole£n¥ s Androidem je pro vývojá°e aplikací zdarma poskytován také soubor vývojových nástroj· Android Software Development Kit (SDK), je tu i ociální podpora pro Eclipse vývojové prost°edí. Dal²ím °e²eným problémem v této práci je automatická extrakce obsahu zdroj· podle uºivatelsky denovaných extrak£ních pravidel. Implementace serverové aplikace ExtBrain feedExtractor, který tuto extrakci vykonává, je dal²ím cílem této práce. Hlavní motivací pro feedExtractor je fakt, ºe Google Reader nenabízí moºnost, jak získat pouze textový obsah z denovaných zdroj·. Google Reader také z neznámých d·vod· vynechává n¥které poloºky 1 2 KAPITOLA 1. ÚVOD ze seznam· zpráv a uºivateli je nezobrazuje. Také z tohoto d·vodu vzniká feedExtractor, v kterém si odb¥ratelé mohou denovat jednotlivé zdroje nezávisle na Google Readeru. Kapitola 2 Popis problému, vymezení poºadavk·. 2.1 Popis °e²eného problému Práci m·ºeme rozd¥lit na dv¥ separátní £ásti. První £ást tvo°í serverová aplikace ExtBrain feedExtractor, která prochází Atom/RSS zdroje uºivatel· a extrahuje texty z jednotlivých £lánk· na základ¥ d°íve denovaných pravidel. Tyto texty jsou následn¥ p°es IMAP protokol ukládány do schránek zaregistrovaných odb¥ratel·. Druhou £ást tvo°í samotná £te£ka zpráv pro mobilní platformu Android. te£ka podporuje p°íjem zpráv ze dvou zdroj·. Prvním zdrojem je Google Reader a druhým zdrojem jsou IMAP zprávy, které obsahují extrahované £lánky z feedExtractoru. Ke zprávám je moºné p°idávat nap°. hv¥zdi£ky a ²títky, které lze synchronizovat. 2.2 Analýza poºadavk· serverové aplikace ExtBrain feedExtractor Kapitola obsahuje popis v²ech poºadavk·, které jsou na systém kladeny. Tyto poºadavky jsou rozd¥leny na dv¥ základní £ásti, poºadavky funk£ní a nefunk£ní. 2.2.1 Funk£ní poºadavky Funk£ní poºadavky ur£ují, jaké funkce bude systém nabízet. Nep°ímo vyplývají ze zadání práce. Tato kapitola uvádí jejich vý£et. • Systém eviduje uºivatelské ú£ty. Eviduje jméno, heslo, emailovou adresu, a nastavení IMAP serveru. • Systém eviduje odebírané zdroje a extrak£ní pravidla. • Do systému se bude moci p°ihla²ovat libovolný po£et uºivatel·. • Uºivatel m·ºe upravovat nastavení svého ú£tu. 3 4 KAPITOLA 2. • POPIS PROBLÉMU, VYMEZENÍ POADAVK. Uºivatel spravuje sv·j seznam odebíraných zdroj·, tj. p°idává resp. odebírá zdroje a denuje k nim extrak£ní pravidla. • Systém spou²tí v pravidelném intervalu automatickou kontrolu v²ech odebíraných zdroj·, z nových zpráv extrahuje obsah podle pravidel denovaných uºivateli a synchronizuje je s emailovými schránkami uºivatel·. • Extrak£ní interval bude nastavitelný v kongura£ním souboru. 2.2.2 Nefunk£ní poºadavky Kapitola obsahuje v²echny nefunk£ní poºadavky systému ExtBrain feedExtractor. Nefunk£ní poºadavky popisují omezení, které musí aplikace spl¬ovat. Systém vyuºívá webové rozhraní, je dostupný v²em uºivatel·m pouze pomocí webového prohlíºe£e, není tedy nutná ºádná instalace dal²í aplikace. • p°ehledné webové uºivatelské rozhraní • podpora v²ech významn¥j²ích webových prohlíºe£· jako Mozilla Firefox 4, Opera 11, Chrome 10, IE 9 • implementováno v JSP 2.1 a Servlet 2.5 • jednoduché a intuitivní ovládání • vysoká modikovatelnost a roz²í°itelnost • databáze uºivatel· musí být chrán¥na proti p°ístupu nepovolaných osob 2.3 Analýza poºadavk· £te£ky pro Android OS Kapitola obsahuje popis v²ech poºadavk·, které jsou na £te£ku kladeny. Tyto poºadavky jsou op¥t d¥leny na funk£ní a nefunk£ní. 2.3.1 Funk£ní poºadavky Jde o £tení, ²títkování a synchronizaci zpráv p°ímo z Google Readeru, z imapového serveru nebo z lokálního úloºi²t¥. Tyto poºadavky p°ímo vyplývají ze zadání práce. • Aplikace eviduje uºivatelské ú£ty. Eviduje jméno, heslo, emailovou adresu, a pro IMAP ú£ty i server a port. • Uºivatel m·ºe p°idávat, mazat a upravovat své ú£ty. • Uºivatel m·ºe p°idávat ke zprávám dodate£né informace jako hv¥zdi£ky a ²títky. • Zprávy i s dodate£nými informacemi jsou synchronizovány. 2.3. ANALÝZA POADAVK TEKY PRO ANDROID OS • Uºivatel m·ºe imapové zprávy £íst i v oine reºimu. • V Google Reader ú£tu lze p°idávat resp. odebírat informa£ní zdroje. • Uºivatel m·ºe vyhledávat zprávy podle titulku a obsahu. • Lze sdílet Google Reader zprávy. 5 2.3.2 Nefunk£ní poºadavky Protoºe se jedná o mobilní aplikaci, tak se klade d·raz hlavn¥ na malou systémovou náro£nost a p°ehledné uºivatelské rozhraní. • podpora v²ech mobilních telefon· s opera£ním systémem Android 2.2 a vy²²ím • p°ehledné gracké uºivatelské rozhraní • jednoduché a intuitivní ovládání • modularita • p°ipojení k internetu pro £tení, nebo pro staºení zpráv pro oine reºim £tení 6 KAPITOLA 2. POPIS PROBLÉMU, VYMEZENÍ POADAVK. Kapitola 3 Existující °e²ení Google Reader £te£ek V Android Marketu, tedy v ociálním obchodu s aplikacemi, se nacházejí níºe uvedené £te£ky podporující Google Reader. 3.1 gReader Jedna z £te£ek podporující Google Reader je aplikace gReader. Jedná se o neociální £te£ku, která je distribuována ve dvou verzích, gReader a zpoplatn¥ná verze gReader Pro. te£ka podporuje v²echny d·leºité funkce, jako je hv¥zdi£kování, podpora sloºek a ²títk·. Uºivatelské ²títky nelze bohuºel p°idávat, ale pouze jen £íst. P°i testování se vyskytla chyba s na£ítáním ozna£ených poloºek. Dále je tu podpora vyhledávání £lánk· i jejich sdílení. Gracké prost°edí je propracované a p°ehledné, v základní verzi nabízí dv¥ gracká témata, placená verze p°idává je²t¥ jedno téma pro no£ní reºim. Pouºitelnost této aplikace velice klesá díky velmi pomalým odezvám na akce uºivatele. V placené Pro verzi je odezva jiº lep²í. Aplikace nabízí oine £tení, ale pouze na úrovni stahování celých webových stránek. Dále chybí podpora pro více ú£t·. Jako velkou výhodu vidím systém oznámení nových zpráv v notika£ní li²t¥ opera£ního systému. Zajímavou funkcí je také moºnost invertovat barvy v náhledu webové stránky, protoºe v¥t²ina zpravodajských server· pouºívá bílé pozadí, coº m·ºe být p°i del²í £tení náro£né pro o£i. Pro úplnost je²t¥ uvádím £íslo testované verze, tedy 2.0.2. 3.2 Google Reader Ociální £te£ka Google Reader pro mobilní platformu android se objevila pom¥rn¥ nedávno. Na Android Marketu byla, v dob¥ psaní této práce, zdarma nabízena ve verzi 0.9.3. Jako u ostatních produkt· spole£nosti Google, i tato aplikace je velice uºivatelsky p°ív¥tivá. Gracké prost°edí je velice p°ehledné a propracované. Ovládání je jednoduché a intuitivní. Disponuje funkcemi jako sdílení £lánk·, zna£kování a hv¥zdi£kování. Propracované je vyhledávání £lánk· a zdroj·. P°íjemná je moºnost nadenovat si více ú£t· a p°echázet mezi nimi. Práce s aplikací je velice plynulá, nedochází k ºádnému zamrzání. Uºite£ná m·ºe být 7 8 KAPITOLA 3. EXISTUJÍCÍ EENÍ GOOGLE READER TEEK navigace na stránce pomocí tla£ítek pro ovládání zvuku. Zásadním nedostatkem této aplikace je nutnost mít stále p°ipojení k internetu, protoºe nepodporuje ºádnou moºnost oine práce, ale to je nejspí²e jedna ze strategií této spole£nosti. Obejdeme-li se bez podpory více ú£t·, tak £te£ka nep°iná²í nic navíc oproti mobilní webové verzi Google Readeru. 3.3 NewsRob NewsRob je jedna ze znám¥j²ích Atom/RSS £te£ek synchronizovaných s Google Reader ú£tem. Bohuºel tu op¥t chybí moºnost denovat si více ú£t·. Je nabízena v placené a volné verzi. te£ka umí pracovat s hv¥zdi£kami a ²títky. Uºivatelské ²títky stejn¥ jako u gReaderu nelze p°idávat, ale pouze £íst. V základní verzi nelze p°idávat nové informa£ní kanály, coº je velkým hendikepem. Uºivatelské prost°edí není tak pestré, je jednodu²²í, coº ale nepovaºuji za nevýhodu, ale spí²e naopak. Placená verze p°iná²í moºnost p°epnout do no£ního reºimu, tedy tmavého grackého tématu, které tolik nenamáhá o£i. Aplikace je plynulá, nedochází k zamrznutí. te£ka nabízí také mód oine £tení. Na výb¥r je moºnost stahovat webové stránky s obrázky nebo pouze text. Nechybí zde systém oznámení nových zpráv v notika£ní li²t¥ opera£ního systému. Testovaná aplikace byla ve verzi 4.7. Kapitola 4 Google Reader API V této kapitole se podíváme detailn¥ni na sluºbu Google Reader a moºnosti práce s ním pomocí Google Data Protokolu. 4.1 Google Reader Online syndikaci, tedy dodávky aktualizovaných informací z r·zných zdroj·, nabízí jiº v¥t²ina zpravodajských server· a blog·. T¥mto zdroj·m se také °íká kanály. V sou£asné dob¥ jsou nejznám¥j²í a nejroz²í°en¥j²í dva formáty online syndikace obsahu, které jsou zaloºené na jazyce XML. Prvním je star²í RSS (Really Simple Syndication)[10] formát. První verze byla vyvinuta spole£ností Netscape v roce 1999 pod ozna£ením RSS 0.90. Formát nabízel pouze velmi omezený soubor informací jako název, anotaci a URL p°ísp¥vku. V sou£asné dob¥ máme verzi 2.0, která významn¥ roz²i°uje informa£ní soubor. Udává datum publikace, autora, komentá°e, kategorii a dal²í volitelné poloºky. Druhým formátem je Atom[3], který vznikl v roce 2005 jako nástupce RSS. P°iná²í vylep²ení n¥kterých vlastností RSS. P°idává povinnost uvést jedine£ný identikátor a datum poslední aktualizace. P°idává nepovinný element pro obsah £lánku a moºnost denovat formát obsahu. Google Reader[6] je online £te£ka webového obsahu od kalifornské spole£nosti Google. Sluºba byla spu²t¥na v roce 2005 jako beta testovací verze, v roce 2007 byl zahájen ostrý provoz. K online £te£ce se lze p°ipojit odkudkoliv, odpadá tedy závislost na konkrétním za°ízení. V roce 2006 bylo spu²t¥no mobilní rozhraní webu. Sluºba nabízí velmi zajímavou alternativu k b¥ºným aplikacím £te£ek RSS kanál·. Jednoduchá a velice p°ehledná graka, intuitivní ovládání a spousta dopl¬kových funkcí d¥lá z tohoto produktu velmi zajímavý a uºivatelsky p°ív¥tivý nástroj. Pro lep²í orientaci v odebíraných novinkách nabízí sluºba podporu sloºek a uºivatelských ²títk·, pomocí nichº lze £lánky d¥lit do r·zných kategorií. Samoz°ejmostí je ozna£ování zpráv jako p°e£tené resp. nep°e£tené a hv¥zdi£kování oblíbených poloºek, jako tomu je i u ostatních produkt· této spole£nosti. Velice dob°e je zpracované vyhledávání a správa kanál·, lze vyhledávat podle kategorie, názvu nebo obsahu. Dal²í roz²í°ením je moºnost sdílení poloºek a poznámek s p°áteli. Práci s £te£kou urychluje podpora klávesových zkratek pro nej£ast¥ji pouºívané funkce. 9 10 KAPITOLA 4. 4.2 GOOGLE READER API Google API Pro vývojá°e, kte°í integrují produkty od spole£nosti Google do svých aplikací, je nabízeno k v¥t²in¥ sluºeb aplika£ní programové rozhraní (API)[20]. Podporované programovací a skriptovací jazyky pro klientské knihovny jsou Java, C, Python, PHP, Objective-C, JS a Ruby. Distribuovány jsou jak zdrojové kódy, tak i zkompilované knihovny. API je zaloºeno na Google Data Protokolu, zkrácen¥ ozna£ováno jako GData. Google Reader v sou£asné dob¥ nepat°í mezi podporované sluºby, v aplikaci tedy vytvá°ím modul, který p°ímo p°istupuje na GData protokol. Díky neexistenci ociální dokumentace pro Google Reader, jsou informace pouºité p°i vývoji modulu získané bu¤ z neociálních zdroj· 1 nebo pomocí odposlechu do- taz· a odpov¥dí monitorovacím programem Wireshark nebo dopl¬kem Firebug pro webový prohlíºe£ Mozilla Firefox. 4.2.1 Google Data Protokol Google Data Protokol[16] obecn¥ slouºí pro psaní, úpravu a £tení webového obsahu. Je zaloºen na REST (Representational State Transfer)[9] architektu°e, která byla navrºena pro distribuované systémy. REST je datov¥ orientován, tvo°í rozhraní pro p°ístup ke zdroj·m. V²echny zdroje jsou jednozna£n¥ denovány pomocí URI. Pro p°ístup k dat·m vyuºívá metody HTTP protokolu. Metoda GET slouºí pro získání dat, metodou POST naopak data vytvá°íme. Metoda PUT provádí úpravu dat a kone£n¥ metoda DELETE odebírá ur£ené zdroje. Klient pro REST aplikace je pom¥rn¥ jednoduchý, m·ºe to být i webový prohlíºe£. Google Reader tvo°í t°i základní vrstvy. První vrstvu tvo°í Atom/RSS parser. Druhá, databázová, vrstva uchovává seznamy odebíraných zdroj·, uºivatelská nastavení a dopl¬kové informace ke zprávám. T°etí, tedy poslední vrstva tvo°í uºivatelské prost°edí. Pomocí GData protokolu lze p°istupovat ke v²em vrstvám Google Readeru. V této práci je vyuºíváno hlavn¥ první a druhé vrstvy komunika£ního protokolu. Základní API jako správa zdroj· a zpráv zaji²´uje druhá vrstva. GData protokol v sou£asné dob¥ podporuje dva primární p°ístupy k dat·m: • AtomPub(Atom Publishing Protocol)[3] Data jsou posílány ve standartní syndika£ním Atom formátu. AtomPub je aplika£ní protokol pro publikování a úpravu webového obsahu. • JSON(JavaScript Object Notation)[19] Data jsou posílané v JSON formátu. JSON je zaloºen na syntaxi jazyka JavaScript, jedná se o odleh£ený snadno analyzovatelný formát pro vým¥nu dat. 4.2.2 Ov¥°ovaní identity Aplikace vyuºívající GData protokol mají omezený p°ístup k uºivatelským ú£t·m. V²echny poºadavky na p°ístup musí být ov¥°eny. Ov¥°ení p°ístupu se skládá ze dvou £ástí, tj. autentizace a autorizace. Autentizace umoº¬uje p°ihlá²ení ke sluºb¥ pomocí Google ú£tu, zárove¬ v²echny poºadavky na uºivatelská data musí být autorizovány. GData p°iná²í dv¥ základní metody ov¥°ení identity ClientLogin a OAuth. 1 Neociální popis API dostupný na http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI 4.2. 11 GOOGLE API 4.2.2.1 ClientLogin ClientLogin[15] je první ze zp·sob·, jak se p°ihlásit k n¥jaké sluºb¥, která podporuje GData protokol. Tento zp·sob ov¥°ení je ur£en pro desktopové aplikace. Na obrázku je nazna£ena komunikace p°i ov¥°ování identity uºivatele. Obrázek 4.1: Komunikace p°i p°ihla²ování uºivatele P°es protokol HTTPS posíláme uºivatelské jméno a heslo. Pokud ov¥°ení prob¥hne v po°ádku, autoriza£ní server ode²le trojici parametr·: Auth, SID a LSID. Nejd·leºit¥j²ím je Auth parametr. Tento °et¥zec je platný aº do ukon£ení sezení a pomocí n¥ho autorizujeme kaºdý odesílaný poºadavek. D°íve se pro ov¥°ení pouºíval parametr SID (Session ID). Autoriza£ní server také m·ºe b¥hem ov¥°ování, na obranu proti útok·m robot·, poslat CAPTCHA 2 dotaz. 4.2.2.2 OAuth OAuth[27] je otev°ený protokol pro ov¥°ování identity uºivatel·. Pouºívá se spí²e u webových aplikací. Tento protokol p°iná²í moºnost vyuºití jednoho ú£tu (nap°. Google ú£tu) k ov¥°ení u více sluºeb, tyto sluºby mohou být nadstavbou nad aplikací, která OAuth nabízí, a p°itom nesdílíme p°ihla²ovací údaje se t°etí stranou. Princip je zaloºen na vým¥n¥ token· a klí£·. Tento zp·sob v aplikaci £te£ky nevyuºívám a uvádím ho zde jen pro úplnost. 2 CAPTCHA je technika pouºívaná na webu pro rozli²ení lidských uºivatel· od robot·. Uºivateli je poslán vygenerovaný obrázek, nej£ast¥ji s n¥jakým textem, který uºivatel m·sí rozeznat a poslat zp¥t serveru. 12 KAPITOLA 4. GOOGLE READER API Kapitola 5 Analýza a návrh °e²ení V této analytické £ásti nejd°íve rozeberu technologie, které jsem v rámci tohoto projektu zvolil. Dále se podíváme na domény, které se v systému vyskytují a na jejich vzájemné vztahy. Nakonec se zam¥°ím na p°ípady uºití a jejich popis. Analýzu popí²u separátn¥ pro ob¥ £ásti práce. 5.1 Analýza a návrh £te£ky 5.1.1 Pouºité technologie Neodmyslitelnou sou£ástí návrhu systému je volba technologie, na které bude systém postaven. V p°ípad¥ £te£ky pro mobilní telefony s opera£ním systémem Android m·ºeme volit mezi psaním nativních aplikací v programovacím jazyce C/C++ a psaním aplikací postavených na Android aplika£ním frameworku v jazyce Java. Nativní aplikace p°iná²ejí sice vy²²í výkon, ale musí být kompilovány pro konkrétní procesor. Naopak programy psané na základ¥ aplika£ního frameworku jsou p°enositelné. Program £te£ky není kritický na výkon, takºe jsem pro implementaci zvolil aplika£ní framework. 5.1.1.1 Android aplika£ní framework Aplika£ní framework[13] umoº¬uje vývojá°·m vytvá°et p°enositelné aplikace, které mohou p°istupovat na v²echny hardwarové komponenty. Hlavním cílem je zjednodu²ení vývoje opakovaným pouºitím komponent. Framework je napsán v jazyce Java a b¥ºí nad Dalvik virtuálním strojem a systémovými knihovnami. Dalvik VM (Virtual Machine)[5] má registrov¥ orientovanou instruk£ní sadu, tím redukuje po£et instrukcí. Programy zkompilované do bytecodu pro Dalvik VM nejsou tedy kompatibilní s klasickým Java VM, které má zásobníkov¥ orientovanou instruk£ní sadu. Samotný framework se skládá z komponent, nejd·leºit¥j²í zde uvedu se stru£ným popisem. • Telephony Manager Poskytuje p°ístup k samotným funkcím telefonu, k informacím o sítích a o p°ipojení p°ístroje. 13 14 KAPITOLA 5. • ANALÝZA A NÁVRH EENÍ Content Providers Poskytovatel obsahu je jedinou moºností, jak sdílet data mezi aplikacemi. Android nabízí správce pro v²echny b¥ºné typy dat. Lze také vytvá°et vlastní správce obsahu. • Resource Manager Správce zdroj· poskytuje p°ístup k r·zným zdroj·m, jako jsou obrázky, lokalizované texty a kongura£ní soubory. • Activity Manager Správce aktivit spravuje ºivotní cyklus celé aplikace. • View System Systém zobrazení nabízí sadu grackých komponent, jako jsou tla- £ítka, textová pole, tabulky, dialogy a dokonce i webový prohlíºe£. • Notication Manager Umoº¬uje aplikacím b¥ºícím na pozadí upozor¬ovat na ur£itou událost. Upozorn¥ní m·ºe probíhat v rámci notika£ní li²ty v systému, pomocí kontrolní LED diody, zvuku nebo vibrací. 5.1.2 Analytický doménový model Na obrázku 5.1 je vykreslen doménový model aplikace, který znázor¬uje v²echny domény, které se v systému vyskytují, i s jejich vzájemnými vazbami. Obrázek 5.1: ExtBrain te£ka - Doménový model Hlavní doménou je Doména Ú£et. Rozeznáváme dva typy ú£t·: ImapÚ£et a GReaderÚ£et. Typ drºí informaci, o který typ ú£tu se jedná. U ú£tu evidujeme p°ihla²ovací údaje ke sluºbám Google Readeru nebo k IMAP serveru. Imapový ú£et je²t¥ p°idává jméno serveru a port, na kterém komunikuje. Uºivatelskýtítek je doména reprezentující ²títek, který byl vytvo°en uºivatelem k danému ú£tu. Systém ²títk· slouºí k lep²í orientaci mezi jednotlivými poloºkami. Dal²í nemén¥ d·leºitou doménou je Zpráva. Reprezentuje poloºku z odebíraných zdroj·, tedy imapovou zprávu, nebo £lánek z Google Readeru. U zprávy evidujeme postupn¥ jedine£ný identikátor, tedy URL £lánku nebo UID £íslo imapové zprávy, titulek, autora zprávy, 5.1. ANALÝZA A NÁVRH TEKY 15 samotný text a kone£n¥ datum poslední aktualizace. Kaºdou zprávu lze libovoln¥ ozna£ovat uºivatelskými ²títky, hv¥zdi£kou nebo je lze ozna£it jako p°e£tené resp. nep°e£tené. K tomuto ú£elu slouºí práv¥ doména títek. U ²títku rozeznáváme samotný text resp. ozna£ení ²títku a zna£ku. Zna£ka °íká, zda je ²títek p°i°azen resp. odebrán. 5.1.3 P°ípady uºití Model p°ípadu uºití je obrazem £inností, které m·ºe aplikace vykonávat prost°ednictvím interakce s uºivatelem. Do zna£né míry vychází z funk£ních poºadavk· denovaných v kapitole 2.3.1. V rámci aplikace guruje pouze jedna role, a to uºivatel. Jednotlivé p°ípady uºití pro £te£ku jsou uvedeny na obrázku 5.2, jejich popis uvádím níºe. Obrázek 5.2: ExtBrain te£ka - P°ípady uºití • P°idání resp. odebrání ú£tu Uºivatel na úvodní obrazovce se seznamem denovaných ú£t· zvolí v menu poloºku nový ú£et, dále vybere typ ú£tu a vyplní poºadované údaje. P°i mazání ú£tu zvolí ze seznamu daný ú£et a v kontextovém menu vybere moºnost odebrat. • Editace nastavení ú£tu Uºivatel na obrazovce se seznamem ú£t· zvolí poºadovaný ú£et a v kontextovém menu vybere moºnost upravit. Zm¥ní údaje ve formulá°i a uloºí nové nastavení. • Volba online resp. oine módu Tato funkce je aktivní pouze, pokud práv¥ uºivatel pracuje s imapovým ú£tem. P°ednastavena je práce v oine reºimu. Pokud je moºnost p°ipojení k internetu, tak se uºivatel v menu m·ºe p°epnout do online reºimu. 16 KAPITOLA 5. • ANALÝZA A NÁVRH EENÍ P°idání resp. odebrání zdroje Jedná se o moºnost p°idání resp. smazání Atom/RSS kanálu do resp. ze seznamu odebíraných novinek. Tato funkce je dostupná pouze z Google Reader ú£t·. • Ozna£ení resp. odzna£ení zprávy Kaºdou zprávu lze ozna£it pomocí hv¥zdi£ky nebo ²títku. Ozna£it lze zprávu také jako p°e£tenou resp. nep°e£tenou. V²echny tyto moºnosti slouºí k lep²í orientaci ve zprávách. P°idání zna£ek lze provést bu¤ v náhledu £tení zprávy, nebo rovnou v seznamu zpráv (pomocí kontextového menu). • Synchronizace zpráv Uºivatel po zvolení moºnosti synchronizovat v hlavním menu, spustí proces stahování nových a aktualizovaných zpráv z imapového serveru. Naopak na server se promítnou zm¥ny ²títk· vzniklé v oine reºimu práce. • Sdílení zprávy V rámci Google Readeru lze sdílet £lánky s p°áteli. Pomocí kontextového menu lze nastavit zprávu jako sdílenou. • Vytvo°ení uºivatelského ²títku Pro lep²í orientaci v odebíraných novinkách lze pomocí uºivatelských ²títk· t°ídit £lánky do kategorií. P°idat nový ²títek lze v náhledu zprávy nebo p°ímo v seznamu zpráv. 5.2. 5.2 ANALÝZA A NÁVRH SERVEROVÉ APLIKACE FEEDEXTRACTOR 17 Analýza a návrh serverové aplikace feedExtractor 5.2.1 Pouºité technologie ExtBrain feedExtractor je serverová aplikace, která musí být uºivatel·m dostupná p°es webové rozhraní. Zvolil jsem platformu Java Enterprise Edition (zkrácen¥ J2EE nebo Java EE)[8], jejíº sou£ástí jsou technologie pro tvorbu dynamických webových stránek, kterým je v¥nována následující podkapitola. J2EE je jinak komplexní sada pravidel, doporu£ení a technologií, které slouºí k návrhu, vývoji a nasazení vícevrstvých aplikací. 5.2.1.1 Servlety a JSP Servlety[30] jsou java objekty umíst¥né na webovém serveru, kde obsluhují HTTP protokol. Jedná se o základní technologii, na které jsou postaveny dal²í vrstvy webových aplikací na platform¥ Java. Servlety p°iná²í sadu výhod oproti aplikacím postaveným na klasickém CGI (Common Gateway Interface)[4] protokolu. Mezi ty hlavní pat°í p°enositelnost mezi r·znými aplika£ními servery a cena, kde nejsou nutné ºádné po£áte£ní investice do licencovaných knihoven a program·. Servlety mohou generovat dynamický obsah, celé webové stránky, nebo tvo°it aplika£ní logiku. Vytvá°ení stránek jen pomocí servlet· je teºkopádné a proto vzniká nadstavba v podob¥ Java Server Pages. JSP (Java Server Pages)[23] je serverov¥ orientovaná technologie, která kombinuje statické HTML stránky s dynamicky generovaným obsahem. Pomocí speciálních zna£ek, velice podobným samotnému HTML, vkládáme dynamické £ásti stránek do prezentace. Zdrojový kód stránky je nejd°íve p°ekládán na servlet a následn¥ zkompilován. JSP technologie vznikala jako konkuren£ní °e²ení k Active Server Pages (ASP)[2] od spole£nosti Microsoft. Hlavní výhodou JSP oproti ASP je vyuºití programovacího jazyka Java. Java je komplexní a platform¥ nezávislá, aplikace tedy není vázána na konkrétní server. 5.2.2 Architektura ExtBrain feedExtractor je webov¥ orientovaný systém, jedná se tedy o komunikaci typu klientserver. Komunikace s klientem probíhá p°es HTTP protokol. Celá architektura je schematicky zachycena na obrázku 5.3. Zvolil jsem architektonický návrhový vzor ModelView-Controller (MVC)[26], který d¥lí aplikaci na t°i separátní komponenty. • Model P°edstavuje vnit°ní reprezentaci zpracovávaných dat a aplika£ní logiku, která tato data zpracovává. K tomuto ú£elu vyuºívám tzv. JavaBeans, jedná se o znovupouºitelné komponenty, které reagují na r·zné události, nebo naopak události vyvolávají. Drºí sv·j vnit°ní stav, který mohou ukládat pro pozd¥j²í pouºití. V tomto konkrétním p°ípad¥ vyuºívám jako datové úloºi²t¥ databázi a imapový server. • View Pohled tvo°í prezenta£ní vrstvu aplikace. P°evádí data reprezentovaná model do gracké podoby p°ív¥tivé uºivateli. Pohled je tvo°en JSP stránkami a statickými 18 KAPITOLA 5. ANALÝZA A NÁVRH EENÍ 1 HTML stránkami. Celé uºivatelské prost°edí vylep²ují javascriptové knihovny jQuery 2 a jQuery UI . • Controller Controller neboli °adi£, reaguje na události, které generuje uºivatel a provádí zm¥ny datového modelu nebo pohledu. adi£ je tvo°en servlety, které reagují na HTTP poºadavky uºivatele, na základ¥ kterých dojde k p°esm¥rování na konkrétní JSP stránku s poºadovanými daty modelu. Obrázek 5.3: Architektura Díky takto zvolené architektu°e není nutné p°i zm¥n¥ jedné komponenty prován¥t modikaci i ostatních £ástí systému. Dovoluje vytvo°ení více pohled· nad jedním datovým modelem, nap°. webové rozhraní, mobilní rozhraní nebo desktopové °e²ení. MVC architektura vede k snadn¥j²í roz²i°itelnosti a modikovatelnosti, tedy k nan£ní i £asové úspo°e p°i vývoji. 5.2.3 Analytický doménový model Na obrázku 5.4 je vykreslen doménový model ExtBrain feedExtractoru, který znázor¬uje v²echny d·leºité domény, které se v systému vyskytují, a jejich vzájemné vazby. Hlavní doménu tvo°í Ú£et, který drºí informaci o p°ihla²ovacích údajích uºivatele a o nastavení imapového serveru. Tyto údaje jsou d·leºité pro p°ipojení feedExtractoru do dané schránky, ve které provádí aktualizace zpráv. K ú£tu se je²t¥ p°i°azuje jedna nebo více rolí, v které daný uºivatel v systému guruje. Rozeznáváme dv¥ základní role, a to uºivatelská a administrátorská. Administrátor má navíc moºnost p°ístupu ke konguraci aplika£ního serveru. Dal²í d·leºitou doménou je Zpráva, která reprezentuje poloºku z odebíraných zdroj·. U zprávy evidujeme jedine£ný identikátor GUID, který ve standardu RSS 2.0 není povinné 1 jQuery je javaskriptový framework zjednodu²ující rutinní £innosti p°i tvorb¥ HTML stránek. Více informací na http://jquery.com/ 2 jQuery UI je gracký dopln¥k ke knihovn¥ jQuery. Slouºí pro snadnou tvorbu uºivatelského rozhraní. Více informací na http://jqueryui.com/ 5.2. ANALÝZA A NÁVRH SERVEROVÉ APLIKACE FEEDEXTRACTOR 19 Obrázek 5.4: ExtBrain feedExtractor - Doménový model uvád¥t. Z tohoto d·vodu eviduji je²t¥ URL, která také jednozna£n¥ denuje daný £lánek, problém ale m·ºe vzniknou se zm¥nou publika£ního systému daného serveru, kde m·ºe dojít ke zm¥n¥ struktury URL. Dále evidujeme titulek zprávy, datum poslední zm¥ny a samotný obsah £lánku. Poslední doménou je Zdroj reprezentující odebíraný informa£ní kanál. Podporované jsou oba hlavní syndika£ní formáty, tedy Atom a RSS. U zdroje evidujeme jméno, URL a vzor. Velmi d·leºitým atributem je vzor, pomocí kterého pak m·ºe ExtBrain feedExtractor automaticky extrahovat obsah z informa£ního kanálu. 5.2.4 P°ípady uºití V systému ExtBrain feedExtractor guruje jediný ú£astník, a to samotný uºivatel. Jednotlivé p°ípady uºití jsou uvedeny na obrázku 5.5, jejich popis uvádím níºe. Obrázek 5.5: ExtBrain feedExtractor - P°ípady uºití 20 KAPITOLA 5. • ANALÝZA A NÁVRH EENÍ Registrace Pro p°ístup do systému je nutné nejd°íve ov¥°it identitu uºivatele. Pokud uºivatel není zaregistrován, systém vedle moºnosti p°ihlá²ení nabízí moºnost vytvo°ení nového ú£tu. Po zvolení této moºnosti je uºivatel povinen vyplnit v²echny poºadované údaje o svém imapovém serveru, na který chce nechat novinky p°esm¥rovat. • Editace nastavení ú£tu V p°ípad¥ chybného vypln¥ní údaj· p°i registraci nabízí systém (po p°ihlá²ení) moºnost úpravy nastavení ú£tu. • P°idání resp. odebrání zdroje V náhledu odebíraných zdroj· m·ºe uºivatel p°idat resp. odebrat Atom/RSS informa£ní kanál. Denice nového zdroje £tená° provede zadání libovolného jména a URL kanálu. • Denice extrak£ních pravidel ExtBrain feedExtractor prochází odebírané zdroje uºivatel· a na základ¥ pravidel extrahuje obsah £lánk·. Uºivatel nejd°íve ze seznamu odebíraných zdroj· vybere jeden, pro který chce denovat nová extrak£ní pravidla. Systém uºivatele p°esm¥ruje na stránku náhledu zprávy daného zdroje, kde uºivatel zvolí extrak£ní pravidla. Tento krok zárove¬ ov¥°uje, zda daný zdroj existuje resp. obsahuje-li alespo¬ jednu poloºku. Kapitola 6 Realizace V této kapitole se nejd°íve krátce zam¥°ím na vývojové nástroje pouºité p°i realizaci £te£ky a feedExtractoru. Dále se budu v¥novat popisu jednotlivých modul· £te£ky a jejich rozhraní. Poslední £ást této kapitoly je v¥nována popisu ExtBrain feedExtractoru se zam¥°ením na princip denice extrak£ních pravidel a samotnou extrakci text· z webových stránek na základ¥ t¥chto pravidel. 6.1 Nástroje 6.1.1 Android SDK Pro zjednodu²ení a urychlení vývoje aplikací pro mobilní platformu Android je vývojá°·m zdarma poskytnuta sada nástroj· Android Software Development Kit(SDK)[14]. SDK se skládá z knihoven, dokumentace aplika£ního frameworku, testovacích nástroj·, emulátoru systému a kompila£ních nástroj·. Emulátor telefonu nabízí kompletní prost°edí Androidu. Emulovat lze v²echny dostupné verze systému. Emulátor nabízí r·zné kongurace systému, jako je velikost opera£ní pam¥ti, velikost pam¥´ové karty, rozli²ení obrazovky a r·zné hardwarové ovládací prvky. Zajímavou moºností je simulace b¥ºných událostí jako p°íchozí hovor, zm¥na GPS sou°adnic polohy telefonu, p°íchozí SMS a emailová zpráva. 6.1.2 ADT plugin Android Development Tools(ADT)[12] je ociáln¥ podporovaný plugin pro open source vývojové prost°edí Eclipse. ADT tedy p°iná²í roz²í°ení prost°edí Eclipse o moºnosti rychlé kongurace nového Android projektu, vytvá°ení uºivatelského prost°edí pomocí grackých nástroj·, lad¥ní aplikací a o export výsledné *.apk aplikace, kterou jiº lze rovnou instalovat na reálné za°ízení. Nástroj ADT je stejn¥ jako samotné vývojové prost°edí Eclipse zcela bezplatný. 21 22 KAPITOLA 6. REALIZACE 6.1.3 Enterprise Architect Enterprise Architect(EA)[17] je komplexní nástroj pro tvorbu vývojových diagram· a dal²ích schémat. Pro tvorbu model· vyuºívá UML jazyk. Nabízí prost°edky pro generování dokumentace a report· p°ímo z model· pomocí editovatelných ²ablon, podporované formáty jsou RTF, HTML, a XML. Generovat lze i zdrojové kódy na základ¥ diagram· a naopak, podporované jsou snad v²echny významn¥j²í vy²²í programovací a skriptovací jazyky, jako jsou C++, C#, Delphi, Java, VB.Net, ActionScript a PHP. Tento nástroj lze integrovat s jinými nástroji a je snadno roz²i°itelný o dal²í nové typy model·. EA v profesionální edici také poskytuje podporu týmové kooperace, lad¥ní a vizualizaci b¥ºících aplikací. 6.1.4 Mercurial Verzovací systémy zdrojových kód· jsou nedílnou sou£ástí moderního vývoje softwarových projekt·. Mercurial[24] je p°edstavitel distribuovaných verzovacích systém· zdrojových kód· pro softwarové vývojá°e. Je dostupný pro v²echny významn¥j²í opera£ní systémy, jako jsou Windows, Linux, Mac OS X a dal²í. Pouºívat lze bu¤ p°ímo z p°íkazové °ádky, nebo pomocí n¥jaké gracké nadstavby. Já jsem zvolil gracké roz²í°ení pro Windows TortoiseHg. Mercurial se vyzna£uje vysokou rychlostí a spolehlivostí. Verzovací systém p°iná²í výhody hlavn¥ p°i vývoji ve v¥t²ím po£tu osob, p°esto ºe jsem na projektu pracoval sám, p°ineslo mi pouºití takového systému v¥t²í p°ehled v projektu, moºnost vracet se ke star²ím verzím kódu, a asi hlavní výhodou je pravidelné zálohování projektu mimo vlastní stanici. 6.2 Implementace ExtBrain £te£ky Návrh modulu pro £tení zpráv pro mobilní platformu Android je zam¥°en na modularitu. Kaºdý modul je zodpov¥dný za získávání informací z r·zných zdroj· a p°edání t¥chto informací prezenta£ní vrstv¥ aplikace. Dochází tak k odd¥lení dat od jejich prezentace, tento koncept vede ke snadn¥j²ímu budoucímu roz²í°ení £te£ky o dal²í typy informa£ních zdroj·. Schematické znázorn¥ní modul· a jejich vazeb je uvedeno na obrázku 6.1. Popis jednotlivých modul· uvádím níºe v samostatných podkapitolách. Obrázek 6.1: Android £te£ka - moduly 6.2. 23 IMPLEMENTACE EXTBRAIN TEKY 6.2.1 GoogleReader Modul GoogleReader, jak jiº název napovídá, je zprost°edkovatelem dat a funkcí sluºby Google Reader. Modul vytvá°í API obalující GData protokol, jehoº princip je zaloºen na posílání GET nebo POST poºadavk· a následné zpracování odpov¥di ve formátu JSON p°ípadn¥ XML. Pro práci se soubory ve formátu JSON obsahuje Android aplika£ní framework sadu t°íd v balíku org.json. Modul implementuje jednotné rozhraní IReader, které obsahuje v²echny d·leºité metody pro práci se zdroji. Více o protokolu GData a práci s ním je uvedeno v kapitole 4.2.1. 6.2.2 IMAPReader IMAPReader je modul, který se stará o komunikaci s po²tovním serverem p°es IMAP protokol. IMAP (Internet Message Access Protocol)[7] je internetový protokol pro vzdálený p°ístup k elektronické po²t¥. Vytvá°í trvalé spojení aplikace se serverem. Nabízí pokro£ilé funkce, jako jsou sloºky, ²títky, vyhledávání na stran¥ severu a práce v oine reºimu. Tyto vlastnosti se velice hodí pro ú£el ukládání a synchronizace £lánk· i s dodate£nými informacemi, tedy s uºivatelskými zna£kami a ²títky. Koncept sloºek zase umoº¬uje p°ehledné odd¥lení £lánk· od ostatní po²ty uºivatele. 1 Pro práci s IMAP protokolem vyuºívám knihovny Java Mail API . Na platform¥ Android není moºné pouºít standardní knihovny mail.jar, protoºe není kompatibilní s Dalvik vir- 2 tuálním strojem. Na²t¥stí existuje open source projekt JavaMail-Android , který vychází z p·vodního Java Mail API a vytvá°í port kompletního API pro platformu Android. 6.2.3 IMAPLocalReader Modul IMAPLocalReader slouºí k práci s £lánky, i kdyº zrovna není k dispozici p°ipojení k internetu. Uºivatel si stáhne v²echny zprávy ze svého serveru a uloºí do lokální databáze, pak s nimi m·ºe pracovat i bez p°ipojení. Android aplika£ní framework v sou£asné dob¥ podporuje pouze souborovou databázi SQLite. SQLite[31] je rela£ní databázový systém, který je tvo°en pouze jednou knihovnou. Je rychlej²í a systémov¥ mén¥ náro£ná neº klasická klient/server databáze. SQLite implementuje tém¥° celý standard SQL92. U této databáze odpadá nutnost kongurace. Je vhodná spí²e pro men²í aplikace a díky své systémové nenáro£nosti i pro pouºití na mobilních za°ízeních. Android aplika£ní framework p°iná²í plnou podporu pro tuto databázi. Vytvo°ení nové databáze se provádí pomocí roz²í°ení t°ídy android.database.sqlite.SQLiteOpenHelper, onCreate() provedeme CREATE SQL p°íkazy. Pro práci a sdílení databáze v SQLiteDBAdapter, která implementuje v²echny pot°ebné metody pro ukládání, modikaci a mazání £lánk· a ²títk·. SQLiteDBAdapter je implementací v jejíº metod¥ rámci aplikace jsem vytvo°il t°ídu návrhového vzoru singleton. Existuje tedy pouze jediná instance této t°ídy, díky níº sdílím databázové spojení mezi v²emi aktivitami. Koncept aktivit je uveden v následující kapitole. 1 Knihovna poskytuje platform¥ a protokolov¥ nezávislý framework pro tvorbu emailových klient· a jiných aplikací. Více informací na http://www.oracle.com/technetwork/java/javamail/index.html. 2 Voln¥ ke staºení na http://code.google.com/p/javamail-android. 24 KAPITOLA 6. REALIZACE 6.2.4 Gracké uºivatelské rozhraní Aplikace psané pro platformu Android se skládají z nezávislých komponent, tzv. aktivit[11]. Kaºdá aktivita je samostatná t°ída, která je potomkem t°ídy android.app.Activity. Ak- tivita p°edstavuje vºdy jednu obrazovku aplikace, vytvá°í tedy uºivatelské prost°edí. P°i p°echodu z jedné aktivity na druhou se první aktivita pozastaví a uloºí na zásobník. Díky zásobníku je moºné se v aplikaci vracet zp¥t. Jednotlivé aktivity jsou na sob¥ absolutn¥ nezávislé, nesdílí spolu ºádné prom¥nné. Jediným zp·sobem jak p°edávat primitivní datové typy a objekty mezi jednotlivými aktivitami je pomocí speciální t°ídy nebo pomocí statických prvk·. T°ída Intent android.content.Intent slouºí k p°echodu z jedné aktivity na jinou. Kaºdý gracký prvek je potomkem t°ídy android.view.View. Android aplika£í fra- mework nabízí komplexní sadu grackých prvk·, jako jsou tla£ítka, textová pole, výb¥rová pole a rozbalovací nabídky. Uºivatelské prost°edí lze vytvá°et p°ímo v kódu dané aktivity. Tento zp·sob je ov²em nevhodný, protoºe neodd¥luje funk£ní kód od samotné prezentace. Aplika£ní framework umoº¬uje denovat gracké uºivatelské prost°edí pomocí kongura£ních XML soubor·, které jsou ozna£ovány jako resources a v projektu jsou uloºeny ve sloºce res. Tento koncept p°iná²í v¥t²í míru efektivity p°i tvorb¥ uºivatelského rozhraní. V sou£asné verzi Androidu 3 se kongura£ní soubory d¥lí pouze do základních skupin, jako jsou menu, layouty, hodnoty a dal²í podp·rné XML soubory. Dal²í rozd¥lení do podskupin v rámci skupiny není jiº moºné, coº se p°i v¥t²ím po£tu prvk· stává zna£n¥ nep°ehledné. Tento problém °e²ím pomocí prex· u jednotlivých soubor·. 6.3 Implementace ExtBrain feedExtractoru ExtBrain feedExtrator je webová aplikace zam¥°ená na automatickou extrakci obsahu webových stránek na základ¥ uºivatelsky denovaných pravidel. Hlavní d·raz p°i návrhu a implementaci byl kladen na jednoduchost a p°ehlednost uºivatelského prost°edí, snadné nasazení a roz²i°itelnost systému. V samotné aplikaci se uchovávají pouze informace o p°ihla²ovacích údajích, jménu a portu imapového serveru uºivatel·. Jako databázový systém jsem op¥t zvolil souborový databázový systém SQLite, stejn¥ jako v p°ípad¥ £te£ky. Odpadá tedy nutnost kongurace databázového serveru a jeho komunikace s aplikací. V²echny ostatní data má kaºdý uºivatel uloºené ve své emailové schránce, která je propojena s feedExtractorem pomocí IMAP protokolu. Tento koncept p°iná²í nezávislost uºivatelských dat na samostatném systému. Dal²í výhodou je dostupnost v²ech extrahovaných £lánk· pouze pomocí libovolného po²tovního klienta, na který je jiº uºivatel zvyklý. Nevýhodou m·ºe být sd¥lování hesla t°etí stran¥. Proto jsem 4 zvaºoval variantu zasílat £lánky jako b¥ºné emailové zprávy p°es SMTP protokol, coº by vedlo k duplikaci £asto aktualizovaných £lánk· ve schránce. V takto zvoleném konceptu by se nedalo garantovat doru£ení zprávy a také by nebylo moºno ur£it výchozí sloºku pro £lánky. Mimo samotných £lánk· uloºených jako b¥ºné emailové zprávy, jsou do schránek uºivatel· ukládány i seznamy odebíraných informa£ních kanál· a k nim p°íslu²ejících extrak£ních 3 Android platforma verze 2.3 Mail Transfer Protocol) je internetový protokol ur£ený pro p°enos zpráv elektronické 4 SMTP(Simple po²ty. 6.3. 25 IMPLEMENTACE EXTBRAIN FEEDEXTRACTORU pravidel. Tento seznam je ukládán ve formátu XML v t¥le speciální kongura£ní zprávy. Struktura této zprávy je uvedena v následujícím výpisu. <feeds> <feed id="URL zdroje"> <name>jméno zdroje</name> <pattern>extrak£ní pravidla odd¥lené £árkou</pattern> </feed> ... </feeds> Takto uloºená kongurace je snadno dostupná prakticky odkudkoli, je tedy v budoucnu moºné roz²í°it ExtBrain Android £te£ku práv¥ o editaci této kongurace. P°i aktualizaci obsahu £lánku nebo kongura£ní zprávy je nutné nejd°íve p·vodní zprávu odstranit a následn¥ vytvo°it novou s jiº aktualizovaným obsahem, IMAP protokol totiº neumoº¬uje modikaci textu zprávy. V následující £ásti kapitoly se zam¥°ím na princip denice extrak£ních pravidel a na nástroj SelectorGadget. Dále popí²u implementaci a konguraci automatické extrakce obsahu odebíraných £lánk· jednotlivých uºivatel·. Nakonec se zam¥°ím na popis nasazení celého systému. 6.3.1 SelectorGadget 5 SelectorGadget[29] je nástroj, který umoº¬uje generování minimálních CSS selektor· . SelectorGadget je tzv. bookmarklet, tedy externí skript vykonávaný nad r·znými webovými stránkami. Název bookmarklet vznikl od slova bookmark, tedy záloºka, kam se nej£ast¥ji tyto skripty do prohlíºe£e ukládají. Bookmarklety jsou psané ve skriptovacím jazyce JavaScript a slouºí nej£ast¥ji ke zm¥n¥ styl· stránek, jako je zm¥na velikosti a barvy písma nebo zm¥na pozadí na barvu, která bude mén¥ namáhavá pro o£i p°i £tení dlouhých text·. Dal²ím zajímavým vyuºitím je výb¥r obsahu denovaných element·, této moºnosti práv¥ vyuºívá nástroj SelectorGadget popsaný v následujícím odstavci. SelectorGadget jsem zvolil pro sv·j projekt, protoºe se jedná o velice zda°ilý skript, pomocí n¥hoº lze velice intuitivn¥ denovat obsah webových stránek. Díky tomu, ºe se jedná o open source projekt, není problém s úpravou skriptu pro konkrétní pouºití v rámci ExtBrain feedExtractoru. Nutné bylo doimplementovat funkci uloºení selektor·, skript tedy po stisku p°íslu²ného tla£ítka posílá poºadavek na servlet, který v²e uloºí k danému zdroji v kongura£ním souboru. Funkce skriptu jsou tv·rci garantovány pro webové prohlíºe£e Mozilla Firofox 4 a Safari 5, podle mé zku²enosti v²ak správn¥ funguje i v prohlíºe£ích Google Chrome 10 a Opera 11. Pro vyvolání skriptu sta£í zadat místo klasické URL javascript:skript SelectorGadget, tím prohlíºe£i °íkáme, ºe má vykonat daný skript nad momentáln¥ na£tenou stránkou. Skript m·ºeme spou²t¥t také pomocí kliknutí na klasický odkaz v HTML stránce, práv¥ tento zp·sob volání jsem vyuºil v rámci ExtBrain feedExtractoru. 5 Kompletní seznam a popis selektor· naleznete na http://www.w3.org/TR/CSS2/selector.html. 26 KAPITOLA 6. REALIZACE 6.3.2 Parser Parser je nejd·leºit¥j²í £ástí celého systému. Je spou²t¥n v pravidelných intervalech a provádí extrakci text· z webových stránek na základ¥ selektor·. K samotné extrakci jsem p·vodn¥ cht¥l vyuºít javascriptové knihovny jQuery, ale kv·li problému s kódováním stránek jsem nakonec zvolil knihovnu JSoup. 6.3.2.1 jQuery °e²ení Knihovna jQuery[1] °e²í problém výb¥ru libovolného elementu stránky pomocí CSS selektor·. Extrakce obsahu je velice snadná a efektivní, skript vykonávající samotnou extrakci textu uvádí následující výpis. var content = $('seznam selektor· odd¥lených £árkou').text(); ExtBrain feedExtractor je serverová aplikace, ne²lo by tedy o typické vyuºití javascriptu na klientské stran¥. Abychom mohli vyuºít sluºeb této knihovny i na stran¥ serveru, musíme simulovat prost°edí webového prohlíºe£e pomocí nástroj· Rhino a ENVjs. Knihovna Rhino[28] implementuje JavaScript v jazyce Java, ov²em neobsahuje funkce pro manipulaci s HTML dokumenty a prohlíºe£em, proto je nutné pouºít ENVjs[18] skript, který simuluju prost°edí webového prohlíºe£e. P°i extrakci nastal problém s kódováním stránek, protoºe v sou£asné verzi ENVjs je podporováno pouze UTF-8. 6.3.2.2 JSoup °e²ení Knihovna JSoup[22] poskytuje komplexní API pro práci HTML soubory. Umoº¬uje extrakci dat s vyuºitím DOM, CSS a funkcí vycházejícím s princip· jQuery. Výb¥r lze provád¥t na základ¥ typu elementu, jeho jedine£ného identikátoru, jména nebo CSS t°ídy. Pouºitím JSoup °e²ením p°icházíme o moºnost extrakce javaskriptem generovaného obsahu, který byl moºný v simulovaném prost°edí webového prohlíºe£e. 6.3.2.3 Automatické spou²t¥ní SchedulerServlet, java.util.Timer slouºící k plánování úloh. Kaºdá spu²t¥ná úloha Kongurace £asova£e je sou£ástí souboru web.xml, jehoº £ást je uvedena P°i spu²t¥ní aplikace feedExtractoru se automaticky spou²tí servlet který vytvá°í objekt t°ídy tvo°í nové vlákno. v následujícím výpisu. asový interval je zadáván v minutách. <servlet> <servlet-name>SchedulerServlet</servlet-name> <servlet-class>extractor.scheduler.SchedulerServlet</servlet-class> <init-param> <param-name>interval</param-name> <param-value>60</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 6.3. 27 IMPLEMENTACE EXTBRAIN FEEDEXTRACTORU V rámci ExtBrain feedExtractoru spou²tíme pouze jednu úlohu, a to Parser je potomkem Runnable. abstraktní t°ídy java.util.TimerTask, Parser. T°ída která implementuje rozhraní 6.3.3 Plán nasazení P°i návrhu aplikace feedExtractor byl kladen d·raz na snadné a rychlé nasazení bez nutnosti sloºitých a £asov¥ náro£ných kongurací. Obrázek 6.2 uvádí schematické znázorn¥ní nasazení systému. Obrázek 6.2: Diagram nasazení Jako aplika£ní server jsem zvolil Jetty 7[21], který je celý napsán v jazyce Java. Jetty je lehký HTTP server a javax.Servlet kontejner, který lze spustit prakticky na jakémkoli stroji, který má nainstalovanou podporu Javy. Fakt, ºe je tvo°en pouze sadou knihoven a kongura£ních soubor·, p°iná²í zajímavou moºnost spou²t¥ní a kongurace serveru p°ímo z java aplikace. Pro ú£ely nasazení feedExtracrotu jsem vytvo°il aplikaci ExtBrainHub, která se spou²tí jako b¥ºná java aplikace, odpadá tedy nutnost jakékoli instalace a kongurace systému. Pro takto navrºené nasazení systému je také nutné zvolit n¥jaký lehký databázový stroj. Pro tyto ú£ely op¥t vyuºívám SQLite databázi, stejn¥ jako v p°ípad¥ modulu £te£ky. 28 KAPITOLA 6. REALIZACE Kapitola 7 Testování Testování je nedílnou sou£ástí vývoje softwarových projekt·. V této kapitole se nejd°íve zam¥°ím na automatizované testování pomocí techniky Monkey, dále pak na testování samotnými uºivateli. 7.1 Monkey Monkey[25], tedy opice, je jedna z nejjednodu²²ích automatizovaných testovacích technik. Princip techniky je zaloºen na generování pseudonáhodných událostí nad testovanou aplikací. Název opice pochází ze samotného principu této techniky, lze ji p°ipodobnit k opici, která bez jakéhokoli rozmyslu zadává data a vyvolávat události pomocí klávesnice a jiných ovládacích prvk· daného za°ízení. Sou£ástí Android SDK je nástroj Monkey, pomocí kterého lze aplikovat tuto testovací techniku p°ímo v p°ístroji nebo emulátoru. Program vyvolává pseudonáhodné uºivatelské události jako je klikání, zadávání textu a £ísel, zm¥na polohy obrazovky, zm¥na klávesnice a mnoho dal²ích. Testování modulu pro £tení zpráv jsem provedl na emulátoru, vygenerováno bylo 10 000 uºivatelských událostí. Testovali se p°echody mezi jednotlivými obrazovkami aplikace, vyvolávání kontextových menu, zm¥na polohy obrazovky a zadávání náhodných hodnot do vstupních textových polí formulá°·. Pr·b¥h testování lze sledovat p°ímo na emulátoru jako animaci událostí a reakcí na n¥. V p°ípad¥ chyby se testování ukon£í s chybovým výpisem. B¥hem pr·b¥hu testu jsem odhalil chybu p°echodu mezi dv¥ma obrazovkami, p°i chybném vypln¥ní vstupních dat nového ú£tu. Chyba byla následn¥ odstran¥na. 7.2 Uºivatelské testování Testování výsledných aplikací, tj. modulu pro £tení zpráv pro Android a ExtBrain feedExtractor bylo zaji²t¥no vedoucím práce. Poznatky byly zaznamenány pro dal²í vývoj v rámci ExtBrain projektu. 29 30 KAPITOLA 7. TESTOVÁNÍ Kapitola 8 Záv¥r V rámci této práce jsem podle poºadavk· implementoval modul pro £tení zpráv pro mobilní platformu Android a serverovou aplikaci ExtBrain feedExtractor pro automatickou extrakci text· na základ¥ uºivatelsky denovaných pravidel. Modul pro £tení zpráv kombinuje odb¥r £lánk· ze sluºby Google Reader a p°íjem zpráv p°es IMAP protokol. Spole£nost Google nabízí vývojá°·m k v¥t²in¥ svých sluºeb aplika£ní programové rozhraní (API), ale pro Goole Reader v sou£asné dob¥ neexistuje ºádná klientská knihovna a dokonce ani ºádná ociální dokumentace Google Data Protokolu, kterému jsem v¥noval kapitolu 4.2.1. Jedním z p°ínosu této práce je naimplementovaný modul, který poskytuje základní API pro práci se sluºbou Google Reader. te£ka umoº¬uje synchronizované hv¥zdi£kování, ²títkování, sdílení £lánk· a p°idávání informa£ních zdroj·. Díky kombinaci s p°íjmem zpráv p°es IMAP protokol, umoº¬uje £te£ka online i oine reºim £tení, p°i lokálním ukládání pouze extrahovaných text· bez okolních prvk· stránek. Ve srovnání s existujícími °e²eními je hlavním p°ínosem práv¥ podpora tohoto oine reºimu £tení, naopak nevýhodou m·ºe být mén¥ propracované uºivatelské rozhraní, ale v rámci této práce jsem se snaºil vytvo°it hlavní funkcionalitu a vylep²ení GUI m·ºe být provedeno p°i dal²ím vývoji v rámci ExtBrain projektu. Dal²í zajímavé roz²í°ení aplikace se nabízí v p°idání dal²ích modul· pro odb¥r informací z r·zných zdroj·, nap°. Atom/RSS £te£ku nezávislou na Google Reader sluºb¥. V druhé £ásti této práce jsem se zabýval návrhem a implementací serverové aplikace ExtBrain feedExtractor, která prochází Atom/RSS zdroje uºivatel· a extrahuje jednotlivé £lánky na základ¥ uºivatelsky denovaných pravidel. Tyto texty jsou následn¥ p°es IMAP protokol ukládány do schránek zaregistrovaných odb¥ratel·. Nevýhodou zvolení IMAP protokolu m·ºe být nutnost sd¥lování hesla t°etí stran¥. Proto jsem zvaºoval variantu zasílání £lánk· jako b¥ºné emailové zprávy, coº by ale vedlo k duplikaci aktualizovaných £lánk· ve schránce. V takto zvoleném konceptu by se nedalo garantovat doru£ení zprávy a také by nebylo moºno ur£it výchozí sloºku pro ukládání £lánk·. ExtBrain feedExtractor v této fázi vývoje umoº¬uje registraci uºivatel·, správu odebíraných zdroj·, denici extrak£ních pravidel a samotnou automatickou extrakci. Sluºba je dostupná p°es uºivatelsky p°ív¥tivé webové rozhraní, u kterého jsem se zam¥°il hlavn¥ na funk£nost, jednoduchost a srozumitelnost. V rámci pokra£ování vývoje by se mohla vytvo°it celá °ada dopl¬k·, jako je nap°. vyhledávání informa£ních kanál· a synchronizace s Google Reader ú£ty. 31 32 KAPITOLA 8. ZÁV R Literatura [1] jQuery. jQuery Documentation. http://docs.jquery.com/Main_Page, [2] P°isp¥vatelé Wikipedie. stav z 19. 5. 2011. Active Server Pages [online]. 2011. [cit. 15. 4. 2011]. Dostupné z: <http://cs.wikipedia.org/wiki/Active_Server_Pages>. Atom (standard) [online]. 2011. [cit. 6. 5. 2011]. Dostupné z: [3] P°isp¥vatelé Wikipedie. <http://en.wikipedia.org/wiki/Atom_(standard)>. Common Gateway Interface [online]. 2011. [cit. 10. 3. 2011]. [4] P°isp¥vatelé Wikipedie. Dostupné z: <http://en.wikipedia.org/wiki/Common_Gateway_Interface>. [5] P°isp¥vatelé Wikipedie. Dalvik (software) [online]. 2011. [cit. 11. 5. 2011]. Dostupné z: <http://en.wikipedia.org/wiki/Dalvik_(software)>. Google Reader [online]. 2011. [cit. 3. 4. 2011]. [6] P°isp¥vatelé Wikipedie. Dostupné z: <http://en.wikipedia.org/wiki/Google_Reader>. [7] P°isp¥vatelé Wikipedie. Internet Message Access Protocol [online]. Edition [online]. 2011. [cit. 29. 4. 2011]. Dostupné z: <http://en.wikipedia.org/wiki/Internet_Message_ Access_Protocol>. [8] P°isp¥vatelé Wikipedie. [cit. 10. 5. 2011]. Java Platform, Enterprise 2011. Dostupné z: <http://en.wikipedia.org/wiki/Java_Platform, _Enterprise_Edition>. [9] P°isp¥vatelé Wikipedie. Dostupné z: Transfer>. Representational State Transfer [online]. 2011. [cit. 10. 5. 2011]. <http://en.wikipedia.org/wiki/Representational_State_ [10] P°isp¥vatelé Wikipedie. RSS [online]. 2011. [cit. 8. 5. 2011]. Dostupné z: <http://en. wikipedia.org/wiki/RSS>. [11] web:activity. Activities. http://developer.android.com/guide/topics/fundamentals/activities.html, stav z 29. 4. 2011. [12] web:adt. ADT Plugin for Eclipse. http://developer.android.com/sdk/eclipse-adt.html, 33 stav z 12. 3. 2011. 34 LITERATURA [13] web:appframe. Application Framework. http://developer.android.com/guide/basics/what-is-android.html, stav z 10. 1. 2011. [14] web:asdk. Android SDK. http://developer.android.com/sdk/index.html, stav z 12. 3. 2011. [15] web:clogin. ClientLogin for Installed Applications. http://code.google.com/intl/cs-CZ/apis/accounts/docs/AuthForInstalledApps.html, stav z 27. 4. 2011. [16] web:devguide. Developer's Guide Overview. http://code.google.com/intl/cs-CZ/apis/gdata/docs/developers-guide.html, stav z 10. 3. 2011. [17] web:ea. Visual Modeling Platform. http://www.sparxsystems.com.au/products/ea/index.html, stav z 15. 4. 2011. [18] web:envjs. ENVjs Documentation. http://www.mozilla.org/rhino/overview.html, stav z 12. 3. 2011. [19] web:gdpjson. Using JSON in the Google Data Protocol. http://code.google.com/intl/cs-CZ/apis/gdata/docs/json.html, stav z 20. 4. 2011. [20] web:infocl. Client Libraries. http://code.google.com/intl/cs-CZ/apis/gdata/docs/client-libraries.html, stav z 19. 4. 2011. [21] web:jetty. Jetty Documentation. http://wiki.eclipse.org/Jetty, stav z 19. 5. 2011. [22] web:jsoup. JSOUP - Java HTML Parser. http://jsoup.org/, stav z 12. 4. 2011. [23] web:jsp. JavaServer Pages Technology. http://www.oracle.com/technetwork/java/javaee/jsp/index.html, stav z 23. 4. 2011. [24] web:mercurial. Mercurial SCM. http://mercurial.selenic.com/about, stav z 15. 4. 2011. [25] web:monkey. Monkey Overview. http://developer.android.com/guide/developing/tools/monkey.html, stav z 19. 5. 2011. [26] web:mvc. Model-View-Controller. http://java.sun.com/blueprints/patterns/MVC-detailed.html, stav z 22. 1. 2011. 35 LITERATURA [27] web:oauth. OAuth 1.0 for Installed Applications. http://code.google.com/intl/cs-CZ/apis/accounts/docs/OAuthForInstalledApps.ht stav z 27. 4. 2011. [28] web:rhino. Rhino Overview. http://www.mozilla.org/rhino/overview.html, stav z 19. 5. 2011. [29] web:selgadget. SelectorGadget: point and click CSS selectors. http://www.selectorgadget.com/, stav z 19. 5. 2011. [30] web:servlet. Java Servlet Technology Overview. http://www.oracle.com/technetwork/java/overview-137084.html, 23. 4. 2011. [31] web:sqlite. About SQLite. http://www.sqlite.org/about.html, stav z 29. 4. 2011. stav z 36 LITERATURA P°íloha A Seznam pouºitých zkratek ADT API Android Development Tools Application Programming Interface ASP Active Server Pages CGI Common Gateway Interface CSS Cascading Style Sheets DOM Document Object Model GPS Global Positioning System GUI Graphical User Interface GUID Globally Unique Identier HTML HyperText Markup Language HTTP Hypertext Transfer Protocol HTTPS IMAP IE Java 2 Platform, Enterprise Edition JavaScript JSON JSP JavaScript Object Notation Java Server Pages LSID OS Internet Message Access Protocol Internet Explorer J2EE JS Hypertext Transfer Protocol Secure Life Science Identiers Operating System 37 38 PÍLOHA A. REST Representational State Transfer RSS Really Simple Syndication RTF Rich Text Format SID Session Identier SMTP Simple Mail Transfer Protocol SMS Short Message Service SQL Structured Query Language UID Unique Identier UML Unied Modeling Language URI Uniform Resource Identier URL Uniform Resource Locator XML Extensible Markup Language SEZNAM POUITÝCH ZKRATEK P°íloha B Instala£ní a uºivatelská p°íru£ka B.0.1 ExtBrain feedExtractor B.0.1.1 Instalace Díky pouºití Jetty aplika£ního serveru, který je sou£ástí aplikace ExtBraiHub, odpadá nut- 1 nost instalace a kongurace serveru. Pro spu²t¥ní je vyºadován Java Runtime Enviroment (JRE) verze 1.6 nebo vy²²í. Z p°iloºeného CD zkopírujte adresá° apps/feedExtractor na sv·j disk. V konzoli se p°epn¥te do tohoto adresá°e a zadejte následující p°íkaz pro spu²t¥ní systému s hostem localhost a standardním portem 80. your/path/apps/feedExtractor> java -jar ExtBrainHub.jar Dal²í moºností spu²t¥ní je s vlastní denicí parametr·, kde mená <host:port>, tedy nap°.: 127.0.0.1:8080. <xxx.xxx.xxx.xxx:xxxx> zna- your/path/apps/feedExtractor> java -jar ExtBrainHub.jar xxx.xxx.xxx.xxx:xxxx Po spu²t¥ní server vypí²e £as startu. Na úvodní stránku feedExtractoru se dostaneme zadáním http://host:port/feedExtractor do webového prohlíºe£e. Pro p°ípad http://localhost/feedExtractor. nastavení je aplikace dostupná na adrese 1 JRE je zdarma ke staºení na http://www.java.com. 39 defaulního 40 PÍLOHA B. INSTALANÍ A UIVATELSKÁ PÍRUKA B.0.1.2 Zaloºení nového ú£tu a p°ihlá²ení do systému ExtBrain feedExtractor je parser text·, který velice úzce spolupracuje s imapovým serverem uºivatele. Pro vyuºívání této aplikace je nutné se zaregistrovat. Na úvodní stránce se po rozliknutí záloºky New Account zobrazí formulá°, kde je moºné ú£et denovat. Na obrázku 2 B.1 uvádím p°íklad zaloºení ú£tu pro GMail . Obrázek B.1: P°ihla²ovací stránka Emailová adresa zárove¬ slouºí jako p°ihla²ovací jméno do systému. D·leºité je pouºití stejného hesla jako u va²í emailové schránky, jinak by se feedExtractor nemohl p°ipojit a pr·b¥ºn¥ aktualizovat £lánky na va²em serveru. Komunikace se schránkou je zabezpe£ená 3 pomocí SSL protokolu. Po správném vypln¥ní údaj· se jiº m·ºete p°ihlásit pomocí formulá°e nalevo. B.0.1.3 Správa zdroj· Po p°ihlá²ení budete p°esm¥rováni na hlavní stránku, která uvádí seznam odebíranch zdroj·, viz obrázek B.2. Denovat nový zdroj lze po rozkliknutí záloºky Add New Feed. Zadejte libo- volné jméno a URL Atom/RSS zdroje a potvr¤te. Nový zdroj se p°idá do tabulky odebíraných zdroj·. V této chvíli k n¥mu musíme je²t¥ denovat extrak£ní pravidla, coº provedeme kliknutím na tla£ítko Add Pattern. Tla£ítko New Pattern umoº¬uje zm¥nit jiº denované pravidla daného zdroje. Denici pravidel je v¥nována samostatná kapitola B.0.1.4. P°i denování prvního odb¥ru se ve va²í schránce vytvo°í sloºky a extbrain/feedreader/setting. extbrain/feedreader/articles V první sloºce se budou ukládat extrahované £lánky a ve druhé seznam odebíraných zdroj· a uºivatelských ²títk·. Ukládání kongurace p°ímo do schránky vede k nezávisloti uºivatelských dat na aplikaci feedExtractor. Account Settings skrývá nastavení ú£tu, které zde lze editovat. Odhlá²ení provedete pomocí tla£ítka Logout v pravém horním rohu. Dal²í záloºka ze systému 2 Emailová schránka od spole£nosti Google Sockets Layer) je protokol, který ²ifruje data, která se posílají mezi klientem a serverem. 3 SSL(Secure 41 Obrázek B.2: Správa zdroj· B.0.1.4 Denice extrak£ních pravidel Aby mohl ExtBrain feedExtractor provád¥t automatickou extrakci text·, musí mít denované pravidla, podle kterých provede výb¥r poºadovaného textu. Princip je zaloºen na p°edpokladu, ºe zpravodajské servery a blogy mají pro v²echny své £lánky podobnou strukturu stránky a m¥ní se pouze obsah. Denujeme tedy pravidla pouze u jedné stránky a tyto pravidla se aplikují i na ostatní £lánky. Po stisku tla£ítka Add Pattern nebo New Pattern budete p°esm¥rováni na náhled £lánku daného zdroje, viz obrázek B.3. Obrázek B.3: Denice pravidel Denici zahájíme kliknutím na odkaz Select extraction rules v pravém horním rohu. Po na£tení se v dolním pravém rohu objeví li²ta nástroj·, kde jsou denovaná pravidla, 42 PÍLOHA B. INSTALANÍ A UIVATELSKÁ PÍRUKA tla£ítko na uloºení pravidel, tla£ítko pro smazání aktuálního výb¥ru, moºnost p°epnou li²tu do horního rohu a kone£n¥ zru²ení výb¥ru. Po najetí kurzorem nad n¥jaký prvek se tento prvek ohrani£í ráme£kem. Kdyº na daný orámovaný prvek klikneme, podbarví se zelen¥, tím °íkame, ºe obsah tohoto prvku budeme chtít extrahovat. Sou£asn¥ se mohou ºlut¥ podbarvit dal²í prvky, coº °íká, ºe mají shodné pravidlo jako zelený prvek a jejich text bude také extrahován. Vybrané ºluté prvky, které extrahovat nechceme, m·ºeme zru²it dal²ím kliknutím. Takto odebrané prvky mají barvu £ervenou. Kdyº jsme s výb¥rem spokojeni, uloºíme pravidla pomocí tla£ítka Save pattern. B.0.2 Modulární £te£ka zpráv pro Android B.0.2.1 Instalace P°i instalaci aplikace p°ímo z *.apk balí£ku je nutné mít tuto moºnost v nastavení systému povolenou. Na p°iloºeném CD v adresá°i apps/Reader je uloºen balí£ek Reader.apk, který je nutné uloºit do za°ízení. Po zkopírování souboru otev°ete libovolného správce soubor· a spus´te tento balík, následn¥ zapo£ne instalace, která jiº probíhá standardn¥. B.0.2.2 Správa ú£t· Po spu²t¥ní £te£ky se zobrazí seznam denovaných ú£t·, viz obrázek B.4. V²echny obrazovny v následujícím textu jsou pro lep²í p°edstavu zobrazeny s vyvolaným menu. V sou£asné dob¥ 4 5 £te£ka podporuje dva typy ú£t·, a to Google Reader a IMAP ú£ty. Denici nového ú£tu provedeme vyvoláním hlavní nabídky pomocí tla£ítka menu na za°ízení a zvolíme Add Account. Aplikace nabídne seznam typ· ú£tu, kde vybereme jaký chceme denovat. Na obrázku B.5 je uveden p°íklad nového IMAP ú£tu. Komunikace se schránkou je zabezpe£ená pomocí SSL protokolu. Obrázek B.4: Seznam ú£t· 4 Online Obrázek B.5: Vytvá°ení nového ú£tu Atom/RSS £te£ka od spole£nosti Google ú£et slouºí pro £tení £lánk· extrahovaných pomocí feedExtractoru. 6 SSL(Secure Sockets Layer) je protokol, který ²ifruje data, která se posílají mezi klientem a serverem. 5 IMAP 6 43 B.0.2.3 P°ehled hlavní nabídky Po zvolení ú£tu se zobrazí hlavní nabídka, kterou ú£et nabízí. Na obrázcích B.6 a B.7 uvádím pro srovnání sloºky obou typ· ú£tu. M·ºeme listovat ve v²ech £láncích, v ozna£ených hv¥zdi£kou, pouze v nep°e£tených, nebo s daným ²títkem. V £láncích lze vyhledávat, p°idávat nové informa£ní kanály do seznamu nebo naopak ze seznamu odebírat. Pro IMAP ú£ty je moºnost volby mezi online a oine módem práce. Defaultn¥ nastavený je oine reºim, ale pokud je dostupné p°ipojení, lze se p°epnou do online reºimu pomocí tla£ítka v hlavním menu, nebo pouze £lánky stáhnou pomocí tla£ítka Obrázek B.6: Google Reader ú£et Synchronize. Online Mode Obrázek B.7: IMAP ú£et B.0.2.4 Seznam £lánk· a základní volby Po otev°ení sloºky se zobrazí daný seznam zpráv, viz obrázek B.8. Krátkým stiskem se £lánek otev°e ke £tení. P°i del²í stisku se zobrazí kontextové menu daného £lánku, viz obrázek B.9. lánek lze ozna£it hv¥zdi£kou, jako nep°e£tený, uºivatelským ²títkem nebo jako oblíbený. Obrázek B.8: Seznam v²ech £lánk· Obrázek B.9: Kontextové menu £lánku lánky také m·ºeme v rámci Google Readeru sdílet s p°áteli. 44 PÍLOHA B. INSTALANÍ A UIVATELSKÁ PÍRUKA B.0.2.5 Správa kanál· a náhled £lánku Správa zdroj· je pouze u Google Reader ú£tu, u IMAP ú£tu není zatím implementovaná, ale díky tomu, ºe feedExtractor seznamy zdroj· ukládá p°ímo do schránek uºivatel· je toto roz²í°ení moºné. Po otev°ení sloºky feeds se zobrazí seznam odebíraných Atom/RSS kanál·, viz obrázek B.10. Zdroje m·ºeme p°idávat pomocí hlavní nabídky menu. P°i del²ím stisku se zobrazí dialog, zda chceme daný kanál odstranit. Na obrázku B.11 je jiº náhled na samotný £lánek. Op¥t lze £lánek r·zn¥ ²títkovat a sdílet. Obrázek B.10: Správa kanál· Obrázek B.11: Náhled £lánku P°íloha C Obsah p°iloºeného CD Obrázek C.1: Obsah CD 45
Podobné dokumenty
Synchroniza£ní modul pro Mozilla Thunderbird - ExtBrain
České vysoké učení technické v Praze
Fakulta elektrotechnická
Katedra počítačů
P°íloha E Instala£ní a uºivatelská p°íru£ka
Account Settings skrývá nastavení ú£tu, které zde lze editovat. Odhlá²ení
provedete pomocí tla£ítka Logout v pravém horním rohu.
text práce
Na úvod bych rád zmínil n¥kolik slov o projektu, který jsem si vybral pro svoji bakalá°skou
práci, potaºmo pro semestrální projekt, který je z ní odvozen. Tento projekt v sob¥ obsahuje
hned n¥kolik...
Automatický rezerva£ní systém
Děkuji vedoucímu práce, Ing. Martinu Šlapákovi, za přínosné rady k vývoji aplikace,
doporučení vhodných technologií a také za podrobné připomínky k textu této práce.
Implementace protokolu XMPP v JavaScriptu
Dále bych chtěl poděkovat Anně Mı́rové a své rodině za to, že mi byli oporou nejen při tvorbě
této práce, ale i během celého studia.
iii