Automatizovaný vyhledávač aukčních položek

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

Download "Automatizovaný vyhledávač aukčních položek"

Transkript

1 Mendelova univerzita v Brně Provozně ekonomická fakulta Automatizovaný vyhledávač aukčních položek Diplomová práce Vedoucí práce: doc. Ing. František Dařena, Ph.D. Bc. Filip Vaníček Brno 2014

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

3 Čestné prohlášení Prohlašuji, že jsem tuto práci: Automatizovaný vyhledávač aukčních položek vypracoval samostatně a veškeré použité prameny a informace jsou uvedeny v seznamu použité literatury. Souhlasím, aby moje práce byla zveřejněna v souladu s 47b zákona č. 111/1998 Sb., o vysokých školách ve znění pozdějších předpisů, a v souladu s platnou Směrnicí o zveřejňování vysokoškolských závěrečných prací. Jsem si vědom, že se na moji práci vztahuje zákon č. 121/2000 Sb., autorský zákon, a že Mendelova univerzita v Brně má právo na uzavření licenční smlouvy a užití této práce jako školního díla podle 60 odst. 1 Autorského zákona. Dále se zavazuji, že před sepsáním licenční smlouvy o využití díla jinou osobou (subjektem) si vyžádám písemné stanovisko univerzity o tom, že předmětná licenční smlouva není v rozporu s oprávněnými zájmy univerzity, a zavazuji se uhradit případný příspěvek na úhradu nákladů spojených se vznikem díla, a to až do jejich skutečné výše. V Brně dne

4 Abstract Vaníček, F. Automatic search engine of auction items. Diploma thesis. Brno: MUAF, Diploma thesis deals with the analysis, design and implementation of an application that allows users to search the auction results of companies that organize auctions. This work describes two mutually independent parts of application the extracting robot and the search engine. Extracting robot takes care of automatic extraction of auction results from Web pages based on user-created extracting template. Automation of the extraction process is achieved by analyzing the Web links using Bayes classifier and use of automatic detection of the auction items. Second part of the application is used to search the extracted auction results. Search results will help users to determine the financial value of collectibles and investments items (coins, medals and banknotes). Keywords Auction search engine, extracting robot, Bayes classifier, DOM, PHP, Nette Framework, JavaScript, jquery. Abstrakt Vaníček, F. Automatizovaný vyhledávač aukčních položek. Diplomová práce. Brno: MZLU v Brně, Diplomová práce se zabývá analýzou, návrhem a implementací aplikace, která uživatelům umožní vyhledávat v aukčních výsledcích společností pořádajících sálové aukce. Práce popisuje dvě vzájemně nezávislé části aplikace extrakčního robota a vyhledávač. Extrakční robot se stará o automatickou extrakci aukčních výsledků z webových stránek na základě uživatelem vytvořené extrakční šablony. Automatizace procesu extrakce je dosaženo analýzou odkazů pomocí Bayesova klasifikátoru a využití automatické detekce aukčních položek. Pro vyhledávání v aukčních výsledcích slouží druhá část aplikace. Výsledky vyhledávání uživatelům pomohou k určení finanční hodnoty sběratelských a investičních předmětů (mincí, medailí, vyznamenání a bankovek). Klíčová slova Aukční vyhledávač, extrakční robot, Bayesův klasifikátor, DOM, PHP, Nette Framework, JavaScript, jquery.

5 Obsah 5 Obsah 1 Úvod a cíl práce Úvod Cíl práce Analýza současného stavu Sběr informací v prostředí webu Analýza webových odkazů Analýza sociálních sítí Klasifikace webových odkazů Bayesův klasifikátor Dolování obsahu webových stránek Algoritmus extrakce datových záznamů Metodika řešení Analýza a návrh aplikace Implementace aplikace Nette Framework jquery AJAX Cron MySQL Analýza a návrh aplikace Specifikace problému Analýza a návrh extrakčního robota Proces tvorby extrakční šablony Proces extrakce Proces standardizace měn a časových údajů Automatizace extrakčního robota Diagram tříd extrakčního robota... 33

6 Obsah Schéma databáze extrakčního robota Analýza a návrh vyhledávače Proces registrace Proces vyhledávání Proces přidávání mezi oblíbené položky Diagram tříd vyhledávače Schéma databáze vyhledávače Implementace extrakčního robota Popis tříd Třída Robot Třída Extractor Třída Scheduler Třída Action Třída Template Třída PageData Třída BayesFilter Třída Link Třída Factory Třída DB Třída HTML Třída User Popis funkce extrakčního robota Tvorba extrakční šablony Automatická extrakce Implementace vyhledávače Popis tříd Třída Repository Třída UserRepository Třída Authenticator Třída TokenRepository Třída SearchSettings... 58

7 Obsah Třída ItemRepository Třída SearchHistoryRepository Třída SearchFormControl Třída SearchResultControl Třída VisualPaginatorControl Třída HomepagePresenter Třída RegisterPresenter Třída SignPresenter Třída PremiumPresenter Třída ListingPresenter Třída ItemPresenter Třída FavoritePresenter Třída SettingsPresenter Třída AdminPresenter Popis funkce vyhledávače Registrace a přihlášení do aplikace Prémiová část aplikace Vyhledávání aukčních položek Prohlížení aukčních výsledků Oblíbené položky Testování 73 8 Diskuze 75 9 Závěr Literatura 78 A Praktické použití 83

8 Seznam obrázků 8 Seznam obrázků Obr. 1 Vyhledávač McSearch nedokáže nalézt korunovou minci (zdroj: mcsearch.info) 14 Obr. 2 Příklad části strany s aukčními výsledky (zdroj: aurea.cz) 15 Obr. 3 Příklad sociální sítě s centrální stránkou označenou symbolem i (zdroj: [4]) Obr. 4 Schéma stránky s dvěma podobnými datovými záznamy (zdroj: [13]) Obr. 5 Jedna z možných konfigurací datových záznamů (zdroj: [13]) 22 Obr. 6 Diagram případu užití extrakčního robota 30 Obr. 7 Proces extrakce 31 Obr. 8 Diagram tříd extrakčního robota 34 Obr. 9 Schéma databáze extrakčního robota 35 Obr. 10 Diagram případů užití vyhledávače 36 Obr. 11 Diagram tříd vyhledávače 40 Obr. 12 Schéma databáze vyhledávače 42 Obr. 13 Třída Robot 43 Obr. 14 Třída Extractor 44 Obr. 15 Třída Scheduler 45 Obr. 16 Třída Action 45 Obr. 17 Třída Template 46 Obr. 18 Třída PageData 46 Obr. 19 Třída BayesFilter 47 Obr. 20 Třída Link 47 Obr. 21 Třída Factory 48 Obr. 22 Třída DB 48 Obr. 23 Třída HTML 49 Obr. 24 Třída User 49 Obr. 25 Extrakční robot úvodní obrazovka

9 Seznam obrázků 9 Obr. 26 Extrakční robot naučený Bayesův filtr 51 Obr. 27 Extrakční robot tvorba šablony 52 Obr. 28 Extrakční robot testování šablony 53 Obr. 29 Třída Repository 56 Obr. 30 Třída UserRepository 57 Obr. 31 Třída Authenticator 57 Obr. 32 Třída TokenRepository 58 Obr. 33 Třída SearchSettings 59 Obr. 34 Třída ItemRepository 60 Obr. 35 Třída SearchHistoryRepository 60 Obr. 36 Třída SearchFormControl 61 Obr. 37 Třída SearchResultControl 61 Obr. 38 Třída VisualPaginatorControl 62 Obr. 39 Třída HomepagePresenter 62 Obr. 40 Třída RegisterPresenter 63 Obr. 41 Třída SignPresenter 63 Obr. 42 Třída PremiumPresenter 64 Obr. 43 Třída ListingPresenter 64 Obr. 44 Třída ItemPresenter 65 Obr. 45 Třída FavoritePresenter 65 Obr. 46 Třída SettingsPresenter 66 Obr. 47 Třída AdminPresenter 66 Obr. 48 Vyhledávač výřez úvodní obrazovky 67 Obr. 49 Vyhledávač přihlašovací a resetovací formulář 68 Obr. 50 Vyhledávač prémiová část (se zobrazenou kontextovou nápovědou) 69 Obr. 51 Vyhledávání aukčních položek 70 Obr. 52 Prohlížení aukčních položek seznam aukcí 71 Obr. 53 Prohlížení aukčních položek detail aukce 71 Obr. 54 Přidávání do oblíbených položek 72 Obr. 55 Tvorba šablony pro Sixbid.com dvousloupcové rozvržení 73

10 Seznam obrázků 10 Obr. 56 Sixbid.com test správnosti extrakce 74 Obr. 57 Praktická ukázka hledání dukátu Karla IV. (první část) 83 Obr. 58 Praktická ukázka hledání dukátu Karla IV. (druhá část) 84 Obr. 59 Praktická ukázka hledání dukátu Karla IV. (třetí část) 84 Obr. 60 Praktická ukázka hledání dukátu Karla IV. (čtvrtá část) 85 Obr. 61 Praktická ukázka hledání dukátu Karla IV. (pátá část) 85

11 Úvod a cíl práce 11 1 Úvod a cíl práce 1.1 Úvod Peníze hrají v životě mnoha lidí civilizovaného světa důležitou roli. Většina lidí žijících v civilizovaném světě je s funkcí peněz seznámena již během svého dětství, kdy postupně pochopí, že si za ně mohou koupit věci, které nemají a které chtějí. Tomuto se říká, že peníze představují prostředek směny [1]. Člověk může vyměnit peníze za zboží, které chce a které pro něj má vyšší hodnotu, než druhý člověk za zboží vyžaduje. Peníze nejsou k životu člověka úplně nezbytné, umožňují však žít pohodlnější život. Zároveň se prostřednictvím nich lidé mohou vyrovnávat s nejistotou, která jim do budoucna hrozí [1]. Hodnota peněz není stálá a je určena nejen minulou hodnotou peněz, ale také mírou inflace. Inflace znamená zvyšování množství peněz v oběhu. Toto zvyšování dostupných peněz způsobuje zvyšování cen zboží, protože více lidí si najednou může koupit více zboží, ale množství zboží se nezvýšilo. Z tohoto důvodu inflace snižuje kupní sílu peněz. Proto se někteří lidé snaží hodnotu svých úspor chránit [1]. Pokud člověk používá své volné peněžní prostředky k tomu, aby nakoupil zboží, které mu umožní mít se v budoucnosti lépe, říká se tomu investice. Základem investování je využití volných finančních prostředků pro nákup aktiv. Aktiva představují vše, co člověk může vlastnit a přinese to člověku do budoucnosti zisk nebo to alespoň pokryje inflaci. Mezi třídy aktiv patří například cenné papíry, nemovitosti nebo komodity [1]. Možností spojení investice a sběratelství je nákup historických sběratelských předmětů. Na tomto trhu dochází v posledních letech k obrovskému růstu. Jeden z nejvíce rostoucích trhů je trh s historickými americkými mincemi, který má odhadovaný obrat za rok 2013 kolem 5 miliard amerických dolarů. Zároveň byla během tohoto roku vydražena nejdražší mince světa za rekordní sumu přesahující 10 miliónů dolarů [2]. O tom, že neroste pouze trh s mincemi, svědčí finanční výsledky největší světové aukční společnosti americké Heritage Auction, která pořádá aukce různých sběratelských předmětů (mincí, bankovek, knih, uměleckých předmětů a obrazů, komiksů, filmových plakátů, sportovních suvenýrů, luxusních vín a šperků). Tato společnost vydražila za rok 2013 předměty v celkové hodnotě přes 900 miliónů dolarů [3] a z toho mince v hodnotě 236 miliónů dolarů [2]. Tyto částky mohou vést člověka k zamyšlení, že by se na tomto trhu daly jednoduše investovat a vydělat peníze. Opak je bohužel pravdou. Člověk potřebuje mít nejen značné teoretické vědomosti, musí neustále sledovat historické ceny aukčních předmětů a mít praktické zkušenosti s oceňováním předmětů s ohledem na jejich stav, aby mohl na těchto trzích uspět. Asi časově nejnáročnější je sledování a dohledávání historických aukčních cen. Tyto ceny uvádějí společnosti převážně na svých webových stránkách a u některých společností jsou zde pouze po určitou dobu. Aukční společnosti většinou neumožňují vyhle-

12 Úvod a cíl práce 12 dávat ve svých aukčních výsledcích. Proto se pro většinu sběratelů stává jedinou možností procházení mnoha stránek s mnoha pro ně nezajímavými výsledky, než se dostanou k výsledkům, které je zajímají. Z tohoto důvodu jim jakákoliv možnost, která jim pomůže si tuto zdlouhavou práci usnadnit, velmi zjednoduší práci. K tomuto účelu by byla vhodná webová aplikace, která by aukční výsledky shromažďovala a umožnila v nich jednoduše vyhledávat. Taková aplikace by měla výhodu, že by uchovávala historické údaje, které aukční společnosti postupně odstraňují. Zároveň by obsahovala aukční výsledky z různých zdrojů, čímž by výsledky vyhledávání získaly vyšší objektivitu a pro investory-sběratele by se staly užitečnějšími. Jelikož jsou aukční výsledky nejčastěji uloženy ve formě webových stránek formátovaných pomocí HTML značek, lze využít pro hromadné procházení a indexování stránek webového robota [4]. Tento robot musí umět automatizovaně procházet a zpracovávat stránky obsahující výsledky různých aukčních společností. Aby tohoto byl robot schopen, bude nejprve nutné robota naučit chápat různé údaje na stránce, případně je i konvertovat do správných formátů (časové údaje, měny). Správné interpretace údajů by mohlo být dosaženo tvorbou šablon pro extrakci dat z webových stránek skládajících se z množiny klíčových cest. Klíčová cesta představuje absolutní cestu objektového modulu dokumentu (DOM), která jednoznačně identifikuje prvek na určité stránce. Na základě takto vytvořené šablony bude moci robot rozpoznat význam jednotlivých HTML elementů nebo bloků na stránce a na základě toho je extrahovat [5]. Dále musí být robot schopen přecházet mezi jednotlivými stránkami, aby dokázal extrahovat všechny stránky aukce. Musí tedy rozpoznávat, které odkazy jsou relevantní a které ne. Toto se neobejde bez využití nějakého algoritmu pro analýzu odkazů vedoucích na další strany. Administrátor aplikace by měl být schopen jednoduše nastavit extrakci webového robota, a to zcela bez znalosti jakýchkoliv programovacích nebo značkovacích jazyků. Nastavení extrakce robota by měla probíhat interaktivně a jednorázově, kdy je robotovi jednou vytvořena extrakční šablona, a poté by už vše mělo probíhat automatizovaně. V ideálním případě by měl administrátor aplikace pouze za pomoci kurzoru myši označit jednotlivé bloky webové stránky a automaticky by se měla vygenerovat celá extrakční šablona webu. Zároveň by se šablona měla vytvořit co nejobecněji, aby byla zaručena funkčnost extrakce i při malé změně webové stránky. Z tohoto důvodu bude návrh a tvorba takové aplikace netriviální záležitostí. 1.2 Cíl práce Cílem práce je analyzovat, navrhnout a implementovat aplikaci, která uživatelům poskytne podporu pro rozhodování o nákupu nebo případném prodeji sběratelských předmětů na sálových aukcích aukčních společností. Podporou pro rozhodování je myšleno nabídnutí relevantních aukčních výsledků pro zadaný dotaz uživatele. Aplikace by měla být schopna extrahovat data o aukčních vý-

13 Úvod a cíl práce 13 sledcích z různých webových stránek aukčních společností za pomoci extrakčního robota. Nastavení extrakce tohoto robota by mělo být jednoduché, aby byl tento proces schopen provést i méně zkušený administrátor. Poté by už měla celá činnost robota probíhat automatizovaně.

14 Analýza současného stavu 14 2 Analýza současného stavu Aukční společnosti pořádají pravidelně, obvykle dvakrát ročně, prodej sběratelských předmětů na sálových aukcích. Informace o dražených předmětech obsahují popis, vyvolávací cenu a někdy i fotografie předmětu a jsou dopředu zveřejňovány prostřednictvím papírového katalogu a webových stránek dražebníka. Ve většině případů není ve webových aukčních výsledcích umožněno vyhledávání, a proto musí sběratelé procházet jednotlivé aukční výsledky manuálně. Aby sběratel dokázal odhadnout konečnou cenu položky, kterou hodlá dražit, musí najít co nejvíce podobných aukčních výsledků, aby byla maximalizována objektivita výsledné ceny. Tato činnost je proto velmi časově náročná a často se může stát, že sběratel nějakou položku přehlédne nebo započítá vícekrát. Z tohoto důvodu by sběratelům ušetřila hodně času aplikace, která by tato data obsahovala už extrahovaná, předzpracovaná a připravená pro vyhledávání. Aplikace, která alespoň částečně předcházející požadavky splňuje, už existuje. Jmenuje se McSearch a slouží k vyhledávání v historických aukčních výsledcích pouze numismatických předmětů. Proto by zde sběratelé jiných oborů hledali informace zbytečně [6]. Tato aplikace je určena převážně pro vyhledávání ve výsledcích největších světových aukčních portálů a největší české aukční společnosti vůbec neobsahuje. Z těchto důvodů není aplikace vhodná pro stanovené podmínky. Ostatní vyhledávače jsou na tom podobně jako McSearch a jejich databáze už většinou nedosahuje velikosti databáze McSearch [6]. Obr. 1 Vyhledávač McSearch nedokáže nalézt korunovou minci (zdroj: mcsearch.info) Další možností, jak vyhledávat historické ceny aukčních položek, je použití aukčních portálů Ebay nebo českého Aukra. Oba tyto portály umožňují vyhledávat v historických údajích na nich vydražených položek a trpí stejnými neduhy. Starší údaje jsou postupně odstraňovány a poté už v nich není možné znovu dohledávat. Dále je zde k prodeji velmi málo kvalitních předmětů v porovnání s velkým množstvím lidí, kteří zde draží a mají zájem koupit kvalitní zboží. Z tohoto důvodu zde vzniká situace, kdy poptávka mnohokrát převyšuje nabídku

