Compare commits

...

37 Commits

Author SHA1 Message Date
f6718139cc Align texts at the top of a page 2026-04-19 20:17:26 +02:00
b944048df3 neuste version meiner präsi 2026-04-19 18:52:22 +02:00
7eb4e0761e Video Skript angepasst 2026-04-19 14:04:57 +02:00
1bfd8b3a96 Merge branch 'main' of https://git.kocoder.xyz/Diplomarbeit-Absolventenverein/pm 2026-04-18 19:24:07 +02:00
020707c380 Neue Version 2026-04-18 19:23:49 +02:00
e623ca9340 Fix: Theme Linking?
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 15s
2026-04-18 16:12:07 +02:00
76e0d6b65f Use the correct path
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 15s
2026-04-18 16:10:18 +02:00
b408cb0d0f Fix: mermaid diagrams
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 12s
2026-04-18 16:07:01 +02:00
23fe2c0863 Update: Submodule
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 36s
2026-04-18 15:24:58 +02:00
dd8eb9d269 Rename and use newer pandoc container
Some checks failed
build-debian-package / Convert to PDF (push) Failing after 29s
2026-04-18 15:20:02 +02:00
c8f95f5169 Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 11s
2026-04-18 13:13:02 +00:00
450509008d Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 10s
2026-04-18 13:10:42 +00:00
c780145790 Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 9s
2026-04-18 13:08:35 +00:00
9d96f7eafc Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 9s
2026-04-18 12:57:52 +00:00
eb9b4c4c1f Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 9s
2026-04-18 12:30:09 +00:00
2cd24abcde Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 9s
2026-04-18 12:27:57 +00:00
c030d304f5 Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 10s
2026-04-18 12:25:32 +00:00
b950ec6d66 Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 9s
2026-04-18 12:14:51 +00:00
c52d5b3303 Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 10s
2026-04-18 12:06:00 +00:00
f87090357c Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 10s
2026-04-18 12:03:47 +00:00
8bedef1f85 Remove: Demo 2026-04-18 12:01:26 +00:00
c966caf7f9 Remove: unused pandoc-tex.sh 2026-04-18 12:01:09 +00:00
c19ae8a982 Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 12s
2026-04-18 11:59:51 +00:00
26d56c0d24 Update .gitea/workflows/create-presentation.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 9s
2026-04-18 11:49:04 +00:00
f5223405a5 Update .gitea/workflows/word-count.yml
Some checks failed
build-debian-package / Build the debian package (push) Failing after 9s
2026-04-18 11:47:18 +00:00
7ab7e9e25d Update .gitea/workflows/create-presentation.yml
Some checks failed
Word Count / count-words (push) Has been cancelled
2026-04-18 11:46:49 +00:00
370942efe1 Update .gitea/workflows/create-presentation.yml
Some checks failed
Word Count / count-words (push) Failing after 30s
2026-04-18 11:42:24 +00:00
490912aaca Delete Defensio/defensio.pdf
Some checks failed
Word Count / count-words (push) Failing after 30s
build-debian-package / Build the debian package (push) Successful in 11s
2026-04-18 11:36:59 +00:00
6d15ab6b0a Fix: Pipeline
Some checks failed
Word Count / count-words (push) Failing after 31s
2026-04-18 11:37:13 +02:00
aa1353adce New: Other ga-pandoc container 2026-04-18 11:37:13 +02:00
bbb2f94944 Test sutom docker-container 2026-04-18 11:37:13 +02:00
f25d6be858 Bilder titel gefixt
Some checks failed
Word Count / count-words (push) Failing after 31s
2026-04-18 02:48:29 +02:00
b2d89e7830 bilder hinzugefügt in der präsi
Some checks failed
Word Count / count-words (push) Failing after 31s
2026-04-18 02:45:51 +02:00
c4d0bb1a9a Merge remote-tracking branch 'origin/main'
Some checks failed
Word Count / count-words (push) Failing after 33s
2026-04-18 02:43:33 +02:00
2aeb5f2f8f bilder 2026-04-18 02:41:00 +02:00
4ddb7d8904 noch mal angepasst 2026-04-16 23:08:07 +02:00
37262ff470 comments für bilder hinzugefügt für späteres hinzufügen 2026-04-16 21:52:28 +02:00
18 changed files with 191 additions and 136 deletions

