• No results found

Ukázka zachycení chybné syntaxe pomocí Lad nky

In document Liberec 2014 Jakub Jirouš (Page 20-28)

Ladící panel neboli Debugger Bar, se zobrazuje p edevším ve vývojá ském režimu.

Obsahuje d ležité informace o aktuálním stavu vyvíjené aplikace jako je aktuální as provád ní, velikost využití alokované pam ti, informace o p ihlášeném uživateli, aktu-áln využívaném presenteru a šablon . Další informace se týkají routování. Na ladícím panelu jsou zobrazeny informace o všech dostupných routách a je zde rovn ž vyzna ena aktivní routa spl ující konkrétní routovací pravidlo.

Obrázek 3: Ladící panel

3.5 Šablonovací jazyk

Jednou z klí ových ástí a p edností celého Nette je intuitivní šablonovací jazyk známý pod názvem Latte. Celkový vývoj webových aplikací dokáže zp íjemnit a usnadnit práci díky možnosti vytvá ení i využití helper a maker. Navíc zabezpe uje výstup p ed zranitelnostmi, jako je nap íklad XSS.

Latte disponuje velmi d ležitou vlastností v podob výpisu prom nných, které jsou automaticky escapovány. Výpis libovolné prom nné by m l být vždy proveden pomocí escapování, aby bylo dodrženo p evedení znak obsahující v HTML speciální význam na alternativní odpovídající sekvence. Bez escapování prom nných by mohla v aplikaci vzniknout bezpe nostní díra v podob XSS [9].

V r zných ástech dokument nebo stránek se využívají odlišné escapovací funkce, proto Latte využívá unikátní technologii Context-Aware Escaping. Zmín ná technologie dokáže automaticky rozpoznat, o jakou p esnou ást dokumentu se jedná a podle toho zvolit správné a odpovídající escapování. Využitím zmín né technologie jsou zamezena rizika vzniku bezpe nostních d r v podob chybn vypsané prom nné.

3.6 Dependency Injection

Podstatou DI (Dependency Injection) je odebrání t ídám jejich zodpov dnosti za získávání objekt , které pot ebují pro svoji innost (tzv. služeb) a místo toho jim služby p edávat p ímo p i vytvá ení. V aplikaci vznikne daleko srozumiteln jší kód a eliminují se vazby mezi sou ástmi aplikace. Pomocí tohoto principu je možné zajistit znovu pou-žitelnost celého kódu [10].

3.7 MVC aplikace

Nette používá pro tvorbu webových aplikací MVC (Model–View–Controller) mo-del. MVC je softwarová architektura odd lující u aplikací s grafickým rozhraním obslužný kód od kódu aplika ní logiky a od kódu zobrazujícího data. Tímto modelem se aplikace zp ehled uje, usnad uje se její budoucí vývoj a umož uje tvorbu i testování jednotlivých ástí odd len [11].

Model je datový a funk ní základ celé aplikace. Obsahuje aplika ní logiku, ve které je libovolná akce uživatele reprezentována jako akce modelu. Model si spravuje sv j vnit ní stav a dále zprost edkovává striktn definované rozhraní. Voláním funkcí tohoto rozhraní je možné m nit nebo zjiš ovat jeho stav. Model o existenci view i kontroleru v bec neví a p edstavuje celou vrstvu, nikoliv pouze samostatnou t ídu.

! "

Pohled neboli view je vrstva aplikace, která se stará o zobrazování požadovaného výsledku. Používá šablonovací systém a dokáže definovat p esné vykreslení jednotlivých komponent nebo výsledek získaný z modelu.

#

adi zpracovává uživatelovy požadavky a na jejich základ volá p íslušnou apli-ka ní logiku, tedy model, a poté odešle žádost view, aby vykreslil data. V Nette jsou kontrolery realizovány presentery.

3.8 Twitter Bootstrap

