diff --git a/ThesTeX/content/4-implementation.tex b/ThesTeX/content/4-implementation.tex index 45c5436..e962743 100644 --- a/ThesTeX/content/4-implementation.tex +++ b/ThesTeX/content/4-implementation.tex @@ -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. -\section{Service \& Service composition} +\section{Services \& Service composition} Following the implementation above, the following services are necessary: \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. 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 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. 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. diff --git a/ThesTeX/content/5-evaluation.tex b/ThesTeX/content/5-evaluation.tex index 5cde792..6a4ea61 100644 --- a/ThesTeX/content/5-evaluation.tex +++ b/ThesTeX/content/5-evaluation.tex @@ -40,7 +40,7 @@ The following section \autoref{sec:neocart} describes the integration efforts fo \section{Integration of Neocartographer}\label{sec:neocart} \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. @@ -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}. 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. 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} 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} 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. 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. -%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. diff --git a/ThesTeX/content/appendix.tex b/ThesTeX/content/appendix.tex index 411cf7e..fef17c9 100644 --- a/ThesTeX/content/appendix.tex +++ b/ThesTeX/content/appendix.tex @@ -5,16 +5,16 @@ \image{\textwidth}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge} \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{.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} \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} \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={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} @@ -29,6 +29,7 @@ \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 Neocartographer},label=code:ncl,numbers=left]{code/neocart.py} +\image{\textwidth}{nclog}{Neocartographer game log}{img:nclog} \section{Web interface}\label{app:webif} \subsection{Workflow} @@ -38,4 +39,5 @@ \image{\textwidth}{webgui/index}{Web login}{img:webindex} \image{\textwidth}{webgui/results}{Analysis result overview}{img:webresults} \image{\textwidth}{webgui/create}{Configuration for a new analysis run}{img:webcreate} -\image{\textwidth}{webgui/status}{Raw JSON status data}{img:webstatus} \ No newline at end of file +\image{\textwidth}{webgui/status}{Raw JSON status data}{img:webstatus} +The status page (\autoref{img:webstatus}) is not linked anywhere in the UI directly. \ No newline at end of file diff --git a/ThesTeX/images/nclog.png b/ThesTeX/images/nclog.png new file mode 100644 index 0000000..b28feb6 Binary files /dev/null and b/ThesTeX/images/nclog.png differ diff --git a/meta/config/hyphenation.tex b/meta/config/hyphenation.tex old mode 100755 new mode 100644