Automatizované sledování informací na webech

Rozměr: px
Začít zobrazení ze stránky:

Download "Automatizované sledování informací na webech"

Transkript

1 Mendelova univerzita v Brně Provozně ekonomická fakulta Automatizované sledování informací na webech Bakalářská práce Vedoucí práce: Ing. František Dařena, Ph.D. Filip Vaníček Brno 2012

2 Rád bych touto formou poděkoval vedoucímu práce Ing. Františku Dařenovi, Ph.D. za cenné připomínky a rady, které mi pomohly tuto práci vytvořit.

3 Tato práce vznikla v rámci řešení výzkumného záměru VZ MSM Prohlašuji, že jsem tuto práci vypracoval samostatně s použitím odborné literatury a pramenů uvedených v seznamu použité literatury na konci práce. V Brně dne 6. května 2012

4 Abstract Vaníček, F. Automatic data monitoring on Web sites. Bachelor thesis. Brno: MUAF, This work deals with the analysis, design and implementation of web application that will be able to track user-defined information on the selected web sites. Analysis and design of application is in the modeling language UML. The application is implemented in PHP. XML technology is used to extract structured data from Web pages. The application includes an interactive selector created in JavaScript allows selection of elements on the page by clicking a mouse. That allows control of the application for users who do not know HTML. Keywords Web mining, XML, web crawler, UML, marketing intelligence. Abstrakt Vaníček, F. Automatizované sledování informací na webech. Bakalářská práce. Brno: MZLU v Brně, Tato práce se zabývá analýzou, návrhem a implementací webové aplikace, která bude schopná sledovat uživatelem definované informace na zvolených webových stránkách. Analýza a návrh aplikace probíhá v modelovacím jazyce UML. Aplikace je implementována v jazyce PHP. Pro extrakci strukturovaných dat z webových stránek jsou využity XML technologie. Aplikace obsahuje interaktivní selektor vytvořený v jazyce JavaScript umožňující výběr prvků na stránce pomocí kliknutí myší. Ten umožní ovládání aplikace uživatelům, kteří neznají HTML. Klíčová slova Dolování dat z webu, XML, webový robot, UML, marketingové zpravodajství.

5 Obsah 5 Obsah 1 Úvod a cíl práce Úvod Cíl práce Analýza současného stavu Web Dolování dat z webu Extrakce strukturovaných dat XML technologie SAX DOM XPath XSLT Metodika řešení Analýza a návrh Technologie pro implementaci PHP CRON Databázový systém JavaScript AJAX jquery Analýza a návrh aplikace Neformální požadavky Diagram případů užití Diagram tříd Třída Robot Třída DB... 30

6 Obsah Třída RSS Třída Mail Třída Systém Diagram spolupráce ERD databáze Popis tabulek Implementace Uživatelské rozhraní aplikace Technické řešení aplikace Registrace a přihlášení uživatele Přidání nového sledování Aktualizace aplikace Generování RSS zdroje Upozornění em Zaznamenávání událostí v aplikaci Problémy při řešení aplikace Validace URL adresy Nastavení kódování stránky Nefunkční XPath dotazy Nedodržování standardů na webových stránkách Testování 49 7 Diskuze 51 8 Závěr 52 9 Literatura 53 A Kompletní diagram tříd 57 B SQL CREATE skript 58 C Příklad využití aplikace 61

7 Seznam obrázků 7 Seznam obrázků Obr. 1 Příklad stromové struktury dokumentu (zdroj: w3.org) 10 Obr. 2 Page2RSS (zdroj: page2rss.com) 12 Obr. 3 Výběr prvku ke sledování v aplikaci Femtoo (zdroj: femtoo.com) 13 Obr. 4 Strom XML dokumentu (zdroj: kosek.cz) 19 Obr. 5 Rozdíl mezi klasickým modelem a Ajaxem (zdroj: adaptivepath.com) 25 Obr. 6 Blokové schéma aplikace 27 Obr. 7 Diagram případů užití aplikace 28 Obr. 8 Třída Robot 30 Obr. 9 Třída DB 31 Obr. 10 Třída RSS 31 Obr. 11 Třída Mail 32 Obr. 12 Třída Systém 33 Obr. 13 Diagram spolupráce výběr prvku uživatelem 35 Obr. 14 Diagram spolupráce přidání výběru do databáze 36 Obr. 15 Schéma databáze 38 Obr. 16 Aplikace s načtenou webovou stránkou 43 Obr. 17 Aktualizace aplikace uživatelem 44 Obr. 18 Aktualizace aplikace 44 Obr. 19 Seznam logů uživatele 46 Obr. 20 Úspěšnost aplikace při zobrazení webových stránek 50 Obr. 21 Funkčnost vracení výsledku XPath dotazů na stránce 50

8 Seznam obrázků 8 Obr. 22 Kompletní diagram tříd 57 Obr. 23 Načtená stránka Yahoo! Finance 61 Obr. 24 Stav aplikace po kliknutí na prvek 62 Obr. 25 Detail aktualizace 63

9 Úvod a cíl práce 9 1 Úvod a cíl práce 1.1 Úvod World Wide Web, zkráceně Web, je největším veřejně dostupným informačním zdrojem, který kdy byl stvořen. Obsahuje obrovské množství neustále se měnících informací. Tyto informace jsou na webu uloženy ve formě webových stránek, které jsou formátovány pomocí HTML značek (tagů). HTML tagy umožňují informace strukturovat, vkládat do textu obrázky, tabulky a odkazy na jiné stránky. HTML tagy na rozdíl od XML tagů neříkají nic o tom, co je jejich obsahem [1]. Z tohoto důvodu je obtížné vyhledávat na webových stránkách relevantní informace. Automatizované vyhledávání informací na webu je ztíženo, protože velkou část obsahu webu tvoří nekvalitní nebo duplicitní obsah. Právě nadbytečnost obsahu je jedním z důvodů, proč se mnoho firem snaží webový obsah třídit. K třídění obsahu webových stránek je využíváno automatických webových robotů. Webový robot je počítačový program, který se stará o prohledávání a třídění obsahu webových stránek. Tato činnost není jednoduchá, protože každá stránka má jinou strukturu, která definuje umístění navigačních prvků, obsahu a reklam [2]. Problematikou získávání dat z webů se zabývá disciplína web mining, jejímž cílem je získávat užitečné informace nebo znalosti z webových odkazů, obsahu webových stránek a souborů logů [2]. Jelikož se obsah webových stránek neustále mění, musí webový robot tyto stránky opakovaně procházet a indexovat jejich obsah. Aby se dosáhlo co největší efektivity práce, musí robot tuto činnost vykonávat pouze tehdy, pokud došlo ke změně obsahu webové stránky. Způsoby, které umožní zjistit změny webového obsahu, se zabývá disciplína mining web dynamics [2]. Každý uživatel webu stráví denně nějaký čas sledováním změn obsahu svých oblíbených webových stránek. Tato činnost mu zabere čas, který by mohl využít efektivnějším způsobem. Zjednodušení uživateli přinese využití služeb, které se o sledování změn obsahu oblíbených webů postarají samy. Asi nejznámějším a nejrozšířenějším nástrojem pro sledování obsahu webu je čtečka redakčních kanálů (RSS). Tato technologie se využívá ke sledování novinek na webových stránkách. Sledovat lze pouze ty stránky, které mají tuto technologii implementovanou. Stránky musí mít informace ke sledování definované pomocí speciálního XML souboru (RSS zdroje) [3]. Nevýhodou tohoto způsobu je nemožnost sledovat jakékoliv informace z cílové stránky. Pokud uživatele zajímá vývoj ceny vybraného produktu na e-shopu nebo třeba změny kurzů, musí se poohlédnout po jiném způsobu řešení. Tím způsobem je využití specializované aplikace, která se postará o sledování definovaných informací na cílové webové stránce. Tyto aplikace využívají webových robotů ke stažení a následnému zpracování obsahu stránek, na základě uživatelem předdefinovaných pravidel. Ke zpracování dat na webových stránkách se využívá objektový model dokumentu (DOM). Ten umožňuje využít

10 Úvod a cíl práce 10 strukturovaného formátu dat webových stránek. Objektový model dokumentu je stromová struktura, která v sobě obsahuje jednotlivé elementy (tagy), nacházející se na dané webové stránce [2]. Tuto strukturu lze využít k adresování částí dokumentu. Obr. 1 Příklad stromové struktury dokumentu (zdroj: w3.org) Tento způsob umožňuje sledovat jakákoli data na kterékoli webové stránce. Jedinou nevýhodou tohoto způsobu sledování webového obsahu je složitější implementace než u RSS. Proto se tento způsob využívá v menší míře. Pro sledování webových stránek na základě objektového modelu dokumentu je potřeba, na rozdíl od RSS, využít aplikaci k tomu určenou. Tato aplikace může být nainstalována na počítači uživatele nebo dostupná online na webovém serveru. Výhody a nevýhody jednotlivých řešení jsou zřejmé. Aplikace nainstalovaná na počítači uživatele je vždy dostupná. Pro zjištění změn sledovaných informací musí uživatel zadat příkaz ke stažení aktuální verze stránek. Oproti tomu aplikace na webovém serveru může být aktualizována bez zásahu uživatele, automatickým spuštěním aktualizačního skriptu serverem. Navíc webová aplikace je víceuživatelská a netrpí neduhy softwarového pirátství. Proto je ideálním řešením využít jednu z takových aplikací. Bohužel realita se od ideálního stavu se liší. Pokud chce uživatel používat jednu z aplikací na sledování webových stránek, která je dostupná na webovém serveru, bude se muset naučit základy HTML, případně si připlatit měsíční poplatek za užívání této služby.

11 Úvod a cíl práce Cíl práce Cílem práce je analyzovat, navrhnout a implementovat webovou aplikaci, která uživatelům umožní automatické sledování vybraných textových údajů na zvolené webové stránce. Sledované údaje si bude moci uživatel definovat pomocí jednoduchého průvodce, který nebude vyžadovat znalost HTML. Následně aplikace uživateli umožní tato data přehledně sledovat na jednom místě. Příkladem využití aplikace je sledování změn ceny produktů, aktuálních kurzů nebo novinek.

12 Analýza současného stavu 12 2 Analýza současného stavu Informace jsou na webových stránkách uloženy mezi záplavou nedůležitých informací a reklam, které pouze ztěžují identifikaci těch hledaných. Mnoho lidí a firem je závislých na získání správných informací ve správný čas, například: Kupující potřebuje vědět, jak se vyvíjí cena určitého produktu na e-shopu. Obchodník potřebuje znát aktuální kurzy měn, komodit nebo akcií. Vlastník automobilu chce znát aktuální cenu pohonných hmot. Uživatel chce být informován o aktuálním dění ve světě. Každý sleduje jiné informace a pouhé manuální procházení webových stránek je neefektivní. Z tohoto důvodu je lepší využít jeden z mnoha nástrojů, které uživatelům umožňují různými způsoby sledovat webový obsah. Jedním z nejznámějších nástrojů pro sledování webového obsahu je čtečka redakčních kanálů (RSS). Tato technologie umožňuje sledovat novinky na vybraných webových stránkách [3]. RSS neumožňuje sledovat kterékoli webové stránky, proto se jí dále v této práci nebudu zabývat. Obr. 2 Page2RSS (zdroj: page2rss.com) Stránky, které technologii RSS implementovanou nemají, lze sledovat jinými způsoby. Jednou z možností je využití služby, která sleduje změny celé stránky. Příkladem takovéto služby je Page2RSS [4]. Tato služba funguje na jednoduchém principu. Uživatel do aplikace vloží adresu stránky, kterou chce sledovat. Aplikace využije webového robota ke stáhnutí aktuální verze stránky. Stáhnutá

13 Analýza současného stavu 13 stránka je porovnána s verzí starší a rozdíly mezi verzemi jsou zobrazeny jako změny. Tyto změny aplikace vkládá do automaticky generovaného redakčního kanálu. Pomocí tohoto kanálu uživatel může sledovat historii změn webové stránky. Nevýhodou aplikace je nulová možnost nastavení. Uživatel si může pouze vybrat, jakou webovou stránku chce sledovat. Jako výsledek vždy dostane souhrn dat, ve kterých se zorientuje jen s obtížemi. Proto je tento způsob nevhodný ke sledování pouze některých částí webové stránky. Lepším způsobem, jak sledovat vybraný obsah webových stránek, je využití webové aplikace Femtoo [5]. Tato aplikace se svými možnostmi nejvíce přibližuje cíli práce. Femtoo umožňuje sledovat obsah uživatelem vybraného textového prvku na zvolené webové stránce. Výběru prvku uživatel dosáhne využitím CSS selektoru napsaném v jazyku JavaScript [6]. V podstatě se jedná o to, že kliknutí na jakýkoliv textový element stránky způsobí vrácení CSS adresy prvku. CSS adresa tento prvek jednoznačně identifikuje. Možnost výběru pouze jednoho sledovaného prvku je jednou z největších nevýhod aplikace. Další nevýhodou této aplikace je její cena. Bez zaplacení poplatku může být aplikace využita pro vytvoření maximálně sta sledování na jednom uživatelském účtu za měsíc [5]. Obr. 3 Výběr prvku ke sledování v aplikaci Femtoo (zdroj: femtoo.com) Jelikož žádné z těchto řešení není ideální, je třeba se zamyslet nad řešením vlastním. Z tohoto důvodu je potřeba popsat základní prostředí, kterého se práce týká. Zjištěné poznatky byly shrnuty v tabulce 1.

14 Analýza současného stavu 14 Tab. 1 Sleduje obsah jakékoliv stránky Sleduje vybrané údaje na stránce 2.1 Web Srovnání současných nástrojů pro sledování změn webových stránek RSS Page2RSS Femtoo Ne Ano Ano Ne Ne Pouze jeden prvek Abychom mohli z webu získávat informace, musíme vědět, co to web je. Definici tohoto pojmu uvádí Liu ve své prezentaci [7]: Na webu je obrovské množství informací. Tyto informace jsou snadno dostupné. Pokrytí webových informací je velmi široké a různé. Na webu existují informace/data skoro jakéhokoliv typu. Mnoho informací na webu je strukturováno. Mnoho informací na webu je propojeno odkazy. Mnoho informací na webu je nadbytečných. Webová stránka obsahuje směs různých typů informací (hlavní obsah, reklamy, navigační panely, atd..). Web se skládá z povrchového (surface) webu a hlubokého (deep) webu. Povrchový web jsou webové stránky, které lze navštívit pomocí webového prohlížeče. Hluboký web jsou databáze, které mohou být přistupovány pouze pomocí dotazovacích rozhraní. Web je dynamický a dynamicky se mění. Web je virtuální společnost. Není pouze o datech, informacích a službách, ale je také o interakcích mezi lidmi, organizacemi a automatickými systémy. Rozsah této definice napovídá, že získávání dat z webu není triviální problém. O složitosti tohoto problému vypovídá také vznik oboru, který se získáváním dat z webu zabývá. 2.2 Dolování dat z webu Dolování dat z webu (web mining) je soubor metod, které se zabývají získáváním dat z webových stránek [2]. Web mining lze rozdělit na tyto typy [7]: web usage mining, web structure mining, web content mining.

15 Analýza současného stavu 15 Web usage mining se zabývá extrakcí uživatelských přístupových vzorů z webových logů, což může být užitečné pro sledování chování uživatele [7]. Webové logy zaznamenávají každé kliknutí uživatele na sledovaném webu. Úlohou web structure mining je analýza vzájemného propojení webových stránek pomocí odkazů [7]. Znalostí z tohoto oboru je využito v algoritmech, které se starají o hodnocení důležitosti webové stránky. Využívá se tu principu, který říká, že každý vlastník webu na své webové stránky umisťuje odkazy pouze na ty webové stránky, které jsou podle něj důležité a nějakým způsobem se vztahují k tématu na jeho stránkách. Z tohoto plyne, že na nejkvalitnější stránky odkazuje velké množství odkazů z neméně kvalitních stránek. Ty jsou ve vyhledávačích řazeny na lepší pozice [2]. Web content mining se zabývá extrakcí a integrací užitečných dat, informací a znalostí z obsahu webových stránek [7]. Příkladem využití technik web content mining je získání popisu produktu, zpráv z diskusního fóra a další manipulace s webovým obsahem. Web content mining se také využívá na třídění obsahu webových stránek v závislosti na jejich tématu [2]. Jelikož je tato práce zaměřená na sledování změn webového obsahu a s tím souvisejícími technikami web content mining, budu se dále zabývat tím, jak extrahovat strukturovaná data z webových stránek. 2.3 Extrakce strukturovaných dat Extrakce strukturovaných dat z webu je způsob, jakým lze z webových stránek získávat informace. Jak už bylo zmiňováno dříve, webová stránka se skládá z textů a tagů, které tento text popisují. Tato definice by se dala rozšířit o definici Lia [7], který říká, že web se skládá z povrchového webu a hlubokého webu. V podstatě se jedná o to, že webové stránky se skládají ze statické části (šablony) a dynamicky měnících se informací, uložených v napojených databázích. Tyto informace jsou do statické šablony doplňovány na základě interakcí webové stránky na vnější podněty. Program, který se stará o extrahování strukturovaných dat nám umožňuje získat informace z různých webových zdrojů a následně je využít mnoha způsoby. Mezi nejčastější způsoby využití patří indexování webových stránek, systémy srovnávání cen elektronických obchodů nebo také systémy umožňující sledování webového obsahu [2]. Existují tři hlavní způsoby, jakým se program pro extrakci strukturovaných dat učí, jak má extrakci cílového webu provést. Mezi tyto způsoby patří [2]: 1. Ruční postup Programátor po prozkoumání zdrojového kódu cílového webu navrhne a naprogramuje postupy, kterými se bude program řídit. Nevýhodou tohoto přístupu je možná aplikovatelnost pouze na jednu konkrétní webovou stránku, na kterou byl program připraven. 2. Poloautomatická extrakce

