lab-development-imb/web/09/labor/09_aufgaben.md

4.5 KiB
Raw Blame History

Übungsblatt 09

Hinweise:

  • Aufgabe 3 + 6: Keine Abgabe erforderlich
  • Aufgabe 1 + 2 + 4 + 5: Abgabe erforderlich

Im Normalfall ist immer eine Abgabe erforderlich, es sei denn es gibt einen expliziten Hinweis!

1. Go-Übung: Datenbank INSERT

Aufgabenstellung: Erstellen Sie ein Webserver-Programm in Go, dass beim Aufruf eines Endpunkts /insert einen neuen Datensatz in der Datenbank speichert.

Hinweis

Siehe Hinweise zu Aufgaben 2 und 3 weiter unten.

2. Go-Übung: Datenbank UPDATE

Aufgabenstellung: Erweitern Sie das Programm aus Aufgabe 1 um einen neuen Endpunkt /update, der einen vorhandenen Datensatz in der Datenbank aktualisiert.

Hinweis

Siehe Hinweise zu Aufgaben 1 und 2 weiter unten.

Hinweise zu Aufgaben 1 und 2

  1. Erstellen Sie zunächst die benötigten Tabellen und Datensätze in Ihrer Datenbank. Eine Anleitung hierfür finden Sie hier: Datenbank vorbereiten
  2. Verwenden Sie folgende Schnittstellen-Definition für Ihre Implementierung: Swagger-API
  3. Tipp: Um die Elemente eines Slice in einem String zusammenzufügen, können Sie das Paket strings aus der Standard-Bibliothek verwenden: strings.Join

3. Dev-Container aktualisieren

Keine Abgabe erforderlich

Aufgabenstellung: Aktualisieren Sie Ihren Dev-Dontainer in VS Code als Vorbereitung auf die nächste Vorlesung und Labor.

Arbeitsschritte

  1. Neueste Änderungen am Dockerfile holen

    git pull
    
  2. Sicherstellen, dass die neuen Dateien lokal da sind

    • Prüfe .devcontainer/Dockerfile auf einen neuen Eintrag zu
    # Node.js 24 (LTS) installieren
    
  3. Dev-Container neu bauen

    • In VS Code: F1Dev Containers: Rebuild Container
    • oder über die Statusleiste → Rebuild Container
  4. Testen der neuen NodeJS-Installation

    node --version
    

    Es sollte folgendes ausgegeben werden:

    v24.11.1
    

4. Javascript-Übung: Grundlagen

Aufgabenstellung: Machen Sie sich zunächst mit den Grundlagen der Programmiersprache vertraut und schreiben Sie dann ein Programm, das über ein vorgegebenes Array von Zahlen iteriert und für jede Zahl ausgibt: - "Null" wenn die Zahl 0 ist - "Gerade Zahl" wenn die Zahl gerade ist - "Ungerade Zahl" wenn die Zahl ungerade ist

Ausgangsdaten:

const zahlen = [38, 0, 226, 384, 111, 500383];

Arbeitsschritte

  1. Arbeiten Sie mindestens die folgenden Kapitel auf Javascript Tutorial durch:
    • JS Syntax
    • JS Variables
    • JS If Conditions
    • JS Loops
  2. Verwenden Sie zur Lösung der Aufgabe eine forSchleife und den ternären Operator.
  3. Tipp: zahlen.length liefert die aktuelle Länge des Arrays.

5. Javascript-Übung: Arrow-Function

Aufgabenstellung: Die Produktdaten eines kleinen Online-Supermarkts liegen als Array von Objekten vor, jedes Objekt enthält den Namen und den Preis eines Produkts. Schreiben Sie eine kleine Javascript-Funktion, die ein neues Array erstellt, in dem alle Preise um 10% reduziert sind. Die Preise sollen dabei auf zwei Nachkommastellen gerundet werden.

Ausgangsdaten:

[
  { "produkt": "Joghurt", "preis": 2.49 },
  { "produkt": "Brot",    "preis": 3.29 },
  { "produkt": "Käse",    "preis": 8.99 },
  { "produkt": "Duschgel","preis": 2.79 }
]

Arbeitsschritte

  1. Verwenden Sie map, um ein neues Array zu erzeugen.
  2. Nutzen Sie eine Arrow-Function, um den Rabatt zu berechnen.
  3. Mit .toFixed(2) können Sie die Preise auf zwei Nachkommastellen formatieren.
  4. Geben Sie das neue Array in der Konsole aus.

6. Go-Übung: CORS

Keine Abgabe erforderlich

Aufgabenstellung: Erweitern Sie die beiden serverseitigen Go-Programme zur Workshop-Anmeldung aus den vorangegangen Übungsblättern 07 und 08 so, dass beim Ausführen der "Try Out"-Funktion in der SwaggerUI-Preview kein CORS-Fehler mehr auftaucht.

Arbeitsschritte

  1. Fügen Sie folgende Zeile am Anfang in Ihrer Handler func oder in der ServeHTTP-Funktion ihres http.Handler auf:

    w.Header().Set("Access-Control-Allow-Origin", "*")
    w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
    w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
    
    if r.Method == "OPTIONS" {
    	w.WriteHeader(http.StatusNoContent)
    	return
    }
    
  2. Testen Sie Ihr(e) Programm(e) mit dieser Workshop-API.