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

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

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

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

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

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

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

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

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

RESTful API TAMZ 1. Cvičení 11

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

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

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

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

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

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

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

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

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

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

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

Evoluce deploye Od FTP po automatický deploy

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Bakalářské. Vzdělání: Telefon: Ostrava. Bydliště: Ukázky práce: Správa a monitoring platformy provozované na AWS

Projekt JetConf REST API pro vzdálenou správu

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

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

Metodiky pro automatické testování webové aplikace. Ondřej Melkes, Martin Komenda

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Databázové a informační systémy

1 Webový server, instalace PHP a MySQL 13

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

Nové jazykové brány do Caché. Daniel Kutáč

InterSystems Caché Post-Relational Database

Použití databází na Webu

AJAX. Dynamické změny obsahu stránek

IS pro podporu BOZP na FIT ČVUT

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í.

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

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

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

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

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

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

Instalace a konfigurace web serveru. WA1 Martin Klíma

Střední odborná škola a Střední odborné učiliště, Hořovice

1. Webový server, instalace PHP a MySQL 13

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

Šifrování Autentizace Bezpečnostní slabiny. Bezpečnost. Lenka Kosková Třísková, NTI TUL. 22. března 2013

Využití chemie v procesu testování webových aplikací vytvořených pomocí technologií PHP a Java

SCM = Source Code Management software, základní typologie rozdělení je podle počtu a umístění základního úložiště kódu(=repository) na:

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Databáze II. 1. přednáška. Helena Palovská

ESET & Flexibee. Igor Hák, hak@eset.cz

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

language="javascript">... </script>.

MVVM pro desktop i web

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Popis logování v aplikačním serveru

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Úvod do Entity Frameworku

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

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

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

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

Specifikace. Odevzdání do

Úvod do Web Services

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

ANOTACE vytvořených/inovovaných materiálů

Scaffold pro Nette Framework Scaffold for Nette Framework

Java/QE Akademie - Osnova

Ruby on Rails: zapomeňte na Javu

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Střední odborná škola a Střední odborné učiliště, Hořovice

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Server-side technologie pro webové aplikace

Systém pro analýzu dat operátorů a obráběcích strojů ve strojírenské výrobě. Bc. Roman Sucháček

O Apache Derby detailněji. Hynek Mlnařík

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

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

Databáze EMS podacích lístků

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

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Webové programování a Open Source. Open-source. Liberix o.p.s

Architektura softwarových systémů


Platformy / technologie. Jaroslav Žáček

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Web Services na SOAP

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Obsah. Předmluva Kapitola 1 Úvod 1. Web v kostce 1 Kdo je webmaster? 4 Doporučená literatura 4. Kapitola 2 Přehled jazyka HTML 5

Architektura GIS KMA/AGI. Karel Jedlička

Model-View-Controller architektura PHP frameworks

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

Vývojařská Plzeň AngularJS

Transkript:

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 3.4.2015 Webové aplikace Šablonovací systémy, ORM, MVC, MVP, Frameworky, Testování

strana 2 Otázka k zamyšlení: Dokázali byste napsat server-klient aplikaci s GUI a databází v relativně krátkém čase v něčem jiném než HTML/PHP? asi ne v PHP to umí kde kdo (i děti na ZŠ) mohou to dělat dobře? jakou?

strana 3 Tvorba software a návrh Dobrý návrh aplikací je důležitý pro větší projekty udržovatelnost testovatelnost termín dodání vlastní psaní kódu je dílčí část procesu v PHP se píšou aplikace malé i velké je snadné začít může být těžké růst aby kód mohl upravovat i někdo jiný, aby mohlo spolupracovat víc vývojářů volte správné nástroje pro vaše cíle

