PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY DIPLOMOVÁ PRÁCE. Srovnání webových frameworků Petr Novosad

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

Download "PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY DIPLOMOVÁ PRÁCE. Srovnání webových frameworků Petr Novosad"

Transkript

1 PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY DIPLOMOVÁ PRÁCE Srovnání webových frameworků 2013 Petr Novosad

2 Anotace Cílem práce je vypracování odborné studie hodnotící a porovnávající vybrané webové frameworky (aplikační rámce pro tvorbu webu). Vybrané frameworky budou nad různými platformami. V rámci řešení bude ve všech frameworcích vzorově vytvořena vhodná modelová aplikace demonstrující různé aspekty a (pokročilejší) možnosti frameworků, jako např. snadnost vytvoření aplikace (včetně uživatelské podpory pro framework), nabízená funkcionalita (dynamické webové prvky, práce s databází, zabezpečení aj.), dostupná dokumentace apod.

3 Děkuji vedoucímu práce, Mgr. Janu Outratovi, Ph.D. za vedení mojí diplomové práce, cenné rady a čas obětovaný při konzultacích.

4 Obsah 1. Úvodní slovo 6 2. Úvod do webových frameworků Programování webových aplikací Framework Výběr frameworku Architektura MVC Srovnávané frameworky Ruby on Rails Nette Django Porovnání obecných aspektů frameworků Instalace a spuštění Ruby on Rails Nette Django Shrnutí API a Tutoriály Ruby on Rails Nette Django Shrnutí Rozšiřující nástroje Ruby on Rails Nette Django Shrnutí Podpora komunity Dostupnost serverů v ČR Ruby on Rails Nette Django Testovací aplikace Společné rysy frameworků DRY REST Omezení aplikace Servery Webové prohlížeče

5 4.3. Prostředí pro testování Operační systém Verze platforem a frameworků Popis aplikace Popis funkcionality Způsoby řešení Ruby on Rails Nette Django Uživatelské rozhraní Porovnávání jednotlivých aspektů týkajících se testovací aplikace Práce s databází Ruby on Rails Nette Django Shrnutí Vytváření MVC konkrétní aplikace Ruby on Rails Nette Django Shrnutí Formuláře a ověřování Ruby on Rails Nette Django Shrnutí Ajax a jquery Ruby on Rails Nette Django Shrnutí Prezentace dat a DRY Ruby on Rails Nette Django Shrnutí Autentizace a autorizace Ruby on Rails Nette Django Shrnutí

6 5.7. Odesílání ů Ruby on Rails Nette Django Shrnutí Ladící nástroje Ruby on Rails Nette Django Shrnutí Serializace Ruby on Rails Nette Django Shrnutí CSS Ruby on Rails Nette Django Shrnutí Rychlost vytvoření aplikace Ruby on Rails Nette Django Shrnutí práce s frameworky Práce s jednotlivými frameworky Nette Ruby on Rails Django Výběr frameworku a doporučení Závěr 74 Conclusions 75 Reference 76 A. Obsah přiloženého CD 77 6

7 Seznam obrázků 1. Schéma MVC architektury MVC architektura - interakce s uživatelem Základní kostra aplikace Ruby on Rails Základní kostra aplikace Nette Základní kostra aplikace Django Návrh aplikace Nastylovaná tabulka Výjimka Ruby on Rails Výjimka Nette Debugger Bar Výjimka Djanga

8 1. Úvodní slovo Od roku 1996 se stavá HTML standard, se kterým přichází požadavek dynamického webu. Tomuto standardu se začaly přizpůsobovat tehdejší platformy. Postupy řešení implementací se začaly opakovat, a proto začaly vznikat frameworky (pracovní rámce), které usnadnily programátorům práci. Nyní je tvorba webu jedno z nejčastějších odvětví praktického programování. V této práci bude rozebrán vývoj tří hojně užívaných frameworků. Cílem práce je jednotlivé frameworky porovnat a zjistit, které jsou vhodné pro ta která konkrétní užití. V této práci se budeme snažit o co nejvíce objektivní pohled, a to i přesto, že s Ruby on Rails mám největší zkušenosti a denně s tímto nástrojem pracuji. 2. Úvod do webových frameworků 2.1. Programování webových aplikací Webové aplikace se používají nejen v rámci internetu, ale také v rámci podnikových sítí intranetů. Důvodů, proč se od klasického programování stále více přechází na programování webových aplikací, je hned několik. Z pohledu koncových uživatelů není potřeba žádná instalace, nejsou žádné nároky na minimální konfiguraci koncového počítače, ani dokonce omezení operačního systému. Aplikace se totiž nachází na serveru a uživatelé k tomuto programu přistupují skrze internetový prohlížeč. Z pohledu programátora je usnadnění v uživatelském rozhraní, jelikož veškeré UI je zobrazováno přes HTML kód, případně s kaskádovými styly. Další rozšíření tohoto rozhraní je dáno Javascriptem a jeho rozšířením jquery, pomocí kterých vytváříme dynamické prvky. Díky překladu aplikace do HTML kódu vznikly nové architektury aplikací a právě jedna z těchto nových architektur je v diplomové práci popsána a využita. Tyto webové aplikace by však neměly být výpočetně náročné, protože jsme omezeni ve většině případů rychlostí internetu, případně rychlostí sítě. Zkusme si představit, že by byla například aplikace typu photoshop ovládána přes toto rozhraní; museli bychom neustále čekat na odeslání informací na serveru a ze serveru u několika megabytových obrázků. Nicméně v dnešní době je většinová poptávka po nepřílíš výpočetně náročných aplikacích Framework Jelikož klasické programovací jazyky nebyly uzpůsobeny pro vytváření webových aplikací, bylo potřeba určitého rozšíření pro tento jiný styl programování. 8

9 Framework je softwarové rozšíření určité platformy, která se snaží tvořit co nejlepší nástroj pro práci s danou oblastí. Využívá základní principy dané platformy a přidává k nim podpůrné součásti, rozšířující funkce, knihovny, podporu pro návrhové vzory, návody pro konkrétní problémy apod Výběr frameworku Výběr frameworku nemusí být tak jednoznačný. Jako první prvkek výběru by měla být zkušenost programátora s určitou platformou, protože z ní vždy framework vychází a má stejný základ. Jako další kritérium výběru by měl být účel a rozsah aplikace. Některé frameworky mohou být zaměřeny na konkrétní oblast; to znamená, že v sobě mohou mít zahrnuto mnoho hotových součástí. Další kritérium může být existence konzole a případného testovacího nástroje. V neposlední řadě existuje možnost napsat si vlastní framework. Výhoda je, že bude vytvořen na míru a programátor může proniknout do pochopení konkrétní platformy mnohem více. Na druhou stranu existují u hojně využívaných frameworků komunity a fóra s rozborem konkrétních problémů a jejich možných řešení Architektura MVC Tato architektura je hojně využívaná až v posledních letech. Originální návrh je z roku 1979 a lze jej naleznout na této adrese: trygver/2007/mvc Originals.pdf. Dle je tato architektura jedním z nejpoužívanějších vzorů užívaných pro tvorbu webových aplikací. Všechny zde testované frameworky používají tuto architekturu. Architektura MVC je rozdělena na tři logické části: model - hlavní třída, její data a základní metody pro práci s nimi, view (pohled) - reprezentuje uživatelské rozhraní, controller (kontroler) - má na starosti aplikační logiku, tzn. pracuje s modelem, zpracovává uživatelské vstupy a aktualizuje pohled. Jak můžeme vidět na obrázku 1. kontroler zpracovává data modelu a pohled zobrazuje data modelu. Hlavní je vazba mezi kontrolerem a pohledem (někdy jednosměrná, někdy obousměrná). 9

10 Obrázek 1. Schéma MVC architektury Model nemůže nikdy mít vazbu na pohled ani na kontroler, velmi často je přímo propojen s tabulkou v databázi. Všechny akce, které se dějí v aplikaci, jako např. chyby, uživatelské vstupy, ajax, apod., zpracovává kontroler a předává zpět pohledu. Interakci s uživatelem můžeme vidět na obrázku 2.. Obrázek 2. MVC architektura - interakce s uživatelem Uživatel pracuje s aplikací skrze pohled. Jeho vstupy zpracovává kontroler Srovnávané frameworky Ruby on Rails Ruby on Rails (RoR) je založen na jazyce Ruby. Vytvořil jej programátor David Heinemeier Hansson při práci na projektu Basecamp. První verze vyšla v červenci 2004, ale práva na sdílení byla umožněna až v únoru V srpnu 2006 dosáhl framework mezníku, kdy společnost Apple uvedla, že budou využívat Ruby on Rals v operačním systému Mac OS X v10.5 Leopard. 10

11 Snaží se docílit maximální jednoduchosti a přehlednosti. Jelikož přinášejí abstraktní vrstvu na databázi, není třeba užití žádného SQL. Ruby se snaží, aby programování bylo zábavné a Rails tuto snahu dotahují téměř k dokonalosti. To v důsledku znamená jak spokojenější programátory, tak taky podstatně jednodušší možnost vyjádřit myšlenku, protože psaní v Rails je mnohem podobnější přirozenému jazyku než cokoliv jiného. Jakub Šťastný (2007) Ruby on Rails 2.0: Evoluce, nikoliv revoluce, V Ruby on Rails jsou napsány webové stránky jako např. Twitter, Github, Basecamp, Yellow Pages,... Základní vlastnosti Ruby on Rails: konvence má přednost před konfigurací tato vlastnost zahrnuje čitelnost a srozumitelnsot kódu, balíčkový systém gemů každý gem přestavuje rozšíření aplikace, které je velmi snadné, automaticky mapují URL na vnitřní řídící prvky aplikace to znamená jednoduché propojení uživatelského rozhraní a vrstvy, která zpracovává vstupy a výstupy uživatele, generátory RoR obsahují generátor pro každou hlavní část aplikace, který se spouští přes konzoli. 11

