‏ ‏ ‎ ‏ ‏ ‎

1. 2024-10-01

1.1. Test-Driven-Development (TDD)

tdd

2. 2024-10-08

2.1. Maven

  • Motivation (Wieso maven)

    • Früher gab es für jede IDE ein eigenes Projektformat (ant). Es war nicht möglich zB ein Netbeans Projekt in Eclipse zu öffnen.

  • Was ist maven?

    • maven ist ein Package Manager

    • ein weiterer package manager ist gradle

  • Vorteile von maven

    • maven hat eine einheitliche Struktur der Projektstruktur (Dateien und Verzeichnisse)

    • Die Libraries (Abhängigkeiten) werden automatisch heruntergeladen.

      • Die Libraries werden optimiert gespeichert, dh nicht in jedem Projekt, sondern im Home-Verzeichnis

    • maven hat noch viel mehr Funktionalitäten …​

3. Erstellen von Webseiten und Slides mit Asciidoctor

  1. Erstellen eines Repos vom Asciidoctor-Template

  2. Clonen des Repos

  3. Committen und pushen der Änderungen

  4. Aktivieren der gh-pages in den Settings

enable gh pages

  1. Aktiviere Link zu Website

link to gh pages

3.3. Doku

4. 2024-10-22 - Docker

  • Virtualisierung bezeichnet in der Informatik die Nachbildung eines Hard- oder Software-Objekts durch ein ähnliches Objekt vom selben Typ mit Hilfe einer Abstraktionsschicht. Dadurch lassen sich virtuelle (d. h. nicht-physische) Geräte oder Dienste wie emulierte Hardware, Betriebssysteme, Datenspeicher oder Netzwerkressourcen erzeugen. Dies erlaubt es etwa, Computer-Ressourcen (insbesondere im Server-Bereich) transparent zusammenzufassen oder aufzuteilen, oder ein Betriebssystem innerhalb eines anderen auszuführen. Dadurch können u. a. mehrere Betriebssysteme auf einem physischen Server oder „Host“ ausgeführt werden.

5. 2024-11-05

5.1. Projektziele (Buch)

magisches dreieck
projektziele

5.2. Projektteams

projekte

5.3. Projektauftrag

5.4. Pflichtenheft

v modell

5.4.1. Ausgangssituation

5.4.2. Istzustand

5.4.3. Problemstellung

5.4.4. Ziele

5.4.5. Anforderungen (Soll-Zustand)

5.4.5.1. Funktionale Anforderungen (FA)
5.4.5.2. Nichtfunktionale Anforderungen (NFA)

5.4.6. Mengengerüst

nichtfunktionale anforderungen

6. 2024-12-10

6.1. Datenbanken

  • noSQL

  • Relationale Datenbanken

6.1.1. kommerzielle Produkte

  • Oracle

  • Microsoft SQL Server

6.1.2. Open Source

  • lokal lauffähig ohne Installation

    • SQLite

    • H2

    • Derby DB

  • größere Installationen

    • MySQL

    • MariaDB

    • PostgreSQL

7. 2025-01-08

7.1. UML-Klassendiagramm

7.1.1. Plugins für Intellij

plugin asciidoctor
plugin plantuml
  • Bitte graphviz installieren

    • mit brew

    • apt: sudo apt install graphviz

7.1.2. plantuml-webite

7.1.3. plantuml im code zeichnen

cld
Person hansi = new Person("hansi");
hansi.setFirma(new Firma("IBM"));

System.out.printLine(hansi.getFirma().getName());
// IBM
uml complete incomplete
uml disjoint overlapping

7.1.4. Beziehungen CLD

  • Vererbung

  • Assoziation (benutzt)

  • Aggregation (Ganzes-Teile-Beziehung, zerstörungsfrei)

    • zB Auto - Autoreifen

  • Komposition (Ganzes-Teile-Beziehung, zerstörend)

    • zB Haus - Etage, Buch - Kapitel

uml beziehungen notation

Extension → Vererbung

Im Code gibt es zwischen Assoziation, Aggregation und Komposition keinen Unterschied

7.2. Asciidoctor - Wiederholung

  • Callout

  • Admonition

  • Präambel (preamble)

    • toc

    • Verzeichnis für images usw

  • Table

  • Einfügen von Code

  • numbered and unnumbered Lists

8. 2025-01-14

8.1. UML (Unified Modeling Language)

8.1.1. Syntax (Schreibweise)

Die Syntax beschreibt die Regeln und die Schreibweise, die eingehalten werden müssen.

8.1.2. Semantik (Inhalt)

Die Semantik legt fest, welchen Inhalt oder welche Bedeutung die verschiedenen Elemente und Beziehungen haben.

8.1.3. Beispiel: UML-Diagramm

@startuml
class Person {
    -firstName: String
    +dob: Number
    ~method1()
    #method2()
}

class Hobby {
}

(Person, Hobby) .. Ausfuerung

class Firma {
    angestellte: List<Person>
}

Person "*" --> "0..1" Firma : arbeitet für >
Firma --> Person
@enduml
  • Signatur: Eine Signatur ist die Kombination aus einem Methodennamen, den Parametern und dem Rückgabewert. Sie dient zur eindeutigen Identifikation einer Methode.

  • Kardinalität: Beschreibt die Beziehung zwischen Tabellen oder Objekten, z. B. 1:1 oder n:m.

  • Multiplizität: Gibt an, wie viele Objekte einer Klasse instanziiert sein können.


8.2. MQTT-Server

