E-chef server a desktopový klient. Ladislav Záruba. ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta.

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

Download "E-chef server a desktopový klient. Ladislav Záruba. ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta."

Transkript

1 ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta Bakalá ská práce E-chef server a desktopový klient Ladislav Záruba Vedoucí práce: Ing. Tomá² Kadlec Studijní program: Softwarové technologie a management, Bakalá ský Obor: Softwarové inºenýrství 3. ledna 2011

2 iv

3 v Pod kování Rád bych pod koval v²em, kte í m p i tvorb mé záv re né práce podporovali. Zejména panu Ing. Tomá²i Kadlecovi za jeho pomoc p i e²ení problém s touto prací a mému kolegovi Josefu Linhovi. Také bych cht l pod kovat mým rodi m, kte í p i mn stáli nejen p i psaní této práce, ale i p i celém mém studiu na této ²kole.

4 vi

5 vii Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn a pouºil jsem pouze podklady uvedené v p iloºeném seznamu. Nemám závaºný d vod proti uºití tohoto ²kolního díla ve smyslu Ÿ60 Zákona. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm n n kterých zákon (autorský zákon). V Praze dne

6 viii

7 Abstract This work deals with the design and full implementation of electronic collection of recipes E-chef. Application includes server and desktop client. The result of this work is a functional application which allows users to search for recipes using labeling system and share their own recipes. The work also includes user and programmer manual. Abstrakt Práce se zabývá návrhem a úplnou implementací elektronické sbírky recept E-chef. Aplikace obsahuje serverovou a desktopovou klientskou ást. Výsledkem práce je funk ní aplikace, která uºivatel m umoº uje vyhledávat recepty pomocí systému ²títk a sdílet jejich vlastní recepty. Sou ástí práce je i uºivatelská a programátorská p íru ka. ix

8 x

9 Obsah 1 Úvod Up esn ní zadání projektu Poºadavky Nefunk ní poºadavky Obecné poºadavky Server Desktopový klient Funk ní poºadavky Analýza Výb r technologií Aplika ní server Databáze Sí ová komunikace Vzdálené volání metod Technologie klientské aplikace Role Náv²t vník (nep ihlá²ený uºivatel) P ihlá²ený uºivatel Administrátor P ihla²ování uºivatel Recept Vyhledávání recept Administrace ²títk Práce s databází Nastavení p ipojení k databázi Soub ºná editace Opoºd né na ítání dat Inicializace kolekcí Návrh Nasazení aplikace Schéma databáze Objekty pro p ístup k databázi Klientské rozhraní serveru xi

10 xii OBSAH 3.5 Rozhraní Pickable Architektura klientské aplikace Implementace Roº²í ení Hibernate entit Server Kongurace serveru Nastavení RMI Nastavení Hibernate a p ipojení k databázi Balí ky serveru Klientská aplikace Dialogy Architektura aplikace Controller ( adi ) Model View (pohled) Záloºky aplikace Kongurace aplikace Lokalizace Výb r ²títk Interaktivní tabulka Propojení prvk CategoryTree a CategoryTable Testování Zát ºový test P íprava Výsledek Simulace chybových událostí Akcepta ní testy Záv r Postup p i vývoji Zhodnocení pr b hu vývoje Dal²í vývoj systému A Instala ní a kongura ní p íru ka 41 A.1 Instalace A.1.1 Server A Poºadavky aplikace A Instalace databáze A Instalace serveru A.1.2 Desktopový klient A Instalace A.2 Kongurace A.2.1 Server A.2.2 Klient

11 OBSAH xiii A Slovníky B Uºivatelská p íru ka 45 B.1 Popis uºivatelského rozhraní B.1.1 Hlavní menu B.1.2 Uºivatelské menu B.1.3 Záloºky aplikace B.2 Záloºka zobrazení receptu B.3 Záloºka výb ru receptu B.4 Výb r ²títk B.5 Nápov da aplikace B.6 B ºné akce uºivatele B.6.1 Registrace nového uºivatele B.6.2 P idání receptu B.6.3 Hodnocení receptu B.6.4 Komentování receptu B.6.5 Tisk receptu B.6.6 Administrace kategorií B.7 Chyby v aplikaci C Seznam pouºitých zkratek 55 D Obsah p iloºeného CD 57

12 xiv OBSAH

13 Seznam obrázk 2.1 Schéma komunikace RMI Aplika ní role Povolené innosti rolí P ípady uºití role Nep ihlá²ený uºivatel P ípady uºití role Uºivatel P ípady uºití role Administrátor Diagram nasazení Schéma databáze P ehled metod klientského rozhraní serveru Schéma komunikace ástí MVC B.1 Popis ástí hlavního okna aplikace B.2 Popis záloºky receptu B.3 Popis menu záloºky receptu B.4 Popis záloºky výb ru receptu B.5 Dialog p idání receptu - Krok Informace B.6 Dialog p idání receptu - Krok P ísady B.7 Dialog p idání receptu - Krok títky B.8 Náhled tisknuté stránky receptu B.9 Ukázka chyby aplikace xv

14 xvi SEZNAM OBRÁZK

15 Kapitola 1 Úvod Cílem této práce je navrhnout a implementovat sí ovou aplikaci umoº ující sdílení recept mezi uºivateli. P i tvorb je nutné dbát na to, aby aplikace vyhovovala poºadavk m na pouºitelnost a p ístupnost a aby vyhledávání recept bylo co moºná nejjednodu²²í a co nejrelevantn j²í vzhledem k parametr m, podle kterých si uºivatel chce recept vybrat. Aplikace bude mít dv rozhranní. Desktopového klienta, coº je aplikace, která funguje jako samostatný program na uºivatelském PC a webového klienta, se kterým bude moºné p istupovat k aplikaci ve webovém prohlíºe i. Cílem této záv re né práce bylo podílet se na návrhu a vývoji serverové ásti, navrhnout a zcela implementovat desktopového klienta. 1.1 Up esn ní zadání projektu Zadání práce bylo up esn no zadavatelem t mito body: Aplikace musí být snadno roz²i itelná (modulární) Kaºdý recept bude mít ty i ásti název, suroviny, p íprava, doba p ípravy Recepty je moºné p idávat, upravovat, mazat, m nit jejich za azení v kategoriích. Kaºdý recept bude p i azen r zným kategoriím ve dvou strome cích kategorií podle typu jídla a podle základních surovin Oba stromy kategorií je moºné editovat (p idávat, mazat, m nit ozna ení kategorie) 1.2 Poºadavky Nefunk ní poºadavky V této podkapitole jsou uvedeny v²echny poºadavky, které se nevztahují na funk nost, nýbrº na technologie, celkový návrh a zpracování projektu. 1

16 2 KAPITOLA 1. ÚVOD Obecné poºadavky Tyto poºadavky se týkají celkového návrhu projektu a jeho dokumentace. Jsou to: Aplikace musí být rozd lena na serverovou ást a dal²í klientské ásti. Celý kód musí být ádn okomentovaný a p ílohou k práci musí být programátorská dokumentace ve formátu JavaDoc Server Serverová ást aplikace obsluhuje ve²keré poºadavky od klientských aplikací. Obsahuje ve ejné rozhraní, které komunikuje s klienty a poskytuje jim data. Poºadavky na serverovou ást aplikace jsou: Zaji² uje operace nutné pro práci s daty - p ipojení a dotazování k databázi. Denuje rozhraní pro klientské aplikace. Pouºití technologie Java Enterprise Edition Desktopový klient Tato ást systému E-chef je samostatn fungující aplikace, která bude uºivateli umoº ovat práci s daty pomocí sí ového spojení. Tato aplikace se p ipojuje k serverové ásti. Poºadavky na desktopovou aplikaci jsou: Aplikace musí být snadno pouºitelná a p ístupná a musí umoº ovat výb r recept pomocí jednoduchého systému ²títkování. Aplikace si nesmí pamatovat ºádná data, ve²keré záznamy jsou uloºeny v databázi, ke které klient vºdy p istupuje p es serverovou ást. Pro implementaci musí být pouºita technologie Java Funk ní poºadavky Tato podkapitola se zabývá poºadavky na funk nost, které jsou spole né v rámci celého systému. Jsou to: Registrace uºivatel P ihla²ování uºivatel Vkládání recept Umoºnit snadnou kategorizaci recept pomocí p idávání ²títk recept m Vyhledávat recepty

17 1.2. POšADAVKY 3 Zobrazovat recepty P idávat recepty Hodnotit recepty Komentovat recepty Spravovat vlastní recepty Dal²í dodate né funk ní poºadavky pro správce systému jsou: P idávání nových ²títk Správa existujících ²títk Moºnost povy²ovat b ºné uºivatele na dal²í správce systému

18 4 KAPITOLA 1. ÚVOD

19 Kapitola 2 Analýza Obsahem této kapitoly je analýza zadání projektu, výb r vhodných technologií a metod implementace pro jejich následné pouºití. 2.1 Výb r technologií V této podkapitole jsou uvedeny v²echny technologie vhodné pro tento projekt a jejich porovnání s moºnými alternativami. Jelikoº bude aplikace rozd lena do serverové a dvou klientských ástí, tak technologie JEE bude pro tento zp sob implementace více neº vhodná. Roz²i itelnost a centralizovanost jsou jedny z hlavních výhod této technologie. Rozd lení aplikace a pouºití standardu JEE jsou zárove nefunk ní poºadavky na aplikaci Aplika ní server JEE vyºaduje aplika ní server, na který bude nasazena serverová ást aplikace a webový klient. V tomto okamºiku je nutné ujasnit si technologie, které budeme pouºívat, protoºe ne kaºdý aplika ní server podporuje v²echny pot ebné technologie. Zvolili jsme Tomcat 6.0, který je jednoduchý, neobsahuje v²echny technologie standardu JEE, ale p i pouºití n kterých knihoven lze jeho moºnosti snadno roz²í it Databáze Pro ukládání dat bylo vhodné pouºít rela ní databázi. Jako rozumné varianty se jevily databáze PostgreSQL a MySQL. Zvolili jsme MySQL, protoºe nebude nutné pouºívat sloºité funkce SQL jazyka, ani roz²i ovat logiku aplikace aº do databáze. Jako jádro bude pouºito InnoDB, aby bylo moºné pouºít referen ní integritu, kterou podporuje. Z aplikace by bylo moºné p istupovat k databázi a provád t ve²keré dotazy p ímo. Mnohem elegantn j²í e²ení je pouºití objektov rela ního mapování (ORM). Nejlep²í moºnou variantou v sou asnosti je knihovna Hibernate 3.0. Tato verze podporuje mimo jiné i anotace, kterými lze mapovat entity na databázi s minimálním pouºitím kongura ního souboru Hibernate. Pro p ipojení k databázi MySQL je nutné, aby aplikace obsahovala knihovnu JDBC Connector pro MySQL. 5

20 6 KAPITOLA 2. ANALÝZA Sí ová komunikace V serveru budou implementovány primárn metody provád jící operace s databází. Co se webové klientské aplikace tý e, ta m ºe tyto metody volat p ímo, protoºe je integrována do serveru E-chef a bude spu²t na na aplika ním serveru paraleln s ním. Problém vzniká u desktopové klientské aplikace. Ta si musí se serverem vym ovat data po síti. Jistou moºností by bylo vytvo it metody na tuto komunikaci a vlastní protokol denující funkce r zných p íkaz a jejich syntaxe, coº je sloºité e²ení. Mnohem jednodu²²í je pouºit vzdálené volání metod (RMI), coº je sou ástí JEE. Server Tomcat v²ak vzdálené volání metod nativn nepodporuje. Nejsnaº²í varianta, jak zavést do serveru Tomcat podporu RMI, je pouºití frameworku Spring. Ten umoº uje distribuovat v²echny metody jako sluºby, které chceme vzdálen volat Vzdálené volání metod Vzdálené volání metod pouºívá protokol TCP/IP a jeho podstatou je moºnost volat metody umíst né na serveru a tím p esounout logickou ást aplikace na server. P enos dat zde funguje stejn jako ve standardní Java aplikaci. Metodám lze p edat objekt jako parametr a pouºít její návratovou hodnotu. Samotný p enos dat je v reºii RMI. 4. krok Klient Klient na základě přijatých informací naváže spojení se serverem. Nyní již může probíhat samotná komunikace a klient může volat vzdálené metody. Aplikační server Server E-chef 3. krok RMI registr odešle klientovi informace o serveru a službách, které server poskytuje. RMI registr může být nastaven, aby odesílal rozhraní tříd služeb klientovi. To je v našem případě zakázané a klientská aplikace tyto rozhraní musí obsahovat. 2. krok Klient se připojí na RMI registr a vyžádá si informace potřebné k připojení na aplikační server. 1. krok Aplikační server vytvoří RMI registr a definuje v něm služby s odkazy na sebe, které bude moct klient volat. RMI registr Obrázek 2.1: Schéma komunikace RMI Kv li pouºití vzdáleného volání procedur vznikla dv majoritní omezení. V²echny metody, jeº bude moºné volat vzdálen, bylo nutné umístit do t íd, které musí implementovat k sob p idruºené rozhraní, kde budou uvedeny v²echny volatelné metody. Toto rozhraní se nazývá Stub a musí být stejné jak na stran serveru, tak na stran vzdáleného klienta, který musí obsahovat hlavi ky metod, jeº m ºe volat. Proto bylo nutné vytvo it knihovnu, která bude

21 2.2. ROLE 7 sdílena ob ma t mito prot j²ky. Do této knihovny bylo také vhodné umístit entity databáze, protoºe i ty musejí být sdíleny. V²echny objekty, které si protistrany vym ují, musí být serializovatelné. V rámci jazyku Java tedy musí implementovat rozhraní Serializable, nebo to nesmí být objekty, ale jednoduché datové typy. Dal²ím omezením, které pouºití RMI p iná²í, je jeho dynamické pouºívání sí ových port. RMI vyºaduje povolení komunikace na portech v t²ích nebo rovno To znamená, ºe pokud chceme mít server zabezpe ený rewallem, musíme povolit v²echny tyto porty, ímº vzniká bezpe nostní riziko Technologie klientské aplikace Klientská aplikace slouºí primárn k zobrazování dat obdrºených ze serveru na vlastní dotaz a odesílá data vloºená uºivatelem. V klientské aplikaci se pro sí ovou komunikaci bude pouºívat stejná technologie jako v serverové ásti - RMI. Na rozdíl od serveru klientská aplikace nebude distribuovat ºádné sluºby, bude se pouze p ipojovat k RMI registru, který ho odkáºe na server. Aby klient mohl pouºívat stejné entity Hibernate, s kterými pracuje i server, musí taktéº obsahovat knihovny Hibernate, kv li anotacím v t chto entitách. Pro zobrazování uºivatelského rozhraní bude aplikace pouºívat knihovny Swing. 2.2 Role Podkapitola se zabývá rozd lením v²ech funkcí aplikace do rolí. Kaºdá role má vlastní mnoºinu práv a denuje akce, které uºivatel smí s aplikací provád t. Pro spln ní funk ních poºadavk aplikace bylo nutné vytvo it t i hierarchicky sloºené role: Administrator User Visitor Spravuje systém pomocí jednoduché administrace Přihlášený uživatel v systému Nepřihlášený uživatel (návštěvník) systému Obrázek 2.2: Aplika ní role Zde je seznam v²ech akcí, které jednotlivé role mohou provád t s tím, ºe role i jejich moºnosti jsou d d ny dle p ede²lého obrázku:

22 8 KAPITOLA 2. ANALÝZA Visitor + Otevření receptu + Prohlížení a vybírání štítků + Přihlášení + Registrace + Tisk receptu + Úprava nastavení aplikace User + Komentovat recept + Ohodnotit recept + Označení cizího receptu jako oblíbený + Přidat ingredienci + Přidat recept + Spravovat vlastní recept + Vložit recept do oblíbených Administrator + Spravovat ingredienci + Spravovat kategorii + Spravovat libovolný recept + Spravovat uživatele Obrázek 2.3: Povolené innosti rolí Náv²t vník (nep ihlá²ený uºivatel) Nep ihlá²ený uºivatel smí pouze vyhledávat recepty dle ²títk a zobrazovat je. Nesmí mít ºádné právo na zm nu dat v aplikaci. M ºe se ale zaregistrovat a následn p ihlásit a zm nit svou roli na P ihlá²ený uºivatel. Přihlášení «precedes» Registrace Visitor (from Actors) Prohlížení a vybírání štítků Otevření receptu «precedes» Tisk receptu Úprava nastavení aplikace Pouze v rámci desktopového klienta Obrázek 2.4: P ípady uºití role Nep ihlá²ený uºivatel