12 Základní kostra aplikace vypadá následovně: Obrázek 3. Základní kostra aplikace Ruby on Rails Hlavní aplikace se nachází v adresáři app. Zde jsou umístěny všechny modely, kontrolery a pohledy. Kromě nich zde najdeme soubory Javascriptu, kaskádových stylů a dále pomocné třídy pro práci s aplikací (mailers, helpers.) Mimo adresář app je důležitý také config, ve kterém se nastavují konfigurační soubory, soubory pro rozšíření a propojování kontrolerů a pohledů. Další důležitý adresář je db, ve kterém je uloženo a nastaveno vše, co se týká databáze. Za zmínku stojí také soubor Gemfile, do kterého přidáváme rozšíření aplikace, zmíněné gemy. RoR používá velkou škálu metod a klíčových slov, které mohou programátorovi ze začátku dělat problém, nicméně díky snaze RoR - dělat co nejvíce srozumitelný kód - se rychle zautomatizují. 12

13 Jeden z typických znaků RoR je umístění kódu do pohledů v bloku %%. Pokud by chtěl někdo začít s RoR, doporučuji zhlédnout a projít tutoriál Rails for Zombies na adrese zahrnující cvičení po každé kapitole Nette Framework Nette je založen na jazyku PHP. Autorem je David Grudl. Každý měsíc se koná neformální setkání příznivců Nette frameworku nazývané Poslední sobota, pořádané v Praze, Brně i na jiných místech. Nette má lehce poupravenou architekturu MVC na architekturu MVP (Model- View-Presenter), kde presenter jen volá model a výsledek předává pohledu. Naproti tomu presenter nezpracovává uživatelské vstupy. Pohledy nazývá jako šablony. V Nette jsou napsány webové stránky jako např. Root.cz, Slevomat.cz, Recepty.cz, Sedmička.cz, CSFD.cz... Základní vlastnosti Nette rychlost dle nezávislého testu, který provedl server root.cz je Nette jedním z nejrychlejších frameworků vůbec, rozšiřující ladící nástroj tento ladící nástroj se objevuje na každé stránce a zobrazuje základní informace, komponenty a znovupoužitelnost kódu komponenta je součást aplikace mající vlastní presenter a dá se volat kdekoli v aplikaci, Aktivní komunita uživatelů v ČR je to český framework, po republice se konají přednášky o Nette a existují česká fora řešící problematiku tohoto frameworku a často můžeme řešit problémy přímo s autorem, sandná rozšiřitelnost snaží se vést programátora k takovému návrhu aplikace, aby bylo možné její jednoduché rozšíření, podpora jmenných prostorů v PHP

14 Základní kostra aplikace: Obrázek 4. Základní kostra aplikace Nette V hlavním adresáři app se nachází komponenty, modely, presentery, šablony a konfigruační soubory. Dalším hlavním adresářem je www obsahující obrázky, soubory Javascriptu a kaskádových stylů. Nette vychází z PHP. Proto všichni, kteří se s PHP setkali alespoň okrajově, nebudou mít problém s tímto frameworkem začít pracovat. Výhoda Nette je svoboda, je pouze na programátorovi, do jaké míry framework využije. Pokud by chtěl někdo začít s tímto frameworkem, doporu- 14

15 čujeme tutoriál Píšeme první aplikaci na oficiálních stránkách Django Django je založen na jazyku Python. Byl vyvíjen už od roku 2003 jako součást redakčních systémů kansaského deníku Lawrence Journal-World. O dva roky později byl zdrojový kód otevřen a poskytnut široké veřejnosti pod liberální BSD licencí. Jedná se o živý projekt. Django označuje pohledy jako šablony. Základní vlastnosti Django automaticky generované administrační rozhraní má integrované uživatelské rozhraní pro práci s databází, výkonný šablonovací systém udržuje všechny kontrolery pohromadě v jednom souboru, vytváření tabulek v databázi skrze model definováním modelů můžeme vytvářet a měnit tabulky v databázi, generování formulářů z databázového modelu, automatická validace programátor nemusí ručně vytvářet formuláře ani kontrolu správnosti jednotlivých vstupů. 15

16 Základní kostra aplikace: Obrázek 5. Základní kostra aplikace Django V kořenovém adresáři se nachází konfigurační soubor a soubor pro propojení url adres s kontrolery urls.py. Adresář media obsahuje statické soubory jako jsou například kaskádové styly a obrázky. Šablony jsou umístěny v adresáři templates. Tato kostra nepředstavuje aplikaci, ale projekt, ve kterém se může nacházet více aplikací. Poslední adresář, který nebyl zmíněn, se nazývá votr. Zde se nalezají jednotlivé soubory, ve kterých definujeme modely, kontrolery a formuláře konkrétní aplikace projektu. Aplikace v jednom projektu mohou být navzájem propojené. Django obsahuje velké množství nástrojů pro usnadnění práce při vytváření aplikací. Pro každou součást existuje jeden společný soubor, ve kterém se tyto součásti definují. Pro začátek práce s tímto framworkem doporučujeme tutoriál na oficiálních stránkách Djanga 3. Porovnání obecných aspektů frameworků 3.1. Instalace a spuštění Jak bylo popsáno výše, všechny tyto frameworky jsou nezávislé na operačním systému, nicméně níže uvedený popis se týká pouze instalace na operační systém Ubuntu. 16

