From 7fcdc1c788725f866de71fc9dfd8c4d1cb132b57 Mon Sep 17 00:00:00 2001
From: Orangerot <purple@orangerot.dev>
Date: Fri, 24 May 2024 17:42:08 +0200
Subject: Initial commit

---
 20-implementierungsheft/sections/glossar.tex | 371 +++++++++++++++++++++++++++
 1 file changed, 371 insertions(+)
 create mode 100644 20-implementierungsheft/sections/glossar.tex

(limited to '20-implementierungsheft/sections/glossar.tex')

diff --git a/20-implementierungsheft/sections/glossar.tex b/20-implementierungsheft/sections/glossar.tex
new file mode 100644
index 0000000..9caad87
--- /dev/null
+++ b/20-implementierungsheft/sections/glossar.tex
@@ -0,0 +1,371 @@
+\makeglossaries
+
+\newglossaryentry{spa}
+{
+    name=Single-Page-Application,
+    description={
+        ist ein Webseiten-Modell, bei welchem dem Nutzer nur ein Webdokument
+        bereitgestellt wird. Mit einem Skript wird der Inhalt der Seite
+        dynamisch mit Daten einer API befüllt. Außerdem verwaltet die Seite
+        (nicht der Server), welcher Inhalt bei welchem Pfad angezeigt wird. Dies
+        erzeugt geringere Serverlast und eine bessere Nutzererfahrung, da die
+        Seitenstruktur beim Laden von neuen Inhalten erhalten bleibt}
+}
+
+\newglossaryentry{packagemanager}
+{
+    name=Paketmanager,
+    description={
+        ist ein Programm, welches Pakete und dessen Abhängigkeiten verwaltet,
+        installiert, entfernt und aktualisiert. Pakete können andere Programme,
+        Plugins oder Software-Bibliotheken sein}
+}
+
+\newglossaryentry{bundler}
+{
+    name=Bundler,
+    description={
+        ist ein Programm, welches genutzte Teile von Abhängigkeiten eines
+        Software-Projekts in passender Reihenfolge zusammensucht und daraus
+        Dateien erstellt, die für den Nutzer bereitgestellt werden können. Dabei
+        kann der Bundler mit zusätzlichen Modulen Dateien erzeugen, die
+        rückwärtskompatibel oder für den Nutzer schwerer einsehbar sind}
+}
+
+\newglossaryentry{java}
+{
+    name=Java,
+    description={
+        ist eine objekt-orientierte interpretierte kompilierte
+        Programmiersprache, welche plattformunabhängig auf einer virtuellen
+        Maschine ausgeführt wird}
+}
+
+\newglossaryentry{db}
+{
+    name=Datenbank,
+    plural=Datenbanken,
+    description={
+        ist ein System um Daten persistent zu speichern und effizient zu
+        verwalten. Am meisten verbreitet sind relationale Datenbanken, welche
+        Daten in Tabellen mit Referenzen zu Einträgen anderer Tabellen
+        speichern. Programme können dann über eine Anfragesprache (Structured
+        Query Language - \Gls{SQL}) komplexe Operationen auf den Daten ausführen}
+}
+
+\newglossaryentry{docker}
+{
+    name=Docker,
+    description={
+        ist ein Programm, das virtualisierte Container ausführt. Ein Programm in
+        so einem Container läuft in seiner eigenen virtuellen Umgebung, wodurch
+        das Host-System sicher bleibt. Zudem lassen sich die Container leicht
+        auf andere Systeme verteilen}
+}
+
+% RESTfull-API, JSON, RSS-Feed, Salting and Hasing, OAuth, Cookie, Garbage
+% Collection, DSGVO, Podcast, Podcatcher, Episode, Gpodder, 
+
+\newglossaryentry{podcatcher}
+{
+    name=Podcatcher,
+    plural=Podcatchern,
+    description={
+        ist ein Programm, über welches man Podcasts entdecken, abonnieren und
+        Episoden von Podcasts hören kann. Mit einem Account auf einer Plattform,
+        welche eine Gpodder-API zur Verfügung stellt, können Ereignisse, die von
+        einem Nutzer ausgehen, auf anderen Podcatchern des Nutzers
+        synchronisiert werden}
+}
+
+\newglossaryentry{podcast}
+{
+    name=Podcast,
+    description={
+        ist ein RSS-Feed, dessen Einträge die Episoden darstellen}
+}
+
+\newglossaryentry{episode}
+{
+    name=Episode,
+    plural=Episoden,
+    description={
+        ist ein Eintrag in einem Podcast. Eine URL in dem Eintrag zeigt auf eine
+        Medien-Datei, welche vom Podcatcher abgespielt werden kann}
+}
+
+\newglossaryentry{rest-api}
+{
+    name=RESTful-API,
+    description={
+        ist ein Schnittstellenentwurf über das Hypertext Transfer Protocol
+        (HTTP), bei dem die Schnittstellen strukturiert als Pfad an einem
+        Endpunkt erreichbar sind. Mittels verschiedener HTTP-Methoden können an
+        der Schnittstelle Daten abgefragt (GET), gesendet (PUT), gelöscht
+        (DELETE) oder geändert (POST) werden. Die Daten, die über die
+        Schnittstelle gesendet werden liegen meist im JSON-Format vor}
+}
+
+
+\newglossaryentry{gpodder}
+{
+    name=Gpodder-API,
+    description={
+        wird von gpodder.net benutzt und entwickelt. Die API wird als
+        Schnittstelle zwischen Podcatchern und Podcast Synchronisationsservern
+        verwendet. Weitere Details sind unter
+        "https://gpoddernet.readthedocs.io/en/latest/api/" zu finden}
+}
+
+\newglossaryentry{json}
+{
+    name=JSON,
+    description={
+        (JavaScript Object Notation) ist ein Datenformat und wird zur
+        Übertragung von Strukturen und Daten eingesetzt. JSON besteht dabei aus
+        grundlegenden Datentypen sowie Objekten mit Schlüssel-Wert Paaren und
+        Listen}
+}
+
+\newglossaryentry{oauth}
+{
+    name=OAuth,
+    description={
+        (Open Authorization) ist ein offenes Protokoll, welches es Nutzern
+        ermöglicht, sich mit bereits bestehenden Accounts bei anderen Diensten
+        zu registrieren. Dabei werden benötigte Daten für die Registrierung über
+        die bereitgestellte Schnittstelle zur Verfügung gestellt}
+}
+
+\newglossaryentry{garbage-collection}
+{
+    name=Garbage Collection,
+    description={
+        ist eine automatische Speicherbereinigung, welche nicht mehr benötigten
+        Speicherplatz wieder freigibt. Die Bereinigung kann dabei in determinierten
+        Zeitintervallen erfolgen oder durch bestimmte Ereignisse ausgelöst
+        werden}
+}
+
+\newglossaryentry{salt-hash}
+{
+    name=Salting und Hashing,
+    description={
+        ist eine Methode um Passwörter so zu kodieren, dass sie nicht als
+        Klartext gespeichert werden und auch sicher vor Hash-Wörterbüchern sind. 
+        Dafür wird dem Passwort ein bekanntes Wort, der Salt, angefügt, bevor
+        aus dem kompletten Wort eine Prüfsumme, ein Hash, generiert wird. Beim
+        Anmelden wird die Prüfsumme der Anmeldung mit der bekannten
+        Prüfsumme des Passworts verglichen}
+}
+
+\newglossaryentry{rss}
+{
+    name=RSS,
+    description={
+        (Really Simple Syndication) zeigt strukturiert Listen von Nachrichten
+        an. Die Änderungen werden im XML-Format in sogenannte RSS-Dateien
+        geschrieben, welche über einen Link abgerufen werden können}
+}
+
+\newglossaryentry{dsgvo}
+{
+    name=Datenschutz-Grundverordnung,
+    description={
+        (DSGVO) ist eine im europäischen Wirtschaftsraum
+        geltende Verordnung. Sie sorgt für eine Reglementierung bei der
+        Verarbeitung personenbezogener Daten. Unter anderem muss einsehbar sein,
+        welche Daten von Nutzern erhoben werden. Außerdem muss für einen Nutzer
+        die Möglichkeit bestehen, seine erhobenen Daten abrufen zu können}
+}
+
+\newglossaryentry{push-pull}
+{
+    name=Push und Pull,
+    description={
+        sind Methoden, um Daten auszutauschen. Bei der Pull-Methode
+        stellt Akteur A einem Akteur B eine Anfrage auf Daten und erhält diese
+        als Antwort. Damit Akteur A und B immer auf dem selben Stand sind, muss
+        Akteur A chronisch Anfragen an Akteur B stellen. Im Gegensatz dazu steht
+        die Push-Methode, bei der Akteur B den Akteuren mitteilt, dass er neue
+        Änderungen hat. Dafür muss Akteur B allerdings wissen mit welchen
+        anderen Akteuren er in Verbindung steht und diese Verbindung aufrecht
+        erhalten}
+}
+
+\newglossaryentry{ui-lib}
+{
+    name=UI-Bibliothek,
+    plural=UI-Bibliotheken,
+    description={
+        kümmert sich um das Layout einer Webseite. Dabei unterscheidet man
+        zwischen Design-Bibliotheken (wie Bootstrap), welche fertige
+        UI-Komponenten bereitstellen, und Layout-Bibliotheken (wie Vue oder
+        React.js), welche die Komponenten basierend auf Daten dynamisch
+        anzeigen}
+}
+
+\newglossaryentry{responsive}
+{
+    name=Responsive,
+    description={
+        Design ist ein Design-Prinzip für Webseiten, bei dem die selbe Webseite ihre
+        Komponenten dynamisch der Bildschirmbreite anpasst}
+}
+
+\newglossaryentry{pseudoprotocol}
+{
+    name=Pseudoprotokoll,
+    description={
+        ist ein URL-Schema, auf das Webseiten hören können, wenn sie sich das
+        URL-Schema im Browser anmelden. Bekannt Pseudoprotokolle sind:
+        ,,mailto:'', ,,tel:'' oder ,,irc:''}
+}
+
+\newglossaryentry{dashboard}
+{
+    name=Dashboard,
+    description={
+        ist die erste Seite auf der man landet, wenn man angemeldet ist}
+}
+
+\newglossaryentry{abo}
+{
+    name=Abonnement,
+    description={
+        ist ein abonnierter Podcast}
+}
+
+\newglossaryentry{discovery}
+{
+    name=Discovery,
+    description={
+        ist ein Feature der Gpodder-API, welches dem Nutzer eine Reihe von
+        Podcasts zum abonnieren anbietet}
+}
+
+\newglossaryentry{session-token}
+{
+    name=Session-Token,
+    description={
+        ist ein Wort, dass vom Client gespeichert wird solange der Nutzer
+        eingeloggt ist und bei jeder Anfrage an den Server mitgeschickt wird. 
+        Der Server kann den Session-Token einem Nutzer zuordnen und so mit
+        nutzerspezifischen Daten antworten}
+}
+
+\newglossaryentry{cookie}
+{
+    name=Cookie,
+    description={
+        ist ein kleiner webseitenspezifischer Speicher im Browser, welcher vom
+        Server und von der Webseite gesetzt werden kann und bei jeder weiteren
+        Anfrage an den Server mitgesendet wird. Cookies bleiben entweder
+        temporär im Browserspeicher, bis der Browser geschlossen wird oder
+        permanent, bis ein optionales Verfallsdatum erreicht ist}
+}
+
+\newglossaryentry{uiComponent}
+{
+    name=UI-Komponente,
+    plural=UI-Komponenten,
+    description={
+        In Vue.js werden die grafischen Elemente einer Webseite in einzelne
+        Komponenten zerteilt. 
+        Diese reagieren automatisch auf Änderungen und können ohne Neuladen
+        der Seite ihr Aussehen verändern und somit Änderungen direkt anzeigen}
+}
+
+\newglossaryentry{spring}
+{
+	name=Spring,
+	description={
+		Ein Java-Framework, welches die Entwicklung von Web-Applikationen erleichtert.
+		Dazu wird eine Reihe von Werkzeugsets zur Verfügung gestellt.
+		Unter anderem sind das Spring Web für das Erstellen von Webanwendungen,
+		Spring Security für die Verwaltung von Benutzerauthentifizierungen und
+		Spring Data JPA für die Arbeit mit relationalen Datenbanken
+    }
+}
+
+\newglossaryentry{api}
+{
+	name=API,
+    plural=APIs,
+	description={
+		Eine Schnittstelle, welche es ermöglicht auf Funktionalitäten einer Anwendung
+        zuzugreifen. APIs für Webanwendungen heißen WebAPIs.
+        Ein Beispiel für eine WebAPI ist die REST-API
+    }
+}
+
+\newglossaryentry{business}
+{
+	name=Geschäftslogik,
+	description={
+		Eine Schicht in der Anwendungsentwicklung, in der die Art und Weise, wie das
+        Programm auf Eingaben reagiert, wie Daten verarbeitet und wie sie gespeichert
+        werden sollen, festgelegt ist
+    }
+}
+
+\newglossaryentry{solid}
+{
+	name=SOLID,
+	description={
+		Eine Sammlung an Prinzipien, welche zu gutem objektorientierten Design führen soll.
+        Jedes Prinzip steht für einen Buchstaben in SOLID:
+        \textbf{S}ingle-Responsibility Prinzip,
+        \textbf{O}pen-Closed Prinzip,
+        \textbf{L}iskovsches Substitutionsprinzip,
+        \textbf{I}nterface Segregation Prinzip und
+        \textbf{D}ependency Inversion Prinzip
+    }
+}
+
+\newglossaryentry{crud}
+{
+	name=CRUD,
+	description={
+		CRUD steht für \textbf{C}reate, \textbf{R}ead, \textbf{U}pdate und \textbf{D}elete.
+        Hierbei handelt es sich um die grundlegenden Funktionen einer Anwendung,
+        die mit einer Datenbank arbeitet.
+        Hierbei können Daten angelegt, abgerufen, aktualisiert und gelöscht werden.
+        Auch in Web-Applikationen ist CRUD mit HTTP über die Anfragen POST, GET, PUT und DELETE
+        vertreten
+    }
+}
+
+\newglossaryentry{SQL}
+{
+    name=SQL,
+    description={
+        SQL (Structured Query Language) ist eine Sprache, die einen strukturierten Zugriff auf Datenbanken ermöglicht.
+        Daten können hierbei hinzugefügt, abgefragt, geändert und gelöscht werden.
+        Das besondere hierbei ist der strukturierte Zugriff auf Daten, indem explizit Daten mit bestimmten Kriterien und
+        Relationen ausgewählt und bearbeitet werden können.
+        SQL wird fast von allen verbreiteten Datenbanksystemen unterstützt
+    }
+}
+
+\newglossaryentry{Base64}
+{
+    name=Base64,
+    description={
+        Mithilfe von Base64 können 8-Bit-Binärdaten in eine ASCII-Zeichenkette
+        kodiert werden. So werden zum Beispiel E-Mail-Anhänge versendet
+    }
+}
+
+\newglossaryentry{JSONP}
+{
+    name=JSONP,
+    description={
+        JSONP ermöglicht die Übertragung von JSON-Daten zwischen verschiedenen Domains.
+        Dies wäre durch die Same-Origin-Policy nicht möglich.
+        JSONP nutzt allerdings die Tatsache aus,
+        dass sich Skripte domainübergreifend übertragen lassen.
+        Dazu werden die JSON-Daten als Argument einer übergebenen Funktion über
+        ein Skript-Element eingebunden
+    }
+}
-- 
cgit v1.2.3

