Automatické zpracování informací webových portálů
Transkript
Automatické zpracování informací webových portálů
cs Automatické zpracování informací webových portálù D IPLOMOVÁ PRÁCE Rostislav Svoboda podzim 2005 ProhláŽení ProhlaŽuji, d̄e tato diplomová práce je mým pùvodním autorským dílem, které jsem vypracoval˚ samostatnì. VŽechny zdroje, prameny a literaturu, které jsem pøi vypracování poud̄íval˚ nebo z nich èerpal,̊ v práci øádnì cituji s uvedením úplného odkazu na pøísluŽný zdroj. Vedoucí práce: ii Shrnutí Cílem práce je analyzovat možností automatického sběru informací na webových portálech. Dále pak navrhnout metodiky pro automatizované zpracovaní informací na portálech. Součástí práce je i případová studie, kdy jsou využity získané poznatky a naprogramovány moduly do vyhledávacího systému nad elektronickými zdroji Masarykovy univerzity. Ty jsou realizovány jako webová služba, jsou také implementovány pomocné třídy pro tvorbu dalších modulů. iii Klíèová slova extrakce dat, portál, transformace, web, webová služba, XML, XSLT, zpracování informací iv Obsah 1 2 3 4 5 6 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Současnost webu . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Problémy s HTML . . . . . . . . . . . . . . . . . . . . . . . 2.2 Webové standardy . . . . . . . . . . . . . . . . . . . . . . . 2.3 Technologie a aktivity W3C . . . . . . . . . . . . . . . . . . 2.4 XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Modularizace XHTML . . . . . . . . . . . . . . . . . 2.4.2 Vlivy XML . . . . . . . . . . . . . . . . . . . . . . . . 2.4.3 Sémantické značkování . . . . . . . . . . . . . . . . Syndikace obsahu . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Historické a minoritní značkovací jazyky . . . . . . . . . . 3.1.1 CDF . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 OPML . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 OML . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4 SyncML . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Majoritní značkovací jazyky . . . . . . . . . . . . . . . . . . 3.2.1 RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Atom . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Srovnání . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Využití syndikace obsahu . . . . . . . . . . . . . . . . . . . 3.3.1 Vyhledávání a spojování zdrojů . . . . . . . . . . . . 3.3.2 Šířené audio a video souborů . . . . . . . . . . . . . 3.3.3 Získávání informací z portálů . . . . . . . . . . . . . Webové služby . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Využití webových služeb . . . . . . . . . . . . . . . . . . . . Srovnání způsobů vyhledávání informací . . . . . . . . . . . . 5.1 Studie společnosti Ridge Group . . . . . . . . . . . . . . . . 5.2 Srovnání přístupů k informacím . . . . . . . . . . . . . . . 5.3 Elektronické knihovny a portály . . . . . . . . . . . . . . . Vyhledávač nad elektronickými zdroji Masarykovy univerzity 6.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Datové úložiště . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Moduly pro komunikaci s elektronickými zdroji . . . . . . 6.4 Tenký klient . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Vývojový tým . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 4 5 6 7 7 8 9 11 11 11 11 12 12 12 12 15 15 18 18 18 18 19 21 21 22 23 24 24 25 26 27 28 28 29 29 30 v 6.6 6.7 Zadání projektu . . . . . . . . . . . . . . . . . . . . . Přehled použitých nástrojů . . . . . . . . . . . . . . 6.7.1 Analýza a návrh . . . . . . . . . . . . . . . . 6.7.2 Implementace . . . . . . . . . . . . . . . . . . 6.7.3 Nasazení a správa . . . . . . . . . . . . . . . 6.7.4 Podpora vývoje v týmu . . . . . . . . . . . . 7 Problematika automatizovaného sběru informací . . . . 7.1 Obecné informace . . . . . . . . . . . . . . . . . . . . 7.2 Specifika zdrojů . . . . . . . . . . . . . . . . . . . . . 7.2.1 Způsob zadání dotazu . . . . . . . . . . . . . 7.2.2 Kritéria vyhledávání . . . . . . . . . . . . . . 7.2.3 Struktura odpovědi . . . . . . . . . . . . . . . 7.2.4 Množství a různost poskytnutých informací 7.2.5 Co by měl modul umět . . . . . . . . . . . . . 8 Implementace modulů . . . . . . . . . . . . . . . . . . . . 8.1 Vytvoření požadavku na zdroj . . . . . . . . . . . . . 8.2 Transformace odpovědi do XHTML . . . . . . . . . 8.3 XSLT transformace . . . . . . . . . . . . . . . . . . . 8.3.1 Možnosti zrychlení transformace . . . . . . . 8.3.2 Testování rychlosti transformace . . . . . . . 8.3.3 Hardware použitý pro testy . . . . . . . . . . 8.4 Tvorba odpovědi . . . . . . . . . . . . . . . . . . . . 9 Testy modulů a portálů . . . . . . . . . . . . . . . . . . . 9.1 Testování pomocí rámce JUnit . . . . . . . . . . . . . 9.2 Testování pomocí rámce Cactus . . . . . . . . . . . . 9.3 Vlastní testování . . . . . . . . . . . . . . . . . . . . . 9.4 Testování portálů . . . . . . . . . . . . . . . . . . . . 10 Automatizace tvorby modulů pro sběr dat . . . . . . . . 10.1 Pomocné třídy . . . . . . . . . . . . . . . . . . . . . . 10.2 Třída PluginHelper . . . . . . . . . . . . . . . . . . . 10.3 Třída PluginHelperXML . . . . . . . . . . . . . . . . 10.4 Třída PluginHelperParse . . . . . . . . . . . . . . . . 10.5 Metodika vývoje modulů . . . . . . . . . . . . . . . 10.5.1 Příprava testů . . . . . . . . . . . . . . . . . . 10.5.2 Tvorba dotazu . . . . . . . . . . . . . . . . . 10.5.3 Zpracování odpovědi . . . . . . . . . . . . . 11 Závěr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rejstřík . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Obsah přiloženého CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 31 31 31 32 33 34 34 34 34 35 36 36 36 38 39 39 40 41 42 43 44 46 46 48 51 53 56 56 56 59 60 61 61 61 62 65 67 68 69 vi B Elektronické zdroje MU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 vii Kapitola 1 Úvod S rostoucím množstvím vystavených článků v síti Internet je stále větší problém vyhledat dokumenty z požadované vědecké oblasti. Existují sice tzv. webové portály, které se snaží ulehčit přístup k žádaným dokumentům tak, že plní své informační zdroje výhradně dokumenty, které se zabývají určitou tématickou oblastí. Masarykova univerzita má přístup k více než čtyřiceti takovýmto portálům. Pro studenty je ovšem časově náročné prohledat všechny tyto zdroje, tudíž vznikl požadavek na vytvoření centralizovaného vyhledávání. Jsem členem týmu, který má za úkol implementovat takový systém. Námi navržený vyhledávač se skládá z několika samostatných modulů, které jsou realizovány jako webové služby. Jádro aplikace jsme se rozhodli postavit na architektuře Java 2 Enterprise Edition. Uživatel přistupuje k systému přes tenkého klienta, který je implementován s využitím aplikačního rámce Struts. Mým úkolem v projektu byla komunikace se zdroji dat. Zaměřil jsem se na zpracování informací z oborově specializovaných portálů. Základní úkoly jsou prozkoumání možností automatizovaného sběru dat z těchto zdrojů, naprogramování několika modulů pro získávání informací, určení postupů pro správnou tvorbu testů a navržení metodiky pro vývoj dalších zásuvných modulů. To vše s důrazem na webové stránky. Práce se dá podle svého obsahu rozdělit do dvou částí, teoretické a praktické. Teoretická začíná druhou a končí pátou kapitolou. Zpočátku se věnuji problematice současného webu, potížím s HTML a zmiňuji se i o webových standardech. Následuje kapitola o syndikaci obsahu, která přináší především možnost získávání informací o nově publikovaných článcích a knihách. Poté rozebírám princip, možnosti a výhody webových služeb. Ty jsou v projektu využívány pro komunikaci mezi moduly pro automatizovaný sběr dat a jádrem. Mohou také sloužit jako zdroj obsahu na straně portálů. V poslední kapitole teoretické části se zmiňuji o problematice skryté ceny vyhledávání informace. V praktické části, která začíná šestou kapitolou, nejprve popisuji projekt Vyhledávání nad elektronickými zdroji Masarykovy univerzity (VEZMU). Následuje rozbor problematiky modulů pro automatizovaný sběr dat jako např. způsob zadávání dotazů, struktura odpovědi. V dalších kapitolách se věnuji implementaci těchto částí 1 1. Ú VOD systému, jejich testování a ověřování dostupnosti informací na stránkách zdroje dat. Na závěr popisuji postup vytváření nových modulů a také pomocné třídy, které tuto činnost usnadňují. 2 Kapitola 2 Současnost webu Kvalitně vytvořený dokument, bez ohledu na to, zda jde o dokument publikovaný tradiční cestou nebo o dokument elektronický, je jednoduché zpracovat pro účely vyhledání. V prostředí webu má respektování zásad a standardů pro vytváření dokumentů ještě větší význam než v tradičním prostředí tištěných dokumentů, a to bez ohledu na možnosti a výhody automatizovaného plnotextového sběru dat, jež pozitivně ovlivňují vyhledávání informací uživateli. Respektování standardů usnadňuje a zkvalitňuje nejen zpracování a vyhledávání informací, ale také správu dokumentů, jejich aktualizaci, dlouhodobou dostupnost, použitelnost a nezávislost na technickém zařízení a cílovém formátu. Hodnotný obsah strukturovaného dokumentu je jednou z cest k dosažení kvalitních výsledků hledání. Výhodou a současně i nevýhodou elektronického publikování v prostředí webu je jeho relativní jednoduchost a finanční nenáročnost. Díky tomu se mohou na komunikaci informací podílet i ti, pro něž by bylo šíření informací a poskytování informačních služeb tradičními postupy a cestami prakticky nedostupné. Psaní textů se řídí určitými pravidly a mělo by to platit i při publikování na webu. Forma i způsoby šíření informací prošly dlouhým vývojem, během něhož se vyvíjela pravidla nejen pro psaní textů, ale také pro formální úpravu různých typů publikací šířených tradiční (tištěnou) formou. Jistě není nutné se dlouze rozepisovat o tom, jaké problémy se mohou vyskytnout při zpracování dokumentů a při jejich vyhledávání, když vydavatelé nedodržují určité ustálené zvyklosti pro nakladatelskou úpravu knih a dalších publikací. Dávno již nejde jen o nepsané zásady, ale o mezinárodně zpracovaná a přijatá doporučení (viz například normy ISO vztahující se k problematice prezentace, identifikace a popisu dokumentů1 ). Analogie k nedodržování platných webových standardů je zřejmá. Doporučení týkající se vytváření webových dokumentů v mnohém vycházejí z tradičního způsobu publikování. Nerespektování těchto doporučení přináší obdobné problémy, jak při zpracování informací, tak při jejich vyhledávání. Elektronické prostředí má ovšem řadu výhod, které pomáhají ve snadnější orientaci v informacích na webu zveřejněných. Neznamená to však, že by si díky elektronickému prostředí s těmito 1. Normy jsou dostupné na adrese <http://www.collectionscanada.ca/iso/tc46sc9/ standard/glossry2.htm> 3 2.1. PROBLÉMY S HTML nedostatky tvůrci vyhledávacích nástrojů jen tak jednoduše poradili. I pro ně to znamená, že je nezbytné s řadou chyb, občas i úmyslných, počítat a nějakým způsobem je ošetřit. Jestliže k tomu připočteme jinak pozitivní vlivy, které elektronické publikování v prostředí internetu přineslo, například možnosti okamžitých aktualizací a změn v dokumentech, je zjevné, že také v elektronickém prostředí je výhodné akceptovat postupy a pravidla, která výměnu informací usnadní. Současný přístup ke tvorbě webových stránek je charakterizován důrazem na uživatelský prožitek a na přístupnost dokumentů2 . Základem uživatelského prožitku jsou informační architektura, tj. organizace (uspořádání) informací, struktura a navigace, a použitelnost 3 . Přidanou hodnotou takového přístupu je ekonomický přínos tvorby webových stránek. Vyjádřením tohoto přístupu jsou doporučení (normy) konsorcia World Wide Web Consortium <http://www.w3.org/> (W3C), jejichž dodržování je jednou ze záruk všeobecné dostupnosti informací. Kromě jiného tyto normy umožňují a usnadňují opětovné používání dat i jejich využívání pro různé účely, snižují náklady na modernizaci systémů a zajišt’ují nezávislost na konkrétních aplikacích, na určitém softwarovém či hardwarovém řešení. Jsou tak základem kompatibility, flexibility a dlouhodobé dostupnosti dat. Každý, kdo vytváří webové dokumenty, víceméně vychází z doporučení, jež připravilo World Wide Web Consortium. Dodržuje tedy na určité úrovni tzv. webové standardy. Konsorcium W3C samo o sobě není standardizační institucí v běžném smyslu. Hlavní funkcí W3C je výzkum a vývoj a uveřejňování informací o technologiích a aktivitách týkajících se webu. Webové standardy – specifikace a doporučení vytvořená konsorciem W3C – nejsou normy, jimiž by se museli autoři bezpodmínečně řídit, zcela jistě však jde o zásady, které se vyplatí respektovat a jež jsou základním souhrnem důsledných, promyšlených a osvědčených postupů. V současnosti se web zřejmě nachází v přechodném období mezi určitým překotným vývojem poznamenaným zmatky a nedostatky v technologiích 90. let minulého století a budoucností založenou na zvyklostech respektujících postupy vyjádřené ve webových standardech. Jejich cílem je usnadnění práce s webem pro všechny zúčastněné – počínaje autory, konče čtenáři a uživateli služeb. 2.1 Problémy s HTML Využívání HTML v průběhu rozvoje služby WWW přineslo řadu inovací, jež změnily původní jednoduchý jazyk pro popis struktury dokumentů (rozvržení obsahu) a definování vazeb mezi nimi (hypertextových odkazů) na složitý jazyk používaný 2. Pravidla pro přístupnost dokumentů lze najít na stránkách <http://pristupnost.nawebu. cz/> 3. Web zabývající se použitelností a organizací informací je například <http://www.useit. com/>. 4 2.2. WEBOVÉ STANDARDY k budování graficky a typograficky bohatých webových sídel. Jednou z nejproblematičtějších inovací je využívání tabulek pro formátování vzhledu 4 webových dokumentů. Tabulky, zvlášt’ jsou-li složité a vnořené, přinášejí problémy s velikostí souborů i s rychlostí v zobrazování dokumentů. Je obtížné takto vytvořené dokumenty aktualizovat a udržovat, obzvlášt’ je-li správa webového sídla týmovou prací. Dokumenty formátované pomocí tabulek jsou navíc často nepřístupné skupinám uživatelů s různými omezeními. Zpracování takových dokumentů přináší problémy i robotům vyhledávacích služeb. Nevhodné používání jazyka HTML a jeho úpravy autory webových dokumentů není pochopitelně jediným problémem doprovázejícím rozvoj webu v uplynulých letech. Svoji roli sehrály i prohlížeče webu, jejichž podíl na používání nesprávných postupů je dodnes velmi významný, přestože právě výrobci prohlížečů patří mezi členy konsorcia W3C. Programové vybavení pro práci s Internetem je součástí výnosného obchodu, a tak je celkem pochopitelná snaha výrobců dosáhnout třeba i standardům odporujícími lákavými novinkami dominantního postavení. Dosavadní vývoj webu tak poznamenali kladně i záporně všichni: autoři dokumentů, výrobci prohlížečů i nástrojů pro budování webových stránek a svým způsobem i jeho uživatelé. 2.2 Webové standardy Současný vývojový stav v oblasti webových standardů ovšem dosáhl úrovně, kdy se vyplatí z řady důvodů jejich respektováním využívat obrovského potenciálu, který je jednoznačně výhodný i z pohledu budoucnosti. A to i přesto, že v současnosti stále docela dobře „fungují“ webové dokumenty založené na nestandardních postupech. Existuje totiž řada důvodů, pro něž se vyplatí standardy pochopit a využívat: • jejich respektování šetří čas a tím i peníze autorům a poskytovatelům webových informací, • využívání postupů založených na standardních technologiích usnadňuje a urychluje práci uživatelům webu, • porozumění standardům vede k chápání širších souvislostí a principů, na nichž je vznik i rozvoj webu vystavěn a mezi něž patří mj. i myšlenka všeobecné dostupnosti informací 5 . 4. Petr Staníček se na svých stránkách <http://www.pixy.cz/pixylophone/2004_01_ archiv.html#1074594674> tomuto tématu často věnuje. 5. Sedm bodů vysvětlující cíle a principy konsorcia W3C: <http://www.w3.org/Consortium/ Points/> 5 2.3. TECHNOLOGIE A AKTIVITY W3C Z technologického pohledu je zřejmé, že respektování standardů vede k úspoře nákladů na budování a údržbu webových dokumentů a umožňuje jejich bezproblémové využívání různými koncovými zařízeními uživatelů. Ze společenského hlediska jsou standardy nástrojem, který odstraňuje bariéry v přístupu uživatelům, at’ jde o překážky či omezení zdravotní, finanční či jazykové. 2.3 Technologie a aktivity W3C Aktivity konsorcia W3C jsou velmi široké a je možné se o nich více dozvědět na webových stránkách W3C i z dalších zdrojů, například ze sborníků z konferencí pořádaných konsorciem (International World Wide Web Conferences). Mezi nejvýznamnější patří: • Hypertext Markup Language (HTML) <http://www.w3.org/MarkUp/>. Značkovací jazyk pro vytváření webových dokumentů, konečnou verzí je HTML 4.01. Tato verze obsahuje jen menší změny oproti předchozí verzi HTML 4.0, její význam je však obrovský, protože DTD (Document Type Definition) HTML 4.01 jsou základem XHTML 1.0. Jde dnes o uzavřenou kapitolu v činnosti W3C. • Extensible Markup Language (XML) <http://www.w3.org/XML/>. Značkovací jazyk pro univerzální formát strukturovaných dokumentů a dat. • Extensible Hypertext Markup Language (XHTML) <http://www.w3.org/ MarkUp/>. Značkovací jazyk pro vytváření webových dokumentů a dokumentů pro alternativní zařízení. Navazuje na předchozí dvě aktivity. XHTML je současný standard, který nahradil HTML 4. Obsahu webu navrací přísnou logickou strukturu dokumentů a současně umožňuje práci s dalšími webovými standardy, jako jsou CSS a DOM. Zajišt’uje rovněž spolupráci s již existujícími i budoucími jazyky, aplikacemi a protokoly založenými na XML. • Cascading Style Sheets (CSS) <http://www.w3.org/Style/CSS/>. Stylový jazyk pro prezentaci, formátování vzhledu (X)HTML dokumentů. • Synchronized Multimedia Integration Language (SMIL) <http://www.w3. org/AudioVideo/>. Jazyk založený na XML, jehož cílem je usnadnit synchronizaci multimedií (video, zvuk, text). • Scalable Vector Graphics (SVG) <http://www.w3.org/Graphics/SVG/>. Jazyk založený na XML určený pro popis grafických objektů. • Přístupnost (accessibility <http://www.w3.org/WAI/>). Jejím cílem je zajištění přístupnosti dokumentů pro všechny uživatele. 6 2.4. XHTML • 2.4 Document Object Model (DOM) <http://www.w3.org/DOM/>. Aplikační programové rozhraní, jež definuje obecný standard pro přístup k jakémukoliv platnému HTML dokumentu nebo ke správně vytvořenému XML dokumentu; cílem je zajistit shodné objektové modely dokumentů v prohlížečích. XHTML Konečná verze jazyka HTML, HTML 4.01 <http://www.w3.org/TR/html401/>, byla zveřejněna v prosinci 1999. Stala se základem pro specifikaci XHTML 1.0 <http: //www.w3.org/TR/2000/REC-xhtml1-20000126/>, publikovanou brzy poté v lednu 2000 (revidovaná verze pochází ze srpna 2002), jež je vlastně jen přeformulováním konečné verze HTML v XML. Zatímco první specifikace XHTML zachovává postupy zahrnuté ve standardu HTML 4.01 a jen přepisuje HTML jako aplikaci XML, v další vývojové verzi XHTML 1.1 <http://www.w3.org/TR/xhtml11/> z května 2001, se z něj již stává pouze jazyk pro popis struktury dokumentu. Formátování vzhledu je přenecháno samostatnému stylovému předpisu. Ve stadiu příprav je verze XHTML 2.0 <http://www.w3.org/TR/xhtml2/>, zveřejněný pracovní návrh doporučení je z května 2005. 2.4.1 Modularizace XHTML Jednou ze základních myšlenek rozvoje XHTML je jeho modularizace 6 . Jednotlivé prvky jazyka jsou seskupeny do modulů odpovídajících jejich určení (funkci) společně s vlastnostmi, které se k nim mohou vztahovat, a s minimálním obsahovým modelem. Základními moduly XHTML jsou: • strukturální modul zahrnující prvky, které tvoří základní strukturu XHTML dokumentu (body, head, html, title), • textový modul, jenž definuje základní prvky sloužící k označení textu a obsahu dokumentů (h1 až h6, address, blockquote, div, p, pre, abbr, acronym, br, cite, code, dfn, em, kbd, q, samp, span, strong, var), • hypertextový modul s prvkem „a“ sloužícím pro hypertextové odkazy na jiné zdroje, • modul seznamů obsahující prvky sloužící k vytváření seznamů (dl, dd, dt, ol, ul, li), 6. Více informací na stránce WD-xhtml-modularization-20040218/> <http://www.w3.org/TR/2004/ 7 2.4. XHTML • formulářový modul s prvky pro tvorbu formulářů (form, input, label, select, textarea aj.). Kromě toho obsahuje XHTML ještě řadu dalších modulů (modul tabulek, objektový modul, modul odkazů, metainformační modul aj.), jež pokrývají celou šíři povolených prvků dané verze jazyka. Standard XHTML 1.1 postavený na XHTML 1.0 Strict už neobsahuje ty prvky, jež byly v předchozích verzích sice povoleny, ale byly označeny jako překonané (deprecated). Vezmeme-li v úvahu, co v relativně krátké historii webu představuje doba, jež uplynula od publikování první specifikace XHTML, a k tomu další fakt, že specifikace CSS2 <http://www.w3.org/ TR/REC-CSS2/> pochází dokonce již z května 1998, je jistě podivné, že se využívání těchto webových standardů autory doposud nestalo běžnou zvyklostí. Zvlášt’, když jejich respektování přináší tolik výhod, jak autorům, tak samotným uživatelům. Svůj podíl na tom jistě mají výrobci prohlížečů, kteří se značným zpožděním začali akceptovat normy, na jejichž vývoji se jako členové konsorcia W3C sami určitým způsobem podíleli. Současné verze všech nejrozšířenějších prohlížečů však již s drobnými odchylkami víceméně podporují platné předpisy, a tak se tou překážkou možná mohou zdát uživatelé webu, kteří kupodivu stále z nějakého důvodu pracují se staršími verzemi prohlížečů. 2.4.2 Vlivy XML K nejvýznamnějším vlivům XML na tvorbu webových dokumentů se řadí: • důraz na logické značkování struktury dokumentů, • rozlišování mezi malými a velkými písmeny (case sensitivity), XHTML používá malá písmena, • nezbytnost dodržování syntaktických pravidel jazyka, jehož výsledkem je správně vytvořený (well-formed) dokument, mj. to znamená, že se prvky v dokumentu nesmí křížit: pokud nějaký prvek obsahuje počáteční značku jiného prvku, pak musí obsahovat i příslušnou koncovou značku, • dokument musí obsahovat kořenový prvek (root element), v XHTML je to prvek <html>, • nutnost používání koncových značek všech prvků, např. </p>, </li>, a tomu odpovídající ošetření prázdných značek doplněním lomítka: <br />, <hr />, • používání uvozovek při zápisu hodnot vlastností prvků, např. u obrázkových prvků: <img src="fi-logo.png" alt="Fakulta informatiky"/>. 8 2.4. XHTML Jednou z mnoha výhod respektování webových standardů při vytváření webových dokumentů je možnost ověření jejich platnosti prostřednictvím nástrojů, které jsou pro tento účel k dispozici (např. W3C Validator <http://validator.w3. org/>). Validátor dokument zkontroluje, zda je správně strukturován a zda jeho zdrojový kód souhlasí s deklarovanou definicí typu dokumentu (DTD) v záhlaví. 2.4.3 Sémantické značkování Sémantické7 značkování založené na významu a smyslu součástí dokumentu znamená, že je obsah dokumentu označen podle toho, o jaký druh informace jde. Pro tento účel jsou k dispozici logické značky založené na vyjádření obsahu, jež popisují význam textu, který je jimi označen. Patří mezi ně např. značky <abbr>, <acronym>, <address>, <blockquote>, <cite>, <code>, <kbd>, <q>, <samp>, <em> nebo <strong>. Pokud autor nestanoví ve vlastním stylovém předpisu, jakým způsobem se má text uzavřený v takových značkách zobrazit, prohlížeče jej zobrazí podle vlastního stylu víceméně založeného na obecně používaných zvyklostech. Vytvoří zpravidla určitý vizuální efekt, aniž by ovšem narušily strukturu dokumentu či pozměnily autorem zamýšlený důvod pro jejich použití. Například značky <strong> a <em> se používají pro označení těch pasáží textu, jimž přikládá autor zvláštní význam, klade na ně důraz, a chce je tedy z nějakého důvodu zvýraznit. Může jít například o důležité fráze či klíčové pojmy. Z hlediska obsahového má tedy význam to, že jde o důležitou část textu, výsledný vizuální efekt je vedlejší, nebot’ je závislý na koncovém zařízení uživatele. Text uzavřený do značky <strong> běžné prohlížeče zobrazí tučným písmem, text se značkou <em> kurzívou a text označený <code> neproporcionálním písmem s pevnou šířkou znaků. Význam takového logického značkování textu je zřetelný, uvědomíme-li si, že třeba značka <b> pro tučné písmo (bold face) nemá žádný význam pro uživatele používajícího čtecí zařízení pro Braillovo písmo nebo pro toho, kdo používá textový prohlížeč. Při vytváření dokumentů je tedy nutné používat značky s vědomím toho, že nesou určitý význam, že byly zamýšleny pro vyjádření určitého smyslu ve vztahu k vlastnímu obsahu dokumentu. Je zřejmé, že tento způsob značkování určitých částí textu je velmi užitečný také pro zpracování dokumentů pro účely vyhledávání informací. Je-li řeč o „webových standardech“, je důležité nezapomenout na to, že nejde jen o technologie, ale především o způsob, jakým tyto nástroje při své práci používají lidé. To, že někdo vytváří platné XHTML dokumenty a používá CSS pro řízení jejich 7. Vysvětlení pojmu sémantické je možné nalézt na adrese <http://encyclopedia.com/ html/s1/semantic.asp>. 9 2.4. XHTML vzhledu ani zdaleka neznamená, že se tím tyto dokumenty stávají automaticky přístupnými nebo přenosnými nebo že méně zatěžují přenosové linky. XHTML i CSS mohou být používány stejně špatně a nesmyslně, tak jako se to stává se staršími webovými technologiemi. 10 Kapitola 3 Syndikace obsahu Syndikace obsahu je moderní metodou sdílení velkých objemů rychle se měnících informací na internetu, zpřístupňuje obsah velkému množství konzumentů současně. Jedná se o terminus technicus vyjadřující možnost přebírat obsah z různorodých zdrojů a dále ho používat pro vlastní stránky či služby – většina webových syndikací zpracovává pouze titulky, odkazy a anotace konkrétních článků. Slovo syndikace se používalo původně zejména v USA k označení prodeje autorského díla. Obvykle šlo o periodické příspěvky (fejetony, seriály). Odběrateli těchto informací byla místní média (deníky, televizní stanice), která je dále zařazovala do nabídky svého obsahu. Existuje několik značkovacích jazyků využívaných pro syndikaci obsahu. Budou probrány v dalších sekcích. 3.1 Historické a minoritní značkovací jazyky 3.1.1 CDF Channel Definition Format (CDF) <http://www.w3.org/TR/NOTE-CDFsubmit. html> je XML (eXtended Markup Langugage) standard spojený s technologií firmy Microsoft Active Channel. Active Channel byl představen v roce 1997 současně se spuštěním Internet Exploreru 4.0. Umožňoval uživatelům prohlížet webové stránky z vyrovnávací paměti. Ovšem technologie Active Channel se svým formátem CDF se příliš neprosadila. 3.1.2 OPML Outline Processor Markup Language (OPML) <http://www.opml.org/spec> je XML formát pro schémata. Původně byl vyvinut společností Radio UserLand, která jej využívala pro publikování seznamu přehrávaných skladeb. OPML specifikace definuje hierarchický setříděný seznam libovolných elementů. Tato volnost je vhodná pro velké množství typů seznamů. OPML se často používá pro výměnu RSS vazeb mezi RSS čtečkami. 11 3.2. MAJORITNÍ ZNA ČKOVACÍ JAZYKY Na popud Davida Winera byl také vytvořen validátor dostupný na adrese <http: //validator.opml.org>. Existují také možnosti rozšíření, stačí přidat vlastní element. Není ovšem specifikován žádný element pro tato rozšíření. 3.1.3 OML OML (Outline Markup Language) <http://oml.sourceforge.net> je specifikace vycházející z OPML s cílem zlepšení některých jejích omezení. Jedná se o stejně jednoduchý a flexibilní jazyk jako OPML obohacený o mechanismus rozšíření. Je zaveden element <item>, který může obsahovat specifická data a elementy. OML není oproti svému předchůdci tolik rozšířen, je to dáno také jeho relativní mladostí (dokončen v roce 2003). 3.1.4 SyncML Synchronization Markup Language (SyncML) <http://www.openmobilealliance. org/tech/affiliates/syncml/syncmlindex.html> je jazyk pro platformě nezávislou synchronizaci dat. Dnes je zaštit’ován uskupením Open Mobile Alliance (OMA, <http://www.openmobilealliance.org>), ve které se o jeho rozvoj starají dvě pracovní skupiny: Device Management Working Group a Data Synchronization Working Group. Uplatňuje se především na poli mobilních zařízení. Dnes ho ve svých zařízení podporují firmy jako Nokia a Sony Ericsson. SyncML se většinou používá v případech jako je synchronizace kontaktů a kalendáře mezi osobním počítačem a zařízením do ruky. Lze ovšem použít i k více obecné synchronizační účely. Některé produkty pro podporu týmové práce jej využívají k synchronizaci informací o úkolech v jednotlivých projektech. Dalším případem použití jsou zálohovací programy. 3.2 Majoritní značkovací jazyky 3.2.1 RSS Se zkratkou RSS (popř. RDF nebo XML) se setkáte na mnoha serverech. Najdete ji v postranním sloupci, nahoře nebo dole na stránce. RSS kanál je velmi vhodný pro zpravodajské portály, na kterých se také velmi často objevuje. Obecně je to vhodné pro servery, které často mění nebo přidávají nějaký obsah, jako např. články, zboží, novinky. Vyměňují se pouze titulky, odkazy a anotace (perexy) článků. Samotný článek se většinou nesyndikuje a pokud daný titulek člověka zaujal, přečte si článek na původním místě. Tato technologie je pro obě strany výhodná. Uživatel nemusí ručně 12 3.2. MAJORITNÍ ZNA ČKOVACÍ JAZYKY navštěvovat své oblíbené webové stránky. A poskytovatel informací má stálé čtenáře. Zkratka RSS bývá vysvětlována třemi způsoby: • Rich Site Summary – stručný přehled obsahu webu (RSS 0.91). • RDF Site Summary – RDF znamená Resource Description Framework (RSS 0.9 a 1.0). • Really Simple Syndication – opravdu jednoduchá syndikace (RSS 2.0). RSS z hlediska uživatele Pokud chcete mít přehled o aktualitách na svých oblíbených stránkách, máte v podstatě 3 možnosti – pravidelně navštěvovat dané stránky, přihlásit se k odběru pravidelných informačních zpráv nebo si do své čtečky přidat RSS kanál webu. RSS nabízí pravděpodobně nejrychlejší přístup k informacím, odpadá otevírání stránek v prohlížeči a zobrazení načítání zbytečných dat. Web může mít více než jeden RSS kanál. RSS kanál má mnoho výhod, protože uživatel – čtenář • nezmešká nové příspěvky nebo články, • na server s RSS kanálem nezapomene, • bude se často vracet. Díky RSS může uživatel z jednoho místa sledovat, co je nového na mnoha serverech. Je to pro něj pohodlnější a rychlejší. A nemusí se nikam registrovat a sdělovat osobní informace (email), jako v případě pravidelných elektronických zpráv. Kliknutím na zkratu RSS na některém serveru se vám otevře soubor, který sice je čitelný, ale čtení v něm není příliš pohodlné. Pro lepší čtení slouží RSS čtečky (agregátory). Do čtečky lze vložit velké množství RSS kanálů a čtečka za vás sleduje, jestli došlo k aktualizaci na daných stránkách. Takovýchto programů je mnoho, v nových verzích prohlížeče Opera a Firefox je již čtečka integrována, pro Internet Explorer se musí stáhnout některá z nadstaveb, např. Maxton. Pokud používáte jiný prohlížeč, budete si muset stáhnout samostatný program. Zmíním program Feedreader <http://sourceforge.net/projects/feedreader> (Windows 32) šířený pod GPL licencí, pro Linux Straw <http://www.nongnu.org/straw/> (GTK2, Python) nebo akregator <http://www.kde-apps.org/content/show. php?content=15621> (QT). Po výběru čtečky ji budete muset „nakrmit“ – dodat do ní RSS zdroje (RSS feeds). Tvůrci webových stránek ve většině případu odkazují na RSS soubor prostřednictvím oranžového tlačítka. Na stránce <http://www. syndic8.com> nebo <http://rss.timqui.net/seznam-kanalu.php?p=all> se nachází velké databáze RSS zdrojů. 13 3.2. MAJORITNÍ ZNA ČKOVACÍ JAZYKY RSS z hlediska programátora Princip RSS je velmi jednoduchý. Určité URL je přiřazeno často aktualizovanému dokumentu v dohodnutém formátu, jehož obsahem je stručný popis obsahu webu, souhrn novinek a podobně. Pravidelným načítáním tohoto dokumentu pak lze dosáhnout efektu kanálu, který sám „tlačí“ své informace uživatelským agentům. Tímto způsobem je možné snadno sdružovat a zpracovávat informace z mnoha zdrojů. Dobrý nápad, jednoduché provedení, proto není divu, že se kanály RSS rychle rozšířily po celém webu a nabízejí pozoruhodné množství i kvalitu informací. Jediným problémem je naprostý chaos ve verzích formátu, v němž jsou informace poskytovány. Příčiny současného chaosu se musí, jak jinak, hledat v minulosti. Formát RSS původně navrhla jako aplikaci XML firma Netscape pro potřeby svého portálu my.netscape.com. První verze RSS označená 0.9 <http://www.purplepages.ie/RSS/netscape/ rss0.90.html> se objevila v březnu 1999. Firma UserLand, jež se sdružováním obsahu zabývala už od roku 1997 (měla vlastní formát zvaný <scriptingNews>), začala RSS také podporovat. V červenci 1999 Netscape představil verzi RSS 0.91 <http://my.netscape.com/publish/formats/rss-spec-0.91.html>, která v sobě integrovala také prvky ze <scriptingNews>. V dalším období Netscape ztrácí zájem a hlavní postavou na poli RSS se stává David Winer z UserLandu. V červnu 2000 přichází s vlastní specifikací verze 0.91. Formát RSS se začal významně rozšiřovat a část komunity jeho uživatelů získala dojem, že Dave brzdí další rozvoj. Brzy vznikla mezinárodní skupina vedená Raelem Dornfestem a Aaronem Swartzem, jež v prosinci 2000 navrhla novou verzi RSS 1.0 založenou na RDF <http://www.w3.org/RDF/>. Téměř ve stejnou dobu zveřejnil Winer verzi RSS 0.92 <http://backend.userland.com/rss092> a dále ignoroval úsilí příznivců RDF, v srpnu 2002 publikoval verzi RSS 2.0. V roce 2003 byla převedena autorská práva na specifikaci RSS 2.0 <http://blogs.law. harvard.edu/tech/rss> na Harvard University, která ji znovu vydala pod licencí Creative Commons license. Zmatek ve verzích pochopitelně komplikuje život poskytovatelům informací. Nezbývá jim, než si pro své kanály vybrat jednu nebo více verzí. Někteří poskytovatelé obsahu pak neváhají oznámit světu, že jejich kanál je to pravé, platné RSS. Při pohledu na specifikace verzí RSS z Winerovy dílny je poměrně zřetelné, že se nejedná o nijak podrobné a formální dokumenty. Jejich kvalita má navíc sestupnou tendenci. Popis verze 2.0 je už spíše než specifikací pouhým esejem. RSS 0.9x a 2.0 je velmi intuitivní, jména elementů a atributů dostatečně vysvětlují jejich význam. Pokud se podíváte na jeden, dva dokumenty, víte všechno, co byste zjistili čtením specifikace. Bohužel, „okrajové“ případy, jako je zahrnutí HTML, nikdo neřeší. Důsledkem tohoto přístupu je, že nemalá část kanálů RSS (podle některých odhadů kolem 20 %) neobsahuje správně zformované XML. Zdá se, že RSS často přitahuje 14 3.2. MAJORITNÍ ZNA ČKOVACÍ JAZYKY méně technicky orientované autory, pro které je obsah důležitější než jeho forma. Přímo se nabízí srovnání s HTML, at’ už jde o intuitivní samo popisné elementy a atributy, nebo ležérní přístup k formálním specifikacím. RSS 1.0 <http://web.resource.org/rss/1.0/> používá jiný, formálnější přístup k tvorbě RSS kanálu. Verzi 1.0 můžeme také považovat za jednu z mála již dnes fungujících součástí sémantického webu. Nevýhodou této varianty RSS je horší čitelnost zdrojových dokumentů a ne zcela intuitivní datový model RDF. RSS 1.0 se opravdu podstatně liší od RSS 0.9x a není příliš divu, že je pro zastánce původní linie těžko přijatelné. Ke zpracování rozšiřitelných dokumentů v RDF/XML lze bez problémů použít nejen parsery XML, ale také software pro RDF. Velmi známým rozšířením je Dublin Core Modul. Dublin Core je sada metadat vyvinutá knihovníky a odborníky na informační technologie. Standardizuje obecná metadata použitelná pro popis dokumentů. Používá jmenný prostor dc. 3.2.2 Atom RSS 1.0 a 0.9x, 2.0 jsou neformálními specifikacemi, které nejsou publikovány žádnou známou a uznávanou standardizační autoritou nebo průmyslovým konsorciem, ale místo toho malou skupinou lidí. Někteří lidé jsou tím znepokojeni, protože taková specifikace může být změněna podle chuti autorů. Standardizační autority přináší stabilitu díky limitování změn a také tím, že mají zavedenou praxi zavádění změn. Pro zavedení takovéto stability na poli syndikace obsahu byla ustavena IETF pracovní skupina. Atom je funkčně obdobný oběma větvím RSS, je také postaven na XML. Při jeho koncepci byly využity zkušenosti z několikaleté praxe, stal se technicky kvalitním a dobře definovaným standardem, jehož dodržování by se dříve nebo později mohlo stát dobrým zvykem. Obecně není dosud tak široce podporován jako RSS 1.0 nebo 2.0, protože je příliš mladý. V červenci 2005 bylo schváleno doporučení Atom 1.0 <http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html>. Počítá se ovšem s velkým rozšířením, především na serverech podporující standardizovaná řešení. Příkladem může být společnost Google a její portál Blogger.com a Gmail.com. 3.2.3 Srovnání Srovnání verzí RSS V tabulce [3.1] je podrobněji rozepsáno zastoupení jednotlivých verzí, majoritní jazyk syndikace obsahu je angličtina s 82,8% následovaná němčinou s 7,9% 1 . 1. Data byla převzata z <http://www.syndic8.com/stats.php> 15 3.2. MAJORITNÍ ZNA ČKOVACÍ JAZYKY VERZE 0.91 0.92 1.0 2.0 POČET 12,716 1,463 16,918 64,832 PROCENT 13,247% 1,524% 17,625% 67,541% Tabulka 3.1: Verze RSS a jejich počty Srovnání RSS 2.0 a Atom Specifikace Specifikace RSS 2.0 je vlastněna Harvard University a je uzavřená. Žádné významné změny nemohou být provedeny, je zamýšleno použít jiné jméno pro další rozšíření. Specifikace Atom 1.0 reprezentuje shodu skupiny Atompub Working Group s IETF. Specifikace je koncipovaná tak, aby IETF mohla myslitelně vydat další verze a revize této specifikace bez nutnosti ovlivňovaní existujících, i když není vyjádřený žádný závazek nebo spíše žádný požadavek takto postupovat. Protokoly publikování U RSS jsou široce používány dva protokoly, MetaWeblog a Blogger. Je ovšem mnoho zpráv o problémech při vzájemné součinnosti a nedostatcích ve funkcích. Pracovní skupina Atompub vyvíjí Atom Publishing Protocol, který je silně svázán s formátem Atom a je postaven na zkušenostech se stávajícími protokoly. Požadovaný obsah RSS 2.0 požaduje titulek, odkaz a popis. Atom 1.0 požaduje titulek, unikátní identifikátor a časovou známku poslední aktualizace. Užitná hodnota RSS 2.0 může obsahovat čistý text nebo HTML kód s řídícími znaky <>"& převedenými na odpovídající HTML entity – tedy např. < na <, ovšem bez možnosti identifikace, který způsob je použit. Takový HTML kód je zdrojem potíží pro programátory. RSS 2.0 nemůže fakticky obsahovat správně strukturované XML značky, což redukuje možnost znovupoužití obsahu. Atom je v tomto směru daleko lépe navržen. Obsah může být označen jako jeden z těchto: • čistý text, bez značkování, • HTML kód s řídícími znaky převedenými na odpovídající HTML entity, jako v RSS 2.0, 16 3.2. MAJORITNÍ ZNA ČKOVACÍ JAZYKY • správně strukturované, zobrazitelné XHTML, • jakékoli jiné XML značky, • zakódovaný binární obsah (base64), • ukazatel na obsah na webu. Úplný nebo částečný obsah RSS 2.0 má element „description“, který obyčejně obsahuje celý obsah nebo souhrn, občas ovšem chybí. Není zabudován způsob jak tuto situaci rozlišit. Atom má oddělené elementy „summary“ a „content“. Summary je podporován kvůli přístupnosti pokud je obsah netextový (např. audio) nebo nelokální (např. ukazatel do webu). Rozšiřitelnost RSS 2.0 nepoužívá jmenný prostor XML, ale může obsahovat elementy z jiných jmenných prostorů. Neexistuje žádné centrální místo, kde by se uživatel mohl dozvědět o možných rozšířeních. Atom 1.0 používá jmenné prostory XML. Existují i specifická vodítka jak interpretovat elementy rozšíření. Digitální podpis, šifrování RSS 2.0 může být zašifrováno nebo podepsáno jako jakýkoli jiný webový obsah. Atom 1.0 zahrnuje pravidla pro aplikování standardů XML Encryption a XML Digital Signature. Samozřejmě může být zašifrován stejně jako RSS 2.0, jako „pytel“ bitů. Kategorie RSS 2.0 kategorie mají dvě části: label a domain. Atom 1.0 kategorie mají tři části, přidávají nepovinný, lidsky čitelný element title. Schéma Specifikace RSS 2.0 neobsahuje žádné schéma. Atom 1.0 obsahuje RelaxNG schéma, pro podporu těch, kteří chtějí ověřit platnost dat. Ostatní formáty jako XMLSchema mohou být z RelaxNG vygenerovány. 17 3.3. VYUŽITÍ SYNDIKACE OBSAHU 3.3 Využití syndikace obsahu 3.3.1 Vyhledávání a spojování zdrojů Možnost, která se ihned nabízí je vyhledávání a indexování RSS kanálů. V tomto směru bylo již podniknuto několik kroků, příkladem mohou být vyhledávače Plazoo <http://www.plazoo.com/>, Feedster <http://www.feedster.com> a obecně známý Yahoo! <http://www.yahoo.com>. První dva výše zmíněné umožňují zaregistrovat se k odběru všech indexovaných dat splňující uživatelem zadaná kritéria. Je to další krok pro uživatele k zjednodušení získání informací z určité oblasti. Další významnou výhodou těchto vyhledávačů je fakt, že indexují data velmi rychle poté, co byla zveřejněna na internetu. To je dáno jejich zaměřením na indexaci webových blogů a zpravodajských serverů. 3.3.2 Šířené audio a video souborů Prvním známým způsobem využití syndikace obsahu k šíření souborů byl podcasting (slovo vzniklo spojením názvu populárního přehrávače iPod firmy Apple a anglickým slovem broadcasting) Je to nová metoda šíření informací, vynalezená Adamem Curry v roce 2004. Jeho podstatou jsou audio soubory tzv. podcasty, jež si můžeme představit jako audio blogy. Podcast lze snadno stáhnout na počítač a poslouchat kdykoli bez připojení k internetu. Na webových stránkách jsou „podcasty“ uložené v uzpůsobeném RSS souboru. Ten pak specializovaný program průběžně monitoruje a nové soubory sám stahuje a nahrává do uživatelova osobního přehrávače. Podcast tedy funguje velmi jednoduše a bez omezení hardware. V zásadě jde jen o to, že kdokoliv, kdo chce takto vysílat, vytvoří libovolný MP3 soubor a odkaz na něj uloží do RSS. Podcasting je prvním krokem v tomto směru, dále bude následovat šíření video souborů, integrace do sítí pro sdílení (často nelegálního) obsahu. 3.3.3 Získávání informací z portálů Z principu syndikace obsahu je patrná možnost využití i u specializovaných portálů. Pro každou oblast mohou definovat kanál, na kterém budou uveřejňovat informace o nových publikacích, článcích. Celý proces se dá zautomatizovat, takže technicky by nebylo složité publikování tímto způsobem. Zatím však žádný z mnou testovaných portálů přístupných pro MU tuto možnost nenabízí. Doufám, že v brzké době některý z nich tuto funkcionalitu implementuje. 18 Kapitola 4 Webové služby Webové služby (Web Services – WS) poskytují prostředky pro spolupráci mezi různými aplikacemi, jenž mohou být provozovány na odlišných platformách v sít’ovém prostředí. WS představují v podstatě distribuovanou technologii, jakými jsou například RPC <http://www.xmlrpc.com/spec> a CORBA <http://www.omg. org/technology/documents/corba_spec_catalog.htm>. Architektura webových služeb nespecifikuje, jakým způsobem jsou implementovány, ani neurčuje způsob jejich provázání. Účel WS je vykonání určité služby poskytovatelem (provider), jenž poskytuje příslušného agenta implementujícího danou službu a umožňuje tak žadateli (requester) tuto službu využívat. Technologie webových služeb není ve světě počítačové vědy revolucí, ale evolucí starých koncepcí vývoje software na bázi komponent. Úsilí o zvýšení efektivnosti programování vedlo v 80. letech minulého století ke vzniku objektově orientovaného programování. Definování a opakované využívání objektů a využívání tříd postupně pronikalo do všech programovacích jazyků, vývojových prostředí a technologií, někde ve větší, jinde v menší míře. Nejdříve se využívaly knihovny tříd, později dynamicky připojené knihovny. V první polovině 90. let tento vývoj vyvrcholil tvorbou a využíváním komponentů – objektů COM (Component Object Model). Ve druhé polovině 90. let se v podobě DCOM (distributed COM) podařilo překročit hranici jednoho počítače, čímž byla vytvořena možnost, aby program běžící na jednom počítači v sít’ovém prostředí využíval třídy umístěné na jiném počítači. Webové služby jsou pokračováním této expanze za hranice počítače, umožňují překročení hranice jedné platformy, programovacího jazyka a dokonce i sít’ového protokolu. Webové služby představují posun od velkých monolitních struktur aplikací k modelu založenému na komponentech. Aplikace jsou v rámci tohoto modelu sestavené z malých stavebních prvků – jednotlivých funkcí. Pokud jsou tyto funkce umístěné na různých internetových serverech, označují se jako webové služby. Takto sestavené aplikace je možné snadno vytvořit, dynamicky modifikovat a měnit. Obrázek 4.1 ilustruje implementační nezávislost jednotlivých komponent. Byl převzat z dokumentu [16] Webový model programování byl přijat mnohem rychleji a v podstatně širším 19 4. W EBOVÉ SLUŽBY Obrázek 4.1: Nezávislost platforem rozsahu, než jakýkoli jiný přístup k tvorbě distribuovaných aplikací. Fenomenální úspěch webového modelu je možné přisoudit jedné z jeho klíčových charakteristik, je totiž mnohem volněji vázaný než tradiční modely distribuovaného programování. Interakce mezi webovým klientem a serverem je jednoduchá: navzájem si vyměňují zprávy, které obsahují údaje typu MIME <http://www.mhonarc.org/ ~ehood/MIME/> (Multipurpose Internet Mail Extensions). Sémantika zprávy může být modifikovaná pomocí hlavičky nebo hlaviček (headers). Destinace (cíl) zprávy je specifikovaná nepřímo pomocí URL (Uniform Resource Locator). Tato úroveň indirekce může být využita k implementaci vyvážení zatížení (load balancing) a sledování spojení (session tracking). Způsob výměny zpráv mezi agenty žadatele a poskytovatele je dokumentován v popisu webové služby (Web Service Description - WSD). WSD formálně popisuje rozhraní WS pomocí jazyka WSDL (Web Service Description Language). WSDL tedy slouží k popisu formátu zpráv, datových typů, přenosového protokolu, specifikaci URL poskytovatelova agenta a jména služby. WSDL popisuje i chování služby, a to především odpověd’ na zprávu zaslanou této službě. V podstatě jde o dohodu mezi žadatelem a poskytovatelem určující záměr a výsledek interakce. Agenti žadatele a poskytovatele mezi sebou komunikují prostřednictvím zpráv. Nejčastěji je použit protokol SOAP (Simple Object Access Protocol), který je založen na XML. Požadavek také může být specifikován jako požadavek HTTP GET. V tomto případě, ale není možné využít rozšířených funkcí webových služeb. Samotné zprávy protokolu SOAP mohou být přenášeny pomocí protokolu HTTP, nebo i jiných protokolů, jako například SMTP a FTP. Třetí významnou součástí webových služeb je seznam webových služeb UDDI (Universal Description, Discovery and Integration). 20 4.1. WSDL 4.1 WSDL WSDL (Web Services Description Language) <http://www.w3.org/TR/wsdl> je XML struktura popisující sít’ové služby jako soustavu koncových bodů pracujících se zprávami obsahujícími bud’ dokumentově orientované, nebo procedurálně orientované informace. Operace a zprávy jsou popsané abstraktně, potom se váží na konkrétní sít’ový protokol a formát zprávy, aby vytvořily koncový bod. Související koncové body jsou spojené do abstraktních koncových bodů (služeb). WSDL je schopný umožnit popis koncových bodů a jejich zpráv bez ohledu na formáty zpráv nebo sít’ové protokoly, pomocí kterých se komunikace uskutečňuje. V současnosti je reálné použití WSDL ve spojení se SOAP 1.1, HTTP (HyperText Transfer Protocol) GET/POST a MIME (Multipurpose Internet Mail Extensions). WSDL vzniklo jako společná iniciativa firem Microsoft a IBM, které si uvědomily potřebu sjednocení jazyka používaného pro popis rozhraní webových služeb. Navazuje tak na předchozí aktivity, zejména na jazyky NASSL (Network Accessable Service Specification Language), SCL (SOAP Contract Language) a SDL (Service Description Language). WSDL je v současné době vydán jako informativní poznámka W3C a v rámci pracovní skupiny pro popis webových služeb se pracuje na vytvoření skutečného standardu. 4.2 SOAP SOAP (Simple Object Access Protocol) <http://www.w3.org/TR/soap/> je protokol určený k výměně informací v decentralizovaném distribuovaném prostředí. Je to protokol založený na standardu XML a skládá se ze tří částí: z obálky, která definuje strukturu popisující, co je ve zprávě a jak se má zpráva zpracovat, ze souboru pravidel kódování vyjadřujících instance (výskyt) údajových typů charakteristických pro určitou aplikaci a z konvence pro reprezentaci vzdáleného volání procedur a odpovědí. SOAP může být používaný teoreticky v kombinaci s libovolnými protokoly. V současnosti je reálné použití SOAP ve spojení s protokolem HTTP a se systémem rozšíření HTTP. První verze (1.0) protokolu SOAP vznikla na konci roku 1999 jako výsledek společné práce firem DevelopMentor, Microsoft a UserLand, které chtěly vytvořit protokol pro vzdálené volání procedur (RPC) založený na XML. Protokol navazoval na o rok mladší, jednodušší a méně flexibilní protokol XML-RPC. V průběhu roku 2000 se k podpoře přihlásila i firma IBM a nová verze protokolu SOAP 1.1 byla zaslána W3C konsorciu. Verze 1.1 protokolu SOAP je dnes nejpoužívanější, na půdě W3C konsorcia bylo v červnu 2003 schváleno SOAP verze 1.2 jako doporučení. Princip volání metod vzdálených objektů s využitím protokolu HTTP: 1. Klient SOAP (nemusí to být tradiční klient, může se jednat o web server, 21 4.3. UDDI webovou aplikaci, ale také součást desktopu) vytváří dokument XML s údaji pro vzdálené volání metody objektu na externím systému. Vytvoří požadavek na server SOAP, zabalí XML dokument do obálky SOAP a vysílá ho jako požadavek HTTP POST. 2. Celá obálka je odeslaná klasickým připojením protokolu HTTP. 3. Příjmová aplikace, server SOAP, dostane zprávu. Touto aplikací je obyčejně web server, který analyzuje došlou obálku, zavolá příslušný objekt a odevzdá mu přitom potřebné parametry, které přišly v dokumentu SOAP. 4. Objekt vykoná požadovanou operaci a vrátí získanou informaci serveru SOAP. Server SOAP zabalí odpověd’ do obálky SOAP. 5. Obálka je odeslaná zpět do počítače, odkud přišel požadavek. SOAP dokument je uschovaný pod hlavičkou HTTP. 6. Klient SOAP čeká na odpověd’ objektu. Když přijde, klient odstraní obálku a odešle dokument té aplikaci, která ho potřebuje. 4.3 UDDI UDDI (Universal Description, Discovery and Integration) <http://xml.coverpages. org/uddi.html> je veřejný registr určený na strukturované uchování informace o firmách a jejich službách. Prostřednictvím UDDI je možné publikovat a zjišt’ovat informace o technickém rozhraní služeb firmy. Prostřednictvím série XML API (Application Programming Interface) volání na bázi SOAP je možné být v interakci s UDDI jak v čase návrhu, tak i během uskutečňování aplikace za účelem získání technických údajů, aby tyto webové služby mohly být vyvolané a využité. UDDI takto slouží jako infrastruktura softwarového prostředí založeného na webových službách. UDDI je konstruovaný jako registr, ne jako sklad. Registr odesílá (přesměruje) uživatele ke zdroji, zatímco sklad představuje aktuální zdroj informací. Samotný registr pracuje rovněž jako webová služba a komunikace s ní tedy opět probíhá pomocí protokolu SOAP. UDDI je provozováno na uzlech, přičemž pro koncového uživatele je lhostejné, který uzel pro vyhledávání použije. Uzly totiž replikují data, takže přidáním informace o nějaké službě na jeden uzel, se tato informace zanedlouho objeví i na ostatních uzlech. Např. uzel od firmy Microsoft je na adrese <http://uddi.microsoft. com> a od IBM na <https://uddi.ibm.com/ubr>. 22 4.4. VYUŽITÍ WEBOVÝCH SLUŽEB UDDI má tři části: jedna uvádí kontaktní informace o firmě, která vytvořila danou webovou službu, druhá je tvořená jednotlivými webovými službami rozdělenými do kategorií, například podle geografického umístění nebo odvětví průmyslu, a třetí část obsahuje popis WSDL, business pravidla a instrukce, jak tuto službu používat. 4.4 Využití webových služeb Aplikacemi využívajícími webové služby mohou být jiné webové služby, ale i klientské aplikace. Na straně klientů to mohou být standardní osobní počítače, ale také zařízení typu PDA (personal digital assistants) nebo mobilní telefony. Pro programátora je způsob jejich využívání velmi blízký využívání tříd. Webové služby je možné spolu s dalšími komponenty vyhledávat v registrech a vytvořit z nich aplikace. Spojování webových služeb však vyžaduje něco více, než pouze konektivitu – účelné je propojit je inteligentně, to znamená tak, aby výsledná sít’ webových služeb fungovala v rámci procesních a obchodních pravidel. Ten, kdo tuto sít’ tvoří, je IT manažer nebo obchodní analytik zaměřený spíše na obchodní procesy než na (složité) programování. Využívá k tomu nástroje ke znázornění obchodního procesu a formulaci nezbytné procesní logiky bez toho, že by musel psát nějaký kód. Webové služby přinášejí nové možnosti pro vytváření rozsáhlých podnikových systémů. Díky použití XML umožňují jednotnou komunikaci mezi různými platformami a lze tak vytvářet distribuované systémy, které využívají služeb poskytovaných jinými aplikacemi. Možnosti této technologie jsou obrovské a závisí pouze na tom, jak se bude tato technologie využívat při implementaci systémů. Důležitým faktorem při používání webových služeb je jejich dostupnost a bezpečnost. Webové služby lze také využít pro získávání informací z portálů, které by tímto způsobem mohly poskytovat metadata o článcích a publikacích, případně jejich elektronické verze. Vše by šlo zabezpečit oproti IP adresám, případně autentizací pomocí jména a hesla nebo s využitím nějakého vygenerovaného klíče. Zatím však žádný z mnou prověřovaných portálů přístupných pro MU tuto možnost nenabízí. Doufám, že v brzké době některý z nich tuto funkcionalitu implementuje a přispěje tak k lepší dostupnosti shromážděných informací. 23 Kapitola 5 Srovnání způsobů vyhledávání informací V této části bych chtěl představit studii společnosti Ridge Group, rozebrat výhody specializovaných portálů a zmínit ty, ke kterým má Masarykova univerzita přístup. 5.1 Studie společnosti Ridge Group Ridge Group byla založena v roce 1998 s cílem poskytovat konzultace k technologiím, vývoji softwaru, instalaci softwarových produktů a podporu produktů. Zaměřuje se na kombinování technologií a obchodních procesů, technologie na internetu a na CRM (Customer Relationship Management) software. Ridge Group dále provádí hodnocení investic do rizikových firem. Specializuje se především na americký trh, domovské stránky jsou <http://ridge-group.com/> Podle výzkumu společnosti Ridge Group (Information gathering in the electronic age: the hidden cost of the hunt [17] ) z roku 2003 pracovník v oblasti IT stráví kolem 7 hodin týdně, tj. 28 hodin měsíčně vyhledáváním informací, odpovědí a řešení technických problémů. Častější jsou kratší úkoly, jejichž frekvence je ovšem také vyšší, takže zabírají celkově více času než problémy složitějšího rázu, kterých není v průměru mnoho. Studie dochází k závěru, že čas strávený vyhledáváním informací znamená pro podnik s 500 profesionálními pracovníky výdaje v řádu sto tisíc až několika miliónů dolarů ročně. Vyhledávání informací je nedílnou součástí činností každého, kdo působí v oblasti technologií, přesto hodně záleží na efektivitě vyhledávání. Internetu dnes obsahuje příliš mnoho informací a ne všechny jsou správné, přesné nebo relevantní, takže používání klasických vyhledávačů může být zdlouhavé. Volba správného zdroje a ještě více volba vhodného dotazu či klíčového slova nebo pojmu pro vyhledávání je dnes podobné umění jako rychlá orientace v mnoha zdrojích nabízejících odpovědi na dotaz. Vytřídění zdrojů podle spolehlivosti si vyžaduje od internetového uživatele určitou zkušenost. Vyhledávání v knihách také nepatří mezi rychlé a vždy účinné metody, knihovna něco stojí a informace v nich rychle zastarávají a i v době vydání jsou minimálně 6– 10 měsíců staré (podle toho, jak dlouho trvá jejich výroba od odevzdání rukopisu). Stále populárnější jsou knihy dostupné on-line, které stojí jen zlomek ceny tištěných 24 5.2. SROVNÁNÍ P ŘÍSTUP Ů K INFORMACÍM publikací, je k nim neomezený přístup s dobrými vyhledávacími možnostmi, ale stále platí, že získané informace nemusí být zcela aktuální a bude nutné je ověřit jinde. Dotazování se kolegů patří také mezi častý způsob, jak získat odpovědi na otázky, ale může být zdlouhavý a nemusí ani vést ke spolehlivým odpovědím. Proto roste požadavek na prostředky managementu informací, z čehož plynou zisky poskytovatelům databází. Ti dnes musí provádět pečlivou filtraci informací pro jednotlivé klienty a vyvíjet stále více sofistikovanější interaktivní nápovědu a znalostní báze. 5.2 Srovnání přístupů k informacím Rychlost vyhledávání a kvalita získaných informací nejsou v žádné pevné korelaci. Obrázek 5.1 naznačuje relaci mezi přesností obdržených informací a rychlostí jejich získání pro různé typy zdrojů. ERL je zkratka pro Electronic Reference Library, tedy elektronickou knihovnu, portál. Data pro obrázek byla převzata z dokumentu [17]. Obrázek 5.1: Vztah přesnosti obdržených informací a rychlosti jejich získání u jednotlivých zdrojů Rychlejší přístup k lepším informacím přináší rychlejší implementaci. Podle výše 25 5.3. ELEKTRONICKÉ KNIHOVNY A PORTÁLY zmíněné studie více jak 95% techniků a programátorů hledá řešení problému na internetu, okolo 20% ještě dále použije knihu nebo se poradí s kolegou. 5.3 Elektronické knihovny a portály Z obrázku 5.1 jasně vyplývá, že pro co nejrychlejší získání kvalitní informace je vhodné si objednat odběr dat z nějaké elektronické knihovny. Obzvláště vhodné to může být pro větší organizace s technickým zaměřením, kterým poplatek za využívání zdroje výrazně nezvýší výdaje. Zefektivní to především její činnost, protože zaměstnanci se budou věnovat svým úkolům a nebudou ztrácet čas vyhledáváním informací. Jedním z příkladů elektronické knihovny je Safari Tech Books Online <http: //www.safaribooksonline.com>. Jedná se o knihovnu, kde mohou IT profesionálové a programátoři vyhledávat ve více jak tisícovce elektronických verzích knih od osmnácti nakladatelství zahrnující O’Reilly, Addison-Wesley, Cisco Press, Peachpit Press, Prentice Hall, New Riders a Microsoft Press. Podle uživatelů této služby jim Safari přináší úsporu 3,3 hodiny týdně, tedy zhruba 13 hodin měsíčně. Tato čísla jsou publikovaná přímo společností, takže se musí brát s určitou rezervou. Firma Sun Microsystems Inc. <http://www.sun. com/> provedla vlastní test Safari Tech Books Online v rámci hodnocení zvýšení produktivity jejich technických týmů při používání elektronických knihoven. Podle jejich výsledků bylo ušetřeno průměrně 9 hodin měsíčně na jednoho zaměstnance. Je to sice méně než u studie společnosti Ridge Group[17], ale i tak je to důležitých 108 hodin ročně na zaměstnance. Další společností, která se podílela na testování Safari Tech Books byla America Online <http://www.aol.com/>. Ta ovšem nezveřejnila své výsledky, ale pouze potvrdila zlepšení vyhledávání informací u jejich zaměstnanců při použití Safari a celkové zrychlení procesů závislých na daných informací. Důvodem zkrácení doby hledání informací v elektronických knihovnách a portálech je fakt, že vracejí výsledky, které jsou více spjaty s informací, po které uživatel pátrá. Google a ostatní podobné vyhledávače přináší příliš mnoho nedůležitých výsledků a v důsledku stěžují nalezení požadované informace. Každá větší firma, organizace by měla mít přístup k nějakému elektronickému zdroji, který vyhovuje jejímu zaměření. Masarykova univerzita není v tomto směru výjimkou, v dodatku B jsou rozebrány jednotlivé zdroje a jejich zaměření na určitou oblast lidského bádání. 26 Kapitola 6 Vyhledávač nad elektronickými zdroji Masarykovy univerzity Vyhledávač má za úkol sjednotit přístup k více než čtyřiceti elektronickým zdrojům Masarykovy univerzity a umožnit prohledávání těchto zdrojů podle tématických oblastí z jednoho místa. Uživatel tak může vyhledávat v odborných článcích publikovaných na předplacených portálech, v bakalářských, diplomových a disertačních pracích i v dalších elektronických publikacích. Samozřejmostí je možnost rozšířeného vyhledávání podle názvu, autora, data publikování či vydavatele. Dotazy lze rovněž upřesnit podle oboru či zdroje. Obrázek 6.1: Uživatelské rozhraní Samotný vyhledávací systém se skládá z několika samostatných modulů, které jsou realizovány jako webové služby. Jádro systému je postaveno na vícevrstvé architektuře Java 2 Enterprise Edition (J2EE). Uživatel přistupuje k systému přes tenkého klienta, který je implementován s využitím aplikačního rámce Struts. Každému elektronickému zdroji odpovídá jeden modul umožňující automatizované získávání dat. Jednotlivé moduly pak s jádrem systému komunikují nad protokolem SOAP. Pro nasazení systému byl vybrán open source aplikační server JBoss. Databázovou vrstvu zabezpečuje PostgreSQL. 27 6.1. SERVER Obrázek 6.2: schéma celého systému 6.1 Server Modul server je jádrem celého systému. Přijímá dotazy od klienta, které analyzuje a dále přeposílá odpovídajícím modulům komunikujícím s elektronickými zdroji. Přijaté odpovědi spolu s dotazem ukládá do databáze a postupně nabízí uživateli. Součástí serveru je i modul pro stahování vybraných dokumentů. Server automaticky uloží první nalezený dokument do vyrovnávací paměti, čímž může uživateli poskytnout požadovaný dokument lokálně a tedy rychleji. 6.2 Datové úložiště Vzhledem k tomu, že odezva většiny elektronických zdrojů není zanedbatelná, vznikla potřeba implementace určité vyrovnávací paměti vyhledávače (Cache). Ta je realizována pomocí datového úložiště, do kterého si server ukládá dopředu stažené dokumenty. Dále pak samotné dotazy uživatelů, výsledky vyhledávání, stažené dokumenty a jejich metadat. 28 6.3. MODULY PRO KOMUNIKACI S ELEKTRONICKÝMI ZDROJI Obrázek 6.3: Implementační diagram 6.3 Moduly pro komunikaci s elektronickými zdroji Každý elektronický zdroj vyžaduje vlastní modul (Plugin) pro přeposílání dotazu a následné zpracování odpovědi. Moduly jsou realizovány jako webové služby. Pro zpracování odpovědí a jejich převedení do unifikovaných metadat využívají řadu pomocných nástrojů, mezi které například patří – XSLT procesor Xalan, korektor správnosti kódu HTML JTidy, analyzátor HTMLParser nebo aplikační rámec pro zpracování XML Dom4j. Metadata jsou v rámci systému používána v souladu s doporučeními Dublin Core [9]. 6.4 Tenký klient Webové rozhraní vyhledávače je realizováno pomocí aplikačního rámce Struts. Je dostupné ve dvou jazykových mutacích – česky a anglicky. V jednoduchém režimu uživatel zadává pouze klíčová slova, v režimu rozšířeném má možnost vyhledávat ve vybraných tématických oblastech nebo zdrojích. Samozřejmostí je i vyhledávání například podle autora, názvu, data publikace či vydavatele. Dostupné elektronické zdroje klient načítá z externího RDF souboru. V současné chvíli je toto rozhraní opti29 6.5. VÝVOJOVÝ TÝM malizováno pro nejběžnější webové prohlížeče – Internet Explorer, Firefox, Mozilla a Opera. V testovacím režimu i pro mobilní zařízení typu PDA. Obrázek 6.4: Uživatelské rozhraní pro PDA 6.5 Vývojový tým Na projektu pracují tito řešitelé: • Mgr. Jan Pavlovič – vedoucí projektu, • Bc. Jakub Ďurovec – modul server, • Bc. Jiří Běl – modul datové úložiště, • Bc. Rostislav Svoboda – moduly pro komunikaci s elektronickými zdroji, • Bc. Petr Klemšinský – modul PDA. 6.6 Zadání projektu • Analyzovat strukturu elektronických zdrojů MU. • Naprogramovat vyhledávací a stahovací systém, který uživateli nabídne ke stažení relevantní publikace. • Systém bude realizován jako webová služba (webservice). 30 6.7. P ŘEHLED POUŽITÝCH NÁSTROJ Ů 6.7 Přehled použitých nástrojů V této části uvádím přehled softwarových nástrojů použitých při vývoji projektu. Nástroje jsou rozděleny podle fáze vývoje projektu, nechybí u nich krátký popis a poznámky z praxe. U každého najdete rovněž odkaz na WWW stránky a další zdroje informací. 6.7.1 Analýza a návrh Magic Draw Verzi Community edition považuji v současnosti za nejlepší volně dostupný CASE nástroj. Napsán v jazyce Java, je velmi rychlý, přehledný, dobře se s ním pracuje. Nabízí i funkci reengeneering, modely ukládá ve formátu XMI. Ve verzi Community nejsou žádná omezení pro Class diagramy, ale pro ostatní typy diagramů je omezen počet elementů použitých v jednom diagramu na 25. Nástroj je v současnosti dostupný ve verzi 10 na stránkách MagicDraw <http: //www.magicdraw.com/>. 6.7.2 Implementace Netbeans Vývojové prostředí pro Java aplikace z dílny české pobočky firmy SUN. Nabízí podporu Enterprise JavaBeans 2.1, webových služeb, refactoring, automatizované testy, integrovaný aplikační server, připravuje se i podpora pro JBoss. Verze 4.1 a 5.0 jsou dostupné na stránkách Netbeans <http://www.netbeans.org/>. JDeveloper Vývojové prostředí pro Java aplikace od firmy Oracle, v současnosti ve verzi 10 g. Nabízí podporu pro JDK 5.0, J2EE 1.4, JSF, EJB 3.0, UML, spolupráci s databází, základní Javu a XML. Může obsahovat také ADF (Application Development Framework), tato možnost je volitelná. Aktuální verze je dostupná na stránkách Oracle JDeveloper <http://www.oracle.com/technology/products/jdev/>. Ant Nástroj na sestavování aplikací z dílny The Apache Software Foundation. Velmi podobný známému Make, pouze vhodně přizpůsobený pro použití v Javě. Ekvivalentem Makefile pro Make je zde build.xml. Netbeans jej interně používají pro sesta31 6.7. P ŘEHLED POUŽITÝCH NÁSTROJ Ů vování projektů. Verze 1.6.5 je dostupná na těchto stránkách Ant <http://ant. apache.org/> JUnit JUnit je programový rámec (framework) pro automatizované testování, odpovídající filosofii agilního programování. Umožňuje vývojáři otestovat funkčnost systému ihned po jakémkoliv zásahu do zdrojového kódu. Dříve, než se začne psát zdrojový kód nějaké metody, je vhodné pro ni napsat test. Po vytvoření zdrojového kódu metody, je pak okamžitě možné tuto funkčnost ověřit. Aktuální verze je dostupná na stránkách JUnit <http://www.junit.org/>. JMeter JMeter je grafický nástroj na tvorbu zátěžových testů pro www aplikace, webové služby, JDBC spojení, java aplikace apod. Skládá se ze tří hlavních částí: • Konzoly pro tvorbu testů, řízení testů a pro sběr statistických informací. • Dělníka, který generuje požadavky na testovaný subjekt. • HTTP Proxy na generování testů. Používá se pro vytvoření složitějšího testu, simulujícího chování uživatele. Výsledky testů se dají zobrazit v grafu i uložit ve formátu XML nebo CSV. Aktuální verze JMeter je dostupná na stránkách <http://jakarta.apache.org/ jmeter/>. Velmi dobrým zdrojem informací je kniha Martina Hynara, Java – nástroje [12]. 6.7.3 Nasazení a správa Tomcat Open source kontejner pro servlety a JSP s prvky webového serveru. Vyvíjen jako součást projektu Jakarta pod záštitou The Apache Software Foundation. Aktuální verze je dostupná na stránkách projektu Jakarta <http://jakarta.apache.org/ tomcat/>. JBoss Výkonný, robustní a velmi rozšířený open source aplikační server. Jeho popis by vystačil na samostatnou práci. Aktuální verze je dostupná na stránkách JBoss <http: //www.jboss.org/>. 32 6.7. P ŘEHLED POUŽITÝCH NÁSTROJ Ů 6.7.4 Podpora vývoje v týmu Maven Maven pomáhá při řízení týmového projektu. Z jednoho místa je uživatel schopen sestavit projekt, vytvořit zprávy, či dokumentaci, webovou stránku o stavu projektu a další. Patří zatím bohužel k nástrojům, po kterých se v týmovém projektu sahá teprve tehdy, když se stává téměř neudržitelným. Maven oplývá i řadou přídavných modulů, pomocí kterých jste například schopni testovat kvalitu zdrojových kódů, spouštět testy nebo generovat pomocné třídy. Více informací je k dispozici na stránkách Maven <http://maven.apache.org/>. Velmi dobrým zdrojem rad a postupů je rovněž kniha Martina Hynara, Java – nástroje [12]. Subversion Systém pro správu verzí by neměl chybět při žádném projektu vyvíjeném v týmu. Zdrojové kódy se ukládají do společné úschovny. Z té si vývojář před započetím práce zkopíruje aktuální stav na lokální stroj a pokračuje v programování. Po dokončení práce odešle své změny zpět do úschovny, aby byly dostupné i pro kolegy. Případně vyřeší konflikty souborů, které mezitím změnil někdo z ostatních členů týmu. Systém poskytuje funkce jako rozdíl mezi verzemi, vývoj více větví, popis změn v dané verzi. Aktuální verzi systému lze volně stáhnout na domácích stránkách <http:// subversion.tigris.org/>. Subversion má velmi dobře zpracovanou dokumentaci, nicméně rád bych doporučil i článek na ABC Linuxu od Ondřeje Zloského <http://www.abclinuxu. cz/clanky/show/54058>. Wiki Encyklopedických systémů není nikdy dost. Dají se velmi dobře využít na sdílení poznatků mezi kolegy v týmu, rovněž tak na vystavení směrnic a pracovních postupů. Jedna z nejlepších je MediaWiki <http://www.mediawiki.org/>. Pro projekt VEZMU existují stránky <http://kore.fi.muni.cz:5080/wiki/index. php/Projekty:VEZMU>, na kterých je velké množství informací o dílčích řešeních jednotlivých úkolů. 33 Kapitola 7 Problematika automatizovaného sběru informací 7.1 Obecné informace Modul pro automatizovaný sběr dat slouží jako prostředník mezi jádrem systému a zdrojem elektronických dat, poskytuje jednotné rozhraní pro vyhledávání nad konkrétními zdroji. Je mu zaslán unifikovaný dotaz, který zpracuje a vyhodnotí. Výsledek hledání odešle zpět serveru. Komunikace probíhá pomocí webových služeb – protokol SOAP. Z toho plyne, že není nutné modul naprogramovat v jazyce Java, může se použít jakýkoli, v kterém jsou implementované webové služby. Další nespornou výhodou je jejich distribuovatelnost, moduly mohou být spuštěny na více strojích, což přináší lepší možnost rozložení zátěže aplikace. Seznam všech elektronických zdrojů Masarykovy university je na adrese <http://library.muni. cz/e_zdroje.html>. 7.2 Specifika zdrojů Při přípravě implementace modulu pro určitý zdroj dat se musí brát v potaz několik faktorů, které silně ovlivňují složitost samotné implementace. Základní specifika zdrojů jsou tyto: • Způsob zadání dotazu. • Kritéria vyhledávání. • Struktura odpovědi. • Množství a různost poskytnutých informací. 7.2.1 Způsob zadání dotazu Nejprve se musí prozkoumat jakou metodou a v jaké formě je dotaz zasílán serveru s elektronickými daty. Pokud se jedná o metodu GET, je tento úkol jednodušší, protože je možno získat většinu informací z URL. Při používání metody POST se musí 34 7.2. SPECIFIKA ZDROJ Ů prozkoumat samotný zdrojový kód vyhledávací stránky. Další důležitou informací je, jakou URL má odpověd’ na dotaz. Existují dvě možnosti: bud’to je dotaz uveden v lidsky čitelné podobě v adrese odpovědi, nebo je zaslána pouze identifikace dotazu (většinou session, případně id vytvořené serverem) a doplňkové informace o stránkování. Lepší varianta je samozřejmě ta první. 7.2.2 Kritéria vyhledávání Každý zdroj umožňuje vyhledávat podle několika kritérií, která se ovšem většinou navzájem liší. Proto se u každého zvlášt’ musí zvažovat, která podmínky jsou relevantní pro zahrnutí do implementace modulu. Snažil jsem se prozkoumat zdroje elektronických dat a jejich rozhraní pro rozšířené vyhledávaní. Výstupem by měla být množina kritérií rozšířeného vyhledávání, podle které je možno specifikovat své požadavky u většiny zdrojů. Při implementaci vyhledávacích modulů je nutné vzít v úvahu tuto množinu kritérií. Při řešení úkolu jsem se zaměřil především na stránky IEEE (<www.computer. org>), Nature (<www.nature.com>), ACM (<http://www.acm.org/dl/>) a Springer (<http://link.springer.de/>). V tabulce [7.1] jsou podrobněji rozepsané možnosti jednotlivých zdrojů. Plnotextové Název publikace Autor Datum publikování ISBN/ISSN Datum Od/Do Abstrakt Editor Výsledků / strana IEEE X X X X X X – – X Nature X X X – – X X – – ACM X X X – X X X X X Springer X X X – – X X – X Tabulka 7.1: Kritéria rozšířeného vyhledávání Jako výslednou množinu implementovatelných kritérií vyhledávání pro moduly jsem vybral tyto: • Plnotextové vyhledávání. • Název publikace. • Autor. 35 7.2. SPECIFIKA ZDROJ Ů • Datum Od/Do. • Abstrakt • Výsledků na stranu. Pokud nějaký zdroj dat neumožňuje vyhledávání podle některého z uvedených kritérií, záleží čistě na programátorovi, jak s touto situací naloží. Je doporučeno serveru VEZMU vrátit prázdnou odpověd’. 7.2.3 Struktura odpovědi Strukturou odpovědi je myšlena kvalita zdrojového kódu a množství klíčových prvků ve stránce pro snazší vyhledání potřebných informací. Pokud je odpověd’ v XHTML, případně splňuje nějaké schéma, lze pro získání potřebných informací použít XSLT transformaci. V opačném případě je nutno procházet zdrojový dokument a vyhledávat klíčové řetězce, což je velice pracné a také méně elegantní než XSLT transformace. 7.2.4 Množství a různost poskytnutých informací Informace poskytnuté v odpovědi na dotaz se liší zdroj od zdroje. Některé zašlou potřebná data hned v odpovědi, jiné poskytnou na ně odkazy, stává se však také, že potřebné informace nelze dohledat. Zdroje by měly být schopny poskytnout informace jako název článku, jméno autora, abstrakt, datum publikování, číslo strany a odkaz na článek. 7.2.5 Co by měl modul umět V následujícím obrázku 7.1 jsou zachyceny základní případy užití modulu pro automatizovaný sběr dat. 36 7.2. SPECIFIKA ZDROJ Ů Obrázek 7.1: Diagram případů užití 37 Kapitola 8 Implementace modulů Doposud byly implementovány moduly pro portály IEEE (<http://www.computer. org>), Nature (<http://www.nature.com>), ACM (<http://www.acm.org/ dl/>) a Springer LINK (<http://www.springerlink.com/>). Jako hlavní programovací jazyk je zvolena Java. Autorům dalších modulů velice doporučuji knihy Java efektivně, 57 zásad softwarového experta [3] od J. Blocha a Java: programujeme profesionálně [?], jejím autorem je Brett Spell. Obrázek 8.1: Diagram aktivit Obrázek 8.2: Diagram aktivit – pokračování 38 8.1. VYTVO ŘENÍ POŽADAVKU NA ZDROJ Obrázek 8.3: Sekvenční diagram 8.1 Vytvoření požadavku na zdroj Modul, běžící jako webová služba, dostane od serveru VEZMU požadavek. V Javě se předá objekt Query. Z toho se získají všechny potřebné informace nutné pro sestavení dotazu, jako např. dotaz na vyhledávání v celém textu, jméno autora, název díla. Samotné sestavení požadavku je specifické pro každý zdroj, protože se musí zohlednit způsob zadávání dotazu. Nejjednodušší varianta je, pokud jsou data serveru zasílána metodou GET v lidsky dobře čitelné formě. 8.2 Transformace odpovědi do XHTML Z odpovědi zdroje na dotaz od modulu je potřeba získat relevantní informace, které se dále přepošlou serveru VEZMU. Jednou z možných cest je data postupně procházet a vyhledávat v nich klíčové řetězce. Tento postup je velice pracný a časově náročný. Nese s sebou další nevýhodu, a tou je nárůst velikosti zdrojového kódu modulu. S tím souvisí větší pravděpodobnost výskytu chyby, horší orientace v kódu, problémy s jeho udržitelností a vyšší nároky na programátora. Existuje však elegantnější cesta a tou je transformace odpovědi do XML a její další zpracování pomocí XSLT stylu. Tuto transformaci lze aplikovat pouze u některých zdrojů dat, jejichž odpověd’ je bud’ ve formátu XHTML nebo ji lze do něj lehce převést. V opačném případě se musí postupovat výše zmíněným návodem. 39 8.3. XSLT TRANSFORMACE Pro samotnou transformaci jsem vyzkoušel několik javových balíků, využíval jsem i části projektů, které byly vystaveny na webu. Výsledek byl často nevyhovující, někdy se vůbec nedostavil. Po dlouhém hledání a testování jsem našel dva projekty, které vyhovovaly mým potřebám. První z dvojice je HTMLParser, adresa projektu je <http://www.htmlparser. org>. Jak název napovídá, jedná se analyzátor HTML kódu. Tento balík je spíše vhodný pro případ nekvalitního kódu odpovědi. Umožňuje extrakci textu, odkazů, obrázků, kontrolu odkazů, přepis URL, ukládání stránek a mnoho dalších věcí. Druhým projektem je JTidy, adresa domácí stránky je <http://jtidy.sourceforge. net>. Jedná se o port programu HTML Tidy <http://www.w3.org/People/ Raggett/tidy/> konsorcia W3C. Primárním úkolem je kontrola syntaxe a formátování zdrojového kódu. Stejně jako jeho vzor, JTidy může být použit pro opravování poškozených a chybných HTML. Tento balík se používá pro transformaci výsledku vyhledávání do XHTML. Nejprve se musí vytvořit nová instance objektu Tidy, poté je nutné nastavit transformaci do XHTML pomocí metody setXHTML(true). Dále je vhodné potlačit vypisování různých varování a doporučení, protože JTidy podává velké množství informací a zbytečně by zaplňovalo soubor se záznamy o činnosti. Nakonec se zavolá metoda parse(), která má dva parametry: InputStream a OutputStream. Tímto je převod do XHTML hotov. U transformace odpovědi do XHTML je možno přemýšlet o potencionálním zrychlení této fáze. Bylo by ovšem nutné nalézt balík s možností převodu HTML do XHTML, ale žádný další dosahující kvalit JTidy jsem bohužel nenašel. V úvahu přichází pouze analyzátory kódu, u kterých by se musela struktura dokumentu procházet ručně, což není v žádném případě rychlé a ani efektivní. 8.3 XSLT transformace V předchozí části bylo ukázáno jak převést odpověd’ do XHTML. Dalším krokem je získat potřebné informace. K tomu poslouží XSLT transformace. Nejprve se musí vytvořit XSLT styl. Jeho složitost je silně ovlivněná členitostí zdrojového kódu odpovědi. Nejlepší cesta je nalézt význačné, případně unikátní elementy a pomocí nich adresovat hledané informace. Tvorba stylu je časově náročná, musí se provádět pro každý zdroj. Velmi bych doporučil knihy XSLT – Příručka internetového vývojáře [11] a XML Bible [13]. Dále je nutné vybrat některý z nástrojů pro zpracování XML. Nejpoužívanějšími jsou Saxon a Xalan. Více informací o nich lze nalézt na domovských stránkách projektů <http://saxon.sourceforge.net/> a <http://xml.apache.org/xalan-j/>. Jejich volání z programů napsaných v jazyce Java je dobře popsané v dokumentaci, proto se tu o něm nebudu zmiňovat. Výstup transformace by měl být obdobný jako v příkladu 8.3.1. Specifická data pro určitý zdroj mají ve svém názvu jako prefix 40 8.3. XSLT TRANSFORMACE název zdroje, např. IEEE_More_abstract_link. <?xml version="1.0" encoding="ISO-8859-2"?> <document><clanek> <Title> Automating Experiments Using Semantic Data on a Bioinformatics Grid </Title> <Creators> Chris Wroe, Carole Goble, Mark Greenwood, Phillip Lord, Simon Miles, Juri Papay, Terry Payne, Luc Moreau </Creators> <Date>January 2004</Date> <Page>48-55</Page> <Abstract> myGrid assists bioinformaticians in designing and executing in silico experiments using the Grid’s resources. In myGrid, much of this experimental design has been encoded as workflows... </Abstract> <IEEE_Whole_document> IEEE Intelligent Systems </IEEE_Whole_document> <IEEE_Whole_document_link> http://www.computer.org/intelligent/ </IEEE_Whole_document_link> <IEEE_Pdf> http://csdl.computer.org/dl/mags/ex/2004/01/x1048.pdf </IEEE_Pdf> <IEEE_Html> http://csdl.computer.org/dl/mags/ex/2004/01/x1048.htm </IEEE_Html> </clanek></document> Pøíklad 8.3.1: XML data po transformaci 8.3.1 Možnosti zrychlení transformace Velmi zajímavým problémem je možnost zrychlení této fáze. Předně musí být efektivně napsán XSLT styl, což klade na autora netriviální požadavky. Měly by se používat osy předek, následník a sourozenec pro adresování blízkých elementů. Nevhodné je absolutní adresování každého elementu od kořene, protože se vždy musí procházet celý strom elementů. Obecně je tedy vhodnější globálně adresovat jeden 41 8.3. XSLT TRANSFORMACE základní element a od něj nalézt lokální vazby k dalším elementům, většinou následníkům nebo sourozencům. Dalšího zrychlení je možno dosáhnout na straně samotného transformačního procesoru. Každý procesor se liší v implementaci, z toho plyne i různá rychlost prováděných transformací. Vliv má také způsob tvorby transformačního objektu, zda je XSLT styl předkompilován do objektu Template nebo použit jednorázově. Není možné ihned říci, který transformační balík a jaký způsob konstrukce transformačního objektu je nejrychlejší. Bylo tedy nutné provést testování rychlosti transformace. 8.3.2 Testování rychlosti transformace Cílem testování bylo transformovat data ve formátu XHTML do zjednodušeného XML formátu. Data byla uložena na lokálním souborovém systému pro eliminaci možných zpoždění při načítání ze sítě. Jednalo se o výsledek hledání ze stránek <http://www.computer.org> společnosti IEEE s omezením 50 nalezených odkazů na stránku. XSLT šablona byla taktéž uložena na lokálním souborovém systému. Více informací o hardwarové stránce testu je v sekci 8.3.3. Prověrkou prošly dva nejrozšířenější balíky nástrojů pro zpracování a transformování XML v Javě, Saxon (ve verzi 8.2) a Xalan (ve verzi 2.6.0). Xalan implementuje také technologii XSLTC1 , k transformaci se nepoužívají přímo XSLT styly, ale zkompilované třídy těchto stylů. Důsledkem by mělo být zrychlení transformací. Vytvořit archiv IEEEstyl.jar, ve kterém bude třída cz.muni.fi.vezmu.styles.IEEEstyl obsahující prědkompilovaný styl se dá například tímto příkazem: java org.apache.xalan.xsltc.cmdline.Compile -j IEEEstyl.jar -p cz.muni.fi.vezmu.styles IEEEstyl.xsl K otestování byly vybrány čtyři různé druhy transformací: • Saxon s přímým voláním XSLT stylu. • Xalan s přímým voláním XSLT stylu (v obrázcích označováno jako XalanNoTranslet). • Xalan s použitím technologie XSLTC, kompilování stylu za běhu (XalanTransletOnlineCompilation). • Xalan s použitím technologie XSLTC, styl již předkompilován (XalanTransletCompiled). 1. Více informací je možné získat na adrese <http://xml.apache.org/xalan-j/xsltc_ usage.html>. 42 8.3. XSLT TRANSFORMACE Každá transformace se prováděla 100krát. V těle testovací metody se zaznamenal čas začátku a konce transformace, na standardní výstup se poté vypsal jejich rozdíl v milisekundách. Nakonec se vypočítal průměrný čas. Vítězem se podle očekávání stal Xalan s předkompilovaným XSLT style, následován Saxonem. Výsledky jsou vidět na obrázcích 8.4. a 8.5, časy jsou uvedeny v milisekundách. Obrázek 8.4: Tabulka rychlosti transformace Obrázek 8.5: Graf tabulky rychlosti transformace 8.3.3 Hardware použitý pro testy Využity byly 3 stroje: 1. Prvním strojem je můj postarší stolní počítač (steve_old). CPU: Intel Pentium IITM 266MHz (sběrnice jen na 66MHz) Pamět’: 64 MB 43 8.4. TVORBA ODPOV ĚDI HDD: 3,2 GB UDMA 2. Druhým strojem je můj nový stolní počítač (steve_new). CPU: Intel Pentium CeleronTM 2GHz Pamět’: 512 MB HDD: 160 GB UDMA 100 3. Třetím strojem je nymfe33 (nymfe33.fi.muni.cz). CPU: AMD AthlonTM XP 2500+ Pamět’: 768 MB HDD: 80 GB 7200 ot./min UDMA 100 Na všech počítačích byly nainstalované linuxové distribuce, jmenovitě Mandrake Linux 9.1, Mandrake Linux 10.0 a Fedora Linux Core 3. Java byla použita ve verzi 1.5.0-rc-b63, respektivě 1.5.0-01-b08. 8.4 Tvorba odpovědi Poslední krokem při implementaci modulu pro automatický sběr dat je tvorba odpovědi a její zaslání serveru VEZMU, který data dále zpracovává. Vracen je vektor objektů Metadata, jeden objekt Metadata obsahuje vždy informace o jednom díle nebo článku. Skládá se z vektoru objektů Element a doplňujících informací jako identifikátor v databázi, identifikátor dat v rámci zdroje (nejčastěji adresa dokumentu), název zdroje, z kterého dokument pochází. Objekt Element uchovává jméno proměnné, její hodnotu a zkratku jazyka, v kterém jsou informace uchovány. new Element("Publisher","IEEE Inc.","en"); Názvy metadat jsou převzaty z Dublin Core (<http://www.dublincore.org/>). Jedná se o tyto termíny: Language, Publisher, Type, Format, Title, Creator, Date, 44 8.4. TVORBA ODPOV ĚDI Page, Abstract. Specifická metadata pro určitý zdroj mají ve svém názvu jako prefix název zdroje. Pro tuto fázi jsem si vybral na pomoc balík Dom4j, jehož domovské stránky jsou na adrese <http://www.dom4j.org/>. Pomocí tohoto nástroje lze lehce procházet strukturu XML dat, podporuje XPath výrazy. V XML datech by měly být korektní názvy elementů již připraveny, pouze element Creators se musí rozdělit na jednotlivé elementy Creator. K tomuto účelu využívám objekt StringTokenizer. Postupně se vytváří objekty Element, ty se přidávají do vektoru těchto objektů. Vektor Elementů se přidá do objektu Metadata, ve kterém jsou zachyceny informace o zdroji, datu poslední změny metadat a datu poslední změny v mezipaměti. Nakonec se vytvoří vektor objektů Metadata, který se odešle serveru. Příklad zasílaných metadatdat (název metadat: hodnota) je v příkladu 8.4.1. Metadata ID: http://csdl.computer.org/dl/mags/ex/2004/01/x1048.pdf Metadata source: IEEE Language : en Publisher : IEEE Inc. Type : Text Format : application/pdf Title : Automating Experiments Using Semantic Data on a Bioinformatics Grid Creator : Chris Wroe Creator : Carole Goble Creator : Mark Greenwood Creator : Phillip Lord Creator : Simon Miles Creator : Juri Papay Creator : Terry Payne Creator : Luc Moreau Date : January 2004 Page : 48-55 Abstract : myGrid assists bioinformaticians in designing and executing in silico experiments using the Grid’s resources... IEEE_Whole_document : IEEE Intelligent Systems IEEE_Whole_document_link : http://www.computer.org/intelligent/ IEEE_Pdf : http://csdl.computer.org/dl/mags/ex/2004/01/x1048.pdf IEEE_Html : http://csdl.computer.org/dl/mags/ex/2004/01/x1048.htm IEEE_More_abstract_link : http://csdl.computer.org/comp/mags/ex/2004/01/x1048abs.htm Pøíklad 8.4.1: Data zasílaná serveru 45 Kapitola 9 Testy modulů a portálů Při vývoji jakékoli aplikace je nezbytné provádět testy její funkčnosti. Rozlišují se dva základní typy testování: automatické a ruční. První z nich je méně náročný, provádí se testy zvenku, někdy nazývané testy černé skříňky. Při ručním testování se většinou kontrolují postupy uvnitř metod, bývá složitější. Nejvhodnější bývá oba postupy kombinovat. U jednotlivých modulů se uchovávají záznamy o prováděných operacích, takže v případě chyby lze dohledat příčinu takového stavu. Dále jsou implementovány metody pro ověření správné funkčnosti modulu a dostupnosti získávaných informací. Před psaním samotných testů je vhodné nastudovat nějakou literaturu o tomto tématu, například knihu Programování řízené testy [4]. 9.1 Testování pomocí rámce JUnit Testovací rámec JUnit <http://www.junit.org/> je open source produkt, který urychluje vývoj opakovatelných testů a poskytuje mechanismus pro jejich spouštění. Předmětem testování jsou javovské třídy. JUnit framework zahrnuje: • Srovnávání očekávaných hodnot se skutečnými. • Příslušenství pro sdílení společných testovacích dat. • Sady testů pro snadnou organizaci a snadné spouštění testů. • Grafický a textový spouštěč testů. Testy, tedy testovací třídy, je vhodné psát před implementací samotné třídy testované. Při psaní testů se mnohdy odhalí chyby, na které se nemyslelo při analýze a návrhu. Další výhodou je, že usnadňují ladění implementované testované třídy. Tato pozitiva jsou často zdůrazňovaná v metodice extrémního programování. V praxi to bohužel bývá tak, že na testování vzhledem k časovému skluzu projektu nezbývá dostatečné množství času a unit testy se pak nepíší bud’ vůbec, nebo až úplně na závěr. 46 9.1. TESTOVÁNÍ POMOCÍ RÁMCE JUNIT Pro každou třídu vzniká jedna testovací třída. Název bývá zvykem vytvořit spojením názvu třídy testované a slova „Test“. Tedy pro třídu „NATUREPlugin“ vzniká typicky testovací třídy s názvem „NATUREPluginTest“. Na stránkách projektu JUnit je dostatečně kvalitně zpracovaná dokumentace, viz [14]. package cz.muni.fi.vezmu.searchPluginImpl; import junit.framework.TestCase; public class NATUREPluginTest extends TestCase { public NATUREPluginTest(String testName) { super(testName); } K inicializaci a vyčistění prostředí JUnit poskytuje metody setUp() a tearDown(), které jsou volány před každým a po každém vykonání testu. Testy ve třídě jsou tak od sebe izolovány. protected void setUp() throws java.lang.Exception { plugin = new NATUREPlugin(); dotaz = new AxisQuery(); } protected void tearDown() throws java.lang.Exception { } Je vhodné testovat minimálně všechny public metody třídy. Většinou se netestují primitivní get a set metody. Název testovací metody, pokud má být spuštěn automaticky v sadě, musí začínat řetězcem „test“. Pro jednu metodu testované třídy může existovat více testovacích tříd. To závisí na tom, co všechno se rozhodneme testovat. public void testNumberOfResults(){ int limit = 7; try { dotaz.setFulltext("garbage"); dotaz.setLimit(limit); Vector result = plugin.processQuery(dotaz); assertEquals( limit, result.size()); } catch (AxisSearchException e) { fail(); } } Nakonec se vytvoří sada testů, která slouží ke spouštění všech testovacích metod testovací třídy. Nejsnadněji se sada vytvoří pomocí metody suite() s využitím Java 47 9.2. TESTOVÁNÍ POMOCÍ RÁMCE CACTUS reflection pro dynamické vytvoření testovací sady zahrnující všechny testXXX() metody. Jednotlivé testy jsou do sady přidávány ve stejném pořadí, v jakém jsou implementovány. Je tedy nutné brát v úvahu toto pořadí v případě, kdy jsou jednotlivé testy navzájem závislé. Tím se myslí používání společných dat. Klasicky se může jednat o vytvoření, aktualizaci a zrušení objektu nebo jiné entity, například databázové. public static junit.framework.Test suite() { return new junit.framework.TestSuite(NATUREPluginTest.class); } Pro start testů nabízí JUnit dva spouštěče, textový a grafický. Pro využití textového se musí implementovat následující metoda main(). public static void main(String args[]) { junit.textui.TestRunner.run(suite()); } } Samotné spuštění se pak realizuje přímým zavoláním třídy. Start testů pomocí grafického spouštěče se provede takto: java junit.swingui.TestRunner cz.muni.fi.vezmu.NATUREPluginTest Vývojová prostředí mnohdy nabízejí ještě pohodlnější spouštění JUnit testů pomocí integrovaných či doinstalovaných přídavných částí. Netbeans integrují JUnit testy přímo do sebe, stačí si vybrat projekt a z kontextového menu zvolit položku Run tests. Pro spuštění testu v Eclipse je nutné použít menu Run | Run As | JUnit Test. JUnit testy jsem využil především během implementace modulů pro jednotlivé zdroje. Velmi mi pomohly při hledání chyb a nekorektních zpracování dat. Testoval jsem hlavní i pomocné metody, korektnost vracených informací, počet odpovědí i správnost návratového typu při nevhodně položeném dotazu. Zpočátku jsem neměl zahrnuté testy dostupnosti portálů, ty jsem ovšem velmi brzy dodělal. Po nasazení modulů do provozu již tento způsob ověřování funkčnosti úplně nevyhovoval. Neměl jsem vždy ihned přístup ke zdrojovým kódům a proto jsem pátral po způsobu, jak nasazené moduly okamžitě otestovat, nejlépe přes webové rozhraní. 9.2 Testování pomocí rámce Cactus Testovací rámec Cactus <http://jakarta.apache.org/cactus/> je určen pro testování kódu na straně serveru. Využívá JUnit a dále jej rozšiřuje. Při tvoření testu je na výběr ze dvou možnosti: rozšířit třídu TestCase z balíku Cactus 48 9.2. TESTOVÁNÍ POMOCÍ RÁMCE CACTUS public class TestSampleServlet extends ServletTestCase { } public class TestSampleTag extends JspTestCase { } public class TestSampleFilter extends FilterTestCase { } nebo použít JUnit test package cz.muni.fi.vezmu.searchPluginImpl; import junit.framework.Test; import junit.framework.TestCase; import org.apache.cactus.ServletTestSuite; public class NATUREPluginTest extends TestCase { public static Test suite() { ServletTestSuite suite = new ServletTestSuite(); suite.addTestSuite(NaturePluginTest.class); return suite; } public void testNatureAddressAvailable(){ ... } K inicializaci a vyčistění prostředí jsou poskytnuty metody setUp() a tearDown(), které mají stejné vlastnosti jako u JUnitu. Více informací lze nalézt na stránkách projektu, v sekci Writing Tests [8]. Pro spouštění testů nabízí Cactus několik způsobů: • Manuální spouštění z příkazové řádky, vývojového prostředí nebo webového prohlížeče. • Integrace s programem Ant a automatizované spouštění. • Integrace s programem Maven a automatizované spouštění. • Integrace s Jetty – prostředí pro běh Servletů. Více informací o spouštění testů lze nalézt na stránkách projektu, sekce Running Tests <http://jakarta.apache.org/cactus/integration/index.html>. Pro moduly jsem využil spouštění testů přes webové rozhraní. Musí se upravit soubor web.xml jako je tomu v příkladě 9.2.1. 49 9.2. TESTOVÁNÍ POMOCÍ RÁMCE CACTUS </servle<servlet> <servlet-name>ServletRedirector</servlet-name> <servlet-class>org.apache.cactus.server.ServletTestRedirector </servlet-class> </servlet> <servlet> <servlet-name>ServletTestRunner</servlet-name> <servlet-class>org.apache.cactus.server.runner.ServletTestRunner </servlet-class> <init-param> <param-name>xsl-stylesheet</param-name> <param-value>cactus-report.xsl</param-value> </init-param> </servlet> ... <servlet-mapping> <servlet-name>ServletRedirector</servlet-name> <url-pattern>/ServletRedirector</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ServletTestRunner</servlet-name> <url-pattern>/ServletTestRunner</url-pattern> </servlet-mapping> Pøíklad 9.2.1: Nastavení souboru web.xml pro spouštění testů pomocí rámce Cactus Dále je nutné zabezpečit nakopírování potřebných knihoven pro Cactus a XSLT procesor Xalan. Soubor cactus-report.xsl musí být umístěn do kořene adresářové struktury aplikace. Test na běžící webové aplikaci se spouští zadáním specifické adresy do prohlížeče, například: http://localhost:18080/vezmu-plugin-Nature/ServletTestRunner?suite= cz.muni.fi.vezmu.searchPluginImpl.NaturePluginTest&transform=yes Využil jsem již implementované JUnit testy a dále je rozšířil. Cactus standardně vrací výsledek testování jako XML soubor. Pro zobrazení výsledku je na straně serveru použita XSLT transformace do HTML s využitím balíku Xalan, protože např. prohlížeč Opera nepodporuje transformaci na straně klienta. Při spouštění testů pro více modulů souběžně běžících modulů se vyskytl velmi závažný problém. Vždy se volal pouze ServletRedirector modulu u kterého byl spuštěn první test. Při dotazu na vývojáře rámce Cactus mi bylo sděleno, že ServletRedirector se inicializuje globálně v rámci běžící Java Virtual Machine a můj problém není v současné době 50 9.3. VLASTNÍ TESTOVÁNÍ řešitelný. Také mi sdělili, že pravděpodobně neexistuje žádné jiné řešení, než si napsat vlastní testy. 9.3 Vlastní testování Protože testování za pomoci Cactusu nevyhovovalo přesně mým požadavkům, byl jsem nucen napsat testy úplně sám. Při implementaci jsem použil rámec Struts <http: //jakarta.apache.org/struts>, který je vyvíjen v rámci projektu Jakarta pod záštitou Apache. Velmi doporučuji knihu Programujeme Jakarta Struts [6], jejímž autorem je Chuck Cavaness. Aplikace psaná v Struts musí splňovat především MVC (Model-View-Controller) paradigma, což je soubor obecných pravidel týkajících se vývoje aplikace. MVC je minimálně o deset let starší, nežli web v podobě jak ho známe (na bázi hypertextových dokumentů), jeho vznik se datuje na přelom roku 1978–79. MVC určuje striktní rozdělení aplikace na tři oddělené části: • Model – vlastní aplikační logika aplikace. • View – stará se o zobrazování dat. • Controller – určuje řízení toku. Pokud se programátor při vývoji aplikace řídí tímto doporučením, získá především nepředstavitelnou výhodu v znovupoužitelnosti aplikace. Není pak problém převést stávající webovou aplikaci na rozhraní swing (grafické rozhraní pro Javu) jenom tím, že se nahradí stávající vrstva View. Rámec Struts implementuje vrstvu Controller, v části Model dokáže spolupracovat se stávajícími technologiemi pro přístup k datům jako je třeba JDBC a EJB, stejně dobře jako k produktům Hibernate nebo Object Relational Bridge. V části View standartně podporuje JavaServer Pages včetně JSTL a JSF, ale problémy nemá ani s Velocity Templates a kombinací XML + XSLT. Pro každý modul jsem vytvořil třídu, která rozšiřuje třídu org.apache.struts.action.Action, např. NaturePluginTestAction. V ní jsem překryl metodu execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) vlastním kódem. Volám testovací metody, které postupně naplňují datový objekt TestReportVO. Na obrázku 9.1 jsou vidět vtahy mezi jednotlivými třídami. Na konci metody uložím datový objekt do požadavku a přesměruji výstup na stránku, která se stará o prezentaci dat. request.setAttribute("testReport", testReport); return mapping.getInputForward(); JSP stránka, na kterou se přesměruje výstup je definována v souboru struts-config.xml 51 9.3. VLASTNÍ TESTOVÁNÍ Obrázek 9.1: Diagram tříd pro datové objekty využité při testování <action-mappings> <action path="/pluginTest" forward="/pluginTest.jsp"/> <action path="/test" type="cz.muni.fi.vezmu.searchPluginImpl.NaturePluginTestAction" scope="request" validate="false" input="/pluginTest.jsp"> </action> </action-mappings> <message-resources parameter="ApplicationResource"/> Pomocí elementu message-resources v souboru struts-config.xml se definuje zdroj pro zprávy. Poté stačí v JSP stránce zavolat <bean:message key="test.report"/> a vloží se text odpovídající klíči test.report.successRate. Tím je aplikace připravená 52 9.4. TESTOVÁNÍ PORTÁL Ů na lokalizaci a ulehčí se případné změny. Na obrázcích 9.2 a 9.3 jsou vidět příklady výsledků testů. Obrázek 9.2: Test bez chyb Test na běžící webové aplikaci se spouští zadáním specifické adresy do prohlížeče, např.: http://kore.fi.muni.cz:18080/vezmu-plugin-Nature/test.do Vlastní testy jsou zaměřeny spíše na zkoumání dostupnosti portálu a vyhledávací stránky. Prověřuji, zda získaná stránka obsahuje identifikační prvky, podle kterých je možné jednoznačně určit, že se jedná o stránku s výsledky hledání. Dále zkoumám identifikátory metadat a názvy publikací. To jsou položky, které by měly být vždy naplněny nějakými daty. Tyto testy používám v současné době nejvíce, kombinuji je také s JUnit testy. 9.4 Testování portálů U modulů pro automatizovaný sběr informací se musí testovat nejen metody, ale i samotné portály poskytující informace. Jednak je tu možnost dlouhodobějšího vý53 9.4. TESTOVÁNÍ PORTÁL Ů Obrázek 9.3: Test s chybovými hláškami padku, reorganizace celého serveru spojená se změnou adresy pro vyhledávání a nakonec asi ta nejhorší možnost, kterou je změna kódu generovaných HTML stránek s odpovědí. Během posledních několika měsíců se vyskytly problémy u všech čtyřech implementovaných modulech. Byl jsem vděčen za testy, protože mi jednak umožnily rychle objevit nefunkčnost a také pomohly při přepisování stávajícího kódu. Stránky digitální knihovny ACM <http://www.acm.org/dl/> částečně změnily kód HTML. Stále bohužel používají tabulky pro formátování obsahu, oproti předchozí verzi bylo přidáno několik řádků kódu na začátek, čímž se posunula celá struktura stránky. Pro tento zdroj stále není možné použít XSLT transformaci, protože stránky jsou nevalidní a nejde je upravit pomocí JTidy na XHTML. Naštěstí se nezměnila struktura části s výsledky hledání. Stačilo pouze změnit část, která se stará o vybrání hlavní tabulky, ve které jsou obsaženy veškeré odpovědi. Ostatní 54 9.4. TESTOVÁNÍ PORTÁL Ů části jsem měl naprogramované pro hledání dat relativně oproti hlavní tabulce, takže už nebylo potřeba nic měnit. Portál IEEE <http://www.computer.org> změnil kód stránek o poznání více než ACM. Stále sice využívá tabulky pro formátování obsahu, ovšem jejich použití velmi redukoval. Stránky lze bez problémů převést do XHTML a dále zpracovat pomocí transformací. Pro opětovnou funkčnost modulu jsem musel přepsat a znovu zkompilován XSLT styl, bylo nutné změnit více jak polovinu jeho obsahu. Způsob vytváření dotazů zůstal zachován. U serveru Nature <http://www.nature.com> došlo k největším změnám. Změnila se úplně adresa a způsob zadávání dotazů u vyhledávání, ušetřen nezůstal ani obsah. Stránky mají sice v záhlaví dokumentu napsáno, že používají XHTML Strict, ale při prozkoumání kódu jsem zjistil, že text není korektně označkován a nesplňuje ani podmínku označovanou jako well-formed. Největším problém na stránkách jsou definice funkcí v jazyku JavaScript, kvůli kterým nejde výsledek hledání převést na XHTML. Před změnou vzhledu tato transformace fungovala bez problému, takže současný stav hodnotím spíše negativně. Pro Nature jsem byl nucen napsat modul úplně od začátku, při získávání informací jsem musel použít HTMLParser. Portál Springer <http://www.springerlink.com> změnil adresu vyhledávání a pravděpodobně úplně přešel na platformu .NET. Nezůstala zachována ani struktura odpovědi. Server si vnitřně uchovává pro každé sezení aktuální stav a na stránkách s výsledky hledání jsou odkázány pouze relativně k aktuálně hledanému dokumentu a uloženému stavu. Navíc pro zobrazení dokumentu se nejprve musí kliknout na odkaz na stránku s informacemi o publikaci a až poté lze stáhnout dokument. Odkaz na elektronickou verzi publikace je na všech stránkách stejný, server si totiž pamatuje, o jaké publikaci si uživatel naposledy zobrazil informace a podle toho odešle dokument. Takže pokud si uživatel v prohlížeči otevře výsledky vyhledávání ve více záložkách a v každé z nich si klikne na odkaz pro elektronickou verzi dokumentu, ve všech se otevře stejný, odpovídající obsahu poslední otevřené záložky. Toto chování značně komplikuje implementaci modulu. Musí se nasimulovat postupné proklikání všech výsledků hledání a následné zobrazení dokumentů. Protože si server pamatuje nalezené výsledky a aktuální stav, není možné tuto činnost provádět paralelně. Na začátku je ještě nutné kontaktovat server pro získání dočasné identifikace (platná maximálně 2 hodiny), která umožní provést dotazy. Výsledky hledání většinou splňují podmínku správně utvořené stránky, ale občas obsahují nestandardní elementy, především v části abstrakt a autor. Opět tedy není možné použít XSLT transformaci a je nutné kód stránek procházet pomocí balíku HTMLParser. Z dosud implementovaných modulů je tento nejkomplikovanější. 55 Kapitola 10 Automatizace tvorby modulů pro sběr dat 10.1 Pomocné třídy Jak již bylo dříve zmíněno, naskýtá se možnost alespoň částečné automatizace tvorby modulů. Jejich vývoj se do značné míry urychlí, musí být ovšem splněna podmínka převoditelnosti odpovědi zdroje do formátu XHTML. Jinak nepůjde aplikovat XSLT transformace. Pokud zdroj, pro který je modul vyvíjen splní tuto podmínku, stačí udělat dvě věci a implementace bude téměř hotová. První z nich je napsat metodu pro generování dotazu, druhým úkolem je napsat XSLT styl pro daný zdroj. Zbývá již jen změnit drobnosti jako je identifikátor dat, zdroj dat a vydavatele. V následujícím textu jsou představeny javové třídy, které přispívají k zrychlené tvorbě modulů pro získávání dat. Jsou umístěny v balíku cz.muni.fi.vezmu.searchPluginImpl a jedná se o PluginHelper, PluginHelperParse a PluginHelperXML. Již z názvu je patrné pro jakou skupinu stránek obsahují funkce. Třída PluginHelper obsahuje metody, které se využijí při zpracování jak validních, tak i nevalidních HTML stránek. Další dvě třídy z ní dědí, takže jsou i v nich tyto metody dostupné. 10.2 Třída PluginHelper Tato třída je implementovaná s využitím návrhového vzoru Singleton, tudíž se inicializuje pouze jednou a šetří systémové prostředky Java Virtual Machine. Více o návrhových vzorech je možné se dočíst v knížce J2EE Best Practices [2]. Tato třída obsahuje tyto metody: • getAgentName() Metoda vrací String, který obsahuje jednu z definovaných identifikací prohlížeče. Ta se dále využije při stahování dat. • getData(String URL) Metoda stáhne obsah zadané adresy do objektu Stringu, vhodné při ručním procházení HTML stránek. 56 10.2. T ŘÍDA PLUGINHELPER Obrázek 10.1: Diagram tříd modulu • getCharsetName() Metoda pro získání znakové sady, ve které se provádí operace jako čtení dat ze serveru. Implicitně vrací UTF-8. • getInputStream(String URL) Metoda ze zadané adresy vytvoří objekt InputStream určený pro další zpracování. • getInstance() Vrací instanci objektu PluginHelper. • printErrors(Exception e) Metoda vypíše do objektu String chybovou hlášku z předaného objektu Exception. 57 10.2. T ŘÍDA PLUGINHELPER Obrázek 10.2: Diagram pomocných tříd • printVector(Vector<cz.muni.fi.vezmu.Metadata> input) Vypíše na standardní výstup informace o předaném vektoru Metadat, vhodné při ladění zdrojových kódů. • setCharsetName(String charsetName) Metoda pro nastavení znakové sady, ve které se provádí operace jako čtení dat ze serveru. • showHeaders(URLConnection conn) Na standardní výstup vypíše hlavičky spojení. • tokenizeCreators(String creators) 58 10.3. T ŘÍDA PLUGINHELPERXML Rozdělí String, který obsahuje více autorů oddělených čárkou do vektoru položek Element, které mají nastavené jméno uchovávané proměnné na „Creator“. • writeStreamToFile(InputStream input, String path) Metoda zapisuje InputStream do zadaného souboru. 10.3 Třída PluginHelperXML Tato třída je taktéž implementovaná s použitím návrhového vzoru Singleton. V následující části jsou popsány jednotlivé metody. • getInstance() Metoda vrací instanci objektu PluginHelper. • transformDataToXHTML(InputStream input) Metoda transformuje java.io.InputStream HTML dat na java.io.OutputStream XHTML dat. • transformDataToXML(InputStream input, String transletName, String packageName) Metoda transformuje java.io.InputStream HTML dat na java.io.OutputStream XML dat, potřebuje také znát jméno zkompilovaného stylu (transletName) a balík (packageName), v kterém je tento styl umístěn. Jde o spojení volání metod transformDataToXHTML a transformXHTMLToXML. • transformXHTMLToXML(InputStream input, String transletName, String packageName) Metoda transformuje java.io.InputStream XHTML dat na java.io.OutputStream XML dat, potřebuje také znát jméno zkompilovaného stylu (transletName) a balík (packageName), v kterém je tento styl umístěn. Využívá se XSLTC transformace, více informací na stránce <http://xml.apache.org/xalan-j/ xsltc_usage.html>. XSLT styl, který je zkompilován by měl být schopen z XHTML dat produkovat obdobné XML jako v tomto příkladu: <Document> ... <Article> <Title> 59 10.4. T ŘÍDA PLUGINHELPERPARSE Assessment and Treatment of Compulsive Sex/Love Behavior </Title> <Id>W620L2U217732210.pdf</Id> <Article_link> http://www.springerlink.com/app/home/contribution.asp? wasp=aa7b14939614456082e56bf64f3ab9ae&referrer=parent& backto=searcharticlesresults,6,1000; </Article_link> <Article_pdf> http://www.springerlink.com/media/N97PTGXUQNY9737JTE27/ Contributions/W/6/2/0/W620L2U217732210.pdf </Article_pdf> <Publication> Journal of Rational-Emotive & Cognitive-Behavior Therapy </Publication> <Creators>Janet L. Wolfe</Creators> <Publisher> Springer Science+Business Media B.V. </Publisher> <Recency>Volume 18, Number 4</Recency> <Page>235 - 246</Page> <Abstract> Sex-love compulsivity or "addiction" involves most of the same issues as other addictive or compulsive behavior ... </Abstract> </Article> ... </Document> • transformXML2Metadata(InputStream input, String source, String publisher, String idElement) Metoda, jejímž úkolem je převést XML data na Vector<Metadata>. Potřebuje znát InputStream s XML daty, název zdroje (source), oficiální název nakladatelství a název elementu, který slouží jako identifikace dokumentu v rámci zdroje (idElement). 10.4 Třída PluginHelperParse • getInstance() Metoda vrací instanci objektu PluginHelper. 60 10.5. METODIKA VÝVOJE MODUL Ů • removeBlankSpace(String inputString) Metoda vhodná při ručním procházení stránek, vrací inputString bez přebytečných mezer. 10.5 Metodika vývoje modulů V této části chci zmínit postup tvorby nových modulů pro elektronické zdroje MU. Následující text obsahuje popis jednotlivých fází implementace. Výsledný modul napsaný v jazyce Java by měl implementovat připravená rozhraní CorePlugin a WebservicesPlugin z balíku cz.muni.fi.vezmu.searchPluginImpl, respektive cz.muni.fi.vezmu.ws. 10.5.1 Příprava testů Prvním krokem je tvorba testovacích tříd. Doporučuji se nechat inspirovat existujícími kódy z již vytvořených modulů. Testování jsem se věnoval v kapitole 9, proto se zde nebudu dále o tomto tématu rozepisovat. 10.5.2 Tvorba dotazu Samotné sestavení požadavku je specifické pro každý zdroj, protože se musí zohlednit způsob zadávání dotazu. Nejjednodušší varianta nastává, pokud jsou data z vyhledávacího formuláře na stránkách elektronického zdroje zasílána serveru metodou GET v lidsky dobře čitelné formě. Stačí pouze zadat několik dotazů pro každé vyhledávací kritérium, uložit si a analyzovat strukturu adresy s odpovědí. Důležité je zjistit, zda vyhledávací rozhraní umožňuje kombinovat různá kritéria současně a jak se tato možnost promítne do výsledné adresy s odpovědí. Neměla by také chybět možnost třídění výsledků podle aktuálnosti a důležitosti. Po analytické části je nutné implementovat metodu, která z předaného objektu Query dokáže sestavit adresu s požadovanou odpovědí. Je vhodné mít připravený test, který ověří správnou funkčnost. Pokud je v objektu Query obsaženo více vyhledávacích kritérií než umožňuje server s obsahem současně zpracovat, je nutné zvážit důležitost jednotlivých kritérií a stanovit prioritu při sestavování dotazu. Další možností je vytvořit více dotazů a jejich výsledky následně kombinovat. Problém nastává, když jsou data z vyhledávacího formuláře na stránkách elektronického zdroje zasílána serveru metodou POST, případně pokud jsou dále modifikovaná pomocí jazyka JavaScript. Nezbývá než odposlechnout komunikaci na sít’ové kartě. K tomu může sloužit program tcpdump <http://www.tcpdump. org/>. Podle mého názoru je daleko vhodnější open source produkt Ethereal <http: 61 10.5. METODIKA VÝVOJE MODUL Ů //www.ethereal.com/>. Je dostupný pro systémy Windows, Linux, UNIX, Solaris, Mac OS X i Irix, jeho ovládání je velice intuitivní. Umožňuje nastavit různé filtry, které z výpisu odstraní záznamy o nedůležité komunikaci na sít’ovém zařízení. Oba zmíněné programy vyžadují pro svůj běh administrátorská oprávnění. Pokud tvůrce modulů nemá na fakultě taková práva k žádnému počítači, bude pravděpodobně nucen využít svůj osobní počítač. Doporučil bych připojení do virtuální privátní sítě Masarykovy univerzity, protože některé zdroje mají omezení přístupu jen na IP adresy začínající 147.251. Více informací lze nalézt na adrese <http://pptp.ics.muni.cz/>. Implementace se dále komplikuje, pokud všechny potřebné informace nejsou dostupné z jedné stránky výsledků hledání. V takovém případě musí modul simulovat kliknutí na jednotlivé odkazy. Většinou je nutné takto získávat abstrakt a odkaz na plný text publikace. Příkladem může být portál Springer <http://www. springerlink.com/>. U něj je situace ještě ztížena nutností nejprve získat unikátní identifikaci a nemožností paralelního simulování proklikání odkazů. Server si totiž uchovává pro každé sezení aktuální stav, detailněji se tímto problémem zabývám v sekci 9.4. 10.5.3 Zpracování odpovědi Nejprve se musí zjistit, zda stránka obsahující odpovědi splňuje specifikaci XHTML, případně, zda je možné ji do takového tvaru transformovat. Korektnost stránek se může zjistit validátorem konsorcia W3C umístěným na stránce <http://validator. w3.org/>. Pro ověření možnosti transformovat data do formátu XHTML slouží metoda transformDataToXHTML(InputStream input) z třídy PluginHelperXML. Pokud proběhne bez chybových hlášení, je tu vysoká pravděpodobnost využití XSLT transformací pro další zpracování. Tyto prověrky je nutné provést na minimálně deseti různých dotazech. Pokud lze data transformovat do formátu XHTML, může se využít předpřipravených metod z třídy PluginHelperXML. Nejprve se musí vytvořit XSLT styl. Jeho složitost je silně ovlivněná členitostí zdrojového kódu odpovědi. Nejlepší cesta je nalézt význačné, případně unikátní elementy a pomocí nich adresovat hledané informace. Měly by se používat osy předek, následník a sourozenec pro určování blízkých elementů. Nevhodné je absolutní adresování každého elementu od kořene, protože se vždy musí procházet celý strom elementů. Obecně je tedy vhodnější určit jeden základní element a od něj nalézt lokální vazby k dalším elementům, většinou následníkům nebo sourozencům. Při tvorbě stylů se mi osvědčilo nejprve si uložit několik stránek s výsledky hledání na lokální disk, převést je do XHTML a poté pro ně vytvořit styl. Pro ukládání stránek na disk nedoporučuji internetové prohlížeče, protože výsledný soubor mo62 10.5. METODIKA VÝVOJE MODUL Ů difikují. K tomuto účelu jsem používal wget <http://www.gnu.org/software/ wget/> a Free Download Manager <http://www.freedownloadmanager.org/>. Následně lze již využít zmiňovanou metodu transformDataToXHTML(InputStream input) a writeStreamToFile(InputStream input, String path) pro transformaci souborů do XHTML formátu. Při psaní stylu jsem používal editor jEdit <http://www. jedit.org/>, ke kterému se dá stáhnout zásuvný modul pro XSLT transformaci. Po napsání a odzkoušení stylu se musí předkompilovat pro další použití, například tímto příkazem: java org.apache.xalan.xsltc.cmdline.Compile -j IEEEstyl.jar -p cz.muni.fi.vezmu.styles IEEEstyl.xsl Při implementaci modulu pro stahování dat z elektronických zdrojů je vhodné použít metody transformDataToXML(InputStream input, String transletName, String packageName), transformXHTMLToXML(InputStream input, String transletName, String packageName) a transformXML2Metadata(InputStream input, String source, String publisher, String idElement). Jejich popis je uveden v předcházející části. Pokud není možné stránku s výsledky hledání transformovat do XHTML, musí se použít analyzátor HTML kódu. Jako nejlepší jsem vyhodnotil HTMLParser <http: //www.htmlparser.org>. Umožňuje extrakci textu, odkazů, obrázků, kontrolu odkazů, přepis URL, ukládání stránek a mnoho dalších věcí. Dokumentace k projektu je výtečná, což velmi usnadňuje jeho použití. Opět se mi osvědčilo nejprve si uložit několik stránek s výsledky hledání na lokální disk a až poté je procházet pomocí metod z balíku HTMLParser. I zde platí doporučení nepoužívat internetové prohlížeče k ukládání těchto stránek. Při ručním procházení dat je nejlepší cesta nalézt význačné elementy a od nich relativně adresovat hledané informace, obdobně jako u XSLT transformace. Při prohledávání kódu stránek se mi velmi osvědčil objekt NodeFilter, díky kterému jsem specifikoval podmínky, které mají uzly splňovat, jako například v této ukázce: NodeFilter tableFilter = new NodeFilter() { public boolean accept(Node node) { if (node instanceof TableTag) { Tag tag = (Tag) node; String attribute = tag.getAttribute("id"); return ((attribute != null) && (attribute.equals("Table2"))); } else { return false; } }}; Parser parser = new Parser(); parser.setURL(URL); parser.setEncoding("ISO-8859-2"); 63 10.5. METODIKA VÝVOJE MODUL Ů parser.reset(); NodeList tablesList = parser.extractAllNodesThatMatch(tableFilter); Z pomocných metod je možné využít pouze removeBlankSpace(String inputString) a tokenizeCreators(String creators). Po získání všech potřebných dat se musí vytvořit odpověd’ pro server VEZMU, tu ovšem není možné automatizovat. Pro tuto fázi bych spíše doporučil prostudování zdrojových kódů na přiloženém CD, případně z úschovny zdrojových kódů projektu <https://kore.fi.muni.cz:5443/repos/ fi/elsw/vezmu/trunk/>. 64 Kapitola 11 Závěr V práci jsem se zabýval problematikou automatizovaného sběru dat, důraz jsem kladl především na webové stránky a na možnosti získání informací v nich obsažených. Zmínil jsem také možnosti webových služeb a syndikace obsahu. U portálů nejsou bohužel tyto varianty poskytování informací prozatím příliš rozšířené. Praktickým výsledkem mé práce je implementace čtyř modulů pro sběr dat z elektronických zdrojů Masarykovy univerzity, které jsou dále využity v projektu VEZMU. Pro tvorbu nových modulů jsem navrhl metodiku zohledňující jak validní, tak i nevalidní HTML stránky. Vytvořil jsme tři pomocné třídy usnadňující tuto činnost a také doporučil vhodné nástroje zjednodušující a urychlující implementaci. Pro každý modul jsem naprogramoval sadu metod sloužící k prověření jejich funkčnosti a dostupnosti zdrojů dat. V práci jsem popsal postup správné tvorby testů, upozornil na části kódu vhodné k prověření a zmínil implementační problémy stávajících testů. Další vývoj vyhledávače vidím především v oblasti implementace nových přídavných modulů pro komunikaci s elektronickými zdroji a sofistikované aplikační logiky pro stahování dokumentů do mobilních zařízení typu PDA. Po dokončení specifikace EJB 3.0 pak postupný přechod jádra systému na tuto technologii. Tato práce je jedním z prvních kroků ve vývoji tohoto projektu. Do textu jsem se snažil vložit mnohé mé poznatky, související s návrhem, implementací, optimalizací a testováním modulů. Může se tak stát dobrým výchozím bodem pro další vývojáře, kteří budou na tomto projektu pracovat v příštích letech. 65 Literatura [1] Arlow, J. a Neustadt, I.: , UML a unifikovaný proces vývoje aplikací, Computer Press, 2003, 80-7226-947-X. [2] Broemmer, D.: , J2EE Best Practices: Java Design Patterns, Automation and Performance, John Wiley & Sons Inc, 2002, 0-471-22885-0. 10.2 [3] Bloch, J.: , Java efektivně, 57 zásad softwarového experta, Grada, 2002, 80-2470416-1. 8 [4] Beck, K.: , Programování řízené testy, Grada, 2004, 80-247-0901-5. 9 [5] Bartošek, M.: , Novinky v oblasti elektronických informačních zdrojů pro výzkum, výuku a vzdělávání na MU, 2001, Zpravodaj ÚVT MU. B [6] Cavaness, C.: , Programujeme Jakarta Struts: Tvorba webových aplikací se servlety a stránkami JSP, Grada Publishing, 2003, 80-247-0667-9. 9.3 [7] Henzinger, M. a Motwani, R. a Silverstein, C.: , Challenges in web search engines, 2002, ACM SIGIR Forum. [8] Cactus: , Writing Tests, 2005. 9.2 [9] The Dublin Core Metadata Initiative: , Dublin Core Metadata Element Set, 2004. 6.3 [10] Ústav výpočetní techniky Masarykovy univerzity v Brně: , Dublin Core: referenční popis, 2000. [11] Holzner, S.: , XSLT – Příručka internetového vývojáře, 2002, Computer Press. 8.3 [12] Hynar, M.: , Java – nástroje, Neocortex, 2004, 80-86330-16-8. 6.7.2, 6.7.4 [13] Harold, E.: , XML Bible, 1999. 8.3 [14] JUnit: , Documentation, 2005. 9.1 [15] Masarykova univerzita: , Elektronické informační zdroje Masarykovy univerzity. B [16] Patočka, M.: , Webové služby, 2004. 4 [17] Ridge Group: , Information Gathering in the Electronic Age: The Hidden Cost of the Hunt, 2003. 5.1, 5.2, 5.3 66 [18] Spell, B.: , Java: programujeme profesionálně, 2002, Computer Press, 80-7226667-5. [19] JCP: , Specifikace J2EE 1.4 Final Release, 2003. [20] Tkačíková, D.: , Kvalitní dokument jako základ účinného vyhledávání informací, 2004. 67 Index Ant, 31 Atom, 15 1.0, 15 Cactus, 48, 50 CDF, 11 diagram Activity, 38 Class, 52, 57, 58 Implementation, 29 Sequence, 39 Use Case, 37 Dom4j, 29, 45 Dublin Core, 15, 29, 44 Subversion, 33 SyncML, 12 Tomcat, 32 UDDI, 22 web.xml, 49 Wiki, 33 WSDL, 21 Xalan, 29, 40, 42, 50 XHTML, 7, 39 XML, 8 XSLTC, 59 HTMLParser, 29, 40, 63 JBoss, 32 JDeveloper, 31 JMeter, 32 JTidy, 29, 40 JUnit, 32, 46, 49, 53 Magic Draw, 31 Maven, 33 Netbeans, 31 OML, 12 OPML, 11 Ridge Group, 24 RSS, 12 0.91, 14 0.92, 14 1.0, 14, 15 2.0, 14 Saxon, 40, 42 SOAP, 21 Struts, 27, 51 struts-config.xml, 51, 52 68 Dodatek A Obsah přiloženého CD /doc Dokumentace a specifikace /install Instalační balíky programů potřebných pro nasazení /projekt Aktuální stav systému /text Elektronická podoba diplomové práce 69 Dodatek B Elektronické zdroje MU Web of Science <http://wos.cesnet.cz/> Multioborová citační databáze od společnosti ISI (Institute for Scientific Information). Jedná se o webovou podobu známých databází Science Citation Index, Social Science Citation Index a Arts & Humanities Citation Index. Databáze obsahuje týdně aktualizované údaje o článcích z více než 8500 vědeckých časopisů ze všech oborů. Kromě bibliografických údajů a abstraktu jsou u každého článku uvedeny všechny jeho reference a také všechny jeho citace (odkazy na daný článek z novějších prací). Týdně v databázi přibývá na 25000 nových záznamů a přes 400000 citačních odkazů. Uživatelům je k dispozici retrospektiva za posledních dvacet let. ProQuest 5000 <http://www.proquest.com/pqdauto> Rozsáhlá databáze aktuálních informací společnosti Bell+Howell zahrnující plné texty cca 5000 periodik a dále bibliografické záznamy z dalších cca 3000 časopisů, pokrývajících zejména: humanitní a společenské obory, obchod, medicínu, aplikované přírodní vědy, výpočetní a telekomunikační techniku. Retrospektivní pokrytí je od roku 1993 do současnosti. Záznamy o nových publikacích jsou v databázi zveřejňovány nejpozději do 48 hodin od jejich vydání. EIFL Direct <http://search.epnet.com/> Databáze plných textů článků z celkem 3300 časopisů, novin a zpravodajství od r. 1990, především z oblasti sociálních a humanitních věd, od EBSCO Publishing – jednoho z předních světových dodavatelů elektronických a tištěných časopisů. Informace jsou rozděleny do několika dílčích databází: Academic Search Elite (společenské a humanitní vědy), Business Source Premier (ekonomie, finance, management, účetnictví, mezinárodní obchod), Newspaper Source Plus (přes půl miliónů článků z více jak 100 novin v anglickém jazyce) a MasterFILE Premier (obecně zájmové tituly, obchod, zdraví, kultura). K tomu navíc medicínské databáze Medline (kompletní soubor od roku 1966, plus plné texty z 80 lékařských časopisů), Health Source Plus (oblast výživy, pohybové aktivity, péče o vlastní zdraví, problematiku drogové závislosti) a další. JSTOR – Journal Storage <http://www.jstor.org/> Retrospektivní on-line databáze digitalizovaných plných textů z více jak 117 amerických vědeckých časopisů z humanitní oblasti (antropologie, ekologie, ekonomika, filosofie, finance, historie, literatura, matematika, politické vědy, sociologie, statistika, vzdělávání). 70 B. E LEKTRONICKÉ ZDROJE MU Každý časopis je plně digitalizován od prvního vydaného čísla (sahajícího mnohdy hluboko do minulého století) až po pohyblivou hranici tří až pěti let od současnosti, podle dohody s vydavatelem tištěné verze. Biological Abstracts <http://web5s.silverplatter.com/webspirs/start. ws?customer=mazaryk> Bibliografická databáze od společnosti BIOSIS: databáze Biological Abstracts (se záznamy od roku 1997) obsahuje reference na články z téměř 6000 časopisů z oblasti life sciencies, včetně biochemie, biotechnologií, botaniky, ekologie, životního prostředí, mikrobiologie, neurologie, farmakologie, zdravotnictví, a zemědělství. Zoological Records <http://web5s.silverplatter.com/webspirs/start. ws?customer=mazaryk> Bibliografická databáze od společnosti BIOSIS: databáze Zoological Records (kompletní přístup k elektronickým záznamům od roku 1978) pokrývá informace pro výzkum živočichů z oblastí od biochemie až po veterinární medicínu. Pokrývá 4500 periodik ze 100 zemí světa. Springer-LINK <http://www.springerlink.com/> Databáze Springer-LINK nabízí abstrakty i plné texty vědeckých a odborných časopisů nakladatelství Springer Verlag. V současnosti poskytuje přístup k 481 časopisům a 17 edicím. Springer-LNCS (Lecture Notes in Computer Science) <http://link.springer. de/series/lncs/> Databáze elektronických verzí sborníků vědeckých konferencí a monografií z oblasti computer science, umělé inteligence a jejich aplikací, publikovaných nakladatelstvím Springer-Verlag v rámci řady "Lecture Notes in Computer Science". Ročně je v rámci této řady vydáno přes 200 publikací. Digitální knihovna ACM <http://www.acm.org/dl/> Digitální knihovna americké počítačové společnosti ACM obsahující elektronické verze cca 30 časopisů z oblasti počítačů od roku 1985 a plné texty sborníků vědeckých konferencí pořádaných společností ACM od roku 1985 (stovky sborníků z více než 130 sérií konferencí). Povolen je přístup pro maximálně tři souběžně přistupující uživatele z MU SportDiscuss <http://erl.aip.cz/> Bibliografická databáze z oblasti sportu a fitness od SIRC (Sport Information Resource Centre), obsahující citace více než půl miliónu prací (časopiseckých článků, knih, sborníků, výzkumných zpráv, disertací) od roku 1975 po současnost. Pokrývá kompletní řadu sportovních disciplín, sportovní medicínu, aplikovanou fyziologii, trénink, dopink, tělesnou výchovu, biomechaniku, sportovní management, ekonomii, historii a další. LION <http://lion.chadwyck.com/> LIterature ONline představuje unikátní soubor více jak 300000 úplných literárních textů z britské a americké literatury, ale také kritických článků a bibliografických odkazů. To vše rozděleno tématicky do 19 databází – anglická poezie, americká poezie, afroamerická poezie, anglické drama, americké drama, beletrie, plné texty z literárních časopisů, Websterův slovník aj. Databáze je ve vlastnictví nakladatelství Chadwyck-Healey. ScienceDirect (Elsevier) <http://www.sciencedirect.com/> Služba umož71 B. E LEKTRONICKÉ ZDROJE MU ňující on-line přístup k elektronickým verzím vědeckých časopisů z nakladatelství Elsevier Science. Časopisy z tohoto nakladatelství pokrývají zejména oblasti medicíny, přírodních věd, matematiky, výpočetní techniky, ale též ekonomie, obchodu a řízení, psychologie a sociálních věd a dalších. Jako součást českého konsorcia ScienceDirect má MU přístup k časopisům, které v tištěné podobě odebírá některý z členů českého konsorcia ScienceDirect. V současnosti jde o 400 titulů časopisů. Journal Citation Reports <http://isiknowledge.com/> Jde o specializovanou databázi obsahující statistické údaje a nástroje pro systematické a objektivní bibliometrické vyhodnocování a srovnávání vědeckých časopisů zpracovávaných bibliograficky společností ISI (viz Web of Science a Current Contents). Jedním z nástrojů pro toto porovnávání je tzv. impact factor, který udává míru frekvence citací průměrného článku daného časopisu za dané období, a lze jej využít jako základ pro odhad prestiže akademických časopisů. Tento zdroj slouží především informačním specialistům, nakladatelům a editorům; je však využitelný i autory, zejména pro výběr časopisů k publikování a identifikaci časopisů relevantních pro oblast jejich odborného zájmu. Časopisy Elsevier-Kluwer-Wiley <http://www.suweco.cz/online/cz3/ client/pristup_srch0.asp> Portál zpřístupňující přes 1100 titulů vědeckých časopisů z nakladatelství Elsevier, Kluwer a Wiley s plnými texty publikovaných článků. Jde o časopisy zejména z oblasti přírodních věd, medicíny, výpočetní techniky, práva, ekonomie, ale částečně i z oblasti humanitních věd. Česká elektronická knihovna <http://www.ceska-poezie.cz> Česká elektronická knihovna – Poezie 19. století (Ústav pro českou literaturu AV ČR) nabízí přístup k plným textům digitalizovaných sbírek české poezie. Díky počítačovému zpracování je možné provádět nad texty řadu pokročilých literárněvědných zkoumání, stejně jako nabídnout široké veřejnosti přístup k plným textům básnických sbírek. Zdroj je volně dostupný, je vyžadována registrace uživatele. Česká národní bibliografie <http://aip.nkp.cz/> ČNB (producentem dat je Národní knihovna ČR v Praze) nabízí nejucelenější zdroj bibliografických informací nejen o českém písemnictví, ale je i primárním referenčním zdrojem informací o produkci vydané na území ČR. Zdroj je rozdělen do několika databází: články v českých novinách, časopisech a sbornících, české knihy, zahraniční bohemika, speciální dokumenty, národní autority, disertace a autoreferáty, periodika vydaná na území ČR. Zdroj je volně dostupný. ELIS - Encyclopedia of Library and Information Science <http://www.dekker. com/servlet/product/productid/E-ELIS> Čtyřdílná encyklopedie zaměřená na knihovnictví a informační vědu. EMBASE <http://gateway.ovid.com/autologin.html> Databáze EMBASE patří mezi stěžejní medicínské informační zdroje, je nezastupitelná pro obory farmacie a farmakologie. Obsahuje více než 6 miliónů záznamů o článcích v cca 3 800 72 B. E LEKTRONICKÉ ZDROJE MU mezinárodních lékařských časopisech z více než 110 zemí, ve srovnání s MEDLINE ve větším zastoupení také české a slovenské tituly. Více než 65% záznamů obsahuje abstrakty, které vytváří specializovaný tým odborníků. Navíc je zde specializovaný tezaurus EMTREE s více než 36 000 deskriptorů a 150 000 synonym. Roční přírůstek je cca 380 000 záznamu. 53% záznamu pokrývá Evropu, 3% USA. Přes 44% záznamů EMBASE je zcela unikátních (nejsou pokryty v MEDLINE). MEDLINE <http://gateway.ovid.com/autologin.html> MEDLINE je jedním ze dvou nejdůležitějších zdrojů informací v lékařství. Kompletní databáze Národní lékařské knihovny USA obsahuje přes 8,4 miliónu záznamů od roku 1966 do současnosti, roční přírůstek MEDLINE je cca 380000 záznamů. Zahrnuje citace a abstrakty (ke zhruba 60% citací po roce 1975 je k dispozici abstrakt) celosvětové lékařské literatury včetně výzkumu, klinické praxe, administrativy, služeb pro ochranu zdraví. MEDLINE obsahuje reference o článcích z cca 3400 odborných časopisů ze 70 zemí. Záznamy jsou klasifikovány pomocí tezauru Medical Subject Headings. ETRDL – ERCIM Technical Report Digital Library <http://dienst.muni. cz/> MU Brno se zapojila do distribuované sítě technických zpráv z oblasti computer science a matematiky evropského konsorcia ERCIM (European Research Consortium for Informatics and Mathematics). Na MU byl zprovozněn server, který jednak vystavuje světu technické a výzkumné zprávy z Fakulty informatiky, jednak slouží jako brána pro vyhledávání obdobných zpráv v rámci celého evropského konsorcia ERCIM i celosvětové digitální knihovny NCSTRL (Networked Computer Science Technical Reference Library). Postupně tento server zpřístupní i dokumenty ostatních členů konsorcia CRCIM (Czech Research Consortium for Informatics and Mathematics). Gale <http://infotrac.galegroup.com/itweb/masaryk?db=GVRL> Virtuální knihovna elektronických encyklopedických knih z nakladatelství GALE, na jejímž konstituování se podílely knihovny FSS a ESF MU. GeoBase <http://web5s.silverplatter.com/webspirs/start.ws?customer= mazaryk> Multidisciplinární databáze od Elsevier Science poskytující bibliografické informace a abstrakta z humánní a fyzické geografie, ekologie, geologie, oceánografie, geomechaniky apod. Databáze pokrývá 1700 současných časopisů z dané oblasti a archivně dalších několik tisíc titulů. Obsahuje víc než milion záznamů od r. 1980, ročně přibývá 72000 záznamů. Každý záznam obsahuje úplnou bibliografickou citaci, indexující termíny a kódy, přes 99% všech záznamů obsahuje abstrakta. ChemNetBase <http://www.chemnetbase.com/> Kolekce chemických referenčních příruček nakladatelství CRC/Chapman and Hall, zahrnující tři elektronické zdroje: Combined Chemical Dictionary, The Handbook of Chemistry and Physics, Polymers – a Property Database. Pro prohlížení strukturních vzorců je potřeba stáhnout si a nainstalovat příslušný zásuvný modul ze stránek ChemNetBase. IEEE Computer Society Digital Library <http://www.computer.org/> Plné 73 B. E LEKTRONICKÉ ZDROJE MU texty více než 20 počítačově orientovaných odborných časopisů a 900 sborníků konferencí z oblasti Computer Science vydávaných resp. pořádaných americkou odbornou společností IEEE. Inspec <https://dialog.cvut.cz/> INSPEC (The Database for Physics, Electronics and Computing) je abstraktová online databáze obsahově odpovídající třem tištěným publikacím: Physics Abstracts, Electrical and Electronics Abstracts, a Computer and Control Abstracts z řady The Science Abstracts (již od roku 1898). Sledováno je přes 4100 časopisů a seriálů z uvedených oblastí. Institute of Physics E-Journals <http://www.iop.org/EJ/> Plné texty 30 titulů časopisů z nakladatelství Institute of Physics Publishing – periodika z oblasti fyziky, okrajově z matematiky, lékařství, biologie a informatiky. Journal Citation Report <http://isiknowledge.com/> Tato databáze nakladatelství ISI je základním a jedinečným zdrojem pro vyhodnocování časopisů a zpracovává citační údaje z více než 8400 vědeckých a technických časopisů z celého světa. Pokrytí je multidisciplinární a mezinárodní a zahrnuje přes 3000 nakladatelství v 60 zemích. Journal Citation Reports je databáze obsahující statistické údaje a kvantitativní nástroje pro systematické a objektivní vyhodnocování, kategorizaci a vzájemné porovnávání vědeckých a odborných časopisů sledovaných společností Institute for Scientific Information (ISI), např. v databázích Web of Science a Current Contents. Kluwer eBOOKS <http://ebooks.springerlink.com/> Plné texty elektronických verzí 31 biomedicinských knižních titulů nakladatelstvi Kluwer (Kluwer eBOOKS), nyní pod Springer LINK. Library and Information Science Abstracts <http://www.csa.com/htbin/ dbrng.cgi?username=masa&access=masa12&cat=lisa> LISA je jedna z nejrozsáhlejších databází se zaměřením na knihovnictví, informační vědu, informační technologie, informační management, knihovědu a hraničních odvětví. Je to bibliografická databáze od anglické firmy Cambridge Scientific Abstracts obsahující záznamy a abstrakty článků více než 470 titulů oborových časopisů z 68 zemí světa. V rámci projektu LI je pro MU zpřístupněna databáze aktuálních dat plus retrospektiva od r. 1969 do současnosti. Library Literature and Information Science Fulltext <http://vnweb.hwwilsonweb. com/hww/jumpstart.jhtml> Databáze zahrnuje celkem 200 klíčových knihovnických periodik a přes 600 monografií včetně diplomových prací a sborníků (od roku 1936). Ve verzi FULLTEXT jsou navíc plné texty 78 časopisů počínaje rokem 1998. Tématicky databáze pokrývá automatizaci, katalogizaci, cenzuru, autorské právo, pracovní příležitosti, národní a mezinárodní knihovny, ochranu fondů, vydavatelství, standardizaci apod. Medieval <http://www.phil.muni.cz/klas/databaze.html> Soubor databází řeckých a latinských textů starověku a středověku. 74 B. E LEKTRONICKÉ ZDROJE MU Micromedex <http://micromedex.cuni.cz/> Micromedex (v konfiguraci Drugdex, Martindale, PDR, P&T Quick) je špičková americká bibliografická a faktografická databáze specializovaná na oblast farmakologie, farmakologické informace a příbuzné vědní obory (např. chemie, toxikologie, teratologie, cestovní medicína, apod.). Základem je modul Drugdex s monografiemi jednotlivých léčiv zpracovanými podle jednotné osnovy, modul PDR (Physician Desk Reference) je základní informační zdroj o léčivech tradičně používaný lékaři v USA, modul Martindale obsahuje údaje světoznámé lékové encyklopedie britské královské farmaceutické společnosti s desítkami tisíc hesel (zahrnuje informace i o léčivech používaných v Evropě), modul P&T Quick obsahuje detailní a kritické informace o nových léčivech. Informace databáze jsou nezávislé na farmaceutických firmách a jsou aktualizovány čtvrtletně. NATURE <http://www.nature.com/nature/> Elektronická verze týdně vydávaného časopisu Nature z oblasti přírodních věd a medicíny. Články pokrývají všechny oblasti přírodních věd (včetně fyziky, věd o Zemi, biologie, chemie, biomatematiky, aj.) Archiv plných textů je rozdělen na dvě části: • 1997 – do současnosti: plné texty jsou dostupné jako součást standardního předplatné. • 1987 – 1996: dostupné jsou jen abstrakty článků, plné texty je nutné zaplatit. OXFORD Reference Online <http://www.oxfordreference.com/> Kolekce více jak 100 slovníků a encyklopedií budovaná Oxford University Press a uvedená na trh v březnu 2002. Jde o velmi rozsáhlý a širokospektrální zdroj pokrývající široké spektrum oborů – od obecných příruček a jazykových slovníků, přes přírodní vědy a medicínu, humanitní a sociální vědy, až po právo, ekonomiku a obchod. Portál STM <http://www.portalstm.cz/> Průvodce informačními zdroji v oblasti věda-technika-medicína spravovaný Státní technickou knihovnou v Praze. Soustřed’uje odkazy na licencované i volně dostupné profesionální elektronické informační zdroje doma i v zahraničí. Kromě toho obsahuje odkazy z oblastí věda a výzkum v ČR, knihovny, patenty, normy a další. SCOPUS <http://www.scopus.com/> V současnosti je největší světovou abstraktovou a citační databází, která poskytuje (s denní aktualizací) informace o článcích ze 14000 vybraných vědeckých časopisů z oblasti přírodních věd, technických věd, medicíny, společenských věd. SCOPUS je přímým konkurentem databáze Web of Science (WoS) od ISI. V srovnání s WoS má SCOPUS nejen větší absolutní pokrytí časopisů, ale má i větší pokrytí evropských titulů. MU získala bezplatný přístup do 30.9.2006. The Times Digital Archive <http://infotrac.galegroup.com/itweb/ brno?db=TTDA> Úplný archiv londýnských The Times za 200 let od jejich vzniku 75 B. E LEKTRONICKÉ ZDROJE MU (1785 – 1985), celkem přes 7,5 miliónů článků. Stránky se zobrazují jako náhledy tištěné podoby (články lze vytisknout, ne však stahovat v textové podobě). Součástí zdroje je i úplný archiv významného literárně kritického týdeníku The Times Literary Supplement za období 1902 až 1990. Přístup z MU je omezen na 4 současně pracující uživatele. ULRICH’s International Periodicals Directory <http://www.ulrichsweb. com/> Databáze ULRICH’S poskytuje podrobné bibliografické informace o více než 250000 periodikách, ročenkách a dalších titulech z celého světa. Obsahuje také podrobné kontakty na jednotlivé vydavatele, přímé odkazy na abstrakty či plné texty vlastněné danou knihovnou. Slouží především knihovníkům, ale může poskytnout cenné informace pro kteréhokoliv uživatele hledající informace o světových periodikách. Wiley Medical Reference Works <http://www3.interscience.wiley.com/> Elektronické verze „Reference Work“ nakladatelství Wiley a jejich dalších publikací. Tato část byla vytvořena s využitím informací z [5] a [15] 76