Author: JirkaH Date: 2010-02-08 20:46:36 +0100 (Mon, 08 Feb 2010) New Revision: 1684 Modified: others/dokumentace/technicalGuide/architecture/1preface.tex others/dokumentace/technicalGuide/architecture/6clientapp.tex others/dokumentace/technicalGuide/architecture/9tools.tex Log: some more documentation Modified: others/dokumentace/technicalGuide/architecture/1preface.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/1preface.tex 2010-02-08 13:11:40 UTC (rev 1683) +++ others/dokumentace/technicalGuide/architecture/1preface.tex 2010-02-08 19:46:36 UTC (rev 1684) @@ -1,7 +1,7 @@ \chapter{Předmluva} Tento dokument pojednává o architektuře projektu Elvys. Obsahuje detailní informace o všech částech systému, o důvodech, které vedly k použití dané technologie společně s úvahou -o jiných možnostech. Dále je detailně a konkrétně popsáno, jakým způsobem jednotlivé části fungují a jak mezi sebou komunikují. V textu se dost často odkazuje na požadavky uvedené v +o jiných možnostech. Dále je detailně a konkrétně popsáno, jakým způsobem jednotlivé části fungují a jak mezi sebou komunikují. V textu se poměrně často odkazuje na požadavky uvedené v \textit{Analýze}, proto je výrazně doporučeno nejdříve přečíst ji. \section{Jak číst tento dokument} @@ -17,9 +17,9 @@ \section{Úvod} Vzhledem k tomu, že původní zadání projektu bylo velmi obecné (``náhrada papírové vývěsky'', viz kapitola \textit{Motivace} v \textit{Analýze}) a řada požadavků vyplynula až -později, je na místě vysvětlit základní rozhodnutí pro výběr daných technologií. +později, je na místě vysvětlit základní rozhodnutí pro výběr daných technologií, které zásadně ovlivnili vývoj celého projektu. -\subsection{Volba formátu dat} +\subsection{\label{data_format}Volba formátu dat} Jedním ze základních rozhodnutích byla volba formátu zobrazitelných dat. @@ -27,10 +27,10 @@ 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é 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 hlavně do něj dnes lze +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 takřka bezchybně exportovat snad každý dokument. V programech, které export do PDF nepodporují, lze export simulovat pomocí PDF tiskárny, např. PDF Creator \cite{pdfcreator}. -\subsection{Forma a OS klientské aplikace} +\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. Modified: others/dokumentace/technicalGuide/architecture/6clientapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-08 13:11:40 UTC (rev 1683) +++ others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-08 19:46:36 UTC (rev 1684) @@ -1,21 +1,59 @@ \chapter{\label{clientapp}Klientská aplikace} -Proc je to vubec C++ a Qt. -podporovane typy +Klientská aplikace projektu běžící na jednotlivých kioscích slouží k zobrazování naplánovanému obsahu uživatelům. Důvody, proč se jedná o vlastní aplikaci a nebyl +využit např. webový prohlížeč jsou uvedeny v kapitole \ref{client_form}. +Volba programovacího jazyka byla dána především požadavkem na výkon, paměťovou náročnost výsledné aplikace a existenci knihoven pro zobrazovaní PDF, videí v různých formátech, + případně dalších formátů do budoucího vývoje projektu. Požadavkem také bylo podpora objektově orientovaného programovaní jako dnešní standard pro implementaci rozsáhlejších projektů. +S přihlédnutím na znalost programovacího jazyka C++ autory projektu a vhodnosti, co se týče požadavků bylo zvoleno právě C++. +Jako framework pro uživatelské rozhraní byl zvolen framework Qt, který byl v březnu 2009 vydán pod licencí LGPL. Tímto se z finančního hlediska stal stejně výhodný jako frameworky wxWidgets +a GTK. Všechny tyto frameworky jsou multiplatformní. Nakonec byl zvolen framework Qt a to především z důvodu komplexnosti (http, ftp spojení, napojení na databázi, podpora vláken, +OpenGL atd.), perfektní dokumentaci, počtu projektů postavených nad tímto frameworkem a možnosti placené podpory. V neposlední řadě je plusem také komerční vývoj tohoto produktu. + +\section{Podporované formáty} + Klientská aplikace podporuje zobrazování následujících typů dat, jednotlivým bodlm se pak věnují příslušné podkapitoly. + \begin{itemize} + \item \textbf{PDF dokumenty} + \item \textbf{Video} + \item \textbf{Statický text} + \item \textbf{Dynamický text} + \end{itemize} + + \subsection{PDF dokumenty} + \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). + + 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é + 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} + Vzhledem k tomu, že tvorba obrázku v daném rozlišení z PDF souboru je poměrně náročná operace, bylo rozhodnute 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} + + vicevlaknove, pomale, sprava pameti...cachovani + + \subsection{Podpora videa} + + prehravani...phonon, kodeky + \section{Konfiguracni soubory} \section{Komunikace} -\section{PDF knihovna} -vicevlaknove, pomale, sprava pameti...cachovani -\section{Podpora videa} - -prehravani... - \section{Statistiky} + Kiosek periodicky odesíla statistiky o svém provozu a používání na server, kde jsou zpracovávány. \subsubsection{Typu statistik} \begin{itemize} \item začátek a konec stahování nového dokumentu (\verb!download!) @@ -23,7 +61,7 @@ \item zvětšení dokumentu a jeho zmenšení na původní rozměr (\verb!detail!) \end{itemize} - ....jen u těch typů dokumentů, kde to má smysl, tj. tyto statistiky nejsou vedeny pro dynamický a statitický text. + Tyto události jsou zaznamenávány jen pro typy dokumentů \verb!PDF dokument!, \verb!video! a \ref{TODO_warning}: dalsi dokumenty. \subsubsection{Uchovávání statistik} Z požadavků na robustnost uchovávání statistik na kiosku vyplynul požadavek statistiky nejprve @@ -33,15 +71,15 @@ 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 změnit databázový engine jednoduchou úpravou aplikace. - {\bf TODO} Schema DB? + {\bf TODO} Schema DB \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án odezva serveru, odesílání je pak případně opakováno. - Způsub odesílání jednotlivých druhů statistik se však liší. + 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 ko nce dané události. Typ \verb!exhibit! je na server odesílán nekompletní, párování těchto záznamů je přenecháno + 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í. Modified: others/dokumentace/technicalGuide/architecture/9tools.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/9tools.tex 2010-02-08 13:11:40 UTC (rev 1683) +++ others/dokumentace/technicalGuide/architecture/9tools.tex 2010-02-08 19:46:36 UTC (rev 1684) @@ -11,4 +11,6 @@ \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{poppler} \textbf{XpdfRasterizer} http://poppler.freedesktop.org/ + \bibitem{xpdfrasterizer} \textbf{XpdfRasterizer} http://www.glyphandcog.com/XpdfRasterizer.html \end{thebibliography}