16 Analýza současného stavu 16 V tomto přístupu dostane program množinu vzorových webových stránek a k nim popis, jak z nich informace extrahovat. Díky tomu se program naučí, jak postupovat při extrakci webových stránek obsahujících části, které jsou shodné nebo podobné s nějakou částí ze vzorových. Nevýhodou přístupu poloautomatické extrakce je nutnost vytvořit velké množství manuálně označených vzorových dat, aby se zajistila efektivnost extrakčního programu. 3. Automatická extrakce Tento způsob představuje učení bez učitele. Program na zvolené webové stránce automaticky nalezne vzory, podle kterých provede extrakci. Největší nevýhodou je složitost a nedokonalost těchto systémů. Právě složitost a různorodost významů jazyka může vést k chybným určením slov programem. Příkladem může být slovo kohoutek, které může program pochopit jako vodovodní kohoutek, samce od kurovitého ptáka nebo jako část bicího ústrojí palných zbraní. Tyto tři hlavní způsoby extrahování strukturovaných dat z webů nejsou jediné a neměnné. Vznikají další přístupy, které se snaží extrahování strukturovaných dat zjednodušit. Příkladem takového přístupu může být využití aplikace, která uživateli umožní vytvořit šablony pro extrakci dat z dané webové stránky interaktivně. Právě tento přístup bude využit v této práci. Uživatel si sám označí informace, které chce extrahovat. Způsoby, jak lze označit data na webové stránce určená k extrakci, jsou umožněny využitím regulárních výrazů a XML technologií [8]. Každý z těchto dvou způsobů má své výhody i nevýhody. XML technologie mohou pracovat pouze s XML dokumenty. HTML dokument musí být nejprve převeden do XML formátu. Tento převod může být zdrojem mnoha problémů z důvodu nevalidity některých stránek. Naproti tomu regulární výrazy nepotřebují specifický formát, mohou pracovat s jakýmkoliv formátem jako s čistým textem [9]. Vytvoření univerzálního extrakčního pravidla je jednodušší pomocí XML technologií než pomocí regulárních výrazů [8]. Z výhod jednotlivých technologií plyne, že regulární výrazy jsou lepší pro předzpracování HTML stránky a následné převedení do XML. Na stránky v XML formátu je jednodušší použít XML technologie. Proto je extrakce strukturovaných dat pomocí kombinace regulárních výrazů a XML robustnější než použití samostatných regulárních výrazů [8]. 2.4 XML technologie K pochopení, co jsou a jak fungují XML technologie, je třeba nejprve vědět, co je jazyk XML. Extensible Markup Language (XML) je rozšiřitelný značkovací jazyk. Už definice poodkrývá význam této technologie. Nejlepším způsobem, jak lze XML pochopit, je srovnat ho s HTML. HTML je značkovací jazyk, který obsahuje sadu pevně definovaných značek, které mohou být použity pro značkování textu. Na rozdíl od toho XML nevyužívá pevně definovanou množinu značek. U tohoto jazyka lze využívat značek

17 Analýza současného stavu 17 vlastních, které mohou popisovat svůj obsah. Toho se využívá v různých aplikacích, kde formát XML slouží k uchovávání a přenosu dat. Příkladem využití XML jsou formáty pro publikování nových článků (RSS a Atom) nebo k přenosu dat (AJAX) [1]. Dokumenty ve formátu XML se skládají ze značek a jejich textového obsahu. Tyto značky je možné do sebe vnořovat a vytvářet hierarchickou stromovou strukturu, která má jednu kořenovou značku (uzel). HTML dokument je také možné považovat za jeden případ XML dokumentu, který jako kořenový uzel obsahuje značku HTML. Tento dokument musí splňovat všechny podmínky tvorby XML dokumentů musí být validní. Validní XML dokument musí obsahovat pouze ukončené značky, tyto značky se nesmí křížit [1]. Pokud HTML dokument není validní, není z něj možné vytvořit stromovou strukturu bez zásahů do zdrojového kódu. Hierarchické stromové struktuře, která v sobě obsahuje všechny značky z konkrétního dokumentu, se říká objektový model dokumentu (DOM) [1]. Tento model se často využívá pro čtení a práci s XML dokumentem s využitím rozhraní DOM. Ke čtení XML souborů se využívají i jiné způsoby. Mezi nejpoužívanější patří SimpleXML, XMLReader a SAX [1] SAX SAX (Simple API for XML) je jednoduché rozhraní, které umožňuje proudové čtení XML dokumentu. Tento přístup ke zpracování dokumentů je rychlý a paměťově nenáročný. Proto se využívá pro rozsáhlé XML dokumenty. Nevýhodou tohoto přístupu je složitější implementace oproti jiným metodám zpracování XML dokumentu [1]. Rozhraní SAX při průchodu XML dokumentem generuje proud událostí, které odpovídají různým částem XML dokumentu. Tyto události generuje program zpracovávající dokument (parser) podle toho, v jaké části dokumentu se právě nachází. Příkladem těchto událostí je začátek elementu, konec elementu nebo znaková data. Tyto události jsou poté předávány aplikaci, kde mohou být zpracovány obslužnými funkcemi. Běžně se využívají tři funkce, každá zpracovává jednu událost. První funkce zaznamenává vstup do značky a její název. Druhá funkce zaznamená všechny proudově přijatá znaková data, pokud je nastaven příznak vstupu do značky. Nakonec poslední funkce zaznamenává výskyt ukončovacích značek a podle toho nastavuje hodnotu příznaku [1]. Jelikož toto rozhraní nepodporuje přímý přístup k jednotlivým elementům XML dokumentu, využívá se pouze v určitých případech. Rozšířenější je rozhraní DOM, které využívá objektového modelu dokumentu [1] DOM Rozhraní DOM je oproti jiným přístupům k práci s XML dokumenty nejflexibilnější. Umožňuje načtení celého dokumentu do paměti, kde jsou jednotlivé elementy dokumentu reprezentovány jako objekty. Tímto způsobem je umožněn přímý přístup k jednotlivým částem dokumentu. Jednoduchost práce s tímto

18 Analýza současného stavu 18 rozhraním je vykoupena množstvím tříd, které rozhraní obsahuje. I přes tuto nevýhodu patří rozhraní DOM k nejvyužívanějším [1]. Rozhraní DOM umožňuje nejen z XML dokumentů číst, umožňuje s nimi dále pracovat (přidávat a odebírat elementy, změny ukládat, vytvářet nové XML dokumenty). Jednoduchost práce s tímto rozhraním nejlépe demonstruje příklad, který slouží k načtení XML dokumentu a výpisu obsahu elementu [1]: $doc = new DOMDocument(); $doc->load( <clovek><jmeno>pepa</jmeno></clovek> ); $jmeno = $doc->documentelement->getelementbytagname( jmeno ); echo $jmeno->item(0)->textcontent; V předchozím příkladu je načten jednoduchý XML dokument do paměti, poté byly nalezeny všechny značky jmeno a nakonec byl vypsán textový obsah první nalezené značky na standardní výstup. Pro získání odkazu na určitou značku je zde využito funkce getelementbytagname. Tato funkce vrátí seznam uzlů nalezených značek daného jména [8]. Kromě využití funkce getelementbytagname existuje další přístup pro adresování částí XML dokumentu. Tímto přístupem je dotazovací jazyk XPath [1] XPath XPath (XML Path Language) je dotazovací jazyk, který umožňuje adresovat části XML dokumentu. Na rozdíl od jiných přístupů umožňuje tento jazyk zapisovat výrazy, které vyberou určitou část XML dokumentu nebo provedou nějaký výpočet. Jazyk XPath využívá vlastní syntaxi, pomocí které se zapisují jednotlivé výrazy [1]. Stejně jako rozhraní DOM pracuje i XPath se stromovou reprezentací XML dokumentu. Tato reprezentace se proti stromové reprezentaci, kterou využívá rozhraní DOM, liší v několika detailech. Základem stromu jazyka XPath je kořenový uzel (označený znakem lomítka), na který je vždy připojen kořenový element XML dokumentu. Na každý element ve stromu mohou být dále napojeny další elementy, atributy uzlu, instrukce pro zpracování, komentáře nebo textové uzly. Obsahem textového uzlu je vždy textový obsah elementu. Na takový uzel už nemůže být nic připojeno, vždy se jedná o listový uzel [1]. Příklad XML dokumentu a jeho zobrazení v XPath stromu je znázorněn na obrázku 4.

