Bankovní institut vysoká škola Praha Katedra matematiky, statistiky a informačních technologií
Web 2.0
Bakalářská práce
Autor:
Kamila Hermannová Informační technologie, manažer projektů IS
Vedoucí práce:
Praha
PhDr. Ing. Antonín Pavlíček, Ph.D.
Duben 2012
Prohlášení: Prohlašuji, že jsem bakalářskou práci zpracovala samostatně a v seznamu uvedla veškerou použitou literaturu. Svým podpisem stvrzuji, že odevzdaná elektronická podoba práce je identická s její tištěnou verzí, a jsem seznámena se skutečností, že se práce bude archivovat v knihovně BIVŠ a dále bude zpřístupněna třetím osobám prostřednictvím interní databáze elektronických vysokoškolských prací.
V Praze dne 22. 4. 2012
Kamila Hermannová
Poděkování Ráda bych poděkovala vedoucímu práce PhDr. Ing. konzultace a cenné připomínky.
Antonínu Pavlíčkovi, Ph.D. za
Anotace práce Řazení kapitol práce odpovídá třem různým pohledům na Web 2.0 aplikace. Nejdříve je Web 2.0 nahlížen z pohledu jeho charakteristických rysů. Dále jsou vyextrahovány základní kategorie Web 2.0 aplikací z hlediska jejich obsahu a tématiky. U každé kategorie jsou podrobněji popsány konkrétní ukázkové systémy provozované na dnešním webu. Následující část je věnována zmapování nástrojů a technologií spojených s vývojem Web 2.0 aplikací. V poslední části je na praktickém návrhu řešení reálného problému představen Web 2.0 v komplexnějším pohledu coby integrovaná část většího celku. Web 2.0 zde tvoří frontend pro správu a řízení frameworku na bázi obráceného řízení (IoC) pro tvorbu vysoce konfigurovatelných aplikací. Klíčová slova: internet, world wide web, webová aplikace, blog, wiki, social tagging, social bookmarking, social networking, media sharing, virtuální světy, mashups, skriptování na straně serveru, skriptování na straně klienta, SOA, webové služby, AJAX, Rich User Experience
Abstract This thesis examines three different aspects of Web 2.0 applications and offers a solution to problems created by those applications. In the first part, Web 2.0 is explained through its unique characteristics. Next, Web 2.0 applications are categorized by their respective themes and content. Each category contains a detailed description on the specific Web 2.0 sample systems currently in operation on the web. The third section is devoted to identifying the tools and technologies associated with the development of Web 2.0 applications. The last section of this thesis offers a comprehensive solution to problems introduced by Web 2.0 applications. Web 2.0 forms the frontend for administration and management of a framework based on Inversion of Control (IoC) in order to create highly configurable applications. Keywords: internet, world wide web, web application, blog, wiki, social tagging, social bookmarking, social networking, media sharing, virtual worlds, mashups, server-side scripting, client-side scripting, SOA, web services, AJAX, Rich User Experience
Názvy, používané organizacemi k rozlišení svých produktů, jsou často přihlášenými obchodními značkami. Ve všech případech, kdy si je autorka vědoma tohoto přihlášení, jsou názvy produktů psány velkými písmeny nebo s velkým písmenem na začátku. Výjimku tvoří pouze případy, kdy je obchodní značka zaregistrována s malým písmenem na začátku. Následující názvy společností nebo produktů jsou registrovanými obchodními značkami. V následujícím textu budou nadále uváděny bez trademark a registered symbolů.
.NET ACTIVE DIRECTORY AdSense Amazon Blogger CNN Cold Fusion Delicious Digg Drupal ebaY EJB Facebook Firefox Flickr Ford Motor Company Google Chrome Internet Explorer iTunes Java JavaBeans javascript Joomla! JSCRIPT
JSP LinkedIn LINUX Microsoft MSDN MySQL Opera PBworks Perl Python Safari Second Life Sharepoint TECHNORATI The New York Times Twitter VISUAL BASIC VISUAL STUDIO Wikipedia Windows Vista WordPress Yahoo YAHOO! 360º Youtube Zend
Obsah Úvod.......................................................................................................................................8 1 Fenomén Web 2.0...............................................................................................................8 1.1 Co je Web 2.0?................................................................................................................8 1.1.1 Obsah generovaný uživatelem................................................................................9 1.1.2 Dynamicky generovaný obsah...............................................................................9 1.1.3 Web jako platforma pro provozování aplikací......................................................11 1.1.4 Software přístupný na různých zařízeních...........................................................12 1.1.5 Rich User Experience...........................................................................................12 1.2 Od Web 1.0 k Web 2.0...................................................................................................12 1.3 Platformy a aplikace......................................................................................................15 1.3.1 Platformy orientované na obsah...........................................................................16 1.3.1.1 Blogy.........................................................................................................16 1.3.1.2 Wikis..........................................................................................................23 1.3.1.3 Social tagging, social bookmarking a platformy pro sdílení informací....26 1.3.1.4 Media sharing platformy...........................................................................29 1.3.1.5 E-Commerce.............................................................................................33 1.3.2 Platformy orientované na komunikaci a vztahy...................................................33 1.3.3 Virtuálni světy......................................................................................................36 1.3.4 Mashups................................................................................................................39 2 Technologie Web 2.0........................................................................................................41 2.1 Skriptování na straně serveru........................................................................................42 2.1.1 Rozhraní CGI.......................................................................................................43 2.1.2 PHP, ASP..............................................................................................................44 2.1.3 Java EE.................................................................................................................46 2.1.4 ASP.NET...............................................................................................................49 2.2 Relační databáze............................................................................................................53 2.3 Skriptování na straně klienta.........................................................................................53 2.3.1 Javascript..............................................................................................................54 2.3.2 AJAX ...................................................................................................................55 3 Architektura Web 2.0........................................................................................................56 3.1 Vícevrstvá architektura..................................................................................................57 3.2 SOA...............................................................................................................................57 3.2.1 Webové služby......................................................................................................58
4 Další využití Webu 2.0.....................................................................................................60 4.1 Problémová doména......................................................................................................61 4.2 Konceptuální návrh řešení.............................................................................................61 4.3 Základní principy..........................................................................................................61 4.4 Role a případy užití.......................................................................................................62 4.5 Architektura navrhovaného systému.............................................................................64 4.5.1 Modul Config Editor............................................................................................65 4.5.2 Modul Config Management.................................................................................65 4.5.3 Modul Specification Management.......................................................................65 4.5.4 Modul Change Request Management..................................................................66 4.6 Možnosti nasazení.........................................................................................................66 Závěry a doporučení.............................................................................................................66 Seznam použité literatury.....................................................................................................68 Tištěná literatura...................................................................................................................68 Elektronické zdroje...............................................................................................................69
Úvod V dnešní době si už snad nikdo nedokáže svůj život představit bez internetu. Běžně se k němu obracíme, abychom si přečetli nejnovější zprávy a příslušně je okomentovali, hledáme-li bývalé spolužáky na třídní sraz nebo nové zaměstnání. Bez váhání jeho služeb využíváme, chceme-li prodat věci, které už nepotřebujeme, nebo se pochlubit fotografiemi či videi z nejnovější dovolené. Sedáme si k němu, máme-li chuť popovídat si s přáteli, které jsme třeba ani nikdy ve skutečnosti neviděli, nebo potřebujeme-li prokonzultovat s někým zkušenosti s problémem, se kterým si nevíme rady. Někteří dokonce docela unikají ze skutečného života, aby žili život úplně jiný – virtuální. Všechny tyto vymoženosti dnes již každý z nás vnímá jako naprostou samozřejmost, aniž by si uvědomoval, že ve skutečnosti jsou velice nové a na světě relativně krátce. Všechny mají společného jmenovatele – Web 2.0. Web 2.0 je v dnešní době velice frekventovaným slovním spojením. Co ovšem přesně znamená tento pojem? Jakým způsobem zasahuje do našich životů a co nového s sebou přináší? Tato práce si klade za cíl odpovědět na tyto otázky a přiblížit fenomén Web 2.0 na teoretické i praktické úrovni. První část této práce je věnována pojmu Web 2.0, vystižení jeho charakteristických rysů a vlastností, objasnění souvisejících pojmů a zmapování oblastí jeho praktického využití a dopadů. Ve druhé části nahlédneme pod povrch Web 2.0 aplikací a obrátíme svou pozornost k technologickým pilířům, které stojí v jejich základech. Třetí, praktická část této práce, představuje další možnost využití Web 2.0 řešení jako integrované součásti komplexniho systému.
1 Fenomén Web 2.0 1.1 Co je Web 2.0? Termín Web 2.0 poprvé zazněl na Web 2.0 Konferenci (dnes Web 2.0 Summit) v roce 2004. Hlavním cílem této konference bylo obnovit důvěru v obchodní a průmyslové 8
odvětví, které po prasknutí
tzv. internetové bubliny (dotcom bubble), sešlo z cesty.
Předním bodem programu proto bylo prozkoumat příčiny pádu „internetové bubliny“ v roce 2001 a odhlalit důvody, proč některé společnosti přežily, zatímco většina ostatních zkrachovala. Konference současně zaměřila svou pozornost na nově vznikající vzkvétající společnosti a pokusila se najít odpověď na otázku, z jakého důvodu rostou takovou rychlostí. Odpovědi na tyto otázky pomohly definovat soustavu pravidel úspěchu na této nové platfomě, která dostala oficiální označení Web 2.01.
1.1.1 Obsah generovaný uživatelem Největším objevem v této souvislosti bylo zjištění, že přeživší společnosti a nové, raketově se rozvíjející společnosti, mají všechny jednoho společného jmenovatele. Pochopily, že nestačí pouze nabízet staré aplikace po síti, ale že je třeba budovat nové aplikace, pracující na principu samorozvíjení – jsou tím lepší, čím více lidí je používá. Využívají účinky sítě nejen k získávání uživatelů, ale současně se od nich učí a staví na jejich příspěvcích. Zvyšování hodnoty systému je tak sice umožněno softwarem, ale hodnota sama o sobě je budována za přispění a pro komunitu aktivně se angažujcích uživatelů. Web 2.0 je tedy předně záležitostí kolektivní inteligence. (O'Reilly - Web Squared, 2009)
1.1.2 Dynamicky generovaný obsah Web 2.0 je často označován jako read/write 2 Web nebo database-backed Web3. Původní jednoduché weby, kde aktualizace probíhaly velmi zřídka a byly záležitostí několika málo vyvolených, měly svůj obsah uložen přímo v HTML kódu stránky. Vyřízení takového požadavku bylo a je poměrně triviální, jak názorně ukazuje obrázek 1. Klient, zpravidla webový prohlížeč, odešle prostřednictvím HTTP protokolu po síti požadavek na server ve formě URL adresy. Server požadavek přijme a jako odpověď vrátí požadovanou webovou stránku. Tento systém se nazývá klient-server model.
1 2 3
Tabulka porovnání Web 1.0 a Web 2.0 přístupů je obsahem přílohy č. 1. číst/zapisovat databází podložený
9
Obrázek 1 (Klient-Server Model: Statický obsah) Zdroj: Vlastní
Kolektivní inteligenci by ovšem nebylo možné zrealizovat, pokud bychom neměli možnost spravovat, třídit a vyhodnocovat obrovské množství informací. Závislost na svých online databázích je tudíž jednou ze základních charakteristik Web 2.0 aplikací. Obsahy dnešních webů jsou zpravidla uloženy v databázi, odkud jsou při uživatelově požadavku načítány a kam jsou ukládány jejich aktualizace. Pro Web 2.0 aplikace je proto charakteristické prodloužení vyřízení požadavku klienta o dotaz na databázi a zpracování požadovaných dat.
Obrázek 2 (Klient-Server Model: Dynamicky generovaný obsah) Zdroj: Vlastní
10
Obrázek 2 znázorňuje jednotlivé kroky mezi odesláním požadavku a zobrazením požadované stránky. Na obrázku je zachycen jednodušší případ, kdy webový server komunikuje přímo s databází. V řadě komplexních řešení však není webový server s databází spojen přímo. Aplikační logika je implementována v aplikačním serveru, který odstiňuje webový server od databáze (příp. databází).
1.1.3 Web jako platforma pro provozování aplikací Z výše uvedeného vyplývá, že world wide web je s rostoucí tendencí využíván jako platforma, podporující provoz softwarových aplikací na vzdálených webových serverech. Mnoho lidí v běžné řeči často zaměňuje pojmy internet a world wide web. Přesto je v nich zásadní rozdíl. Internet je technická, hardwarová základna pro výměnu informací v počítačové síti. Je to platforma, na které běží jak webové, tak newebové aplikace (například protokoly pro přenosy souborů, e-mail, instant messaging aplikace nebo internetová telefonie). World wide web je pouze jednou ze softwarových aplikací provozovaných na internetové základně. Je to internetová aplikace, která sama současně poskytuje platformu pro provoz dalších, tzv. webových aplikací. (Shelly/Frydenberg, 2010) Web 2.0 využívá různé technologie pro přiblížení webových aplikací uživateli tak, aby pociťoval co nejmenší rozdíl mezi nimi a aplikacemi nainstalovanými na harddisku jeho počítače (tzv. desktopové aplikace). Přesto v nich je technologicky i filozoficky velký rozdíl. Díky tomu, že webová aplikace i její data jsou uloženy na vzdáleném serveru, je k nim možné přistupovat z jakéhokoli počítače připojeného k internetu odkukoli na světě. Stačí znát pouze své přístupové údaje. Další výhodou webových aplikací je, že uživatelé s nimi komunikují prostřednictvím standardních aplikací, tzv. webových prohlížečů, které jsou v dnešní době běžnou výbavou základní instalace většiny operačních systémů. Díky tomu, že jsou webové aplikace nainstalovány a provozovány na vzdáleném serveru, nabízejí uživateli ještě další velkou výhodu. Nemusí se starat o jejich aktualizace a může se spolehnout, že kdykoli se přihlásí, pracuje s její nejnovější verzí. Webové aplikace se většinou nacházejí v tzv. perpetual beta stavu, kdy jejich aktualizace probíhají v malých krocích a průběžně. (Shelly/Frydenberg, 2010)
11
Všechny tyto výhody nasazení webových aplikací namísto desktopových v současné době přitahují čím dál širší a silnější pozornost v rámci využití nejen v soukromé, ale především v podnikatelské a obchodní sféře. Jedné takové možnosti využití se podrobněji věnuje třetí část této práce.
1.1.4 Software přístupný na různých zařízeních Pro Web 2.0 aplikace je charakteristické, že jsou navrhovány tak, aby je uživatel mohl používat bez ohledu na druh přístroje připojeného k internetu. Vzhledem k tomu, že vstupní aparáty mohou být velice rozdílné (např. PC, PDA nebo mobilní telefon) s velmi rozdílnými možnostmi zobrazení, jsou kvalitní webové aplikace vytvářeny v tzv. třívrstvé architektuře. Tento typ architektury zabezpečuje nezávislé oddělení dat, aplikační logiky (zpracování dat) a zobrazení výsledku, a umožňuje proto vývojářům stejná data zpracovat a zobrazit tak, aby vyhovovala nejrůznějším typům zařízení. Blíže je princip třívrstvé architektury popsán v kapitole 3.1.
1.1.5 Rich User Experience Jak již bylo naznačeno výše, volání požadavků v klient-server modelu probíhá „krokově“. To znamená, že každý uživatelův požadavek je znovu odesílán na server a znovu je mu vrácena celá stránka, kterou webový prohlížeč překreslí. Tento postup je z hlediska uživatele poněkud nepohodlný. Mnohé dnešní Web 2.0 aplikace implementují proto interaktivní
uživatelská
rozhraní
podobná
uživatelským
rozhraním
klasických
desktopových aplikací. Klíčovou komponentou v této souvislosti je AJAX, o kterém bude podrobněji řeč později v kapitole 2.3.2. Tento postup byl nejvíce zpopularizován jeho nasazením v Google Maps a Google Mail aplikacích.
1.2 Od Web 1.0 k Web 2.0 Ve své původní podobě byl world wide web pouze sbírkou statických, hypertextovými odkazy navzájem provázaných, webových stránek. Výrazové prostředky byly na webových počátcích velice omezené. Vedle hypertextových odkazů a jednoduchých grafických prvků 12
webové stránky obsahovaly pouze text, který mohlo měnit pouze několik málo vyvolených, a který se měnil velice sporadicky, pokud vůbec. Raný web, dnes označovaný jako Web 1.0, tedy až na pár výjimek představoval globální informační platformu, v rámci které interakce s uživatelem probíhala téměř výhradně pasivně čtením uveřejněného obsahu. V době svého založení byl portál Yahoo.com jedním z nejúspěšnějších internetových společností ve světě. Jeho podoba v roce 1997, jak zachytil WayBackMachine archiv a jak ji znázorňuje obrázek 3, byla charakteristická pro většinu tehdejších webů.
Obrázek 3 (Portál Yahoo.com v roce 1997) Zdroj: WayBackMachine.org
Yahoo.com tehdy představovala online adresář hypertextových odkazů. Dobrat se požadované informace znamenalo „proklikat“ se celou hierarchickou strukturou, jak naznačuje obrázek 4. Z příkladu je patrné, že k zobrazení textu zprávy bylo potřeba tří kliků, což při tehdejším běžně používaném pomalém vytáčeném připojení znamenalo značnou časovou zátěž.
13
Obrázek 4: (Portál Yahoo.com v roce 1997 - kroky k zobrazení zpráv) Zdroj: WayBackMachine.org s úpravami autorky
Od roku 1997 prošel nejen portál Yahoo.com, ale celý world wide web řadou zásadních proměn. Jak dokladuje obrázek 5, dnešní web po vizuální stránce mnohem silněji přitahuje pozornost čtenáře a díky novým technologiím mu nabízí mnohem více služeb a možností přizpůsobení vlastním potřebám. (Shelly/Frydenberg, 2010)
14
Obrázek 5 (Portál Yahoo.com v roce 2010) Zdroj: Yahoo.com
V posledních letech docházelo a dochází čím dál rychlejším tempem k posunu webu z pozice „informační“ platformy směrem k „zúčastni se“ platformě. Uživatelé plynule přecházejí z pasivní role čtenáře do role aktivní, spoluvytvářející celkovou podobu dnešního webu. Generují samostatně obsahy a vytvářejí platformy,
prostřednictvím
kterých ve vlastní režii vstupují do dialogu mezi sebou navzájem, se svým okolím, podnikatelskými subjekty a státní správou. Právě tento posun od pasivní role uživatele k roli aktivní je označován za přechod od Webu 1.0 k Webu 2.0. (Meckel/Stanoevska-Slabeva, 2008)
1.3 Platformy a aplikace Jak již bylo řečeno dříve, Web 2.0 se točí v první řadě kolem obsahu. Vnímání a funkcionalita leží se značným odstupem na druhém místě. Ať už se jedná o text, obrázky, audio či video, řeč je stále o datech a jejich organizaci a prezentaci. V tomto směru bychom mohli v rámci Web 2.0 nalézt tři paralelní proudy vývoje: technologický, aplikační a socializační. 15
Do technologického proudu spadá vývoj veškerých základnen síťové infrastruktury, hardwarových i softwarových technologií. Tento proud v oblasti softwaru obsahuje architektury orientované na služby, například Feeds, RSS, Web Services, a Mashups. V rámci aplikačního proudu můžeme nalézt především vývoj tzv. Rich Internet Aplikací (RIA) - webových aplikací, které jsou provozovány v prostředí internetu, ale pro uživatele vytvářejí podobný dojem jako aplikace desktopové. Socializační proud naproti tomu zahrnuje všechny oblasti lidského konání, kterými se uživatel přímým a aktivním způsobem podílí na podobě a obsahu webu. V tomto vývojovém proudu najdeme účast a užívání social networking a media sharing aplikací a wikis, tagging nebo blogging. (Bell, 2009)
1.3.1 Platformy orientované na obsah 1.3.1.1 Blogy Blog (zkrácený název původního weblog) představuje online žurnál, který je pravidelně nebo často aktualizován a jehož články jsou chronologicky řazeny tak, že nejnovější článek se automaticky objevuje nahoře na titulní stránce. Prostřednictvím blogu uživatelé – bloggeři - vyjadřují a publikují svoje potřehy, názory nebo příběhy, a umožňují ostatním uživatelům – svým čtenářům – o nich diskutovat. Motivace uživatelů k založení a vedení blogu jsou nejrůznější - od sdílení vlastních zážitků ze života až po politické komentáře nebo budování obchodní značky. Tomu odpovídají i témata blogů, jejichž šíře je prakticky neomezená. Přesto lze vysledovat několik typických skupin bloggerů a jejich blogů: 1. osobní deníky 2. news blogy obsahující názory a postoje bloggera k aktuálním událostem ve světě 3. aktivistické blogy podněcující čtenáře k zapojení se do aktivistických hnutí sledujících určitý cíl 4. politické blogy propagující vize určitého politika, politické strany nebo politického ideálu 5. vzdělávací blogy obsahující zkušenosti a informace o nejnovějších směrech a poznatcích v oblasti vzdělávání a výchovy 16
6. technologické blogy pojednávající o posledních novinkách a vizích v oblasti technologií 7. průmyslové a firemní blogy sloužící k podpoře značky, komunikaci se zákazníky nebo propagaci průmyslových a spotřebních produktů 8. blogy o celebritách a blogy s bulvárním obsahem 9. koníčkářské blogy (Bell, 2009) Bez ohledu na téma blogu nebo jeho grafické zpracování, formou se blogy od sebe příliš nevzdalují. Všechny zachovávají určité charakteristické znaky, jimiž se odlišují od ostatních webových stránek.
Obrázek 6 (Anatomie blogu) Zdroj: Google Student Blog s úpravami autorky
Jak je patrné z obrázku 6, typický blog obsahuje: 17
•
Záhlaví obsahující jméno blogu a jeho logo
•
Vlastní informační obsah – články, tzv. posts, řazené chronologicky od nejnovějších k nejstarším. (viz níže)
•
Jméno autora článku, datum a čas uložení.
•
Archivy obsahující příspěvky roztříděné podle tématu, data (měsíce, roku) publikace, autora (v případě blogů, do kterých přispívá větší množství uživatelů) nebo klíčových slov. Základní třídění a správu archivů provádí blogovací software automaticky. Obvykle bývá čtenáři k dispozici i možnost hledání podle požadovaných kritérií.
•
Oddíl s komentáři čtenářů, který umožňuje komunikaci autora článku se svými čtenáři nebo mezi čtenáři blogu navzájem. Způsoby, jakými lze reagovat na článek blogu, mohou být různé a bude jim věnována podrobnější pozornost dále.
•
Možnost registrace k automatickému odběru novinek prostřednictvím RSS.
Výběr blogovacího systému Blogger aktualizuje svůj blog přidáním nového článku prostřednictvím blogovacího systému (aplikace). Blogovací systémy umožňují uživatelům vytvářet blogy, upravovat jejich nastavení a editovat jejich obsah. Prvním krokem, který je potřeba učinit, je tudíž volba blogovacího systému. Dvěma nejznámějšími a nejrozšířenějšími blogovacími aplikacemi na tomto trhu jsou Blogger a Wordpress. Blogger4 je typickou blog-hosting službou a je nabízen uživatelům zdarma. Je nejčastější volbou zejména začínajících individuálních bloggerů, kteří se chtějí plně soustředit pouze na obsah svého blogu a nepotřebují se zabývat složitými konfiguracemi. Vyznačuje se velmi intuitivním uživatelským rozhraním pro editaci obsahu a jednoduchou úpravu grafické podoby blogu za použití řady přednastavených šablon. Navíc, díky svému majiteli (od roku 2003 patří společnosti Google), nabízí snadné propojení s ostatními Google aplikacemi, a to jak v rámci vlastního příspěvku, tak i v postranní liště. Příkladem systémů, které je možno s aplikací Blogger snadno propojit, jsou Picassa (sdílení fotografií), AdSense (systém pro distribuci reklamy) nebo Friend Connect (social networking systém). (Shelly/Frydenberg, 2010) 4
http://www.blogger.com
18
Druhým velkým hráčem na poli blogovacích systému je WordPress. Wordpress nabízí jak bezplatnou variantu podobnou Bloggeru, provozovanou na doméně www.wordpress.com, tak vysoce sofistikovanou, placenou variantu dostupnou na www.wordpress.org (dále označován jen Wordpress). WordPress je nejčastější volbou firemních blogů, blogů neziskových organizací a dalších rozsáhlých blogů. Tito pokročilí uživatelé mají WordPress systém nainstalován a spravován na svých vlastních serverech, aby mohli mít plnou kontrolu nad správou svých uživatelů a uzpůsobováním funkcionality a vzhledu jejich blogů. Významnými uživateli Wordpress blogovacího systému jsou například The New York Times, CNN, Harvard Univesity, Ford Motor Company nebo NASA. (Shelly/Frydenberg, 2010) Blogger a Wordpress nejsou pochopitelně jedinými dostupnými blogovacími systémy. Obecně lze říci, že blogovacích systémů je na současném trhu celá řada. Podle své potřeby má dnes uživatel možnost si vybrat odpovídající systém jak po stránce technologické (webbased nebo softwarové řešení instalované na vlastním počítači), tak po stránce nabízené funkcionality. Mezi další hojně užívané systémy lze zařadit například Windows Live Spacer nebo Yahoo! 360°.
Vlastní obsah blogu – články (posts) Články blogu jsou hlavní částí blogu a nositeli jeho informačního obsahu. Základem článků je ve většině případů text, článek ovšem může obsahovat více než jen ten. Blogovací systémy umožňují do článků vkládat rovněž multimediální prvky – obrázky a videa. Grafické a audio prvky vítaným způsobem přitahují pozornost, obsahově doplňují text článku a zprostředkovávají čtenáři komplexní zážitek. Obrázky i videa lze do článku vložit principiálně dvěma způsoby. Blogger je může uložit přímo na webový server, kde běží jeho blogovací aplikace. Většina blogovacích systémů pro tyto případy nabízí jednoduché uživatelské rozhraní, které přenos z počítače uživatele na server zprostředkuje. Druhou možností je vložení obrázku nebo videa z některého media sharing systému (například Flickr nebo YouTube). Každá z variant má svoje výhody a nevýhody a je pouze na zvážení bloggera, kterou z nich si vybere. Multimediální soubor přímo nahraný na server je uložen přímo s blogem a zpravidla od uživatele nevyžaduje žádné dodatečné 19
kroky navíc k jeho zobrazení v rámci článku. Výhodou multimediálního souboru vkládaného z externího media sharing systému je, že není pevně svázán s blogem, a proto není dostupný jen čtenářům blogu, ale i dalšímu publiku. (Shelly/Frydenberg, 2010)
Archivace a vyhledávání Každý článek je dostupný na své unikátní permanentní adrese. Tento způsob uložení umožňuje na jednotlivé příspěvky odkazovat z externích adres bez nutnosti neustálé kontroly platnosti odkazů a povzbuzuje tím uživatele k vzájemnému provazování blogů v rámci blogosféry. Současně je tím zjednodušena práce vyhledávačů, které tak mohou článek snadněji zaindexovat. Vyhledávat články blogů následně lze pomocí standardního vyhledávání (např. Google) nebo prostřednictvím specializovaných vyhledávacích služeb (např. Google Blog Search nebo Technorati). Specializované vyhledávače jsou schopné velice pružně reagovat na rychle se měnící obsah blogů a nabídnout článek mezi vyhledanými výsledky během několika minut od jeho zveřejnění. Technorati navíc přiřazuje každému blogu tzv. authority value – hodnotu „vlivnosti“ bloggera a z ní odvozené relevance jeho názoru. Základem hodnoty vlivnosti autora je počet odkazů, které na jeho blog odkazují v rámci blogosféry. Tyto zpětné linky jsou považovány za „potvrzení“ relevance a kvality daného názoru nebo informace. Technorati vyhledávač následně výsledky hledání standardně řadí sestupně podle authority value daného blogu, jak ukazuje obrázek v příloze č. 4.
Komentáře Nejjednodušším způsobem, jak přidat ke článku svou poznámku nebo mínění, je prosté vložení komentáře. Tímto způsobem čtenáři nejčastěji vkládají většinou krátké komentáře více či méně přímo se vztahující k tématu příspěvku a vzájemně o tématu diskutují. Dalším způsobem, jakým lze reagovat na příspěvek blogu, je vložení tzv. trackbacku. Trackback je ve své podstatě upoutávka na příspěvek jiného blogu, který se vztahuje k danému tématu nebo na něj přímo reaguje. Princip trackbacku lze přiblížit na následujícím příkladu: 20
1. Osoba A vloží článek do svého blogu (dále „blog A“). 2. Osoba B by ráda článek komentovala, avšak z různých pohnutek tak nechce učinit přímým komentářem vloženým do blogu A, ale ráda by tak učinila formou článku ve svém vlastním blogu (dále „blog B“). Důvodem pro tento postup může být například, že osoba B chce svým příspěvkem oslovit nejen čtenáře blogu A, ale i svou vlastní čtenářskou obec. Jiným motivem může být například obsah příspěvku osoby B. Ten se může k původnímu článku v blogu A vztahovat jen vzdáleně a nemusí být proto, coby přímo vložený komentář, vhodný. Osoba B proto napíše komentář formou postu do svého blogu B a blogu A pošle tzv. trackback. 3. Blog A trackback přijme a uloží ho ve formě komentáře k původnímu článku. Takto vložený komentář vždy obsahuje permanentní link k článku – komentáři – v blogu B a většinou zobrazuje i část obsahu článku v blogu osoby B, tzv. excerpt. Jeho úkolem je přitáhnout pozornost čtenáře a vybídnout ho k návštěvě a přečtení příspěvku - komentáře - v blogu B. Nevýhodou trackbacků je skutečnost, že se chovají jako „prosté“ komentáře. Osoba A disponuje tudíž plným přístupem k editaci trackbacku, což může zřetelně ovlivňovat jeho autenticitu. Jako řešení tohoto problému byl proto navržen tzv. pingback. Mechanismus fungování pingbacku popisují následující kroky: 1. Osoba A napíše článek do svého blogu. 2. Osoba B napíše ke článku osoby A komentář do svého blogu, který zpětně odkazuje do blogu A na původní článek. 3. V případě, že oba blogy mají zapnutou službu pingback, blogovací software blogu B automaticky pošle blogu A zprávu o tom, že blog B odkazuje na její článek. Blogovací software blogu A tuto zprávu přijme a automaticky ověří v blogu B, že pingback skutečně pochází z blogu a článku, ze kterého údajně přišel. Pokud je potvrzen, je zobrazen ve formě prostého odkazu připojeného k původnímu článku v blogu A. Přestože obě varianty „zpětných odkazů“ vypadají na první pohled velmi obdobně, jsou 21
mezi trackbackem a pingbackem dva fundamentální rozdíly: 1. Používají zcela jinou technologii komunikace. Zatímco trackback je přenášen prostřednictvím HTTP POST protokolu, pingback používá protokol XML-RPC5. 2. Pingbacky neposílají žádný obsah. Obecně se nedá říci, že by trackback nebo pingback byl jeden vyšší verzí toho druhého. Jedná se o dva různé postupy, jak lze k článku připojit „externí“ komentář. Každý z nich má svoje výhody a nevýhody. Výhodou pingpacku je, že zaručuje autenticitu komentáře. Nevýhodou je jeho pro čtenáře poněkud strohá a nelákavá forma prezentace. (Wordpress.org, 2010)
RSS (Really Simple Syndication) „... když se mě lidé ptají, co je RSS, říkám, že je to automatizovaný web surfing. Vzali jsme něco, co dělá mnoho lidí - navštěvování stránek a hledání nového obsahu – a zautomatizovali to. Je to velice předpovídatelné. Je to to, co dělají počítače – zautomatizování opakujících se věcí.“ (Winer, 2005) Pojmem RSS (Rich Site Summary nebo Really Simple Syndication) je označován formát, ve kterém jsou distribuovány novinky na často se měnících webech. Když se objeví na webu, jež používá RSS, nový obsah, přibude o něm současně záznam v RSS feedu. RSS feed je jednoduchý, automaticky generovaný XML soubor. Obsahuje informace o nových článcích na webu – název, URL adresu a text článku nebo jeho stručný obsah. Může obsahovat i další metadata jako permalink, jméno autora nebo datum uveřejnění. Jeho základní schematickou podobu zobrazuje příloha 5. Je ukládán zpravidla s příponou .rss nebo .xml a označován standardizovanou ikonou zobrazenou na obrázku 7.
5
Protokol používaný pro vzdálené volání procedur. Používá XML k zapouzdření přenášených dat a HTML jako transportní mechanismus.
Pravidelní čtenáři pak mají možnost se jednoduchým způsobem přihlásit k odběru novinek. O těch jsou následně automaticky zpravováni a nemusejí se pokaždé znova vracet a kontrolovat, zda na jejich oblíbených stránkách něco nového přibylo. Stačí mít nainstalovaný program (tzv. RSS čtečku), který automaticky prohlíží a zobrazuje RSS feedy přihlášené k odběru. RSS čteček je k dispozici celá řada jak ve formě standalone aplikací pro všechny možné operační systémy, tak webových aplikací dostupných prostřednictvím webového browseru. Příkladem může být Google RSS Reader zobrazený v příloze 6. V případě čtenářova zájmu a pravidelného sledování více než jednoho webu představuje abonnement RSS feedů citelnou úsporu času.
1.3.1.2 Wikis Wikis jsou vedle blogů další možností, jak online publikovat. Wiki je kolekce webových stránek navzájem provázaných hypertextovými odkazy, která svým uživatelům dovoluje jednoduchým způsobem přidávat obsah, měnit ho a diskutovat o něm. Wikis jsou vytvářeny aplikacemi obecně nazývanými „wiki software“. Díky svým charakteristickým vlastnostem se staly velmi rozšířeným a oblíbeným nástrojem k organizování a sdílení informací. Jsou to otevřené platformy podporující spolupráci mnoha autorů na vytváření společného obsahu. Příspěvky jsou ve wiki webech zobrazovány každý na své samostatné stránce a ke každému příspěvku je možné vložit komentáře. Pro ty mají wikis, narozdíl od blogů, vyhrazeny samostatné stránky. Odkaz na ně je umístěn většinou v záhlaví každé stránky. V komentářích je nejčastěji diskutována relevance informací uvedených v článku. Wiki software se zpravidla vyznačuje vysokou škálovatelností - je navržen tak, aby 23
dokázal zvládnout prudký nárůst počtu současně přihlášených uživatelů bez citelného poklesu výkonu. Tato jeho vlastnost je pak zvláště aktuální u veřejně dostupných wikis. Nasazení wiki řešení a práce s ním je pro uživatele velice snadná a není potřeba žádných zvláštních odborných znalostí. Veškerá editace probíhá prostřednictvím webového prohlížeče a každý wiki software nabízí pro práci s obsahem více či méně přívětivé uživatelské rozhraní. Pořízení jednoduché wiki je také velmi jednoduché a mnoho poskytovatelů wiki systémů, provozujících wiki aplikace na svých serverech, je v základní verzi nabízí uživatelům zdarma. Toto řešení je optimální pro skupiny soukromých osob nebo menší organizace, které nevyžadují žádné speciální vlastnosti nebo nastavení. Profesionální uživatelé si obvykle přejí mít větší kontrolu nad chodem systému a uložením důležitých informací. Větší organizace nebo technicky zdatnější skupiny uživatelů mají proto možnost vybrat si pro sebe vhodnou wiki aplikaci, nainstalovat ji a provozovat na svém vlastním serveru v rámci internetu nebo uzavřené privátní sítě. Volba vhodného wiki systému pak závisí na požadovaných vlastnostech. Nabídka na dnešním trhu je v tomto ohledu velmi široká - od open source systémů po placené implementace jednotlivých komerčních dodavatelů. Za všechny je zde možné jmenovat tři momentálně nejrozšířenější wiki aplikace – MediaWiki, původně vytvořená pro provoz Wikipedie, PBworks a Google Sites. Vzhledem k výše uvedeným vlastnostem se wiki systémy těší velké oblibě. Jsou nasazovány všude tam, kde je potřeba sbírat, třídit, organizovat a ve snadno dostupné formě uchovávat a distribuovat velké množství informací. Jsou veřejně dostupné nebo používané pro privátní či firemní účely. Pro jejich oblibu hovoří i jejich snadné pořízení a ještě snadnější použití. Práce s wiki probíhá zpravidla ve dvou základních módech – pro čtení a pro editaci. Mód pro čtení umožňuje čtenářům prohlížet již existující informace. V případě veřejných wiki systémů je obsah wiki v módu pro čtení dostupný všem, bez ohledu na registraci. Mód pro editaci umožňuje registrovaným přispěvatelům obsah wiki přidávat, měnit a komentovat, přičemž každý uživatel může editovat nejen stránky, které sám vytvořil, ale i stránky kteréhokoli jiného autora. Mnohé wiki systémy jsou proto v módu pro editaci opatřeny 24
zámkem, který upravovaný obsah zablokuje proti změnám dalších uživatelů. Tím je zabráněno konfliktním zásahům, kdy by byl tentýž obsah měněn dvěma různými uživateli ve stejnou chvíli. Veškeré změny jsou ve wiki zaznamenávány a ukládány. U každé stránky jsou uchovávány všechny její předchozí verze. Tato charakteristická vlastnost wiki systémů umožňuje nejen snadný návrat k předchozím verzím v případě znehodnocení obsahu, ale i identifikaci uživatelů, kteří obsah wiki napadali a poškozovali záměrně. Toto riziko je zvláště vysoké v případě veřejně dostupných wikis.
Nasazení v praxi - Wikipedia „Wikipedia je v první řadě a především snaha vytvořit bezplatnou encyklopedii té nejvyšší možné kvality a dopravit ji ke každému člověku této planety v jeho vlastním jazyce. Ptát se, jestli komunita vznikne před nebo po dosažení tohoto cíle, je pokládáním špatné otázky –
komunita
je
přímo
tím
cílem.“
Jimmy
Wales,
spoluzakladatel
Wikipedie
(Shelly/Frydenberg, 2011) Wikipedia je neznámějším příkladem nasazení wiki systému. Jedná se o volně dostupnou, rozsáhlou, stále se rozrůstající online encyklopedii, čítající v roce 2010 přes 3,1 milionu pojmů. (Shelly/Frydenberg, 2010) Nemá žádný kolektiv oficiálních autorů a je čistě závislá na svých dobrovolných přispěvatelích. Každý registrovaný uživatel, bez ohledu na odbornost, se může podílet na podobě obsahu Wikipedie. Myšlenka takto koncipované encyklopedie se zdála být zcela zcestná a přes všechna opatření proti zneužití a záměrnému poškozování skutečně není spolehlivost Wikipedie nijak zaručena. Navzdory tomu však její srovnání s uznávaným zdrojem - Encyklopedií Britannicou, provedeném odborníky, dopadlo nad očekávání uspokojivě. Jak uvádí studie časopisu Nature, přesnost informací, uvedených ve Wikipedii, je srovnatelná s přesností údajů uvedených v Encyklopedii Britannica. Z uvedené studie vyplývá, že přestože Wikipedie není a nemůže být oficiálním a plně spolehlivým zdrojem, její význam a hodnota jejích informací je přesto vysoká a má i nadále stoupající tendenci. (Bell, 2009)
25
1.3.1.3 Social tagging, social bookmarking a platformy pro sdílení informací Social Tagging Ruku v ruce s prudkým nárůstem objemu elektronických dat dostupných online se vynořila i potřeba je utřídit a umožnit jejich snadné vyhledávání. Jednou, a původně jedinou, možností bylo jejich organizování do hierarchických adresářových struktur. Druhou, stále častěji používanou, variantou je tzv. tagging. Tagging je nehierarchickým způsobem organizace. Charakterizuje data prostřednictvím připojení popisných „štítků“ a klíčových slov, tzv. metadat (dat o datech), k vlastnímu obsahu. K tomu využívá technologii XML. Obecně lze rozlišit tři třídy metadat: 1. profesionálně vytvořená metadata (typicky katalog sestavený skupinou odborníků) 2. metadata vytvořená autorem 3. metadata vytvořená a sdílená skupinou uživatelů. (Bell, 2009) Takto připojená metadata se nazývají tagy. Tag je uživatelem generované klíčové slovo nebo termín připojený za účelem klasifikace a sloužící k usnadnění vyhledání příslušné informace. Rámcově lze tagy rozdělit do dvou základních skupin: 1) organizační, a 2) společné (social). Organizační tagy jsou obvykle soukromé a slouží k přesnějšímu utřídění dat uživatele. Typickým příkladem organizačních tagů je označování dat v rámci systému Windows Vista. Společné tagy naproti tomu jsou dílem společným a slouží ku prospěchu celé skupiny uživatelů. (Bell, 2009) Proces kolektivního vytváření a spravování popisných tagů se nazývá social tagging. Někdy je označován též pojmem folksonomy, vzniklým spojením slov folk a taxonomy. Vyjadřuje spolupráci mnoha lidí na klasifikaci a správě elektronického obsahu. Výsledkem social taggingu je tzv. tag cloud. Jak naznačuje obrázek 8, tag cloud je vizuálním znázorněním tagů připojených k digitálnímu obsahu. Ve svém grafickém formátu jsou jednotlivé tagy řazeny v abecedním pořádku a jejich četnost je naznačena velikostí písma daného výrazu. Každý výraz je zobrazen ve formě odkazu vedoucímu k dalším, souvisejícím zdrojům. 26
Obrázek 8 (Tag Cloud) Zdroj: Last.fm
Základní myšlenkou, stojící na pozadí social taggingu, je vytvoření alternativy ke strojovému vyhledávání pomocí tradičních vyhledávacích strojů typu Google nebo Yahoo. Zatímco možnosti strojů jsou omezeny na více či méně sofistikované porovnávání řetězců, mozek člověka dokáže obsah dat pochopit a vystihnout jeho podstatu. A vzhledem k tomu, že volba tagů popisujících daný obsah je čistě individuální a není omezena ani počtem, ani volbou výrazů, je nasnadě, že výsledky strojového vyhledávání a vyhledávání na základě social taggingu se mohou značně rozcházet. Nehierarchický způsob organizace dat umožňuje, narozdíl od klasických adresářových struktur, zařadit tentýž obsah do více kategorií současně, což značně zpřehledňuje jeho vyhledávání. Další výhodou taggingu obecně je možnost použití mnoha různých synonym. Speciální výhodou social taggingu je pak spojení mnoha úhlů pohledu a mnoha způsobů vnímání a interpretace téhož obsahu, což může vést při následném vyhledávání k řadě nečekaných překvapení a objevů, které by při použití tradiční vyhledávačů v dané souvislosti zůstaly skryty. Nevýhodou social taggingu je především jeho nekontrolovatelnost. Každý uživatel má možnost zcela svobodně vybrat a přidat libovolný tag libovolnému obsahu. To následně směřuje k mnoha redundancím a zavádějícím informacím typu pravopisných chyb, popisu 27
téhož obsahu současně v jednotném i množném čísle nebo nedodržení pravidel přidávání víceslovných tagů vedoucích k jejich nesmyslnému roztržení. Speciální záludností jsou pak tagy obsahující mnohoznačné výrazy, které při následném vyhledávání poskytují zcela matoucí a zcestné výsledky. Z výše uvedeného je zřejmé, že social tagging je nejčastěji používán na webech určených ke sdílení elektronických dat – fotografií, videí nebo hudebních záznamů jako Flickr.com nebo Last.fm. Ty se vyznačují velkým počtem uživatelů, kteří nejen sdílejí společná data, ale především na základě svých osobních preferencí inklinují k vyhledávání dalších obdobných obsahů.
Social Bookmarking Druhou variantou, jak co nejpřímější cestou nalézat nové obsahy, odpovídající osobnímu vkusu, je využít výhod, které nabízí social bookmarking. Bookmarking je ukládání URL adres stránek, které uživatel už v minulosti našel, zaujaly ho a má v plánu se k nim v budoucnu vracet. Než se objevil Web 2.0, uživatelé si zapisovali URL adresy oblíbených webů do svých prohlížečů. Tento způsob práce je velice pohotový a pohodlný, nese s sebou však i určité nevýhody. Předně je omezen pouze na práci s jedním jediným počítačem. Pro opačný případ Web 2.0 nabízí social bookmarking – způsob, jakým svoje oblíbené URL adresy zaznamenávat, spravovat a sdílet s ostatními uživateli v prostoru k tomu určených webových stránek. Kolekce uložených adres jsou pak pohodlně dostupné z jakéhokoli počítače připojeného k internetu. Takto uložené záložky je pak možno nastavit jako privátní, tudíž viditelné pouze uživateli, který je uložil, nebo veřejné, sdílené s ostatními uživateli, a označit je tagy s odpovídajícím popisem obsahu. Sdílené bookmarky opatřené metadaty se tím stávají další formou budování kolektivní inteligence. Lidé s obdobným vkusem a okruhem zájmů obvykle hledají stejné nebo podobné věci, což zákonitě vede k jejich přirozenému sdružování do zájmových skupin. Pokud jeden ze skupiny pak najde novou zajímavou informaci nebo webovou stránku, kterou si zaznamená sdílenou záložkou, zpřístupní ji tím současně ihned i všem ostatním 28
uživatelům s podobnými preferencemi. Každá taková novinka pak má šanci získat svoje čtenáře rychleji a účinněji než většině z nich dokážou nabídnout tradiční internetové vyhledávače. Čím je záložka populárnější - čím více uživatelů ji shledá užitečnou a zařadí si ji do svého seznamu, tím je bookmarking systémem považována za „hodnotnější“. Vyhledané zdroje jsou následně podle jejich popularity vyhodnocovány a sestupně řazeny. Delicious6 je jedním z nejpopulárnějších typických představitelů social bookmarking systému. Kromě výše zmíněných charakteristických vlastností nabízí svým uživatelům navíc možnost zaregistrovat se k odběru RSS feedu a kontinuálně sledovat nejnovější zdroje, které ostatní uživatelé založili a označili určitým tagem. Poněkud speciálním případem je Digg7. Jedná se spíše o platformu pro sdílení informací, kam uživatelé aktivně vkládají odkazy na nejnovější zajímavé články a weby, pokrývající nejrůznější oblasti lidského života (business, zábava, politika, věda, životní styl, sport, atd). Ostatní čtenáři následně uložené (nabídnuté) zdroje hodnotí. Systém v tomto směru nabízí buď možnost článek svým hlasem podpořit v jeho popularitě („Digg“), nebo ho „pohřbít“ („Bury“). Třídění a hodnocení zdrojů a informací je zde tudíž čistě v rukou lidí, kteří svými hlasy rozhodují o jejich relevanci.
1.3.1.4 Media sharing platformy S přibývajícím množstvím stále snadněji ovládané techniky k pořízení fotografických, zvukových nebo videozáznamů přibývá i množství uživatelů, kteří tyto záznamy pořizují a chtějí je sdílet s ostatními. Ať už mají v úmyslu prezentovat svoje umělecké dílo veřejně publiku po celém světě, pochlubit se rodině fotografiemi z dovolené, vyhledat vhodnou ilustraci pro svou knihu nebo najít názorný video-tutoriál k řešenému problému, sáhnou dnes obvykle po některé z mnoha nabízených media sharing aplikací. Media sharing platformy jsou aplikace určené ke sdílení – prezentaci a vyhledávání – obrázků, videí a audiozáznamů v prostředí internetu. K tomu nabízejí řadu funkcí, jak tato data organizovat, popisovat a vyhledávat, o nichž bude řeč později. 6 7
http://delicious.com http://digg.com
29
K nejznámějším zástupcům media sharing platforem patří Flickr8, YouTube9 a iTunes10.
Photo sharing - tagging, organizování dat a prezentace Nejtypičtějším příkladem sdílení medií je sdílení fotografií a obrázků v elektronickém formátu. V době digitálních fotoaparátů je to ta nejjednodušší a nejpohodlnější cesta, jak velké množství dat přehledně setřídit, bezpečně uložit a zprostředkovat ostatním. Dnešní trh nabízí širokou paletu aplikací, poskytujících svým uživatelům bohatou škálu funkcí a placených či bezplatných služeb. Přestože každá z photo sharing platforem je jiná, všechny mají základní funkce společné - nabízejí webový formulář k nahrání obrázků z uživatelova počítače na server. Většina photo sharing webů dále nabízí možnost organizovat obrázky do alb, nastavovat jim oprávnění pro prohlížení a použití, přidávat titulky, poznámky a vysvětlivky a mnoho z nich umožňuje svým uživatelům sdružovat se do uzavřených skupin, v rámci kterých nejen navzájem sdílejí svoje dílo, ale mohou o něm navíc diskutovat a vyměňovat názory. (Bell, 2009) Největším a nejpopulárnějším photo sharing systémem je v dnešní době Flickr. Většinu svých funkcí nabízí uživatelům zdarma, placené jsou nadstandardy typu neomezeného množství paměti nebo permanentní archivace originálních obrázků s vysokým rozlišením. Vyznačuje se širokou komunitou uživatelů, které zahrnuje množstvím zásuvných modulů do webových prohlížečů a softwarových balíčků k úpravám sdílených fotografií. Všechny obrázky, sdílené v rámci Flickru, jsou standardně provázeny metadaty uvádějícími název, jméno uživatele a datum nahrání na server. Kolekce obrázků jednoho uživatele se nazývá photostream. Obrázky ve photostreamu nemají žádnou logickou organizaci, pouze jsou řazeny podle data jejich nahrání na server, nejnovějšími počínaje. Většina photo sharing systémů včetně Flickru je proto následně opatřena další funkcionalitou pro organizaci sdílených dat – jejich třídění do skupin a galerií (hierarchických struktur podobných adresářům) a klasifikaci pomocí doplňkových metadat. Mnoho z nich navíc nabízí možnost přidávat tagy i k obrázkům jiných uživatelů, pokud to 8 9 10
dovolují jejich privátní nastavení. Flickr v této souvislosti nabízí svým uživatelům Organizr 11 - vysoce výkonný nástroj pro správu fotografií. V jeho rámci je možné seskupovat obrázky do skupin a dávek a přiřazovat jim dodatečné informace buď jednotlivě, nebo hromadně. Mezi příklady dodatečných informací lze uvést hot-spot anotace (vysvětlivky přidané přímo do obrázku), popisky, komentáře nebo geotagy (tagy určující geografické souřadnice místa, odkud fotografie pochází). Pro zvýšení přitažlivosti lze sdílené fotografie kromě výše uvedených metadat opatřit navíc i zvukovým doprovodem – hudbou a/nebo vyprávěním. Tento způsob multimediálního propojování se nazývá photocasting. Nejpřitažlivější formou, jak prezentovat své fotografie ostatním, je pak sestavit z nich tematické slideshows – série po sobě následujících obrázků automaticky se měnících po uplynutí daného časového intervalu. K tomuto účelu slouží celá řada na internetu dostupných aplikací. Příkladem za všechny lze uvést aplikaci SlideFlickr, s jejíž pomocí uživatelé mohou vytvářet slideshows a vkládat je do svých blogů, webových prezentací nebo osobních profilů na social networking webech.
Podcasting Další velice rozšířenou formou sdílení medií je tzv. podcasting. Podcast je audio program, uložený v elektronickém formátu a dostupný v prostředí internetu. Pojmem podcasting je pak označován proces automatického přijímání audio nebo video souborů na základě přihlášení k jejich odběru formou registrace RSS 2.0 feedů. Podcasty se zakládají na stejné technologii jako blogy a jsou v tomto směru jejich odnoží. Ve stručnosti by se daly podcasty označit jako audio blogy, které je možné stáhnout a uložit do svého počítače nebo přenosného media přehrávače a kdykoli později si je poslechnout a vrátit se k nim. K registraci a stahování podcastů je potřeba použít specializovaný program, tzv. podcatcher. Podcatcher je nástroj pro automatické spravování výběru a stahování podcast feedů. Jeho úkolem je přečíst informace obsažené v RSS souboru, roztřídit je a prezentovat 11
http://www.flickr.com/photos/organize/
31
je uživateli ve vhodném a čitelném formátu.
Legislativa a bezpečnost Svobodná prezentace a volná dostupnost obrovského množství multimediálních dat zákonitě vede i k celé řadě problémů. Mezi nejzávažnější nesporně patří bezpečnost obsahu a ochrana autorských práv. Vzhedem ke skutečnosti, že stále rostoucí skupina uživatelů internetu je nezletilých, je bezpečnost dat velice aktuálním problémem. Zatímco vizuální soubory lze alespoň základním způsobem kontrolovat a zavedené photo sharing systémy ve svých podmínkách používání trvají na jejich bezúhonnosti (nebo alespoň na označení jeho obsahu značkou upozorňující na obsah nevhodný pro děti), podcasty vznikají zcela živelně a kontrola jejich obsahu je prakticky neproveditelná. V tomto duchu je proto kladen velký apel především na rodiče nezletilých uživatelů, aby toto riziko nepodceňovali a důsledně kontrolovali a vybírali, které obsahy jsou pro jejich děti přípustné a vhodné. Ochrana autorských práv je dalším komplexním problémem, souvisejícím se sdílením multimediálních souborů. Většina zavedených photo sharing webů dovoluje uživatelům pod svými účty prezentovat výhradně fotografie a obrázky, jichž jsou autorem a k nimž mají tím pádem veškerá autorská práva. Zveřejňování obrázků z cizích zdrojů, ať už v původní formě nebo editovaných, není z legislativních důvodů povoleno. Ochrana autorských práv je velice striktní a znemožňuje komukoli kromě jejich majitele nebo oprávněných osob jakoukoli manipulaci s chráněným předmětem (stahování, editaci, zveřejňování, atd.). Vzhledem k možnostem, které dnešní internet nabízí, je tato ochrana v mnohých případech příliš silná a rigidní. Z toho důvodu mnohé Web 2.0 stránky nabízejí vystavovatelům možnost autorská práva upravit prostřednictvím Creative Commons. Creative Commons je licenční mechanismus nabízející alternativy k tradičnímu copyrightu, který dává autorům možnost poskytnout svoje dílo k dalšímu použití prostřednictvím nastavení některé ze šesti alternativních licencí, upravujících podmínky komerčního i nekomerčního využití díla, jeho stahování, další šíření, použití, editace a remixování (CreativeCommons.org, 2011). 32
1.3.1.5 E-Commerce Fenomén webu 2.0 se nevyhnul ani obchodní sféře. Již ve svých počátcích obchodní gigant Amazon12 založil svůj úspěch na spolupráci se svými zákazníky tím, že jim umožnil aktivně se k zakoupeným knihám vyjadřovat a spolupodílet se na jejich recenzích. Postupem času se vyjádření čtenářů na Amazonu stalo směrodatným ukazatelem úspěchu či propadu daného titulu. Vyhraněným příkladem transformace Web 2.0 do komerční oblasti je aukční síň ebaY13. „ebaY je světové online tržiště; místo, kde se setkávají prodávající s kupujícími a obchodují téměř se vším.“ (eBay.com, 2011) ebaY poskytuje svým uživatelům pouze platformu, na které mohou uskutečňovat svoje obchody, zatímco veškerý obsah – nabízené zboží, profily prodávajících i nakupujících, hodnocení produktů i uživatelů – je generován čistě uživatelskou komunitou.
1.3.2 Platformy orientované na komunikaci a vztahy V tradičním slova smyslu je vytváření sociální sítě chápáno jako proces navazování, rozvíjení a udržování přátelských a profesionálních vztahů ku prospěchu obou stran. Dnes je tento pojem používán spíše k označení aktivit, využívajících webové nástroje k interakci a spolupráci. Sociální sítě přinášejí novou dimenzi využití webu – vedle vzájemného propojování webů přidává spojení mezi lidmi a komunitami. (Bell, 2009) Lidé mají tendenci využívat prostředí internetu ke vzájemnému kontaktování již od jeho počátků. V tomto směru se nejedná o nic nového. Web 2.0 pouze vytváří nové příležitosti a nové metody jak navazovat a pěstovat vztahy mezi lidmi sdílejícími obdobné sociální, osobní nebo profesionální zájmy. Zatímco úlohou platforem pro sdílení informací a médií je informovat, vzdělávat a bavit, cílem social networking aplikací je poskytovat prostor pro vytváření osobních profilů – sdílení informací o uživatelích samotných a jejich sítích přátel, příbuzných a kolegů. (Shelly/Frydenberg, 2010) Narozdíl od mnohých systémů, oblíbených a rozšířených nejčastěji v oblastech odborných 12 13
http://www.amazon.com http://www.ebay.com
33
a vzdělávacích, založených na principu výměny informací typu otázka - odpověď mezi dvěma osobami, social networking systémy kladou důraz především na snadnost použití, spontaneitu a personalizaci. Jednotlivé social network aplikace se navzájem mohou velice lišit, základní strukturní a funkční vlastnosti však u většiny z nich zůstávají zachovány. Každý uživatel musí být v systému registrován. Po své registraci má k dispozici svou osobní stránku pro vytvoření osobního profilu, vyhledávací mechanismus pro vyhledávání dalších osob a seznam svých kontaktů – přátel. Přes individuální rozdíly jednotlivých řešení, stránky většiny social networking webů obsahují následující prvky: •
autentifikaci uživatele
•
stránku s profilem
•
postranní lištu
•
sociální sítě, kterých je uživatel členem (skupiny, přátelé, …)
•
prostor pro sdílení médií (fotografií, videí)
•
prostor pro vzájemné zanechávání zpráv a vzkazů
•
diskusní skupiny nebo prostory pro komunikaci v reálném čase, tzv. chat rooms
Pravá síla budování sociálních sítí se ovšem projeví až ve chvíli, kdy se jednotlivé sítě přátel začnou navzájem překrývat. Většina systémů umožňuje svým uživatelům prohlížet sítě přátel svých přátel, případně je kontaktovat a/nebo zařadit do svého vlastního seznamu. Přátelé přátel jsou označováni jako „nepřímé“ kontakty nebo kontakty druhé úrovně, tzv. second-level contacts. Ti dohromady s jejich přáteli tvoří skupinu takzvaných „rozšířených“ kontaktů, tzv. extended contacts. Rozšířené kontakty mohou být velice užitečnou a přínosnou možností v případech, kdy uživatelé používají sociální síť k hledání práce nebo lidí s konkrétními schopnostmi nebo znalostmi. Typickými představiteli celosvětových social networking systémů jsou nepochybně Facebook14, LinkedIn15 a Twitter16. Facebook vznikl v roce 2004 jako síť pro vzájemné kontaktování studentů Harvardské Univezity. (Shelly/Frydenberg, 2010) V současné době Facebook registruje přes 500 14 15 16
milionů aktivních uživatelů s desítkami registrovaných přátel a skupin. (Facebook.com, 2011) Svým příznivcům nabízí širokou paletu nástrojů k osobní i komerční prezentaci (prostory pro multimediální prezentaci, blogy, aplikace), komunikaci (Zeď – stránka v rámci uživatelského profilu vytvořená ve stylu blogu určená pro zanechávání zpráv, poznámek a komentářů, nejrůznější diskusní skupiny, online chat) a zábavě. Facebook dnes je předním představitelem všeobecného sociálního systému bez vyhraněné specializace, sloužící svým uživatelům ve všech oblastech života – profesní, obchodní, a především soukromé. LinkedIn je naproti tomu příkladem systému s určenou specializací. Je určen k navazování a správě kontaktů týkajících se profesní oblasti. V současné době registruje přes 90 milionů uživatelů, kteří jej používají k cílenému hledání pracovních příležitostí, nových zaměstnanců a spolupracovníků nebo obchodních kontaktů. (LinkedIn.com, 2011) Kromě jiných služeb nabízí svým uživatelům navíc možnost zúčastnit se odborných diskuzí v rámci diskusní fór, získat kredit odborníka a zvýšit tím svoje šance při aktivním hledání zaměstnání. Poněkud zvláštním typem social networking systému je Twitter. Twitter je online aplikace vytvářející sociální síť na základě posílání a dostávání krátkých zpráv od dvou skupin lidí: 1. od kterých uživatel zprávy dostává. Členové této skupiny kontaktů se nazývají following („následuji ho“) 2. kterým uživatel zprávy zasílá., tzv. followers (následovníci) Každá zpráva (tzv. tweet), kterou uživatel pošle, je pak automaticky rozeslána všem následovníkům, kteří ji mohou přeposlat zase svým následovníkům dál (tzv. retweet). Řetězením dalšího a dalšího přeposílání se každá taková zpráva může lavinovitě šířit mezi obrovským počtem lidí, čehož s úspěchem využívají vedle marketingových pracovníků především PR manažeři politiků a celebrit. Přes všechna pozitiva a výhody, které internetové sociální sítě přináší, nelze zapomínat ani na jejich nesporná rizika. Největším z nich je nepochybně ochrana osobních údajů. Přestože většina etablovaných systémů v tomto směru nabízí celou škálu komplexních nástrojů jak svá osobní data před zveřejněním chránit, zůstává na zodpovědnosti uživatele, 35
do jaké míry tak učiní. Dalším často diskutovaným problémem je ochrana dětí a mladistvých před osobami zneužívajícími anonymitu sociálních systémů k nežádoucím účelům. Hlavní důraz zde opět leží na zodpovědném přístupu rodičů, jejichž úkolem je provádět osvětu a své děti v tomto směru kontrolovat a chránit. V neposlední řadě je třeba zmínit i riziko, které s sebou přináší „trvanlivost“ informací uložených v databázích Web 2.0 systémů celkově. Přestože si tuto skutečnost mnoho lidí, denně využívajících služeb těchto aplikací, neuvědomuje, data, která zde uloží (ať již jde o nevhodné příspěvky do diskuzí všeho druhu, osobní informace nebo multimedia) jsou pro ně pak prakticky nezničitelná a mohou být buď třetími osobami zneužita, nebo vést k vlastní diskreditaci. Typickým příkladem jsou v láskyplné dobré víře prezentované fotografie nahých malých dětí, které jsou běžně k vidění na ženských a rodinných portálech, nebo příspěvky uživatelů Facebooku v diskuzích k sexuálním tématům. Každý by se proto měl mít na pozoru, jaké informace „internetu“ poskytuje, a
měl by si
uvědomovat, jakým způsobem se mu mohou časem vrátit.
1.3.3 Virtuálni světy Speciálním případem sociální sítě jsou tzv. virtuální světy. Jedná se o 3D vizualizace probíhající v reálném čase. Narozdíl od všech výše uvedených systémů, týkajících se více či méně reálného života, virtuální světy jsou světy čistě smyšlené. V jejich prostředí si jejich uživatelé vytvářejí naprosto nové fiktivní identity, které s jejich reálnou „pozemskou“ existencí mají jen málo nebo vůbec nic společného. Virtuální světy nabízejí svým obyvatelům možnost stvořit sám sebe - svoje fyzické i sociální okolí - úplně znova a od začátku čistě podle svých přání, preferencí a představ. Charakteristickým zástupcem virtuálního světa je Second Life17, který dnes registruje více než 18 milionů aktivních uživatelů (Second Life Wiki, 2011) „Second Life je virtuální svět. Ne, Second Life je 3D online digitální svět vyfantazírovaný, 17
http://secondlife.com
36
vytvořený a vlastněný svými obyvateli18.“ (Rymaszewski, 2007) Každý uživatel, tzv. rezident, je zastupován svým avatarem.
Obrázek 9 (Second Life – Avatar) Zdroj: Second Life aplikace
Avatar je virtuální trojrozměrná „podoba“, kterou si každý uživatel zvolí a stvoří naprosto svobodně podle svých představ (většina uživatelů volí nějakou formu lidského vzezření, výjimku ovšem netvoří ani vystupování v podobách zvířat, mystických postav, rostlin, kamenů nebo útvarů zcela abstraktních). Avatary mezi sebou komunikují prostřednictvím řady komunikačních kanálů – lokálního chatu, chatu v rámci organizované skupiny, zasílání cílených zpráv19 nebo hlasu. Kromě veškerého „lidského“ pohybu se avatary v prostoru přemisťují navíc létáním nebo teleportem. V rámci celého světa Second Life vládnou přísná pravidla chování, vzájemné interakce a etikety, tzv. Šestero. Přísně zapovězena je netolerance vůči druhým, obtěžování, jakékoli formy útoku, vyzrazování osobních dat, nemravnost a narušování klidu a míru. Porušování výše uvedených všeobecných pravidel v místech, kde nejsou výslovně majitelem území určena a povolena pravidla jiná, je sancionováno podle závažnosti provinění až do výše vyloučení z komunity 18 19
Second Life nazývá své uživatele „rezidents“ Global instant messaging (tzv. IM) zasílá cílené zprávy konkrétnímu komunikačnímu partnerovi
37
Second Life. (Rymaszewski, 2007) Aby iluze paralelního světa byla dokonalá, disponuje Second Life i celou svou vlastní ekonomikou. Oficiální měnou je zde tzv. Linden20 dolar (L$), směnitelný za americké dolary a ostatní měny na bázi tržních měnových kurzů. Rezidenti mohou mezi sebou navzájem obchodovat21, mohou vlastnit movitý i nemovitý majetek.
Obrázek 10 (Výřez mapy Second Life virtuálního světa) Zdroj: SecondLife.com
Mohou se svobodně rozhodnout, jak chtějí svůj čas v Second Life trávit a podle toho si zvolit způsob „financování“ - vydělávat peníze (L$) přímo v rámci Second Life světa nebo svůj „druhý život“ financovat „zvenčí“ nákupem Linden dolarů výměnou za některou z reálných měn. Obdobně jako „klasické“ sociální sítě nabízí Second Life svým obyvatelům možnost setkávat se s lidmi a poznávat nové přátele, vzájemně spolu komunikovat, organizovat se do zájmových skupin, atd. Co ho ovšem, podle mého názoru, právem řadí do rámce tématu Web 2.0, je jeho princip rozvíjení sebe sama na základě příspěvků a tvorby jeho uživatelů. Sám o sobě tvoří Second Life – stejně jako reálný svět – pouze platformu připravenou žít, 20
21
Tvůrcem Second Life je společnost Linden Research, Inc., vystupující pod obchodní značkou Linden Lab. Mohou obchodovat i přímo s Linden Lab a nakupovat od ní nově vytvořené pozemky.
38
měnit se a rozvíjet díky tvůrčí činnosti svých obyvatel. K tomuto účelu pak nabízí celou paletu nástrojů k vytváření nového obsahu. Úpravou avataru počínaje a stavbami v nově vytvořených lokalitách konče jsou téměř veškeré objekty v Second Life dílem jeho obyvatel, kteří k vytvořeným objektům vlastní též veškerá autorská práva a mohou s nimi volně nakládat a obchodovat v rámci světa Second Life i mimo něj.
1.3.4 Mashups Popudem ke vzniku tzv. mashup stránek bylo opět chování uživatelů. V rámci velice krátkého času jsme si zvykli hledat a nacházet na webu stále konkrétnější a specifičtější informace – nejbližší autobusovou zastávku nebo japonskou restauraci, nejbohatší loviště ryb, nejlevnější vysavač nebo třeba nejžhavější novinky z oblasti výzkumu vesmíru. Všechny tyto informace je nám „internet“ sto poskytnout díky mashups – webovým stránkám kombinujícím data z jednoho nebo více externích zdrojů a prezentujícím je v nových souvislostech. Mashup aplikace na příslušný dotaz uživatele vyhledají a načtou data z jednoho místa na webu, doplní je odpovídajícími daty dodanými ze stejného nebo dalšího zdroje, přetřídí, uspořádají a následně uživateli zpět prezentují v přehledné a jednoduché formě. (Chow, 2008) Veškeré kouzlo mashups by ovšem nemohlo spatřit světlo světa, kdyby nebyly splněny dvě základní podmínky: 1. Vývojářům bylo třeba otevřít přístup k objemům dat, jež by sami neměli nikdy možnost nashromáždit. Bylo třeba poskytnout k dispozici obsahy databází - ať už těch obrovských světových databází typu Google Maps, Flíckr, Amazon, YouTube nebo Yahoo!, nebo databází menšího rozsahu poskytujících data lokálního, oborového nebo firemního charakteru. 2. Navíc bylo nezbytné poskytnout vývojářům standardizované prostředky, jakými mohou s těmito vzdálenými datovými zdroji komunikovat. Těmito prostředky se staly webové služby, API rozhraní a protokoly webových služeb, o kterých bude podrobněji pojednáno v dalších kapitolách.
39
Obrázek 11 (ProgrammableWeb.com - Nejpopulárnější mashups k 18.1.2012) Zdroj: ProgrammableWeb.com
Teoretické i praktické možnosti nasazení a použití mashups, jak naznačuje obrázek 11, se zdají být téměř neomezené. Přesto jsou však nejčastěji nasazovány v souvislosti s geografickými informacemi nebo v oblasti elektronického obchodu. To je z části dáno tím, že mnohé informace uživatelé skutečně žádají dohledat právě ve spojitosti s jejich geografickou polohou, nebo se zajímají o porovnání nabídek na trhu. Hlavní důvod ovšem spočívá v potřebě jednoznačné identifikace „párovatelných“ dat, ze kterých je následně možné sestavit smysluplnou informaci. K tomu je nezbytné mít k dispozici určitý společný atribut - klíč, podle kterého můžeme data v různých zdrojích od různých poskytovatelů vyhledávat. Takovým klíčem může být cokoli, pokud jsme schopni dostatečně zajistit jeho unikátnost. Jména (ať už osob, předmětů nebo geografických míst) se k tomuto účelu většinou nehodí, neboť je obvykle možné napsat je v několika variantách, pravopisných chybách, plurálu či v synonymech. Naproti tomu katalogová identifikační čísla výrobků nebo geografické souřadnice jsou pro tyto účely optimální. (Feiler, 2008) Ať již je klíčem jakýkoli atribut a ať už jsou míchána jakákoli data, jedna vlastnost je pro všechny mashup aplikace společná a charakteristická – jsou koncipovány tak, aby 40
interakce s uživatelem probíhala vždy co nejkratší a nejpřímější cestou. Většina mashups se proto omezuje na pouhé dva kroky – formulář pro zadání dotazu hledání a následnou prezentaci zpracovaných výsledků. Obecně by se dalo říci, že mashup aplikace v dnešní době zažívají období prudkého rozvoje díky dvěma základním faktorům: •
přímočarému vystupování, které jim dodává vysokou oblibu uživatelů
•
relativní snadnosti jejich vývoje a dostupnosti obrovského množství nejrůznějších dat, které pro změnu zajišťují přizeň jejich vývojářů.
2 Technologie Web 2.0 Původní web, Web 1.0, se vyznačoval poměrnou jednoduchostí a neměnností. Jak již naznačil obrázek 1, komunikace probíhala pouze po trase klient-webový server a zpět. Přestože již byly na světě určité prostředky pro zpestření čistě statických HTML stránek 41
(jako například javascript na straně klienta nebo základní možnosti spouštění skriptů na straně serveru), jejich možnosti využití byly zatím velmi omezené. Co se tedy od té doby změnilo a jaké nové prostředky vznikly, aby bylo možné vytvářet webové aplikace, jak je známe dnes?
2.1 Skriptování na straně serveru Jedním ze základních stavebních kamenů dynamicky generovaných webových aplikací je možnost spouštění programů - skriptů na straně serveru. Skriptování na straně serveru je definováno jako technologie webového serveru, kde uživatelův požadavek je uspokojen spuštěním a provedením skriptu přímo v prostředí webového serveru za účelem dynamického vygenerování webové stránky. (Dedicated Server School, 2010) Jinými slovy řečeno, klient odešle svůj požadavek na server, kde je následně spuštěn program – skript, který v konečném důsledku vygeneruje HTML stránku, která je odeslána zpět klientovi. Přestože je tento princip obecně shrnován pod pojem skriptování, tímto programem může být prakticky cokoli od jednoduchého skriptu obsahujícího několik PHP vsuvek mezi HTML kódem až po robustní enterprise webové aplikace. Společným jmenovatelem server-side skriptování je, že jejich obsah je „neviditelný“ ze strany klienta. To znamená, že pokud jsou dodržena pravidla zabezpečení serveru, klient nemá žádnou možnost dostat se ke zdrojovému kódu skriptu. Typickými úlohami zpracovávanými skripem na straně serveru jsou například •
dynamické editování obsahu webových stránek,
•
zpracování dat obdržených vyplněním a odesláním HTML formulářů,
•
zprostředkování přístupu k datům uloženým v databázi,
•
customizace webových stránek – přizpůsobení podle individuálních potřeb uživatele, nebo
•
zajištění bezpečnosti.
Oblíbenými programovacími jazyky pro dynamické generování HTML stránek jsou například Perl, PHP, ASP.NET, JSP, Ruby, ColdFusion nebo Python. Některé z nich budou ve stručnosti představeny v následujících kapitolách. 42
2.1.1 Rozhraní CGI CGI skriptování je pravděpodobně historicky nejstarším způsobem dynamického generování webových stránek. „The Common Gateway Interface (CGI) je jednoduchým rozhraním pro spouštění externích programů, softwaru nebo vstupních bran v prostředí informačního serveru, a to způsobem nezávislým na platformě. V současné chvíli jsou v tomto směru podporovanými servery HTTP servery.“ 22 (RFC 3875, 2004) Jinými slovy řečeno, CGI rozhraní definuje způsob, jakým webový server deleguje generování webových stránek na externí spustitelné soubory, tzv. CGI skripty. CGI skripty jsou kompilované, často stand-alone aplikace, obvykle napsané v některém ze skriptovacích jazyků. (Wikipedia.org - CGI, 2012) Může se jednat o aplikaci jakéhokoli poslání a rozsahu, musí však splňovat dvě základní podmínky: •
být schopna přebírat parametry předané pomocí CGI rozhraní
•
generovat odpověď v HTTP formátu zapisovanou na standardní výstup
Z bezpečnostních důvodů nebývá podpora CGI ve webovém serveru implicitní, je třeba ji explicitně povolit. Komunikace klienta se serverem probíhá stejným způsobem jako v případě ostatních skriptů – klient pošle na server HTTP požadavek na určitou URL adresu, ukazující na CGI skript, a případné očekávané parametry. Že má být požadované URL obslouženo CGI skriptem server většinou pozná podle toho, že cesta ukazuje do adresáře,
který je konfigurací serveru určen pro spustitelné CGI soubory. V případě
webového serveru Apache jsou CGI skripty typicky uloženy v adresáři cgi-bin. Volaný skript provede svou úlohu a výsledek vypíše ve formě HTTP odpovědi na standardní výstup.
22
The Common Gateway Interface (CGI) is a simple interface for running external programs, software or gateways under an information server in a platform-independent manner. Currently, the supported information servers are HTTP servers.
43
Obrázek 13 (Obsluha požadavku CGI skriptem) Zdroj: Vlastní
Hlavní výhody nasazení CGI skriptů spočívají v relativní svobodě při volbě programovacího jazyka a ve vyšší rychlostí binárních (kompilovaných) skriptů v porovnání s jejich interpretovanými protějšky. Tyto pozitivní stránky jsou na druhé straně vyváženy několika podstatnými nevýhodami. Při použití CGI skriptu je potřeba počítat s jejich náročností na zdroje serveru, protože pro každý požadavek je spouštěn nový proces. CGI technologie navíc neobsahuje žádnou podpůrnou infrastrukturu, takže veškerou funkcionalitu vyšší úrovně, jakou je například authentikace uživatelů nebo ukládání cookies23, je nezbytné od základu zajistit. Neobsahují ani podporu pro session management24, takže realizace dnes běžných úkolů, jako například nákupního košíku online obchodu, je při použití CGI sktiptů více než obtížná. Navíc jsou prakticky nekontrolovatelné ze strany administrátora a představují ohrožení provozu hostujícího serveru. Z toho důvodu se jim většina poskytovatelů web hostingu snaží vyhnout a preferují alternativní, méně rizikové způsoby dynamíckého generování webu.
2.1.2 PHP, ASP PHP25 je skriptovací programovací jazyk, určený v první řadě k vývoji dynamického webu. 23 24 25
informací přizpůsobených potřebám konkrétního uživatele ukládání stavu v průběhu jedné konverzace client-server PHP: Hypertext Preprocessor
44
Jedná se o jazyk interpretovaný, tzn. že zdrojový kód není do strojového kódu kompilován předem, ale je překládán (interpretován) až za běhu programu webovým serverem vybaveným vestavným modulem pro překlad PHP.
V současné době existuje i
kompilovaná forma jazyka PHP vhodná ke tvorbě konzolových a desktopových aplikací. Primárně však funguje jako filtr přebírající vstup ze souboru nebo streamu obsahujícího text a/nebo PHP příkazy, a produkující jiný datový stream – nejčastěji výstup v podobě HTML kódu. Od verze PHP 4 překládá PHP parser vstup do formy bytecodu pro zpracování Zend Enginem, což přináší výrazné zvýšení výkonu. (Wikipedia.org – PHP, 2012) PHP je jedním z nejoblíbenějších programovacích jazyků v oblasti vývoje webových aplikací. Za svou popularitu vděčí především •
variabilitě možností nasazení - od jednoduchých skriptovacích značek vkládaných přímo do HTML kódu až po komplexní, robustní aplikace
•
obecné široké podpoře – může být nasazen na většině webových serverů, běží pod většinou operačních systémů a je schopen spolupracovat s mnoha databázovými stroji
•
snadnému deploymentu a kontrolovatelnosti ze strany administrátora
•
bezplatnému použití i pro komerční projekty (samotný jazyk PHP je Open Source projektem a nejčastěji bývá nasazován v kombinaci s dalšími bezplatnými nebo low-cost nástroji jako Linux operačním systémem, webovým serverem Apache a databázovým strojem MySQL)
Mezi nejvýznamnější projekty napsané v PHP patří bezpochyby MediaWiki, Joomla!, WordPress nebo Drupal. Rovněž webové stránky, vytvořené použitím těchto nástrojů, jsou napsány v PHP, včetně vrstvy uživatelského rozhraní systémů Wikipedia, Facebook a Digg. (Wikipedia.org – PHP, 2012) ASP je konkurenčním produktem k PHP z dílny společnosti Microsoft a je standardním vybavením MS webových serverů. Pracuje na obdobném principu vsuvek umisťovaných mezi HTML značky. Nejedná se však o samostatný programovací jazyk, nýbrž pouze o jakýsi framework. Výhodou ASP je možnost do značek umístit kód libovolného 45
programovacího jazyka podporujícího Active Scripting, standardně JScript a VBScript (lze použít i jazyky třetích stran, například Perl, REXX nebo Python). Nevýhodou je pevná svázanost s MS produkty a poměrně vysoká náročnost instalace a správy aplikace.
2.1.3 Java EE Velice mocným nástrojem k vývoji nejen webových aplikací je Java EE 26. Jedná se o platformu na bázi programovacího jazyka Java, která rozšířuje původní Java SE 27 o soubor standardizovaných komponent, kontejnerů a služeb určených ke tvorbě a nasazení distribuovaných systémů. Většinou je Java EE nasazována v případech vývoje rozsáhlých podnikových aplikací, kladoucích vysoké nároky na škálovatelnost, spolehlivost a bezpečnost. Pro tyto účely poskytuje sadu standardizovaných komponent usnadňujících rozmístění softwaru (deployment), API rozhraní definujících způsob vzájemného propojení jednotlivých modulů, služeb, určujících způsob jejich vzájemné komunikace, a silnou podporu webových řešení včetně podpory webových služeb, které budou podrobněji probrány v kapitole 3.2.1. Díky těmto svým vlastnostem dnes nachází i stále rostoucí počet příznivců v oblasti realizace velkých „čistě webových“ projektů. Veškeré Java EE aplikace běží v prostředí tzv. aplikačního serveru. Aplikační server představuje jakési „operační prostředí“ a tvoří další vrstvu abstrakce mezi operačním systémem a aplikacemi. Jeho posláním je poskytovat enterprise aplikacím často používané funkce, jakými jsou kupříkladu schopnost komunikace s ostatními počítači, možnost obsluhy webových stránek, management připojení k databázi, podpora transakčního zpracování požadavků, zajištění persistence objektů nebo výměna zpráv mezi aplikacemi. Java EE aplikačních serverů je na dnešním trhu celá řada, všechny však musí splňovat stejné podmínky, a to poskytnout sadu knihoven implementujících jednotné API rozhraní. Tato sada knihoven, přístupná prostřednictvím uniformního API rozhraní, je právě tím, co nazýváme Java EE. Celá koncepce Java EE platformy stojí na rozdělení jednotlivých částí podpůrné 26 27
Java Platform, Enterprise Edition Java Platform, Standard Edition – platforma pro programování v jazyce Java, obsahující virtuální stroj umožňující spouštění Java programů a API rozhraní knihoven základních funkcí a grafického uživatelského rozhraní desktopových stand-alone aplikací (AWT, Swing)
46
infrastruktury do logických vrstev, tzv. Java EE kontejnerů, poskytujících rozhraní pro komponenty, které tomuto rozhraní odpovídají. Aplikace je pak zasazena do rámce této infrastruktury a využívá jejích služeb. Platformy Java EE a Java SE nabízejí kontejnery pro webové a business komponenty.
Webové komponenty nesou formu JSP (JavaServer
Pages) nebo servletu. Business komponenty se pak nazývají EJBs (Enterprise JavaBeans).
Servlet Servlet je webová komponenta určená k dynamickému generování obsahu webových stránek. Implementuje javax.servlet.Servlet rozhraní a je spravován a volán servlet kontejnerem. Když webový server obdrží požadavek na servlet, uvědomí o tom příslušný kontejner, který obratem vyhledá a naloaduje servlet a zavolá na něm odpovídající javax.servlet.Servlet interface service metody k uspokojení požadavku. Jednoznačnou výhodou použití servletu je rychlost jeho odpovědi (je kompilován pouze jednou při prvním spuštění). Nevýhodu pak představuje především značné nepohodlí pro vývojáře, respektive webové designery, protože veškeré formátování webového layoutu je „zamícháno“ do rámce java kódu řešícího funkcionalitu. Z těchto důvodů se servlety hodí k nasazení v případech, kde je potřeba „více počítat, málo formátovat“.
JavaServer Pages Formátovací slabiny servletu řeší JavaServer Pages (JSPs), které jsou, stejně jako servlety, webovými komponentami určenými k vytváření dynamicky generovaného obsahu. JSPs jsou textové HTML dokumenty obsahující tzv. scriptlety – vsuvky Java kódu uzavřené v XML značkách. Při volání k obsluze požadavku je JSP soubor napřed zkompilován do podoby servletu. Jak znázorňuje obrázek 14, tato kompilace je provedena pouze při prvním volání. Při dalších voláních je již obsluha požadavku předána servletu přímo. Proto JSP nabízejí vývojářům pohodlnou cestu k vývoji webových uživatelských rozhraní, která jsou „lehkotonážní“ a zároveň rychlá při zpracování požadavku.
47
Obrázek 14 (JSP – Průběh obsluhy požadavku JSP souborem) Zdroj: Vlastní
Enterprise JavaBeans EJB představují business komponenty nesoucí business logiku aplikace, rozdělenou do jednotlivých logických jednotkek. Ty jsou zapouzdřeny do podoby EJB komponent a spravovány EJB kontejnerem. Jeho funkcí je pak vyhledat a nahrát požadovaný bean, volat na něm příslušné metody, aplikovat pravidla bezpečnosti a poskytnout podporu transakčního zpracování. Enterprise JavaBeans jsou navrženy ve třech různých modifikacích podle určení jejich nasazení. Session beans se starají o záležitosti stavu během jedné session (konverzace). Entity beans jsou persistentní – mohou být uloženy a opět načteny podle potřeby - a reprezentují business objekty aplikace. Message beans jsou komponenty, poslouchající Message Service zprávy odeslané jinými komponentami do messaging queue – Java EE mechanismu pro předávání a přijímání zpráv. Ze všech EJB typů jsou nejméně používané. (Weaver/Mukhar/Crume, 2004) Architektura Java EE webových aplikací je typicky tří až čtyřvrstvá, jak naznačuje obrázek 15, přesto lze jednotlivé vrstvy Java EE technologie použít samostatně. Toho je s oblibou 48
využíváno v případě menších aplikací, které nevyžadují nasazení výkonných, ale poněkud „těžkotonážních“, EJBs.
Obrázek 15 (Java EE architektura) Zdroj: Vlastní
2.1.4 ASP.NET ASP.NET jsou dalším, velice silným nástrojem ke tvorbě rozsáhlých, převážně podnikových, webových aplikací. Obecně jsou, vzhledem ke svému poslání, vnímány jako přímý konkurent Java EE, přestože se od ní v mnohém zcela zásadně odlišují. Byly vyvinuty jako nepřímý nástupce klasických ASP se záměrem odstranit některá zásadní omezení spojená s klasickými ASP.
ASP.NET jako součást pracovního rámce .NET ASP.NET představují aplikační rámec pro průmyslové webové aplikace a jsou jednou ze součástí klastru technologií souhrnně označovaného jako .NET framework. Jednotlivé komponenty pracovního rámce .NET dokumentuje tabulka 1. Občas není hranice mezi jednotlivými komponentami jednoznačně zřetelná. Termínu ASP.NET se například běžně užívá v zúženém pojetí pro označení části .NET class library určené k vytváření webových stránek. Současně se vedle toho stejně běžně tohoto termínu užívá v rozšířeném slova smyslu k pojmenování celé oblasti .NET webových aplikací včetně programovacích jazyků a základních obecných částí .NET class library, které jsou 49
pro vývoj webových aplikací sice využívány, ale přímo s nimi nesouvisejí. (MacDonald, 2010)
.NET programovací jazyky CLR
28
Visual Basic, C#, Jscript.NET, J# and C++ Stroj (engine) provádějící veškeré .NET aplikace a poskytující jim automatické služby, jako kontrolu bezpečnosti, správu paměti a optimalizaci výkonu
.NET knihovna tříd29
Soubor hotové funkcionality. Obsah knihovny je v případech rozsáhlých bloků, týkajících se jedné oblasti, řazen do „technologických setů“ (např. ADO.NET – technologie pro práci s databázemi, nebo Windows Forms – technologie pro tvorbu desktopových uživatelských rozhraní)
ASP.NET
Stroj (engine) hostující .NET webové aplikace, podporující téměř veškerou funkcionalitu předpřipravenou v .NET class library a poskytující služby charakteristické pro webové aplikace (například bezpečnoou authentikaci nebo uchování dat)
Visual Studio
Vývojové prostředí obsahující celou nástrojů pro efektivní vývoj aplikací Tabulka 1 (.NET Framework) Zdroj: Vlastní
ASP.NET aplikace je možné psát v jakémkoli .NET programovacím jazyce. Dokonce je možné podle potřeby v jedné aplikaci různé programovací jazyky kombinovat. To je možné díky „zdvojené“ kompilaci, schematicky naznačené na obrázku 16. V prvním kroku jsou všechny .NET programovací jazyky napřed zkompilovány do tzv. Common intermediate language (CIL nebo pouze IL) – programovacího jazyka nižší úrovně. Tato předkompilovaná forma je dále postoupena ke zpracování virtuálnímu stroji, který jej dále přeloží do platformově závislého strojového kódu a provede. V případě .NET aplikací je virtuálním strojem tzv. CLR30 (schéma .NET frameworku a CLR je obsahem přílohy č. 8). Po formální stránce je soudržnost celého .NET frameworku zajišťována specifikací CLS31.
28 29 30 31
The Common Language Runtime The .NET Framework class library Common Language Runtime Common Language Specification
ASP.NET webové stránky, stejně jako JSP soubory, jsou kompilovány pouze jednou, a to při prvním požadavku na soubor od startu aplikace. Když server obdrží požadavek na webovou stránku, ASP.NET Runtime odpovídající soubor zkompiluje do podoby .NET třídy. Tato předkompilovaná třida je pak dále k dispozici k obsluze dalších požadavků bez potřeby další kompilace. Výsledkem je rychlejši odpověď na požadavek v porovnání s interpretovaným zpracováním.
Web Forms ASP.NET představuje zcela nový model pro tvorbu webových stránek, tvz. Web Forms. Cílem Web Forms je maximalizovat oddělení funkcionality a designu. Z toho důvodu se odklánějí od zatím převládající technologie více či méně komplexních vsuvek funkcionality do rámce HTML kódu a přistupují k formulářovým ovládacím prvkům (Controls) obdobným způsobem jako při tvorbě desktopových aplikací. Každý ovládací prvek je reprezentován objektem na straně serveru – je možné na něm definovat vlastnosti, definovat a volat metody, stará se o správu svého stavu, vyvolává události, na události reaguje (Postback Events) a generuje svou grafickou podobu (HTML výstup). Ovládací prvky se v ASP.NET vyskytují ve dvou variantách: 51
•
HTML
Server
Controls
představují
reprezentaci
„klasických“
HTML
formulářových elementů na straně serveru. •
Web Controls jsou v mnohém podobné HTML Server Controls, ale stavějí na robustnějším objektovém modelu a nabízejí vývojářům celou paletu vlastností a možností pro definování stylu a formátovacích detailů. Především však poskytují podstatně širší zázemí pro řízení běhu aplikace prostřednictvím událostí, založeném na obdobném principu, na kterém fungují ovládací prvky desktopových aplikací. Vzhledem k této volné vazbě na HTML kód mohou Web Controls stejným způsobem nabízet i ovládací prvky, které nemají přímý HTML ekvivalent. Příkladem takových ovládacích prvků mohou být GridView32 control nebo kalendář. Vedle používání Web Controls nabízejí Web Forms i možnost navrhnout a vytvořit své vlastní ovládací prvky, tzv. User Controls, využívající stejné techniky jako Web Controls.
V zásadě sestává každý Web Form ze tří základních částí – z direktiv, obsahujích příkazy pro kompilátor a prohlížeč, z kódu definujícího layout aplikace a z kódu definujícího chování, tzv. Code-Behind. Jednoduchý funkční příklad, demonstrující všechny části ASP.NET Web Form aplikace, je obsahem přílohy č. 9. Stejně jako u všech ostatních technologií určených k vývoji webových aplikací, bylo i v případě Web Forms nutné se vypořádat s problémem „bezstavovosti“ HTTP protokolu. Persistenci dat v rámci jedné klient-server konverzace zajišťuje mechanismus zvaný ViewState. Hodnoty členských proměnných jednotlivých ovládacích prvků mohou být ve ViewState „uskladněny“ a v rámci HTTP konverzace jsou tam a zpět předávány serializované v podobě skrytého (hidden) pole. Jedno pole pak obsahuje hodnoty všech proměnných všech ovládacích prvků, které měly být zachovány. Využití služeb ViewState může být velice užitečným nástrojem, ovšem nese s sebou i dvě podstatná rizika:
• 32
Přenášení velkého objemu dat může vést ke snížení výkonu aplikace. Proto je
„Zobrazuje hodnoty datového zdroje ve formě tabulky, kde každý sloupec odpovídá jednomu atributu a každý řádek představuje jeden datový záznam. Pomocí GridView ovládacího prvku je možné tyto elementy vybírat, řadit a zpracovávat.“ (MSDN.Microsoft.com - GridView, 2012)
52
potřeba uvážit, která data je nezbytně nutné přenášet a v ostatních případech použití ViewState u ovládacích prvků vypnout. •
Serializace ViewState obsahu do skrytého pole probíhá podle jednoduchého, snadno rozluštitelného, algoritmu a obsah skrytého pole je viditelný každému ve zdrojovém HTML kódu stránky. Proto je třeba zajistit, aby se do obsahu ViewState nedostala žádná citlivá nebo osobní data.
Velkou nevýhodou volby ASP.NET pro vývoj webových aplikací je jejich značná platformová i „dodavatelská“ závislost. Tu na druhé straně vyvažují mnohá pozitiva, jakými mohou být například •
rychlost vývoje (Web Forms poskytují jeden zdrojový kód fungující spolehlivě ve všech prohlížečích)
•
rychlé převedení aplikace psané v „klasických“ ASP do ASP.NET (jsou zpětně kompatibilní)
•
jednotný a ucelený objektový model
•
maximální oddělení funkcionality od layoutu a designu webu
•
pohodlné vývojové prostředí (Visual Studio), nabízející možnost debugování kódu a podporu WYSIWYG tvorby designu
2.2 Relační databáze Většina dnešních webů je závislá na datech, která jsou podle požadavků uživatele dynamicky získávána a zpracovávána. Jejich úložištěm bývají zpravidla relační databáze. Jsou založeny na relačním modelu – soustavě dvojrozměrných tabulek (relací) navzájem propojených prostřednictvím systému jednoznačných identifikátorů záznamů – tzv. klíčů. Za jejich oblibou stojí zejména vestavěné transakční zpracování, podpora pro zachování integrity dat a standardizovaný dotazovací jazyk SQL.
2.3 Skriptování na straně klienta Doposud byla řeč o technologiích skriptů prováděných na straně serveru. Jejich význam je 53
pro vývoj dynamicky generovaných webů stěžejní, přesto však jejich výhradní použití nese s sebou určité nedostatky. Tím pravděpodobně nejpodstatnějším je nutnost volání serveru a nového generování celé stránky v případě jakékoli uživatelovy akce vedoucí k požadavku na změnu ve stránce. To by znamenalo zbytečné zatěžování serveru a značné uživatelovo nepohodlí v důsledku zdlouhavého čekání na odpověď.
Tento problém částečně řeší
kombinace skriptů na straně serveru a na straně klienta. „Skriptování na straně klienta“ je v informatice označením techniky, ve které je počítačový program umístěný na webových stránkách vykonáván na straně klienta, tj. webovým prohlížečem uživatele (ne na straně serveru jako u skriptování na straně serveru). Skriptování na straně klienta je důležitou součástí DHTML (Dynamického HTML) umožňujícího mít rozdílný a měnící se obsah zobrazené webové stránky v závislosti na uživatelském vstupu, podmínkách prostředí (jako například čas a den) nebo jiných okolnostech.“ (Wikipedia.org – Skriptováni na straně klienta, 2012) Nejčastěji užívanými způsoby skriptování na straně serveru jsou vsuvky javascript kódu (včetně AJAX technologie) a webové applety33.
2.3.1 Javascript Javascript je pravděpodobně nejpopulárnějším scriptovacím jazykem na straně klienta a v dnešní době jej podporují všechny přední prohlížeče 34. Patří mezi interpretované jazyky, tzn. že je prohlížečem vykonáván bez předchozí kompilace. Byl navržen pro dodání interaktivity statických HTML stránek a vyznačuje se velmi jednoduchou syntaxí, čímž dává do ruky základní programovací nástroj i webovým designerům bez hlubších programátorských znalostí. Pasáže HTML stránky, obsahující javascript, jsou uzavřeny ve <script> formátovacích značkách. Ty pak obsahují přímo části kódu nebo direktivu ukazující na externí soubor, ve kterém je javascript uložen. HTML stránka může části javascript kódu obsahovat v části 33
34
i , direktiva, ukazující na externí soubor, je uložena v sekci . Mezi
Většinou malé programy stažené spolu s webovou stránkou a spuštěné v uživatelově počítači. Nejčastěji používaným jazykem pro psaní appletů je Java. Protože představují pro uživatelův počítač značné riziko, od jejich používání se postupně upouští. Internet Explorer, Firefox, Chrome, Opera a Safari
54
nejčastější úlohy řešené pomocí javascriptu patří reagování na události, načítání a změny obsahu HTML elementů, validace HTML formulářů před jejich odesláním na server, detekování uživatelova prohlížeče
a provedení
případných
specifických úprav,
přizpůsobených konkrétnímu typu browseru, nebo čtení a zápis cookies (informací o uživateli uložených v jeho počítači). Konkrétní jednoduchý příklad, ilustrující typické užití javascriptu, je obsahem přílohy č. 10.
2.3.2 AJAX AJAX35 je základním kamenem pro Rich User Experience. Přestože technologicky není AJAX žádnou novinkou, nýbrž mocnou kombinací již existujících nástrojů, propůjčuje uživateli dosud nepoznané pohodlí v práci s webovými aplikacemi. Nasazením AJAXu se podařilo odbourat jeden z původních negativních dopadů bezstavovosti HTTP protokolu načítání kompletně celých stránek znovu při každém dalším požadavku uživatele. AJAX staví na standardizovaném použití javascriptu a XML. Jedinou skutečnou novinkou je posun původní koncepce javascriptu, který byl celé roky určen a používán výhradně pro skriptování na straně klienta. Díky zavedení třídy XMLHttpRequest 36 dostal javascript zcela nový rozměr – umožňuje „na pozadí“ prostřednictvím HTTP požadavků komunikovat s webovým serverem a aktualizovat podle potřeb uživatele pouze jednotlivé části webových stránek, aniž by bylo potřeba celkového reloadu. Jak již název Asynchronous JavaScript and XML napovídá, aktualizace stránky probíhá typicky asynchronně, aniž by blokovala interakci uživatele s prohlížečem. Po odeslání požadavku skript nečeká na jeho vyřízení, a pokračuje dále ve zpracovávání ostatních úloh. K vyřízení požadované akutalizace se vrátí, jakmile je odpověď serveru přijata a vyhodnocena. Tato stěžejní vlastnost AJAXu ve vnímání uživatele zásadním způsobem eliminuje rozdíly mezi desktopovými a webovými aplikacemi. Vede ke značné úspoře jeho času na jedné straně a současně k úlevě zatížení webového/aplikačního serveru na straně druhé. 35 36
Asynchronous JavaScript and XML XMLHttpRequest nahradil původní ActiveXObject používaný v IE verzích 5 a 6 a je dnes podporován všemi moderními verzemi prohlížečů IE7+, Firefox, Chrome, Safari a Opera.
55
Obrázek 17 (Schéma průběhu AJAX požadavku) Zdroj: W3schools.com - AJAX
Průběh AJAX požadavku schematicky znázorňuje obrázek č. 17. Konkrétní jednoduchý příklad zdrojového kódu je obsažen v příloze č. 11.
3 Architektura Web 2.0 Microsoft MSDN Library definuje softwarovou architekturu jako „proces definování strukturovaného řešení, které splňuje všechny technické i operační požadavky s ohledem na optimalizaci běžných atributů kvality, jako výkonu aplikace, bezpečnosti a říditelnosti (manageability). To v sobě zahrnuje celou sadu rozhodnutí na základě široké řady faktorů, přičemž každé z těchto rozhodnutí může mít značný dopad na kvalitu, výkon, udržovatelnost a celkový úspěch aplikace.“ (MSDN.Microsoft.com – Software Architecture, 2012) Velmi zjednodušeně by se dalo říci, že softwarová architektura postihuje globální strukturu 56
aplikace. V souvislosti s Web 2.0 aplikacemi jsou nejčastěji citovanými pojmy vicevrstvá architektura a servisně orientovaná architektura (SOA).
3.1 Vícevrstvá architektura Vícevrstvá, resp. třívrstvá architektura je nejběžnějším typem architektury webových aplikací. Principem třívrstvé architektury je rozdělení celé aplikace do tří logických vrstev:
•
Prezentační vrstvy, jejíž úkolem je zajišťovat zobrazování výstupu uživateli a přijímat od něj vstupní data. Prezentační vrstvu představuje HTML výstup, s případným doplněním o skripty na straně klienta. Prezentační vrstva je uživateli prezentována nejčastěji prostřednictvím webového prohlížeče.
•
Vrstvy aplikační logiky, nacházející se pod prezentační vrstvou. Aplikační logika je vlastním jádrem aplikace a její úlohou je zajistit vykonávání „poslání“ aplikace. Jinými slovy je možné říci, že aplikační logika dělá to, k čemu je aplikace určena. Je vykonávána webovým, resp. aplikačním serverem, a používá nástrojů skriptování na straně serveru.
•
Datové vrstvy, jejímž úkolem je zajistit persistenci dat - jejich permanentní uložení a možnost znovunačtení v případě potřeby. Typicky je reprezentována relační databází, v úvahu však přicházejí i alternativní datové zdroje, jako například uložení v datovém souboru v rámci filesystému serveru.
Cílem třívrstvé architektury je pak minimalizovat závislosti mezi jednotlivými vrstvami tak, aby bylo možné kteroukoli z nich oddělit a nahradit, a to s co nejmenší potřebou zásahu do ostatních dvou. Této vlastnosti je s oblibou využíváno při výměně datového zdroje nebo při optimalizaci uživatelských rozhraní pro mobilní zařízení.
3.2 SOA Vedle vlastních datových zdrojů mohou dnešní Web 2.0 aplikace využívat i zdroje externí, typickým příkladem tohoto přístupu jsou mashups. Pro zajištění efektivní spolupráce různorodých systémů lze s výhodou využít prostředků servisně orientovaných architektur 57
(SOA) 37. V prostředí webu 2.0 se jedná zejména o tzv. webové služby. Service-Oriented
Architecture
je
paradigmatem
(architektonickým
vzorem)
pro
organizování a používání distribuovaných schopností, které mohou být pod kontrolou různých vlastníků. Popisuje způsob, jakým navrhovat struktury spojující potřeby a schopnosti. (OASIS, 2006) Klíčovou vlastností SOA je podpora integrace služeb, které jsou vlastněny a spravovány nezávisle na sobě. Jednotlivé služby v SOA architektuře existují autonomně, nicméně nejsou od sebe zcela izolovány – musí dodržovat určitou sadu principů, které jim umožňují vyvíjet se nezávisle za současného zachování dostatečného množství společných rysů a standardizace. Základními aspekty, na kterých jsou tyto principy založeny jsou: •
volná vazba – služby mezi sebou udržují minimální závislosti
•
kontrakt služeb – služby dodržují dohodnuté komunikační konvence
•
samospráva – každá služba zapouzdřuje a kontroluje svou business logiku
•
abstrakce – služba veřejně vystavuje pouze svoje rozhraní, vlastní implementace zůstává skryta
•
znovupoužitelnost – celková business logika je do jednotlivých služeb rozdělována tak, aby jednotlivé její části byly znovupoužitelné v analogických případech
•
kompozice – jednotlivé dílčí služby lze skládat do vyšších a komplexnějších celků a vytvářet spojené služby
•
bezstavovost – služby jsou navrhovány tak, aby uchovávaly minimální množství informací určených pro další služby
•
zjistitelnost – služby jsou vytvářeny tak, aby je bylo možno navenek dobře dokumentovat a byly dohledatelné vyhledávacími mechanismy (Erl, 2009)
SOA je základním vzorem pod povrchem Web 2.0 aplikací, na kterém jsou vystavěny další konkrétnější vzory jako například Mashup pattern nebo Software as a Service pattern. (Governor/Hinchcliffe/Nickull, 2009)
3.2.1 Webové služby Webové služby jsou implementací SOA, se kterou se v prostředí Web 2.0 aplikací 37
Service Oriented Architecture
58
setkáváme nejčastěji. Zjednodušeně by se dalo říci, že se jedná o způsob komunikace dvou strojů po síti, jejíž průběh je krok za krokem schematicky znázorněn v obrázku č. 18:
Obrázek 18 (Web service – schéma) Zdroj: Service-Architecture.com
Krok 1: Poskytovatel služby zaregistruje svou službu do registru služeb Krok 2: Konzument služby podá registru žádost o vyhledání služby Krok 3: Registr vyhodnotí dotaz a vráti konzumentovi popis nalezené služby Krok 4: Konzument za použití předepsaného API38 volá službu u poskytovatele Krok 5: Poskytovatel zpracuje žádost a poskytne konzumentovi požadovanou službu První tři kroky nejsou pro volání webové služby povinné. V případě, že konzument služby má k dispozici její popis z jiného zdroje, je možné hledání v registru vynechat a začít rovnou krokem 4. Vzájemná interakce v rámci webových služeb principiálně probíhá formou zasílání zpráv prostřednictvím komunikačního protokolu pro vzdálená volání procedur. Přestože některé služby jsou koncipovány alternativními způsoby, většina webových služeb je dostupná 38
Application Programming Interface
59
pomocí SOAP39. SOAP je komunikační protokol na bázi XML, umožňující aplikacím výměnu informací prostřednictvím HTTP. (W3schools.com – Web Services, 2012) Oproti svému nepřímému předchůdci – protokolu XML-RPC – podporuje uživatelské datové typy, vyznačuje se lepší podporou znakových sad a obsahuje elementární zabezpečení. Může pracovat i sám o sobě, je však mnohem mocnějším nástrojem ve spojení s dalším XML standardem – jazykem WSDL40. WSDL je XML standard, kterým jsou popisovány webové služby a jejich API rozhraní . Nese informaci o dostupných procedurách webové služby, jejich očekávaných parametrech a návratovových hodnotách (včetně stanovení datových typů). (Chow, 2008) Díky svému základu v XML umožňuje WSDL automatické zjištění veškeré funkcionality služby, což značně usnadňuje nejen práci programátora, ale i vyhledávání v registrech webových služeb. Pravděpodobně nejznámějším typem registru webových služeb je UDDI. UDDI41 je platformově nezávislý registr na bázi XML, spravující seznam společností činných v prostředí internetu a poskytující mechanismus pro registaci a vyhledávání webových služeb. Poskytuje organizacím možnost nacházet se navzájem, publikovat seznamy svých služeb a definovat, jak tyto služby mohou vzájemně spolupracovat. UDDI sám funguje jako webová služba – je dotazován prostřednictvím SOAP zpráv a poskytuje WSDL dokumenty, popisující pravidla a formáty nezbytné pro interakci s evidovanými webovými službami.(Wikipedia.org - UDDI, 2012)
4 Další využití Webu 2.0 V souvislosti s vykonáváním konzultantských prací pro jednoho ze zákazníků naše firma narazila na zajímavý problém, na jehož řešení navrhujeme systém využívající prvky Webu 2.0. Zadavatelská firma je jedním z hlavních dodavatelů komplexních řešení pro provádění klinických studií a dodává software i hardware určený pro nejrůznější typy měření, prováděných na pacientech v rámci procesu schvalování nových léků.
39 40 41
Simple Object Access Protocol Web Services Description Language Universal Description, Discovery and Integration
60
4.1 Problémová doména Přestože by se mohlo na první pohled zdát, že se jedná o poměrně nekomplikované zadání, opak je pravdou. Tento obchodní model si žádá vyvinout vysoce flexibilní systém-framework, který bude umožňovat jednoduchým, rychlým a nízkonákladovým způsobem vždy znovu unikátně přizpůsobit základní rámec softwaru pro každou klinickou studii. Pro každý tzv. studijní protokol, jenž obsahuje podrobný popis způsobu provadění klinické studie pro konkrétní lék a celou řadu specifických požadavků, souvisejících se způsobem a typy získavaných dat, jejich vizualizací a vyhodnocováním, je potřeba vyvinout na míru upravenou variantu dodávaného software. Každý studijní protokol je jedinečný. Workflow, které pak celý proces průběhu klinické studie řídí, obvykle navíc obsahuje řadu dalších pravidel a omezení, často velmi specifikých pro konkrétního sponsora (tj. farmaceutickou společnost, která lék vyvinula a klinickou studií potřebuje ověřit jeho účinnost). Postupem času, a pod vlivem kontinuálního nárůstu nových požadavků na téměř všechny moduly, se stávající správa a konfigurace dodávaného software staly téměř neudržitelnými.
4.2 Konceptuální návrh řešení Analýzou problému a zamyšlením nad možnými přístupy jsme nakonec dospěli k návrhu agilního procesu, opírajícího se o framework na bázi obráceného řízení (IoC - „Inversion of Control“) a o grafický nástroj pro efektivní tvorbu konfigurací konečných řešení, správu a řízení systému. Tento grafický nástroj navrhujeme řešit formou webové aplikace, a to především z důvodu různého geografického rozmístění participujících aktérů. (zákazník, vývojáři, validace a verifikace, …).
4.3 Základní principy Navrhovaný agilní proces je postaven na jednoduché nadstavbě standardního objektově orientovaného vývoje aplikací. Vychází z představy „skládání“ konkrétních řešení ze samopopisných objektů, které označujeme pracovním názvem „bricks“. Tyto stavební jednotky jsou deklarovány jako třídy rozšířené o sadu speciálních metadat, zajišťujících 61
jejich samopopisnost a umožňujících za pomoci generického nástroje (grafického editoru) jejich snadné skládání do podoby nových konkrétních konfigurací. Pro dosažení potřebné pružnosti musí být navrhovány tak, aby obsahovaly minimální počet vzájemných implicitních vazeb. Závislosti mezi objekty v konkrétním řešení jsou pak definovány konfigurací zvnějšku podle principů „Inversion of Control“ a „Dependency Injection“. Základní koncepce návrhu a vývoje objektově orientovaných aplikací přitom zůstávají zachovány. Celkovou strukturu systému navrhuje softwarový architekt, vlastní implementace je následně v rukou programátorského týmu, jehož úkolem je jednotlivé bricks vyvinout a opatřit potřebnými metadaty na základě pokynů produktového manažera. Pro vývoj prototypu frameworku naše firma zvolila framework .NET, jehož prostředků (uživatelských atributů a mechanismu reflexe) využívá pro připojení a zpětné čtení metadat. Protože všechny informace jsou uloženy přímo ve výsledných binárních (zkompilovaných) modulech, není potřeba připojovat žádné externí soubory obsahující definici metadat. Tím je významným způsobem eliminována četnost výskytu chyb v důsledku nutnosti souběžné editace několika různých souborů.
4.4 Role a případy užití Tento navrhovaný způsob řešení s sebou nese nové požadavky nejen technického, ale i personálního charakteru. Kromě „standardních“ rolí zavádí do procesu nově roli tzv. aplikačního inženýra a předefinovává obsah role produktového manažera. Úlohou produktového
manažera by měla být
správa a řízení veškeré podporované
funkcionality obsažené v repozitáři bricks. Jeho hlavní odpovědnost by pak měla spočívat v soustavném průběžném usměrňování vývoje celého systému
tak, aby nedocházelo
k duplicitám v implementaci na jedné straně a aby pokrýval pokud možno všechny požadavky (současné i předpokládané budoucí) na vytvářená řešení na straně druhé. Roli aplikačního inženýra je v tomto konceptu třeba chápat jako spojující článek mezi vývojáři a členy projektového týmu zodpovědnými za komunikaci se zákazníkem a tvorbu specifikací. Aplikační inženýr nepotřebuje technické znalosti programátora, o to lépe však 62
musí rozumět požadavkům zákazníka. Podílí se na tvorbě konečné specifikace a je schopen sestavovat konečná řešení pro zákazníka za pomocí grafického nástroje. V případě, že požadovaná funkcionalita není v repozitáři k dispozici, iniciuje její dodání vývojovým týmem. Následující schéma ilustruje základní role a případy užití:
Obrázek 19 (Role a případy užití) Zdroj: Vlastní
1. Aplikační inženýr primárně vytváří nové konfigurace (konečná řešení). Využívá přitom zdrojů obsažených v repozitáři bricks. V případě, že požadovaná funkcionalita ještě neexistuje nebo že příslušný brick není konfigurovatelný požadovaným způsobem, vloží do systému požadavek na jeho vytvoření nebo úpravu. 2. Základní kompetencí produktového manažera je správa repozitáře bricks. 63
Současně produktový manažer monitoruje a schvaluje požadavky na vytvoření nebo úpravu bricks, případně sám takové požadavky zadává. 3. Programátor na základě nových požadavků vytváří nebo modifikuje bricks a mění přitom stav požadavků podle postupu práce. 4. Zákazník odsouhlasuje finální specifikace a během procesu sestavování má možnost kontrolovat výsledný produkt nebo jeho části (např. vzhled a obsah dialogových oken, menu, chybových hlášení, apod.). 5. Projektový manažer vkládá do systému specifikaci řešení vytvořenou projektovým týmem ve spolupráci se zákazníkem a sleduje průběh projektu, tj. postup vývoje a konfiguračních prací.
4.5 Architektura navrhovaného systému Architektura systému vychází z oddělení uživatelského (webového) rozhraní od aplikační logiky uložené ve webových službách42. Jednotlivé moduly uživatelského rozhraní korespondují s výše popsanými případy užití:
Obrázek 20 (Schéma celkové architektury systému bricks) Zdroj: Vlastní 42
Služby systému mají spíše integrační charakter. V reálném nasazení mohou vycházet z již existujících a osvědčených řešení. Služba „DMS“ může být založena např. na „MS Sharepoint“, služby „Brick Repository“, „Config Repository“ a „Change Request DB“ mohou využívat kupříkladu „MS Team Foundation Server“. Pro autorizaci lze využít „MS Active Directory“ nebo LDAP server.
64
4.5.1 Modul Config Editor Tento modul reprezentuje grafický editor pro sestavování konečných řešení. Komunikuje se
službou „Brick Repository“, která mu poskytuje detailní informace o typech a
metadatech dostupných bricks. V procesu konfigurace konkrétní závislosti může pak editor uživateli nabídnout seznam pouze takových bricks, které odpovídají danému typu a metadatům. Uživatel tímto způsobem krok za krokem postupně skládá konfiguraci celého řešení nebo jeho části. Pro dosažení efektivní práce s tímto modulem bude zřejmě nutné extensivní nasazení prostředků AJAX. Zajištění persistence hotové konfigurace je v kompetenci služby „Config Repository“.
4.5.2 Modul Config Management Modul Config Management umožňuje přístup a vyhledávání hotových konfigurací. Jeho služeb v určitých případech může využívat: •
aplikační inženýr (např. pro převzetí částí existujícíh konfigurací při sestavování nového řešení),
•
projektový manažer (např. při tvorbě specifikací odvozených od specifikací již existujících)
•
zákazník (pro průběžnou kontrolu vývoje nového řešení).
Uživatelské rozhraní tohoto modulu se obrací na službu „Config Repository“, zodpovědnou za persistenci a poskytování hledaných informací.
4.5.3 Modul Specification Management Uživatelské specifikace jsou primárním podkladem pro tvorbu finálního řešení, a proto pro jejich evidenci a zpřístupňování je navržen samostatný modul. Jeho klíčovým partnerem je služba DMS (Document Management System), zajišťující persistenci dokumentů.
65
4.5.4 Modul Change Request Management Během sestavování konkrétní konfigurace využívá aplikační inženýr v maximální míře již existujících bricks a jejich nastavení. Pokud požadovaná funkcionalita není realizovatelná již dostupnými prostředky, vkládá do systému požadavek na změnu. K tomu je určen čtvrtý a poslední ze základních modulů navrhovaného systému – modul Change Request Management. Grafické rozhraní tohoto modulu navíc kromě jiného nabízí produktovému a projektovému manažerovi možnost generování přehledů o postupu prací a zadávání úprav stavu jednotlivých požadavků.
4.6 Možnosti nasazení Řešení je navrhováno s ohledem na co největší míru flexibility a univerzálnosti tak, aby bylo možné jej snadno použít i pro další typy projektů, kde flexibilita a vysoká konfigurovatelnost hrají klíčovou roli. Vzhledem k plánovanému rozsahu této bakalářské práce se v návrhu omezuji pouze na globální architektonické řešení. Detailní návrh výše popsané webové aplikace bude předmětem samostatné práce.
Závěry a doporučení Hlavní přínos mé práce vidím v přehledné dokumentaci aktuálního stavu oblasti Webu 2.0 a vydefinování jeho charakteristických vlastností, kterými se odlišuje od Webu 1.0. Mou snahou bylo zmapovat tuto obtížně postihnutelnou oblast a zprostředkovat čtenáři náhled na Web 2.0 ze tří perspektiv:
•
Prvním pohledem je náhled uživatele, jenž Web 2.0 aplikace nejrůznějších forem a poslání dnes a denně používá. V tomto směru jsem si kladla za cíl roztřídit „džungli“ současného world wide webu a vydefinovat základní typické kategorie běžných Web 2.0 aplikací podle určitých opakujících se charakteristických znaků.
•
Druhá perspektiva nahlíží Web 2.0 ze zorného úhlu webového vývojáře, jehož 66
úkolem je Web 2.0 aplikace vytvářet. V této části jsem se pokusila probádat a zkatalogizovat svět technologií a nástrojů, na jejichž základě jsou Web 2.0 aplikace postaveny a s jejichž pomocí jsou vytvořeny a provozovány. •
Třetí úhel pohledu představuje na praktickém návrhu Web 2.0 aplikaci v širším kontextu, zasazenou, jako jednu ze součástí komplexního řešení, do rámce většího celku.
Smyslem mé práce proto nebylo podat vyčerpávající přehled a popis konkrétních aplikací a technologií dominujících dnešnímu world wide webu, ale vytvořit přehledného „turistického“ průvodce, poukazujícího na nejzajímavější pozoruhodnosti a bezpečně provázejícího čtenáře spletitými zákoutími velkoměsta zvaného Web 2.0.
67
Seznam použité literatury Tištěná literatura 1. BELL, Ann. Exploring Web 2.0: Second Generation Interactive Tools – Blogs, Podcasts, Wikis, Networking, Virtual Worlds, and More. Georgetown, USA: Katy Crossing Press, 2009. ISBN 978-1-4414-4986-8 2. BYRON, DL; BROBACK, Steve. Blogy: Publikuj a prosperuj Blogování pro váš business. Praha: GRADA PUBLISHING a.s., 2008. ISBN 978-80-247-2064-7 3. ERL, Thomas. SOA Servisně orientovaná architektura. Kompletní průvodce. Brno: Computer Press, a.s., 2009. ISBN 978-80-251-1886-3 4. FEILER, Jesse. How to Do Everything with Web 2.0 Mashups. New York City, USA: The McGraw-Hill Companies, 2008. ISBN 978-0-07-149627-8 5. GOVERNOR, James; HINCHCLIFFE, Dion; NICKULL, Duane. Web 2.0 Architectures: What entrepreneurs and information architects need to know. O'Reilly Media / Adobe Dev Library, 2009. ISBN 978-0596514433 6. CHOW, Shu-Wai. Programujeme Mashup aplikace pro Web 2.0 v PHP. Brno: Computer Press, a.s., 2008. ISBN 978-80-251-2057-6 7. MACDONALD, Matthew. Beginning ASP.NET 4.0 in C# 2010. Berkeley, USA: Apress, 2010. ISBN 978-1-4302-2609-3 8. MECKEL, Miriam; STANOEVSKA-SLABEVA, Katarina. Web 2.0 Die nächste Generation Internet. 1. vydání Baden-Baden, SRN: Nomos Verlagsgesellschaft, 2008. ISBN 978-3-8329-3243-5 9. RYMASZEWSKI, Michael; AU,Wagner James; ONDREJKA, Cory; PLATEL, Richard; VAN GORDEN, Sara; CÉZANNE, Jeannette; CÉZANNE, Paul; BATSTONE-CUNNINGHAM, Ben; KROTOSKI, Aleks; TROLLOP, Celebrity; ROSSIGNOL, Jim. Second Life: The official guide Second Edition. Indianapolis, USA: Wiley Publishing, Inc., 2007. ISBN 978-0-470-22775-6 10. SHELLY, Gary B.; FRYDENBERG, Mark. Web 2.0: Concepts and Applications. Boston, USA: Course Technology, 2010. ISBN 978-1-4390-4802-3 11. WEAVER, James L.; MUKHAR, Kevin; CRUME, Jim. Beginning J2EE 1.4: From Novice to Professional. Berkeley, USA: Apress, 2004. ISBN 978-1-59059341-7 68
Elektronické zdroje 1. CreativeCommons.org (2011): About The Licenses, [cit. 2011-01-07] Dostupný z URL: http://creativecommons.org/licenses/ 2. Dedicated Server School (2010): Advantages of Server-Side Scripting, [cit. 201201-26] Dostupný z URL: http://www.serverschool.com/server-software/advantages-ofserver-side-scripting/ 3. eBay.com (2011): What is eBay?, [cit. 2011-01-07] Dostupný z URL: http://pages.ebay.com/help/account/questions/about-ebay.html 4. C# Corner (2008): Introducing ASP.Net, [cit. 2012-03-21] Dostupný z URL: http://www.c-sharpcorner.com/uploadfile/prvn_131971/chapter1-introducing-Asp-Net/ 5. Facebook.com (2011): Tiskové středisko – Statistika, [cit. 2011-01-08] Dostupný z URL: http://www.facebook.com/press/info.php?statistics 6. Google Student Blog (2010): Chrome Netbooks for Students, [cit. 2010-12-09] Dostupný z URL: http://googleforstudents.blogspot.de/2010/12/chrome-netbooksfor-students.html 7. HousingMaps.com (2012), [cit. 2012-01-18] Dostupný z URL: http://www.housingmaps.com/ 8. Last.fm (2012): The Beatles – Tags, [cit. 2012-03-05] Dostupný z URL: http://www.last.fm/music/The+Beatles/+tags 9. LinkedIn.com (2011): About Us – Latest LinkedIn Facts, [cit. 2011-01-08] Dostupný z URL: http://press.linkedin.com/about 10. MSDN.Microsoft.com – GridView (2012): GridView-Klasse, [cit. 2012-03-16] Dostupný z URL: http://msdn.microsoft.com/dede/library/system.web.ui.webcontrols.gridview.aspx 11. MSDN.Microsoft.com – Software Architecture (2012): What is Software Architecture?, [cit. 2012-03-18] Dostupný z URL: http://msdn.microsoft.com/en-us/library/ee658098.aspx 12. OASIS (2006): Reference Model for Service Oriented Architecture 1.0, [cit. 201201-21] Dostupný z URL: http://docs.oasis-open.org/soa-rm/v1.0/
69
13. O'Reilly - Web Squared (2009): Web Squared: Web 2.0 Five Years, [cit. 2010-1108] Dostupný z URL: http://www.web2summit.com/web2009/public/schedule/detail/10194 14. O'Reilly – Web 2.0 (2005): What is Web 2.0?, [cit. 2012-04-12] Dostupný z URL: http://www.oreilly.de/artikel/web20.html 15. ProgrammableWeb.com (2012): Most Popular Mashups, [cit. 2012-01-18] Dostupný z URL: http://www.programmableweb.com/popular 16. RFC 3875 (2004): The Common Gateway Interface (CGI) Version 1.1, [cit. 201201-30] Dostupný z URL: http://www.ietf.org/rfc/rfc3875 17. SecondLife.com (2011): Second Life Maps, [cit. 2011-12-29] Dostupný z URL: http://www.secondlife.com 18. Second Life Wiki (2011): Linden Lab Official:Live Data Feeds, [cit. 2011-12-27] Dostupný z URL: http://wiki.secondlife.com/wiki/Linden_Lab_Official:Live_Data_Feeds 19. Service-Architecture.com (2012): Web Services explained, [cit. 2012-01-29] Dostupný z URL: http://www.service-architecture.com/webservices/articles/web_services_explained.html 20. W3schools.com – AJAX (2012): AJAX Introduction, [cit. 2012-01-16] Dostupný z URL: http://www.w3schools.com/ajax/ajax_intro.asp 21. W3schools.com – Web Services (2012): Web Services Platform Elements, [cit. 2012-01-23] Dostupný z URL: http://www.w3schools.com/webservices/ws_platform.asp 22. WayBackMachine.org (2012): Portál Yahoo.com v roce 1997, [cit. 2012-04-03] Dostupný z URL: http://web.archive.org/web/19971007020952/http://www9.yahoo.com/ 23. Wikipedia.org – CGI (2012): Common Gateway Interface, [cit. 2012-01-30] Dostupný z URL: http://en.wikipedia.org/wiki/Common_Gateway_Interface 24. Wikipedia.org – Feed Icon (2012): File:Feed-icon.svg, [cit. 2012-04-12] Dostupný z URL: http://en.wikipedia.org/wiki/File:Feed-icon.svg 25. Wikipedia.org – PHP (2012): PHP, [cit. 2012-01-31] Dostupný z URL: http://en.wikipedia.org/wiki/PHP 26. Wikipedia.org – Skriptování na straně klienta (2012): Skriptování na straně 70
klienta, [cit. 2012-03-17] Dostupný z URL: http://cs.wikipedia.org/wiki/Skriptov%C3%A1n %C3%AD_na_stran%C4%9B_klienta 27. Wikipedia.org – UDDI (2012): Universal Description Discovery and Integration, [cit. 2012-01-23] Dostupný z URL: http://en.wikipedia.org/wiki/UDDI 28. WINER, Dave (2005): Scripting News, [cit. 2010-12-01] Dostupný z URL: http://scripting.com/2005/09/11.html 29. Wordpress.org (2010): Codex: Introduction to Blogging, [cit. 2010-11-20] Dostupný z URL: http://codex.wordpress.org/Introduction_to_Blogging 30. Yahoo.com (2010): Vzhled portálu Yahoo.com v roce 2010, [cit. 2010-11-12] Dostupný z URL: http://www.yahoo.com
71
Příloha č.1 Tim O'Reilly – Soupis příkladů Web 1.0 versus Web 2.0
Zdroj: O'Reilly – Web 2.0
72
Příloha č.2 Portál Yahoo.com v roce 1997
Zdroj: WayBackMachine.org
73
Příloha č.3 Portál Yahoo.com v roce 2010
Zdroj: Yahoo.com
74
Příloha č.4
Technorati.com – Řazení výsledků vyhledávání
Zdroj: http://www.technorati.com s úpravami autorky
75
Příloha č.5 RSS Feed SimplyMe! Home Page http://www.simplyme.cz <description>Online obchod s bižuterií a stříbrnými šperky Novoroční výprodej http://www.simplyme.cz/vyprodej/ <description> Připravili jsme pro Vás velký výprodej zimní kolekce. Ihned po Štědrém dnu můžete využít šance a získat poslední kusy kolekce Podzim/zima 2010 za bezkonkurenční ceny. Akce končí vyprodáním zásob. Valentýnská kolekce http://www.simplyme.cz/novinky/ <description> Překvapte letos své milované originálním dárkem. Novinky Jaro/léto 2011 obsahují originální kolekci stříbrných šperků s valentýnskou tématikou. Zdroj: Vlastní
private int readIntFromViewState(string name) { string x = ViewState[name].ToString(); return Convert.ToInt32(x); } private int RandomNumber(int min, int max) { Random random = new Random(); return random.Next(min, max); } } }
Site.Master: <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="aspnet_example.SiteMaster" %> ASP.NET - příklad sčítání náhodně vygenerovaných čísel Zdroj: Vlastní
82
Příloha č.10
Javascript – příklad zdrojového kódu Ukazka Javascript kodu <script type="text/javascript"> /* Deklarace globalnich promennych */ var nr1; var nr2; /*
Deklarace javascriptovych funkci - jsou volány buď jinými javascriptovými funkcemi nebo jako obsluha událostí */ function init() { /* Podpora základních matematických funkcí (vygenerování náhodných celých číslel v intervalu od 0 do 9) */ nr1 = Math.floor(Math.random() * 10); nr2 = Math.floor(Math.random() * 10); } function prepareGame() { init(); /*
Změna obsahu HTML dokumentu pomocí javascriptu (do prázdných DIV tagů označených příslušným ID jsou vepsána vygenerovaná čísla)
*/ document.getElementById("number1").innerHTML = nr1; document.getElementById("number2").innerHTML = nr2; // Nastavení kurzoru do pole pro zadávání odpovědi document.getElementById("answer").focus(); } function evaluate() { /* Vyzvednutí hodnoty z formulářového pole označeného jednoznačným identifikátorem (ID) -> HTML elementy jsou organizovány v DOM hierarchické struktuře */ var answer = document.getElementById("answer").value; var sum = nr1 + nr2;
83
var result = "Vaše odpověď je "; if(answer == "") { result = "Nezadali jste žádnou odpověď."; } else if(answer == sum) { result += "<strong>SPRÁVNĚ<strong>."; init(); prepareGame(); } else result += "<strong>CHYBNĚ<strong>. Zkuste to znovu."; document.getElementById("printResult").innerHTML = result; document.getElementById("answer").value = ""; document.getElementById("answer").focus(); }
Javascript - příklad sčítání náhodně vygenerovaných čísel
Zdroj: Vlastní
84
Příloha č.11 AJAX – Příklad zdrojového kódu Index.html: AJAX v praxi <meta http-equiv="content-type" content="text/html;charset=iso-8859-2" /> <script type="text/javascript"> var xmlhttp; function loadResp(url,fce) { // Vytvoření instance XMLHttpRequest třídy xmlhttp=new XMLHttpRequest(); /* Určení chování v momentě, kdy odpověď serveru (response) bude připravena (přijata a zpracována) */ xmlhttp.onreadystatechange = fce; /* Příprava požadavku (request) odesílaného na server: bude odeslán HTTP metodou GET, bude žádána URL adresa specifikovaná parametrem url a požadavek bude odeslán asynchronně, tzn. že javascript nebude čekat na odpověď serveru, ale bude pokračovat v ostatních úlohách a po obdržení a zpracování odpovědi serveru provede chování specifikované funkcí onreadystatechange */ xmlhttp.open("GET", url, true); // Odeslání požadavku na server xmlhttp.send(); } function vypisZakazniky() { // přidání náhodně generovaného parametru pouze zabraňuje cachování loadResp("ajax_priklad.php?t=" + Math.random(), function() { var seznam = ""; /* Vlastnost readyState obsahuje aktuální status XMLHttpRequest. Nabývá hodnot od 0 do 4: 0 ... požadavek nebyl inicializován
85
1 2 3 4
... ... ... ...
bylo vytvořeno spojení se serverem požadavek obdržen požadavek se zpracovává požadavek zpracován a připravena odpověď
Vlastnost status nabývá hodnoty 200 (OK) nebo 404 (Stránka nebyla nalezena) => URL nalezena, požadavek je zpracován, odpověď je připravena */ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var x; var i; // Odpověď je očekávána ve formátu XML xmlDoc = xmlhttp.responseXML; // Parsování XML odpovědi seznam = ""; x = xmlDoc.getElementsByTagName("JMENO"); for (i=0; i<x.length; i++) { seznam = seznam + x[i].childNodes[0].nodeValue + " "; } // Výpis na standardní výstup (do browseru) document.getElementById("zakaznici").innerHTML = seznam; } }); }