View File

@@ -6,7 +6,7 @@ on:
jobs: jobs:
build: build:
name: Build the debian package name: Convert to PDF
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@@ -16,13 +16,30 @@ jobs:
run: git checkout "${{ gitea.sha }}" run: git checkout "${{ gitea.sha }}"
- name: "Submodules auschecken" - name: "Submodules auschecken"
run: git submodule update --init run: git submodule update --init
- uses: docker://pandoc/core:3.8 - name: "Debug"
run: ls -la ./Defensio
- uses: docker://git.kocoder.xyz/docker/ga-pandoc:d2995fb914e313703da2c7754763e7fa01dae88f
name: Pandoc
with: with:
args: "--help" # gets appended to pandoc command env: TEXINPUTS=./Defensio:./Defensio/libs/awesome-beamer/:./Defensio/libs/smile/
- name: "Build .deb" command: pandoc
run: cd ./Defensio && ./pandoc.sh 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" - name: "Create release"
uses: akkuman/gitea-release-action@v1 uses: akkuman/gitea-release-action@v1
with: with:
files: |- files: |-
./Defensio/defensio.pdf ./Defensio/defensio.pdf
./Defensio/Images/*

View File

@@ -1,8 +1,6 @@
name: Word Count name: Word Count
on: on:
push:
branches: [ "main", "master" ]
pull_request: pull_request:
branches: [ "main", "master" ] branches: [ "main", "master" ]

1
.gitignore vendored
View File

@@ -1 +1,2 @@
diplomarbeitsbuch.pdf diplomarbeitsbuch.pdf
defensio.pdf

View File

@@ -1,4 +1,4 @@
\documentclass[aspectratio=169]{beamer} \documentclass[aspectratio=169,t]{beamer}
\providecommand{\tightlist}{% \providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
@@ -81,7 +81,7 @@
{ {
\begingroup \begingroup
\nonumberson \nonumberson
\begin{frame}[noframenumbering,plain]{Agenda} \begin{frame}[c,noframenumbering,plain]{Agenda}
\tableofcontents[currentsection] \tableofcontents[currentsection]
\end{frame} \end{frame}
\endgroup \endgroup
@@ -93,7 +93,7 @@
\begingroup \begingroup
\nonumberson \nonumberson
\begin{frame}[noframenumbering,plain]{Agenda} \begin{frame}[c,noframenumbering,plain]{Agenda}
\tableofcontents \tableofcontents
\end{frame} \end{frame}
\endgroup \endgroup

View File

@@ -39,29 +39,12 @@
- **Problem**: Datenverlust (Hardware, Software, Cyberangriffe). - **Problem**: Datenverlust (Hardware, Software, Cyberangriffe).
- **Lösung**: Vollautomatisiertes Backup-Skript. - **Lösung**: Vollautomatisiertes Backup-Skript.
```mermaid **Automatischer Ablauf (täglich 02:30 Uhr):**
graph LR 1. Cronjob startet → Konfiguration wird geladen
Start((Start: Cronjob 02:30)) --> Init[Initialisierung] 2. Datenbank-Backup wird erstellt
Init --> Vars[Konfiguration laden] 3. Restliches Dateisystem wird komprimiert
4. Fehlerüberprüfung → bei Fehler: Log-Eintrag & Abbruch
subgraph Sicherungsphase 5. Rotation: Nur die letzten 30 Backups bleiben erhalten, ältere werden automatisch gelöscht
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))
```
--- ---
@@ -97,22 +80,10 @@ graph LR
## Der Premium-Bereich (2) ## Der Premium-Bereich (2)
**Architektur des Premium-Bereich-Moduls:** **Architektur des Premium-Bereich-Moduls:**
```mermaid **Technische Architektur:**
graph LR - **Frontend**: Blazor WebAssembly (Oqtane) → ruft API auf
subgraph Client [WebAssembly] - **Backend**: ASP.NET Core Controller → Service-Schicht mit Rechteverwaltung
UI[Benutzeroberfläche] --> SvcC[Service Client] - **Datenbank**: EF Core → PostgreSQL mit Audit-Trail (jede Premium-Vergabe nachvollziehbar)
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:** **Datensparsame Mitgliedersuche & Kontaktfunktion:**
![Mitgliedersuche und Kontaktfunktion für Premium-Mitglieder](../Diplomarbeitsbuch/images/04-Florian/premium-mitglieder-suche.png) ![Mitgliedersuche und Kontaktfunktion für Premium-Mitglieder](../Diplomarbeitsbuch/images/04-Florian/premium-mitglieder-suche.png)

View File

@@ -1,14 +1,20 @@
# Adam Gaiswinkler # Adam Gaiswinkler
## Individueller Teil: Adam Gaiswinkler ## Individueller Teil: Adam Gaiswinkler
**CMSModul & Frontend** **Entwicklung von CMSModulen & Frontend-Design**
- **Schwerpunkt**:
- Oqtane-Theme
- Hall-of-Fame-Modul
- Anmeldetool
- **Ziel**: Moderne, responsive Website für den HTL-Absolventenverein
--- ---
## Ausgangslage & Motivation ## Ausgangslage & Motivation
- **Ausgangssituation**: Moderne FrontendPlattform für den Absolventenverein (responsive, neue Features). - **Ausgangssituation**: Moderne FrontendPlattform für den Absolventenverein (responsive, neue Features).
- **Persönliche Motivation**: - **Persönliche Motivation**:
- TeamVerkleinerung (6 → 3) → mehr Verantwortung. - TeamVerkleinerung (63) → mehr Verantwortung.
- Projektidentifikation & PraxisBlazor/ASP.NET. - Projektidentifikation & PraxisBlazor/ASP.NET.
- **Ziele**: - **Ziele**:
- OqtaneModule (Anmeldetool, HallofFame). - OqtaneModule (Anmeldetool, HallofFame).
@@ -17,49 +23,138 @@
--- ---
## Eingesetzte Technologien ## Eingesetzte Technologien
- **TechStack**: Bootstrap+CustomCSS, QuestPDF, Gitea, VS2022wechsel zu VSCode (macOS).
::: columns
:::: column
- **TechStack**:
- Bootstrap
- CustomCSS
- 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}
::::
:::
--- ---
## Umsetzung: Oqtane Theme ## Oqtane Theme
::: columns
:::: column
- EigenNavigation (bootstrap Komponenten haben nicht gepasst ). - EigenNavigation (bootstrap Komponenten haben nicht gepasst ).
- Systemseiten per LINQ ausblenden. - Systemseiten per LINQ ausblenden.
- Responsive CSSMediaQueries + reines CSSBurgerMenu. - Responsive CSSMediaQueries + reines CSSBurgerMenu.
- ControlPanel & CookieConsent. - CookieConsent (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}
::::
:::
--- ---
## Umsetzung: Hall of Fame ## Hall of Fame
- **KartenGrid**: Responsive Übersicht, LiveSuche & Sortierung.
- **DetailSeite**: GlasmorphismusDesign. ::: columns
- **Workflow**: RichTextEditor, BildUpload (max5MB), Status (Entwurf/Veröffentlicht) inkl. EigentümerCheck.
- **PDFExport**: QuestPDF. :::: column
- **Moderation**: Meldesystem über InterfacesPaket. - **KartenGrid**: Responsive Übersicht, LiveSuche & Sortierung **in Echtzeit kein Seitenreload** (Blazor).
- **DetailSeite**: GlasmorphismusDesign (halbtransparente Karten mit Blur-Effekt).
::::
:::: column
\begin{tikzpicture}
\node[inner sep=0pt, rounded corners=5pt, clip] {\includegraphics[width=0.55\columnwidth]{Images/HallOfFameBeispiel.png}};
\end{tikzpicture}
::::
:::
--- ---
## Umsetzung: Anmeldetool ## Hall of Fame Workflow & Export
- Klar getrennte Ja/NeinButtons.
- LiveStatusUpdates via Blazor. ::: columns
- UIOverlay, mobilefreundlich.
:::: column
- **Workflow**: RichTextEditor, BildUpload mit **Live-Vorschau** (max 5 MB), Status (Entwurf/Veröffentlicht) inkl. EigentümerCheck.
- **PDFExport**: Professionelle Profil-PDFs server-seitig mit QuestPDF.
- **Moderation**: Meldesystem über separates InterfacesPaket → 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
- **UI**: Ja/NeinButtons (grün/rot)
- **LiveFeedback**: Sofortige Statusänderung via Blazor
- **Mobile**: Sauberes Touch-Handling
- **Architektur**: UI & Backend-API getrennt
--- ---
## Herausforderungen & Lösungen ## Herausforderungen & Lösungen
- **Plattformwechsel**: Windows → macOS → JetBrainsRider. - **Plattformwechsel** WindowsmacOS
- **HostingProbleme**: Node.js/HTMLÜbergangslösung 2025. - Oqtane stark an Windows gebunden
-**Visual Studio Code** als plattformübergreifende Lösung
- **Keine funktionsfähige Website** (Sommer 2025)
- Kurz vor einem Event, kein funktionierendes CMS
- → Schnelle **Node.js/HTML-Übergangslösung** sicherte Event-Anmeldung
--- ---
## Learnings ## Learnings
- **Technisch**: Git, CSSFlexbox, Blazor.
- **Methodisch**: Aufgabenverteilung, regelmäßige Meetings. \vspace{1cm}
- **Persönlich**: Eigeninitiative & Verantwortung. \begin{tikzpicture}[remember picture, overlay]
\node at (current page.center) {
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{c c c}
\textbf{Technisch} & \textbf{Methodisch} & \textbf{Persönlich} \\
\hline
Git & Aufgabenverteilung & Eigeninitiative \\
CSS-Flexbox & Regelmäßige Meetings & Verantwortung \\
Blazor & & \\
\end{tabular}
};
\end{tikzpicture}
--- ---
## Fazit & Ausblick ## Fazit & Ausblick
- Theme final, mobil, Hall of Fame & Anmeldetool funktionsfähig. - **Ergebnis**:
- **Erweiterungen**: TeilnehmerAuswertung, AnmeldeLimit, automatische EMailErinnerungen. - Theme final & mobil-optimiert
- Hall of Fame funktionsfähig
- Anmeldetool einsatzbereit

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

View File

@@ -0,0 +1,3 @@
{
"args": ["--no-sandbox"]
}

View File

@@ -1,11 +1,9 @@
# Video Text Skript # 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. 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. 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. 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. Nun wollen wir Ihnen unsere Webanwendung genauer vorstellen.
@@ -20,3 +18,6 @@ Schwarzes Brett Modul:
Premiumbereich 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.

View File

@@ -151,6 +151,11 @@ local mermaid = {
compile = function (self, code) compile = function (self, code)
local mime_type = self.mime_type or 'image/svg+xml' local mime_type = self.mime_type or 'image/svg+xml'
local file_extension = extension_for_mimetype[mime_type] 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_temporary_directory("diagram", function (tmpdir)
return with_working_directory(tmpdir, function () return with_working_directory(tmpdir, function ()
local infile = 'diagram.mmd' local infile = 'diagram.mmd'
@@ -158,7 +163,7 @@ local mermaid = {
write_file(infile, code) write_file(infile, code)
pipe( pipe(
self.execpath or 'mmdc', 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 return read_file(outfile), mime_type
@@ -167,6 +172,24 @@ local mermaid = {
end, 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 --- TikZ
-- --

View File

@@ -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
------------------
![picture of spaghetti](images/spaghetti.jpg)
## Going to sleep
- Get in bed
- Count sheep

View File

@@ -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
View File

@@ -0,0 +1,3 @@
{
"args": ["--no-sandbox"]
}