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

Podobné dokumenty
Server-side technologie pro webové aplikace

Instalace a konfigurace web serveru. WA1 Martin Klíma

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

INFORMAČNÍ SYSTÉMY NA WEBU

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

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

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

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

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

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

1. Webový server, instalace PHP a MySQL 13

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

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

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í

(Enterprise) JavaBeans. Lekce 7

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

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

Systémová administrace portálu Liferay

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

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

Použití databází na Webu

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

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

1 Webový server, instalace PHP a MySQL 13

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

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

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

Serverové skriptovací technologie

Programovací jazyky Přehled a vývoj

Úvod do Web Services

Internet 2 css, skriptování, dynamické prvky

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

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

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

Tvorba informačních systémů

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

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

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

Michal Krátký, Miroslav Beneš

AUTOMATICKÉ ŘÍZENÍ S INTERNETOVOU KOMUNIKACÍ V PHP Automatic Control with Internet Communication in PHP

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

PA165: Úvod do Java EE. Petr Adámek

X36ASS Dokumentace projektu. Firemní helpdesk se správou požadavků. Bc. Ondřej Brynda Bc. Petr Hůla

RESTful API TAMZ 1. Cvičení 11

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

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

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

IB111 Programování a algoritmizace. Programovací jazyky

Webové Aplikace (6. přednáška)

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

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

Úvod do tvorby internetových aplikací

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

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Internet Information Services (IIS) 6.0

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Platební systém XPAY [

Vyšší odborná škola a Střední škola,varnsdorf, příspěvková organizace. Šablona 4 VY 32 INOVACE

WWW technologie. HTTP protokol

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

Tvorba informačních systémů

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

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

Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

Bakalářská práce, FEL ČVUT Praha. Michal Turek. červenec 2007

Platformy / technologie. Jaroslav Žáček

KAPITOLA 1 SOCIÁLNÍ SÍTĚ A PHP...17

Úvod do aplikací internetu a přehled možností při tvorbě webu

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

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

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

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);

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

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

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

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

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

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

Vstupní požadavky, doporučení a metodické pokyny

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Olga Rudikova 2. ročník APIN

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

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

IS pro podporu BOZP na FIT ČVUT

Formy komunikace s knihovnami

Tvorba informačních systémů

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

UDS for ELO. Univerzální datové rozhraní. >> UDS - Universal Data Source

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Pánem World Wide Webu! aneb povídání o chybě hloupé tak, až to bolí

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

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

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Transkript:

Liberix o.p.s. 23. 11. 2006

Obsah prezentace 1 2 3 4 5

protokol HTTP (klient-server), jazyk HTML/XHTML, CSS funguje systémem dotaz-odpověd (neuchovává stav) HTML/XHTML nutno dodržovat standardy, validovat dnešní směr - oddělení dat a grafiky na úrovni XHTML (grafika v CSS, vlastní obsah v XHTML)

WWW webový server program pro podávání dokumentů klient (prohlížeč) protokolem HTTP požádá o dokument (obvykle HTML obyčejný text), ten poté zobrazí v okně aplikace, přičemž po serveru požaduje další dokumenty, které najde na stránce (obrázky, flash soubory atd) server tedy jen podává dokumenty, obrázky, soubory (často se HTTP používá i pro stahování binárních souborů) protokol HTTP textový (ale data mohou chodit i binární), bezstavový v požadavcích i odpovědích mohou být tzv HTTP hlavičky, které vše doplňují požadavek: specifikace dotazu (GET, POST a další), virtuální host, Referrer, Connection, User-Agent,... odpověd : typ vráceného dokumentu, jeho délka, použitá komprese, Server, Expires,...

CGI www server se dá nastavit tak, aby místo načtení statického souboru ze souborového systému spustil program a jeho výstup vrátil klientovi CGI Common Gateway Interface: protokol, pomocí kterého se programu předají potřebné informace a program předá www serveru zpět odpověd (jedná se o domluvené názvy proměnných prostředí) CGI programy mohou být napsány v jakémkoliv jazyce (Perl, Python, C, Bash... ) server program při každém požadavku spustí, nastaví proměnné prostředí a klientovi odešle výsledek volání skriptu (výstup do konzole ) ukázka CGI skriptu

CGI CGI skripty jsou pomalé řešení FastCGI: program je spuštěn jako daemon a požadavky mu webový server přesměrovává nabízí se otázka: proč by nemohl odpověd generovat přímo webový server to je možné používají se tzv moduly: ISAPI (MS ISS), modules (Apache) FastCGI se dnes někdy používá v kombinaci s jazyky Perl, Python, Ruby a některými webovými servery nekompatibilními s ISAPI/Apache moduly

