bericht: finish go,nix
kate kate@breadlabs.de
Tue, 24 Mar 2026 12:50:49 +0100
1 files changed,
10 insertions(+),
1 deletions(-)
M
uni/Praktikum/Praktikumsbericht.typ
→
uni/Praktikum/Praktikumsbericht.typ
@@ -70,11 +70,20 @@
Zudem macht es Go leicht alle Fehler so zu verarbeiten, das das Programm nicht unerwartet abstürzen sollte indem Fehler als Werte abgebildet werden. Den Rückgabewert eines Fehlers zu ignorieren ist deshalb eine sehr bewusste Wahl (z.B. `_, value := foo()` anstatt `err, value := foo()` bei einer Funktion `foo` welche die einen Fehler und Wert zurückgibt). \ -Die andere Genutzte Technologie in diesem Projekt ist Nix bzw. NixOS. Nix ist eine funktionale Programmiersprache, Linux Distribution und Paketmanager. Als Linux Distribution ist NixOS ein Betriebssystem welches um den Nix Paketmanager gebaut ist und Nix als funktionale Programmiersprache nutzt um das gesamte System zu konfigurieren. +Die andere genutzte Technologie in diesem Projekt ist Nix bzw. NixOS. Nix ist eine funktionale Programmiersprache, Linux Distribution und Paketmanager. Als Linux Distribution ist NixOS ein Betriebssystem welches um den Nix Paketmanager gebaut ist und Nix als funktionale Programmiersprache nutzt um das gesamte System zu konfigurieren. Das System wird aus der Konfiguration welche in Nix geschrieben ist reproduzierbar gebaut. Der wesentliche Grund warum für dieses Projekt NixOS als Betriebssystem gewählt wurde ist das es dank der Reproduzierbarkeit bei Systemproblemen einfach auf die letzte funktionierende Version zurückgerollt werden kann, was das Aufsetzen und Instandhalten eines Systems simpel macht. +\ +Die Applikation wurde durch Nix Konfiguration als System-Service eingerichtet. Dazu musste für die Applikation erst ein internes Nix-Paket erstellt werden. + +Die Erstellung von Nix Paketen stellte sich grundlegend als relativ simpel heraus, jedoch stellten sich Probleme mit der Kompatibilität von den Go Paket system heraus, da die Pakete im Vorhinein in die isolierte Umgebung geladen werden müssen damit sie beim kompilieren auch ohne Internetzugang verfügbar sind. + +Um dieses Problem zu lösen habe ich das Tool gomod2nix genutzt welche die `go.mod` Datei eines Go-Projektes ausliest und diese für den vorhin genannten Prozess zur Verfügung stellt. + +\ +Am Ende konnte der Service erfolgreich auf dem Raspberry Pi 4B deployed werden und mit minimalem Wartungsaufwand operational gehalten werden. == Frontend-Entwicklung == Datenaufbereitung == Middleware Entwicklung