ˇ ´ UCEN ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ITACOV ˇ ´ ´ ´I USTAV POC E´ GRAFIKY A MULTIMEDI FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
ˇ SKRY´ SOVEC - SOFTWARE PRO PODPORU GEOCACHINGU
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2008
´ ANTON´IN KYSELAK
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ITACOV ˇ ´ ´ GRAFIKY A MULTIMEDI ´ ´I USTAV POC E FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
ˇ SKRY´ SOVEC - SOFTWARE PRO PODPORU GEOCACHINGU SKRYSOVEC - SOFTWARE FOR GEOCACHING SUPPORT
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE
´ ANTON´IN KYSELAK
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2008
¨ Ing. IGOR SZOKE
Abstrakt Pr´ace se zab´ yv´ a anal´ yzou poˇzadavk˚ u, n´avrhem a implementac´ı softwaru pro podporu geocachingu. Zkoum´ a aplikace podobn´eho typu a snaˇz´ı se navrhnout podobnou, ale multiplatformn´ı alternativu k tˇemto zaveden´ ym n´astroj˚ um. Aplikace je vyuˇziteln´a pro bˇeˇzn´e uˇzivatele, hr´ aˇce geocachingu, kteˇr´ı chtˇej´ı m´ıt data st´ale u sebe a m´ıt moˇznost s nimi pracovat. Aplikace je do budoucna jednoduˇse rozˇsiˇriteln´a a navrˇzen´a tak, aby pokryla ˇsirokou oblast vyuˇzit´ı, d´ıky jej´ı multiplatformnosti a multilingualitˇe.
Kl´ıˇ cov´ a slova GPS, geocaching, wxwidgets, n´ avrh, implementace, objektovˇe orientovan´e programov´an´ı, OOP, GPX, LOC, XML, GUI
Abstract This work is focused on requirements analysis, design and implementation of the software for geocaching support. It studies applications of same type a tries to design similar, but multiplatform alternetive to these used tools. Application is useful for common users, the geocaching players, which want to have data always with themselve and to be able to work with them. Application is simply extensible and designed to spread over wide sphere of use, thanks to its multiplatform and multilinglual feature.
Keywords GPS, geocaching, wxwidgets, design, implementation, object oriented pragramming, OOP, GPX, LOC, XML, GUI
Citace Anton´ın Kysel´ ak: Skr´ yˇsovec - software pro podporu geocachingu, bakal´ aˇrsk´ a pr´ ace, Brno, FIT VUT v Brnˇe, 2008
Skr´ yˇ sovec - software pro podporu geocachingu Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´ aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Igora Sz¨ oke ....................... Anton´ın Kysel´ ak 14. kvˇetna 2008
Podˇ ekov´ an´ı Zde bych r´ ad vyuˇzil pˇr´ıleˇzitosti k podˇekov´an´ı m´emu vedouc´ımu pr´ace, panu Ing. Igorovi Sz¨oke, za veden´ı a rady k t´ıto pr´ aci, d´ale tak´e panu Ing. Adamu Heroutovi Ph.D. za drobn´e konzultace.
c Anton´ın Kysel´
ak, 2008. Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
5
6
7
Obsah ´ 1 Uvod 1.1 Geocaching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Popis jednotliv´ ych kapitol . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 3 4
2 Souˇ casn´ y stav 2.1 Aplikace pro pr´ aci s GPS daty . . 2.2 Aplikace pro podporu geocachingu 2.2.1 GSAK . . . . . . . . . . . . 2.2.2 GeoGet . . . . . . . . . . . 2.2.3 Skr´ yˇsotlaˇc . . . . . . . . . . 2.3 Zhodnocen´ı a inspirace . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
5 5 6 6 7 7 8
3 Poˇ zadavky a c´ıle 3.1 Poˇzadavky z pohledu uˇzivatele . . 3.1.1 Nejˇcastˇejs´ı probl´em . . . . . 3.1.2 Mystery, Multi cache . . . . 3.1.3 Prohl´ıˇzen´ı informac´ı . . . . 3.1.4 Aktu´ alnost dat . . . . . . . 3.1.5 Cesta . . . . . . . . . . . . 3.1.6 V´ ylet v ter´enu . . . . . . . 3.1.7 Dom´ ac´ı pˇr´ıprava . . . . . . 3.1.8 GUI, rozhran´ı . . . . . . . . 3.1.9 Shrnut´ı . . . . . . . . . . . 3.2 Poˇzadavky z pohledu v´ yvoj´aˇre . . 3.2.1 Import/export . . . . . . . 3.2.2 Uloˇzen´ı dat . . . . . . . . . 3.2.3 V´ ypoˇcty souˇradnic . . . . . 3.2.4 GUI . . . . . . . . . . . . . 3.2.5 Strukturovan´ y popis cache . 3.2.6 Prostˇredky ˇr´ızen´ı aplikace . 3.2.7 Shrnut´ı . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
9 10 10 10 10 10 10 10 11 11 11 11 12 12 13 13 13 13 14
4 N´ avrh aplikace 4.1 Syst´em jako celek . . . . . . . . . . . 4.2 Popis jednotliv´ ych modul˚ u. . . . . . 4.2.1 Modul datab´ aze – DB . . . . 4.2.2 Modul Import/Export – I/O 4.2.3 Modul Souˇradnice WGS-84 .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
15 15 16 16 17 18
1
4.3
4.4
4.2.4 4.2.5 N´ avrh 4.3.1 4.3.2 N´ avrh 4.4.1 4.4.2
Modul Grafick´e rozhran´ı – Modul Handler . . . . . . datab´ aze . . . . . . . . . . ER diagram . . . . . . . . Popis diagramu . . . . . . grafick´eho rozhran´ı . . . . Struktura GUI . . . . . . Popis struktury GUI . . .
GUI . . . . . . . . . . . . . . . . . . . . .
5 Implementace 5.1 V´ ybˇer implementaˇcn´ıch n´astroj˚ u . . . 5.1.1 wxWidgets . . . . . . . . . . . 5.1.2 SQLite . . . . . . . . . . . . . . 5.1.3 WGS-84 . . . . . . . . . . . . . 5.1.4 Zdroje . . . . . . . . . . . . . . 5.2 Inicializace aplikace . . . . . . . . . . . 5.2.1 Inicializace datab´aze . . . . . . 5.2.2 Inicializace GUI . . . . . . . . 5.2.3 Inicializace seznamu . . . . . . 5.3 Import, Export . . . . . . . . . . . . . 5.3.1 Import cache . . . . . . . . . . 5.3.2 Export cache . . . . . . . . . . 5.3.3 Vl´ akna . . . . . . . . . . . . . 5.4 Implementace seznamu . . . . . . . . . 5.4.1 Vyhled´ an´ı cache podle atribut˚ u 5.4.2 Vyhled´ an´ı cache pod´el cesty. . 5.5 Okno podrobnost´ı . . . . . . . . . . . 6 Z´ avˇ er
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . .
18 19 19 19 20 20 21 21
. . . . . . . . . . . . . . . . .
23 23 23 23 24 24 24 24 25 25 25 25 25 26 26 26 26 26 27
2
Kapitola 1
´ Uvod Doba technick´ ych vyn´ alez˚ u, elektronick´ ych vymoˇzenost´ı vˇseho druhu a hravost lid´ı dala vnizknout st´ ale v´ıce popul´ arn´ı turistick´e hˇre - geocachingu (1.1), jej´ıˇz centrum se nachaz´ı na glob´ aln´ım serveru www.geocaching.com. To m´ a z´ asadn´ı v´ yhody i nev´ yhody. Vzd´alen´ y centralizovan´ y pˇr´ıstup pˇres prohl´ıˇzeˇc m´a samozˇrejmˇe v´ yhodu pˇredevˇs´ım v nez´avislosti na platformˇe, n´ızk´e datov´e vyt´ıˇzenosti uˇzivatel˚ u a vˇzdy aktu´ aln´ım obsahu. Nev´ yhodou je ale napˇr. nemoˇznost drˇzet data bez pˇr´ıstupu na internet nebo omezen´ı dan´ a rozhran´ım webov´e aplikace. Toto je tak´e motivac´ı vzniku t´eto pr´ace, kter´a m´a za u ´kol vytvoˇrit multiplatformn´ı aplikaci s prostˇredky pro import dat, jejich perzistentn´ı uloˇzen´ı, n´aslednou filtraci a pr´ aci s nimi. Aplikace podobn´eho typu jiˇz samozˇrejmˇe existuj´ı, nab´ız´ı ale vˇetˇsinou jen nativn´ı implementanci na MS Windows, coˇz napˇr´ıklad uˇzivatele linuxu stav´ı do nev´ yhody.
1.1
Geocaching
Geocaching je relativnˇe mlad´ a celosvˇetovˇe rozˇs´ıˇren´a hra, kter´a se zakl´ad´a pˇredevˇs´ım na turistice, ale hlavnˇe na technologii Global Positioning System (GPS), navigaˇcn´ı syst´em vyvinut´ y Spojen´ ymi st´ aty. Tento syst´em byl aˇz do 1. kvˇetna 2000 bˇeˇzn´ ym uˇzivatel˚ um nedo’ stupn´ y, nebot obsahoval z´ amˇernou odchylku kv˚ uli ochranˇe napˇr. pˇred balistick´ ymi stˇrelami. Po tomto datu byla d´ıky objeven´ı moˇznosti lok´aln´ıho ruˇsen´ı sign´alu odchylka odstranˇena a GPS zaˇcal b´ yt okamˇzitˇe vyuˇz´ıv´an veˇrejnost´ı pˇredevˇs´ım jako n´amoˇrn´ı, automobilov´a, ˇci turistick´ a navigace. Bezprostˇrednˇe s t´ım tak´e zaˇcal vznikat geocaching. Hra zaloˇzen´a na uschov´an´ı schr´anky (cache), pˇredstavuj´ıc´ı poklad, jej´ım n´asledn´em zamˇeˇren´ı a nakonec pˇredevˇs´ım nalezen´ı ostatn´ımi hr´ aˇci podle pˇredloˇzen´ ych souˇradnic. Pokladem b´ yv´a ˇcasto hlavnˇe m´ısto uschov´an´ı, na kter´e m´ a schr´ anka upozornit. Nˇekter´e schr´anky vyˇzaduj´ı tak´e delˇs´ı putov´an´ı, ˇci poˇzadavky na myˇslen´ı v podobˇe r˚ uzn´ ych ˇsifer, nebo jin´ ych u ´kol˚ u (typy schr´anek [4]). Uk´azka schr´anky: 1.1. Geocaching trefnˇe popsal kr´ atk´ ym podtitulem Marek Lutonsk´ y ve sv´em ˇcl´anku Geocaching: hra pro mozek, nohy a vaˇsi GPS [5], zde je tak´e k nalezen´ı v´ıce informaci vˇcetnˇe obrazov´eho materi´ alu.
3
Obr´ azek 1.1: Uk´ azka schr´anky (cache), zdroj: Wikipedia [7]
1.2
Popis jednotliv´ ych kapitol
Kapitola 2 obsahuje popis n´ astroj˚ u pro pr´aci s GPS daty obecnˇe a d´ale popis a srovn´ an´ı nˇekolika nejpouˇz´ıvanˇejˇs´ıch n´ astroj˚ u pro podporu geocachingu. Diskutuje jejich funkce, v´ yhody, nev´ yhody, vyuˇzit´ı a tak´e (ne)z´avislost na r˚ uzn´ ych platform´ach. V z´avˇeru je zhodnoceno srovn´ an´ı a vyvozena inspirace tˇemito aplikacemi. V kapitole 3 je pops´ an postup z´ısk´an´ı specifikace z odliˇsn´ ych pohled˚ u na vˇec, z pohledu uˇzivatele a z pohledu v´ yvoj´ aˇre. jej´ı n´asledn´e anal´ yzy a vyvozen´ı pˇr´ısluˇsn´ ych z´avˇer˚ u, kter´e budou slouˇzit jako podklady pro detailn´ı n´avrh aplikace. V textu kapitoly 4 je pops´ an detailn´ı n´avrh aplikace jako celku, d´ale jednotliv´ ych modul˚ u, ze kter´ ych je aplikace sloˇzena, n´avrh struktury datab´azov´ ych dat a nakonec tak´e n´avrh struktury oken grafick´eho rozhran´ı a rozloˇzen´ı ovl´adc´ıch prvk˚ u. Texty jsou doplnˇeny o v´ ymluvn´e obr´ azky s diagramy. Koneˇcnˇe kapitola 5 popisuje implementaci nˇekter´ ych v´ yznamn´ ych, ˇci upozornˇen´ı hodn´ ych postup˚ u, nebo datov´ ych prvk˚ u. Zamˇeˇr´ım se zde na fyzick´e ˇreˇsen´ı probl´em˚ u, kter´e nelze zahrnovat do n´ avrhu. Je zde zm´ınˇen i v´ yˇcet pouˇzit´ ych prostˇredk˚ u a zd˚ uvodnˇen´ı jejich v´ ybˇeru. Posledn´ı kapitolou 6 je z´ avˇer, kde je pops´ano zhodnocen´ı v´ ysledk˚ u pr´ace, pˇr´ınos t´eto pr´ace a moˇznost urˇcit´ ych n´ avaznost´ı do budoucna.
4
Kapitola 2
Souˇ casn´ y stav Souˇcasn´ a nab´ıdka aplikac´ı pro podporu geocachingu, pokr´ yvaj´ıc´ı jak placenou sf´eru, tak i freeware, nen´ı pˇr´ıliˇs rozs´ ahl´ a, mluv´ıme-li o projektech pˇr´ımo specializovan´ ych pro geocaching.
2.1
Aplikace pro pr´ aci s GPS daty
Pokud budeme pˇredpokl´ adat i aplikace m´enˇe specializovan´e (funkce jako spr´ava geografick´ ych bod˚ u, cest, tras, pˇrevod form´at˚ u soubor˚ u s body, zobrazov´an´ı na mapˇe, atd.), nab´ıdka se samozˇrejmˇe rozˇs´ıˇr´ı. Tyto n´astroje lze pˇri geocachingu tak´e vyuˇz´ıt, ale ne pro jeho plnou podporu. • Pˇ r´ıklad: GPS Babel, http://www.gpsbabel.org/ Tento program slouˇz´ı k pˇrevodu rosz´ ahl´eho poˇctu form´ at˚ u soubor˚ u s geografick´ ymi daty (body, cesty, trasy). Pokr´ yv´ a snad vˇsechny zn´ am´e form´ aty, t´ım se st´av´a velice siln´ ym n´astrojem, kter´ y vyuˇz´ıv´ a ˇrada jin´ ych aplikac´ı pro svou potˇrebu. Pro geocaching jej lze vyuˇz´ıt pˇri pˇrevodu bod˚ u ve form´ atu ze serveru geocaching.com do form´atu podporovan´eho vlastnˇenou GPS navigac´ı. Je vyd´ av´ an jako open-source. D´ale existuj´ı aplikace, kter´e pro geocaching specializovan´e jsou, ale jin´ ymi funkcemi, neˇz offline spr´ avou dat, filtrov´ an´ım, exportov´an´ım, atd. Jedn´a se hlavnˇe a pˇredevˇs´ım o n´astroje na v´ ypoˇcty statistik n´ alez˚ u, jak´ ymi jsou napˇr. frekvence nalezen´ ych keˇs´ı v pomˇeru k uˇcit´e dobˇe, poˇcty n´ alez˚ u v r˚ uzn´ ych kategori´ıch, poˇcet n´alez˚ u vzhledem k atribut˚ um cache, nebo suma nacestovan´ ych kilometr˚ u mezi cachemi. • Pˇ r´ıklad: It’s not about the numbers, http://www.itsnotaboutthenumbers.com/ Webov´ y n´ astroj, umoˇzn ˇuj´ıc´ı po uploadov´an´ı GPX souboru [2] s nalezen´ ymi cachemi vytvoˇrit nˇekolik r˚ uzn´ ych statistick´ ych souhrn˚ u, napˇr. poˇcet n´alez˚ u v r˚ uzn´ ych st´atech, poˇcet n´ alez˚ u v˚ uˇci pomˇeru obt´ıˇznost/ter´en ˇci graf poˇctu nalezen´ı ku mˇes´ıc˚ um. R˚ uzn´ ych n´ astroj˚ u pro pr´ aci s GPS daty je tedy je na v´ ybˇer dostatek, d´ale je vˇsak nem´ a smysl studovat, nebot’ se jiˇz net´ ykaj´ı t´ematu t´eto pr´ace.
5
2.2
Aplikace pro podporu geocachingu
V t´eto sekci pop´ıˇsi nˇekter´e ˇcasto pouˇz´ıvan´e a citovan´e n´astroje pˇr´ımo specializovan´e pro podporu geocachingu. V komunitˇe ˇcesk´ ych geocacher˚ u jsou tyto n´astroje tˇri nejzn´amˇejˇs´ı. Jsou jimi GSAK, GeoGet a Skr´ yˇ sotlaˇ c. Nen´ı vylouˇcena existence jin´ ych aplikac´ı tohoto typu, avˇsak zmiˇ nov´ any jsou v drtiv´e vˇetˇsinˇe tyto tˇri.
2.2.1
GSAK
Geocaching Swiss Army Knife (GSAK) je software pro spr´avu geocache a jin´ ych geografick´ ych bod˚ u s ˇsirokou ˇsk´ alou funkc´ı a dobrou podporou ze strany poskytovatele. Je to ale placen´ y produkt, coˇz jej stav´ı do ponˇekud jin´e pozice ve srovn´an´ı s ostatn´ımi alternativami. To, ˇze je produkt placen´ y je ale samozˇrejmˇe vyv´aˇzeno jeho vyˇsˇs´ı kvalitou. Nav´ıc je zde nev´ yhoda z´ avislosti na operaˇcn´ım syst´emu MS Windows. Tato aplikace je jasnˇe nejpouˇz´ıvanˇejˇs´ım softwarem pro podporu geocachingu a to z d˚ uvodu v´ yˇse zmiˇ novan´e vysok´e funkcionality, mnoˇzstv´ı podporovan´ ych form´at˚ u a pˇredevˇs´ım pouˇzit´ı maker, kter´ a dynamicky zvyˇsuj´ı obsah funkc´ı GSAKu. Hlavn´ı funkce aplikace • Moˇznost spr´ avy v´ıce datab´ az´ı s bohatˇe strukturovan´ ymi z´aznamy • Pˇripojov´ an´ı mnoha atribut˚ u a pozn´amek k bod˚ um • Podrobn´e vyhled´ av´ an´ı, filtrov´an´ı a ˇrazen´ı podle ˇrady poˇzadavk˚ u • Podpora mnoha form´ at˚ u soubor˚ u s GPS daty (GPX, LOC, KML, WPT, . . . ) • Pˇr´ım´ a komunikace s nˇekter´ ymi podporovan´ ymi GPS pˇr´ıstroji • Moˇznost automatizace nˇekter´ ych u ´kon˚ u pomoc´ı maker (napˇr. vytvoˇren´ı statistik) • Vestavˇen´ y komunik´ ator s Google Maps • Des´ıtky dalˇs´ıch drob´ ych funkc´ı . . . Pr´ace s GSAKem m˚ uˇze b´ yt pro nezkuˇsen´eho uˇzivatele obt´ıˇznˇejˇs´ı, pˇredevˇs´ım zaˇclenˇen´ı tolika funkc´ı do grafick´eho rozhran´ı s sebou nese jist´e zmaten´ı uˇzivatele pˇr´ıliˇsn´ ym mnoˇzstv´ım ovl´adac´ıch prvk˚ u a datov´ ych oken. Po jist´e dobˇe si ale uˇzivatel program osvoj´ı (ovl´ad´an´ı je v celku intuitivn´ı, zaˇclenˇen´ı drag & drop, kontextov´a menu). Z´ avˇ er: GSAK je jistˇe ˇspiˇckou ve sv´em oboru poskytuj´ıc´ı t´emˇeˇr veˇsker´e operace, kter´e jsou pro pr´ aci s geocachingem potˇreba. Tato pr´ace si neklade za c´ıl dos´ahnout podobn´e u ´rovnˇe, pouze se inspirovat kladn´ ymi prvky aplikace. Na druhou stranu nen´ı GSAK multiplatform´ı SW, tak´e je komerˇcn´ım produktem. WWW: http://www.gsak.net/
6
2.2.2
GeoGet
GeoGet je v komunitˇe ˇcesk´ ych geocacher˚ u vˇetˇsinou oznaˇcov´an jako jednoduch´ a nekomerˇcn´ı alaternativa ke GSAKu. Podle toho tak´e vypad´a. M´a m´enˇe funkc´ı, nˇekter´e detaily jsou ˇreˇseny jinak, ale program je celkovˇe jednoduˇsˇs´ı. Funkcionalita je dle m´eho n´azoru dostateˇcn´ a a aplikaci lze tedy bez probl´em˚ u vyuˇz´ıvat. ˇ ala funkc´ı GeoGetu je podmnoˇzinou funkc´ı GSAKu odfiltrovan´a od nadstandartn´ıch Sk´ drobn´ ych vymoˇzenost´ı. Neobsahuje ale pˇredevˇs´ım podporu maker, ani jin´ ych skriptovac´ıch prostˇredk˚ u. V pˇredchoz´ıch verz´ıch obsahoval GeoGet tak´e moˇznost pˇrihl´aˇsen´ı pˇres HTTP protokol na server geocaching.com, n´ asledn´e staˇzen´ı mnoˇzstv´ı HTML k´odu, ze kter´eho program vydoloval informace o cache. Tato funkce jiˇz v nov´e verzi nen´ı, nebot’ odporuje licenci uˇz´ıv´an´ı sluˇzeb serveru geocaching.com (viz. [3, bod 5]). Hlavn´ı funkce aplikace • Moˇznost spr´ avy v´ıce datab´ az´ı se z´aznamy r˚ uzn´ ych bod˚ u • import GPX, LOC, HTML soubor˚ u • Pˇripojov´ an´ı pozn´ amek k bod˚ um • Vyhled´ av´ an´ı, filtrov´ an´ı a ˇrazen´ı podle ˇrady poˇzadavk˚ u • Pˇrid´ av´ an´ı vedlejˇs´ıch bod˚ u ke cache • Podrobn´e uk´ azky bod˚ u na serveru mapy.cz • Moˇznost definov´ an´ı vlastn´ıho form´atu exportu dat Z´ avˇ er: GeoGet je tedy vhodnou alternativou ke komerˇcn´ımu GSAKu, nav´ıc m´a jednoduˇsˇs´ı ovl´ ad´ an´ı, kter´e je z pohledu uˇzivatele vˇetˇsinou velice d˚ uleˇzit´e. Aplikace m´a velk´e ambice do budoucna, je moˇzn´e, ˇze se stane rovnocenn´ ym konkurentem GSAKu a to s v´ yhodou free licence. Nev´ yhodou GeoGetu je podobnˇe jako u GSAKu jeho z´avislost na platformˇe MS Windows. WWW: http://geoget.ararat.cz/doku.php
2.2.3
Skr´ yˇ sotlaˇ c
Posledn´ım studovan´ ym softwarem byla aplikace Skr´ yˇsotlaˇc. Tato aplikace je urˇcena pˇredevˇs´ım pro staˇzen´ı vybran´ ych keˇs´ı, jejich filtraci a n´asledn´ y export do nˇekolika form´at˚ u vˇc. HTML urˇcen´eho pro tisk. Bohuˇzel velkou nev´ yhodou je nemoˇznost perzistentn´ıho uloˇzen´ı dat ve vlastn´ı datab´ azi, jedin´ a moˇznost, jak toto obej´ıt, je exportovat pˇripraven´ y seznam do GPX souboru, kter´ y se pozdˇeji opˇet importuje. Tento n´ astroj je tedy znaˇcnˇe odliˇsn´ y od pˇredchoz´ıch dvou, kter´e jsou zaloˇzeny pr´ avˇe na perzistentnˇe uloˇzen´ ych datech a n´asledn´e pr´aci s nimi. Proto je tento program vhodn´ y hlavnˇe jako rozˇs´ıˇren´ y filtr pro vyhled´av´an´ı na serveru geocaching.com a jako pˇr´ıprava pro podrobn´ y tisk informac´ı o cache. Dalˇs´ı v´ yznamnou odliˇsnost´ı je implementace v jazyce java, coˇz aplikaci poskytuje urˇcitou multiplatformnost. Je pouˇziteln´ a jak samostatnˇe, tak jako applet v prohl´ıˇzeˇci.
7
Hlavn´ı funkce aplikace • Naˇc´ıt´ an´ı pˇr´ımo ze serveru geocaching.com • Velmi podrobn´ a data o cache • Generov´ an´ı HTML v´ ystupu (pro tisk) • Import/export nˇekolika form´at˚ u soubor˚ u s GPS daty • Multiplatformn´ı implementace v javˇe Z´ avˇ er: Skr´ yˇsotlaˇc poskytuje velmi podrobn´e informace o cache (pouze pˇri staˇzen´ı ze serveru geocaching.com) a jejich pˇr´ıpravˇe pˇredevˇs´ım pro tisk. Jej´ı velkou nev´ yhodou je nemoˇznost perzistetn´ıho uloˇzen´ı dat, coˇz tak´e vede k tomu, ˇze veˇsker´a naˇcten´a data drˇz´ı v operaˇcn´ı pamˇeti, coˇz pˇri velk´em objemu m˚ uˇze zp˚ usobit komplikace v cel´em syst´emu. Nav´ıc je tento zp˚ usob znaˇcnˇe pomal´ y. Je tedy vhodn´a jen pro menˇs´ı objemy dat a jako pom˚ ucka pro jednor´ azovou pˇr´ıpravu na cestu. WWW: http://cacheprinter.bubbles.sk/
2.3
Zhodnocen´ı a inspirace
Vzhledem k tomu, ˇze souˇc´ ast´ı zad´an´ı t´eto pr´ace bylo zkoum´an´ı zaveden´ ych aplikac´ı pro podporu geocachingu a pot´e navrˇzen´ı a implementace aplikace podobn´e, bude produkt t´eto pr´ace ˇcerpat inspiraci z v´ yˇse citovan´ ych program˚ u se znaˇcnou m´ırou. Pˇredevˇs´ım prvn´ı dva n´astroje odpov´ıdaj´ı zad´ an´ı t´eto pr´ace, proto vˇetˇsina soustˇredˇen´ı padne na nˇe. Zhodnocen´ım dospˇejeme k tomu, ˇze nejd˚ uleˇzitˇejˇs´ımi poˇzadavky pro v´ yslednou pr´aci je moˇznost importu a perzistentn´ımu uloˇzen´ı dat a jejich n´asledn´e filtraci, vyhled´av´an´ı, ˇrazen´ı a nakonec tak´e exportu. N´ avrh je tedy nutno soustˇredit pˇredevˇs´ım na tyto aspekty tvoˇr´ıc´ı j´adro a nejmasivnˇejs´ı zastoupen´ı funkc´ı v aplikaci. Veˇsker´e dalˇs´ı funkce jsou v´ıce ˇci m´enˇe z´avisl´e na v´ yˇse zm´ınˇen´ ych. Nejd˚ uleˇzitˇejs´ım pˇr´ınosem by mˇelo b´ yt zaveden´ı multiplatformnosti.
8
Kapitola 3
Poˇ zadavky a c´ıle Z´akladn´ımi poˇzadavky podle zad´an´ı pr´ace je nˇekolik bod˚ u, tvoˇr´ıc´ı z´akladn´ı pil´ıˇre n´avrhu. Jsou jimi: Sezn´ amen´ı s podobn´ ymi aplikacemi Prozkoum´an´ı jejich funkc´ı a zp˚ usob˚ u proveden´ı. Jiˇz diskutov´ ano v kapitole 2. V´ ybˇ er vhodn´ ych funkc´ı Nalezen´ı nejd˚ uleˇzitˇejˇs´ıch a nejpouˇz´ıvanˇejˇs´ıch funkc´ı, kter´e se daj´ı oˇcek´ avat od n´ astroje tohoto typu. Jsou jimi pˇredevˇs´ım: import souboru s geocache, ukl´ad´an´ı do datab´ aze, ˇsirok´e moˇznosti vyhled´av´an´ı, filtrov´an´ı a tˇr´ıdˇen´ı, export v r˚ uzn´ ych form´atech, podpora tzv. paperless geocachingu [1]. Multiplatformn´ı implementace Tento bod je d˚ uleˇzit´ y pˇredevˇs´ım kv˚ uli tomu, ˇze je zvolen jako hlavn´ı pˇr´ınos t´eto pr´ ace oproti jin´ ym alternativ´am. Tento modern´ı pˇr´ıstup je tˇreba vyuˇz´ıt. Tyto body tvoˇz´ı pouze z´ akladn´ı sortu poˇzadavk˚ u, bran´ ych jako obecn´e c´ıle, nezab´ yvaj´ı se detailnˇejˇs´ımi z´ aleˇzitostmi. K z´ısk´an´ı podrobnˇejˇs´ıch poˇzadavk˚ u je tˇreba se na probl´em pod´ıvat zejm´ena ze dvou pohled˚ u. Z pohledu uˇ zivatele a v´ yvoj´ aˇ re. Zat´ımco v prvn´ım pˇr´ıpadˇe vzniknou ˇci vyjdou na povrch poˇzadavky, kter´e budou v budoucnu u ´zce spojen´e s rozhran´ım aplikace v˚ uˇci uˇzivateli, v druh´em pˇr´ıpadˇe naopak dostaneme poˇzadavky na uˇzivateli skryt´e vˇeci; vnitˇrn´ı uspoˇr´ad´an´ı, potˇreby r˚ uzn´ ych knihoven, studium urˇcit´ ych algorimt˚ u atd. V n´ asleduj´ıc´ıch podkapitol´ ach si tedy pˇribl´ıˇz´ıme specifikaci a anal´ yzu poˇzadavk˚ u, kter´e mohou b´ yt vzneseny z tˇechto protip´ol˚ u.
9
3.1
Poˇ zadavky z pohledu uˇ zivatele
Pokud chceme studovat poˇzadavky z pohledu uˇzivatele, nen´ı nic snadnˇejˇs´ıho, neˇz se j´ım st´ at. Mohu mluvit z vlastn´ı zkuˇsenosti, jakoˇzto dostateˇcnˇe dlouhou dobu p˚ usob´ıc´ı geocacher, z toho vypl´ yv´ a, ˇze tak´e jako plnohodnotn´ y uˇzivatel. Nejlepˇs´ı zp˚ usob, jak odhalit potˇreby bˇeˇzn´eho geocachera je rozdˇelit p˚ usoben´ı na jednotliv´e akce, kter´e geocacher zaˇz´ıv´a a hledat v nich poˇzadavky na funkce budouc´ı aplikace.
3.1.1
Nejˇ castˇ ejs´ı probl´ em
Uˇzivatel chce vyhledat cache v bl´ızkosti nˇejak´eho bodu, kde se bude v nejbliˇzˇs´ı dobˇe nach´azet. Individu´ alnˇe si bude pot´e cht´ıt zvolit r˚ uzn´e atributy, kter´ ymi bude cht´ıt v´ ybˇer filtrovat (obt´ıˇznost, ter´en, typ, . . . ). Z toho vypl´ yvaj´ı zat´ım pouze jiˇz v´ yˇse zmiˇ novan´e z´akladn´ı poˇzadavky.
3.1.2
Mystery, Multi cache
U tˇechto typ˚ u schr´ anek zadan´e souˇradnice neukazuj´ı na c´ılov´ y bod, ten je tˇreba spoˇc´ıtat a uchovat v´ ysledn´e souˇradnice. Z toho vznik´a potˇreba opatˇrovat cache pozn´amkami s v´ ypoˇcty ˇci meziv´ ypoˇcty a v´ ysledn´ ymi souˇradnicemi. Nebo dokonce pˇr´ımo moˇznost pˇridat uˇzivatelsk´ y bod k dan´e cache.
3.1.3
Prohl´ıˇ zen´ı informac´ı
Uˇzivatel, rozhodnut´ y vydat se do akce tak´e potˇrebuje prohl´ıˇzet tzv. listing (popis) cache, kde jsou uvedeny informace o m´ıstˇe a ˇcasto tak´e o zp˚ usobu n´alezu, nebo vypoˇcten´ı fin´aln´ıch souˇradnic. Proto je tˇreba uvaˇzovat pˇrehledn´ y v´ ypis podrobnost´ı zvolen´e cache.
3.1.4
Aktu´ alnost dat
Kaˇzd´ y bˇeˇzn´ y hr´ aˇc geocachingu zn´a tak´e fakt, ˇze vydat se na lov bez zkontrolov´an´ı aktu´alnosti listingu nen´ı moudr´e, nebot’ zmˇeny se nevyh´ ybaj´ı ani t´eto oblasti, proto je potˇreba zachov´ avat informace co nejaktu´ alnˇejˇs´ı, popˇr. k nim vytvoˇrit jednoduch´ y pˇr´ıstup. Z toho vypl´ yv´ a potˇreba moˇznosti obnovov´an´ı star´ ych z´aznam˚ u pomoc´ı importu, nebo dokonce pˇr´ım´e staˇzen´ı informac´ı o cache ze serveru.
3.1.5
Cesta
Hr´aˇc geocachingu tak´e ˇcasto vyr´ aˇz´ı na delˇs´ı cesty, u kter´ ych by r´ad jednoduˇse zjistil cache, nach´azej´ıc´ı se pod´el t´eto cesty. Tato moˇznost by mˇela b´ yt tak´e uvaˇzov´ana.
3.1.6
V´ ylet v ter´ enu
Velmi ˇcasto se stane, ˇze geocacher zav´ıt´a na delˇs´ı v´ ylet do pˇr´ırody, nem´a dostateˇcnou podporu GPS pˇr´ıstroje v ot´ azce uchov´an´ı informac´ı a chtˇel by tedy s sebou vz´ıt napˇr. notebook, kde by z´ıskal vˇsechny potˇrebn´e informace. Aplikace by proto mˇela b´ yt naprosto nez´avisl´ a na pˇripojen´ı k internetu.
10
3.1.7
Dom´ ac´ı pˇ r´ıprava
Uˇzivatel bude v dobˇe pˇr´ıpravy vybaven pˇripojen´ım k internetu, ale bude cht´ıt pracovat radˇeji s aplikac´ı, ve kter´e z˚ ust´ avaj´ı data uloˇzena. Nechce ale pˇrij´ıt o komfort interakce dan´e cache se zbytkem internetu. T´ımto dost´av´ame poˇzadavek na moˇznost rychl´ ych odkaz˚ u napˇr. na str´anku cache na serveru, ˇci lokace cache na nˇekter´em z webov´ ych mapov´ ych server˚ u.
3.1.8
GUI, rozhran´ı
Kaˇzd´ y uˇzivatel jak´ekoliv aplikace vyb´ır´a ˇcasto podle toho, jak se aplikace ovl´ad´a a jak vypad´a. Pokud si bude vyb´ırat ze softwaru s podobnou funkˇcnost´ı, vybere si uˇzivatelsky pˇr´ıvˇetivˇejˇs´ı. Toto je z´ akladn´ı s´erie poˇzadavk˚ u, kladen´ ych od bˇeˇzn´eho uˇzivatele (hr´aˇce geocachingu). Prostudov´ an´ım v´ yˇse psan´ ych u ´kon˚ u dost´av´ame n´ıˇze uveden´ y pˇribliˇzn´ y v´ ypis funkc´ı, kter´e by mˇela aplikace z pohledu uˇzivatele obsahovat.
3.1.9
Shrnut´ı
1. Import/export r˚ uzn´ ych form´at˚ u soubor˚ u s daty cache (napˇr. GPX) 2. Vyhled´ av´ an´ı, filtrov´ an´ı a ˇrazen´ı podle ˇrady krit´eri´ı 3. Moˇznost pˇrid´ av´ at ke cache body, pozn´amky, ˇci soubory 4. Pˇrehledn´e zobrazen´ı dostupn´ ych podrobnost´ı o dan´e cache 5. Update starˇs´ıch dat pˇri importu, staˇzen´ı aktu´aln´ıch dat ze serveru 6. Hled´ an´ı cache pod´el zadan´e cesty (formou souboru s cestou) 7. Nez´ avislost na serveru geocaching.com 8. Moˇznost interakce s geocaching.com ˇci mapov´ ymi servery 9. Pˇ redevˇ s´ım jednoduch´ e a intuitivn´ı ovl´ ad´ an´ı 10. Pˇr´ıjemn´ y a pˇrehledn´ y vzhled aplikace To byl pohled z uˇzivatelsk´eho hlediska. Na ten navazuje pohled v´ yvoj´aˇre, kter´ y se znalost´ı tˇechto poˇzadavk˚ u vytv´ aˇr´ı poˇzadavky dalˇs´ı, a to na vnitˇrn´ı z´aleˇzitosti aplikace.
3.2
Poˇ zadavky z pohledu v´ yvoj´ aˇ re
V´ yˇcet potˇrebn´ ych schopnost´ı aplikace z pohledu v´ yvoj´aˇre se odv´ıj´ı od poˇzadavk˚ u uˇzivatele, kter´ y d´ av´ a sv´ ymi n´ amˇety n´ avrh´ aˇri podklady pro vytvoˇren´ı poˇzadavk˚ u na urˇcit´e postupy a technologie. V n´ asleduj´ıc´ı podkapitole tedy probereme n´amˇety uˇzivatel˚ u z pˇredchoz´ı podkapitoly, ze kter´ ych vyvod´ıme zaveden´ı urˇcit´ ych technologi´ı do aplikace.
11
3.2.1
Import/export
Pro diskutov´ an´ı importu a exportu dat je nutn´a znalost pouˇzit´ ych form´atu vstupu ˇci v´ ystupu. GPX Jako nejzaj´ımavˇejˇs´ı moˇznost se jistˇe jev´ı form´at souboru GPX. Tento form´at je zaloˇzen na technologii XML, sch´ema je pops´ano na [2]. Umoˇzn ˇuje popis jak standartn´ıch informac´ı urˇcit´eho GPS bodu, tak i pˇrid´an´ı vlastn´ıch informac´ı na m´ısto XML stromu k tomu urˇcen´e. Takov´ y form´ at tedy m˚ uˇze obsahovat vˇsechny potˇrebn´e informace o cache bez jak´ekoliv vaty, tud´ıˇz je z pohledu efektivity nejlepˇs´ı. Tento form´at je tak´e podporov´ an nejpouˇz´ıvanˇejˇs´ımi GPS pˇr´ıstroji. Je tedy nejvhodnˇejˇs´ı jak pro import, tak pro export. LOC Mezi dalˇs´ı form´ aty patˇr´ı napˇr´ıklad p˚ uvodn´ı form´at pro geocaching, form´at LOC, kter´ y je tak´e zaloˇzen na XML technologii, ovˇsem obsahuje pouze velmi z´akladn´ı u ´daje o cache jako n´ azev, struˇcn´ y popis a souˇradnice um´ıstˇen´ı. Je tedy vhodn´ y pouze pro uchov´ an´ı cache jako bodu s pˇr´ıpadn´ ym pozdˇejˇs´ım updatem. ˇ WPT Casto pouˇz´ıvan´ ym form´ atem je tak´e form´at WPT urˇcen´ y pro navig´ator a mapov´ y SW OziExplorer. Obsah souboru m´a jednoduch´ y form´at, kde kaˇzd´ y ˇr´adek pˇredstavuje jeden bod v dan´em form´ atu. Nen´ı tedy potˇreba ˇz´adn´ y sloˇzit´ y parser, ani jin´a technologie. Tento form´at nen´ı poskytov´ an na serveru geocaching.com, ale je vyuˇz´ıv´an v ˇradˇe navigaˇcn´ıch pˇr´ıstroj˚ u, je tedy vhodn´e jej zaˇradit jako exportn´ı form´at. HTML Posledn´ı moˇznost´ı importov´an´ı dat je HTML str´anka staˇzen´a pˇr´ımo ze serveru geocaching.com a jej´ı nasledn´e zpracov´an´ı do pouˇziteln´ ych informac´ı. Tento zp˚ usob je velmi nestabiln´ı, pomal´ y a lze jej pouˇz´ıt jen jako krajn´ı moˇznost. Tento form´at bude uvaˇzov´ an v aplikaci jen teoreticky. Shrneme-li tyto poˇzadavky, zjiˇst’ujeme nutnost zaveden´ı technologie XML, jako prostˇredek a pro ˇcten´ı a z´ apis nˇekter´ ych import/exportn´ıch form´at˚ u.
3.2.2
Uloˇ zen´ı dat
Aplikace, jak jiˇz bylo ˇreˇceno, mus´ı umoˇzn ˇovat persistentn´ı uloˇzen´ı dat, d˚ uleˇzit´ y je tak´e efektivn´ı pˇr´ıstup k tˇemto dat˚ um a jejich jednoduch´e a rychl´e zpracov´an´ı. S tˇemito znalostmi dost´av´ ame nejvhodnˇejˇs´ı moˇznost – zaveden´ı datab´aze do aplikace. Datab´ azov´e prostˇredky jsou rozdˇeleny pˇredevˇs´ım na dvˇe kategorie. Jsou jimi: intern´ı datab´azov´ a logika, kter´ a je souˇca´st´ı aplikace jako knihovna a extern´ı datab´azov´ y proces, na kter´ y se aplikace pˇripojuje prostˇrednictv´ım komunikaˇcn´ıho kan´alu. Vzhledem k tomu, ˇze software by mˇel b´ yt pˇredevˇs´ım nez´avisl´ y a vezmeme-li v potaz tak´e zjednoduˇsen´ı pˇr´ımou integrac´ı datab´ azov´eho syst´emu do aplikace, jev´ı se jako lepˇs´ı druh´a varianta. Datab´ aze tak´e nab´ız´ı jednoduchou strukturalizaci objemnˇejˇs´ıch dat pro jejich efektivnˇejˇs´ı vyhled´ an´ı a zpracov´ an´ı. Umoˇzn ˇuje indexaci a velmi efektivn´ı vyhled´av´an´ı, filtraci, ˇrazen´ı. Je to celkovˇe nejlepˇs´ı zp˚ usob perzistetntn´ıho uloˇzen´ı heterogenn´ıch tabulkov´ ych dat. Mus´ı b´ yt tedy ned´ılnou souˇc´ ast´ı aplikace.
12
3.2.3
V´ ypoˇ cty souˇ radnic
V aplikaci je tak´e d˚ uleˇzit´ a schopnost poˇc´ıtat WGS-84 (viz. [8]) souˇradnice, vzd´alenosti, u ´hly a dalˇs´ı geografick´ a orientaˇcn´ı data. Jelikoˇz datab´aze vˇetˇsinou neopl´ yv´a funkcemi pro tyto v´ ypoˇcty a nav´ıc je bude tˇreba vyuˇz´ıt i pˇr´ımo v aplikaci. To si ˇz´ad´a bud’to knihovnu, kter´a obsahuje tyto funkce, nebo vytvoˇren´ı vlastn´ıho modulu. Jako jednoduˇsˇs´ı a jistˇejˇs´ı se samozˇrejmˇe jev´ı prvn´ı moˇznost, ale ani po delˇs´ım hled´ an´ı takov´eto knihovny jsem byl st´ ale ne´ uspˇeˇsn´ y. Zb´ yv´a tedy pouze druh´a varianta. Ta zahrnuje vyhled´ an´ı dan´ ych algoritm˚ u a jejich implementaci v r´amci vlstn´ıho modulu aplikace. V´ ypoˇcet oblasti pod´el cesty (ad 6) nevyˇzaduje ˇz´adn´e jin´e v´ ypoˇcty, neˇzli v´ yˇse uveden´e. Algoritmus pro jejich v´ ypoˇcet je trivi´aln´ı a vystaˇc´ı z tˇemito element´arn´ımi operacemi.
3.2.4
GUI
Grafick´e uˇzivatelsk´e rozhran´ı (GUI) je velmi d˚ uleˇzit´ ym prvkem softwaru, jenˇz se m´a st´at pro uˇzivatele lehce a pˇr´ıjemnˇe ovladateln´ ym. Pro uˇzivatele je d˚ uleˇzit´a pˇredevˇs´ım pˇrehlednost ovl´adac´ıch prvk˚ u, jejich snadn´e a pˇredevˇs´ım intuitivn´ı ovl´ad´an´ı. Jako prostˇredek lze samozˇrejmˇe vyuˇz´ıt pˇr´ımo knihovny k dan´ ym GUI okenn´ım syst´em˚ um, je to ale znaˇcnˇe neefektivn´ı a nav´ıc by to mohlo ohrozit multiplatformost aplikace, coˇz by poruˇsilo z´ akladn´ı poˇzadavek. Je tedy lepˇs´ı zvolit multiplatformn´ı n´adstavbu, kter´a bude obsahovat vˇse potˇrebn´e pro vytv´ aˇren´ı a aplikaci GUI. Vzhled GUI by mˇel z˚ ustat ve spr´avˇe uˇzivatelova okenn´ıho syst´emu, nebot’ je na nˇej zvykl´ y a ˇcasto si jej tak´e dotv´ aˇr´ı podle sv´ ych poˇreb a sv´eho vkusu.
3.2.5
Strukturovan´ y popis cache
Pro takov´ yto v´ ypis pln´ y podrobnost´ı jiˇz nedostaˇcuj´ı bˇeˇzn´e prvky standartn´ıch GUI rozhran´ı, tato u ´loha vyˇzaduje prostˇredek umoˇzn ˇuj´ıc´ı jednoduˇse strukturovat a form´atovat data, tak´e s nen´aroˇcnou moˇznost´ı zmˇeny tohoto form´atu. Jako vhodn´ a volba se jev´ı napˇr. pouˇzit´ı nˇejak´eho XML, nebo HTML vykreslovac´ıho enginu, kter´ y jako vstup pouˇz´ıv´ a dan´ y znaˇckovac´ı jazyk. Dnes se tyto form´aty zav´adˇej´ı i do dˇr´ıve jinak k´ odovan´ ym (vˇetˇsinou bin´arnˇe) form´at˚ u soubor˚ u, urˇcnen´ ych pro dokumenty, coˇz jistˇe znamen´ a existenci urˇcit´ ych v´ yhod. To je pˇredevˇs´ım ˇcistˇe textov´a reprezentace. Takov´ yto prvek je tedy v aplikaci nepostradateln´ y, uˇsetˇr´ı mnoho pr´ace v´ yvoj´aˇr˚ um a zlepˇs´ı kvalitu pro uˇzivatele.
3.2.6
Prostˇ redky ˇ r´ızen´ı aplikace
D˚ uleˇzitou ˇc´ ast´ı pro v´ yvoj aplikace by mˇel b´ yt tak´e syst´em, kter´ y podporuje vnitˇrn´ı ˇr´ızen´ı aplikace, zprostˇredkuj´ıc´ı komunikaci se syst´emem, naprosto zapouzdˇrenou a t´ım tak´e nez´avislou na dan´e platformˇe. N´ asleduje v´ yˇcet hlavn´ıch poˇzadavk˚ u, kladen´ ych na takov´ yto n´astroj: • Moˇznosti operaˇcn´ıho syst´emu (procesy, komunikace s jin´ ymi aplikacemi, . . . ) • Lokalizace, jazykov´e mutace, podpora r˚ uzn´ ych k´odov´an´ı • Znalost standartn´ıch adres´ aˇr˚ u • Komunikace s ostatn´ımi aplikacemi 13
3.2.7
Shrnut´ı
Z pˇredchoz´ı anal´ yzy uˇzivatelsk´ ych poˇzadavk˚ u vznik´a tedy pˇrinejmenˇs´ım tato ˇrada technologi´ı, knihoven a podp˚ urn´ ych n´ astroj˚ u, kter´e je tˇreba do aplikace zav´est. • Zaveden´ı technologie XML formou knihovny obsahuj´ıc´ı parser • Datab´ azov´ y syst´em jako knihovna + pˇr´ıpadn´a nadstavba s ohledem k jazyku • Knihovna, nebo modul pro z´akladn´ımi v´ ypoˇcty souˇradnic WGS-84 • Nadstavba GUI syst´emu umoˇzn ˇuj´ıc´ı multiplatformn´ı implementaci • Podpora HTML enginu, nejl´epu zasazen´a do knihovny pro GUI • Knihovny pro ˇr´ızen´ı aplikace, komunikaci se syst´emem a ostatn´ımi aplikacemi
14
Kapitola 4
N´ avrh aplikace Tato kapitola popisuje detailn´ı n´avrh syst´emu, jeho objektov´ y n´avrh, d´ale n´avrh toku a vˇetven´ı programu a tak´e n´ avrh struktury datab´aze. Jsou zde tak´e zm´ınˇeny pouˇzit´e algoritmy k nˇekter´ ym u ´loh´ am. Popis n´avrhu postupuje od n´avrh˚ u obecn´ ych a aplikace jako celku po n´ avrhy jednotliv´ ych modul˚ u.
4.1
Syst´ em jako celek
Syst´em je zaloˇzen na dekompozici jednotliv´ ych funkˇcn´ıch celk˚ u do modul˚ u. Kaˇzd´ y modul pln´ı jinou specifickou ˇcinnost a obsahuje tˇr´ıdy charakteristick´e pro tuto ˇcinnost. Princip uspoˇr´ad´ an´ı vysvˇetluje obr´ azek 4.1.
Obr´ azek 4.1: Grafick´e zpracov´an´ı n´avrhu uspoˇr´ad´an´ı modul˚ u aplikace Jak je patrn´e z obr´ azku, moduly pln´ıc´ı specifick´e funkce, kter´ ymi jsou moduly Datab´ aze (DB), Import/Export (I/O) a GUI, jsou instancov´any do centr´aln´ıho modulu handler, kter´ y se star´ a o vˇetˇsinu komunikace mezi ostatn´ımi moduly prostˇrednictv´ım pˇred´av´ an´ı odkaz˚ u na urˇcit´e vnitˇrn´ı objekty jednotliv´ ych modul˚ u. Pˇres tyto otevˇren´e komunikaˇcn´ı kan´aly pot´e moduly mohou vymˇen ˇovat data a pˇr´ıkazy mezi sebou. Na glob´aln´ı sf´eˇre je modul, pˇr´ıstupn´ y vˇsem ostatn´ım modul˚ um, kter´ y se star´a o konfiguraci aplikace a prostˇred´ı, tak´e komunikaci se syst´emem. 15
4.2
Popis jednotliv´ ych modul˚ u
V n´asleduj´ıc´ıch podkapitol´ ach bude uveden podrobn´ y n´avrh kaˇzd´eho modulu, budou pops´any objektov´e vztahy a tak´e naznaˇceny vstupy a v´ ystupy dan´eho modulu.
4.2.1
Modul datab´ aze – DB
Tento modul slouˇz´ı pro komunikaci s datab´az´ı, zastupovanou zapouzˇren´ ym objektem, pro u ´ˇcely popisu n´ avrhu jej m˚ uˇzeme oznaˇcit jednoduˇse jako datab´ aze. Obr´azek 4.2 ukazuje objektov´ y n´ avrh modulu.
Obr´ azek 4.2: Grafick´e zpracov´an´ı objektov´eho n´avrhu modulu datab´aze
Modul datab´ aze obsahuje dvˇe d˚ uleˇzit´e tˇr´ıdy. Jsou jimi DB Objekt, coˇz je tˇr´ıda zprostˇredkuj´ıc´ı upraven´ y pˇr´ıstup k datab´ azi podle poˇzadavk˚ u aplikace a DB Dotaz, coˇz je b´azov´ a tˇr´ıda pro vytv´ aˇren´ı obecn´ ych dotaz˚ u na datab´azi. DB Objekt Mus´ı existovat vˇzdy pouze v jedin´e instanci, nebot’ fyzicky pˇredstavuje spojen´ı s DB, kter´e nem˚ uˇze b´ yt obsluhov´ano v´ıce objekty. Pˇri inicializaci otestuje datab´ azi a provede potˇrebn´e operace. Tˇr´ıda obsahuje pˇredevˇs´ım metodu prov´ est dotaz, kdy se zpracuje pˇredan´ y objekt dotazu, definovan´ y nˇekterou ze zdˇedˇen´ ych variant tˇr´ıdy DB dotaz a napln´ı ji poˇzadovan´ ymi daty. Tˇr´ıda DB Objekt d´ale poskytuje ˇradu drobn´ ych funk´ı, zapouzdˇruj´ıc´ıch nˇekter´e speci´ aln´ı operace v datab´azi. DB dotaz Slouˇz´ı jako abstraktn´ı b´azov´a tˇr´ıda, umoˇzn ˇuj´ıc´ı jednotnou obsluhu r˚ uzn´ ych dotaz˚ u, vracej´ıc´ıch tabulkov´e v´ ysledky. Dotaz vˇzdy obsahuje metodu na svoje spuˇstˇen´ı v DB, vitru´ aln´ı metodu vytvoˇren´ı SQL dotazu a tak´e virtualn´ı metodu pro iteraˇcn´ı pr˚ uchod v´ ysledku dotazu. Dˇedˇen´e tˇr´ıdy si pot´e vytvoˇr´ı ve vlastn´ı reˇzii tabulku podm´ınek a metody pro jejich editaci.
16
Datov´e vstupy a v´ ystupy modulu tedy tvoˇr´ı pˇredevˇs´ım tˇr´ıda DB dotaz, ale tak´e nˇekter´e ze specializovan´ ych metod objektu DB Objekt.
4.2.2
Modul Import/Export – I/O
Je to modul, slouˇz´ıc´ı jako rozhran´ı pro import a export cache do a z datab´aze. Pˇristupuje k soubor˚ um na disku a podle pokyn˚ u zadan´ ych uˇzivatelem importuje, ˇci exportuje dan´e cache. 4.3 ukazuje objektov´ y n´ avrh modulu.
Obr´ azek 4.3: Grafick´e zpracov´an´ı objektov´eho n´avrhu modulu import/export
V z´ asadˇe je tento modul podobn´ y DB modulu, ale pouˇz´ıv´a odliˇsnou metodu pˇr´ıstupu. Na rozd´ıl od DB modulu, zde je vˇzdy nutno vytvoˇrit objekt Pˇ r´ıstup k IO, kter´emu jsou pˇred´any parametry importu/exportu a tak´e typ handleru, kter´ y m´a b´ yt pouˇzit. Ten pot´e rozhodne, kterou dˇedenou tˇr´ıdu od b´azov´e tˇr´ıdy IO Handler m´a pouˇz´ıt a pˇredat j´ı d´ ale dan´e parametry. Pˇ r´ıstup k IO Je tˇr´ıdou pˇredstavuj´ıc´ı univerz´aln´e rozhran´ı k vstupn´ı, nebo v´ ystupn´ı operaci nad jednotliv´ ymi typy form´at˚ u. Je z´asadnˇe jedin´ ym pˇr´ım´ım pˇr´ıstupov´ ym a datov´ ym kan´alem k tomuto modulu. IO Handler Pˇredstavuje b´ azovou tˇr´ıdu pro vstupnˇe v´ ystupn´ı operace, z n´ıˇz jsou dˇedˇeny specializovan´e tˇr´ıdy pro urˇcit´e form´aty. Jako datov´ y vstup pro IO operace lze pouˇz´ıt objekt DB dotaz z 4.2.1, nebo objekt seznamu naˇcten´ ych cache z 4.4. Specializovan´e tˇr´ıdy maj´ı ve sv´e reˇzii veˇsker´e zpracov´ an´ı pˇredan´ ych dat. Jedin´ ym datov´ ym kan´ alem, kter´ y lze pro tento modul pouˇz´ıt je tˇr´ıda Pˇr´ıstup k DB.
17
4.2.3
Modul Souˇ radnice WGS-84
Tento modul je sp´ıˇse pomocnou knihovnou obsahuj´ıc´ı tˇr´ıdy objekt˚ u souˇradnic a v´ ypoˇcty spojen´e s tˇemito objekty. Objekty pracuj´ı v souˇradn´em syst´emu WGS-84, protoˇze je to pouˇz´ıvan´ y syst´em pro GPS navigace. Stupeˇ n Je tˇr´ıdou popisuj´ıc´ı polovinu GPS souˇradnice. Zapouzdˇruje inicializaˇcn´ı a pˇrevodn´ı operace. Souˇ radnice Tˇr´ıda, slouˇz´ıc´ı k uchov´an´ı GPS souˇradnice a obsahuj´ıc´ı metody pro v´ ypoˇcty jejich vz´ alenost´ı mezi sebou, u ´hl´ u, ˇci v´ ypoˇctu nov´ ych souˇradnic podle zadan´ ych parametr˚ u. Samozˇrejmost´ı je tak´e metoda pro tisk souˇradnic. Bounding Box Dok´ aˇze uchovat ˇctveˇrici souˇradnic znaˇc´ıc´ı rohy urˇcit´e oblasti, lze jej pot´e pouˇz´ıt pro detekci v´ yskytu souˇradnic uvnitˇr.
4.2.4
Modul Grafick´ e rozhran´ı – GUI
Modul GUI slouˇz´ı ke spr´ avˇe grafick´eho rozhran´ı aplikace. Je tvoˇren tˇr´ıdami oken, kter´e spolu sloˇzitˇe komunikuj´ı. Zde nelze jednoznaˇcnˇe hovoˇrit o jasn´em objektov´em n´avrhu modulu, nebot’ jiˇz ve velk´e m´ıˇre vyuˇz´ıv´ a objektov´eho modelu zaveden´e knihovny pro GUI. Obr´azek 4.4 ukazuje strukturu tˇr´ıd a spojen´ı s ostatn´ımi moduly.
Obr´ azek 4.4: Grafick´e zpracov´an´ı objektov´eho n´avrhu modulu GUI
18
Zde nebudu popisovat objektov´e uspoˇr´ad´an´ı, nebot’ je z´avisl´e na objektov´em n´avrhu a moˇznostech dan´e knihovny a tak´e nen´ı produktem t´eto pr´ace. V´ıce o n´avrhu GUI se dozv´ıte v sekci 4.4.
4.2.5
Modul Handler
Modul handler obsahuje jedinou tˇr´ıdu pro ˇr´ızen´ı a komunikaci mezi moduly, a to tˇr´ıdu Handler. Tato tˇr´ıda uchov´ av´ a jednotliv´e objekty, instancovan´e a registrovan´e v pr˚ ubˇehu inicializace aplikace. Obsahuje metody pro registraci vybran´ ych objekt˚ u, kter´e existuj´ı po celou dobu a naopak poskytuje tak´e metody pro v´ ydej tˇechto odkaz˚ u. T´ımto se navazuje komunikace mezi moduly, kter´e na sebe jin´ ym zp˚ usobem nemohou vidˇet. Ostatn´ı glob´ aln´ı tˇ r´ıdy N´ avrh zahrnuje tak´e existenci nˇekolika glob´aln´ıch objekt˚ u, vyuˇz´ıvan´ ych vˇsemi moduly podle potˇreby. Jsou jimi pˇredevˇs´ım Konfigurace, Komunikace s OS a Lokalizace. Vˇsechny tyto tˇr´ıdy ale spadaj´ı pod celek pouˇz´ıvan´e knihovny, nebudu je tedy zaˇrazovat do vlastn´ıho objektov´eho n´avrhu, v´ıce se o nich zm´ın´ım v kapitole 5.
4.3
N´ avrh datab´ aze
Pro datab´ azi je pouˇzit klasick´ y relaˇcn´ı model, nebot’ vˇsechny dostupn´e datab´azov´e syst´emy tento model podporuj´ı, je tak´e nejpouˇz´ıvanˇejˇs´ım. Tabulky jsou stukturov´any takov´ ym zp˚ usobem, aby byly rozdˇeleny prirotn´ı a m´enˇe prioritn´ı informace o cache. To je v´ yhodn´e napˇr pˇri naˇc´ıt´ an´ı seznamu, kde jsou potˇreba pouze z´akladn´ı informace. Ostan´ı lze pot´e vyˇz´adat dodateˇcnˇe a nezneefektivˇ novat pˇr´ıstup. Obr´ azek 4.5 popisuje strukturu datab´aze, jednotliv´e z´akladn´ı tabulky a jejich vztahy pomoc´ı ER diagramu.
4.3.1
ER diagram
Obr´ azek 4.5: Grafick´e zn´ azornˇen´ı n´avrhu struktury datab´aze pomoc´ı ER diagramu
19
4.3.2
Popis diagramu
Cache Hlavn´ım prvkem datab´ azov´eho n´avrhu je samozˇrejmˇe cache se sv´ ymi d˚ uleˇzit´ ymi atributy, vhodn´ ymi pro vyhled´ av´an´ı, ˇrazen´ı a filtrov´an´ı. Tabulka pro cache tedy obsahuje pouze sloupce s tˇemito atributy, veˇsker´e podrobnˇejˇs´ı informace jsou rozdˇeleny do d´ılˇc´ıch datov´ ych celk˚ u, kv˚ uli menˇs´ı datov´e z´atˇeˇzi pˇri dotazov´an´ı. Listing Tato tabulka obsahuje poloˇzky uchov´avaj´ıc´ı podrobn´ y popis (listing) cache. Cache m˚ uˇze m´ıt pˇriˇrazen pouze jedin´ y z´ aznam v tabulce listing, ciz´ı kl´ıˇc WP tabulky listingu tedy mus´ı b´ yt unik´ atn´ı. Log Obsahuje data log˚ u, neboli z´aznam˚ u uˇzivatel˚ u, autor˚ u i posuzovatel˚ u cache (reviewer˚ u). Uchov´ av´ a informace o autorovi, datu z´aznamu, typu z´aznamu a jeho textov´ y obsah. Na kaˇzdou cache se m˚ uˇze v´azat teoreticky neomezen´e mnoˇzstv´ı log˚ u, tud´ıˇz vznik´ a vazba 1..n. Waypoint Je tabulka geografick´ ych bod˚ u, kter´e mohou b´ yt pouˇzity jako pˇr´ıdavn´e body k urˇcit´e cache, ale i jako samostatn´e body. N´avrh s touto moˇznost´ı poˇc´ıt´a, v t´eto pr´ aci se j´ı ale nedostane vyuˇzit´ı. D´ıky tomu, ˇze bod m˚ uˇze b´ yt samostatn´ y (nez´avisl´ y na cache), poloˇzka ciz´ıho kl´ıˇce m˚ uˇze obsahovat pr´azdnou hodnotu. Poˇcet v´azan´ ych bod˚ u je podobnˇe jako u log˚ u neomezen´ y. Pozn´ amka a soubor Tyto tabulky slouˇz´ı jako shromaˇzdiˇstˇe text˚ u a soubor˚ u k urˇcit´ ym cache. Tyto data jsou oddˇelen´ a pˇredevˇs´ım kv˚ uli tomu, ˇze jsou nestandartn´ı. Takov´ yto typ dat nen´ı na geocaching.com podporov´an. Slouˇz´ı jako utˇr´ıdˇen´ y seznam uˇzivatelsk´ ych poznatk˚ u k dan´e cache. Datab´aze je v praxi obsluhov´ ana zvolen´ ym datab´azov´ ym syst´emem, v r´amci aplikace je pak pˇr´ıstupn´ a pˇres modul DB (4.2.1).
4.4
N´ avrh grafick´ eho rozhran´ı
N´avrh vzhledu a uspoˇr´ ad´ an´ı grafick´eho rozhran´ı vych´az´ı z uˇzivatelsk´ ych poˇzadavk˚ u (sekce 3.1), jejichˇz znalost je pro schopnost spr´avnˇe navrhnout a uspoˇr´adat strukturu grafick´eho rozhran´ı s ovl´ adac´ımi a informaˇcn´ımi prvky velmi d˚ uleˇzit´a. Je to pˇr´ım´e spojen´ı s uˇzivatelem, mus´ı tedy plnˇe vyhovovat zabˇehnut´ ym zp˚ usob˚ um ovl´ad´an´ı a z´aroveˇ n tak´e obs´ahnout vˇsechny potˇrebn´e prvky, nutn´e pro ovl´ ad´ an´ı aplikace a zobrazov´an´ı informac´ı. Na obr´ azku 4.6 je zn´ azornˇen vzhled a struktura grafick´eho rozhran´ı, navrˇzen´eho pro tuto aplikaci. Veˇsker´e prvky (podokna) hlavn´ıho okna grafick´eho prosˇred´ı jsou zde v n´avrhu zat´ım zm´ınˇeny jako abstraktn´ı objekty, kter´e dostanou pˇresnˇejs´ı podobu aˇz v kapitole 5. V´ yznam grafick´ ych prvk˚ u je zˇrejm´ y, nen´ı tedy tˇreba legendy, ani jin´ ych pomocn´ ych informac´ı. Obr´ azek 4.7
20
4.4.1
Struktura GUI
Obr´ azek 4.6: Grafick´e zn´azornˇen´ı struktury a uspoˇr´ad´an´ı GUI
4.4.2
Popis struktury GUI
Z´akladn´ı k´ amen grafick´eho rozhran´ı tvoˇr´ı objekt hlavn´ıho okna, kter´e je rodiˇcem vˇsech ostatn´ıch oken, na nˇej um´ıstˇen´ ych. Menu a n´ astroje Z´ akladem vˇetˇsiny aplikac´ı jsou panel menu a panel n´astroj˚ u, standartnˇe um´ıstˇeny vodorovnˇe pod horn´ım okrajem okna. Panel menu obsahuje kategorizovan´ y seznam t´emˇeˇr veˇsker´ ych akc´ı, kter´e jsou v aplikaci k dispozici. Panel n´astroj˚ u je osazen nˇekter´ ymi nejpouˇz´ıvanˇejˇs´ımi akcemi formou tlaˇc´ıtka s ikonou, vyjadˇruj´ıc´ı jej´ı smysl. Stavov´ y panel Takt´eˇz velmi z´akladn´ım prvkem je stavov´ y panel, kter´ y je standartnˇe um´ıstˇen vodorovnˇe nad spodn´ım okrajem hlavn´ıho okna. Tento panel slouˇz´ı jako ukazatel pr˚ ubˇehu nˇekter´ ych akc´ı, ˇci ukazatel stavu nˇejak´e hodnoty. Standartnˇe je tak´e vyuˇz´ıv´an jako zobrazovaˇc n´ apovˇedy k ovl´ adac´ım prvk˚ um menu a panelu n´astroj˚ u. Plocha hlavn´ıho okna Je rozdˇelena svisl´ ym tahaˇcem na dva odliˇsn´e celky, kter´ ymi jsou seznam cache a okno zobrazuj´ıc´ı podrobnosti.
21
Seznam cache Tento panel je um´ıstˇen´ y v lev´e polovinˇe plochy hlavn´ıho okna. Obsahuje vertik´alnˇe ˇrazen´ y seznam cache, kde kaˇzd´a poloˇzka obsahuje n´azev, waypoint (unik´atn´ı oznaˇcen´ı pro kaˇzdou cache) a tak´e vzd´alenost a smˇer od domovsk´ ych souˇradnic. V horn´ı ˇc´asti tohoto okna je tak´e um´ıstˇen ovl´adac´ı prvek s volbou kl´ıˇce ˇrazen´ı. Akce v tomto oknˇe ˇr´ıd´ı vedlejˇs´ı okno s podrobnostmi. Podrobnosti Toto okno m´ a za u ´kol zobrazovat form´atovan´ y dokument s podrobnostmi zvolen´e cache. Obsahuje tak´e prvky spojen´e s u ´kony t´ ykaj´ıc´ı se otev´ır´an´ı dovolen´ ych adres v standartn´ım prohl´ıˇzeˇci. Grafick´e rozhran´ı je ˇr´ızeno zpr´ avami zas´ılan´ ymi operaˇcn´ım syst´emem, jako klasick´a jin´ a aplikace s GUI a v reakc´ıch na tyto zpr´avy komunikuje s odpov´ıdaj´ıc´ımi moduly.
Obr´ azek 4.7: Uk´ azka praktick´e realizace grafick´eho rozhran´ı aplikace
22
Kapitola 5
Implementace V t´eto kapitole budou pˇredevˇs´ım popsn´any vybran´e postupy nˇejak´ ym zp˚ usobem vyjimeˇcn´e, nebo d˚ uleˇzit´e. Pˇred t´ımto v´ yˇctem je tak´e vhodn´e zastavit se nad v´ ybˇerem pouˇzit´ ych n´astroj˚ u a knihoven a zd˚ uvodnˇen´ım jejich pouˇzit´ı.
5.1
V´ ybˇ er implementaˇ cn´ıch n´ astroj˚ u
V sekci 3.2.7 byly shrnuty poˇzadavky na extern´ı n´astroje, kter´e je tˇreba do aplikace zahrnout. Pˇredt´ım, neˇz zaˇcnu popisovat vybran´e n´astroje, je d˚ uleˇzit´e zm´ınit programovac´ı jazyk, pouˇzit´ y pˇri implementaci. T´ımto jazykem je objektovˇe orientovan´ y (OO) jazyk C++ poskytuj´ıc´ı drtivou vˇetˇsinu v´ yhod OO modelu. Od toho se tedy bude d´ale odv´ıjet i v´ ybˇer knihoven a jin´ ych n´ astroj˚ u, nutn´ ych k realizaci aplikace. Samozˇrejmost´ı pˇri v´ ybˇeru n´astroj˚ u byl fakt, ˇze dan´ y n´ astroj mus´ı b´ yt multiplatformn´ı. N´asleduje v´ yˇcet pouˇzit´ ych knihoven, koment´ aˇr k jejich v´ yhod´ am a zd˚ uvodnˇen´ı v´ ybˇeru.
5.1.1
wxWidgets
Tato knihovna byla jasnou volbou jiˇz od poˇc´atku, nebot’ poskytuje veˇsker´e funkce multiplatformnˇe a tak´e pokr´ yv´ a velmi ˇsirok´e spektrum schopnost´ı. Od implementace grafick´eho rozhran´ı, pˇres ˇradu datov´ ych struktur, konfigurace, souborov´e syst´emy aˇz po XML parsery, HTML prohl´ıˇzeˇce, nebo napˇr´ıklad kompletn´ı syst´em lokalizace. Tato knihovna odv´ ad´ı za program´atora opravdu kvanta pr´ace, coˇz m´a v´ yhody jak charakteru ˇcasov´e u ´spory, tak tak´e vˇetˇs´ı stability a kompatibility. V´ yˇcet funkc´ı t´eto knihovny je opravdu pˇredlouh´ y, uvedu tedy nejd˚ uleˇzitˇejˇs´ı prvky, pouˇzit´e v t´eto aplikaci. Patˇr´ı mezi nˇe: GUI, pˇr´ıstup k soubor˚ um, ˇretˇezce a jejich k´odov´an´ı, lokalizace, vl´anka, prostˇredky operaˇcn´ıho syst´emu, XML parser.
5.1.2
SQLite
Je knihovnou, maj´ıc´ı v reˇzii datab´azi, obsahuje prostˇredky pro jej´ı vytv´aˇren´ı, z´apis, u ´pravy, atd. Je to tedy plnohodnotn´ y datab´azov´ y syst´em s v´ yhodou pˇr´ım´e integrace do aplikace jako knihovna. SQLite nen´ı tak vybaveno jako robustnˇejˇs´ı datab´azov´e n´astroje. Obsahuje vˇsak vˇsechny potˇrebn´e funkce a schopnosti, kter´e se od datab´azov´eho syst´emu oˇcek´avaj´ı, vˇcetnˇe transakc´ı atd. Knihovna sama o sobˇe nab´ız´ı pouze rozhran´ı pro jazyk C, coˇz je v tomto projektu nevyhovuj´ıc´ı. Pˇr´ım´e pouˇzit´ı by bylo zbyteˇcnˇe komplikovan´e, nav´ıc by to ruˇsilo obraz objektov´eho zpracov´ an´ı aplikace. 23
Bylo tedy vhodn´e naj´ıt vhodnou n´astavbu nad C rozhran´ı SQLite pro jazyk C++. Pro tyto u ´ˇcely byla zvolena knihovna Sqlite wrapped, coˇz je velmi jednoduch´a a nen´aroˇcn´ a n´astavba nad SQLite pro C++.
5.1.3
WGS-84
Pro tento u ´ˇcel nebyla nalezena ˇza´dn´a vyhovuj´ıc´ı knihovna, pˇristoupil jsem tedy ke studiu problematiky uveˇrejnˇen´e na interetu, kde jsem objevil nˇekolik algoritm˚ u pro v´ ypoˇcty ve WGS-84. Nakonec jsem pouˇzil volnˇe ˇsiˇriteln´e algorimty z [6]. Studium tˇechto algoritm˚ u ’ v r´amci t´eto pr´ ace je nesmysln´e, nebot se j´ı t´ yk´a pouze nepˇr´ımo.
5.1.4
Zdroje
Pˇri pouˇz´ıv´ an´ı ciz´ıch knihoven je nutn´e uv´est zdroj, zde je tedy seznam pouˇzit´ ych knihoven spolu s jejich zdroji: • wxWidgets, licence LGPL http://www.wxwidgets.org/ • SQLite, licence public domain http://www.sqlite.org/ • SqLite wrapped, licence GPL http://www.alhem.net/project/sqlite/index.html • WGS-84 algoritmy, licence LGPL http://www.movable-type.co.uk/scripts/latlong-vincenty.html
5.2
Inicializace aplikace
Vstupn´ı bod aplikace a tedy i m´ısto prvnotn´ı inicializace je metoda tˇr´ıdy aplikace OnInit(). Nejprve jsou nastaveny urˇcit´e parametry, na kter´ ych je z´avisl´ y dalˇs´ı pr˚ ubˇeh. V prvn´ı ˇradˇe se nastav´ı instalaˇcn´ı adres´ aˇr (urˇcen´ y v dobˇe kompilace) do glob´aln´ıho objektu spr´avy standartn´ıch adres´ aˇr˚ u (wxWidgets). Z nˇej se pak odv´ıj´ı defaultn´ı cesty k adres´aˇr˚ um, vyuˇz´ıvan´ ych aplikac´ı. Bezprostˇrednˇe pot´e je vytvoˇren a zveˇrejnˇen konfiguraˇcn´ı objekt, staraj´ıc´ı se o naˇcten´ı, ˇcten´ı, z´ apis a n´ asledn´e uloˇzen´ı konfigurace po skonˇcen´ı aplikace.
5.2.1
Inicializace datab´ aze
Dalˇs´ım krokem je vytvoˇren´ı datab´azov´eho objektu DbObject, kter´ y je n´aslednˇe registrov´ an do glob´ aln´ıho objektu handleru. Inicializace datab´aze probˇehne v r´amci konstruktoru datab´azov´eho objektu. Nejprve je otevˇreno spojen´ı s datab´az´ı, kter´a se star´a o ˇcten´ı a tak´e existenci souboru s datab´ az´ı. Po pˇripojen´ı zkontroluje DbObject existenci vyˇzadovan´ ych tabulek v datab´ azi metodou testTables(), kde zjist´ı, zda nejsou v datab´azi chybˇej´ıc´ı tabulky. Pokud nˇejak´e zjist´ı, vol´an´ım metody createTables() tyto chybˇej´ıc´ı tabulky v datab´azi vytvoˇr´ı. Po tomto bodu je jiˇz datab´aze spr´avnˇe inicializov´ana.
24
5.2.2
Inicializace GUI
Prvn´ım bodem incializace je vytvoˇren´ı hlavn´ıho okna, kter´e pot´e prostˇrednictv´ım sv´eho kostruktoru vytv´ aˇr´ı a inicializuje dceˇrinn´a okna. Polohovateln´a okna pˇritom vyuˇz´ıvaj´ı konfiguraˇcn´ıho objektu, ze kter´eho ˇctou posledn´ı zn´amou polohu. Pˇri sv´em z´aniku naopak svou polohu ukl´ adaj´ı. Jako prvn´ı jsou vytvoˇreny panely menu, n´astroje a stavu, vˇsechny jejich poloˇzky tak´e a jsou usazeny na sv´e pozice. N´ asleduje vytvoˇren´ı oken seznamu cache a podrobnost´ı cache a jejich usazen´ı do splitteru (Objekt dˇel´ıc´ı plochu panelu na dvˇe podokna s moˇznost´ı upraveh´ı ˇs´ıˇrek).
5.2.3
Inicializace seznamu
Pˇri vytv´ aˇren´ı okna seznamu cache se toto okno inicializuje pˇres sv˚ uj konstruktor, ve kter´em vytvoˇr´ı objekt DbCacheRequest, kter´ y pˇred´a datab´azi na zpracov´an´ı, n´aslednˇe z nˇej metodou loadCaches() vytah´ a seznam cache, kter´ y je jiˇz nachyst´an pro zobrazen´ı a dalˇs´ı operace s n´ım. Pro kaˇzdou cache tak´e spoˇc´ıt´a vzd´alenost a smˇer od domovsk´ ych souˇradnic, tyto hodnoty uloˇz´ı jako souˇc´ ast doˇcasn´eho z´aznamu v seznamu (kv˚ uli zobrazen´ı a ˇrazen´ı).
5.3
Import, Export
Z charakteru tˇechto operac´ı jasnˇe vypl´ yv´a, ˇze budou pracovat s vˇetˇs´ımi objemy dat, lze pˇredpokl´ adat, ˇze dok´ aˇzou vz´ıt tak´e velk´e mnoˇzstv´ı v´ ypoˇcetn´ıho ˇcasu. Mˇely by b´ yt tedy implementov´ any relativnˇe efektivnˇe. Pˇri poˇzadavku uˇzivatele o import, nebo export vytvoˇr´ı GUI objekt MainIO, kter´emu jsou pˇred´any u ´daje o souboru. Ten pot´e podle typu rozhodne, kter´ y IO handler pouˇzije. Zde se silnˇe uplatˇ nuje dˇediˇcnost a polymorfismus, vytv´aˇrej´ıc´ı jednotn´e rozhran´ı ke vstupu/v´ ystupu. Objekt MainIO obsahuje dvˇe metody, importCaches() a exportCaches(), umoˇzn ˇuj´ıc´ı pracovat s dan´ ym handlerem jako s objektem jedin´eho typu1 .
5.3.1
Import cache
Jak bylo ˇreˇceno v´ yˇse, import cache m˚ uˇze b´ yt ˇcasto ˇcasovˇe n´aroˇcn´ y. Kromˇe toho je nutn´e zv´aˇzit skuteˇcnost, ˇze operace m˚ uˇze b´ yt uprostˇred nˇejak´ ym zp˚ usobem pˇreruˇsena, coˇz vede k nutnosti z´ avest tuto operaci v celku jako transakci, kter´e knihovna SQLite podporuje. K pouˇzit´ı transakce slouˇz´ı metody tˇr´ıdy DbObject. Metodou beginTransaction() je transakce zapoˇcata a pokud probˇehl import bez probl´em˚ u, transakci lze potvrdit metodou commitTransaction().
5.3.2
Export cache
Pro export cache existuj´ı v aplikaci dvˇe moˇznosti, co se t´ yˇce pˇredan´e datov´e struktury. Za prv´e aplikace umoˇzn ˇuje export aktu´aln´ıho seznamu cache, nach´azej´ıc´ım se v oknˇe seznamu. Za druh´e lze pouˇz´ıt objekt DbCacheRequest, naplnˇen´ y poˇzadovan´ ymi podm´ınkami (napˇr. jako v´ ystup dialogu vyhled´ av´ an´ı). Proveden´ı t´eto operace opˇet zajiˇst’uje objekt MainIO, kter´ y obsahuje pˇret´ıˇzenou metodu exportCaches(), j´ıˇz lze pouˇz´ıt pro obˇe dvˇe varianty. Export jiˇz nen´ı tˇreba uzav´ırat do transakce, nebot’ nemˇen´ı datab´azov´a data, ale pouze je ˇcte. 1
V aplikaci implementov´ ana zat´ım pouze podpora GPX form´ atu
25
5.3.3
Vl´ akna
Kv˚ uli zm´ınˇen´e ˇcasov´e n´ aroˇcnosti se nab´ız´ı moˇznost, pouˇz´ıt pro import/export operace samostatn´ ych vl´ aken, vracej´ıc´ıch hlavn´ımu procesu v pravideln´ ych intervalech informace o stavu dan´e operace. Kv˚ uli jednoduchosti a lepˇs´ı stabilitˇe je zvolena varianta zobrazen´ı uˇzivatelem neuzavˇriteln´eho mod´ aln´ıho dialogu, kter´ y informuje o stavu operace, jin´a pr´ace po tuto dobu nen´ı moˇzn´ a.
5.4
Implementace seznamu
V secki 5.2.3 je pops´ ano chov´ an´ı seznamu pˇri inicializaci, je vytvoˇren ˇcist´ y dotaz a cache z nˇej naˇcteny do seznamu. Takto vytvoˇren´ y objekt dotazu DbCacheRequest() je v seznamu uchov´an pro pˇr´ıpadn´e znovunaˇcten´ı seznamu. Pokud uˇzivatel vypln´ı a potvrd´ı nˇejak´ y vyhled´avac´ı filtr, jeho dialog vr´ at´ı nov´ y objekt dotazu, kter´ ym je pˇreps´an ten st´avaj´ıc´ı a seznam je naˇcten znovu podle nov´eho filtru.
5.4.1
Vyhled´ an´ı cache podle atribut˚ u
Z´akladn´ı vyhled´ avac´ı operac´ı je hled´an´ı podle atribut˚ u. Ta je pˇredstavov´ana dialogem se vstupn´ımi prvky jednotliv´ ych podm´ınek. Po potvrzen´ı dialogu je vytvoˇren objekt DbCacheRequest, kter´ y je pot´e naplnˇen zadan´ ymi podm´ınkami a pˇred´an objektu seznamu cache SkListBox, kter´ y jej uˇcin´ı nov´ ym objektem tohoto seznamu.
5.4.2
Vyhled´ an´ı cache pod´ el cesty.
Tento vyhled´ avac´ı postup potˇrebuje ponˇekud sloˇzitˇejˇs´ı logiku. Vstupem t´eto operace je soubor s body cesty, kter´e od sebe mohou b´ yt r˚ uznˇe vzd´alen´e. D´ale dosteneme od uˇzivatele pˇribliˇznou vzd´ alenost od cesty x, kterou m´ame uvaˇzovat. Pro tento pˇr´ıpad se nab´ız´ı iteraˇcn´ı postup, kdy mezi dva sousedn´ı body b a b+ 1, kter´e jsou od sebe vz´aleny v´ıce neˇz uvaˇzovan´ a vzd´alenost x, vkl´ ad´ ame postupnˇe nov´e body, vˇzdy na pˇr´ımku mezi tˇemito dvˇema body v kaˇzd´em kroku po vzd´ alenosti x. T´ım doc´ıl´ıme toho, ˇze prohled´avan´a plocha bude pˇribliˇznˇe odpov´ıdat ploˇse vedouc´ı pod´el cesty. Pro vˇsechny body jsou pak spoˇc´ıt´any bounding boxy s danou ˇs´ıˇrkou 2x, kter´e jsou pot´e vloˇzeny do vytvoˇren´eho objektu DbCacheRequest. Odsud je postup jiˇz stejn´ y, jako u pˇredchoz´ı varianty.
5.5
Okno podrobnost´ı
Toto okno SkHtmlView je v aplikaci v praxi reprezentov´ano HTML vykreslovac´ım oknem, jehoˇz vstupem je k´ od v HTML jazyce, okno se pot´e chov´a jako prohl´ıˇzeˇc. To dovoluje velmi jednoduchou a efektivn´ı pr´ aci s form´atov´an´ım v´ ystupu. Ve chv´ıli, kdy obdrˇz´ı seznam cache zpr´avu o poˇzadavku na zobrazen´ı podrobnost´ı vybran´e cache, je pˇred´an tomuto HTML oknu index dan´e cache. Okno si pot´e vybere veˇsker´e informace o cache z datab´aze a naform´atuje. Form´ atov´ an´ı prov´ ad´ı za pomoci ˇsablonovac´ı tˇr´ıdy SkDescTemplate. Vr´acen´ y HTML dokument pot´e pˇred´ a pˇr´ımo oknu za u ´ˇcelem vykreslen´ı. Tˇr´ıda okna SkHtmlView m´ a implicitnˇe nastaveno naˇc´ıt´an´ı obr´azk˚ u a otev´ıran´ı hypertextov´ ych odkaz˚ u do stejn´eho okna, coˇz je pro stabilitu nebezpeˇcn´e. Proto pˇred zobrazen´ım jsou vˇsechny pˇr´ımo okazovan´e obr´azky pomoc´ı regul´arn´ıch v´ yraz˚ u pˇreps´any na hypertextov´e odkazy. Odkazy na jin´e zdroje jsou blokov´any u ´plnˇe. Obsluha hypertextov´ ych odkaz˚ u z okna podrobnost´ı je pot´e pˇresmˇerovan´a do standartn´ıho prohl´ıˇzeˇce syst´emu. 26
Kapitola 6
Z´ avˇ er C´ılem bylo vytvoˇrit aplikaci, kter´ a hr´aˇc˚ um hry geocaching umoˇzn´ı jednoduchou spr´avu dat, z´ıskan´ ych ze serveru geocaching.com. Poˇzadavkem bylo obsaˇzen´ı z´akladn´ıch vyhled´avac´ıch, filtrovac´ıch, import/exportn´ıch operac´ı, kter´a by tato aplikace mˇela zvl´adat. Nejd˚ uleˇzitˇejˇs´ım a z´aroveˇ n nejpˇr´ınosnˇejˇs´ım poˇzadavkem byla multiplatformn´ı implementace, kter´a zat´ım ve sf´eˇre softwaru pro podporu geocachingu chyb´ı. V n´ avrhu jsem se snaˇzil vytvoˇrit prostˇred´ı, kde jednotliv´e moduly, ˇci objekty maj´ı definovan´a jasn´ a a jednoduch´ a rozhran´ı, pˇres kter´a navz´ajem komunikuj´ı. D˚ uraz jsem kladl tak´e na to, aby byla aplikace jednoduˇse rozˇsiˇriteln´a, tzn. bez z´asah˚ u do p˚ uvodn´ıho n´avrhu a s minim´aln´ımi z´ asahy do p˚ uvodn´ıch zdrojov´ ych k´od˚ u. Toto je zaruˇceno pˇredevˇs´ım vyuˇzit´ım princip˚ u objektov´eho programov´ an´ı, jako jsou dˇediˇcnost a vazba rodiˇcovsk´ ych a synovysk´ ych tˇr´ıd. Tento aspekt lze vyuˇz´ıt napˇr. pˇri poˇzadavku integrace dalˇs´ıch typ˚ u soubor˚ u, nebo vyhled´ avac´ıch dalˇs´ıch tˇr´ıd datab´ aze. Aplikace nenavazuje na jin´e projekty, je projektem p˚ uvodn´ım, kter´ y ale ˇcerp´a inspiraci z podobn´ ych aplikac´ı tohoto typu, kter´e jsou vˇsak vesmˇes urˇceny pro jedinou platformu. Tento software obsahuje pouze z´akladn´ı v´ yˇcet funkc´ı, pˇripadaj´ıc´ıch na n´astroj tohoto typu. Jak je ale ps´ ano v´ yˇse, model aplikace je pˇr´ımo navrˇzen s ohledem na budouc´ı rozˇsiˇrov´an´ı. Vzhledem k ˇsirok´e paletˇe poˇzadavk˚ u, kladen´ ych uˇzivateli se tato aplikace pˇr´ımo nab´ız´ı pro budouc´ı pr´ aci na nˇem a rozˇsiˇrov´an´ı jeho funkc´ı. Jedn´a se pˇredevˇs´ım o r˚ uzn´e vyhled´ avac´ı, statistick´e a tˇr´ıdic´ı operace, ˇci ovl´adac´ı prvky grafick´eho rozhran´ı. Hlavn´ım pˇr´ınosem t´eto pr´ ace je multiplatformn´ı alternativa k zaveden´ ym n´astroj˚ um pro ’ podporu geocachingu, nebot aplikace tohoto typu jsou z´asadnˇe urˇceny pro platformu MS Windows. Tato pr´ ace tedy pˇrin´ aˇs´ı podobn´e v´ yhody i uˇzivatel˚ um jin´ ych platforem, zejm´ena linuxu.
27
Literatura [1] Cacheopedia: Paperless geocaching. [online], march 2008, rev. 10. march 2004, [cit. 2008-05-10]. URL http://cacheopedia.com/wiki/Paperless_geocaching [2] Foster, D.: GPX: the GPS Exchange Format. [online], may 2008, rev. 10. may 2008, [cit. 2008-05-10]. URL http://www.topografix.com/gpx.asp [3] Groundspeak: Geocaching.com site terms of use agreement. [online], 2003, rev. 5. april 2004, [cit. 2008-05-10]. URL http://www.geocaching.com/about/termsofuse.aspx [4] Groundspeak: Cache Types. [online], may 2008, rev. 10. may 2008, [cit. 2008-05-10]. URL http://www.geocaching.com/about/cache_types.aspx [5] Lutonsk´ y, M.: Geocaching: hra pro mozek, nohy a vaˇsi GPS. [online], u ´nor 2007, rev. 1. u ´nor 2007, [cit. 2008-05-10]. URL http://navigovat.mobilmania.cz/clanky/AR.asp?ARI=112930 [6] Veness, C.: Vincenty formulas. [online], kvˇeten 2002, rev. 11. kvˇeten 2008, [cit. 2008-05-11]. URL http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html [7] Wikipedia: Geocaching. [online], may 2008, rev. 5. may 2008, [cit. 2008-05-10]. URL http://en.wikipedia.org/w/index.php?title=Geocaching\&oldid=210233859 [8] Wikipedie: World Geodetic System. [online], duben 2008, rev. 2. duben 2008, [cit. 2008-05-10]. URL http://cs.wikipedia.org/w/index.php?title=World_Geodetic_System\ &oldid=2431428
28