Moduly modul je komponenta, která rozšiřuje webový server o nějakou funkčnost pro naše účely uvažujeme moduly s podporou dynamického generování obsahu modul si můžete napsat (Linux = Apache moduly, Windows = ISAPI moduly) spíše ale jen použijeme modul, který přidá podporu pro nějaký již existující programovací jazyk PHP nejrozšířenější (php5isapi.dll pro Windows, mod-php5 pro Apache) podobně také jiné skriptovací jazyky: Perl, Python, Ruby, modul je třeba asociovat s určitou množinou URL adres (například /mojeaplikace), či skupiny souborů (*.php modul je naprogramován tak, že soubory čte, interpretuje, vrací výsledky)

PHP veleúspěšný skriptovací jazyk pro tvorbu dynamického obsahu je možné ho vkládat přímo do HTML stránek, modul PHP soubory načítá, spouští a vrací výsledky za úspěchem stojí jednoduchá C-Perl syntaxe a velmi snadné nasazení (zmíněné moduly stačí stáhnout, instalace triviální) PHP podporuje velké množství providerů, je snadné se naučit základy PHP se ale nehodí na větší aplikace, jazyk prožívá stále bouřlivý vývoj, OOP přidáno násilně, nepodporuje jmenné prostory, nastávají problémy ve vícevláknových prostředích, nekonzistence mezi verzemi (magic quotes, odkazy, třídy) to ale neznamená, že se v PHP nedají psát velké aplikace s dobrým návrhem jen člověk musí do vývoje věnovat více úsilí

Sezení (sessions) protokol HTTP je bezstavový, teoreticky po každém požadavku (obrázek, soubor) se spojení ukončí a server zapomene, kdo se ho na to ptal pro představu: přestavme si aplikaci, která každému prohlížeči (každému klientovi) vrátí celé číslo z posloupnosti 1, 2,... k serveru se připojí Jirka a aplikace by měla vypsat 1 k serveru se připojí milan a aplikace by měla vypsat 2 k serveru se připojí znovu Jirka a aplikace by měla vypsat jeho 1 web server ale mezitím dávno zapoměl, že byl k němu nějaký Jirka připojen řešení vytvoření sezení (session)

Sezení (sessions) sezení je realizováno obvykle pomocí cookies cookie je technologie, která umožňuje webovým serverům (potažmo m) ukládat na klientovi nějaká data (obvykle malého rozsahu - pár čísel, datum, krátký text) webový prohlížeč pak při každém požadavku tyto cookies posílá zpět na server z důvodů bezpečnosti má každý server právo zapisovat a číst jen svoje hodnoty (nevidí hodnoty jiných serverů)

Sezení (sessions) cookies mohou být také časově omezeny (implicitně do ukončení prohlížeče) pro účely realizace sessions se vytvoří cookie (obvykle nazvaná SessionID, SID nebo podobně) jedinečný identifikátor v rámci celého serveru (velké číslo, nesmí být snadno predikovatelné, aby se nedalo sezení ukrást a pracovat například pod jiným uživatelem/sezením) prohlížeč při dalším pohybu po webové aplikaci SID serveru vrací a ten je schopen přesně identifikovat, o jakého klienta jde

Sezení (sessions) aplikace si obvykle do sezení musí uložit přihlašovací jméno, pod kterým se uživatel přihlásil, jeho nastavení a podobně aby tyto informace neproudily po internetu tam a zpět (protokol HTTP není navíc zabezpečený), tak se tyto informace ukládají na serveru obvykle se použije, sdílená pamět nebo soubory po síti jako cookie putuje pouze jedno velké číslo (SID) jazyk PHP obsahuje funkce pro práci se sezením přímo v sobě, jiné jazyky (Perl, Python) musejí využít nějakou knihovnu (nebo si můžete podporu pro sezení napsat sami)

Jak psát webové aplikace u rozsáhlejších je nutno postupovat rozumně jinak se můžeme dočkat špatně spravovatelného kódu prvním krokem je obvykle volba vhodného jazyka (C/C++, jazyk skriptovací, Java, CSharp) dalším krokem výběr platformy (Zend, Turbogears, Django, Ruby On Rails, CakePHP, Symphony PHP, ASP.NET, JSP, JSF, Struts, Tapestry, Turbine-Velocity/WebMacro, Zope) výběr je také důležitý (konkurenční přístup, replikace, ovladače pro daný jazyk...) velký boom zažívá AJAX (XmlProcedureCall) pokud jej chceme využít, tak je nutno promyslet, jak bude do celé aplikace zapadat, jakou použijeme knihovnu