Twitter Bootstrap (dále jen Bootstrap) je v sou asné dob jeden z nejpoužívan jších a nejoblíben jších framework pro tvorbu vizuální ásti webových aplikací s podporou responzivního designu pro za ízení s r zným rozlišením displej . Bootstrap je vydáván pod licencí MIT s autorskými právy 2014 Twitter.

Jedním z hlavních d vod výb ru technologií Bootstrap a Nette je ten, že spole n vytvá í výchozí prost edky, pomocí kterých lze vytvá et moderní webové aplikace. Navíc je již p ímo v samotném jád e Nette vytvo ena podpora pro vykreslování jednotlivých

ástí aplikace pro Bootstrap verze 2 nebo 3.

Nap íklad vykreslování formulá vytvo ených v Nette je velmi snadné. Jednodu-chým zp sobem lze v továrni ce formulá e p enastavit výchozí nastavení renderu, který se stará o vykreslování formulá e v šablon . Jednotlivým blok m formulá e jsou p i a-zeny CSS atributy, díky kterým m že být formulá vytvo ený v Nette p i vykreslování nastylován pomocí technologie Bootstrap.

4 MySQL

MySQL pat í pravd podobn mezi nejpopulárn jší databázové systémy pro tvorbu webových aplikací, který byl vyvinut v polovin 90. let 20. století. Jedním z hlavních d vod velké popularity MySQL je fakt, že je obdobn jako PHP voln a zdarma do-stupné. Disponuje mimo ádnou výkonností a rychlostí. Dokáže b žet na nejzákladn jším typu hardwaru [12].

Celá aplikace pracuje s daty uloženými v rela ní databázi práv na zmín né plat-form MySQL.

4.1 Typy databázových úložiš

MySQL databáze nabízejí n kolik typ úložiš . Každý typ má své výhody i nevý-hody a jejich použití se hodí v r zných situacích.

$%

Tabulky typu MyISAM nepodporují transakce, ale na druhou stranu jsou velmi rychlé. Tento typ je p evážn optimalizován na zpracování dotaz typu SELECT.

Statické tabulky

Vyzna ují se tím, že neobsahují žádný datový typ s prom nnou délkou. Pro každý údaj v databázi je pevn vyhrazené místo. Proto dotazy nad touto ta-bulkou probíhají velmi rychle.

Dynamické tabulky

Obsahují n které datové typy s prom nnou délkou a každý údaj musí navíc obsahovat informaci o své délce. Dochází k fragmentaci ásti záznamu.

! % &'

InnoDB je velice spolehlivé a výkonné databázové jádro databázového systému MySQL. Tabulky typu InnoDB uspo ádávají data na disk k optimalizaci b žných dotaz na základ primárních klí . Každá tabulka má primární index klí e nazvaný jako

klastro-5 Cíl práce

Hlavním cílem bakalá ské práce je vytvo ení online aplikace spravující databázi prost ednictvím vizuálního rozhraní. Na základ technických možností databázové plat-formy MySQL, kterou bude aplikace primárn využívat, bude vytvo en nástroj pro vizuální editaci databázových struktur a p íslušných vazeb mezi nimi. Nástroj bude mít podobu samostatné webové aplikace.

P ínosem práce je vznik online nástroje, kterému je umožn no spravovat databázi se snadnou instalací a bez nutnosti dodate né konfigurace na stran serveru. Dodržení správné a minimální pot ebné konfigurace serveru je zajiš ováno pomocí nástroje obsaženého v distribuci Nette.

Výsledný nástroj bude schopen zvládat p ipojení k lokálnímu serveru a za použití nepovinné hodnoty portu bude zvládat p ipojení i ke vzdálenému databázovému serveru.

K jednomu konkrétnímu databázovému serveru bude v aplikaci umožn no z jed-noho webového prohlíže e p ipojení více uživatel zárove .

Pomocí jednoduše ovladatelného a intuitivního webového rozhraní bude možné vi-zualizovat obsah databázového serveru od výpisu jednotlivých databází na serveru až po výpis dat z konkrétních tabulek. Vypsaná data z tabulek bude možné editovat.

