hwr-notes/Studienarbeit II/Vortragsnotizen.md
2026-04-09 11:24:56 +02:00

2.3 KiB

Vortragsnotizen:

1. Status Quo (auch Randbedingungen)

Technologien

  • Golang als Programmiersprache (unverändert)

  • Goland als IDE (in Studienprojekt I)

  • VSCode (Editor mit Extension wegen besserer WSL Kompatibität)

  • Fyne als Frontend-Go-Library (unverändert)

  • Überlegung: Frontend-Framework als Frontend mit REST-API Kommunikation (React, Angular, Vue)

    • mehr Aufwand der nur die Inconvinience von Fyne lösen würde
    • Probleme mit Wails für Web-Framework-Desktop Apps
    • somit mehr Aufwand als funktionale Veränderungen
    • deshalb bei Fyne bleiben mit Kommunikation über Signal Channel
  • TCP/IP als Protokoll weiterhin

  • Testing: Zwei Szenarien:

    • Zwei Computer (inconvinient)
    • Zwei Instanzen auf dem selben Computer oder zwei VMs haben sich eher bewährt wegen Zeiteffizienz

Funktionalitäten

  • Bisher bauen wir auf einer Software auf mit:
    • Netzwerk: Lokale automatische TCP-Verbindungen
    • TCP-Paketversand automatisch in drei verschiedenen Verzögerungen
    • Pakete werden visualisiert über Balkendiagramme
    • Verbindungsstatus LED für den User
    • Dark Mode für Barriefreiheit, wie reduzierte Augenbelastung und bessere Lesbarkeit
    • Fenster kann im Vollbild genutzt werden mit automatischer Skalierung der UI-Elemente
    • Cross-Platform kompatibel, Auslieferung für Windows, Linux und MacOS

Frontend-Erweiterungen

Peer-Discovery

  • Vorher: Nutzer kann nicht sehen mit welchem anderen Peer er verbunden ist, nur dass er überhaupt verbunden ist oder nicht

  • Snapdrop UI nicht realisiert weil:

    • Fyne arbeitet mit statischen Layouts und nativen Widgets
    • Radar-Zeichnung im Canvas zu komplex zur Erhaltung der Wartbarkeit des Code
    • Stattdessen Stärke von Fyne: Grid-Layout
    • Für Snapdrop Frontend-Austausch durch Web-Framework nötig leider (besser lösbar darin)
  • Button Grid für verfügbare Instanzen, blau/weiß oder blau/schwarz für hohen kontrast

  • Grid wird vom Backend alle 100ms aktualisiert

  • Responsiveness im Button Grid Container :

    • Schmales Fenster: Nur zwei Buttons nebeneinander
    • Breites Fenster: Vier Buttons nebeneinander,
  • Vorher: User klickt auf Button -> verbindet sich -> kann nur disconnecten indem er das Programm schließt

  • Disconnect Button im verbunden Zustand

  • Keine Peers werden angezeigt, weil die aktuelle Instanz schon verbunden ist