Jak psát webové aplikace pokud použijete nějaký vkládaný jazyk (PHP, JSP, ASP), není dobré větší aplikaci skládat z vícero samostatných stránek (index.php, login.php, saveemployee.php) aplikace by měla mít jednu vstupní bránu tzv dispečer (dispatch controller, front controller) může to být skript (index.php), nebo nějaká komponenta (Servlet) všechny požadavky pak chodí přes jedno místo je snadné pak přidat například přihlašování, caching, statistiky a podobně

Jak psát webové aplikace data (datovou vrstvu) je vhodné oddělit od logiky v ideálním případě (pokud je to možné) použít datový návrhový vzor DAO (Data Access Object objekt, který zapouzdřuje přístup do ) můžete bud napsat vlastní vrstvu s použitím nízkoúrovňové API daného jazyka (JDBC, Python DB-API... ), nebo využít O-R mapovací knihovnu (SQLObject pro Python, JDO, EJB, TopLink, Hibernate, ibatis pro Javu dnes je čas zvážit i (čistě) objektové (ZopeDB, db4o, Caché) logika by měla stát mimo databázovou vrstvu

Jak psát webové aplikace prezentační část by měla být také oddělena šablony (HTML, XHTML, CSS) obvykle píší designéři, kteří neprogramují (a opačně programátoři zase nedělají design) designéři navíc používají vlastní nástroje pro tvorbu grafiky a designu stránek (Macromedia, Adobe atd) prezentační část musí jít snadno vyměnit proto je vhodné nemíchat tyto tři věci: data (např. nákupní košík, položka), logiku (vložit do košíku, zaplatit) a prezentaci (obrazovka s nákupním košíkem, uvítací obrazovka) dostáváme se na návrhový vzor MODEL-VIEW-CONTROLLER

MVC Model-View-Controller návrh bude pravděpodobně vyhovovat většině MODEL (data), VIEW (šablona), CONTROLLER (rozdělovač, dispečer, vstupní brána aplikace) + front controller přijde požadavek, předsunutý controller rozhodne na základě adresy URL, jakou zavolá akci/objekt/metodu (podle frameworku) běh je předán akci, ta provede danou logiku s modelem, obvykle načte nějaká výsledná data a ta jsou předána šabloně dělení podle toho, zda se data do šablon vtlačují (push) nebo vytahují (pull) Pull MVC, Push MVC

Typy frameworků leckotonážní Ruby On Rails, CakePHP, Symphony, Django, Turbogears, Zope, Snails střednětonážní Webware, Struts, JSP/JSF, Tapestry, Turbine/Velocity, Mono ASP.NET (ASP.NET na Linuxu zatím v plenkách) obchodní (enterprise) webové aplikace jsou v drtivé většině psány v technologiích J2EE (vícevrstvé aplikace), eventuelně různých napodobeninách (Spring Framework) či pomocí technologie ASP.NET 2.0 netradiční přístup Zope, Apache Cocoon dneska je hitem hlavně Java, Python/Ruby, PHP a ASP.NET

co budeme potřebovat? JDK (Java Development Kit) 5.0, vývojové prostředí (dnes populární Netbeans IDE, Eclipse IDE nebo komerční IntelliJ IDEA) java.sun.com webový server (kontejner) Apache Tomcat, Jetty, Resin jakarta.apache.org pokud budeme chtít psát aplikaci v nestandardním frameworku, tak knihovny

proč právě Java pro webové? vysoký výkon přenositelnost snadné nasazení stabilita a robustnost komerční podpora mnoha firem (né jedné)

pojem Servlet, JSP/JSF možno psát jednoduché JSP skripty i robustní MVC aplikace ukázka: Netbeans IDE a jednoduchý JSP projekt ukázka: Netbeans IDE s VWP a JSF projekt

FOSS DB systémy Relační databázové systémy: PostgreSQL MySQL Firebird SQLite Apache Derby

FOSS ODB systémy Objektové a ostatní db systémy: db4o (Java,.NET) Oracle BerekeleyDB (klíč-hodnota, nativní a Java verze) ZopeDB (Python)

tvorba dnes: PHP, Python, Java, ASP.NET pokud zbude čas prezentace Java pro vývojáře.netu diskuse