Code, den du sofort einsetzen kannst
Praktische Code-Snippets aus meiner täglichen Arbeit — kopieren, verstehen, einsetzen.
Notch und Home-Indikator umschiffen – env(safe-area-inset-*) in CSS
Dein Button klebt am unteren Rand und liegt auf dem iPhone genau unter dem Home-Indikator? Das löst CSS von sich aus – mit env(safe-area-inset-*) und einem Meta-Tag, das fast immer vergessen wird. Ich zeige das Muster, den häufigsten Fehler und wie du den Wert sogar im Canvas nutzt.
Werte einer Gruppe zu einer Liste zusammenfassen – GROUP_CONCAT in SQLite
Du willst pro Zeile nicht nur zählen, sondern die Werte selbst sehen – etwa alle Tags eines Beitrags als „PHP, SQL, Tipp" in einer Spalte? Genau dafür gibt es GROUP_CONCAT. Ich zeige dir die Grundform, ein eigenes Trennzeichen und wie du Dubletten sortiert loswirst.
Sequences in Kotlin – große Datenmengen faul verarbeiten und früh aufhören
Verkettete map/filter bauen bei jedem Schritt eine komplette Zwischenliste. Mit asSequence() läuft die Kette element-für-element – und hört auf, sobald genug Treffer da sind. Wann sich das lohnt und wann nicht.
value class in Kotlin – typsichere IDs ohne Extra-Kosten zur Laufzeit
Ein `String` für die Nutzer-ID, ein `String` für die Bestell-ID – und schon vertauschst du sie irgendwann. Mit `@JvmInline value class` bekommst du echte, unverwechselbare Typen, die zur Laufzeit trotzdem nur der nackte Wert sind. Kein Wrapper-Objekt, keine Bremse.
SSH bequemer machen – ~/.ssh/config und Port-Tunnel
Statt jedes Mal die lange ssh-Zeile zu tippen, hinterlegst du deine Server einmal in ~/.ssh/config. Und mit einem Port-Tunnel erreichst du eine entfernte Datenbank lokal, als liefe sie auf deinem Rechner. Zwei Dinge, die ich täglich nutze.
Suchen & Ersetzen im Terminal mit sed
Einen Text in vielen Dateien austauschen, ohne jede von Hand zu öffnen – das erledigt sed in einer Zeile. Ich zeige dir das Grundmuster, wie du es sicher in mehreren Dateien anwendest und warum du vorher immer erst ohne -i testest.
REST-APIs im Terminal testen mit curl
Bevor ich eine API in die App einbaue, teste ich sie im Terminal mit curl – GET, POST mit JSON, Header und Auth-Token. Ich zeige dir die Handvoll Flags, mit denen du jeden Endpunkt in Sekunden ausprobierst.
Backups im Terminal mit tar – packen, entpacken, anschauen
tar ist das Standardwerkzeug, um Ordner in eine einzige (komprimierte) Datei zu packen – ideal für schnelle Backups vor einem Deploy. Ich zeige dir die vier Aufrufe, die du wirklich brauchst, und wie du die kryptischen Flags endlich behältst.
Mit Datum und Zeit rechnen in SQLite – strftime und date()
SQLite hat keinen echten Datumstyp – Zeitangaben sind Text oder Zahlen. Mit den eingebauten Funktionen date(), datetime() und strftime() gruppierst du trotzdem nach Monat, rechnest Tage dazu und formatierst sauber. Ich zeige die Muster, die ich ständig brauche.
Fremdschlüssel und ON DELETE CASCADE in SQLite
Ein Fremdschlüssel sorgt dafür, dass keine verwaisten Zeilen entstehen – und mit ON DELETE CASCADE räumt die Datenbank abhängige Daten automatisch mit auf. Wichtig bei SQLite: Du musst die Prüfung pro Verbindung erst einschalten.
CASE WHEN in SQL – Bedingungen direkt in der Abfrage
Mit CASE WHEN baust du Wenn-Dann-Logik direkt in SQL: abgeleitete Spalten, Kategorien aus Zahlen und der Trick, mit dem du in einer Abfrage nach mehreren Kriterien gleichzeitig zählst (bedingte Aggregation).
Lesbare SQL-Abfragen mit CTEs – die WITH-Klausel
Verschachtelte Unterabfragen werden schnell unleserlich. Mit einer Common Table Expression (WITH … AS) gibst du einer Zwischenabfrage einen Namen und liest sie von oben nach unten wie einen kleinen Rechenweg. Ich zeige ein Beispiel mit Zwischenschritt.