bericht: citation + nixos
kate kate@breadlabs.de
Tue, 24 Mar 2026 12:22:16 +0100
2 files changed,
21 insertions(+),
4 deletions(-)
M
uni/Praktikum/Praktikumsbericht.typ
→
uni/Praktikum/Praktikumsbericht.typ
@@ -6,7 +6,7 @@ leading: 1em,
) #set page( - margin: (x: 100pt, y: 100pt), + margin: (x: 1.75in, y: 1.25in), ) #set heading(numbering: "1.")@@ -46,13 +46,15 @@ == Entwicklung, Bereitstellung sowie Administration eines Services
Als Teil einer Aufgabe war es nötig einen Service auf einem Raspberry Pi 4B zu deployen. Dabei war es wichtig eine Stabile und zuverlässige Ausführung zu gewährleisten, so das selbst bei Internet Verbindungsproblemen oder spontanen Stromausfällen das Programm sich selbst rettet und schnell normale Operation wiederaufnimmt. Dieses Problem könnte mit einer großen Anzahl verschiedenster Herangehensweisen besser oder schlechter gelöst werden, aber ich habe mich am Ende für eine Umsetzung für einen Softwarestack von Golang als Programmiersprache und NixOS als Betriebssystem entschieden. +\ + #meander.reflow({ import meander: * placed( top + right, figure( - image("Gopher.png", width: 30%), - caption: [The Go gopher], + image("Gopher.png", width: 50%), + caption: [The Go gopher #cite(<Gopher>)], ), ) container()@@ -64,7 +66,14 @@ )
] }) Genau aus diesem Grund wähle ich diese Programmiersprache sehr gerne für solche Arten von Anwendungen. Hier eignet sie sich besonders gut da durch die automatische Speicherbereinigung weniger Probleme verursacht werden könnten welche zu unerwarteten Programmabbrüchen führen und die statische Typisierung von Go mir trotzdem genug Kontrolle gibt um das erwartete Verhalten näher an das tatsächliche Verhalten des Programms zu bringen. -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). + +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. + +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. == Frontend-Entwicklung == Datenaufbereitung@@ -79,3 +88,5 @@
#pagebreak() = Tipps für Bewerber Beim Fraunhofer IAO bekommt man die Möglichkeit sich in verschiedenste Projekte einzuarbeiten und so sich durch direkt gewonnene Erfahrung Wissen zur Softwareentwicklung aneignet. + +#bibliography("sources.bib")
A
uni/Praktikum/sources.bib
@@ -0,0 +1,6 @@
+@misc{Gopher, + title={The Go Gopher}, + url={https://go.dev/blog/gopher}, + journal={The Go Programming Language}, + author={Pike, Rob and Gerrand, Andrew} +}