2. 2023-09-19
2.1. Ideenfindung zur Projektauswahl
-
Folgende Bereiche sind sehr gut geeignet, um ggf. einen Wettbewerb zu gewinnen:
-
Umwelt
-
Lernen / Schule
-
Selbsthilfe / Hilfe für andere Personen / Communities
-
Sport
-
Hilfe für beeinträchtigte Personen
-
-
Mögliche Projekte
-
Winnies Baby App
-
Schludermanns Franklyn
-
Fröllers kuratierte News-Aggregator mit Themenwahl
-
Eco-Points:
-
OBD-Sensordaten auslesen (ELM327)
-
ev. GPS-Position erfassen
-
Die Fahrprofile auf Umweltfreundlichkeit beurteilen
-
Es werden Eco-Points ermittelt → als Game miteinander vergleichen
-
ev. Plattform mit (anonymisierten) Eco-Points Ranking
-
Car Play Anbindung → iOS, Android
-
-
Nuris Mülltrennungsapp
-
EAN-Codes von Produkten einlesen und anschließend ausgeben, wohin die Verpackung entsorgt werden muss
-
Problem: Man braucht eine EAN-Code-Produktdatenbank. Die sind meist kostenpflichtig.
-
Es ist zu überprüfen, ob aufgrund einer solchen Datenbank festgestellt werden kann, welches Verpackungsmaterial verwendet wurde
-
-
2.2. Github-Übung - commit/push/branch/merge/rebase
protokolliert durch Winnie Ilming
2.2.2. Repo in der shell mit ssh klonen
Falls das wegen des fehlenden public keys nicht geht, einen neuen rsa key mit:
ssh-keygen -t rsa
erstellen.
Nur mit Return bestätigen, keinen eigenen file-name, keine Passphrase, usw eingeben.
Generating public/private rsa key pair. Enter file in which to save the key (/home/userxy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/userxy/.ssh/id_rsa Your public key has been saved in /home/userxy/.ssh/id_rsa.pub The key fingerprint is: SHA256:7pIJz3zvkd9J2d0nXh1dUEcb3Z+vQsmDtZ8buV6HNWLI parallels@ubuntu-linux-22-04-desktop The key's randomart image is: +---[RSA 3072]----+ | .o=| | . oo| | =| | ...+=| | S +O+o| | . . ..oE**=| | = o. . o+*O| | B.. o +=+o| | o.oo . =o.| +----[SHA256]-----+
-
im Browser auf github.com rechts oben mit rechter Maustaste auf Icon klicken
-
Settings
-
SSH und GPG keys
-
New SSH key
-
Titel eintragen: zB my-ssh-key
-
Mit copy-paste den Inhalt des public-keys (
id_rsa.pub
) in das Textfeld einfügen
-


2.2.3. Benutzerdaten zu git hinzufügen
git config --global user.name [username]
die primary Email in github durch settings > emails herausfinden und in
git config --global user.email [email]
einsetzen
2.2.4. Java Projekt erstellen
In dem geklonten projekt ein neues maven projekt erstellen

als group die umgekehrte Firmendomäne eingeben, in diesem Fall at.htlleonding
(Leider sind keine Bindestriche erlaubt).
2.2.5. Eine Änderung im Projekt durchführen
-
Eine neue README File erstellen und dann das Projekt committen mit der message "Initial commit"
-
Das repo pushen
-
Einen Partner in sein Projekt einladen
-
mit intellij die pom.xml als projekt öffnen
-
nachdem der Partner jetzt einen commit gepusht hat, kann man mit git pull das lokale repository updaten
2.2.6. Git Befehle (merge conflicts)
bei merge conflicts mit rebase lösen
git pull --rebase
oder mit merge
git pull --no-rebase
falls noch nicht committed wurde, kann durch
git stash
die momentane Arbeit in einem eigenen Bereich verborgen werden um sie nach dem erfolgreichen Pull mit
git stash pop
wieder in die Codebasis zu integrieren.
2.2.7. Feature Branches
einen branch erstellen mit
git branch [branchname]
oder erstellen und gleich wechseln
git checkout -b [branchname]
einen Branch wechseln
git switch [branchname]
Bei Arbeiten auf einem feature branch immer wieder mit
git (merge/rebase) main
den aktuellen stand des main branches auf den feature branch bringen
Wenn das Feature fertig gebaut wurde, muss der Branch wieder mit dem main branch gemerged werden. Dies kann durch manuelles mergen oder durch einen pull request stattfinden.
3. 2023-09-26
3.2. gh-actions

-
jobs sind eine eigene Maschine
-
jeder Job kann mehrere Steps ausführen
-
jeder Step kann gh-sctions ausführen oder shell-Kommandos
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: [push]
jobs:
demo:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v4
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
pwd
- run: echo "🍏 This job's status is ${{ job.status }}."
4. 2023-10-03
Autor: Al Desoky
4.1. Automatisierung des Java-Build-Prozesses mit GitHub Actions
4.1.1. Ein Maven-Build-Prozess ausführen
name: Build with Maven run: | mvn -B -DskipTests clean package working-directory: backend
-
Dieser Codeabschnitt führt den Maven-Befehl aus, um ein Java-Projekt im Verzeichnis "backend" zu kompilieren und ein ausführbares Paket zu erstellen. Dabei werden Tests übersprungen (-DskipTests), und der Befehl wird im Batch-Modus (-B) ausgeführt, ohne Benutzereingaben zu erwarten.
5. 2023-10-10
5.2. Projektteams
Team | Members |
---|---|
Winnies Baby App |
|
Schludermann Franklyn |
|
Fröllers kuratierte News-Aggregator mit Themenwahl |
|
Eco-Points |
|
Nuris Mülltrennungsapp |
|
5.4. MVP - Minimum Viable Produkt
-
A minimum viable product (MVP) is a version of a product with just enough features to be usable by early customers who can then provide feedback for future product development. wikipedia
-
https://www.agile-academy.com/de/product-owner/das-mvp-im-scrum/

5.5. Time boxing
Timeboxing is a time management technique used in Scrum and Agile project management, where specific tasks are allocated fixed and realistic deadlines. This ensures efficient use of time to complete them within the defined periods, ranging from minutes to weeks or months based on task complexity. Timeboxing: Definition, Benefits, and How It Works
7. 2023-11-07
7.1. GitHub Action
7.1.1. Jobs vs. Steps
Der Unterschied zwischen Jobs und Steps ist, dass Jobs gleichzeitig ablaufen und Steps hintereinander.
7.2. Bash source
Der source
-Command liest und führt Befehle aus der Datei aus, die als Argument in der aktuellen Shell-Umgebung angegeben ist.
Es ist nützlich, um Funktionen, Variablen und Konfigurationsdateien in Shell-Skripte zu laden.
7.3. Globbing
**/*.adoc
ist ein sogenannter "Globbing-Ausdruck", der verwendet wird, um alle Dateien mit der Erweiterung ".adoc" in beliebigen Unterverzeichnissen eines Verzeichnisses zu erfassen.
Das "**" repräsentiert "null oder mehr Verzeichnisse", und "*.adoc" steht für alle Dateinamen, die mit irgendetwas beginnen und mit ".adoc" enden.
8. 2023-11-28
-
Asciidoctor Preamble
= 4bhif - SEW - 1.Leistungsfeststellung
:icons: font
:experimental:
ifndef::imagesdir[:imagesdir: images]
ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :information_source:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]
9. 2023-12-19
9.2. Anforderungen an Tests
9.3. Reactive Extensions
-
https://redux.js.org/understanding/thinking-in-redux/three-principles
-
Single source of truth
-
State is read-only
-
Changes are made with pure functions
-
10. 2024-02-13


10.1. Kubernetes
10.1.2. Geschichte der Containerisierung
-
Docker hat eine Revolution in der Softwareentwicklung
-
Ein Docker - Container hat folgende Vorteile
-
Man ist unabhängig von der Umgebung
-
Man kann zB mehrere Versionen einer DB parallel laufen lassen.
-
-
Orchestrierung - mehrere Docker-Container werden koordiniert
-
docker-compose
-
11. 2024-02-04
11.1. Manuelles Deployment zu Minikube
./mvnw clean package l target cp src/main/docker/Dockerfile target l target docker build --tag ghcr.io/htl-leonding/backend:latest ./target docker image ls docker image prune docker image ls docker login ghcr.io docker push ghcr.io/htl-leonding/backend:latest minikube status minikube delete minikube start minikube dashboard kubectl apply -f ./k8s/postgres.yaml kubectl apply -f appsrv.yaml kubectl apply -f ./k8s/appsrv.yaml ./mvnw clean package cp src/main/docker/Dockerfile target docker build --tag ghcr.io/htl-leonding/backend:latest ./target docker image ls docker push ghcr.io/htl-leonding/backend:latest kubectl rollout restart deployment appsrv ./mvnw clean package cp src/main/docker/Dockerfile target docker build --tag ghcr.io/htl-leonding/backend:latest ./target docker push ghcr.io/htl-leonding/backend:latest kubectl rollout restart deployment appsrv kubectl port-forward appsrv-67464f9c4d-sr4cx 8080:8080 kubectl port-forward appsrv-5684cc66c8-n6tcg 8080:8080 kubectl port-forward appsrv-67464f9c4d-sr4cx 8080:8080 brew update && brew upgrade && brew upgrade --cask cd cd .kube l cat config ll l minikube stop cat config cat ~/.zsh_history
12. 2024-02-05
12.1. Dashboards
-
Die Indikatoren und Kennzahlen in Dashboards sollen nicht nur den aktuellen Wert anzeigen, sondern dem Betrachter eine Orientierung bieten. Folgende Fragen werden beantwortet:
-
Ist der Wert "gut" oder "schlecht"?
-
Alternativ: Hat sich der Wert zur Vor-Periode verändert?
-
Kann durch "Traffic Lighting" informativ dargestellt werden.
-
-
Definition:
-
Indikator: Ist ein einzelner Wert (gemessen, gewogen, gezählt) zB Kosten, Umsatz, Kündigungsrate
-
Kennzahl: Wird aus Indikatoren und anderen Kennzahlen berechnet zB ROI
-