15 Analýza současného stavu 15 [1]. To způsobuje, že se zde skoro jakýkoliv kvalitní sběratelský materiál stabilně prodává dráže než na sálových aukcích. Z tohoto důvodu není ani jeden portál ideálním vyhledávacím nástrojem pro jakoukoliv investici do sběratelských předmětů. Pro české uživatele by byl mnohem vhodnější vyhledávač, který by uměl vyhledávat převážně v českých aukčních výsledcích společností pořádajících sálové aukce. Příkladem takového aukčního portálu je pražská společnost Aurea, která pravidelně pořádá sálové aukce mincí, bankovek, vyznamenání a doplňující literatury [7]. Aukční výsledky svých aukcí společnost pravidelně zveřejňuje na svých webových stránkách ve formě tabulkového výpisu propojeného pomocí odkazů. Obr. 2 Příklad části strany s aukčními výsledky (zdroj: aurea.cz) Na Obr. 2 je možné vidět, jak vypadá typická strana s aukčními výsledky společnosti Aurea. Z pohledu formátování pomocí HTML značek se jedná o množinu tabulek, kdy je každá položka uložena ve vlastní tabulce a v jednotlivých řádcích a sloupcích jsou uloženy různé informace o položce. Tato stránka také obsahuje odkazy na mnoho dalších stránek, z nichž je mnoho odkazů nerelevantních nebo duplicitních. Takové odkazy mohou vést úplně do jiné části webu nebo na jiný web. Z tohoto důvodu bude muset robot umět odkazy nějakým způsobem třídit. Webový robot, který se o extrakci bude starat, musí nejenom fungovat automatizovaně, musí být také jednoduše nastavitelný. Aplikace nesmí po administrátorovi vyžadovat nějakou speciální znalost. Jediné, co by měl administrátor vědět, je URL adresa webové stránky s odkazy na aukce, které chce extrahovat. Příkladem takového jednoduchého nastavení může být administrační rozhraní, kdy je po kliknutí na tlačítko Vytvořit novou šablonu administrátor požádán o zadání URL adresy stránky se seznamem aukcí. Následně by měla být zobrazena určitá aukce, na které bude probíhat tvorba šablony. Jelikož

16 Analýza současného stavu 16 každá webová stránka má trochu jinou strukturu, musí být extrakční robot naučen, jak má danou strukturu interpretovat. Webová stránka s aukčními výsledky může být tvořena jako jednosloupcová (viz Obr. 2) nebo i vícesloupcová. Může být tvořena různými HTML prvky tabulkami, seznamy, případně jinými prvky, které jsou pozicované pomocí kaskádových stylů (CSS). Proto musí tvorba extrakční šablony probíhat na základě interakce s administrátorem. V ideálním případě bude administrátor pouze za pomoci kurzoru myši označovat jednotlivé bloky stránky jako odezvu na jednotlivé výzvy aplikace. Tímto způsobem bude extrakční robot naučen, jak má správně chápat význam jednotlivých částí stránky. Důležité je, aby se šablona generovala co nejobecněji, protože jen tak může být zaručeno, že bude fungovat na co největší množinu webových stránek. 2.1 Sběr informací v prostředí webu Pro sběr informací v prostředí webu se používají následující techniky dolování dat z webových stránek (web mining) [4]: 1. dolování z webových logů (web usage mining), 2. analýza vzájemného propojení webových stránek (web structure mining), 3. dolování obsahu webových stránek (web content mining). V této práci budou diskutovány pouze techniky z bodů dva a tři, protože technika z prvního bodu slouží převážně pro analýzu chování uživatele, což není pro sběr informací z webových stránek důležité. Pro dolování obsahu z webových stránek se používají techniky web content mining. Použití těchto technik předpokládá, že se každá webová stránka určená k extrakci skládá ze strukturovaných dat. Jednoduše si lze strukturovaná data představit jako text, který je formátován pomocí značek. Jako formátovací značky se nejčastěji používají HTML tagy [4]. Pomocí těchto značek je určen pouze vzhled stránky, značky už neříkají nic o významu jednotlivých bloků textu. Z tohoto důvodu je potřeba extrakční program naučit jednotlivé bloky správně interpretovat. Techniky web structure mining nám umožňují analyzovat vzájemné propojení webových stránek. V tomto konkrétním případě lze této techniky využít pro analýzu relevantnosti nebo irelevantnosti odkazů, které se nacházejí na webových stránkách určených k extrakci. Při analýze webových odkazů je důležité analyzovat nejen odkaz nebo titulek odkazu, pro dosažení lepších výsledků je třeba se zaměřit na obojí. Na základě analýzy obou částí odkazu bude výsledná klasifikace přesnější [4]. 2.2 Analýza webových odkazů Webové stránky jsou vzájemně propojené pomocí hypertextových odkazů, které obsahují důležité informace. Vyhledávače tyto informace používají pro určení relevantnosti jednotlivých webových stránek pro zadaný vyhledávací dotaz. Vy-

17 Analýza současného stavu 17 užívá se zde princip, kdy je webová stránka významnější, pokud na ni vedou odkazy z dalších webových stránek, které jsou také významné. Tohoto principu využívá původní verze algoritmu PageRank, který je použit ve vyhledávacím nástroji Google [4]. Webové odkazy se nemusí používat pouze pro zjištění jejich relevantnosti v závislosti na vyhledávacím dotazu, je možné je použít pro hledání webových komunit [4]. Komunita v tomto případě představuje množinu vzájemně propojených stránek, kde jednotlivé stránky reprezentují profilové stránky lidí, kteří mezi sebou mají nějakou interakci nebo vztah. Z tohoto důvodu se této analýze říká analýza sociálních sítí. Výhodou této analýzy je, že nemusí sloužit pouze pro zkoumání vztahů mezi lidmi, je možné ji využít na úplně jiné věci, jako je analýza vzájemného propojení dokumentů nebo webových stránek [4]. Díky tomu lze využít informace v hypertextových odkazech pro vytvoření komunity webových stránek, které představují jednotlivé stránky seznamu aukčních výsledků Analýza sociálních sítí Analýza sociálních sítí může být prováděna dvěma způsoby, a to v závislosti na vztahu klíčové webové stránky k ostatním stránkám v komunitě. Jedná se o analýzu na základě centrálnosti a analýzu na základě prestiže. Obr. 3 Příklad sociální sítě s centrální stránkou označenou symbolem i (zdroj: [4]) Analýza na základě centrálnosti využívá pojem centrální stránka, kdy se jedná o webovou stránku, která má největší počet vztahů s dalšími stránkami komunity. Takovou stránku je možné chápat jako nejdůležitější. Vztah mezi stránkami si lze představit jako odkazy vedoucí z jedné stránky na druhou i zpět. Z tohoto důvodu vztah nevzniká, pokud je odkaz pouze jednosměrný. Jak je možné vidět na Obr. 3, pro znázornění sociální sítě s centrální stránkou se používá neorientovaného grafu. V tomto případě je centrální stránkou prvek se symbolem ozna-

18 Analýza současného stavu 18 čeným písmenem i [4]. V kontextu této práce bude centrální stránkou úvodní stránka aukce, ze které vedou odkazy na další stránky aukce, a zároveň je na každé straně umístěn odkaz zpět. Naopak analýza na základě prestiže rozlišuje odkazy na dva typy, a to odkaz vedoucí ze stránky a odkaz vedoucí na stránku. Pro výpočet prestiže stránky se používají pouze odkazy vedoucí na stránku. Z tohoto důvodu vede na stránku s nejvyšší prestiží nejvíce odkazů z největšího počtu různých stránek. V reálném případě si to lze představit jako člověka, se kterým chce kamarádit co nejvíce různých lidí. On už s nimi kamarádit nemusí. Pro znázornění takovýchto vztahů se používá orientovaný graf. Tento algoritmus se na první pohled může zdát podobný algoritmu PageRank, diskutovanému v kapitole 2.2. Není tomu tak. PageRank algoritmus na rozdíl od algoritmu analýzy prestiže využívá nejen odkazy na stránku vedoucí, ale i odkazy vedoucí ze stránky na jiné stránky. Takové odkazy slouží ke zvyšování prestiže ostatních stránek [4]. Pro vytvoření komunity stránek s určitou vlastností nestačí zkoumat pouze propojení mezi stránkami. Je třeba data v odkazech nějakým způsobem klasifikovat, protože by se mohlo stát, že odkaz vedoucí na jiný web a zpět by mohl být extrakčním algoritmem chápán jako součást komunity [4] Klasifikace webových odkazů Pro správnou klasifikaci webových odkazů je třeba nejprve pochopit data, která se mají klasifikovat. Z pohledu analýzy a klasifikace dat mají data dvě různé složky [8]: deterministickou složku, nedeterministickou složku. Deterministická složka představuje užitečná data, na základě nichž probíhá klasifikace. Naproti tomu nedeterministická složka pouze komplikuje klasifikaci, protože obsahuje rušení a šum. Takové rušení může být už v datech obsaženo. Velmi často se stává, že se šum do dat dostane po použití nevhodného algoritmu pro předzpracování dat. Z tohoto důvodu se proces klasifikace musí dělit na další procesy, které se starají o jednotlivé části zpracování dat [8]. Těmito procesy je předzpracování dat, analýza dat a klasifikace dat. Všechny tyto procesy jsou zapojeny sériově a výstup z jednoho procesu je brán jako vstup dalšího procesu. Prvním procesem, do kterého vstupují surová neboli nezpracovaná data, je předzpracování dat. Během tohoto procesu dochází k čištění a filtraci dat. V podstatě dochází k odstraňování šumu (nedeterministické složky). Jak bylo uvedeno výše, pro každý charakter dat je třeba vybrat vhodný algoritmus předzpracování, protože by jinak mohlo dojít k dalšímu přidání rušení. Proces předzpracování rozděluje data podle jejich charakteru na statická a dynamická. Statická data se v průběhu času nemění, proto je jejich zpracování jednodušší. Dynamická data musí zachovávat určité uspořádání, protože na čase závisí (časové řady, signály) [8].

19 Analýza současného stavu 19 Druhým procesem zpracování dat je analýza dat. Analýza je zde chápána jako hledání důležitých vlastností a zákonitostí v datech. Dále zde dochází k hledání proměnných, na základě nichž bude probíhat celková klasifikace nebo predikce. Pro řešení problému algoritmického hledání těchto proměnných zatím neexistuje žádný algoritmus, proto se pro tento výběr používá empirická znalost o problému [8]. Posledním procesem při zpracování dat je klasifikace dat. Zde už dochází k finálnímu rozdělování množiny objektů, jevů nebo procesů do konečného počtu kategorií, kde jednotlivé prvky výsledných kategorií mají podobné vlastnosti. Klasifikaci dat se provádí pomocí klasifikátoru, kde je na vstup přiveden klasifikovaný objekt x. Tento objekt se na základě rozhodovacího pravidla klasifikátoru d(x) převádí na výsledné klasifikační třídy ωr, kde r je identifikátor klasifikační třídy [8]. Obecně je možné chápat klasifikaci jako učení s učitelem. Základní algoritmy klasifikace jsou následující [4]: rozhodovací stromy, k-nejbližších sousedů, lineární regrese, Bayesův klasifikátor, neuronové sítě, SVM (algoritmus podpůrných vektorů). Jedním z nejúčinnějších algoritmů pro detekci spamu na základě analýzy slov je Bayesův klasifikátor [9]. Schopnosti tohoto algoritmu mohou být využity i v případě analýzy odkazů, kde se každý odkaz skládá z množiny slov stejně jako při analýze ových zpráv [4]. Z tohoto důvodu a z důvodu jednoduchosti implementace se Bayesův klasifikátor jeví jako vhodný pro problém klasifikace webových odkazů Bayesův klasifikátor Bayesův klasifikátor funguje na principu teorie pravděpodobnosti, konkrétně slouží k výpočtu aposteriorní (podmíněné) pravděpodobnosti. Základním stavebním kamenem tohoto klasifikátoru je Bayesův teorém, který představuje matematický model klasifikátoru. Na základě tohoto matematického modelu dochází k zpřesňování původní hypotézy, což způsobuje odkrývání nových skutečností. Prakticky jsou nejprve jednotlivým jevům přirazeny určité apriorní (počáteční) pravděpodobnosti. Následně je pomocí Bayesova teorému spočítána výsledná aposteriorní (podmíněná) pravděpodobnost. Bayesův klasifikátor se běžně používá pro řešení mnoha různých problémů, kde použití jiných technik selhává (detekce spamu). Základní vzorec, který je nazýván Bayesův teorém, má následující tvar [8]:

20 Analýza současného stavu 20 = Bayesův teorém slouží k výpočtu podmíněné pravděpodobnosti jevu A za předpokladu, že nastal jev B. K tomu využívá P(A) a P(B), což jsou apriorní (počáteční) pravděpodobnosti jevů A a B. Dále je zde použit výraz P(B A), což je aposteriorní (podmíněná) pravděpodobnost jevu B za předpokladu, že nastal jev A [8]. Bayesův klasifikátor lze na základě výsledné podmíněné pravděpodobnosti použít pro zařazení vstupních dat do určité třídy. Tato klasifikace využívá tzv. mezní hodnotu, po jejíž překročení jsou vstupní data klasifikována do první třídy, jinak jsou klasifikována do druhé třídy. Jelikož se Bayesův klasifikátor běžně využívá pro klasifikaci textu, bude jej možné také použít pro klasifikaci webových odkazů [4]. 2.3 Dolování obsahu webových stránek Jak bylo zmíněno v kapitole 2.1, web content mining se používá pro dolování obsahu webových stránek. Jelikož jsou webové stránky běžně strukturované pomocí HTML značek, pro získávání obsahu se mluví jako o extrakci strukturovaných dat z webových stránek. Pro extrakci strukturovaných dat z webových stránek se používají tři různé přístupy [4]: manuální extrakce, poloautomatická extrakce, automatická extrakce. Rozdíl mezi těmito přístupy je v množství práce, kterou musí programátor vykonat, než bude možné extrahovat další webovou stránku. Manuální extrakce vyžaduje největší zapojení programátora, protože ten musí pro každou novou stránku vytvořit manuálně šablonu, pomocí které bude extrakce probíhat. Poloautomatická extrakce vyžaduje vytvoření označených trénovacích dat, pomocí nichž proběhne učení klasifikátoru. Aby byly výsledky co nejlepší, je potřeba mít dostatečný počet označených dat, která budou pokrývat co nejvíce možných typů vzorů ve stránkách. Nejpokročilejší a zároveň nejsložitější na vytvoření je automatická extrakce. Zde se jedná o učení bez učitele, neboť extrakční program nedostane žádná označená data a natrénovat se musí sám na neoznačených datech. Z tohoto důvodu je potřeba mít velké množství reálných dat, na kterých proběhne učení extrakčního algoritmu. V opačném případě může jednoduše dojít k špatnému naučení algoritmu, což nutně vede ke špatné extrakci [4]. Pro vytvoření extrakční šablony tak, aby byla zajištěna její opětovná použitelnost, je možné použít algoritmus extrakce datových záznamů [5].

21 Analýza současného stavu Algoritmus extrakce datových záznamů Webová stránka je chápána jako množina kořenových (root-to-link) cest v DOM stromu (stromu objektového modelu dokumentu) [11]. Pro tento strom se používá označení schéma stránky [12]. V této struktuře je potřeba hledat množinu podobných struktur, které jsou vloženy pod jeden rodičovský uzel a vytváří zde podstromy. Těmto strukturám se říká datové záznamy. Ty je možné chápat jako podmnožiny DOM stromu, které mají obecně několik společných strukturálních vlastností, a to [13]: stejný rodičovský uzel, stejný počet poduzlů (child nodes), jsou vždy sousední. Důležité je zjištění, že datové záznamy jsou většinou formátovány stejnými HTML tagy [13]. Zároveň mají odkazy vedoucí na stránky s podobnými datovými záznamy také podobný tvar [10]. Obr. 4 Schéma stránky s dvěma podobnými datovými záznamy (zdroj: [13]) Předchozí zjištění umožňuje jednotlivé podstromy uspořádat do tříd podle struktury a vytvořit algoritmus, který bude umět hledat datové záznamy na základě jejich struktury na jakékoliv stránce.

22 Analýza současného stavu 22 Obr. 5 Jedna z možných konfigurací datových záznamů (zdroj: [13]) Algoritmus extrakce datových záznamů je možné definovat následovně. Nejprve jsou na stránce nalezeni všichni kandidáti, kteří mohou odpovídat naučenému datovému záznamu. V druhém kroku probíhá porovnávání vnitřních struktur podstromů takto nalezených kandidátů s vnitřní strukturou naučeného datového záznamu. Pokud dojde ke shodě vnitřních struktur, je možné kandidáta prohlásit za nově nalezený datový záznam. Tento algoritmus hledání datových záznamů je i pro rozsáhlé webové stránky rychlejší než analýza souvislostí mezi jednotlivými textovými řetězci [10].

23 Metodika řešení 23 3 Metodika řešení Jelikož hlavním cílem této práce je vytvoření funkční aplikace, musí metodika práce toto reflektovat. Každá aplikace si musí projít několika fázemi životního cyklu. Těmito fázemi jsou [14]: specifikace problému, analýza a návrh aplikace, implementace aplikace, testování, provoz a údržba. Fáze specifikace problému představuje většinou slovní popis funkce aplikace. Další fází je analýza a návrh aplikace. Tyto fáze jsou většinou propojené, protože během analýzy dochází i k hrubému návrhu aplikace. Cílem těchto fází je dekompozice problému na jednotlivé podproblémy a návrh řešení jednotlivých podproblémů. Poté následuje fáze implementace aplikace, kdy je za použití zvolených programovacího jazyků a nástrojů aplikace programována. Součástí této fáze by mělo být i pravidelné testování, protože se tím může zamezit pozdějším nepříjemnostem. Nakonec po provedení celkového testování aplikace dochází k uvedení aplikace do provozu. Nyní už programátor provádí pouze údržbu aplikace, a to až do konce životního cyklu aplikace [14]. Jelikož fáze specifikace problému představuje pouze slovní popis celé aplikace, budou nyní rozebrány metodické postupy pro následující fáze životního cyklu aplikace. 3.1 Analýza a návrh aplikace Jak bylo zmíněno výše, cílem analýzy je dekompozice aplikace na jednotlivé podproblémy. K této dekompozici se používají dva přístupy [14]: strukturovaná analýza, objektová analýza. Pro zpracování analýzy v této práci byla zvolena objektová analýza, protože umožňuje k modelování využít vizuální modelovací jazyk UML (Unified Modeling Language) [14]. V objektovém přístupu k analýze aplikace dochází k dekompozici aplikace na jednotlivé objekty. Objekt je zde chápán jako model určité části reálného světa. Uchovává v sobě atributy, které představují důležité vlastnosti reálného vzoru. K těmto vlastnostem se přistupuje pomocí metod aktuálního objektu nebo metod jiného objektu. Jelikož objekt představuje model reálně existující části světa, používá se pro obecný popis objektu třída. Z tohoto důvodu představuje třída tzv. předpis, který definuje, jak má objekt vypadat a jakou má mít strukturu [14]. Jelikož dekompozice aplikace na jednotlivé objekty lze provést mnoha

