Compare commits
88 Commits
doc-0.0.0-
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 27ef0a0ba7 | |||
| 6e124dfb67 | |||
| d900fa258d | |||
| 1f21067f75 | |||
| 0306fabb91 | |||
| a52d5ab983 | |||
| 25fc5690fe | |||
| f88a170d86 | |||
| 71678fafa3 | |||
| 898d7eacce | |||
| deb8173bde | |||
| 2bfede6112 | |||
| ae5ecf8564 | |||
| 48b6193507 | |||
| d2c877fe42 | |||
| e065b1f6ff | |||
| 6a6786f6bc | |||
| 803bdb234a | |||
| e30c4086e2 | |||
| 9f827889f9 | |||
| a7d0f34a14 | |||
| e4dc1dc97c | |||
| 522e60793a | |||
| 4518e8142e | |||
| 8bde5bc89b | |||
| d57913c339 | |||
| aa983da15d | |||
| dfec681d34 | |||
| 1e5696cd50 | |||
| bafe030e25 | |||
| 62a6dd1fe3 | |||
| b975d4e270 | |||
| 8ce0d4e186 | |||
| c6ebf25659 | |||
| 2bb2161e2f | |||
| 7d570e9945 | |||
| 65983a2f38 | |||
| a27136bbe3 | |||
| 764b18e41a | |||
| b07fc29512 | |||
| f6718139cc | |||
| b944048df3 | |||
| 7eb4e0761e | |||
| 1bfd8b3a96 | |||
| 020707c380 | |||
| e623ca9340 | |||
| 76e0d6b65f | |||
| b408cb0d0f | |||
| 23fe2c0863 | |||
| dd8eb9d269 | |||
| c8f95f5169 | |||
| 450509008d | |||
| c780145790 | |||
| 9d96f7eafc | |||
| eb9b4c4c1f | |||
| 2cd24abcde | |||
| c030d304f5 | |||
| b950ec6d66 | |||
| c52d5b3303 | |||
| f87090357c | |||
| 8bedef1f85 | |||
| c966caf7f9 | |||
| c19ae8a982 | |||
| 26d56c0d24 | |||
| f5223405a5 | |||
| 7ab7e9e25d | |||
| 370942efe1 | |||
| 490912aaca | |||
| 6d15ab6b0a | |||
| aa1353adce | |||
| bbb2f94944 | |||
| f25d6be858 | |||
| b2d89e7830 | |||
| c4d0bb1a9a | |||
| 2aeb5f2f8f | |||
| 8a150208dd | |||
| 6798cbf877 | |||
| 63f9f721a2 | |||
| ea9479628c | |||
| 4ddb7d8904 | |||
| aa704577ad | |||
| 15eb9d9d5e | |||
| f11fcb68fe | |||
| 37262ff470 | |||
| 8da8374a1b | |||
| d397f0cd60 | |||
| b450fd6475 | |||
| 6789fa6f9d |
@@ -6,8 +6,9 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build the debian package
|
||||
name: Convert to PDF
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: "Git clone"
|
||||
run: git clone ${{ gitea.server_url }}/${{ gitea.repository }}.git .
|
||||
@@ -15,14 +16,30 @@ jobs:
|
||||
run: git checkout "${{ gitea.sha }}"
|
||||
- name: "Submodules auschecken"
|
||||
run: git submodule update --init
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: sudo apt-get update && sudo apt-get install pandoc
|
||||
|
||||
- name: "Build .deb"
|
||||
run: cd ./Defensio && ./pandoc.sh
|
||||
- name: "Debug"
|
||||
run: ls -la ./Defensio
|
||||
- uses: docker://git.kocoder.xyz/docker/ga-pandoc:d2995fb914e313703da2c7754763e7fa01dae88f
|
||||
name: Pandoc
|
||||
with:
|
||||
env: TEXINPUTS=./Defensio:./Defensio/libs/awesome-beamer/:./Defensio/libs/smile/
|
||||
command: pandoc
|
||||
args: >-
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/01_Praesentation_Allgemein.md
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/02_Praesentation_Konstantin_Hintermayer.md
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/03_Praesentation_Florian_Edlmayer.md
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/04_Praesentation_Adam_Gaiswinkler.md
|
||||
-t beamer
|
||||
--template /workspace/Diplomarbeit-Absolventenverein/pm/Defensio/00_preamble.tex
|
||||
--pdf-engine=pdflatex
|
||||
--slide-level=2
|
||||
--number-sections
|
||||
--lua-filter /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/diagram/diagram.lua
|
||||
--syntax-definition /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/razor/razor.xml
|
||||
--syntax-definition /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/nginx/nginx.xml
|
||||
-o defensio.pdf
|
||||
- name: "Create release"
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
files: |-
|
||||
./Defensio/defensio.pdf
|
||||
./Defensio/Images/*
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
name: Word Count
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main", "master" ]
|
||||
pull_request:
|
||||
branches: [ "main", "master" ]
|
||||
|
||||
|
||||
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
diplomarbeitsbuch.pdf
|
||||
defensio.pdf
|
||||
@@ -1,4 +1,4 @@
|
||||
\documentclass[aspectratio=169]{beamer}
|
||||
\documentclass[aspectratio=169,t]{beamer}
|
||||
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
@@ -33,13 +33,14 @@
|
||||
\usepackage{pgfplots}
|
||||
\usepackage{pgfplotstable}
|
||||
% \usepackage{fontawesome}
|
||||
\usepackage{fontawesome5}
|
||||
\usepackage{tikzpingus}
|
||||
\usepackage{tikzducks}
|
||||
\usepackage{pdfpc}
|
||||
\usepackage{amsmath}
|
||||
|
||||
\usepgfplotslibrary{dateplot}
|
||||
\usetikzlibrary{shapes,tikzmark}
|
||||
\usetikzlibrary{shapes,tikzmark,positioning,shapes.geometric}
|
||||
\tikzset{pipelinestep/.style={lw,rnd,shape=signal,signal from=west,signal pointer angle=130,minimum width=3cm,minimum height=2cm,draw=black,fill=lightgray!30}}
|
||||
|
||||
\def\info#1{\begingroup\color{gray}\scriptsize#1\endgroup}
|
||||
@@ -67,13 +68,12 @@
|
||||
|
||||
\title[AlumniHub]{AlumniHub}
|
||||
\subtitle{Web-Entwicklung für den Absolventenverein}
|
||||
\author{Konstantin Hintermayer \\ Adam Gaiswinkler \\ Florian Edlmayer}
|
||||
\author{Konstantin Hintermayer \\ Florian Edlmayer \\ Adam Gaiswinkler}
|
||||
\email{}
|
||||
\institute{Schulzentrum HTL HAK Ungargasse}
|
||||
\uni{Schulzentrum HTL HAK Ungargasse}
|
||||
\location{Wien}
|
||||
\background{./Images/images/background/title-slide/background.png}
|
||||
\logo{\includegraphics[width=3cm]{\imagepath/images/logos/logo.png}}
|
||||
\date{22. April 2026}
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
{
|
||||
\begingroup
|
||||
\nonumberson
|
||||
\begin{frame}[noframenumbering,plain]{Agenda}
|
||||
\begin{frame}[c,noframenumbering,plain]{Agenda}
|
||||
\tableofcontents[currentsection]
|
||||
\end{frame}
|
||||
\endgroup
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
\begingroup
|
||||
\nonumberson
|
||||
\begin{frame}[noframenumbering,plain]{Agenda}
|
||||
\begin{frame}[c,noframenumbering,plain]{Agenda}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
\endgroup
|
||||
|
||||
@@ -4,8 +4,10 @@
|
||||
|
||||
## {.plain}
|
||||
|
||||
\setbeamertemplate{sidebar left}{}
|
||||
|
||||
\begin{tikzpicture}[remember picture,overlay]
|
||||
\node[anchor=center] at (current page.center) {
|
||||
\movie[width=\paperwidth, height=\paperheight, poster, showcontrols=false, autostart]{}{\imagepath/video/introduction/sample-10s.mp4}
|
||||
\node[anchor=center, inner sep=0pt, outer sep=0pt] at (current page.center) {
|
||||
\movie[width=\paperwidth, height=\paperheight, poster, showcontrols=false, autostart]{}{\imagepath/video/introduction/introduction.mp4}
|
||||
};
|
||||
\end{tikzpicture}
|
||||
|
||||
@@ -4,20 +4,24 @@
|
||||
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
Aufgabenbereiche:
|
||||
::: {.column width="50%"}
|
||||
**Aufgabenbereiche**:
|
||||
|
||||
- Infrastruktur & CI/CD
|
||||
- Product Owner
|
||||
- Kundenschnittstelle
|
||||
- Softwareentwicklung:
|
||||
- Infrastruktur & CI/CD
|
||||
|
||||
**Softwareentwicklung:**
|
||||
|
||||
- Event Registration
|
||||
- Black Board
|
||||
- Report System
|
||||
- Mass Mailer
|
||||
::::
|
||||
- Token Lifetime
|
||||
|
||||
:::: column
|
||||
:::
|
||||
|
||||
::: {.column width="50%"}
|
||||
|
||||
\begin{tikzpicture}
|
||||
\clip (0,0) circle (3em);
|
||||
@@ -25,78 +29,237 @@ Aufgabenbereiche:
|
||||
\draw[accent, line width=3pt] (0,0) circle (3em);
|
||||
\end{tikzpicture}
|
||||
|
||||
::::
|
||||
:::
|
||||
|
||||
:::
|
||||
|
||||
## Infrastruktur
|
||||
|
||||
::: columns
|
||||
:::: column
|
||||
::: {.column width="50%"}
|
||||
|
||||
Systemaufbau:
|
||||
**Entwicklung:**
|
||||
|
||||
- Debian Linux
|
||||
- PostgreSQL
|
||||
- NginX
|
||||
- Asp.Net Core
|
||||
- **Gitea:** Versionskontrollsystem
|
||||
- **Wireguard:** VPN
|
||||
- **Docker:** Containerisierung
|
||||
- **GitHub:** Transfer
|
||||
- **Gitea Actions:** CI/CD
|
||||
|
||||
::::
|
||||
:::: column
|
||||
:::
|
||||
::: {.column width="50%"}
|
||||
|
||||
Entwicklungsumgebung:
|
||||
**Produktion:**
|
||||
|
||||
- Gitea Server
|
||||
- Wireguard
|
||||
- Docker
|
||||
- Transfer: GitHub
|
||||
- Gitea Actions
|
||||
- **Debian:** Betriebssystem
|
||||
- **NginX:** Reverse Proxy
|
||||
- **PostgreSQL:** Datenbank
|
||||
- **Oqtane:** CMS
|
||||
|
||||
::::
|
||||
:::
|
||||
:::
|
||||
|
||||
\vfill
|
||||
|
||||
## CI/CD
|
||||
\begin{center}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/debian.pdf} \hspace{1em}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/docker.pdf} \hspace{1em}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/gitea.pdf} \hspace{1em}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/wireguard.pdf} \hspace{1em}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/github.pdf} \hspace{1em}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/nginx.pdf} \hspace{1em}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/postgres.pdf} \hspace{1em}
|
||||
\includegraphics[width=2.5em]{./Images/images/konstantin/logos/oqtane.pdf}
|
||||
\end{center}
|
||||
|
||||
CI:
|
||||
\vfill
|
||||
<!-- { width=100% } -->
|
||||
|
||||
- Gitea Actions
|
||||
- Debian Packages (.deb)
|
||||
- Code-Reviewing:
|
||||
- KI
|
||||
- Git-Flow
|
||||
## {.unnumbered .noframenumbering}
|
||||
|
||||
## Softwarearchitektur
|
||||
\vfill
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant browser as Client
|
||||
participant nginx as NginX
|
||||
participant oqtane as Oqtane
|
||||
participant db as PostgreSQL
|
||||
|
||||
browser->>+nginx: HTTPS => 0.0.0.0:443
|
||||
nginx->>nginx: SSL Terminierung
|
||||
nginx->>+oqtane: HTTP => 127.0.0.1:5000
|
||||
oqtane->>+db: SQL => 127.0.0.1:5432
|
||||
db-->>-oqtane: SQL
|
||||
oqtane-->>-nginx: HTTP
|
||||
nginx-->>-browser: HTTPS
|
||||
```
|
||||
|
||||
\vfill
|
||||
|
||||
## Vom Commit zu Paket
|
||||
|
||||
\begin{tikzpicture}[
|
||||
node distance=1cm,
|
||||
stepnode/.style={circle, minimum size=1.2cm, draw, line width=1.5pt, fill=white, inner sep=0pt},
|
||||
labelnode/.style={align=center, font=\small\bfseries},
|
||||
textnode/.style={align=center, font=\scriptsize, color=gray},
|
||||
track/.style={line width=2pt, gray!20}
|
||||
]
|
||||
% Central Track
|
||||
\draw[track] (-1,0) -- (12,0);
|
||||
|
||||
\node[stepnode, draw=red] (n1) at (0,0) {\color{red}\small\faCodeBranch};
|
||||
\node[stepnode, draw=green!60!black, right=of n1] (n2) {\color{green!60!black}\small\faTag};
|
||||
\node[stepnode, draw=blue!60!black, right=of n2] (n3) {\color{blue!60!black}\small\faTasks};
|
||||
\node[stepnode, draw=green!60!black, right=of n3] (n4) {\color{green!60!black}\small\faBoxOpen};
|
||||
\node[stepnode, draw=blue!60!black, right=of n4] (n5) {\color{blue!60!black}\small\faDatabase};
|
||||
|
||||
% Labels Above
|
||||
\node[labelnode, below=0.2cm of n1, color=red] {Commit};
|
||||
\node[labelnode, below=0.2cm of n2, color=green!60!black] {Tag};
|
||||
\node[labelnode, below=0.2cm of n3, color=blue!60!black] {CI/CD};
|
||||
\node[labelnode, below=0.2cm of n4, color=green!60!black] {.deb Paket};
|
||||
\node[labelnode, below=0.2cm of n5, color=blue!60!black] {Registry};
|
||||
\end{tikzpicture}
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
**Ablauf:**
|
||||
|
||||
1. laufende Entwicklung
|
||||
2. Commit zu einem Release zusammenfassen (Tag)
|
||||
3. CI/CD Pipeline beginnt zu laufen
|
||||
4. .deb Paket wird gebaut
|
||||
5. .deb Paket wird in der Registry abgelegt
|
||||
|
||||
## Softwarearchitektur (.NET / Oqtane)
|
||||
|
||||
**Design Patterns:**
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
\begin{tikzpicture}[
|
||||
node distance=0.15cm,
|
||||
stepnode/.style={rectangle, draw, line width=1.5pt, minimum width=1.5cm, minimum height=1.5cm, fill=white, inner sep=0pt},
|
||||
]
|
||||
\node[stepnode, draw=red] (n1) at (0,0) {\LARGE\color{red}S};
|
||||
\node[stepnode, draw=green!60!black, right=of n1] (n2) {\LARGE\color{green!60!black}O};
|
||||
\node[stepnode, draw=blue!60!black, right=of n2] (n3) {\LARGE\color{blue!60!black}L};
|
||||
\node[stepnode, draw=orange, right=of n3] (n4) {\LARGE\color{orange}I};
|
||||
\node[stepnode, draw=orange!70!black, right=of n4] (n5) {\LARGE\color{orange!70!black}D};
|
||||
\end{tikzpicture}
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
- Open-Closed Principle
|
||||
- Strategy Pattern
|
||||
- Dependency Injection
|
||||
- Dependency Injection (IServiceProvider)
|
||||
- Repository-Pattern (EntityFramework)
|
||||
|
||||
## Technischer Vergleich
|
||||
|
||||
Bisherige Erfahrungen:
|
||||
|
||||
- Go
|
||||
- Typescript
|
||||
- GRPC (interprozess Kommunikation)
|
||||
|
||||
Untersuchungsgebiete:
|
||||
|
||||
- Typisierung
|
||||
- Konsistenz
|
||||
|
||||
## Teamleitung
|
||||
## Module
|
||||
|
||||
::: columns
|
||||
::: {.column width="50%"}
|
||||
**Admin Module:**
|
||||
|
||||
:::: column
|
||||
left
|
||||
::::
|
||||
- Mass Mailer
|
||||
- Token Lifetime
|
||||
- Report System
|
||||
|
||||
:::: column
|
||||
right
|
||||
::::
|
||||
**Allgemeine Module:**
|
||||
|
||||
- Event Registration
|
||||
- Black Board
|
||||
|
||||
:::
|
||||
::: {.column width="50%"}
|
||||
\vfill
|
||||

|
||||
\vfill
|
||||
:::
|
||||
:::
|
||||
|
||||
## Produktion $\neq$ Staging
|
||||
|
||||
\begin{tikzpicture}[
|
||||
node distance=2.2cm,
|
||||
stepnode/.style={circle, minimum size=1.2cm, draw, line width=1.5pt, fill=white, inner sep=0pt},
|
||||
labelnode/.style={align=center, font=\small\bfseries},
|
||||
textnode/.style={align=center, font=\scriptsize, color=gray},
|
||||
track/.style={line width=2pt, gray!20}
|
||||
]
|
||||
% Central Track
|
||||
\draw[track] (-1,0) -- (12,0);
|
||||
|
||||
% Steps
|
||||
\node[stepnode, draw=green!60!black] (s1) at (0,0) {\color{green!60!black}\Large\faCheck};
|
||||
\node[stepnode, draw=accent, right=of s1] (s2) {\color{accent}\Large\faCodeBranch};
|
||||
\node[stepnode, draw=red, right=of s2] (s3) {\color{red}\Large\faExclamationTriangle};
|
||||
\node[stepnode, draw=orange, right=of s3] (s4) {\color{orange}\Large\faLightbulb};
|
||||
|
||||
% Labels Above
|
||||
\node[labelnode, above=0.2cm of s1, color=green!60!black] {Staging};
|
||||
\node[labelnode, above=0.2cm of s2, color=accent] {Deploy};
|
||||
\node[labelnode, above=0.2cm of s3, color=red] {Bruch};
|
||||
\node[labelnode, above=0.2cm of s4, color=orange] {Erkenntnis};
|
||||
\end{tikzpicture}
|
||||
|
||||
\vfill
|
||||
|
||||
::: columns
|
||||
::: {.column width="40%"}
|
||||
"It works on my Machine"
|
||||
:::
|
||||
::: {.column width="60%"}
|
||||
**Deploymentprobleme**
|
||||
|
||||
**Problem:** Schlechte Dokumentation.
|
||||
|
||||
**Lösung:** Debugging mithilfe von Wireshark und Source Code lesen.
|
||||
:::
|
||||
:::
|
||||
|
||||
|
||||
## Teamleitung & PM
|
||||
|
||||
::: columns
|
||||
:::: column
|
||||
**Scrum Workflow:**
|
||||
|
||||
- 14-tägige Sprints
|
||||
- Weeklies & Retrospektiven
|
||||
- Definition of Done (DoD)
|
||||
::::
|
||||
:::: column
|
||||
**Gitea Issues / Board:**
|
||||
|
||||
- Integrierter Workflow
|
||||
- Single Source of Truth
|
||||
|
||||
::::
|
||||
:::
|
||||
|
||||
{ width=60% }
|
||||
|
||||
## Fazit
|
||||
|
||||
\vspace{0.5em}
|
||||
|
||||
\begin{tikzpicture}[x=\linewidth/10, y=1cm, every node/.style={font=\sffamily}]
|
||||
% Rule: 90/90
|
||||
\fill[black!5] (0, 2.8) rectangle (10, 3.4);
|
||||
\fill[green!60!black] (0, 2.8) rectangle (9, 3.4);
|
||||
\node[anchor=north west, inner sep=3pt] at (0, 2.8) {\scriptsize Erste \textbf{90\,\%} des Codes $\rightarrow$ \textbf{90\,\%} der Zeit};
|
||||
|
||||
\fill[black!5] (0, 1.2) rectangle (10, 1.8);
|
||||
\fill[accent] (0, 1.2) rectangle (1, 1.8);
|
||||
\node[anchor=north west, inner sep=3pt, text=accent] at (0, 1.2) {\scriptsize \textbf{Letzte 10\,\% des Codes $\rightarrow$ weitere 90\,\% der Zeit}};
|
||||
\end{tikzpicture}
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Learnings:
|
||||
|
||||
- **Asynchrones Arbeiten:** Entkopplung von Meetings und Deadlines.
|
||||
- **Review-First-Policy:** Konsequente Umsetzung der *Definition of Done*.
|
||||
- **Team-Fokus:** höhere Motivation und Eigenverantwortung durch Verkleinerung des Teams.
|
||||
@@ -1,92 +0,0 @@
|
||||
# Adam Gaiswinkler
|
||||
|
||||
## Individueller Teil: Adam Gaiswinkler
|
||||
**Entwicklung von CMS-Modulen & Frontend-Design**
|
||||
|
||||
---
|
||||
|
||||
## Ausgangslage & Motivation
|
||||
- **Ausgangssituation**: Bedarf an einer modernen Plattform für den Absolventenverein der HTL Ungargasse.
|
||||
- **Persönliche Motivation**:
|
||||
- Steigende Verantwortung durch Teamverkleinerung (von 6 auf 3 Personen).
|
||||
- Identifikation mit dem Projekt wuchs deutlich.
|
||||
- Praktische Anwendung von Blazor & ASP.NET in einem realen Umfeld.
|
||||
- **Individuelle Ziele**:
|
||||
- Entwicklung von Oqtane-Modulen (Anmeldetool & Hall of Fame).
|
||||
- Web-Entwicklung mit Fokus auf responsives und nutzerfreundliches UI/UX.
|
||||
|
||||
---
|
||||
|
||||
## Eingesetzte Technologien
|
||||
|
||||
- **Styling**: Bootstrap & Custom CSS
|
||||
- **Spezielle Tools**: QuestPDF (PDF-Generierung), Gitea (Versionskontrolle)
|
||||
- **Entwicklungsumgebung**: Visual Studio 2022 & Visual Studio Code (macOS)
|
||||
|
||||
---
|
||||
|
||||
## Umsetzung: Oqtane Theme
|
||||
- **Ziel**: Modernes, schlichtes Design im Stil der HTL Ungargasse (szu.at).
|
||||
- **Technische Highlights**:
|
||||
- Vollständige Eigenentwicklung der Navigationslogik (über `PageState.Pages`).
|
||||
- **Dynamisches Ausblenden von Systemseiten via LINQ**.
|
||||
- **Responsive Design**: Einsatz von CSS Media Queries und einer komplett CSS-basierten Burger-Menü-Lösung.
|
||||
- Integration eines `ControlPanels` und Cookie-Consent.
|
||||
|
||||
---
|
||||
|
||||
## Umsetzung: Hall of Fame (1)
|
||||
- **Zweck**: Sichtbarmachung von erfolgreichen Absolventinnen und Absolventen.
|
||||
- **UI & UX**:
|
||||
- Responsive Kartenübersicht der Personen mit Such- und Sortierfunktion (Echtzeit).
|
||||
- Detailseite im modernen "Glasmorphismus"-Design.
|
||||
- **Datenerfassung & Workflow**:
|
||||
- Rich-Text-Editor zur Eingabe des Werdegangs.
|
||||
- Bild-Upload-System (Live-Vorschau, max. 5 MB) statt manueller URLs.
|
||||
- Statusverwaltung ("Entwurf" vs. "Veröffentlicht") inkl. Eigentümerprüfung.
|
||||
|
||||
---
|
||||
|
||||
## Umsetzung: Hall of Fame (2)
|
||||
- **PDF-Export**: Dynamische Generierung eines ansprechenden Profil-PDFs mittels *QuestPDF*.
|
||||
- **Moderation**:
|
||||
- Integriertes Meldesystem (Reporting) direkt über ein separates Interfaces-Paket angesteuert.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Umsetzung: Anmeldetool für Treffen
|
||||
- **Zweck**: Vereinfachung der Planung und Teilnehmerverwaltung.
|
||||
- **Funktion**:
|
||||
- Klare, farblich getrennte Zusage- und Absage-Buttons.
|
||||
- Live-Rückmeldung bei Statusänderung dank Blazor.
|
||||
- Saubere Trennung von UI-Komponente und Backend-API.
|
||||
- **UX-Optimierung**:
|
||||
- Fokus auf Overlay-Darstellung und Mobile-Clipping-Vermeidung.
|
||||
|
||||
---
|
||||
|
||||
## Herausforderungen & Lösungen
|
||||
- **Plattformwechsel (Windows zu macOS)**: Oqtane ist stark an Windows gekoppelt; gelöst durch Einsatz von JetBrains Rider.
|
||||
- **Zeitdruck & Infrastruktur-Ausfälle**:
|
||||
- Probleme mit Hosting (Hetzner).
|
||||
- **Lösung**: Entwicklung einer schlanken "Übergangslösung" (Node.js/HTML) im Sommer 2025 zur zeitgerechten Event-Abwicklung.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Learnings
|
||||
- **Technisch**: Tieferes Verständnis von Version Control (Git), CSS/Flexbox (Responsiveness) und C#/Blazor-Tiefen.
|
||||
- **Methodisch**: Eine klare Aufgabenaufteilung sowie regelmäßige Team-Meetings sind unerlässlich für den Projekterfolg.
|
||||
- **Persönlich**: Bedeutsamkeit von Eigeninitiative und Verantwortungsübernahme, gerade in schwierigen Projektphasen.
|
||||
|
||||
---
|
||||
|
||||
## Fazit & Mögliche Erweiterungen
|
||||
- **Erreichtes**:
|
||||
- Theme ist final in Oqtane integriert und mobil optimiert.
|
||||
- Hall of Fame und Anmeldetool sind voll funktionstüchtig.
|
||||
- **Mögliche Erweiterungen**:
|
||||
- Integration einer umfassenden Teilnehmerlisten-Auswertung (Datenbank).
|
||||
- Limit-Funktion für maximale Anmeldungen bei Veranstaltungen.
|
||||
- Automatische E-Mail-Erinnerungen für Events.
|
||||
196
Defensio/03_Praesentation_Florian_Edlmayer.md
Normal file
@@ -0,0 +1,196 @@
|
||||
# Florian Edlmayer
|
||||
|
||||
## Individueller Teil: Florian Edlmayer
|
||||
|
||||
\vspace{0.8em}
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
|
||||
% ── Card 1: Datensicherheit ────────────────────────────────────────
|
||||
\fill[rounded corners=6pt, fill=orange!8] (0,0) rectangle (3.4,-3.0);
|
||||
\draw[rounded corners=6pt, orange, line width=1.8pt] (0,0) rectangle (3.4,-3.0);
|
||||
\begin{scope}
|
||||
\clip[rounded corners=6pt] (0,0) rectangle (3.4,-3.0);
|
||||
\fill[orange] (0,0) rectangle (3.4,-0.85);
|
||||
\end{scope}
|
||||
\node[text=white, font=\small\bfseries, align=center] at (1.7,-0.425)
|
||||
{\faLock\ \ Datensicherheit};
|
||||
\node[font=\small, align=center, text width=3.0cm] at (1.7,-1.95)
|
||||
{DSGVO-konform \& verschlüsselt};
|
||||
|
||||
% ── Card 2: Backup-Systeme ─────────────────────────────────────────
|
||||
\fill[rounded corners=6pt, fill=orange!8] (3.8,0) rectangle (7.2,-3.0);
|
||||
\draw[rounded corners=6pt, orange, line width=1.8pt] (3.8,0) rectangle (7.2,-3.0);
|
||||
\begin{scope}
|
||||
\clip[rounded corners=6pt] (3.8,0) rectangle (7.2,-3.0);
|
||||
\fill[orange] (3.8,0) rectangle (7.2,-0.85);
|
||||
\end{scope}
|
||||
\node[text=white, font=\small\bfseries, align=center] at (5.5,-0.425)
|
||||
{\faDatabase\ \ Backup-Systeme};
|
||||
\node[font=\small, align=center, text width=3.0cm] at (5.5,-1.95)
|
||||
{Automatisch, täglich \& zuverlässig};
|
||||
|
||||
% ── Card 3: Premium-Bereich ────────────────────────────────────────
|
||||
\fill[rounded corners=6pt, fill=orange!8] (7.6,0) rectangle (11.0,-3.0);
|
||||
\draw[rounded corners=6pt, orange, line width=1.8pt] (7.6,0) rectangle (11.0,-3.0);
|
||||
\begin{scope}
|
||||
\clip[rounded corners=6pt] (7.6,0) rectangle (11.0,-3.0);
|
||||
\fill[orange] (7.6,0) rectangle (11.0,-0.85);
|
||||
\end{scope}
|
||||
\node[text=white, font=\small\bfseries, align=center] at (9.3,-0.425)
|
||||
{\faStar\ \ Premium-Bereich};
|
||||
\node[font=\small, align=center, text width=3.0cm] at (9.3,-1.95)
|
||||
{Exklusiv, motivierend \& sicher};
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
---
|
||||
|
||||
## Ausgangslage & Zielsetzung
|
||||
- **Ausgangssituation**:
|
||||
- Kein digitaler Vernetzungsraum für Absolventen.
|
||||
- Keine rechtskonforme Datenverwaltung (DSGVO).
|
||||
- Keine automatisierte Datensicherung vorhanden.
|
||||
- **Mein Beitrag**:
|
||||
- Datenschutz (DSGVO).
|
||||
- Automatisierte Backups & Restore.
|
||||
- LinkedIn-Login (OAuth 2.0).
|
||||
- Premium-Bereich.
|
||||
- **Nutzen**: Rechtssicherheit, Ausfallsicherheit, hohes Engagement.
|
||||
|
||||
---
|
||||
|
||||
## Eingesetzte Technologien
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
\begin{columns}[c]
|
||||
|
||||
\begin{column}{0.33\textwidth}
|
||||
\centering
|
||||
\includegraphics[height=2.2cm]{image-1.png}\\[0.5em]
|
||||
{\large\textbf{\color{accent}PostgreSQL}}\\[0.3em]
|
||||
{\small Relationale Datenbank\\für strukturierte Datenspeicherung}
|
||||
\end{column}
|
||||
|
||||
\begin{column}{0.33\textwidth}
|
||||
\centering
|
||||
\includegraphics[height=2.2cm]{image-6.png}\\[0.5em]
|
||||
{\large\textbf{\color{accent}LinkedIn OAuth 2.0}}\\[0.3em]
|
||||
{\small Sichere Authentifizierung\\ohne eigene Passwortverwaltung}
|
||||
\end{column}
|
||||
|
||||
\begin{column}{0.33\textwidth}
|
||||
\centering
|
||||
\includegraphics[height=2.2cm]{image-7.png}\\[0.5em]
|
||||
{\large\textbf{\color{accent}Bash}}\\[0.3em]
|
||||
{\small Automatisierte Skripte\\für Linux Cronjobs}
|
||||
\end{column}
|
||||
|
||||
\end{columns}
|
||||
|
||||
---
|
||||
|
||||
|
||||
## DSGVO & Datenschutz
|
||||
- **Rechtliche Basis**: Einhaltung von DSGVO & DSG.
|
||||
- **Umsetzung**:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[
|
||||
node distance=0.5cm,
|
||||
stepnode/.style={rectangle, rounded corners=3pt, minimum width=4.2cm, minimum height=2.2cm, draw, line width=1pt, fill=white, inner sep=2pt},
|
||||
iconnode/.style={circle, minimum size=0.8cm, fill=gray!5},
|
||||
titlenode/.style={align=center, font=\scriptsize\bfseries},
|
||||
arrow/.style={-latex, line width=1.5pt, color=accent!60}
|
||||
]
|
||||
% Obere Reihe
|
||||
\node[stepnode, draw=gray] (n1) at (0,0) {};
|
||||
\node[stepnode, draw=green!60!black, right=of n1] (n2) {};
|
||||
|
||||
% Untere Reihe
|
||||
\node[stepnode, draw=blue!60!black, below=of n1] (n3) {};
|
||||
\node[stepnode, draw=orange, below=of n2] (n4) {};
|
||||
|
||||
% Icons – obere Reihe
|
||||
\node[iconnode] at (n1.north) [yshift=-0.7cm] {\color{gray}\small\faFile};
|
||||
\node[iconnode] at (n2.north) [yshift=-0.7cm] {\color{green!60!black}\small\faFilter};
|
||||
|
||||
% Icons – untere Reihe
|
||||
\node[iconnode] at (n3.north) [yshift=-0.7cm] {\color{blue!60!black}\small\faLock};
|
||||
\node[iconnode] at (n4.north) [yshift=-0.7cm] {\color{orange}\small\faUserShield};
|
||||
|
||||
% Labels
|
||||
\node[titlenode] at (n1.center) [yshift=-0.2cm] {Datenschutz-\\erkl\"{a}rung};
|
||||
\node[titlenode] at (n2.center) [yshift=-0.2cm] {Daten-\\minimierung};
|
||||
\node[titlenode] at (n3.center) [yshift=-0.2cm] {Vertrau-\\lichkeit};
|
||||
\node[titlenode] at (n4.center) [yshift=-0.2cm] {Betroffenen-\\rechte};
|
||||
|
||||
% Pfeile: → rechts oben, ↓ rechts, → rechts unten
|
||||
% \draw[arrow] (n1) -- (n2);
|
||||
% \draw[arrow] (n2) -- (n4);
|
||||
% \draw[arrow] (n3) -- (n4);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
---
|
||||
|
||||
## Backup- & Restore-Systeme (1)
|
||||
- **Problem**: Datenverlust (Hardware, Software, Cyberangriffe).
|
||||
- **Lösung**: Vollautomatisiertes Backup-Skript.
|
||||
|
||||
\vspace{2em}
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Backup- & Restore-Systeme (2)
|
||||
- **Speichermanagement (Retention)**:
|
||||
- Automatische Backup-Rotation.
|
||||
- Limit: Letzte 30 Tage (Speicherplatz-Optimierung).
|
||||
- **Restore-Skript**:
|
||||
- Kontrollierter Wiederherstellungsprozess.
|
||||
- Sicherheitsabfrage vor Überschreiben.
|
||||
- Backup als "Rückversicherung" vor Import.
|
||||
- DB-Neuanlage & automatischer Import.
|
||||
|
||||
---
|
||||
|
||||
## Authentifizierung mit LinkedIn (OAuth 2.0)
|
||||
- **Ziel**:
|
||||
- Abbau von Registrierungshürden.
|
||||
- Keine sensiblen Passwörter im eigenen System.
|
||||
|
||||
{width=20em}
|
||||
|
||||
---
|
||||
|
||||
## Der Premium-Bereich (1)
|
||||
**Zweck**: Motivation für aktives Mitglieder-Engagement.
|
||||
|
||||
{width=20em}
|
||||
|
||||
{width=20em}
|
||||
|
||||
---
|
||||
|
||||
## Der Premium-Bereich (2)
|
||||

|
||||
**Datensparsame Mitgliedersuche & Kontaktfunktion:**
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Fazit & Ausblick
|
||||
- **Erreichtes**:
|
||||
- DSGVO-konformer Datenschutz.
|
||||
- Hohe Ausfallsicherheit (automatisierte Bash-Backups).
|
||||
- Barrierefreier Zugang (LinkedIn-Login).
|
||||
- Echter Mehrwert durch Premium-Funktionen.
|
||||
- **Persönliche Learnings**:
|
||||
- Tiefes Verständnis für moderne Webtechnologien (ASP.NET, PostgreSQL, OAuth 2.0).
|
||||
- Agile Arbeitsweise mit Scrum stärkt Planung & Zeitmanagement.
|
||||
- Komplexe Projekte fördern Selbstorganisation & Problemlösungskompetenz.
|
||||
211
Defensio/04_Praesentation_Adam_Gaiswinkler.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# Adam Gaiswinkler
|
||||
|
||||
## Individueller Teil: Adam Gaiswinkler
|
||||
**Entwicklung von CMS‑Modulen & Frontend-Design**
|
||||
|
||||
- **Schwerpunkt**:
|
||||
- Oqtane-Theme
|
||||
- Hall-of-Fame-Modul
|
||||
- Anmeldetool
|
||||
- **Ziel**:
|
||||
- Moderne, responsive Website für den SZU Absolventenverein
|
||||
|
||||
---
|
||||
|
||||
## Ausgangslage & Motivation
|
||||
- **Ausgangssituation**: Moderne Frontend‑Plattform für den Absolventenverein (responsive, neue Features).
|
||||
- **Persönliche Motivation**:
|
||||
- Team‑Verkleinerung (6 → 3) → mehr Verantwortung.
|
||||
- Projektidentifikation & Praxis‑Blazor/ASP.NET.
|
||||
- **Ziele**:
|
||||
- Oqtane‑Module (Anmeldetool, Hall‑of‑Fame).
|
||||
- Responsives UI/UX.
|
||||
|
||||
---
|
||||
|
||||
## Eingesetzte Technologien
|
||||
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- **Tech‑Stack**:
|
||||
- Bootstrap
|
||||
- Custom‑CSS
|
||||
- QuestPDF
|
||||
- Gitea
|
||||
- Visual Studio 2022 → Visual Studio Code (macOS).
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt, rounded corners=5pt, clip] {\includegraphics[width=0.8\columnwidth]{Images/Technologien.png}};
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Oqtane Theme
|
||||
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- Eigen‑Navigation (Bootstrap-Komponenten haben nicht gepasst).
|
||||
- Systemseiten per LINQ ausblenden.
|
||||
- Responsive CSS‑Media‑Queries + reines CSS‑Burger‑Menu.
|
||||
- Cookie‑Consent (erforderlich für DSGVO-Konformität und Gesamtheit der Website).
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt, rounded corners=5pt, clip] {\includegraphics[width=0.55\columnwidth]{Images/BurgerMenuLiveDesign.png}};
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Hall of Fame
|
||||
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- **Karten‑Grid**: Responsive Übersicht, Live‑Suche & Sortierung **in Echtzeit – kein Seitenreload** (Blazor).
|
||||
- **Detail‑Seite**: Glasmorphismus‑Design (halbtransparente Karten mit Blur-Effekt).
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt, rounded corners=5pt, clip] {\includegraphics[width=0.55\columnwidth]{Images/HallOfFamePdfNeuBesser.png}};
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Hall of Fame – Workflow & Export
|
||||
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- **Workflow**: Rich‑Text‑Editor, Bild‑Upload mit **Live-Vorschau** (max 5 MB), Status (Entwurf/Veröffentlicht) inkl. Eigentümer‑Check.
|
||||
- **PDF‑Export**: Professionelle Profil-PDFs server-seitig mit QuestPDF.
|
||||
- **Moderation**: Meldesystem über separates Interfaces‑Paket → saubere Logik-Trennung.
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}[
|
||||
node distance=12mm,
|
||||
every node/.style={font=\small},
|
||||
state/.style={rectangle, rounded corners=3pt, draw=accent, fill=accent!10, minimum width=2.4cm, minimum height=8mm, align=center, font=\small\bfseries},
|
||||
arr/.style={->,>=stealth,thick,accent}
|
||||
]
|
||||
\node[coordinate] (start) {};
|
||||
\node[state, right=10mm of start] (draft) {Entwurf};
|
||||
\node[state, below=18mm of draft] (pub) {Veröffentlicht};
|
||||
\draw[arr] (start) -- node[above] {\scriptsize Erstellen} (draft);
|
||||
\draw[arr] (draft) to[out=135, in=45, looseness=4] node[above] {\scriptsize Speichern} (draft);
|
||||
\draw[arr, bend left=25] (draft) to node[right] {\scriptsize Veröffentlichen} (pub);
|
||||
\draw[arr, bend left=25] (pub) to node[left] {\scriptsize Zurückziehen} (draft);
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Anmeldetool
|
||||
\vspace{1cm}
|
||||
\begin{tikzpicture}[remember picture, overlay]
|
||||
\node at (current page.center) {
|
||||
\begin{tabular}{@{}c@{\hspace{4mm}}c@{}}
|
||||
\begin{tcolorbox}[colback=accent!5, colframe=accent, arc=3pt, title=\textbf{UI}, width=6.5cm, height=2cm, valign=center]
|
||||
\centering Ja/Nein-Buttons (grün/rot)
|
||||
\end{tcolorbox}
|
||||
&
|
||||
\begin{tcolorbox}[colback=accent!5, colframe=accent, arc=3pt, title=\textbf{Live-Feedback}, width=6.5cm, height=2cm, valign=center]
|
||||
\centering Sofort via Blazor
|
||||
\end{tcolorbox}
|
||||
\\[3mm]
|
||||
\begin{tcolorbox}[colback=accent!5, colframe=accent, arc=3pt, title=\textbf{Mobile}, width=6.5cm, height=2cm, valign=center]
|
||||
\centering Sauberes Touch-Handling
|
||||
\end{tcolorbox}
|
||||
&
|
||||
\begin{tcolorbox}[colback=accent!5, colframe=accent, arc=3pt, title=\textbf{Architektur}, width=6.5cm, height=2cm, valign=center]
|
||||
\centering UI \& Backend-API getrennt
|
||||
\end{tcolorbox}
|
||||
\end{tabular}
|
||||
};
|
||||
\end{tikzpicture}
|
||||
|
||||
---
|
||||
|
||||
## Herausforderungen & Lösungen
|
||||
|
||||
\vspace{5mm}
|
||||
\begin{tikzpicture}[remember picture, overlay,
|
||||
problem/.style={rectangle, rounded corners=3pt, draw=red!60!black, fill=red!8, minimum width=5cm, minimum height=1.4cm, align=center, font=\small},
|
||||
solution/.style={rectangle, rounded corners=3pt, draw=green!60!black, fill=green!8, minimum width=5cm, minimum height=1.4cm, align=center, font=\small},
|
||||
header/.style={font=\small\bfseries\color{gray!70!black}},
|
||||
arrow/.style={-latex, line width=1.5pt, color=accent!70}
|
||||
]
|
||||
% Spalten-Header
|
||||
\node[header] at ([xshift=-2.5cm, yshift=2.2cm]current page.center) {Herausforderung};
|
||||
\node[header] at ([xshift=4cm, yshift=2.2cm]current page.center) {Lösung};
|
||||
|
||||
% Reihe 1
|
||||
\node[problem] at ([xshift=-2.5cm, yshift=0.9cm]current page.center) (p1) {$\triangle$\;\textbf{Plattformwechsel}\\[-1mm]{\scriptsize Windows $\rightarrow$ macOS}};
|
||||
\node[solution] at ([xshift=4cm, yshift=0.9cm]current page.center) (s1) {\checkmark\;\textbf{Visual Studio Code}\\[-1mm]{\scriptsize Plattformübergreifend}};
|
||||
|
||||
% Reihe 2
|
||||
\node[problem] at ([xshift=-2.5cm, yshift=-1.1cm]current page.center) (p2) {$\triangle$\;\textbf{Kein CMS verfügbar}\\[-1mm]{\scriptsize Sommer 2025, Event steht an}};
|
||||
\node[solution] at ([xshift=4cm, yshift=-1.1cm]current page.center) (s2) {\checkmark\;\textbf{Node.js/HTML}\\[-1mm]{\scriptsize Übergangslösung}};
|
||||
|
||||
% Reihe 3
|
||||
\node[problem] at ([xshift=-2.5cm, yshift=-3.1cm]current page.center) (p3) {$\triangle$\;\textbf{UI-Fehler am Handy}\\[-1mm]{\scriptsize Clipping-Probleme}};
|
||||
\node[solution] at ([xshift=4cm, yshift=-3.1cm]current page.center) (s3) {\checkmark\;\textbf{Testen und Anpassen}\\[-1mm]{\scriptsize Debuggen und Verbessern der UI}};
|
||||
|
||||
\draw[arrow] (p1) -- (s1);
|
||||
\draw[arrow] (p2) -- (s2);
|
||||
\draw[arrow] (p3) -- (s3);
|
||||
\end{tikzpicture}
|
||||
|
||||
---
|
||||
|
||||
## Learnings
|
||||
|
||||
\vspace{1cm}
|
||||
\begin{tikzpicture}[remember picture, overlay,
|
||||
every node/.style={font=\small},
|
||||
branch/.style={thick, accent},
|
||||
cat/.style={rectangle, rounded corners=3pt, draw=accent, fill=accent!15, font=\small\bfseries, minimum height=7mm, align=center},
|
||||
item/.style={font=\scriptsize, align=left}
|
||||
]
|
||||
\node[circle, draw=accent, fill=accent!20, font=\bfseries, minimum size=1.5cm] at (current page.center) (center) {Learnings};
|
||||
|
||||
% Technisch - links
|
||||
\node[cat] at ([xshift=-3.5cm, yshift=0.8cm]current page.center) (tech) {Technisch};
|
||||
\draw[branch] (center) -- (tech);
|
||||
\node[item, anchor=east] at ([xshift=-1mm, yshift=5mm]tech.west) {Git};
|
||||
\node[item, anchor=east] at ([xshift=-1mm]tech.west) {CSS-Flexbox};
|
||||
\node[item, anchor=east] at ([xshift=-1mm, yshift=-5mm]tech.west) {Blazor};
|
||||
|
||||
% Methodisch - rechts oben
|
||||
\node[cat] at ([xshift=3.5cm, yshift=0.8cm]current page.center) (meth) {Methodisch};
|
||||
\draw[branch] (center) -- (meth);
|
||||
\node[item, anchor=west] at ([xshift=1mm, yshift=3mm]meth.east) {Aufgaben-};
|
||||
\node[item, anchor=west] at ([xshift=1mm, yshift=-3mm]meth.east) {verteilung};
|
||||
\node[item, anchor=west] at ([xshift=1mm, yshift=-9mm]meth.east) {Meetings};
|
||||
|
||||
% Persönlich - unten
|
||||
\node[cat] at ([yshift=-2cm]current page.center) (pers) {Persönlich};
|
||||
\draw[branch] (center) -- (pers);
|
||||
\node[item] at ([yshift=-7mm]pers.south) {Eigeninitiative \& Verantwortung};
|
||||
\end{tikzpicture}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
# Florian Edlmayer
|
||||
|
||||
## Individueller Teil: Florian Edlmayer
|
||||
**Datensicherheit, Backup-Systeme & Premium-Bereich**
|
||||
|
||||
---
|
||||
|
||||
## Ausgangslage & Zielsetzung
|
||||
- **Ausgangssituation**:
|
||||
- Keine digitale, sichere Absolventen-Vernetzung.
|
||||
- **Mein Beitrag**:
|
||||
- Datenschutz (DSGVO).
|
||||
- Automatisierte Backups & Restore.
|
||||
- LinkedIn-Login (OAuth 2.0).
|
||||
- Premium-Bereich.
|
||||
- **Nutzen**: Rechtssicherheit, Ausfallsicherheit, hohes Engagement.
|
||||
|
||||
---
|
||||
|
||||
## Eingesetzte Technologien
|
||||
- **Framework**: ASP.NET Core & .NET 8
|
||||
- **Datenbanksystem**: PostgreSQL
|
||||
- **Authentifizierung**: OAuth 2.0 (LinkedIn)
|
||||
- **Scripting & Automation**: Bash-Skripte für Linux Cronjobs
|
||||
|
||||
---
|
||||
|
||||
## DSGVO & Datenschutz
|
||||
- **Rechtliche Basis**: Einhaltung von DSGVO & DSG.
|
||||
- **Umsetzung**:
|
||||
- **Datenschutzerklärung**: Rechtskonform integriert.
|
||||
- **Datenminimierung**: Nur zwingend benötigte Daten.
|
||||
- **Vertraulichkeit**: TLS/HTTPS & lokales Austria-Hosting.
|
||||
- **Betroffenenrechte**: Auskunft & Löschung garantiert.
|
||||
|
||||
---
|
||||
|
||||
## Backup- & Restore-Systeme (1)
|
||||
- **Problem**: Datenverlust (Hardware, Software, Cyberangriffe).
|
||||
- **Lösung**: Vollautomatisiertes Backup-Skript.
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Start((Start: Cronjob 02:30)) --> Init[Initialisierung]
|
||||
Init --> Vars[Konfiguration laden]
|
||||
|
||||
subgraph Sicherungsphase
|
||||
Dir[Erstelle Backup-Ordner] --> DB[Datenbank-Backup]
|
||||
DB --> Files[Dateisystem sichern]
|
||||
end
|
||||
|
||||
Files --> Check{Fehler?}
|
||||
Check -- Ja --> Mail[Log Error & Abbruch]
|
||||
Check -- Nein --> Rotate[Lade Backups-Liste]
|
||||
|
||||
subgraph Speicherverwaltung
|
||||
Rotate --> Count{Anzahl > 30?}
|
||||
Count -- Ja --> Delete[Älteste löschen]
|
||||
Count -- Nein --> Finish[Abschluss]
|
||||
Delete --> Finish
|
||||
end
|
||||
|
||||
Finish --> Ende((Ende))
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Backup- & Restore-Systeme (2)
|
||||
- **Speichermanagement (Retention)**:
|
||||
- Automatische Backup-Rotation.
|
||||
- Limit: Letzte 30 Tage (Speicherplatz-Optimierung).
|
||||
- **Restore-Skript**:
|
||||
- Kontrollierter Wiederherstellungsprozess.
|
||||
- Sicherheitsabfrage vor Überschreiben.
|
||||
- Backup als "Rückversicherung" vor Import.
|
||||
- DB-Neuanlage & automatischer Import.
|
||||
|
||||
---
|
||||
|
||||
## Authentifizierung mit LinkedIn (OAuth 2.0)
|
||||
- **Ziel**:
|
||||
- Abbau von Registrierungshürden.
|
||||
- Keine sensiblen Passwörter im eigenen System.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Der Premium-Bereich (1)
|
||||
**Zweck**: Motivation für aktives Mitglieder-Engagement.
|
||||
|
||||
{width=20em}
|
||||
|
||||
{width=20em}
|
||||
|
||||
---
|
||||
|
||||
## Der Premium-Bereich (2)
|
||||
**Architektur des Premium-Bereich-Moduls:**
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph Client [WebAssembly]
|
||||
UI[Benutzeroberfläche] --> SvcC[Service Client]
|
||||
end
|
||||
|
||||
subgraph Server [ASP.NET Core]
|
||||
SvcC --> Ctrl[API Controller]
|
||||
Ctrl --> SvcS[Service Schicht]
|
||||
end
|
||||
|
||||
subgraph Data [Datenbank]
|
||||
SvcS --> EF[EF Core]
|
||||
EF --> DB[(PostgreSQL)]
|
||||
end
|
||||
```
|
||||
|
||||
**Datensparsame Mitgliedersuche & Kontaktfunktion:**
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Fazit & Ausblick
|
||||
- **Erreichtes**:
|
||||
- DSGVO-konformer Datenschutz.
|
||||
- Hohe Ausfallsicherheit (automatisierte Bash-Backups).
|
||||
- Barrierefreier Zugang (LinkedIn-Login).
|
||||
- Echter Mehrwert durch Premium-Funktionen.
|
||||
- **Ausblick**:
|
||||
- Weitere OAuth-Anbieter (z.B. Google, Microsoft).
|
||||
- Ausbau zukünftiger Premium-Features.
|
||||
BIN
Defensio/Images/BurgerMenuLiveDesign.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
Defensio/Images/HallOfFame.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
Defensio/Images/HallOfFameBeispiel.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
Defensio/Images/HallOfFamePdfNeuBesser.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
Defensio/Images/Technologien.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 352 KiB After Width: | Height: | Size: 352 KiB |
BIN
Defensio/Images/images/florian/image-1.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
Defensio/Images/images/florian/image-2.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
Defensio/Images/images/florian/image-3.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
Defensio/Images/images/florian/image-4.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
Defensio/Images/images/florian/image.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
Defensio/Images/images/konstantin/BlackBoard-Overview.png
Normal file
|
After Width: | Height: | Size: 227 KiB |
BIN
Defensio/Images/images/konstantin/Brevo.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
Defensio/Images/images/konstantin/EventRegistration-PieChart.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
Defensio/Images/images/konstantin/GiteaActions-Overview.png
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
Defensio/Images/images/konstantin/GiteaIssues-TaskBoard.png
Normal file
|
After Width: | Height: | Size: 459 KiB |
BIN
Defensio/Images/images/konstantin/GiteaPackageRepository.png
Normal file
|
After Width: | Height: | Size: 195 KiB |
BIN
Defensio/Images/images/konstantin/ReportingSystem.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
Defensio/Images/images/konstantin/logos/debian.pdf
Normal file
86
Defensio/Images/images/konstantin/logos/debian.svg
Normal file
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
|
||||
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
|
||||
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
|
||||
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
|
||||
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
|
||||
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
|
||||
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
|
||||
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
|
||||
<!ENTITY ns_svg "http://www.w3.org/2000/svg">
|
||||
<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
|
||||
]>
|
||||
<svg
|
||||
xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="262 450" i:rulerOrigin="0 0" i:pageBounds="0 792 612 0"
|
||||
xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||
width="87.041" height="108.445" viewBox="0 0 87.041 108.445" overflow="visible" enable-background="new 0 0 87.041 108.445"
|
||||
xml:space="preserve">
|
||||
<metadata>
|
||||
<variableSets xmlns="&ns_vars;">
|
||||
<variableSet varSetName="binding1" locked="none">
|
||||
<variables></variables>
|
||||
<v:sampleDataSets xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>
|
||||
</variableSet>
|
||||
</variableSets>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds y="341.555" x="262" width="87.041" height="108.445" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
</sfw>
|
||||
</metadata>
|
||||
<g id="Layer_1" i:layer="yes" i:dimmedPercent="50" i:rgbTrio="#4F008000FFFF">
|
||||
<g>
|
||||
<path i:knockout="Off" fill="#A80030" d="M51.986,57.297c-1.797,0.025,0.34,0.926,2.686,1.287
|
||||
c0.648-0.506,1.236-1.018,1.76-1.516C54.971,57.426,53.484,57.434,51.986,57.297"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M61.631,54.893c1.07-1.477,1.85-3.094,2.125-4.766c-0.24,1.192-0.887,2.221-1.496,3.307
|
||||
c-3.359,2.115-0.316-1.256-0.002-2.537C58.646,55.443,61.762,53.623,61.631,54.893"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M65.191,45.629c0.217-3.236-0.637-2.213-0.924-0.978
|
||||
C64.602,44.825,64.867,46.932,65.191,45.629"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M45.172,1.399c0.959,0.172,2.072,0.304,1.916,0.533
|
||||
C48.137,1.702,48.375,1.49,45.172,1.399"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M47.088,1.932l-0.678,0.14l0.631-0.056L47.088,1.932"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M76.992,46.856c0.107,2.906-0.85,4.316-1.713,6.812l-1.553,0.776
|
||||
c-1.271,2.468,0.123,1.567-0.787,3.53c-1.984,1.764-6.021,5.52-7.313,5.863c-0.943-0.021,0.639-1.113,0.846-1.541
|
||||
c-2.656,1.824-2.131,2.738-6.193,3.846l-0.119-0.264c-10.018,4.713-23.934-4.627-23.751-17.371
|
||||
c-0.107,0.809-0.304,0.607-0.526,0.934c-0.517-6.557,3.028-13.143,9.007-15.832c5.848-2.895,12.704-1.707,16.893,2.197
|
||||
c-2.301-3.014-6.881-6.209-12.309-5.91c-5.317,0.084-10.291,3.463-11.951,7.131c-2.724,1.715-3.04,6.611-4.227,7.507
|
||||
C31.699,56.271,36.3,61.342,44.083,67.307c1.225,0.826,0.345,0.951,0.511,1.58c-2.586-1.211-4.954-3.039-6.901-5.277
|
||||
c1.033,1.512,2.148,2.982,3.589,4.137c-2.438-0.826-5.695-5.908-6.646-6.115c4.203,7.525,17.052,13.197,23.78,10.383
|
||||
c-3.113,0.115-7.068,0.064-10.566-1.229c-1.469-0.756-3.467-2.322-3.11-2.615c9.182,3.43,18.667,2.598,26.612-3.771
|
||||
c2.021-1.574,4.229-4.252,4.867-4.289c-0.961,1.445,0.164,0.695-0.574,1.971c2.014-3.248-0.875-1.322,2.082-5.609l1.092,1.504
|
||||
c-0.406-2.696,3.348-5.97,2.967-10.234c0.861-1.304,0.961,1.403,0.047,4.403c1.268-3.328,0.334-3.863,0.66-6.609
|
||||
c0.352,0.923,0.814,1.904,1.051,2.878c-0.826-3.216,0.848-5.416,1.262-7.285c-0.408-0.181-1.275,1.422-1.473-2.377
|
||||
c0.029-1.65,0.459-0.865,0.625-1.271c-0.324-0.186-1.174-1.451-1.691-3.877c0.375-0.57,1.002,1.478,1.512,1.562
|
||||
c-0.328-1.929-0.893-3.4-0.916-4.88c-1.49-3.114-0.527,0.415-1.736-1.337c-1.586-4.947,1.316-1.148,1.512-3.396
|
||||
c2.404,3.483,3.775,8.881,4.404,11.117c-0.48-2.726-1.256-5.367-2.203-7.922c0.73,0.307-1.176-5.609,0.949-1.691
|
||||
c-2.27-8.352-9.715-16.156-16.564-19.818c0.838,0.767,1.896,1.73,1.516,1.881c-3.406-2.028-2.807-2.186-3.295-3.043
|
||||
c-2.775-1.129-2.957,0.091-4.795,0.002c-5.23-2.774-6.238-2.479-11.051-4.217l0.219,1.023c-3.465-1.154-4.037,0.438-7.782,0.004
|
||||
c-0.228-0.178,1.2-0.644,2.375-0.815c-3.35,0.442-3.193-0.66-6.471,0.122c0.808-0.567,1.662-0.942,2.524-1.424
|
||||
c-2.732,0.166-6.522,1.59-5.352,0.295c-4.456,1.988-12.37,4.779-16.811,8.943l-0.14-0.933c-2.035,2.443-8.874,7.296-9.419,10.46
|
||||
l-0.544,0.127c-1.059,1.793-1.744,3.825-2.584,5.67c-1.385,2.36-2.03,0.908-1.833,1.278c-2.724,5.523-4.077,10.164-5.246,13.97
|
||||
c0.833,1.245,0.02,7.495,0.335,12.497c-1.368,24.704,17.338,48.69,37.785,54.228c2.997,1.072,7.454,1.031,11.245,1.141
|
||||
c-4.473-1.279-5.051-0.678-9.408-2.197c-3.143-1.48-3.832-3.17-6.058-5.102l0.881,1.557c-4.366-1.545-2.539-1.912-6.091-3.037
|
||||
l0.941-1.229c-1.415-0.107-3.748-2.385-4.386-3.646l-1.548,0.061c-1.86-2.295-2.851-3.949-2.779-5.23l-0.5,0.891
|
||||
c-0.567-0.973-6.843-8.607-3.587-6.83c-0.605-0.553-1.409-0.9-2.281-2.484l0.663-0.758c-1.567-2.016-2.884-4.6-2.784-5.461
|
||||
c0.836,1.129,1.416,1.34,1.99,1.533c-3.957-9.818-4.179-0.541-7.176-9.994l0.634-0.051c-0.486-0.732-0.781-1.527-1.172-2.307
|
||||
l0.276-2.75C4.667,58.121,6.719,47.409,7.13,41.534c0.285-2.389,2.378-4.932,3.97-8.92l-0.97-0.167
|
||||
c1.854-3.234,10.586-12.988,14.63-12.486c1.959-2.461-0.389-0.009-0.772-0.629c4.303-4.453,5.656-3.146,8.56-3.947
|
||||
c3.132-1.859-2.688,0.725-1.203-0.709c5.414-1.383,3.837-3.144,10.9-3.846c0.745,0.424-1.729,0.655-2.35,1.205
|
||||
c4.511-2.207,14.275-1.705,20.617,1.225c7.359,3.439,15.627,13.605,15.953,23.17l0.371,0.1
|
||||
c-0.188,3.802,0.582,8.199-0.752,12.238L76.992,46.856"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M32.372,59.764l-0.252,1.26c1.181,1.604,2.118,3.342,3.626,4.596
|
||||
C34.661,63.502,33.855,62.627,32.372,59.764"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M35.164,59.654c-0.625-0.691-0.995-1.523-1.409-2.352
|
||||
c0.396,1.457,1.207,2.709,1.962,3.982L35.164,59.654"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M84.568,48.916l-0.264,0.662c-0.484,3.438-1.529,6.84-3.131,9.994
|
||||
C82.943,56.244,84.088,52.604,84.568,48.916"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M45.527,0.537C46.742,0.092,48.514,0.293,49.803,0c-1.68,0.141-3.352,0.225-5.003,0.438
|
||||
L45.527,0.537"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M2.872,23.219c0.28,2.592-1.95,3.598,0.494,1.889
|
||||
C4.676,22.157,2.854,24.293,2.872,23.219"/>
|
||||
<path i:knockout="Off" fill="#A80030" d="M0,35.215c0.563-1.728,0.665-2.766,0.88-3.766C-0.676,33.438,0.164,33.862,0,35.215"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
BIN
Defensio/Images/images/konstantin/logos/docker.pdf
Normal file
25
Defensio/Images/images/konstantin/logos/docker.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 340 268">
|
||||
<!-- Generator: Adobe Illustrator 30.1.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 136) -->
|
||||
<defs>
|
||||
<style>
|
||||
.st0 {
|
||||
fill: none;
|
||||
}
|
||||
|
||||
.st1 {
|
||||
fill: #2560ff;
|
||||
}
|
||||
|
||||
.st2 {
|
||||
clip-path: url(#clippath);
|
||||
}
|
||||
</style>
|
||||
<clipPath id="clippath">
|
||||
<rect class="st0" width="339.5" height="268"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g class="st2">
|
||||
<path class="st1" d="M334,110.1c-8.3-5.6-30.2-8-46.1-3.7-.9-15.8-9-29.2-24-40.8l-5.5-3.7-3.7,5.6c-7.2,11-10.3,25.7-9.2,39,.8,8.2,3.7,17.4,9.2,24.1-20.7,12-39.8,9.3-124.3,9.3H0c-.4,19.1,2.7,55.8,26,85.6,2.6,3.3,5.4,6.5,8.5,9.6,19,19,47.6,32.9,90.5,33,65.4,0,121.4-35.3,155.5-120.8,11.2.2,40.8,2,55.3-26,.4-.5,3.7-7.4,3.7-7.4l-5.5-3.7h0ZM85.2,92.7h-36.7v36.7h36.7v-36.7ZM132.6,92.7h-36.7v36.7h36.7v-36.7ZM179.9,92.7h-36.7v36.7h36.7v-36.7ZM227.3,92.7h-36.7v36.7h36.7v-36.7ZM37.8,92.7H1.1v36.7h36.7v-36.7ZM85.2,46.3h-36.7v36.7h36.7v-36.7ZM132.6,46.3h-36.7v36.7h36.7v-36.7ZM179.9,46.3h-36.7v36.7h36.7v-36.7ZM179.9,0h-36.7v36.7h36.7V0Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Defensio/Images/images/konstantin/logos/gitea.pdf
Normal file
31
Defensio/Images/images/konstantin/logos/gitea.svg
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" id="main_outline" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 640 640" style="enable-background:new 0 0 640 640;" xml:space="preserve">
|
||||
<g>
|
||||
<path id="teabag" style="fill:#FFFFFF" d="M395.9,484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5,21.2-17.9,33.8-11.8
|
||||
c17.2,8.3,27.1,13,27.1,13l-0.1-109.2l16.7-0.1l0.1,117.1c0,0,57.4,24.2,83.1,40.1c3.7,2.3,10.2,6.8,12.9,14.4
|
||||
c2.1,6.1,2,13.1-1,19.3l-61,126.9C423.6,484.9,408.4,490.3,395.9,484.2z"/>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#609926" d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2
|
||||
c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5
|
||||
c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5
|
||||
c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3
|
||||
c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1
|
||||
C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4
|
||||
c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7
|
||||
S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55
|
||||
c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8
|
||||
l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"/>
|
||||
<path style="fill:#609926" d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4
|
||||
c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1
|
||||
c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9
|
||||
c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3
|
||||
c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3
|
||||
c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29
|
||||
c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8
|
||||
C343.2,346.5,335,363.3,326.8,380.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
BIN
Defensio/Images/images/konstantin/logos/github.pdf
Normal file
10
Defensio/Images/images/konstantin/logos/github.svg
Executable file
@@ -0,0 +1,10 @@
|
||||
<svg width="98" height="96" viewBox="0 0 98 96" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_730_27126)">
|
||||
<path d="M41.4395 69.3848C28.8066 67.8535 19.9062 58.7617 19.9062 46.9902C19.9062 42.2051 21.6289 37.0371 24.5 33.5918C23.2559 30.4336 23.4473 23.7344 24.8828 20.959C28.7109 20.4805 33.8789 22.4902 36.9414 25.2656C40.5781 24.1172 44.4062 23.543 49.0957 23.543C53.7852 23.543 57.6133 24.1172 61.0586 25.1699C64.0254 22.4902 69.2891 20.4805 73.1172 20.959C74.457 23.543 74.6484 30.2422 73.4043 33.4961C76.4668 37.1328 78.0937 42.0137 78.0937 46.9902C78.0937 58.7617 69.1934 67.6621 56.3691 69.2891C59.623 71.3945 61.8242 75.9883 61.8242 81.252L61.8242 91.2051C61.8242 94.0762 64.2168 95.7031 67.0879 94.5547C84.4102 87.9512 98 70.6289 98 49.1914C98 22.1074 75.9883 6.69539e-07 48.9043 4.309e-07C21.8203 1.92261e-07 -1.9479e-07 22.1074 -4.3343e-07 49.1914C-6.20631e-07 70.4375 13.4941 88.0469 31.6777 94.6504C34.2617 95.6074 36.75 93.8848 36.75 91.3008L36.75 83.6445C35.4102 84.2188 33.6875 84.6016 32.1562 84.6016C25.8398 84.6016 22.1074 81.1563 19.4277 74.7441C18.375 72.1602 17.2266 70.6289 15.0254 70.3418C13.877 70.2461 13.4941 69.7676 13.4941 69.1934C13.4941 68.0449 15.4082 67.1836 17.3223 67.1836C20.0977 67.1836 22.4902 68.9063 24.9785 72.4473C26.8926 75.2227 28.9023 76.4668 31.2949 76.4668C33.6875 76.4668 35.2187 75.6055 37.4199 73.4043C39.0469 71.7773 40.291 70.3418 41.4395 69.3848Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_730_27126">
|
||||
<rect width="98" height="96" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Defensio/Images/images/konstantin/logos/nginx.pdf
Normal file
2
Defensio/Images/images/konstantin/logos/nginx.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_nginx</title><path d="M15.948,2h.065a10.418,10.418,0,0,1,.972.528Q22.414,5.65,27.843,8.774a.792.792,0,0,1,.414.788c-.008,4.389,0,8.777-.005,13.164a.813.813,0,0,1-.356.507q-5.773,3.324-11.547,6.644a.587.587,0,0,1-.657.037Q9.912,26.6,4.143,23.274a.7.7,0,0,1-.4-.666q0-6.582,0-13.163a.693.693,0,0,1,.387-.67Q9.552,5.657,14.974,2.535c.322-.184.638-.379.974-.535" style="fill:#019639"/><path d="M8.767,10.538q0,5.429,0,10.859a1.509,1.509,0,0,0,.427,1.087,1.647,1.647,0,0,0,2.06.206,1.564,1.564,0,0,0,.685-1.293c0-2.62-.005-5.24,0-7.86q3.583,4.29,7.181,8.568a2.833,2.833,0,0,0,2.6.782,1.561,1.561,0,0,0,1.251-1.371q.008-5.541,0-11.081a1.582,1.582,0,0,0-3.152,0c0,2.662-.016,5.321,0,7.982-2.346-2.766-4.663-5.556-7-8.332A2.817,2.817,0,0,0,10.17,9.033,1.579,1.579,0,0,0,8.767,10.538Z" style="fill:#fff"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
BIN
Defensio/Images/images/konstantin/logos/oqtane.pdf
Normal file
19
Defensio/Images/images/konstantin/logos/oqtane.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="200.000000pt" height="200.000000pt" viewBox="0 0 200.000000 200.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,200.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M994 1922 c-6 -4 -25 -50 -44 -102 -80 -218 -210 -455 -391 -712 -49
|
||||
-70 -100 -151 -114 -180 -105 -226 -53 -507 126 -686 190 -188 468 -234 709
|
||||
-116 104 51 223 170 274 274 84 172 86 367 7 532 -16 35 -72 122 -123 193 -52
|
||||
72 -111 161 -133 198 -21 37 -42 67 -46 67 -3 0 -46 -61 -94 -136 l-88 -136
|
||||
106 -156 c57 -87 110 -172 116 -191 16 -50 13 -150 -6 -207 -23 -69 -110 -155
|
||||
-182 -179 -68 -22 -144 -22 -212 0 -74 25 -159 110 -183 183 -19 57 -22 148
|
||||
-7 200 6 19 116 193 246 387 129 195 235 358 235 363 0 5 -22 56 -49 113 -27
|
||||
57 -64 145 -81 196 -31 88 -46 109 -66 95z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1008 B |
BIN
Defensio/Images/images/konstantin/logos/postgres.pdf
Normal file
22
Defensio/Images/images/konstantin/logos/postgres.svg
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
|
||||
<svg width="432.071pt" height="445.383pt" viewBox="0 0 432.071 445.383" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="orginal" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
|
||||
</g>
|
||||
<g id="Layer_x0020_3" style="fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#FFFFFF;stroke-width:12.4651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;">
|
||||
<path style="fill:#000000;stroke:#000000;stroke-width:37.3953;stroke-linecap:butt;stroke-linejoin:miter;" d="M323.205,324.227c2.833-23.601,1.984-27.062,19.563-23.239l4.463,0.392c13.517,0.615,31.199-2.174,41.587-7c22.362-10.376,35.622-27.7,13.572-23.148c-50.297,10.376-53.755-6.655-53.755-6.655c53.111-78.803,75.313-178.836,56.149-203.322 C352.514-5.534,262.036,26.049,260.522,26.869l-0.482,0.089c-9.938-2.062-21.06-3.294-33.554-3.496c-22.761-0.374-40.032,5.967-53.133,15.904c0,0-161.408-66.498-153.899,83.628c1.597,31.936,45.777,241.655,98.47,178.31 c19.259-23.163,37.871-42.748,37.871-42.748c9.242,6.14,20.307,9.272,31.912,8.147l0.897-0.765c-0.281,2.876-0.157,5.689,0.359,9.019c-13.572,15.167-9.584,17.83-36.723,23.416c-27.457,5.659-11.326,15.734-0.797,18.367c12.768,3.193,42.305,7.716,62.268-20.224 l-0.795,3.188c5.325,4.26,4.965,30.619,5.72,49.452c0.756,18.834,2.017,36.409,5.856,46.771c3.839,10.36,8.369,37.05,44.036,29.406c29.809-6.388,52.6-15.582,54.677-101.107"/>
|
||||
<path style="fill:#336791;stroke:none;" d="M402.395,271.23c-50.302,10.376-53.76-6.655-53.76-6.655c53.111-78.808,75.313-178.843,56.153-203.326c-52.27-66.785-142.752-35.2-144.262-34.38l-0.486,0.087c-9.938-2.063-21.06-3.292-33.56-3.496c-22.761-0.373-40.026,5.967-53.127,15.902 c0,0-161.411-66.495-153.904,83.63c1.597,31.938,45.776,241.657,98.471,178.312c19.26-23.163,37.869-42.748,37.869-42.748c9.243,6.14,20.308,9.272,31.908,8.147l0.901-0.765c-0.28,2.876-0.152,5.689,0.361,9.019c-13.575,15.167-9.586,17.83-36.723,23.416 c-27.459,5.659-11.328,15.734-0.796,18.367c12.768,3.193,42.307,7.716,62.266-20.224l-0.796,3.188c5.319,4.26,9.054,27.711,8.428,48.969c-0.626,21.259-1.044,35.854,3.147,47.254c4.191,11.4,8.368,37.05,44.042,29.406c29.809-6.388,45.256-22.942,47.405-50.555 c1.525-19.631,4.976-16.729,5.194-34.28l2.768-8.309c3.192-26.611,0.507-35.196,18.872-31.203l4.463,0.392c13.517,0.615,31.208-2.174,41.591-7c22.358-10.376,35.618-27.7,13.573-23.148z"/>
|
||||
<path d="M215.866,286.484c-1.385,49.516,0.348,99.377,5.193,111.495c4.848,12.118,15.223,35.688,50.9,28.045c29.806-6.39,40.651-18.756,45.357-46.051c3.466-20.082,10.148-75.854,11.005-87.281"/>
|
||||
<path d="M173.104,38.256c0,0-161.521-66.016-154.012,84.109c1.597,31.938,45.779,241.664,98.473,178.316c19.256-23.166,36.671-41.335,36.671-41.335"/>
|
||||
<path d="M260.349,26.207c-5.591,1.753,89.848-34.889,144.087,34.417c19.159,24.484-3.043,124.519-56.153,203.329"/>
|
||||
<path style="stroke-linejoin:bevel;" d="M348.282,263.953c0,0,3.461,17.036,53.764,6.653c22.04-4.552,8.776,12.774-13.577,23.155c-18.345,8.514-59.474,10.696-60.146-1.069c-1.729-30.355,21.647-21.133,19.96-28.739c-1.525-6.85-11.979-13.573-18.894-30.338 c-6.037-14.633-82.796-126.849,21.287-110.183c3.813-0.789-27.146-99.002-124.553-100.599c-97.385-1.597-94.19,119.762-94.19,119.762"/>
|
||||
<path d="M188.604,274.334c-13.577,15.166-9.584,17.829-36.723,23.417c-27.459,5.66-11.326,15.733-0.797,18.365c12.768,3.195,42.307,7.718,62.266-20.229c6.078-8.509-0.036-22.086-8.385-25.547c-4.034-1.671-9.428-3.765-16.361,3.994z"/>
|
||||
<path d="M187.715,274.069c-1.368-8.917,2.93-19.528,7.536-31.942c6.922-18.626,22.893-37.255,10.117-96.339c-9.523-44.029-73.396-9.163-73.436-3.193c-0.039,5.968,2.889,30.26-1.067,58.548c-5.162,36.913,23.488,68.132,56.479,64.938"/>
|
||||
<path style="fill:#FFFFFF;stroke-width:4.155;stroke-linecap:butt;stroke-linejoin:miter;" d="M172.517,141.7c-0.288,2.039,3.733,7.48,8.976,8.207c5.234,0.73,9.714-3.522,9.998-5.559c0.284-2.039-3.732-4.285-8.977-5.015c-5.237-0.731-9.719,0.333-9.996,2.367z"/>
|
||||
<path style="fill:#FFFFFF;stroke-width:2.0775;stroke-linecap:butt;stroke-linejoin:miter;" d="M331.941,137.543c0.284,2.039-3.732,7.48-8.976,8.207c-5.238,0.73-9.718-3.522-10.005-5.559c-0.277-2.039,3.74-4.285,8.979-5.015c5.239-0.73,9.718,0.333,10.002,2.368z"/>
|
||||
<path d="M350.676,123.432c0.863,15.994-3.445,26.888-3.988,43.914c-0.804,24.748,11.799,53.074-7.191,81.435"/>
|
||||
<path style="stroke-width:3;" d="M0,60.232"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
BIN
Defensio/Images/images/konstantin/logos/wireguard.pdf
Normal file
2
Defensio/Images/images/konstantin/logos/wireguard.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="400" height="400" version="1.1" viewBox="0 0 400 400" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="a"><path d="m0 300h300v-300h-300z"/></clipPath></defs><g transform="matrix(1.3333 0 0 -1.3333 0 400)"><g clip-path="url(#a)"><g transform="translate(177.57 268.56)"><path d="m0 0c0.969-0.066 2.097 0.81 3.987 1.635-1.862 0.802-2.973 1.655-3.939 1.593-0.996-0.063-2.592-1.031-2.567-1.578 0.027-0.603 1.532-1.583 2.519-1.65" fill="#871719"/></g><g transform="translate(179.32 268.11)"><path d="m0 0c0.969-0.066 2.097 0.81 3.987 1.635-1.862 0.802-2.973 1.655-3.939 1.593-0.996-0.063-2.592-1.031-2.567-1.578 0.027-0.603 1.532-1.583 2.519-1.65" fill="#871719"/></g><g transform="translate(299.74 154.44)"><path d="m0 0s6.94 145.56-153.04 145.56c-141.48 0-145.9-139.63-145.9-139.63s-20.811-160.37 149.16-160.37c163.02 0 149.78 154.44 149.78 154.44" fill="#871719"/></g><g transform="translate(133.86 128.17)"><path d="m0 0c-2.627-1.39-4.65-2.414-6.63-3.517-8.1-4.512-15.026-10.419-20.544-17.868-1.784-2.409-3.01-2.603-5.727-0.941-35.338 21.61-37.609 75.843 0.983 99.453 30.017 18.364 68.365 7.14 82.735-20.477 2.723-5.234 3.069-13.291 1.345-18.782-5.955-18.955-20.015-29.586-39.313-34.102 5.689 4.87 10.218 10.393 11.659 18.025 1.452 7.687-0.084 14.638-4.542 20.956-6.773 9.596-19.868 13.544-30.811 9.389-11.881-4.511-18.39-15.354-17.216-28.683 1.09-12.381 10.484-20.405 28.061-23.453" fill="#fff"/></g><g transform="translate(58.513 66.293)"><path d="M 0,0 C 2.838,19.152 25.265,36.788 44.23,34.776 38.356,26.832 35.643,17.846 34.988,8.883 28.686,7.722 22.747,6.941 16.981,5.478 11.304,4.037 5.803,1.903 0,0" fill="#fff"/></g><g transform="translate(183.79 273.09)"><path d="m0 0c1.061 0.812 2.155 1.494 3.472 0.408 0.75-0.617 1.478-1.257 2.386-2.032-1.127-0.595-2.042-1.096-2.975-1.567-1.306-0.658-2.282-0.218-3.072 0.822-0.642 0.844-0.757 1.645 0.189 2.369m15.447-157.8c-1.598 1.382-2.611 1.381-4.485 0.182-6.359-4.068-12.867-7.922-19.481-11.562-3.792-2.086-7.898-3.599-12.653-5.724 1.633-0.421 2.418-0.619 3.201-0.827 17.776-4.73 27.272-20.335 23.065-37.813-3.741-15.544-19.52-25.482-34.812-22.86-12.748 2.186-23.877 12.772-25.735 25.456-2.026 13.824 4.859 27.119 17.108 32.689 6.794 3.089 13.771 5.778 20.549 8.9 7.706 3.551 16.038 6.355 22.766 11.296 16.7 12.262 27.012 29.145 31.033 49.523 2.408 12.207 2.245 24.36-3.339 35.95-4.286 8.895-11.319 15.357-18.875 21.253-7.775 6.068-16.007 11.554-23.747 17.664-2.095 1.653-3.509 4.505-4.478 7.09-0.411 1.095 0.925 4.066 1.819 4.227 4.746 0.852 9.596 1.29 14.425 1.473 5.574 0.21 11.164 0.032 16.746-0.042 1.21-0.015 2.853 0.141 3.549-0.542 2.891-2.843 5.159-1.014 7.166 0.856 1.689 1.573 2.893 3.668 4.236 5.433-0.815 0.12-2.487 0.541-4.168 0.581-5.613 0.133-11.233 0.047-16.843 0.253-1 0.037-1.963 1.066-2.942 1.637 1.031 0.409 2.058 1.165 3.093 1.175 9.682 0.091 19.366 0.054 29.057 0.054 0.011 5.038-6.722 11.936-12.704 13.806-0.045-0.682-0.087-1.317-0.131-1.994-5.944-0.141-11.778-0.03-17.078 2.788-1.396 0.743-2.309 2.394-3.446 3.627-1.431 1.551-2.605 3.547-4.349 4.559-3.576 2.076-7.48 3.58-11.211 5.397-13.259 6.458-27.262 6.231-42.302 4.854 8.991-2.092 17.11-3.982 25.23-5.872-0.093-0.494-0.185-0.987-0.278-1.481-10.86-1.455-21.134 2.528-31.756 4.003 3.849-2.254 7.749-4.35 11.778-6.158 4.095-1.837 8.316-3.39 12.538-5.091-5.364-4.583-10.746-5.588-17.488-4.048-3.686 0.842-7.585 1.29-11.348 1.106-3.887-0.19-7.802-1.147-11.332-3.506 3.78-1.916 7.263-3.506 10.549-5.432 1.355-0.795 2.909-2.144 3.287-3.536 0.904-3.333 1.166-6.841 1.687-10.281-6.188-0.701-17.071-6.994-19.27-11.09 9.512-1.831 19.868 0.383 28.942-5.746-2.989-2.262-9.949-5.075-12.502-7.007 3.156-0.827 10.469-0.423 13.33-0.229 2.409 0.164 3.521 0.223 4.508-0.59l28.001-21.921c2.944-2.374 14.835-13.629 17.939-20.704 2.643-6.023 2.966-11.148 2.965-12.398-2e-3 -3.355-0.413-8.609-2.721-14.469-0.969-2.461-3.812-7.912-9.677-14.267-9.09-9.847-20.783-15.17-33.57-17.807-29.732-6.13-54.436-37.881-47.462-72.884 8.142-40.866 53.247-62.991 90.107-43.552 23.824 12.564 36.456 37.078 33.072 63.762-2.045 16.12-9.338 29.269-21.563 39.839" fill="#fff"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
BIN
Defensio/Images/video/introduction/introduction.mp4
Normal file
BIN
Defensio/image-1.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
Defensio/image-2.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
Defensio/image-3.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
Defensio/image-4.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
Defensio/image-5.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
Defensio/image-6.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
Defensio/image-7.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
Defensio/image.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
@@ -3,8 +3,8 @@ export TEXINPUTS=".:./libs/awesome-beamer/:./libs/smile/:$TEXINPUTS"
|
||||
pandoc \
|
||||
01_Praesentation_Allgemein.md \
|
||||
02_Praesentation_Konstantin_Hintermayer.md \
|
||||
03_Praesentation_Adam_Gaiswinkler.md \
|
||||
04_Praesentation_Florian_Edlmayer.md \
|
||||
03_Praesentation_Florian_Edlmayer.md \
|
||||
04_Praesentation_Adam_Gaiswinkler.md \
|
||||
-t beamer \
|
||||
--template 00_preamble.tex \
|
||||
--pdf-engine=pdflatex \
|
||||
|
||||
3
Defensio/puppeteer-config.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"args": ["--no-sandbox"]
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
# Video Text Skript
|
||||
|
||||
Anfang: Willkommen zu unserem Video über den AlumniHub. Wir sind Konstantin Hintermayer, Florian Edlmayer und Adam Gaiswinkler und wir haben im Rahmen unserer Diplomarbeit an der HTL SZU Ungargasse eine moderne Webanwendung für den Absolventenverein entwickelt.
|
||||
Anfang: Vernetzung, die wirklich funktioniert – willkommen beim AlumniHub. Wir haben im Rahmen unserer Diplomarbeit an unserer HTL eine moderne Webanwendung für den Absolventenverein entwickelt.
|
||||
Zu beginn unseres Projekts sind wir auf viele Probleme gestoßen. Im Sommer beschäftigten wir uns mit einer Übergangslösung um das kommende Treffen der Absolventen im Jahr 2025 zu ermöglichen. Ein weiteres Problem war unser Team Downsizing von 6 auf 3 Mitglieder. Dadurch mussten wir unsere ursprünglichen Pläne stark überdenken und uns auf das Wesentliche konzentrieren.
|
||||
Außerdem sind wir immer wieder auf Probleme mit unserer Serverinfrastruktur gestoßen.
|
||||
|
||||
Ein zentraler Teil unserer Arbeit ist die kontinuierliche Integration unserer Software. Wir haben uns für Git als Versionsverwaltungssystem entschieden und hosten eine Gitea Instanz. Bei veröffentlichen eines tags wird automatisch ein neues Debian Paket gebaut und in unsererem Debian Package Registry bereitgestellt.Durch diese automatisierung ist die veröffentlichung von neuen Softwareversionen stark vereinfacht worden.
|
||||
|
||||
Das Hauptziel des Projektes war es eine moderne Webanwendung für den Absolvenntenverein zu kreieren. Die es ermöglicht einfach Events und treffen zu organisieren mithilfe unseres EventRegistration Moduls. Weiter Funktionen sind die Hall of Fame, wo Absolventen ihre Erfolge präsentieren können, das Schwarze Brett für Neuigkeiten und Jobangebote und der Premiumbereich für exklusive Inhalte. Diese sind im Laufe der Entwicklung hinzugekommen.
|
||||
|
||||
Nun wollen wir Ihnen unsere Webanwendung genauer vorstellen.
|
||||
@@ -20,3 +18,6 @@ Schwarzes Brett Modul:
|
||||
|
||||
|
||||
Premiumbereich Modul:
|
||||
|
||||
|
||||
Ein zentraler Teil unserer Arbeit ist die kontinuierliche Integration unserer Software. Wir haben uns für Git als Versionsverwaltungssystem entschieden und hosten eine Gitea Instanz. Bei veröffentlichen eines tags wird automatisch ein neues Debian Paket gebaut und in unsererem Debian Package Registry bereitgestellt.Durch diese automatisierung ist die veröffentlichung von neuen Softwareversionen stark vereinfacht worden.
|
||||
@@ -151,6 +151,11 @@ local mermaid = {
|
||||
compile = function (self, code)
|
||||
local mime_type = self.mime_type or 'image/svg+xml'
|
||||
local file_extension = extension_for_mimetype[mime_type]
|
||||
|
||||
-- Resolve puppeteer config path
|
||||
local puppeteer_config = pandoc.path.join({pandoc.system.get_working_directory(), 'puppeteer-config.json'})
|
||||
|
||||
|
||||
return with_temporary_directory("diagram", function (tmpdir)
|
||||
return with_working_directory(tmpdir, function ()
|
||||
local infile = 'diagram.mmd'
|
||||
@@ -158,7 +163,7 @@ local mermaid = {
|
||||
write_file(infile, code)
|
||||
pipe(
|
||||
self.execpath or 'mmdc',
|
||||
{"--pdfFit", "--iconPacksNamesAndUrls", "mdi#https://unpkg.com/@iconify-json/mdi@1.2.3/icons.json", "--input", infile, "--output", outfile},
|
||||
{"--pdfFit", "--iconPacksNamesAndUrls", "mdi#https://unpkg.com/@iconify-json/mdi@1.2.3/icons.json", "-p", puppeteer_config, "--input", infile, "--output", outfile},
|
||||
''
|
||||
)
|
||||
return read_file(outfile), mime_type
|
||||
@@ -167,6 +172,24 @@ local mermaid = {
|
||||
end,
|
||||
}
|
||||
|
||||
-- Source - https://stackoverflow.com/a/27028488
|
||||
-- Posted by hookenz, modified by community. See post 'Timeline' for change history
|
||||
-- Retrieved 2026-04-18, License - CC BY-SA 4.0
|
||||
|
||||
function dump(o)
|
||||
if type(o) == 'table' then
|
||||
local s = '{ '
|
||||
for k,v in pairs(o) do
|
||||
if type(k) ~= 'number' then k = '"'..k..'"' end
|
||||
s = s .. '['..k..'] = ' .. dump(v) .. ','
|
||||
end
|
||||
return s .. '} '
|
||||
else
|
||||
return tostring(o)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--- TikZ
|
||||
--
|
||||
|
||||
|
||||
31
defensio.md
@@ -1,31 +0,0 @@
|
||||
% Habits
|
||||
% John Doe
|
||||
% March 22, 2005
|
||||
|
||||
# In the morning
|
||||
|
||||
## Getting up
|
||||
|
||||
- Turn off alarm
|
||||
- Get out of bed
|
||||
|
||||
## Breakfast
|
||||
|
||||
- Eat eggs
|
||||
- Drink coffee
|
||||
|
||||
# In the evening
|
||||
|
||||
## Dinner
|
||||
|
||||
- Eat spaghetti
|
||||
- Drink wine
|
||||
|
||||
------------------
|
||||
|
||||

|
||||
|
||||
## Going to sleep
|
||||
|
||||
- Get in bed
|
||||
- Count sheep
|
||||
@@ -1,26 +0,0 @@
|
||||
#!/bin/bash
|
||||
pandoc \
|
||||
00-praemble.md \
|
||||
01-toc.md \
|
||||
02-Allgemein.md \
|
||||
03-Diplomarbeitsbuch-individueller-teil-Adam-Gaiswinkler.md \
|
||||
04-Diplomarbeitsbuch-individueller-teil-Florian-Edlmayer.md \
|
||||
05-Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md \
|
||||
97-tabellenverzeichnis.md \
|
||||
98-abbildungsverzeichnis.md \
|
||||
99-bibliographie.md \
|
||||
--number-sections \
|
||||
--lua-filter _extensions/diagram/diagram.lua \
|
||||
--syntax-definition _extensions/razor/razor.xml \
|
||||
--syntax-definition _extensions/nginx/nginx.xml \
|
||||
--citeproc \
|
||||
--bibliography sources.bib \
|
||||
--csl _extensions/sources/tgm.csl \
|
||||
--include-before-body 00_preamble.tex \
|
||||
-H _extensions/header/header.tex \
|
||||
-V geometry:"top=2.5cm, bottom=2cm, left=3cm, right=2cm, a4paper" \
|
||||
-V toc-title="Inhaltsverzeichnis" \
|
||||
-V classoption=twoside \
|
||||
-V fontsize=12pt \
|
||||
-V linestretch=1.5 \
|
||||
-o diplomarbeitsbuch.tex
|
||||
3
puppeteer-config.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"args": ["--no-sandbox"]
|
||||
}
|
||||