VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú...

64
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská BAKALÁŘSKÁ PRÁCE Brno, 2016 Viliam Jobko

Transcript of VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú...

Page 1: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Fakulta podnikatelská

BAKALÁŘSKÁ PRÁCE

Brno, 2016 Viliam Jobko

Page 2: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA PODNIKATELSKÁ

FACULTY OF BUSINESS AND MANAGEMENT

ÚSTAV INFORMATIKY

INSTITUTE OF INFORMATICS

NÁVRH DÍLČÍ ČÁSTI IS FIRMY PRO SLEDOVÁNÍ CEN KONKURENCE

PROPOSAL OF PART OF COMPANY'S IS FOR MONITORING COMPETITORS' PRICES

BAKALÁŘSKÁ PRÁCE

BACHELOR'S THESIS

AUTOR PRÁCE

AUTHOR

Viliam Jobko

VEDOUCÍ PRÁCE

SUPERVISOR

Ing. Jan Luhan, Ph.D., MSc

BRNO 2016

Page 3: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

Tato verze bakalářské práce je zkrácená (dle Směrnice děkana č. 2/2013). Neobsahuje

identifikaci subjektu, u kterého byla bakalářská práce zpracována (dále jen „dotčený

subjekt“) a dále informace, které jsou dle rozhodnutí dotčeného subjektu jeho obchodním

tajemstvím či utajovanými informacemi.

Page 4: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

Vysoké učení technické v Brně Akademický rok: 2015/2016Fakulta podnikatelská Ústav informatiky

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

Jobko Viliam

Manažerská informatika (6209R021)

Ředitel ústavu Vám v souladu se zákonem č.111/1998 o vysokých školách, Studijním azkušebním řádem VUT v Brně a Směrnicí děkana pro realizaci bakalářských a magisterskýchstudijních programů zadává bakalářskou práci s názvem:

Návrh dílčí části IS firmy pro sledování cen konkurence

v anglickém jazyce:

Proposal of Part of Company's IS for Monitoring Competitors' Prices

Pokyny pro vypracování:

ÚvodCíle práce, metody a postupy zpracováníTeoretická východiska práceAnalýza současného stavuVlastní návrhy řešeníZávěr Seznam použité literaturyPřílohy

Podle § 60 zákona č. 121/2000 Sb. (autorský zákon) v platném znění, je tato práce "Školním dílem". Využití této

práce se řídí právním režimem autorského zákona. Citace povoluje Fakulta podnikatelská Vysokého učení

technického v Brně.

Page 5: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

Seznam odborné literatury:

DOCTRINE PROJECT TEAM, Doctrine 2 ORM 2 documentation [online]. 2016. [cit.2016-02-26]. Dostupné z: https://doctrine-orm.readthedocs.org/en/latest/.HERNANDEZ, M. J. Návrh databází. 1. vyd. Praha: Grada, 2006. Profesionál. ISBN80-247-0900-7.NETTE FOUNDATION, Nette Framework [online]. 2008. [cit. 2016-02-26]. Dostupné z:http://nette.org.NIXON, R. Learning PHP, MySQL, JavaScript, and CSS a step-by-step guide to creatingdynamic websites. 2nd ed. Sebastopol, Calif: O'Reilly Media Inc., 2012. ISBN978-144-9337-490. THE PHP GROUP, PHP: Hypertext Preprocessor [online]. ©2001-2016. [cit. 2016-02-26].Dostupné z: http://php.net/.

Vedoucí bakalářské práce: Ing. Jan Luhan, Ph.D., MSc

Termín odevzdání bakalářské práce je stanoven časovým plánem akademického roku 2015/2016.

L.S.

_______________________________ _______________________________doc. RNDr. Bedřich Půža, CSc. doc. Ing. et Ing. Stanislav Škapa, Ph.D.

Ředitel ústavu Děkan fakulty

V Brně, dne 29.2.2016

Page 6: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

Abstrakt

Táto bakalárska práca je zámerná na návrh časti informačného systému pre sledovanie

produktov a cien konkurencie. Jej hlavným cieľom je navrhnúť pravidelný zber týchto

informácií, ich spracovanie a uskladnenie. Tie budú následne slúžiť pre lepšie nastavenie

cenovej politiky spoločnosti.

Abstract

This bachelor’s thesis is focused on the design of information system for monitoring of

competitors’ products and their prices. Its main objective is to design regular collection

of these information, their processing and storage. The obtained knowledge will be used

to set better pricing policy.

Kľúčové slová

informačný systém, databáza, webová aplikácia, scraping, crawling, konkurencia

Key words

information system, database, web application, scraping, crawling, competition

Page 7: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

Bibliografická citácia

JOBKO, V. Návrh dílčí části IS firmy pro sledování cen konkurence. Brno: Vysoké učení

technické v Brně, Fakulta podnikatelská, 2016. 63 s. Vedoucí bakalářské práce Ing. Jan

Luhan, Ph.D., MSc.

Page 8: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

Čestné prehlásenie

Prohlašuji, že předložená bakalářská práce je původní a zpracoval jsem ji samostatně.

Prohlašuji, že citace použitých pramenů je úplná, že jsem ve své práci neporušil autorská

práva (ve smyslu Zákona č. 121/2000 Sb., o právu autorském a o právech souvisejících s

právem autorským).

V Brne dňa 27.6.2016

………………………………..

Viliam Jobko

Page 9: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

Poďakovanie

Rád by som sa poďakoval vedúcemu svojej bakalárskej práce Ing. Janovi Luhanovi,

Ph.D., Msc. za rady a dôveru pri spracovaní tejto práce.

Page 10: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

9

OBSAH

ÚVOD ............................................................................................................................. 11

CIEĽ A POSTUP SPRACOVANIA PRÁCE ................................................................ 12

1 TEORETICKÉ VÝCHODISKA PRÁCE ................................................................... 13

1.1 Internet a jeho služby ........................................................................................... 13

1.1.1 World Wide Web ...................................................................................... 13 1.1.2 Elektronický obchod ................................................................................. 13

1.2 Technológie ......................................................................................................... 13

1.2.1 HTTP 1.1 .................................................................................................. 14

1.2.2 Web server ................................................................................................ 14 1.2.3 HTML ....................................................................................................... 15 1.2.4 CSS ........................................................................................................... 16

1.2.5 Bootstrap 3 ................................................................................................ 16 1.2.6 JavaScript .................................................................................................. 16 1.2.7 jQuery ....................................................................................................... 17 1.2.8 PHP ........................................................................................................... 17

1.2.9 Twig .......................................................................................................... 18 1.2.10 PHP Simple HTML DOM Parser ............................................................. 19

1.2.11 SQL ........................................................................................................... 19 1.2.12 MySQL ..................................................................................................... 20 1.2.13 Dibi ........................................................................................................... 20

1.2.14 API ............................................................................................................ 20

1.2.15 JSON ......................................................................................................... 20 1.2.16 Cron .......................................................................................................... 20 1.2.17 Regulárne výrazy ...................................................................................... 21

1.2.18 Čiarové kódy ............................................................................................. 21 1.2.19 Medzinárodné číslo tovaru (EAN-13) ...................................................... 22

1.3 Web scraping ....................................................................................................... 22

1.3.1 Scraping .................................................................................................... 22 1.3.2 Crawling .................................................................................................... 22 1.3.3 Parsing ...................................................................................................... 22

1.4 Metodológia návrhu databázy ............................................................................. 22

1.4.1 Konceptuálny návrh databázy ................................................................... 22

1.4.2 Logicky návrh databázy ............................................................................ 24 1.4.3 Fyzický návrh databázy ............................................................................ 24

2 ANALÝZA SÚČASNÉHO STAVU .......................................................................... 26

2.1 Trh a konkurencia ................................................................................................ 26

2.2 Analýza sledovaných informácií ......................................................................... 26

Page 11: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

10

2.3 Podobné riešenia .................................................................................................. 27

2.3.1 Tescoviny.cz ............................................................................................. 27

2.3.2 Atoto.cz ..................................................................................................... 27

3 VLASTNÝ NÁVRH RIEŠENIA ................................................................................ 28

3.1 Plán postupu ........................................................................................................ 28

3.2 Prototyp ............................................................................................................... 29

3.2.1 Aplikačný a vývojový stack ...................................................................... 29 3.2.2 Crawling .................................................................................................... 30

3.2.3 Parsing ...................................................................................................... 33 3.2.4 Produkty z Hlavného informačného systému ........................................... 37 3.2.5 Párovanie produktov ................................................................................. 37

3.2.6 Databázový model .................................................................................... 40 3.2.7 API ............................................................................................................ 41 3.2.8 Automatizácia ........................................................................................... 42 3.2.9 Zhrnutie ..................................................................................................... 43

3.3 Finálna verzia ...................................................................................................... 44

3.3.1 Aplikačný a vývojový stack ...................................................................... 44

3.3.2 Crawling .................................................................................................... 45 3.3.3 Parsing ...................................................................................................... 45 3.3.4 Zabezpečenie archivácie ........................................................................... 46

3.3.5 Párovanie produktov ................................................................................. 46 3.3.6 Databázový model .................................................................................... 47

3.3.7 Zhrnutie ..................................................................................................... 53

3.4 Zhodnotenie ......................................................................................................... 54

3.4.1 Ekonomické zhodnotenie .......................................................................... 54 3.4.2 Prínosy ...................................................................................................... 54 3.4.3 SWOT analýza .......................................................................................... 55

ZÁVER ........................................................................................................................... 56

ZOZNAM POUŽITÝCH ZDROJOV ............................................................................ 57

ZOZNAM OBRÁZKOV ................................................................................................ 62

ZOZNAM PRÍLOH ........................................................................................................ 63

Page 12: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

11

ÚVOD

Prvé internetové obchody začali vznikať pred viac ako 10 rokmi. S prudkým rozvojom

internetového pripojenia do každej domácnosti sa prirodzene zvyšoval aj dopyt

sprostredkúvaný cez tento kanál. To, čo bolo pôvodne len doplnkom ku kamennej

predajni, sa postupne stalo hlavným predajným kanálom mnohých spoločností

a konkurenčný boj sa preniesol z nákupných centier do obrazoviek počítačov.

Vďaka prepojeniu informačných systémov sa stalo sledovanie konkurencie jednoduchšie

a rýchlejšie. Stačilo otvoriť webový prehliadač a informácie konkurenta sú dostupné ako

na dlani. Katalóg produktov, ceny, akcie, skladové zásoby.

V rámci tejto bakalárskej práce sa zameriam na návrh časti informačného systému

slúžiaceho na automatizáciu činnosti spojenými so sledovaním verejne dostupných

informácií konkurencie.

Page 13: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

12

CIEĽ A POSTUP SPRACOVANIA PRÁCE

Cieľom tejto bakalárskej práce je návrh časti informačného systému slúžiacej na zber