23 2.2. ROLE P ihlá²ený uºivatel P ihlá²ený uºivatel má stejná práva jako nep ihlá²ený uºivatel a navíc m ºe je²t vkládat, editovat a mazat své recepty. Dále má právo vykonávat v²echny innosti, které neupravují cizí recepty nebo ostatní data vloºená jinými uºivateli. Označit cizí recept jako oblíbený Ohodnotit recept «precedes» «precedes» Otevření receptu User (from Actors) Komentovat recept «precedes» (from Visitor) «precedes» Vložit recept do oblíbených Spravovat vlastní recept Přidat recept «include» Přidat ingredienci Uživatel smí přidávat novou přísadu, pouze při samotném přidávání receptu Obrázek 2.5: P ípady uºití role Uºivatel

24 10 KAPITOLA 2. ANALÝZA Administrátor Administrátor aplikace smí d lat v²e, co aplikace umoº uje, v etn zm ny dat vloºených jinými uºivateli. Jeho dal²í pravomocí je povy²ovat uºivatele na administrátory. Po instalaci aplikace tedy bude zaregistrován jeden uºivatel s právem administrátora a ten m ºe toto právo ud lovat dal²ím uºivatel m. Spravovat kategorii Spravovat libovolný recept «extend» Spravovat vlastní recept (from User) Administrator (from Actors) Spravovat ingredienci Spravovat uživatele Obrázek 2.6: P ípady uºití role Administrátor 2.3 P ihla²ování uºivatel Tato podkapitola rozebírá opat ení, která bude nutno implementovat, aby nedocházelo k neoprávn ným p ihlá²ením do aplikace. P ihlá²ení probíhá na stran serveru, kam klientské aplikace ode²lou uºivatele a hash jeho hesla. Knihovny jazyku Java neobsahují metodu, která pouºívá stejný hashovací algoritmus jako MySQL. Proto bylo dobré si tuto metodu naimplementovat, aby se hodnoty daly porovnávat p ímo v SQL dotazu. Tato metoda byla umíst na do sdílené knihovny, protoºe její pouºití je nutné u v²ech klientských aplikací. Server po obdrºení údaj nejprve zkontroluje ovou adresu. Pokud v databázi existuje záznam s tímto em, tak porovná k u p i azené heslo s heslem, které p ijal od klientské aplikace. Pokud si jsou tyto hodnoty rovny, server vrátí odpov o úsp chu nebo naopak informuje o neúsp chu. 2.4 Recept Recept je nejd leºit j²í entita v aplikaci. Recept by m l obsahovat ingredience, ze kterých se pokrm skládá, a postup, jakým se p ipravuje. Uºivatel musí mít moºnost ur it také mnoºství ingrediencí, které je zapot ebí. Dále by kaºdý p ihlá²ený uºivatel m l mít moºnost hodnotit recepty a p idávat komentá e k cizím recept m, aby mohl informovat ostatní o kvalit receptu a provád t p ípadné korekce v p íprav pokrmu.

25 2.5. VYHLEDÁVÁNÍ RECEPT 11 Uºivatel vkládající recept bude mít moºnost ho umístit do jedné i více kategorií za pomoci ²títk. Dal²í uºivatelé si potom mohou recept vyhledat jak podle ingrediencí, tak podle t chto kategorií. Celkové hodnocení receptu m ºe také slouºit jako koecient, podle kterého se nalezené recepty budou v seznamu výsledk adit. K receptu bude také moºné p i azovat ilustrativní obrázky, aby ostatní uºivatelé m li je²t lep²í p edstavu, jak pokrm vypadá. Tyto obrázky je moºné ukládat do soubor na serveru v p edem zvoleném adresá i, nebo je ukládat p ímo do databáze. Zvolili jsme variantu ukládání obrázk do databáze. P i ukládání do soubor by bylo nutné implementovat dal²í metody na ítání a ukládání obrázk, kdeºto p i ukládání do databáze se s obrázky manipuluje jako s bajtovým typem BLOB. Hibernate na práci s t mito záznamy dovoluje pouºít pouze základní java.persistence anotace a o ostatní práci se stará sám. Jedinou podmínkou je nutnost p ená²et pole bajt, nikoli obrázek jako objekt, takºe klientské aplikace musejí obsahovat metody na p evod obrázku do bajtového pole a naopak. 2.5 Vyhledávání recept Aby aplikace byla snadno pouºitelná, je nutné drºet se n kterých zásad, které uºivateli usnadní manipulaci s aplikací. Dal²í nutností je umoºnit mu, pokud vyhledává n jaký recept, aby na²el dle hledaných parametr jen ty nejrelevantn j²í výsledky. Proto byly zavedeny ²títky, které je moºné p idávat k recept m. Ty ozna ují jisté vlastnosti recept. Nap íklad zda-li je recept vhodný k ob du, zda-li je recept sváte ní ve e e, a v neposlední ad z jakých ingrediencí se pokrm skládá. Vhodné pro tento problém bylo uspo ádat si v²echny kategorie i ingredience do strom. Pro uºivatele je to p ehledné a umoº uje to dále kategorizovat jednotlivé ²títky. Z toho plyne, ºe kaºdý ²títek m ºe mít n kolik pod azených ²títk a uºivatel si m ºe vybírat libovolný z nich, tzn. vybráním ²títku vybere i v²echny pod azené. Stejný systém je i u ingrediencí. Stromy jsou navrhnuty tak, ºe existují skupiny kategorií, coº jsou logické celky t chto ²títk, jako nap íklad "Doba konzumace", která obsahuje kategorie "Ve e e", "Snídan ". Jedna skupina tedy odpovídá jednomu stromu. Receptu lze p i adit pouze kategorie i podkategorie, nikoliv celé skupiny, to by ve vyhledávání nem lo smysl. Kaºdá kategorie smí být uvedena pouze jako podkategorie jediné kategorie nebo jako ko en stromu v jedné skupin kategorií. Ingredience jsou trochu odli²ná skupina kategorií. Jsou tedy uspo ádány zvlá² v jednom strom, ve kterém jsou skupiny a podskupiny ingrediencí. Listy tohoto stromu jsou jiº kone n samotné ingredience, které lze vkládat do receptu. Vybírání receptu podle ingrediencí funguje stejn jako u kategorií. Pokud uºivatel vybere nap. "Mlé né výrobky", vybere tímto ve²keré ingredience, které jsou v této skupin. Jedna ingredience se m ºe vyskytovat vícekrát v r zných skupinách ingrediencí. Ingredience musí být vºdy za azena do n jaké skupiny, jinak podle ní není moºné vyhledávat. Pokud uºivatel zvolí p i vyhledávání více ²títk, tak z mnoºiny recept, které byly vybrány prvním ²títkem, vznikne nová mnoºina, která bude pr nikem p vodní mnoºiny recept a mnoºiny, kterou obsahuje pozd ji p idaný ²títek. Pokud vybere ²títek, který obsahuje více pod azených ²títk, tak vniklá mnoºina recept je slou ením mnoºin recept v²ech pod azených ²títk.

26 12 KAPITOLA 2. ANALÝZA 2.6 Administrace ²títk Kv li zachování po ádku v datech aplikace nem ºe ani p ihlá²ený uºivatel p idávat kategorie. Jejich seznam by m l být vloºen do databáze ihned p ed uvedením aplikace do provozu. Zm ny a úpravy kategorií je potom moºné provád t pouze s právy administrátora. Uºivatel si tedy musí vybrat pouze z nabídnutých kategorií. U ingrediencí je správa trochu odli²ná. Ne vºdy je moºné vybrat ingredience p esn tak, jak je vyºaduje uºivatel. Proto ingredience m ºe p idávat sám uºivatel. A to tak, ºe pokud p idá k receptu p ísadu, která neexistuje v databázi, bude ingredience do databáze vloºena bez za azení do skupiny a administrátor o tom bude informován, aby p ípadn mohl ingredienci upravit a p ede²lo se duplicitám nap íklad jen kv li p eklepu v názvu p ísady. Ostatní operace nad ingrediencemi m ºe provád t op t jen administrátor. 2.7 Práce s databází K databázi je p ipojen pouze server, který pomocí knihoven Hibernate p ekládá databázové záznamy na jednoduché Java objekty denované podle t íd, které nesou název entity. Entitou se rozumí t ída, která za pomoci anotací ur uje, jak se data z databáze mají p ekládat (to jest, jaká entita p edstavuje jakou tabulku, jaká prom nná t ídy je vázána na jaký sloupec, jaký sloupec je primární klí, atd.). V d ív j²ích verzích Hibernate nebylo moºné pouºívat anotace. Celá kongurace se provád la v XML souboru hibernate.cfg.xml, kde bylo ur eno i ve²keré mapování. Ve verzi Hibernate 3.0 je jiº moºné pouºít velkou v t²inu anotací z balí ku java.persistence. Hibernate obsahuje i své vlastní anotace, které mají speciální ú ely, tedy roz²i ují pouºitelnost java.persistence anotací. Klienti volají metody objekt pro p ístup k databázi (Data Acces Object - DAO) na serveru. Tyto objekty obsahují ve²keré metody pro práci s daty v databázi E-chef. Kaºdá metoda, kterou je moºné volat klientem, musí být zve ejn na v rozhraní DAO, aby bylo moºné ji distribuovat p es RMI. Tato rozhraní jsou umíst na ve sdílené knihovn, aby klienti v d li, jaké metody je moºné volat, v p ípad webového klienta p ímo a v p ípad desktopového klienta vzdálen. Povinností kv li Hibernate je, aby volání jakékoliv metody manipulující s daty v databázi byla v transakci. Tudíº v²echny metody, které m ºe klient volat, otevírají novou transakci, provedou v²e pot ebné a v p ípad chyby celou transakci zru²í, jinak potvrdí (commit). Hibernate obsluhuje tyto transakce ve vlastní reºii. Nejedná se tedy o transakce v databázi Nastavení p ipojení k databázi K nastavení Hibernate slouºí tedy soubor hibernate.cfg.xml, který je nutné uloºit do výchozího balí ku aplikace, tzn. mimo v²echny ostatní balí ky. V tomto souboru m ºe být denováno k jaké databázi se má Hibernate p ipojovat, jaké bude pouºívat kódování p i p enosu a dal²í. Av²ak pro zachování dynami nosti bylo nutné zavést konguraci p ipojení k databázi do na²eho kongura ního souboru serveru, aby nastavení mohl snadno upravovat kdokoliv, kdo bude spravovat server a v kongura ním souboru Hibernate ponechat jen nastavení, které není pot eba m nit. Z tohoto d vodu bylo i nastavení Hibernate upraveno tak, aby

27 2.7. PRÁCE S DATABÁZÍ 13 parametry, které má smysl m nit, byly na ítány z kongura ního souboru serveru. Hibernate se tedy musí áste n nastavovat i za b hu programu Soub ºná editace Jedním z problém, který se musí p i práci s databází e²it, je konkurence p i editaci dat. I kdyº Hibernate poskytuje pro e²ení tohoto problému vlastní metody, v tomto projektu nebyly pouºity, protoºe konkuren ní editace m ºe v aplikaci reáln nastat pouze ve t ech p ípadech a vyplatilo se e²it soub ºnou editaci ve vlastní reºii. Situace, kdy m ºe nastat konikt: Editace receptu - uºivatel edituje recept a mezitím se n kdo pokusí o editaci nebo smazání toho samého receptu Konkurentní editace kategorií nebo p ísad administrátory Zm na/odebrání kategorií nebo p ísad p i editaci receptu Pokud uºivatel provede n kterou z t chto operací, m ºe nastat to, ºe uºivateli, který edituje jako první, se smaºou ve²keré jeho úpravy, nebo p i odebrání n kterých dat b hem editace vznikne výjimka ObjectNotFoundException (p i ukládání recept /kategorií/p ísad, které byly b hem editace smazány) nebo ConstraintViolationException (p i ukládání receptu, jehoº pod ízené ingredience nebo kategorie byly p i editaci smazány). Bod 1 je e²en pomocí zámk. Zámky jsou ukládány v seznamu p ímo v objektech pro manipulaci s daty. P ed úpravou n jakého objektu si aplikace zjistí, zda-li byl jiº ten samý objekt uzam en jiným uºivatelem. Pokud objekt uzam en nebyl, povolí editaci a objekt uzamkne na 10 minut, nebo do dokon ení úprav. Pokud je jiº objekt uzam en, ode²le klientské aplikaci notikaci o zámku a zakáºe editaci. Maximální doba pro uzam ení objektu je ochrana pro p ípadný pád klientské aplikace p i uzam ení n jakého objektu. Samotné odemykání tedy probíhá, pokud je zámek star²í jak 10 minut, pokud je uºivatel administrátor a zvolí násilné odemknutí, nebo pokud uºivatel ádn dokon í editaci a klientská aplikace odemkne objekt sama Opoºd né na ítání dat Pro zvý²ení výkonu aplikace bylo pouºito opoºd né na ítání (Lazy Fetching) v²ech kolekcí Hibernate objekt. Jedná se o základní vlastnost v²ech kolekcí, kterou lze sice vypnout, ale aplikace tím utrpí velké ztráty na výkonu. Je to metoda umoº ující fyzicky na ítat data z databáze pod ízených kolekcí objekt, aº kdyº k nim program p istoupí. Tzn. pokud máme entitu obsahující libovolnou kolekci a pokusíme se k této kolekci p istoupit, Hibernate teprve na te data z databáze. Oproti tomu je moºné pouºít klasické na ítání dat, kdy se v²echny kolekce a vazby entity na tou ihned p i na tení samotné entity. Pokud ale databáze obsahuje etná propojení mezi jednotlivými entitami, m ºe nastat situace, ºe p i staºení jedné entity Hibernate na te rekurzivn i celou databázi. Pro na²í databázi je tedy opoºd né na ítání nutné. Av²ak s pouºitím této metody vzniká problém. Hibernate nem ºe na íst data, pokud jiº byla transakce uzav ena a p i pouºití

28 14 KAPITOLA 2. ANALÝZA vzdáleného volání procedur neexistuje zp sob, jak by se data mohla opoºd n na íst ze serveru. Proto je nutné na íst n které kolekce, které plánujeme pouºít, jiº p ed odesláním dat klientovi. Této operaci se íká inicializace Inicializace kolekcí Inicializace se provádí voláním statické metody t ídy Hibernate initialize(). Tato metoda na te z databáze v²echny parametry a kolekce objektu, který této metod p edáme. Pokud jí p edáme kolekci, stane se tak pro v²echny objekty dané kolekce. Mnohdy se musí tato metoda volat rekurzivn, nap íklad pro získání celého stromu p ísad a kategorií. Poté co jiº klient má tyto stromy, je moºné snadno získat recepty dané ingredience i kategorie. Zavolá se metoda, inicializující kolekci recept dané kategorie/ingredience, vºdy p edtím, neº to aplikace poºaduje. Tím, ºe ukon íme relaci Hibernate, po na tení n jakého objektu entity nem ºeme inicializovat jeho kolekce, protoºe práv ukon ením relace vyjmeme objekt z kontextu Hibernate. Hibernate ale umoº uje snadno vracet entity do jeho kontextu zavoláním metody lock() relace Hibernate. Tato metoda standardn umoº uje uzamykat objekty databáze, av²ak pokud jí zavoláme s parametrem LockMode.NONE, provede jen to, ºe zvolený objekt uvede zp t do kontextu. Poté ho jiº m ºeme ve stejné relaci inicializovat. Podmínkou v²ak je, ºe tento objekt se nesmí li²it od objektu v databázi.

