Skip to content

Commit

Permalink
add initial basics chapter
Browse files Browse the repository at this point in the history
  • Loading branch information
felix-kaestner committed Feb 28, 2021
1 parent a9fad2b commit a63048c
Show file tree
Hide file tree
Showing 21 changed files with 211 additions and 111 deletions.
5 changes: 2 additions & 3 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"recommendations": [
"james-yu.latex-workshop",
"davidlday.languagetool-linter",
"adamvoss.vscode-languagetool-de"
"valentjn.vscode-ltex",
"james-yu.latex-workshop"
]
}
15 changes: 8 additions & 7 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{
"languageTool.language": "de-DE",
"languageToolLinter.languageTool.language": "de-DE",
"languageToolLinter.languageTool.motherTongue": "de-DE",
"languageToolLinter.serviceType": "public",
"languageToolLinter.lintOnOpen": true,
"languageToolLinter.smartFormat.onSave": true,
"languageToolLinter.languageTool.ignoredWordsInWorkspace": [],
"ltex.enabled": true,
"ltex.language": "de-DE",
"ltex.additionalRules.motherTongue": "de-DE",
"ltex.additionalRules.enablePickyRules": true,
"ltex.checkFrequency": "edit",
"latex-workshop.docker.enabled": true,
"latex-workshop.docker.image.latex": "kaestner/latex:edge",
"latex-workshop.latex.autoBuild.run": "never"
}
12 changes: 11 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ ARG USER_ID=1000
ARG USER_NAME=latex
ARG USER_HOME=/home/latex
ARG USER_GECOS=LaTeX
ARG BASE_IMAGE=aergus/latex
ARG BASE_IMAGE=kaestner/latex:edge

FROM ${BASE_IMAGE} as latex

Expand All @@ -11,19 +11,29 @@ ARG USER_HOME
ARG USER_ID
ARG USER_GECOS

USER root

# delete default latex user
RUN deluser \
--remove-home \
"latex"

# create new user from build arguments
RUN adduser \
--home "$USER_HOME" \
--uid $USER_ID \
--gecos "$USER_GECOS" \
--disabled-password \
"$USER_NAME"

# create user home directory and set permissions
RUN mkdir -p $USER_HOME \
&& chown "$USER_NAME:$USER_NAME" $USER_HOME

# switch into home directory as working directory
WORKDIR $USER_HOME

# switch to new user
USER $USER_NAME

FROM latex as build
Expand Down
12 changes: 6 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@ DIR:=$(shell sh -c "pwd")
USER_ID:=$(shell sh -c "id -u")
USER_NAME:=$(shell sh -c "id -u -n")
USER_HOME:=/home/latex
BASE_IMAGE:=aergus/latex
DOCKER_IMAGE:=mustermann/latex
BASE_IMAGE:=kaestner/latex:edge
DOCKER_IMAGE:=kaestner/output-app

.PHONY: all

thesis:
@docker build --output ./ .

serve:
@docker run --rm -v $(DIR):$(USER_HOME) $(DOCKER_IMAGE) bash -c "latexmk -quiet -pdf -pvc -view=none thesis"
shell: container
@docker run -it --rm -v $(DIR):$(USER_HOME) $(DOCKER_IMAGE) bash

clean:
clean: container
@docker run --rm -v $(DIR):$(USER_HOME) $(DOCKER_IMAGE) bash -c "latexmk -C"

count:
count: container
@docker run --rm -v $(DIR):$(USER_HOME) $(DOCKER_IMAGE) bash -c "texcount -inc thesis.tex"

container:
Expand Down
Empty file removed images/.gitkeep
Empty file.
Binary file added images/databinding.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion images/example.drawio

This file was deleted.

Binary file removed images/example.pdf
Binary file not shown.
Binary file removed images/example.png
Binary file not shown.
Binary file added images/navigation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/tla.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/viewbinding.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions sections/01_introduction.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
\chapter{Einleitung}\label{ch:einleitung}\pagenumbering{arabic}

