Author: JirkaH Date: 2010-02-11 18:26:40 +0100 (Thu, 11 Feb 2010) New Revision: 1711 Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex others/dokumentace/technicalGuide/architecture/1preface.tex others/dokumentace/technicalGuide/architecture/2hardware.tex others/dokumentace/technicalGuide/architecture/3management.tex others/dokumentace/technicalGuide/architecture/6clientapp.tex others/dokumentace/technicalGuide/architecture/7communication.tex others/dokumentace/technicalGuide/architecture/9tools.tex others/dokumentace/technicalGuide/architecture/9z10appendix.tex Log: Notes from Mr. Kopecky incorporated. Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -10,7 +10,7 @@ \usepackage{multirow} \usepackage{threeparttable} \usepackage{longtable} -%\usepackage[czech]{babel} +\usepackage[czech]{babel} \usepackage[left=2cm]{geometry} \pagestyle{fancy} % with this we ensure that the chapter and section Modified: others/dokumentace/technicalGuide/architecture/1preface.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/1preface.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/1preface.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -23,8 +23,8 @@ Jedním ze základních rozhodnutích byla volba formátu zobrazitelných dat. -Například u úředních desek bylo možné postupovat více směry. Úřednice mohly ``vyvěšovat'' dokumenty pomocí webového -WYSIWYG editoru. V tomto případě by data na kiosku byly zobrazeny ve webovém prohlížeči. Znamenalo by to ale zbytečnou práci pro úřednice při zadávání dokumentů do systémů, které +Například u úředních desek bylo možné postupovat více směry. Úřednice by například mohly ``vyvěšovat'' dokumenty pomocí webového +WYSIWYG editoru. V tomto případě by data na kiosku byla zobrazena ve webovém prohlížeči. Znamenalo by to ale zbytečnou práci pro úřednice při zadávání dokumentů do systémů, které jsou většinou ve formátu MS Word, navíc často obsahují obrázky. Otázkou je také bezchybnost a uživatelská přívětivost takových volně dostupných editorů. Z tohoto hlediska se jeví jako výhodný formát PDF. Jeho výhody jsou následující. Jedná se o otevřený, zkomprimovaný formát, je v něm velmi dobře definované zvětšování a především do něj dnes lze @@ -32,31 +32,43 @@ \subsection{\label{client_form}Forma a OS klientské aplikace} -Další otázkou je forma zobrazování dat. Nabízející se v zásadě tři možnosti. Ty zde uvádíme spolu s jejich výhodami a nevýhodami. +Další otázkou je forma zobrazování dat. Při výběru byly zvažována hlavně podpora zobrazování PDF dokumentů a videí. Nabízející se v zásadě tři možnosti. Ty zde uvádíme spolu s jejich výhodami a nevýhodami. \begin{itemize} - \item \textbf{Webová aplikace s integrovaným PDF prohlížečem} - Aplikace podobná Google Books \cite{googlebooks}. - Výhodou tohoto řešení je integrace s webovým prohlížečem, kdy odpadnou starosti s vlastní aplikací (instalace, aktualizace). Nevýhodou jsou pak poměrně velké nároky na výpočetní kapacitu klienta, - v případě rastrování PDF na kiosku, nedostupnost takovýchto komponent a v případě technologie Flash její problematická funkčnost na platformě Linux. Za zmínku stojí projekt - FlashPaper \cite{flashpaper}, který umožňuje převést převést PDF soubor do SWF a ten pak použít na stránkach. Adobe však tento produkt zřejmě z důvodu konkurence jiných svých produktů - již nepodporuje, navíc její cena je poměrně vysoká. + \item \textbf{Webová aplikace} + \subitem \textbf{Zobrazení PDF} + Aplikace podobná Google Books \cite{googlebooks}. + Výhodou tohoto řešení je integrace s webovým prohlížečem, kdy odpadnou starosti s vlastní aplikací (instalace, aktualizace). Nevýhodou jsou pak poměrně velké nároky na výpočetní kapacitu klienta, + v případě rastrování PDF na kiosku, nedostupnost takovýchto komponent a v případě technologie Flash její problematická funkčnost na platformě Linux. Za zmínku stojí projekt + FlashPaper \cite{flashpaper}, který umožňuje převést PDF soubor do SWF a ten pak použít na stránkach. Adobe však tento produkt zřejmě z důvodu konkurence jiných svých produktů + již nepodporuje, navíc jeho cena je poměrně vysoká. - V případě rastrování na serveru pak špatná možnost zvětšování dokumentu (daný dokument by musel být vyrastrován ve více rozlišeních, které můžou být pro různé klienty různé) a - poměrně velké výpočetní a prostorové nároky na server. + V případě rastrování na serveru pak špatná možnost zvětšování dokumentu (daný dokument by musel být vyrastrován ve více rozlišeních, které můžou být pro různé klienty různé) a + poměrně velké výpočetní a prostorové nároky na server. + \subitem \textbf{Zobrazení videí} + Naprostá většina videí na webu je dnes zobrazována pomocí Flash přehrávače ve formátu flv. To však vytváří umělá omezení na nutnost konverze videí do tohoto formátu ať už na straně serveru (velké nároky + na výkon) nebo klienta (nepohodlné). + + Dále je možnost využít různých rozšíření webového prohlížeče (např. Kaffeine plugin pro Firefox). Prohlížeč pak může přehrát veškeré formáty videí, jako samotný přehrávač. + + Videa jsou pak streamována do webového prohlížeče. Vhodným nastavením kešování by jistě šlo zamezit spuštění videa dříve, než je celé stažené, což by mohl být problém při pomalém připojení. Problémem + však zůstává znovu stahování videa při restartu prohlížeče, nemožnost stáhnout video dříve, než se má zobrazit. Webové prohlížeče sice používají vyrovnávací paměť pro ukládání obsahu, uživatel však nemá příliš + možností toto chování ovlivnit. + \item \textbf{Začlenění existujících prohlížečů do vlastní aplikace} - Tato možnost by představovala vytvořit aplikaci, která by využívala již existujících aplikací, tj. webových prohlížečů, prohlížečů PDF apod. To by ušetřilo značnou část práce + Tato možnost by představovala vytvořit aplikaci, která by využívala již existujících aplikací, tj. video přehrávačů, prohlížečů PDF apod. To by ušetřilo značnou část práce v porovnání s možností níže. Na druhou stranu by pak byl celý projekt závislý na chybách a chování jiných produktů, otázkou je také vizualní kompozice cizích programů, nezobrazovaní - různých nástrojových lišt apod. V neposlední řadě můžou být překážkou licenční podmínky. + různých nástrojových lišt apod. V neposlední řadě mohou být překážkou licenční podmínky. \item \textbf{Vlastní aplikace} Vlastní aplikace je na první pohled nejpracnější řešení, na druhou stranu je jistě nejflexibilnější. Člověk není omezen webovým prostředím, či chováním aplikací třetích stran. - V připadě použití vhodné knihovny na zobrazovaní PDF, videí či jiného obsahu tak, aby nebylo nutné tyto poměrně komplexní časti vyvýjet samostatně, pak již nemusí být vývoj vlastní + V připadě použití vhodné knihovny na zobrazovaní PDF, videí či jiného obsahu tak, aby nebylo nutné tyto poměrně komplexní časti vyvíjet samostatně, pak již nemusí být vývoj vlastní aplikace tak náročný. V neposlední řadě se bude jistě jednat o nejvýkonější řešení a nebude problém přidat podporu zobrazování dalšího typu dat, či jinak aplikaci upravit. \end{itemize} -Vzhledem k uvedeným důvodům bylo rozhodnuto vydat se cestou vlastní aplikace vyvýjené v C++ s použitím frameworku Qt. O volbě konkrétních knihoven se pak lze dočíst v kapitole -\ref{clientapp}.\\ +Vzhledem k uvedeným důvodům bylo rozhodnuto vydat se cestou vlastní aplikace vyvíjené v C++ s použitím frameworku Qt. O volbě konkrétních knihoven se pak lze dočíst v + kapitole \ref{clientapp}.\\ Jelikož bylo rozhodnuto použití multiplatformního řešení ve formě Qt a C++, volba operačního systému nebyla omezena. Vzhledem k požadavku na co nejmenší cenu řešení, velikosti instalace, hardwarovým nárokům a možnosti vzdálené spravy byla zvolena cílová platforma Linux, konkrétně Ubuntu 9.04 v minimální instalaci. Modified: others/dokumentace/technicalGuide/architecture/2hardware.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/2hardware.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/2hardware.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -1,25 +1,25 @@ \chapter{Hardware} -Součástí zadání projektu bylo i definování vhodného hardweru pro kiosek. Výběr byl omezen hlavně následujícími faktory: +Součástí zadání projektu bylo i definování vhodného hardware pro kiosek. Výběr byl omezen hlavně následujícími faktory: \begin{itemize} \item \textbf{Podpora dostatečného rozlišení} - počítač musel umět rozlišení minimálně 1920x1080 (Full HD) a to nejlépe přes digitální rozhraní DVI či HDMI. - \item \textbf{Dostatečný výkon} - i přes to, že byl software vyvýjen s ohledem na minimální nároky na hardware, je nutné počítat s určitým výkonem zvláště v případě přehrávání videa + \item \textbf{Dostatečný výkon} - i přes to, že byl software vyvíjen s ohledem na minimální nároky na hardware, je nutné počítat s určitým výkonem zvláště v případě přehrávání videa či použití velkého rozlišení. \item \textbf{Tepelná a elektrická náročnost} - celý počítač je uzavřen v poměrně malé skříni. V letním období je navíc nutné počítat s vysokými teplotami, které mohou být ještě zvýšeny slunečním svitem na šasi kiosku. Bylo tedy nutné vybírat takový HW, který je minimálně tepelně náročný a lze jej chladit nejlépe pasivně. Vzledem k uvažovanému - provozu 24 hodin denně, je nutné brát ohled taky na příkon celého řešení. + provozu 24 hodin denně, je nutné brát ohled rovněž na příkon celého řešení. \item \textbf{Cena} - jeden z nejdůležitějších faktorů. Na trhu existuje několik průmyslových PC splňující požadavky, jejich cena je však ve srovnaní s jinými řešeními až 5x vyšší. \end{itemize} Z důvodu poměrně úzkého prostoru v kiosku pro počítač byl jako formát skříně zvolena racková skřín velikosti 1U s minimální hloubkou (TODO foto). To umožňuje jednoduchý přístup k celému PC a -jeho rychlou případnou výmenu za jiný kus. +jeho rychlou případnou výměnu za jiný kus. Vzhledem k výše uvedeným požadavkům se jako ideální formát základní desky ukázal formát Mini-ITX (rozměry 17x17cm). Tyto základní desky již umí nabídnout dostatečně výkonné integrované grafické karty s podporou akcelerace HDTV videa a s digitálnímy grafickými výstupy (i dvěma). Jistým problémem těchto základních desek je jejich dostupnost na trhu, zvláště v České republice. V poslední době se však i toto lepší. Dalším důležitým rozhodnutím z hlediska ceny, ale i životnosti a tepelné náročnosti bylo upuštění od klasických pevných disků. Namísto nich se použivají USB flash disky, které dnes již mají -dostatečnou kapacitu a není problém z nich spouštět celý operační systém. Je si však nutné uvědomit, že životnost těchto zařázení je hlavně omezena počtem zápisů. Proto je nutné správně +dostatečnou kapacitu a není problém z nich spouštět celý operační systém. Je si však nutné uvědomit, že životnost těchto zařízení je omezena počtem zápisů. Proto je nutné správně nastavit souborový systém, ale i použité aplikace (hlavně různé logování). Konkrétní použité nastavení je obsahem přiloženého CD jako nastavení nástroje Cfengine, viz \ref{cfengine}. V případě nutnosti lze však stále použít klasický pevný disk. @@ -39,12 +39,12 @@ \item \textbf{Zdroj} \end{itemize} -Sestava byla také vybrána z možného rozšíření kiosku na 2 obrazovky. K tomu ale zatím ještě nedošlo.\\ +Sestava byla také vybrána z důvodu možného rozšíření kiosku na 2 obrazovky. K tomu ale zatím ještě nedošlo.\\ Vývoj počítačů a hardwarů jde samožřejmě velmi rychle kupředu. Proto je téměř jisté, že se v další generaci kiosků hardware změní, nejspíše ve prospěch platformy Intel Atom s čipsetem nVidia ION. \section{Ovládací tlačítka} -Kiosek je ovládán pomocí dotykových tlačítek připojených pomocí seriového COM portu. Tlačítka po doteku vyšlou signál - písmena abecedy -v závislosti na zmáčknutém tlačítku. Aplikace na kiosku pak seriový port pravidelně kontroluje a simuluje tak zmáčknutí klávesy. Tyto tlačítka dodal zadavatel projektu. +Kiosek je ovládán pomocí dotykových tlačítek připojených pomocí sériového COM portu. Tlačítka po doteku vyšlou signál - písmena abecedy +v závislosti na zmáčknutém tlačítku. Aplikace na kiosku pak sériový port pravidelně kontroluje a simuluje tak zmáčknutí klávesy. Tyto tlačítka dodal zadavatel projektu. Modified: others/dokumentace/technicalGuide/architecture/3management.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/3management.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/3management.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -2,22 +2,22 @@ \section{Správa}\label{management} Jak vyplývá z požadavků uvedených v \textit{Analýze}, je správa potenciálně velkého množství kiosků velmi důležitým aspektem projektu. Bylo nutné vybrat -takové řešení, které umožní spravovat kiosky s různým hw, umožní instalaci nových verzí softwaru, bezpečnostních záplat apod. Navíc je důležité, že dané +takové řešení, které umožní spravovat kiosky s různým hardware, umožní instalaci nových verzí softwaru, bezpečnostních záplat apod. Navíc je důležité, že dané nastavení se musí po zapnutí projevit i na kioscích, které jsou momentálně z jakýchkoliv důvodů vypnuté. U většího množství již není udržitelné se vzdáleně -připojovat na jednotlivé kiosky a přes SSH nastavovat daný kiosek. U nedostupných kiosků pak nezapomenout provést požadované změny. To samé u nově instalovaných kiosků.\\ +připojovat na jednotlivé kiosky,přes SSH nastavovat daný kiosek, a u nedostupných kiosků pak nezapomenout provést požadované změny dodatečně. To samé u nově instalovaných kiosků.\\ Při výběru vhodného nástroje byly použity zkušenosti se správou velkých výpočetních farem jednotlivých středisek v gridu LCG \cite{lcg}. Ty ke správě stovek až tisíců počítačů používají převážně následující produkty: \begin{itemize} - \item \textbf{Quattor} - je komplexní nástroj na správu velkých výpočetních farem. Byl vyvinut v rámci projektu projektu LCG \cite{lcg} v CERNu, kde je taky používán na správu + \item \textbf{Quattor} - je komplexní nástroj na správu velkých výpočetních farem. Byl vyvinut v rámci projektu LCG \cite{lcg} v CERNu, kde je taky používán na správu více než sedmi tisíc počítačů. Výhodou je škálovatelnost a komplexnost řešení (např. podpora ACL pro různé uživatele systému), nevýhodou pak nutnost psaní vlastních konfiguračních modulů pro jednotlivé aplikace (např. modul pro Nagios apod.). Další nevýhodou je silná vazba na databázi Oracle, podpora jen operačních systému postavených na Red Hat 4 a 5. Pro tento projekt by však byl Quattor ``kanónem na vrabce''. Více informací je k dispozici na \cite{quattor}. \item \textbf{Cfengine} - je léty ověřený de-facto standard na poli nástrojů pro správu konfigurací serverů. Oproti Quattoru se jendá o jednodušší řešení. Jedntolivé konfigurace jsou - ukládány v textových souborech, nevyžaduje na druhou stranu podporu na klientech (krom samotného klienta Cfenginu). Nevýhodou může být chybějící podpora + ukládány v textových souborech, nevyžaduje na klientech (krom samotného klienta Cfenginu). Nevýhodou může být chybějící podpora různých oprávnění uživatelů, V rámci projektu \cite{lcg} je používán v největším vědeckém výpočetním centru v České republice ve Fyzikálním ústavu Akademie Věd\cite{TODO}. Více informací je k dispozici na \cite{cfengine}. \item \textbf{Puppet} - je svým zaměřením podobný nástroju Cfengine. Jeho výhodou je vyšší míra abstrakce popisovaných nastavení - lze např. říci ``přidej uživatele Alice'' a není nutno @@ -27,7 +27,7 @@ Vzhledem ke zkušenosti autorů projektu se systémy Quattor a Cfengine a k podobnosti Puppetu s Cfenginem, byl zvolen právě systém Cfengine. Ten umožňuje rozdělit konfiguraci kiosků dle jednotlivých služeb, kiosky seskupovat do skupin a na ty aplikovat různé pravidla. Konfigurace v Cfenginu je navíc deklarativní - administrátor -definuje stav, ve kterém má být systém, což je rozdíl oproti např. skriptu v shellu, kde člověk definuje přesnou posloupnost akcí, které se mají provést. Z tohoto důvodu dojde k aktualizaci +definuje stav, ve kterém má systém být, což je rozdíl oproti např. skriptu v shellu, kde člověk definuje přesnou posloupnost akcí, které se mají provést. Z tohoto důvodu dojde k aktualizaci jen dané, určité části např. při výpadku klienta a jeho opětovném spuštění. Cfengine podporuje snad všechny operační systémy typu Linux. V rámci projektu byla veškerá konfigurace kiosků po nainstalovanání minimální instalace systému zanesena právě do Cfenginu. V praxi tedy stačí nainstalovat příslušný balík, nahrát klientskou @@ -37,8 +37,8 @@ Veškerá konfigurace je navíc uložena v textových souborech, což umožnilo integraci se systémem správy verzí SVN. Existují tedy zálohy všech konfigurací a v případě nešťastného zásahu administrátora lze změnu jednoduše vrátit zpátky\footnote{Jen v případě, že se změna fatálně nedotkla konektivity k internetu či nastavení samotného agenta Cfenginu.}.\\ -Důležitým aspektem vdálené správy je také možnost vzdáleně se připojit k jednotlivým uzlům a být tak moci opravdu zkontrolovat nastavení na dané stanici, či provést jiné zásahy. To může -být problém při připojení přes ISP, kteří neposkytují veřejnou IP adresu (což je dnes nejčastejší případ). Z tohoto důvodu byla navržena a implementována virtuální privátní síť pomocí programu +Důležitým aspektem vzdálené správy je také možnost vzdáleně se připojit k jednotlivým uzlům a moci tak opravdu zkontrolovat nastavení na dané stanici, či provést jiné zásahy. To může +být problém při připojení přes ISP, kteří neposkytují veřejnou IP adresu (což je dnes nejčastější případ). Z tohoto důvodu byla navržena a implementována virtuální privátní síť pomocí programu OpenVPN, který je více popsán v sekci \ref{security}. To mj. umožní přímé připojení ke kiosku, který je za libovolným počtem překladačů. \section{\label{monitoring}Monitorování} @@ -51,7 +51,7 @@ \begin{itemize} \item \textbf{Zabbix} - je spíše nováček na poli open-source monitorovacích nástrojů. Jeho výhodou je vysoká škálovatelnost vzhledem k možnosti distribuovat monitorování na více serverů, - podpora grafování monitorovacích metrik v reálnem čase. + podpora tvorba grafů monitorovacích metrik v reálnem čase. Dále je možné vytvořit poměrně kompletní scénáře monitorování služeb, kdy jde např. opravdu ověřit, že se na dané adrese zobrazuje daná stránka a lze se například přihlásit do systému. Nevýhodou je pak nepříliš velká uživatelská přívětivost jinak velmi komplexního webového rozhraní. Dále, dle zkušeností s pilotním provozem v rámci tohoto projektu, @@ -79,7 +79,7 @@ OpenVPN umožňuje širokou škálu možností šifrování a autentizace za pomoci knihovny OpenSSL. Tímto je zajištěna bezpečná komunikace mezi klientem a kioskem, není tedy již potřeba řešit bezpečnost v samotné klientské aplikaci. \\ -Konkrétní nasazení v projektu je následující. VPN server slouží zároveň jako jako certifikační autorita a jsou zde generovány X.509 certifikáty pro klienty (kiosky i administrátory), +Konkrétní nasazení v projektu je následující. VPN server slouží zároveň jako certifikační autorita a jsou zde generovány X.509 certifikáty pro klienty (kiosky i administrátory), autentizace probíhá pomocí protokolů SSL/TLS. Každému klientu je pak po autotentizaci přiřazena pevná IP adresa z rozsahu 10.248.0.0/16. To umožňuje zanést IP adresy ve virtuálních síti jednotlivých do vlastního DNS v jedné doméně (.elvys) a přistupovat pak k jednotlivým kioskům pomocí jména nezávisle na způsobu připojení daného kiosku. Šifrování přenosů pak probíhá z důvodu rychlosti Modified: others/dokumentace/technicalGuide/architecture/6clientapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -20,40 +20,102 @@ \item \textbf{Dynamický text} \end{itemize} - \subsection{PDF dokumenty} + \subsection{PDF dokumenty \label{pdf_doc}} \subsubsection{Volba knihovny} Zobrazování PDF dokumentů bylo základním požadavkem na projekt. Výběrem a posouzení vhodnosti tohoto formátu se zabývá kapitola \ref{data_format}. - Vzhledem ke složitosti formátu PDF bylo zřejmé, že na zobrazování bude muset být použita podporující knihovna. Standardní knihovnou pro podporu zobrazování PDF v Linuxu je knihovna Poppler \cite{poppler}. Ta je použita například v programu xpdf, pozměněná verze knihovny je použita také ve známějším - prohlížeči KPDF. Bohužel je knihovna distribuována pod licencí GPL, není tedy možné ji použít v komerční aplikaci (ta by pak musela být taktéž vydána pod licencí GPL). + Vzhledem ke složitosti formátu PDF bylo zřejmé, že na zobrazování bude muset být použita podporující knihovna. Standardní prolížečem PDF v Linuxu je prohlížeč Xpdf\cite{xpdf}. Z něj vychází také knihovna + Poppler \cite{poppler}, která přidává snadnější napojení na cílovou aplikaci a stala se základem mnoha Linuxových prohlížečů, jako jsou KPDF, Evince, Okular a jiné. Bohužel je distribuována pod licencí GPL, + není tedy možné ji použít v komerční aplikaci (ta by pak musela být taktéž vydána pod licencí GPL). Nepříjemným překvapením byla zjištěná situace na trhu knihoven pro rasterizaci PDF dokumentů. Autorům není známá žádná knihovna na rasterizování PDF, která by byla zadarmo a umožňovala by zakomponování v aplikaci s uzavřeným zdrojovým kódem. Komerční knihovny na druhou stranu pak stojí i několik tísíc korun. - Proto byly hledány co nejlevnější řešení na jednu licenci (kiosek). Toto nakonec vyhrála knihovna XpdfRasterizer \ref{xpdfrasterizer}, která je vlastněna stejnou firmou, která vydává - a vlastní zdrojový kód prohlížeče xpdf. Jedná se o levné + Proto byly hledány co nejlevnější řešení na jednu licenci (kiosek). Toto nakonec vyhrála knihovna XpdfRasterizer \cite{xpdfrasterizer}, která je vlastněna stejnou firmou, která vydává + a vlastní zdrojový kód prohlížeče Xpdf. Jedná se o levné a jednoduché řešení na tvorbu obrázků ze stránek (či části stránek) PDF souboru v daného rozlišení (v dpi). Daní za cenu a jednoduchost je nutnost napsat si vlastní prohlížeč, který by podporoval standardní funkce jako zvětšování, listování apod. Stejná firma nabízí i takovou knihovnu, vzhledem k ceně ale bylo rozhodnuto vydat se složitější cestou. - \subsubsection{Prohlížení PDF} + \subsubsection{Renderování} Vzhledem k tomu, že tvorba obrázku v daném rozlišení z PDF souboru je poměrně náročná operace, bylo rozhodnuto generovat jednotlivé strany dokumentů v různých vláknech, čímž se - zajístí schopnost odezvy aplikaci i při načítání PDF. - Požadavkům uvedeným v \textit{Analýze}, bylo nutné zajistit správné zobrazení náhledů - \subsubsection{Volba knihovny} + zajístí schopnost odezvy aplikace i při načítání PDF. + + Načítání PDF tedy probíhá na žádost. Zobrazovací vlákno (GUI), které kešuje zobrazované stránky (pixmapy) vyvolá signál, když daná stránka v keši není. To vzbudí pracovní vlákno, které danou stránku vygeneruje a + předá zobrazovacímu vláknu, ktéra jej vloží do paměti. Cache pixmap je globální pro celou aplikaci, její správu a tedy vymazávání starých dat má na starosti framework Qt. Samotné pracovní vlákno své data také cachuje, + tato cache je však omezené, menší velikosti a své data maže při přepnutí kategorií, tj. když daný dokument není zobrazen. - vicevlaknove, pomale, sprava pameti...cachovani + \subsubsection{Zobrazení v náhledech a zvětšování} + PDF dokumenty jsou ve výchozím zobrazení zobrazeny jako náhledy zvolených stran (většinou prvních, to však lze ve webové aplikaci měnit). Prostor, ve kterém je dokument zobrazen je dán pozicí, na kterou je + naplánován. Dle požadavků uvedeným v \textit{Analýze} je nutné, aby byl při zobrazování vždy zachován poměr stran, tj. nedocházelo k deformaci. Po načtení první strany se tedy daná pozice vizuálně zmenší, + aby odpovídala rozměrům PDF dokumentu - ten má vždy alespoň jednu stranu dlouhou stejně jako je velikost pozice - zobrazení je maximálně možné.\\ + Jedním z dalších požadavkům uvedeným v \textit{Analýze}, byla možnost zvětšovat PDF dokumenty a listovat v nich. Vzhledem k tomu, že zvolená knihovna podobnou práci nepodporuje, bylo nutné takový prohlížeč + naimplementovat. K tomu, aby bylo listování vizuálně přívětivé (posuvníky byly správně dlouhé), je nutné zjistit rozměry všech stran PDF dokumentu nastavených k zobrazení. Načítání jednotlivých stran pak funguje + stejně, jak je popsáno v předchozí kapitole. + + Zvětšovat daný dokument lze vícekrát, po každém zvětšení se rozměry stran zvětší o danou konstantu. Velikost okna prohlížeče PDF se však již nemění. Zvětšení je limitováno na max. 5 iterací. Velikost + prohlížeče PDF ve zvětšeném režimu stejně tak jako konstanta zvětšení je možné změnit úpravou hlavičkového souboru aplikace, tj. je nutné aplikaci rekompilovat. + + Vzhledem k tomu, že zvětšený dokument může potenciálně zakrýt celou obrazovku, je nutné zajistit, aby se sám v případě neaktivity uživatelů zmenšil do režimu náhledu. + Aktivita uživatelů znamená stisk libovolných kláves. Po 60s neaktivity je daný dokument zmenšen.\\ + + Ve zvěšeném módu nelze přepínat mezi panely ani kategoriemi. Jsou také pozdrženy veškeré akce, které by měly za následek skrytí zvětšeného dokumentu, tj. pokud je např. odstraněn z naplánovaní, bude odstraněn až + při jeho zmenšení. To samé platí při jeho změně, smazaní příslušného panelu či kategorie. Zmíněné akce jsou provedeny hned po zmenšení dokumentu. Na akce netýkající se zvětšeného dokumentu nemá jeho zvětšení vliv. + Například smazání jiné kategorie, či naplánovaní jiného dokumentu je provedeno hned. + + \subsubsection{Možnosti nastavení} + Kiosek umožňuje nastavit, která strana dokumentu bude náhledová, které strany budou zobrazeny ve zvětšeném režimu (vše uvedeno v documentConfigu, viz \ref{appendix_documentConfig}). Dále lze nastavením ve hlavičkovém + souboru měnit krok zvětšení, maximální počet zvětšování a maximální velikost prohlížeče PDF. + \subsection{Podpora videa} + \subsubsection{Volba knihovny} + Jedním z požadavkům na knihovnu byla podpora co největšího počtu formátů videí. Vzhledem k použítí frameworku Qt byla volba knihovny pro tuto práci vcelku jednoduchá. Součástí frameworku je knihovna Phonon, která + je určena právě pro přehrávání multimedií. Ta naprosto splňuje dané požadavky, navíc je také multiplatformní. Na linuxových systémech využívá knihovnu \verb!gstreamer! \cite{gstreamer} (s licencí LGPL) a + její pluginy. Po instalaci vhodných balíků tak lze přehrávat vpodstatě všechny formáty videí (v nastavení závislostí programu jsou tyto knihovny TODO\ref{TODO_ref}). - prehravani...phonon, kodeky + Veškeré ovládání přehrávače je vzhledem k jeho vícevláknosti asynchronní. To na jednu stranu umožňuje zvýšit výkon a odezvu výsledné aplikace, na druhou stranu vyžaduje více pozornosti při implementaci. + + \subsubsection{Zobrazení v náhledech a zvětšování} + V závislosti na nastavení konkrétního videa (viz \ref{video_settings}) je v náhledu video přehráváno, či je zobrazen pouze daný snímek videa. Pokud je video přehráváno, je zobrazen i posuvník značící + konkrétní pozici videa. Podobně jako u PDF dokumentů je velikost přehrávaného videa v náhledu omezena velikostí pozice, na kterém je zobrazen, snaha je však o maximální využití prostoru, při zachování + poměru stran videa.\\ -\section{Konfiguracni soubory} + Videa lze zvětšit. Pomocí šipek (připojených tlačítek) se lze ve videu navigovat. + Podobně jako u v případě PDF dokumentů \ref{pdf_doc} platí pro zvětšený přehrávač videí stejná omezení. Při zvětšení se nelze přepínat mezi kategoriemi, panelami. Veškeré akce které by přerušily přehrávání videa + jsou pozdrženy. Video je automaticky zmenšeno po jeho přehrátí. + + + \subsubsection{Možnosti nastavení \label{video_settings}} + U videí lze nastavit nastavit, jestli má být video přehráváno již v náhledu (autostart) nebo až po zvětšení, dále od jakého času má být video přehráváno (vše uvedeno v documentConfigu, viz + \ref{appendix_documentConfig}). + To lze využít pro zobrazení daného snímku v náhledu, když se video nepřehrává. Dále lze nastavit maximální velikost zvětšeného přehrávače podobně jako u PDF dokumentů pomocí hlavičkového souboru. + +\section{Konfigurační soubory\label{kiosk_conf_files}} + Klientská aplikace obsahuje několik konfiguračních souborů ve formátu XML (formáty dat všech souborů jsou ve formě XSD popsány v \ref{xsd}). Jednotlivé soubory jsou detailněji vysvětleny níže. Kromě jedné části + \textit{appConfig}u jsou všechny konfigurační soubory pravidelně stahovány ze serveru a po zpracování a validaci ukládany na disk. + Při startu aplikace jsou totiž nejdříve použity uložené konfigurační soubory, a až poté se začnou stahovat nové. Aplikace proto funguje relativně správně i při výpadku Internetu. + + Způsob stahování konfiguračních souborů, respektive popis komunikace obecně je detailněji popsán v kapitole \ref{interface_web_and_kiosk} + + \subsection{appConfig} + Jde o konfigurační soubor aplikace, ve kterém je uvedeno ID kiosku a adresy a periody pro stažení dalších konfiguračních souborů. Je zřejmé, že pro správnou funkci aplikace musí být alespoň část + udájů staticky uložena (jinak by program nevěděl, kde má poptávat další konfiguraci). Proto je tento soubor částečně duplikován. Soubor \verb!appconfig.xml.static! může obsahovat všechny + informace povolené v appConfigu, musí však minimálně obsahovat informaci o ID kiosku a adrese pro stažení kompletního AppConfigu. Do souboru \verb!appconfig.xml! se pak ukládá kompletní + stažená konfigurace. + \subsection{categoryConfig} + Tento soubor obsahuje informace o počtu, názvu kategorií, jejím pořadí a definovaném počtu a rozložení pozic. Stahování probíhá do souboru \verb!category.xml!. + \subsection{documentConfig} + Obsahuje informace o panelech v jednotlivých kategoriích a o přiřazení konkrétních dokumentů na dané pozice. Stahování probíhá do souboru \verb!document.xml!. + \subsection{fileCacheConfig} + Obsahuje informace o datových dokumentech, které budou zobrazeny během následujících 24 hodin. Slouží k stahování dokumentů v předstihu. Stahování probíhá do souboru \verb!filecache.xml!. + \section{Komunikace} + Komunikaci se serverem probíhá pomocí konfiguračních souborů popsaných v kapitole \ref{kiosk_conf_files} a dále ve formě nahrávání aktuálních snímků obrazovek a posílání statistik provozu. Komunikaci se detailně + věnuje vlastní kapitola \ref{communication}, statistikám pak sekce \ref{kiosk_statistics}. - -\section{Statistiky} +\section{Statistiky \label{kiosk_statistics}} Kiosek periodicky odesíla statistiky o svém provozu a používání na server, kde jsou zpracovávány. - \subsubsection{Typu statistik} + \subsubsection{Typy statistik} \begin{itemize} \item začátek a konec stahování nového dokumentu (\verb!download!) \item začátek a konec vyvěšení daného dokumentu (\verb!exhibit!) @@ -67,18 +129,24 @@ zapisovat na disk a poté tyto záznamy upravovat podle toho, jak jsou data odesílany na server. Vlastní formát datového souboru byl zavrhnut jako zbytečně pracný a neefektivní. Namísto toho bylo rozhodnuto používat relační databázi, ty jsou pro tento druh práce vhodné. Vzhledem k zachování samostatnosti aplikace a k - malým výkonnostním nárokům byla zvolena databáze SQLITE v3. Protože byla použita abstrakce databází v Qt, lze v případě potřeby + malým výkonnostním nárokům byla zvolena databáze SQLITE v3. Protože byla použita abstrakce databází ve frameworku Qt, lze v případě potřeby změnit databázový engine jednoduchou úpravou aplikace. - {\bf TODO} Schema DB + Databáze se skládá z jediné tabulky, jejíž schéma zobrazuje obrázek + \begin{center} +% \includegraphics[width=1\textwidth]{imgs/kiosk_dbschema.png} + \end{center} + \subsubsection{Odesílání statistik} Statistiky jsou odesílány v pravidelných, konfigurovatelných intervalech, dále pak při startu a konci aplikace. - Při odesílání je kontrolován odezva serveru, odesílání je pak případně opakováno. + Při odesílání je kontrolována odezva serveru, odesílání je pak případně opakováno. - Způsub odesílání jednotlivých druhů statistik se však liší. - Typy \verb!download! a \verb!detail! se odesílají na server až když je jejich záznam kompletní, tj. je znám čas začatku - i konce dané události. Typ \verb!exhibit! je na server odesílán nekompletní, párování těchto záznamů je přenecháno + Způsob odesílání jednotlivých druhů statistik se však liší. + Typy \verb!download! a \verb!detail! se odesílají na server až když je jejich záznam kompletní, tj. je znám čas začátku + i konce dané události. + + Typ \verb!exhibit! je na server odesílán nekompletní, párování těchto záznamů je přenecháno na serveru. Důvodem k tomuto rozdílnému chování byla snaha ušetřit serveru práci při párování záznamů při současném zachování dobré odezvy statistik. V případě odesílání jen kompletních záznamů by se server o skutečném vyvěšení dokumentu na kiosku dozvěděl až po vypršení doby vyvěšení. @@ -86,5 +154,6 @@ \section{Screenshoty} -\section{Stahovani a ukladani souboru} -dopredne... \ No newline at end of file +\section{Správa souborů} + \subsection{Stahování souborů} + \subsection{Správa úložiště} \ No newline at end of file Modified: others/dokumentace/technicalGuide/architecture/7communication.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/7communication.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/7communication.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -1,4 +1,4 @@ -\chapter{Popis rozhraní} +\chapter{Popis rozhraní\label{communication}} Tato kapitola obsahuje popis všech rozhraní nacházejících se v systému ELVYS. Každé z následujících rozhraní bude popsáno ve vlastní sekci v rámci této kapitoly. \begin{description} @@ -42,7 +42,7 @@ komunikační infrastrukturu. \item \textbf{Web Services} \footnote{Web Services (WS), \url{http://www.w3.org/2002/ws/}}\\ Použití webových služeb je takřka ideální volbou pro implementaci požadované komunikaci - (jak z hlediska shody s požadavkami, tak z hlediska zkušeností autorů s touto technologií). + (jak z hlediska shody s požadavky, tak z hlediska zkušeností autorů s touto technologií). Pro pohodlnou práci s webovými službami (svázání kódu aplikace s WSDL\footnote{wsdl} popisným souborem, zpracování SOAP\footnote{SOAP} protokolu) je zapotřebí používat na straně serveru i klienta speciální knihovny. Implementace webových služeb nemusí být založena na protokolu SOAP(který @@ -202,7 +202,7 @@ \subsection{Zamykání rozvržení} - Při editování dřívě vytvoření rozvržení je nutné, aby rozvržení editoval pouze jeden uživatel, jinak by mohlo docházet ke konfliktům. + Při editování dřívě vytvořených rozvržení je nutné, aby rozvržení editoval pouze jeden uživatel, jinak by mohlo docházet ke konfliktům. To je zajištěno pomocí zamykání editovaných rozvržení. Zamykání je realizováno pomocí HTTP POST požadavků. LayoutDesigner zašle serveru identifikátor společnosti, uživatele a rozvržení a typ požadavku - zda chce rozvržení zamknout, odemknout nebo zjisti, zda je zamčeno tímto uživatelem. Pokud je rozvržení načteno ze serveru, uzamkne se a ostaní uživatelé ho nemohou editovat. Při ukládání se LayoutDesigner ujistí, zda má uživatel rozvržení stále zamknuté, až poté ho uloží na server. Po zavření se rozvržení odemkne a mohou ho začít editovat ostatní uživatelé. Modified: others/dokumentace/technicalGuide/architecture/9tools.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/9tools.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/9tools.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -34,6 +34,8 @@ \bibitem{cfengine} \textbf{Cfengine, configuration management tool} http://www.cfengine.org/ \bibitem{quattor} \textbf{Quattor, configuration management tool} http://sourceforge.net/apps/mediawiki/quattor/ \bibitem{openvpn} \textbf{OpenVPN} http://openvpn.net/ + \bibitem{xpdf} \textbf{Xpdf} http://www.foolabs.com/xpdf/ \bibitem{poppler} \textbf{Poppler} http://poppler.freedesktop.org/ - \bibitem{xpdfrasterizer} \textbf{XpdfRasterizer} http://www.glyphandcog.com/XpdfRasterizer.html + \bibitem{xpdfrasterizer} \textbf{XpdfRasterizer} http://www.glyphandcog.com/XpdfRasterizer.html + \bibitem{gstreamer} \textbf{GStreamer} http://www.gstreamer.net/ \end{thebibliography} Modified: others/dokumentace/technicalGuide/architecture/9z10appendix.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/9z10appendix.tex 2010-02-11 17:08:18 UTC (rev 1710) +++ others/dokumentace/technicalGuide/architecture/9z10appendix.tex 2010-02-11 17:26:40 UTC (rev 1711) @@ -4,7 +4,7 @@ \begin{center} \includegraphics[width=1\textwidth]{imgs/dbschema.png} \end{center} -\chapter{XSD pro komunikaci} +\chapter{XSD pro komunikaci \label{xsd}} \section{appConfig.xsd}\label{appendix_appConfig} \section{categoryConfig.xsd}\label{appendix_categoryConfig} \section{documentConfig.xsd}\label{appendix_documentConfig}