verejne prístupných informácií o produktoch konkurenčných spoločností. Proces zberu

by mal byť plne automatizovaný a výstupy integrované do informačného systému

a prístupné zamestnancom. Členenie práce je rozdelené do niekoľkých častí.

Prvým krokom bude analýza súčasného stavu zahŕňajúca prehľad konkurencie na trhu,

zoznam požadovaných informácií a dôležitosť ich úpravy, spracovania a archivovania.

Spomeniem aj už existujúce riešenia podobného zamerania a ich potencionálne využitie.

Druhým bodom je vytvorenie Prototypu nášho systému. Prototyp zastáva funkciu bežnej

Analýzy uskutočniteľnosti, avšak venuje sa aj výberu vhodných technológií a ich

overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre ďalšiu časť práce.

Posledným bodom je Finálna verzia informačného systému, ktorá bude spĺňať všetky

ciele a bude odladená na dlhodobé používanie. Dôraz bude daný na návrh databázy,

keďže tá sa môže ľahko stať úzkym hrdlom celého systému.

Page 14: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

13

1 TEORETICKÉ VÝCHODISKA PRÁCE

V tejto kapitole sa pokúsim vymedziť znalosti potrebné k spracovaniu celého projektu.

Zameriam sa na všeobecné informácie, pokračujem technológiami komunikácie,

manipulovania s informáciami a venujem sa aj pojmom Regulárne výrazy a EAN

doplňujúcich pokrytie niektorých časti práce.

1.1 Internet a jeho služby

Celá práca stojí na internete a jeho službách, preto by som rád venoval zopár viet

základným pojmom.

1.1.1 World Wide Web

World Wide Web (voľne preložiteľné ako Celosvetová sieť) je služba k sprístupneniu

hypertextových a grafických dokumentov a informácií. Funkčnosť WWW a podstata

vyhľadávacích serverov je založená na zahrnutí odkazov na dokumenty, obrázky,

databázy a ostatné zdroje. Táto služba sa objavila v roku 1991 a zapríčinila prudký rozvoj

internetu [1, s. 12].

1.1.2 Elektronický obchod

Elektronický obchod (skrátene eshop) je špeciálna webová aplikácia slúžiaca

k sprostredkovaniu obchodných transakcií na internete, väčšinou z oblasti B2C [2].

Základom eshopu je bežný katalóg výrobkov, ktoré sú obvykle radené do kategórií. Eshop

ďalej obsahuje detaily jednotlivých výrobkov, vyhľadávanie medzi výrobkami (podľa

názvu alebo vlastností) a voliteľne aj recenzie, články a hodnotenia [2].

Akonáhle si používateľ eshopu vyberie svoj produkt, dochádza k nákupnému procesu

počas ktorého si vyberie spôsob dodania, spôsob platby a vyplní potrebné údaje [2].

1.2 Technológie

V tejto časti práce objasním technológie prezentácie informácií (front-end), spracovania

informácií (back-end), uskladnenia informácií (databáza) a tiež technológií označovania

tovaru.

Page 15: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

14

1.2.1 HTTP 1.1

HTTP (HyperText Transfer Protocol, Protokol na prenos hypertextu) je bezstavový

protokol aplikačnej pre informačné systémy používajúce hypertext. Definuje http správy,

hlavičky a formát URI (Uniform Resource Identifier) adries [3].

Základom komunikácie je HTTP Požiadavka od klienta a HTTP Odpoveď od servera [4].

HTTP Požiadavka pre adresu http://www.vutbr.cz/index.php vyzerá nasledovne:

GET /index.php HTTP/1.1

Host: www.vutbr.cz

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64)

Accept: text/html;q=0.9,image/webp;q=0.8

Accept-Encoding: gzip, deflate, sdch

Accept-Language: sk,cs;q=0.8,en-GB;q=0.6,en;q=0.4,de;q=0.2

V tejto HTTP Požiadavke klient informuje webserver o tom, že chce obsah stránky

index.php zo serveru www.vutbr.cz. Ďalej informuje o sebe a o tom aké štandardy

a jazyky podporuje.

HTTP Odpoveď od servera www.vutbr.cz môže byť nasledovná:

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Scientific Linux)

Content-Type: text/html; charset=utf-8

Content-Encoding: gzip

Content-Length: 8976

<html>

...

</html>

V tejto Odpovedi server odpovedá že požiadavka prebehla v poriadku a odosiela svoju

identifikáciu a tiež informácie o obsahu ktorý posiela. Za HTTP Hlavičkami nasleduje 1

prázdny riadok a následne samotný obsah stránky [Vlastné spracovanie].

1.2.2 Web server

Web server je počítačový program ktorý spracováva požiadavky webových klientov.

Týmto výrazom sa tiež môže označovať počítač ktorého hlavnou funkciou je obsluha

webových klientov [5].

Page 16: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

15

Web server najčastejšie komunikuje s klientom pomocou protokolu HTTP. Za týmto

účelom počúva na prichádzajúce HTTP požiadavky a tie spracováva samostatne alebo

s pomocou doplnkov či iných softvérov [5].

Základným príkladom pre takýto proces môže byť požiadavka klienta na stránku ktorá je

napísaná v PHP a ktorá potrebuje údaje z databázy. Webový server túto požiadavku

príjme, posunie PHP procesoru na spracovanie a pripravenú stránku odošle späť klientovi

[4]. Tento proces je znázornený na nasledujúcom obrázku:

Obrázok 1: Príklad spracovania dynamickej webovej stránky [4]

1.2.3 HTML

HyperText Markup Language (HyperTextový značkovací jazyk) bol primárne navrhnutý

ako jazyk pre sémantický opis vedeckých dokumentov, no jeho všeobecný dizajn a

adaptácia a 5 revízií z neho spravili štandard pre World Wide Web [6].

V súčasnej dobe je vo verzií 5 (označuje sa HTML5), no často sa stretneme s jeho staršou

verziou 4.01 (označuje sa HTML) [6].

Page 17: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

16

Píše sa vo forme HTML elementov skladajúcich sa zo značiek uzavretých v ostrých

zátvorkách. Tieto značky sú väčšinou párové (napríklad <h1>Nadpis</h1>) ale môžu byť

aj nepárové (napríklad <img>) [6].

1.2.4 CSS

Cascading Style Sheets je jednoduchý mechanizmus pre pridávanie štýlov (napríklad

písma, farby, medzery) do webových dokumentov [7].

Napríklad ak chceme aby všetky elementy DIV s triedou popis mali biely text na čiernom

pozadí, môžeme to zapísať takto:

div.popis {

color: white;

background-color: black;

}

Namiesto názvov farieb môžeme tiež použiť napríklad HEX kódy [7].

1.2.5 Bootstrap 3

Bootstrap je najpoužívanejší CSS framework súčasnosti [8], [9].

Vyznačuje sa mobile-first prístupom, podporou responzívneho dizajnu a množstvom

preddefinovaných dizajnových prvkov medzi ktoré patria formuláre, tabuľky, tlačidla či

obrázky [8].

1.2.6 JavaScript

JavaScript (skrátene JS) je dynamický programovací jazyk. Najčastejšie sa používa ako

súčasť webového prehliadača, ktorého implementácia umožňuje spúšťanie skriptov na

strane klienta, interakciu s používateľom, ovládať prehliadač, komunikovať asynchrónne

a upravovať zobrazený dokument [10].

V súčasnosti je dostupné množstvo implementácií virtuálnych strojov jazyka JavaScript,

proprietárnych i s otvoreným zdrojovým kódom, pričom niektoré z týchto implementácií

je možné používať ako knižnice do iných programov a mať tak podporu tohto jazyka v

prakticky ľubovoľnej aplikácii. Spôsoby interpretácie sa rôznia medzi implementáciami.

Niektoré využívajú jednoduché spracovanie kódu do abstraktného syntaxného stromu,

ktorý následne prechádzajú a interpretujú priamo zdrojový kód. Oveľa efektívnejšie sú

implementácie, ktoré kód spracujú do podoby bajtkódu - vlastnej reprezentácie

Page 18: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

17

jednotlivých inštrukcií programového kódu. Tento bajtkód je interpretovaný následne

virtuálnym strojom, ktorý môže byť registrový alebo zásobníkový, čo tiež ovplyvňuje

jeho výkon. V poslednej dobe sa začínajú objavovať implementácie, ktoré prevádzajú

JavaScriptové programy priamo do procesorových inštrukcií a teda ich môžu priamo

spustiť na danej architektúre bez potreby dodatočného virtuálneho stroja [11].

Pomocou JavaScriptu môžeme jednoduchým spôsobom oživiť statické dokumenty

HTML a doplniť ich o prvky ako sú animácie, kontextové okná či overenie vstupov [1, s.

12].

1.2.7 jQuery

jQuery je rýchla, malá a funkčne bohatá JavaScriptová knižnica. Robí veci ako HTML

prechádzanie a manipulácia, ošetrenie udalosti, animácie a Ajax oveľa jednoduchšími

s ľahko použiteľným API ktoré funguje naprieč množstvom prehliadačov. V kombinácií

s všestrannosťou a rozšíriteľnosťou, jQuery zmenilo spôsob ako milióny ľudí píšu

JavaScript [12].

jQuery je najpoužívanejšia [13] JavaScriptová knižnica, ktorá okrem vyššie spomenutých

výhod umožňuje:

výber DOM elementov pomocou multiprehliadačového výberovacieho

systému s otvoreným zdrojovým kódom Sizzle,

prechádzanie a modifikácia DOM (vrátane podpory pre CSS 1-3),

udalosti,

CSS manipulácia,

efekty a animácie,

Ajax [14].

1.2.8 PHP

PHP je skriptovací jazyk na strane servera navrhnutý pre vývoj webových stránok ale

taktiež používaný ako programovací jazyk pre všeobecné účely [15].

S PHP je jednoduché vytvárať dynamické prvky na webových stránkach. Súboru so

skriptom stačí nastaviť príponu .php a web server ho spracuje [4].

Page 19: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

18

Všetko čo potrebujete urobiť z pohľadu vývojára je len uzavrieť váš kód do <?php ?>

značiek.

<?php

echo “Ahoj svet! Dnes je “ . date(“l”) . “. “;

?>

Ako sa máš?

Otváracia značka <?php hovorí webovému serveru aby interpretoval nasledujúci kód až

po ?>. Všetko mimo tejto značky sa pošle klientovi ako HTML, takže text „Ako sa máš?“

sa zobrazí v prehliadači. Funkcia date(“l”) zobrazí aktuálny deň v týždni. Výsledok teda

bude vyzerať takto:

Ahoj svet! Dnes je streda. Ako sa máš?

PHP umožňuje naplno ovládať náš web server: či už chceme modifikovať HTML,

spracovať kreditnú kartu, uložiť informácie do databázy alebo stiahnuť inú webovú

stránku [4].

1.2.9 Twig