Mit OUTPUT.DD veranstaltet die Fakultät Informatik der Technischen Universität Dresden jährlich eine Projektschau, auf welcher wissenschaftliche Projekte von Studenten, Firmen und Mitarbeitern präsentiert und ausgestellt werden. Ziel ist es für die unterschiedlich Themen und Fachbereiche der Informatik zu begeistern, einen Einblick in die aktuelle Forschung zu gewähren und die Kommunikation zu fördern. Ergänzend zur Veranstaltung wie eine App für die Betriebssysteme iOS und Android bereitgestellt. Neben einem Veranstaltungsplan, einer interaktiven Kartenansicht und einem Twitter-Feed findet sich auch ein Spiel in der App wieder. Letzteres wurde durch ein Gamification\footnote{Gamification. Anwendung von Spielelementen in einem spielfremden Kontext.}-Konzept erweitert, um die Interaktion von Nutzern zu steigern. Gleichzeitig wird ein aus dem Forschungsprojekt CONIC\footnote{CONIC. \url{https://tu-dresden.de/ing/informatik/sya/professur-fuer-rechnernetze/forschung/conic}} hervorgegangenes Beaconing-Framework zur Aufzeichnung der Bewegung von Nutzern auf der Messe verwendet. Diese Informationen werden genutzt, um das Besucheraufkommen zu analysieren und anschließend als Heatmap in der interaktiven Kartenansicht darzustellen. Außerdem wurden die Apps nach dem Offline-First-Prinzip aus dem Forschungsbereich Ubiquitäre App-Entwicklung konzipiert. Dabei werden Daten zunächst lokal auf den Geräten der Nutzer gespeichert und nur bei einer vorliegenden Netzwerkverbindung zum Server-Backend synchronisiert. Dadurch kann die Funktionalität der Apps auch ohne Internetverbindung genutzt werden, während die Aktualisierung der Daten im Hintergrund geschieht. Über den Verlauf des Sommersemester 2020 wurden bereits Datenbank-Frameworks für die jeweiligen Plattformen entwickelt, welche die Anbindung der NoSQL-Datenbank Couchbase\footnote{Couchbase. Open-Source NoSQL Dokumenten-basiertes Datenbankmanagementsystem. \newline \url{https://www.couchbase.com}} ermöglichen. Die Architektur dieser Frameworks basiert auf dem Repository-Pattern\footnote{Repository-Pattern. Design-Pattern zur Abstraktion und Separation von Datenbankabfragen durch die Bereitstellung von Methoden zum Lesen, Schreiben und Löschen von Daten.}.

\section{Problemstellung}

Um die Integration der Frameworks in die Apps durchzuführen, musste die Substitution des Datenbank-Backends analysiert und geplant werden. Die Implementation der vergangenen Jahre verwendete den Dienst Realm\footnote{Realm. Open-Source Objekt-basiertes Datenbankmanagementsystem für mobile Plattformen. \newline \url{https://realm.io/}}. Aufgrund der jahrelangen Entwicklung durch mehrere Entwickler mit unterschiedlichen Kenntnissen, Qualitätsansprüchen und Zeitvorgaben enthielten die vorangegangenen Implementationen der Apps eine Reihe von Problemen. Neben strukturellen Antipatterns wie der schwer nachvollziehbare Ordner- und Dateistrukturierung fanden wir einen Großteil von ungenutztem Quellcode wieder. Ebenfalls wurden die von der IDE bereitgestellten Fehler- und Warnmeldungen explizit deaktiviert. Zusätzlich ergaben sich durch die fehlende Separierung von View- und Model-Code weitere Hürden. So wurden Zugriffe auf die Realm-Datennbank als Bestandteil von Lifecycle-Methoden durchgeführt. Moderne Komponenten der Android-Bibliothek blieben hingegen ungenutzt, ebenso wie die Vorzüge der modernen Programmiersprache Kotlin.

\section{Ziele der Projektarbeit}

Da OUTPUT.DD 2020 durch die bestehende COVID-19-Pandemie nicht stattfinden konnte, wurde im Projektteam entschlossen, eine Neuimplementation der Apps auf der Basis von modernen Konzepten der App-Entwicklung durchzuführen. Dabei sollte die Integration des neuen Datenbank-Backends eine zentrale Rolle spielen. Ebenso war es Ziel der Arbeit die jeweils aktuellsten Technologien einzubinden und damit die Möglichkeiten der Plattformen auszunutzen. Bei der Implementation der Android-App wurde sich für die Verwendung der Programmiersprache Kotlin entschieden, während die iOS-App mittels der Programmiersprache Swift und des UI-Frameworks Swift-UI neu implementiert wurde. Neben den technischen Aspekten sollte auch das visuelle Erscheinungsbild modernisiert und auf einen aktuellen Stand gebracht werden. Ziel der Neuimplementation war es, die oben beschriebenen Probleme zu beseitigen und durch die Einführung von Architektur- und Struktur-Patterns eine Weiterentwicklung der Apps zu erleichtern sowie einen hohen Qualitätsstandard für die zukünftigen Jahre zu definieren. Diese Dokumentation soll dazu dienen, die verwendeten Konzepte vorzustellen und einen Überblick über den Entwurfsprozess zu geben.
Loading

0 comments on commit a63048c

Please sign in to comment.