Modul pro £tení zpráv pro Android

Transkript

Modul pro £tení zpráv pro Android
ƒ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Í POšADAVK—.
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 POšADAVK— ƒTEƒKY 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Í POšADAVK—.
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Í E’ENÍ GOOGLE READER ƒTEƒEK
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 E’ENÍ
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 ƒTEƒKY
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 E’ENÍ
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 E’ENÍ
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 E’ENÍ
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 ƒTEƒKY
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 POUšITÝ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.
INSTALAƒNÍ A UšIVATELSKÁ PÍRUƒKA
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.
INSTALAƒNÍ A UšIVATELSKÁ PÍRUƒKA
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.
INSTALAƒNÍ A UšIVATELSKÁ PÍRUƒKA
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

Synchroniza£ní modul pro Mozilla Thunderbird - ExtBrain České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů

Více

P°íloha E Instala£ní a uºivatelská p°íru£ka

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.

Více

text práce

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...

Více

Zprávy ze SEVEn Zprávy ze SEVEn

Zprávy ze SEVEn Zprávy ze SEVEn projects/doc/factsheets/remodece.pdf

Více

Automatický rezerva£ní systém

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.

Více

Implementace protokolu XMPP v JavaScriptu

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

Více