Author: JirkaH Date: 2010-02-08 09:43:49 +0100 (Mon, 08 Feb 2010) New Revision: 1681 Added: others/dokumentace/technicalGuide/architecture/4webapp.tex others/dokumentace/technicalGuide/architecture/5layoutdesigner.tex others/dokumentace/technicalGuide/architecture/6clientapp.tex others/dokumentace/technicalGuide/architecture/7communication.tex others/dokumentace/technicalGuide/architecture/8deployment.tex others/dokumentace/technicalGuide/architecture/9tools.tex Removed: others/dokumentace/technicalGuide/architecture/4software.tex others/dokumentace/technicalGuide/architecture/5deployment.tex others/dokumentace/technicalGuide/architecture/6tools.tex Modified: others/dokumentace/technicalGuide/analysis/1preface.tex others/dokumentace/technicalGuide/analysis/6kioskFunctional.tex others/dokumentace/technicalGuide/architecture/0architecture.tex others/dokumentace/technicalGuide/architecture/1preface.tex others/dokumentace/technicalGuide/architecture/2hardware.tex others/dokumentace/technicalGuide/architecture/3management.tex Log: architecture and analysis documentation Modified: others/dokumentace/technicalGuide/analysis/1preface.tex =================================================================== --- others/dokumentace/technicalGuide/analysis/1preface.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/analysis/1preface.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -20,7 +20,7 @@ Ta bude umožňovat větší míru interaktivity, umožní zobrazit statický i dynamický obsah, který se bude dát plánovat na tyto kiosky vzdáleně. Způsob a možnosti využítí jsou popsány v kapitole \ref{motivation}, ze -kterých pak vyplývají základní požadavky projektu. +kterých pak vyplývají základní požadavky na realizaci. \section{Motivace\label{motivation}} \subsection{Úřední deska} @@ -33,9 +33,9 @@ obce spolu s informacemi, na jaké (webové i realné) adrese se dají vyvěšené dokumenty prohlížet. -V praxi je toto řešeno několika (ve větších městech i desítkami) vývěskami, kde -jsou fyzicky za sklo umisťovány vytištěné dokumenty. Vzhledem k omezené ploše -vývěsky není vyjímkou, že jsou vyvěšeny jen titulní strany dokumentů s +V praxi je toto řešeno pomocí několika vývěsek (ve větších městech i desítkami), +kde jsou fyzicky za sklo umisťovány vytištěné dokumenty. Vzhledem k omezené +ploše vývěsky není vyjímkou, že jsou vyvěšeny jen titulní strany dokumentů s důležitými (zákonem stanovenými) údaji, dokumenty jsou vytištěné malými písmeny či jsou různě překládány tak, aby se co nejvíce využil prostor vývěsky. Občan potom pro kompletní obsah dokumentu musí navštívit přislušný úřad, kde jsou @@ -45,24 +45,24 @@ Dle zkušeností úřednic z magistrátu v Přerově, které mají fyzické vyvěšování dokumentů na starosti, je mnohdy samotné vyvěšování poměrně náročná práce. Bez -ohledu na počasí musí být daný dokument bezokladně vyvěšen, není tedy vyjímkou, -kdy úřednice musí v dešti či mrazu fyzicky dojít k několika vývěskám. Konkrétně +ohledu na počasí musí být daný dokument bezodkladně vyvěšen, není tedy vyjímkou, +že úřednice musí v dešti či mrazu fyzicky dojít k několika vývěskám. Konkrétně v Přerově mají zkušenosti i s vosím hnízděm uvnitř vývěsky.\\ Pro použití elektronické vývěsky tedy vyplývá několik požadavků. Musí umět -zobrazit dokumenty v nezměnitelné podobně (jen pro čtení) různých rozměrů, kdy +zobrazit dokumenty v nezměnitelné podobě (jen pro čtení) různých rozměrů, kdy půjde vidět titulní strana s důležitými informacemi. Navíc by bylo vhodné, aby se dalo v dokumentu na požádání listovat, případně požadovanou část zvětšit. Odpadne tak část problému s místem a malým písmem. -Dále je nutné umět zobrazit popisky různé velikosti a barvy, kdy bude např. +Dále je nutné umět zobrazit nápisy různé velikosti a barvy, kdy bude např. zobrazen název příslušného úřadu. Vzhledem k potenciálně velkému počtu dokumentů, které je nutné vyvěšovat by měla -elektronická verze umožňovat řadit dokumenty do více záložek, čímž se dosáhne -dalšího zvětšení možného počtu dokumentů na jedné vývěsce. Dokumenty, respektive -celé panely, by pak měly být řazeny podle kategorií (písemnosti, exekuce apod.), -což přinese větší přehlednost. +elektronická verze umožňovat řadit dokumenty do více záložek (panelů), čímž se +dosáhne dalšího zvětšení možného počtu dokumentů na jedné vývěsce. Dokumenty, +respektive celé panely, by pak měly být řazeny podle kategorií (písemnosti, +exekuce apod.), což přinese větší přehlednost. Občan by jistě také ocenil možnost vyhledávat (např. své jméno) mezi vyvěšenými dokumenty. @@ -83,20 +83,21 @@ Elektronická verze v tomto případě umožní řadit nabízené dokumenty např. dle města nebo dle typu (byty, domy, parcely) do panelů. Umožní také po zvětšení -zobrazit více informací o dané nemovitosti s více fotkami apod. Musí být možnost -vzdáleně naplánovat stejný dokument na více vývěsek. Bude tak možno rychle a -levně reagovat na novou nabídku. Svítící obrazovka navíc přítahne pozornost -kolemjdoucích. Realitní kanceláře pak může zajímat návštěvnost (zobrazení -detailu) jednotlivých kiosků, dokumentů či kategorií dokumentů (byty v Praze 5). +zobrazit více informací o dané nemovitosti s více fotkami apod. Dále by byla +vhodná možnost vzdáleně naplánovat stejný dokument na více vývěsek. Bude tak +možno rychle a levně reagovat na novou nabídku. Svítící obrazovka navíc přítahne +pozornost kolemjdoucích. Realitní kanceláře pak může zajímat návštěvnost +(zobrazení detailu) jednotlivých kiosků, dokumentů či kategorií dokumentů (byty +v Praze 5). Pro realitní kanceláře by dále mohlo být zajimavé zobrazení textu jedoucího z jedné strany obrazovky na druhou, obsahující např. upozornění na novou nabídku či jiné novinky. \subsection{Cestovní kanceláře} -Cestovní kanceláře dnes vyvěšují informace o svých zájezdech, různé akce apod. -zpravidla za výlohou svých poboček. Tyto nabídky se poměrně často mění (last -minute) a proto musí zaměstnanci průběžně vylepovat nové nabídky, změny cen -apod.\\ +Cestovní kanceláře dnes vyvěšují informace o svých zájezdech, různých akcích +apod. zpravidla za výlohou svých poboček. Tyto nabídky se poměrně často mění +(last minute) a proto musí zaměstnanci průběžně vylepovat nové nabídky, změny +cen apod.\\ Při použití elektronické vývěsky bude možno využít všech výhod uvedených výše. Zajimavým lákadlem cestovních kancelaří by pak mohla být možnost přehrávání @@ -106,9 +107,10 @@ \subsection{Shrnutí motivace} Uvedené příklady jistě nejsou vyčerpávající a neuvádějí všechny možná použítí -této elektronické vývěsky. Z příkladů však vyplývá hned několik požadavků na -funkcionalitu celého systém. V celém dokumentu jsou pak tyto příklady používany, -aby umožnily čtenáři lepší pochopení problematiky. +této elektronické vývěsky. Z příkladů však vyplývá několik možných požadavků na +funkcionalitu celého systému. Tyto požadavky jsou níže analyzovány. \\ +V celém dokumentu jsou pak tyto příklady používany, aby umožnily čtenáři lepší +pochopení problematiky. \section{Obecné požadavky řešení} \begin{itemize} Modified: others/dokumentace/technicalGuide/analysis/6kioskFunctional.tex =================================================================== --- others/dokumentace/technicalGuide/analysis/6kioskFunctional.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/analysis/6kioskFunctional.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -4,12 +4,16 @@ Podporované formáty dat, které kiosek bude zobrazovat jsou popsány v kapitole \ref{content_type_definition}. \section{Zobrazení rozvržených dokumentů na obrazovce} -Obrazovka kiosku je zobrazena na obrázku \ref{scheme_kiosk} v kapitole \ref{terms_kiosk}. Data jsou zobrazena v jednotlivých \textit{panelech}, které jsou tématicky seskupeny do \textit{kategorií}. +Obrazovka kiosku je zobrazena na obrázku \ref{scheme_kiosk} v kapitole \ref{terms_kiosk}. Data jsou zobrazena v jednotlivých \textit{panelech}, které jsou tématicky seskupeny do \textit{kategorií}. -Dokument na aktivní \textit{pozici} bude možno zvětšit, viz \ref{enlargement}. +Dokument na aktivní \textit{pozici} bude možno zvětšit, viz \ref{enlargement}, aktivní pozice se bude dát měnit pomocí připojených tlačítek(šipek). \subsection{Kategorie a panely} -Mezi \textit{kategoriemi} se bude možné přepínat pomocí tlačítek, stejně tak mezi jednotlivými panely v kategorii. Ve webové aplikaci bude možno nastavit, zda a v jaké periodě se mají jednotlivé panely sami střídat - pokud žádný uživatel nemačká tlačítka. +Mezi \textit{kategoriemi} se bude možné přepínat pomocí tlačítek, stejně tak mezi jednotlivými panely v kategorii. Jména panelů budou odvezeny od názvů kategorií spolu s pořadovým číslem. +Tedy např. pro kategorii `Byty` budou panely `Byty 1`, `Byty 2`, atd. Neaktivní panely, tj. takové panely, na kterých nejsou zobrazeny žádné dokumenty nebudou zobrazeny. +Vždy ale bude zobrazen minimálně jeden panel, ikdyž bude prázdný, tj. budou zobrazeny jen prázdné dokumenty, viz níže. +Ve webové aplikaci bude možno nastavit, zda a v jaké periodě se mají jednotlivé panely sami střídat, pokud je panel neaktivní, tj. pokud žádný uživatel nemačká tlačítka. +Automatické i ruční přepínaní panelů však nebude možné pokud je některý dokument zvětšen. \subsection{Zobrazení různých typů dat} \subsubsection{statický text} Statický (nepohybující se) text bude zobrazen vždy v takové velikosti, aby se celý text vešel do dané pozice. Uživatel může nastavit velikost @@ -23,25 +27,33 @@ typicky nebude zobrazena celá, jen její vrchní část. Vzhledem k tomu, že se nepočítá s použitím dotykové obrazovky, myši či trackballu, nebude uživateli umožněno používat odkazy apod. \subsubsection{video} Video bude přehráváno tak, aby nedocházelo k jeho deformaci a zároveň aby byly zachovány omezení velikosti dané rozměry \textit{pozice}, podobně - jako u PDF dokumentů. Bude možno nastavit, zda má být přehráváno opakovaně, či přehráno až při zvětšení. Při této druhé možnosti by pak byl zobrazen definovaný (ve webové aplikaci) snímek videa. + jako u PDF dokumentů. Bude možno nastavit, zda má být přehráváno opakovaně a přehrávání má začít automaticky, či přehráno až při zvětšení. + Při této druhé možnosti by pak byl zobrazen definovaný (ve webové aplikaci) snímek videa. \subsubsection{prázdná pozice} Pozice, na které není momentálně naplánován žádný obsah bude zobrazena jako prázdný rámeček daných rozměrů. \subsection{Zvětšování dokumentů\label{enlargement}} -Typy dokumentů \textit{PDF}, \textit{video} a \textit{webová stránka} bude možno na kiosku zobrazit ve zvětšené verzi. Po kliknutí na příslušné tlačítko dojde k zvětšení celé první strany dokumentu na celou obrazovku (či její část, v závislosti na rozměrech dokumentu). V \textit{PDF} dokumentech navíc bude možno listovat mezi dalšími stránkami a zvětšovat části dokumentu. Při tomto dalším zvětšování již nedochází k změně velikosti pozice. Zvětšený dokument se při nečinnosti (tuto dobu bude možné nastavit) sám zmenší na původní velikost. Nečinností je zde míněno nemačkání žádných tlačítek. Uživatel samozřejmě bude mít možnost zmenšit dokument sám pomocí příslušného tlačítka. +Typy dokumentů \textit{PDF}, \textit{video} a \textit{webová stránka} bude možno na kiosku zobrazit ve zvětšené verzi. Po kliknutí na příslušné tlačítko dojde k zvětšení celé první strany dokumentu na celou obrazovku (či její část, v závislosti na rozměrech dokumentu). + V \textit{PDF} dokumentech navíc bude možno listovat mezi dalšími stránkami a zvětšovat části dokumentu. Při tomto dalším zvětšování již nedochází k změně velikosti pozice. + Zvětšený dokument se při nečinnosti (tuto dobu bude možné nastavit) sám zmenší na původní velikost. Nečinností je zde míněno nemačkání žádných tlačítek. + Uživatel samozřejmě bude mít možnost zmenšit dokument sám pomocí příslušného tlačítka. -Podobné chování bude i pro \textit{video} dokumenty, u nich však nepůjde zvětšit část videa. K automatickému zmenšení videa dojde při přehrání celého obsahu. +Podobné chování bude i pro \textit{video} dokumenty, u nich však video nepůjde již dále zvětšovat, nebude tedy možné zvětšit jen část videa. K automatickému zmenšení videa dojde při přehrání celého obsahu. U \textit{webových stránek} bude umožněno zvětšení na celou (či její větší část, toto bude možno nastavit) a na dané stránce poté listovat. Další zvětšení nebude možné. \section{Komunikace se serverem\label{kiosk_communication}} -Kiosek bude pravidelně komunikovat se serverem. Kiosek se tedy bude dotazovat serveru na aktuální konfiguraci, tj. \textit{rozvržení obrazovky}, datové soubory texty apod. Toto nastavení se bude ukládat do souborů, aby při restartu bylo k dispozici nějaká nastavení. Perioda opakování těchto dotazů se bude dát nastavit. Při nedostupnosti serveru kiosek zobrazí poslední známou konfiguraci. +Kiosek bude pravidelně komunikovat se serverem. Kiosek se tedy bude dotazovat serveru na aktuální konfiguraci, tj. \textit{rozvržení obrazovky}, datové soubory texty apod. + Toto nastavení se bude ukládat do souborů, aby při restartu bylo k dispozici nějaká nastavení. Perioda opakování těchto dotazů se bude dát nastavit. Při nedostupnosti serveru kiosek zobrazí poslední známou konfiguraci. -Dále se bude kiosek serveru dotazovat na nastavení v budoucnosti, aby si případně mohl stahovat požadované datové soubory dopředu. +\section{Správa souborů\label{kiosk_file_management}} -Čas dotazování bude vždy jistým způsobem náhodný, aby nemohlo dojít k potenciálnímu zahlcení serveru více kiosky ve stejný čas. +Všechny soubory budou stahovány do dané složky. Její velikost však bude omezena (výchozím omezením bude velikost souborového systému), nepoužívané soubory se budou při dosažení daného zaplnění složky automaticky mazat. +Stahování souborů bude probíhat předem, tj. kiosek se bude pravidelně serveru dotazovat na seznam souborů, které bude muset v budoucnosti (např. jeden den) zobrazovat. Předejde se tak +zdržení při zobrazovní obsahu, který ještě není stahnutý. Konkrétní čas stahování souborů bude vždy jistým způsobem náhodný, aby nemohlo dojít k potenciálnímu zahlcení serveru více kiosky se stejným plánovaním. + \section{Konfigurační soubory} Aplikace bude mít dva druhy konfiguračních souborů. Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -58,13 +58,16 @@ \include{1preface} \include{2hardware} \include{3management} -\include{4software} -\include{5deployment} - +\include{4webapp} +\include{5layoutdesigner} +\include{6clientapp} +\include{7communication} +\include{8deployment} %programove nastroje, patri to sem vubec? -\include{6tools} +\include{9tools} + \listoffigures \clearpage \listoftables Modified: others/dokumentace/technicalGuide/architecture/1preface.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/1preface.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/architecture/1preface.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -1,7 +1,63 @@ \chapter{Předmluva} -%O cem je tenhle dokuemnt +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 +\textit{Analýze}, proto je výrazně doporučeno nejdříve přečíst ji. \section{Jak číst tento dokument} % ze nejdriv je precist overvirew +Formatování textu.... +V kapitole ... +V kapitole ... + +Dalsi podrobnosti jsou v kapitole... + + +\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í. + +\subsection{Volba formátu dat} + +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é +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 + 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} + +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. + +\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á. + + 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. + + \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 + 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. + + \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í + 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}.\\ + +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. +O více detailech pojednává kapitola \ref{TODO}. \ No newline at end of file Modified: others/dokumentace/technicalGuide/architecture/2hardware.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/2hardware.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/architecture/2hardware.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -1,7 +1,50 @@ \chapter{Hardware} -%popsat moznosti pouziti hw, platformy, upgradovatelnost a proc je to na Mini-ITX, PC architekture vubec... +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: -\section{Tlačítka} -Kiosek bude 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. +\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 + č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í. + \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. + +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ě +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. + +Hlavně kvůli ceně bylo nakonec upuštěno od procesoru VIA, který je jinak ideálním procesorem pro toto použití. Místo něj byl použit klasický procesor Intel Celeron, který +v nečinosti není tepelně náročný. + +Dalším důležitým aspektem je také možnost ovládání ventilátorů. Zabrání se tak zbytečnému víření prachu v celé skříni. V zimním období jsou ventilátory dokonce kontraproduktivní, protože +víří ledový vzduch a počítač i obrazovku až příliš ochlazují. Z testů prototypu v mrazech -20$^\circ$ C byl rozdíl teploty uvnitř skříně mezi zapnutými a vypnutými větráky cca 10$^\circ$ C. + +Nakonec byla použita následující sestava: + +\begin{itemize} +\item \textbf{Základní deska} +\item \textbf{Procesor} +\item \textbf{Paměť} +\item \textbf{Pevný disk} +\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.\\ + +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. Modified: others/dokumentace/technicalGuide/architecture/3management.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/3management.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/architecture/3management.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -1,10 +1,77 @@ -\chapter{Správa a monitoring} +\chapter{NEsoftware} -%popsat, ze to musi byt bezpecne a udrzovatelne, ze teoreticky to muze jet na ruznych HW apod... -%celkovy feeling, zadne rozdeleni na analyzu a design +%VPN atd.p -\section{Správa} -% na cem to bezi, proc to nam bezi, ajke byly pozadavkyu +\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é +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ů.\\ -\section{Monitorování} -% musi to byt skalovatelne, posilat maily, kreslit grafy, pripadne posilat SMS... +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 + 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 + 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 + definovat, že je nutné jej zapsat do souboru /etc/passwd apod. Více informací je k dispozici na \cite{puppet}. +\end{itemize} + +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 +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 +konfiguraci pro cfengine ukazující na správný server a pak jen spustit agenta, který provede všechny potřebné instalace od nastavení X serveru, přes OpenVPN klienta až po instalaci samotné +aplikace projektu Elvys. + +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 +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í} + +Monitorování stavu jednotlivých kiosků je možná až překvapivě důležité. Včasné rozpoznání problému či možnost zpětné kontroly sledovaných metrik při analyzování problémů šetří čas i peníze, +navíc se pochopením problému může předejít jeho opakování. + +Na poli monitorování existuje celá řada produktů. V rámci snahy používat především open source projekty byly zvažovány následující systémy, které splňují požadavky uvedené v \textit{Analýze}. +Podobně jako v \ref{management} byly brány v potaz zkušenosti jednotlivých výpočetních center v rámci projektu LCG. + +\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. + 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, + také poměrně velké výpočetní nároky na server v poměru na počet monitorovaných metrik. + \item \textbf{Cacti} - nástroj určen především k SNMP monitorování síťových zařízení, lze však použít i k monitorování serverů. Cacti využívá jako skladiště dat databázi RRD, z čehož těží při + kreslení grafů jednotlivých metrik. Problémem jsou však malé možnosti konfigurace (např. změna monitorovacího intervalu) a špatná podpora systému varování při + překročení nastavených prahů. + \item \textbf{Nagios} - jedná se o známé standardní monitorovací řešení s dlouhou historií. Naprosto odpovídá všem požadavkům, navíc existuje velké množství rozšíření, které ještě vylepšují + jeho funkčnost. Nagios také v základní instalaci nekreslí grafy jednotlivých metrik - existuje však celá řada nástaveb, které tento problém řeší. +\end{itemize} + +Nejenom vzhledem ke zkušenostem autorů se systémem Nagios, se stal finálním řešením pro monitoring. V rámci projektu bylo nasazeno i monitorování pomocí Zabbixu, v praxi se však ukázalo jako +ménně použitelné. + +TODO : popsat jeste nejak co vse se pres nagious kontroluje + +\section{\label{security}Bezpečnost} + +Dalším požadavkem na projekt byla bezpečnost komunikace mezi kioskem a serverem, respektive bezpečnost komunikace vůbec. Také vzhledem k požadavku možnosti přímého připojení na daný uzel, který +vyplývá z kapitol \ref{management} a \ref{monitoring} bylo rozhodnuto vytvořit virtuální privátní síť všech kiosků a použitých serverů. + Deleted: others/dokumentace/technicalGuide/architecture/4software.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/4software.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/architecture/4software.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -1,404 +0,0 @@ -\chapter{Software} -%asi jeste nejake kecy - -\section{Webová aplikace} - %TODO rozdeleni na subsections, mozna dalsi includy? - % rozdeleni na moduly, jeden z nich je statistika, dalsi layoutdesigner... - - \subsection{Přehled} - todo: napsat neco o tom, ze to je rozdelene do na sobe nezavislych webovych modulu webServer2 a dispatcher. Taky se zminit o appletu - - - \subsection{Rozdělení do modulů, sdílená aplikační logika} - - na to taky navazuje připravenost na napsání dalšího modulu- pro WS-API, přesunout k sobě. Odkaz na sekci, kde je popsáno, jak tu aplikacni logiku mame vlastne oddelenou...\\ - Build je prováděn pomocí ANT-skriptů, které jsou popsány v \ref{build_ant}\\ - - \subsection{Bezpečnost na serveru} - Popsat, jak je řešena autentizace, autorizaci radsi nezminovat, popsat SSL: - \subsubsection{webServer2} - ten SSL zatim nema - \subsubsection{dispatcher} - tenhle taky ne - \subsection{Popis komunikace serveru} - \subsubsection{webServer2} - FF, IE8, nutnost JRE pro applet - \subsubsection{webAPI??} - viz. dale - \subsubsection{dispatcher} - komunikace mezi kiosky a serverem - -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% WebServer2 obecně -%%%%%%%%%%%%%%%%%%%%%%%%%% - \subsection{WebServer2} - popsat architekturu weboveho serveru - JSF+Richfaces, zavislosti,... - - \subsection{popis datového modelu} - -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% DB, ORM -%%%%%%%%%%%%%%%%%%%%%%%%%% - \subsection{popis 'ORM' frameworku Hibernate}\label{hibernate} - - - \subsection{nastavení hibernate} - \begin{itemize} - \item vygenerování .hbm.xml mapování z DB modelu - \item ruční úprava(přidání dědičnosti, doplnění vlastního kódu) - \item generování .java souborů z .hbm.xml souborů - \item používání .java souborů - \end{itemize} - - \subsection{popis provádění změn v DB modelu} - Existuje více prostředí, na kterých běží webová aplikace a vzhledem k používání tohoto řešení již v průběhu vývoje - je kladen důraz na zachování starých dat (v co největším rozsahu) při přechodu na novou verzi systému. - - Tím pádem je potřeba po každé změně datového modelu nutno přemigrovat starý datový model a data v něm uložená - do podoby definované novým datovým modelem. Ve většině případů bude tato migrace dat realizována SQL skriptem, - v případě potřeby silnějšího prostředku se migrace bude řešit individuálně. - - \subsubsection{Čistá DB vs. Migrovaná DB} - čistá je vytvořena pomocí vytvářecího skriptu - \subsubsection{Soulad čisté a migrované DB (koherence?)} - do migrované se jednoduše může zanést chyba, migrace se musí kontrolovat oproti čisté DB. - =popsat tady postup - \subsection{Používání Hibernate Session v kódu} - -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% GUI -%%%%%%%%%%%%%%%%%%%%%%%%%% - \subsection{GUI- JSF, Richfaces,..} - \subsubsection{lokalizace} - \paragraph{lokalizace labelu} - \paragraph{lokalizace chybových hlášek} - \subsection{vlastní zobrazovací komponenty} - \subsection{lokalizace} - Aplikace webServer2 podporuje lokalizaci popisků na webu do mnoha jazyků. Tato lokalizace může být užitečná, pokud se systémem pracují lidé mluvící jinou řečí. - Každý uživatel (ať už o tom ví, či ne), má ve svém internetovém prohlížeči nastaven světový jazyk, pomocí kterého se prohlížeč identifikuje webovému serveru. - Server tak může nabídnout anglické popisky člověku, který má v prohlížeči nastaven anglický jazyk komunikace a na druhé straně české popisky člověku, který má nastaveno české prostředí prohlížeče. - - Modul webServer2 podporuje vícejazyčnou komunikaci založenou na výše zmíněném principu, nicméně lokalizace webové aplikace byla zatím napsána jenom pro český jazyk. - Použití se zatím předpokládá v česky hovořícím prostředí, v případě požadavku je možné lokalizaci pro jiný jazyk vytvořit. - - Pro lokalizované popisky jsou umístěny v souboru {\em labels\_xx.properties}, kde {\it xx} značí zkratku jazyka, kterým se identifikuje webový prohlížeč serveru (cs pro češtinu, en pro angličtinu,..). - Systém potom vyhledá požadovaný soubor labels\_xx.properties a použije ho pro vypisování popisek. - - -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Plánování -%%%%%%%%%%%%%%%%%%%%%%%%%% - \subsection{Plánování obsahu kiosku} - tady popisu planovaci komponentu. zminim casti, ktere jsou zavisle na typu planovani (ikdyz to sem zdanlive nepatri, ulehcim ctenari vyznani se v plugovatelnosti typu) - - zavisle casti jsou:\\ - tooltip\\ - modalni okno\\ - - tady popisu modalni okno planovaci komponenty - \begin{itemize} - \item{1.krok} V prvním kroku si uživatel v tomto modálním okně zvolí typ dat, které budou plánovány. - Toto se bude dít s ohledem na povolené typy plánovaných dat pro danou pozici (tyto povolené typy budou specifikovány již při vytváření rozvržení zobrazení) - Seznam těchto povolených typů se získává z definice rozvržení obrazovky. - \item{2.krok} Uživateli se zobrazí možnosti nastavení zvoleného typu plánování. - \item{3.krok} Uživatel potvrdí plánování. Systém provede potřebné validace zadaných údajů a případně uživatele vybídne k opravě. - \end{itemize} - - - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Plugovatelnost typů -%%%%%%%%%%%%%%%%%%%%%%%%%% - \subsection{Rozšiřitelnost systému o nový typ plánovaných dat} -pred touto kapitolou urcite popsat: planovaci komponenta - - Jelikož bude systém umožňovat plánovat na obrazovku kiosku různé typy dat, je kladen důraz na navržení systému tak, aby - mohla být podpora pro další typ zobrazovaných dat (např. videa) jednoduchou cestou doprogramována. - \subsubsection{Nový typ plánovaných dat v databázi} - Úprava databáze je shrnuta v následujících krocích: - \begin{itemize} - \item{} \textbf{content\_type} - Přidání nového typu do tabulky \textit{content\_type}. - \item{nový potomek frame\_content} - Je také potřeba vytvořit tabulku, která bude uchovávat data plánování specifická pro nový typ. - Tabulka bude 'potomkem' (důvod popsán v kapitole věnované ORM frameworku Hibernate - \ref{hibernate}). - \item{přidání nového typu společnostem - comp\_permitted\_type} - - toto je buď možno udělat ručně, nebo z UC - \end{itemize} - - \subsubsection{Nový typ dat k uploadu} - tohle zpusobuje problemy, nemuze byt asi reseno automaticky - Kdyz se pridavalo video, tak muselo byt: - \begin{itemize} - \item{NEAUTOMATIZOVATELNE-nové tabulky v DB}vytvoren novy typ dokumentu v databazi (tabulka Video, VideoContent). Tabulka Video 'podedena' od tabulky File, tudiz ma definovane zakladni atributy - \item{NEAUTOMATIZOVATELNE-načítání dat z tabulky video v UC, které to vyžadují} (zobrazení plánování na plánovací komponentě, generování XML zprávy pro JH). Tohle načítání je snad řešeno jenom na jednom místě (PlanningBl asi) - - elvys.server.bl.planning.PlanningBLImpl: getTimelinesGeneric takhle načítá video a soubory - - načítá jednak v projektu webServer2 pro plánování - - také v projektu dispatcher pro posílání dat kiosku - \item{AUTOMATIZOVATELNE-nahrávání souborů nového typu na server} - pokud nemá společnost povoleno plánování daného typu dokumentu, tak např. ani nemůže na server nahrávat soubory, které s tímto typem dat souvisí (.avi,.mpg,..) - \item{mozna AUTOMATIZOVATELNE-vybírání souborů daného typu na serveru} - planovani, statistiky, reporty,... - - \end{itemize} - - - \subsubsection{Nový typ dat při plánováni rozvržení obrazovky} - V aplikaci LayoutDesigner není potřeba nic měnit, možnost vytváření pozic, na kterých bude povoleno plánování - nového typu je dáno pouze informací v datovém modelu webové aplikace (comp\_permitted\_type) - - \subsubsection{Nový typ dat v plánovací komponentě} - - - Základními typy plánování, které bude možno provádět budou: \textit{statický text}, \textit{dynamický text}, \textit{pdf dokument}, \textit{webová stránka}. - - Při práci s plánovací komponentou uživatel zvolí, která pozice obrazovky ho zajímá a v jakém čase a systém uživateli nabídne modální okno, - ve kterém bude probíhat konkrétní plánování. - - - Peklo je krok 2 - tam se musi zobrazit spravne gui a zvolit spravna aplikacni logika na zaklade volby jednoho stringu v kroku1. - Postup pridani videa: - \begin{itemize} - \item{Registrace jména nového typu v databázi} - \item{Vytvoření view prvku pro modální okno} - \item{Vytvoření obsahu 2. modálního okna} - \item{Vytvoření třídy obsahující logiku specifickou pro daný typ} - *BLImpl - - \item{Registrace view částí a třídy s logikou} - Pro zaregistrování částí systému souvisejících s nově přidaným typem je potřeba upravit konfigurační soubor:\\ - \textit{cz.elvys.webServer.utils.plug.}\textbf{plugins.properties} - - \textit{view.path.<jmeno\_typu>} : definuje umístění 'view prvku' (cesta s lomítky) - \textit{view.path.<jmeno\_typu>.innermodal} : definuje umístění vnitřního 'view prvku' (cesta s lomítky) - \textit{planning.business.logic.<jmeno\_typu>} : definuje umístění třídy s aplikační logikou - Např. - planning.business.logic.video=cz.elvys.webServer.toSpring.planning.impl.PlanningModalVideoBLImpl\\ - view.path.video=/secured/plug/planningModalVideo.xhtml\\ - view.path.video.innermodal=/secured/plug/planningModalVideoInnerModal.xhtml - \item{Vytvoření a registrace backing beany pro práci se specifickými daty plánování} - např.: PlanningModalVideoBean.java - dědí od: \textit{cz.elvys.webServer.beans.planningrel.plug.PlanningModalSpecBean} - musí implementovat: - \begin{itemize} - \item{getFormData()} - \item{initPlanningModalSpecBean(String formName, ContentType type)} - ContentType představuje obsah formuláře plánování - obecný předek pro každý typ - \item{initPlanningModalSpecBean(String formName, FrameContent frc)} - \item{validate()} - \end{itemize} - - Registrace se provádí úpravou souboru po vzoru bean-tříd ostatních typů v následujícím souboru: - \textit{webServer2/WebContent/WEB-INF/faces-beans-planplug.xml} - \begin{verbatim} - <managed-bean> - <managed-bean-name>planningModalUrlBean</managed-bean-name> - <managed-bean-class>cz.elvys.webServer.beans.planningrel.plug.PlanningModalUrlBean</managed-bean-class> - <managed-bean-scope>session</managed-bean-scope> - </managed-bean> - \end{verbatim} - Omezení: managed-bean-name musí být ve formátu: planningModal<Type>Bean, kde <Type> je jméno typu plánovaných dat, - které má velké první písmeno - tedy např. planningModalDocumentBean, planningModalVideoBean, .. - - \item{tooltipy na planovaci komponente} - -tooltip je potreba taky upravit - - \item{nacitani z DB} - -tohle se musi delat taky podle typu, ale nechal bych to tak, to je uz od plugovatelnosti taky docela vzdalene - - planDocumentBLImpl:68 - - - dulezite je, ze kdyz jsou s nactenim - \item{dispatcher} - odesílání DocumentConfigu není plugovatelné -> todo - \end{itemize} - - \subsubsection{Nový typ dat na kiosku} - Tady také popsat komunikaci s kioskem. - - - ta by mohla byt taky plugovatelna :O - - - \subsection{nahrávání dat na kiosek} - - \begin{itemize} - - \item{} - \item{Mazání starých dočasných dat} - autodelete=true/ false - - \end{itemize} - - - \subsection{komunikace s kioskem} - - \subsection{Archivace starých dat na serveru} - \begin{itemize} - \item{Společnosti} - - \item{Uživatelé} - - \item{Plánování} - - planovani- casem jich bude hodne - - pri odebrani kategorie - zahodit planovani, ci ne? - - pri zmene kategorie - \item{Dokumenty} - - pro každý dokument v historii musí zůstávat v tabulce záznam o tomto dokumentu - \end{itemize} - - - - - - \subsection{} - - - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Plánování -%%%%%%%%%%%%%%%%%%%%%%%%%% - \subsubsection{Skrývání panelů u plánování} - Tohle je celkem složitá věc, ještě nemáme ujasněno, jak konkrétně to budeme dělat. - - - - \subsection{Použití JH supa-dupa toolu na měření textu} - - \subsection{Rozhraní přes WebServices} - K systému v současné době není možno přistupovat přes webservices, ale... mame oddělenou BL od prezentacni vrstvy, takže je to ready.. - - \subsection{Dispatcher} - - - \subsection{Applet} - -\textbf{Komunikace mezi webovým serverem a appletem} -\\ -\\ -LayoutDesigner lze spustit pro -\begin{itemize} - \item \textbf{vytvoření nového rozvržení} - pro vytvoření nového rozvržení má applet následující vstupní parametry - \begin{itemize} - \item \textbf{companyID} identifikátor společnosti - \item \textbf{userID} identifikátor uživatelele, který s LayoutDesignerem pracuje - \end{itemize} - - \item \textbf{editaci již dříve vyvořeného rozvržení} - oproti předchozímu má navíc parametr - \begin{itemize} - \item \textbf{layoutID} identifikátor rozvržení obrazovky - \end{itemize} - -\end{itemize} -Vstupní parametr layoutID rozhoduje o způsobu spuštění appletu. - - -\paragraph{} -Dále LayoutDesigner získává od serveru následující informace pomocí zasílání HTTP POST požadavků -\begin{itemize} -\item \textbf{typy dokumentů povolené pro danou společnost} -Applet zašle identifikátor společnosti a od serveru dostane seznam typů dokumentů povolené pro tuto společnost. Každý typ bude v odpovědi uveden na samostatném řádku. -\item \textbf{podporované rozlišení obrazovek kiosků pro danou společnost} -Applet zašle identifikátor společnosti a od server mu vrátí seznam podporovaných rozlišení v následujícím formátu: -poměr a seznam rozlišení v tomto poměru oddělené mezerou, jednotlivé poměry jsou na samostaném řádku - - např. \verb#1,77 1920x1080 1200x675# -\end{itemize} - -Ukládání rozvržení na server i načítání rozvržení pro editaci probíhá také pomocí HTTP POST požadavků. -\begin{itemize} -\item \textbf{uložení rozvržení na server} -LayoutDesigner zašle serveru identifikátor společnosti a uživatele a ukládaný layout ve formátu xml řetězce. -Jako odpověď dostane identifikátor, pod kterým bude rozvržení uloženo. -Nově vytvořené rozvržení v xml identifikátor neobsahují a server jim v odpovědi určí. -Editovaným rozvržením se zvýší jejich revize. Pokud došlo při editování ke změně počtu pozic, mohlo by dojít k narušení plánování, je tedy toto rozvžení uloženo pod jiným identifikátorem. - - -\item \textbf{načítání rozvržení pro editaci} -Applet zašle identifikátor rozvržení obrazovky a identifikátor společnosti. Jako odpověď dostane xml odpovídající požadovanému rozvržení, které je dále parsováno a zobrazeno v LayoutDesigeru. -\end{itemize} - -Applet neumožňuje listování seznamem rozvržení, pouze editaci rozvržení vybraného na webovém serveru. - - - - -\textbf{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. -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é. - - -\textbf{Datové struktury} -\\ - -Hlavní datová struktura \textbf{Position} reprezentuje jednotlivé rozvrhované pozice a má následující položky -\begin{itemize} - \item \textbf{id} - jednoznačný identifikátor pozice - \item \textbf{monitor} - absolutní souřadnice\footnote[1]{topX - x-ová souřadnice horního levého rohu pozice, topY - y-ová souřadnice horního levého rohu pozice} a parametry\footnote[2]{výška a šířka pozice} pozice na obrazovce, na které je LayoutDesigner spuštěný - \item \textbf{elvys} - absolutní souřadnice\footnotemark[1] a parametry\footnotemark[2] pozice na obrazovce kiosku, kde bude rozvržení skutečně použito - \item \textbf{isSelected} - příznak, jestli je pozice aktuálně vybraná - \item \textbf{isSnappedToGrid} - příznak, jestli je pozice zarovnaná k mřížce - \item \textbf{permittedDocumentTypes} - seznam typů dokumentů povolených zobrazovat na této pozici -\end{itemize} - - \subsection{Datový model} - nějakým způsobem popsat datový model a nekam ten datový model umistit (mozna vytisknout na A3, slozit a vlozit jako prilohu??) - - \subsubsection{Deployment, závislosti} - spis tady popsat jenom zavislosti a udelat dalsi "vetsi" include - deployment - - \subsection{Seznam knihoven} - \subsubsection{webServer2} - \subsubsection{dispatcher} - \subsubsection{applet} - - - - - - - - \subsection{Špatné zkušenosti z vývoje} - \subsubsection{varchar foreign key} - - - -\section{Klientská aplikace} - % mimojine by tu asi mely byt i duvody, proc je to vlastni aplikace a ne webovy prohlizec....coz nebude uplne - % jednoduche. TOTO NAPSAT PORADNE. - \subsection{Statistiky} - %TODO : asi bych tu mel znova napsat o co go??? - \subsubsection{Typu 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!) - \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. - - \subsubsection{Uchovávání statistik} - Z požadavků na robustnost uchovávání statistik na kiosku vyplynul požadavek statistiky nejprve - 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 - změnit databázový engine jednoduchou úpravou aplikace. - - {\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. - - 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 - 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í. - - - Copied: others/dokumentace/technicalGuide/architecture/4webapp.tex (from rev 1676, others/dokumentace/technicalGuide/architecture/4software.tex) =================================================================== --- others/dokumentace/technicalGuide/architecture/4webapp.tex (rev 0) +++ others/dokumentace/technicalGuide/architecture/4webapp.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -0,0 +1,368 @@ +\chapter{Software} +%asi jeste nejake kecy + +\section{Webová aplikace} + %TODO rozdeleni na subsections, mozna dalsi includy? + % rozdeleni na moduly, jeden z nich je statistika, dalsi layoutdesigner... + + \subsection{Přehled} + todo: napsat neco o tom, ze to je rozdelene do na sobe nezavislych webovych modulu webServer2 a dispatcher. Taky se zminit o appletu + + + \subsection{Rozdělení do modulů, sdílená aplikační logika} + - na to taky navazuje připravenost na napsání dalšího modulu- pro WS-API, přesunout k sobě. Odkaz na sekci, kde je popsáno, jak tu aplikacni logiku mame vlastne oddelenou...\\ + Build je prováděn pomocí ANT-skriptů, které jsou popsány v \ref{build_ant}\\ + + \subsection{Bezpečnost na serveru} + Popsat, jak je řešena autentizace, autorizaci radsi nezminovat, popsat SSL: + \subsubsection{webServer2} - ten SSL zatim nema + \subsubsection{dispatcher} - tenhle taky ne + \subsection{Popis komunikace serveru} + \subsubsection{webServer2} + FF, IE8, nutnost JRE pro applet + \subsubsection{webAPI??} + viz. dale + \subsubsection{dispatcher} + komunikace mezi kiosky a serverem + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% WebServer2 obecně +%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsection{WebServer2} + popsat architekturu weboveho serveru - JSF+Richfaces, zavislosti,... + + \subsection{popis datového modelu} + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DB, ORM +%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsection{popis 'ORM' frameworku Hibernate}\label{hibernate} + + + \subsection{nastavení hibernate} + \begin{itemize} + \item vygenerování .hbm.xml mapování z DB modelu + \item ruční úprava(přidání dědičnosti, doplnění vlastního kódu) + \item generování .java souborů z .hbm.xml souborů + \item používání .java souborů + \end{itemize} + + \subsection{popis provádění změn v DB modelu} + Existuje více prostředí, na kterých běží webová aplikace a vzhledem k používání tohoto řešení již v průběhu vývoje + je kladen důraz na zachování starých dat (v co největším rozsahu) při přechodu na novou verzi systému. + + Tím pádem je potřeba po každé změně datového modelu nutno přemigrovat starý datový model a data v něm uložená + do podoby definované novým datovým modelem. Ve většině případů bude tato migrace dat realizována SQL skriptem, + v případě potřeby silnějšího prostředku se migrace bude řešit individuálně. + + \subsubsection{Čistá DB vs. Migrovaná DB} + čistá je vytvořena pomocí vytvářecího skriptu + \subsubsection{Soulad čisté a migrované DB (koherence?)} + do migrované se jednoduše může zanést chyba, migrace se musí kontrolovat oproti čisté DB. + =popsat tady postup + \subsection{Používání Hibernate Session v kódu} + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% GUI +%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsection{GUI- JSF, Richfaces,..} + \subsubsection{lokalizace} + \paragraph{lokalizace labelu} + \paragraph{lokalizace chybových hlášek} + \subsection{vlastní zobrazovací komponenty} + \subsection{lokalizace} + Aplikace webServer2 podporuje lokalizaci popisků na webu do mnoha jazyků. Tato lokalizace může být užitečná, pokud se systémem pracují lidé mluvící jinou řečí. + Každý uživatel (ať už o tom ví, či ne), má ve svém internetovém prohlížeči nastaven světový jazyk, pomocí kterého se prohlížeč identifikuje webovému serveru. + Server tak může nabídnout anglické popisky člověku, který má v prohlížeči nastaven anglický jazyk komunikace a na druhé straně české popisky člověku, který má nastaveno české prostředí prohlížeče. + + Modul webServer2 podporuje vícejazyčnou komunikaci založenou na výše zmíněném principu, nicméně lokalizace webové aplikace byla zatím napsána jenom pro český jazyk. + Použití se zatím předpokládá v česky hovořícím prostředí, v případě požadavku je možné lokalizaci pro jiný jazyk vytvořit. + + Pro lokalizované popisky jsou umístěny v souboru {\em labels\_xx.properties}, kde {\it xx} značí zkratku jazyka, kterým se identifikuje webový prohlížeč serveru (cs pro češtinu, en pro angličtinu,..). + Systém potom vyhledá požadovaný soubor labels\_xx.properties a použije ho pro vypisování popisek. + + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Plánování +%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsection{Plánování obsahu kiosku} + tady popisu planovaci komponentu. zminim casti, ktere jsou zavisle na typu planovani (ikdyz to sem zdanlive nepatri, ulehcim ctenari vyznani se v plugovatelnosti typu) + + zavisle casti jsou:\\ + tooltip\\ + modalni okno\\ + + tady popisu modalni okno planovaci komponenty + \begin{itemize} + \item{1.krok} V prvním kroku si uživatel v tomto modálním okně zvolí typ dat, které budou plánovány. + Toto se bude dít s ohledem na povolené typy plánovaných dat pro danou pozici (tyto povolené typy budou specifikovány již při vytváření rozvržení zobrazení) + Seznam těchto povolených typů se získává z definice rozvržení obrazovky. + \item{2.krok} Uživateli se zobrazí možnosti nastavení zvoleného typu plánování. + \item{3.krok} Uživatel potvrdí plánování. Systém provede potřebné validace zadaných údajů a případně uživatele vybídne k opravě. + \end{itemize} + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Plugovatelnost typů +%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsection{Rozšiřitelnost systému o nový typ plánovaných dat} +pred touto kapitolou urcite popsat: planovaci komponenta + + Jelikož bude systém umožňovat plánovat na obrazovku kiosku různé typy dat, je kladen důraz na navržení systému tak, aby + mohla být podpora pro další typ zobrazovaných dat (např. videa) jednoduchou cestou doprogramována. + \subsubsection{Nový typ plánovaných dat v databázi} + Úprava databáze je shrnuta v následujících krocích: + \begin{itemize} + \item{} \textbf{content\_type} + Přidání nového typu do tabulky \textit{content\_type}. + \item{nový potomek frame\_content} + Je také potřeba vytvořit tabulku, která bude uchovávat data plánování specifická pro nový typ. + Tabulka bude 'potomkem' (důvod popsán v kapitole věnované ORM frameworku Hibernate - \ref{hibernate}). + \item{přidání nového typu společnostem - comp\_permitted\_type} + - toto je buď možno udělat ručně, nebo z UC + \end{itemize} + + \subsubsection{Nový typ dat k uploadu} + tohle zpusobuje problemy, nemuze byt asi reseno automaticky + Kdyz se pridavalo video, tak muselo byt: + \begin{itemize} + \item{NEAUTOMATIZOVATELNE-nové tabulky v DB}vytvoren novy typ dokumentu v databazi (tabulka Video, VideoContent). Tabulka Video 'podedena' od tabulky File, tudiz ma definovane zakladni atributy + \item{NEAUTOMATIZOVATELNE-načítání dat z tabulky video v UC, které to vyžadují} (zobrazení plánování na plánovací komponentě, generování XML zprávy pro JH). Tohle načítání je snad řešeno jenom na jednom místě (PlanningBl asi) + - elvys.server.bl.planning.PlanningBLImpl: getTimelinesGeneric takhle načítá video a soubory + - načítá jednak v projektu webServer2 pro plánování + - také v projektu dispatcher pro posílání dat kiosku + \item{AUTOMATIZOVATELNE-nahrávání souborů nového typu na server} - pokud nemá společnost povoleno plánování daného typu dokumentu, tak např. ani nemůže na server nahrávat soubory, které s tímto typem dat souvisí (.avi,.mpg,..) + \item{mozna AUTOMATIZOVATELNE-vybírání souborů daného typu na serveru} - planovani, statistiky, reporty,... + + \end{itemize} + + + \subsubsection{Nový typ dat při plánováni rozvržení obrazovky} + V aplikaci LayoutDesigner není potřeba nic měnit, možnost vytváření pozic, na kterých bude povoleno plánování + nového typu je dáno pouze informací v datovém modelu webové aplikace (comp\_permitted\_type) + + \subsubsection{Nový typ dat v plánovací komponentě} + + + Základními typy plánování, které bude možno provádět budou: \textit{statický text}, \textit{dynamický text}, \textit{pdf dokument}, \textit{webová stránka}. + + Při práci s plánovací komponentou uživatel zvolí, která pozice obrazovky ho zajímá a v jakém čase a systém uživateli nabídne modální okno, + ve kterém bude probíhat konkrétní plánování. + + + Peklo je krok 2 - tam se musi zobrazit spravne gui a zvolit spravna aplikacni logika na zaklade volby jednoho stringu v kroku1. + Postup pridani videa: + \begin{itemize} + \item{Registrace jména nového typu v databázi} + \item{Vytvoření view prvku pro modální okno} + \item{Vytvoření obsahu 2. modálního okna} + \item{Vytvoření třídy obsahující logiku specifickou pro daný typ} + *BLImpl + + \item{Registrace view částí a třídy s logikou} + Pro zaregistrování částí systému souvisejících s nově přidaným typem je potřeba upravit konfigurační soubor:\\ + \textit{cz.elvys.webServer.utils.plug.}\textbf{plugins.properties} + + \textit{view.path.<jmeno\_typu>} : definuje umístění 'view prvku' (cesta s lomítky) + \textit{view.path.<jmeno\_typu>.innermodal} : definuje umístění vnitřního 'view prvku' (cesta s lomítky) + \textit{planning.business.logic.<jmeno\_typu>} : definuje umístění třídy s aplikační logikou + Např. + planning.business.logic.video=cz.elvys.webServer.toSpring.planning.impl.PlanningModalVideoBLImpl\\ + view.path.video=/secured/plug/planningModalVideo.xhtml\\ + view.path.video.innermodal=/secured/plug/planningModalVideoInnerModal.xhtml + \item{Vytvoření a registrace backing beany pro práci se specifickými daty plánování} + např.: PlanningModalVideoBean.java + dědí od: \textit{cz.elvys.webServer.beans.planningrel.plug.PlanningModalSpecBean} + musí implementovat: + \begin{itemize} + \item{getFormData()} + \item{initPlanningModalSpecBean(String formName, ContentType type)} + ContentType představuje obsah formuláře plánování - obecný předek pro každý typ + \item{initPlanningModalSpecBean(String formName, FrameContent frc)} + \item{validate()} + \end{itemize} + + Registrace se provádí úpravou souboru po vzoru bean-tříd ostatních typů v následujícím souboru: + \textit{webServer2/WebContent/WEB-INF/faces-beans-planplug.xml} + \begin{verbatim} + <managed-bean> + <managed-bean-name>planningModalUrlBean</managed-bean-name> + <managed-bean-class>cz.elvys.webServer.beans.planningrel.plug.PlanningModalUrlBean</managed-bean-class> + <managed-bean-scope>session</managed-bean-scope> + </managed-bean> + \end{verbatim} + Omezení: managed-bean-name musí být ve formátu: planningModal<Type>Bean, kde <Type> je jméno typu plánovaných dat, + které má velké první písmeno - tedy např. planningModalDocumentBean, planningModalVideoBean, .. + + \item{tooltipy na planovaci komponente} + -tooltip je potreba taky upravit + + \item{nacitani z DB} + -tohle se musi delat taky podle typu, ale nechal bych to tak, to je uz od plugovatelnosti taky docela vzdalene + - planDocumentBLImpl:68 + + - dulezite je, ze kdyz jsou s nactenim + \item{dispatcher} + odesílání DocumentConfigu není plugovatelné -> todo + \end{itemize} + + \subsubsection{Nový typ dat na kiosku} + Tady také popsat komunikaci s kioskem. + + - ta by mohla byt taky plugovatelna :O + + + \subsection{nahrávání dat na kiosek} + + \begin{itemize} + + \item{} + \item{Mazání starých dočasných dat} + autodelete=true/ false + + \end{itemize} + + + \subsection{komunikace s kioskem} + + \subsection{Archivace starých dat na serveru} + \begin{itemize} + \item{Společnosti} + + \item{Uživatelé} + + \item{Plánování} + - planovani- casem jich bude hodne + - pri odebrani kategorie - zahodit planovani, ci ne? + - pri zmene kategorie + \item{Dokumenty} + - pro každý dokument v historii musí zůstávat v tabulce záznam o tomto dokumentu + \end{itemize} + + + + + + \subsection{} + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Plánování +%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsubsection{Skrývání panelů u plánování} + Tohle je celkem složitá věc, ještě nemáme ujasněno, jak konkrétně to budeme dělat. + + + + \subsection{Použití JH supa-dupa toolu na měření textu} + + \subsection{Rozhraní přes WebServices} + K systému v současné době není možno přistupovat přes webservices, ale... mame oddělenou BL od prezentacni vrstvy, takže je to ready.. + + \subsection{Dispatcher} + + + \subsection{Applet} + +\textbf{Komunikace mezi webovým serverem a appletem} +\\ +\\ +LayoutDesigner lze spustit pro +\begin{itemize} + \item \textbf{vytvoření nového rozvržení} - pro vytvoření nového rozvržení má applet následující vstupní parametry + \begin{itemize} + \item \textbf{companyID} identifikátor společnosti + \item \textbf{userID} identifikátor uživatelele, který s LayoutDesignerem pracuje + \end{itemize} + + \item \textbf{editaci již dříve vyvořeného rozvržení} - oproti předchozímu má navíc parametr + \begin{itemize} + \item \textbf{layoutID} identifikátor rozvržení obrazovky + \end{itemize} + +\end{itemize} +Vstupní parametr layoutID rozhoduje o způsobu spuštění appletu. + + +\paragraph{} +Dále LayoutDesigner získává od serveru následující informace pomocí zasílání HTTP POST požadavků +\begin{itemize} +\item \textbf{typy dokumentů povolené pro danou společnost} +Applet zašle identifikátor společnosti a od serveru dostane seznam typů dokumentů povolené pro tuto společnost. Každý typ bude v odpovědi uveden na samostatném řádku. +\item \textbf{podporované rozlišení obrazovek kiosků pro danou společnost} +Applet zašle identifikátor společnosti a od server mu vrátí seznam podporovaných rozlišení v následujícím formátu: +poměr a seznam rozlišení v tomto poměru oddělené mezerou, jednotlivé poměry jsou na samostaném řádku + + např. \verb#1,77 1920x1080 1200x675# +\end{itemize} + +Ukládání rozvržení na server i načítání rozvržení pro editaci probíhá také pomocí HTTP POST požadavků. +\begin{itemize} +\item \textbf{uložení rozvržení na server} +LayoutDesigner zašle serveru identifikátor společnosti a uživatele a ukládaný layout ve formátu xml řetězce. +Jako odpověď dostane identifikátor, pod kterým bude rozvržení uloženo. +Nově vytvořené rozvržení v xml identifikátor neobsahují a server jim v odpovědi určí. +Editovaným rozvržením se zvýší jejich revize. Pokud došlo při editování ke změně počtu pozic, mohlo by dojít k narušení plánování, je tedy toto rozvžení uloženo pod jiným identifikátorem. + + +\item \textbf{načítání rozvržení pro editaci} +Applet zašle identifikátor rozvržení obrazovky a identifikátor společnosti. Jako odpověď dostane xml odpovídající požadovanému rozvržení, které je dále parsováno a zobrazeno v LayoutDesigeru. +\end{itemize} + +Applet neumožňuje listování seznamem rozvržení, pouze editaci rozvržení vybraného na webovém serveru. + + + + +\textbf{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. +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é. + + +\textbf{Datové struktury} +\\ + +Hlavní datová struktura \textbf{Position} reprezentuje jednotlivé rozvrhované pozice a má následující položky +\begin{itemize} + \item \textbf{id} - jednoznačný identifikátor pozice + \item \textbf{monitor} - absolutní souřadnice\footnote[1]{topX - x-ová souřadnice horního levého rohu pozice, topY - y-ová souřadnice horního levého rohu pozice} a parametry\footnote[2]{výška a šířka pozice} pozice na obrazovce, na které je LayoutDesigner spuštěný + \item \textbf{elvys} - absolutní souřadnice\footnotemark[1] a parametry\footnotemark[2] pozice na obrazovce kiosku, kde bude rozvržení skutečně použito + \item \textbf{isSelected} - příznak, jestli je pozice aktuálně vybraná + \item \textbf{isSnappedToGrid} - příznak, jestli je pozice zarovnaná k mřížce + \item \textbf{permittedDocumentTypes} - seznam typů dokumentů povolených zobrazovat na této pozici +\end{itemize} + + \subsection{Datový model} + nějakým způsobem popsat datový model a nekam ten datový model umistit (mozna vytisknout na A3, slozit a vlozit jako prilohu??) + + \subsubsection{Deployment, závislosti} + spis tady popsat jenom zavislosti a udelat dalsi "vetsi" include - deployment + + \subsection{Seznam knihoven} + \subsubsection{webServer2} + \subsubsection{dispatcher} + \subsubsection{applet} + + + + + + + + \subsection{Špatné zkušenosti z vývoje} + \subsubsection{varchar foreign key} + + + + Deleted: others/dokumentace/technicalGuide/architecture/5deployment.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/5deployment.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/architecture/5deployment.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -1,45 +0,0 @@ -%subject to change - -\chapter{Konfigurace, nasazení řešení a závislosti} -Celé řešení Elvys sestává ze serverové části(rozdělená na více modulů) a klientské části. -Popsat tady jak se to cele nasazuje -\section{Webový server - aplikace } - \subsection{Sestavení řešení (build) a závislosti při sestavování} - Sestavení řešení se provádí pomocí vytvořených ANT skriptů umístěných v projektech webServer2, resp. dispatcher. - Oba tyto moduly využívají sdílený kód a zdroje umístěné v projektu elvysCommons a modul webServer2 je navíc závislý na projektu LayoutDesigner. - \\ TADY PRIJDE OBRAZEK zavislosti - mam ho v EA, vykopirovat ho - \subsubsection{Rozbor procesu sestavování webServer2/dispatcher} - \begin{itemize} - \item volání závislostí\\ - sestavení projektu \em{elvysCommons} a projektu L - \item hibernate tools - - \end{itemize} - - \subsection{Konfigurace řešení} - Oba moduly(webServer2 i dispatcher) - \subsection{Aplikační server} - - tomcat/JBoss AS - - specifické nastavení AS: redirect after error (404, 403) - \subsection{webServer} - \subsubsection{Konfigurace webServer2 projektu} - - konfigurace - slozky na soubory, slozky na screenshoty, - - externi aplikace na pocitani stranek pdfka - - logovani - - build (nasazeni asi ne) pomoci ANTu, nasazeni ruco - \subsubsection{Konfigura} - \subsection{dispatcher} - - konfig - - logovani - - build(nasazeni asi ne) pomoci ANTU, nasazeni ruco - - \section{Webový server - systémové nastavení } - Apache - \subsection{JirkaH competency} - - certifikáty - - stahování souboru bude snad tou dobou uz v me kompetenci, tak to ne - - nastaveni aplikaci pro monitoring - - -\section{Kiosky} - Tady popsat, jakym zpusobem Added: others/dokumentace/technicalGuide/architecture/5layoutdesigner.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/5layoutdesigner.tex (rev 0) +++ others/dokumentace/technicalGuide/architecture/5layoutdesigner.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -0,0 +1,4 @@ +\chapter{LayoutDesigner java applet} + +čě+čěřčšžřýýžáýž98ýžýř + Added: others/dokumentace/technicalGuide/architecture/6clientapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/6clientapp.tex (rev 0) +++ others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -0,0 +1,53 @@ +\chapter{\label{clientapp}Klientská aplikace} +Proc je to vubec C++ a Qt. + +podporovane typy + + +\section{Konfiguracni soubory} + +\section{Komunikace} + +\section{PDF knihovna} +vicevlaknove, pomale, sprava pameti...cachovani + +\section{Podpora videa} + +prehravani... + +\section{Statistiky} + \subsubsection{Typu 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!) + \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. + + \subsubsection{Uchovávání statistik} + Z požadavků na robustnost uchovávání statistik na kiosku vyplynul požadavek statistiky nejprve + 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 + změnit databázový engine jednoduchou úpravou aplikace. + + {\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. + + 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 + 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í. + + +\section{Screenshoty} + +\section{Stahovani a ukladani souboru} +dopredne... \ No newline at end of file Deleted: others/dokumentace/technicalGuide/architecture/6tools.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/6tools.tex 2010-02-08 08:07:07 UTC (rev 1680) +++ others/dokumentace/technicalGuide/architecture/6tools.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -1,2 +0,0 @@ -\chapter{Nástroje použité při vývoji} -% svn, trac, hudson.... Added: others/dokumentace/technicalGuide/architecture/7communication.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/7communication.tex (rev 0) +++ others/dokumentace/technicalGuide/architecture/7communication.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -0,0 +1,8 @@ +\chapter{Popis rozhraní} +\section{Rozhraní mezi webovou aplikací a kiosky} +\section{Rozhraní mezi webovou aplikací a LayoutDesignerem} +\section{Rozhraní mezi webovou aplikací a pomocnými aplikacemi} + \subsection{pageCounter} + \subsection{textMeter} + \subsection{videoMeter} + \ No newline at end of file Copied: others/dokumentace/technicalGuide/architecture/8deployment.tex (from rev 1676, others/dokumentace/technicalGuide/architecture/5deployment.tex) =================================================================== --- others/dokumentace/technicalGuide/architecture/8deployment.tex (rev 0) +++ others/dokumentace/technicalGuide/architecture/8deployment.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -0,0 +1,45 @@ +%subject to change + +\chapter{Konfigurace, nasazení řešení a závislosti} +Celé řešení Elvys sestává ze serverové části(rozdělená na více modulů) a klientské části. +Popsat tady jak se to cele nasazuje +\section{Webový server - aplikace } + \subsection{Sestavení řešení (build) a závislosti při sestavování} + Sestavení řešení se provádí pomocí vytvořených ANT skriptů umístěných v projektech webServer2, resp. dispatcher. + Oba tyto moduly využívají sdílený kód a zdroje umístěné v projektu elvysCommons a modul webServer2 je navíc závislý na projektu LayoutDesigner. + \\ TADY PRIJDE OBRAZEK zavislosti - mam ho v EA, vykopirovat ho + \subsubsection{Rozbor procesu sestavování webServer2/dispatcher} + \begin{itemize} + \item volání závislostí\\ + sestavení projektu \em{elvysCommons} a projektu L + \item hibernate tools + + \end{itemize} + + \subsection{Konfigurace řešení} + Oba moduly(webServer2 i dispatcher) + \subsection{Aplikační server} + - tomcat/JBoss AS + - specifické nastavení AS: redirect after error (404, 403) + \subsection{webServer} + \subsubsection{Konfigurace webServer2 projektu} + - konfigurace - slozky na soubory, slozky na screenshoty, + - externi aplikace na pocitani stranek pdfka + - logovani + - build (nasazeni asi ne) pomoci ANTu, nasazeni ruco + \subsubsection{Konfigura} + \subsection{dispatcher} + - konfig + - logovani + - build(nasazeni asi ne) pomoci ANTU, nasazeni ruco + + \section{Webový server - systémové nastavení } + Apache + \subsection{JirkaH competency} + - certifikáty + - stahování souboru bude snad tou dobou uz v me kompetenci, tak to ne + - nastaveni aplikaci pro monitoring + + +\section{Kiosky} + Tady popsat, jakym zpusobem Copied: others/dokumentace/technicalGuide/architecture/9tools.tex (from rev 1676, others/dokumentace/technicalGuide/architecture/6tools.tex) =================================================================== --- others/dokumentace/technicalGuide/architecture/9tools.tex (rev 0) +++ others/dokumentace/technicalGuide/architecture/9tools.tex 2010-02-08 08:43:49 UTC (rev 1681) @@ -0,0 +1,13 @@ +\chapter{Nástroje použité při vývoji} +% svn, trac, hudson.... + + +\begin{thebibliography}{9} + \bibitem{pdfcreator} \textbf{PDF Creator} http://sourceforge.net/projects/pdfcreator/ + \bibitem{googlebooks} \textbf{Google Books} http://books.google.com + \bibitem{flashpaper} \textbf{Flashpaper} http://www.adobe.com/products/flashpaper/ + \bibitem{lcg} \textbf{The Large Hadron Collider (LHC) Computing Grid} http://lcg.web.cern.ch/lcg/ + \bibitem{puppet} \textbf{Puppet, configuration management tool} http://reductivelabs.com/products/puppet/ + \bibitem{cfengine} \textbf{Cfengine, configuration management tool} http://www.cfengine.org/ + \bibitem{quattor} \textbf{Quattor, configuration management tool} http://sourceforge.net/apps/mediawiki/quattor/ +\end{thebibliography}