t: incorporate p0, add dockerizations

master
Clemens Klug 2018-03-13 18:33:59 +01:00
parent 5bfd924ceb
commit 37289a5c9a
16 changed files with 366 additions and 87 deletions

1
ThesTeX/.gitignore vendored
View File

@ -25,3 +25,4 @@
.prepared
# nano swap files
*.swp
*.lol

View File

@ -0,0 +1,30 @@
FROM alpine:edge
RUN set -ex &&\
echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories && \
apk upgrade --update &&\
apk add --update nodejs proj4-dev \
geos-dev \
py-geos \
gdal \
gdal-dev \
py-gdal \
py-psycopg2 \
jpeg-dev \
postgresql-dev \
bash \
py-virtualenv \
gcc \
zlib-dev \
python2-dev \
libc-dev \
sqlite-dev \
postgresql-client
ADD ["start.sh", "/"]
VOLUME ["/biogames", "/venv"]
EXPOSE 8000
ENTRYPOINT ["/start.sh"]
CMD ["runserver", "0.0.0.0:8000"]

View File

@ -0,0 +1,48 @@
version: "3"
services:
web:
build: ./docker2
image: biogames:python2
volumes:
- ./biogames:/biogames
- ../gamefield/:/gamefield
- ./venv_web/:/venv/
- ./gg-data/files/:/biogames/files/
- ./gg-data/media/:/biogames/media/
restart: on-failure:5
depends_on:
- db
networks:
- traefik_net
- default
labels:
- "traefik.enable=true"
- "traefik.port=8000"
- "traefik.docker.network=traefik_net"
- "traefik.http.frontend.rule=Host:biogames.potato.kinf.wiai.uni-bamberg.de"
celery:
image: biogames:python2
volumes:
- ./biogames:/biogames
- ./venv_celery/:/venv/
- ./gg-data/files/:/biogames/files/
- ./gg-data/media/:/biogames/media/
restart: on-failure:5
command: ["celery", "worker"]
depends_on:
- db
db:
image: docker.clkl.de/postgis:9.6-alpine
volumes:
- ./postgres/:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
restart: on-failure:5
networks:
traefik_net:
external:
name: traefik_net

15
ThesTeX/code/biogames/start.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
if [ ! -f /venv/bin/activate ]; then
virtualenv /venv;
fi;
source /venv/bin/activate;
LIBRARY_PATH=/lib:/usr/lib pip install -qr /biogames/requirements.txt;
until pg_isready -qh db; do
echo "Waiting for Postgres@db…";
sleep 1;
done
cd /biogames;
/biogames/manage.py $@

View File

@ -0,0 +1,22 @@
version: '2'
services:
kibana:
image: docker.elastic.co/kibana/kibana:6.2.1
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
environment:
- SERVER_HOST=0.0.0.0
- ELASTICSEARCH_URL=http://elastic:9200
networks:
- default
- traefik_net
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_net"
elastic:
image: docker.elastic.co/elasticsearch/elasticsearch-basic:6.2.1
networks:
traefik_net:
external:
name: traefik_net

16
ThesTeX/code/traefik.yml Normal file
View File

@ -0,0 +1,16 @@
version: "3"
services:
traefik:
image: traefik:1.5
command: --logLevel="ERROR" --docker.domain="potato.kinf.wiai.uni-bamberg.de"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
networks:
- net
networks:
net:
driver: bridge

View File

@ -1,12 +1,29 @@
\section{Auswertung ortsbezogener Spiele}
\section{Location based Games}
\subsection{Put the 'fun' in education}
Intersection of GIS and gaming technology\cite{Ahlqvist2018}
\begin{itemize}
\item geogames
\item datenspuren, logs
\item erkenntnisgewinn aus spatial logs
\item geogame analyse (z.b. paper mit auswertung von gg)
\item feedback loop: desingers/stagers
\item Game actions tied to real-world spatial places ('Break the magic circle')%TODO citation
\item Locomotion as essential game part
\item Trade-offs between board and race style games\cite{1705427}
\item Foster recognition of environment
\item Focus through game related tasks
\end{itemize}
\image{.5\textwidth}{../../PresTeX/images/gg2}{Geogame map view}{img:gg2}
\subsection{Research with location based games}
\begin{itemize}
\item Define mission statement
\item Build statistical framework
\item Questionnaires
\begin{itemize}
\item Pre
\item Post
\end{itemize}
\item {[Data entry]}
\item Statistical processing
\end{itemize}
Beispiel für Auswertung mit Fragebögen vorher/nachher: \cite{Schaal2017}
\image{\textwidth}{../../PresTeX/images/biodiv-schaal}{Statistical framework for BioDiv2Go\cite{Schaal2017}}{img:biodiv-schaal}
TODO \cite{Ahlqvist2018} %TODO