Aplikace bude schopná vytvá et intuitivn jší schéma databáze oproti existujícím nástroj m za pomocí javascriptové knihovny JointJS pro tvorbu diagram .

Jednotlivým uživatel m s možností p ipojení k databázovému serveru bude možné m nit heslo a oprávn ní od globální úrovn až po úrove jednotlivého sloupce v tabulce.

Nástroj bude možné využívat na libovolném zobrazovacím za ízení od mobilního telefonu, tabletu, laptopu až po klasické monitory protože design bude využívat moderní responzivní technologii.

6 Postup vývoje aplikace

Samotný návrh a realizace ešení probíhaly sou asn , protože nebylo možné dosta-te n dop edu odhalit všechny souvislosti a problémy, kdosta-teré jsou s tvorbou aplikace spojeny. Aktuální ešení problému p icházelo vždy po absolvované konzultaci s vedou-cím bakalá ské práce.

Postup vývoje aplikace je vy len n do n kolika následujících kapitol, které ešenou problematiku podrobn popisují a objas ují.

6.1 Kontrola p ed spušt ním aplikace

P ed samotným spušt ním aplikace je nutné zajistit, aby byly spln ny alespo mi-nimální požadavky pro b h aplikace. Jelikož je celá aplikace vytvá ena pomocí Nette, je nutné, aby server spl oval minimální požadavky pro spušt ní Nette.

Sou ástí distribu ního balí ku Nette je samostatný nástroj nazvaný Requirement Checker. Tento nástroj po nahrání na server otestuje b hové prost edí, konfiguraci

serveru a informuje o možnostech a omezeních využití funkcí frameworku.

Nástroj provádí testování nad t mito požadavky [5]:

• Verze PHP – ke spušt ní je pot eba minimáln verze PHP 5.3.1 nebo vyšší

.htaccess ochrana soubor – zkontroluje, zda je za pomocí .htaccess zakázán p ístup do chrán ných složek

.htaccess mod_rewrite – kontrola p ítomnosti mod_rewrite pro podporu routování

• Funkce ini_set() a error_reporting() – p ítomnost t chto funkcí je z bezpe nostních d vod d ležitá

• Funkce flock() – tuto funkci vyžaduje cache pam

Register_globals – jedná se o nebezpe nou direktivu PHP, která musí být vypnutá

Zend.ze1_compatibility_mode – zajišt ní, aby byla kompatibilita s PHP

• Automatický start session prom nných – na základ bezpe nostních d vod je doporu eno nepoužívat

Rozší ení Reflection, SPL, PCRE, ICONV, PHP tokenizer – jedná se o roz-ší ení PHP vyžadované frameworkem

Rozší ení PDO – rozší ení PHP vyžadované Nette\Database

Rozší ení Multibyte String – rozší ení PHP využívané funkcemi

Strings::lower() a Strings::upper()

Rozší ení Memcache – rozší ení PHP podporované úložišt m cache

Rozší ení GD – rozší ení PHP vyžadované p i použití Nette\Image

Rozší ení GD Bundled – rozší ení PHP vyžadované p i použití metod

Nette\Image::filter()a Nette\Image::rotate()

Rozší ení fileinfo nebo mime_content_type() – funkce využívaná pro zjiš o-vání MIME typu u nahrávaných soubor

Requirement Checker nebyl použit jako samostatný nástroj, ale stal se sou ástí apli-kace. P ed spušt ním aplikace nástroj provede otestování prost edí a konfigurace serveru.

V p ípad , že nastane n jaká závažná chyba, nebo nejsou spln ny minimální požadavky pro spušt ní Nette aplikace, dojde k zobrazení podrobností o chybách, které nastaly v pr -b hu testování. Teprve, když pro-b hnou všechny testy -bez chy-by, dojde ke spušt ní samotné aplikace.

In document Liberec 2014 Jakub Jirouš (Page 20-28)