[elvystrac] r1684 - some more documentation

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Mon, 8 Feb 2010 20:46:36 +0100

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}


Other related posts:

  • » [elvystrac] r1684 - some more documentation - elvys