MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Inteligentní vyhledávač hodnocení knih Bakalářská práce
Tomáš Kácel
Brno, 2012
Prohlášení Prohlašuji, že tato 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í používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
V Brně dne 20. května 2012
………………………… podpis
Poděkování Na tomto místě bych rád poděkoval RNDr. Aleši Horákovi, PhD. za jeho odborné vedení, trpělivost a čas, který věnoval mé bakalářské práci.
Shrnutí Tato práce se zabývá analýzou serverů, které se věnují české literatuře a uchovávají data vztahující se k hodnocení knih. Dále se práce zaměřuje na analýzu systému, který má za úkol vyhledat na těchto serverech zmíněné hodnocení a informace o knize, popřípadě autorovi. Dle této analýzy je potom daný software naprogramován.
Klíčová slova Analýza systému, vyhledávač hodnocení knih, vyhledávač knih, knižní databáze, návrh grafického uživatelského rozhraní, návrh systému.
Obsah: 1 Úvod ........................................................................................................................................ 8 2 Projekty hodnocení knih.......................................................................................................... 9 2.1 Analýza stránky cbdb.cz .................................................................................................... 9 2.2 Analýza stránky databazeknih.cz .................................................................................... 11 2.3 Analýza serveru knihi.cz.................................................................................................. 12 2.4 Analýza serveru kdb.cz ................................................................................................... 13 3 Knihovní katalogy ................................................................................................................. 15 3.1 Analýza knihovního katalogu aleph.muni.cz .................................................................. 15 3.2 Analýza knihovního katalogu carmen.kjm.cz ................................................................. 16 4 Analýza a návrh systému Vyhledávač hodnocení knih ......................................................... 18 4.1 Nalezení sjednocujících prvků knižních databází............................................................ 18 4.2 Nalezení podobných aplikací .......................................................................................... 19 4.3 Specifikace a popis účelu systému ................................................................................. 19 4.3.1 Způsob řazení a vyhledávání výsledů....................................................................... 20 4.3.2 Vlastní databáze systému ........................................................................................ 21 4.4 Návrh systému zaměřený na úlohy uživatele ................................................................. 23 4.4.1 Identifikace uživatelů a specifikování jejich úloh..................................................... 23 4.4.2 Určení, pro jaké uživatele je návrh vytvářen ........................................................... 24 4.4.3 Návrh grafického uživatelského rozhraní ................................................................ 25 4.4.4 Vertikální průchod systému ..................................................................................... 26 5 Implementace a předvedení systému..................................................................................... 29 5.1 Zvolení programovacího jazyka ...................................................................................... 29 5.2 Technologie Common Gateway Interface ...................................................................... 30 5.3 Popis tříd a CGI skriptů aplikace ..................................................................................... 30 5.3 Implementace databáze ................................................................................................. 35 5.4 Nadstavba systému......................................................................................................... 35 5.5 Předvedení systému ............................................................................................................ 36 6 Závěr...................................................................................................................................... 40 Seznam použitých zdrojů: ........................................................................................................ 41 Seznam obrázků ....................................................................................................................... 44 Seznam tabulek ........................................................................................................................ 44
Seznam elektronických příloh a přiloženého cd ...................................................................... 45 Seznam příloh ........................................................................................................................... 45
1 Úvod V dnešní době vychází nespočet knižních titulů, jak v elektronické, tak v tištěné podobě. V tomto ohromném množství knih je velmi obtížné se orientovat. O knihách vychází spousta časopisů s recenzemi, Internet je zaplněn nejrůznějšími knižními servery, jako jsou oficiální stránky vydavatelů, nakladatelů a kritiků. V elektronické podobě nalezneme také knižní databáze. Společnosti jako Google [1] nabízejí služby pro vyhledávání knih na Internetu s možností nahlédnutí do obsahu díla. Na spoustě serverů je možnost si knihu přímo zakoupit. Tato bakalářská práce se věnuje především serverům typu „knižní databáze“. Tento druh databáze a webových stránek slouží především k tomu, aby si uživatel nalezl subjektivní hodnocení knihy od ostatních uživatelů a podle toho mohl rozhodnout, co si přečte za další titul. Hodnocení bývá reprezentováno číselnou hodnotou, popřípadě tato hodnota je doprovázena stručným komentářem hodnotícího. Registrovaní uživatelé knižních databází mohou také své názory a hodnocení přidávat. Na „českém“ Internetu nalezneme takovýchto stránek hned několik. Každý, kdo ovládá alespoň základy tvorby webových stránek a tvorbu databází, může podobný server vytvořit. Proto jsem se zaměřil na první čtyři české databáze, které nalezl internetový vyhledávač Google [2]. Cílem této práce je vytvořit inteligentní vyhledávač hodnocení knih, který z nejrůznějších knižních databází získá hodnocení a ucelené informace o knize. Celkový výsledek ze všech serverů potom zobrazí uživateli. Práce se zaměřuje na české knižní servery, proto jsou preferovány české názvy knih. Pouze některé databáze umožňují při vyhledávání používat i originální názvy nebo anglické názvy knih. Z tohoto důvodu je práce zaměřena na češtinu. Výsledkem je webová aplikace, do níž uživatel zadá název knihy (popřípadě autora). Program nalezne potřebná data na každém serveru zvlášť a přehledně zobrazí výsledek uživateli. Účel programu je zjednodušit hledání knižních hodnocení a informací o knize. Uživatel tak nemusí hledat informace na každém serveru zvlášť a zadávat neustále dokola stejná klíčová slova. Další funkcí aplikace je zjištění, jestli se zadaný titul nalézá v knihovně. V případě, že se v knihovně nalézá, tak aplikace zjistí, zda je možné si daný titul vypůjčit nebo je právě vypůjčen jiným uživatelem. Práce vychází jak z vlastní analýzy dostupnosti informací o české literatuře na Internetu, tak z vlastní analýzy systému. Analýze systému je věnovaná značná část této práce. Systém také obsahuje vlastní databázi, do které je možné po zadání hesla vkládat autory a knižní tituly. Bakalářská práce je součástí Laboratoře zpracování přirozeného jazyka, z tohoto důvodu byl zvolen skriptovací jazyk Python [4]. V tomto programovacím jazyce je naprogramovaná značná část projektů a prací v laboratoři, proto nebyl důvod programovací jazyk měnit. Další jazyky, které jsou v této práci použity, jsou jazyky HTML a SQL. Část práce se věnuje návrhu grafického uživatelského rozhraní, ve kterém bude uživatel pracovat. Webové rozhraní je zde podrobně popsáno, jak z grafického hlediska, tak z pohledu ovladatelnosti. Tyto kapitoly by měly uživatele naučit správně a efektivně používat daný software. 8
2 Projekty hodnocení knih
V dnešní době na internetu nalezneme mnoho typů internetových stránek, které se zabývají literární tématikou. Tato kapitola se zabývá analýzou serverů, které se zaobírají subjektivním hodnocením knih. Jedná se o databázové systémy, jejichž úkolem je shromažďovat informace o vydaných knihách. Mezi tyto informace patří hodnocení a komentáře registrovaných uživatelů, recenze, popis knih, životopisy autorů a jiné. Jako první krok při hledání takovýchto stránek byl použit internetový vyhledávač Google [2]. Mezi nejvýše vyhledanými nalezl tyto domény:
www.cbdb.cz www.databazeknih.cz www.knihi.cz www.kdb.cz www.legie.info www.knihovnice.cz www.kndb.cz
Tato práce se soustřeďuje na první čtyři výše uvedené zdroje. Stránka www.legie.info je určena pouze pro fantasy literaturu a na doméně www.knihovnice.cz je k nalezení pouze několik set záznamů. Databáze www.kndb.cz je zcela nefunkční. Z těchto důvodů nebyly brány tyto zdroje jako relevantní. Účel analýzy je nalézt odpověď na následující otázky:
Jakým způsobem zadává uživatel dotaz na knihu, popřípadě autora? Jakým způsobem internetová stránka zobrazuje výsledky? Jaké informace server poskytuje uživateli?
Tyto informace jsou důležité z toho důvodu, že musíme přesně vědět, co za konkrétní data se na daném serveru vyskytují. Nalezené výsledky jsou později použity při analýze nového systému, který se zaměřuje na skloubení dat z každého jednotlivého serveru. Po získání informace, jakým způsobem jednotlivé stránky vyhledávají data, se můžeme zaměřit na analyzování techniky, kterou použijeme pro získání výsledků vyhledávání z každého portálu.
2.1 Analýza stránky cbdb.cz Tento webový portál charakterizuje své cíle následujícím způsobem: „Cílem projektu je shromáždit co nejvíce informací a recenzí o knihách vydaných v českém jazyce i jejich autorech a také vás informovat o všech novinkách v knižním světě“ (www.cbdb.cz, 2012). Na této stránce [7] můžeme dále zjistit počet knih v databázi. Toto číslo převyšuje 60 000. Autorů 9
v databázi je více jak 26 000. Stránka poskytuje uživateli jednoduché vyhledávání, které neobsahuje možnost určení parametrů hledání. Formulář pro vyhledávání se nachází v pravém horním rohu. Uživatel může zvolit možnost pokročilého vyhledávání, zde je možné upřesnit parametry hledání. Po zadání klíčového slova do formuláře, se zobrazí výsledek rozdělený do tří kategorií. Kategorie jsou následující:
Nalezeno v českých názvech Nalezeno v originálních názvech Nalezeno ve jménech autorů
Obrázek č. 1: znázornění výstupu serveru www.cbdb.cz po zadání dotazu Krakatit [8] Každá kniha a každý autor má svůj vlastní profil. V profilu knihy nalezneme údaje o autorovi, knižní přebal, žánr, do kterého kniha spadá, ISBN knihy, názvy nakladatelství, ve kterých byla kniha vydána a rok vydání. Dále je součástí profilu procentuální hodnocení, popis knižního titulu a komentáře uživatelů. V profilu autora nalezneme jeho jméno, procentuální hodnocení, místo a rok narození, knihy autora a životopis. Některé profily neobsahují všechny údaje.
Obrázek č. 2: ukázka profilu knihy Krakatit na serveru www.cbdb.cz [9]
10
2.2 Analýza stránky databazeknih.cz „Web DatabazeKnih.cz má za cíl shromažďovat co možná nejvíce informací o autorech a jejich knihách, OFICIÁLNĚ vydaných na území České republiky a Slovenska. Projekt byl spuštěn v prosinci roku 2008 a každým dnem je vylepšován a rozšiřován“ (http://www.databazeknih.cz/o-databazi-knih, 2012). Na tomto serveru [10], na spodní liště, nalezneme informace o počtu knih a autorů. Počet knih je větší než 117 000. Počet autorů je zde kolem 38 000. Vyhledávání je umožněno pomocí formuláře, který se vyskytuje v pravém horním rohu stránky. Do tohoto formuláře se zadává, jak název knihy, tak název autora. Není zde možnost hledání pouze v autorech nebo pouze v knihách. Výsledek zobrazený uživateli je roztříděný do kategorií, podle toho, kde byl hledaný výraz nalezen. Nalezené údaje jsou zobrazeny uživateli pouze v kategoriích, kde byla nalezena shoda. Kategorie jsou následující:
Knihy Autoři Knižní edice
Obrázek č. 3: znázornění výstupu serveru www.databazeknih.cz po zadání dotazu Krakatit [11] Profil knihy obsahuje údaje o autorovi, procentuální hodnocení knihy, obrázek přebalu knihy, žánr, rok vydání, první rok vydání, ISBN, počet stran, druh vazby a popis knihy. Registrovaní uživatelé mohou zadávat své komentáře. Profil autora poskytuje jeho jméno, zemi původu, roky života a životopis. Uživatel má možnost kliknout na odkazy zobrazující úplný seznam knih autora, jeho povídky a citáty.
11
Obrázek č. 4: ukázka profilu knihy Krakatit na serveru www.databazeknih.cz [12]
2.3 Analýza serveru knihi.cz „Knihi.cz je prostorem pro všechny čtenáře a jejich oblíbené knihy. Každý si u nás může založit svůj on-line čtenářský deník a vkládat do něj knihy dle libosti. Všechny přečtené knihy pak může hodnotit a své postřehy sdílet s ostatními čtenáři. Našim cílem je seznámit vás se zajímavými tituly, které by vám jinak unikly. Všechny údaje o knihách máme od podobně nadšených čtenářů, jako jste vy. Naše hodnocení a doporučení jsou proto mnohem reálnější, než žebříčky knihkupců nebo recenze v novinách“ (http://www.knihi.cz/help.php, 2012). Tímto způsobem se prezentuje tento internetový portál. V databázi na tomto serveru [13] se vyskytuje více jak 37 000 knih a téměř 20 000 autorů. Pokud na této stránce chceme vyhledávat v jejich databázi, musíme zvolit, ve které kategorii bude hledaný výraz vyhledáván. Ve formuláři, jenž je umístěn na levé straně stránky, uživatel musí zvolit z následujících možností:
Kniha Autor Čtenář
Obrázek č. 5: znázornění výstupu serveru www.knihi.cz po zadání dotazu Krakatit [14] Profil knihy obsahuje informace o autorovi, procentuální hodnocení knihy, typ knihy, popis knihy, další knihy autora, který napsal zvolenou knihu, komentáře registrovaných uživatelů. I tento portál obsahuje detail autora. Každá stránka, jejíž účel je poskytovat informace o autorovi, obsahuje data o jménu autora, procentuální hodnocení, počet knih, životopis autora, seznam vydaných titulů a komentáře uživatelů. 12
Obrázek č. 6: ukázka profilu knihy Krakatit na serveru www.knihi.cz [15]
2.4 Analýza serveru kdb.cz Oficiální popis stránky, kterým se server představuje je následující: „Lidstvo od svého vzniku nashromáždilo obrovské množství publikací, ve kterých je velmi těžké se orientovat. Čtenáři jsou tak často nuceni vybírat knihy na základě neúplných informací o jejich žánru, kvalitě nebo obsahu. Na serveru KDb.cz můžete veškeré informace hodnotit, komentovat, recenzovat, což by mělo pomoci tento nedostatek odstranit“ (http://www.kdb.cz, 2012). V databázi této stránky figuruje téměř 50 000 knih a 14 000 spisovatelů [16]. Internetová stránka www.kdb.cz poskytuje jednoduché vyhledávání pomocí formuláře na hlavní stránce. Existuje zde i možnost pokročilého vyhledávání, které je umístěno v záložce knihy a záložce spisovatelé. Jednoduché vyhledávání hledá ve všech kategoriích a posléze zobrazuje vytříděné výsledky do tří skupin:
Dle názvu knihy Dle jména spisovatele Dle originálního názvu knihy
Obrázek č. 7: znázornění výstupu po dotazu Krakatit na serveru www.kdb.cz [17]
13
Profil Každé knihy obsahuje jméno autora, jazyk knihy, žánr knihy, procentuální hodnocení, obálky knihy, seznam vydání. V profilu je možné se přesunout odkazem do jednotlivých vydání. Zde nalezneme jméno nakladatele, ISBN, EAN, termín a pořadí vydání, místo vydání, rozsah a formát titulu, druh vazby, knižní edici a anotaci knihy. Profil autora poskytuje uživateli informace o národnosti, místu a datu narození, datum úmrtí a pohlaví. Dále je možné zjistit informace o procentuálním hodnocení jednotlivých uživatelů, přečíst si životopis autora a prolistovat seznam vydaných knih.
Obrázek č. 8: ukázka profilu knihy Krakatit na stránce www.kdb.cz [18]
14
3 Knihovní katalogy V České republice je obrovské množství knihoven. Velká část z nich se prezentuje na Internetu. Na svých stránkách často poskytují přístup ke knihovním údajům, kde jsou k nalezení informace o dostupnosti knih v pobočkách knihovny. Tato část práce se soustřeďuje na analýzu takovýchto knihovních katalogů. Byly vybrány následující adresy katalogů:
http://carmen.kjm.cz http://aleph.muni.cz
Analýza má za úkol zjistit následující fakta:
Způsob zadávání dotazu uživatelem na dostupnost titulu v knihovně Způsob, jakým se vyhledaná data prezentují uživateli Jaké konkrétní informace o dostupnosti portál poskytuje
Získání těchto informací byl základní požadavek, bez kterého by nešlo vytvořit analýzu nově vytvářeného systému.
3.1 Analýza knihovního katalogu aleph.muni.cz Masarykova univerzita poskytuje svým studentům a zaměstnancům možnost vypůjčení knih. Jak zmiňuje Bartošek [21], univerzita však nemá centrální knihovnu, ale několik knihoven, které jsou rozmístěny v prostorách jednotlivých fakult. V roce 2002 přešla celá univerzita na software od společnosti ExLibris, která působí v Izraeli. Tento systém umožňuje vztahovat dotazy na všechny knihovny Masarykovy univerzity. Jedná se o knihovní katalog aleph Masarykovy university. Z tohoto důvodu, byla tato stránka zařazena do projektu. Základní vyhledávání umožňuje vyhledat údaj podle slova nebo slovního spojení. Toto slovo je vyhledáváno v různých částech katalogu. Katalog je rozdělen podle samostatných fakult a středisek univerzity. V jaké části bude vyhledávač hledat, je volbou uživatele, stejně tak uživatel určuje, v jakém poli1 proběhne vyhledávání. Dále může zadávající zvolit, zda slova ve slovním spojení, které zadal, mají být pouze vedle sebe nebo mohou obsahovat i další vsunutá slova.
Obrázek č. 9: ukázka vyhledávání na serveru aleph.muni.cz [12] 1
Pole udává, zda hledané slovo určuje název knihy, autora,ISBN či jinou vlastnost
15
Vyhledané výsledky jsou prezentovány pomocí tabulky. Tato tabulka ukazuje jméno autora, název díla, rok vydání, na jakém orgánu univerzity se titul nalézá, počet výtisků a číslo, které udává počet vypůjčených knih. Pro bližší informace se dají jednotlivé výsledky rozkliknout.
Obrázek č. 10: ukázka vyhledaných údajů v knihovním katalogu aleph.muni.cz [19]
3.2 Analýza knihovního katalogu carmen.kjm.cz Katalog Carmen je katalogem Knihovny Jiřího Mahena v Brně. Jak uvádí na svých internetových stránkách [29], jedná se o druhou největší městskou knihovnu v České republice. Při zadávání slovního spojení určujeme místo, kde bude hledaný výraz vyhledán:
Všude V názvech V autorech V tématech
Obrázek č. 11: ukázka vyhledávání na serveru carmen.kjm.cz [30]
Jako výsledek vyhledávání dostáváme odkazy do profilů knih, autorů a témat, které se shodují se zadaným slovem. V každém profilu knihy nalezneme základní informace o názvu, vydání, ISBN, rozsahu a ceně. Profily bývají doprovázeny krátkou textovou anotací knihy a tabulkou 16
určující dostupnost titulu v provozovnách knihovny. Tato tabulka udává adresu pobočky, kde se daný výtisk nalézá. Celkový počet dostupných kusů a počet vypůjčených kusů.
Obrázek č. 12: ukázka detailu knihy Krakatit v knihovním katalogu Carmen [31]
17
4 Analýza a návrh systému Vyhledávač hodnocení knih Před samotnou implementací každého projektu, by mělo dojít k analýze a specifikaci požadavků na vytvářený systém. Výsledek analýzy směřuje a pomáhá programátorům vytvořit funkční program. Účelem této kapitoly je určit, co by měl program nabízet a jakým způsobem docílit výsledného efektu.
4.1 Nalezení sjednocujících prvků knižních databází Kapitola 2 se orientovala na analyzování dostupných knižních databázových serverů. Bylo zjištěno, jaká data jsou na těchto serverech k dispozici. Další částí je vyhodnocení, které informace jsou dostupné současně na všech serverech. Výsledný program se nezabírá informacemi, které nejsou dostupné nebo nejsou slučitelné na všech čtyřech stránkách. Seznam prvků, které jsou k nalezení na stránkách databází a jsou slučitelné, pro jednotlivou knihu, je následující:
Název knihy Jméno autora Hodnocení knihy Popis knihy
Výše zmíněné čtyři vlastnosti jsou základní součástí každého knižního profilu. Jméno autora není vyplněno pouze v případě, když je autor neznámí. Hodnocení není známo, jen za předpokladu, že nikdo daný titul neohodnotil. U některých knih chybí popis. Popis může být vždy doplněn některým uživatelem nebo pracovníky databázového serveru. Jednou z vlastností knižního profilu, který se v nějaké podobě objevuje, na všech čtyřech stránkách, je žánr knihy, popřípadě kategorie knihy. Problémem je, že tato vlastnost je neslučitelná. Jako příklad mohu uvést knihu Krakatit od spisovatele Karla Čapka a jednotlivé zařazení dle žánru, na jednotlivých databázových serverech:
Na stránce knihi.cz figuruje v kategorii beletrie [15] Na stránce kdb.cz jako česká a slovenská próza, či jako sci-fi [18] Na stránce cbdb.cz jako česká literatura/román/utopické [9] Na stránce databazeknih.cz jako literatura česká – romány [12]
Z výše uvedeného příkladu jednoznačně plyne, že nelze knihu zařadit do žánru pod jeden název nebo pojem. Z tohoto důvodu nebyl žánr, v další fázi vývoje, brán v potaz. Vlastnost ISBN knihy není součástí všech profilů, stejně tak počet stran a seznam vydání. Tato práce je zaměřena především na hodnocení a na zjištění základních informací o knize, a z tohoto důvodu nebyly tyto informace brány jako podstatné.
18
Dále bylo nutné specifikovat sjednocující prvky, které vychází z analýzy profilu autora na jednotlivých serverech. Sjednocující prvky autora jsou následující:
Jméno autora Hodnocení autora Doprovodný text, popřípadě životopis Knihy autora
Vlastnosti jako rok narození, místo působení a národnost nejsou zastoupeny ve všech profilech, a proto se těmito údaji dále práce nezabývá. Stejně jako u knihy, nemusejí být všechny vlastnosti řádně vyplněny.
4.2 Nalezení podobných aplikací Jednou z prvních fází vývoje systému je zjištění aktuálního stavu nabízených produktů, které se zabývají podobnou problematikou. Tento stav se zjišťuje za účelem, aby další produkt nebyl stejný či velmi podobný již nabízenému produktu a také pro vyvarování se stejných chyb, kterých se dopustili předchozí vývojáři. Při hledání podobných produktů, jako je ten, kterým se zabývá tato bakalářská práce, však nebyla nalezena žádná shoda. Na Internetu se vyskytuje značné množství stránek, které jsou věnované autorům či konkrétním oblíbeným knihám. Můžeme se setkat se službou Knihy Google [1], tato služba umožňuje nahlédnout do obsahu knihy, některé knihy jsou zde dokonce v celém svém rozsahu a v několika jazycích. Portál, který by slučoval výsledky nebo vyhledával informace na jiných zdrojích a potom je zobrazoval uživateli, však nebyl nalezen. Proto je velmi pravděpodobné, že aplikace „Inteligentní vyhledávač hodnocení knih“ je první svého druhu. Vytvoření specifikace se tedy neopírá o žádný již vytvořený software.
4.3 Specifikace a popis účelu systému Systém na vyhledávání hodnocení knih je navržen jako webová aplikace, jejímž účelem je nalézt informace o knižních titulech a autorech. Vyhledávač je spojen se čtyřmi databázovými internetovými stránky, které se zabývají subjektivním hodnocení knih a autorů. Adresy těchto stránek jsou následující: •
www.cbdb.cz
•
www.databazeknih.cz
•
www.knihi.cz
•
www.kdb.cz
19
Uživatel systému zadává klíčové slovo, podle kterého se bude vyhledávat na každé výše zmíněné stránce. Systém prochází výsledky vyhledávání a podle parametrů, které uživatel před vyhledáváním zvolil, jsou výsledky zveřejněny. Hlavním účelem vyhledávání je identifikovat a nalézt hodnoty sjednocujících prvků každé knihy a každého autora. Tedy k vyhledávané knize jsou nalezeny údaje o hodnocení, názvu, jménu autora a popis knihy. U autora jsou separovány hodnoty udávající jméno autora, hodnocení, životopis a vydané knihy autora. Systém je spojen s knihovními katalogy a jeho úkolem je separovat informace o dostupnosti titulu v knihovně. Tyto informace jsou následně zveřejněny uživateli. Systém komunikuje s knihovnou Jiřího Mahena v Brně a knihovním katalogem Masarykovy univerzity. Systém, kromě hledání informací ve vnějším světě, také obsahuje vlastní databázi. Tato databáze má za úkol uchovávat data o knihách a autorech. Jednotlivé atributy databáze jsou sjednocující prvky knih a autorů.
4.3.1 Způsob řazení a vyhledávání výsledů Po zadání slova, které se má vyhledávat, má zadávající možnost zvolit, v jaké kategorii bude dané slovo, popřípadě slovní spojení vyhledáno. Kategorie jsou následující:
Vyhledávání v názvu knih Vyhledávání v názvu autorů
Poté má uživatel možnost zvolit, jakým způsobem budou data tříděná a seřazená. Lze vybrat z následujících možností:
Dle abecedy sestupně Dle abecedy vzestupně Dle hodnocení vzestupně Dle hodnocení sestupně Dle serveru2
Další možnost vyhledávání je průměrování hodnocení knižního titulu. A to následujícími způsoby:
Průměr všech nalezených knih, se stejným autorem a jménem knihy, které se přesně shoduje se zadaným názvem knihy Průměr všech takových knih, které napsal stejný autor a název zadaný uživatelem je součástí názvu knihy
U tohoto druhu vyhledávání je nutné, aby uživatel znal název knihy, nebo alespoň část názvu v přesném tvaru (velká a malá písmena nehrají roli). Vyhledávání, kde je slovní spojení součástí názvu knihy, je zařazeno z důvodu toho, aby v případě knih, které obsahují více 2
Podle pořadí, v jakém postupně servery knihy nabízely
20
svazků nebo povídek, mohlo být zařazeno do průměrování každé dílo, které obsahuje daný svazek. Dalším důvodem je, že zadavatel nemusí znát název díla v plném rozsahu, ale jen část názvu. Dále má systém možnost nalézt knihy autora. Pro tento druh vyhledávání je také důležité, aby znal uživatel celé jméno autora. Systém vyhledá pouze autory s přesně se shodujícím názvem a dále jejich knihy na každém serveru. Pokud by měl systém hledat knihy všech autorů, kteří jsou vyhledání po zadání klíčového slova. Čas vyhledávání by byl příliš dlouhý. Z tohoto důvodu se musí jméno autora shodovat se jménem zadaným uživatelem. Uživatel má také právo omezit všechna vyhledávání číselnou hodnotou.
Možnost vyhledávání v autorech, se zadaným klíčovým slovem a bez možnosti nalezení knih autora
Možnost vyhledávání v autorech, se zadaným klíčovým slovem s možností nalezení knih autora
Vyhledej údaje
Nové vyhledávání
Vyhledej údaje
Možnost vyhledávání v knihách, se zadaným klíčovým slovem a zvoleným způsobem řazení Vyhledej údaje
Možnost vyhledání knih autora Vyhledej údaje
Výsledky vyhledávání autorů
Výsledky vyhledávání knih
Výsledky vyhledání autorů 2
Požádání o nalezení knihy v knihovním katalogu Vyhledej údaje v knihovních katalozích
Výsledky vyhledávání v knihovním katalogu
Obrázek č. 13: přechodový diagram systému Inteligentní vyhledávač knih
Přechodový diagram znázorňuje, za jakých podmínek je systém posunut do další fáze. Počáteční stav určuje šipka bez výchozího stavu. Po splnění podmínky, která je nad vodorovnou čarou aplikace provede akci, která se nachází pod vodorovnou čarou a systém přejde do stavu, ke kterému vede šipka.
4.3.2 Vlastní databáze systému Systém kromě vyhledávání údajů na jiných serverech také umožňuje spravovat vlastní databázi. Databáze je v systému navržena z toho důvodu, aby aplikace neposkytovala pouze služby vyhledávání, ale aby také vytvářela možnost ukládání dat o autorech a knihách. Tyto 21
data aplikace posléze zobrazuje uživateli stejným způsobem, jako by data byla vyhledána na některé internetové stránce z vnějšího světa.
Obrázek č. 14: ERD diagram systému Databáze obsahuje dvě entity. První entitou je kniha a druhou je autor. Primárním klíčem knihy je číslo, které ji jednoznačně identifikuje. Jméno knihy nemohlo být zvoleno jako primární klíč z toho důvodu, že může existovat několik různých knih s totožným názvem. Dalšími parametry knihy jsou slučitelné vlastnosti, které byly identifikovány v předchozí kapitole. Jediný rozdíl je takový, že namísto jména autora zde figuruje cizí klíč. Tento cizí klíč je primárním klíčem autora. Takto se zajistí jasné přiřazení autora ke knize. V entitě autora nebylo zvoleno jméno autora za primární klíč ze stejného důvodu jako u knihy. Mohou existovat autoři, jenž mají stejné jméno. Uživatel, který má přístup do databáze, ji spravuje přes grafické uživatelské rozhraní aplikace. Takový návštěvník stránky, má oprávnění přidávat knihy do databáze. Ke každé nově vytvořené knize má možnost vyplnit její vlastnosti. Jediný atribut, který musí zadavatel zadat povinně je jméno knihy a jejího autora. Ostatní údaje může zanechat nevyplněné. Při určování autora lze vybrat ze tří možností. Ty jsou následující:
Zadat identifikační číslo autora Zadat autora jako neznámého Zvolit možnost vytvoření nového autora
Identifikační číslo autora je primárním klíčem autora v místní databázi systému. Můžeme se setkat s mnoha knihami, které nemají autora. Jedná se především o knihy lidové tvorby jako jsou mýty, pověsti a legendy. Z tohoto důvodu je v nabídce možnost autora označit za neznámého. U možnosti vytvoření nového autora, je nutné zadat alespoň jméno autora. Ostatní atributy mohou zůstat nevyplněny. Identifikační číslo autora systém generuje automaticky, jeho hodnota se posléze ukáže uživateli. Při každém pokusu o vytvoření nové knihy nebo autora aplikace zkontroluje, zda se již v databázi autor či kniha se stejným názvem nevyskytuje. Je volbou zadávajícího povolit zapsání prvků se stejným názvem. Pokud uživatel trvá na zapsání již existující knihy se stejným autorem, ale například jiným hodnocením, může zadat možnost zapsání prvku do databáze, i navzdory jeho existenci v ní zastoupené.
22
4.4 Návrh systému zaměřený na úlohy uživatele Pokud vytváříme nový software. Je dobré se zaměřit na zákazníky, kteří jej budou používat. Pokud vytváříme návrh zaměřený na úlohy dle Lewise a Riemana [22], musíme nejprve identifikovat a vyřešit čtyři problémy.
Problémy jsou následující: 1. 2. 3. 4.
Identifikovat uživatelů a specifikovat jejich úkoly Dále je nutné určit, pro které z identifikovaných uživatelů bude návrh vytvářen Vytvoření návrhu grafického uživatelského rozhraní Vyhodnotit návrh procházením úlohami, které jsme dříve vytvořili
4.4.1 Identifikace uživatelů a specifikování jejich úloh První fází návrhu je nalezení odpovědi na otázku, kdo bude systém používat. Systém není navržen pro úzkou skupinu uživatelů, ale pro širokou veřejnost. Každý člověk, který má přístup k internetu, může daný software používat. Aplikace je určena pro zákazníky, kteří mají dobrý vztah k literatuře a potřebují nalézt odpovědi na otázky, které se vztahují především k hodnocení knih. Věk uživatele nehraje v tomto případě téměř žádnou roli. Může být použit jak školáky, tak seniory. I zdravotně postižení uživatelé, jako zrakově postižení, mohou mít zájem vyhledat data o knihách. Úlohy určují, co konkrétně chce za akce uživatel provádět nad systémem. Základní rozdělení uživatelů je následující:
Uživatel, který chce vyhledat data Uživatel, který má oprávnění zapisovat do databáze
Uživatelem, který chce vyhledat data, se rozumí takový uživatel, který navštívil internetovou stránku s aplikací za účelem vyhledání dat v místní databázi a na internetových stránkách se kterými systém pracuje. Do této kategorie můžeme řadit následující konkrétní uživatele:
Student chce vyhledat informace o knize, o které má napsat referát, potřebuje nalézt popis knihy Student potřebuje vyhledat životopis autora, o kterém píše referát Vášnivý čtenář chce vědět, jaké je průměrné hodnocení jím zvolené knihy Čtenář chce dle hodnocení nalézt knihy jím zvoleného autora Čtenář chce nalézt veškeré dostupné informace o knize, bohužel si není zcela jistý názvem knihy Čtenář chce vědět, jaké hodnocení má jím zvolený autor, ale není si zcela jist jménem autora Čtenář chce vědět, zda se kniha nalézá v knihovně Uživatel by rád nalezl svou oblíbenou knihu v knihovně a posléze si ji zarezervoval 23
Uživatel by rád viděl názory jiných čtenářů na knihu a přidal svůj vlastní Uživatel se zrakovým postižením by si rád našel informace o knize Cizinec by rád nalezl informace o knize ve svém rodném jazyce Malé dítě by chtělo vědět, v kolika knihách vystupuje postava Krtečka
Uživatelem, který má oprávnění zapisovat do databáze, se rozumí takový uživatel, který je opatřen přístupovými údaji do místní databáze a může tuto databázi přes grafické uživatelské rozhraní spravovat.
Uživatel chce zapsat svou oblíbenou knihu do databáze a chce sdílet svůj názor na hodnocení Uživatel chce zapsat svého oblíbeného autora do databáze Čtenářovi se nelíbí hodnocení nějaké knihy a chce jej změnit Uživatel chce smazat knihu z databáze Uživatel chce smazat autora z databáze
4.4.2 Určení, pro jaké uživatele je návrh vytvářen Žádný software na světě nedokáže uspokojit všechny, kteří s ním chtějí pracovat. Stejně tak nedokáže provést veškeré úkoly, které si uživatel vymyslel. Z tohoto důvodu je důležité specifikovat, pro jaké uživatele bude systém navržen, a které úkoly bude moci úspěšně splnit. Systém nepočítá s žádným hlasovým, popřípadě zvukovým doprovodem. Systém tedy není určen pro osoby s vážným zrakovým hendikepem. Stejně tak systém počítá s tím, že zadávající umí v dostatečné míře číst a psát v českém jazyce, a proto by se systémem neměly pracovat malé děti a osoby neovládající v dostatečné míře český jazyk. Návrh je tedy určen pro jedince s dosaženým alespoň prvním stupněm základního vzdělání, bez vážného zrakového postižení. Horní věková hranice nehraje roli. Senioři, se základní počítačovou průpravou, by neměli mít problém systém ovládat. Aplikace je navržena tak, aby splňovala dostatečné množství předem stanovených úloh. Některé úlohy však prostředí neumožňuje. Aplikace jako taková, komunikuje s veřejnými knihovními katalogy, které nepotřebují možnost registrace. Aplikace v žádném případě neumožňuje registrovat se, přes ni, do jiných systémů. Proto možnost, zarezervování knihy v knihovně, nemůže být splněna. Uživatel nemá možnost měnit již zadané a obsahující údaje v databázi. Může pouze knihu do databáze přidávat a to po zadání hesla. Zapisování pouze autora, bez žádné knihy, není uživateli povoleno. Účelem tohoto opatření je, aby v databázi nefigurovalo příliš mnoho autorů, ke kterým není přidělena žádná kniha. Systém neumožňuje analyzování obsahů děl. Není zde žádná možnost volby, díky které by uživatel mohl zjistit, v kolika knihách se vyskytuje konkrétní postava. Uživatel si může zvolit možnost vyhledávání z menu. Některé další volby aplikace jsou dostupné, až software nalezne nějaké výsledky.
24
4.4.3 Návrh grafického uživatelského rozhraní K aplikaci se přistupuje přes grafické uživatelské rozhraní (GUI). Jedná se webovou aplikaci, ke které mají přístup všichni uživatelé Internetu. GUI je navrženo co nejjednodušším způsobem, tak aby nerozptylovalo uživatele nadbytečnými prvky. Návrh rozhraní se zaměřuje na popis jeho funkčních prvků a rozložení. Velikost prvků, jejich přesná poloha a konkrétní grafické provedení je určováno až při implementaci. Úvodní obrazovka aplikace obsahuje prvky pro vložení údajů určených pro vyhledávání. Na obrazovku se stejným vzhledem jsou poté vypisovány výsledky. Jak je patrné na obrázku č. 15, rozhraní dominuje zvýrazněný nadpis, který představuje název systému. Nadpis je oddělen jemnou oddělovací čárou. Pod touto čárou je prostor určený pro zadávání údajů uživatelem. Bílé pole představuje místo pro vložení textu. Modré pole představuje jednoduché rolovací menu. Nejvýše usazené rolovací menu nabízí možnost, zda se bude vyhledávat v knihách, nebo autorech. Nižší rolovací menu udává způsob řazení. Nejnižší potom počet odkazů, které systém projde na každém serveru. Šedé tlačítko vyhledat spustí proces vyhledávání. Prostor pro vypisování nalezených výsledků je oddělen oddělovací čarou od prostoru určeném pro vkládání parametrů vyhledávání. Každá vlastnost knihy je vypisována na vlastní řádek. Křížky značí náhodný text. Červený kruh reprezentuje zaškrtnuté tlačítko, které upozorňuje na možnost vyhledání titulu v knihovně. Pod tímto tlačítkem se nachází potvrzující tlačítko. Po jeho zmáčknutí systém vyhledá daný titul v knihovních katalozích. Vypisování výsledků u autora se shodným názvem pracuje na stejném principu, místo možnosti vyhledat knihu v knihovně, je zde možnost vyhledání knih autora. Každý jednotlivý výsledek je oddělen vodorovnou linkou. Po ní následuje další výsledek.
Obrázek č. 15: „skica“ představující návrh grafického uživatelského rozhraní hlavní obrazovky 25
Další obrazovkou je obrazovka umožňující přidat knihu do databáze (na obrázku č. 16). Tato obrazovka je oddělena od hlavní obrazovky, která je určená jen pro vyhledávání a vypisování výsledků. Obrazovka se skládá se stejných prvků jako obrazovka předcházející. Uživatele vyzívá k zadání údajů. U možnosti zadání autora má zadávající možnost zvolit ze tří způsobů zadávání do databáze. Tyto způsoby byly specifikovány v kapitole „Vlastní databáze systému“. Jedná se o možnosti zadat autora pomocí identifikačního čísla, zvolit autora za neznámého, nebo vytvořit autora nového. Červené tlačítka umožňují zadat data do systému i za předpokladu, že se již prvky se stejným názvem v databázi vyskytují. Systém může uživatele informovat o chybě ve způsobu, jakým zadal parametry ve vyhledávání nebo při přidávání prvků do databáze. Chyby, způsobené při zadávání parametrů pro vyhledávání, jsou zadávajícímu znázorňovány místo konkrétních výsledků.
Obrázek č. 16: skica představující návrh grafického uživatelského rozhraní obrazovky ke správě databáze
4.4.4 Vertikální průchod systému Poslední fází návrhu systému zaměřený na úlohy je vybrání specifických úloh a následně testování, jakým způsobem bude uživatel se systémem pracovat, aby nalezl požadovaný výsledek.
26
Z několika úloh byly vytvořeny následující scénáře: Scénář 1: Studen má za úkol do školy napsat referát. Jeho úkolem je zjistit něco o životě spisovatele Karla Čapka a z dostupných zdrojů sepsat jeho životopis. Dále má za úkol sestavit žebříček jeho nejlepších knih a k prvním dvěma knihám zjistit o čem knihy jsou. Scénář 2: Vášnivý čtenář přečetl knihu Krakatit a chtěl by se podělit o své hodnocení, které je 80 %, dále by chtěl popsat knihu dalším případným zájemcům. Čtenář nechce vyplňovat údaje o autorovi, protože předpokládá, že ho každý zná. Scénář 3: Maminka potřebuje nalézt knihu o výchově dětí. Bohužel si nepamatuje název zcela přesně, pouze ví, že v názvu je slovo „výchova“. Chtěla by knihu s nejlepším hodnocením. Následně byly scénáře použity k testování grafického uživatelského rozhraní. Fakta o autorech a knihách jsou smyšlená. Jejich účel je demonstrativní.
Obrázek č. 17: vertikální průchod návrhem pro scénář č. 1
27
Při průchodu scénářem číslo 1 uživatel nejprve zadá slovo „Karel Čapek“ do kolonky pro vyhledávání, následně zvolí vyhledávání v autorech a potom nastaví hledání s možností nalezení knih autora. Po nalezení výsledků autora se u něj zvolí možnost nalezení jeho knih. Systém nalezne knihy autora a spočítá jejich průměrná hodnocení a zobrazí jednotlivé informace o každé knize od nejvyššího hodnocení.
Číslo autora v místní databázi: 25
Kniha Krakatit byla vložena do databáze Obrázek č. 18: vertikální průchod systémem pro scénář č. 2 Jako první si uživatel nechá vyhledat autora Karla Čapka a ověří si, že autor je již v databázi. Zjistí, že jeho identifikační číslo je 25. Poté klikne na přidání knihy do databáze u hlavního menu. Uživatel je vyzván k vyplnění údajů, které vyplní a následně nechá tlačítkem potvrdit zapsat autora do databáze. Aplikace potvrdí zapsání do databáze krátkou zprávou. Průchod scénářem 3 se nalézá v příloze č. 1.
28
5 Implementace a předvedení systému Po vytvoření analýzy se přechází k implementaci systému. Tato část práce se zabývá, jakým způsobem byl systém naprogramován a jaké techniky k tomu byly použity. Poté se věnuje předvedení systému.
5.1 Zvolení programovacího jazyka Před samotnou implementací je nutné rozhodnout, jakými technikami docílíme požadovaného výsledku. Jednou z hlavních otázek je, jaký zvolit programovací jazyk. Existuje mnoho programovacích jazyků, patřící do mnoha paradigmat. Výstup této bakalářské práce je aplikace přístupná na internetu. Proto bylo nutné použít takový jazyk, jehož výsledná aplikace lze umístit na internetové stránky. K programování webových aplikací se velmi často využívají skriptovací jazyky [5]. Mezi skriptovací jazyky patří jazyky jako Python, PHP (Hypertext Preprocessor), JavaScript, Perl, Ruby. Vzhledem k tomu, že tato práce spadá také pod Laboratoř zpracování přirozeného jazyka, kde je většina projektů programovaná v programovacím jazyce Python, bylo rozhodnuto, že v tomto programovacím jazyce bude aplikace vytvářena. Jak uvádí Mark Summerfield ve své knize [4], Python je velmi snadno osvojitelný a programy napsané v tomto jazyce zaberou méně řádků kódu, než stejné programy v jiných jazycích. Dále je v této knize zdůrazněn fakt, že programovací jazyk Python je multiplatformní, tedy že jej lze přenášet mezi různými operačními systémy a lze v něm programovat objektově i procedurálně. Další rozhodnutí bylo, jakou verzi programovacího jazyka Python použít. Vzhledem k tomu, že programovací jazyk Python je v dnešní době používán ve dvou verzích, a to ve verzi 2 a verzi 3. Bohužel tyto dvě verze nejsou navzájem slučitelné. To znamená, že kód napsaný ve verzi Python 2 nelze bez úprav použít v programech napsaných ve verzi 3. Vzhledem k tomu, že jsem neměl předchozí zkušenosti s programováním ve verzi 2, jsem se rozhodl naučit se verzi 3. Přišlo mi zbytečné učit se programovat ve starší verzi programovacího jazyka, když je již pár let verze nová. Je pravda, že pro novou verzi není napsáno mnoho knihoven. Předpokládám však, že tato situace se během nadcházejících let změní a nová verze plně nahradí svého úspěšného předchůdce. Dalším programovacím jazykem, na kterém je tato aplikace postavena je HyperText Markup Language (HTML). Tento jazyk byl vytvořen pro tvorbu internetových stránek. I tento jazyk existuje v několika verzích. Nejnovější verze tohoto jazyka je verze 5. Rozdíl ve verzích však není tak markantní, jako u výše zmíněného jazyka Python. Tato aplikace používá pouze základy HTML, které jsou ve všech používaných verzích stejné. Jazyk HTML je často doprovázen kaskádovými styly (CSS) [6]. CSS popisuje, jakým způsoben budou zobrazovány prvky HTML. Tato aplikace však kaskádové styly nepoužívá.
29
5.2 Technologie Common Gateway Interface Po určení programovacího jazyka je nutné určit, jak docílit toho, že výsledný software bude mít podobu webové aplikace. Je nutné nalézt způsob, jak skloubit zvolený programovací jazyk s webovým programováním. K takovému programování se mohou používat různé frameworky. Jedním se známých frameworků je například projekt zvaný „Django“. Jak uvádí na svých stránkách [23], jedná se o framework, který byl napsán v jazyce Python. Tento nástroj má usnadňovat tvorbu webových aplikací. Problémem ovšem je, že tento software stále nepodporuje Python ve verzi 3. Nalezení takového frameworku, který by se dal sloučit s Pythonem 3, se stalo bohužel neřešitelným problémem. Z tohoto důvodu byla vybrána jednoduchá technologie Common Gateway Interface (CGI). Jak uvádí wikipedie [24], CGI je protokol, který slouží k propojení aplikace s webovým serverem. Jedná se o skripty, ve kterých se dají používat klasické html tagy a psát kód ve skriptovacích jazycích. Je to jeden z nejjednodušší způsobů psaní webových aplikací. CGI skript se pozná dle přípony cgi, internetový prohlížeč tyto skripty dokáže přečíst stejně jako soubory s příponou html. Nevýhodou je jejich rychlost a to, že skript se musí načíst celý a poté co se načne, tak v něm nejdou dělat žádné interaktivní změny. Po změně se musí načíst celý znovu.
5.3 Popis tříd a CGI skriptů aplikace Aplikace se skládá z několika vlastních modulů, které obsahují třídy a několika skriptů. Vlastní moduly jsou následující:
Shelf obsahující třídu Book Autor obsahující třídu Autor Parserss obsahující třídy, jejichž rodičem je třída html.parser.HTMLParser základní knihovny Pythonu 3
Třída Book reprezentuje knihu. Objekty této třídy jsou vytvářeny po nalezení dat na serverech nebo v databázi. Pomocí funkcí jsou poté jejich data vypisovaná uživateli. Na stejném principu je založena třída Autor, která zastupuje osobu spisovatele. V následujících tabulkách můžeme vidět atributy a funkce, které tyto dvě třídy poskytují.
30
Modul Shelf
Modul Autor
Třída Book
Třída Autor
Atributy:
Atributy: score text source name
autor score text source name Funkce:
Popis:
writeAutor() writeScore() writeName() writeText() writeSource() _lt_() getScore() getName() getAutor() knowSource()
Vypíše data o autorovy Vypíše data o hodnocení Vypíše data o jméně knihy Vypíše popis knihy Vypíše zdroj informací Určuje řazení dle abecedy Vrací číslo hodnocení Vrací jméno bez koncových mezer Vrací jméno autora bez mezer Pokud je source číslo vrací False
Funkce: writeScore() writeName() writeText() writeSource() _lt_() getScore() getName() knowSource()
Popis: Vypíše data o hodnocení Vypíše data o jméně autora Vypíše popis autora Vypíše zdroj informací Určuje řazení dle abecedy Vrací číslo hodnocení Vrací jméno bez koncových mezer Pokud je zdroj číslo vrací False
Tabulka č. 2: popis třídy Autor
Tabulka č. 1: popis třídy Book Jak uvádí oficiální dokumentace [25], třída html.parser.HTMLParser se zaměřuje na jednoduché třídění a získávání dat z html kódu. V této práci je tato třída velmi používaná. Je vytvořeno několik podtříd, které mají za úkol vyhledat konkrétní data na konkrétních stránkách. Tyto podtřídy přepisují některé základní metody, tak aby mohl být parser použit na třídění dat o knihách a autorech. Metody, které jsou přepisovány, jsou následující:
handle_starttag (tag, attrs) handle_endtag (tag) handle_data (data)
Metoda handle_startag() dostává jako parametr každý úvodní tag kódu a všechny jeho atributy. Tato metoda se používá hlavně k zachycení určité části kódu, ze které potřebujeme data dostat, nebo k uchování přímo atributů určitých tagů. Tímto způsobem se dají získat URL adresy stránek. Metoda handle_endtag() dostává jako parametr všechny koncové znaky. Používá se hlavně k tomu, abychom nepřekročili úsek v html kódu, ze kterého potřebujeme dostat data. Metoda handle_data() se stará o samotný text, který je zobrazován prohlížečem uživateli. Metoda slouží převážně k tomu, abychom mohli uložit data, která jsme si ohraničili pomocí výše zmíněných dvou metod.
31
Modul Parserss
Modul Parserss
Třída LinksParser parser pro odkazy na stránce
Třída AutorParserKnihi parser pro profil autorů na serveru knihi
Atributy:
Atributy:
Modul Parserss Třída TextParser parser pro text knih serveru knihi Atributy:
recording data value find data2 tag
recording data
rec rec2 data value name tag2 tag1
Funkce:
Funkce:
Funkce:
handle_starttag () handle_endtag () handle_data ()
handle_starttag () handle_endtag () handle_data ()
handle_starttag () handle_endtag () handle_data ()
Tabulka č. 3: popis části modulu Parserss Každý parser v modulu Parserss je vytvořen pro konkrétní stránky. Pouze třída LinksParser je univerzální a dá se použít na získávání odkazů téměř na každé stránce. Další třídy modulu Parserss jsou k nahlédnutí v příloze č. 2 a č. 3. Do atributů, které nesou název data jsou ukládány data ze stránek v podobě řetězců. Atributy rec, recording nebo find slouží k nalezení požadované části stránky, ze které potřebujeme data uložit. Tag udává název tagu, který uvozuje část, kterou hledáme, name a value jeho atributy. Kromě vlastních tříd program obsahuje několik CGI skriptů:
knihovna.cgi vyhledane.cgi databaze.cgi databaze2.cgi index.cgi
Skript knihovna se stará o hledání a vypisování dat v knihovních katalozích. Databaze.cgi poskytuje uživateli rozhraní pro vkládání dat do databáze systému. Tyto data jsou přeposlána skriptu Databaze2.cgi, který je zkontroluje a posléze naváže spojení z databází a data zapíše. Index.cgi je spouštěcí skript, který slouží pouze jako úvodní obrazovka a přeposílá data vložená uživatelem skriptu vyhledane.cgi. Srdcem systému je právě skript vyhledane.cgi, stará se o hlavní funkcionalitu systému. V následující tabulce jsou popsány nejdůležitějsí funkce tohoto skriptu a které vlastní třídy používá. Tabulky k ostatním skriptům se nacházejí v příloze č. 2 a č. 3.
32
CGI skript vyhledane Funkce:
Popis:
Využívá třídy:
Navazuje spojení s databází a podává žádost o data v ní zastoupená Zkracuje počet položek pro vyhledávání
Book() Autor()
printTextKnihiCz()
Navazuje spojení s profily knih na serveru knihi.cz, poté vytvoří objekty knih
Parserss.LinksParser() Parserss.TextParser () Book()
printAutorKnihiCz()
Navazuje spojení s profily autorů na serveru knihi.cz, poté vytvoří objekty autorů
Autor() Parserss.AutorParserKnihi()
makeUrl()
Navazuje spojení s vyhledávačem serveru knihi.cz, detekuje odkazy do profilů knih/autorů
Parserss.LinksParser()
makeUrlDatabazeknih()
Navazuje spojení s vyhledávačem serveru databazeknih.cz, detekuje odkazy do profilů knih/autorů
Parserss.LinksParser()
makeUrlCbdb()
Navazuje spojení s vyhledávačem serveru cbdb.cz, detekuje odkazy do profilů knih/autorů
Parserss.LinksParser2()
makeUrlKdb()
Navazuje spojení s vyhledávačem serveru kdb.cz, detekuje odkazy do profilů knih/autorů
Parserss.LinksParser()
printKnihyCbdb()
Navazuje spojení s profily knih na serveru cbdb.cz, poté vytvoří objekty knih
Parserss.CbdbKnihaParser() Book()
printKnihyKdb()
Navazuje spojení s profily knih na serveru kdb.cz, poté vytvoří objekty knih
Parserss.KdbKnihaParser() Book()
printAutorKdb()
Navazuje spojení s profily autorů na serveru kdb.cz, poté vytvoří objekty autorům
Parserss.KdbAutorParser() Autor()
printAutorCbdb()
Navazuje spojení s profily autorů na serveru cbdb.cz, poté vytvoří objekty autorům
Parserss.CbdbAutorParser() Autor()
printTextDatabazeknih()
Navazuje spojení s profily knih na serveru databazekni.cz, poté vytvoří objekty knih
Parserss.DatabazeKnihaParser() Book()
printAutorDatabazeknih()
Navazuje spojení s profily autorů na serveru databazeknih.cz, poté vytvoří objekty autorům
Parserss.DatabazeAutorParser() Autor()
writeInfo()
Vypisuje informace o knihách
writeBookItem()
Vypisuje informace o jedné knize
writeInfoAutors()
Vypisuje informace o autorech
getScor()
Funkce použitá k řazení podle hodnocení
writeFind()
Funkce ovládající řazení dle zadaných parametrů
openDatabaze() changeListlen()
Tabulka č. 4: popis skriptu vyhledane.cgi, část 1 33
CGI skrip vyhledane Funkce:
Popis:
Využívá třídy:
sortByName ()
Funkce řadící seznam položek dle jména
sortByAverage()
Funkce řadící seznam dle průměrného hodnocení a konkrétního jména
sortByAverage2()
Funkce řadící seznam dle průměrného hodnocení
sortByAutor()
Řadí seznam dle autorů
writeResults()
Základní funkce starající se o výpis všech výsledků
parseAutorDatabazeknih()
Nalezne odkazy na veškeré knihy autora na serveru databazeknih.cz
Parserss.LinksParser()
Nalezne odkazy na knihy autora na serveru kdb.cz
Parserss.LinksParser()
Nalezne odkazy na knihy autora na serveru cbdb.cz
Parserss.LinksParser()
Nalezne odkazy na knihy autora na serveru knihi.cz
Parserss.LinksParser()
parseAutorKdb()
parseAutorCbdb()
parseAutorKnihi()
splitString()
Vrací řetězec bez bílých znaků
Tabulka č. 5: popis skriptu vyhledane.cgi, část 2 Skript vyhledané spouští metodou writeResult(), která zjistí, zda se mají vyhledávat všechny knihy autora, nebo informace o knize, popřípadě autorovi. Pokud potřebujeme nalézt informace o knihách autora, systém se nastaví takovým způsobem, aby mohl spustit funkce s předponou „parseAutor“. Pokud hledáme knihu nebo autora podle názvu, aplikace zavolá funkce s předponou „makeUrl“. Obě tyto funkce naleznou odkazy na konkrétní knihy/autory v podobě seznamu, tento seznam poté předají funkcím s předponou „print“. Tyto funkce navážou spojení podle odkazů, které obdržely, prohledají je a naleznou potřebná data k vytvoření objektů typu Book a Autor. Objekty poté vloží do globálních seznamů. Následně aplikace zavolá funkci writeFind(), která podle zadaných parametrů od uživatele určí, jaké zavolat funkce pro řazení a vypisování výsledků. Až obdrží uživatel výsledek, může mít možnost pracovat s dalšími prvky programu. Pro nalezení knih v knihovně skript vyhledane.cgi aktivuje skript knihovna.cgi. Pokud máme možnost nalézt knihy autora, tak skript zavolá sám sebe. K připojování k serverům je použita základní knihovna Pythonu 3, která se jmenuje urllib [26]. Tato knihovna poskytuje funkce, díky nimž dokážeme stáhnout obsah internetové stránky v podobě textového řetězce. Tento textový řetězec je předán parsru, který jej zpracuje. 34
5.3 Implementace databáze Existuje několik způsobů, jak programovat databáze, jeden z nejrozšířenějších je pomocí Structured Query Language (SQL). Jedná se o dotazovací jazyk, který se používá pro práci s daty v relační databázi [27]. K této bakalářské práci byla vytvořena databáze na serveru „athena.fi.muni.cz“, jedná se o serverovou databázi typu MySQL. Je zde vytvořena databáze s názvem „knihovna“. Databáze je naprogramovaná následujícím způsobem: CREATE TABLE autor (cislo INTEGER NOT NULL COLLATE utf8_czech_ci,jmeno VARCHAR(50) COLLATE utf8_czech_ci,hodnoceni INTEGER COLLATE utf8_czech_ci ,text TEXT COLLATE utf8_czech_ci,PRIMARY KEY(cislo)) CREATE TABLE kniha (cislo INTEGER NOT NULL, jmeno VARCHAR(50) COLLATE utf8_czech_ci, hodnoceni INTEGER COLLATE utf8_czech_ci, text TEXT COLLATE utf8_czech_ci, cislo_aut INTEGER COLLATE utf8_czech_ci, PRIMARY KEY(cislo), FOREIGN KEY(cislo_aut) REFERENCES autor (cislo)) Bohužel Python 3 nepodporuje žádnou standartní knihovnou správu databáze mySQL. Proto bylo nutné použít knihovnu třetí strany. Jedná se o knihovnu PyMySQL [28]. Tato knihovna umožňuje navázání spojení a správu MySQL databáze. Funkce, které tato knihovna poskytuje jsou ve velké míře shodné s funkcemi základní vestavěné knihovny Pythonu 3 SQLlite3.
5.4 Nadstavba systému V případě, že by se objevila na internetu nová internetová stránka zabývající se hodnocením knih, je zde možnost funkce doprogramovat. V případě nové databáze by měl programátor postupovat takovým způsobem, že nejprve analyzuje profily autorů a knih na stránce, kterou chce přidat do systému. Vytvoří funkci makeUrlNázevDatabáze(), která dostává jako parametr informaci o tom, kde chce uživatel hledat (v autorech/knihách). Pomocí knihovny urllib pošle dotaz příslušnému vyhledávači na stránce databáze a jako odpověď dostane obsah stránky s vyhledanými výrazy. Poté použije v této funkci třídu LinksParser(), která z obsahu stránky detekuje odkazy do konkrétních profilů. Následně naprogramuje funkci printAutorNazevDatabaze() a printKnihaNazevDatabaze(), které jako parametr dostávají právě seznam odkazů do konkrétních profilů. Tyto dvě funkce pomocí knihovny urllib požádají o dotaz na každou stránku profilu. Každou jednu stránku poté předají objektu třídy NázevDatabázeKnihaParser() a NázevDatabázeAutorParser(). Tyto třídy musí být naprogramované na míru jak profilu knih, tak profilu autora, poté funkce z protříděných dat vytvoří objekty typu Book a Autor a přidá objekty do globálních seznamů. Funkce makeUrlNázevDatabáze() rozhodne, kterou z těchto dvou funkcí zavolá podle obdrženého parametru. Dále je nutné vytvořit funkci parseAutorNázevDatabáze(), která jako parametr přijímá odkaz do profilu autora, kde se nalézají odkazy na jeho knihy. Tento odkaz získá ze seznamu odkazů do profilu autorů, který obdrží skript po jeho zavolání z předchozí možnosti uživatele. Nachází se v metodě writeResults() a jmenuje se urls. Funkce detekuje jednotlivé 35
odkazy do profilů knih a zavolá funkci printKnihaNázevDatabáze(). ParseAutorNázevdatabáze() je poté nutné vložit do funce writeResults().
Funkci
makeUrlNázevDatabáze(volba uživatele zvolená v dotazovacím formuláři) Dle volby uživatele urllib
Stránka s odkazy
LinksParser()
Seznam odkazů Dle volby uživatele printAutorNázevDatabáze()
autoři typu Autor
Globální seznam autors
printKnihaNázevDatabáze()
knihy typu Book
Globální seznam books
Obrázek č. 19: základní nástin vyhledávání systému pomocí jeho ParseAutorNázevDazabáze(odkaz do profilu autora z jeho knihami) nejdůležitějších funkcí
5.5 Předvedení systému Systém je umístěn na serveru Fakulty informatiky. Běží na počítači „Athena“ a přistupuje se k němu pomocí následující adresy: http://nlp.fi.muni.cz/projekty/hodnoceni_knih/. Na této adrese stačí zvolit nejspodnější odkaz na vyhledávač. Popřípadě zvolit přímou adresu na úvodní skript, která je následující: http://nlp.fi.muni.cz/projekty/hodnoceni_knih/v5/index.cgi. Pracovníci univerzity by neměli mít problém, po zadání svých přihlašovacích údajů, se k vyhledávači dostat. V případě potíží je nutné kontaktovat Laboratoř NLP.
36
Grafické uživatelské rozhraní bylo vytvořeno pomocí formulářů jazyka HTML za respektování předem vytvořeného návrhu.
Určení typu vyhledávání mezi autory a knihami
Místo pro vkládání klíčového slova uživatelem Odkaz na správu databáze Možnost zvolení řazení a vyhledávání
Číslo určující počet prohledaných záznamů na každém servu, spouštěcí tlačítko vyhledávače
Obrázek č. 20: popis uživatelského rozhraní systému V kapitole č. 4 bylo vytvořeno několik scénářů pro testování návrhu grafického uživatelského rozhraní. Stejné scénáře byly použity pro předvedení reálného systému. Průchod scénářem č. 1: Jak je vyobrazeno na obrázku č. 21, uživatel chce vyhledat autora Karla Čapka. Vzhledem k tomu, že zná jeho jméno přesně, zvolí možnost vyhledání autora se shodným názvem. Zadávající chce nalézt veškeré záznamy, proto vždy volí možnost průchodů neomezeně. Po potvrzení vyhledávání se autorovi objeví seznam nalezených autorů se shodujícím se slovem, které zadal (ostatní autoři jsou ignorováni) a veškeré informace o nich. Uživatel chce dále nalézt knihy autora na všech serverech. Zvolí možnost neomezeného hledání knih autorů, která se nachází u některého výsledku (u kterého nehraje žádnou roli). Uživatel dostane seznam průměrného hodnocení nalezených knih autora (od nejvyššího hodnocení) a číslo určující na kolika serverech byla kniha nalezena. Dále dostane informace o každé knize z tohoto seznamu, seřazené dle nejvyššího hodnocení podle jednotlivých serverů. Jako další možnost může uživatel zvolit vyhledání každé knihy v knihovních katalozích.
37
Obrázek č. 21: průchod reálným systémem se scénářem č. 1
38
Průchod scénářem č. 2: Nejprve si uživatel ověří, zda je autor v databázi. Poté zjistí jeho identifikační číslo. Toto číslo vloží do pole k tomu určené. Vyplní údaje a potvrdí. Položka už v databázi existuje. Pokud ji uživatel chce i přesto přidat, tak musí zvolit možnost přidat knihu i přes existenci v databázi.
Obrázek č. 22: průchod reálným systémem dle scénáře č. 2 Průchod scénářem č. 3 se nachází v příloze č. 4. Znázornění výpisu nalezení knihy v katalozích je v příloze č. 5.
39
6 Závěr Tato bakalářská práce se zaměřovala na analýzu a implementaci vyhledávače hodnocení knih, který je schopen na jednom místě zobrazovat data o knižních titulech a jejich hodnocení. Nalezené výsledky je možno vztahovat ke knihovním katalogům. Výsledný nástroj má podobu webové aplikace a je umístěn na adrese http://nlp.fi.muni.cz/projekty/hodnoceni_knih/. Bakalářská práce začíná analýzou internetových stránek, které se zaměřují na knihy a jejich subjektivního hodnocení. Tato analýza byla vytvořena proto, abychom zjistili, co tyto stránky poskytují uživateli, jakým způsobem si data od stránky uživatel žádá a jakým způsobem jsou data vypisována. Z této analýzy byly vytvořeny požadavky na nový systém a specifikováni uživatelé, kteří budou se systémem pracovat. Část práce se věnuje návrhu grafického uživatelského rozhraní a následně demonstrování průchodů tohoto rozhraní smyšlenými scénáři. Následně se práce věnuje popisu implementace systému a předvedení funkcionality funkčního systému. Systém umožňuje vyhledávat data o knihách a autorech na čtyřech nalezených internetových stránkách soustřeďující se na uchovávání dat o knihách ve svých databázích. Software dokáže nalézt knihy a seřadit je dle hodnocení, vytvořit průměrné hodnocení vyhledávaného titulu ze všech serverů, kde byl titul nalezen. Dále aplikace může vyhledat knihy konkrétního autora, vytvořit průměrné hodnocení těchto knih a následně zobrazit knihy autora dle nejvyššího hodnocení na každém serveru. Software také umožnuje vyhledat autora nebo knihu a jeho hodnocení i za předpokladu, že uživatel nezná jméno autora nebo knihy zcela přesně. Program obsahuje vlastní databázi, do které lze zapisovat informace prostřednictvím aplikace po zadání správného hesla (heslo se nalézá v elektronické příloze). Nalezené knihy lze vyhledat v knihovním katalogu Masarykovy univerzity a katalogu Carmen Knihovny Jiřího Mahena v Brně. Při analýze softwaru nebyla nalezena podobná aplikace, která by umožňovala slučování výsledků z více zdrojů a vytvářela průměrné hodnocení knihy. Část práce se zaměřuje na to, jakým způsobem doimplementovat nové databáze v případě, že by se taková databáze našla, aby bylo možno v budoucnu aplikaci rozšířit. Vytvoření této práce mi přineslo mnohé cenné znalosti zejména v programování CGI skriptů, používání programovacího jazyka Python a jazyka SQL, protože jsem s žádnou z těchto technologií neměl předchozí praktickou zkušenost a musel jsem tyto znalosti načerpat tak, abych dokázal vytvořit požadovaný software.
40
Seznam použitých zdrojů: [1] O službě Vyhledávání knih Google [online]. 2011 [cit. 2011-11-21]. Dostupné z WWW:
. [2] Google [online]. 2011 [cit. 2011-11-21]. Dostupné z WWW: . [3] RÁČEK, Jaroslav. Strukturovaná analýza systémů. Brno : Masarykova univerzita, 2006. 104 s. ISBN 80-210-4190-0. [4] SUMMERFIELD, Mark. Python 3 výukový kurz. Brno : Computer press, 2010. 584 s. ISBN 978-80-251-2737-7. [5] Skriptovací jazyk [online], aktualizace 8. 1. 2012, [cit. 5.5.2012], Wikipedie. Dostupné z: < http://cs.wikipedia.org/wiki/Skriptovací_jazyk>. [6] Kaskádové styly [online], aktualizace 2. 3. 2012, [cit. 5.5.2012], Wikipedie. Dostupné z: < http://cs.wikipedia.org/wiki/css>. [7] Česká bibliografická databáze [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: . [8] Vyhledání výrazu krakatit [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://www.cbdb.cz/hledat.php?hledat=krakatit>. [9] Krakatit [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://www.cbdb.cz/kniha972-krakatit-krakatit>. [10] Databáze knih [online], .
2012
[cit.
2012-5-5].
Dostupné
z WWW:
[11] Databazeknih vyhledání [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://www.databazeknih.cz/search?q=krakatit&hledat=&stranka=search>. [12] Databazeknih Krakatit [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://www.databazeknih.cz/knihy/krakatit-688>. [13] Statistiky databáze knihi.cz [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: . [14] Hledaná kniha Krakatit [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://www.knihi.cz/search.php?q=krakatit&x=0&y=0&c=1>.
41
[15] knihi.cz Krakatit [online], 2012 [cit. 2012-5-5]. http://www.knihi.cz/kniha.php?kniha_id=2182-krakatit>.
Dostupné
z WWW:
<
[16] Knižní databáze Kdb.cz [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: . [17] Kdb vyhledávání [online], 2012 [cit. 2012-5-5]. http://www.kdb.cz/vyhledavani.html?q=krakatit&x=27&y=10>. [18] Kdb Krakatit [online], 2012 [cit. http://www.kdb.cz/kniha-16988-krakatit.html>.
2012-5-5].
Dostupné
Dostupné
z WWW:
<
z WWW:
<
[20] Souborný katalog MU [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://aleph.muni.cz/>. [19] Výsledky dotazu slova krakatit aleph.cz [online], 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://aleph.muni.cz/F/3Y54HSEYSSY88KQ99MR9KXXRVKAA4J299C5YPR9XNABPJ28 JEA-08261?func=findb&request=krakatit&find_code=WRD&local_base=MUB01W&x=36&y=6&filter_code_1= WLN&filter_request_1=&filter_code_2=WYR&filter_request_2=&filter_code_3=WYR&filt er_request_3=&filter_code_4=WFM&filter_request_4=&filter_code_4=GNR&filter_request _4=>. [21] BARTOŠEK, Miroslav. Aleph: nový knihovní systém pro MU. Zpravodaj ÚVT MU. ISSN 1212-0901, 2002, roč.13, č.2, s.6-10. [22] LEWIS, Slaimon. RIELMAN, John. TASK-CENTERED USER INTERFACE DESIGN [online], 1993 [cit. 2012-05-05]. Dostupné z WWW: [23] Poznejte Django [online]. .
2012
[cit.
2012-5-5].
Dostupné
z WWW:
[24] CGI [online], aktualizace 1. 4. 2012, [cit. 2012-5-5], Wikipedie. Dostupné z: < http://cs.wikipedia.org/wiki/Common_Gateway_Interface>. [25] Simple HTML and XHTML parser [online]. 2012 [cit. 2012-5-5]. Dostupné z WWW: . [26] Open arbitrary resources by URL [online]. 2012 [cit. 2012-5-5]. Dostupné z WWW: . [27] SQL [online], aktualizace 1. 5. 2012, [cit. 5.5.2012], Wikipedie. Dostupné z: < http://cs.wikipedia.org/wiki/SQL>. [28] PyMySql [online]. 2012 [cit. .
2012-5-5].
Dostupné
z
WWW:
42
[29] O knihovně [online]. 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://www.kjm.cz/oknihovne>. [30] Vyhledávání KJM [online]. 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://katalog.kjm.cz:8080/Carmen/main/application.faces?library=main&view=search&actio n=search&query=krakatit&searchField=ALL&page=1&department=8&conversationContext =1>. [31] Detail knihy Krakatit KJM [online]. 2012 [cit. 2012-5-5]. Dostupné z WWW: < http://katalog.kjm.cz:8080/Carmen/main/application.faces?library=main&view=detail&state= search&detailType=detail&id=71141645>.
43
Seznam obrázků Obrázek č. 1: znázornění výstupu serveru www.cbdb.cz po zadání dotazu Krakatit [8] ........ 10 Obrázek č. 2: ukázka profilu knihy Krakatit na serveru www.cbdb.cz [9] ............................ 10 Obrázek č. 3: znázornění výstupu serveru www.databazeknih.cz po zadání dotazu Krakatit [11] ........................................................................................................................................... 11 Obrázek č. 4: ukázka profilu knihy Krakatit na serveru www.databazeknih.cz [12] ............. 12 Obrázek č. 5: znázornění výstupu serveru www.knihi.cz po zadání dotazu Krakatit [14] ..... 12 Obrázek č. 6: ukázka profilu knihy Krakatit na serveru www.knihi.cz [15] ........................... 13 Obrázek č. 7: znázornění výstupu po dotazu Krakatit na serveru www.kdb.cz [17] .............. 13 Obrázek č. 8: ukázka profilu knihy Krakatit na stránce www.kdb.cz [18] ............................. 14 Obrázek č. 9: ukázka vyhledávání na serveru aleph.muni.cz [12] ......................................... 15 Obrázek č. 10: ukázka vyhledaných údajů v knihovním katalogu aleph.muni.cz [19] ........... 16 Obrázek č. 11: ukázka vyhledávání na serveru carmen.kjm.cz [30] ....................................... 16 Obrázek č. 12: ukázka detailu knihy Krakatit v knihovním katalogu Carmen [31] ................ 17 Obrázek č. 13: přechodový diagram systému Inteligentní vyhledávač knih ........................... 21 Obrázek č. 14: ERD diagram systému .................................................................................... 22 Obrázek č. 15: „skica“ představující návrh grafického uživatelského rozhraní hlavní obrazovky ................................................................................................................................. 25 Obrázek č. 16: skica představující návrh grafického uživatelského rozhraní obrazovky ke správě databáze ........................................................................................................................ 26 Obrázek č. 17: vertikální průchod návrhem pro scénář č. 1................................................... 27 Obrázek č. 18: vertikální průchod systémem pro scénář č. 2 ................................................. 28 Obrázek č. 19: základní nástin vyhledávání systému pomocí jeho nejdůležitějších funkcí..... 36 Obrázek č. 20: popis uživatelského rozhraní systému............................................................. 37 Obrázek č. 21: průchod reálným systémem se scénářem č. 1 ................................................. 38 Obrázek č. 22: průchod reálným systémem dle scénáře č. 2 .................................................. 39
Seznam tabulek Tabulka č. 1: popis třídy Book………………………………………………………………………..31 Tabulka č. 2: popis třídy Autor……………………………………………………………………….31 Tabulka č. 3: popis části modulu Parserss………………………………………………………….32 Tabulka č. 4: popis skriptu vyhledane.cgi, část 1………………………………………………….33 Tabulka č. 5: popis skriptu vyhledane.cgi, část 2………………………………………………....34
44
Seznam elektronických příloh a přiloženého cd Příloha č. 1: Zdrojové soubory programu Příloha č. 2: soubor s heslem do databáze Příloha č. 3: pyMySql modul třetí strany
V příloze č. 1 se nachází soubory vyhledane.cgi, Autor.py, Shelf.py, index.cgi, databaze.cgi, databaze2.cgi, knihovna.cgi, Parserss.cgi. Jedná se o zdrojové kódy systému. V příloze č. 2 se nachází soubor heslo.txt s heslem do databáze systému V příloze č. 3 je přiložen instalační balík Python knihovny třetí strany
Seznam příloh Příloha č. 1: vertikální průchod návrhem se scénářem č. 3 Příloha č. 2: třídy, skripty a jejich funkce 1 Příloha č. 3: třídy, skripty a jejich funkce 2 Příloha č. 4: průchod reálným systémem se scénářem č. 3 Příloha č. 5: ukázka vyhledávání v knihovních katalozích
45
Příloha č. 1: vertikální průchod návrhem se scénářem č. 3
Modul Parserss
Modul Parserss
Modul Parserss
Třída AlephParser parser knihovníh údaju aleph
Třída LinksParser2 parser odkazů serveru kdb
Třída CbdbKnihaParser parser profilů knih na Cbdb
Atributy: rec data1
Atributy: data1 data2 rec1 hCount
Atributy: data1 data2 data3 data4 rec2 rec1 rec3 rec4 rec5
Funkce:
Funkce:
Funkce:
handle_starttag () handle_endtag () handle_data ()
handle_starttag () handle_endtag ()
handle_starttag () handle_endtag () handle_data ()
Modul Parserss
Modul Parserss
Modul Parserss
Třída MendelParser parser pro knihovní údaje KJM
Třída DatabazeKnihaParser parser knih serveru Databezeknih
Třída AlephCodeParser parser kódu nové relace pro aleph
Atributy:
Atributy: data1 data2 data3 data4 rec2 rec1 rec3 rec4
Atributy:
Funkce:
Funkce:
Funkce:
handle_starttag () handle_endtag () handle_data ()
handle_starttag () handle_endtag () handle_data ()
handle_starttag () handle_endtag () handle_data ()
rec2 rec data data2
Příloha č. 2: třídy, skripty a jejich funkce 1
data1
Třída CbdbAutorParser parser profilu autora na Cbdb
Třída KdbKnihaParser parser profilu knihy Kdb
Třída KdbAutorParser parser profilu autora Kdb
Atributy:
Atributy:
Atributy:
data1 data2 data3 rec1 rec2 rec3
data1 data2 rec1 rec2
data1 data2 data3 rec2 rec1 rec3
Funkce:
Funkce:
Funkce:
handle_starttag () handle_endtag () handle_data ()
handle_starttag () handle_endtag () handle_data ()
handle_starttag () handle_endtag () handle_data ()
Modul Parserss Třída DatabazeAutorParser parser autora na Databazeknih
CGI skrip databaze2 Funkce:
Atributy: data1 data2 rec1 rec2
saveToDatabase() writeData() WriteAutorList()
Popis: Ověřuje, zda data zadané uživatelem jsou správné, potom volá funkci writeData() Zapíše údaje do databáze Vypíše všechny autory a jejich identifikační čísla
Funkce: handle_starttag () handle_endtag () handle_data ()
CGI skrip knihovna Funkce:
Využívá třídy:
Popis:
makeUrl3()
Naváže spojení s knihovnou aleph a protřídí data v ní nalezená Vypíše údaje z knihovny opravuje špatnou stránku v knihovním katalogu aleph Naváže spojení s KJM a protřídí data
printMahenData()
Vypíše informace o datech v KJM
makeUrl4() makeAlephList() corectPage()
Parserss.AlephParser() Parserss.AlephCodeParser()
Parserss.LinksParser() Parserss.MendelParser()
Příloha č. 3: třídy, skripty a jejich funkce 2
Maminka nezná název zcela přesně Průměrné hodnocení nalezených výsledů, které jsou seřazené dle hodnocení od nejlépe hodnocené knihy
První záznam jednoznačně není zaměřený na děti, druhý záznam již ano
Příloha č. 4: průchod reálným systémem se scénářem č. 3
Příloha č. 5: ukázka vyhledávání v knihovních katalozích