parent
7596c93658
commit
fdbb751c74
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
@ -38,4 +39,5 @@
|
||||||
\image{\textwidth}{webgui/index}{Web login}{img:webindex}
|
\image{\textwidth}{webgui/index}{Web login}{img:webindex}
|
||||||
\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.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 86 KiB |
Loading…
Reference in New Issue