[elvystrac] r1859 - some more kiosk architecture

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Wed, 24 Feb 2010 22:07:38 +0100

Author: JirkaH
Date: 2010-02-24 22:07:38 +0100 (Wed, 24 Feb 2010)
New Revision: 1859

Added:
   others/dokumentace/technicalGuide/architecture/imgs/kiosk_db.png
Modified:
   others/dokumentace/technicalGuide/architecture/6clientapp.tex
Log:
some more kiosk architecture


Modified: others/dokumentace/technicalGuide/architecture/6clientapp.tex
===================================================================
--- others/dokumentace/technicalGuide/architecture/6clientapp.tex       
2010-02-24 20:57:00 UTC (rev 1858)
+++ others/dokumentace/technicalGuide/architecture/6clientapp.tex       
2010-02-24 21:07:38 UTC (rev 1859)
@@ -47,6 +47,8 @@
     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.
 
+    TODO nejake schema, jak to funguje!
+
    \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ší,
@@ -56,7 +58,8 @@
     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
+    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 přizpůsobuje až na 
maximální možnou velikost,
+    poté jsou již zobrazeny posuvníky. 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.
@@ -70,10 +73,23 @@
     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{Prezentace}
-    
+  \subsection{PDF prezentace}
+    \subsubsection{Knihovna a renderování}
+    Prezentace jsou velmi podobné PDF dokumentům popsaným výše. Využívají 
stejnou knihovnu i vícevláknový model načítání s cachováním. Jediným rozdílem 
je předgenerování vždy předcházející a nasledující
+    strany zobrazeného dokumentu tak, aby mohla daná strana rychle zobrazena.
 
-  \subsection{Podpora videa}
+    \subsubsection{Zobrazení v náhledech a zvětšování}
+    Prezentace již v náhledu sama rotuje ve zvoleném intervalu. Zobrazena je 
vždy jen jedna strana dokumentu. Po dosáhnutí poslední stránky prezentace je 
prezentace spouštěna znovu. Měnění stran je 
+    doprovázeno efektem prolínaní stran, který je umožněn včasným přednačtením 
další strany. \\
+    Při zvětšení, které je ovšem omezeno jen na jednu iteraci, je rotování 
zastaveno. Uživatel pak má možnost pomocí tlačítek měnit strany prezentace, 
pořád ale platí, že je zobrazena vždy jedna celá strana.
+    Při neaktivitě uživatele je zvětšený dokument automaticky změnšen. Při 
zvětšení, podobně jako u PDF dokumentů, nelze přepínat mezi kategoriemi ani 
panely. Pozdrženy jsou také veškéré akce, které by měli
+    za následek skrytí zvětšené prezentace. Cílem bylo nevyrušit uživatele v 
prohlížení.
+
+    \subsubsection{Možnosti nastavení}
+    Podobně jako u PDF dokumentů lze nastavit seznam stran, které se mají 
zobrazovat. Nelze však nastavit první strana, vzhledem ke kruhovému rotování to 
však ani nemá smysl. Dále lze nastavit perioda, 
+    ve které mohou stránky rotovat. Toto nastavení se provádí pomocí webové 
aplikace.
+
+  \subsection{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 
@@ -88,12 +104,12 @@
 
     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 
+    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, panely. 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 
+    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 pak 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.
 
@@ -127,10 +143,10 @@
                \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!)
-               \item zvětšení dokumentu a jeho zmenšení na původní rozměr 
(\verb!detail!)
+               \item zvětšení dokumentu a jeho zmenšení na původní rozměr 
(\verb!detail!)              
                \end{itemize}
 
-             Tyto události jsou zaznamenávány jen pro typy dokumentů \verb!PDF 
dokument!,  \verb!video! a \ref{TODO_warning}: dalsi dokumenty.
+             Tyto události jsou zaznamenávány jen pro typy dokumentů \verb!PDF 
dokument!,  \verb!video! a \ref{TODO_warning}: další dokumenty.
                
        \subsubsection{Uchovávání statistik}
                Z požadavků na robustnost uchovávání statistik na kiosku 
vyplynul požadavek statistiky nejprve
@@ -140,16 +156,26 @@
                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.
 
-               Databáze se skládá z jediné tabulky, jejíž schéma zobrazuje 
obrázek 
+               Databáze se skládá z jediné tabulky, jejíž schéma zobrazuje 
obrázek \ref{kiosk_dbschema}.
 
+                \begin{figure}[!h]
+                 \label{kiosk_dbschema}
                  \begin{center} 
-%                \includegraphics[width=1\textwidth]{imgs/kiosk_dbschema.png}
+                 \includegraphics[width=0.4\textwidth]{imgs/kiosk_db.png}      
          
+                  \caption{Databázové schéma tabulky statistik}
                 \end{center}
+                \end{figure}
 
-       \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 správném ukončení aplikace je zajištěno, že budou uloženy 
záznamy o konci zobrazení dokumentů. 
+               Při startu aplikace jsou z databáze vymazány všechny 
nekompletní záznamy s vyjímkou záznamů \verb!exhibit!. Nekompletní 
\verb!exhibit! záznamy jsou ponechány v případě, že
+               mají nastaven konec události, viz \ref{starts_sending}.
+
+       \subsubsection{Odesílání statistik\label{stats_sending}}
+               Statistiky jsou odesílány v pravidelných, konfigurovatelných 
intervalech, dále pak při startu aplikace.
                Při odesílání je kontrolována odezva serveru, odesílání je pak 
případně opakováno.
 
+               Při startu se aplikace pokusí odeslat všechny kompletní (s 
vyjímkou \verb!exhibit! záznamů, viz výše) statistiky, které v databázi zbyly z 
minulého běhu aplikace.              
+
                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. 
@@ -159,12 +185,22 @@
                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í.
 
+               Toto chování sebou však přínáší potenciální problém v podobě 
neukončených událostí na serveru, v 
+               případě problémů na straně kiosku. Aplikace proto při startu 
pošle speciální událost \verb!elvys_restart!, která v sobě obsahuje čas 
posledního běhu programu. 
+               Tento čas je brán jako čas poslední modifikace zvoleného 
souboru, který je v pravidelných intervalech aplikací měněn. Server pak všechny 
neukončené \verb!exhibit! události
+               ukončí s tímto datem.
 
+
 \section{Vzhled}
+K definování vzhledu aplikace je využito stylování, které je dostupné v Qt. To 
umožňuje definovat vzhled aplikace v samostatném souboru mimo kód aplikace. To 
uživatelům přináčí možnost měnit vzhled aplikace,
+což u klasických aplikací není možné. Syntaxe stylování je stejná jako u css 
souborů webových stránek. Rozdílem jsou samozřejmě různé \verb!selectory! 
různých objektů v aplikaci 
+(např. aktivní záložka v QTabWidget). \\
 
-\section{Screenshoty}
+Je nutné však poznamenat, že k datu odevzdání projektu nebylo používání stylů 
zdaleka bezchybné a ne všechny operace, které by dle dokumentace měly fungovat, 
v reálu
+opravdu měnily požadovaný vzhled.
 
+\section{Snímky obrazovky}
+Kiosek pravidelně
 \section{Správa souborů}
   \subsection{Stahování souborů}
-  \subsection{Správa úložiště}
-
+  \subsection{Správa úložiště}
\ No newline at end of file

Added: others/dokumentace/technicalGuide/architecture/imgs/kiosk_db.png
===================================================================
(Binary files differ)


Property changes on: 
others/dokumentace/technicalGuide/architecture/imgs/kiosk_db.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Other related posts:

  • » [elvystrac] r1859 - some more kiosk architecture - elvys