Twig je šablónovací systém pre PHP. Jeho hlavnými vlastnosťami sú:

rýchlosť: Twig kompiluje šablóny do PHP kódu,

bezpečnosť: Twig spúšťa nedôveryhodný kód v pieskovisku, čo ho umožňuje

využiť aj tam, kde dizajn upravujú samotný používatelia webu,

flexibilita: Twig umožňuje definovať vlastné značky a filtre.

[16]

Nasledujúci kód rozširuje šablónu base.html v ktorej definuje blok navigationBlock.

V ňom vytvorí list s ID navigationList a následne iteruje nad premenou navigation. Pre

každý prvok v poli navigation vytvorí li element a v ňom a element s odkazom a textom

podľa aktuálne iterovanej položky.

{% extends "base.html" %}

{% block navigationBlock %}

<ul id="navigationList">

{% for item in navigation %}

<li><a href="{{ item.href }}">{{ item.caption

}}</a></li>

Page 20: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

19

{% endfor %}

</ul>

{% endblock navigationBlock %}

Výsledný kód môže vyzerať napríklad takto:

<html>

<body>

<ul id=”navigationList”>

<li><a href=”home.php”>Domov</a></li>

<li><a href=”projects.php”>Projekty</a></li>

</ul>

</body>

</html>

Twig tiež umožňuje použitie logických konštrukcií ako napríklad if. [17]

1.2.10 PHP Simple HTML DOM Parser

PHP Simple HTML DOM Parser je HTML DOM parser napísaný v PHP ktorý umožňuje

jednoduché manipulovanie s HTML. Hlavnými vlastnosťami sú:

podpora nevalidného HTML,

hľadanie značiek v HTML stránke podobne ako selektory v jQuery,

extrahovanie obsahu z HTML pomocou jedného riadku kódu [18].

Ukážka použitia:

$html = file_get_html('http://www.google.com/');

foreach($html->find('a') as $element)

echo $element->href . '<br>';

Vyššie uvedený kód načíta stránku http://www.google.com a vypíše všetky odkazy ktoré

na nej nájde do jednotlivých riadkov [18].

1.2.11 SQL

SQL (Structured Query Language, štruktúrovaný jazyk požiadaviek) je štandardizovaný

jazyk používaný k vytvoreniu a modifikovaniu relačných databázy [19, s. 400].

Tento jazyk je voľne založený na angličtine a používa sa aj v ostatných databázach ako

je Oracle a Mircorosft SQL Server. Je navrhnutý aby umožnil jednouché požiadavky aj

z príkazového riadku. Príklad požiadavku:

Page 21: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

20

SELECT nazov FROM knihy WHERE autor LIKE 'Charles%';

Táto požiadavka nám vráti názvy všetkých kníh z tabuľky knihy ktorých meno autora

začína na slovo Charles [4].

1.2.12 MySQL

MySQL je databázový systém pre relačné databázy. Je častou voľbou vývojárov, pretože

má otvorený zdrojový kód, je veľmi rýchly, spoľahlivý, škálovateľný a jednoduchý na

použitie [20].

1.2.13 Dibi

Dibi je malá a múdra databázová vrstva. Jej cieľom je maximálne uľahčiť prácu

programátorov pri práci s relačnými databázami. To dosahuje:

zjednodušením zápisu SQL príkazov,

jednoduchým prístupom k metodám aj bez globálnych premenných,

funkciami pre rutinne úlohy,

prenositeľnosťou medzi databázovými systémami [21].

1.2.14 API

Application program interface je súbor pravidiel pre komunikáciu vrstiev softvéru

navzájom. Existuje mnoho typov API, ako napríklad API operačného systému, API

aplikácií, API knižníc či API webstránok [22].

1.2.15 JSON

JSON (JavaScript Object Notation) je jednoduchý formát na výmenu dát. Je ľahko

čitateľný a zapisovateľný ako pre ľudí, tak aj pre stroje. Je jazykovo nezávislí ale používa

konvencie známe pre programátorov v jazykoch ako sú C, C++, C#, Java, JavaScript,

Perl, Python a mnoho ďalších [23].

1.2.16 Cron

Cron je názov program ktorý umožňuje používateľom unixových systémov vykonávať

príkazy alebo spúšťať skripty automaticky vo vopred špecifikovanom čase a/alebo

dátume [24].

Konfigurácia cronu je možná viacerými spôsobmi. Jedným z nich je využitie takzvaného

crontab súboru. Jednotlivé riadky definujú čas a príkaz v nasledujúcom formáte:

Page 22: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

21

Minúta Hodina Deň Mesiac DeňVTýždni Príkaz

Hodnoty je možné zadávať konkrétne číslom, použiť zoznam oddelený čiarkami, rozsah

oddelený mínusom, * pre akúkoľvek hodnotu alebo */n pre akúkoľvek hodnotu deliteľnú

číslom n. Napríklad riadok:

*/15 9-17 20 11,12 * /home/viliam/script.sh

spustí script.sh v novembri a decembri, 20. deň v mesiaci medzi 9 až 17 hodinou každých

15 minút [24].

1.2.17 Regulárne výrazy

Regulárne výrazy sú vzory, ktoré sa používajú na vyhľadanie kombinácií znakov

v testových reťazcoch [25].

Regulárne výrazy nám umožňujú využiť množstvo funkcií ako sú zástupné znaky,

multiplikátory, logické funkcie a zaznamenávacie skupiny na nájdenie nami

požadovaného textu či už v štruktúrovaných ale hlavne v neštruktúrovaných textových

dátach [25].

Definujme textový reťazec:

„Vysoké Učení Technické - Fakulta Podnikatelská.“

Zavolám funkciu ktorá vráti všetky znaky vyhovujúce nasledujúcemu regulárnemu

výrazu:

[A-Z\-]

Výsledkom tejto funkcie budú všetky veľké písmena a pomlčky v prehľadávanom texte.

V našom prípade bude výsledok takýto:

VUT-FP

1.2.18 Čiarové kódy

Čiarový kód je optická strojovo-čitateľná reprezentácia dát. Tieto dáta sa zvyčajne týkajú

objektu ku ktorému je čiarový kód fyzicky pripojený [26].

Čiarové kódy majú rôzne podoby. Najčastejšie sú 1D (napríklad UPC, EAN-13) a 2D

(QR kód) čiarové kódy [26].

Page 23: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

22

1.2.19 Medzinárodné číslo tovaru (EAN-13)

„EAN-13 je najbežnejšie používaným čiarovým kódom. Používa sa na označenie

spotrebného tovaru určeného na predaj konečnému spotrebiteľovi [27].“

1.3 Web scraping

V tejto časti práce objasním pojmy súvisiace so získavaním informácií zverejnených na

internete prostredníctvom služby WWW.

1.3.1 Scraping

Web scraping (tiež nazývaný Screen Scraping, Web Data Extraction alebo Web

Harvesting) je súbor procesov používaný na extrahovanie informácií z webových stránok

a ich následné uloženie [28].

1.3.2 Crawling

Crawling (voľne preložiteľné ako prechádzanie) je v kontexte web scrapingu proces, pri

ktorom prechádzame webové stránky, sťahujeme ich obsah a ukladáme ho [29, s. 31].

1.3.3 Parsing

V kontexte web scrapingu je parsing chápaný ako extrahovať informácií z dát. Na

dosiahnutie tohto cieľa môžeme použiť viacero nástrojov, ako napríklad regulárne výrazy

alebo DOM manipuláciu [29, s. 13].

1.4 Metodológia návrhu databázy

Metodológia návrhu databázy je štruktúrovaný prístup používajúci procedúry, techniky,

nástroje a dokumentáciu s cieľom podporiť a uľahčiť proces návrhu. Skladá sa zo štádií

a štádia ďalej z krokov, ktoré vedú návrhára technikami zodpovedajúcimi každým

štádiom projektu [30, s. 206].

Podľa knihy Mistrovství databáze môžeme návrh rozdeliť do troch fázy: konceptuálny,

logický a fyzický návrh databázy [30, s. 206].

1.4.1 Konceptuálny návrh databázy

Konceptuálny návrh databázy je proces vytvorenia modelu dát používaných v organizácií

bez akýchkoľvek úvah o fyzickej implementácií [30, s. 206].

Page 24: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

23

V tejto fáze sa vytvára konceptuálny model dát na základe dát používaných organizáciou

bez akéhokoľvek uvažovania o podrobnostiach ako sú podkladový model dát (napríklad

relačný dátový model) alebo iných úvah o fyzickej implementácií. Konceptuálny model

dát identifikuje dôležité entity a vzťahy, ktoré je potrebné reprezentovať v databáze.

Následne je tento model zdrojom informácií pre logickú fázu návrhu [30, s. 206].

Skladá sa z týchto krokov:

1. Konceptuálny návrh databázy

a. Identifikácia entít: definovanie hlavných objektov o ktoré majú

používatelia záujem.

b. Identifikácia vzťahov: nájdenie a označenie súvislostí medzi entitami

a určenie ich početnosti.

c. Identifikácia a spojenie atribútov s entitami alebo vzťahmi: hľadanie

vlastností entít ako sú identifikátory a charakteristiky.

d. Určenie domén atribútov: určenie množiny hodnôt ktoré môžu jednotlivé

atribúty nadobúdať, napríklad rozsahy čísel identifikátorov.

e. Určenie atribútov, ktoré budú kandidátnymi, primárnymi

a alternatívnymi kľúčmi: určenie kandidátnych kľúčov a následne

vybratie primárnych.

f. Špecializácia/generalizácia entít: nepovinný krok, určenie nadtried

a podtried jednotlivých entít.

g. Kontrola redundancie v modeli: kontrola redundancie entít a vzťahov

v modeli.

h. Kontrola, či model podporuje používateľské transakcie: zaistenie, aby

model podporoval požadované transakcie.

i. Posúdenie konceptuálneho návrhu databáze s používateľmi: posúdenie

modelu spolu s používateľmi [30, s. 209].

Výsledkom týchto krokov by mal byť konceptuálny návrh napríklad vo forme ER

diagramu [30, s. 207].

Page 25: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

24

1.4.2 Logicky návrh databázy

Logicky návrh databázy je proces vytvorenia modelu dát používaných organizáciou,

ktorý je založený na špecifickom modely dát, ale nezávislí na konkrétnom DBMS a iných

úvahách o fyzickej implementácií [30, s. 206].

V logickom návrhu databázy sa mapuje (prevádza) ER model do množiny relačných

tabuliek. Štruktúra každej tabuľky sa skontroluje pomocou normalizácie aby sa

minimalizovala redundancia. Tabuľky sa taktiež skontrolujú, aby sa uistilo, že sú schopné

podporovať transakcie požadované používateľmi. Taktiež sa definujú integritné

obmedzenia [30, s. 207].

Táto fáza sa skladá z nasledujúcich krokov:

