master 1.0-alpha1
Clemens Klug 2018-06-11 15:52:07 +02:00
parent 7596c93658
commit fdbb751c74
5 changed files with 17 additions and 9 deletions

View File

@ -158,7 +158,7 @@ A free worker node claims the task and executes it.
During the runtime, status updates are stored in the Redis Db to inform the issuer about progress, failures and results artifacts. During the runtime, status updates are stored in the Redis Db to inform the issuer about progress, failures and results artifacts.
\section{Service \& Service composition} \section{Services \& Service composition}
Following the implementation above, the following services are necessary: Following the implementation above, the following services are necessary:
\begin{itemize} \begin{itemize}
@ -229,7 +229,8 @@ With few lines of configuration, it detects new services automatically, and can
Here, it is configured to watch docker containers, and create forwarding rules for those marked with docker labels. Here, it is configured to watch docker containers, and create forwarding rules for those marked with docker labels.
For fine-grained control, the creation of default forwards, is disabled, so only explicitly marked containers are subject to this automatic proxy. For fine-grained control, the creation of default forwards, is disabled, so only explicitly marked containers are subject to this automatic proxy.
The label \texttt{traefik.enable=true} enables Traefik's reverse proxy pipeline for this container, while \texttt{traefik.port=8080} documents the port where the container exposes its service. The label \texttt{traefik.enable=true} enables Traefik's reverse proxy pipeline for this container, while \texttt{traefik.port=8080} documents the port where the container exposes its service.
The proxy rule to forward traffic to this container is configured with \texttt{traefik.frontend.rule=Host:select.ma.potato.kinf.wiai.uni-bamberg.de}.
The proxy rule to forward traffic to this container is configured with \texttt{traefik.frontend.rule= Host:select.ma.potato.kinf.wiai.uni-bamberg.de}.
Here Traefik supports a wide range of options\furl{https://docs.traefik.io/basics/\#frontends}, including grouping by any or all semantics with multiple rules. Here Traefik supports a wide range of options\furl{https://docs.traefik.io/basics/\#frontends}, including grouping by any or all semantics with multiple rules.
For the purposes of this project, a wildcard domain record was used for the development machine, so each service can be accessible with an own subdomain. For the purposes of this project, a wildcard domain record was used for the development machine, so each service can be accessible with an own subdomain.

View File

@ -40,7 +40,7 @@ The following section \autoref{sec:neocart} describes the integration efforts fo
\section{Integration of Neocartographer}\label{sec:neocart} \section{Integration of Neocartographer}\label{sec:neocart}
\subsection{Neocartographer Game Log Files} \subsection{Neocartographer Game Log Files}
The log files are grouped by folders and contain the GPX tracks and media, mainly photos.%TODO The log files are grouped by folders and contain the GPX tracks and media, mainly photos (see \autoref{img:nclog}).
Many Neocartographer GPX files have invalid XML markup, as \autoref{tab:xml} show. Many Neocartographer GPX files have invalid XML markup, as \autoref{tab:xml} show.
@ -63,7 +63,7 @@ Any additional attributes are stored in the \texttt{tail} field of the XML eleme
With string manipulation, the \texttt{geoid} attribute can be restored\footnote{In the data probe, this error occurred only with the \texttt{geoid} attribute}. With string manipulation, the \texttt{geoid} attribute can be restored\footnote{In the data probe, this error occurred only with the \texttt{geoid} attribute}.
The other two errors lead to data corruption, as both cases fail to qualify to valid latitude/longitude pairs. The other two errors lead to data corruption, as both cases fail to qualify to valid latitude/longitude pairs.
With the assumption of a two-digit longitude\footnote{The names and other valid longitudes suggest the location of the game field in the eastern part of Bavaria}, the correct value can be restored through string parsing from the offset of the second decimal separator.%TODO With the assumption of a two-digit longitude\footnote{The names and other valid longitudes suggest the location of the game field in the eastern part of Bavaria (Augsburg, Bamberg)}, the correct value can be restored through string parsing from the offset of the second decimal separator.
Good practice requires the parser to issue a loud warning to indicate possible errors here. Good practice requires the parser to issue a loud warning to indicate possible errors here.
The last error type occurs with nearly all first and second entries. The last error type occurs with nearly all first and second entries.
@ -81,11 +81,16 @@ An additional client implementation in the framework (see \autoref{sec:source})
\subsection{Analysis Functionality} \subsection{Analysis Functionality}
Using the \texttt{LocationAnalyzer} in combination with a \texttt{KMLRender} renderer, the analysis of log files was successful on the first run. Using the \texttt{LocationAnalyzer} in combination with a \texttt{KMLRender} renderer, the analysis of log files was successful on the first run.
\subsection{UI Integration}
The game selection on the login page (see \autoref{img:webindex}) uses a dictionary in the \texttt{clients} package.
With the client implementation is registered with a name, it is automatically added to the selection box.
The URL to the log providing service has to be configured in the \texttt{selector} flask application, too.
\section{Conclusion} \section{Conclusion}
While the implementation of a new client to download log files was straightforward, the parsing of these files proved quite difficult. While the implementation of a new client to download log files was straightforward, the parsing of these files proved quite difficult.
However, it was not the integration into the framework but the syntactical errors in the log files that was hard. However, it was not the integration into the framework but the syntactical errors in the log files that was hard.
While the BioDiv2Go parser requires less than 20 lines of code, the newly written parser scratches the 60 line mark with all the error handling code (see \autoref{code:bd2l} and \ref{code:ncl}). While the BioDiv2Go parser requires less than 20 lines of code, the newly written parser scratches the 60 line mark with all the error handling code (see \autoref{code:bd2l} and \ref{code:ncl}).
Once this obstacle is passed, the integration is nearly seamless. Once this obstacle is passed, the integration is nearly seamless.
%TODO: webclient
As further challenge proved - like with BioDiv2Go - the understanding of the structure of the log, i.e. deriving the games' internal state machine. As further challenge proved - like with BioDiv2Go - the understanding of the structure of the log, i.e. deriving the games' internal state machine.

View File

@ -5,16 +5,16 @@
\image{\textwidth}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge} \image{\textwidth}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge}
\image{\textwidth}{../../PresTeX/images/simu-retries}{Experimentational rounds}{img:retries} \image{\textwidth}{../../PresTeX/images/simu-retries}{Experimentational rounds}{img:retries}
\image{.7\textwidth}{../../PresTeX/images/track-fi}{ActivityMapper: Combined screen activity and spatial progress}{img:trackfi} \image{\textwidth}{../../PresTeX/images/track-fi}{ActivityMapper: Combined screen activity and spatial progress}{img:trackfi}
\image{\textwidth}{../../PresTeX/images/speed}{Aggregated speed distribution of four game fields}{img:speed} \image{\textwidth}{../../PresTeX/images/speed}{Aggregated speed distribution of four game fields}{img:speed}
\image{.9\textwidth}{../../PresTeX/images/time-rel}{Time distribution of game sessions overview of four game fields}{img:time} \image{\textwidth}{../../PresTeX/images/time-rel}{Time distribution of game sessions overview of four game fields}{img:time}
\section{Containers} \section{Containers}
\subsection{Kibana test setup} \label{app:kibana} \subsection{Kibana test setup} \label{app:kibana}
\lstinputlisting[language=yaml,caption={Docker-compose file for Kibana test setup},label=code:kibana,numbers=left]{code/kibana-docker-compose.yml} \lstinputlisting[language=yaml,caption={Docker-compose file for Kibana test setup},label=code:kibana,numbers=left]{code/kibana-docker-compose.yml}
\subsection{Biogames server dockerized} \label{app:biogames} \subsection{Biogames server dockerized} \label{app:biogames}
\image{\textwidth}{biogames.pdf}{Dockerized setup for biogames}{img:bd2gdocker} \image{.75\textwidth}{biogames.pdf}{Dockerized setup for biogames}{img:bd2gdocker}
\lstinputlisting[language=yaml,caption={Docker-compose file for Biogames server},label=code:bd2s,numbers=left]{code/biogames/docker-compose.yml} \lstinputlisting[language=yaml,caption={Docker-compose file for Biogames server},label=code:bd2s,numbers=left]{code/biogames/docker-compose.yml}
\lstinputlisting[language=yaml,caption={Dockerfile for Biogames server},label=code:bd2d,numbers=left]{code/biogames/Dockerfile} \lstinputlisting[language=yaml,caption={Dockerfile for Biogames server},label=code:bd2d,numbers=left]{code/biogames/Dockerfile}
\lstinputlisting[language=bash,caption={Entrypoint for Biogames docker container},label=code:bd2e,numbers=left]{code/biogames/start.sh} \lstinputlisting[language=bash,caption={Entrypoint for Biogames docker container},label=code:bd2e,numbers=left]{code/biogames/start.sh}
@ -29,6 +29,7 @@
\section{Loader implementations} \section{Loader implementations}
\lstinputlisting[language=python,caption={Log loader for BioDiv2Go},label=code:bd2l,numbers=left]{code/biogames.py} \lstinputlisting[language=python,caption={Log loader for BioDiv2Go},label=code:bd2l,numbers=left]{code/biogames.py}
\lstinputlisting[language=python,caption={Log loader for Neocartographer},label=code:ncl,numbers=left]{code/neocart.py} \lstinputlisting[language=python,caption={Log loader for Neocartographer},label=code:ncl,numbers=left]{code/neocart.py}
\image{\textwidth}{nclog}{Neocartographer game log}{img:nclog}
\section{Web interface}\label{app:webif} \section{Web interface}\label{app:webif}
\subsection{Workflow} \subsection{Workflow}
@ -39,3 +40,4 @@
\image{\textwidth}{webgui/results}{Analysis result overview}{img:webresults} \image{\textwidth}{webgui/results}{Analysis result overview}{img:webresults}
\image{\textwidth}{webgui/create}{Configuration for a new analysis run}{img:webcreate} \image{\textwidth}{webgui/create}{Configuration for a new analysis run}{img:webcreate}
\image{\textwidth}{webgui/status}{Raw JSON status data}{img:webstatus} \image{\textwidth}{webgui/status}{Raw JSON status data}{img:webstatus}
The status page (\autoref{img:webstatus}) is not linked anywhere in the UI directly.

BIN
ThesTeX/images/nclog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

0
meta/config/hyphenation.tex Executable file → Normal file
View File