29 Kapitola 3 Návrh Obsahem této kapitoly je návrh struktury aplikace a jejích ástí. Dále se zabývá rozborem n kterých zvlá²tních p ípad, které si bylo vhodné ujasnit p ed samotnou implementací. 3.1 Nasazení aplikace Aplikace je rozd lena na server a dv klientské ásti. Webový klient je spu²t n paraleln se serverem na aplika ním serveru Tomcat 6.0. Uºivatelé k tomuto klientovi p istupují p es standardní webový prohlíºe, který se serverem komunikuje protokolem HTTP. Desktopový klient je samostatná aplikace, která se k serveru p ipojuje pomocí protokolu RMI. Uºivatelé, kte í se tedy cht jí p ipojit k aplikaci pomocí desktopového klienta, musí mít nainstalované Java Runtime Environment a mít k dispozici samotnou klientskou aplikaci. Server se p ipojuje k databázi MySQL. V na²em systému po ítáme s tím, ºe databáze je spu²t na na stejném za ízení jako aplika ní server, i kdyº to není nutné. Jednotlivé ásti aplikace a jejich propojení obsahuje diagram nasazení na obrázku

30 16 KAPITOLA 3. NÁVRH «device» Client «executionenvironment» Browser «device» Server «executionenvironment» Application Server Servlet Hibernate TCP/IP «call» «send» AJAX «http» «JSON» GWT RPC RMI registry Vzdálené volání požadavku «device» Desktop Client «RMI» Apache Tomcat «executionenvironment» Database Desktop E-chef Application TCP/IP MySQL Obrázek 3.1: Diagram nasazení

31 3.2. SCHÉMA DATABÁZE Schéma databáze Databáze byla navrºena tak, aby správn dodrºovala referen ní integrity, které engine InnoDB databáze MySQL podporuje. Hlavní entitou v tomto schématu je entita Recipe, p edstavující recept vkládaný uºivateli. Ta obsahuje vazbu na uºivatele (entita User), který recept p idal a uºivatele, kte í ozna ili jako oblíbený. Tato vazba obsahuje prost edníka RecipeFavourite kv li komentá i, který si k ní m ºe uºivatel p idat. Dal²ími entitami, které se váºou na recept, jsou komentá e a hodnocení receptu. Recept m ºe také obsahovat libovolný po et obrázk, které k n mu uºivatel vloºí. Vºdy jeden obrázek by m l mít záznam i v tabulce RecipeMainImage, která ur uje, ºe obrázek byl zvolen jako hlavní obrázek receptu. Obrázky jsou v databázi uloºeny jako typ BLOB, coº je bajtové pole. Entitami, podle kterých lze recept vyhledat, jsou p ísady (Ingredient) a kategorie (Category). Ty v aplikaci dohromady tvo í ²títky, které lze receptu p i adit. Vazba recept-p ísada op t obsahuje prost edníka RecipeIngredient kv li mnoºství, které je nutné uvést u kaºdé p ísady vloºené k receptu. I kdyº by bylo moºné vyjád it toto mnoºství v íslech, je tento atribut typu String, kv li jednotkám mnoºství, které uºivatel dopisuje sám. Kategorie recept a p ísady lze dále kategorizovat ve tvaru strom. Kaºdá kategorie m ºe mít libovolný po et pod ízených kategorií a musí spadat vºdy do jedné skupiny kategorií, kv li srozumitelnému rozd lení. Na druhou stranu p ísada nem ºe mít dal²í pod adné p ísady. Ty mohou být pouze listy stromu p ísad, av²ak kaºdá p ísada m ºe být umíst na do více skupin p ísad. Pokud není umíst na nikam, není podle ní moºné vyhledávat recepty, protoºe ve stromu ingrediencí nebude nikde zobrazena. Skupiny p ísad mohou zase obsahovat pod ízené skupiny p ísad. Tím je tedy moºné kategorizovat i p ísady a zavést tak op t stromovou strukturu, kde ko enem stromu je pomyslná skupina kategorií "P ísady". Teoreticky m ºe nastala situace, kdy jedna p ísada je umíst na do skupiny p ísad "A"a zárove do skupiny "B", p i emº skupina "B"je pod ízená skupina skupiny "A", coº není správné za azení p ísady, ve vyhledávání nemá smysl. O tento problém se musí starat sama aplikace, protoºe v rámci databáze toto denovat nelze. Kaºdá entita databáze, která není pouhým prost edníkem vazby, má sv j prot j²ek v entitách Hibernate. Datový model je zobrazen na obrázku 3.2.

32 18 KAPITOLA 3. NÁVRH user recipe_raiting «column» *PK id created password «PK» + PK_user() owner 0..* rater recipe_favourite «column» *PK recipe_id *PK user_id comment «PK» + PK_recipe_favourite(, ) 0..* 0..* «column» *PK recipe_id *PK user_id rate «PK» + PK_recipe_raiting(, ) 0..* 0..* image «column» *PK id recipe blobdata description «PK» + PK_image() comment «column» *PK id comment parent recipe user created «PK» + PK_comment() category «column» *PK id description name category_group parent «PK» + PK_category() 0..* * 0..* * 1 child child 0..* 0..* 1 recipe «column» *PK id cook_time directions name prepare_time user created last_edited «PK» + PK_recipe() recipe_category «column» *PK recipe_id *PK category_id 1 1 «PK» + PK_recipe_category(, ) 1 0..* recipe_main_image «column» *PK recipe_id image_id «PK» + PK_recipe_main_image() 1 0..* ingredient «column» *PK id name «PK» + PK_ingredient() recipe_ingredient «column» *PK ingredient_id *PK recipe_id quantity «PK» + PK_recipe_ingredient(, ) 0..* category_group «column» *PK id description name «PK» + PK_category_group() 1 ingredient_group «column» *PK id description name parent «PK» + PK_ingredient_group() 1 0..* 0..* ingredient_group_ingredient «column» *PK ingredient_group_id *PK ingredient_id «PK» + PK_ingredient_group_ingredient(, ) 0..* 0..1 child Obrázek 3.2: Schéma databáze

33 3.3. OBJEKTY PRO P ÍSTUP K DATABÁZI Objekty pro p ístup k databázi DAO (Data Access Object) jsou objekty, které obsahují metody na ukládání, na ítání a mazání dat z databáze. P edává se jim, nebo vracejí objekt p edstavující záznam v tabulce. Tento objekt musí být vºdy denován podle n jaké Hibernate entity. V na²em p ípad tyto objekty pro p ístup k databázi obsahují i dal²í pomocné metody na uzamykání objekt nebo na jejich inicializaci. Podmnoºina metod t chto objekt tvo í rozhraní, na které se p ipojují klientské aplikace a uº p ímo, nebo protokolem RMI. Umoº ují klient m provád t v²echny operace, které lze d lat centráln na serveru. 3.4 Klientské rozhraní serveru Klientské rozhraní je podmnoºinou metod objekt pro p ístup k databázi (DAO). K t mto metodám mají p ístup klientské aplikace. Je tvo eno jednotlivými rozhraními, která jsou implementována samotnými DAO. V rozhraní pro vzdálené klienty je pouºito RMI pro distribuci t chto metod, které obsluhují entity Hibernate. Tzn. ukládají/na ítají záznamy v databázi, inicializují kolekce jiných entit (nutnost Hibernatu p i opoºd ném na ítání dat) a provád jí dal²í operace na datech. Distribuce t chto objekt jako sluºeb je provedena frameworkem Spring. Je to jediná vlastnost tohoto frameworku pouºitá v aplikaci a probíhá na základ kongura ního souboru Springu applicationcontext.xml p i zavád ní aplikace do aplika ního serveru. Ve²keré nastavení v tomto souboru se tedy zabývá pouze distribucí sluºeb pro RMI. Zde je seznam v²ech distribuovaných sluºeb. V²echny rozhraní DAO jsou umíst ny v knihovn sdílené klientskou i serverovou ástí aplikace. Jsou rozd leny do logických celk podle dat, se kterými pracují. UserService / UserDao - Obsluhuje uºivatele, ov uje správný login RecipeService / RecipeDao - Obsluhuje recepty CategoryService / CategoryDao - Obsluhuje kategorie a jim nad azené skupiny kategorií (p idání nových kategorií, odebrání kategorií) - pouºíváno pouze pokud je uºivatel administrátor IngredientService / IngredientDao - Obsluhuje ingredience (nové ingredience p idává kdokoliv, m nit i mazat je z databáze m ºe pouze administrátor) PickableService / PickableDao - Zvlá²tní service pro na ítání strom kategorií a recept a jejich inicializaci ImageService / ImageDao - Získávání a ukládání obrázk k receptu. Odd lené p ímo od receptu kv li velkému objemu dat p i na ítání více obrázk k receptu. Ne vºdy je nutné stahovat k receptu i v²echny obrázky.

34 20 KAPITOLA 3. NÁVRH Kaºdý objekt pro p ístup k databázi d dí ze spole né t ídy DaoDefault. Tato nad azená t ída se stará o získávání relace Hibernate. Ta se potom p ímo stará o vkládání, úpravu a mazání dat z databáze na základ objekt entit Hibernate. V²echny rozhraní t chto DAO obsahují metody, které musí vyvolávat výjimku RemoteException. Toto je pravidlo RMI. Výjimka nastane pokaºdé, kdyº na serverové stran ve vzdálené metod nastane n jaká dal²í nezachycená výjimka. Tato výjimka je vyvolána klasicky na stran serveru, kde vznikla a poté obalena výjimkou RemoteException a odeslána klientovi. Schéma v²ech rozhraní, která jsou implementována objekty pro p ístup k databázi, tvo ící klientské rozhraní serveru: Klientské rozhraní serveru «interface» CategoryDaoInterface Remote + addcategory(category) : Category + addcategorygroup(categorygroup) : CategoryGroup + findcategories() : List<Category> + findcategories(string) : List<Category> + findcategorygroups() : List<CategoryGroup> + findcategorygroups(string) : List<CategoryGroup> + getcategory(int, boolean, boolean) : Category + getcategorygroup(int) : CategoryGroup + removecategory(category) : void + removecategorygroup(categorygroup) : void + savecategory(category) : void + savecategorygroup(categorygroup) : void «interface» RecipeDaoInterface «interface» ImageDaoInterface + delete(image) : void + get(int) : byte[] + save(image) : Image + update(image) : void + addcomment(comment) : Comment + addrecipe(recipe) : Recipe + findrecipes(user, String) : List<Recipe> + findrecipes(user, String, boolean) : List<Recipe> + findrecipes(int, int) : List<Recipe> + getbestrecipes(int) : List<Recipe> + getbestrecipes(int, boolean, boolean, boolean) : List<Recipe> + getnewestrecipes(int) : List<Recipe> + getnewestrecipes(int, boolean, boolean, boolean) : List<Recipe> + getrandomrecipes(int) : List<Recipe> + getrecipe(int) : Recipe + getrecipe(int, boolean, boolean, boolean, boolean, boolean) : Recipe + getrecipesbycategories(list<integer>, int, int) : DataResult + getrecipesbycategoriesingredients(list<integer>, List<Integer>, int, int) : DataResult + getrecipesbyingredient(int, int, int) : DataResult + getrecipesbyingredientgroup(int, int, int) : DataResult + getrecipesbyingredients(list<integer>, int, int) : DataResult + getrecipesnestedbycategory(int, int, int) : DataResult + initongo(recipe) : Recipe + lock(recipe, User) : User + refresh(recipe) : Recipe + removecomment(comment) : void + removerecipe(recipe) : void + removerecipefavourite(recipefavourite) : void + removerecipeingredient(recipeingredient) : void + saverecipe(recipe) : void + unlock(recipe, User, User) : void + unlock(recipe, User) : void Remote Remote «interface» PickableDaoInterface «interface» IngredientDaoInterface Remote + getinitializedcategorytree() : List<CategoryGroup> + getinitializedingredienttree() : List<IngredientGroup> + initpickablefull(pickable) : Pickable Remote + addingredient(ingredient) : Ingredient + addingredientgroup(ingredientgroup) : IngredientGroup + findingredientgroups(string, boolean) : List<IngredientGroup> + findingredients(string) : List<Ingredient> + getingredient(int) : Ingredient + getingredient(int, boolean) : Ingredient + getingredientgroup(int) : IngredientGroup + getingredientgroup(int, boolean) : IngredientGroup + getorphaningredients() : List<Ingredient> + removeingredient(ingredient) : void + removeingredientgroup(ingredientgroup) : void + saveingredient(ingredient) : void + saveingredientgroup(ingredientgroup) : void «interface» UserDaoInterface Remote + adduser(user) : User + findusers(string) : List<User> + findusers(string, String) : List<User> + getuser(int) : User + getuser(int, boolean, boolean) : User + getuser(string) : User + getuser(string, boolean, boolean) : User + initongo(user) : User + removeuser(user) : void + saveuser(user) : void Obrázek 3.3: P ehled metod klientského rozhraní serveru Podrobný popis tohoto rozhraní je v programátorské dokumentaci.

35 3.5. ROZHRANÍ PICKABLE Rozhraní Pickable Jedná se o zvlá²tní rozhraní implementované v²emi entitami Hibernate, pomocí kterých je moºné vybírat recept. To jsou ingredience, jejich skupiny a kategorie. Pickable interface uvádí metody: getchildpickables() - slouºí k získání pod ízených kolekcí entit, které také implementují toho rozhraní (nap íklad entita Category vrací po zavolání getchildpickables v²echny její pod ízené kategorie) getchildpickablesrecursively() - rekurzivn sjednotí v²echny pod ízené kategorie/ingredience a vrátí jejich seznam getchildrecipes() - vrací recepty, které daná entita obsahuje getchildrecipesrecursively() - vrací recepty, které obsahují v²echny pod ízené kategorie/ingerdience (rekurzivn sjednocené) V klientské aplikaci je potom jednoduché pracovat s objekty typu Pickable a získávat seznamy jejich recept a p ípadn vytvá et pr niky í sjednocení t chto mnoºin. 3.6 Architektura klientské aplikace Obsahem kapitoly je popis architektury aplikace ve smyslu rozd lení Model-View-Controller. MVC (Model-View-Controller) je rozd lení aplikace na nezávislé celky, kde kaºdý plní svou ur itou roli. Tyto odd lené ásti spolu komunikují. Rozd lení MVC tvo í tyto prvky: adi (Controller) - vyhodnocuje p íkazy uºivatele, provádí v²echny operace s daty a zprost edkovává komunikaci uºivatelského rozhraní a serveru za pomoci modelu pohled (View) - obsluhuje v²e, co se zobrazuje uºivateli, zachytává akce provedené uºivatelem a p edává je adi i, kompletní pohled bude tvo it v t²ina t íd aplikace, které bude pohled vytvá et a zobrazovat model (Model) - v²echny objekty pro p ístup k databázi (budou umíst ny ve spole né knihovn ) t ídy obsahující metody pro manipulaci s daty a jejich vým nu se serverem adi bude obsahovat p ímo instance modelu i pohledu, jejich metody tedy m ºe volat p ímo. Rozd lení dle MVC bude docíleno za pomoci etného mnoºství poslucha (ozna ovány jako "Listener"). Poslucha e umoº ují p edávat data potom, co uºivatel provedl n jakou akci zp tn z pohledu do adi e a tím se úpln odd lí ásti aplikace.

36 22 KAPITOLA 3. NÁVRH Ve výjimečných případech pohled komunikuje přímo s modelem. Zejména kvůli inicializaci kolekcí entit. Model Pohled Řadič odesílá data modelu k uložení, aktualizaci, inicializaci a volá metody modelu, které mu zpětně posílají data. odesílá data zobrazuje Pohled předává řadiči zprávy pomocí posluchačů, na základě uživatelských vstupů. Řadič Obrázek 3.4: Schéma komunikace ástí MVC