strana 4 Návrhový vzor znovupoužitelné řešení nějakého problému Programování Elektrotechnika Strojírenství Základní jednotka Řádek kódu Součástka (kondenzátor, odpor, dioda, ) Celek Funkce, třída Elektrický obvod (zapojené součástky) Funkční celek Vrstva aplikace, knihovna Osazený plošný spoj (zesilovač, zdroj, trafo, ) Produkt Software Zařízení Stroj Díl (hřídel, ozubené kolo, šroubek, ) Sestava (převod, sešroubované díly, ložisko, ) Spojka, motor, převodovka, diferenciál

strana 5

strana 6 Počátky PHP do r. 2005 malé aplikace napsány jako mix PHP a HTML kódu větší aplikace procedurálně + šablona podpora objektů reálně funkční až od PHP5

strana 7 Šablonovací systémy např. Smarty, Twig, Latte a různá jiná řešení (i vlastní) Šablony se kompilují do PHP obvykle se parsují pomocí regulárních výrazů caching

strana 8 Šablonovací systémy - výhody Oddělení PHP a HTML oddělení prezentační logiky od aplikační přehlednost dělitelnost práce rychlost, odbornost, náklady Bezpečnost XSS htmlspecialchars()

strana 9 Šablonovací systémy - nevýhody ne vždy podpora syntaxe v IDE Netbeans + Latte je OK člověk si musí pamatovat názvy proměnných je důležitá komunikace programátor <-> kodér je nutné napsat dokumentaci

strana 10 Šablonovací systémy princip zkompilovaná šablona uložená v mezipaměti PHP kód cache šabloně se předají proměnné a načte se jako PHP kód přes include

strana 11 Šablonovací systémy ukázka //$data je asoc. pole function runtemplate($tmpl, } extract($data); include("dir/". $tmpl); array $data) {

strana 12 Šablonovací systémy ukázka {if($form->haserror())} <p>chyba...</p> {endif}

strana 13 Šablonovací systémy kompilace $script = preg_replace( ' {if\((.+?)\)} i', '<?php if(\\1) {?>', $script); $script = preg_replace( ' {end[a-z]*} i', '<?php }?>', $script);

strana 14 Šablonovací systémy ukázka <?php if($form->haserror()) {?> <p>chyba...</p> <?php }?>

strana 15 Šablonovací systémy ukázka {if($form->haserror())} <p>chyba...</p> {endif} <?php if($form->haserror()) {?> <p>chyba...</p> <?php }?>

strana 16 Šablonovací systémy ukázka <table> {foreach($var as $k => $v)} <tr><td> </td></tr> {endforeach} </table>

strana 17 Šablonovací systémy ukázka <table> <?php foreach($var as $k => $v) {?> <tr><td> </td></tr> <?php }?> </table>

strana 18 ORM Object Relational Mapping mapuje databázi na objekty využívá cizí klíče nebo konfigurační soubory pro relace Vzory (design pattern): Active record Data mapper Generátory kódu

strana 19 ORM výhody a nevýhody výhody není nutné psát jednoduché SQL je nutné upravit strukturu DB některé ORM např. nepodporují kompozitní klíče nevýhody složitější dotazy a spojení tabulek se někdy realizují složitě

strana 20 ORM Active record objekty si řeší práci s DB samy $obj->save(), $obj->delete(); Data mapper práce s DB přes další objekt tzv. "mapper" $mapr->save($obj), $mapr->delete($obj)

strana 21 Active record vs Data mapper co dělat se smazanou instancí? Active record objekt obsahuje DB metody jako insert delete update Data mapper entita neobsahuje DB metody mapper může pracovat nad různými úložišti Mapper může vrátit instanci podle dat

strana 22 ORM ukázka - Active Record $user = new User(); $user->load(5); $user->email = ' '; $user->save(); $user->savetofile( ); třída User je asi mix SQL kódu a logiky modelu a asi spousta dalšího

strana 23 ORM ukázka - Data mapper co to je a odkud? $daodb = daosql::users(); $user = $daodb->get(5); if($user instanceof Admin) { } $user->email = " "; $daodb->store($user); entita User je nezávislá na úložišti $daofile = daofile::user(); $daofile->store($user);

Active record vs Data mapper strana 24