24 Metodika řešení 24 různými způsoby, které mohou ovlivnit budoucí znovu použitelnost částí aplikace, využívá se proto tzv. návrhových vzorů [15]. Návrhové vzory jsou postupy, které řeší často se opakující problémy ve fázi návrhu aplikace. Tyto postupy představují optimální, praxí ověřené řešení různých problémů. Existuje mnoho různých druhů návrhových vzorů, každý je určen pro řešení jiného typu problému. Z tohoto důvodu bývají návrhové vzory rozděleny do skupin podle typu problému, který řeší. Těmito skupinami jsou návrhové vzory [15]: týkající se tvorby objektů (tvořivé vzory), zabývající se kompozicí různých objektů (strukturální vzory), zabývající se interakcí různých objektů (vzory chování). Skupina tvořivých vzorů obsahuje návrhové vzory, které se zabývají vytvářením instancí objektů. Konkrétně se jedná o omezení používání operátoru new. Tento operátor se používá v mnoha programovacích jazycích pro tvorbu nového objektu a jeho omezeným používáním lze získat kontrolu nad tvorbou nových objektů. Oproti tomu skupina strukturálních vzorů obsahuje návrhové vzory, které umožňují spojovat objekty do větších struktur. Výhodou těchto vzorů je, že není nutné měnit původní objekty. V poslední skupině se nachází návrhové vzory, které se zabývají interakcí a chováním mezi jednotlivými objekty. V podstatě se tato skupina zabývá metodami, kterými mezi sebou objekty a struktury objektů komunikují [15]. Návrhové vzory úzce souvisí s jazykem UML. Konkrétně se tento jazyk používá pro popis jednotlivých vzorů pomocí diagramu tříd [15]. Jazyk UML používá i další modely, které usnadňují analýzu a návrh aplikace. Jedná se o diagram případů použití (use-case diagram), stavový diagram, diagram objektů, diagram spolupráce, diagram sekvencí, diagram činností, diagram komponent a diagram nasazení [14]. Každý z diagramů představuje jiný pohled na řešený problém. V této práci budou nejčastěji používány diagramy případů užití a diagramy tříd. Diagram případů užití představuje pohled na systém z hlediska uživatelů systému a toho, co mohou uživatelé se systémem dělat. Jednotlivými prvky diagramu jsou aktéři a případy užití. Aktéři jsou skupiny uživatelů, které mohou se systémem pracovat. Případy užití představují funkcionalitu systému, kterou mohou aktéři provádět. Aktéři a případy užití jsou propojeny pomocí relací (vazeb), čímž je definováno, který aktér může s daným případem užití pracovat. Druhým typem diagramu používaný v této práci je diagram tříd. Tento diagram představuje statický pohled na systém, skládající se z jednotlivých tříd a vazeb mezi nimi [14]. Pro usnadnění vytváření UML diagramů bude v této práci využit modelovací nástroj Microsoft Visio 2013, který umožňuje jednoduchou tvorbu různých diagramů [16].

25 Metodika řešení Implementace aplikace Pro implementaci aplikace je potřeba zvolit vhodné technologie, pomocí kterých bude celý systém vytvořen. Jelikož tato aplikace musí být dostupná velkému množství uživatelů, nejlepší volbou bude vytvořit celý systém jako webovou aplikaci. Tato webová aplikace může být vytvořena za použití mnoha různých technologií, avšak každá má jiné požadavky na webový server, na kterém může být spuštěna. Pokud mají být minimalizovány náklady na provoz aplikace, je možná pouze jediná volba. Tou volbou je webový server Apache, který běží na mnoha portálech společností poskytujících hosting webových stránek. Tyto společnosti většinou umožňují použití pouze jediného programovacího jazyku pro hosting zdarma. Tímto programovacím jazykem je PHP a k němu bývá dostupný databázový server MySQL [17]. Příkladem takové společnosti poskytující hosting zdarma je Hostinger [18]. Na skriptovacím jazyku PHP jsou založené PHP frameworky, což jsou softwarové struktury, které usnadňují proces tvorby aplikace. Usnadnění je dosaženo tím, že framework obsahuje jednoduché programovací rozhraní (API), které umožňuje jednoduše řešit časté problémy při tvorbě aplikace. Všechny frameworky jsou vytvořeny na základě návrhových vzorů a doslova nutí programátora, aby psal znovupoužitelný kód [19]. Asi celosvětově nejpopulárnější ze všech PHP frameworků je Zend Framework 2 [20]. V této práci však bude využit Nette Framework, protože je to moderní framework, který v českém prostředí patří mezi nejpoužívanější a nejpopulárnější [21] Nette Framework Autorem Nette Frameworku je David Grudl, který tento framework uvolnil v roce 2004 jako open source. O vývoj frameworku se stará autorem založená společnost Nette Foundation, která na začátku roku 2014 uvolnila framework ve verzi Framework je založen na softwarové architektuře MVC (Model View Controller). Architektura MVC [22] odděluje kód aplikační logiky (model) od kódu zobrazující data (view) a od kódu obsluhy (controller). Jde tedy o oddělení do tří logických částí. V Nette je pro Controller použit název Presenter, protože na základě příchozího požadavku (akce) presentuje HTML stránku. Tím je zpřehledněn kód celé aplikace, což zjednodušuje vývoj a testování jednotlivých částí aplikace [21]. Existují tři druhy vazeb mezi jednotlivými komponentami architektury MVC. Konkrétně obsahuje Controller vazbu na Model, aby mohl upravovat data Modelu. Dále View má vazbu na Model. Třetí vazba mezi View a Controllerem se používá pouze u některých typů architektur, a to jednosměrná nebo obousměrná. Důležitou vlastností MVC architektury je, že Model nikdy neobsahuje vazbu na View nebo Controller. Další významnou vlastností Modelu je, že neslouží pouze pro práci s databází. Může být použit pro mnoho různých datových zdrojů, kde databáze je pouze jedním z mnoha. Příkladem dalších takových zdrojů je RSS, textové soubory, webové služby a další [22].

26 Metodika řešení 26 Nette Framework má v sobě integrováno mnoho technologií, které usnadňují programátorovi práci. Příkladem jsou propracované ladící nástroje, které se starají o kompletní diagnostiku aplikace, automatické zabezpečení ošetřující výskyt bezpečnostních děr, propracovaná tvorba a ošetření formulářů, podpora šablon, znovu použitelnost logických částí aplikace na základě pluginů a další podpora mnoha různých moderních technologií. Jelikož Nette provádí některé procesy už na straně klienta, k jejich zjednodušení využívá javascriptový framework jquery [21] jquery jquery je malá, rychlá a volně dostupná javascriptová knihovna [23]. Funguje ve všech běžně používaných webových prohlížečích. Slouží ke zjednodušení práce s objektovým modelem dokumentu [11], umožňuje zpracování událostí, manipulaci s kaskádovými styly (CSS), animace, podporuje pluginy a zjednodušuje implementaci technologie AJAX (Asynchronous JavaScript and XML) [24]. To vše je dostupné díky jednoduše použitelnému programovacímu rozhraní. Knihovnu jquery poprvé veřejnosti představil John Resig v roce 2006 a od té doby se stala knihovna velmi známou a podporovanou mnoha známými společnostmi jako WordPress, Intel, Microsoft a dalšími [23] AJAX Webové aplikace postavené na bezstavovém protokolu HTTP mají několik závažných nedostatků. Pro změnu stavových proměnných je vždy potřeba načíst další stránku. Zároveň je zde problém s přenosem stavových proměnných. Tyto dva velmi omezující nedostatky vedly ke vzniku technologie AJAX (Asynchronous JavaScript and XML). Technologie AJAX umožňuje tvorbu dynamických aplikací, které interaktivně reagují na uživatelovy požadavky. K tomu je využívána kombinace technologií HTML, XHTML, XML, CSS a JavaScript [24]. Nejdůležitější částí technologie AJAX je JavaScript. Pomocí něj se provádí asynchronní komunikace s webovým serverem a pomocí něj dochází k manipulaci s HTML a CSS objektového modelu dokumentu (DOM). Tímto způsobem dojde ke změně webové stránky, aniž by ji bylo potřeba znova načíst. Pro komunikaci webového prohlížeče s webovým serverem se používá objekt XMLHttpRequest. Pomocí tohoto objektu dochází k asynchronnímu přenosu XML formátovaných bloků. K přenosu se však nemusí používat vždy XML, je možné použít mnoho dalších formátů jako prostý text, HTML kód nebo JSON [24]. Technologie AJAX má jako každá technologie určité výhody i nevýhody. Hlavní výhodou je výrazné urychlení běhu webové aplikace. Toho je dosaženo tím, že stránku není potřeba po akci uživatele načítat celou. Vždy se odesílá jen určitý blok stránky, ve kterém došlo ke změně. Zároveň tak dochází ke snížení množství dat, které jsou mezi klientem a serverem přeneseny. Hlavní nevýhodou použití technologie AJAX je, že protokol HTTP není stavěn na velký provoz mezi klientem a serverem. Proto je třeba při každém požadavku klienta na ser-

27 Metodika řešení 27 ver vždy navazovat nové spojení. Další nevýhodou je, že komunikaci navazuje vždy webový klient. Tato nevýhoda se nejvíce projeví v aplikacích, kdy klient potřebuje být upozorňován na změny na serveru. Z tohoto důvodu, se klient musí periodicky dotazovat na stav serveru, i když ke změně stavu nedošlo [24] Cron Jelikož je PHP skriptovací jazyk, skripty tohoto jazyka neběží na serveru stále. Pouze pokud uživatelův webový prohlížeč odešle požadavek na HTML kód stránky, dojde ke spuštění PHP skriptu, který HTML kód stránky generuje. Po vygenerování kódu stránky dojde k ukončení běhu skriptu. V PHP je zároveň defaultně omezena maximální doba běhu skriptu na 30 sekund, aby nebyl zbytečně přetěžován webový server [17]. Z tohoto důvodu je potřeba některé skripty spouštět opakovaně, než je dosaženo např. extrakce všech dostupných aukčních výsledků na portálu s aukčními výsledky. K opakovanému spouštění PHP skriptů se využívá linuxový softwarový démon Cron [25]. Jedná se o softwarovou službu, která je spuštěna po startu počítače a běží na pozadí neustále. Uživatel může za pomoci konfiguračního souboru crontab definovat, jak často se má provádět určitá akce. Příkladem takové akce může být i spuštění PHP skriptu pomocí PHP interpreteru operačního systému. Proces Cron kontroluje soubor crontab každou minutu a spouští všechny příkazy, jejichž záznam odpovídá aktuálnímu času. Každý záznam v konfiguračním souboru crontab se nachází na jednom řádku a má následující formát [26]: <minuty> <hodiny> <den v měsící> <měsíc> <den v týdnu> <příkaz> Tagy ve špičatých závorkách představují proměnné, za které jsou dosazovány různé hodnoty. Například tag <minuty> může být nahrazen číselnou hodnotou v rozmezí Tato hodnota udává, kolikátou minutu v hodině se bude příkaz spouštět. Další možností je místo číselné hodnoty použít znak hvězdičky, který v tomto případě znamená spouštění příkazu každou minutu v hodině. U ostatních tagů je situace podobná, jenom rozmezí čísel je jiné. Pouze tag <příkaz> musí obsahovat cestu k spustitelnému souboru nebo PHP interpreteru [26] MySQL Aby bylo možné data aplikace ukládat, je pro to třeba nejprve zvolit vhodný nástroj. Ideálním řešením se jeví využití databázového systému MySQL [17]. Jak už bylo popsáno na začátku této kapitoly, MySQL bylo zvoleno, protože je dostupné na mnoha serverech hostingových společností zdarma. Zároveň se jedná o nástroj, který umožňuje běh nejen jednoduchých, ale i profesionálních aplikací [17]. K vizualizaci struktury databáze a znázornění propojení mezi jednotlivými tabulkami bude potřeba využívat nějaký program, který tuto činnost maximálně

28 Metodika řešení 28 zjednoduší. K tomuto účelu lze použít modelovací program MySQL Workbench [27]. Tento program umožňuje vizuálně navrhovat, modelovat, generovat a spravovat databáze pro databázový systém MySQL. Kromě těchto činností zvládá vytváření, spouštění a optimalizaci SQL dotazů. Výsledné diagramy je možné exportovat do mnoha různých formátů nebo z nich automaticky vygenerovat SQL CREATE skripty [27]. Z tohoto důvodu se program jeví jako ideální kandidát pro modelování celé struktury databáze.

29 Analýza a návrh aplikace 29 4 Analýza a návrh aplikace Před započetím fáze analýzy a návrhu aplikace je potřeba nejprve projít fází specifikace problému [14]. Jelikož byl cíl práce už specifikován, bude se fáze specifikace problému zabývat jeho podrobnějším rozborem. 4.1 Specifikace problému Cílem práce je vytvořit aplikaci, která bude svým uživatelům poskytovat podporu pro rozhodování o nákupu nebo o době vhodného prodeje na sálových aukcích aukčních společností. Podporou pro rozhodování je myšleno nabídnutí relevantních historických aukčních výsledků pro zadaný dotaz. Toho bude dosaženo automatizovanou extrakcí dat z webových stránek s aukčními výsledky. K tomuto účelu bude aplikace využívat extrakčního robota, který se, po základním nastavení pro webovou stránku dané aukční společnosti, o extrakci už sám postará. Proces přidání nového webu pro extrakci bude probíhat následovně. Nejprve administrátor do aplikace zadá úvodní URL adresu stránky, na které se nacházejí odkazy na jednotlivé aukční výsledky. Poté bude probíhat tvorba extrakční šablony, na základě které bude moci robot obsah stránky správně interpretovat. K tomuto účelu bude možné využít algoritmus automatické extrakce datových záznamů [5][10][12][13], díky čemuž se proces tvorby šablony výrazně zjednoduší. Po označení jednoho bloku s aukčním výsledkem si už robot sám dohledá všechny ostatní. Díky tomu bude definice šablon dost obecná na to, aby extrakce fungovala co nejlépe a zaručila určitou schopnost správné extrakce i po menší změně struktury webových stránek. Robot bude muset také umět automatizovaně extrahovat měny a časové údaje, případně je převést do standardního formátu. Aby byl robot schopný extrahovat všechny aukční výsledky, bude muset automatizovaně procházet odkazy nacházející se na webových stránkách. Z toho plyne, že si bude muset pamatovat navštívené odkazy a bude muset být schopen rozlišovat mezi odkazy, které vedou na stránky s aukcemi a které na ně nevedou. Pro automatickou funkčnost celé extrakce bude nutné vytvořit alespoň jednoduchý plánovač, který bude činnost robota řídit. Extrakční robot musí být funkční nezávisle na zbytku aplikace, aby byla zajištěna možnost provozu extrakčního robota na jiném serveru, než bude zbytek aplikace. Z tohoto důvodu bude celá aplikace rozdělena na dvě části. První částí bude dříve popsaný extrakční robot. Druhá část aplikace bude prezentovat extrahovaná data uživateli. Tato část bude představovat vyhledávač, kde po zadání údajů o hledané položce budou nalezeny co nejrelevantnější informace o historických aukčních výsledcích z různých webů aukčních společností. Díky těmto informacím bude aplikace uživateli poskytovat podporu pro rozhodování o správném nákupu nebo o vhodné době prodeje na sálové aukci.

30 Analýza a návrh aplikace Analýza a návrh extrakčního robota Jak bylo popsáno ve fázi specifikace problému, aplikace bude rozdělena na dvě části. První částí je extrakční robot, který se bude starat o extrakci dat z webových stránek různých aukčních společností. Pro analýzu této části je potřeba identifikovat, jak jednotlivé entity interagují se systémem. K tomuto účelu je nejvhodnější použít diagram případů užití [14]. Tento diagram obsahuje dva aktéry, kde první představuje administrátora aplikace a druhý představuje časové spouštění souboru pomocí linuxového softwarového démona Crona [25]. Po přihlášení do administrátorského rozhraní aplikace může administrátor zobrazovat logovací soubor robota, naplánované akce a vytvářet extrakční šablony pro webové stránky. Cron provádí pouze časové spouštění plánovače, což má za následek vygenerování nové akce nebo sekvence akcí a následné provedení poslední akce s nejvyšší prioritou. Obr. 6 Diagram případu užití extrakčního robota Jelikož je základní funkčností extrakčního robota extrakce dat z webových stránek, bude v následujících odstavcích podrobněji rozebrán proces extrakce. První fází extrakce je tvorba extrakční šablony, na základě které bude možné extrakci provést Proces tvorby extrakční šablony Extrakční šablonu lze vytvářet různými způsoby. Jelikož nastavení extrakčního robota nemá vyžadovat informatické znalosti, musí tvorba šablony probíhat in-

31 Analýza a návrh aplikace 31 teraktivně. První možností je využití kurzoru myši pro označování jednotlivých prvků stránky. Tento postup je zbytečně složitý a zdlouhavý, protože nutí administrátora aplikace k postupnému označování jednotlivých prvků stránky. Tento přístup má další nevýhodu. Pokud nějaký prvek stránky nebude označen, nebude také extrahován. Z tohoto důvodu se jeví jako mnohem lepší využít algoritmus extrakce datových záznamů [5][10][12][13]. Na základě této techniky bude stačit, pokud uživatel označí jeden blok stránky a jednotlivé prvky v něm. O zbytek už se postará extrakční robot, který dohledá všechny ostatní bloky stránky, přičemž nebude záležet, jaké má webová stránka uspořádání, případně kolik bloků celkem je Proces extrakce Po vytvoření extrakční šablony může začít proces extrakce. Tento proces funguje následujícím způsobem. Extrakční robot začíná na stránce, kterou zadal administrátor jako výchozí URL adresu pro daný web. Na této stránce se nachází seznam odkazů na stránky s aukčními výsledky. Robot musí být schopen rozpoznat, který odkaz vede na stránku s aukčními výsledky a který naopak ne (na Obr. 7 zelené a červené čáry). K tomu může být použit Bayesův klasifikátor [4][8], který provede analýzu slov v odkazu a na základě podmíněné pravděpodobnosti určí míru relevance odkazu. Poté už stačí, aby robot z množiny odkazů směřujících na aukční výsledky vybral jeden ještě nezpracovaný a načetl webovou stránku nacházející se za ním. Obr. 7 Proces extrakce Na základě dříve vytvořené extrakční šablony už robot sám pozná, zda se na stránce nachází nějaké aukční výsledky. Pokud se na stránce aukční výsledky

32 Analýza a návrh aplikace 32 nebudou nacházet, předpokládá se, že se robot nachází na tzv. přehledu aukce. Tento přehled většinou představuje rozcestník pro návštěvníka webu a slouží k zjednodušení navigace mezi jednotlivými částmi aukce (zlato, středověk, novověk, ). Robot proto analyzuje všechny odkazy na webové stránce a pokusí se najít odkaz na první stranu aukce. Poté načte stránku nacházející se za tímto odkazem a za pomoci extrakční šablony ji extrahuje. Proces dále pokračuje procházením jednotlivých stránek s aukčními výsledky. Cílem je, aby extrakční robot postupně prošel všechny stránky a následně je extrahoval. Proces končí, když robot navštíví všechny odkazy, tudíž už nezbývá žádný, který by na stránku s aukčním výsledkem vedl. Posledním krokem je uložení všech výsledků do databáze. Během extrakce samozřejmě musí docházet k automatickému rozpoznávání měn, časových údajů a k jejich převodu do standardního formátu Proces standardizace měn a časových údajů Aby byl robot schopen provádět korektní extrakci dat z různých webových stránek, které používají různé formáty pro měny a časové údaje, musí obsahovat funkce pro automatické rozpoznávání a standardizace těchto dat. Robot nebude schopen rozpoznávat, na jakém místě webové stránky se nachází měna nebo časový údaj ke standardizaci. K tomuto účelu bude robot používat extrakční šablonu. Každé pole extrakční šablony bude mít nastaveno, zda se má kromě extrakce provádět i standardizace dat. Z tohoto důvodu se bude např. pole extrahující datum aukce snažit toto datum extrahovat a následně i standardizovat do formátu, který umožní jeho uložení do databáze. To stejné bude platit o polích s vyvolávací a konečnou cenou předmětu. Zde se robot bude snažit provést extrakci a standardizaci měn. Standardizace bude v obou případech zjednodušena pomocí regulárních výrazů [28]. Regulární výrazy představují druh textového vzoru, který lze využít pro vyhledání a filtrování dat. Vzory jsou definovány pomocí obecné notace, díky čemuž je zaručena jejich budoucí znovupoužitelnost. Existuje několik různých formátů zápisu regulárních výrazů, všechny ale vychází ze syntaxe jazyka Perl. V PHP se pro zápis regulárních výrazů používá formát PCRE (Perl-Compatible Regular Expressions), což je knihovna regulárních výrazů napsaná v jazyce C a kompatibilní s jazykem Perl. Regulární výrazy nemusí být použity pouze pro hledání a filtrování dat, lze je použít i pro dynamické nahrazování textů. Jedná se o opětovné použití částí textu, které odpovídají danému vzoru v regulárním výrazu [28]. Tímto způsobem lze standardizaci měn a časových údajů zjednodušit Automatizace extrakčního robota Extrakční robot musí obsahovat alespoň jednoduchý plánovač, který zajistí automatizované provádění akcí. O periodické spouštění plánovače se postará linuxový démon Cron [25]. Na základě provedení PHP skriptu dojde ke spuštění plánovače, který se už postará o provedení příslušné akce. Pokud nebude žádná akce dostupná, plánovač vygeneruje novou akci nebo více nových akcí a spustí