37 Kapitola 4 Implementace 4.1 Roº²í ení Hibernate entit Hibernate entity byly generovány p ímo z databáze. Vygenerované t ídy odpovídaly vlastnostem, které byly od entit poºadovány, aº na n které nedostatky ve vazbách, kde se v entitách musel zm nit jejich sm r. Nastaly v²ak p ípady, kdy bylo vhodné implementovat do entit i n jaké vlastní metody, i atributy. Atributy i metody musely být uvozeny která ur uje, ºe atribut i metoda je pouze pomocná a nemá být mapována na ºádný sloupec databáze. Jmenovit se jedná o tato roz²í ení: Recipe.getRating() - spo ítá hodnocení receptu na základ v²ech ohodnocení uºivatel, které jsou uloºeny v databázi - p ed pouºitím této metody je tedy nutné zinicializovat kolekci reciperatinglist receptu User.getOverallRating() - spo ítá hodnocení uºivatele, coº znamená zpr m rované hodnocení v²ech jím vloºených recept - je nutné mít inicializovanou kolekci recept uºivatele Recipe.image - jedná se o pomocný atribut, kam lze p i adit obrázek receptu a usnad uje p edávání receptu v rámci klientské aplikace - v p ípad desktopového klienta se p ed odesláním receptu serveru musí tento atribut vynulovat, protoºe obrázek, tedy objekt t ídy Image, není serializovatelný, tudíº ho nelze odeslat p es RMI 4.2 Server Kongurace serveru Po startu serveru, t ída cz.cvut.fel.echef.cong.servercong na te atributy z kongura ního souboru ve svém jediném statickém inicializa ním bloku. To se d je p i nahrávání t ídy do JVM, tzn. p i nahrávání serverové ásti aplikace do aplika ního serveru. Tím je zaru eno, ºe se v²echny prom nné na tou d ív, neº s nimi za ne aplikace pracovat, tzn. p ed p ipojením k databázi nebo p ed distribucí sluºeb. JVM nahrává t ídy jak je pot eba, tzn. pokud je v jiné t íd ve statickém inicializa ním bloku odkaz na prom nnou v ServerCong, je zaru eno, ºe 23

38 24 KAPITOLA 4. IMPLEMENTACE JVM na te nejd ív ServerCong a tím i v²echny jeho prom nné je²t p ed pouºitím. V²echny prom nné a metody této t ídy jsou statické Nastavení RMI Dal²í t ídou v balí ku cz.cvut.fel.echef.cong, která umoº uje konguraci, je t ída cz.cvut.fel.echef.cong.registrysocketfactory. Je to t ída pouºitá v kongura ním souboru frameworku Spring applicationcontext.xml a slouºí jako generátor sí ových socket pro RMI registr. Protoºe pot ebujeme jen jeden port, na kterém bude server naslouchat, nejedná se o generátor, nýbrº ob dv metody vrací po celou dobu b hu programu konstantní ísla, která jsou uvedena v kongura ním souboru. Metoda createserversocket() vrací vºdy serverový socket naslouchající na portu 'registry_port', který je na ten z kongura ního souboru. Druhá metoda createsocket() vrací vºdy socket s portem 0, coº není pouºitelný port, ale server nikdy sám neza íná komunikaci, protoºe neexistuje ºádný p ípad, kdy by bylo pot eba, aby se server jako první pokou²el navázat komunikaci p es RMI. Metoda zde ale musí být p ítomna, protoºe to vyºaduje rozhraní java.rmi.server.rmisocketfactory, které musí t ída implementovat, aby mohla být pouºita v kongura ním souboru pro Spring framework. Zde je uveden úryvek kódu, který nastavuje registr: <bean id="registrysocketfactory" class="cz.cvut.fel.echef.config.registrysocketfactory"/> <bean id="registry" class="org.springframework.remoting.rmi.rmiregistryfactorybean"> <property name="serversocketfactory" ref="registrysocketfactory"/> <property name="clientsocketfactory" ref="registrysocketfactory"/> </bean> Tímto se denuje pouze RMI registr. Je²t je pot eba denovat samotné sluºby. Sluºba jako taková je pouze rozhraní, které je uve ejn né v registru. Denice sluºby musí také obsahovat odkaz na objekt nazývaný Bean, který tyto metody ve ejného rozhraní implementuje. Tyto metody budou jiº volány vzdálen. Mimo jiné je také nutné uvést název sluºby a registr, do kterého bude sluºba zavedena. Zde je uveden p íklad nastavení sluºby pro manipulaci s recepty: <bean id="recipebean" class="cz.cvut.fel.echef.dao.recipedao"> </bean> <bean class="org.springframework.remoting.rmi.rmiserviceexporter"> <property name="servicename" value="recipeservice"/> <property name="service" ref="recipebean"/> <property name="serviceinterface" value="cz.cvut.fel.echef.dao.recipedaointerface"/> <property name="registry" ref="registry"/> </bean> K sluºb se poté vzdálen p istupuje pomocí této adresy: rmi://ip_adresa_serveru:port_serveru/jméno_sluºby

39 4.3. KLIENTSKÁ APLIKACE Nastavení Hibernate a p ipojení k databázi Konguraci Hibernate a p ipojení k databázi zprost edkovává t ída cz.cvut.fel.echef.util.hibernateutil, která ve statickém inicializa ním bloku na ítá základní konguraci z kongura ního souboru Hibernate a poté upravuje nastavení podle kongura ního souboru serveru. Je to pouze nastavení IP adresy a portu databázového serveru, jména a hesla uºivatele, který má právo zapisovat a m nit tabulky aplikace v databázi. T ída cz.cvut.fel.echef.util.hibernateutil tímto nastavením upravuje objekt t ídy com.hibernate.sessionfactory, tj. objekt, který vytvá í relace spojení serveru s DB. Tento objekt je pouºíván pouze ve t íd cz.cvut.fel.echef.dao.daodefault a v²ech t ídách, které d dí z této t ídy. DAO ze SessionFactory získává relaci Hibernate, díky ní vytvo í novou transakci s databází, provede pot ebné operace a transakci uzav e Balí ky serveru T ídy serveru jsou rozd leny do balí k podle jejich ú elu. Nejobsáhlej²í je balí ek webového klienta cz.cvut.fel.echef.web, ten obsahuje dal²í balí ky. Zde je seznam balí k v etn jejich popisu: 4.3 Klientská aplikace Dialogy Tato podkapitola se zabývá tvorbou dialogových oken v aplikaci, které slouºí jako hlavní prost edek komunikace uºivatele s aplikací. Tvorba t chto dialog je v aplikaci zcela dynamická. Vytvá í se na základ toho, jaké metody t ídy cz.cvut.fel.echef.ui.dialog se volají a v jakém po adí. Argumenty t chto metod se li²í podle toho, jaký prvek by se m l do dialogu p idat. Vybraný zp sob je náro n j²í na implementaci, ale vhodný pro pozd j²í roz²i ování aplikace. Kaºdý dynamicky vloºený prvek dialogu je identikován vlastním et zcem znak. Podle tohoto et zce se dá odkazovat na prvek i po jeho vloºení a libovoln ho upravovat, nap íklad p idávat záznamy do vloºené tabulky. Instance t chto dialogových komponent jsou uloºeny v seznamu t ídy HashMap, kde klí je práv tento identikátor. Ve²keré prvky, které lze vloºit do dialogu, musí implementovat rozhraní cz.cvut.fel.echef.ui.dialogcomponent. Toto rozhraní obsahuje zejména hlavi ky metod, které upravují umíst ní prvku v dialogu, metodu která nastavuje hodnotu prvku (nap íklad text u textového pole, model dat u tabulky a podobn ). Celý dialog je rozvrºen pomocí rozloºení GridBagLayout. Implementované metody prvk pouze upravují jeho nastavení. T mto metodám se p edává objekt t ídy GridBagLayout, který je pozd ji umíst n do dialogu. Dialog umoº uje rozd lit jednotlivé prvky do sekcí. P i vytvá ení dialogu se konstruktoru udává argument, zda-li se sekce mají zobrazovat. V dialogu se vytvo í jednotlivé sekce a prvky se potom p idávají p ímo do nich. Zárove je moºné ur it, jaké prvky jsou povinné a je nutné je vyplnit. Po stisknutí tla ítka OK dialog zkontroluje, zda-li v²echny tyto prvky obsahují n jakou hodnotu. Pokud ne, zobrazí uºivateli chybovou hlá²ku se seznamem nevypln ných prvk.

40 26 KAPITOLA 4. IMPLEMENTACE Dialog se spou²tí a zobrazuje metodou rundialog(), která vrací jeho návratový kód. Vypln ná data obsahuje model, který lze získat zavoláním metody getmodel() po ukon ení dialogu. Model obsahuje v²echny vypln né hodnoty, na které se odkazuje pomocí identikátoru prvku. Celková práce s dialogem probíhá následovn : Vytvo í se instance t ídy cz.cvut.fel.echef.ui.dialog a pomocí jejich metod se postupn p idají sekce a jednotlivé prvky dialogu. Kaºdý prvek musí být vloºen s unikátním et zcem znak jako identikátorem. Denují se povinné pole dialogu pomocí metody setmandatory(). Dialog nemusí mít povinné ºádné pole. Pokud se jedná o edita ní dialog, nastaví se stávající hodnoty vstupním polím. Dialog se spustí metodou rundialog(). Potom co uºivatel potvrdí nebo zamítne provedné zm ny, program získá jeho model, který obsahuje v²echny hodnoty, jeº byly vypln ny. Tyto hodnoty jsou typu Object a po obdrºení je musíme p etypovat na objekty t ídy String, modely tabulek a podobné. Zde je uveden seznam v²ech prvk, které lze p idat do dialogu: Button klasické tla ítko, nastavuje se mu událost p i kliknutí na n j CategoryTable tabulka pro výb r ²títk, propojena s CategoryTree pro funk nost Drag and Drop, obsahuje vybrané ²títky CategoryTree strom ²títk, obsahuje kategorie, nebo p ísady, nebo ob tyto skupiny ²títk, propojen s CategoryTable pro funk nost Drag and Drop, obsahuje ²títky, které lze p esunout do prvku CategoryTable a tím i vybrat CheckBox klasické za²krtávací polí ko p edstavující moºnosti Ano/Ne ComboBox pole, umoº ující vybrat jednu z nabízených moºností EditableComboBox kombinace klasického textového pole a prvku ComboBox, obsahuje funkci automatického dopl ování podle textu, který uºivatel vpisuje FileChooser pole na výb r souboru obsahující tla ítko "Procházet" ImageFileChooser pole na výb r souboru obrázku InteractiveTable interaktivní tabulka PassField pole obsahující heslo, skrývá text TextArea velké více ádkové textové pole TextField klasické jedno ádkové textové pole V aplikaci jsou ve²keré dialogy vytvá eny pomocí t ídy cz.cvut.fel.echef.ui.dialogfactory. Jedná se o t ídu obsahující pouze statické metody, které slouºí jako "²ablona"a p i zavolání vracejí jiº p ipravenou instanci t ídy Dialog. Popis v²ech t chto metod lze najít v p iloºené programátorské dokumentaci.

41 4.3. KLIENTSKÁ APLIKACE Architektura aplikace Cílem této podkapitoly je p iblíºit nální implementaci MVC architektury aplikace dle návrhu Controller ( adi ) Jádro aplikace, které provádí ve²keré operace, jeº vznikly na základ p íkazu uºivatele. Ve výjime ných p ípadech se nejedná o akce uºivatele, nýbrº o p íkazy vyvolané asova em. V aplikaci p edstavuje adi zejména instance t ídy cz.cvut.fel.echef.core.controller, která vytvá í objekty pohledu a modelu. Za dal²í ást adi e se dá povaºovat i t ída cz.cvut.fel.echef.core.main, která spou²tí samotnou aplikaci, na ítá nastavení ze soubor a denuje logování vzniklých chyb p i b hu aplikace Model Modelem aplikace jsou v²echny objekty pro p ístup k databázi (tzv. DAO). T ídy t chto objekt jsou umíst ny v knihovn E-chef, kterou musí obsahovat server i klientské aplikace. Instance t íd objekt pro p ístup k databázi jsou na ítány pomocí vzdáleného volání metod RMI. adi pomocí t ídy cz.cvut.fel.echef.core.beanloader na te p ed vytvo ením pohledu tyto objekty p ipojením na server a navázáním komunikace. Aplikace se m ºe na tyto objekty odkazovat pomocí identikátoru, coº je unikátní et zec znak pro kaºdý DAO. Díky n mu si zjistí název sluºby, která je dostupná na serveru, dle mapovacího souboru cong/beanmapping.cfg. Pokud se aplikace nem ºe se serverem spojit, informuje uºivatele o chyb a zobrazí kongura ní dialog aplikace, kde je moºné zm nit mimo jiné i adresu nebo port serveru. Mapovací soubor koresponduje s názvy sluºeb serveru, uºivatel by jej tedy nem l m nit. adi tedy obsahuje tém celý model aplikace. Výjimkou, kde není zcela dodrºeno rozd lení MVC, jsou t ídy modelu, jejichº instanci bylo vhodné umístit p ímo do jiného objektu. Jedná se nap íklad o t ídu cz.cvut.fel.echef.ui.categorytree, která je pouºita na n kolika místech v aplikaci. Tento strom ²títk na ítá data ze serveru sám p i jeho vytvo ení, nikoli p es adi. Dal²ím p ípadem je nap íklad inicializace objekt Hibernate. Tuto inicializaci je také vhodné provád t p ímo v objektu, který s daty pracuje View (pohled) Uºivatelské rozhraní, díky n muº aplikace komunikuje s uºivatelem, formátuje a zobrazuje data nebo chybové i informa ní dialogy na popud adi e. V t²ina t íd desktopového klienta tedy tvo í celý pohled. Jedná se o instaci t ídy pohledu cz.cvut.fel.echef.core.view a v²echny dal²í instance t íd v balí ku cz.cvut.fel.echef.ui, který obsahuje dal²í mnoºinu balí k. Pohled má ²est hlavních funkcí: Vytvá í úvodní obrazovku aplikace, která je zobrazena po dobu na ítání dat ze serveru Zobrazuje hlavní okno aplikace, coº je instance t ídy cz.cvut.fel.echef.ui.mainwindow

42 28 KAPITOLA 4. IMPLEMENTACE Vytvá í záloºky a jednotlivé ásti aplikace, které jsou od sebe odd leny. Tyto záloºky jsou p edávány hlavnímu oknu, pokud je uºivatel smí vid t. Vytvá í a zobrazuje dialogová okna, díky kterým uºivatel interaguje s aplikací (p idává recept, upravuje nastavení aplikace, apod.). P i ukon ení událostí zobrazuje jejich výsledek, chybové nebo informa ní hlá²ky. P edává uºivatelské vstupy adi i, který je vyhodnocuje a zpracovává Záloºky aplikace Pohled aplikace obsahuje n kolik ástí li²ící se svou funkcí. Jedná se o hlavní okno, jeº samo o sob obsahuje n které funkce a o záloºky, které jsou od sebe navzájem odd leny a komunikují spolu pomocí poslucha p es instanci t ídy cz.cvut.fel.echef.core.view, která je vytvá í, nebo i p es adi, pokud se jedná o operace vyºadující komunikaci se serverem. Zde je uveden seznam v²ech záloºek aplikace s popisem jejich funkcí: WelcomeTab uvítací obrazovka aplikace, obsahuje odkazy na nejlépe hodnocené a nejnov j²í recepty aplikace RecipeTab záloºka, která zobrazuje uºivateli recept, jeho komentá e a hodnocení, umoº uje editaci, odstran ní, tisk receptu a dal²í PickRecipeTab umoº uje vybrat recept pomocí ²títk a zobrazit ho FavouriteRecipesTab (pouze pro p ihlá²eného uºivatele) obsahuje seznam recept, které si uºivatel ozna il jako oblíbené MyRecipesTab (pouze pro p ihlá²eného uºivatele) obsahuje seznam recept, které uºivatel sám vloºil, umoº uje odstranit vybraný vlastní recept CategoryAdministrationTab (pouze pro administrátora) umoº uje spravovat íselníky kategorií a ingrediencí a obsahuje seznam neza azených ingrediencí, které byly p idány uºivateli UserAdministrationTab (pouze pro administrátora) zobrazuje seznam uºivatel v aplikaci, dovoluje vytvo it nového administrátora ze stávajícího uºivatele Kongurace aplikace Nastavení aplikace probíhá je²t p ed vytvo ením adi e, po nastavení logování, kv li chybám v konguraci, které je vhodné také logovat. Aplikace na ítá ty i kongura ní soubory: cong/beanmapping.cfg soubor obsahující mapování vzdálených objekt na názvy sluºeb serveru podle unikátního et zce znak