View File

@ -1,37 +1,29 @@
\section{Analyseframework}
\subsection{Goal definition}
A Framework for the Analysis of Spatial Game Data
\begin{itemize}
\item built-in analysis=> fixed implementation, no cross-game evaluations (independant results/methods etc)
\item framework
\begin{itemize}
\item create + store game log
\item per-game importer
\item analyzer modules crunch numbers
\item output/visualization
\item interface
\item cross-game comparisons
\end{itemize}
\end{itemize}
\section{scope}
todo
\begin{itemize}
\item framework for analysis
\item expert users/researcher vs. staging/designing
\item integration von externen daten (fragebögen => CSV o.ä.)
\item adaptable for multiple games
\end{itemize}
not todo
\begin{itemize}
\item interpretation
\item fragebögen
\item Framework for analysis
\item Two target groups:
\begin{itemize}
\item Expert users/researchers
\item Staging/designing staff
\end{itemize}
\item Integration of external data (questionnaire results)
\item Adaptable for multiple games
\end{itemize}
steps
\begin{enumerate}
\item import data
\item analyze data
\item store/render/… results
\end{enumerate}
\subsection{Components}
Prerequisites: Game log
\begin{itemize}
\item Creation
\item Storage
\end{itemize}
New components
\begin{itemize}
\item Per-game importer (Web client, File loader, …)
\item Analyzer modules (number crunching)
\item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …)
\item Interface (Configuration)
\item Cross-game comparisons
\end{itemize}

View File

@ -288,4 +288,70 @@ focus was to look for correlations between variables in the game.}
\item
\end{itemize}
\end{itemize}
\section{1. vortrag}
\section{State of research}
\subsection{Log processing}
Modern log processing stacks
Technologies: Collection, Time-series databases, Frontend
\begin{itemize}
\item ELK (Elastic search, Logstash, Kibana)\cite{andreassen2015monitoring} \cite{yang2016aggregated} \cite{steinegger2016analyse} \cite{sanjappa2017analysis}
\item Collectd, Influx DB, Grafana \cite{komarek2017metric}
\item
\end{itemize}
\begin{itemize}
\item[+] widely deployed
\item[+] powerful query languages %TODO example
\item mainly web/container/hardware monitoring
\item[-] spatial analysis: heavily anonymized
\item[-] fast-paced environment
\end{itemize}
\subsection{Pedestrian traces}
Analyzing pedestrian movement … based on GPS logs
\begin{itemize}
\item GPS overestimates systematically \cite{Ranacher_2015}
\item GPS is a suitable instrument for spatio-temporal data\cite{van_der_Spek_2009}
\item Activity mining \cite{Gong_2014}
\begin{itemize}
\item Speed-based Clustering \cite{ren2015mining}
%\item \cite{Ferrante_2016} % closed access
\item Machine Learning \cite{pattern_recog} %TODO
\end{itemize}
\item E.g.: Improve tourist management \cite{tourist_analysis2012}
\end{itemize}
\image{.81\textwidth}{../../PresTeX/images/strava}{Heatmap: Fitnesstracker\cite{strava}}{img:strava}
\image{.72\textwidth}{../../PresTeX/images/space-time}{Space-time cube examples\cite{bach2014review}}{img:spacetime}
\image{\textwidth}{../../PresTeX/images/traj-pattern}{Flock and meet trajectory pattern\cite{jeung2011trajectory}}{img:traj-pattern}
\image{\textwidth}{../../PresTeX/images/generalization}{Trajectories and generalizations with varying radius parameter \cite{adrienko2011spatial}}{img:generalization}
\subsection{Analyzing games}
\begin{itemize}
\item there's more than heatmaps
\item combine position with game actions
\item identify patterns, balancing issues
\item manual processes %\citetitle{Drachen2013}\citetitle{AHLQVIST20181}
\end{itemize}
%\image{.5\textwidth}{game-an}{chat logs with players location \cite{Drachen2013}}{img:chatlogs}
%\image{.5\textwidth}{ac3-death}{identify critical sections \cite{Drachen2013}}{img:ac3death}
\twofigures{0.5}{../../PresTeX/images/game-an}{Chat logs with players location}{img:chatlogs}{../../PresTeX/images/ac3-death}{Identify critical sections}{img:ac3death}{Game analytics \cite{Drachen2013}}{fig:gameanal}
\subsection{Summary}
\begin{itemize}
\item Log processing: Powerful stacks
\item Movement analysis: Large field already explored (GPS influence, Patterns, Behavior recognition, …)
\item Track rendering: Track (with attributes), Space-time cube, Heatmap, …
\item Spatial analysis of digital games with GIS
\item Analysis of location based games: Laborious manual process
\end{itemize}