33 Analýza a návrh aplikace 33 jednu z akcí. Z tohoto vyplývá, že každé spuštění PHP skriptu se bude rovnat provedení jedné akce extrakčního robota. Akce představují činnosti, které bude moci webový robot provádět. Ty budou dvojího typu. Pokud databáze plánovače nebude obsahovat žádnou akci, vygeneruje plánovač akci získání všech platných odkazů na jednotlivé aukční výsledky na jedné webové stránce. Po provedení této akce se v databázi plánovače vytvoří množina akcí, které budou představovat extrakce jednotlivých aukčních výsledků. Po provedení akce extrakce dojde k extrakci dat jedné webové stránky s aukčními výsledky. Součástí extrakce bude i uložení extrahovaných dat do databáze, která bude moci být na jiném serveru než extrakční robot Diagram tříd extrakčního robota Po prozkoumání jednotlivých procesů, ke kterým bude v extrakčním robotovi docházet, lze přejít k tvorbě diagramu tříd robota. Tento diagram obsahuje jednotlivé třídy, rozhraní a vztahy mezi nimi. Vše je zatím bez atributů a metod jednotlivých tříd. Takto zjednodušený diagram tříd je přehlednější. Diagram tříd extrakčního robota je znázorněn na Obr. 8. Základním prvkem diagramu je třída Robot, která představuje extrakčního robota provádějícího extrakci. Tato třída využívá pro různé účely další bloky tříd, které jsou v diagramu označeny jako zelené obdélníky. Mezi tyto bloky tříd patří Debugger, Exceptions, Database, Extractor a Scheduler. První blok Debugger je blok tříd sloužících k výpisu a logování informací o stavu a chybách, ke kterým došlo během činnosti robota. Dalším blokem je Exceptions. Tento blok představuje výjimky, které jsou vyhazovány, pokud dojde při běhu extrakčního robota k chybě. Extrakci robot provádí pomocí třídy Extractor. Tato třída se stará o stahování webových stránek a jejich další zpracování. Ke zpracování stránky používá třída Extractor třídu Template, což je extrakční šablona. Na základě použití extrakční šablony na webovou stránku dojde k extrakci dat a jejich uložení do třídy PageData. Poté může dojít extrakci odkazů z webové stránky. K účelu uložení extrahovaných odkazů se používá pomocná třída Link. Po extrakci dat z webové stránky může dojít k jejich uložení do databáze. K tomuto účelu aplikace používá blok tříd Database. V tomto bloku se nachází dvě možnosti, jak se připojit ke vzdálené databázi. K uložení do databáze na stejném serveru, kde probíhá extrakce, se používá třída DB. Pokud databáze neumožňuje připojení pomocí předchozí třídy, lze využít třídu RemoteDB. Aby mohl extrakční robot provádět svou činnost automatizovaně, provádí jeho řízení třída Scheduler. Tato třída představuje plánovač, která se stará o vytváření a zpracovávání akcí, které následně robot vykonává.

34 Analýza a návrh aplikace 34 Obr. 8 Diagram tříd extrakčního robota Diagram také obsahuje čtyři další třídy, které se nenacházejí v žádném bloku. Těmito třídami jsou HTML, User, Factory a BayesFilter. Třída HTML slouží ke generování HTML kódu stránek. Třída User se stará o správu uživatelů extrakč-

35 Analýza a návrh aplikace 35 ního robota a přihlašování do administrace. Dále třída Factory se používá pro jednoduché vytváření instancí objektů tříd a jejich zpřístupňování dalším třídám. Nakonec třída BayesFilter implementuje Bayesův filtr pro analýzu webových odkazů Schéma databáze extrakčního robota Schéma databáze extrakčního robota je znázorněno na Obr. 9 a má celkově sedm tabulek. Pro přihlášení uživatelů do administrace extrakčního robota slouží tabulka user. Přístup do administrace nebude umožněn všem uživatelům, pro přihlášení musí daný uživatel patřit do skupiny administrátorů. Tabulka uživatelů má stejný tvar jako tabulka user vyhledávače. To je z důvodu kompatibility, aby bylo možné používat obě části databáze v jedné na jednom databázovém serveru. Obr. 9 Schéma databáze extrakčního robota Databáze dále obsahuje tabulky bayesfilterdata a bayesfilter. Tyto tabulky slouží k ukládání Bayesových filtrů [4][8] a označených dat, které se dále používají pro klasifikaci do různých tříd. Pro označování dat na pozitivní a negativní příklady se používá atribut tag tabulky bayesfilterdata. Důležitou částí databáze jsou tři tabulky, které se starají o ukládání extrakčních šablon. Těmito tabulkami je auction_list, template a base_path. Jak bylo zmíněno v předchozích kapitolách, šablona se skládá z cest objektového modelu dokumentu. Prakticky slouží tabulka template k ukládání relativních XPath cest a tabulka base_path slouží k ukládání absolutních XPath cest od kořenového elementu dokumentu. Aktualizací dat v tabulce base_path lze umož-

36 Analýza a návrh aplikace 36 nit funkčnost extrakce i při změně struktury webových stránek. Poslední z trojice tabulek auction_list slouží k uchovávání počátečních URL adres, na kterých se má extrakce provádět. Poslední tabulkou v databázi extrakčního robota je scheduler_action. Tato tabulka slouží k ukládání akcí, které vygeneroval plánovač extrakčního robota. U každé akce se ukládá typ akce, priorita a příznak provedení akce. Příznakem provedení je zaručeno, že se žádná akce neprovede vícekrát a nedojde k vícenásobné extrakci. Tvar jednotlivých akcí a způsob jejich použití bude vysvětlen později. Nyní bude rozebrána druhá část aplikace, a to vyhledávač. 4.3 Analýza a návrh vyhledávače Stejně jako extrakční robot, musí mít i vyhledávač svůj diagram případů užití. Tento diagram bude obsahovat aktéry a činnosti, které budou moci v aplikaci provádět. Obr. 10 Diagram případů užití vyhledávače Vyhledávač bude mít tři typy aktérů (neregistrovaného uživatele, registrovaného uživatele a administrátora). Nejméně činností bude moci provádět neregistro-

37 Analýza a návrh aplikace 37 vaný uživatel. Jemu bude umožněno pouze vyhledávat s omezením na maximálně deset možných výsledků. Pokud se neregistrovaný uživatel v aplikaci zaregistruje, vznikne aktér registrovaný uživatel. Registrace nového uživatele bude podmíněna systémem registračních pozvánek, což umožní kontrolu nad tím, kdo bude moci používat pokročilé funkce aplikace. Aktér registrovaný uživatel bude moci vyhledávat bez omezení a zároveň bude mít dostupné pokročilé vyhledávání. Registrovaný uživatel bude dále moci prohlížet jednotlivé aukce a aukční výsledky nebo provádět nastavení svého účtu. Také si bude moci nalezené aukční položky přidávat mezi své oblíbené. Vše bude samozřejmě podmíněno přihlášením do aplikace. Pokud by se náhodou uživateli stalo, že zapomene heslo, bude si ho moci resetovat. V tomto případě bude uživateli odesláno nové náhodně vygenerované heslo na . Tímto způsobem bude odbourána nutnost akce administrátora aplikace při ztrátě hesla uživatele. Nejvyšší práva bude mít administrátor aplikace. Tento aktér bude moci provádět stejné činnosti jako registrovaný uživatel. Zároveň bude moci spravovat jednotlivé uživatele, zobrazovat historii vyhledávání, zobrazovat systémové logy a generovat pozvánky pro registraci do aplikace Proces registrace Životní cyklus registrovaného uživatele začíná registrací do aplikace. Jelikož aplikace nebude podporovat běžnou registraci, jedinou možností, jak se z neregistrovaného uživatele stane uživatel registrovaný, je registrace prostřednictvím systému registračních pozvánek. Tímto omezením bude zaručeno, že pokročilé funkce budou dostupné pouze administrátorem vybraným uživatelům. Pokud se administrátor přihlásí do aplikace, bude mít v administrátorské části možnost správy registračních pozvánek. Touto pozvánkou je myšlena speciální URL adresa s unikátně vygenerovaným klíčem. Pokud neregistrovaný uživatel použije tuto URL adresu, bude mít možnost vytvořit nový uživatelský účet. Tento proces bude možné v průběhu ukončit bez ztráty platnosti pozvánky. Pouze pokud neregistrovaný uživatel správně vyplní všechna požadovaná pole, dojde k zneplatnění pozvánky, vytvoření uživatelského účtu a přihlášení do aplikace Proces vyhledávání Pokud se uživatel přihlásí do aplikace, bude mít dostupnou možnost vyhledávání v aukčních výsledcích. Vyhledávání bude obsahovat dvě pole. První pro vyhledávání v názvu a druhé v období aukčních položek. Tento způsob byl vybrán, protože uživatelům umožňuje jednodušeji tvořit vyhledávací dotazy, které umožní filtrování zobrazených výsledků. Při použití jednoho vyhledávacího pole by muselo být využito nějaké rozlišení mezi hledáním v názvu a v období aukční položky, které by uživatelé museli znát a používat. Z tohoto důvodu je vyhledávání pomocí dvou vyhledávacích polí pro uživatele mnohem intuitivnější.

38 Analýza a návrh aplikace 38 Vyhledávání musí uživateli také nabídnout možnost využití pokročilých funkcí. Základem je filtrování podle jednotlivých aukcí, řazení od nejnižší nebo nejvyšší dosažené konečné ceny, řazení od nejstarších nebo nejnovějších výsledků, volba zobrazování položek bez obrázků a volba zobrazování neprodaných položek. Další možností, jak uživatelské hledání zjednodušit, je využití booleovského modelu hledání [29]. Booleovský model používá pro upřesnění hledávání logické spojky AND, OR a NOT. Logická spojka AND umožňuje tvořit tzv. úzké dotazy. Tyto dotazy umožňují zúžit množinu výsledků vyhledávání. Pro rozšíření množiny výsledků se využívá logické spojky OR. Tato spojka tvoří tzv. široké dotazy. Možností, jak odebrat určitá slova nebo fráze z výsledků vyhledávání, je využití logické spojky operátoru NOT. Tato spojka umožňuje definovat slova, která se nesmí ve výsledcích vyhledávání objevit [29]. Kromě logických spojek booleovského modelu dále vyhledávače využívají vlastní operátory, které umožňují ještě více zpřesnit vyhledávání. Příkladem vlastního operátoru je uzavření fráze do uvozovek, kdy vyhledávací dotaz musí obsahovat přesně zadanou frázi [30] Proces přidávání mezi oblíbené položky Aplikace bude uživatelům umožňovat nalezené výsledky přidat mezi své oblíbené položky. Všechny položky, které si uživatel vložil mezi své oblíbené, bude moci později najít v seznamu oblíbených položek. Tímto způsobem si uživatelé budou moci ukládat položky, které je zajímají, a budou je moci kdykoliv najít na jednom místě bez toho, aniž by je museli stále dokola hledat. Přidávání a odebírání z oblíbených položek bude uživatelům umožněno v jakékoliv části presentující aukční položky uživateli (vyhledávání, prohlížení). Aby proces manipulace s oblíbenými položkami uživatele při práci nerušil, bude použita technologie AJAX [24], která umožňuje přenos mezi částí na klientském počítači a webovým serverem tzv. na pozadí. Tímto termínem je myšleno, že dojde k aktualizaci části stránky bez toho, aby byla celá stránka obnovena. U každé položky na stránce bude umístěna ikonka, která bude uživateli ihned signalizovat, zda je daná položka mezi uživatelovými oblíbenými položkami. Po kliknutí na tuto ikonku dojde k odeslání HTTP požadavku na webový server prostřednictvím JavaScriptu. Na serveru dojde k následnému zpracování požadavku a v závislosti, zda je položka v uživatelových oblíbených položkách nebo ne, dojde k odebrání nebo přidání do databáze. Následně dojde k odeslání výsledku celé operace zpět na počítač klienta. Zde je výsledek zpracován a dojde ke změně HTML kódu stránky tak, aby vzhled stránky odpovídal aktuálnímu stavu. Pro uživatele je proto změna pomocí technologie AJAX přirozenější a aplikace se chová jako by se jednalo o desktopovou aplikaci Diagram tříd vyhledávače Jelikož je vyhledávač postaven na Nette Frameworku, který využívá MVC architektury, musí diagram tříd toto reflektovat. Z tohoto důvodu je celý diagram na

39 Analýza a návrh aplikace 39 Obr. 11 rozdělen na jednotlivé části. Tyto části jsou Model, Controller (zde Presenter) a Components, které představují znovupoužitelné komponenty aplikace. Část View v diagramu není přítomna, protože je v Nette reprezentovaná pomocí Latte šablon. V podstatě lze říci, že ke každému presenteru je připojena jedna nebo více Latte šablon, které ovlivňují způsob vykreslení výsledné HTML stránky. V diagramu je možné si všimnout osamocené třídy RouterFactory. Tato třída se stará o obousměrné routování mezi URL adresami a akcemi presenterů. Umožňuje tak automaticky nastavit způsob generování URL adres pouze na základě změny v třídě routeru [21]. V diagramu jsou využity dvě barvy pro označení původu tříd. Třídy označené šedou barvou jsou součástí Nette Frameworku. Tyto třídy by v diagramu být nemusely, ale pro pochopení kontextu byly do diagramu přidány. Z těchto tříd jsou dále odvozeny všechny ostatní modré třídy. Modré třídy byly vytvořeny pro účel fungování této aplikace. Struktura tříd Nette obsahuje pár důležitých tříd, které je potřeba pro pochopení funkce diagramu vysvětlit. Předkem všech tříd, od kterých je možné vytvářet instance, je Nette\Object. Dále jsou v diagramu znázorněny třídy předků presenteru (Presenter), komponent (Control) a rozhraní pro autentizaci do aplikace (IAuthenticator) [21]. Část model obsahuje převážně třídy Repository, tyto třídy slouží ke komunikaci s databází. Další třída, která se v modelu nachází, je Authenticator. Ta se stará o přihlašování uživatelů do aplikace. Poslední třídou v této části je SearchSettings. Tato třída slouží jako přepravka pro přenos informací o aktuálním nastavení vyhledávání uživatele. V části presenter jsou pouze třídy, které slouží k prezentování dat z modelu uživatelům aplikace. Všechny třídy jsou potomkem základní třídy BasePresenter a už název každé třídy napovídá o jejím účelu. První stránku aplikace, na kterou se každý uživatel dostane, reprezentuje třída HomepagePresenter. Následně se uživatel může zaregistrovat (RegisterPresenter) a přihlásit pomocí (SignPresenter) a je přesměrován na PremiumPresenter. Zde už má uživatel možnost vyhledávání nebo může kdykoliv přejít na jednu z dalších stránek. Mezi tyto stránky patří nastavení účtu uživatele (SettingPresenter), zobrazení oblíbených položek (FavoritePresenter), nápověda (HelpPresenter) a prohlížení aukčních položek (ListingPresenter). Administrátoři aplikace mají navíc možnost používat administrátorské rozhraní aplikace (AdminPresenter). Aby se při vývoji aplikace zabránilo opakování částí kódu, obsahuje Nette komponenty. Komponenta je logická část kódu s vlastními šablonami, která může být díky tomu různě přizpůsobená. Aplikace obsahuje tři komponenty SearchForm, SearchResult a VisualPaginator. Komponenty SearchForm a SerchResult reprezentují vyhledávací formulář a výsledný seznam nalezených položek. Obě komponenty jsou přizpůsobitelné, aby je bylo možné použít v různých částech aplikace. Poslední komponentou je VisualPaginator, což je oficiální komponenta z webu Nette. Tato komponenta se stará o stránkování prohlížených aukčních položek [21].

40 Analýza a návrh aplikace 40 Obr. 11 Diagram tříd vyhledávače Schéma databáze vyhledávače Celé schéma databáze vyhledávače je znázorněno na Obr. 12 a skládá se z celkového počtu jedenácti tabulek. Nejdůležitější jsou tabulky auction, item, picture, picture_url. Všechny tyto tabulky se používají pro ukládání dat z extrahovaných webových stránek. Tabulka auction obsahuje jednotlivé aukce, tabulka item obsahuje extrahované aukční položky a tabulky picture

41 Analýza a návrh aplikace 41 a picture_url slouží k ukládání odkazů na aukční obrázky. Poslední dvě jmenované tabulky mohou působit nezvykle, protože by se problém, který řeší, dal vyřešit jednou tabulkou. To by bylo možné pouze v případě, kdy by nedocházelo k postupnému odstraňování obrázků z webových serverů. V takovém případě by bylo řešení pomocí jedné tabulky dostatečné. Databáze je však připravena na to, že je jeden obrázek uložen na několika různých místech. Pokud dojde k odstranění jednoho obrázku, nastaví se hodnota valid u picture_url na false a aplikace hned může použít obrázek z jiného serveru. Databáze bude také umožňovat ukládání položek do kategorií. K tomuto účelu slouží tabulky category a item_has_category. Druhou částí databáze je práce s uživateli. Zde je nejdůležitější tabulka user, která ukládá informace o jednotlivých uživatelích aplikace. Informace o historii vyhledávání se ukládá do tabulky search_history. Nalezené položky si uživatel může přidat mezi své oblíbené položky, aby je v budoucnu nemusel znovu hledat. K tomuto účelu slouží tabulka favorite. Poslední dvě tabulky v diagramu jsou token a token_type. Tyto tabulky slouží k ukládání bezpečnostních tokenů, které se využívají převážně pro registraci do aplikace nebo jako ověřovací při resetování hesla.

42 Analýza a návrh aplikace 42 Obr. 12 Schéma databáze vyhledávače

