# Dev Notes

Notizen, Quick Tips und längere Artikel.

#01

### std::string vs. std::string_view

C++

PROBLEM Unnötige Kopien beim Übergeben von Strings als Funktionsparameter.

LÖSUNG Wenn der String nur gelesen wird, `std::string_view` statt `const std::string&` nutzen. Kein Ownership, kein Copy-Overhead.

    void log(std::string_view msg) {
        std::cout << msg;
    }

#02

### dict.get() statt dict[]

Python

PROBLEM `KeyError` beim Zugriff auf einen Key, der nicht existieren könnte.

LÖSUNG `.get()` gibt `None` (oder einen Default) zurück, statt zu crashen.

    val = data.get("key", "default")

#03

### Falschen Commit-Message fixen

Git

PROBLEM Commit abgeschickt, Message falsch.

LÖSUNG `--amend` vor dem Push. Danach wird's komplizierter.

    git commit --amend -m "Richtige Message"

#04

### Vergessenes virtual im Destruktor

C++

PROBLEM Basisklassen-Destruktor ist nicht `virtual` → Derived-Objekte werden nicht korrekt zerstört.

LÖSUNG Sobald eine Klasse als Basisklasse gedacht ist:

    class Base {
    public:
        virtual ~Base() = default;
    };

#05

### Optional Chaining statt verschachteltem if

JavaScript

PROBLEM Tief verschachtelte Objekte ohne Garantie, dass jede Ebene existiert.

LÖSUNG `?.` und `??` kombinieren. Kürzer, kein `TypeError`, kein 3-stöckiges `if`.

    const city = user?.address?.city ?? "Unbekannt";

#Nintendo3DS

### Introduction to 3DS Homebrew Development

How to start programming homebrew for the Nintendo 3DS.

homebrew 3DS C++
Read More
#Backend

### Account-Verwaltung

Accounts handhaben, ohne Angst zu haben, Passwörter zu leaken.

Python Security Webserver
Lesen
#Backend

### Email-Authentifizierung

Emails im Backend verschicken, Benutzer über Login-Code verifizieren.

Python Backends Webserver
Lesen
#Backend

### Passwörter hashen & salzen

Auswirkung eines Datenbankleaks minimieren, so geht's richtig.

Python Security Backends
Lesen
#Backend

### Datenbanken

Daten, Benutzer und Accounts in einer Datenbank speichern.

Python Backends Webserver
Lesen