17 Ruby on Rails RoR využívá balíčkový systém gemů, které představují knihovny. Ppokud chceme využívat určité gemy, musíme vědět, na které verzi Ruby tyto gemy pracují. Nejprve musíme nainstalovat verzovací software pro Ruby. Použil jsem Ruby Version Manager (RVM), na oficiálních webových stránkách RVM je přehledný popis instalace pomocí několika příkazů v terminálu. Dále musíme v RVM nainstalovat verzi ruby, kterou chceme používat. Poté můžeme vygenerovat kostru aplikace přímo v terminálu příkazem rails new. Tato kostra obsahuje soubor Gemfile, který obsahuje seznam všech gemů apliakce včetně gemu rails, který představuje framework a kterému nastavíme požadovanou verzi (př.: rails, ) Dále musíme všechny gemy nainstalovat, případně nastavit v aplikaci. Provedeme v terminálu příkazem bundle install. Spuštění aplikace provedeme v terminálu příkazem rails server, nacházejícím se na adrese Nette Kromě PHP je potřeba nainstalovat Apache, který se stará o lokální server PHP. PHP a Apache lze najít v repozitáři systému, případně lze upravit složku, ze které se načítá lokální server (výchozí nastavení: /var/ Poté je potřeba z oficiálních webových stránek Nette stáhnout kostru aplikace (př. sandbox) a umístit ji do složky Apache pro localhost (/var/www/sandbox.) Samotný framework se nachází v knihovně stažené aplikace (př. /var/www/sandbox/lib/nette.) Aby fungoval lokální server, musí být spušťen Apache příkazem v terminálu sudo /etc/init.d/apache2 start. Spuštěná aplikace se nachází na adrese pro aplikaci sandbox Django Python i Django jsou umístěny v repozitářích systému. Pro spuštění lokálního serveru je nutno spustit konzoli Pythonu v terminálu příkazem python. V této konzoli pak můžeme vygenerovat základní kostru aplikace příkazem django-admin.py startproject. Aplikaci spustíme v terminálu příkazem python manage.py runserver na adrese Shrnutí Nejjednodušší instalaci má Django, nejsložitější RoR. Nicméně ani jedna z instalací není nijak zvláště složitá. 17

18 3.2. API a Tutoriály Ruby on Rails Ruby on rails má dobře popsanou API i s příklady na adrese api.rubyonrails.org/, jedinou nevýhodou je, že funkce, které mají základ v Ruby v tomto API nenajdeme. Musíme je hledat v API jazyka Ruby. Pokud jde o tutoriály, tak hlavní web obsahuje základní funkce a návody s přehledným popisem a příklady. Protože využíváme gemy, které nejsou základní součástí, existují tři základní webové stránky. Na adrese zadáme klíčové slovo a zobrazí se seznam gemů, seřazený podle poslední aktualizace. Na stránce jsou zdrojové kódy těchto gemů s popisem instalace a většinou s příkladem použití. A konečně kde jsou videa s často využívanými součástmi aplikací a ukázkami použití. Žádný tutoriál v češtině jsem nenalezl Nette API Nette je dobře popsaná s příklady a obsahuje i funkce PHP na adrese api.nette.org/, případně odkazuje přímo na hlavní API PHP. U tutoriálů je hlavní výhoda ta, že existují v češtině. Hlavní web podporující Nette na adrese nette.org/ obsahuje samotný framework ke stažení, popis instalace, seriál Píšeme první aplikace, kde jsou rozebrány základní prvky. Jsou zde i příklady použití hlavních a rozšičujících prvků, které se v seriálu nenachází. Všechny návody jsou velmi dobře strukturované a pochopitelné. Další český tutoriál jsem nalezl na adrese Je z roku 2009 a není aktualizovaný na aktuální verzi, ve které je pár podstatných změn a tudíž není ideální Django V Djangu je API rozšířeno a zahrnuje nejen seznam funkcí s příklady, ale je rozděleno i do kapitol, které jsou velmi podrobně popsány i s příklady. Hlavní dokumentace a tutoriály jsou na stejné adrese jako API Jako u Nette je zde také seriál o vytvoření základní aplikace v pěti kapitolách. Existuje i česká verze těchto stránek, ale bohužel byly poslední změny udělány v roce 2009 a obsahují jen část anglického překladu, takže je zastaralá a použitelná jen částěčně. Nachází se na adrese 18

19 Shrnutí Nette má výhodu českého tutoriálu. Na druhou stranu by se měl každý programátor vyznat v anglických návodech. Když nebereme v potaz jazyk tutoriálu, ke všem frameworkům existují návody, jak pracovat s jednotlivými aspekty funkcionality. API je pro všechny frameworky dostatečné Rozšiřující nástroje Každý framework se neustálé vyvýjí. Tvůrci i komunita vytváří nejrůznější rozšíření. Hlavní požadavek je snadné zahrnutí rozšíření do frameworku Ruby on Rails Jak již bylo zmíněno, v RoR existují knihovny pojmenované gemy, které představují rozšíření. Pro toto rozšíření existuje soubor Gemfile, do kterého se přidá název gemu, případně s jeho verzí nebo umístěním. Spuštěním příkazu bundle install v konzoli je gem nainstalován do aplikace. Ukázka Gemfile: gem authlogic gem mysql2, gem rails, :git => git://github.com/rails/rails.git Od gem authlogic se nainstaluje poslední známá stabilní verze. Od gemu mysql2 se nainstaluje verze Gem rails se na nainstaluje ze zdroje na githubu. Většina gemů má zdrojové kódy na githubu, kde je popsáno základní použítí s příkladem Nette Větština rozšíření existuje na oficiální stránce frameworku Jednotlivé rozšíření lze stáhnout a přidat do adresáře lib/nette. Jelikož na začátku každého souboru užíváme příkaz use Nette, knihovna se automaticky načte Django Většina rozšíření pro Django existuje na serveru Zde je popsán popis instalace a použití tohoto rozšíření. Nicméně ve většině případů stačí napsat příkaz pro instalaci v konzoli a k tomu název rozšíření: pip install django-extensions Instalace rozšíření django-extensions. 19

20 Shrnutí Rozšířit jednotlivé frameworky je velmi jednoduché a programátor si může napsat vlastní rozšíření. Všechna rozšíření sdílejí zdrojové kódy, proto si je každý programátor může upravit dle svých představ Podpora komunity Pokud máme nějaký problém řešení, nebo se nám vyskytne chyba v aplikaci, kterou chceme vygooglit a zjistit, jestli se s touto chybou už někdo nesetkal, je velikost komunity podstatná. Jelikož RoR a Django jsou světově rozšířenými frameworky, které jsou hojně používané, je tato komunita velmi rozšířená. Velmi často se odkazuje na web kde je většina problémů řešena často vícekrát. Můžeme zde nalézt řešení našeho problému nebo minimálně inspiraci k jeho řešení. Jelikož Nette je český framework, jeho podpora se se světovou komunitou nedá srovnávat. Má vlastní české fórum na řešení problémů, ale ne všechna jsou aktuální, protože se týkají starších verzí Nette. Komunita Nette v ČR stále stoupá. Programátor může využít možnosti účastnit se veřejných přednášek. Sezení RoR nebo Djanga jsou pro českého programátora logicky hůře dostupné. Jejich aktivita u nás není tak častá jako u Nette Dostupnost serverů v ČR V této kapitole rozeberu jen české servery, mimo ČR jich existuje spousta Ruby on Rails Pro tento framework jsem našel pouze jeden free a jeden placený hosting. Podpora Ruby on Rails v ČR není úplně ideální Nette Jelikož Nette je v aplikaci jen jako knihovna, stačí nalézt server, který podporuje stejnou verzi PHP, kterou aktuální aplikace využívá Django Pro Django existují v ČR jen 3 servery. Ani jeden z nich nemá free hosting. Ani Django nemá příliš velkou podporu v ČR. 20

21 4. Testovací aplikace Abychom mohli porovnávat frameworky, navrhl jsem testovací aplikaci, která obsahuje všechny níže uvedené prvky, popsané v následující kapitole. Tuto aplikaci jsem vytvořil v každém frameworku zvlášť, abych je mohl porovnávat na stejném konkrétním příkladě. Tato aplikace není hlavní část diplomové práce a slouží pouze jako nástroj pro porovnávání. Všechny aplikace jsou přiloženy na CD. V jednotlivých apektech porovnání se nacházejí ukázky kódu jednotlivých aplikací konkrétních frameworků. Tyto ukázky neodpovídají přesné podobě funkční aplikace. Jsou to pouze vybráné části kódu, které ukazují, jak funguje konkrétní funkcionalita. Tento způsob je zvolen kvůli přehlednosti popisu Společné rysy frameworků DRY DRY - Don t repeat yourself. Každá funkce by měla být v aplikaci definována pouze jednou. Tento systém podporuje přehlednost, zmenšuje objem a usnadňuje jakoukoli změnu kódu. Nette tento prvek DRY využívá v takzvaných komponentech a RoR v partialech, přičemž zvolenou součást lze kdekoli využít. Příklad komponenty v Nette Controller kompenty class UserViewControl extends Nette\Application\UI\Control { private $messages; public function render() { $this->template->setfile( DIR. /UserView.latte ); $this->template->messages = $this->messages; $this->template->render(); Při volání komponenty UserView se nejdříve zavolá tento kontroler který spustí metodu render. V té předá kontroler aktuální šabloně obsah pomocí setfile, nastaví proměnnou messages a vykreslí ji. View komponenty UserView.latte 21

22 {block content {$messages->count() {foreach $messages as $message {$message->user_id {$message->content {$message->created_at <br /> {/foreach {/block Výše vidíme samotný obsah komponenty. Vypíše počet zpráv a poté atributy jednotlivých zpráv. Příklad volání komponent {control userview V místě, kde se zavolá tento příkaz, bude vyobrazen předchozí obsah REST REST - Representational State Transfer. Je to architektura rozhraní navržená pro distribuované prostředí. REST je použitelný pro jednotný a snadný přístup ke zdrojům, kterými mohou být data nebo stavy aplikace. Obsahuje také rozhraní a práci s voláním HTTP metod PUT, GET, POST, DELETE. Podpora REST je obsažena v RubyOnRails a Djangu, ale v Nette chybí. Příklad REST v Ruby on Rails Poznámka: Tabulka zpráv v databázi obsahuje cizí klíč, který představuje identifikátor uživatele. class Message < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base have_many :messages end Pokud v modelech nastavíme tyto vzájemné vazby, REST nám umožní získat všechny zprávy konkrétního uživatele příkazem user.messages. Další příkladu RESTu: 22

23 User.all User.last User.find_by_ Prvním příkazem nalezneme všechny všechny uživatele, druhým vybereme posledního uživatele v tabulce podle atributu id. Poslední řádek nám nalezne uživatele s daným em. REST v RoR automaticky definuje funkce hledání podle všech atributů tabulky v databázi Omezení aplikace Servery Aplikace se v těchto frameworcích nemusí nijak ručně překládat ani kompilovat. Abychom si mohli ověřit námi vytvořenou funkcionalitu a viděli spuštěnou aplikaci, potřebujeme k tomu spuštěný server, na kterém aplikace poběží. Zde se nabízejí dvě možnosti. První z nich je posílat neustále všechny editované změny přímo na kokrétní server, který má svoji doménu a web hosting. Na tuto aplikaci se musíme připojovat skrze internet. Druhá možnost je vytvořit si lokální server, který spustíme na svém počítači. Zde můžeme pracovat v offline režimu a nemusíme nikam posílat editované soubory, protože si je lokální server aktualizuje sám. Nevýhoda vzdáleného serveru je celkem zřejmá, a to neustálé obnovování souborů na vzdáleném serveru. Nevýhoda lokálního serveru je, že se server musí restartovat po každé upravě databáze. V obou případech jsou frameworky nezávislé na operačním systému. Při vytváření aplikací byl zvolen způsob lokálních serverů pro všechny frameworky Webové prohlížeče Všechny použité frameworky jsou nezávislé na prohlížečích. Jedinným omezením jsou kaskádové styly, které mají většinou problém se staršími verzemi Internet Exploreru Prostředí pro testování Operační systém Tato aplikace byla vytvořena a testována na operačním systému Linux Ubuntu i386. Jako prohlížeč byl využíván Chromium, což je verze Google Chrome pro operační systém Linux. Využíváné lokální servery byly Ruby pro RoR, Apache pro Nette a Python pro Django. 23

24 Verze platforem a frameworků Při testování byly využíity následující verze: Ruby on Rails Ruby Ruby on Rails Nette PHP Nette Django Python Django Popis aplikace Obrázek 6. Návrh aplikace Aplikace byla navržena tak, aby zahrnovala základní funkční aspekty, se kterými se běžně pracuje ve většině webových aplikací. Výše zobrazený návrh aplikace je zjednodušený. Hlavní funkce aplikace je vytvářet a zobrazovat zprávy uživatelů. Třída User má atribut friends, který představuje serializované pole identifikátorů ostatních uživatelů. Pokud se id určitého uživatele nachází v tomto serializovaném poli, je přítel konkrétního uživatele (tato vazba je jednosměrná). Konkrétní uživatel může vidět své zprávy a všechny zprávy svých přátel. Aplikace kromě nastavování přátel obsahuje přihlášení a registraci uživatelů s následným ovým upozorněním. Nastavování uživatelů a načítaní zpráv je realizováno pomocí jquery a Ajax. 24

25 4.5. Popis funkcionality Aplikace byla navržena tak, aby zahrnovala základní prvky, se kterými se běžně pracuje ve většině webových aplikací: práce s databází, formuláře a jejich ověřování, Ajax a jquery, rozvržení stránky, uživatelské rozhraní, integrace kaskádových stylů, odeslání ů, autorizace a autentizace Způsoby řešení Základní postup řešení je stejný: vytvořit databázi, vytvořit modely, kontrolery a pohledy. Dále je potřeba vytvořit formuláře pro vytváření zpráv, registraci a úpravu uživatelů, nastavování přátel Ajaxem, správu posílání ů a nastavení uživatelského rozhraní. V těchto podkapitolách je základní popis postupu vývoje v jednotlivých frameworcích. Podrobněji rozebraný postup funkcionality jednotlivých částí aplikace je rozebrán v kapitole 5.. Předmětem diplomové práce není tutoriál řešení. V následujících částech je uveden pouze stručný souhrn řešení v jednotlivých frameworcích Ruby on Rails Vygenerujeme kostru nové aplikace. Nastavíme databázi v konfiguračním souboru. Pro uživatele a zprávy vytvoříme tabulky v databázi. K těmto tabulkám vytvoříme modely, ve kterých nastavíme základní funkce a omezení (např. nutnost nastaveného u před uložením.) V dalším kroku vytvoříme kontrolery a pohledy pro každou metodu kontroleru. Následně musíme nastavit propojení mezi metodami kontrolerů a jednotlivými pohledy. V kontrolerech vytvoříme a nastavíme obsloužení pro všechny základní proměnné, se kterými budeme v pohledech pracovat. Nyní máme základní kostru programu, kterou můžeme rozšířit. Do Gemfile přidáme všechny součásti, se kterými budeme chtít pracovat, a které nejsou součástí RoR (např. knihovna pro přihlašování.) Vytvoříme si formuláře pro přihlašování a registraci, metody pro jejich obsluhu v kontroleru uživatele a propojíme. Přidaná knihovna pro přihlašování nám zajistí jednoduchou autorizaci a autentizaci. V konfiguračním souboru upravíme nastavení pro posílání ů, vytvoříme speciální třídu mailer a napíšeme obsah u, který budeme posílat. Pro obsluhu Ajaxu a jquery si napíšeme skripty, které budeme opět obsluhovat kontrolerem. Tyto skripty vložíme do hlavičky základní stránky. Nakonec přidáme kaskádové styly a nastavíme, co se má kde zobrazit. 25

26 Nette Z oficiálního webu Nette si stáhneme kostru aplikace. Nastavíme databázi v konfiguračním souboru, kterou budeme využívat. V databázi vytvoříme tabulky pro uživatele a zprávy. Následně vytvoříme třídu Repository pro usnadnění práce s databází, ze které budou dědit modely. V konfigruračním souboru nastavíme pojmenování modelů. Vytvoříme presentery a v každém nastavíme, co je potřeba při volání presenterů načíst (např. model uživatele, přes který budeme pracovat s databází.) Nyní musíme pro každý pohled vytvořit metody action a render. Tuto kostru můžeme rozšířit vytvořením a obsluhou formulářů. Oboje umisťujeme jako metody presenteru, kterého se to týká. Jednotlivé pohledy i s obsluhou můžeme umístit do takzvaných komponent, které nám umožní je volat kdekoliv v aplikaci. V rámci přihlašování musíme vytvořit model, který se bude starat o správnost příhlašovacích údajů. Základní nástroj je již v Nette. My jen musíme vytvořit třídy pro obsluhu a rozhraní. Pro odesílání ů nám stačí udat základní údaje, přes které se bude posílat samotná zpráva. Zde máme možnost umístit je lokálně přímo do metody, kde chceme odeslání zavolat. Ajax musíme nastavit pro konkrétní případy užití. Pro jeho obsluhu je potřeba vytvořit metody v presenterech. Nakonec rozvrhneme stránku, přidáme a nastavíme kaskádové styly Django Nejdříve vygenerujeme projekt aplikace, v něm potom vygenerujeme aplikaci, která bude spravována tímto projektem. Dále nastavíme databázi v konfiguračním souboru. V adresáři aplikace v souboru models.py vytvoříme modely jako třídy a nastavíme jim jejich atributy i s datovým typem. Následně synchronizujeme s databází, ve které budou vytvořeny tabulky na základě definovaných modelů. V souboru views.py vytvoříme metody, které představují kontrolery jednotlivých šablon. Tyto metody spárujeme se šablonami v souboru urls.py, který se nachází v adresáři projektu. K těmto metodám vytvoříme jednotlivé šablony. Jednotlivé formuláře definujeme v souboru forms.py, který se nachází adresáři aplikace. Tyto formuláře vytváříme i obsluhujeme v metodě šablony, která představuje kontroler. Pro přihlašování má Django vestavěné rozšíření. Stačí ho přidat do konfiguračního souboru, vytvořit šablonu a spárovat. K odesílání mailů musíme nastavit v konfiguračním souboru SMTP údaje. Poté stačí na konkrétním místě nadefinovat příjemce, obsah a předmět u a odeslat. 26

27 Pro Ajax a jquery přidáme do hlavičky základní stránky zdrojový soubor a jednotlivé funkce definujeme do konkrétních šablon, ve kterých budeme funkce využívat. Nakonec rozvrhneme stránku, přidáme a nastavíme kaskádové styly Uživatelské rozhraní Pro nastavení uživatelského rozhraní budeme využívat Twitter Bootstrap. Je to přednastavený kaskádový styl, který by měl eliminovat rozdíly mezi prohlížeči. Má integrované nastavení pro všechny základní HTML elementy a rozvržení stránky. Byl vybrán, protože je hojně využívaný, doporučovaný a volně šiřitelný. Dokumentace a samotný kód se nachází na Příklad Twitter Bootsrap: <div class="span8"> <div id="container"> <%= yield %> </div> </div> <div class="span4"> <div id="user_list"> <%= render users/show_users %> </div> </div> Bootstrap rozděluje stránku na dvanáct sloupců a my si můžeme takto rozvrhnout jednotlivé zobrazí dvou elementů divů například na dvě a jednu třetinu. <table class="table table-bordered"> </table> V tomto příkladě nastavíme tabulce tyto dvě třídy, které zajistí rozvržení tabulky a zobrazení. 27

28 Obrázek 7. Nastylovaná tabulka 5. Porovnávání jednotlivých aspektů týkajících se testovací aplikace 5.1. Práce s databází Všechny tři frameworky mají jednoduše nastavitelnou databázi v konfiguračních souborech. Nastavení je vždy stejné: ADAPTER, SERVER, USER, PASSWORD, DATABASE. Nette i Django obsahují přehledný nástroj pro správu a nastavení databáze. Hlavní požadavek je propojení modelů a databáze. Dále jednoduchá práce s databází; např. upravování, vyhledávání, propojování apod. Jako příklad použijeme vytvoření tabulky zpráv v databázi a propojíme s modelem tak, aby bylo možné v aplikaci vyhledávat, vytvářet a mazat zprávy. Tabulka zpráv v databázi bude obsahovat identifikátor uživatele Ruby on Rails Ruby on Rails využívají takzvané migrace, pomocí kterých vytvářejí, upravují, případně i mažou tabulky v databázi. Migrace se generují v terminálu příkazem rails generate migration. V této migraci nastavíme sloupce tabulky s typy: class CreateMessages < ActiveRecord::Migration def self.up create_table :messages do t t.string :content t.belongs_to :user t.timestamps end 28

29 end def self.down drop_table :messages end end Jak je vidět z příkladu, chybí sloupec id a created at, tyto sloupce se přidají automaticky spolu se sloupcem updated at. Po spuštění terminálového příkazu rake db:migrate se provede migrace. To znamená, že ve všech souborech se spustí funkce self.up, ve kterých vytváříme, popř. upravujeme tabulku. Pro navrácení databázi do stavu před migrací spustíme příkaz rake db:rollback. Tím se spustí metoda self.down. Pokud chceme pracovat s tabulkou zpráv messages, vytvoříme model Message. REST nám zajistí přednastavení integrovaných funkcí jako all, delete all, new, create,.... Kromě základní funkce find, které hledá podle id, lze také použít například find by content, která hledá zprávy podle atributu content. Message.find 5 Message.find_by_content "obsah zprávy" První řádek najde zprávu s id 5. Druhý řádek najde zprávu s obsahem obsah zprávy. Pro vytvoření používá metoda new. user = User.first message = Message.new message.content = "nová zpráva" message.user = user message.save => #<Message id: 73, content: "nová zpráva", user_id: 1, created_at: " :40:04", updated_at: " :40:04"> V databázi vyhledáme prvního uživatele z tabulky dle id. Vytvoříme zprávu, nastavíme obsah, uživatele a uložíme. Na posledních dvou řádcích můžeme vidět uloženou reprezentaci zprávy. Pro smazání se využívá metoda delete. Message.last.delete Nalezeneme poslední řádek tabulky zpráv a vymažeme ho. 29

30 Nette Administrační rozhraní Nette se nachází na url app/www/adminer (př.: Kromě tohoto rozhraní nemá Nette žádný jiný nástroj pro práci s databází. Všechny tabulky včetně omezení je třeba si vytvořit ručně, případně přes administrační rozhraní. Přístupové funkce v aplikaci je třeba naprogramovat. Nette poskytuje vrstvu pro pohodlnější práci s databází. Modely, které budou pracovat s tabulkou nazveme jako repozitáře. Základní funkce pro nalezení tabulky v databázi abstract class Repository extends Nette\Object { protected function gettable() { // název tabulky odvodíme z názvu třídy preg_match( #(\w+)repository$#, get_class($this), $m); return $this->connection->table(lcfirst($m[1])); class MessageRepository extends Repository { Z tohoto modelu budeme dědit repozitáře pro každou tabulku databáze a pomocí metody gettable() ji načteme. Metoda gettable() repozitáře zpráv MessageRepository vezme jeho název bez přípony Repository a najde tabulku s odpovídajícím názvem Message v databázi. Přes metodu gettable() pak pracujeme s tabulkou: class MessageRepository extends Repository { public function find($id) { return $this->gettable()->find($id); Tato metoda vyhledá zprávu v databázové tabulce User dle atributu id. Abychom mohli vytvářet objekt repozitáře, musíme ho nastavit v konfiguračním souboru config/config.local.neon: services: messagerepository: MessageRepository Nyní můžeme volat repozitář uživatele následujícím způsobem: $messagerepository = $this->context->messagerepostirory; $message = $messagerepository->find(5); 30

31 První řádkem vytvoříme objekt a druhým nalezneme v databázi uživatele s id 5. Pro mazání stačí na nalezený záznám zavolat delete(): class MessageRepository extends Repository { public function delete($id) { return $this->find($id)->delete(); messagerepository->delete(5); V repozitáři zpráv definujeme metodu mazání, kde nalezeeneme záznam a smažeme. Na posledním řádku je konkrétní příklad užití smazání zprávy s id Django Django také využívá REST, ale na rozdíl od předchozích frameworků má opačný přístup k vytváření tabulek v databázi. Zde se napřed nadefinují modely v souboru models.py. Příklad vytvoření modelu s omezením class Message(models.Model): user_id = models.foreignkey(user) content = models.charfield(max_length=200) created_at = models.datetimefield() Zde vidíme definici modelu zpráv, který bude mít atributy id uživatele, obsah a čas vytvoření. Všimněme si omezení u atributu content, ve kterém můžeme nastavit maximální délku. Příkazem python manage.py sql z konzole vytvoříme tabulky v databázi. Po tomto vytvoření nebo jakékoli úpravě pak stačí spustit příkaz python manage.py syncdb opět z konzole. Tabulku zpráv představuje Message.objects. Díky REST má Django integrované funkce jako např.: all(), count(), create(),.... Pro vyhledávání můžeme použít funkce get(), filter(), choice(),.... Message.objects.all() Message.objects.get(id=2) Message.objects.filter(content startswith= já ) První řádek vrátí všechny zprávy z databáze. Druhý najde zprávu s atributuem id 2 a všechny poslední zprávy s obsahem začínajícím řetězcem já. Pro vytvoření objektu zavoláme název modelu a nastavíme atributy: 31

32 user = User.objects.get(id = 2) message = Message(content = "nová zpráva", user = user) message.save Díky REST nastavujeme nové zprávě objekt uživatele, nikoli číslo jeho atributu id. Message nám vytvoří objekt s konkrétními parametry, který posléze jen uložíme. Pro smazání stačí najít záznam v databázi a zavolat na něj metodu delte(): message = Message.objects.get(id = 5) message.delete() Shrnutí Ve všech třech frameworcích lze dosáhnout požadavku propojení modelů a tabulek z databáze. Jak jsme se mohli přesvědčit Nette v tomto aspektu velmi zaostává, protože prgramátor si propojení a všechny potřebné funkce musí vytvořit a navíc pro každý model zvlášť. Proto bez znalosti SQL, by měl programátor problém řádně pochopit funkce a podstatu této vrstvy, aby ji mohl používat pro vlastní potřeby. Django má velkou výhodu v tom, že si může tabulky databáze upravovat přímo v modelu a tím pádem má vše na jednou místě. Naproti tomu RoR může libovolně měnit tabulky přes migrace a díky nim se vracet o několik změn zpět jednoduchým příkazem. Kdybychom vybírali framework na základě tohoto aspektu, přichází v úvahu RoR a Django díky snadnému integrovanému rohraní Vytváření MVC konkrétní aplikace Při vytváření MVC aplikace požadujeme nenáročné propojení modelů, kontrolerů a pohledů a případnou jednoduchou úpravu. Jako ukázku vytvoříme model uživatele, k němu kontroler a pohled, ve kterém budeme vypisovat všechny uživatele z databáze Ruby on Rails Samotný model představuje třída, která dědí z ActiveRecord::Base. V tomto modelu nastavujeme validace jednotlivých atributů tabulky. Tyto validace nám určují, co musí nový objekt modelu splňovat, aby mohl být uložen v databázi. Dále zde nastavujeme vazby v databázi, přístupové metody pro atributy a pomocné funkce. class User < ActiveRecord::Base 32

33 validates :username, :presence => true, :uniqueness => true validates : , :presence => true, :uniqueness => true has_many :messages attr_accessible :username, : , :password, :password_confirmation def friend?(id) friends.include? id.to_s end V modelu nastavujeme nutnost vyplnění a unikátnosti uživatelského jména a u při ukládání; bez těchto podmínek se nám uživatel neuloží. Dále se zde nastavuje public přístup k jednotlivým atributům pro čtení i zápis pomocí attr accessible. has many :messages nám umožní vybrat všechny zprávy daného uživatele z databáze. user = User.find 2 user.messages Načteme z databáze uživatele s id 2 a na dalším řádku nalezneme v databázi všechny jeho zprávy. Nakonec máme v modelu pomocnou metodu, která zjišťuje, zda daný uživatel je nebo není přítel. Kontroler se stará o vstupně/výstupní akce, nad kterými operuje uživatel. class UsersController < ApplicationController before_filter :find_user, :only => [:index, :show, :edit, :update, :destroy, :show_users] respond_to :html, :xml, :js def = User.all end def show if!current_user flash[:notice] = "Musíte být přihlášen." redirect_to new_user_session_url = User.all 33

34 @users.delete current_user end end def = User.new end def = User.new(params[:user]) redirect_to root_url else render :action => new end end def edit end def update :notice => "Uživatel úspěšně editován." else render :action => edit end end def end private def find_user = User.find(params[:id]) rescue ActiveRecord::RecordNotFound flash[:error] = Zaznam nenalezen redirect_to root_url end end end 34

35 Kontroler využívá DRY pomocí before filter, který přidá vyhledání konkrétního uživatele na začátek vybraných metod. Všechny tyto metody můžeme propojit s jednotlivými pohledy přes routování ; to znamená, že propojíme url s konkrétní metodou v kontroleru. V metodě nastavíme požadované proměnné a vykreslíme obsah pohledu na stránku. Vykreslený pohled využívá nastavené proměnné. Routování se nastavuje v tomto souboru config/routes.rb, např.: resources :users Klíčové slovo resources nám zaručí spárování základních metod kontroleru index, show, new, edit s pohledy a metody create, update, destroy spáruje s modelem. Takže například tato url adresa localhost:3000/users/ vyhledá v kontroleru uživatele metodu index, ta vyhledá všechny uživatele v databázi a vykreslí pohled. Pohled už stačí jen správně umístit app/views/users/index.html.erb: <table> <tr> <th>username</th> <th> </th> </tr> <% for user %> <tr> <td><%= user.username %></td> <td><%= user. %></td> </tr> <% end %> </table> <p><%= link_to "New User", new_user_path %></p> Tento pohled zobrazí všechny uživatele a vytvoří odkaz pro vytvoření nového uživatele. Klíčové slovo new user path nám vytvořila aplikace díky nastavení routování v souboru routes.rb. Je to takzvaná cesta, která představuje url adresu. Tato adresa nám zavolá metodu new v kontroleru uživatele Nette Jelikož Nette pracuje s databází na nízké úrovni. Ideální je vytvořit si třídu Repository, která nám umožní jednodušší vyhledávání v databázi a z ní pak budeme dědit naše modely. 35

36 Příklad funkce z Repository abstract class Repository extends Nette\Object { protected function gettable() { // název tabulky odvodíme z názvu třídy preg_match( #(\w+)repository$#, get_class($this), $m); return $this->connection->table(lcfirst($m[1])); public function findall() { return $this->gettable(); public function find($id) { return $this->gettable()->find($id); Model slouží jako nástroj pro načítání a ukládání do databáze. Dále jsou v něm pomocné funkce využívané v aplikaci. class UserRepository extends Repository { public function findbyname($username) { return $this->findall()->where( username, $username)->fetch(); public function createuser($username, $ , $password) { return $this->gettable()->insert(array( username => $username, => $ , password => $password )); public function updatefriends($id, $friends) { return $this->gettable()->where( id, $id)->update(array( friends => implode("::",$friends) )); Tento model dědí z třídy Repository. Zde jsou ukázky metod pro nalezení uživatele dle jména, vytvoření a upravení uživatele. 36

37 Nette využívá presentery místo kontrolerů, které slouží pouze jako prostředník mezi modelem a pohledem. Pohled nazývá šablonou. V těchto presenterech musíme vytvořit proměnné, do kterých načteme data z databáze a tyto proměnné předáme šabloně. Využívá dvě metody pro každou šablonu s předponami action a render. První pro načtení dat a druhou pro předání proměnných do šablony a vykreslení. Prezenter uživatele: class UserPresenter extends BasePresenter { private $userrepository; private $current_user; private $users; protected function startup() { parent::startup(); if (!$this->getuser()->isloggedin()) { $this->redirect( Sign:in ); $this->userrepository = $this->context->userrepository; public function actionindex() { $this->users = $this->userrepository->findall(); public function renderindex() { $this->template->users = $this->users; Metoda startup slouží jako konstruktor. V ní načteme námi vytvořený model a uložíme do proměnné. Pro šablonu index definujeme proměnné v metodě actionindex(). V metodě renderindex() této šabloně předáme proměnné a vykreslíme ji na stránku. Šablona, kterou má vykreslit metoda renderindex(), se musí správně umístit do aplikace. V tomto případě zde: app/templates/user/index.latte. Navíc musí mít příponu.latte. {block content {foreach $users as $user <tr> <td>{$user->username</td> 37

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková Ruby on Rails Bc. Tomáš Juřík Bc. Bára Huňková Co nás dnes čeká? Ruby (programovací jazyk) Ruby on Rails (webový framework) Praktická ukázka Ruby (programovací jazyk) Ruby (programovací jazyk) Skriptovací

Více

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu Django Django Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu Instalace Django ve Windows Nutné mít nainstalovaný Python Ověříte příkazem py --version Stáhnout

Více

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek Snadný vývoj webových aplikací s Nette Lukáš Jelínek Proč framework? ušetří spoustu práce (implementace, úpravy) vývoj = co udělat, ne jak to udělat bezpečnost štábní kultura prostředky pro ladění podpora

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

IS pro podporu BOZP na FIT ČVUT

IS pro podporu BOZP na FIT ČVUT IS pro podporu BOZP na FIT ČVUT Závěrečná zpráva pro 2. iteraci 21. dubna 2011 Zadavatel: Ing. Jiří Chludil Řešitelský tým: Jiří Kopecký Jan Kratochvíl Milan Matějček Štefan Pinďák Kristýna Streitová Úvod

Více

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE WEBOWÉ STRÁNKY TŘÍD KAMIL POPELKA ZÁVĚREČNÁ MATURITNÍ PRÁCE BRNO 2011 Prohlášení Prohlašuji, že maturitní práce je mým původním autorským dílem, které

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

1 Administrace systému 3. 1.3 Moduly... 3 1.4 Skupiny atributů... 4 1.5 Atributy... 4 1.6 Hodnoty atributů... 4

1 Administrace systému 3. 1.3 Moduly... 3 1.4 Skupiny atributů... 4 1.5 Atributy... 4 1.6 Hodnoty atributů... 4 CRM SYSTÉM KORMORÁN PŘÍRUČKA ADMINISTRÁTORA Obsah 1 Administrace systému 3 1.1 Uživatelské účty.................................. 3 1.2 Přístupová práva................................. 3 1.3 Moduly.......................................

Více

1. Webový server, instalace PHP a MySQL 13

1. Webový server, instalace PHP a MySQL 13 Úvod 11 1. Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0 Implementace LMS MOODLE na Windows 2003 Server a IIS 6.0 Obsah 1 ÚVOD... 3 1.1 Instalace PHP... 3 1.1.1 Nastavení práv k adresáři PHP... 3 1.1.2 Úprava souboru php.ini... 4 1.1.3 Proměnné prostředí...

Více

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads Postup Úvodem Můj úkol při tomto projektu byl vytvořit model pro data, dle návrhového vzoru MVC. Jelikož v poslední době pracuji spíše s návrhovým vzorem HMVC (http://en.wikipedia.org/wiki/hmvc) ve frameworku

Více

Maturitní projekt do IVT Pavel Doleček

Maturitní projekt do IVT Pavel Doleček Maturitní projekt do IVT Pavel Doleček CO FILMBOOK JE Filmbook je uzavřená webová aplikace pro celkovou správu informací a dat souvisejících se sledováním filmů. Primárně je zaměřen na uchovávání a spravování

Více

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Web Jaroslav Nečas Obsah přednášky Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Co to je web HTTP protokol bezstavový GET POST HEAD Cookies Session HTTPS

Více

RESTful API TAMZ 1. Cvičení 11

RESTful API TAMZ 1. Cvičení 11 RESTful API TAMZ 1 Cvičení 11 REST Architektura rozhraní navržená pro distribuované prostředí Pojem REST byl představen v roce 2000 v disertační práci Roye Fieldinga, zkratka z Representional State Transfer

Více

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11 Obsah Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 Kapitola 1 Než začneme 11 Dynamické vs. statické stránky 11 Co je a k čemu slouží PHP 12 Instalace potřebného softwarového

Více

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod 11. 1. Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod 11. 1. Vítejte v Ruby 15. O autorovi 9 Poděkování 9 Začínáme programovat v Ruby on Rails 9 O autorovi 9 Poděkování 9 Úvod 11 Komu je kniha určena 11 Jak je kniha uspořádána 11 Co ke knize potřebujete 12 Konvence 12 Zdrojový kód 13 Poznámka redakce českého

Více

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 18.4.2017 Webové technologie RIA, SPA, AngularJS - šablony a controllery, služby $scope a $http strana 2 RIA - Rich Internet Application Chová se podobně jako desktopová

Více

FFUK Uživatelský manuál pro administraci webu Obsah

FFUK Uživatelský manuál pro administraci webu Obsah FFUK Uživatelský manuál pro administraci webu Obsah FFUK Uživatelský manuál pro administraci webu... 1 1 Úvod... 2 2 Po přihlášení... 2 3 Základní nastavení webu... 2 4 Menu... 2 5 Bloky... 5 6 Správa

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

MS SQL Server 2008 Management Studio Tutoriál

MS SQL Server 2008 Management Studio Tutoriál MS SQL Server 2008 Management Studio Tutoriál Vytvoření databáze Při otevření management studia a připojením se ke konkrétnímu sql serveru mám v levé části panel s názvem Object Explorer. V tomto panelu

Více

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ SPOLEČNOST DECADIC PROJEKT FRAMETRIX

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ SPOLEČNOST DECADIC PROJEKT FRAMETRIX FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ MANAGEMENT PROJEKTŮ SPOLEČNOST DECADIC PROJEKT FRAMETRIX SPECIFIKACE POŽADAVKŮ AUTOR DOKUMENTU JIŘÍ JANDA BRNO 15. března 2012 Obsah 1 Úvod........................................

Více

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal Aplikační vrstva Úvod do Php Ing. Martin Dostal Co to je PHP? php soubory se nekompilují, interpret je spouští přímo bez překladu php běží na serveru php soubor je.txt soubor obsahující php kód: Zkrácený

Více

Stručný úvod pro programátory. Michal Kuchta

Stručný úvod pro programátory. Michal Kuchta Stručný úvod pro programátory Michal Kuchta Alespoň základní znalost PHP Základy klasického OOP a jeho implementaci v PHP Schopnost oprostit se od konvenčního tvoření stránek 2 Framework pro snazší vývoj

Více

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 13.5.2015 Webové technologie

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 13.5.2015 Webové technologie Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 13.5.2015 Webové technologie RIA, JSON, REST, AngularJS strana 2 RIA - rich internet application chová se podobně jako desktopová aplikace velké množství logiky

Více

WNC::WebNucleatCreator

WNC::WebNucleatCreator Tomáš Dlouhý WNC::WebNucleatCreator Verze: 5.1 1 Obsah Obsah...2 Úvod...3 Novinky...3 Požadavky...4 Instalace...4 Přihlášení se do WNC...6 Moduly...7 Modul Blog...7 Modul Categories...8 Modul News...8

Více

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody Obsah 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody 3) 4) Mantichora Mantichora je moderní aplikace, který

Více

Olga Rudikova 2. ročník APIN

Olga Rudikova 2. ročník APIN Olga Rudikova 2. ročník APIN Redakční (publikační) systém neboli CMS - content management system (systém pro správu obsahu) je software zajišťující správu dokumentů, nejčastěji webového obsahu. (webová

Více

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13 Obsah Úvodem 9 1. Úvod do Ajaxu 11 Jak Ajax funguje? 13 Popis 13 Ukázky 13 Jaké jsou možnosti tvorby interaktivních webových aplikací? 15 Co je třeba znát? 16 Jak fungují technologie Ajaxu 16 Jak funguje

Více

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Databázové aplikace pro internetové prostředí 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Projekt: Inovace výuky prostřednictvím ICT Registrační číslo: CZ.1.07/1.5.00/34.250

Více

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací. Přednáška 5 1. Stručný přehled vývoje html H T m l (HTML...XML... html5), (Web API, JSON, REST,AJAX) 2. Některé související IT IP adresa, doménová adresa, name servery JavaScritp, Jquery, Angular PHP vs

Více

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče. KAPITOLA 3 Architektura aplikací na frameworku Rails V této kapitole: modely, pohledy, řadiče. 58 Část I: Začínáme Jedna ze zajímavých vlastností frameworku Rails spočívá v tom, že klade docela závažná

Více

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni Webové aplikace Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni Harmonogram Dopolední blok 9:00 12:30 Ing. Dostal Úvod, XHTML + CSS Ing. Brada,

Více

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž.

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž. Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž. Obsah 1 Úvod... 1 2 Návod pro připojení do webového rozhraní... 1 2.1 Připojení kamery k WiFi síti... 4 2.2 Postup nastavení

Více

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 Obsah Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 KAPITOLA 1 Co budeme potřebovat 11 Co knihovna jquery nabízí 11 Editor zdrojového kódu 12 Webový server 12 Software pro ladění

Více

Reranking založený na metadatech

Reranking založený na metadatech České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1

Více

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice INOVACE PŘEDMĚTŮ ICT MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika Zpracoval: Jaroslav Kotlán srpen 2009s Úvod Modul Programování

Více

Django Urls, views, templates

Django Urls, views, templates Django Urls, views, templates Django URL Adresa URL je webová adresa, která je vidět v adresním řádku prohlížeče Například 127.0.0.1:8000 nebo https://djangoproject.com V Djangu používáme tzv. URLconf

Více

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE profesionální verze 1 Obsah Požadavky... 3 Instalace... 3 Proměnná CLASSPATH... 3 Zpřístupnění licenčního klíče... 3 Ověřování komponent OKS. 3 Spouštíme aplikaci

Více

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

Dobrý FOTO Popis produktu a jeho rozšíření

Dobrý FOTO Popis produktu a jeho rozšíření Dobrý FOTO Popis produktu a jeho rozšíření 502M012.N00 11/11/2011 www.dobry-foto.cz www.dlaex.cz info@dlaex.cz OBSAH 1 Úvod...3 2 Účel produktu...3 3 Vlastnosti produktu...3 3.1 Koncepce...3 3.2 Základní

Více

Informační systém pro e-learning manuál

Informační systém pro e-learning manuál Informační systém pro e-learning manuál Verze 1.00 Úvod Tento dokument popisuje způsob práce s informačním systémem pro elektronické vzdělávání. Systém je určený pro vytvoření elektronického kurzu a jeho

Více

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita Aktivní webové stránky Úvod: - statické webové stránky: pevně vytvořený kód HTML uložený na serveru, ke kterému se přistupuje obvykle pomocí protokolu HTTP (HTTPS - zabezpečený). Je možno používat i různé

Více

Obsah. Úvodem 9. Kapitola 1 Než začneme 11. Kapitola 2 Dynamické zobrazování obsahu 25. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Obsah. Úvodem 9. Kapitola 1 Než začneme 11. Kapitola 2 Dynamické zobrazování obsahu 25. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 Obsah Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 Kapitola 1 Než začneme 11 Dynamické vs. statické stránky 11 Co je a k čemu slouží PHP 12 Instalace potřebného softwarového

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

Více

Individuální projekt z předmětu webových stránek 2012/2013 - Anketa

Individuální projekt z předmětu webových stránek 2012/2013 - Anketa Individuální projekt z předmětu webových stránek 2012/2013 - Anketa Daniel Beznoskov, 2 IT A Skupina 1 Úvod Prohlášení o autorství Prohlašuji, že jsem individuální projekt z předmětu webových stránek na

Více

17. července 2005 15:51 z moravec@yahoo.com http://www.z-moravec.net/

17. července 2005 15:51 z moravec@yahoo.com http://www.z-moravec.net/ 17. července 2005 15:51 z moravec@yahoo.com http://www.z-moravec.net/ Úvod 1 Úvod Nedávno jsem zveřejnil návod na vytvoření návštěvní knihy bez nutnosti použít databázi. To je výhodné tehdy, kdy na serveru

Více

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011 Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP

Více

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě PHP PHP původně znamenalo Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP je skriptovací programovací jazyk, určený především

Více

Dobrý CMS Popis produktu a jeho rozšíření

Dobrý CMS Popis produktu a jeho rozšíření Dobrý CMS Popis produktu a jeho rozšíření 503M012.N01 11/09/2012 www.dlaex.cz info@dlaex.cz OBSAH 1 Úvod...3 2 Účel produktu...3 3 Vlastnosti produktu...3 3.1 Koncepce...3 3.2 Základní y...3 3.3 Doplňkové

Více

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant KOMPONENTY APLIKACE TreeINFO Petr Štos ECM Business Consultant CO JE TO APLIKACE TreeINFO Sada komponent Komponenty rozšiřující sloupce Komponenty rozšiřující pohledy na data Aplikační části Využití jednotlivě

Více

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída: DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP Maturitní projekt Vypracoval: Denis Ptáček Třída: 4B Rok: 2014/2015 Obsah 1. Použité nástroje... 3 1.1 NetBeans

Více

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009 Webové rozhraní pro datové úložiště Obhajoba bakalářské práce Radek Šipka, jaro 2009 Úvod Cílem práce bylo reimplementovat stávající webové rozhraní datového úložiště MU. Obsah prezentace Úložiště nasazené

Více

M4 PDF rozšíření. Modul pro PrestaShop. http://www.presta-addons.com

M4 PDF rozšíření. Modul pro PrestaShop. http://www.presta-addons.com M4 PDF rozšíření Modul pro PrestaShop http://www.presta-addons.com Obsah Úvod... 2 Vlastnosti... 2 Jak modul funguje... 2 Zdroje dat... 3 Šablony... 4 A. Označení šablon... 4 B. Funkce Smarty... 5 C. Definice

Více

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL, Anotace sady: Dynamické internetové stránky, VY_32_INOVACE_PRG_PHP_01 Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL, Stupeň a typ vzdělávání: gymnaziální vzdělávání, 4. ročník

Více

INFORMAČNÍ SYSTÉMY NA WEBU

INFORMAČNÍ SYSTÉMY NA WEBU INFORMAČNÍ SYSTÉMY NA WEBU Webový informační systém je systém navržený pro provoz v podmínkách Internetu/intranetu, tzn. přístup na takový systém je realizován přes internetový prohlížeč. Použití internetového

Více

Uživatelská příručka 6.A6. (obr.1.)

Uživatelská příručka 6.A6. (obr.1.) Uživatelská příručka 6.A6 Na stránky se dostanete zadáním URL adresy: http://sestasest.tym.cz do vašeho prohlížeče. Teď jste se dostali na úvodní stránku, na které vidíte fotku, přivítání, odkaz na Uživatelskou

Více

Excel a externí data KAPITOLA 2

Excel a externí data KAPITOLA 2 Excel a externí data KAPITOLA 2 V této kapitole: Připojení databáze Microsoft Access Data z webových stránek a z textových souborů Data z databází Program Microsoft Query Práce se soubory typu XML Velkou

Více

Rozklad na prvočinitele. 3. prosince 2010

Rozklad na prvočinitele. 3. prosince 2010 Rozklad na prvočinitele Ondřej Slavíček 3. prosince 2010 1 Obsah 1 Příručka k programu 3 1.1 funkce main()............................. 3 1.2 funkce hlavnifunkce()........................ 3 1.3 funkce

Více

Instalace a konfigurace web serveru. WA1 Martin Klíma

Instalace a konfigurace web serveru. WA1 Martin Klíma Instalace a konfigurace web serveru WA1 Martin Klíma Instalace a konfigurace Apache 1. Instalace stáhnout z http://httpd.apache.org/ nebo nějaký balíček předkonfigurovaného apache, např. WinLamp http://sourceforge.net/projects/winlamp/

Více

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK Systém WorkWatch je určen pro malé a střední firmy, které se zabývají službami nebo zakázkovou výrobou. Zajistí dokonalý přehled o všech zakázkách a jejich rozpracovanosti.

Více

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz

Více

TACHOTel manuál 2015 AURIS CZ

TACHOTel manuál 2015 AURIS CZ TACHOTel manuál 2 TACHOTel Obsah Foreword I Úvod 0 3 1 Popis systému... 3 2 Systémové... požadavky 4 3 Přihlášení... do aplikace 5 II Nastavení aplikace 6 1 Instalace... a konfigurace služby ATR 6 2 Vytvoření...

Více

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST] [APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST] [Aktualizace dokumentu: 27.8.2011 3:02:37 Verze dokumentu: 1.0 Obsah Obsah... 2 1. Struktura databáze a souborů... 3 2. Soubor registerdevice.php...

Více

Plánování a vývoj základního frameworku

Plánování a vývoj základního frameworku Shrnutí KAPITOLA 2 Plánování a vývoj základního frameworku Nyní, když máme jasno v tom, co nás v této knize čeká a proč, můžeme začít s vývojem našeho sociálního webu. Abychom zajistili rychlý postup vývoje,

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

Úvod do informačních služeb Internetu

Úvod do informačních služeb Internetu Úvod do informačních služeb Internetu Rozdělení počítačových sítí Počítačové sítě se obecně rozdělují do základních typů podle toho, na jak velkém území spojují počítače a jaké spojovací prostředky k tomu

Více

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč Bottle -- příklad V tomto příkladu se pokusíme vytvořit malou aplikaci umožňující psát jednoduché poznámky. Databáze Nejprve je třeba vytvořit v databázovém serveru uživatele (pokud už není vytvořen) a

Více

Dobrý SHOP Popis produktu a jeho rozšíření

Dobrý SHOP Popis produktu a jeho rozšíření Dobrý SHOP Popis produktu a jeho rozšíření 501M012.N01 11/11/2011 www.dlaex.cz info@dlaex.cz OBSAH 1 Úvod...3 2 Účel produktu...3 3 Vlastnosti produktu...3 3.1 Koncepce...3 3.2 Základní y...3 3.3 Doplňkové

Více

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr Komponentově orientované webové frameworky Jiří Stránský jistr@jistr.net twitter.com/jistr O čem to bude Three-Tier aplikace MVC frameworky Komponentově orientované frameworky Apache Wicket Three-Tier

Více

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows Tento návod popisuje možnost provozovat Docházku 3000 pod zdarma dostupným operačním

Více

MS Word 2007 Šablony programu MS Word

MS Word 2007 Šablony programu MS Word MS Word 2007 Šablony programu MS Word Obsah kapitoly V této kapitole se seznámíme s: Možností využití šablon při vytváření nových dokumentů Vytvářením vlastních šablon Studijní cíle Po absolvování této

Více

Instalační manuál aplikace

Instalační manuál aplikace Instalační manuál aplikace Informační systém WAK BCM je softwarovým produktem, jehož nástroje umožňují podporu procesního řízení. Systém je spolufinancován v rámci Programu bezpečnostního výzkumu České

Více

TECHNICKÁ DOKUMENTACE SOCIÁLNÍ SÍŤ MRSHARE. David Malát, Adam Novák, David Vurbs, Dominik Walta. SPŠ Na Proseku 2012/13. Pod velením Davida Vurbse

TECHNICKÁ DOKUMENTACE SOCIÁLNÍ SÍŤ MRSHARE. David Malát, Adam Novák, David Vurbs, Dominik Walta. SPŠ Na Proseku 2012/13. Pod velením Davida Vurbse TECHNICKÁ DOKUMENTACE SOCIÁLNÍ SÍŤ MRSHARE David Malát, Adam Novák, David Vurbs, Dominik Walta SPŠ Na Proseku 2012/13 Pod velením Davida Vurbse Zadání práce Adam Novák-Vytvořit zeď a její funkce a technickou

Více

Redakční systém Joomla. Prokop Zelený

Redakční systém Joomla. Prokop Zelený Redakční systém Joomla Prokop Zelený 1 Co jsou to red. systémy? Redakční systémy (anglicky Content Management System - CMS) jsou webové aplikace používané pro snadnou správu obsahu stránek. Hlavním cílem

Více

Na vybraném serveru vytvoříme MySQL databázi. Soubory scratch.jpa, kickstart.php a en-gb.kickstart.ini nahrajeme na vybraný server.

Na vybraném serveru vytvoříme MySQL databázi. Soubory scratch.jpa, kickstart.php a en-gb.kickstart.ini nahrajeme na vybraný server. 1 Práce se systémem Tento dokument popíše způsob instalace a základy práce se systémem Joomla!, ve kterém je učebnice jazyka Scratch vytvořena. Podrobný návod k systému Joomla! je popsán v dokumentaci

Více

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. 2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových

Více

REGIONÁLNÍ INFORMAČNÍ SYSTÉM S PODPOROU MAP

REGIONÁLNÍ INFORMAČNÍ SYSTÉM S PODPOROU MAP Středoškolská technika 2010 Setkání a prezentace prací středoškolských studentů na ČVUT REGIONÁLNÍ INFORMAČNÍ SYSTÉM S PODPOROU MAP Karel Soukup Vyšší odborná a Střední průmyslová škola Varnsdorf Mariánská

Více

Instalace produktu Ontopia. ver. 5.0.2 (open-source verze)

Instalace produktu Ontopia. ver. 5.0.2 (open-source verze) Instalace produktu Ontopia ver. 5.0.2 (open-source verze) Martina Husáková 1.2.2010 PÁR SLOV ÚVODEM Produkt společnosti Bouvet Ontopia (dříve Ontopia Knowledge Suite OKS) je jedním z nejpoužívanějších

Více

Rezervační systém Tvorba WWW stránek

Rezervační systém Tvorba WWW stránek 2012 Rezervační systém Tvorba WWW stránek Vytvoření rezervačního systému pro rezervaci motokár,ubytování a atrakcí Marek Svoboda Motokáry Motobydlo 30.12.2012 Obsah 1.Základní charakteristika... 3 a) Téma

Více

Internetové služby isenzor

Internetové služby isenzor Internetové služby isenzor Aktuální snímek z webové kamery nebo aktuální teplota umístěná na vašich stránkách představují překvapivě účinný a neotřelý způsob, jak na vaše stránky přilákat nové a zejména

Více

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator APS Web Panel Rozšiřující webový modul pro APS Administrator Webové rozhraní pro vybrané funkce programového balíku APS Administrator Instalační a uživatelská příručka 2004 2016,TECH FASS s.r.o., Věštínská

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 12.2.2015 Webové aplikace

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 12.2.2015 Webové aplikace Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 12.2.2015 Webové aplikace Úvod strana 2 Vyučující Ing. Jiří Lýsek, Ph.D. Ing. Oldřich Faldík https://akela.mendelu.cz/~lysek/ https://akela.mendelu.cz/~xfaldik/wa/

Více

Nápověda k aplikaci EA Script Engine

Nápověda k aplikaci EA Script Engine Nápověda k aplikaci EA Script Engine Object Consulting s.r.o. 2006 Obsah Nápověda k aplikaci EA Script Engine...1 1. Co je EA Script Engine...2 2. Důležité upozornění pro uživatele aplikace EA Script Engine...3

Více

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 26. 2. 2019 Webové aplikace PHP OOP, PHP a databáze, migrace DB, ORM, šablony, MVC/MVP, PHP frameworky strana 2 PHP skriptovací jazyk dynamicky typovaný interpret

Více

Ruby on Rails. VŠE, Jiří Hradil

Ruby on Rails. VŠE, Jiří Hradil Ruby on Rails VŠE, 5.5.2017 Jiří Hradil jiri@hradil.cz Co jsou Ruby on Rails? http://rubyonrails.org web framework - píšou se v tom web aplikace open source, zadara, 4200 contributors Ruby - objektový

Více

Formy komunikace s knihovnami

Formy komunikace s knihovnami Formy komunikace s knihovnami Současné moderní prostředky Jiří Šilha a Jiří Tobiáš, Tritius Solutions a.s., Brno Osnova Základní požadavky na komunikaci s knihovnami Historie komunikace s knihovnami Confluence

Více

bubileg webový redakční systém Manuál administrace pro systém verze 5

bubileg webový redakční systém Manuál administrace pro systém verze 5 bubileg webový redakční systém Manuál administrace pro systém verze 5 Obsah Úvod... 3 URL adresy a MVC architektura... 3 Adresářová struktura webu... 4 Základní pojmy a logika systému... 5 Administrace...

Více

Manuál pro obsluhu Webových stránek

Manuál pro obsluhu Webových stránek ResMaster Systems s.r.o. Truhlářská 1119/20, 110 00 Praha 1 Manuál pro obsluhu Webových stránek (Prosinec 2018) Jana Vítová, +420 225 388 130 2018 Obsah Úvod Webové stránky... 3 Slovník pojmů... 3 URL

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

Více

NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE. Ataxo Czech s.r.o.

NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE. Ataxo Czech s.r.o. NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE Ataxo Czech s.r.o. ÚVOD Internetové stránky vytvořené společností Ataxo v rámci produktu Mini web můžete jednoduše a rychle upravovat prostřednictvím on-line administrace.

Více

DIPL 2. Stručný manuál pro vysokoškolské kvalifikační práce.

DIPL 2. Stručný manuál pro vysokoškolské kvalifikační práce. DIPL 2 Stručný manuál pro vysokoškolské kvalifikační práce. Obsah STUDENTI VYTVOŘENÍ VOLNÉHO TÉMATU VŠKP VÝBĚR TÉMATU VŠKP Z VOLNÝCH TÉMAT KONTROLA ZADÁNÍ TÉMATU FORMÁLNÍ ÚPRAVA VYPLNĚNÍ ÚDAJŮ ELEKTRONICKÉ

Více

Evidence Popis aplikace QUANTUM a.s. Verze pro OS Android

Evidence Popis aplikace QUANTUM a.s. Verze pro OS Android Evidence Popis aplikace QUANTUM a.s. Verze pro OS Android 1 Instalace aplikace Evidence 1. 2. Spustíme Google Play Store. 3. 1. Do vyhledávače napíšeme edocu 2. Play Store nám vyhledá edocu Evidence -

Více

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem

Více

ID-Ware II Posílání upozornění e-mailem na událost s datumovou závislostí

ID-Ware II Posílání upozornění e-mailem na událost s datumovou závislostí ID-Ware II Posílání upozornění e-mailem na událost s datumovou závislostí Obsah 1.Princip činnosti...3 2.Nastavení uživatelských práv a příkazů...3 3.Popis uživatelského prostředí...7 3.1.Detail upozornění...7

Více

Elektronická podpora výuky předmětu Komprese dat

Elektronická podpora výuky předmětu Komprese dat Elektronická podpora výuky předmětu Komprese dat Vojtěch Ouška ouskav1@fel.cvut.cz 19. června 2006 Vojtěch Ouška Elektronická podpora výuky předmětu Komprese dat - 1 /15 Co je to SyVyKod? SyVyKod = Systém

Více

iviewer pro iphone & ipad & ipod touch Rychlý uživatelský návod

iviewer pro iphone & ipad & ipod touch Rychlý uživatelský návod iviewer pro iphone & ipad & ipod touch Rychlý uživatelský návod iviewer lze použít na iphone a ipad pro zobrazení živého obrazu z DVR vzdálený server. I. Použití iphone pro přístup ke vzdálenému DVR Použití

Více

Novinky IPAC 3.0. Libor Nesvadba Karel Pavelka

Novinky IPAC 3.0. Libor Nesvadba Karel Pavelka Novinky IPAC 3.0 Libor Nesvadba Karel Pavelka Webové technologie Držíme laťku na vysoké úrovni Validní, sémantický, strukturovaný, přístupný, znovupoužitelný a jednoduchý XHTML kód. Komprimované JavaScripty

Více

AJAX. Dynamické změny obsahu stránek

AJAX. Dynamické změny obsahu stránek AJAX Dynamické změny obsahu stránek Co je AJAX Co je AJAX Co je AJAX Co je AJAX Co je AJAX AJAX = Asynchronous JavaScript And XML XHR = XMLHttpRequest Ajax je sada technik a nástrojů, které umožňují dynamické

Více