43 Implementace extrakčního robota 43 5 Implementace extrakčního robota V kapitole implementace bude podrobněji rozebrána implementace obou částí aplikace. Tato část se bude zabývat implementací extrakčního robota. 5.1 Popis tříd V této části budou detailněji popsány třídy, které se nacházejí v diagramu tříd extrakčního robota Třída Robot Nejdůležitější třída v diagramu tříd je Robot. Při každém spuštění extrakčního robota je potřeba vytvořit instanci této třídy. Konstruktor třídy přebírá objekty Debugger a Extractor, kterým je delegována činnost ukládání logů a extrakce webových stránek. Hlavní funkcí třídy Robot je provádění automatické extrakce dat a webových odkazů z webových stránek. K tomuto účelu je využívána metoda execute. Tato metoda přebírá objekt Action a následně volá jednu z metod executeextract nebo executeaddlinks v závislosti na tom, zda se mají extrahovat data nebo odkazy z webové stránky. Obr. 13 Třída Robot Kromě provádění akcí slouží třída Robot k vytváření a testování nových šablon pro extrakci. K tomuto účelu slouží metody savetemplate a testtemplate Třída Extractor Jak bylo popsáno dříve, třídu Extractor využívá třída Robot k extrakci dat a odkazů z webových stránek. Třída Extractor umí stahovat webové stránky, manipulovat s jejich obsahem a extrahovat z nich data v různých formátech. Pro stažení webové stránky se využívá metoda loadweb. Během načítání dochází

44 Implementace extrakčního robota 44 k automatické detekci a opravě kódování na základě HTTP hlaviček. Pokud se webovou stránku podařilo stáhnout, je načtena do třídy jako objektový model dokumentu (DOM). Nyní je možné se stránkou manipulovat. Extractor umí na stránce přidávat a odebírat skripty nebo opravovat odkazy na obrázky a styly z relativních na absolutní. Toho je využito při interaktivní tvorbě šablony, kdy je stránku potřeba vložit do rámu, aby mohl uživatel provádět označování prvků kurzorem myši. Obr. 14 Třída Extractor Nejdůležitější činností, kterou třída Extractor provádí, je extrakce dat z webových stránek. K tomuto účelu je metoda extractitem, která přebírá XPath adresu prvku [11] a typ, který se má extrahovat. Označení typu slouží k výběru typu extrakce určitých dat. Třída umí extrahovat data jako čistý text, případně extrahovat a standardizovat z textu určitý údaj jako cenu (extractprice), měnu (extractcurrency) nebo datum (extractdate) Třída Scheduler Třída Scheduler představuje jednoduchý plánovač, který řídí činnost celého extrakčního robota. Tato třída obsahuje pouze dvě metody. První z nich je getaction a slouží k získání jedné existující akce z databáze. Pokud v databázi žádná taková akce není, Scheduler se postará o vytvoření jedné nebo více akcí na základě aktuálně vytvořených extrakčních šablon.

45 Implementace extrakčního robota 45 Obr. 15 Třída Scheduler Druhá metoda třídy Scheduler slouží k označování akcí za úspěšně splněné. U této metody je možné zadat, zda má být akce z databáze smazána nebo jenom označena za splněnou. To je nutné z toho důvodu, že některé akce je nutné provádět pravidelně (extrakce odkazů na nové aukce) a jiné pouze jednou (extrakce webové stránky). První typ akce se musí z databáze mazat, druhý se pouze označí za splněný Třída Action Třída Action je generována pomocí třídy Scheduler. Action tedy slouží pouze jako přepravka pro databázovou reprezentaci akce. Každá akce obsahuje unikátní identifikátor, typ akce (extrakce aukce nebo kontrola nových aukcí) a několik dalších atributů, které označují URL adresu stránky a ID šablony, která se má pro extrakci použít. Obr. 16 Třída Action Třída Template Třída Template slouží jako přepravka pro databázovou reprezentaci šablony. Skládá se z množiny XPath dotazů, které odkazují na jednotlivé části aukce. XPath dotazy uložené v této třídě jsou dvojího typu. Metoda getbasepaths vrací pole absolutních XPath odkazů. Tyto jsou použity pro určení pozic jednotlivých bloků s daty pro extrakci. Na rozdíl od toho metoda getrelativepaths vrací množinu relativních XPath dotazů. Ty identifikují jednotlivé prvky v bloku.

46 Implementace extrakčního robota 46 Obr. 17 Třída Template Třída PageData Pro uchovávání extrahovaných dat z webových stránek se používá třída PageData. Stejně jako předchozí třída slouží pouze jako přepravka. Rozdíl proti předchozím třídám je v možnosti postupného plnění instance třídy. Ta je plněna podle toho, jak extrakční robot postupně prochází jednotlivé stránky. Až jsou data připravena na uložení, je zavolána metoda insert. Tato metoda má velkou výhodu, protože jako parametr se zadává rozhraní IDatabase, kam se mají data uložit. Je tedy možné jednoduše nastavit, zda se data mají ukládat na lokální nebo na vzdálenou databázi. Další výhodou je budoucí rozšiřitelnost vytvořením mnoha různých tříd, které mohou data ukládat mnoha různými způsoby. Obr. 18 Třída PageData Třída BayesFilter Extrakční robot musí být schopen procházet jednotlivé webové stránky aukce bez toho, aby se ztratil. Z tohoto důvodu používá třídu BayesFilter, která umožňuje klasifikovat jakýkoliv webový odkaz do dvou skupin na základě toho, zda se jedná nebo nejedná o odkaz na aukci. Třída BayesFilter v podstatě implementuje dříve popsaný Bayesův klasifikátor [4][8] a kromě učení umožňuje i následnou klasifikaci.

47 Implementace extrakčního robota 47 Pro učení slouží metoda gettrainedwords, která přebírá jako parametry dvě pole řetězců, která patří a nepatří do klasifikované třídy. Následně je pomocí metody getwords získán seznam všech unikátních slov, která se v řetězcích nalézají. K rozdělení řetězců do slov se používá metoda multiexplode, která využívá seznam oddělovačů. Následně dojde k výpočtu podmíněné pravděpodobnosti pro každé takto získané slovo, které nepatří na seznam výjimek. Na tento seznam byla manuálně vložena slova, na kterých nezáleží výsledná klasifikace. Příkladem je slovo www. Obr. 19 Třída BayesFilter Po natrénování třídy umožňuje BayesFilter klasifikovat řetězce znaků. Ke klasifikaci se používá metoda getclassscore. Tato metoda nejprve rozdělí klasifikovaný řetězec na základě seznamu oddělovačů. Poté dojde k zjištění pravděpodobnosti pro každé slovo a nakonec je vypočítána podmíněná pravděpodobnost pro celý řetězec. Na základě této pravděpodobnosti se poté může extrakční robot rozhodnout, zda bude odkaz následovat nebo ne Třída Link Pro ukládání extrahovaných odkazů slouží třída Link. Tato třída představuje pouze přepravku pro jeden extrahovaný odkaz. Obr. 20 Třída Link Třída Factory Aby bylo co nejvíce zjednodušeno vytváření složitých objektů, využívá se třída Factory. Výhodou použití této třídy je, že ostatním třídám umožňuje jednoduše

48 Implementace extrakčního robota 48 získávat složité objekty, které pro vytváření potřebují načítat data z databáze. Třída obsahuje několik metod, které umožňují získávat objekty šablon, získávat objekty akce, získávat data pro učení Bayesova klasifikátoru a získat natrénovaný Bayesův klasifikátor. Obr. 21 Třída Factory Třída DB Třída DB slouží pro komunikaci s databází. Jelikož také implementuje rozhraní IDatabase, není do budoucna problém vytvořit třídu pro jakýkoliv způsob ukládání dat. Výhody třídy DB plynou z využití PDO (PHP Data Objects) [31]. PDO představuje abstraktní vrstvu, která umožňuje pracovat s různými databázemi pomocí jednotného rozhraní. Zároveň přestavuje nový způsob zápisu SQL dotazů, kde jsou data vázána později pomocí metody bind. Tímto je zajištěna obrana před útoky na webové stránky pomocí vkládání nebezpečných znaků (SQL injection). Obr. 22 Třída DB Třída DB zároveň podporuje transakce. Ty se mohou hodit v případě, kdy se do databáze má vložit pouze celá aukce. Pokud by se vložení nepodařilo, nedojde k nekonzistentnímu stavu databáze. Stav databáze je pomocí metody rollback- Transaction vrácen do stavu před započetím transakce.

49 Implementace extrakčního robota Třída HTML Třída HTML slouží ke zjednodušení generování často používaných bloků HTML kódu. Mezi tyto bloky patří hlavička, obrázky, odkazy, tabulky, tlačítka a stavové zprávy aplikace. Obr. 23 Třída HTML Třída User User představuje jednoduchou třídu pro přihlašování administrátorů ke správě nastavení extrakčního robota. Tato metoda je velmi jednoduchá, proto není třeba další popis. Obr. 24 Třída User 5.2 Popis funkce extrakčního robota Po přihlášení je administrátor přesměrován na stránku s úvodní obrazovkou. Zde se zobrazují nejdůležitější informace o výsledku provedených akcí, o chybách a o naplánovaných akcích. Pro zjištění výsledku provedených akcí se používá zobrazování obsahu textového souboru logu. Forma textové místo databázové reprezentace pro log soubor byla zvolena záměrně, protože jsou sem zapisovány i informace o chybách, které by při chybě připojení k databázi nešly zapsat. Informace o naplánovaných akcích je načítána z databáze a umožňuje okamžitě zjistit, jakou posloupnost akcí bude extrakční robot vykonávat. Každá akce může být typu extract nebo addlinks. Akce typu extract slouží pro extrakci dat z dané URL adresy. Akce typu addlinks slouží pro získávání odkazů na nové aukce, které jsou pak uloženy do databáze jako akce extract. Úvodní stránka

50 Implementace extrakčního robota 50 také obsahuje seznam aktivních extrakčních šablon, který je možné rozšířit přidáním nové šablony. Obr. 25 Extrakční robot úvodní obrazovka Tvorba extrakční šablony Administrátor aplikace se může z úvodní stránky dostat na tvorbu extrakční šablony. K tomu slouží horizontální menu v horní části stránky. Toto menu už kromě jména přihlášeného administrátora a tlačítka pro odhlášení z aplikace nic jiného neobsahuje, protože extrakční robot provádí veškerou další činnost automatizovaně. Po kliknutí na tlačítko pro přidání extrakční šablony je administrátor přesměrován na stránku, kde bude proveden procesem tvorby extrakční šablony pro zvolený web. Cílovou webovou stránku administrátor zvolí pomocí pole s titulkem Seznam aukcí. Do tohoto pole administrátor vloží URL adresu stránky se seznamem odkazů na aukční výsledky. Po vložení URL adresy a potvrzení dojde k automatické extrakci všech URL odkazů, které se na dané stránce nachází (viz Obr. 26). Každý odkaz je zobrazen jako řádek tabulky, ve kterém jsou, kromě URL adresy aukčního výsledku, i ovládací prvky se symboly plus a mínus. Ovládací prvky slouží k učení algoritmu Bayesova filtru [4][8]. Kliknutí na tlačítko se symbolem plus znamená přidání celého textu odkazu a URL adresy odkazu mezi pozitivní trénovací příklady. Takové příklady bude extrakční robot považovat za odkazy na aukce a bude se je snažit extrahovat.

51 Implementace extrakčního robota 51 Administrátor má možnost využít kliknutí na tlačítko se symbolem mínus. Toto tlačítko, jak název napovídá, přidá odkaz mezi negativní příklady. Mezi tlačítky se také nachází číselná hodnota, která určuje vypočítanou podmíněnou pravděpodobnost pro daný odkaz. Na základě této hodnoty je poté každý odkaz označen barvou. Červená barva je použita pro odkazy, které se nebudou extrahovat. Zelená barva je naopak použita pro odkazy, které se extrahovat budou. A nakonec šedé jsou odkazy, u kterých Bayesův filtr nedokáže určit, do jaké skupiny patří. Obr. 26 Extrakční robot naučený Bayesův filtr Po implementační stránce je proces učení Bayesova filtru řešen pomocí technologie AJAX. Je tedy možné komunikovat se serverem a měnit obsah stránky bez nutnosti celkového obnovení stránky. Naučené odkazy jsou poté na serveru ukládány do databáze. Při každé změně samozřejmě dojde k přepočítání podmíněných pravděpodobností pro všechny odkazy a následně dojde k aktualizaci hodnot score. Proces učení Bayesova filtru je díky tomu velmi intuitivní a administrátor může mít pocit, že pracuje s desktopovou aplikací. Když je administrátor spokojen s procesem učení a následnou schopností rozpoznávání odkazů, může přejít k vlastní tvorbě extrakční šablony. K té se dostane po kliknutí na jednu z malých zelených šipek u zeleně podbarvených odkazů. Po kliknutí na jednu z těchto šipek dojde k načtení cílové webové stránky a vložení jejího obsahu do rámu. Proces mezi kliknutím a zobrazením stránky je složitější, protože odkazy běžně nevedou na stránku, kde se extrakce má provést.

52 Implementace extrakčního robota 52 Většinou se zde nachází i stránka, která slouží pro návštěvníky aukčních výsledků jako rozcestník, který jim umožňuje rychle se přepínat mezi různými částmi výsledků (zlato, středověk, novověk, ). Robot proto musí nejprve nalézt odkaz na první stranu aukce. Algoritmus hledání odkazu první strany aukce funguje následovně. Extrakční robot nejprve extrahuje všechny odkazy, které se na stránce nacházejí. Poté jsou z této množiny vybrány pouze odkazy, které rozpozná naučený Bayesův filtr. Ve výsledné množině odkazů dochází k hledání odkazu, který obsahuje nejmenší číslo. Právě ten většinou odkazuje na první stranu aukce. Obr. 27 Extrakční robot tvorba šablony Po nalezení odkazu dojde k načtení obsahu webové stránky a jeho následnému zpracování pro vložení do rámu stránky (viz Obr. 27). Celý proces od kliknutí na zelenou šipku až po zobrazení stránky je po implementační stránce mnohem složitější. Po kliknutí na tlačítko se zelenou šipkou dojde k odeslání ajaxového požadavku na server. Server vyhledá první stranu aukce a následně stáhne obsah této stránky. Poté musí odstranit všechny skripty, zrušit funkčnost odkazů a tlačítek, opravit odkazy na kaskádové styly a obrázky. Díky tomu je stránka zobrazena ve stejné podobě, ve které se zobrazí administrátorovi po zadání URL adresy do

53 Implementace extrakčního robota 53 webového prohlížeče. Důležitým krokem je vložení skriptu do těla stránky, který administrátorovi umožňuje vybírat jednotlivé bloky stránky pouze za pomoci kurzoru myši. Proces tvorby extrakční šablony je proto jednoduchý. Nejprve je administrátorovi zobrazena stránka, na které bude vytvářet extrakční šablonu. Administrátor následně může, pomocí kurzoru myši, označovat jednotlivé bloky stránky s tím, že jsou okamžitě generovány XPath dotazy, které blok jednoznačně identifikují. Přepínání mezi výběrem jednotlivých bloků stránky se provádí pomocí tlačítek s popiskem další. V praxi administrátor nejprve označí název aukce a přejde na další krok. Následně vybere text, ve kterém se nachází datum aukce. Poté následuje krok, který významně ulehčuje tvorbu celé šablony. Administrátor vybere jakýkoliv blok, ve kterém se nacházejí data jedné aukční položky. Jakmile vybírá jednotlivé prvky, které se v tomto bloku nacházejí, může si všimnout, že XPath dotazy jsou generovány relativně k absolutní cestě celého bloku. Díky tomuto výběru je možné provést následující akci. Administrátor stiskne tlačítko s popiskem Vyhledat a okamžitě jsou nalezeny absolutní cesty ke všem ostatním blokům. Celý proces využívá algoritmus extrakce datových záznamů [10][12][13]. Ostatní bloky jsou dohledány díky podobnosti jejich vnitřní struktury XPath dotazů s označeným blokem. Nakonec, po kliknutí na tlačítko uložit, dojde k uložení celé šablony do databáze. Poté dojde automaticky k testu extrakční šablony. Extrakční robot se pokusí extrahovat první stránku zvolené aukce a výsledek administrátorovi zobrazí (viz Obr. 28). Obr. 28 Extrakční robot testování šablony Jak je možné vidět na předchozím obrázku, extrakční robot provádí i automatickou extrakci odkazů na obrázky, i když administrátor nemusel při tvorbě extrakční šablony žádný obrázek vybírat. Je to tím, že obrázky jsou ex-

54 Implementace extrakčního robota 54 trahovány automaticky. Extrakční robot automaticky extrahuje všechny obrázky, které se nacházejí v bloku aukční položky Automatická extrakce Po vytvoření alespoň jediné extrakční šablony už může robot začít sám pracovat. Celý proces automatické extrakce funguje následovně. Činnost robota je spuštěna provedením skriptu cron.php. Tento skript je spouštěn pomocí softwarového démona Crona. Jakmile dojde k aktivaci skriptu, vytvoří se objekt třídy Scheduler, který se stará o plánování práce robota. Pokud bude v databázi nalezena jedna nebo více neprovedených akcí, provede se ta akce, která má nejvyšší prioritu a je nejstarší. Po provedení akce dojde k jejímu označení za provedenou nebo dojde ke smazání. Záleží na tom, zda se stejná akce bude někdy v budoucnu provádět znovu. Po vytvoření extrakční šablony je však tabulka akcí prázdná, proto si musí plánovač nějakou vytvořit. Vytváření nových akcí funguje jednoduše. Pokud není v databázi žádná akce, plánovač vytvoří pro každou extrakční šablonu jednu akci typu AddLinks. Jak už název této akce může napovědět, po jejím provedení dojde k extrakci všech odkazů z webové stránky, které vedou na aukce. Z těchto odkazů jsou vytvořeny akce typu Extract, pouze pro ty odkazy, které se ještě v databázi nenacházejí. Během extrakčního procesu kromě vlastní extrakce dochází i k automatické extrakci a standardizaci cen, měn a data aukce. Jak už bylo zmíněno dříve, extrakční robot nedokáže poznat, kde se tyto údaje na stránce nachází. Určování pozic jednotlivých údajů na webové stránce provádí administrátor při tvorbě extrakční šablony. Pomocí kurzoru myši administrátor označuje jednotlivé bloky stránky a podle typu pole je následně použit správný algoritmus pro extrakci a standardizaci. To znamená, že pro pole datum aukce bude použit algoritmus extrakce a standardizace data. Pro pole s počáteční nebo konečnou cenou budou použity algoritmy dva. První algoritmus se bude z bloku snažit extrahovat a standardizovat cenu a druhý algoritmus měnu. Všechny algoritmy pro standardizace údajů fungují na principu regulárních výrazů. Nejjednodušší je algoritmus pro standardizaci ceny. Algoritmus využívá znalosti o aukčních příhozech, kdy se vždy draží v celých korunách (eurech, dolarech, ). Drobnější částky se zde nepoužívají. Díky tomu nemusí algoritmus umět rozpoznávat desetinná čísla. Algoritmus pak pracuje na následujícím principu. Nejprve jsou z řetězce odstraněny všechny bílé znaky. Poté dojde k odstranění znaku uvozovky, který je typický pro některé zápisy měn. Nakonec se použije regulární výraz pro extrakci první nepřerušené posloupnosti číslic nezačínající nulou. Pokud by takový řetězec nebyl nalezen, vrací funkce nulu. To může být užitečné pro určení položek aukce, které nebyly vydraženy. Složitějším algoritmem je standardizace měn. Tento algoritmus využívá tabulky světových měn podle standardu ISO 4217 [32] a jednopísmenných symbolů pro označení známých měn [33]. Princip fungování je podobný jako u předchozího algoritmu. Rozdíl je pouze v použití regulárního výrazu, který hledá, zda se před nebo za cenou nachází jeden ze symbolů měn. Pokud dojde