43 4.3. KLIENTSKÁ APLIKACE 29 cong/cong.cfg kongura ní soubor, který nastavuje adresu a port serveru k n muº se aplikace p ipojuje a jazyk aplikace (popis nastavení je uveden v instala ní p íru ce - P íloha A) soubor jazyka z adresá e bundles obsahuje p eklady jednotlivých klí na jazyk, který ur uje název souboru s p íponou ".lang"(cz.lang, en.lang, atd.) cong/credentials.cfg obsahuje za²ifrované p ihla²ovací údaje, které si uºivatel p i p ihla²ování nechal aplikací uloºit V²echny kongura ní soubory jsou ve formátu Java Property. Samotnou konguraci provádí t ída cz.cvut.fel.echef.core.congconstraints svou statickou metodou congure(). Ta na te v²echny hodnoty z kongura ního souboru cong.cfg a nastaví podle nich statické parametry t ídy CongConstraints. Pokud je n jaká funkce aplikace závislá na konguraci, m ºe se odkázat na parametr této t ídy Lokalizace Hodnoty slovníku jsou na ítány p i spou²t ní aplikace, stejn jak je tomu u kongurace. Proto je nutné p i zm n jazyka, aplikaci restartovat. V²echny texty v aplikaci, pokud se nejedná o data z databáze, které nejsou lokalizované, jsou p ekládány pomocí t ídy cz.cvut.fel.echef.core.util. Tato t ída obsahuje statickou metodu translate(), která podle klí ového slova vyhledá et zec v nastaveném jazyce. Uºivatel m ºe nastavit pouze jazyk, jehoº slovník je umíst n v adresá i bundles, ve tvaru XX.lang, kde XX je dvoupísmenný kód jazyka. Pokud aplikace obsahuje tento slovník a uºivatel jej nastaví, aplikace podle této lokalizace formátuje i datum pomocí metody getformatteddate() Výb r ²títk Vybírání ²títk v aplikaci bylo navrºeno tak, aby struktura stromu, ve které mají být ²títky organizované, byla co nejvíce p ehledná. K tomu poslouºily t ídy JTree knihoven Swing a t ída cz.cvut.fel.echef.ui.dialog.components.interactivetable, od nichº d dí t ídy: cz.cvut.fel.echef.ui.dialog.components.categorytable tabulka, která obsahuje vybrané ²títky cz.cvut.fel.echef.ui.dialog.components.categorytree strom, který nabízí zatím nevybrané ²títky Interaktivní tabulka Jedná se o vlastní komponentu aplikace pouºívající n které prvky z knihoven Swing. ádky tabulky se skládají ze samotných hodnot a objektu na pozadí, p ípadn tla ítka na odstran ní ádku. Hodnoty této tabulky mohou být jak textové et zce, tak libovolné objekty d dící od t ídy JPanel. Tabulka z textových et zc vytvá í objekt JLabel, takºe pozd ji pracuje i tak pouze s objekty d dícími od JPanel. D vodem ke vzniku této komponenty byl p edev²ím nedostatek funkcí tabulky JTable z knihoven Swing a jejich sloºitá kongurace.

44 30 KAPITOLA 4. IMPLEMENTACE Propojení prvk CategoryTree a CategoryTable Tyto dva prvky je nutné pouºívat vºdy spole n. CategoryTree jako strom, ze kterého lze vybrat ²títky a CategoryTable jako seznam jiº vybraných ²títk. Pro jednoduchost byla do prvku CategoryTable zavedena metoda connecttocategorytree(), která spojí tabulku se stromem. Tím bylo docíleno, ºe vºdy, pokud propojíme n které tyto dva prvky, máme jistotu, ºe pokud je do tabulky p idána za pomoci metody Drag and Drop n jaká kategorie nebo ingredience, odstraní se tato poloºka ze stromu, aby nebylo moºné vybírat prvky duplicitn. Naopak, pokud z tabulky odstraníme n jaký ²títek, obnoví se v p ipojeném stromu s tím, ºe bude zachována jeho pozice ve stromu. Vybírání prvk respektuje kategorizaci ²títk. To znamená, ºe pokud ze stromu vybereme ²títek A, který je pod ízeným ²títkem vzhledem k ²títku B, coº má za následek p idání ²tíku A do tabulky a následn vybereme ²títek B, odstraní se ²títek A, protoºe zvolením ²títku B vybereme zárove i v²echny jeho pod ízené ²títky (viz. kapitola Návrh, sekce títky). P i vytvá ení stromu nebo tabulky ²títk m ºeme ur it, jaké typy ²títk bude prvek zobrazovat. Je moºné zvolit jednu z t chto mnoºin: ONLY_INGREDIENTS strom obsahuje pouze ingredience ONLY_CATEGORIES strom obsahuje pouze kategorie ONLY_INGREDIENT_GROUPS strom obsahuje pouze skupiny ingrediencí ALL strom obsahuje v²e, tabulka zobrazuje typ ²títku U stromu m ºeme dále ur it, jaké typy ²títk bude moºné vybrat: DRAG_ALL je moºné vybrat v²echny ²títky, které strom zobrazuje DRAG_ONLY_INGREDIENTS je moºné vybrat pouze ingredience, nikoli jejich skupiny NO_DRAG není moºné vybrat nic, strom je pouze informativní V²echny prvky stromu ²títk a v²echny objekty na pozadí ádk interaktivní tabulky jsou instance t ídy cz.cvut.fel.echef.ui.listitem. Tato t ída byla zavedena hlavn kv li sjednocení objekt, které lze p emis ovat technikou Drag and Drop. Instance této t ídy m ºe obsahovat svou ikonu a mít sv j název, který vrací jeho p epsaná metoda tostring(). Tento zp sob byl zvolen, protoºe je pak snadné umís ovat tyto objekty p ímo do instance t ídy JTree a jejich potomk. Strom, který objekt zobrazuje, pouºívá po p epsání n kterých jeho metod práv ikonu z objektu ListItem a jako popisek jeho uzl pouºívá práv textový et zec, který vrací metoda tostring(). K získávání t chto objekt slouºí statická metoda této t ídy getlistitem(). Ta vytvá í nový objekt t ídy ListItem, pokud je²t neexistuje, a zabalí do n j p ená²ený objekt, nap íklad kategorii, ingredienci, nebo jen jednoduchý textový et zec. Nov vzniklý objekt si ukládá, aby p i dal²ím volání této metody nevytvá ela dal²í objekt, ale pouºila d íve vytvo ený. Tím se zejména p i velkém po tu ²títk u²et í pam vyuºívaná stromy ²títk, které mají v celé aplikaci stejná data.

45 Kapitola 5 Testování Obsahem této kapitoly je popis test, kterými byla ov ena správná funk nost a stabilita aplikace. 5.1 Zát ºový test Tento test spo íval v napln ní databáze velkým mnoºstvím testovacích dat a následném testu v²ech funkcí aplikace. Test byl vzhledem k velkému objemu dat zam en na stabilitu a rychlost aplikace P íprava Databáze byla napln na cca náhodnými záznamy, kde zhruba záznam byly samotné entity receptu. Data byla vloºena do v²ech tabulek aplikace, p i emº se muselo dbát na referen ní integritu databáze. Po nahrání dat bylo spu²t no n kolik instancí desktopového klienta aplikace, pomocí nichº se ov ovala její stabilita a rychlost. Tito klienti se p ipojovali vzdálen, instance aplikací tedy byly spu²t ny na r zných po íta ích Výsledek A koliv aplikace m la del²í dobu odezvy na na tení vybraných recept, nenastaly ºádné problémy se stabilitou. Reak ní doba p i výb ru recept pomocí ²títk byla tém stejná jak p i jedné, tak i více p ipojených klientských aplikací, které vybíraly recepty ve stejný okamºik. Pokud by byl poºadován v t²í výkon aplikace, bylo by vhodné rozd lit server na více mezi sebou komunikujících server. 31

46 32 KAPITOLA 5. TESTOVÁNÍ 5.2 Simulace chybových událostí Podstatou testu bylo nasimulovat v²echny chyby, které mohou vzniknout p i b ºném pouºívání aplikace. Tyto události jsou: Nesprávné nastavení klientské aplikace P í ina: Uºivatel aplikace nesprávn nastaví adresu nebo port serveru, ru n nesprávn upraví kongura ní soubor, nebo ho odstraní, p ípadn p esune jinam neº do ur eného adresá e. Akce: P i nesprávné konguraci aplikace zobrazí chybu a nabídne uºivateli kongura ní dialog, aby mohl toto nastavení upravit. P i nenalezení kongura ního souboru aplikace pouze zobrazí chybu o jeho absenci. Výsledek testu: OK Chyba v komunikaci s protistranou P í ina: Pod touto chybou se skrývá jakýkoliv problém s komunikací se serverem. Nastává p i úplném odpojení sít, pádu serveru, nebo ostatních chybách v p enosu dat. Akce: Aplikace zobrazí uºivateli chybovou zprávu. Uºivatel musí aplikaci ukon it, znovu spusit a p ípadn se p ihlásit. Aplikace spojení sama neobnovuje. Jiº otev ené recepty lze p i selhání komunikace stále prohlíºet. Výsledek testu: OK ve v²ech b ºných p ípadech, kdy chyba komunikace m ºe nastat. Chybné uºivatelské vstupy P í ina: Uºivatel nesprávn vyplní n které poloºky, které po n m poºaduje dialog. Akce: Pokud je poloºka dialogu povinná, je nutné jí vyplnit. Pokud tak uºivatel neu iní, dialog zobrazí chybovou hlá²ku (viz. Dialogy, kapitola Implementace). U n kterých poloºek v aplikaci je kontrola provád na odd len. Jedná se nap íklad o uvedený p i p ihla²ování, kdy p i jeho nesprávném vypln ní aplikace uºivatele upozorní a vyºaduje opravu. Výsledek testu: OK u v²ech kontrolovaných vstupních polí

47 5.3. AKCEPTAƒNÍ TESTY Akcepta ní testy Tyto testy jsou denovány zadáním práce. Jedná se o test v²ech nefunk ních i funk ních poºadavk na aplikaci. Jejich úsp ²nost je podmínkou uznání této práce. Aplikace úsp ²n pro²la v²emi akcepta ními testy a spl uje v²echny poºadavky uvedené v zadání. Funk ní poºadavky byly dopln ny o tyto poloºky: Hodnocení recept P idávání komentá k recept m Tisk recept Administrátor aplikace m ºe povy²ovat b ºné uºivatele na dal²í administrátory

48 34 KAPITOLA 5. TESTOVÁNÍ

49 Kapitola 6 Záv r Cílem této práce bylo vytvo it systém pro sdílení recept koncipovaný jako aplikace klient/server, podílet se na vývoji serverové ásti a samostatn navrhnout a zcela implementovat desktopovou klientskou ást. Bylo nutné dbát na p ístupnost aplikace pro ²irokou ve ejnost. Sou ástí systému je i webová klientská aplikace, která byla vyvíjena paraleln s tímto projektem. 6.1 Postup p i vývoji Zpo átku bylo nutné ujasnit si celkovou architekturu aplikace a poºadavky na funkce systému. Na tomto úkolu bylo spolupracováno s vedoucím práce a v rámci serverové ásti i s mým kolegou, který m l za úkol zhotovit webového klienta. Analýza i tvorba aplikace byla rozd lena do dvou hlavních ástí podle architektury klient/server. Jejich vývoj probíhal do jisté doby paraleln, nejprve serverovou ástí, poté klientskými. P i vývoji klientských ástí probíhaly i men²í zm ny v ásti serverové. Po p edání poºadavk jsme se mohli posunout k dal²ímu bodu - analýza problému. V této chvíli bylo zapot ebí do detailu provést rozbor zadání: Volba vhodných technologií pro server Analýza funk ních poºadavk a vytvo ení rolí Analýza p ípad uºití aplikace Samostatn i analýza architektury desktopového klienta Po spln ní t chto bod musel být proveden návrh serverové ásti, kv li nutnosti denovat klientské rozhraní serveru. Návrh probíhal v t chto fázích: Návrh pravd podobného nasazení aplikace Návrh schématu datového úloºi²t podle entit, které bude nutné v aplikaci pouºívat Návrh rozhraní pro klientské aplikace 35

50 36 KAPITOLA 6. ZÁV R Samostatn provést návrh struktury desktopové klientské aplikace rozd lením dle architektury MVC Modely aplikace nebyly po celou dobu jejich existence xní. Drobné zm ny (zejména ve schématu databáze) vznikaly i b hem implementa ní fáze. Pomocí t chto p ipravených podklad jiº bylo moºné p ejít na dal²í krok - Implementace. Implementace serverové ásti probíhala op t spole n v t chto krocích: Vygenerování Hibernate entit z databáze a jejich úprava pro snadn j²í dal²í implementaci Implementace jednotlivých rozhraní a t íd, které dohromady tvo í celé klientské rozhraní distribuované p es RMI Umíst ní celého klientského rozhraní a entit Hibernate do spole né knihovny, pot ebné pro v²echny klientské aplikace Po vytvo ení klientského rozhraní jiº bylo moºné za ít implementovat i komunikující ást desktopového klienta - jeho model. Celá implementace probíhala v t chto krocích: Denice chyb, které mohou nastat p i b hu klienta a následná implementace logování a chybových notikací Implementace základní obrazovky a rozvrºení poºadovaných funkcí na jednotlivé záloºky Implementace p ipojení k serveru Implementace v²ech vlastních prvk v aplikaci Vytvo ení systému pro tvorbu dialogových oken Po úsp ²né implementaci systému bylo moºné p ejít na testování, které zaru ilo, ºe aplikace spl uje v²echny poºadavky stanovené vedoucím práce. 6.2 Zhodnocení pr b hu vývoje Technologie zvolené na za átku projektu se jeví jako vhodné pro tento p ípad. Znateln zjednodu²ily implementaci celého systému. Nedostatek p i pouºití technologie RMI je nedostate ná dokumentace, zejména pokud tento druh propojení serveru a klienta pouºijeme spolu s Hibernate. B hem implementace asto vznikaly problémy s inicializací kolekcí entit Hibernate. Dal²í p ekáºkou byl nedostate ný popis výjimek, které nastaly p i práci s RMI. Problémy zp sobující tyto výjimky se potom nedaly zcela snadno e²it a asto bylo nutné najít jiné východisko. I p es tyto men²í problémy jsem s aplikací velmi spokojen. Spl uje v²e, co jsem od ní o ekával.

51 6.3. DAL Í VÝVOJ SYSTÉMU Dal²í vývoj systému Klientské rozhraní serveru je navrºeno tak, aby bylo jednoduché vytvá et dal²í aplikace, které mohou se serverem komunikovat. Proto je moºné do systému p idávat dal²í klientské aplikace, které jsou schopny pouºívat RMI jazyku Java. Dal²í vývoj systému by se tedy mohl ubírat tímto sm rem. Díky architektu e MVC, systému dialogových oken a rozd lení logických celk do záloºek, je celkem snadné upravovat desktopovou klientskou aplikaci a postupn roz²i ovat její funkce, kterými by v budoucnu mohly být nap íklad zobrazování zajímavostí k exotickým ingrediencím, ukládání receptu do formátu XML nebo vkládání více obrázk k receptu.

52 38 KAPITOLA 6. ZÁV R

53 Literatura [1] LaTeX online manuál stav z [2] K336 Info pokyny pro psaní bakalá ských prací stav z [3] Jak na LaTeX: úvod stav z [4] Remoting and web services using Spring stav z [5] Hibernate reference documentation stav z [6] Apache Tomcat Documentation stav z [7] Spring by examples - RMI stav z [8] J2EE - Java 2 Enterprise Edition stav z [9] Free Web Icons stav z

54 40 LITERATURA