View File

@ -1,57 +1,58 @@
\section{modulare auswahl von metriken}
\subsection{Requirements}
Wait, what did I want to do again?
\begin{itemize}
\item base set of analytic functions
\item extendable for special cases
\item
\item Per-game importer (Web client, File loader, …)
\item Analyzer modules (number crunching)
\item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …)
\item Interface (Configuration)
\begin{itemize}
\item Expert users/researchers
\item Staging/designing staff
\end{itemize}
\item Cross-game comparisons
\item Integration of external data (questionnaire results)
\end{itemize}
\section{spiel unabhängig}
\begin{itemize}
\item log importer/transformer necessary
\end{itemize}
\section{log processing taugt nich}
\subsection{Experiment: Kibana}
… taugt nich
\begin{itemize}
\item powerful timeseries database
\item complex setup
\item fast paced environment
\item low spatial resolution => privacy optimized
\end{itemize}
\image{.85\textwidth}{../../PresTeX/images/kibana}{Game trace in Kibana}{img:kibana}
\image{.85\textwidth}{../../PresTeX/images/kibana2}{Game trace in Kibana}{img:kibana2}
\section{architekturmodell}
\subsection{Architecture}
Game independance:
\begin{itemize}
\item map-reduce ähnlich
\begin{enumerate}
\item input transformation
\item analysis/extension (looping)
\item render (image,csv,json,…)
\end{enumerate}
\image{.75\textwidth}{flowchart}{arch dlowcahrt}{img:flowchart}
\item log importer/transformer necessary
\end{itemize}
\begin{itemize}
\item Based on map-reduce
\item Map: Analysis
\begin{itemize}
\item Iterate Log entries
\item Feed log entry through analyzer queue
\begin{itemize}
\item Augment entries
\item Filter entries
\item Sequential order
\end{itemize}
\end{itemize}
\item Reduce: Collect summaries from analyzers
\begin{itemize}
\item Rendering
\item Post-processing, Comparison, …
\end{itemize}
\item standalone (indep. of any game)
\item own client for game server (due to CORS/XSS prevention prohibiting shared use of game server assets in other host)
\item API for integration
\item allow load distribution
\end{itemize}
====
\begin{itemize}
\item map-reduce like
\item map: analyse-läufe
\begin{itemize}
\item log-eintrags basiert
\item reichern log an
\item filtern log
\item metriken über komplette log => extern gespeichert
\item => evtl. Abhängigkeiten in Reihenfolge
\item basis-funktionalität || spiel-bezogen
\end{itemize}
\item reduce: Operieren mit Ergebnissen (über alle verarbeiteten logs hinweg)
\begin{itemize}
\item render
\item verteilung, …
\end{itemize}
\end{itemize}
\image{\textwidth}{map-reduce.pdf}{Data flows}{img:flow}

View File