55 Implementace extrakčního robota 55 k nalezení takového symbolu, dojde k přerušení hledání dalších a k vrácení měny na výstup algoritmu. Nejsložitější z algoritmů slouží k extrakci a standardizaci dat z textového řetězce. Ten využívá PHP funkci strtotime, která umožňuje převést datum z textového řetězce ve známém formátu do zvoleného formátu. Nebylo by jednoduché a univerzálně použitelné snažit se zjistit formát data v řetězci. Proto je lepší vytvořit si formát vlastní, který může být převeden do formátu typu MySQL DATE (YYYY-MM-DD) [34]. Jelikož funkce strtotime podporuje pouze anglické názvy měsíců, musí být nejprve převedeny české názvy měsíců na anglické. Poté dochází k hledání jednotlivých elementů data za pomoci regulárních výrazů. Nejjednodušší formát má rok, protože stačí hledat čtyřčíselnou kombinaci začínající číslem dva. Formát dne v měsíci obsahuje čísla 1 až 31. Nejhorší je to s hledáním měsíce, protože může být zapsán jak číselně, tak slovně. Pro číselné hledání se používají čísla 1 až 12 a pro slovní hledání se používá seznam názvů anglických měsíců. Jakmile jsou nalezeny všechny části data, je už jednoduché vytvořit vlastní formát data a ten převést. Během extrakce jsou postupně extrahovány všechny odkazy ze stránky. Z těchto odkazů jsou pomocí Bayesova filtru vybrány pouze ty odkazy, které vedou na aukce. Robot poté postupně prochází všechny takto získané odkazy. Proces končí, když už nezbývá žádný neextrahovaný odkaz. Poté dojde k uložení všech extrahovaných výsledků do databáze pomocí třídy DB případně jiné třídy, která implementuje rozhraní IDatabase.

56 Implementace vyhledávače 56 6 Implementace vyhledávače Implementace vyhledávacího nástroje byla provedena v Nette Frameworku [21]. Jelikož tento framework používá pro vývoj MVC architekturu, jsou i jednotlivé třídy vyhledávače rozděleny do několika skupin. Jedná se o model, presenter a komponenty. Zjednodušeně lze popsat funkci jednotlivých skupin tříd následujícím způsobem. Třídy modelu představují datový a funkční základ aplikace. Třídy presenteru slouží k zpracování akcí uživatelů a vykreslení šablon. Nakonec třídy komponent slouží k definování logických komponent, které je možné opakovaně používat v celé aplikaci. 6.1 Popis tříd Jelikož byl celkový diagram tříd představen už dříve, budou v této části podrobněji rozebrány nejdůležitější třídy vyhledávače Třída Repository Jednou z nejdůležitějších tříd, která je součástí modelu, je třída Repository. Tato třída představuje základní repositář, který je předkem všech ostatních repositářů v aplikaci. Poskytuje tedy ostatním třídám přístup k objektu Connection, který představuje připojení k databázi. Asi nejdůležitější metoda třídy Repository je gettable. Tato metoda umožní všem potomkům přistupovat k databázové tabulce na základě části názvu před textem Repository. Z toho plyne, že tato metoda ve třídě UserRepository umožní pracovat s tabulkou User nebo ve třídě ItemRepository umožní pracovat s tabulkou Item. Obr. 29 Třída Repository Třída UserRepository Třída UserRepository slouží pro práci s uživatelskými účty vyhledávače. Umožňuje například vyhledávat uživatele, získávat seznamy všech uživatelů, vytvářet nové uživatelské účty prostřednictvím metody createuser, měnit a resetovat hesla nebo měnit a přidávat k jednotlivým uživatelským účtům. Resetování hesla lze provést pomocí metody resetpassword a slouží pro změnu hesla

57 Implementace vyhledávače 57 uživatele na nové, které bylo vygenerováno prostřednictvím metody generate- Password. Toto heslo je následně odesláno prostřednictvím u uživateli, který si o reset hesla požádal. Obr. 30 Třída UserRepository Třída Authenticator Jednou z tříd, která používá třídu UserRepository, je třída Authenticator. Tato třída slouží k přihlašování uživatelů do aplikace. Pro přihlášení se zde používá metoda authenticate, která jako parametr přebírá přihlašovací údaje uživatele. Pokud uživatel tyto údaje vloží správně, dojde k vrácení naplněného objektu Identity, který obsahuje veškeré informace o uživateli. Třída Authenticator obsahuje další dvě metody. Metoda calculatehashold slouží pro výpočet hashe hesla. Metoda getidentity slouží k získání nové identity uživatele na základě jeho identifikátoru. To se může hodit, když uživatel změní některý údaj ve svém profilu a je potřeba získat aktuální verzi objektu Identity. Obr. 31 Třída Authenticator Třída TokenRepository Vyhledávací část aplikace neumožňuje uživatelům volnou registraci a registrace je možná pouze prostřednictvím odkazu s pozvánkou. Pro správu tokenů (klíčů) v pozvánkách slouží třída TokenRepository. Tato třída umožňuje vygenerovat nový token pomocí metody generatetoken, zkontrolovat platnost tokenu pomocí metody tokenexists nebo odstranit z databáze token, který byl použit pomocí metody removetoken.

58 Implementace vyhledávače 58 Obr. 32 Třída TokenRepository Třída SearchSettings Jelikož aplikace umožňuje v aukčních výsledcích vyhledávat, je potřeba použít nějaký elegantní způsob, jakým budou předávána uživatelská nastavení pro vyhledávání. Tímto způsobem je použití třídy SearchSettings, která představuje neměnitelnou přepravku na data. Nastavení hledání uživatele je do této třídy předáno jako klíčové pole v definovaném tvaru. V konstruktoru třídy dojde ke kontrole správnosti tvaru vkládaného pole. Pokud by pole ve správném tvaru nebylo, došlo by k vyhození výjimky. Po naplnění uchovává třída SearchSettings mnoho různých informací o aktuálním hledání uživatele (např. hledaná položka, období, maximální počet výsledků, způsob třídění výsledků a další).

59 Implementace vyhledávače 59 Obr. 33 Třída SearchSettings Třída ItemRepository Jednou z nejdůležitějších tříd v celém vyhledávači je třída ItemRepository. Tato třída umožňuje jednoduše vyhledávat v extrahovaných aukčních položkách. K tomuto účelu slouží metoda search, která jako parametr přebírá objekt SearchSettings. Tato metoda dále používá další metody, které dohromady sestaví finální SQL dotaz. Jednou ze zajímavých metod je getexclude, která vytvoří část SQL dotazu pro vyloučení hledání určitých slov. Jedná se o ta slova, před kterými se nachází znak minus. Třída ItemRepository dále umožňuje práci s uživatelovými oblíbenými položkami. Jedná se o jejich přidávání a odebírání prostřednictvím metod addto- Favorite a removetofavorite. Takto přidané položky pak může uživatel nalézt na seznamu svých oblíbených položek, který je vytvořen pomocí metody getfavoriteditems.

60 Implementace vyhledávače 60 Obr. 34 Třída ItemRepository Třída SearchHistoryRepository Třída SearchHistoryRepository slouží k ukládání jednotlivých hledání uživatelů prostřednictvím aplikace. K tomuto účelu slouží metoda save, která přebírá objekt SearchSettings a identifikátor uživatele, který hledání provedl. K takto získaným údajům má přístup pouze administrátor aplikace a může je využít k následným analýzám. Obr. 35 Třída SearchHistoryRepository Třída SearchFormControl První z komponent vyhledávače je třída SearchFormControl. Slouží k vytvoření vyhledávacího formuláře ve verzi pro neregistrované nebo registrované uživatele. Ke zvolení, jaký typ formuláře má třída vytvořit, slouží parametr premium. Pokud je parametr premium roven pravdě, vytvoří se formulář pro registrované uživatele, jinak se vytvoří formulář pro neregistrované uživatele. Výhodou komponent je jejich možná znovu použitelnost v rámci celé aplikace a nastavení vzhledu stránky prostřednictvím vlastní šablony. Třída komponenty SearchFormControl má dvě různé šablony. Každá slouží pro jiný typ formuláře. Důležitá je metoda render, kterou musí mít každá třída komponenty. Tato metoda se stará o připojení a vykreslení šablony komponenty.

61 Implementace vyhledávače 61 Obr. 36 Třída SearchFormControl Třída SearchResultControl Stejně jako předchozí třída představuje třída SearchResultControl komponentu. Tato komponenta slouží k výpisu všech položek, které jsou vloženy do konstruktoru třídy jako pole items. Komponenta umí na základě parametru premium vykreslit dva typy výpisů. Stejně jako v předchozí třídě slouží pro neregistrované a registrované uživatele. Dále třída obsahuje metody začínající textem handle, které slouží pro zpracování signálů komponenty. V tomto případě se používají pro přidávání a odebírání oblíbených položek uživatele. Obr. 37 Třída SearchResultControl Třída VisualPaginatorControl Aby bylo možné výsledné výstupy jednoduše stránkovat, používá aplikace třídu komponenty VisualPaginatorControl. Autorem této komponenty je David Grudl [35]. Třída slouží k vykreslení číselné navigace u dlouhých seznamů. Uživatelé poté mohou pomocí kliknutí na určité číslo okamžitě přejít na danou stránku. Výhodou této třídy je, že automaticky vygeneruje správný počet odkazů v závislosti na celkovém počtu stránek. Zároveň si poradí i s velkým množstvím stránek, kdy dojde ke skrytí určitých odkazů, v závislosti na aktuální stránce.

62 Implementace vyhledávače 62 Obr. 38 Třída VisualPaginatorControl Třída HomepagePresenter Pro vykreslování jednotlivých stránek se používají třídy patřící do skupiny presenterů. Tyto třídy používají stejně jako komponenty vlastní šablony, na základě kterých je definováno, jak má vypadat vzhled výsledné stránky. Každá presenter třída prochází mnoha různými fázemi (životními cykly), během kterých dochází k volání korespondujících metod. Příkladem je metoda startup, která se provádí jako první a dochází zde většinou ke kontrole autorizace a k následnému připojení tříd modelu. Dalším důležitým typem metod jsou metody začínající textem render. Tyto metody jsou volány pro vykreslení šablony presenteru. Třída, která obsluhuje úvodní stranu aplikace, je HomepagePresenter. Tato třída využívá komponenty SearchForm a SearchResult pro základní vyhledávání aukční položek. Pro vytvoření těchto komponent se využívají metody začínající textem createcomponent. Takto vytvořené komponenty je pak možné ihned používat v šabloně třídy. Obr. 39 Třída HomepagePresenter Třída RegisterPresenter Aby se mohl uživatel dostat k pokročilým funkcím vyhledávače, musí se nejprve zaregistrovat. Registrace do aplikace je však umožněna pouze na základě odkazu s pozvánkou. Proto dochází v metodě startup ke kontrole platnosti vložené pozvánky. Následně se vytvoří komponenta pro registrační formulář, pomocí něhož může uživatel dokončit svou registraci.

63 Implementace vyhledávače 63 Obr. 40 Třída RegisterPresenter Třída SignPresenter Po registraci se uživatel může do aplikace přihlásit pomocí přihlašovacího formuláře. O vytvoření a zpracování tohoto formuláře se stará třída SignPresenter. Zároveň se stará o vykreslení a zpracování formuláře pro resetování hesla uživatele. Uživatel si po vložení svého uživatelského jména a ové adresy může nechat resetovat své zapomenuté heslo, které je následně odesláno na jeho e- mailovou adresu. Obr. 41 Třída SignPresenter Třída PremiumPresenter Po přihlášení se uživatel dostane na úvodní stranu pro přihlášené uživatele. Tato strana je obsluhována pomocí třídy PremiumPresenter a uživateli umožňuje používat pokročilé vyhledávání aukčních položek. Oproti základní verzi zde není omezen maximální počet výsledků na deset. Zároveň se zde vyskytují různá nastavení pro filtrování výsledků. Jedná se o možnost vyhledávání pouze položek s obrázky, vyhledávání bez neprodaných položek nebo vyhledávání pouze na určitých aukcích. Dále zde může uživatel použít různé třídění nalezených výsledků. Zde se jedná o třídění od nejlevnější nebo od nejdráže prodané položky a třídění od nejnovější nebo od nejstarší aukce.

64 Implementace vyhledávače 64 Obr. 42 Třída PremiumPresenter Třída ListingPresenter Přihlášení uživatelé nemusí využívat pouze hledání, aby našli položky, které hledají. Extrahované aukce mohou procházet jako katalogy. K vygenerování všech katalogů slouží třída ListingPresenter. Tato třída umí zobrazovat dva typy stránek. Prvním typem je seznam všech extrahovaných aukcí, ze kterých si může uživatel vybrat určitou aukci k prohlížení. Po kliknutí na určitý odkaz aukce dojde k zavolání metody renderauction, která vytvoří druhý typ stránky. Jedná se o tabulkový seznam všech položek dané aukce. Pro rozdělení všech položek na stránky se používá komponenta VisualPaginatorControl. Obr. 43 Třída ListingPresenter Třída ItemPresenter Aplikace pro každou nalezenou položku generuje odkaz, který ji jednoznačně identifikuje. Po kliknutí na tento odkaz je uživatel přesměrován na stránku, kde se zobrazí veškeré informace o dané položce. Pro generování těchto stránek slouží třída ItemPresenter. Odkazy fungují pro registrované i neregistrované uživatele, proto je možné poslat je em kamarádovi.

65 Implementace vyhledávače 65 Obr. 44 Třída ItemPresenter Třída FavoritePresenter Každá položka umožňuje přidání na seznam oblíbených položek uživatele. K zobrazení seznamu těchto položek slouží třída FavoritePresenter. Zde jsou všechny oblíbené položky uživatele zobrazeny na jedné stránce. Uživatel tedy nemusí hledat stejné položky stále dokola. Obr. 45 Třída FavoritePresenter Třída SettingsPresenter Důležitou funkcí v aplikaci je nastavení uživatelského účtu. To je umožněno prostřednictvím třídy SettingsPresenter, která umožňuje změnit heslo nebo změnit uživatele. Třída SettingsPresenter proto umí zobrazovat několik různých typů formulářů, pomocí nichž uživatel změnu provádí. Pro změnu hesla je vygenerován formulář pomocí metody createcomponentchangepasswordform, kde je uživatel požádán o zadání starého a dvakrát nového hesla. Pokud vše proběhne v pořádku, je heslo uživatele změněno. Obdobně slouží metoda pro generování formuláře pro změnu ové adresy. Zde uživatel musí vložit své heslo a dvakrát svůj nový . Po provedení jakékoliv změny dojde k aktualizaci objektu Identity, aby následně mohly být zobrazeny správné údaje.

66 Implementace vyhledávače 66 Obr. 46 Třída SettingsPresenter Třída AdminPresenter Pokud se do aplikace vyhledávače přihlásí někdo s administrátorskými právy, bude mít v menu dostupný odkaz pro zobrazení administrátorského rozhraní. O vykreslení a obsluhu tohoto rozhraní se stará třída AdminPresenter. V tomto rozhraní lze nalézt seznam všech zaregistrovaných uživatelů a seznam všech aktivních pozvánek pro registraci do aplikace. Administrátor má možnost vygenerovat novou pozvánku nebo pozvánku smazat. Obr. 47 Třída AdminPresenter 6.2 Popis funkce vyhledávače Po spuštění aplikace se uživatel dostane na úvodní stranu (viz Obr. 48). Tato strana umožňuje funkci vyhledávání, která je jako jediná dostupná i neregistrovaným uživatelům. Vyhledávání se provádí pomocí dvou vyhledávacích polí, kdy první pole vyhledává v popisu a druhé v období aukční položky. Tento způsob vyhledávání byl použit, protože stejný text v popisu položky a rozdílné období vede k diametrálně rozdílným výsledkům. Například při vy-

67 Implementace vyhledávače 67 hledávání jedné koruny může být v závislosti na zvoleném období nalezena mince z běžného kovu, stříbrná mince, zlatá mince nebo papírová bankovka. Vyhledávání bez přihlášení je značně omezené, protože neobsahuje žádné možnosti filtrování výsledků a zároveň je maximální počet výsledků omezen na deset položek. Pro základní hledání to stačí, pokud chce uživatel využít vyššího uživatelského komfortu, musí se do aplikace zaregistrovat. Obr. 48 Vyhledávač výřez úvodní obrazovky Vzhled aplikace má jednotný styl, kde se menu nachází v horní liště aplikace. Nepřihlášený uživatel zde může vidět několik ikonek, které slouží pro zobrazení přihlašovací stránky a pro zobrazení stránky s nápovědou. U každého formulářového pole se nachází ikonka s malým otazníkem. Ta slouží k zobrazení plovoucího pole s kontextovou nápovědou, která se zobrazí, pouze pokud je kurzor myši umístěn nad touto ikonkou Registrace a přihlášení do aplikace Aby mohl uživatel používat pokročilé funkce aplikace, musí se do aplikace zaregistrovat. Registrace však není dostupná pro každého, používá se zde systém registrace pomocí tzv. pozvánek. Pozvánkou se rozumí webový odkaz ve speciálním tvaru, kdy je po jeho navštívení uživateli zobrazena webová stránka umožňující vytvoření nového uživatelského účtu. Před tímto zobrazením musí dojít ke kontrole existence a platnosti pozvánky, aby nemohlo dojít k opakovanému použití jedné pozvánky. Pro registraci stačí uživateli vyplnit do formuláře své uživatelské jméno, heslo a ovou adresu. Pokud uživatel vyplní vše správně, je automaticky přihlášen. Pro opakované přihlášení se používá přihlašovací formulář, který je dostupný pod první ikonkou lišty aplikace (viz Obr. 49). Tento formulář, kromě standardního přihlášení pomocí uživatelského jména a hesla, nabízí i možnost resetování hesla. Možnosti resetovat heslo může využít každý registrovaný uživatel, který svoje heslo zapomněl. Při procesu rese-