55 P íloha A Instala ní a kongura ní p íru ka Tato p íloha obsahuje postupy pro správnou instalaci a konguraci aplikace. A.1 Instalace A.1.1 Server V této ásti jsou uvedeny postupy pro instalaci serverové ásti systému. Po instalaci je nutné p ejít ke konguraci a nastavit p íslu²né hodnoty. Instala ní soubory serveru p iloºené na CD jsou: echef.war - Soubor obsahující zkompilovaný kód serveru, tento soubor se nasazuje do aplikace Tomcat 6.0 cong.cfg - Kongura ní soubor serveru ddl.sql - Skript pro vytvo ení schématu databáze A Poºadavky aplikace Zde jsou uvedeny poºadavky, které je nutné splnit p ed instalací E-chef serveru: Instalace MySQL serveru - Databáze, která bude obsahovat datové schéma E-chef, p i emº není nutné, aby tato databáze byla nainstalována na stejném po íta i jako aplika ní server (ke stáhnutí zde: Instalace JRE - Java Runtime Environment, nutné pro spou²t ní aplikací programovaných v jazyku Java (ke stáhnutí zde: Instalace serverové aplikace Tomcat 6.0 s podporou technologie "autodeploy"- voln dostupný aplika ní server pro Java aplikace (ke stáhnutí zde: Pokud server pouºívá rewall, je nutné povolit p íchozí komunikaci na portech >= 1024 a portu, na kterém bude naslouchat RMI registr 41

56 42 P ÍLOHA A. INSTALAƒNÍ A KONFIGURAƒNÍ P ÍRUƒKA A Instalace databáze P ed samotnou instalací je nutné p ipravit databázi pro aplikaci, v níº je vhodné vytvo it zvlá² uºivatele, který bude mít právo p istupovat pouze ke schématu aplikace. Tohoto uºivatele vytvo íme po p ipojení k databázi uºivatelem, který má právo vytvá et dal²í uºivatele p íkazem: CREATE USER 'uzivatel' IDENTIFIED BY 'heslo'; Hodnoty uzivatel a heslo mohou být nahrazeny jinými libovolnými hodnotami. Po vytvo ení uºivatele je nutné vytvo it schéma pro uºivatele p íkazem: CREATE DATABASE databaze; Jméno databáze databaze zde m ºe být nahrazeno libovolnou hodnotou. Dal²ím krokem instalace databáze je p id lení práv vytvo enému uºivateli. Pod ú tem uºivatele, který má právo na p id lování práv ostatním uºivatel m spustíme tento p íkaz: GRANT ALL PRIVILEGES ON databaze.* TO uzivatel; Hodnoty databaze a uzivatel nahradíme p íslu²nými hodnotami, které jsme zvolili v p edchozích krocích. P ihlásíme se za vytvo eného uºivatele a ve vytvo ené databázi, do které se p epneme pomocí p íkazu USE databaze;, ve kterém nahradíme hodnotu databaze za p íslu²né jméno databáze a spustíme p iloºený SQL skript ddl.sql. V kongura ním souboru serveru poté upravíme prom nné pro p ipojení k databázi podle zvolených hodnot (viz. Kongurace). A Instalace serveru Instalaci je moºné provést v t chto krocích: Zkopírovat soubor echef.war do adresá e webapps v domovském adresá i aplikace Tomcat 6.0. Tento soubor je p iloºen na CD. P ed zkopírováním je moºné soubor p ejmenovat, ímº se zm ní i název aplika ního kontextu webové stránky aplikace na název souboru. Musí se mu av²ak ponechat p ípona.war. Vytvo it adresá /etc/echef v p ípad Linuxové varianty, C:\echef v p ípad varianty pro Windows. Zkopírovat kongura ní soubor cong.cfg do vytvo eného adresá e a upravit ho podle vlastních pot eb (viz. Kongurace). Soubor je p iloºený na CD. Tomcat musí mít moºnost íst z tohoto souboru.

57 A.2. KONFIGURACE 43 A.1.2 A Desktopový klient Instalace Klientskou aplikaci není nutné ºádným zp sobem instalovat, na po íta i jí lze ihned spustit. Aplikace má jen jeden poºadavek: p edem nainstalované JRE - Java Runtime Environment (ke stáhnutí zde: První zaregistrovaný uºivatel bude vytvo en s administrátorskými právy. A.2 Kongurace A.2.1 Server Parametry serveru jsou nastavovány pomocí kongura ního souboru cong.cfg, který je umíst n v adresá i /etc/echef v Linuxové variant, nebo C:\echef ve variant pro Windows. Jelikoº je kongura ní soubor na ítán p i zavád ní soubor aplikace do serveru Tomcat, je nutné, aby p i kaºdé zm n kongurace byla aplikace znovu nasazena, nebo server Tomcat restartován. Kongura ní soubor obsahuje tyto prom nné: server_ip_address - IP nebo hostname sí ového rozhraní, které bude pouºito pro p ipojení vzdálených klient registry_port - port RMI registru, p ipojují se k n mu klienti db_ip_address - IP adresa databáze db_port - port, na kterém naslouchá databáze db_database_name - jméno databáze, která je pouºita pro tabulky E-chef db_user - uºivatel, který má práva zapisovat/ íst ve zvolené databázi db_password - heslo zvoleného uºivatele databáze Prom nné jsou uloºeny v tomto formátu, vºdy jedna na ádek: název_prom nné = hodnota A.2.2 Klient Konguraci klientské aplikace nemusí uºivatel provád t manuáln úpravou kongura ního souboru. Aplikace dovoluje zobrazit kongura ní dialog, který toto nastavení upraví. Pokud se klient nem ºe p ipojit k serveru, automaticky tento dialog nabídne.

58 44 P ÍLOHA A. INSTALAƒNÍ A KONFIGURAƒNÍ P ÍRUƒKA A Slovníky Pro p idání moºnosti p ekladu aplikace do dal²ích jazyk lze nahrát soubor slovníku do pod adresá e bundles. Soubor musí mít název XX.lang, kde XX je dvoupísmený kód jazyka. Obsah souboru musí být ve formátu Java Property, tzn. soubor obsahuje prom nné odd lené koncem ádku zapsané tímto zp sobem: klí ové_slovo = p eklad

59 P íloha B Uºivatelská p íru ka Obsahem této p ílohy je jednoduchá uºivatelská dokumentace popisující zp soby pouºívání desktopového klienta E-chef. B.1 Popis uºivatelského rozhraní Celé uºivatelské rozhraní je rozd leno do t chto ástí: B.1.1 Hlavní menu aplikace Uºivatelské menu Záloºky aplikace Hlavní menu Toto menu se vyskytuje v horní ásti hlavního okna a poskytuje pouze základní funkce aplikace: B.1.2 P idání receptu P ihlá²ení/odhlá²ení, registrace a zm na hesla uºivatele Kongurace aplikace Uºivatelské menu Je umíst no v pravé ásti hlavního okna a poskytuje tyto funkce: P idání receptu P ihlá²ení/odhlá²ení a registrace uºivatele Zobrazuje nedávno nav²tívené recepty Zobrazuje vºdy t i náhodn vybrané recepty, obnovující se po jedné minut 45

60 46 P ÍLOHA B. UšIVATELSKÁ P ÍRUƒKA B.1.3 Záloºky aplikace Záloºky hlavního okna p edstavují odd lené celky s charakteristickým ú elem. P epína záloºek je umíst n pod hlavním menu a obsahuje tyto záloºky: Start - Uvítací záloºka aplikace Recept - Zobrazený recept Výb r receptu - Záloºka pro vyhledávání recept Oblíbené recepty - Recepty uºivatele ozna ené jako oblíbené Mé recepty - Vlastní recepty uºivatele Administrace ²títk - Záloºka pro správu ²títk, viditelná pouze administrátory Administrace uºivatel - Záloºka pro správu uºivatel aplikace, viditelná pouze administrátory Obrázek B.1: Popis ástí hlavního okna aplikace B.2 Záloºka zobrazení receptu Záloºka zobrazuje recept, jeho ingredience, p i azené ²títky, postup p ípravy a dal²í informace. Popis menu je zobrazen na dal²í stránce, popis celé záloºky je zobrazen zde:

61 B.3. ZÁLOšKA VÝB RU RECEPTU 47 Obrázek B.2: Popis záloºky receptu B.3 Záloºka výb ru receptu Hlavní a jedinou funkcí této záloºky je výb r recept pomocí ²títk. títkem se rozumí ingredience, kterou recept obsahuje, nebo jejich skupina a kategorie, do kterých recept spadá. Na jeden z nalezených recept lze p ejít kliknutím na ádek receptu. B.4 Výb r ²títk Pro výb r ²títk jsou k dispozici vºdy dv komponenty. Strom nabízených ²títk a tabulka vybraných ²títk. Kategorie nebo skupiny p ísad lze ve stromu jednodu²e rozbalit poklepáním na daný ²títek. Výb r ²títku se provádí jednoduchým p esunutím (p etaºením) ²títku my²í na tabulku. Tabulka, na které by se m l ²títek upustit, je vºdy zvýrazn na po zdvihnutí ²títku ze stromu. títek lze z tabulky odebrat kliknutím na jediné tla ítko na ádku ²títku - Odebrat. B.5 Nápov da aplikace V celé aplikaci je moºné pouºít nápov du kliknutím na ikonu Ikona je zobrazena jen na místech, které nápov du podporují.

62 48 P ÍLOHA B. UšIVATELSKÁ P ÍRUƒKA Obrázek B.3: Popis menu záloºky receptu B.6 B ºné akce uºivatele Cílem této ásti je popsat postupy nejb ºn j²ích inností uºivatele v aplikaci. B.6.1 Registrace nového uºivatele Registrace je jednoduchou záleºitostí. Sta í otev ít registra ní dialog pomocí tla ítka hlavního menu Uºivatel/Registrace. Po zobrazení dialogu je nutné vyplnit v²echny jeho hodnoty. Pokud nastane chyba, aplikace uºivatele upozorní a chybu mu popí²e. Po úsp ²né registraci se uºivatel m ºe p ihlásit pomocí uvedeného u a hesla tla ítkem Uºivatel/P ihlá²ení v hlavní nabídce nebo tla ítkem P ihlásit v uºivatelském menu. B.6.2 P idání receptu Pro p idání receptu musí být uºivatel p ihlá²en. Dialog pro p idání receptu lze otev ít tla ítkem Recept/P idat recept v hlavní nabídce nebo tla ítkem P idat recept v uºivatelském menu. Po kliknutí se otev e dialog nového receptu. Poloºky ozna ené vyk i níkem musí být vypln ny.

63 B.6. B šné AKCE UšIVATELE 49 Obrázek B.4: Popis záloºky výb ru receptu Aº budou vypln ny alespo údaje ozna ené jako povinné, m ºeme p ejít na dal²í krok P ísady, kde vyplníme v²echny p ísady, které recept obsahuje. P ed samotným p idáním je doporu eno p e íst si nápov du kliknutím na ikonu informace v dialogu. Po p idání minimáln jedné p ísady lze p ejít na krok títky tla ítkem Dále. V tomto kroku ozna íme recept ²títky. títky se vybírají zp sobem uvedeným v textu vý²e ( ást Výb r ²títk ). B.6.3 Hodnocení receptu Recepty ostatních uºivatel je moºné hodnotit. Toto hodnocení potom poslouºí da²ím uºivatel m jako informace o kvalit receptu. Recept lze ohodnotit kliknutím na hv zdi ku v informa ní tabulce na záloºce receptu. Po et vybraných hv zdi ek ur uje spokojenost s receptem. Hodnotit je povoleno pouze jednou a pouze recepty ostatních uºivatel, nikoli své. B.6.4 Komentování receptu Pro p idání komentá e k receptu je nutné otev ít okno komentá receptu. Tla ítko pro jeho otev ení se nachází na záloºce receptu v nabídce dodate ných informací. Po otev ení tohoto okna lze p idat nový komentá kliknutím na tla ítko P idat komentá nebo odpov d t na existující kliknutím na tla ítko Odpov d t. B.6.5 Tisk receptu Recept je moºné vytisknout pomocí tla ítka menu záloºky receptu Tisk receptu. Po stisknutí tohoto tla ítka se otev e standardní dialog pro úpravu nastavení tisku a po jeho potvrzení se

64 50 P ÍLOHA B. UšIVATELSKÁ P ÍRUƒKA Obrázek B.5: Dialog p idání receptu - Krok Informace zobrazí náhled stránky, která bude vytisknuta. Samotný tisk zahájíme kliknutím na tla ítko Tisk tohoto náhledu. B.6.6 Administrace kategorií Záloºka administrace kategorií obsahuje t i prvky. Strom kategorií, strom ingrediencí a tabulku neza azených ingrediencí. Pro editaci stromu lze pouºít pravé tla ítko my²i t mito zp soby: Kliknutí na kategorii ve stromu kategorií Editace kategorie P idání podkategorie Kliknutí do prázdné (bílé) plochy stromu kategorií Editace skupiny kategorií nebo p idání nové P idání kategorie, která není podkategorií Kliknutí na skupinu ingrediencí ve stromu ingrediencí Editace skupiny ingrediencí P idání ingredience P idání podskupiny ingrediencí

65 B.7. CHYBY V APLIKACI 51 Obrázek B.6: Dialog p idání receptu - Krok P ísady Kliknutí na ingredienci ve stromu ingrediencí Editace ingredience, v níº m ºeme upravit i v²echny skupiny ingredience Kliknutí do prázdné (bílé) plochy stromu ingrediencí P idání skupiny ingrediencí, která není podskupinou títky lze libovoln p esouvat mezi nad azenými ²títky pouze v rámci jednoho stromu. P esun ve stromu kategorií ²títek pouze p esune, p esun ve stromu ingrediencí zkopíruje p ená²enou ingredienci nebo p esune p ená²enou skupinu ingrediencí. Pro úplnou administraci skupin ingredience je moºné editovat tuto ingredienci. V dialogu bude zobrazena i správa jejích skupin. Neza azené ingredience lze p etahovat z tabulky do stromu ingrediencí do p edem p ipravených skupin. Detaily administrace jsou uvedeny v nápov d aplikace v záloºce administrace kategorií. Nápov du je moºné zobrazit kliknutím na tla ítko nápov dy této záloºky. B.7 Chyby v aplikaci Aplikace m ºe po dobu jejího spu²t ní zobrazit n kolik chyb, které mohou nastat i p i jejím správném pouºívání. Tato ást obsahuje seznam n kterých z nich a zp sob, jak je e²it. P ípadné detaily chyb aplikace ukládá do logovacích soubor v adresá i aplikace.

66 52 P ÍLOHA B. UšIVATELSKÁ P ÍRUƒKA Obrázek B.7: Dialog p idání receptu - Krok títky Chyba: Chyba komunikace se serverem. P í ina: Náhlé ukon ení spojení se serverem z d vodu odpojení klientského po íta e od sít nebo pádu serveru. e²ení: Zkontrolujte p ipojení k síti a restartujte aplikaci. Chyba: Nastala výjimka. P í ina: Jedná se o chybu (bug) v aplikaci. e²ení: Restartujte aplikaci a va²í akci zopakujte. Chyba: N která povinná pole nebyla vypln na. P í ina: Dialog obsahuje povinná pole, která musí být vypln na p ed jeho potvrzením. Tato pole jsou ozna ena vyk i níkem. Pokud dialog neobsahuje ozna ení povinných polí, je moºné, ºe jsou povinná v²echna pole. U n kterých prvk vypln ní znamená vybrání alespo jedné poloºky. e²ení: Chybová notikace vypí²e seznam polí, která je nutno vyplnit. Vypl te tato pole a akci opakujte. Chyba: K serveru se nelze p ipojit. P í ina: Chyba se zobrazuje p i startu aplikace a indikuje, ºe adresa a port serveru, které jsou uvedeny v kongura ním souboru, odkazují jinam neº na poºadovaný server, nebo je server nedostupný.

67 B.7. CHYBY V APLIKACI 53 Obrázek B.8: Náhled tisknuté stránky receptu e²ení: Po zobrazení této chyby nabídne aplikace kongura ní dialog, ve n mº je moºné upravit adresu serveru a port, na kterém naslouchá. Zjist te si správnou adresu a port serveru a poté tyto hodnoty vypl te do kongura ního dialogu. Pokud jsou zadané hodnoty vypln ny správn, zkuste se p ipojit pozd ji. Obrázek B.9: Ukázka chyby aplikace

BOZP - akcepta ní testy

BOZP - akcepta ní testy BOZP - akcepta ní testy Kristýna Streitová Zadavatel: Ing. Ji í Chludil 13. prosince 2011 Obsah 1 Úvod 2 1.1 Popis test....................................... 2 2 Testy 3 2.1 ID - 1 P ihlá²ení do systému.............................

Více

Specifikace systému ESHOP

Specifikace systému ESHOP Nabídka: Specifikace systému ESHOP březen 2009 Obsah 1 Strana zákazníka 1 1.1 Nabídka produkt, strom kategorií..................... 1 1.2 Objednávka a ko²ík.............................. 1 1.3 Registrace

Více

Odpov di na dotazy k ve ejné zakázce. 30/2014-53-27. SSZ Registr IKP

Odpov di na dotazy k ve ejné zakázce. 30/2014-53-27. SSZ Registr IKP Odpov di na dotazy k ve ejné zakázce. 30/2014-53-27 SSZ Registr IKP 1. V dokumentu 4_Priloha_1_Specifikace-predmetu-technicke-pozadavky_Rozvoj-podpora-RIKP v kapitole 2.1 Popis architektury a vazeb v APV

Více

Návod pro vzdálené p ipojení do sít UP pomocí VPN pro MS Windows 7

Návod pro vzdálené p ipojení do sít UP pomocí VPN pro MS Windows 7 Návod pro vzdálené p ipojení do sít UP pomocí VPN pro MS Windows 7 1. Úvod nezbytné kroky ne se p ipojíte 2. Jak si vytvo it heslo 3. Nastavení VPN p ipojení pro Windows 7 1. Úvod Slu ba VPN umo uje vstoupit

Více

P íklad 1 (Náhodná veli ina)

P íklad 1 (Náhodná veli ina) P íklad 1 (Náhodná veli ina) Uvaºujeme experiment: házení mincí. Výsledkem pokusu je rub nebo líc, ºe padne hrana neuvaºujeme. Pokud hovo íme o náhodné veli in, musíme p epsat výsledky pokusu do mnoºiny

Více

Uºivatelská p íru ka Octopus

Uºivatelská p íru ka Octopus Uºivatelská p íru ka Octopus Jan Bojko 11. prosince 2014 Abstrakt Uºivatelská p íru ka k aplikaci Octopus. Obsah 1 Úvod 2 2 P ihlá²ení 2 3 Naviga ní menu 2 4 Práce s tabulkou 3 5 Editace 6 5.1 Nový záznam.............................

Více

Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120

Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120 Základní informace o struktu e dat: Komise (nadkomise) obsahují leny schválené VR (po jejich identifikaci v SIS, p íp. dopln ní budou obsahovat všechny schválené leny, po novém za azení se vyplní datum

Více

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody V praxi se asto setkávame s p ípady, kdy je pot eba e²it více rovnic, takzvaný systém rovnic, obvykle s více jak jednou neznámou.

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

Nastavení vestav ného p evodníku Ethernet -> sériová linka ES01

Nastavení vestav ného p evodníku Ethernet -> sériová linka ES01 KMB systems, s. r. o. Dr. M. Horákové 559, 460 06 Liberec 7, Czech Republic tel. +420 485 130 314, fax +420 482 736 896 E-mail: kmb@kmb.cz, Web: www.kmb.cz Nastavení vestav ného p evodníku Ethernet ->

Více

Skalární sou in. Úvod. Denice skalárního sou inu

Skalární sou in. Úvod. Denice skalárního sou inu Skalární sou in Jedním ze zp sob, jak m ºeme dva vektory kombinovat, je skalární sou in. Výsledkem skalárního sou inu dvou vektor, jak jiº název napovídá, je skalár. V tomto letáku se nau íte, jak vypo

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

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13 Seminá e Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS ZS 2010/11, sem.

Více

DeepBurner (testování UI)

DeepBurner (testování UI) ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Semestrální práce DeepBurner (testování UI) Blaºej, Friebel, Olexová, Volf P edm t: Testování uºivatelských rozhraní Obor: Softwarové inºenýrství

Více

IP kamerový systém Catr - uºivatelský návod k obsluze

IP kamerový systém Catr - uºivatelský návod k obsluze IP kamerový systém Catr - uºivatelský návod k obsluze Obsah P ipoj se k nám! Úvod 3 P ístup do systému 3 Po íta s Windows 3 Prvotní instalace 3 Ovládání kamerového systému na po íta i 5 šivý náhled...................................................

Více

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Uložené procedury Úvod ulehčit správu zabezpečení rychleji Uložené procedury Úvod Uložená procedura (rutina) je sada příkazů SQL, které jsou uložené na databázovém serveru a vykonává se tak, že je zavolána prostřednictvím dotazu názvem, který jim byl přiřazen

Více

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1 Úvod, terminologie Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS ZS 2010/11,

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

Vektory. Vektorové veli iny

Vektory. Vektorové veli iny Vektor je veli ina, která má jak velikost tak i sm r. Ob tyto vlastnosti musí být uvedeny, aby byl vektor stanoven úpln. V této ásti je návod, jak vektory zapsat, jak je s ítat a od ítat a jak je pouºívat

Více

Integrování jako opak derivování

Integrování jako opak derivování Integrování jako opak derivování V tomto dokumentu budete seznámeni s derivováním b ºných funkcí a budete mít moºnost vyzkou²et mnoho zp sob derivace. Jedním z nich je proces derivování v opa ném po adí.

Více

Binární operace. Úvod. Pomocný text

Binární operace. Úvod. Pomocný text Pomocný text Binární operace Úvod Milí e²itelé, binární operace je pom rn abstraktní téma, a tak bude ob as pot eba odprostit se od konkrétních p íklad a podívat se na v c s ur itým nadhledem. Nicmén e²ení

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

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

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

Více

Vektor náhodných veli in - práce s více prom nnými

Vektor náhodných veli in - práce s více prom nnými Vektor náhodných veli in - práce s více prom nnými 12. kv tna 2015 N kdy k popisu n jaké situace pot ebujeme více neº jednu náhodnou veli inu. Nap. v k, hmotnost, vý²ku. Mezi t mito veli inami mohou být

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

ZADÁVACÍ DOKUMENTACE

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

Více

Registr UJO. Příručka pro uživatele. Institut biostatistiky a analýz. Lékařské a Přírodovědecké fakulty Masarykovy univerzity.

Registr UJO. Příručka pro uživatele. Institut biostatistiky a analýz. Lékařské a Přírodovědecké fakulty Masarykovy univerzity. Registr UJO Příručka pro uživatele Vytvořil: Lékařské a Přírodovědecké fakulty Masarykovy univerzity Obsah Projekt UJO...... 3 On-line klinický registr obecná charakteristika. 4 On-line Registr UJO - základní

Více

Rozšířená nastavení. Kapitola 4

Rozšířená nastavení. Kapitola 4 Kapitola 4 Rozšířená nastavení 4 Nástroje databáze Jak již bylo zmíněno, BCM používá jako úložiště veškerých informací databázi SQL, která běží na všech lokálních počítačích s BCM. Jeden z počítačů nebo

Více

Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web:

Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web: Pravd podobnost a statistika - cvi ení Simona Domesová simona.domesova@vsb.cz místnost: RA310 (budova CPIT) web: http://homel.vsb.cz/~dom0015 Cíle p edm tu vyhodnocování dat pomocí statistických metod

Více

Sazba zdrojových kód. Jakub Kadl ík 20. 03. 2014

Sazba zdrojových kód. Jakub Kadl ík 20. 03. 2014 Sazba zdrojových kód Jakub Kadl ík 20. 03. 2014 1 Obsah 1 Základní prost edí verbatim 3 2 Balí ek listings 3 3 Sazba kódu z externího souboru 5 4 Téma Solarized 5 4.1 Solarized light.............................

Více

Prohlá²ení. V Praze dne 18. dubna 2010...

Prohlá²ení. V Praze dne 18. dubna 2010... ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta Bakalá ská práce Studentova Berli ka III - Jádro aplikace Jaromír Van k Vedoucí práce: Ing. Ji í Chludil Studijní program: Softwarové

Více

Manuál uživatele čipové karty s certifikátem

Manuál uživatele čipové karty s certifikátem Manuál uživatele čipové karty s certifikátem Obsah 1 Úvod... 3 2 Instalace čipové karty s certifikátem... 5 3 Instalace čtečky čipových karet... 10 3.1 Instalace z Windows Update... 10 3.2 Manuální instalace

Více

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

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

Více

Limity funkcí v nevlastních bodech. Obsah

Limity funkcí v nevlastních bodech. Obsah Limity funkcí v nevlastních bodech V tomto letáku si vysv tlíme, co znamená, kdyº funkce mí í do nekone na, mínus nekone na nebo se blíºí ke konkrétnímu reálnému íslu, zatímco x jde do nekone na nebo mínus

Více

Obec Jino any : 00241342,252 25 Jino any

Obec Jino any : 00241342,252 25 Jino any Obec Jino any : 00241342,252 25 Jino any Oznámení zám ru V souladu s ust. 39 odst. 1 zákona. 128/2000 Sb. o obcích ve zn ní pozd jších p edpis oznamuje obec Jino any sv j zám r pronajmout tento nemovitý

Více

TRANSFORMACE. Verze 4.0

TRANSFORMACE. Verze 4.0 TRANSFORMACE Verze 4.0 Obsah: 1. Instalace 1.1. Požadavky programu 1.2. Ochrana programu 1.3. Instalace 2. Rastr 2.1 Rastrové referenční výkresy 2.1.1 Menu Nástroje 3. Transformace rastru 3.1 Otevřít 3.2

Více

Android Elizabeth. Verze: 1.3

Android Elizabeth. Verze: 1.3 Android Elizabeth Program pro měření mezičasů na zařízeních s OS Android Verze: 1.3 Naposledy upraveno: 12. března 2014 alesrazym.cz Aleš Razým fb.com/androidelizabeth Historie verzí Verze Datum Popis

Více

Kapitola 1: Co je Delphi 19. Překlad projektu 23

Kapitola 1: Co je Delphi 19. Překlad projektu 23 Obsah Úvod 15 Pro koho je tato kniha 15 Obsah jednotlivých kapitol knihy 16 Typografické konvence 17 Použité ikony 17 Kontakt na autora 17 Poděkování 18 Kapitola 1: Co je Delphi 19 Verze Delphi 19 Co je

Více

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

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

Více

Evko - uºivatelská p íru ka verze 5.1.0

Evko - uºivatelská p íru ka verze 5.1.0 Evko - uºivatelská p íru ka verze 5.1.0 22. ervna 2005 2 Kapitola 1 Úvod Program EVKO je ur en jako pomocník p edev²ím pro montáºní a servisní rmy p i plánování a evidenci pravidelných revizí, kontrol,

Více

T i hlavní v ty pravd podobnosti

T i hlavní v ty pravd podobnosti T i hlavní v ty pravd podobnosti 15. kv tna 2015 První p íklad P edstavme si, ºe máme atomy typu A, které se samovolným radioaktivním rozpadem rozpadají na atomy typu B. Pr m rná doba rozpadu je 3 hodiny.

Více

WinCC V7.3. SIMATIC Logon. Siemens, s.r.o., Digital Factory 2015 Všechnapráva vyhrazena. Strana1 2015-05 Ladislav Plachý / RC-CZ DF SUP

WinCC V7.3. SIMATIC Logon. Siemens, s.r.o., Digital Factory 2015 Všechnapráva vyhrazena. Strana1 2015-05 Ladislav Plachý / RC-CZ DF SUP WinCC V7.3 SIMATIC Logon Strana1 2015-05 Ladislav Plachý / RC-CZ DF SUP Sou ást Siemens industrial security konceptu Ochrana proti neautorizovanému p ístupu s využitím Windows mechanism Pro WinCC to znamená

Více

S M L O U V A O D Í L O. uzavřená podle ust. 2586 a násl. zákona č. 89/2012 Sb., občanského zákoníku v platném znění II.

S M L O U V A O D Í L O. uzavřená podle ust. 2586 a násl. zákona č. 89/2012 Sb., občanského zákoníku v platném znění II. S M L O U V A O D Í L O uzavřená podle ust. 2586 a násl. zákona č. 89/2012 Sb., občanského zákoníku v platném znění Čl. I. Smluvní strany Objednatel: Město Bílina Břežánská 50/4, 418 31 Bílina Zastoupení:

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

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

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

Kelvin v kapkový generátor

Kelvin v kapkový generátor Kelvin v kapkový generátor Kry²tof Kadlec 1, Luká² Kune² 2, Luká² N me ek 3 1 Gymnázium Franti²ka Palackého, Vala²ské Mezi í í, krystoof.2@seznam.cz 2 Gymnázium, Zlatá stezka 137, Prachatice, kunamars@seznam.cz

Více

Komfortní datová schránka

Komfortní datová schránka Komfortní datová schránka Obsah 1. Komfortní datová schránka... 2 2. Záložka Schránky... 2 2.1. Přidání datové schránky... 2 2.2. Přidání složky do evidence datové schránky... 4 2.3. Přidání dalšího uživatele

Více

IPCorder Uºivatelský manuál

IPCorder Uºivatelský manuál IPCorder Uºivatelský manuál 12. srpna 2007 2 Obsah 1 Úvod 5 1.1 Popis systému....................................... 5 1.2 Systémové poºadavky.................................. 6 2 Kongurace 7 2.1 Nastavení

Více

FOND VYSOČINY NÁZEV GP

FOND VYSOČINY NÁZEV GP RF-04-2009-01, př. 1upr1 Počet stran: 6 FOND VYSOČINY Výzva k předkládání projektů vyhlášená v souladu se Statutem účelového Fondu Vysočiny 1) Název programu: NÁZEV GP Grantový program na podporu 2) Celkový

Více

EXTRAKT z české technické normy

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

Více

Smlouva o ubytování. Článek I Smluvní strany

Smlouva o ubytování. Článek I Smluvní strany číslo smlouvy objednatele: 437/OSV/2016 číslo smlouvy ubytovatele: Smlouva o ubytování Článek I Smluvní strany 1. Objednatel: Havířov, statutární město se sídlem: Svornosti 2,73601 Havířov-Město není zapsán

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

Městská část Praha - Ďáblice Rada městské části. USNESENÍ č. 228/15/RMČ k uzavření smlouvy na administraci veřejné zakázky Dostavba a přístavba ZŠ

Městská část Praha - Ďáblice Rada městské části. USNESENÍ č. 228/15/RMČ k uzavření smlouvy na administraci veřejné zakázky Dostavba a přístavba ZŠ Městská část Praha - Ďáblice Rada městské části 28. zasedání dne 30. 11. 2015 USNESENÍ č. 228/15/RMČ k uzavření smlouvy na administraci veřejné zakázky Dostavba a přístavba ZŠ RMČ po projednání: I. souhlasí

Více

Aplika ní doložka KA R Ov ování výro ní zprávy

Aplika ní doložka KA R Ov ování výro ní zprávy Aplika ní doložka KA R Ov ování výro ní zprávy ke standardu ISA 720 ODPOV DNOST AUDITORA VE VZTAHU K OSTATNÍM INFORMACÍM V DOKUMENTECH OBSAHUJÍCÍCH AUDITOVANOU Ú ETNÍ ZÁV RKU Aplika ní doložku mezinárodního

Více

Server. Software serveru. Služby serveru

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

Více

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

IPCorder KNR-100 Instala ní p íru ka

IPCorder KNR-100 Instala ní p íru ka IPCorder KNR-100 Instala ní p íru ka 12. srpna 2007 2 Obsah 1 Instalace 5 1.1 Obsah balení....................................... 5 1.2 Instalace pevného disku................................. 5 1.3 Zapojení

Více

téma: Formuláře v MS Access

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

Více

Operace nad celými tabulkami

Operace nad celými tabulkami 10 Operace nad celými tabulkami V předchozích kapitolách jsme se převážně zabývali sloupci tabulek. V této kapitole se naučíme provádět některé operace, které ovlivňují tabulky jako celek. Probereme vlastnosti

Více

Národního registru u ivatel léka sky indikovaných substitu ních látek (papírové hlá enky)

Národního registru u ivatel léka sky indikovaných substitu ních látek (papírové hlá enky) PRAVIDLA A FORMULÁ E PRO ZAVÁD NÍ/RU ENÍ U IVATEL do Národního registru u ivatel léka sky indikovaných substitu ních látek (papírové hlá enky) 1 ZAVÁD NÍ NOVÝCH U IVATEL 1.1 Zpravodajské jednotky (Zdra

Více

Adresa p íslušného ú adu. Ú ad:... Ulice:... PS, obec:...

Adresa p íslušného ú adu. Ú ad:... Ulice:... PS, obec:... P íloha. 2 k vyhlášce. 503/2006 Sb. Adresa p íslušného ú adu Ú ad:... Ulice:... PS, obec:... V c: ŽÁDOST O VYDÁNÍ ROZHODNUTÍ O ZM N VYUŽITÍ ÚZEMÍ v územním ízení ve zjednodušeném územním ízení podle ustanovení

Více

PODMÍNKY VÝBĚROVÉHO ŘÍZENÍ

PODMÍNKY VÝBĚROVÉHO ŘÍZENÍ PODMÍNKY VÝBĚROVÉHO ŘÍZENÍ I. Vyhlašovatel výběrového řízení Vyhlašovatelem výběrového řízení je společnost ČEPS, a.s., se sídlem Elektrárenská 774/2, 101 52 Praha 10, IČ 25702556, DIČ CZ25702556, zapsaná

Více

Prezentace. Ing. Petr V elák 6. b ezna 2009

Prezentace. Ing. Petr V elák 6. b ezna 2009 Prezentace Ing. Petr V elák 6. b ezna 2009 1 OBSAH OBSAH Obsah 1 Úvodní slovo 3 2 P íprava prezentace 4 2.1 Jak prezentace ned lat........................ 4 2.1.1 Kontrast písma a pozadí...................

Více

Praktické úlohy- zaměření specializace

Praktické úlohy- zaměření specializace Praktické úlohy- zaměření specializace Realizace praktických úloh zaměřených na dovednosti v oblastech specializace POS: Síťový OS, instalace, konfigurace a optimalizace podle zamýšleného použití; Inicializace

Více

PŘÍLOHA č. 2C PŘÍRUČKA IS KP14+ PRO OPTP - ZPRÁVA O REALIZACI

PŘÍLOHA č. 2C PŘÍRUČKA IS KP14+ PRO OPTP - ZPRÁVA O REALIZACI PŘÍLOHA č. 2C PRAVIDEL PRO ŽADATELE A PŘÍJEMCE PŘÍRUČKA IS KP14+ PRO OPTP - ZPRÁVA O REALIZACI OPERAČNÍ PROGRAM TECHNICKÁ POMOC Vydání 1/7, platnost a účinnost od 04. 04. 2016 Obsah 1 Zprávy o realizaci...

Více

2C06028-00-Tisk-ePROJEKTY

2C06028-00-Tisk-ePROJEKTY Stránka. 27 z 50 3.2. ASOVÝ POSTUP PRACÍ - rok 2009 3.2.0. P EHLED DÍL ÍCH CÍL PLÁNOVANÉ 2009 íslo podrobn Datum pln ní matematicky formulovat postup výpo t V001 výpo etní postup ve form matematických

Více

Uživatelská dokumentace

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

Více

P O D M Í N K Y V Ý B

P O D M Í N K Y V Ý B Městská část Praha 20 zveřejňuje ve smyslu 36 odst. 1 zákona č. 131/2000 Sb., o hl. m. Praze záměr prodat formou výběru pozemek parc.č. 4229/15, k. ú. Horní Počernice, a to za následujících podmínek: P

Více

KUPNÍ SMLOUVA. Článek I. Smluvní strany

KUPNÍ SMLOUVA. Článek I. Smluvní strany 5/14/10 KUPNÍ SMLOUVA Článek I. Smluvní strany kupující: jednající: Střední škola automobilní a informatiky se sídlem: Weilova 1270/4, 10200 Praha IČ: 00497070 DIČ: CZ00497070 Ing. Milan Vorel, ředitel

Více

Dálkové p enosy ze za ízení aktivní protikorozní ochrany Severomoravské plynárenské, a.s.

Dálkové p enosy ze za ízení aktivní protikorozní ochrany Severomoravské plynárenské, a.s. Dálkové p enosy ze za ízení aktivní protikorozní ochrany Severomoravské plynárenské, a.s. Tomáš D dina, Lubomír Herman Severomoravská plynárenská, a.s. Hlavní d vody realizace Podmínkou bezpe nosti a spolehlivosti

Více

Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina

Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina VÝCHOVNÝ ÚSTAV A ŠKOLNÍ JÍDELNA NOVÁ ROLE Školní 9, Nová Role, PSČ: 362 25, Tel: 353 851 179 Dodavatel: Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina 1. Zadavatel Výchovný

Více

Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace

Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace Franti²ek N mec (xnemec61) xnemec61@stud.t.vutbr.cz 1 Úvod Úkolem tohoto projektu bylo vytvo it aplikaci, která bude demonstrovat

Více

DATABÁZE 2007. DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

DATABÁZE 2007. DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní: DATABÁZE 2007 DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní: - jednoduše a rychle provést úpravy ve struktuře vaší databáze podle potřeby

Více

U ivatelská p íru ka

U ivatelská p íru ka U ivatelská p íru ka k eearth aplikaci pro prohlí ení vrt a dal ích geologicky dokumentovanýc h objekt z databáze GDO v informa ním systému GS-Geofondu ( íjen 2008) eearth systém umo uje u ivatel m prohlí

Více

Obnova zámeckých alejí ve městě Vimperk

Obnova zámeckých alejí ve městě Vimperk Oznámení o zahájení zadávacího řízení pro zakázku malého rozsahu Obnova zámeckých alejí ve městě Vimperk CZ.1.02/6.5.00/15.29670 Tato zakázka je zakázkou malého rozsahu ve smyslu ust. 12 odst. 3 Zákona

Více

2. Ur íme sudost/lichost funkce a pr se íky s osami. 6. Na záv r na rtneme graf vy²et ované funkce. 8x. x 2 +4

2. Ur íme sudost/lichost funkce a pr se íky s osami. 6. Na záv r na rtneme graf vy²et ované funkce. 8x. x 2 +4 Pr b h funkce V této jednotce si ukáºeme jak postupovat p i vy²et ování pr b hu funkce. P edpokládáme znalost po ítání derivací a limit, které jsou dob e popsány v p edchozích letácích tohoto bloku. P

Více

Čl. I. Vyhláška č. 106/2001 Sb., o hygienických požadavcích na zotavovací akce pro děti, ve znění vyhlášky č. 148/2004 Sb.

Čl. I. Vyhláška č. 106/2001 Sb., o hygienických požadavcích na zotavovací akce pro děti, ve znění vyhlášky č. 148/2004 Sb. 320 VYHLÁŠKA ze dne 15. listopadu 2010, kterou se mění vyhláška Ministerstva zdravotnictví č. 106/2001 Sb., o hygienických požadavcích na zotavovací akce pro děti, ve znění vyhlášky č. 148/2004 Sb. Ministerstvo

Více

MĚSTO NOVÁ BYSTŘICE SMĚRNICE PRO ZADÁVÁNÍ A EVIDENCI VEŘEJNÝCH ZAKÁZEK MALÉHO ROZSAHU (VZMR)

MĚSTO NOVÁ BYSTŘICE SMĚRNICE PRO ZADÁVÁNÍ A EVIDENCI VEŘEJNÝCH ZAKÁZEK MALÉHO ROZSAHU (VZMR) MĚSTO NOVÁ BYSTŘICE SMĚRNICE PRO ZADÁVÁNÍ A EVIDENCI VEŘEJNÝCH ZAKÁZEK MALÉHO ROZSAHU (VZMR) Schválená Radou města Nová Bystřice dne 3. 6. 2015 usnesením RM č. 167/2015. PLATNÁ OD: 3. 6. 2015 ROZSAH PŮSOBNOSTI:

Více

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

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

Více

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

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

Více

Věc: Výzva pro předložení nabídek k veřejné zakázce s názvem: VÚ a ŠJ PŠOV, Nákup nového osmimístného vozidla

Věc: Výzva pro předložení nabídek k veřejné zakázce s názvem: VÚ a ŠJ PŠOV, Nákup nového osmimístného vozidla VÝCHOVNÝ ÚSTAV A ŠKOLNÍ JÍDELNA PŠOV PŠOV 1 Podbořany 441 01 Tel. ředit: 415 211 297, Mobil ředit.: 736 633 595, Tel. ústředna: 415 214 615, e - mail: a.sava@seznam.cz, Fax: 415 211529, www.vupsov.cz Věc:

Více

Uºivatelská p íru ka k programu SlaFoR verze 1.0

Uºivatelská p íru ka k programu SlaFoR verze 1.0 1 Uºivatelská p íru ka k programu SlaFoR verze 1.0 Toto je manuál k programu SlaFoR 1.0 (Slab Forces & Reinforcement), který byl vytvo en v rámci bakalá ské práce na kated e betonových a zd ných konstrukcí

Více

Statistika pro geografy. Rozd lení etností DEPARTMENT OF GEOGRAPHY

Statistika pro geografy. Rozd lení etností DEPARTMENT OF GEOGRAPHY Statistika pro geografy Rozd lení etností DEPARTMENT OF GEOGRAPHY Faculty of Science Palacký University Olomouc t. 17. listopadu 1192/12, 771 46 Olomouc Pojmy etnost = po et prvk se stejnou hodnotou statistického

Více

usnesení o nařízení elektronického dražebního jednání (dražební vyhláška)

usnesení o nařízení elektronického dražebního jednání (dražební vyhláška) Exekutorský úřad Chomutov Mgr. Jan Peroutka,soudní exekutor Revoluční 48, 430 01 Chomutov, IČ: 66225108, DIČ: CZ6805280988 Tel/Fax: 474 335 579, e-mail: info@exekucecv.cz, mobil : 774 760 744, DS: n7tg8u3

Více

ORGANIZAČNÍ ŘÁD ŠKOLY

ORGANIZAČNÍ ŘÁD ŠKOLY Základní škola Hošťálková, okres Vsetín ORGANIZAČNÍ ŘÁD ŠKOLY část: SM - KAMEROVÝ SYSTÉM - PROVOZOVÁNÍ Č.j.: 1-20/2016 Vypracoval: Schválil: Mgr. Miloš Sobotka, ředitel školy Mgr. Miloš Sobotka, ředitel

Více

Inovace výuky prostřednictvím šablon pro SŠ

Inovace výuky prostřednictvím šablon pro SŠ Název projektu Číslo projektu Název školy Autor Název šablony Název DUMu Stupeň a typ vzdělávání Vzdělávací oblast Vzdělávací obor Tematický okruh Inovace výuky prostřednictvím šablon pro SŠ CZ.1.07/1.5.00/34.0748

Více

HLAVA III PODROBNOSTI O VEDENÍ ÚST EDNÍHO SEZNAMU OCHRANY P ÍRODY

HLAVA III PODROBNOSTI O VEDENÍ ÚST EDNÍHO SEZNAMU OCHRANY P ÍRODY HLAVA III PODROBNOSTI O VEDENÍ ÚST EDNÍHO SEZNAMU OCHRANY P ÍRODY (K 42 odst. 2 zákona) 5 (1) Úst ední seznam ochrany p írody (dále jen "úst ední seznam") zahrnuje soupis, popis, geometrické a polohové

Více

Provozní řád DTM DMVS Plzeňského kraje

Provozní řád DTM DMVS Plzeňského kraje Příloha č. 1 Směrnice DTM DMVS Plzeňského kraje Provozní řád DTM DMVS Plzeňského kraje Verze 3.2 DTM DMVS Plzeňského kraje Zpracoval Datum 1. 3. 2015 Popis Vydavatel URL Platnost Práva Zpracováno ve spolupráci

Více

Návrh, zhotovení a dodání tištěných propagačních materiálů

Návrh, zhotovení a dodání tištěných propagačních materiálů Vysočina Tourism, příspěvková organizace vyhlašuje v souladu s Pravidly Rady kraje Vysočina pro zadávání veřejných zakázek v podmínkách kraje Vysočina a příspěvkových organizací zřizovaných krajem Vysočina

Více

Přijímací řízení. Univerzitní informační systém. Svazek 6. Mendelova univerzita v Brně

Přijímací řízení. Univerzitní informační systém. Svazek 6. Mendelova univerzita v Brně Univerzitní informační systém Mendelova univerzita v Brně Přijímací řízení Svazek 6 Verze: 2.69 Datum: 11. března 2016 Autor: Jitka Šedá, Martin Tyllich Obsah Seznam obrázků 5 1 Přijímací řízení 7 2 Úvod

Více

Pr b h funkce I. Obsah. Maxima a minima funkce

Pr b h funkce I. Obsah. Maxima a minima funkce Pr b h funkce I Maxima a minima funkce V této jednotce ukáºeme jak derivování m ºe být uºite né pro hledání minimálních a maximálních hodnot funkce. Po p e tení tohoto letáku nebo shlédnutí instruktáºního

Více

VÝZVA K PODÁNÍ NABÍDKY NA VEŘEJNOU ZAKÁZKU MALÉHO ROZSAHU. JAMU vzduchotechnika a klimatizace depozitáře knihovny v objektu Novobranská 691/3, Brno"

VÝZVA K PODÁNÍ NABÍDKY NA VEŘEJNOU ZAKÁZKU MALÉHO ROZSAHU. JAMU vzduchotechnika a klimatizace depozitáře knihovny v objektu Novobranská 691/3, Brno Janáčkova akademie múzických umění v Brně Beethovenova 650/2, 662 15 Brno IČO: 62156462, DIČ: CZ 62156462, bankovní spojení KB Brno č. účtu 27-0493900217/0100 Veřejná vysoká škola podle zákona č. 111/1998

Více

Nastavení telefonu T-Mobile MDA Touch

Nastavení telefonu T-Mobile MDA Touch Nastavení telefonu T-Mobile MDA Touch Telefon s integrovaným kapesním počítačem T-Mobile MDA Touch, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití

Více

usnesení o nařízení elektronického dražebního jednání (dražební vyhláška)

usnesení o nařízení elektronického dražebního jednání (dražební vyhláška) Exekutorský úřad Chomutov Mgr. Jan Peroutka,soudní exekutor Revoluční 48, 430 01 Chomutov, IČ: 66225108, DIČ: CZ6805280988 Tel/Fax: 474 335 579, e-mail: info@exekucecv.cz, mobil : 775081383, DS: n7tg8u3

Více

ŽÁDOST O VYDÁNÍ ROZHODNUTÍ O UMÍST NÍ STAVBY ÁST A

ŽÁDOST O VYDÁNÍ ROZHODNUTÍ O UMÍST NÍ STAVBY ÁST A P íloha. 1 k vyhlášce. 503/2006 Sb. Adresa p íslušného ú adu Ú ad:... Ulice:... PS, obec:... V c: ŽÁDOST O VYDÁNÍ ROZHODNUTÍ O UMÍST NÍ STAVBY v územním ízení ve zjednodušeném územním ízení podle ustanovení

Více

Transak ní zpracování I

Transak ní zpracování I Transak ní zpracování I Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS

Více

DODATEČNÉ INFORMACE Č. 4 K ZADÁVACÍM PODMÍNKÁM VEŘEJNÉ ZAKÁZKY

DODATEČNÉ INFORMACE Č. 4 K ZADÁVACÍM PODMÍNKÁM VEŘEJNÉ ZAKÁZKY DODATEČNÉ INFORMACE Č. 4 K ZADÁVACÍM PODMÍNKÁM VEŘEJNÉ ZAKÁZKY Komplexní servis prádla a oděvů pro Nemocnici Jihlava Nadlimitní zakázka na služby zadávaná v otevřeném řízení dle zákona 137/2006 Sb., o

Více

uzavírají podle ustanovení 1746 odst. 2 zákona č. 89/2012 Sb., občanský zákoník (dále jen občanský zákoník ), tuto

uzavírají podle ustanovení 1746 odst. 2 zákona č. 89/2012 Sb., občanský zákoník (dále jen občanský zákoník ), tuto Statutární město Přerov IČ: 003 01 825 DIČ: CZ00301825 se sídlem Bratrská 709/34, Přerov I-Město, 750 02 Přerov zastoupené náměstkem primátora Pavlem Košutkem (dále jako Město ) MMPr/SML/2183/2015 a Česká

Více