19 Analýza současného stavu 19 Obr. 4 Strom XML dokumentu (zdroj: kosek.cz) Jazyk XPath se nejčastěji využívá pro výběr určité části XML dokumentu. Příkladem tohoto využití je výraz /osoba/jméno, který vybere všechny elementy jméno, které jsou zároveň podelementem elementu osoba. Tomuto typu výrazu se říká cesta. Každá část cesty se skládá ze tří částí identifikátoru osy, testu uzlu a predikátu (osa::test uzlu[predikát]) [1]. Jelikož XPath pracuje se stromovou reprezentací XML dokumentu, identifikátor osy umožňuje vybrat, v jakém směru a jakým způsobem má být strom prohledáván. Test uzlu následně vybere uzly určitého jména a typu. A nakonec predikát je podmínka, pomocí které lze výběr uzlů dále upřesnit [1]. Možnosti jazyka XPath dále rozšiřují operátory a funkce, které umožňují zápis výrazů, vracející jako svůj výsledek číslo, řetězec nebo logickou hodnotu. Mezi tyto operátory patří matematické operátory (sčítání, odčítání, násobení, dělení, zbytek po celočíselném dělení), relační operátory, sloužící k porovnávání hodnot a logické spojky (and, or) [1]. Pro práci v PHP s tímto rozhraním slouží třída DOMXPath, která přebírá jako parametr instanci třídy DOMDocument. Pro vyhodnocování výrazů může být použita jedna ze dvou metod, které nám rozhraní DOMXPath nabízí. Těmito metodami jsou query() a evaluate(). Metoda query() vyhodnotí XPath výraz a jako svůj výsledek vrátí DOMNodeList, což je seznam uzlů. Naproti tomu metoda evaluate() po vyhodnocení výrazu vrátí hodnotu určitého typu (číslo, řetězec nebo DOMNodeList [1]. Z toho vyplývá, že metoda query() se využívá v těch případech, kde je očekáváno vrácení více než jedné hodnoty. V ostatních případech je lepší využít metodu evaluate(), která se kromě vrácení hodnoty postará i o její přetypování. $doc = new DOMDocument();

20 Analýza současného stavu 20 $doc->load( <osoba> <jméno>pepa</jméno> <syn>pankrác</syn> <syn>servác</syn> </osoba> ); $xpath = new DOMXPath($doc); $vysledek = $xpath->query( /osoba/syn ); echo $vysledek->item(0)->textcontent; Předchozí ukázka části kódu se postará o načtení jednoduchého XML dokumentu. Následně je pomocí metody query() vyhodnocen XPath dotaz, který vybere všechny elementy syn, které jsou zároveň podelementem elementu osoba. Nakonec je pomocí funkce echo vypsán textový obsah první položky. Výsledkem této části kódu bude řetězec Pankrác. Předchozí popsané XML technologie nejsou jediné, které umožňují práci s XML dokumentem. Další možností je využití jazyku XSLT, jehož součástí je jazyk XPath [1] XSLT XSLT (Extensible Stylesheet Language Transformations) je jazyk určený pro zápis souborů stylů, pomocí kterých je možné převést XML soubory do jiných formátů [1]. Těmito formáty je myšleno HTML, XML, PDF, čistý text nebo i jiné. Zjednodušeně lze říci, že XSLT je pro XML soubory to stejné jako kaskádové styly (CSS) pro HTML dokumenty. Toto úplně přesně neplatí, neboť XSLT má na rozdíl od CSS mnohem větší možnosti práce se zpracovávaným dokumentem. XSLT se využívá v moderních aplikacích, které využívají pro přenos a ukládání dat XML soubory. Tyto aplikace jsou velmi flexibilní, neboť mohou svoje výstupy zobrazovat v mnoha různých formátech. Záleží jen na tom, pro jaké výstupní formáty jsou vytvořeny XSLT šablony. Největší výhodou takové aplikace je to, že může být kdykoliv rozšířena o nové šablony, které reflektují vznik nových formátů. Soubor XSLT šablony je speciálním typem XML dokumentu. Pro zápis příkazů je zde využito XML značek, před jejichž název se zapisuje prefix (xsl:). Díky tomu je možné kombinovat XSLT příkazy, HTML a XML značky. Samotný XSLT se skládá z několika částí (šablon). Každá šablona je označena značkou xsl:template a pomocí XPath výrazu jasně definuje část XML dokumentu, která má být podle této šablony zpracována. Obsahem šablon je XSLT kód, který může být zapsán pomocí proměnných, cyklů, podmínek a funkcí [1]. Pomocí těchto nástrojů je definován vzhled výstupního souboru. Možnosti jazyka XSLT jsou tak velké, že může být, podobně jako předchozí XML technologie, použit pro extrakci a zpracování strukturovaných dat z XML souborů.

21 Metodika řešení 21 3 Metodika řešení Každá aplikace by měla v rámci svého životního cyklu projít několika základními fázemi. Mezi tyto fáze patří specifikace problému, analýza, návrh, implementace, testování, provoz a údržba [11]. Jelikož fáze specifikace problému byla splněna v kapitole zadání a úvodní kapitole, bude se tato kapitola zabývat výběrem vhodných metod pro analýzu, návrh a implementaci výsledné aplikace. 3.1 Analýza a návrh Existují dva přístupy k analýze programu (softwarového díla). Těmito přístupy jsou analýza strukturovaná a objektová. V této práci bude využita objektová analýza, která je modernější a více odpovídá pohledu reálného světa [11]. V objektové analýze se softwarové dílo skládá z objektů, které jsou dány pomocí svých předpisů (tříd). Každá třída zjednodušeně popisuje jeden prvek reálného světa. Příkladem takového prvku může být obyčejné auto. Tento objekt reálného světa má určité vlastnosti. Vlastnosti auta se nazývají atributy a slouží k uchovávání vnitřního stavu objektu. Kromě atributů popisuje třída i funkce objektu. V konkrétním případu auta to znamená, že reálné auto má různé možnosti, z nichž některé mohou být v programu využity. Příkladem funkce třídy auto je metoda natankuj, která se postará o navýšení hodnoty atributu palivo. Pro využití technik objektové analýzy při tvorbě softwarového díla musíme použít nějaký z nástrojů vizuálního modelování. Standardní notací pro vizuální modelování je UML (Unified Modeling Language). UML je jazyk pro vizualizaci, návrh a dokumentaci softwarového díla. Toto je umožněno pomocí několika druhů diagramů, které UML nabízí. Mezi tyto diagramy patří diagram tříd, diagram objektů, diagram případů užití (use-case diagram), stavový diagram, diagram sekvencí, diagram činností, diagram spolupráce, diagram komponent a diagram nasazení. Ne vždy je nutné při modelování určitého projektu využít všechny typy diagramů, které UML nabízí [11]. V této práci bude využit diagram případů užití, diagram tříd a diagram spolupráce. Diagram případů užití slouží k popisu chování systému z pohledu uživatele. Diagram tak umožňuje zjistit rozsah systému a ujasnit interakce mezi uživateli a systémem. Hlavními částmi diagramu případů užití jsou aktér (actor), který reprezentuje entitu uživatele a use-case (konkrétní případ užití). V diagramu jsou aktéři a use-case propojeni pomocí vztahů. Tímto způsobem je znázorněno, co může určitý uživatel (aktér) se systémem dělat [11]. Dalším modelem UML je diagram tříd, který znázorňuje jednotlivé třídy systému a vazby mezi těmito třídami. Diagram tříd se využívá ve fázi implementace systému, neboť umožňuje efektivně rozdělit práci do jednotlivých částí, které mohou být implementovány a testovány individuálně, bez závislosti na okolních částech systému [11]. Diagram spolupráce na rozdíl od předchozích dvou patří mezi diagramy, které modelují dynamické vlastnosti systému. Tento diagram podobně jako dia-

22 Metodika řešení 22 gram sekvenční modeluje interakce mezi objekty. Na rozdíl od diagramu sekvenčního, který tyto interakce zkoumá s ohledem na časovou posloupnost těchto událostí, diagram spolupráce se soustředí na jednotlivé objekty s ohledem na jejich vzájemné propojení. Diagram spolupráce je rozšířením diagramu objektů. Kromě propojení objektů zobrazuje zprávy, které si objekty posílají [11]. V diagramu spolupráce jsou používány jednoduché symboly pro označení jednotlivých částí. Základním prvkem tohoto diagramu je symbol obdélníku, který reprezentuje objekt. Tyto obdélníky jsou propojeny přímkami, u kterých jsou šipky s popisem. Tímto způsobem je znázorněna vzájemná interakce mezi objekty, kde šipky reprezentují zprávy, které si mezi sebou objekty zasílají [11]. Standardním softwarem pro UML modelování je komerční produkt Rational Rose [11]. V této práci místo něj bude využit software StarUML, který autoři označují jako volně dostupnou alternativu Rational Rose [12]. S využitím UML diagramů vytvořených v programu StarUML, které vzniknou ve fázi analýzy a návrhu systému, se zjednoduší fáze implementace systému. 3.2 Technologie pro implementaci Po fázi analýzy a návrhu nastupuje fáze implementace systému. Před započetím této fáze je potřeba vhodně zvolit technologie, pomocí kterých bude systém implementován. Už v zadání této práce bylo specifikováno, že součástí výstupu této práce bude webová aplikace. Zvolil jsem jazyk PHP, neboť PHP je lepší, rychlejší a jednodušší než jakékoli jiné alternativy jak uvádí Ullman str. 13 [13]. Aby aplikace mohla automaticky sledovat informace na zvolených stránkách, je potřeba vybrat nástroj, který se postará o spouštění skriptů provádějících tuto činnost. Takovým nástrojem je CRON [18]. Pro realizaci aplikační vrstvy a uživatelského rozhraní je potřeba zvolit databázový systém. Aby byla moderní aplikace úspěšná, měla by kromě schopnosti ukládat data být dostatečně uživatelsky přívětivá. K tomuto účelu se využívá jazyk JavaScript [15] PHP PHP je skriptovací jazyk určený pro běh na webových serverech, kde umožňuje zpracování výsledků na základě uživatelských vstupů, dat z databází a mnoha dalších událostí. Tyto výsledky jsou poté uživateli zobrazeny ve formě webové stránky [13]. Jak již bylo řečeno, PHP je skriptovací jazyk. Proto se kód pro webové servery zapisuje ve formě skriptů, které se nemusí překládat do strojového kódu, jak je tomu u programovacích jazyků. Z tohoto důvodu jsou skripty tohoto jazyka vždy snadno rozšiřitelné. PHP je jazyk nezávislý na platformě. To znamená, že každý skript napsaný v tomto jazyce půjde spustit na serveru s jakýmkoliv operačním systémem [13].

23 Metodika řešení 23 Při odesílání požadavků na webový server se využívá architektura klientserver. Tato architektura, na rozdíl od jiných přístupů, umožňuje využívání webové aplikace velkému množství uživatelů. To je docíleno použitím prvku serveru, který naslouchá příkazům klientů, na které následně odpovídá [13]. Reakce webového serveru na dotazy klientů jsou řízeny PHP skriptem. Z tohoto důvodu má PHP v základu implementováno velké množství knihoven. Tyto knihovny umožňují jednoduché využití vstupně-výstupních operací, XML technologií, databází a mnoha dalších technologií [13]. Jelikož se PHP skripty provedou pouze tehdy, když jsou spuštěny, je potřeba zvolit nástroj, který se postará o spouštění aktualizačních skriptů aplikace CRON CRON je program běžící na pozadí operačního systému, který se stará o spouštění předdefinovaných aplikací v daný čas. K tomuto účelu slouží speciální soubor crontab nacházející se v adresáři etc [18]. V souboru crontab je na každém řádku nadefinován časový interval a jméno aplikace, která má být v tuto dobu spuštěna. Nejkratší časový interval spuštění aplikace je jedna minuta. Každý řádek v souboru crontab má následující syntaxi oddělenou mezerami [18]: minuta (0 59), hodina (0 23), den v měsíci (1 31), měsíc (1 12), den v týdnu (0 = neděle, 1 = pondělí,, 7 = sobota), cesta k aplikaci, kterou má CRON spustit. U každé z prvních pěti hodnot může být použit znak hvězdičky (*), který označuje jakoukoliv hodnotu. Příkladem použití programu CRON je následují kód, který zajistí provedení skriptu aktualizace.php každou hodinu. 0 * * * * wget Databázový systém Pro potřeby ukládání dat na webovém serveru je potřeba zvolit vhodný databázový systém. Zde máme na výběr z mnoha různých možností. Mezi nejznámější patří databázové systémy ORACLE, Microsoft SQL Server a MySQL. Výběr mezi těmito systémy usnadňuje fakt, že pouze jeden databázový systém je nejrozšířenější. Tímto databázovým systémem je MySQL [13]. MySQL je multiplatformní databázový systém s veřejným zdrojovým kódem, který je dostupný pod bezplatnou licencí. To je hlavní důvod, proč je tento databázový systém celosvětově nejrozšířenější. Databázový systém MySQL je relační databází. To znamená, že data uvnitř této databáze jsou vzájemně provázaná pomocí primárních a cizích klíčů. Relač-

24 Metodika řešení 24 ní databáze tedy uchovává informace o relacích (vztazích) mezi daty, které jsou uloženy ve vzájemně propojených tabulkách [13]. Pro návrh a implementaci relačních databází se využívají entitně-relační diagramy, které tento proces zjednodušují. Pro databázi MySQL je možné využít volně dostupný grafický modelovací nástroj MySQL Workbench [14], který podstatně zjednodušuje a zkracuje proces návrhu a implementace databáze. Pro práci s daty se využívá jazyk SQL (Standard Query Language), pomocí něhož je možné zadávat dotazy na databázi. Pro práci s databázemi jsou příkazy jazyka SQL rozděleny do čtyř skupin [13]: příkazy pro manipulaci s daty (DML), příkazy pro definici dat (DDL), příkazy pro řízení přístupových práv (DCL), příkazy pro řízení transakcí (TCL) JavaScript JavaScript je stejně jako PHP skriptovací jazyk. Rozdílné mezi těmito jazyky je místo, kde je výsledný skript interpretován. PHP skripty jsou interpretovány na straně serveru, skripty jazyka JavaScript jsou vkládány do HTML kódu webu a jsou interpretovány webovým prohlížečem na straně klienta [15]. Z toho plyne největší nevýhoda JavaScriptu. Kdokoliv se může podívat na zdrojový kód skriptu. Proto tento jazyk není vhodný pro skripty aplikací, kde by zveřejnění zdrojového kódu mohlo způsobit bezpečnostní rizika pro webovou aplikaci [15]. Hlavním důvodem, proč se JavaScript používá, je jeho schopnost práce s obsahem webové stránky bez toho, aniž by došlo k odeslání požadavku na webový server a tím k jejímu obnovení. V této práci bude JavaScript použit pro jednoduchý výběr prvků stránky, určených pro sledování. Kromě toho bude využito technologie AJAX [15] AJAX AJAX (Asynchronous JavaScript and XML) je soubor technologií, které slouží k přenosu dat bez znovunačtení webové stránky. Toho je v praxi docíleno využitím skriptu v jazyce JavaScript [15]. Poprvé byla tato technologie zmíněna v článku Ajax: A New Approach to Web Applications od Jesse James Garretta [15]. V tomto článku autor popisuje AJAX jako soubor technologií, které mezi sebou zahrnují [16]: Základní technologie založené na standardech XHTML a CSS. Dynamické zobrazení a manipulace s objektovým modelem dokumentu (DOM). Výměnu a manipulaci s daty s využitím technologií XML a XSLT. Asynchronní přenos dat pomocí XMLHttpRequest. Technologie JavaScript, která to vše spojuje dohromady.

25 Metodika řešení 25 Obr. 5 Rozdíl mezi klasickým modelem a Ajaxem (zdroj: adaptivepath.com) Na obrázku 5 je možné vidět rozdíl mezi klasickým přístupem a modelem technologie AJAX. Pro správnou funkčnost této technologie musí skript v jazyce JavaScript zvládat [15]: odchycení události na stránce (př.: stisk tlačítka), odeslání dotazu na webový server, přijetí odpovědi na dotaz od webového serveru, zakomponování výsledku dotazu do obsahu webové stránky. Pro zjednodušení implementace technologie AJAX se využívají různé knihovny jazyka JavaScript. Mezi nejznámější patří jquery [17] jquery jquery je rychlá javascriptová knihovna, která umožňuje jednodušší adresování částí HTML dokumentu, zpracování událostí, vytváření animací a použití Ajaxových technologií pro rychlejší webový vývoj. Tuto knihovnu, šířenou pod svobodnou licencí, poprvé představil John Resig roku 2006 [17]. Práce s knihovnou jquery ve srovnání se samotným JavaScriptem výrazně šetří čas a množství kódu, které je potřeba pro řešení použít. To vše je zaštítěno

26 Metodika řešení 26 jednoduchou syntaxí. Ta využívá CSS selektory pro výběr prvků, se kterými bude jquery pracovat, a metody, které umožňují jednoduchou práci s vybranými prvky [17].

27 Analýza a návrh aplikace 27 4 Analýza a návrh aplikace Základním úkolem analýzy aplikace je vytvořit specifikaci požadavků na základě zadání práce. Požadavky na aplikaci se dělí na neformální a formální. Neformální požadavky pomocí přirozeného jazyka popisují základní požadavky na aplikaci. Formální požadavky využívají diagramu případů užití ke znázornění uživatelských rolí a jejich možnosti práce se systémem [11]. 4.1 Neformální požadavky Aplikace bude umožňovat sledování definovaných informací na zvolených webových stránkách. Ke zvolení sledovaných informací bude využit jednoduchý průvodce, který po uživateli nebude vyžadovat znalost HTML. Aplikace bude umožňovat práci více uživatelů v jeden okamžik. Každý uživatel, který bude chtít aplikaci využívat, se nejprve zaregistruje. Registrací uživateli vznikne uživatelský účet, který bude uchovávat veškeré nastavení uživatele. Pro práci s aplikací se uživatel přihlásí pomocí svého uživatelského jména a hesla. Po správném zadání přístupových údajů bude uživateli zpřístupněna soukromá část aplikace, kde si uživatel bude moci nastavit pomocí jednoduchého průvodce weby a informace na nich, které chce sledovat. Tyto záznamy se budou automaticky aktualizovat. Aktuální verze informací budou dostupné na úvodní straně aplikace a v automaticky generovaném RSS kanálu každého uživatele. Uživatel si bude moci zvolit, jestli chce být o změně sledovaných informací informován e- mailem. Zvláštním typem uživatele bude administrátor, který bude mít přístupné aplikační logy, pomocí nichž bude informován o dění v aplikaci. Obr. 6 Blokové schéma aplikace Pro snadnější pochopení vzájemné závislosti jednotlivých požadavků je využito blokové schéma celé aplikace (obr. 6).

28 Analýza a návrh aplikace Diagram případů užití Prvním krokem pro vytvoření diagramu případů užití je identifikace zúčastněných stran, které budou aplikaci využívat. Na základě neformálních požadavků na aplikaci byl zvolen aktér uživatel, administrátor a čas. Diagram případů užití pro tuto aplikaci znázorňuje obrázek 7. Obr. 7 Diagram případů užití aplikace Aktér uživatel se bude moci přihlásit do systému a po přihlášení nastaví svůj účet. Nastavením účtu je myšlena změna hesla, ové adresy a nastavení podmínek pro upozorňování na tuto adresu. Po dokončení práce se uživatel odhlásí, aby nikdo jiný nemohl získat přístup k jeho uživatelskému účtu. Kromě těchto základních možností bude uživatel moci přidat nové sledování vybrané informace na určité webové stránce. U všech vytvořených sledování si bude moci zobrazit detailní informace o sledování, jejichž součástí bude historie změn sledování. Aktér uživatel bude moci zobrazit seznam všech sledování a vybrané sledování bude moci smazat nebo aktualizovat. Aktér administrátor vychází z aktéra uživatele. Proto bude administrátor mít v základu stejné možnosti jako uživatel. Kromě toho bude moci prohlížet seznam všech uživatelů a aplikační logy, což mu umožní získat přehled nad děním v aplikaci.

29 Analýza a návrh aplikace 29 Důležitým aktérem v aplikaci bude čas. Čas představuje spouštění aktualizačního skriptu pomocí softwarového démona CRON [18]. Na základě zpracování tohoto skriptu bude prováděna aktualizace všech sledování a odesílání e- mailů. Po vytvoření diagramu případů užití, který aplikaci zobrazoval z pohledu uživatelů, je potřeba využít další diagram. Tímto diagramem bude diagram tříd, který usnadní další pochopení činnosti aplikace. 4.3 Diagram tříd Pro tvorbu diagramu tříd bude nejprve potřeba identifikovat jednotlivé třídy, které se budou v aplikaci nacházet [11]. Zde budu vycházet z blokového schématu aplikace (obr. 6), kde už byly názvy tříd použity. Proto se aplikace bude skládat z těchto pěti tříd: Robot, DB, RSS, Mail, Systém. Rozdělení aplikace do těchto tříd bylo zvoleno záměrně, neboť každá třída reprezentuje rozhraní pro práci s jednou z oblastí, do které aplikace zasahuje Třída Robot Nejdůležitější třídou aplikace je třída robot. Tato třída představuje webového robota, který je schopen stahovat webové stránky a na základě požadavků uživatele z těchto stránek extrahovat potřebné informace. Po předání URL adresy cílového webu je funkcí jevalidniurl zjištěno, jestli se jedná o platnou adresu. Pokud je adresa vyhodnocena jako platná, může třída tuto webovou stránkou načíst pomocí funkce nactiweb. Tato funkce se postará o stažení zvolené webové stránky, validaci a převedení do formátu DOMDocument. Pro zjištění, jestli instance třídy obsahuje načtenou webovou stránku v objektu DOMDocument, slouží funkce jenactenweb. Převod webové stránky do reprezentace DOM stromu s ní usnadní další práci a umožní provádět nad stránkou XPath dotazy [1]. Pro zadávání XPath dotazů slouží funkce xpath, která vrací textovou hodnotu elementu definovaného dotazem. Součástí této funkce je vyčištění výsledného řetězce od přebytečných bílých znaků (mezery, tabulátory) funkcí normalizujretezec. Kromě vykonávání XPath dotazů umí třída robot modifikovat DOM strom webové stránky. K tomu využívá několik funkcí: odstranskripty, zrusodkazy,

30 Analýza a návrh aplikace 30 opravstyly, pridejjquery. Funkce odstranskripty odstraní všechny skripty z webové stránky, funkce zrusodkazy se postará o zrušení funkčnosti odkazů na webové stránce. Ke změně všech odkazů na kaskádové styly a obrázky z relativních na absolutní slouží funkce opravstyly. Jelikož změna odkazů z relativních na absolutní vyžaduje vložení základní části URL před relativní URL adresu, je potřeba z každé URL adresy tuto část pomocí funkce vratzakladurl získat. Poslední funkce pro práci s DOM stromem je pridejjquery, která do webové stránky vloží jquery skripty. Ty jsou pak využity pro uživatelský výběr sledovaných prvků kliknutím myší. Aby se webová stránka po všech úpravách mohla zobrazit uživateli, je potřeba ji převést z reprezentace DOM stromu na HTML kód, který může být uživateli zobrazen. O to se stará funkce vrathtml. Obr. 8 Třída Robot Třída DB Pro práci s databází MySQL používá aplikace třídu DB. Konstruktor třídy nastaví přihlašovací údaje k databázi. Mezi tyto údaje patří adresa serveru, jméno databáze, přihlašovací jméno k databázi a heslo k databázi [19]. Po vytvoření instance třídy je možné pomocí funkce pripoj navázat spojení s databázovým serverem. K otestování, jestli je připojení k databázi aktivní, slouží funkce jepripojeno. Po úspěšném připojení k databázovému serveru je možné odeslat na databázi dotaz ve formátu SQL pomocí funkce dotazsql. Ukončit připojení k databázovému serveru lze zavoláním funkce odpoj.

31 Analýza a návrh aplikace 31 Obr. 9 Třída DB Třída RSS Třída RSS slouží ke generování RSS kanálu pro jednotlivé uživatele systému. K tomuto účelu třída využívá objektového modelu dokumentu. Pomocí něj třída RSS vytváří zcela nový XML dokument, který splňuje specifikaci RSS 2.0 [3]. Konstruktor třídy slouží k vygenerování základní části XML dokumentu. Pro nastavení názvu, adresy a popisu kanálu slouží funkce nastavnazevkanalu, nastavodkaznakanal, nastavpopiskanalu. Jednotlivé položky lze přidávat prostřednictvím funkce pridejpolozku. Hotový XML dokument RSS zdroje může být zobrazen pomocí funkce vratrss nebo uložen jako XML soubor funkcí ulozrss. Obr. 10 Třída RSS Třída Mail Pro posílání ů uživatelům aplikace slouží třída mail. Pomocí této třídy lze jednoduše sestavit a odeslat na jakoukoliv ovou adresu. Po nastavení ové adresy odesílatele v parametru konstruktoru této třídy se s využitím několika funkcí nastaví příjemce, předmět a text zprávy. Nakonec se odešle prostřednictvím funkce odeslimail.

32 Analýza a návrh aplikace 32 Obr. 11 Třída Mail Třída Systém Nejrozsáhlejší třídou aplikace je třída systém, která představuje rozhraní pro práci se všemi ostatními třídami. Uživatel bude moci komunikovat pouze s touto třídou, která jeho příkazy zkontroluje a poté provede příkazy zavoláním ostatních tříd. Funkce třídy Systém lze rozdělit do několika skupin podle způsobu použití: Kontrola vstupních dat. Autorizace uživatelů a práce s uživatelskými účty. Management sledovaných webů a jejich aktualizací. Generování RSS zdrojů. Odesílání ů. Zaznamenávání událostí v aplikaci. Kompletní soupis všech funkcí třídy systém je možné vidět na obrázku 12.

33 Analýza a návrh aplikace 33 Obr. 12 Třída Systém První skupina funkcí slouží k validaci a verifikaci vstupních dat. Data vstupující do aplikace je potřeba kontrolovat, abychom zabránili útokům typu SQL injection a XSS (Cross-site scripting) [20]. Útoky SQL injection se používají pro kompletní ovládnutí databáze špatně zabezpečeného cílového webu. Naproti tomu XSS slouží ke vložení skriptů do databáze prostřednictvím nezabezpečených vstupů. Tyto skripty útočníkovi umožní manipulovat se vzhledem stránky, získávat citlivé údaje od uživatelů a mnoho dalších nepříjemných věcí [20]. Proto by funkce pro kontrolu vstupních dat měly být nedílnou součástí každé webové aplikace. Obecně platí, že všechna data vstupující a vystupující z databáze by měla být kontrolována [20]. Pro práci s uživatelskými účty slouží další skupina funkcí. Důležitou funkcí je vytvoruzivatele. Tato funkce se postará o vytvoření nového uživatelského účtu, pokud neexistuje uživatel se stejným přihlašovacím jménem. Ostatní funkce z této skupiny se starají o kontrolu přihlašovacích údajů při přihlašování

34 Analýza a návrh aplikace 34 do aplikace, ověřování uživatelských práv a kontrolu platnosti přihlášení při přesunu uživatele na další stránku v zabezpečené sekci aplikace. Pro management sledovaných webů a jejich aktualizací je určena další skupina funkcí. Každý uživatel aplikace má možnost přidávat a odebírat webové stránky, které chce sledovat. K tomuto účelu slouží funkce novesledovani a smazsledovani. Po úspěšném nastavení webů a definování sledovaných informací uživatelem je potřeba tyto informace průběžně aktualizovat, aby uživatel měl vždy k dispozici nejaktuálnější informace. K aktualizaci určitého webu slouží funkce aktualizujsledovanyweb. Tato funkce využije webového robota ke stažení a extrakci definované informace ze sledované webové stránky. Pro každou aktualizaci se pomocí hashovací funkce určí kontrolní součet (hash), který slouží jako podpis aktualizace. Pokud se hash nově extrahované informace bude lišit od poslední uložené, provede se aktualizace hodnoty. V aplikaci bude mít uživatel možnost sledovat změny zvolených webových stránek nejen pomocí výpisu aplikace, ale i pomocí RSS kanálu [3]. O generování souboru XML pro RSS kanál každého uživatele se stará funkce vygenerujrss. Tato funkce v parametru přebírá RSS token, což je unikátní identifikátor RSS kanálu každého uživatele. Tento token je vygenerován při zakládání nového účtu v aplikaci pomocí funkce vygenerujrsstoken a je známý pouze uživateli účtu a administrátorovi aplikace. Tímto způsobem je zajištěna alespoň základní ochrana soukromí každého uživatele. Poslední oblastí, do které možnosti aplikace zasahují, je odesílání ů. Tato možnost je zajištěna pomocí funkce poslimail, která prostřednictvím aplikace odešle ovou zprávu zvolenému uživateli. Aplikace díky této funkci může upozorňovat jednotlivé uživatele na nové aktualizace jednotlivých sledovaných webů. Pro znázornění interakcí mezi objekty aplikace bude využit diagram spolupráce [11]. 4.4 Diagram spolupráce K usnadnění pochopení vztahů mezi jednotlivými objekty aplikace slouží diagram spolupráce. Celou aplikaci lze rozdělit na dvě části: serverovou část a klientskou část. Po přihlášení do aplikace si uživatel stáhne klientskou část aplikace. Tato část obsahuje JavaScript vložený v HTML kódu stránky. Pomocí JavaScriptu je vytvořen AJAXový klient, který umožňuje komunikovat klientské části aplikace se serverovou částí bez toho, aby uživatel musel stahovat novou stránku ze serveru [15]. Z důvodu zjednodušení bude klientská část znázorněna v následujících digramech spolupráce pomocí objektu AJAX. Každý diagram spolupráce znázorňuje určitou událost, ke které dochází v aplikaci [11]. K jedné takové události dojde, když uživatel vybere prvek na stránce pomocí kliknutí myši. Obrázek 13 znázorňuje vzájemné interakce objektů, ke kterým následně dochází.

35 Analýza a návrh aplikace 35 Obr. 13 Diagram spolupráce výběr prvku uživatelem Jestliže uživatel klikne na určitý prvek stránky, klientská část aplikace vygeneruje XPath dotaz, který prvek jednoznačně identifikuje. Poté je XPath dotaz odeslán pomocí Ajaxu na webový server. Zde je vytvořena instance třídy systém a zavolána funkce vyresxpath, která vytvoří instanci třídy robot. Objekt robot se postará o načtení a zpracování webové stránky. Jako svůj výsledek vrátí výsledek XPath dotazu, který se stejnou cestou vrátí do klientské části aplikace. Zde je výsledek pomocí javascriptu vložen do stránky a zobrazen uživateli. Uživatel hned vidí, co přesně na webové stránce označil. Tím to však nekončí. Pro přidání nového sledování do databáze musí uživatel kliknout na tlačítko s nápisem Přidej sledování. Proces, který se následně uskuteční, je znázorněn na obrázku 14. Stejně jako v předchozím případě je zde využit AJAX, aby se zamezilo znovunačtení webové stránky. Po kliknutí na tlačítko Přidej sledování dojde k odeslání údajů o webové stránce pomocí Ajaxu. Jakmile informace dorazí na server, dojde k vytvoření instance třídy systém a zavolání funkce pridejsledovani. Tato funkce využije objekt DB k uložení informací o novém sledování do databáze. Podle výsledku celé operace vrátí databáze návratovou hodnotu, která se stejnou cestou dostane zpátky do klientské části aplikace. Zde je uživateli zobrazena zpráva s výsledkem celé operace.

36 Analýza a návrh aplikace 36 Obr. 14 Diagram spolupráce přidání výběru do databáze 4.5 ERD databáze Posledním úkolem analýzy a návrhu aplikace je navrhnout entitně-relační diagram (ERD) databáze. K tomuto účelu bude využit MySQL Workbench 5.2, který umožňuje pro navržené ERD vygenerovat soubor s SQL CREATE skriptem [14]. Tento skript poslouží k vytvoření schématu databáze a všech tabulek. K úspěšnému návrhu entitně-relačního diagramu je nejprve potřeba identifikovat jednotlivé entity, které budou sloužit pro ukládání dat. Nejdůležitější je entita uživatel, která slouží k ukládání informací o jednotlivých uživatelích. Každý uživatel může sledovat různé webové stránky, proto je další entitou sledovaný web. Tato entita umožňuje ukládat základní informace o sledovaných webových stránkách (pojmenování, URL, XPath). Pro každý sledovaný web aplikace uchovává historii aktualizací. Tato funkce je umožněna využitím entity aktualizace, která slouží k ukládání jednotlivých aktualizací sledovaných webů. Kromě těchto tří základních entit aplikace obsahuje entitu log, určenou k uchovávání událostí, které nastaly v systému, a k uchovávání jejich původce. Pro další návrh databáze je dále potřeba postupovat podle pravidel tvorby ERD diagramů, jak uvádí Halle [21]: Sestavení seznamu entit z různých perspektiv. Definice metadat o entitách. Ověření kvality entit primární klíč, jedinečné jméno, jasný význam, existence příkladu. Seskupení entit a vytvoření podtříd a nadtříd.

37 Analýza a návrh aplikace 37 Vytvoření vztahů mezi entitami. Specifikace kardinalit. Specifikace povinnosti. Definice metadat o vztahu. Doplnění atributů entitám. Primární klíče Debata ohledně významu primárního klíče může to být hodnota bez významu (např. číslo), vhodná pro databázové operace, nebo hodnota s významem, se kterou se však hůře pracuje. Primární klíče zvolit raději jednoduché než složené. Primární klíč podtypu stejný jako u nadtypu. Pro vztahy se definuje hlavní a podřízená entita. Definice mazacího pravidla pro každý vztah smazání podřízených záznamů, nastavení záznamů na NULL, nastavení záznamů na implicitní hodnoty, ponechání hodnot záznamů, vlastní chování. Definice pravidel pro update podobně jako pro mazání. Definice pravidel pro insert pokud neexistuje nadřízený záznam, odmítnutí vložení, nastavení položky na NULL, nastavení položky na implicitní hodnotu, ponechání hodnoty, vlastní chování. Vztahy M:N nahradit vazební entitou. Atributy Každý atribut musí mít přímou návaznost ke zkoumané problematice. Každý atribut musí být atomický (dále nedělitelný). Každý atribut obsahuje konkrétní informaci, ne způsob, jak přistupovat k jiným informacím. Každý atribut musí být srozumitelný tomu, kdo ho bude používat. Stejné atributy pro podtypy a supertypy. Volit srozumitelné názvy a hodnoty. Definice metadat atributů. Zajistit alespoň třetí normální formu (atributy dále nedělitelné, všechny neklíčové atributy jsou závislé pouze na primárním klíči, neklíčové atributy nejsou na sobě závislé). Po použití těchto pravidel byla vytvořena následující databáze (obr. 15):

38 Analýza a návrh aplikace 38 Obr. 15 Schéma databáze

39 Analýza a návrh aplikace Popis tabulek Tabulka uživatel ID_uzivatel = primární klíč tabulky ID_typ_skupiny = cizí klíč login = přihlašovací jméno uživatele hash_hesla = heslo uživatele po aplikaci hashovací funkce cas_vytvoreni = čas vytvoření uživatelského účtu mail = ová adresa uživatele RSS_token = unikátní identifikátor, který slouží k přihlášení k RSS kanálu uživatele Tabulka sledovany_web ID_sledovany_web = primární klíč tabulky ID_uzivatel = cizí klíč do tabulky uživatelů (vlastník sledování) ID_typ_dat = cizí klíč do tabulky typ dat (výběr typu dat, které se mají sledovat) pojmenovani = pojmenování sledování uživatelem URL = URL adresa sledovaného webu XPath = XPath adresa sledovaného prvku na webu cas_vytvoreni = čas vytvoření sledování upozorneni = nastavení, jestli má být odesíláno upozornění při změně sledovaného webu Tabulka aktualizace ID_aktualizace = primární klíč tabulky ID_sledovany_web = cizí klíč do tabulky sledovaných webů obsah = text aktualizace cas_vytvoreni = čas vytvoření aktualizace hash = kontrolní součet obsahu (pro zjištění, jestli došlo ke změně) Tabulka log ID_log = primární klíč tabulky ID_uzivatel = cizí klíč do tabulky uživatelů (pokud událost způsobil uživatel) ID_typ_udalosti = cizí klíč do tabulky typu události (výběr typu události)

40 Analýza a návrh aplikace 40 skript = název skriptu, který záznam vytvořil udalost = text události, která nastala IP_zdroje = IP adresa zdroje cas_vytvoreni = čas vytvoření události Tabulky typ_udalosti, typ_skupiny a typ_dat slouží pro ukládání hodnot výčtových typů. Z toho typ_udalosti identifikuje typ události, která nastala a je uložena v tabulce logů. Dále tabulka typ_skupiny slouží k určení skupiny, do které je konkrétní uživatel zařazen. Poslední tabulka typ_dat určuje, jestli má aplikace data na sledované webové stránce chápat jako text nebo převést na číselnou hodnotu.

41 Implementace 41 5 Implementace 5.1 Uživatelské rozhraní aplikace Vzhled uživatelského rozhraní je rozhodující částí, která ovlivňuje úspěšnost nebo neúspěšnost webové aplikace. Moderní web by měl mít jednoduchý a líbivý design bez rušivých prvků a reklam [22]. U webové aplikace, která bude výsledkem této práce, platí předchozí řádky dvojnásob. Vytvářet složité rozhraní s mnoha prvky by bylo u aplikace sloužící k extrakci a sledování informací z nepřehledných webů kontraproduktivní. Proto je design úvodní stránky této webové aplikace co nejjednodušší. Úvodní strana aplikace se skládá ze dvou panelů: horní lišty a obsahu. Panel horní lišty obsahuje místo pro zadávání adres webových stránek, jméno aktuálně přihlášeného uživatele a odkazy na důležité části webové aplikace (nastavení účtu, aktualizace, odhlášení). Většinu místa prohlížeče zabírá panel obsah. Tento panel obsahuje poslední aktualizace jednotlivých sledovaných webových stránek uživatele. Součástí každého záznamu aktualizace je název sledování, odkazy na detail a smazání sledování, čas poslední změny a obsah sledovaného prvku. 5.2 Technické řešení aplikace Registrace a přihlášení uživatele Před prací s aplikací si uživatel musí vytvořit vlastní uživatelský účet. K tomuto účelu slouží skript registrace, kde uživatel vloží své uživatelské jméno, heslo a e- mailovou adresu. Uživatelem zadaná vstupní data jsou následně zkontrolována a výsledek registrace je zobrazen na webové stránce. Kontrola uživatelského jména a ové adresy zahrnuje test regulárním výrazem na povolené znaky (whitelisting) [20]. Kromě toho je kontrolována jedinečnost uživatelského jména v databázi aplikace. Zadané heslo není kontrolováno, protože je z něj pomocí hashovací funkce sha512 vypočítán kontrolní součet (hash). V průběhu hashování je z důvodu zvýšení odolnosti hashů k heslům přidána unikátní textová hodnota (sůl) [20]. Po dokončení registrace je uživateli vytvořen uživatelský účet, pomocí kterého se může do aplikace přihlásit. Přihlašovací skript provádí stejnou kontrolu vstupních údajů jako skript registrační. Pokud uživatelem zadané údaje souhlasí s údaji v databázi, je spuštěna funkce session_start(), která uživateli odešle soubor s unikátní hodnotou (cookie) identifikující uživatelovu relaci [20]. Dále jsou na serveru vytvořeny proměnné svázané s tímto identifikátorem, které obsahují základní údaje o uživateli (id, jméno, prohlížeč, IP adresa). Od této chvíle je uživatel přihlášen. Tento stav webový server rozpozná, protože při každém požadavku od webového prohlížeče uživatele je na server odeslán soubor cookie s unikátním identifikátorem uživatele. Tento identifikátor je po každém použití změněn pomocí funkce sessi-

42 Implementace 42 on_regenerate_id, aby se zabránilo útoku session fixation, kdy útočník odposlechne identifikátor relace a použije ho k vlastnímu přihlášení. Kromě toho je vždy kontrolována IP adresa a prohlížeč uživatele s hodnotami uloženými na serveru [20] Přidání nového sledování Po přihlášení do aplikace má uživatel možnost přidat nové sledování mezi své sledované weby. Tento proces začíná vložením URL adresy do vstupního pole v horní liště aplikace. Po zadání validní URL adresy je pomocí třídy robot načtena webová stránka, změněny odkazy na kaskádové styly a obrázky z relativních na absolutní, odstraněny skripty, zrušena funkčnost odkazů a vloženy skripty s kódem, který umožní vybírat prvky stránky kliknutím myši. Takto upravená stránka je zobrazena v rámu, který je vložen do hlavní stránky aplikace. Nyní má uživatel možnost vybírat jednotlivé textové části načtené webové stránky pomocí kurzoru myši. Pro lepší představu, co zrovna kurzor myši označuje, je využita funkce, která po najetí kurzoru myši na prvek přidá styl se světle zeleným podbarvením. Aby nedocházelo k postupnému zabarvení stránky, jsou nejprve vybrány všechny prvky stránky a podbarvení je zrušeno. Nyní má uživatel jasnou představu, nad kterým prvkem se nachází kurzor myši, a uživatel může kliknutím prvek označit. Po kliknutí na prvek stránky je pomocí javascriptové funkce vratxpath vygenerována jeho XPath adresa. Tato adresa jednoznačně identifikuje označený prvek stránky. Následně JavaScript ve vloženém rámu přistoupí k formulářovým polím nacházejících se na stránce, do které byl rám vložen. Do těchto polí je vložena XPath adresa prvku a URL adresa stránky. Aby měl uživatel dokonalou představu, na který prvek klikl, je pomocí AJAXu odeslán dotaz na server a vrácen výsledek XPath dotazu. Tento výsledek je vložen do formuláře a uživatel po kliknutí na prvek hned vidí, co označil. Dále má uživatel možnost zvolit, jestli má aplikace označený prvek chápat jako řetězec nebo jako číslo. Pokud je vybrána hodnota řetězec, aplikace vrátí všechna textová data, která uzly DOM stromu vyhovující výběru obsahují. V opačném případě je pomocí funkce retezecnacislo převeden řetězec na číselnou hodnotu. Převod probíhá následujícím způsobem. Nejprve jsou z řetězce odstraněny všechny bílé znaky (mezery, tabulátory, znaky konce řádků) a HTML entita pro mezeru ( ). Poté jsou všechny znaky desetinné čárky převedeny na tečky. Nakonec je pomocí regulárního výrazu nalezeno první číslo, které je vráceno jako výsledek funkce.

43 Implementace 43 Obr. 16 Aplikace s načtenou webovou stránkou Posledním krokem při vkládání nového sledování je přidání výběru do databáze. Tento proces začíná kliknutím na tlačítko Přidej sledování. Po stisknutí tohoto tlačítka je zkontrolována kompletnost vyplnění formuláře. Pokud je vše v pořádku, jsou data z formuláře pomocí technologie AJAX odeslána na server. Zde jsou data znovu zkontrolována a následně vložena do databáze. Na závěr je výsledek odeslán AJAXem zpět do klientské části a zobrazen jako zpráva pomocí funkce alert Aktualizace aplikace K tomu, aby aplikace umožňovala automaticky sledovat vybrané informace, je potřeba informace v aplikaci aktualizovat. Informace v aplikaci mohou být aktualizovány dvěma způsoby. Prvním způsobem je manuální aktualizace, kterou může spustit každý uživatel na stránce aktualizace. Na této stránce má každý uživatel soupis svých sledovaných webových stránek. Vybrané stránky z tohoto seznamu může uživatel kliknutím aktualizovat. Aktualizace zde probíhá interaktivně. Po kliknutí na tlačítko Aktualizuj je změněn popis u sledované stránky na Načítání a odeslán AJAXový požadavek na aktualizaci na server. Zde je požadavek zkontrolován, je ověřena autorizace uživatele k tomuto úkolu a výsledek je zaslán zpět do klientské části aplikace, kde je zobrazen.

44 Implementace 44 Obr. 17 Aktualizace aplikace uživatelem Druhou možností aktualizace aplikace je využití aktualizačního skriptu, který po spuštění provede aktualizaci všech sledovaných webů v aplikaci. Tento skript může být spouštěn softwarovým démonem CRONEM v určitém časovém intervalu [18]. Aby se zabránilo neautorizovaným aktualizacím aplikace, je pomocí bezpečnostního kódu (tokenu) kontrolována validita požadavku na aktualizaci aplikace. Tento token je zadáván v parametru webové stránky. Obr. 18 Aktualizace aplikace Generování RSS zdroje Aktualizované informace je potřeba předat jednotlivým uživatelům. Uživatel může zjistit změny sledovaných informací návštěvou úvodní strany aplikace.

45 Implementace 45 Tento způsob nemusí vyhovovat všem uživatelům, proto aplikace podporuje generování RSS zdrojů [3]. RSS zdroj aplikace je XML soubor, který v sobě obsahuje jednotlivé sledované weby a jejich poslední aktualizace. Tento XML soubor může uživatel odebírat prostřednictvím čtečky redakčních kanálů [3]. V aplikaci je XML soubor generován skriptem rss.php, aby byla vždy zajištěna aktuálnost XML zdroje. Tento skript využívá bezpečnostní token, který slouží k autentizaci uživatele. Po ověření uživatele je pomocí třídy DOMDocument vytvořen nový XML dokument a následně jsou do něj přidány poslední aktualizace sledovaných webových stránek uživatele Upozornění em Každý uživatel může být upozorňován na změny svých sledovaných webových stránek prostřednictvím u. Už při registraci musí uživatel poskytnout platnou ovou adresu, na kterou budou uživateli doručována upozornění. Upozornění na změny sledovaných webových stránek si uživatel může nastavit v detailu sledování. Zde si uživatel zvolí, zda chce nebo nechce být upozorňován na změny sledované stránky. Pokud uživatel zvolí, že chce být upozorňován na změny, aplikace při aktualizaci zkontroluje, jestli došlo ke změně sledovaného webu a em odešle upozornění na tyto změny Zaznamenávání událostí v aplikaci Kromě kontroly vstupů a výstupů musí bezpečná aplikace zaznamenávat co nejpodrobnější informace o činnostech uživatelů [20]. Tyto záznamy (logy) jsou dostupné pouze administrátorovi aplikace, který je díky nim informován o událostech v aplikaci a upozorněn na útoky na aplikaci. U každého záznamu se ukládá několik údajů [20]: čas vytvoření, jméno PHP skriptu, který záznam vytvořil, IP adresa původce, jméno přihlášeného uživatele (pokud byl uživatel přihlášen), typ události (informace, varování), text události. Tyto záznamy jsou do databáze ukládány pomocí funkce ulozdologu. Výsledný záznam může vypadat následovně: :00 detail.php Pepa IP_ADRESA Varování Neplatný vstup v argumentu id, Očekáváno číslo, získáno 1; DELETE FROM sledovany_web Z tohoto záznamu administrátor okamžitě pozná, že se uživatel Pepa snažil zaútočit na webovou aplikaci prostřednictvím techniky SQL injection a smazat ta-

46 Implementace 46 bulku sledovaných webů. Pokud by se mu útok povedl, administrátor může dohledat, kdo smazání tabulky způsobil a opravit chybu aplikace [20]. Obr. 19 Seznam logů uživatele Jelikož v aplikaci vzniká velké množství záznamů, je potřeba je nějakým způsobem třídit. To je umožněno pomocí filtrů login a typ události. Díky těmto filtrům si může administrátor zobrazit pouze záznamy určitého uživatele nebo potenciálně nebezpečné události v aplikaci. 5.3 Problémy při řešení aplikace Při řešení aplikace se objevilo několik problémů, které se však podařilo vyřešit. Cílem této kapitoly je popsat podstatné problémy a vysvětlit způsoby jejich řešení Validace URL adresy V aplikaci je možné zadat URL adresu webové stránky, která se má zobrazit, tak aby si uživatel mohl vybrat, které informace chce sledovat. Jelikož je do pole URL adresy možné zadat jakýkoliv text, je potřeba, aby byl tento text zkontrolován. K tomuto účelu slouží funkce validujurl, která zkontroluje, jestli zadaný řetězec začíná na nebo Pokud řetězec nezačíná těmito znaky, aplikace usoudí, že je uživatel zapomněl vložit a před řetězec je automaticky vloženo Tento krok nezaručí, že je URL adresa platná. K zjištění platnosti URL adresy je potřeba tuto adresu otestovat. Test adresy probíhá následujícím způsobem. Nejprve je pomocí funkce get_headers načtena hlavička stránky. Následně je z hlavičky přečten http stavový kód [23], podle kterého je zjištěno, jestli je adresa platná, neplatná nebo má dojít k přesměrování. Maximální počet přesměrování je omezen na pět, aby nedocházelo k zacyklení. Funkčnost validace URL adresy je možné otestovat zadáním adresy google.com do adresního řádku aplikace. Tato adresa je upravena na

47 Implementace 47 a následně dojde k dvojímu přesměrování. Nejprve na adresu a poté na Nastavení kódování stránky Po validaci URL adresy aplikace načte a zobrazí webovou stránku s vloženým javascriptovým kódem. Pouhé načtení a zobrazení pomocí funkcí objektu DOM se ukázalo jako nedostatečné, neboť objekt DOM nastavuje kódování podle meta tagu webové stránky [8]. Proto je při načítání stránky do tohoto objektu nutno postupovat trochu jiným způsobem. Nejprve je potřeba získat textový obsah stránky pomocí funkce file_get_contents. Následně je zjištěna přítomnost meta tagu s kódováním pomocí regulárního výrazu. Pokud tento meta tag v textu stránky chybí, je načtena hlavička stránky, zjištěno kódování a pro toto kódování vytvořen nový meta tag, který je vložen do obsahu stránky. Tím tento problém nekončí. Některé stránky mají meta tag kódování v textu stránky, definován ve zkrácené podobě, které objekt DOM nerozumí. Tyto případy musí být nahrazeny zcela novými tagy. Teprve poté může být obsah webové stránky načten pomocí funkce loadhtml objektu DOM Nefunkční XPath dotazy Asi největší problém, který se při implementaci vyskytl, byla nefunkčnost XPath dotazů na některých stránkách. Jednalo se o stránky buď částečně, nebo zcela tvořené pomocí tabulek. Jelikož procento těchto stránek dosahovalo 50 %, bylo vyřešení tohoto problému rozhodujícím aspektem pro funkčnost aplikace. Potíže při řešení problému způsobila domněnka, že je objektový strom dokumentu před načtením do objektu DOM jiný, než je po načtení do tohoto objektu. Tuto domněnku podpořil fakt, že většina nefunkčních webových stránek nebyla zcela validní, což mohlo způsobit jiné vnitřní uspořádání uzlů v objektu DOM. Domněnka se, po inspekci obsahu tohoto objektu, ukázala jako zcela chybná. Místo toho bylo zjištěno, že XPath dotazy generované pomocí jazyka JavaScript nesouhlasí s uspořádáním uzlů v objektu DOM. Rozdíl mezi správným a nesprávným XPath dotazem způsoboval nadbytečný element tbody na stránkách obsahujících tabulky. Jelikož některé stránky tento element v XPath dotazu vyžadovaly a některé ne, byla jako nejvhodnější řešení zvolena záměna elementu tbody za znak lomeno (/). Vložení znaku lomeno způsobí vznik posloupnosti dvou těchto znaků za sebou. To umožní vyhledávání potomků uzlu do libovolné hloubky [1] Nedodržování standardů na webových stránkách Tento problém je jediný, který se nepodařilo zcela vyřešit. Jelikož každý tvůrce webu chápe pravidla pro tvorbu webových stránek po svém, musí dojít k uvolnění pravidel pro extrakci z těchto webů také v této aplikaci. Přehnané uvolňování pravidel se neosvědčilo, protože způsobovalo nefunkčnost webových

48 Implementace 48 stránek do té doby funkčních. Při tvorbě aplikace byly nalezeny tyto prohřešky proti pravidlům tvorby webových stránek: křížení HTML značek, špatné ukončení nebo neukončení HTML značek, nenastavené nebo špatně nastavené kódování stránky. Kromě toho existuje velké množství stránek, které pro generování svého obsahu používají JavaScript. Jelikož tato aplikace před zpracováním všechny skripty odstraní, nemůže být schopná stránky s obsahem generovanými skripty správně zpracovat.

49 Testování 49 6 Testování Pro ověření funkčnosti aplikace byla potřeba otestovat její funkčnost na reálných datech. K tomuto účelu byla vybrána skupina webových stránek, na kterých byla aplikace testována. Skupina testovacích webových stránek se skládá z internetových obchodů, webů s aktuálními kurzy, zpravodajských portálů a výběru z celosvětově nejnavštěvovanějších webových stránek roku 2011 [24]. U většiny webů se testovala funkčnost na hlavní stránce a náhodně zvolené podstránce. Tím se množina testovacích dat zdvojnásobila a celkově testování probíhalo na 100 webových stránkách. Do množiny těchto testovacích webových stránek například patří: Seznam všech webových stránek, na kterých byla aplikace testována, je možné najít na přiloženém CD. Cílem testování bylo zjistit, jak si část aplikace, zabývající se přidáváním nových sledování, povede na různých webových stránkách. Proto byla na každé webové stránce testována funkčnost aplikace podle následujících pravidel. Nejprve byla testována schopnost aplikace webovou stránku správně načíst a zobrazit. Tento test probíhal vložením URL adresy webu do adresního řádku aplikace. Pokud se cílová webová stránka vůbec nezobrazila, byla považována za nefunkční. V opačném případě byl její vzhled porovnán se vzhledem stejné stránky ve webovém prohlížeči Mozilla Firefox 11.0 s aktivním doplňkem NoScript [1]. Pokud se od sebe tyto vzhledy lišily, bylo zobrazení této webové stránky považováno jako rozdílné. Pouze pokud bylo vše v pořádku, bylo zobrazení webové stránky považovano za správné. V druhém případě byla testována schopnost aplikace vrátit správný výsledek pro XPath dotaz, který byl vygenerován po kliknutí na různé prvky stránky. Testování probíhalo následovně. Pokud se v prvním kroku povedlo stránku zobrazit, byla testována funkčnost řešení XPath dotazů na konečné množině náhodných kliknutí. Jedno špatné vyhodnocení XPath dotazu stačilo k tomu, aby byla funkčnost stránky klasifikována jako částečná. Pokud aplikace nebyla schopná vyřešit ani jeden XPath, byla chápána jako nefunkční. Pro každou z testovaných kategorií byl vytvořen graf, který zobrazuje celkovou úspěšnost aplikace v dané kategorii.

50 Testování 50 Obr. 20 Úspěšnost aplikace při zobrazení webových stránek Na obrázku 20 je možné vidět, že aplikace dokázala zpracovat a zobrazit 96 % webových stránek, z toho 15 % stránek se nezobrazilo stejně jako v prohlížeči Mozilla Firefox 11.0 s doplňkem NoScript. Z celkového počtu se pouze 4 % stránek nepovedlo zobrazit. Jednalo se o stránky, které používají šifrované spojení (https) nebo používají komprimaci obsahu webové stránky. Obr. 21 Funkčnost vracení výsledku XPath dotazů na stránce Obrázek 21 ukazuje, že XPath dotazy na 88 % webových stránek jsou zcela funkční. Pouze na 6 % webový stránek fungovalo řešení XPath dotazů jen částečně a na 6 % nefungovaly XPath dotazy vůbec. Do těchto 6 % nefunkčních stránek byly započítány také stránky, které se v prvním testu vůbec nezobrazily.

51 Diskuze 51 7 Diskuze Aplikace, která vznikla v rámci této práce, splňuje požadavky definované v zadání. Tato skutečnost byla ověřena testováním aplikace na vzorku 100 webových stránek. Většina testovaných webových stránek byla aplikací správně zpracována. Během testování bylo zjištěno, že program nedokáže zobrazit webové stránky, které využívají šifrované spojení nebo odesílají tělo stránky komprimované. To je způsobeno využitím funkce file_get_contents pro stahování obsahů webových stránek. Nejdůležitější částí aplikace je javascriptový selektor, který umožňuje vybírat části webové stránky pomocí kliknutí myši. Po kliknutí na určitý prvek je vygenerována jeho XPath adresa. V první verzi aplikace byl využit algoritmus generující XPath adresu od kořene stromu (absolutní adresování). Tato technika se neosvědčila, protože i sebemenší změna struktury sledované webové stránky mohla vést ke ztrátě funkčnosti XPath dotazu. Proto byl algoritmus upraven, aby nalezl nejbližší element s unikátním atributem ID. Díky tomu je prvek stránky adresován relativně vzhledem k tomuto elementu. I přes tuto změny není tento způsob adresování prvku dokonalý a změna struktury webové stránky stále může způsobit nefunkčnost XPath dotazu. Po kliknutí na prvek stránky je kromě vygenerování XPath dotazu vrácen výsledek tohoto dotazu, aby měl uživatel přehled, na jaký prvek stránky kliknul. Pro vyřešení každého vygenerovaného dotazu je pokaždé stažena aktuální verze stránky. To u některých stránek způsobuje prodlevu i několik sekund. Tento čas by se dal výrazně zkrátit využitím dočasné kopie stránky uložené v paměti programu. Toto řešení nebylo využito, protože některé stránky se mění tak často, že by v aplikaci nebyly vidět tyto změny. Použité PHP DOM rozhraní [8] se ukázalo jako samo o sobě nedostačující pro extrahování obsahu webových stránek. Rozhraní obsahuje několik chyb, které musely být opraveny. Například třída sloužící pro načtení HTML stránky do objektové reprezentace rozpoznává kódování stránky z meta tagu [8]. Pokud tag chybí nebo je uveden špatně, třída nedokáže rozpoznat správné kódování a zvolí defaultní. Tento problém byl úspěšně vyřešen čtením použitého kódování z http hlavičky stránky [23]. Aplikace má oproti ostatním webovým systémům, které byly představeny v úvodní kapitole, jednodušší a intuitivnější ovládání. Toho bylo dosaženo kombinací javascriptového selektoru s generováním XPath dotazů, jejich odesíláním na server pomocí technologie AJAX a automatickým řešením vygenerovaných dotazů. Toto řešení odstraňuje pozdější problémy se špatným výběrem sledovaných prvků.

52 Závěr 52 8 Závěr Cílem této práce bylo analyzovat, navrhnout a implementovat aplikaci, která bude schopná sledovat uživatelem vybrané informace na zvolených webových stránkách. To se podařilo úspěšně splnit. Aplikace po uživatelích nevyžaduje znalost HTML, protože výběr sledovaných prvků webové stránky probíhá intuitivně klikáním myši. Výhodou této aplikace je, že ji každý uživatel může použít různými způsoby. Investor může sledovat aktuální kurzy měn, komodit a akcií. Uživatel nakupující v internetových obchodech může sledovat změny cen vybraných produktů. Možnosti použití aplikace jsou prakticky neomezené, záleží jen na uživatelích, jakým způsobem aplikaci využijí. Aplikace umožňuje využití RSS kanálu nebo u pro sledování změn na webových stránkách. Uživatel aplikaci navštíví pouze jednou, kdy si zvolí, které informace chce na webových stránkách sledovat. Na změny může být upozorněn pomocí své čtečky redakčních kanálů nebo em, jakmile ke změně sledované informace dojde. Díky tomu uživatel nemusí zbytečně navštěvovat webový server aplikace, pokud k žádné změně sledovaných informací nedošlo. Tvorba a ladění aplikace zabrala zhruba 4 měsíce. Nejvíce času trvalo přizpůsobení aplikace požadavkům různých webových stránek. To bylo způsobeno tím, že velké množství webových stránek není validní (nedodržuje standardy tvorby webových stránek). Do budoucna je možné aplikaci rozšířit přidáním možnosti vytvářet pravidla, podle kterých se mají odesílat y. Bylo by také možné přidat vykreslování grafů pro položky sledující číselné informace.

53 Literatura 53 9 Literatura [1] KOSEK, JIŘÍ. PHP a XML. Praha : Grada, s. ISBN [2] LIU, BING. Web Data Mining : Exploring Hyperlinks, Contents, and Usage Data. 2nd edition. Heidelberg : Springer, p. ISBN [3] HOLZNER, STEVEN; ŠINDELÁŘ, JAN. RSS : Automatické doručování obsahu vašich WWW stránek. Brno : Computer Press, s. ISBN [4] Page2RSS [online] [cit ]. Dostupné z: < [5] Femtoo : Track and monitor web page changes and receive notifications [online] [cit ]. Dostupné z: < [6] W3C. W3C Recommendation [online] [cit ]. Selectors. Dostupné z: < [7] LIU, BING. Web Content Mining. In The 14th International World Wide Web Conference (WWW-2005) [online]. [s.l.] : [s.n.], 2005 [cit ]. Dostupné z: < 2.pdf>. [8] MYLLYMAKI, JUSSI. Effective Web Data Extraction with Standard XML Technologies. In 10th International World Wide Web Conference [online], 2001 [cit ]. Dostupné z: [9] PECKA, MIROSLAV. Regulární výrazy [online] [cit ]. Dostupné z: < [10] PHP GROUP. DOM - Manual [online]. [cit ]. Dostupné z: < [11] SCHMULLER, JOSEPH. Myslíme v jazyku UML: knihovna programátora. Vyd. 1. Praha: Grada, 2001, 360 s. ISBN

54 Literatura 54 [12] StarUML: The Open Source UML/MDA Platform [online] [cit ]. Dostupné z: < [13] ULLMAN, LARRY. PHP a MySQL: názorný průvodce tvorbou dynamických WWW stránek. Vyd. 1. Brno: Computer Press, 2004, 534 s. ISBN [14] ORACLE. MySQL: MySQL Workbench 5.2 [online] [cit ]. Dostupné z: < [15] RESIG, JOHN. JavaScript a Ajax: moderní programování webových aplikací. Vyd. 1. Překlad Ondřej Baše, Ondřej Žižka. Brno: Computer Press, 2007, 360 s. ISBN [16] JAMES GARRETT, JESSE. Ajax: A New Approach to Web Applications. In: Adaptive Path [online] [cit ]. Dostupné z: < [17] jquery: The Write Less, Do More, JavaScript Library [online] [cit ]. Dostupné z: < [18] VIXIE, PAUL. CRONTAB [online] [cit ]. Dostupné z: < [19] PHP GROUP. MySQL - Manual [online]. [cit ]. Dostupné z: < [20] HUSEBY, SVERRE H. Zranitelný kód. Vyd. 1. Brno: Computer Press, 2006, 207 s. ISBN [21] VON HALLE, BARBARA. Business rules applied: business better systems using the business rules approach. New York: Wiley Computer Publishing, 2002, 546 s. ISBN [22] The Smashing Book User Interface Design in Modern Web Applications. Smashing Magazine [online] [cit ]. Dostupné z: <

55 Literatura 55 [23] RFC Hypertext Transfer Protocol -- HTTP/1.1. Faqs.org [online]. June 1999 [cit ]. Dostupné z: < [24] GOOGLE. The 1000 most-visited sites on the web [online]. July 2011 [cit ]. Dostupné z: < [25] MAONE, GIORGIO. NoScript [online]. [cit ]. Dostupné z: < [26] YAHOO!. Yahoo! Finance [online] [cit ]. Dostupné z: <

56 Kompletní diagram tříd 56 Přílohy

57 Kompletní diagram tříd 57 A Kompletní diagram tříd Obr. 22 Kompletní diagram tříd

58 SQL CREATE skript 58 B SQL CREATE skript SQL CREATE skript pro vytvoření databáze s názvem db, který byl vygenerován pomocí nástroje MySQL Workbench 5.2 [14]. CREATE SCHEMA IF NOT EXISTS `db` DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci; USE `db` ; Table `typ_skupiny` CREATE TABLE IF NOT EXISTS `typ_skupiny` ( `ID_typ_skupiny` INT(4) auto_increment NOT NULL PRIMARY KEY, `nazev` VARCHAR(45) NOT NULL); INSERT INTO typ_skupiny(nazev) VALUES ("Admin"); INSERT INTO typ_skupiny(nazev) VALUES ("Uživatel"); Table `uzivatel` CREATE TABLE IF NOT EXISTS `uzivatel` ( `ID_uzivatel` INT(4) auto_increment NOT NULL PRIMARY KEY, `ID_typ_skupiny` INT(4) NOT NULL, `login` VARCHAR(45) NOT NULL, `hash_hesla` VARCHAR(128) NOT NULL, `cas_vytvoreni` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `mail` VARCHAR(45) NOT NULL, `RSS_token` VARCHAR(40) NOT NULL, INDEX `fk_uzivatel_typ_skupiny1` (`ID_typ_skupiny` ASC), CONSTRAINT `fk_uzivatel_typ_skupiny1` FOREIGN KEY (`ID_typ_skupiny` ) REFERENCES `typ_skupiny` (`ID_typ_skupiny` ) ON DELETE NO ACTION ON UPDATE NO ACTION); Table `typ_dat` CREATE TABLE IF NOT EXISTS `typ_dat` ( `ID_typ_dat` INT(4) auto_increment NOT NULL PRIMARY KEY, `nazev` VARCHAR(45) NOT NULL);

59 SQL CREATE skript 59 INSERT INTO typ_dat(nazev) VALUES ("Řetězec"); INSERT INTO typ_dat(nazev) VALUES ("Číslo"); Table `sledovany_web` CREATE TABLE IF NOT EXISTS `sledovany_web` ( `ID_sledovany_web` INT(8) auto_increment NOT NULL PRIMARY KEY, `ID_uzivatel` INT(4) NOT NULL, `ID_typ_dat` INT(4) NOT NULL, `pojmenovani` VARCHAR(45) NOT NULL, `URL` VARCHAR(255) NOT NULL, `XPath` VARCHAR(255) NOT NULL, `upozorneni` BOOLEAN NOT NULL, `cas_vytvoreni` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX `fk_sledovany_web_uzivatel` (`ID_uzivatel` ASC), INDEX `fk_sledovany_web_typ_dat1` (`ID_typ_dat` ASC), CONSTRAINT `fk_sledovany_web_uzivatel` FOREIGN KEY (`ID_uzivatel` ) REFERENCES `uzivatel` (`ID_uzivatel` ) ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT `fk_sledovany_web_typ_dat1` FOREIGN KEY (`ID_typ_dat` ) REFERENCES `typ_dat` (`ID_typ_dat` ) ON DELETE NO ACTION ON UPDATE NO ACTION); Table `aktualizace` CREATE TABLE IF NOT EXISTS `aktualizace` ( `ID_aktualizace` INT(8) auto_increment NOT NULL PRIMARY KEY, `ID_sledovany_web` INT(8) NOT NULL, `obsah` TEXT NOT NULL, `cas_vytvoreni` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `hash` VARCHAR(32) NOT NULL, INDEX `fk_aktualizace_sledovany_web` (`ID_sledovany_web` ASC), CONSTRAINT `fk_aktualizace_sledovany_web` FOREIGN KEY (`ID_sledovany_web` ) REFERENCES `sledovany_web` (`ID_sledovany_web` )

60 SQL CREATE skript 60 ON DELETE CASCADE ON UPDATE NO ACTION); Table `typ_udalosti` CREATE TABLE IF NOT EXISTS `typ_udalosti` ( `ID_typ_udalosti` INT(4) auto_increment NOT NULL PRIMARY KEY, `nazev` VARCHAR(45) NOT NULL ); INSERT INTO typ_udalosti(nazev) VALUES ("Informace"); INSERT INTO typ_udalosti(nazev) VALUES ("Varování"); Table `log` CREATE TABLE IF NOT EXISTS `log` ( `ID_log` INT(8) auto_increment NOT NULL PRIMARY KEY, `ID_uzivatel` INT(4) NULL, `ID_typ_udalosti` INT(4) NOT NULL, `skript` VARCHAR(45) NOT NULL, `udalost` VARCHAR(255) NOT NULL, `IP_zdroje` VARCHAR(39) NOT NULL, `cas_vytvoreni` TIMESTAMP NOT NULL, INDEX `fk_log_uzivatel1` (`ID_uzivatel` ASC), INDEX `fk_log_typ_udalosti1` (`ID_typ_udalosti` ASC), CONSTRAINT `fk_log_uzivatel1` FOREIGN KEY (`ID_uzivatel` ) REFERENCES `uzivatel` (`ID_uzivatel` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_log_typ_udalosti1` FOREIGN KEY (`ID_typ_udalosti` ) REFERENCES `typ_udalosti` (`ID_typ_udalosti` ) ON DELETE NO ACTION ON UPDATE NO ACTION);

61 Příklad využití aplikace 61 C Příklad využití aplikace Aplikace může být využita k různým účelům. Na tomto příkladě bude prezentována schopnost aplikace sledovat kurzy akcií společnosti Apple. Aby uživatel tyto kurzy akcií mohl sledovat, musí si ve webovém prohlížeči otevřít jednu z webových stránek, která kurzy akcií obsahuje. V tomto případě je použita webová stránka Yahoo! Finance [26]. Po nalezení a vložení adresy do adresního řádku aplikace dojde k načtení požadované stránky (obrázek 23). Obr. 23 Načtená stránka Yahoo! Finance Na této stránce může uživatel pomocí kurzoru myši vybrat požadovaný prvek stránky, který má zájem sledovat. Prvek stránky, nad kterým má uživatel aktuálně kurzor myši, je označen světle zeleným podbarvením. Podle tohoto podbarvení uživatel pozná, který prvek stránky bude po kliknutí označen. Jakmile uživatel klikne na určitý prvek stránky, dojde k vygenerování XPath adresy prvku a vložení do pole s názvem XPath ve formuláři. Následně je prostřednictvím AJAXu odeslána URL adresa aktuální stránky a vygenerovaný XPath na server, který se pokusí XPath dotaz vyřešit. Doba řešení může trvat i několik sekund, protože server stahuje aktuální verzi webové stránky a teprve tuto stránku použije k vyřešení dotazu. Po dokončení je výsledek odeslán zpět do klientské části a vložen do formulářového pole s názvem Výsledek. Díky tomu uživatel okamžitě vidí, co přesně bude aplikace sledovat a případně může výběr novým kliknutím opravit. Nyní uživateli stačí dopsat do pole Pojmenování název, podle kterého bude moci toto sledování v aplikaci identifikovat. V tomto případě, který je zobrazen na obrázku 24, bylo použito pojmenování Akcie Apple [USD].

62 Příklad využití aplikace 62 Obr. 24 Stav aplikace po kliknutí na prvek Pro přidání vybraného sledování do aplikace je potřeba, aby uživatel kliknul na tlačítko Přidej sledování. Poté dojde ke kontrole všech údajů ve formuláři pomocí JavaScriptu a odeslání na server technologií AJAX. Na serveru jsou data znovu zkontrolována a vložena do databáze aplikace. Nyní stačí, aby byl pravidelně spouštěn aktualizační skript aplikace prostřednictvím softwarového démona CRONa. O zbytek už se aplikace postará sama. Uživatel může svoje stránky sledovat prostřednictvím hlavní stránky aplikace, osobního kanálu RSS nebo u. Vždy si může zobrazit detail sledované informace, kde má veškeré podrobnosti o sledování společně s historií sledování, jak je vidět na obrázku 25. V případě sledování akcií společnosti Apple, má uživatel aplikace okamžitý přehled, jak se vyvíjela cena akcií v jednotlivých dnech. Tyto informace uživatel může využít ke svým obchodním zájmům.

63 Příklad využití aplikace 63 Obr. 25 Detail aktualizace

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů Datový typ soubor Soubory a databáze Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů Záznam soubor se skládá ze záznamů, které popisují

Více

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné Analyzujte, navrhněte a implementujte aplikaci pro sledování spánku dětí Chůvička pro telefony na platformě Android. Od existujících aplikací se bude aplikace odlišovat tímto: funkční na dual-sim telefonech

Více

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS Název projektu: Redesign Statistického informačního systému v návaznosti na zavádění egovernmentu v ČR Příjemce: Česká republika Český statistický úřad Registrační číslo projektu: CZ.1.06/1.1.00/07.06396

Více

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy -1- I I. N á v r h VYHLÁŠKY ze dne 2009 o účetních záznamech v technické formě vybraných účetních jednotek a jejich předávání do centrálního systému účetních informací státu a o požadavcích na technické

Více

účetních informací státu při přenosu účetního záznamu,

účetních informací státu při přenosu účetního záznamu, Strana 6230 Sbírka zákonů č. 383 / 2009 Částka 124 383 VYHLÁŠKA ze dne 27. října 2009 o účetních záznamech v technické formě vybraných účetních jednotek a jejich předávání do centrálního systému účetních

Více

Postup šetření pro rok 2009. Ministerstvo pro místní rozvoj Odbor veřejného investování

Postup šetření pro rok 2009. Ministerstvo pro místní rozvoj Odbor veřejného investování Vytvoření adekvátního systému získávání informací o legislativních, zadáváním veřejných zakázek a informací od jednotlivých zadavatelů ohledně přijímání elektronických obchodních praktik Postup šetření

Více

Budování aplikačních rozhraní pro obousměrnou komunikaci mezi ERMS a jejich vztah k Národnímu standardu pro komunikaci mezi ERMS.

Budování aplikačních rozhraní pro obousměrnou komunikaci mezi ERMS a jejich vztah k Národnímu standardu pro komunikaci mezi ERMS. Budování aplikačních rozhraní pro obousměrnou komunikaci mezi ERMS a jejich vztah k Národnímu standardu pro komunikaci mezi ERMS. Použité zkratky ERMS ESS i AIS ESS elektronická spisová služba AIS agendový

Více

téma: Formuláře v MS Access

téma: Formuláře v MS Access DUM 06 téma: Formuláře v MS Access ze sady: 3 tematický okruh sady: Databáze ze šablony: 07 - Kancelářský software určeno pro: 2. ročník vzdělávací obor: vzdělávací oblast: číslo projektu: anotace: metodika:

Více

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

29 Evidence smluv. Popis modulu. Záložka Evidence smluv 29 Evidence smluv Uživatelský modul Evidence smluv slouží ke správě a evidenci smluv organizace s možností připojení vlastní smlouvy v elektronické podobě včetně přidělování závazků ze smluv jednotlivým

Více

Aplikace počítačů v provozu vozidel 9

Aplikace počítačů v provozu vozidel 9 Aplikace počítačů v provozu vozidel 9 2 Databázové systémy Rozvoj IS je spjatý s rozvojem výpočetní techniky, především počítačů. V počátcích se zpracovávaly velké objemy informací na jednom počítači,

Více

M. Balíková, R. Záhořík, NK ČR 1

M. Balíková, R. Záhořík, NK ČR 1 M. Balíková, R. Záhořík, NK ČR 1 Geolink.nkp.cz Prototyp aplikace obohacení geografických autorit o údaje souřadnic s následným zobrazením dané lokality na mapě - kartografické matematické údaje v záznamech

Více

Nástroje produktivity

Nástroje produktivity Nástroje produktivity Skupina nástrojů zvyšující produktivitu práce. Automatický update obsahu a vzhledu dokumentu (textů i obrázků, včetně obrázků v galerii) při změně dat. Export 3D obrázků z dokumentu

Více

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST. Chemické výpočty. Aleš Kajzar Martin Honka

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST. Chemické výpočty. Aleš Kajzar Martin Honka STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Chemické výpočty Aleš Kajzar Martin Honka Opava 2011 STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Obor SOČ: 3. Chemie Chemické výpočty Autoři: Škola: Konzultant: Aleš Kajzar Martin Honka

Více

Metodika testování navazujících evidencí

Metodika testování navazujících evidencí Metodika testování navazujících evidencí Základní metodický dokument k testování navazujících evidencí Centrálního depozitáře cenných papírů Verze: 3.0 Datum: 13.5.2010 Strana 1 (celkem 10) Úvod 1.1. Cíl

Více

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50 Informační systémy 2 Data v počítači EIS MIS TPS strategické řízení taktické řízení operativní řízení a provozu Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50 18.3.2014

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy 1. Teorie normálních forem Pojem normálních forem se používá ve spojitosti s dobře navrženými tabulkami. Správně vytvořené tabulky splňují 4 základní normální formy, které

Více

Regenerace zahrady MŠ Neděliště

Regenerace zahrady MŠ Neděliště 1 Výzva k podání nabídek (dále jen zadávací dokumentace ) v souladu se Závaznými pokyny pro žadatele a příjemce podpory v OPŽP (dále jen Pokyny ), účinnými od 20.06.2014 Zadavatel: Název zadavatele: OBEC

Více

Zákon o elektronickém podpisu

Zákon o elektronickém podpisu Zákon o elektronickém podpisu Zaručený elektronický podpis Je jednoznačně spojen s podepisující osobou (jen fyzická osoba!); umožňuje identifikaci podepisující osoby ve vztahu k datové zprávě; byl vytvořen

Více

Co najdete v ASPI? (pro uživatele SVI FSE UJEP)

Co najdete v ASPI? (pro uživatele SVI FSE UJEP) Co najdete v ASPI? (pro uživatele SVI FSE UJEP) ASPI = komplexní pokrytí všech předpisů publikovaných na území ČR včetně předpisů měst a obcí a předpisů ES / EU Manuál ASPI: http://www.systemaspi.cz/co_je_system_aspi/co_je_system_aspi.html

Více

Správa požadavků. Semestrální práce

Správa požadavků. Semestrální práce Správa požadavků Semestrální práce Tomáš Náhlovský 12. březen 2013 Obsah I.METODIKA SPRÁVY POŽADAVKŮ 1.1 SBĚR POŽADAVKŮ 3 1.2 EVIDENCE POŽADAVKŮ 3 1.3 ZMĚNY POŽADAVKŮ 3 1.4 POSUZOVÁNÍ POŽADAVKŮ 3 1.5 KONTROLA

Více

MV ČR, Odbor egovernmentu. renata.horakova@mvcr.cz. Webové stránky veřejné správy - minimalizace jejich zranitelnosti a podpora bezpečnostních prvků

MV ČR, Odbor egovernmentu. renata.horakova@mvcr.cz. Webové stránky veřejné správy - minimalizace jejich zranitelnosti a podpora bezpečnostních prvků Návrh výzkumné potřeby státní správy pro zadání veřejné zakázky A. Předkladatel garant výzkumné potřeby Název organizace Ministerstvo vnitra Adresa Milady Horákové 133/ Kontaktní osoba Ing. Jaroslav Scheuba

Více

EFESSO. Uživatelský manuál

EFESSO. Uživatelský manuál Projekt: Tvorba sady aplikací pro zvýšení kvality a efektivity řízení organizací poskytujících služby včetně související metodiky byl realizován za finanční spoluúčasti EU (resp. ERDF Evropský fond pro

Více

Testovací aplikace Matematika není věda

Testovací aplikace Matematika není věda Testovací aplikace Matematika není věda Příručka k http://matematika.komenacek.cz/ Příručka k portálu http://matematika.komenacek.cz/ 2 Uživatelská příručka k portálu 202 BrusTech s.r.o. Všechna práva

Více

Manuál Kentico CMSDesk pro KDU-ČSL

Manuál Kentico CMSDesk pro KDU-ČSL Manuál Kentico CMSDesk pro KDU-ČSL 2011 KDU-ČSL Obsah 1 Obecně... 3 1.1 Přihlašování... 3 1.2 Uživatelské prostředí... 4 2 Stránky... 4 2.1 Vytvoření nové stránky... 4 2.1.1 Texty... 7 2.1.2 Styly textu...

Více

Koncepce rozvoje Polytematického strukturovaného hesláře (PSH) 2012 2014

Koncepce rozvoje Polytematického strukturovaného hesláře (PSH) 2012 2014 Koncepce rozvoje Polytematického strukturovaného hesláře (PSH) 2012 2014 Schváleno Radou pro koordinaci Polytematického strukturovaného hesláře (PSH) dne: 12. 12. 2011 ÚVOD V době svého vzniku (90. léta

Více

STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU

STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU CÍL STANDARDU 1) Tento standard vychází ze zákona č. 108/2006 Sb., o sociálních službách (dále jen Zákon ) a z vyhlášky č. 505/2006 Sb., kterou

Více

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné Analyzujte, navrhněte a implementujte aplikaci pro sledování spánku dětí Chůvička pro telefony na platformě Android. Od existujících aplikací se bude aplikace odlišovat tímto: funkční na dual-sim telefonech

Více

Návod na zřízení datové schránky právnické osoby nezapsané v obchodním rejstříku

Návod na zřízení datové schránky právnické osoby nezapsané v obchodním rejstříku Návod na zřízení datové schránky právnické osoby nezapsané v obchodním rejstříku Zřízení datové schránky Právnické osobě, která není zapsána v obchodním rejstříku, zřídí ministerstvo datovou schránku právnické

Více

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B PŘIJÍMACÍ TEST Z INFORMATIKY A MATEMATIKY NAVAZUJÍCÍ MAGISTERSKÉ STUDIUM V OBORU APLIKOVANÁ INFORMATIKA FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITY HRADEC KRÁLOVÉ ČÁST A Oborové číslo Hodnocení - část

Více

DOMOVNÍ ŘÁD BYTOVÉHO DRUŽSTVA ZÁZVORKOVA 2007, 2008, 2009

DOMOVNÍ ŘÁD BYTOVÉHO DRUŽSTVA ZÁZVORKOVA 2007, 2008, 2009 DOMOVNÍ ŘÁD BYTOVÉHO DRUŽSTVA ZÁZVORKOVA 2007, 2008, 2009 Úvodní ustanovení 1. V návaznosti na příslušné zákony a stanovy družstva obsahuje domovní řád pravidla užívání bytů, nebytových a společných částí

Více

PRAVIDLA soutěže COOP DOBRÉ RECEPTY Jarní probuzení

PRAVIDLA soutěže COOP DOBRÉ RECEPTY Jarní probuzení PRAVIDLA soutěže COOP DOBRÉ RECEPTY Jarní probuzení s konáním 1. 4. 2016 30. 6. 2016 v ČR (www.coopdobrerecepty.cz) 1. Organizátor soutěže a soutěžní období Organizátor soutěže, společnost CCV, s.r.o.,

Více

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka INTERNETOVÝ TRH S POHLEDÁVKAMI Uživatelská příručka 1. března 2013 Obsah Registrace... 3 Registrace fyzické osoby... 3 Registrace právnické osoby... 6 Uživatelské role v systému... 8 Přihlášení do systému...

Více

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE. 2005-2008 Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6 www.hydrosoft.eu

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE. 2005-2008 Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6 www.hydrosoft.eu WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE 2005-2008 Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6 www.hydrosoft.eu Obsah Obsah 1 1.1 3 Internetový... prohlížeč map 4 Rozložení ovládacích... prvků

Více

INFORMAČNÍ SYSTÉM O AREÁLU

INFORMAČNÍ SYSTÉM O AREÁLU CHEMOPETROL, a.s. Strana 1/7 INFORMAČNÍ SYSTÉM O AREÁLU Schválil: Ing. Petr Cingr, generální ředitel a.s. Platnost od: 25.10.2004 Správce dokumentu: Zpracovatel: Odbor integrovaných systémů řízení Odbor

Více

Memoria Mundi Series Bohemica z trezoru na Internet

Memoria Mundi Series Bohemica z trezoru na Internet Memoria Mundi Series Bohemica z trezoru na Internet Ing. Stanislav Psohlavec AiP Beroun s.r.o. Pilíře projektu MMSB... 1 Digitalizace, digitální dokumenty, digitální knihovna... 1 MASTER... 1 Využívání

Více

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ www.marketingovepruzkumy.cz Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ 28.4.2011 Miloš Voborník Obsah 1. Uživatelská příručka... 1 1.1. Běžný uživatel... 1 1.1.1. Celkové rozvržení, úvodní strana...

Více

Výzva k podání nabídky

Výzva k podání nabídky Výzva k podání nabídky Veřejný zadavatel, obec Bohuňovice, si Vás dovoluje vyzvat k podání nabídky na vypracování projektové dokumentace na akci Modernizace a intenzifikace ČOV Bohuňovice, která je podporována

Více

Podmínky užití webového rozhraní

Podmínky užití webového rozhraní Podmínky užití webového rozhraní Nacházíte se na webovém rozhraní www.playmosvet.cz (dále jen webové rozhraní ) provozovaném podnikatelkou Zdeňkou Doležalovou, se sídlem Růženy Svobodové 1232/1, 415 01

Více

POZVÁNKA NA MIMOŘÁDNOU VALNOU HROMADU

POZVÁNKA NA MIMOŘÁDNOU VALNOU HROMADU Do vlastních rukou akcionářů DEK a.s. POZVÁNKA NA MIMOŘÁDNOU VALNOU HROMADU Představenstvo společnosti DEK a.s., se sídlem Tiskařská 10/257, PSČ 108 00, IČ: 276 36 801, zapsané v obchodním rejstříku, vedeném

Více

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova (2014 2020)

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova (2014 2020) Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře 1. kolo příjmu žádostí Programu rozvoje venkova (2014 2020) V tomto dokumentu je uveden podrobný postup doplnění Žádosti o

Více

Co poskytuje Czech POINT

Co poskytuje Czech POINT Co poskytuje Czech POINT Výpis z Katastru nemovitostí O výpis z Katastru nemovitostí České republiky může požádat anonymní žadatel. Výpis lze požadovat na základě listu vlastnictví nebo podle seznamu nemovitostí.

Více

ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU

ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU ČÁST 2. ELEKTRONIZACE PROCESŮ A DIGITALIZACE DAT ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU Přehled kam směřují peníze z městského rozpočtu. Přehled jaký je aktuální stav čerpání

Více

Uživatelská dokumentace

Uživatelská dokumentace Uživatelská dokumentace k projektu Czech POINT Provozní řád Konverze dokumentů z elektronické do listinné podoby (z moci úřední) Vytvořeno dne: 29.11.2011 Verze: 2.0 2011 MVČR Obsah 1. Přihlášení do centrály

Více

I. Základní pojmy a zkratky. - provedení koordinační funkční zkoušky EPS a navazujících zařízení,

I. Základní pojmy a zkratky. - provedení koordinační funkční zkoušky EPS a navazujících zařízení, TECHNICKÉ A ORGANIZAČNÍ PODMÍNKY pro připojení elektrické požární signalizace prostřednictvím zařízení dálkového přenosu na pult centralizované ochrany operačního střediska Hasičského záchranného sboru

Více

Vzdělávací program pro obchodní partnery společnosti ROCKWOOL průvodce školením

Vzdělávací program pro obchodní partnery společnosti ROCKWOOL průvodce školením Vzdělávací program pro obchodní partnery společnosti ROCKWOOL průvodce školením RockExpert školení přímo pro Vás RockExpert je internetový vzdělávací nástroj (přístupný online), určený pro zaměstance obchodních

Více

o užívání služby elektronického dodávání dokumentů a dalších služeb kooperačního systému e-pk uzavřená mezi

o užívání služby elektronického dodávání dokumentů a dalších služeb kooperačního systému e-pk uzavřená mezi Smlouva č. NPMK/... / o užívání služby elektronického dodávání dokumentů a dalších služeb kooperačního systému e-pk uzavřená mezi Národním pedagogickým muzeem a knihovnou J. A. Komenského, státní příspěvkovou

Více

Mobilní aplikace. Dokument nepopisuje administrační rozhraní (backend) ani napojení na příbuzné databáze.

Mobilní aplikace. Dokument nepopisuje administrační rozhraní (backend) ani napojení na příbuzné databáze. oolczechguide Mobilní aplikace! O dokumentu Tento dokument popisuje uživatelské rozhraní nativní mobilní aplikace CoolCzechGuide pro operační systémy Android (verze 4 a výše) a ios (verze 7 a výše). Popisuje

Více

ZADÁVACÍ DOKUMENTACE

ZADÁVACÍ DOKUMENTACE ZADÁVACÍ DOKUMENTACE VÝZVA K PODÁNÍ NABÍDKY NA VEŘEJNOU ZAKÁZKU MALÉHO ROZSAHU ve smyslu ustanovení 18 odst. 5 zákona č. 137/2006 Sb. Výměna 4 ks interiérových dveří v budově kina Art Veřejná zakázka (zatrhněte)

Více

NÁVOD K OBSLUZE MODULU VIDEO 64 ===============================

NÁVOD K OBSLUZE MODULU VIDEO 64 =============================== NÁVOD K OBSLUZE MODULU VIDEO 64 =============================== Modul VIDEO 64 nahrazuje v počítači IQ 151 modul VIDEO 32 s tím, že umožňuje na obrazovce připojeného TV monitoru nebo TV přijímače větší

Více

S_5_Spisový a skartační řád

S_5_Spisový a skartační řád Základní škola a mateřská škola Staré Město, okres Frýdek-Místek, příspěvková organizace S_5_Spisový a skartační řád Č.j.:ZS6/2006-3 Účinnost od: 1. 5. 2011 Spisový znak: C19 Skartační znak: S10 Změny:

Více

Inovované řešení VDT/VT

Inovované řešení VDT/VT Inovované řešení VDT/VT Spojujeme trhy a příležitosti Inovované řešení pro obchodování na vnitrodenním a vyrovnávacím trhu v ČR, vyvinuté společností OTE, a.s., umožní uživatelům rychlou reakci na aktuální

Více

Pokyny k vyplnění Průběžné zprávy

Pokyny k vyplnění Průběžné zprávy Pokyny k vyplnění Průběžné zprávy Verze: 2 Platná od: 15. 1. 2013 Doplnění nebo úpravy v pokynech jsou odlišeny červenou barvou písma. Termín pro podání elektronické verze průběžné zprávy obou částí je

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování V algoritmizaci a programování je důležitá schopnost analyzovat a myslet. Všeobecně jsou odrazovým můstkem pro řešení neobvyklých, ale i každodenních problémů. Naučí nás rozdělit

Více

Informační systém pro rezervaci pokojů hotelu SPORT

Informační systém pro rezervaci pokojů hotelu SPORT VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Informační systém pro rezervaci pokojů hotelu SPORT Programátorská příručka systému Příloha bakalářské práce 2006

Více

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4. MOJESODEXO.CZ Poukázky v obálkách Verze aplikace: 1.4.0 Aktualizováno: 22. 9. 2014 17:44 Strana 1 / 1 OBSAH DOKUMENTU 1. ÚVOD... 2 1.1. CO JSOU TO POUKÁZKY V OBÁLKÁCH?... 2 1.2. JAKÉ POUKÁZKY MOHOU BÝT

Více

5.6.6.3. Metody hodnocení rizik

5.6.6.3. Metody hodnocení rizik 5.6.6.3. Metody hodnocení rizik http://www.guard7.cz/lexikon/lexikon-bozp/identifikace-nebezpeci-ahodnoceni-rizik/metody-hodnoceni-rizik Pro hodnocení a analýzu rizik se používají různé metody. Výběr metody

Více

NEJČASTĚJI KLADENÉ DOTAZY K PUBLICITĚ PROJEKTŮ OP LZZ

NEJČASTĚJI KLADENÉ DOTAZY K PUBLICITĚ PROJEKTŮ OP LZZ NEJČASTĚJI KLADENÉ DOTAZY K PUBLICITĚ PROJEKTŮ OP LZZ A) Povinnost příjemců zajišťovat publicitu projektů 1. Z čeho vyplývá povinnost příjemců podpory dodržovat vizuální identitu ESF/OP LZZ a zajišťovat

Více

Pravidla. používání Národního elektronického nástroje při realizaci zadávacích postupů prostřednictvím národního elektronického nástroje

Pravidla. používání Národního elektronického nástroje při realizaci zadávacích postupů prostřednictvím národního elektronického nástroje Příloha usnesení vlády ze dne 18. ledna 2016 č. 25 Pravidla používání Národního elektronického nástroje při realizaci zadávacích postupů prostřednictvím národního elektronického nástroje Preambule V souladu

Více

Seriál: Management projektů 7. rámcového programu

Seriál: Management projektů 7. rámcového programu Seriál: Management projektů 7. rámcového programu Část 4 Podpis Konsorciální smlouvy V předchozím čísle seriálu o Managementu projektů 7. rámcového programu pro výzkum, vývoj a demonstrace (7.RP) byl popsán

Více

IMPLEMENTACE SW NÁSTROJE PROCESNÍHO ŘÍZENÍ ATTIS

IMPLEMENTACE SW NÁSTROJE PROCESNÍHO ŘÍZENÍ ATTIS IMPLEMENTACE SW NÁSTROJE PROCESNÍHO ŘÍZENÍ ATTIS TVORBA PROCESNÍ MAPY V PODMÍNKÁCH MĚSTSKÉHO ÚŘADU TURNOV Ostrava, 6. října 2011 www.attis.cz ATTN Consulting s.r.o. 1 Obsah Zadání projektu, jeho specifika

Více

Specifikace předmětu plnění veřejné zakázky: Poskytování mobilních hlasových a datových služeb pro potřeby Města Uherské Hradiště

Specifikace předmětu plnění veřejné zakázky: Poskytování mobilních hlasových a datových služeb pro potřeby Města Uherské Hradiště Specifikace předmětu plnění veřejné zakázky: Poskytování mobilních hlasových a datových služeb pro potřeby Města Uherské Hradiště 1. Předmět veřejné zakázky Předmětem plnění veřejné zakázky je poskytování

Více

Objektově orientované databáze

Objektově orientované databáze Objektově orientované databáze Miroslav Beneš Obsah přednášky Motivace Vlastnosti databázových systémů Logické datové modely Co potřebujeme modelovat? Identifikace entit v~relačních SŘBD Co je to objektová

Více

Obsah 1. Grafický manuál firmy 2. Podklady grafického manuálu 3. Varianty loga 4. Logo a logotyp

Obsah 1. Grafický manuál firmy 2. Podklady grafického manuálu 3. Varianty loga 4. Logo a logotyp Obsah 1. Grafický manuál firmy... 9 2. Podklady grafického manuálu... 10 3. Varianty loga... 11 3.1. Hlavní varianta... 11 3.2. Černobílá varianta... 11 4. Logo a logotyp... 12 4.1. Návrh loga... 12 4.2.

Více

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ Pozemkem se podle 2 písm. a) katastrálního zákona rozumí část zemského povrchu, a to část taková, která je od sousedních částí zemského povrchu (sousedních pozemků)

Více

V této části manuálu bude popsán postup jak vytvářet a modifikovat stránky v publikačním systému Moris a jak plně využít všech možností systému.

V této části manuálu bude popsán postup jak vytvářet a modifikovat stránky v publikačním systému Moris a jak plně využít všech možností systému. V této části manuálu bude popsán postup jak vytvářet a modifikovat stránky v publikačním systému Moris a jak plně využít všech možností systému. MENU Tvorba základního menu Ikona Menu umožňuje vytvořit

Více

Řízení kalibrací provozních měřicích přístrojů

Řízení kalibrací provozních měřicích přístrojů Řízení kalibrací provozních měřicích přístrojů Přesnost provozních přístrojů je velmi důležitá pro spolehlivý provoz výrobního závodu a udržení kvality výroby. Přesnost měřicích přístrojů narušuje posun

Více

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton PHP Best Practices Please try to fit your code to 80 columns. That's decimal 80. A. Morton Koncepce větších aplikací Front Controller Design Pattern Celý web má jeden přístupový bod, přes který se posílají

Více

Tvorba webových stránek

Tvorba webových stránek Tvorba webových stránek Mít svoji webovou stránku je dnes in. Cesta k jejímu získání nemusí být až tak trnitá, jak se na první pohled může zdát. Pokud máme základní počítačové znalosti a jsme ochotni naučit

Více

Pomocník diabetika Uživatelská příručka

Pomocník diabetika Uživatelská příručka Pomocník diabetika Uživatelská příručka Úvod Pomocník diabetika je označení pro webovou aplikaci určenou pro diabetiky zejména prvního typu. Webová aplikace je taková aplikace, se kterou můžete pracovat

Více

Obecná ustanovení Rozsah a obsah předmětu plnění

Obecná ustanovení Rozsah a obsah předmětu plnění Smluvní podmínky Obecná ustanovení 1. Společnost Pronajmiauto.cz (Blueway s.r.o.), se sídlem na adrese Praha Staré Město, V Kolkovně 920/5, PSČ 110 00, Praha 1, IČO: 014 17 151, zapsaná v obchodním rejstříku

Více

VŠEOBECNÉ OBCHODNÍ PODMÍNKY E-SHOP (Doplňující podmínky k Všeobecným smluvním podmínkám užívání služeb Národního geoportálu INSPIRE)

VŠEOBECNÉ OBCHODNÍ PODMÍNKY E-SHOP (Doplňující podmínky k Všeobecným smluvním podmínkám užívání služeb Národního geoportálu INSPIRE) VŠEOBECNÉ OBCHODNÍ PODMÍNKY E-SHOP (Doplňující podmínky k Všeobecným smluvním podmínkám užívání služeb Národního geoportálu INSPIRE) Všeobecné obchodní podmínky E-SHOPu Národního geoportálu INSPIRE (dále

Více

Server. Software serveru. Služby serveru

Server. Software serveru. Služby serveru Server Server je v informatice obecné označení pro počítač či skupinu počítačů, kteří poskytují nějaké služby. Rovněž pojmem server můžeme označit počítačový program, který tyto služby realizuje. Služby

Více

Zadávací dokumentace na dodávku výpočetní techniky

Zadávací dokumentace na dodávku výpočetní techniky Zadávací dokumentace na dodávku výpočetní techniky OBSAH: 1. Základní údaje 2. Identifikace projektu 3. Stručný popis projektu 4. Vymezení předmětu zakázky 5. Vymezení úlohy zadavatele při realizaci zakázky

Více

Vyplňte API klíč, který si vygenerujete v Nastavení obchodu v profilu Uloženky v části Nastavit klíč pro API.

Vyplňte API klíč, který si vygenerujete v Nastavení obchodu v profilu Uloženky v části Nastavit klíč pro API. Obsah Aktivace modulu... 2 Nastavení poboček a cen... 3 Cena... 5 Zdarma od... 5 Mapování stavů zásilek... 6 Zobrazení dopravy na eshopu... 6 Práce s objednávkami... 9 Vytvoření zásilky... 10 Stornování

Více

UŽIVATELSKÁ PŘÍRUČKA REGISTR CHMELNIC NA EAGRI ZÁKLADNÍ POPIS FUNKCÍ A FORMULÁŘŮ. CCV, s. r. o.

UŽIVATELSKÁ PŘÍRUČKA REGISTR CHMELNIC NA EAGRI ZÁKLADNÍ POPIS FUNKCÍ A FORMULÁŘŮ. CCV, s. r. o. UŽIVATELSKÁ PŘÍRUČKA REGISTR CHMELNIC NA EAGRI ZÁKLADNÍ POPIS FUNKCÍ A FORMULÁŘŮ CCV, s. r. o. Uživatelská příručka Registr chmelnic na eagri Základní popis funkcí a formulářů Verze 1.8 Registr chmelnic

Více

VEŘEJNÁ NABÍDKA POZEMKŮ URČENÝCH K PRODEJI PODLE 7 ZÁKONA

VEŘEJNÁ NABÍDKA POZEMKŮ URČENÝCH K PRODEJI PODLE 7 ZÁKONA VEŘEJNÁ NABÍDKA POZEMKŮ URČENÝCH K PRODEJI PODLE 7 ZÁKONA č. 95/1999 Sb., O PODMÍNKÁCH PŘEVODU ZEMĚDĚLSKÝCH A LESNÍCH POZEMKŮ Z VLASTNICTVÍ STÁTU NA JINÉ OSOBY, VE ZNĚNÍ POZDĚJŠÍCH PŘEDPISŮ (DÁLE JEN ZÁKON

Více

Program rovného zacházení provozovatele distribuční soustavy Pražská plynárenská Distribuce, a.s., člen koncernu Pražská plynárenská, a.s.

Program rovného zacházení provozovatele distribuční soustavy Pražská plynárenská Distribuce, a.s., člen koncernu Pražská plynárenská, a.s. Program rovného zacházení provozovatele distribuční soustavy Pražská plynárenská Distribuce, a.s., člen koncernu Pražská plynárenská, a.s. Obsah 1. Úvod... 2 1.1. Účel Programu rovného zacházení... 2 1.2.

Více

Management projektů. Programová podpora auditu sytému managementu kvality HOT 4IT. Návrh

Management projektů. Programová podpora auditu sytému managementu kvality HOT 4IT. Návrh Management projektů Programová podpora auditu sytému managementu kvality HOT 4IT Návrh Historie Verze Datum Status Kdo Poznámka 1 16 3 2009 Tisoň, Horník 11 4 4 2010 Tisoň Přidáno GUI 12 84 2010 Tisoň

Více

Příloha č. 13. Statistický metainformační systém - úvod

Příloha č. 13. Statistický metainformační systém - úvod Název projektu: Redesign Statistického informačního systému v návaznosti na zavádění egovernmentu v ČR Příjemce: Česká republika Český statistický úřad Registrační číslo projektu: CZ.1.06/1.1.00/07.06396

Více

ODŮVODNĚNÍ VEŘEJNÉ ZAKÁZKY Dostavba splaškové kanalizace - Prostřední Bečva a Horní Bečva, zhotovitel, dle vyhlášky č. 232/2012 Sb.

ODŮVODNĚNÍ VEŘEJNÉ ZAKÁZKY Dostavba splaškové kanalizace - Prostřední Bečva a Horní Bečva, zhotovitel, dle vyhlášky č. 232/2012 Sb. ODŮVODNĚNÍ VEŘEJNÉ ZAKÁZKY Dostavba splaškové kanalizace - Prostřední Bečva a Horní Bečva, zhotovitel, dle vyhlášky č. 232/2012 Sb. Zadavatel Dobrovolný svazek obcí Prostřední Bečva a Horní Bečva Sídlo

Více

Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR

Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR Ing. Radek Augustýn Výzkumný ústav geodetický, topografický a kartografický, v.v.i. Úvod V polovině roku 2012 byla státní správě i

Více

VYR-32 POKYNY PRO SPRÁVNOU VÝROBNÍ PRAXI - DOPLNĚK 6

VYR-32 POKYNY PRO SPRÁVNOU VÝROBNÍ PRAXI - DOPLNĚK 6 VYR-32 POKYNY PRO SPRÁVNOU VÝROBNÍ PRAXI - DOPLNĚK 6 Platnost od 1.1.2004 VÝROBA PLYNŮ PRO MEDICINÁLNÍ ÚČELY VYDÁNÍ PROSINEC 2003 1. Zásady Tento doplněk se zabývá průmyslovou výrobou medicinálních plynů,

Více

modul Jízdy a Kniha jízd uživatelská příručka

modul Jízdy a Kniha jízd uživatelská příručka modul Jízdy a Kniha jízd uživatelská příručka 2 UŽIVATELSKÁ PŘÍRUČKA MODULY JÍZDY A KNIHA JÍZD Moduly Jízdy a Kniha jízd Jak to funguje Jízdy jsou části trasy. Vypočítávají se na základě dat přijatých

Více

OBEC HORNÍ MĚSTO Spisový řád

OBEC HORNÍ MĚSTO Spisový řád OBEC HORNÍ MĚSTO Spisový řád Obsah: 1. Úvodní ustanovení 2. Příjem dokumentů 3. Evidence dokumentů 4. Vyřizování dokumentů 5. Podepisování dokumentů a užití razítek 6. Odesílání dokumentů 7. Ukládání dokumentů

Více

Obchodní podmínky pro spolupráci se společností Iweol EU s.r.o.

Obchodní podmínky pro spolupráci se společností Iweol EU s.r.o. Obchodní podmínky pro spolupráci se společností Iweol EU s.r.o. 1. ÚVODNÍ USTANOVENÍ 1.1. Tyto obchodní podmínky (dále jen obchodní podmínky ) obchodní společnosti Iweol EU s.r.o., se sídlem Kovářská 140/10,

Více

Matematický model malířského robota

Matematický model malířského robota Matematický model malířského robota Ing. Michal Bruzl 1,a, Ing. Vyacheslav Usmanov 2,b, doc. Ing. Pavel Svoboda, CSc. 3,c,Ing. Rostislav Šulc, Ph.D. 4,d 1,2,3,4 Katedra technologie staveb (K122), Fakulta

Více

EXTRAKT z české technické normy

EXTRAKT z české technické normy EXTRAKT z české technické normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním materiálem o normě. ICS 03.220.20, 35.240.60 Elektronický výběr mýtného Výměna ČSN EN informací mezi

Více

Miroslav Kunt. Srovnávací přehled terminologie archivních standardů ISAD(G), ISAAR(CPF) a české archivní legislativy

Miroslav Kunt. Srovnávací přehled terminologie archivních standardů ISAD(G), ISAAR(CPF) a české archivní legislativy Příloha č. 2 k výzkumné zprávě projektu VE20072009004 Miroslav Kunt Srovnávací přehled terminologie archivních standardů ISAD(G), ISAAR(CPF) a české archivní legislativy Pozn.: Za českou archivní legislativu

Více

S t r á n k a 1 I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í

S t r á n k a 1 I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í S t r á n k a 1 Zadavatel: Centrum pro zjišťování výsledků vzdělávání, příspěvková organizace Jeruzalémská 957/12 110 06 Praha 1 IČ: 72029455 DIČ: CZ72029455 Zastoupený: Mgr. Martinem Machem, ředitelem

Více

PROVOZNÍ ŘÁD HALY PRO MÍČOVÉ SPORTY KARLOVY VARY

PROVOZNÍ ŘÁD HALY PRO MÍČOVÉ SPORTY KARLOVY VARY PROVOZNÍ ŘÁD HALY PRO MÍČOVÉ SPORTY KARLOVY VARY Článek 1 Závazný předpis a podmínky užívání sportovní haly 1. Tento Provozní řád určuje zásady chování uživatelů, návštěvníků a zaměstnanců MH, jejich práva

Více

PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ

PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ Obsah 1 Koncová zařízení... 3 2 Charakteristika typů služeb logistika KZ Dodání KZ, Instalace KZ... 3 3 Další

Více

Stručný návod na práci v modulu podatelna a výpravna

Stručný návod na práci v modulu podatelna a výpravna Spisová služba / Elisa Stručný návod na práci v modulu podatelna a výpravna Strana 1 (celkem 16) Obsah Obsah... 2 1. Modul podatelna... 3 1.1 Příjem datová schránka... 3 1.2 Příjem obecná zásilka... 5

Více

NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO 3.5.5 PŘÍRUČKA UŽIVATELE

NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO 3.5.5 PŘÍRUČKA UŽIVATELE NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO 3.5.5 PŘÍRUČKA UŽIVATELE 1. Přehled možností programu 1.1. Hlavní okno Hlavní okno programu se skládá ze čtyř karet : Projekt, Zadání, Výsledky a Návrhový

Více

Jak pracovat s kalkulačním programem HELUZ komín

Jak pracovat s kalkulačním programem HELUZ komín Jak pracovat s kalkulačním programem HELUZ komín Aplikace Heluz komíny je určena pro výpočet potřebných komponentů zvoleného komínového systému a pro zjištění jeho ceníkové ceny. V levém sloupci je nabídka:

Více

VSEOBECNÉ SMLUVNÍ PODMÍNKY O POSKYTOVÁNÍ SLUŽEB WEBHOSTINGU, ELEKTRONICKÉ POŠTY, SERVERHOSTINGU A DALŠÍCH SLUŽEB ( VSP3 ) I.

VSEOBECNÉ SMLUVNÍ PODMÍNKY O POSKYTOVÁNÍ SLUŽEB WEBHOSTINGU, ELEKTRONICKÉ POŠTY, SERVERHOSTINGU A DALŠÍCH SLUŽEB ( VSP3 ) I. VSEOBECNÉ SMLUVNÍ PODMÍNKY O POSKYTOVÁNÍ SLUŽEB WEBHOSTINGU, ELEKTRONICKÉ POŠTY, SERVERHOSTINGU A DALŠÍCH SLUŽEB ( VSP3 ) I. Úvodní ustanovení a) Ing. Martin Fiala estudio.cz vydává v souladu s ustanovením

Více

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional Nejčastěji se o JDF hovoří při řízení procesů v tiskových provozech. JDF se však má stát komunikačním prostředkem mezi všemi

Více

Marketing. Modul 7 Internetový marketing

Marketing. Modul 7 Internetový marketing Marketing Modul 7 Internetový marketing Výukový materiál vzdělávacích kurzů v rámci projektu Zvýšení adaptability zaměstnanců organizací působících v sekci kultura Tento materiál je spolufinancován z Evropského

Více

Marketing. Modul 5 Marketingový plán

Marketing. Modul 5 Marketingový plán Marketing Modul 5 Marketingový plán Výukový materiál vzdělávacích kurzů v rámci projektu Zvýšení adaptability zaměstnanců organizací působících v sekci kultura Tento materiál je spolufinancován z Evropského

Více

Na následující stránce je poskytnuta informace o tom, komu je tento produkt určen. Pro vyplnění nového hlášení se klikněte na tlačítko Zadat nové

Na následující stránce je poskytnuta informace o tom, komu je tento produkt určen. Pro vyplnění nového hlášení se klikněte na tlačítko Zadat nové Pro usnadnění podání Ročního hlášení o produkci a nakládání s odpady může posloužit služba firmy INISOFT, která je zdarma přístupná na WWW stránkách firmy. WWW.INISOFT.CZ Celý proces tvorby formuláře hlášení

Více

Modul Řízení objednávek. www.money.cz

Modul Řízení objednávek. www.money.cz Modul Řízení objednávek www.money.cz 2 Money S5 Řízení objednávek Funkce modulu Obchodní modul Money S5 Řízení objednávek slouží k uskutečnění hromadných akcí s objednávkami, které zajistí dostatečné množství

Více