2. Logicky návrh databázy:

a. vytvorenie tabuliek,

b. kontrola tabuliek pomocou normalizácie,

c. kontrola, či tabuľky podporujú používateľské transakcie,

d. kontrola integritných obmedzení,

e. posúdenie logického návrhu databázy s používateľmi [30, s. 232].

Na konci tejto fázy je definovaná množina normalizovaná tabuliek a väzieb s integritnými

obmedzeniami [30, s. 231].

1.4.3 Fyzický návrh databázy

Fyzický návrh databázy je proces vytvorenia popisu implementácie databázy vo

vnútornej pamäti; popisuje podkladové tabuľky, organizáciu súborov, index používané

pre dosiahnutie efektívnejšieho prístupu k dátam, všetky súvisiace integritné obmedzenia

a bezpečnostné obmedzenia [30, s. 207].

Fyzický návrh sa skladá z týchto krokov:

3. Prevod logického návrhu databázy do cieľového DBMS

a. Návrh podkladových tabuliek

b. Návrh reprezentácie odvodených dát

c. Návrh zostávajúcich integritných obmedzení

4. Voľba organizácie súborov a indexov

a. Analýza transakcií

Page 26: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

25

b. Voľba organizácie súborov

c. Voľba indexov

5. Návrh používateľských pohľadov

6. Návrh bezpečnostných mechanizmov

7. Zváženie zavedenia kontrolovanej redundancie

8. Monitorovanie a doladenie systému v prevádzke [30, s. 208]

Výsledkom tejto poslednej fázy je plne funkčný a optimalizovaný databázový systém

spĺňajúci kritéria používateľov [30, s. 207].

Page 27: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

26

2 ANALÝZA SÚČASNÉHO STAVU

V tejto kapitole bude realizovaná analýza súčasného stavu zahŕňajúca základy prehľad

trhu a konkurencie našej spoločnosti. Taktiež spomeniem podobné riešenia, ktoré by sme

mohli v práci použiť.

2.1 Trh a konkurencia

Na trhu maloobchodného predaja potravín a drogérie s rozvozom až domov sú najväčšími

hráčmi tieto spoločnosti:

itesco.cz: elektronická verzia kamenného obchodu tesco.cz. Okrem rozvozu

domov ponúkajú taktiež vyzdvihnutie pripraveného nákupu na ich pobočke.

rohlik.cz: na trhu je pomerne krátko (približne od júna 2014), poskytuje rozvoz

v Prahe a Brne a ich blízkom okolí [31]. Do konca roku 2016 by chceli byť

v každom meste Českej republiky nad 30 000 obyvateľov [32]. Ako jediná

dokáže doviezť nákup už do 90 minút od jeho objednania.

kolonial.cz: je taktiež nováčikom na trhu. Poskytuje rozvoz v okolí Prahy, Plzne,

Pardubíc, Hradec Králové a Mladej Boleslavy [33]. Objednaný tovar vám

privezú až nasledujúci deň po objednaní.

Na trhu je ešte zopár ďalších spoločností, ktoré sú už ale lokálneho typu, napríklad:

kosik.cz (Praha), Z-market (Praha) a PotravinyDomu.cz (Praha).

2.2 Analýza sledovaných informácií

Do úvahy musím zobrať dve druhy informácií:

požadované informácie: informácie, ktoré budú prioritným výstupom

navrhovaného informačného systému:

o bežná cena za produktu,

o cena za jednotku,

o jednotka,

o aktuálna zľava,

informácie potrebné pre spárovanie produktu: informácie, ktoré sú potrebné alebo

nápomocné pri spárovaní sledovaného produktu s tým našim produktom:

o názov,

Page 28: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

27

o EAN,

o jednoznačné identifikačné číslo produktu v sledovanom eshope,

o URL adresa,

o kategória prvého, druhého a tretieho stupňa,

o odkaz na obrázok.

Všetky tieto informácie budú nápomocné. Či ich ale bude možné reálne získať ukáže až

analýza stránky eshopu.

2.3 Podobné riešenia

Na trhu existujú riešenia podobné tomu, ktoré sa snažím vypracovať v tejto práci. Majú

ale svoje obmedzenia pre ktoré ich nemôžem použiť.

2.3.1 Tescoviny.cz

Portál tescoviny.cz zaznamenáva ceny portálu itesco.cz. Primárne je zameraný práve na

zľavy a podľa histórie cien sa snaží upozorňovať na sporné zľavy, teda zľavy ktorým

predchádzalo zdraženie produktu.

Tento portál neumožňuje listovať všetky produkty, iba produkty v zľave. Taktiež

neponúka verejné API. Z týchto dôvodov nie je vhodný na použitie v našom prípade.

2.3.2 Atoto.cz

Počas písania tejto bakalárskej práce bol zverejnený projekt atoto.cz. Ide o projekt

porovnávača online supermarketov. Porovnáva ponuky obchodov itesco.cz, rohlik.cz,

kolonial.cz, PotravinyDomu.cz, Z-market.cz a kosik.cz.

Portál neponúka históriu cien. Taktiež neponúka verejné API. Z týchto dôvodov nie je

vhodný na použitie v našom prípade.

Page 29: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

28

3 VLASTNÝ NÁVRH RIEŠENIA

Nasledujúca kapitola sa zaoberá vlastným návrhom riešenia informačného systému. Bude

popisovaný plán postupu a následne najhlavnejšie časti informačného systému. Text je

doplnení o podstatné obrázky, diagramy a ukážky kódu.

3.1 Plán postupu

Ako prvé budeme musieť definovať informácie a procesy potrebné pre dosiahnutie našich

cieľov. Samotný informačný systém vypracujeme v dvoch verziách: Prototyp

a Finálna verzia.

Prvá verzia nazvaná Prototyp bude brať do úvahy iba jeden sledovaný eshop a nebude

zaznamenávať históriu cien. Vypracovanie prototypu nám pomôže odhaliť problémy,

ktoré musíme brať do úvahy pri návrhu Finálnej verzie. Mal by:

overiť funkčnosť prechádzania stránok a prípadné blokovania tejto činnosti,

efektívne vyriešiť spracovanie sťahovaného obsahu,

navrhnúť používateľské rozhranie pre párovanie produktov,

pripraviť dátové podklady pre finálnu verziu.

Finálna verzia bude oproti Prototypu:

prispôsobená pre pridanie viacerých sledovaných eshopov,

zaznamenávať históriu cien produktov,

zaznamenávať kategórie produktov.

Page 30: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

29

3.2 Prototyp

Prototyp vypracujem ako oddelený Informačný systém ktorý bude komunikovať

s Hlavným informačným systémom pomocou API rozhraní. Tento prístup, ktorému sa

hovorí aj mikroslužby [34], umožní vyššiu flexibilitu, možnosti experimentovania

a presnejší monitoring.

3.2.1 Aplikačný a vývojový stack

Je pravdepodobné, že sa Informačný systém neskôr integruje do Hlavného informačného

systému, preto budeme vývojový stack držať blízko neho.

1. Databáza: volíme MySQL riešenie, ktoré je široko podporované, flexibilne

a bezplatné.

2. Back-end: pre nami zvolený zámer som sa rozhodoval medzi Python a PHP.

Z dôvodu, že Hlavný informačný systém je napísaný v PHP, tak pre back-end

volíme PHP.

3. Front-end: aplikácia bude obsluhovaná firemnými zamestnancami ktorých

hardvérové a softvérové vybavenie sa líši. Jasnou multiplatformovou voľbou je

využitie webových technológií HTML, CSS a JavaScript.

Aplikácia bude bežať na vlastnom virtuálnom servery. K dispozícií je najnižšia verzia od

DigitalOcean s parametrami:

1 jadro z Intel Xeon E5-2630L v2 @ 2.40 GHz,

512 MB RAM,

20 GB SSD,

1000 GB povoleného dátového prenosu mesačne.

Na servery bude bežať:

Ubuntu 14.04 LTS,

ISPConfig 3.0 pre správu web hostingu,

Apache 2.4 ako web server,

PHP 5.6,

MySQL 5.6.

DigitalOcean ponúka sledovanie zaťaženia serveru priamo z rozhrania pre správu, preto

nebudem používať žiaden ďalší softvér na takýto účel.

Page 31: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

30

3.2.2 Crawling

V rámci tejto časti práce zanalyzujem stránky itesco.cz a navrhnem spôsob ich

prechádzania tak, aby systém žiadnu nevynechal.