@ -0,0 +1,45 @@
\section{klassenstruktur}
\section{konfigurierbarkeit (log import)}
\section{...}
\section{1. vortrag}
\section{Outlook: Implementation}
\subsection{Implementation}
Analysis
\begin{itemize}
\item Python (3.6)
\item Standalone library/CLI tool
\item Web based configuration/Runner/API (Flask)
\end{itemize}
Rendering
\begin{itemize}
\item Matplotlib, Numpy
\begin{itemize}
\item Graphs
\end{itemize}
\item Javascript
\begin{itemize}
\item Leaflet
\item Web visualization: Maps, Tracks, …
\end{itemize}
\end{itemize}
\pic{.5\textwidth}{../../PresTeX/images/matplotlib}
\pic{.5\textwidth}{../../PresTeX/images/python}
\pic{.4\textwidth}{../../PresTeX/images/flask}
\pic{.4\textwidth}{../../PresTeX/images/leaflet}
\subsection{Examples}
Configuration \& results
\twofigures{0.5}{../../PresTeX/images/oeb-kml}{Analyzer configuration}{img:oebkml}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge}{Example: Generate KML tracks (BioDiv2Go; Oberelsbach2016)}{fig:oeb2016}
{ActivityMapper}
\image{.7\textwidth}{../../PresTeX/images/track-fi}{Combined screen activity and spatial progress}{img:trackfi}
{Graphs}
\image{\textwidth}{../../PresTeX/images/simu-retries}{Experimentational rounds}{img:retries}
\image{\textwidth}{../../PresTeX/images/speed}{Speed distribution}{img:speed}
\image{.9\textwidth}{../../PresTeX/images/time-rel}{Time distribution}{img:time}

View File

@ -0,0 +1,8 @@
\section{Setup für Kibana}
\lstinputlisting[language=yaml,caption={Docker-compose file for Kibana test setup},label=code:kibana]{code/kibana-docker-compose.yml}
\section{Biogames Server Dockerized}
\image{\textwidth}{biogames.pdf}{Dockerized setup for biogames}{img:bd2gdocker}
\lstinputlisting[language=yaml,caption={Docker-compose file for Biogames server},label=code:bd2s]{code/biogames/docker-compose.yml}
\lstinputlisting[language=yaml,caption={Dockerfile for Biogames server},label=code:bd2d]{code/biogames/Dockerfile}
\lstinputlisting[language=bash,caption={Entrypoint for Biogames docker container},label=code:bd2e]{code/biogames/start.sh}
\lstinputlisting[language=yaml,caption={Dockerfile for Traefik reverse proxy},label=code:bd2t]{code/traefik.yml}

View File

@ -11,18 +11,23 @@
\input{content/3-solution}
\chapter{umsetzung}
%\input{content/4-implementation}
\section{klassenstruktur}
\section{konfigurierbarkeit (log import)}
\section{...}
\input{content/4-implementation}
\chapter{evaluierung}
%\input{content/5-evaluation}
\section{wie viele metriken umsetzbar?}
\section{erweiterbarkeit}
\section{Portierbarkeit (anderes game)}
\begin{verbatim}
\end{verbatim}
\chapter{diskussion}
%\input{content/6-discussion}
\begin{verbatim}
\end{verbatim}
\section{dummies}
\cite{zheng2011computing}

View File

@ -0,0 +1,11 @@
graph{
//rankdir="LR";
s [label="Web-App\nBiogames"];
c [label="Worker\nCelery"];
db [label="DB\nPostgres"];
t [label="HTTP frontend\nTraefik"];
s -- db [];
c -- db [label="Internal network"];
t -- s [label=" External network,\nlabel"];
}

View File

@ -61,7 +61,8 @@
\newpage
\listoftables
\newpage
\listofalgorithms
%\listofalgorithms
\lstlistoflistings
\newpage
%% Falls nur Abkuerzungs- oder Symbolverzeichnis benoetigt wird, folgende Befehle benutzen %%
%\printnomenclature
@ -108,6 +109,7 @@
\appendix
\setstretch{1.5}
\chapter{Anhang}
\input{content/appendix}
\setstretch{1.1}
\cleardoubleemptypage

View File

@ -277,7 +277,7 @@ Ich erkläre hiermit gemäß § 17 Abs. 2 APO, dass ich die vorstehende \degree
%===============================================================================
% Listing Styles
%===============================================================================
\lstset{basicstyle=\ttfamily,showstringspaces=false,commentstyle=\color{unibagrayI},keywordstyle=\color{unibablueI},breaklines=true}
\lstset{basicstyle=\ttfamily,showstringspaces=false,commentstyle=\color{unibagrayI},keywordstyle=\color{unibablueI},breaklines=true,captionpos=b}
\DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{9} % for bold
\DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{9} % for normal
\lstset{