68 Implementace vyhledávače 68 tu hesla dojde k vygenerování nového hesla, které je odesláno na ovou adresu uživatele. Obr. 49 Vyhledávač přihlašovací a resetovací formulář V aplikaci se proces resetování hesla provádí pomocí kliknutí na odkaz s textem Zapomněl jsem heslo. Poté je uživatel přesměrován na formulář, kde je vyzván pro vložení svého uživatelského jména a u. Pokud je kombinace platná, dojde k vygenerování a odeslání nového hesla na ovou adresu uživatele Prémiová část aplikace Pokud je uživatel v aplikaci registrován a přihlásí se, dostane se do prémiové části aplikace (viz Obr. 50). Úvodní strana prémiové části aplikace nabízí, podobně jako úvodní strana aplikace, vyhledávání v aukčních výsledcích. Rozdíl je pouze v množství doplňkových funkcí, které může uživatel používat. Tyto funkce umožňují lépe filtrovat hledané položky. Konkrétně se jedná o výběr prohledávané aukce, způsob řazení výsledků nebo možnost výběru, zda se mají vyhledávat neprodané položky nebo položky bez obrázků. Prémiová část aplikace také obsahuje možnost zvolit si maximální počet výsledků vyhledávání. Uživatel zde není omezen pouze na limit deseti výsledků, který je na pevno nastaven v neregistrované části aplikace. Menu prémiové části aplikace obsahuje několik ikonek, které je možné vidět na Obr. 50. Zleva doprava je jejich význam následující nastavení účtu uživatele, odhlášení z prémiové části, vyhledávání, prohlížení aukcí, zobrazení

69 Implementace vyhledávače 69 oblíbených položek uživatele, zobrazení nápovědy a přístup do administrátorského rozhraní. Poslední ikonka je dostupná pouze pro administrátory aplikace, ostatním uživatelům se nezobrazuje. Obr. 50 Vyhledávač prémiová část (se zobrazenou kontextovou nápovědou) Jelikož je aplikace velmi obsáhlá, v následující části budou popsány pouze nejdůležitější procesy v aplikaci. Procesy jako zobrazení nápovědy nebo nastavení účtu uživatele nebudou více rozebírány Vyhledávání aukčních položek Hlavním účelem aplikace je umožnit uživatelům vyhledávat v extrahovaných datech aukčních výsledků. Pokud uživatel vloží název hledané položky do formuláře, jsou uživateli vráceny všechny aukční položky, které obsahují uživatelem zadaný text. Uživatel může následně upravit text dotazu, aby se dostal k relevantnějším výsledkům. Z nalezených výsledků se uživatel může dozvědět mnoho důležitých informací, které se týkají ceny a četnosti výskytu hledané položky. Nalezené výsledky jsou uživateli zobrazeny ve formě tabulky, kde každý řádek obsahuje jednu relevantní aukční položku. Každá položka obsahuje popis, období, vyvolávací a konečnou cenu, datum a jméno aukce, na které byla položka dražena, a někdy i aukční fotografie. Při vyhledávání uživatel není omezen na prostý text. Může využívat několika speciálních znaků, které slouží k zpřesnění výsledků vyhledávání. Jedná se o znak uvozovek a znak minus. Znak uvozovek slouží pro vyhledání přesné fráze uzavřením dané fráze do uvozovek. To se může hodit při hledání všech položek obsahující text 10 korun. Pokud uživatel vloží tento text do vyhledávače bez uvozovek, dojde k nahrazení všech mezer za znak procenta. Bude tedy vyhledán výraz %10%korun%. Tomuto výrazu odpovídají nejenom všechny položky obsahující text 10 korun, ale také 100 korun, 1000 korun nebo třeba 10 medvědů s cibulkou má na hlavě korunu. Při uzavření hledaného výrazu do uvozovek

70 Implementace vyhledávače 70 nebudou nahrazeny mezery nacházející se v uvozovkách. Bude tedy hledán výraz %10 korun%, který mnohem pravděpodobněji nalezne to, co uživatel hledá. Znak minus se používá pro definici slov, která se v textu nalezených položek nesmí vyskytnout. Příklad použití ukazuje Obr. 51, kde je hledán výraz 10 koruna soubor. Při použití tohoto výrazu dojde k vyhledání všech aukčních položek, které odpovídají výrazu %10 koruna%1933% a zároveň neobsahují text soubor. Pro definici více slov, která se ve výsledku vyhledávání nemají objevit, se před každý slovem použije znak minus. Obr. 51 Vyhledávání aukčních položek Prohlížení aukčních výsledků Kromě vyhledávání aplikace umožňuje i prohlížení extrahovaných aukčních výsledků. K této funkci se uživatelé dostanou po kliknutí na čtvrtou ikonku menu (otevřená kniha). Stránka, která umožňuje prohlížení aukčních výsledků, je celá generována automaticky, a to na základě extrahovaných aukcí. Vše je přehledně rozděleno podle názvu aukce a jednotlivé aukce jsou řazeny podle data konání. Díky tomu může uživatel velmi rychle nalézt aukci, kterou hledá. Reálnou automaticky vygenerovanou stránku je možné vidět na Obr. 52. U každého termínu aukce se nachází ikonka lupy, která slouží pro přesměrování na detail zvolené aukce. Tato stránka obsahuje seznam všech aukčních položek, které byly na zvolené aukci draženy. Výpis položek je stejně jako při vyhledávání tabulkový, kde každý řádek obsahuje jednu aukční položku. Pro všechny tyto výpisy se používá třída komponenty SearchResultControl, která byla popsána dříve. Jelikož aukční výsledky běžně obsahují stovky nebo i tisíce položek, je nutné toto množství nějak stránkovat, aby nedocházelo k pomalému načítání stránky nebo k dlouhému scrolování uživatele. Z tohoto důvodu používá aplikace třídu komponenty VisualPaginatorContol.

71 Implementace vyhledávače 71 Obr. 52 Prohlížení aukčních položek seznam aukcí Po vložení VisualPaginatorControl do šablony stránky dojde k vykreslení vizuální komponenty, která umožňuje přesun mezi jednotlivými stránkami aukce. Tato komponenta aplikaci předává rozsah položek, které mají být na dané stránce zobrazeny. Programátor se už nemusí starat o přepočítávání jednotlivých rozsahů položek k zobrazení. Obr. 53 Prohlížení aukčních položek detail aukce Oblíbené položky Aplikace také umožňuje přidávání položek, které uživatele nějak zaujaly, na seznam oblíbených aukčních položek. Všechny oblíbené položky jsou poté dostupné na jednom místě aplikace (ikonka hvězdička). Přidávání na tento seznam

72 Implementace vyhledávače 72 může být užitečné pro ukládání položek, které by jinak uživatel musel zdlouhavě znovu hledat. Ikonka pro přidání položky mezi oblíbené se nachází na začátku každého řádku aukční položky. Pouze na základě obrázku ikonky je uživatel schopen okamžitě poznat, zda se položka nachází na jeho seznamu. Pokud je ikonka bílá hvězda, položka se na seznamu oblíbených položek nenachází. Pouze pokud je ikonka žlutá hvězda, uživatel má jistotu, že se položka nachází mezi jeho oblíbenými položkami. Obr. 54 Přidávání do oblíbených položek Po implementační stránce funguje celý proces přidávání a odebírání pomocí technologie AJAX. Díky tomu je možné položku přidat nebo odebrat bez toho, aby bylo potřeba znovu načíst webovou stránku. Pokud uživatel klikne na bílou hvězdu, dojde k odeslání ajaxového požadavku na server. Zde dojde k přidání položky do tabulky Favorite. Následně je zpět odeslán výsledek operace a změněn stav ikonky na žlutou hvězdu. Při opětovném kliknutí dojde k podobné akci jako v předchozím případě s tím rozdílem, že je položka z tabulky oblíbených položek odebrána. V aplikaci je vyřešen problém s opakovaným klikáním před dokončením operace, kdy běžně dochází k odeslání více požadavků. Po kliknutí je ikonka hvězdy změněna na běžící tečku, která neumožní další kliknutí a tedy ani odeslání požadavku.

73 Testování 73 7 Testování Testování aplikace bylo zaměřeno převážně na proces tvorby extrakční šablony a následnou kontrolu správnosti extrahovaných dat. Proces tvorby extrakční šablony byl testován na následujících webových stránkách: Tato množina testovaných webových stránek byla zvolena záměrně, protože reprezentuje nejdůležitější české i zahraniční sběratelské aukce. Zároveň jsou zde zastoupeny stránky s různým rozvržením aukčních položek. S problémem extrakce aukčních položek ze stránek s různým rozvržením se extrakční robot musel být schopen vypořádat už během tvorby extrakční šablony. Proces testování probíhal v několika krocích. Prvním krokem bylo vytvoření extrakční šablony. Nejprve proběhlo učení Bayesova filtru. Tento filtr při dostatečném množství trénovacích příkladů fungoval vždy správně a extrakční robot byl schopen poznat, které odkazy vedou na aukční položky a které ne. Následně probíhala manuální tvorba extrakční šablony. Zde byla věnována pozornost schopnosti automatické detekce aukčních položek při různých rozvrženích stránek. Aplikace si dokázala poradit s jednosloupcovým i dvousloupcovým rozvržením aukčních položek, který se na těchto webových stránkách používá (viz Obr. 55). Obr. 55 Tvorba šablony pro Sixbid.com dvousloupcové rozvržení Extrakční robot neměl potíže ani s následnou extrakcí dat z webů a podařilo se mu správně extrahovat datum aukce, ceny i měny (viz Obr. 56). Během testová-

74 Testování 74 ní byla zjištěna pouze jediná omezující podmínka. Pokud odkaz na stránku s aukčními výsledky vede na jiný web, robot nemůže výsledky z této stránky extrahovat. To je způsobeno rozdílným objektovým modelem dokumentu oproti naučené šabloně, kterému se šablona extrakce nedokáže přizpůsobit. S tím však bylo počítáno už při tvorbě extrakčního robota a algoritmus Bayesova filtru tyto odkazy efektivně filtruje. Druhou nevýhodou extrakčního robota je, že nedokáže extrahovat aukční výsledky ze stránek, kde jsou data načítána prostřednictvím technologie AJAX. Pro funkční extrakci dat z takovýchto stránek by extrakční robot musel umět provádět skripty, což není triviální problém. S tímto však nebylo při návrhu počítáno, a proto robot všechny skripty ze stránek odstraňuje. Díky tomu dokáže robot vytvořit šablony pro stránky, které mají skriptem zamezeno načtení v rámu. Obr. 56 Sixbid.com test správnosti extrakce

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

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

METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ

METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ Regionální rada regionu soudržnosti Moravskoslezsko METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ verze 1.06 Evidence změn Verze Platnost od Předmět změny Strany č. 1.01 22. 10. 2007 Sestavování

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

-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

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

Pokyn D - 293. Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

Pokyn D - 293. Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami PŘEVZATO Z MINISTERSTVA FINANCÍ ČESKÉ REPUBLIKY Ministerstvo financí Odbor 39 Č.j.: 39/116 682/2005-393 Referent: Mgr. Lucie Vojáčková, tel. 257 044 157 Ing. Michal Roháček, tel. 257 044 162 Pokyn D -

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

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

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

VI. Finanční gramotnost šablony klíčových aktivit

VI. Finanční gramotnost šablony klíčových aktivit VI. Finanční gramotnost šablony klíčových aktivit Číslo klíčové aktivity VI/2 Název klíčové aktivity Vazba na podporovanou aktivitu z PD OP VK Cíle realizace klíčové aktivity Inovace a zkvalitnění výuky

Více

Využití EduBase ve výuce 10

Využití EduBase ve výuce 10 B.I.B.S., a. s. Využití EduBase ve výuce 10 Projekt Vzdělávání pedagogů v prostředí cloudu reg. č. CZ.1.07/1.3.00/51.0011 Mgr. Jitka Kominácká, Ph.D. a kol. 2015 1 Obsah 1 Obsah... 2 2 Úvod... 3 3 Autorský

Více

Veřejnoprávní smlouva o poskytnutí investiční dotace č. 1/2016

Veřejnoprávní smlouva o poskytnutí investiční dotace č. 1/2016 Veřejnoprávní smlouva o poskytnutí investiční dotace č. 1/2016 Zastupitelstvo města Nová Role dle usnesení č. 10/02-4) ze dne 30. 12. 2015 a dle 85 odst. c zákona 128/2000 Sb., o obcích, rozhodlo o přidělení

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

městské části Praha 3 pro rok 2016 připravila

městské části Praha 3 pro rok 2016 připravila městské části Praha 3 pro rok 2016 připravila městské části Praha 3 pro rok 2016 - Návrh projektu k 3. 2. 2016 Obsah Obsah... 2 1. KONTEXT... 3 2. CÍLE A VÝSTUPY PROJEKTU... 4 3. POSTUP PŘÍPRAVY PARTICIPAČNÍHO

Více

STÍRÁNÍ NEČISTOT, OLEJŮ A EMULZÍ Z KOVOVÝCH PÁSŮ VE VÁLCOVNÁCH ZA STUDENA

STÍRÁNÍ NEČISTOT, OLEJŮ A EMULZÍ Z KOVOVÝCH PÁSŮ VE VÁLCOVNÁCH ZA STUDENA STÍRÁNÍ NEČISTOT, OLEJŮ A EMULZÍ Z KOVOVÝCH PÁSŮ VE VÁLCOVNÁCH ZA STUDENA ÚVOD Při válcování za studena je povrch vyválcovaného plechu znečištěn oleji či emulzemi, popř. dalšími nečistotami. Nežádoucí

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

ZADÁVACÍ DOKUMENTACE. Pořízení a provoz konsolidované IT infrastruktury

