[elvystrac] r1711 - Notes from Mr. Kopecky incorporated.

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Thu, 11 Feb 2010 18:26:40 +0100

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}


Other related posts:

  • » [elvystrac] r1711 - Notes from Mr. Kopecky incorporated. - elvys