strana 25 MVC a MVP M = model kód měnící data v DB V = view prezentační vrstva C = controller P = presenter

strana 26 MVC vs MVP MVC controller sleduje akce uživatele a předá informace o změně do view více pro desktop nebo RIA MVP presenter předává data view a to na základě dat zobrazí celé rozhraní vhodné pro klasický web view je na klientské straně (oddělené a pasivní)

MVC vs MVP strana 27

strana 28 Realita webových aplikací nebo presenter?

strana 29 MVC nebo MVP? hlavně oddělit business logiku (M), zobrazovací logiku (V) a aplikační logiku (C/P) závisí více na technických prostředcích MVW - Model View Whatever

MVC v PHP strana 30

MVC v JS strana 31

strana 32 PHP Frameworky ucelené systémy určující způsob práce knihovny architektura aplikace

PHP frameworky - Google trends strana 33

strana 34 Který si vybrat moderní, bezpečný a vyvíjený vhodný pro můj cíl s dobrou dokumentací používající nástroje, které znám Composer, Git, PhpUnit, s velkou (aktivní) komunitou

strana 35 Framework VS knihovna Inversion of control Framework řídí vás, knihovnu řídíte vy Framework = ucelená sada myšlenek a postupů složená z knihoven a sladěná tak, aby co nejlépe plnila svůj účel

strana 36 Funkce (výhody) frameworku Definuje architekturu aplikace např. MVP, push based, pull based Zlepšuje testovatelnost aplikace Poskytuje: práce s URL (routing) šablonovací systém API pro databázi (např. ORM)

strana 37 Funkce (výhody) frameworku API pro HTTP data a formuláře GET a POST, COOKIE, SESSION, soubory migrace DB seedy DB některé mají CLI generování modelů a DB migrací seedování databáze spouštění testů práce v týmu command line interface

strana 38 Nevýhody frameworku Ne každému musí vyhovovat to, co autorovi frameworku je možné použít jiný framework což ale nejde, pokud máte projekt z poloviny hotov nebo taky žádný MVC lze realizovat různě (není to složité) lze si vybrat knihovny a používat je

strana 39 Zpracování požadavku frameworkem obvykle se vše posílá přes index.php framework podle cesty v URL osloví správný presenter - routing spustí akce modelu (CRUD) předá data z modelu do šablony šablona vygeneruje HTML HTML se pošle přes HTTP

strana 40 Pretty (friendly, nice, semantic, ) URL a mod_rewrite Modul pro HTTP server Apache, na základě pravidel přesměruje HTTP požadavek soubor.htaccess regulární výrazy RewriteCond %{REQUEST_FILENAME}!-f RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] L = last QSA = query string append

strana 41 Pretty URL a mod_rewrite routing zpracuje parametr "q" a předá další parametry presenteru některé routery dokážou např. podle "id" načíst instanci modelu http://www.server.cz/clanek/detail?id=500 => http://www.server.cz/index.php?q=clanek/detail&id=500

strana 42 Pretty URL a mod_rewrite někdy má entita přímo fragment URL unikátní klíč nad sloupcem varchar(n) router předá pojmenovaný fragment do presenteru route: produkt/{$producturl} http://www.server.cz/produkt/sklenice-na-pivo => http://www.server.cz/index.php?q=produkt/sklenice-na-pivo

strana 43 Composer Systém pro stahování aplikačních balíčků Konfigurace v JSON souborech obdobné nástroje i pro jiné ekosystémy Bower (JS), Gem (ruby), Pip (Python) https://getcomposer.org/

strana 44 Composer příkazy CLI composer install instalace podle composer.lock souboru (zajistí všem vývojářům stejnou verzi) composer update aktualizace možnost stažení např. sandboxu pro nový projekt

strana 45 Git systém pro správu verzí kódu pracuje lokálně + centrální úložiště větve CLI push, pull, commit, add, merge, rebase Github, Bitbucket systém SVN se v podstatě nepoužívá