Ein MQTT-Server dient als zentrale Datenplattform für die Kommunikation zwischen verschiedenen Systemen.

8.2.1. Prinzipien

  • Subscribe (Abonnement erstellen): Komponente abonnieren bestimmte Datenbereiche/Themen. Wenn neue Werte für diese Themen/Datenbereiche eintreffen, werden sie automatisch an die Abonnenten zugestellt.

  • Publizieren: Systeme können Daten zu spezifischen Themen senden, die dann von den Abonnenten empfangen werden.


8.3. Protokolle

Protokolle legen Verhaltensregeln für die Kommunikation zwischen Systemen fest. Sie sorgen dafür, dass Sender und Empfänger Daten einheitlich interpretieren können.

8.3.1. HTTP (Hypertext Transfer Protocol)

  • Hypertext: Ermöglicht, durch Anklicken von Links neue Seiten zu laden.

  • Anwendungsfall: Datenpakete in Form von HTML-Dokumenten übertragen.

8.3.1.1. Internet für Menschen
  • Webserver: Stellt HTML-Dokumente bereit.

  • Anfrage: Nutzer stellen Anfragen an den Webserver und erhalten die entsprechenden HTML-Seiten zurück.

8.3.1.2. Internet für Maschinen
  • REST-Services: Bieten Schnittstellen zur Kommunikation zwischen Maschinen.

  • SOAP (Simple Object Access Protocol): Ein alternatives Protokoll für die maschinelle Kommunikation.

8.3.2. Datenformate

  • Definieren das Erscheinungsbild und die Struktur von übertragenen Daten.


8.4. Grob- vs. Feinentwurf

8.4.1. Grobentwurf

  • Konzentriert sich auf die grundlegende Struktur des Systems.

  • Definiert Hauptkomponenten und deren Beziehungen sowie Schnittstellen.

8.4.2. Feinentwurf

  • Geht ins Detail und beschreibt die genaue Implementierung.

  • Definiert Methoden, Attribute, etc. in beispielsweise einem Klassenmodell

8.4.3. Schnittstellen

  • Beschreiben, wie Daten zwischen verschiedenen Systemen übertragen werden.

  • Legen das Format und die Struktur der ausgetauschten Daten fest.


9. 2025-01-21

9.1. Unterschied CLD und OD

cld od
od cld

10. 2025-01-28

10.1. Asciidoctor

10.1.1. Admonitions

  • Voraussetzung :icons: font in Präambel

Das ist wichtig
  • Admonition mit Block

Feeding the Werewolves

While werewolves are hardy community members, keep in mind the following dietary concerns:

  1. They are allergic to cinnamon.

  2. More than two glasses of orange juice in 24 hours makes them howl in harmony with alarms and sirens.

  3. Celery makes them sad.

10.1.2. Callouts

public class MyStack {

    boolean isEmpty() { (1)
        return true; (2)
    }

}
1 Kommentar 1
2 Kommentar 2
Unresolved directive in index.adoc - include::../../labs/tdd/src/main/java/at/htl/MyStack.java[tags=stack]
1 Auch das ist ein Kommentar

10.2. Git Architecture

11. 2025-02-04

  • Conventional Commits

  • Aufgabe:

    • User Stories erstellen

    • Asciidoc-Präsentation für gh-pages erstellen

  • Benennung von Files:

    • Jedes Gespräch ist mittels Ergebnisprotokoll zu dokumentieren (vgl. minutes-of-meetings.adoc)

    • Bezeichnung: yyyy-mm-dd-topic.adoc

12. 2025-02-11

12.1. Aktivitätsdiagramme

13. 2025-03-11

14. GUI Gestaltung

15. 2025-03-25

15.1. git

15.1.1. Branching

15.1.2. Stashing

15.1.3. Cherry-Picking

16. 2025-04-08

cloud
Erstellen eines Quarkus-Projekts
mvn io.quarkus.platform:quarkus-maven-plugin:3.21.1:create \
    -DprojectGroupId=at.htl \
    -DprojectArtifactId=webserver \
    -Dextensions='rest'

17. 2025-04-29

18. 2025-05-20

19. 2025-06-03

19.1. uber-jar

  • Es wird ein jar-File erstellt, der alle Abhängigkeiten enthält.

  • Ein jar-File ist ein zip-File, das Java-Klassen und Ressourcen enthält.

  • Zusätzlich wird eine Manifest-Datei erstellt, die angibt, welche Klasse die main-Methode enthält.

db modi

20. 2025-06-10

20.1. Übung

  • Erstellen eines Java-Webservers, der auf eine Datenbank zugreift.

  • Aus der Datenbank werden die Daten einer Tabelle ausgelesen und als html-table dargestellt.

  • Es ist ein Tabelle GREETING zu erstellen mit den Spalten:

    • ID (integer, primary key)

    • GREETING_TEXT (varchar(255)) zB "Hallo Welt", "Hallo Chris", "Hallo Hanan"

  • Aufruf mit http://localhost:8080/greeting/1 -→ "Hallo Welt"

  • Aufruf mit http://localhost:8080/greeting/2 -→ "Hallo Chris"

  • Aufruf mit http://localhost:8080/greeting/3 -→ "Hallo Hanan"

  • Die Datenbank ist eine Postgres-Datenbank, die in einem Docker-Container läuft.

  • Bauen Sie anschließend eine gh-actions-pipeline, die ein Docker-Image des Webservers baut und dieses in der GitHub Container Registry speichert.

  • https://github.com/htl-leonding/docker-webserver-3ahif