ZADÁVACÍ DOKUMENTACE. Pořízení a provoz konsolidované IT infrastruktury ZADÁVACÍ DOKUMENTACE k nadlimitní veřejné zakázce na dodávky zadávané v otevřeném řízení dle 21 odst. 1 písm. a) a 27 zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů (dále jen

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

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

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

Metodický list úprava od 1. 1. 2014 Daně a organizační jednotky Junáka

Metodický list úprava od 1. 1. 2014 Daně a organizační jednotky Junáka Metodický list úprava od 1. 1. 2014 Daně a organizační jednotky Junáka Metodický list je věnován všem druhům daní, které patří do daňového systému ČR mimo daně z příjmů. Této dani je věnován samostatný

Více

Článek 1 Identifikační údaje zadavatele a organizátora. Povodí Odry, státní podnik CZ27149862. www.ecentre.cz

Článek 1 Identifikační údaje zadavatele a organizátora. Povodí Odry, státní podnik CZ27149862. www.ecentre.cz Zadávací dokumentace Povodí Odry, státní podnik Výzva k podání nabídek obsahující současně ZADÁVACÍ DOKUMENTACI k veřejné zakázce zadávané druhem zjednodušeného podlimitního řízení podle zákona č. 137/2006

Více

PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA

PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA č. j.: TACR/14666/2014 PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA Schválil/a: Lenka Pilátová, vedoucí oddělení realizace

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

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

DAŇ Z PŘÍJMŮ FYZICKÝCH OSOB

DAŇ Z PŘÍJMŮ FYZICKÝCH OSOB DAŇ Z PŘÍJMŮ FYZICKÝCH OSOB Zdanění daně z příjmů fyzických osob upravují dva zákony: zákon ze dne 26. července 1991 o dani z příjmů fyzických osob (Sb.Polské republiky 2000, č. 14, pol. 176 ve znění pozd.

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

ZADÁVACÍ DOKUMENTACE

ZADÁVACÍ DOKUMENTACE ZADÁVACÍ DOKUMENTACE pro otevřené podlimitní řízení na služby NÁZEV VEŘEJNÉ ZAKÁZKY: Zajištění odborných vzdělávacích kurzů Mürdter Dvořák, lisovna, spol. s r.o. 2. kolo Tato veřejná zakázka na služby

Více

Výzva k podání nabídek (zadávací dokumentace)

Výzva k podání nabídek (zadávací dokumentace) Výzva k podání nabídek (zadávací dokumentace) 1.Číslo zakázky 2.Název programu: 3.Registrační číslo projektu 4.Název projektu: 5.Název zakázky: Operační program Vzdělání pro konkurenceschopnost CZ.1.07/1.1.07/02.0129

Více

VÝZVA K PODÁNÍ NABÍDKY. Stavební úpravy turistické ubytovny TJ Valašské Meziříčí dokončení rekonstrukce

VÝZVA K PODÁNÍ NABÍDKY. Stavební úpravy turistické ubytovny TJ Valašské Meziříčí dokončení rekonstrukce VÝZVA K PODÁNÍ NABÍDKY v rámci veřejné zakázky malého rozsahu, zadávané mimo režim zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů Stavební úpravy turistické ubytovny TJ Valašské

Více

Předmětem podnikání společnosti je:

Předmětem podnikání společnosti je: STANOVY Zemědělské společnosti Nalžovice a.s. I. Obchodní firma Obchodní firma společnosti zní: Zemědělská společnost Nalžovice, a.s. II. Sídlo společnosti Sídlem společnosti jsou: Nalžovice č.p. 23, okres

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

21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK

21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK 21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK Pavel Rokos ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra elektrotechnologie Úvod Světelné zdroje jsou jedním

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

Příloha č. 3 VÝKONOVÉ UKAZATELE

Příloha č. 3 VÝKONOVÉ UKAZATELE Příloha č. 3 VÝKONOVÉ UKAZATELE OBSAH 0. ÚVODNÍ USTANOVENÍ... 3 0.1. Vymezení obsahu přílohy... 3 0.2. Způsob vedení evidencí... 3 0.3. Hodnocené období... 4 1. VÝKONOVÉ UKAZATELE ODPADNÍ VODA... 5 1.1.

Více

Programový komplet pro evidence provozu jídelny v. 2.55. modul Sklad. 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642

Programový komplet pro evidence provozu jídelny v. 2.55. modul Sklad. 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642 Programový komplet pro evidence provozu jídelny v. 2.55 modul Sklad 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642 Obsah 1 Programový komplet pro evidenci provozu jídelny modul SKLAD...3 1.1

Více

Nabídka seminářů Finanční gramotnost

Nabídka seminářů Finanční gramotnost Nabídka seminářů Finanční gramotnost Seminář 45 minut Čas (min.) Aktivita 0-2 Přivítání, představení. Poznámky 3-5 Poznání účastníků: aktivita 4 rohy Všem se položí otázka, na kterou jsou 4 možné odpovědi.

Více

SMLOUVA O POSKYTOVÁNÍ SOCIÁLNÍ SLUŽBY č.../2013

SMLOUVA O POSKYTOVÁNÍ SOCIÁLNÍ SLUŽBY č.../2013 SMLOUVA O POSKYTOVÁNÍ SOCIÁLNÍ SLUŽBY č.../2013 Poskytovatelem sociální služby: Adresa: Sídlo: DOMOV PRO SENIORY JAVORNÍK, p. o., Školní 104, 790 70 J a v o r n í k J A V O R N Í K IČO: 75004101 Zapsán:

Více

Novinky verzí SKLADNÍK 4.24 a 4.25

Novinky verzí SKLADNÍK 4.24 a 4.25 Novinky verzí SKLADNÍK 4.24 a 4.25 Zakázky standardní přehled 1. Možnosti výběru 2. Zobrazení, funkce Zakázky přehled prací 1. Možnosti výběru 2. Mistři podle skupin 3. Tisk sumářů a skupin Zakázky ostatní

Více

Číslo veřejné zakázky (bude C151090 doplněno poskytovatelem dotace) 1 Název programu:

Číslo veřejné zakázky (bude C151090 doplněno poskytovatelem dotace) 1 Název programu: Výzva k podání nabídek (pro účely uveřejnění na www.msmt.cz nebo www stránkách krajů pro zadávání zakázek z prostředků finanční podpory OP VK, které se vztahují na případy, pokud zadavatel není povinen

Více

STANOVISKO č. STAN/1/2006 ze dne 8. 2. 2006

STANOVISKO č. STAN/1/2006 ze dne 8. 2. 2006 STANOVISKO č. STAN/1/2006 ze dne 8. 2. 2006 Churning Churning je neetická praktika spočívající v nadměrném obchodování na účtu zákazníka obchodníka s cennými papíry. Negativní následek pro zákazníka spočívá

Více

VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s. Fakulta ekonomických studií katedra řízení podniku. Předmět: ŘÍZENÍ LIDSKÝCH ZDROJŮ (B-RLZ)

VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s. Fakulta ekonomických studií katedra řízení podniku. Předmět: ŘÍZENÍ LIDSKÝCH ZDROJŮ (B-RLZ) VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s. Fakulta ekonomických studií katedra řízení podniku Předmět: ŘÍZENÍ LIDSKÝCH ZDROJŮ (B-RLZ) Téma 7: HODNOCENÍ PRACOVNÍHO VÝKONU, ODMĚŇOVÁNÍ ŘÍZENÍ PRACOVNÍHO VÝKONU

Více

170/2010 Sb. VYHLÁŠKA. ze dne 21. května 2010

170/2010 Sb. VYHLÁŠKA. ze dne 21. května 2010 170/2010 Sb. VYHLÁŠKA ze dne 21. května 2010 o bateriích a akumulátorech a o změně vyhlášky č. 383/2001 Sb., o podrobnostech nakládání s odpady, ve znění pozdějších předpisů Ministerstvo životního prostředí

Více

Všeobecné podmínky pro užívání portálu www.okdrazby.cz a účast na elektronických dražbách nemovitostí a movitostí (dále též jen Všeobecné podmínky ).

Všeobecné podmínky pro užívání portálu www.okdrazby.cz a účast na elektronických dražbách nemovitostí a movitostí (dále též jen Všeobecné podmínky ). Všeobecné podmínky pro užívání portálu www.okdrazby.cz a účast na elektronických dražbách nemovitostí a movitostí (dále též jen Všeobecné podmínky ). I..OBECNÁ USTANOVENÍ 1. Předmět úpravy Tyto Všeobecné

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

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

Číslo zakázky (bude doplněno poskytovatelem dotace) 1 Název programu: Operační program Vzdělávání pro konkurenceschopnost

Číslo zakázky (bude doplněno poskytovatelem dotace) 1 Název programu: Operační program Vzdělávání pro konkurenceschopnost Výzva k podání nabídek (pro účely uveřejnění na www.msmt.cz nebo www stránkách krajů pro zadávání zakázek z prostředků finanční podpory OP VK, které se vztahují na případy, pokud zadavatel není povinen

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

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

ZADÁVACÍ DOKUMENTACE K ZAKÁZCE ZADÁVANÉ DLE PRAVIDEL PRO VÝBĚR DODAVATELŮ OPPI A SUBSIDIÁRNĚ DLE ZÁKONA Č. 137/2006 SB

ZADÁVACÍ DOKUMENTACE K ZAKÁZCE ZADÁVANÉ DLE PRAVIDEL PRO VÝBĚR DODAVATELŮ OPPI A SUBSIDIÁRNĚ DLE ZÁKONA Č. 137/2006 SB ZADÁVACÍ DOKUMENTACE K ZAKÁZCE ZADÁVANÉ DLE PRAVIDEL PRO VÝBĚR DODAVATELŮ OPPI A SUBSIDIÁRNĚ DLE ZÁKONA Č. 137/2006 SB., O VEŘEJNÝCH ZAKÁZKÁCH, VE ZNĚNÍ POZDĚJŠÍCH PŘEDPISŮ (DÁLE JEN ZÁKON ) 1. NÁZEV ZAKÁZKY:

Více

Zpráva o hodnocení resortních systémů centralizovaného zadávání veřejných zakázek za rok 2012. (dále jen Zpráva o hodnocení )

Zpráva o hodnocení resortních systémů centralizovaného zadávání veřejných zakázek za rok 2012. (dále jen Zpráva o hodnocení ) III. Zpráva o hodnocení resortních systémů centralizovaného zadávání veřejných zakázek za rok 2012 (dále jen Zpráva o hodnocení ) Zpracovatel: Česká republika - Ministerstvo pro místní rozvoj Odbor veřejného

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

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

statutární město Děčín podlimitní veřejná zakázka na služby: Tlumočení a překlady dokumentů

statutární město Děčín podlimitní veřejná zakázka na služby: Tlumočení a překlady dokumentů statutární město Děčín Zadávací dokumentace podlimitní veřejná zakázka na služby: Tlumočení a překlady dokumentů vyhlášená v otevřeném řízení dle zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění

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

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

Automatizované sledování informací na webech

Automatizované sledování informací na webech 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 Rád bych touto

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

METODICKÝ POKYN VZOR SMLOUVY O POSKYTNUTÍ DOTACE Z ROZPOČTU REGIONÁLNÍ RADY

METODICKÝ POKYN VZOR SMLOUVY O POSKYTNUTÍ DOTACE Z ROZPOČTU REGIONÁLNÍ RADY Regionální rada regionu soudržnosti Moravskoslezsko METODICKÝ POKYN VZOR SMLOUVY O POSKYTNUTÍ DOTACE Z ROZPOČTU REGIONÁLNÍ RADY Řízená kopie elektronická Verze 4.05 Účinnost od 20. 3. 2012 Počet stran:

Více

ZADÁVACÍ DOKUMENTACE

ZADÁVACÍ DOKUMENTACE ZADÁVACÍ DOKUMENTACE nabídky k veřejné zakázce malého rozsahu Dodávka služeb internetové inzerce volných pracovních míst pro SÚKL Zadavatel : Česká republika, Státní ústav pro kontrolu léčiv organizační

Více

Jak na KOTLÍKOVÉ DOTACE? JEDNODUCHÝ RÁDCE PRO ZÁKAZNÍKY

Jak na KOTLÍKOVÉ DOTACE? JEDNODUCHÝ RÁDCE PRO ZÁKAZNÍKY Jak na KOTLÍKOVÉ DOTACE? JEDNODUCHÝ RÁDCE PRO ZÁKAZNÍKY KOTLÍKOVÉ DOTACE pokračují! Máte doma starý kotel na uhlí, dřevo a jiná tuhá paliva? Pak jsou kotlíkové dotace určeny právě pro Vás! Pokud máte doma

Více

MATEMATIKA A BYZNYS. Finanční řízení firmy. Příjmení: Rajská Jméno: Ivana

MATEMATIKA A BYZNYS. Finanční řízení firmy. Příjmení: Rajská Jméno: Ivana MATEMATIKA A BYZNYS Finanční řízení firmy Příjmení: Rajská Jméno: Ivana Os. číslo: A06483 Datum: 5.2.2009 FINANČNÍ ŘÍZENÍ FIRMY Finanční analýza, plánování a controlling Důležité pro rozhodování o řízení

Více

Název veřejné zakázky: Sdružené služby dodávky zemního plynu pro Mikroregion Střední Haná na rok 2013

Název veřejné zakázky: Sdružené služby dodávky zemního plynu pro Mikroregion Střední Haná na rok 2013 ZADÁVACÍ DOKUMENTACE nadlimitní veřejné zakázky zadávané druhem otevřeného řízení dle 27 zákona č. 137/2006 Sb., o veřejných zakázkách (dále jen zákon ) Název veřejné zakázky: Sdružené služby dodávky zemního

Více

Pracovní návrh. VYHLÁŠKA Ministerstva práce a sociálních věcí. ze dne.2013. o hygienických požadavcích na prostory a provoz dětské skupiny do 12 dětí

Pracovní návrh. VYHLÁŠKA Ministerstva práce a sociálních věcí. ze dne.2013. o hygienických požadavcích na prostory a provoz dětské skupiny do 12 dětí Pracovní návrh VYHLÁŠKA Ministerstva práce a sociálních věcí ze dne.2013 o hygienických požadavcích na prostory a provoz dětské skupiny do 12 dětí Ministerstvo práce a sociálních věcí stanoví podle 26

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

Pardubický kraj Komenského náměstí 125, Pardubice 532 11. SPŠE a VOŠ Pardubice-rekonstrukce elektroinstalace a pomocných slaboproudých sítí

Pardubický kraj Komenského náměstí 125, Pardubice 532 11. SPŠE a VOŠ Pardubice-rekonstrukce elektroinstalace a pomocných slaboproudých sítí Pardubický kraj Komenského náměstí 125, Pardubice 532 11 Veřejná zakázka SPŠE a VOŠ Pardubice-rekonstrukce elektroinstalace a pomocných slaboproudých sítí Zadávací dokumentace 1. Obchodní podmínky, platební

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

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce Česká zemědělská univerzita v Praze Fakulta provozně ekonomická Obor veřejná správa a regionální rozvoj Diplomová práce Problémy obce při zpracování rozpočtu obce TEZE Diplomant: Vedoucí diplomové práce:

Více

Úřad vlády České republiky Odbor pro sociální začleňování (Agentura)

Úřad vlády České republiky Odbor pro sociální začleňování (Agentura) Úřad vlády České republiky Odbor pro sociální začleňování (Agentura) Odůvodnění veřejné zakázky Čj. 26/2016-ASZ dle 156 zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů (dále

Více

PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM. Pravidla a postupy

PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM. Pravidla a postupy PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM Pravidla a postupy OBSAH Rozsah dokumentu... 3 1 Implementace Smlouvy... 3 2 Popisy metod komunikace... 4 2.1 B2B GW (SI)... 4 2.2 WEB Interface (WI)...

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

Příspěvky poskytované zaměstnavatelům na zaměstnávání osob se zdravotním postižením Dle zákona č. 435/2004 Sb., o zaměstnanosti, v platném znění.

Příspěvky poskytované zaměstnavatelům na zaměstnávání osob se zdravotním postižením Dle zákona č. 435/2004 Sb., o zaměstnanosti, v platném znění. 6 Právní postavení a ochrana osob se zdravotním postižením Příspěvky poskytované zaměstnavatelům na zaměstnávání osob se zdravotním postižením Dle zákona č. 435/2004 Sb., o zaměstnanosti, v platném znění.

Více

Všeobecné obchodní podmínky pro užívání portálu www.elektronickedrazby.cz (dále též jen Dražební řád )

Všeobecné obchodní podmínky pro užívání portálu www.elektronickedrazby.cz (dále též jen Dražební řád ) Všeobecné obchodní podmínky pro užívání portálu www.elektronickedrazby.cz (dále též jen Dražební řád ) I. OBECNÁ USTANOVENÍ 1. Předmět úpravy Tento Dražební řád upravuje pravidla užívání internetového

Více

Zadávací dokumentace pro podlimitní veřejnou zakázku na dodávky

Zadávací dokumentace pro podlimitní veřejnou zakázku na dodávky Zadávací dokumentace pro podlimitní veřejnou zakázku na dodávky Zjednodušené podlimitní řízení Název zakázky: Pořízení úklidového stroje na snížení prašnosti v obci Hvozdná Zadavatel zakázky: Obec Hvozdná

Více

Město Mariánské Lázně

Město Mariánské Lázně Město Mariánské Lázně Pravidla pro poskytování dotací na sportovní činnost Město Mariánské Lázně rozhodlo dne 11.12.2012 usnesením zastupitelstva města č. ZM/481/12 vydat tato Pravidla pro poskytová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

DAŇOVÉ AKTULITY 2013. Daň z přidané hodnoty

DAŇOVÉ AKTULITY 2013. Daň z přidané hodnoty DAŇOVÉ AKTULITY 2013 Po dlouhém období daňově lability v oblasti očekávání pro rok 2013 a následující došlo ke schválení kontroverzního daňového balíčku a dalších daňových zákonů a jejich zveřejnění ve

Více

RECTE.CZ, s.r.o., Matiční 730/3, 702 00 Ostrava Moravská Ostrava

RECTE.CZ, s.r.o., Matiční 730/3, 702 00 Ostrava Moravská Ostrava Seznam vyzvaných zájemců podle rozdělovníku Ostrava, vypraveno dne: 4. 12. 2014 Písemná výzva k předložení nabídky k veřejné zakázce na zhotovitele stavby Chodníky od ul. Plavební až do Frýdku Zadavatel:

Více

Maturitní otázka - optimalizace webových stránek

Maturitní otázka - optimalizace webových stránek Maturitní otázka - optimalizace webových stránek Optimalizace co se pod tímto pojmem skrývá? Co vlastně znamená pojem optimalizace webových stránek? Tento pojem zahrnuje více věcí. Často se jako optimalizace

Více

záměr a podmínky výběrového řízení č. 309/2015 formou elektronické aukce na pronájem stavby - budovy bez čp/če s využitím jako garáž,

záměr a podmínky výběrového řízení č. 309/2015 formou elektronické aukce na pronájem stavby - budovy bez čp/če s využitím jako garáž, Město Cheb odbor správy majetku Městského úřadu Cheb náměstí Krále Jiřího z Poděbrad 1/14, 350 20 Cheb, IČ 00253979 Č. j. MUCH/30115/2015-SM V Chebu dne 13. 4. 2015 Z Á M Ě R města Cheb pronajmout budovu

Více

Marketing. Modul 3 Zásady marketingu

Marketing. Modul 3 Zásady marketingu Marketing Modul 3 Zásady marketingu 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

Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury

Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury Zelené veřejné zakázky jsou dobrovolným nástrojem. V tomto dokumentu jsou uvedena kritéria EU, která byla vypracována pro skupinu

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

NUR - Interaktivní panel, D1

NUR - Interaktivní panel, D1 NUR - Interaktivní panel, D1 Petr Fišer, Roman Kubů, Jiří Slivárich {fiserp10, kuburoma, slivajir}@fel.cvut.cz Obsah Úvod... 3 Interaktivní panel... 3 Předpokládané využití...3 Cílové skupiny... 3 Upoutání

Více

KLÍČE KE KVALITĚ (METODIKA II)

KLÍČE KE KVALITĚ (METODIKA II) KLÍČE KE KVALITĚ (METODIKA II) Systém metodické, informační a komunikační podpory při zavádění školních vzdělávacích programů s orientací na rozvoj klíčových kompetencí a růst kvality vzdělávání Anotace

Více

PŘIJÍMACÍ ŘÍZENÍ. Strana

PŘIJÍMACÍ ŘÍZENÍ. Strana PŘIJÍMACÍ ŘÍZENÍ Strana Vyhledávání textu - přidržte klávesu Ctrl, kurzor umístěte na příslušný řádek a klikněte levým tlačítkem myši. 1. Právní předpisy upravující přijímací řízení ke studiu ve střední

Více

Kategorizace zákazníků

Kategorizace zákazníků Kategorizace zákazníků Obsah: 1. Úvodní ustanovení... 1 2. Kategorie zákazníků... 1 2.1 Neprofesionální zákazník... 1 2.2 Profesionální zákazník... 2 2.3 Způsobilá protistrana... 3 3. Přestupy mezi kategoriemi

Více

ZADÁVACÍ DOKUMENTACE

ZADÁVACÍ DOKUMENTACE ZADÁVACÍ DOKUMENTACE veřejné zakázky malého rozsahu DODÁVKA TRANSPORTNÍCH VENTILÁTORŮ zadávané mimo režim zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů (dále jen ZVZ ) Zadavatel:

Více

Univerzitní 2732/8, 306 14 Plzeň. doc. Dr. RNDr. Miroslavem Holečkem, rektorem IČO: 49777513

Univerzitní 2732/8, 306 14 Plzeň. doc. Dr. RNDr. Miroslavem Holečkem, rektorem IČO: 49777513 Výzva k podání nabídek na veřejnou zakázku Dodávky kancelářských potřeb 008-2016 zadávanou v dynamickém nákupním systému DNS na dodávky kancelářských potřeb Zadavatel: Název zadavatele: Západočeská univerzita

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

V Černošicích dne 30. 9. 2014. Výzva k podání nabídky na veřejnou zakázku malého rozsahu s názvem: Nákup a pokládka koberců OŽÚ.

V Černošicích dne 30. 9. 2014. Výzva k podání nabídky na veřejnou zakázku malého rozsahu s názvem: Nákup a pokládka koberců OŽÚ. Město Černošice IČ: 00241121 Riegrova 1209 252 28 Černošice V Černošicích dne 30. 9. 2014 Výzva k podání nabídky na veřejnou zakázku malého rozsahu s názvem: Nákup a pokládka koberců OŽÚ. Město Černošice

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

PRAVIDLA PRO PRODEJ BYTŮ A NEBYTOVÝCH PROSTOR V MAJETKU MĚSTA VRBNO POD PRADĚDEM

PRAVIDLA PRO PRODEJ BYTŮ A NEBYTOVÝCH PROSTOR V MAJETKU MĚSTA VRBNO POD PRADĚDEM PRAVIDLA PRO PRODEJ BYTŮ A NEBYTOVÝCH PROSTOR V MAJETKU MĚSTA VRBNO POD PRADĚDEM Čl. I Základní ustanovení 1) Těmito Pravidly se stanoví postup při prodeji bytů a nebytových prostor, které jsou dosud ve

Více

METODICKÝ POKYN VZOR SMLOUVY O POSKYTNUTÍ DOTACE Z ROZPOČTU REGIONÁLNÍ RADY

METODICKÝ POKYN VZOR SMLOUVY O POSKYTNUTÍ DOTACE Z ROZPOČTU REGIONÁLNÍ RADY Regionální rada regionu soudržnosti Moravskoslezsko METODICKÝ POKYN VZOR SMLOUVY O POSKYTNUTÍ DOTACE Z ROZPOČTU REGIONÁLNÍ RADY Řízená kopie elektronická Verze 4.06 Účinnost od 1. 7. 2012 Počet stran:

Více

Zásady pro udělování a užívání značky HANÁ regionální produkt ve znění platném od 19. 9. 2014

Zásady pro udělování a užívání značky HANÁ regionální produkt ve znění platném od 19. 9. 2014 Zásady pro udělování a užívání značky HANÁ regionální produkt ve znění platném od 19. 9. 2014 1/8 Zásady pro udělování a užívání značky HANÁ regionální produkt 1. Značka HANÁ regionální produkt 1.1 Cíl

Více

Těhotenský test pro zrakově postižené Tereza Hyková

Těhotenský test pro zrakově postižené Tereza Hyková Těhotenský test pro zrakově postižené Tereza Hyková hykovter@fel.cvut.cz Zadání Cílem projektu je nalézt řešení, které by umožnilo nevidomým dívkám a ženám interpretovat výsledek těhotenského testu v soukromí

Více

S T A N D A R D S A M O S T A T N É

S T A N D A R D S A M O S T A T N É S T A N D A R D S A M O S T A T N É O D B O R N É P R Á C E Žáci zpracovávají samostatnou odbornou práci na závěr svého studia v posledním ročníku k naplnění závěrečných zkoušek. Standard se týká tříletých

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