eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Webová fotogalerie
Olga Budnik
Vedoucí práce:
Ing. Radek Malinský
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Web a multimedia
24. kv¥tna 2012
iv
v
Pod¥kování Tímto bych ráda pod¥kovala vedoucímu své bakalá°ské práce panu Ing. Radku Malinskému za vst°í£ný p°istup, v¥novaný £as a cenné rady, které mi pomohly p°i tvorb¥ této práce. Ráda bych také pod¥kovala své rodin¥ za morální podporu b¥hem studia a moºnost studovat vysokou ²kolu.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
Abstract The subject of this bachelor thesis is the development of an application which allows users to exchange their photos via web pages. In particular, this application allows users to create albums, upload photos and publish them. The communication between users takes place by creating friend relationship. Thus, the users can limit access to their photos and exchange them with their friends only. In order to strengthen semantic and social aspects of the web, the elements of the third parties, i.e. Facebook and Google, were integrated. In whole, the application is easily accessible and user-friendly.
Abstrakt P°edm¥tem této bakalá°ské práce je vytvo°ení aplikace, která umoº¬uje uºivatel·m sdílet svoje fotograe pomocí webových stránek. Uºivatelé mají moºnost vytvá°et alba, do kterých pak budou nahrávat fotograe a ve°ejn¥ je sdílet. Aplikace poskytuje komunikaci mezi uºivateli pomocí vytvá°ení vztah· p°átelství. Díky tomu m·ºe uºivatel omezit p°ístupová práva ke svým fotograím a sdílet je jenom pro své p°átelé. Pro poskytnutí sociálních a sémantických aspekt· webu do aplikace byly integrovány prvky t°etích stran, a to Facebooku a Googlu. Celková aplikace je snadno ovladatelná a pochopitelná kaºdému uºivateli.
Úvod V sou£asné dob¥ se díky své dostupnosti velice roz²i°ují digitální fotoaparáty. Skoro kaºdý £lov¥k vlastní mobilní telefon s integrovaným fotoaparátem. Díky tomu hojn¥ roste zájem o fotografování. Lidé fotografují zajímavé okamºiky svého ºivota, aby v budoucnu m¥li n¥jaké p°íjemné vzpomínky na minulost. Díky tomu má kaºdý na po£íta£i velké mnoºství fotograí, které chce ukázat svým známým, p°íbuzným a kamarád·m. lov¥k pak m·ºe fotograe vytisknout a p°eposílat ostatním, coº je ale náro£né, drahé a zabere to £as. Fotograe lze ale také posílat prost°ednictvím Internetu. Tento zp·sob je ur£it¥ jednodu²²í a rychlej²í, ale p°eposílat kaºdému £lov¥ku stejné fotky ve v¥t²ím po£tu také není ta nejlep²í varianta. Pro usnadn¥ní práce p°icházejí webové fotogalerie. Vybrané fotograe lze nahrát na webové stránky, p°idat k nim n¥jaký popis £i komentá° a sta£í v²em zájemc·m poslat jen odkaz na galerii. Podobných aplikací na Internetu existuje celá °ada. Cílem mé práce bylo vytvo°it a obohatit takovou galerii o dal²í webové prvky a posílit sémantické aspekty této aplikace. Aplikace je propojena s nejpouºívan¥j²í sociální síti Facebook, coº znamená, ºe fotograe se budou ²í°it mezi kamarády uºivatele a jejich známými mimo web samotné galerie. Dal²í d·leºitou vlastností je poskytnutí informací o samotné fotograi, v£etn¥ geo informací, které slouºí k zobrazení fotograí na map¥. Z kaºdé fotograe, po°ízené digitálním fotoaparátem se dají exportovat ur£itá data, tak zvané EXIF data, která v sob¥ obsahují informace o datu po°ízení fotograe, ohniskové vzdálenosti, nastavení clony apod. Takové informace by byly d·leºité t°eba pro zájemce o fotografování a pro fotografy. ást t¥chto dat tvo°í GPS data, která poskytují sou°adnice místa, kde byla daná fotograe po°ízena. Pomocí t¥chto sou°adnic se dá snadno zobrazit konkrétní pozice na map¥. V dané práci byla pouºitá mapa poskytnuta Google Maps.
1
2
KAPITOLA 1.
ÚVOD
Kapitola 2
Existující webové fotogalerie V této kapitole jsou popsané jiº existující webové fotogalerie, jejich základní vlastnosti a práce s nimi. Na konci je provedeno hodnocení a analýza,podle které se ur£í hlavní vlastnosti a poºadavky na fotogalerii.
2.1 Raj£e Nejpouºívan¥j²í a nejpopulárn¥j²í £eská webová fotogalerie je Raj£e.
1 Hned na úvodní stránce
je uveden odkaz na návod k práci s fotogalerií, který popisuje, co je pot°eba ud¥lat pro p°idávání fotograí do galerie. Pro práci s fotogalerií Raj£e se uºivatel musí nejd°íve zaregistrovat a p°ihlásit. Po p°ihlá²ení je uºivateli dostupná moºnost nahrávání fotograí. Fotograe je moºné nahrávat bu¤ p°ímo p°es stránky galerie, nebo je moºné stáhnout speciální program, který poslouºí pro úpravu alb a fotograí. Tento program je ale pot°eba nainstalovat, coº pat°í spí²e do nevýhod aplikace. Po zaloºení u£tu a p°ihlá²ení uºivatel zaloºí sv·j první album. Hned p°i vytvo°ení m·ºe nastavit p°ístupová práva a skrýt album pro ve°ejnost. Po vytvo°ení alba je do n¥j moºné nahrávat fotograe. Raj£e umoº¬uje hromadné nahrávání soubor·. Fotograe se p°i nahrávání zmen²í a nejde ji pak získat v p·vodní kvalit¥. Poté lze fotograe a alba libovoln¥ upravovat, nastavovat jim klí£ová slova, p°idávat popisky k fotograím apod. Uºivatelé mohou k fotograím p°idávat komentá°e, ozna£ovat alba a autory jako oblíbené a poté sledovat jejich aktuality. Album £i fotograi také lze sdílet pomocí Facebooku
2 nebo Twitteru 3 . Aplikace také umoº¬uje výpis metadat ke kaºdé fotograi.
K vyhledávání fotograí slouºí klí£ová slova, která se ale p°idávají k alb·m, ne k jednotlivým fotograím.
2.2 Picasa Picasa
4 je sluºba poskytovaná Googlem 5 pro v²echny své uºivatele. Je to sv¥toznámá a velice
pouºívaná aplikace, slouºící pro sdílení fotograí. Pro pouºívání galerie je pot°eba mít ú£et
Raj£e webová fotogalerie http://www.rajce.idnes.cz/ Facebook sociální sí´ http://www.facebook.com/ 3 Twitter sociální sí´ https://twitter.com/ 4 Picasa webová fotogalerie http://picasa.google.com/ 5 Google - internetová spole£nost http://www.google.com/ 1 2
3
4
KAPITOLA 2.
EXISTUJÍCÍ WEBOVÉ FOTOGALERIE
na Googlu, pomocí kterého se uºivatel p°ihlásí do galerie. Stejn¥ jako u fotogalerie Raj£e lze fotograe nahrávat p°ímo p°es webové stránky nebo pomocí desktopové aplikace. Je tu také moºnost nastavení soukromí alb. Fotograe a alba lze upravovat, komentovat, sdílet a hodnotit. U kaºdé fotograe se evidují informací získané z EXIF
6 souboru, pokud tato
data obsahuje. K fotograi lze p°idat klí£ová slova neboli tagy a také ozna£it fotograi na map¥.
2.3 Facebook fotoalba Facebook je nejznám¥j²í sociální sí´, která krom¥ komunikace mezi uºivateli poskytuje spoustu dal²ích zajímavých a uºite£ných sluºeb. Jednou z nich je sdílení fotograí. Uºivatel musí být registrován na Facebooku, poté m·ºe vyuºívat v²ech jeho sluºeb. Fotograe se p°idávají do alb stejn¥ jako u ostatních galerií. Album se vytvo°í b¥hem nahrávání fotograí a v²echny nastavení lze provést v jednom kroku. Facebook poskytuje mnoho moºností pro nastavení p°ístupových práv. Krom¥ klasických práv, která umoº¬ují p°ístupnost v²em, pouze mn¥ nebo jen pro p°átele, lze nastavit i ur£itý seznam uºivatel·, kte°í budou mít moºnost album zobrazit. Na kaºdé fotograi lze ozna£it uºivatele, kte°í jsou na ni zobrazeni. K fotograi lze p°idat popis a ozna£it ji na map¥. K fotograím mohou uºivatele psát komentá°e a sdílet ji pro své p°átele.
2.4 Zhodnocení Popisované galerie ur£it¥ nejsou jediné, které jsou uºivatel·m na internetu dostupné. Existuje i spousta dal²ích systému, lépe £i h·°e povedených. P°esto má v¥t²ina galerií stejný základ. Po registraci se uºivateli p°id¥lí ur£itý prostor, ve kterém m·ºe vytvá°et alba a nahrávat do nich fotograe. K fotograím pak m·ºe p°idat popisek a klí£ová slova. Ostatní uºivatelé mají moºnost fotograe prohlíºet a komentovat. Uºivatel p°ípadn¥ m·ºe omezit p°ístup ke svým fotograím a zobrazit je pouze p°átel·m £i vybraným skupinám lidí. Je dobré také evidovat u fotograí EXIF metadata, která jsou podrobn¥ji popsána v kapitole 3.7.2. Fotograi by m¥lo být moºné zobrazit na map¥. Na základ¥ provedené re²er²e vznikly ur£ité poºadavky, popsané v kapitolách 3.1 a 3.2.
6
Exchangeable Image File Format
Kapitola 3
Analýza a návrh °e²ení Tato kapitola popisuje analýzu a návrh °e²ení aplikace. Jsou v ní popsané základní poºadavky uºivatel· a systému, p°ípady uºití, pouºité technologie a frameworky. Také obsahuje krátký teoretický úvod o technologii Open Graph a EXIF datech.
3.1 Poºadavky uºivatel· Hlavní vlastnosti, které uºivatelé vyºadují od stránek, jsou p°ehlednost, rychlost a intuitivní ovládání. U fotogalerií je navíc d·leºité mít moºnost hromadného nahrávání fotograí. V¥t²ina uºivatel· chce p°idávat více fotograí do webového alba najednou. Musí být zaji²t¥na komunikace mezi uºivateli v podob¥ psaní komentá°· a hodnocení fotograí. Uºivatel m·ºe p°idávat jiné uºivatele do p°átel, pokud tak u£iní, novému p°íteli se otev°ou dosud pro ve°ejnost neviditelná alba. Uºivatel by m¥l mít moºnost alba a fotograe upravovat, kontrolovat k nim vztaºené komentá°e od jiných uºivatel·. O záznam informací o fotograi se uºivatel nemusí starat. V²echny pot°ebné informace za n¥j vypí²e systém pomocí extrahování dat z EXIF sekce fotograe. Uºivatel má mít také moºnost libovoln¥ editovat sv·j prol a nastavit si úrove¬ sdílení svých dat, a to bu¤ sdílet o sob¥ jenom základní informace, jakými jsou jméno a p°íjmení, nebo podrobn¥ji popsat svoje zájmy a záliby ve fotografování. M·ºe také p°idat více informací o sob¥ a uvést i n¥jaké kontakty.
3.2 Poºadavky systému Poºadavky systému se d¥lí na funk£ní a nefunk£ní neboli obecné a slouºí k zachycení chování aplikace. Funk£ní poºadavky popisují, co bude aplikace umoº¬ovat. Nefunk£ní poºadavky popisují návrhovou £ást, omezení a nároky kladené na samotnou aplikaci nebo systém.
3.2.1 Funk£ní poºadavky •
Vytvo°ení a správa uºivatelského ú£tu.
•
Vytvo°ení, správa a prezentace alb.
5
6
KAPITOLA 3.
ANALÝZA A NÁVRH EENÍ
•
Nahrávání více fotograí najednou.
•
Vytvá°ení náhled· k fotograím.
•
Ukládání fotograí v r·zném rozli²ení.
•
Vytvo°ení vztahu mezi uºivateli.
•
Nastavení p°ístupnosti alb a omezení.
•
P°idávání komentá°· a hodnocení.
•
Kontrola nevhodných komentá°· a fotograí.
•
Ukládání informací o fotograích a jejich následující zpracování.
•
azení fotograí do kategorií.
•
Propojení aplikace s t°etími stranami.
3.2.2 Nefunk£ní poºadavky •
Podpora £e²tiny.
•
Funk£nost aplikace ve v²ech prohlíºe£ích poslední verze.
3.3 Uºivatelské role •
Nep°ihlá²ený uºivatel. Uºivatel, který není registrován nebo se nep°ihlásil do aplikace pomocí svých p°ihla²ovacích údaj·. M·ºe procházet stránkami a prohlíºet si proly a fotograe uºivatel·, které jsou ve°ejné. Je pro n¥j také dostupné vyhledávání fotograí a m·ºe také n¥jakou fotograi nahlásit jako nevhodnou. Takto ozna£ená fotograe poté projde kontrolou administrátora. Nep°ihlá²ený uºivatel má moºnost se p°ihlásit £i zaregistrovat.
•
P°ihlá²ený uºivatel. Je uºivatel, který si na stránkách zaregistroval a p°ihlásil se. Jsou mu umoºn¥ny stejné p°ípady uºití jako nep°ihlá²enému uºivateli, ale navíc m·ºe nahrávat fotograe, editovat svoje alba a nastavovat k nim práva p°ístupu, editovat sv·j prol, p°idávat jiné uºivatele do p°átel, komentovat a hodnotit jejich fotograe.
•
Administrátor. Administrátor je v podstat¥ správce celé galerie. Odpovídá za editaci obsah·, kontroluje obsah komentá°· na nevhodná, sprostá slova, p°ípadn¥ je maºe. Kontroluje fotograe, jestli se na nich neobjevuje nevhodný obsah £i jestli neporu²ují autorská práva. Pokud ano, m·ºe takové fotograe smazat.
3.4.
7
PÍPADY UITÍ
3.4 P°ípady uºití Diagram p°ípad· uºití slouºí k popisu chování aplikace na základ¥ operací provád¥ných uºivatelem. Je rozd¥len podle uºivatelských rolí a odpovídá jednotlivým akcím uºivatele. Na obrázku 3.1 je znázorn¥n diagram p°ípad· uºití pro v²echny uºivatele. Nep°ihlá²ený uºivatel se m·ºe zaregistrovat, p°i£emº je po registraci rovnou p°ihlá²en. Tomu odpovídá ²ipka include na diagramu. Include znamená, ºe akce se musí v kaºdém p°ípad¥ provést. P°ihlá²ený uºivatel stejn¥ m·ºe jako nep°ihlá²ený uºivatel vyhledávat fotograe. Sou£ástí tohoto p°ípadu uºití m·ºe fotograe prohlíºet. Odli²nost od nep°ihlá²eného uºivatele je v moºnosti p°idávání komentá°· nebo ud¥lení hodnocení. T¥mto dv¥ma p°ípad·m uºití odpovídá ²ipka extend na diagramu, coº znamená, ºe akce m·ºe, ale nemusí být provedena. Extend je také pouºíván i v dal²ích p°ípadech uºití. P°ihlá²ený a nep°ihlá²ený uºivatel si m·ºe prohlíºet prol jiného uºivatele, p°ihlá²ený uºivatel ho navíc m·ºe p°idat do p°átel. P°ihlá²ený uºivatel si m·ºe zaloºit album, do kterého pak m·ºe p°idat fotograe. Ke kaºdé fotograi m·ºe p°idat název, popisek a klí£ová slova. P°ihlá²ený uºivatel a administrátor mají n¥které p°ípady uºití spole£né. Mohou mazat fotograe a komentá°e, které p°edtím vybrali. P°ihlá²ený uºivatel má také moºnost smazat celé album a nahlásit nevhodnou fotograi, která pak bude zkontrolována administrátorem. M·ºe také upravovat sv·j prol a editovat osobní informace. P°ihlá²ený uºivatel a administrátor se mohou ze systému odhlásit.
3.5 Pouºité technologie V této kapitole jsou podrobn¥ rozebrány technologie pouºité p°i tvorb¥ aplikace.
3.5.1 PHP PHP
1 skriptovací jazyk pro v²eobecné ú£ely programování, který se zna£n¥ pouºívá pro
vývoj webových aplikací a skriptovaní na stran¥ serveru [11]. V sou£asné dob¥ je podporován p°eváºnou v¥t²inou poskytovatel· hosting· a pat°í mezi lídry programovacích jazyk·, které se pouºívají k programování dynamických webových stránek. PHP pouºívají stovky tisíc vývojá°· a jsou na n¥m postaveny nejv¥t²í webové projekty, p°íkladem mohou slouºit Facebook a Wikipedia. Svoji popularitu v oblasti skriptovacích jazyk· PHP získalo díky své jednoduchosti, rychlosti, výkonu a bohaté funk£nosti a také existenci velké sady vestav¥ných nástroj· pro vývoj webových aplikací. PHP podporuje v¥t²ina opera£ních systém·, v£etn¥ Linuxu a mnohých modikací Unixu, a je do n¥j za°azena podpora v¥t²iny webových server·. PHP generuje nejenom HTML stránky, ale také obrázky, PDF
2
3 soubory a dokonce i ash animace. Dal²í výhodou jazyka je
spolupráce s velkým mnoºstvím databázových systém· (nap°. MySQL, SQLite, PostgreSQL,
PHP: Hypertext Preprocessor HyperText Markup Language 3 Portable Document Format 1 2
8
KAPITOLA 3.
ANALÝZA A NÁVRH EENÍ
Obrázek 3.1: Diagram p°ípad· uºití
3.5.
POUITÉ TECHNOLOGIE
Oracle, ODBC
9
4 a spousta dal²ích). PHP také podporuje objektov¥ orientované programo-
vání, jehoº plná podpora byla zavedena aº od páté verze.
3.5.2 JavaScript JavaScript je objektov¥ orientovaný skriptovací jazyk [2]. Pomáhá vytvá°et internetové stránky ºivými. Je nej£ast¥ji pouºíván, jako vestav¥ný jazyk pro p°istup k jednotlivým objekt·m aplikace. Pouºívá se na stran¥ klienta (v prohlíºe£i uºivatele). Skript se p°ipojuje p°ímo k HTML dokumentu a spou²tí se hned po na£tení stránky. JavaScript umoº¬uje spoustu v¥cí, nap°íklad p°idávat £i mazat HTML tagy, m¥nit styly element·, reagovat na události provád¥né uºivatelem, dynamicky ov¥°ovat data od uºivatele na validnost bez odesílání na server a mnoho dal²ího. JavaScript je rychlý a výkonný jazyk, ale má i n¥která omezení. Neumí £íst a nahrávat soubory na lokální disk, nem·ºe spou²t¥t instalaci jakýchkoliv program·, a to z d·vodu bezpe£nosti uºivatele, aby úto£ník nemohl získat p°ístup k osobním dat·m uºivatele nebo po²kodit data na jeho po£íta£i.
3.5.2.1
JQuery
JQuery je knihovna zaloºená na spolupráci JavaScriptu a HTML. Umoº¬uje snadný p°ístup k element·m DOM s Ajaxem
6.
5 a následnou práci s nimi. Má také propracované rozhrání pro práci
3.5.3 Ajax Ajax je sada technik pro vývoj rozhraní, která umoº¬uje dynamicky posílat poºadavky na server bez viditelného znovu na£tení stránky, £ili uºivatel neví, ºe jeho prohlíºe£ ºádá £i posílá n¥jaká data [8]. To znamená, ºe probíhá asynchronní komunikace mezi klientem a serverem. Hlavní výhody Ajaxu:
•
et°í provoz díky tomu, ºe se na£ítá jenom jedna zm¥n¥ná £ást stránky, v¥t²inou ne moc velká.
•
Sniºuje zatíºení serveru.
•
Zrychluje práci rozhraní a tím pádem uºivatel m·ºe rychleji vid¥t výsledek provedených zm¥n.
Tato technologie se stala nejvíce populární zejména po její vyuºití spole£ností Google (nap°íklad v Google Maps
7 ).
Open Database Connectivity Document Object Model 6 Asynchronous Javascript and XML 7 http://maps.google.com/ 4 5
10
KAPITOLA 3.
ANALÝZA A NÁVRH EENÍ
3.5.4 HTML HTML je standardní zna£kovací jazyk dokument· ve World Wide Web [14]. V¥t²ina webových stránek je vytvo°ena pomocí tohoto jazyka. HTML dokument ur£uje, jak a jaké elementy mají být zobrazené na HTML stránce. Internetový prohlíºe£ pak tento dokument zpracuje a zobrazí stránku v £itelné podob¥. Od poslední verze 4.01 se v HTML jasn¥ odd¥lují sémantika jednotlivých £ásti webu od jejich vzhledu. Vzhled stránek se musí upravovat pomocí technologii CSS
8.
V sou£asné dob¥ se také pouºívá nová verze HTML 5, která je ale stále ve vývoji. Jejím hlavním cílem je zlep²it jazyk pomocí p°idání nových uºite£ných tag·, roz²í°ení o podporu multimediálních aplikací a oine aplikací [10]. Posiluje sémantickou stranu webové aplikace. Zahrnuje HTML 4 a JavaScript. Tento standard je £áste£n¥ podporován posledními verzemi prohlíºe£·.
3.5.5 CSS CSS je formální jazyk, který se pouºívá pro popis vzhledu dokumentu, napsaného v zna£kovacím jazyce. Popisuje tedy vzhled HTML, XHTML
9 a XML 10 dokument·. V podstat¥ je
to sada parametr· formátování, která se aplikuje na elementy dokumentu za ú£elem zm¥ny jejich vzhledu [13]. CSS pouºívají tv·rci webových stránek pro úpravu vzhledu stránek. Pomocí CSS se dají m¥nit barvy, nastavovat r·zná písma, m¥nit rozmíst¥ní jednotlivých blok· na stránce apod. CSS umoº¬uje vytvá°et tentýº dokument v r·zných vzhledech nebo pro r·zné výstupy, nap°íklad, odli²ný výstup pro obrazovku a pro tiskárnu. CSS se výborn¥ hodí k odd¥lení logické £ásti aplikace od jejího zobrazení. Díky CSS se zkracuje £as na£ítání stránky, protoºe pravidla zobrazení dat se posouvají do samostatného CSS souboru. Pro p°ípadnou zm¥nu není pot°eba m¥nit celou stránku, sta£í zm¥nit pouze kaskádový styl. CSS umoº¬uje r·zné zp·soby °azení do bloku a následujícího formátování, nap°íklad obtékaní bloku s menu stránky. Poslední verze CSS, která je stále ve vývoji, je CSS 3. Je hodn¥ roz²í°ená v porovnání s p°edchozími verzemi a obsahuje spoustu novinek, které umoº¬ují vytvá°et stránky s je²t¥ lep²ím vzhledem. CSS ale má i svoji nevýhodu a to r·zné zobrazení v r·zných prohlíºe£ích, zejména v jejich star²ích verzích.
3.5.6 MySQL MySQL je multiplatformní rela£ní databázový systém, se kterým se komunikuje pomocí dotazovacího jazyka SQL
11 . V¥t²inou se pouºívá jako server, na který se obracejí jak lokální
tak i vzdálené klienti. MySQL podporuje velké mnoºství typu tabulek, nap°íklad MyISAM a InnoDB.
Cascading Style Sheets Extensible Hypertext Markup Language 10 eXtensible Markup Language 11 Structured Query Language 8 9
3.6.
11
POUITÉ FRAMEWORKY
3.6 Pouºité frameworky Tato kapitola obsahuje teoretický rozbor pouºitých framework·, pro£ byly vybrány a v £em je jich výhoda.
3.6.1 RedBeanPHP ORM
12 je programovací technologie, která spojuje databáze s objektov¥ orientovaným pro-
gramováním a vytvá°í tím virtuální objektovou databázi. Hlavním cílem ORM je transformace objekt· aplikace do podoby vhodné pro ukládání do rela£ní databáze a také transformace rela£ního modelu do objektového s uloºením vlastností objekt· a vztahu mezi nimi [4]. Existují r·zné frameworky pro práci s ORM. RedBeanPHP
13 je jedním z nich. Jak °í-
kají jeho vývojá°i, modelování dat musí být snadné, hbité a navíc zábavné [22]. Na rozdíl od základních ORM framework·, jako je nap°íklad Doctrine
14 , RedBeanPHP nepot°ebuje
manuální konguraci objekt·. Tento Framework vytvá°í on the y tabulky, pole a indexy. RedBeanPHP umoº¬uje denovat modely, kdykoli bude pot°eba. Framework snadno propojí libovolný objekt s jiným objektem. Mezi databázovými systémy, které framework podporuje, pat°í MySQL, SQLite a Postgres. Navíc je to open source knihovna s dob°e napsanou dokumentací a obsahuje jenom jeden soubor se v²emi pot°ebnými funkcemi.
3.6.2 Nette Framework P°i programování bakalá°ské práce byl pouºít PHP framework, který výrazn¥ zrychlíl vývoj aplikace. Rozhodovalo se mezi t¥mito £ty°mi frameworky: Zend Framework
15 , CakePHP
16 , CodeIgniter 17 a Nette Framework 18 . V²echny zmín¥né frameworky jsou mezi sebou 19 model, podporují práci podobné v n¥kterých základních v¥cech, nap°íklad realizují MVC s r·znými databázovými systémy a jsou open source. Pro ú£ely této práce byl zvolen Nette Framework. Hlavním rozhodujícím kritériem bylo to, ºe je framework napsán £eským programátorem, a proto má £eskou dokumentaci s kompletní £eskou podporou. Obsahuje také spoustu uºite£ných plugin·
20 , má své fórum 21 , na
kterém se vývojá° m·ºe ptát na cokoliv a v pom¥rn¥ krátké dob¥ dostane odpov¥¤ a jsou k n¥mu i video návody a p°edná²ky v £e²tin¥ [20]. Dal²í výhoda je pouºití ladicích nástroj·, které pomáhají odhalit a o²et°it jakékoliv chyby. Bezpe£nost je také na vysoké úrovni. Nette Framework má ochranu nap°íklad proti XSS
23 útok·m, session hackingu a podobn¥. Je pln¥ objektový a vyuºívá vlastní ²ablo-
novací systém. Nette Framework je nejpopulárn¥j²í a nejpouºívan¥j²í framework v eské Republice, a dokonce jsou v n¥m vytvo°ené i stránky £eského prezidenta.
3.7 Teoretická informace Tato kapitola p°edstavuje krátký teoretický úvod. Jsou v ní popsány základní pojmy, které jsou nutné k pochopení této práce.
3.7.1 Sémantický web Za posledních n¥kolik let se web velice rychle vyvíjel. Nyní je zapln¥n informacemi. Díky jeho popularit¥ roste i objem p°ená²ených dat. V sou£asné dob¥ není formát p°edstavení informací optimalizovaný pro vyhledávací mechanismy a prohlíºe£e. Kv·li tomu nastávají komplikace p°i vyhledávání pot°ebné informace a obnovení databází vyhledávácích systému je neefektivní [3]. Jako °e²ení p°ichází sémantický web, coº je nová technologie zp·sobu poskytování informací na internetu v podob¥, která je vhodná pro strojové zpracování. Jeho cílem je strukturovat informace a usnadnit vyhledávání a zpracovávání dat. Podle tv·rc· musí sémantický web zajistit pochopení informací po£íta£i. Poté po£íta£ dle ur£itých kritérií vybere nejvhodn¥j²í data a nakonec poskytne informace uºivatel·m. Tímto zp·sobem se místo analýzy textového obsahu pouºívá speciální standard RDF
24 , popisující sémantické grafy, které ob-
sahují mezi sebou propojené uzly (objekty). P°íkladem takového sémantického grafu m·ºe slouºit Facebook Open Graph popsaný v kapitole 3.7.3.
3.7.2 EXIF data EXIF je standard, který umoº¬uje p°idávat k obrázk·m a dal²ím multimediálním soubor·m bliº²í informace (metadata) [9]. Tyto informace podrobn¥ji popisují soubor, nap°íklad datum vytvo°ení, pouºité podmínky, autorství apod.EXIF standard za£al být velice pouºívaný díky roz²i°ování digitálních fotoaparát·, které automaticky p°idávají do fotograí metadata. Poslední verze standardu je EXIF 2.2. Zahrnuje technologii automatického spravování barev a zpracování obrazu v souladu s nastavením p°i natá£ení £i fotografování pro následující tisk a zobrazení na displeji. Textová £ást sekce EXIF souboru popisuje ur£itý parametr a jeho hodnotu. Tato data lze poté získat pomocí r·zných nástroj· a program· a pouºit podle vlastních pot°eb. Také obsahuje i GPS
25 záznam o míst¥, kde byla fotograe po°ízena. Aby fotoaparát p°idal
k fotograi GPS data, je nutné, aby m¥l v sob¥ zabudovaný anebo externí GPS modul, který musí být v okamºiku fotografování zapnutý.
Cross Site Request Forgery Resource Description Framework 25 Global Positioning System
23
24
3.7.
TEORETICKÁ INFORMACE
13
3.7.3 Open Graph Open Graph je sociální pavu£ina, která spojuje uºivatele v jedinou sí´ a zahrnuje jejich zájmy, záliby a aktivity. Open Graph umoº¬uje aplikacím modelovat uºivatelské aktivity na základ¥ objekt·. Objektem se jeví n¥co, nad £ímº se provádí n¥jaká akce (aktivita). Objektem m·ºe být nap°íklad stránka [16]. Nejznám¥j²ím p°íkladem pouºití Open Graphu je sociální sí´ Facebook, která poskytuje vývojá°·m sadu nástroj· pro vytvo°ení vlastních objekt· a aktivit. Facebook Open Graph je znázorn¥n na obrázku 3.2.Jakmile se uºivatel p°ípojí k aplikaci, v²echny události spojené s p°ipojením se budou zobrazovat na jeho Facebook prolu a ostatní uºivatelé je mohou sledovat. Open Graph je zaloºen na Open Graph protokolu. Open Graph
Obrázek 3.2: Facebook Open Graph
protokol umoº¬uje p°ipojit webové stránky do sociálního grafu [18]. Aby se toto p°ipojení uskute£nilo, je pot°eba dodat meta tagy do stránky, které z ní vytvo°í uzel Open Graphu a také p°idat tla£ítko líbí se na webové stránky. Po kliknutí na toto tla£ítko se naváºe kontakt mezi stránkou webu a Facebook stránkou uºivatele, který na tla£ítko kliknul.
14
KAPITOLA 3.
ANALÝZA A NÁVRH EENÍ
Kapitola 4
Implementace V kapitole je popsána implementace aplikace. Popisuje vývojové prost°edí, strukturu aplikace, databázový model a práci s databází pomocí ORM frameworku RedBeanPHP. Kapitola zahrnuje popis implementace nejd·leºit¥j²ích £ásti webu, integraci s t°etími stranami a °e²ení vzniklých problém·.
4.1 Vývojové prost°edí Existuje spousta r·zných editor· a vývojových prost°edí, které umoº¬ují programování v PHP. Jedním z nich je Netbeans IDE
1 , které bylo pouºito i p°i vývoji této aplikace. Jako
jeho výhody m·ºeme jmenovat tvorbu p°ehledného kódu, umoºn¥ní napovídání, zobrazení PHP dokumentace a o²et°ení chyb.
4.2 Struktura aplikace 4.2.1 MVC MVC je návrhový vzor slouºící pro odd¥lení datového modelu, uºivatelského rozhrání a aplika£ní logiky. Na obrázku 4.1 je znázorn¥na struktura MVC aplikace. Model obsahuje data, nap°íklad získané z databáze, a metody práce s nimi. Reaguje na dotazy a v souvislosti s nimi m¥ní sv·j stav. Získaná data posílá dál. Model neobsahuje informací o tom, jak se data zobrazují. View neboli pohled slouºí pro zobrazení dat a stavu modelu v jasné a srozumitelné podob¥ uºivateli. Pomocí View nelze p°ímo m¥nit data. K tomuto ú£elu slouºí komponenta Controller. Controller neboli °adi£ je prost°edek, s jehoº pomocí uºivatel komunikuje se systémem. Je také °ídícím elementem slouºícím pro vým¥nu dat mezi modelem a pohledem. Controller p°ijme poºadavek uºivatele, zpracuje ho a po²le dotaz na model. Tím získá pot°ebná data a p°edá je pro vykreslování pohledu. V Nette Frameworku je obdobou Controlleru Presenter. 1
http://netbeans.org/
15
16
KAPITOLA 4.
IMPLEMENTACE
Obrázek 4.1: Struktura MVC aplikace
Pohled a °adi£ jsou závislé na modelu, ale model na nich závislý není. Toto umoº¬uje rozd¥lení architektury do t°ech vrstev. Model se staví nezávisle od vizuálního p°edstavení a také m·ºe existovat n¥kolik pohled· pro stejný model. Soubory obsahující modely a presentery mají p°íponu *.php a obsahují t°ídy s názvem odpovídajícím názv·m model· nebo presenter·. Pro zobrazení dat v Nette slouºí ²ablonovací systém Latte, který usnad¬uje vykreslování dat do HTML stránky pomocí pouºití takzvaných maker. Tyto soubory mají p°íponu *.latte. ablonovací systém Latte a práce s ním je podrobn¥ji popsán ve podkapitole 4.2.4. V systému jsou evidované dva modely. Model Model slouºí pro zpracování poºadavk· od uºivatele, model AdminModel zpracovává poºadavky administrátora.
4.2.2 Kongurace a spou²t¥ní Nette O konguraci se stará soubor cong.ini, ve kterém se nastavují prom¥nné, sluºby a parametry p°ipojení databáze. Ukázka nastavení databáze:
1 2 3
db . dsn=" mysql : h o s t=l o c a l h o s t ; dbname=g a l l e r y " db . u s e r=" r o o t " db . p a s s=" " V²echny poºadavky prohlíºe£e jdou p°es soubor index.php. Ten se nachází v p°ístupném adresá°i a obsahuje hlavn¥ konstanty nastavující cesty k adresá°·m aplikace. Posledním °ádkem se p°idá °ízení aplikace do souboru bootstrap.php. Soubor bootstrap.php slouºí ke spu²t¥ní aplikace. Na£te se v n¥m samotný framework, loadery a Lad¥nka, nastaví se routování, vytvo°í se p°ipojení k databázi a denují se základní modely. Jako první se na£te framework, pak RobotLoader. T°ída RobotLoader zaji²´uje automatické na£ítání v²ech zdrojových soubor· a t°íd podle pot°eby. Pak se z na£teného kongura£ního souboru získají údaje pot°ebné k p°ipojení k databázi. Tyto parametry jsou p°edané metod¥
setup()
RedBeanPHP a vytvo°í se spojení s databází. Dále se nastaví
routování, jako výchozí stránka se nastaví stránka Homepage s akci slouºí k p°eloºení HTTP
default().
Routování
2 poºadavku do podoby, které bude rozum¥t framework. Pomocí
routování se ur£í, který Presenter má poºadavek zpracovat. Stejn¥ tak vybere i metodu v£etn¥ vstupních parametr·. Nakonec se celá aplikace spustí pomocí p°íkazu 2
Hyper Text Transfer Protocol
$application->run().
4.2.
17
STRUKTURA APLIKACE
4.2.3 Metody presenteru V presenteru se dájí vytvá°et t°i typy metod, t¥mi jsou Metoda render se deklaruje jako
action(), handler()
a
render().
renderView(), kde view je název ²ablony. Tato metoda je
pouºívaná nej£ast¥ji a slouºí pouze pro p°edání dat ²ablon¥ a jejich následnému vykreslování. Jednoduchým p°íkladem slouºí funkce pro vypsání nov¥ p°idaných fotograí.
1 2 3
f u n c t i o n renderNewPhotos ( ) { $ t h i s −>template −>p h o t o s = $ t h i s −>model−>showNewPhotos ( ) ; }
$photos, do které se p°idá pole hodnot získané z databáze. Metoda action je deklarována jako action() a podobá se metod¥ render(). Na rozdíl od ní je ale ur£ena jen pro zpracování poºadavku p°ijatých od uºivatele, ablon¥ NewPhotos se nastaví prom¥nná
ale nic nevypisuje a nevykresluje. Pouºívá se nap°íklad pro p°ihlá²ení nebo odhlá²ení uºivatele. Metoda
action()
render()
a jde v ní nastavit p°esm¥rování
handle<Signal>()
a slouºí pro zpracovávání signál·
se volá d°ív neº metoda
na jiný pohled. Metoda handle je deklarována jako
neboli událostí, které musejí být provedené bez znovuna£tení pohledu. V¥t²inou je pouºita pro zpracování AJAX poºadavk·.
4.2.4 ablonovací systém Latte Jak jiº bylo zmín¥no, Nette vyuºívá vlastní ²ablonovací systém. Jeho výhodou je, ºe umoº¬uje snadno a rychle pracovat s prom¥nnými uvnit° ²ablon. Vloºené prom¥nné se automaticky escapují
3 , coº p°iná²í zabezpe£ení proti útok·m XSS. Vývojá° uº nemusí p°idávat jinou
ochranu proti t¥mto útok·m. Hlavní ²ablona, která obsahuje prvky spole£né pro v²echny ostatní stránky, se nazývá layout.latte. Je v ní denována HTML hlavi£ka, p°ipojuje se hlavní JavaScript soubory a vytvá°í se spole£ná HTML kostra. Bloky, které se budou m¥nit v závislosti na stránce, jsou indikovány pomocí sloºených závorek, do kterých se vloºí název bloku. Nap°íklad pro vloºení bloku content, který bude odpovídat hlavnímu obsahu stránky, slouºí p°íkaz
#content}.
{include
Analogicky se vkládají i prom¥nné získané z presenteru, podmínky a cykly.
Kaºdé stránce webu musí odpovídat jedna ²ablona. Kaºdý presenter ale m·ºe pracovat s více ²ablonami. Pro práci s fotograí slouºí nap°íklad presenter PhotoPresenter, kterému odpovídají r·zné ²ablony, nap°íklad ²ablona NewPhotos pro p°idání fotograí a ²ablona Photo pro zobrazení jednotlivé fotograe. Odkaz na presenter se vytvo°í pomocí následujícího p°íkazu:
Editovat Album:editAlbum je odkaz na metodu tod¥ p°idává parametr
$id_album,
editAlbum()
presenteru Photo, p°itom se me-
odpovídající ID alba. Vygenerovaný odkaz bude mít po-
dobu relativní cesty. 3
Escapování - p°evedení znak· majících speciální význam na jiné odpovídající sekvence.
18
KAPITOLA 4.
IMPLEMENTACE
4.3 Pouºívání HTML 5 P°i tvorb¥ aplikace byl pouºit jazyk HTML5, který slouºí k posílení sémantických aspekt· webu. HTML je p°eváºn¥ pouºíván p°i tvorb¥ struktury stránky. V HTML5 se objevily nové elementy, které slouºí pro nahrazování element·
4
s atributy
class nebo id.
Na rozdíl od HTML4 se pouºití nových element· denuje obsahem dokumentu, namísto jeho vn¥j²í reprezentace. Elementy typu
v sob¥ nemají ºádnou sémantiku. Nové elementy
HTML5 poskytují prohlíºe£·m konkrétní informaci o tom, kde a co se na stránce nachází.
je . Takové objevení doctype je krat²í a p°ehledn¥j²í
HTML5 dokument má rozdílnou denici. Na za£átku dokumentu p°ed tagem nutné uvést pouze °ádek
a hlavn¥ p°epíná reºim na standardní ve v²ech moderních prohlíºe£ích. V prohlíºe£i se ve standardním reºimu snaºí zobrazovat dokumenty v souladu se zadanou specikací [7]. Nyní budou popsány základní HTML5 tagy pouºité p°i tvorb¥ aplikace. Tag
odpovídá záhlaví stránky nebo její £ásti. Krom¥ záhlaví m·ºe obsahovat
logotyp, naviga£ní menu nebo vyhledávácí formulá°.