Úvodná stránka eshopu iTesco.cz (http://nakup.itesco.cz/) na vrchu zobrazuje 8 kategórií

1. úrovne. Po otvorení môžeme vidieť, že tieto kategórie sa delia na kategórie 2. a 3.

úrovne. Tie nás ale zatiaľ nezaujímajú.

Obrázok 2: Úvodná stránka http://nakup.itesco.cz [35]

Kategórie 1. úrovne majú svoj názov a ID, ako dokumentuje snímka obrazovky nižšie

s ukážkou zdrojového kódu.

Obrázok 3: Ukážka zdrojového kódu zápisu kategórií 1. úrovne [35]

Po vybraní príslušnej kategórie 1. úrovne sa zobrazia všetky produkty ktoré pod ňu patria.

Na stránke s týmto zoznamom produktov sa nachádzajú ovládacie prvky na zotriedenie

Page 32: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

31

produktov a ich stránkovanie. Aktuálny stav týchto prvkov sa premieta do URL adresy,

čo je možné vidieť na snímku obrazovky nižšie.

Obrázok 4: Ukážka premietnutia sa stavu ovládacích prvkov do URL adresy [36]

Zmenou parametrov v URL adrese teda môžeme prechádzať jednotlivé kategórie

a ich stránky. Ak prídeme na stránku bez produktov, tak vieme že sme na konci zoznamu

a máme ísť na ďalšiu kategóriu.

Page 33: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

32

START

Kategórie :=

NačítajZoznam

Kategórií()

Pre každú položku

Kategórie ako

Kategória

Stránka := 1

Pokračovanie

Stránka := Stránka + 1

Produkty :=

NajdiProdukty z

Kategória na

Stránka

Počet

položiek v

Produkty

> 0

Zapíš

Produkty

do

databázy

Áno

Nie

KONIEC

Koniec zoznamu

Obrázok 5: Vývojový diagram pre prechádzanie stránok [Vlastné spracovanie]

Page 34: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

33

3.2.3 Parsing

Teraz, keď je definovaný spôsob akým bude systém stránky prechádzať, definujem aké

informácie chcem extrahovať, navrhnem 2 spôsoby ich extrahovania, porovnám ich

a vyberiem vhodnejší.

3.2.3.1 Analýza informácií na stránke

Najprv musím zistiť čo z týchto stránok bude sťahovať. Načítam si stránku ešte raz, ale

s vypnutým JavaScriptom a pozrieme si zdrojový kód prvého produktu.

Obrázok 6: Ukážka informácií o produkte a ich zdrojový kód [36]

V zdrojom kóde môžeme vidieť pre nás podstatné informácie:

identifikačné číslo produktu: 2001120239665,

názov produktu: Ady Klasik křen 170g,

cenu produktu: 22,90 Kč,

cenu za jednotku: 134,71 Kč,

cenovú jednotku: kg.

Po načítaní bez JavaScriptu si môžeme všimnúť že sa už nezobrazujú obrázky. Pri

načítaní s JavaScriptom je odkaz na obrázok: http://pi.ce-

tescoassets.com/assets/CZ/015/8586011131015/ShotType1_135x135.jpg

Odkaz na obrázok zároveň obsahuje EAN produktu. Tieto 2 podstatné informácie by sme

chceli mať, preto sa pustíme do ich získania.

Page 35: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

34

Ak si ešte raz načítame celú stránku aj s povoleným JavaScriptom a zanalyzujeme dátové

toky, zistíme, že sťahovanie obrázok je inicializované JavaScriptom v osobitnom súbore,

ktorý je ale minifikovaný a ťažko analýzovateľný.

Nakoniec sa nám ale podarilo nájsť požadované hodnoty v input značke a vo formáte

HTML enkódovaného JSONu. Po ich dekódovaní časť štruktúry vyzerá takto:

[

{

"Summary": {

"Id": "2001120016825",

"DefaultImageUrl":

"/CZ/525\8588000016525\ShotType1.jpg",

"AisleId": "Cat00000301"

}

},

{

"Summary": {

"Id": "2001120016859",

"DefaultImageUrl":

"/CZ/792\8588000016792\ShotType1.jpg",

"AisleId": "Cat00000301"

}

},

{

"Summary": {

"Id": "2001120016865",

"DefaultImageUrl":

"/CZ/334\8588000016334\ShotType1.jpg",

"AisleId": "Cat00000301"

}

}

]

Môžeme teda vidieť, že v týchto údajoch sú okrem iného aj dvojice identifikačného čísla

produktu a odkazu na obrázok pre všetky produkty na stránke. Z odkazu na obrázok

môžeme extrahovať EAN produktu.

Konečný postup parsovania teda znázorňuje nasledujúci diagram:

Page 36: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

35

ŠTART

IDaEAN :=

NačítajEANInf

ormacie()

KONIECProduktInfo :=

NačítajInformáci

eOProduktoch()

Výsledok :=

Spoj IDaEAN

a ProduktInfo

Obrázok 7: Vývojový diagram pre extrakciu informácií [Vlastné spracovanie]

V prípade parsovania informácií máme na výber z dvoch možností: regulárne výrazy

a DOM manipulácie. Vyskúšame obe možností a na konci zhodnotíme ich pozitíva

a negatíva.

3.2.3.2 Regulárne výrazy

Regulárny výraz ktorý by nám vrátil pole všetkých ID hlavných kategórií vyzerá

nasledovne:

/\/cs-CZ\/Department\/List\?navId=P1_([Cat0-9]{0,15})"/g

O niečo zložitejší bude výraz pre nájdenie všetkých nami požadovaných informácií

o produktoch:

/<li class="(first|second|third)Product.*?"><div id="p-

(\d*?)".*?title="(.*?)".*?(?:promoMsg">\s-

(\d{0,3})%.*?(\d*,\d*).*?(\d*,\d*).*?do ([0-

9\.]{8,10})|linePrice">([\d&#; ]*,\d*)).*?\(([\d&#;

]*,\d*).*?\/(.*?)\)/gs

Výsledkom tohto výrazu je pole nájdených hodnôt, ktoré následne treba preindexovať pre

ľahšiu orientáciu.

3.2.3.3 DOM manipulácia

Pre tento účel použijeme knižnicu „PHP Simple HTML DOM Parser“, ktorá vyberá

jednotlivé položky stránok pomocou Selectorov.

Pre načítanie ID kategórií použijeme nasledujúci kód:

$navigationAnchors = $html->find('ul.navigation

li.secondary a');

foreach ($navigationAnchors as $anchor) {

preg_match('/(Cat\d*)/', $anchor->href, $matches);

$taxonomyIDs[] = $matches[1];

}

Pre načítanie informácie o produktoch si pripravíme pole kde kľúč bude názov hľadanej

položky a hodnota bude Selector pre požadovanú položku zo stránky.

Page 37: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

36

$selectors = [

'name' => 'h2',

'price' => 'p.price span.linePrice',

'pricePerUnit' => 'p.price span.linePriceAbbr',

'sale' => 'div.promo',

'salePercentage' => 'p.promoMsg',

'saleUntil' => 'p.promoUntil',

];

Tieto selectory bude potrebné osobitne vykonať nad celým HTML dokumentom

s produktami.

3.2.3.4 Hodnotenie

V obidvoch prípadoch bude ešte potrebné z týchto hodnôt dekódovať špeciálne html

znaky a previezť reťazce na číselné hodnoty.

V prvom rade porovnám rýchlosť obidvoch prístupov pri parsovaní produktov.

Z rovnakej stránky uloženej v pamäti budem v nekonečnom cykle opakovať parsovanie

a po desiatich sekundách tento cyklus ukončím. Podľa počtu uskutočnených cyklov

vypočítam dĺžku jedného cyklu a zapíšem si ju. Toto zopakujem 10 krát, odstránim

najväčšiu a najmenšiu hodnotu a vypočítam priemer výsledných hodnôt.

Podobne budem postupovať aj pri hodnotení pamäťových nárokov.

Pre lepšiu predstavivosť, v grafe znázorňujem aj dĺžku trvania jednej sekundy a celkovú

dostupnú pamäť na servery.

Obrázok 8: Graf porovnanie rýchlosti parsovania údajov pomocou Regulárnych výrazov a DOM

manipulácie [Vlastné spracovanie]

512

23,25

1,25

1000

370,37

2,138

0 100 200 300 400 500 600 700 800 900 1000

Jedna sekunda

Celková RAM

Selectory

Regulárne

výrazy

Porovnanie náročnosti prístpov k parsovaniu údajov

Dĺžka trvania jednej operácie [ms] Pamäťové nároky [MB]

Page 38: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

37

Z grafu je jasné, že regulárne výrazy sú približne 173 krát rýchlejšie a majú 18 krát

nižšie nároky na pamäť.

Na tieto údaje sa ale treba pozrieť z globálnejšieho pohľadu celej aplikácie:

priemerná dĺžka sťahovania stránky je okolo 200 ms a medzi sťahovaniami

plánujem pauzu okolo 4 sekundy aby sme nezaťažovali server sledovaného

obchodu. Preto 370 ms je relatívne krátka doba, ktorá je pod 4 sekundy čakania

na ďalšiu stránku;

celková kapacita RAM serveru je 512 MB. Ak od tejto hodnoty odčítam 200 MB

pre operačný systém a ostatné služby (web server a databáza), ostane 312 MB.

Použitie selectorového prístupu parsovania teda zaberie iba okolo 7% zvyšnej

pamäte, čo je veľmi prijateľné číslo.

Ďalším, i keď subjektívnym, plusom pre selectorový prístup parsovania je prehľadnosť

kódu a s tým súvisiaca ľahšia udržateľnosť do budúcnosti.

Pre vyššie uvedené dôvody som sa rozhodol používať selectorovy prístup.

3.2.4 Produkty z Hlavného informačného systému

K produktom z Hlavného informačného systému máme prístup cez API. Údaje z API

obsahujú informácie o všetkých produktoch z Hlavného informačného systému sú vo

formáte JSON.

Po ich stiahnutí použijeme funkciu json_decode na prevedenia do klasického PHP poľa

s ktorým je už jednoduché manipulovať.

3.2.5 Párovanie produktov

Teraz keď má systém všetky potrebné informácie o produktoch v databáze, je potrebné

tieto produkty spárovať. Toto párovanie bude vykonávať človek. Za týmto účelom

navrhnem používateľské rozhranie ktoré umožní čo najrýchlejšie spárovanie produktov.

Používateľské rozhranie by malo ponúknuť nespárovaný produkt (ďalej ako párovaný

produkt) z nášho sortimentu a k nemu niekoľko navrhovaných možností párov (ďalej ako

možnosti). Ak žiadna z možností nevyhovuje, umožní človeku vyhľadať možností ručne.

Z týchto možností by mal človek vybrať práve jednu a potvrdiť ju, alebo zvoliť, že daný

párovaný produkt nemá v sledovanom obchode pár.

Page 39: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

38

Pred implementovaním používateľského rozhrania musím ešte vyriešiť algoritmus

výberu možných párov. Tu by som mohol využiť známosť EAN kódov v obidvoch

obchodoch. Na prvé miesto možností dosadím produkt ktorý má rovnaký EAN. Na ďalšie

miesta dosadím produkty, ktoré sú názvom čo najpodobnejšie párovanému produktu. Pre

porovnanie názvov použijeme MATCH ... AGAINST [37] algoritmus.

Celý spôsob párovania produktov bude vyzerať nasledovne:

ŠTART

produkt :=

NačítajNespáro

vanýProdukt()

produkt

existuje

možnosti :=

NájdiMožnosť

SEan(Produkt)

možnosti +=

NájdiMožnosti

SPodobnymNá

zvom(Produkt)

výber +=

NačítajVstupP

oužívateľa()

Zapíš do Databázy

Áno

KONIEC

Nie

Obrázok 9: Vývojový diagram postupu párovania produktov [Vlastné spracovanie]

Page 40: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

39

Zostáva už len navrhnúť a implementovať používateľské rozhranie podľa vyššie

spomenutých požiadaviek. Keďže ide o pomerne veľké množstvo informácií na

zobrazenie, rozhodol som sa návrh prispôsobiť dnes už dostupnému rozlíšeniu

1920x1080. Dizajn je ale responzívny a je možné ho použiť pri akomkoľvek rozlíšení.

Obrázok 10: Ukážka webového rozhrania pre párovanie produktov [Vlastné spracovanie]

Na snímke obrazovky vidno výsledné používateľské rozhranie s nasledujúcimi prvkami:

vľavo sa nachádza párovaný produkt: jeho názov, cena, obrázok a odkaz na

webstránku v obchode pre zobrazenie podrobných informácií;

vpravo je 6 možností zoradených podľa algoritmu vysvetleného vyššie. Prvý

možnosť je najpravdepodobnejšia a je predvolene označená. Jednotlivé položky

obsahujú názov, cenu, obrázok a odkaz na webstránku v obchode pre zobrazenie

podrobných informácií;

tlačidlo na návrat na zoznam produktov. Pre intuitívnejšie pochopenie je

zobrazené vľavo a doplnené o šípku ukazujúcu doľava. Taktiež je menšie ako

ostatné 2 tlačidlá, keďže táto možnosť je najmenej pravdepodobná na stlačenie;

vyhľadávacie pole ktoré umožňuje prehľadávať produkty v sledovanom obchode.

Vyhovujúce možnosti sa okamžite (menej ako 500ms) zobrazia na mieste

pôvodných možností, pričom stačí zadať len časť názvu hľadaného produktu.

Vyhľadávanie nie je závisle na diakritike ani na veľkosti písmen.

Page 41: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

40

tlačidlo na potvrdenie vybranej možnosti a tlačidlo na určenie, že daný produkt

nemá pár. Po kliknutí na niektoré z týchto tlačidiel je používateľovi zobrazený

ďalší párovaný produkt.

3.2.6 Databázový model

Pred vytvorením databázového modelu zhrnieme informácie ktoré budeme

zaznamenávať:

ourproduct: Náš sortiment:

o ourID: identifikačné číslo produktu,

o ourName: názov produktu,

o ourEan: EAN kód produktu,

o ourPrice: cena produktu,

o itescoHavePair: označuje či má pár v Tescu,

o itescoID: identifikačne číslo totožného produktu v Tescu.

itescoproduct: Produkty z itesco.cz:

o itescoID: identifikačné číslo produktu,

o itescoName: názov produktu,

o itescoEan: EAN kód produktu,

o itescoPrice: cena produktu,

o itescoPricePerUnit: cena produktu za mernú jednotku,

o itescoPriceUnit: merná jednotka,

o itescoIsOnSale: či je aktuálny produkt v akcií,

o itescoSalePercentage: aktuálna zľava na produkt,

o itescoSalePrice: aktuálna cena produktu po zľave,

o itescoSaleUntil: do kedy je zľava platná.

V obidvoch prípadoch zvolíme prirodzený primárny kľúč a to identifikačné číslo

produktu.

Dátové typy nie sú úplne optimalizované, pre potreby prototypu to nie je potrebné.

Page 42: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

41

Vytvoril som indexy podľa predpokladaného spôsobu využitia:

ourproducts:

o UNIQUE_itescoID: zabezpečuje, že jeden konkrétny itescoproduct môže

mať maximálne jeden pár v ourproduct,

o INDEX_ourPrice: urýchľuje vyhľadávanie produktov podľa ceny,

o FULLTEXT_ourName: urýchľuje vyhľadávanie produktov podľa názvu.

itescoproducts:

o INDEX_itescoPrice: urýchľuje vyhľadávanie produktov podľa ceny,

o FULLTEXT_itescoName: urýchľuje vyhľadávanie produktov podľa

názvu.

Výsledný databázový model znázorňuje nasledujúci ER diagram:

Obrázok 11: Diagram znázorňujúci architektúru databázy [Vlastné spracovanie]

Celý SQL príkaz na vytvorenie databázy podľa diagramu sa kvôli jeho rozsahu nachádza

v prílohe číslo 1.

3.2.7 API

Keďže náš systém beží oddelene od Hlavného informačného systému, je potrebné

pripraviť API rozhranie pre komunikáciu medzi týmito dvoma systémami.

Page 43: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

42

Hlavný informačný systém si od nás chce stiahnuť zoznam všetkých produktov ktoré

majú pár v sledovanom obchode a informácie o týchto produktoch vo formáte JSON.

Za týmto účelom pripravíme jednoduchý SQL SELECT ktorého výsledok prevedieme do

JSON formátu:

$matchedProducts = dibi::query("SELECT r.ourID, i.itescoID,

i.itescoName, i.itescoPrice, i.itescoPricePerUnit,

i.itescoPriceUnit, i.itescoIsOnSale,

i.itescoSalePercentage, i.itescoSalePrice,

i.itescoSaleUntil

FROM ourproducts AS r

INNER JOIN itescoproducts AS i USING (itescoID)")-

>fetchAssoc('ourID');

echo json_encode($matchedProducts);

Výstupom tohto jednoduchého skriptu je objekt podobný tomuto:

{

"100000": {

"ourID": 100000,

"itescoID": 20011203556,

"itescoName": "Fidorka kokosová 40g",

"itescoPrice": 17.9,

"itescoPricePerUnit": "447.5",

"itescoPriceUnit": "kg",

"itescoIsOnSale": true,

"itescoSalePercentage": 20,

"itescoSalePrice": 14.32,

"itescoSaleUntil": "25.6.2016"

},

(...)

}

3.2.8 Automatizácia

Aby sme ceny mali v systéme vždy aktuálne, musíme ich v pravidelných intervaloch

aktualizovať. Ideálny čas aktualizácie je v noci, kedy sú servery najmenej vyťažené.

K pravidelnému sťahovaniu pripravíme skript a ten bude spúšťať zabudovaná linuxová

funkcionalita Cron.

Page 44: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

43

Tento skript sa bude spúšťať každú noc o 1:30. Taktiež nastavím aby sa chybové hlášky

stderr presmerovali do výstupu stdout. Výstup potom zapíšem do dočasného priečinka.

To všetko dosiahneme pridaním jedného riadku do crontab súboru:

30 01 * * * /usr/bin/php

/var/www/cenovyindex.jobko.eu/web/parsing/start.php 2>&1 >

/tmp/start.php.log

3.2.9 Zhrnutie

Prototypom som overil návrh parsovania stránok, funkčnosť API rozhraní a výkon

servera. To všetko bude nápomocné pri budovaní finálnej verzie.

Netreba zabúdať na množstvo údajov ktoré sme nazbierali a ktoré poslúžia ako dôležitý

podklad pri návrhu databázy vo finálnej verzií.

Page 45: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

44

3.3 Finálna verzia

V tejto časti práce zhrniem pozitíva a negatíva jednotlivých častí prototypu a doplním

funkcie, ktoré sme naplánovali do finálnej verzie.

3.3.1 Aplikačný a vývojový stack

Použité technológie boli dostatočné a pre rozšírenie funkcionality nebudeme potrebovať

žiadne ďalšie špeciálne požiadavky.

Virtuálny server mal dostačujúci výkon. Odozva API výstupu je rýchla (poď 5 sekúnd),

20 GB miesta na disku je dostatočné a jedna kompletná aktualizácia cien potrebuje

preniesť približne 40 MB dát, čo je pi limite 1000 GB mesačne úplne vyhovujúce.

Jedinú výhradu mám k pamätí RAM, ktorej naplnenie v čase skenovania dosahovalo

hodnoty okolo 85%. Preto som sa rozhodol poistiť sa swapom s veľkosťou 2 GB.

Vzhľadom k použitému SSD disku (rýchlosť 562 MB/s, 1675 iops/s [38]) by ani

v prípade intenzívnejšej potreby swapu a povahy našej aplikácie nemal nastať problém.

Obrázok 12: Graf vyťaženia serveru [Vlastné spracovanie]

Page 46: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

45

Graf vyššie zobrazuje vyťaženie jednotlivých zdrojov virtuálneho servera. Prehľadne

dokazuje, že server má dostatočný výkon.

3.3.2 Crawling

Crawling z prototypu funguje spoľahlivo a podľa dostupných informácií zaznamenáva

všetky produkty.

Vo finálnej verzií chcem zaznamenávať 3 stupne kategórií. K dosiahnutiu tohto cieľa je

potrebné upraviť crawler tak, aby neprechádzal produkty po hlavných kategóriách, ale po

kategóriách 3. stupňa. Zvyšok princípu ostáva rovnaký.

Obrázok 13: Ukážka kategórií produkov a ich zdrojový kód [39]

Na snímku obrazovky vyššie vidíme kategórie 1., 2. aj 3. stupňa (napríklad „Čerstvé“,

„Slané pečivo“ a „Trvanlivé“). Selectorom na všetky kategórie 3. stupňa je:

div.side-nav__layer > div.layer-column > ul > li > ul > li

> a

Z týchto elementov už len stačí vytiahnuť href atribút a použiť ich ako ID kategórie cez

ktorú crawler bude iterovať.

3.3.3 Parsing

Využitie DOM manipulácie a dĺžka parsovania stránky približne 300 ms sa neukázala

ako problém.

Page 47: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

46

Pre zaznamenávanie kategórií ale musím parser upraviť. Tu sa ukazuje výhoda použitia

selectorov. Namiesto úpravy zložitého regulárneho výrazu stačí pridať tri selectory a ich

výstup uložiť do premennej.

3.3.4 Zabezpečenie archivácie

Informačný systém by mal archivovať ceny produktov v sledovaných obchodoch.

K archivácií môžeme zaujať dve prístupy, každá ma svoje výhody aj nevýhody:

1. Pravidelné zachytávanie celého obsahu: vždy pred aktualizáciou cien by systém

zachytil aktuálny stav tabuľky s cenami a zapísal ho.

2. Rozdielové zachytávanie: v čase aktualizácie cien by systém detegoval zmeny

a v prípade jej zistia by zmenu zachytil.

Prvý spôsob by bol jednoduchší na implementáciu no je náročnejší na požadovaný

diskový priestor. Pri počte produktov 40 000 by išlo o približne 15 MB. Pri každodennom

zachytávaní by išlo o 5 475 MB ročne.

Druhý spôsob by bol o niečo náročnejší na implementáciu aj výkon, pretože by sme

museli navrhnúť ako sledovať zmeny a potom tieto zmeny sledovať pri každej

aktualizácií. Na druhú stranu je oveľa šetrnejší na diskový priestor a pri počte zmien 500

denne by išlo o 53 MB ročne, ktoré by sa ešte mohli komprimovať. Aj z tohto dôvodu

som sa rozhodol pre použitie Rozdielového zachytávania.

3.3.5 Párovanie produktov

Párovanie produktov je potrebné prispôsobiť viacerým eshopom. Za týmto účelom som

pridal filter, aby si používateľ mohol vybrať pre ktorý obchod chce produkty párovať.

Používatelia tiež mali viaceré požiadavky ktoré som zapracoval:

možnosť filtrovať produkty podľa kategórií: pridal som pole ktoré tento výber

umožňuje,

funkciu na preskočenie produktu a jeho neskoršie zobrazenie: k tlačidlu

potvrdenia páru som pridal tlačidlo Preskočiť,

viacero navrhovaných možností: ich počet som zvýšil zo 6 na 24.

Spokojný boli s algoritmom návrhu najpravdepodobnejšej možnosti k párovanému

produktu.

Page 48: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

47

Obrázok 14: Ukážka novej verzie rozhrania pre párovanie produktov [Vlastné spracovanie]

Na snímke obrazovky vyššie je nové rozhranie. Z funkčných zmien pribudla ešte jedna

kozmetická: časť rozhrania s párovaným produktom je možné vertikálne posúvať

v prípade že je jeho názov veľmi dlhý.

3.3.6 Databázový model

Databázový model bude potrebné celý prerobiť. Bude o niečo zložitejší, preto jeho

vytváranie rozdelím na niekoľko častí. Použijem metodológiu podľa knihy Mistrovství

databáze [30, s. 205] upravenú pre potreby tejto práce.

3.3.6.1 Identifikácia entít

V tomto kroku identifikujeme hlavné objekty, ktoré budú v databáze figurovať.

Názov entity Popis entity Alias entity Počet výskytov

náš produkt Produkt z nášho

sortimentu

OurProduct 10 000

Kategória Kategória do ktorej

môže niektorý

z produktov patriť

OurCategory 1000

Elektronický

obchod

Elektronické

obchody ktoré

Eshop 2 - 5

Page 49: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

48

systém

zaznamenáva

Sledovaný produkt Produkty z iných

stránok

Product 40 000

Archívny produkt Produkt z inej

stránky ktorý už ale

nie je aktuálny

Archive_Product 800 000 za rok

Naskytuje sa otázka, prečo považovať produkty z nášho sortimentu a produkty

z ostatných eshopov za osobitné entity. Hlavnými dôvodmi je to, že u týchto entít

nebudeme zaznamenávať rovnaké atribúty a taktiež že produkty z nášho sortimentu

nebudeme archivovať.

3.3.6.2 Identifikácia vzťahov

V tomto kroku nájdeme vzťahy medzi objektami a obmedzíme ich multiplicitu.

Názov entity Multiplicita Vzťah Multiplicita Názov entity

OurCategory 1..1 Obsahuje 0..* OurProduct

OurCategory 1..1 Má podradenú 0..* OurCategory

Eshop 1..1 Predáva 1..* Product

OurProduct 0..1 Ma pár 0..počet(eshop) Product

Posledná väzba je obzvlášť dôležitá. Potrebujeme zaznamenávať nie len to či daný

OurProduct má pár, ale aj to, že sa zistilo že tento pár nemá alebo že je hľadenie páru pre

daný produkt v danom eshope preskočené. Preto tento vzťah budeme riešiť akousi

spojovacou tabuľkou párov, ďalej ako Matches.

3.3.6.3 Identifikácia atribútov

V tejto časti identifikujeme atribúty entít a určíme ich popis, typ, dĺžku a či môžu mať

NULL hodnotu. Pri určovaní typu a dĺžky nám výrazne pomôžu dáta nazbierané v štádiu

Prototypu.

Page 50: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

49

Entita: ourProduct

Názov atribútu Popis Typ a dĺžka Null

ourID Identifikačné číslo produktu 1-20 čísel Nie

name Názov produktu 0-150 znakov Áno

price Cena produktu Desatinné číslo, 6.2 Áno

EAN EAN produktu 0-20 čísel Áno

imageUrl Odkaz na obrázok produktu 0-120 znakov Áno

ourCategoryID ID kategórie do ktorej

produkt patrí

1-11 čísel Áno

Entita: ourCategory

Názov atribútu Popis Typ a dĺžka Null

ourCategoryID Identifikačné číslo kategórie 1-11 čísel Nie

name Názov kategórie 1-120 znakov Áno

parentID ID nadradenej kategórie 1-11 čísel Áno

Entita: eshop

Názov atribútu Popis Typ a dĺžka Null

eshopID Identifikačné číslo eshopu 1-3 čísla Nie

name Názov eshopu 1-30 znakov Nie

url Odkaz na úvodnú stránku

eshopu

1-100 znakov Nie

productBaseUrl Šablóna pre odkaz na

produkt v danom eshope

1-200 znakov Nie

Entita: product

Názov atribútu Popis Typ a dĺžka Null

eshopID ID eshopu v ktorom sa

produkt nachádza

1-3 čísel Nie

productID Identifikačné ID produktu 1-40 znakov Nie

Page 51: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

50

url Reťazec ktorý treba doplniť

do šablóny URL pre daný

eshop na získanie URL

adresy

1-250 znakov Nie

name Názov produktu 0-200 znakov Áno

price Bežná cena produktu Desatinné číslo, 6.2 Áno

unitPrice Jednotková cena produktu Desatinné číslo, 6.2 Áno

unit Jednotka produktu 0-20 znakov Áno

EAN EAN produktu 0-20 čísel Áno

imageUrl Odkaz na obrázok produktu 0-250 znakov Áno

onSale Určuje či je tovar vo

výpredaji

Bool hodnota Nie

salePercentage Zľava na tovar v percentách 0-3 čísla Áno

salePrice Cena tovaru po zľave Desatinné číslo, 6.2 Áno

saleUntil Do kedy je zľava platná Dátum Áno

category1 Kategória 1. úrovne 0-70 znakov Áno

category2 Kategória 2. úrovne 0-70 znakov Áno

category3 Kategória 3. úrovne 0-70 znakov Áno

insertedAt Čas kedy bol produkt

uložený do databázy

Dátum a čas Nie

updatedAt Čas kedy bol produkt

naposledy zmenený

Dátum a čas Nie

isActive Určuje či je produkt stále

v predaji

Bool hodnota Nie

Entita: match

Názov atribútu Popis Typ a dĺžka Null

ourID ourProduct 1-20 čísel Nie

eshopID Eshop 1-3 čísla Nie

productID Odkaz na Product 1-40 znakov Áno

Page 52: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

51

skipped Určite či je toto párovanie

aktuálne preskočené

Bool hodnota Nie

3.3.6.4 Určenie domén atribútov

Drvivá väčšina hodnôt v našej databáze budú hodnoty z externých systémov pre ktoré

nemá zmysel určovať domény.

Zostávajúce hodnoty atribútov majú domény určené v ich popise v tabuľke vyššie.

3.3.6.5 Určenie atribútov, ktoré budú primárnymi a alternatívnymi kľúčmi

Entita Typ Kľúč

ourProduct Jednoduchý, prirodzený, primárny ourID

ourCategory Jednoduchý, prirodzený, primárny ourCategoryID

eshop Jednoduchý, umelý, primárny eshopID

Jednoduchý, prirodzený, alternatívny name

product Zložený, umelý, primárny eshopID, productID

Zložený, umelý, alternatívny eshopID, url

match Zložený, umelý, primárny ourID, eshopID

3.3.6.6 Implementácia

Na snímku obrazovky nižšie môžete vidieť diagram databázy po dokončení

konceptuálneho, logického a fyzického návrhu a normalizácie.

Page 53: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

52

Obrázok 15: Diagram znázorňujúci architektúru databázy [Vlastné spracovanie]

Pre zabezpečenie archivácie cien som vytvoril tabuľku archive_products, ktorá má

rovnaké atribúty ako tabuľka products, avšak nemá rovnaké indexy a beží na ukladacom

systéme ARCHIVE, ktorý je prispôsobený na ukladanie veľkého množstvá dát

Page 54: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

53

a automatický ich komprimuje. Taktiež som pridal databázový spúšťač, ktorý pri úprave

záznamu v tabuľke products uloží pôvodný záznam do duplikovanej tabuľky

archive_products.

Celý SQL príkaz na vytvorenie databázy podľa diagramu sa kvôli jeho rozsahu nachádza

v prílohe číslo 1.

3.3.7 Zhrnutie

Vo finálnej verzií som zhodnotil funkčnosť jednotlivých častí prototypu, vykonal

požadované úpravy a doplnil nové funkcie.

Po úvodnom stiahnutí informácií zo sledovaných obchodoch a následnom spárovaní

produktov sme dostali databázu z ktorej môžeme dolovať dáta. Z týchto údajov je možné

generovať zaujímavé štatistiky a zopár príkladov sa nachádza v úplnej verzií tejto práce.

Page 55: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

54

3.4 Zhodnotenie

V tejto časti práce zhodnotím náklady navrhnutého Informačného systému, jeho prínosy

a taktiež spravím SWOT analýzu.

3.4.1 Ekonomické zhodnotenie

Výdaje spojené s informačným systémom tvoria tri hlavné položky: vývoj, údržba,

server.

Navrhovaný Informačný systém bude bežať popri oveľa väčšom Hlavnom informačnom

systéme a teda výdaje na server sú zanedbateľné.

Keďže ide o in-house riešenie, náklady na vývoj a údržbu budem uvádzať

v človekohodinách.

Položka Čas v človekohodinách

Základ (Návrh, Databáza, API, ...) 40

Párovanie (frontend, backend) 16

Crawler a parser pre jeden eshop 12

Prvé spárovanie produktov 8

Pravidelné párovanie produktov 1 / týždeň

Pre systém so sledovaním dvoch eshopov ide dokopy o 88 človekohodín na vývoj

a prvotné párovanie produktov a následne o 1 hodinu týždenne pre párovanie nových

produktov.

V prípade údržby ide o veľmi individuálne čísla závisle od špecifických potrieb.

Najpravdepodobnejšie je ale pridanie nového alebo prekódenie starého eshopu a túto

hodnotu môžeme nájsť v tabuľke.

3.4.2 Prínosy

Získané dáta môžu poslúžiť na rôzne štatistiky vývoja cien konkurencie, ktorých hodnota

sa len ťažko odhaduje.

Čo ale môžeme odhadnúť je čas ušetrený pracovníkmi zodpovednými za tvorbu cien.

V prípade že je týždenne potrebné skontrolovať ceny 2000 produktov (približne 30%

sortimentu) a zistenie ceny jedného produktu trvá 10 sekúnd pričom ju zisťujeme v dvoch

Page 56: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

55

rôznych eshopoch, ide o približne 11 ušetrených hodín týždenne. Toto číslo sa bude

zväčšovať narastajúcim počtom predávaných produktov a sledovaných eshopov.

3.4.3 SWOT analýza

Pripravený návrh informačného systému zhodnotím SWOT analýzou, zhrňujúcou všetky

dôležité aspekty riešenia.

Silné stránky:

systém pripravený pre vstup ďalších konkurentov na trh,

prístup „mikroslužby“ uľahčujúci nasadenie a škálovanie informačného systému,

výkonne riešenie na mieru.

Slabé stránky:

údaje v Hlavnom informačnom systéme nie sú vždy 100% aktuálne,

nízky výkon pri určitých typoch exportov dát.

Príležitosti:

zautomatizovanie párovania produktov pokročilejším algoritmom.

Hrozby:

blokovanie skenovania zo strany konkurencie.

Page 57: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

56

ZÁVER

Cieľom tejto bakalárskej práce bolo navrhnúť časť informačného systému slúžiaceho na

automatický zber verejne prístupných informácií o produktoch konkurenčných

spoločností.

Počas tvorby prototypu som pripravil crawler ktorý prechádzal stránkami, porovnal rôzne

prístupy k extrakcií informácií zo stránok, navrhol systém párovania produktov,

databázový model, API pre prenos do Hlavného informačného systému a spôsob

automatizácie.

Finálna verzia prevzala spôsoby crawlera a extrahovania dát, vylepšil som párovanie

produktov, doplnil som funkciu archivácie cien a databázový model si vyžadoval prerobiť

detailnejším, štruktúrovaným prístupom.

Vytvorený informačný systém bude slúžiť zamestnancom spoločnosti hlavne pre lepšie

určovanie cien ponúkaných produktov.

Page 58: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

57

ZOZNAM POUŽITÝCH ZDROJOV

[1] JAN, Stejskal. Vytváříme WWW stránky pomocí HTML, CSS a JavaScriptu. Vyd.

1. Brno: Computer Press, 2004. ISBN 80-251-0167-3.

[2] ADAPTIC, S.R.O. E-shop. ADAPTIC, S.R.O. Adaptic: tvorba webu, webdesign

[online]. © 2005–2016 [cit. 2016-05-13]. Dostupné z:

http://www.adaptic.cz/znalosti/slovnicek/e-shop/

[3] FIELDING, Roy (ed.) a Julian RESCHKE (ed.). Hypertext Transfer Protocol

(HTTP/1.1): Message Syntax and Routing. The Internet Engineering Task Force

[online]. b.r. [cit. 2016-05-16]. Dostupné z: https://tools.ietf.org/html/rfc7230

[4] BY ROBIN NIXON., Learning PHP, MySQL, JavaScript, and CSS a step-by-

step guide to creating dynamic websites. 2nd ed. Sebastopol, Calif: O'Reilly

Media Inc, 2012. ISBN 978-144-9337-490.

[5] What is web server. Web Developers Notes: Free Tutorials, tips, tricks, resources,

articles and more... [online]. © 2000-2011 [cit. 2016-04-30]. Dostupné z:

http://www.webdevelopersnotes.com/basics/what_is_web_server.php

[6] HTML5: Introduction. World Wide Web Consortium [online]. 2016 [cit. 2016-

04-30]. Dostupné z: https://www.w3.org/TR/html/introduction.html

[7] Cascading Style Sheets. World Wide Web Consortium [online]. 2016 [cit. 2016-

04-30]. Dostupné z: http://www.w3.org/Style/CSS/

[8] CSS: Boostrap. Bootstrap: The world's most popular mobile-first and responsive

front-end framework. [online]. 2016 [cit. 2016-04-30]. Dostupné z:

http://getbootstrap.com/css/

[9] WEB FRAMEWORKS. Wappalyzer: Identifies software on the web [online].

2016 [cit. 2016-04-30]. Dostupné z: https://wappalyzer.com/categories/web-

frameworks

Page 59: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

58

[10] FLANAGAN, David. JavaScript: the definitive guide. Fifth edition. Sebastopol:

O´Reilly, 2006, 994 s. ISBN 05-961-0199-6.

[11] LEDNÁR, Matej. Príručka programátora - Prehľadný sprievodca jazykom

JavaScript 1.5+. Bratislava: MLD Group, 2009. ISBN 978-80-89448-02-9.

[12] THE JQUERY FOUNDATION. JQuery. THE JQUERY FOUNDATION.

JQuery [online]. 2015 [cit. 2015-04-26]. Dostupné z: https://jquery.com/

[13] Q-SUCCESS. Usage of JavaScript libraries for websites. Q-SUCCESS. W3Techs

- World Wide Web Technology Surveys [online]. 2015 [cit. 2015-04-26].

Dostupné z: http://w3techs.com/technologies/overview/javascript_library/all

[14] JQuery 1.3 and the jQuery Foundation. In: RESIG, John. JQuery [online]. 2009

[cit. 2015-04-26]. Dostupné z: http://blog.jquery.com/2009/01/14/jquery-13-and-

the-jquery-foundation/

[15] Preface. PHP: Hypertext Preprocessor [online]. The PHP Group, © 2001-2016

[cit. 2016-04-29]. Dostupné z: http://php.net/manual/en/preface.php

[16] Introduction. Twig: The flexible, fast, and secure PHP template engine [online].

© 2010-2012 [cit. 2016-04-29]. Dostupné z:

http://twig.sensiolabs.org/doc/intro.html

[17] Twig for Template Designers. Twig: The flexible, fast, and secure PHP template

engine [online]. © 2010-2012 [cit. 2016-04-29]. Dostupné z:

http://twig.sensiolabs.org/doc/templates.html

[18] PHP Simple HTML DOM Parser. PHP Simple HTML DOM Parser [online].

2016 [cit. 2016-04-30]. Dostupné z: http://simplehtmldom.sourceforge.net/

[19] HERNANDEZ, Michael Návrh databází. 1. vyd. Praha: Grada, 2006.

Profesionál. ISBN 80-247-0900-7.

[20] ORACLE CORPORATION AND/OR ITS AFFILIATES. What is MySQL?.

ORACLE CORPORATION AND/OR ITS AFFILIATES. MySQL 5.7 Reference

Page 60: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

59

Manual [online]. 2016 [cit. 2016-05-13]. Dostupné z:

https://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html

[21] NETTE FOUNDATION. Quick Start. NETTE FOUNDATION. Dibi [online].

2016 [cit. 2016-05-13]. Dostupné z: https://dibiphp.com/cs/quick-start

[22] QUINSTREET. API: application program interface. QUINSTREET. Webopedia:

Online Tech Dictionary for IT Professionals [online]. 2016 [cit. 2016-05-14].

Dostupné z: http://www.webopedia.com/TERM/A/API.html

[23] Introducing JSON. JSON [online]. 2016 [cit. 2016-05-13]. Dostupné z:

http://www.json.org/

[24] COGNITION, . Newbie: Intro to cron. In: UNIXGEEKS.ORG [online]. 2011 [cit.

2016-05-06]. Dostupné z: http://www.unixgeeks.org/security/newbie/unix/cron-

1.html

[25] SCHOLZ, Florian, Regular Expressions. In: Mozilla Developer Network [online].

© 2005-2016 [cit. 2016-05-06]. Dostupné z: https://developer.mozilla.org/en-

US/docs/Web/JavaScript/Guide/Regular_Expressions

[26] QR Code Generator. QR Code Generator [online]. b.r. [cit. 2016-05-06].

Dostupné z: http://goqr.me/

[27] Čiarový kód EAN na Slovensku. GS1 Slovakia [online]. 2012 [cit. 2016-05-06].

Dostupné z: http://www.gs1sk.org/kody-v-systeme-gs1

[28] SYSNUCLEUS. What is Web Scraping. SYSNUCLEUS. WebHarvy [online].

b.r. [cit. 2016-05-13]. Dostupné z: https://www.webharvy.com/articles/what-is-

web-scraping.html

[29] MITCHELL, Ryan. Web scraping with Python: collecting data from the modern

web. 1. Sebastopol: O’Reilly Media, 2015. ISBN 1491910291.

Page 61: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

60

[30] CONOLLY, Thomas, Carolyn BEGG a Richard HOLOWCZAK. Mistrovství -

databáze: profesionální průvodce tvorbou efektivních databází. 1. Brno:

Computer Press, 2009. ISBN 9788025123287.

[31] Doprava a mapa rozvozu. Online supermarket Rohlik.cz: dovoz nákupu už do 90

minut [online]. b.r. [cit. 2016-05-16]. Dostupné z:

https://www.rohlik.cz/stranka/doprava

[32] BREJČÁK, Peter. Rohlik.cz letos cílí na tržby 1,2 miliardy. Pomoci mu má

expanze do více než 30 měst. In: Tyinternety.cz: Startupy, sociální sítě, ty

internety! [online]. 2014 [cit. 2016-05-16]. Dostupné z:

http://www.tyinternety.cz/startupy/rohlik-cz-letos-cili-na-trzby-12-miliardy-

pomoci-mu-ma-expanze-vice-nez-30-mest/

[33] Rychlost a cena dopravy. Kolonial.cz: online potraviny, uctivě až k vám [online].

c2015-2016 [cit. 2016-05-16]. Dostupné z:

https://www.kolonial.cz/stranky/doprava

[34] Microservices architecture. Microservices architecture [online]. 2014 [cit. 2016-

05-15]. Dostupné z: http://microservices.io/

[35] Naše nabídka. Tesco [online]. 2012 [cit. 2016-05-01]. Dostupné z:

http://nakup.itesco.cz/

[36] Trvanlivé potraviny. Tesco [online]. 2012 [cit. 2016-05-01]. Dostupné z:

http://nakup.itesco.cz/cs-

CZ/Product/BrowseProducts?taxonomyID=Cat00000220&amp;pageNo=3&am

p;sortBy=TitleAscending

[37] ORACLE CORPORATION. Natural Language Full-Text Searches. ORACLE

CORPORATION. MySQL: MySQL Documentation [online]. 2016 [cit. 2016-05-

05]. Dostupné z: https://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-

language.html

Page 62: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

61

[38] Digital Ocean 512 MB. Cloudlook: Live Benchmarks from the Cloud [online].

2016 [cit. 2016-05-08]. Dostupné z: http://www.cloudlook.com/digital-ocean-

512-mb-droplet#month

[39] KOLONIAL.CZ. Kolonial.cz: online potraviny, uctivě až k vám.

KOLONIAL.CZ. Kolonial.cz: online potraviny, uctivě až k vám [online]. 2015-

2016 [cit. 2016-05-15]. Dostupné z: https://www.kolonial.cz/

Page 63: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

62

ZOZNAM OBRÁZKOV

Obrázok 1: Príklad spracovania dynamickej webovej stránky ....................................... 15

Obrázok 2: Úvodná stránka http://nakup.itesco.cz ......................................................... 30

Obrázok 3: Ukážka zdrojového kódu zápisu kategórií 1. úrovne ................................... 30

Obrázok 4: Ukážka premietnutia sa stavu ovládacích prvkov do URL adresy .............. 31

Obrázok 5: Vývojový diagram pre prechádzanie stránok .............................................. 32

Obrázok 6: Ukážka informácií o produkte a ich zdrojový kód ....................................... 33

Obrázok 7: Vývojový diagram pre extrakciu informácií ................................................ 35

Obrázok 8: Graf porovnanie rýchlosti parsovania údajov pomocou Regulárnych výrazov

a DOM manipulácie ........................................................................................................ 36

Obrázok 9: Vývojový diagram postupu párovania produktov ........................................ 38

Obrázok 10: Ukážka webového rozhrania pre párovanie produktov ............................. 39

Obrázok 11: Diagram znázorňujúci architektúru databázy ............................................ 41

Obrázok 12: Graf vyťaženia serveru ............................................................................... 44

Obrázok 13: Ukážka kategórií produkov a ich zdrojový kód ......................................... 45

Obrázok 14: Ukážka novej verzie rozhrania pre párovanie produktov .......................... 47

Obrázok 15: Diagram znázorňujúci architektúru databázy ............................................ 52

Page 64: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta podnikatelská · overeniu v praxi. Jeho výstupy budú dôležitým podkladom pre alšiu asť práce. Posledným bodom je Finálna verzia

63

ZOZNAM PRÍLOH

Príloha č. 1: CD s príkazmi na vytvorenie databázovej štruktúry