strana 46 Framework Nette Český MVP framework David Grudl a Nette foundation bezpečný, moderní Hlavní součásti: Latte šablony Tracy (Laděnka) Dibi a Nette databases Adminer Konfigurace ve formátu Neon

strana 47 Nette - šablony Latte makra http://doc.nette.org/cs/2.1/default-macros dědičnost (layout) místo generování URL píšete volání funkcí (presenter)

strana 48 Nette - Tracy (Laděnka) pomocník pro ladění aplikace vyjímky a výpisy chbových hlášení měření času SQL dotazy http://doc.nette.org/cs/2.1/debugging

strana 49 Nette - databáze - Dibi a Database ORM vrstva Dibi v podstatě rozšiřuje PDO::prepare() není ORM ORM Nette\Database http://doc.nette.org/cs/2.1/database založená na notorm http://www.notorm.com/

strana 50 Nette - databáze Je možné použít např. ORM Doctrine DQL jazyk objektový dialekt SQL podobná, ale jiná syntaxe a hlavně logika podobný Hibernate (Java) $query = $em->createquery('select u FROM MyProject\Model\User u WHERE u.age > 20'); $users = $query->getresult();

strana 51 Adminer Je použit jako základní administrační nástroj podobný jako PHPMyAdmin existuje verze Adminer Editor podpora různých DB (přes PDO) http://www.adminer.org/cs/

Adminer strana 52

strana 53 Ostaní Frameworky Laravel Eloquent ORM, šablony Blade Symphony Doctrine ORM, šablony Twig CakePHP Code Igniter yii...

strana 54 Shrnutí Frameworků je mnoho Výběr není snadný, ale jsou podobné Je to jen nástroj

strana 55 Jiný přístup Aplikace na serveru realizuje pouze REST API REST = Representational State Transfer Vše ostatní napsáno jako JS aplikace pomocí JS frameworku šablony zpracované také pomocí JS např. Angular JS

strana 56 REST API jen jedna URL např. /api/clanky GET POST - vytvoření nového PUT - aktualizace DELETE

strana 57 Testování webových aplikací Codeception http://codeception.com/ Akceptační testy Funkcionální testy Unit testy - PHPUnit každé testové prostředí je možné upravit/rozšířit

strana 58 Proč testy? Kvalita kódu kódu s testy lze dlouhodobě důvěřovat co funguje dnes, nemusí fungovat zítra, ale jen testy to můžou odhalit ale nemusí Při práci v týmu nemůžete vědět, co změna ve vaší části kódu způsobí jinde to samé při delší přestávce ve vývoji

strana 59 Codeception výhody jednoduchá instalace testy psané v PHP ovládání přes příkazový řádek umí pracovat s různými frameworky framework musí mít plugin pro Codeception nevýhody nemá podporu v NetBeans a jiných IDE

strana 60 Akceptační testy Selenium Server http://www.seleniumhq.org/download/ simuluje chování návštěvníka, pomalé $I->wantTo('add a task'); $I->amOnPage("/"); $I->wait(1); $I->seeElement("form[name=add]"); $I->seeElement("form[name=add] input[type=submit]"); $I->fillField("title", "ukol 1"); $I->click("form[name=add] input[type=submit]"); $I->wait(1);

strana 61 Funkční testy podobné jako akceptační odešle HTTP požadavek, očekává že se něco např. objeví v DB nepotřebují prohlížeč jsou rychlejší je nutná podpora ze strany aplikace/frameworku jinak si musíme napsat vlastní plugin pro codeception

strana 62 Akceptační + funkční testy PhpBrowser HTTP klient bez renderování HTML WebDriver spolupracuje se Selenium server

strana 63 Unit testy Samostatné testování PHP tříd Codeception využívá PHPUnit PHPUnit má podporu v NetBeans a jiných IDE

strana 64 Zajímavosti Phalcon PHP framework jako modul pro PHP Ruby on Rails (RoR) framework postavený na jazyku Ruby v jisté době velmi populární a propagovaný, inspirací pro mnohé jiné frameworky Node.js serverside/cli JS systém