Alle Artikel
-
Gleitkommazahlen: warum 0.1 + 0.2 nicht 0.3 ergibt
Binäre Gleitkommazahlen stellen die meisten Dezimalbrüche nur näherungsweise dar, sodass sich bei Rechnungen Rundungsfehler ansammeln; mit Toleranzen vergleichen, sorgfältig summieren, für Geldbeträge und Zählwerte Ganzzahlen oder Decimal-Typen verwenden und mit genügend Nachkommastellen ausgeben, damit ein Roundtrip gelingt.
-
Die TypeSafe-API aus einem Agenten heraus aufrufen: Anfragestruktur, Fehler, Wiederholungsversuche und Versionsfixierung
Der dokumentierte Vertrag, den ein Agent braucht, um Jev ohne Chat-Schicht aufzurufen: POST /v1/systemone mit einem Bearer-Key, einem State, einem Modellnamen und einer Map typisierter Fragen; Antworten mit denselben Schlüsseln wie die Fragen plus einem Usage-Block; 401, 422, 429 und 529 mit exponentiellem Backoff; Aliasse, die sich verschieben, und versionierte IDs, die es nicht tun; SDK-Standardwerte für Wiederholungsversuche und der Agent-Skill für Coding-Agenten.
-
Ein Betriebs-Dashboard gestalten: eine Frage pro Panel, ein Bildschirm pro Zielgruppe
Von den Fragen ausgehen, die eine reagierende Person beantworten muss, jeder Frage ein Panel geben, Panels von allgemein zu spezifisch ordnen, Einheiten und Achsen vereinheitlichen, Template-Variablen statt Kopien verwenden, jeden Pager-Alarm mit dem benötigten Dashboard verknüpfen und die Dashboard-Definition in der Versionskontrolle halten.
-
Dry-Run-Modi für Agentenhandlungen: den Plan vor der Änderung zeigen
Jedem Werkzeug, das Zustand ändert, einen Modus geben, der den konkreten Plan (welche Objekte, welche Felder, wie viele) berechnet und zurückgibt, ohne ihn anzuwenden, den Plan serverseitig validieren, wo das System dies erlaubt, verlangen, dass der Plan vor dem echten Aufruf erzeugt und geprüft wird, und das tatsächliche Ergebnis anschliessend mit ihm vergleichen.
-
Kurzlebige Datenbanken in Containern für Integrationstests
Die echte Datenbank-Engine wird für jeden Testlauf in einem Wegwerf-Container gestartet, die Daten liegen im Arbeitsspeicher, Migrationen werden einmal auf eine Vorlagendatenbank angewendet und pro Testdatei kopiert; so prüfen Tests den echten Planer, die echten Constraints und das Isolationsverhalten statt eines In-Memory-Ersatzes.
-
Geordnetes Herunterfahren: Umgang mit SIGTERM in Diensten
Container-Laufzeitumgebungen senden SIGTERM und warten eine Karenzzeit ab, bevor sie SIGKILL schicken; ein Dienst sollte keine neue Arbeit mehr annehmen, laufende Arbeit abschliessen oder zurückgeben, Verbindungen schliessen und innerhalb der Frist beenden. Wird das Signal ignoriert, wird aus jedem Deployment ein Ausfall.
-
Formulare mit nativen HTML-Constraints erzeugen pro Absendung weniger serverseitige Validierungsablehnungen als Formulare, die nur per eigenem JavaScript validiert werden
Hypothese: Der Browser blockiert die interaktive Absendung eines Formulars, dessen native Constraints (required, pattern, type, min und max) nicht erfüllt sind, während MDN festhält, dass ein Aufruf von submit() dies umgeht und novalidate es abschaltet; die These lautet, dass Formulare mit nativen Constraints, die die Serverregeln spiegeln, pro Absendung weniger Ablehnungen beim Server auslösen als Formulare, deren Prüfungen nur in eigenem Skript stecken, weil die nativen Prüfungen weiterlaufen, wenn das Skript nicht lädt oder Fehler wirft; vorgeschlagen wird ein A/B-Test, ohne behauptetes Ergebnis.
-
Upsert, row limits and identifier quoting across PostgreSQL, MySQL, SQLite and SQL Server
PostgreSQL's ON CONFLICT, MySQL's ON DUPLICATE KEY UPDATE, SQLite's PostgreSQL-style ON CONFLICT and SQL Server's MERGE are three families of upsert syntax, LIMIT/OFFSET has at least three shapes, and a quoted identifier means double quotes, backticks or square brackets depending on the engine.
-
Exit-Codes von find und xargs: das grobe 0/>0 von find gegenüber der Skala 123–127 von xargs
find garantiert nur 0 bei vollständigem Erfolg und einen Wert grösser als 0 bei einem Fehler, bewusst ohne feinere Abstufung. xargs definiert dagegen eine genaue Skala dafür, wie der aufgerufene Befehl gescheitert ist: 123 für einen gewöhnlichen Exit-Status ungleich 0, 124 für Exit-Status 255, 125 für Abbruch durch ein Signal, 126 für nicht ausführbar und 127 für nicht gefunden. Wer find an xargs weiterleitet, muss in einer einzigen Pipeline zwei unterschiedliche Exit-Code-Konzepte prüfen.
-
Erklären als Verständnistest: einem benannten Leser erklären, dann mit der Quelle abgleichen
Eine Erklärung für einen bestimmten, weniger informierten Leser zu schreiben oder auszusprechen, legt Lücken offen, die erneutes Lesen verdeckt; ein 2014 berichtetes Experiment fand, dass allein die Erwartung, unterrichten zu müssen, vollständigere und besser organisierte Erinnerung erzeugte als die Erwartung eines Tests, und die geschriebene Erklärung lässt sich Satz für Satz mit der Quelle abgleichen.
-
Wo Zugangsdaten auf einer Entwicklungsmaschine liegen, die ein Agentprozess lesen kann
Ein Agent, der unter dem Konto der nutzenden Person läuft, kann alles lesen, was diese Person lesen kann: Umgebungsvariablen, CLI-Zugangsdatendateien, Anmeldedaten für Container-Registries, SSH-Schlüssel, Shell-Historie und browsernahe Speicher. Diese Orte zu kennen erlaubt es einer betreibenden Person zu entscheiden, was ausserhalb der Reichweite des Agenten bleiben soll und was nach einem Vorfall erneuert werden muss.
-
Dependency Confusion: wenn ein öffentliches Paket ein privates verdrängt
Löst ein Build Paketnamen sowohl über einen privaten als auch einen öffentlichen Index auf, kann ein Angreifer, der den privaten Namen öffentlich mit einer höheren Version veröffentlicht, seinen eigenen Code installiert bekommen; die pip-Dokumentation nennt --extra-index-url für private Pakete deshalb ausdrücklich unsicher. Gegenmassnahmen sind an eine Registry gebundene Namensräume, ein einzelner proxyierender Index, Hash-Pinning und das Beanspruchen von Namen.
-
YAML sicher laden
Volle YAML-Loader können aus getaggten Knoten beliebige Objekte instanziieren; stets einen sicheren Loader verwenden, die YAML-Versionssemantik festnageln und das Ergebnis vor der Verwendung gegen ein Schema validieren.
-
Glob-Dialekte: Was * und ** in .gitignore, .dockerignore, Bash, Python und GitHub Actions bedeuten
Dieselben Zeichen * und ** bedeuten je nach Auswertungsort etwas anderes: Ein Muster ohne Schrägstrich in .gitignore greift in jeder Tiefe, dieselbe Zeile in .dockerignore nur im Wurzelverzeichnis des Kontexts. Die Rekursion über globstar in Bash muss aktiviert werden, und fnmatch in Python kennt keine Pfadlogik.
-
Der Link-Header und Link-Relationstypen
RFC 8288 erlaubt jeder HTTP-Antwort, getypte Links in einem Link-Header zu tragen: <ziel>; rel="relation" plus optionale Parameter anchor, hreflang, type, title und media. Relationsnamen stammen aus der IANA-Registry (next, prev, canonical, alternate, describedby, preload) oder sind absolute URIs für private Erweiterungen. So verweisen Nicht-HTML-Antworten auf ihre Nachbarn, und so teilt 103 Early Hints einem Browser mit, was früh abzurufen ist.
-
Drittanbieter-APT-Repository nach aktuellem Verfahren hinzufügen: deb822-.sources-Dateien und Signed-By-Keyrings
apt-key ist veraltet. Der unterstützte Weg, ein signiertes Drittanbieter-Repository hinzuzufügen, ist eine Keyring-Datei unter /etc/apt/keyrings, auf die eine Signed-By-Option verweist, entweder im klassischen einzeiligen Format oder im neueren deb822-.sources-Format, das Debian 12/13 und aktuelle Ubuntu-Releases beide verarbeiten.
-
Befehls-Wrapper mit einem argumentaufzeichnenden Ersatzprogramm überprüfen
Prüft, wie der Befehls-Wrapper eines Coding-Agenten durch die nutzende Person kontrollierte Werte in ausführbare Absicht umsetzt. Diese eigenständige Methode setzt anstelle des echten Programms einen harmlosen Argument-Rekorder ein und untersucht die Grenze direkt.
-
In-Place-Major-Upgrade von RHEL mit Leapp planen
Leapp aktualisiert RHEL 8 auf 9 oder RHEL 9 auf 10 in place, jedoch erst, wenn alle den Upgrade blockierenden Befunde im Preupgrade-Report behoben sind. Die Methodik beschreibt die Durchführung der Prüfung, das Festhalten von Antworten auf Rückfragen und warum das Backup vor dem eigentlichen Upgrade-Schritt erstellt wird.
-
GPU-gesteuertes Indirect Rendering: Draw-Workloads auf dem Gerät erzeugen
Sichtbarkeitsergebnisse der GPU nutzen, um Indirect Draws zu erzeugen, mit expliziter Pufferkapazität, Zähler-Resets, Synchronisation und einer CPU-Referenz zur Validierung.
-
Ein kleiner Swap-Bereich mit niedriger Swappiness reduziert OOM-Kills des Hauptdienstes auf speicherknappen Servern
Hypothese: Auf Einzweck-Servern, deren Arbeitsspeicherbedarf den RAM fast ausfüllt, lässt ein bescheidener Swap-Bereich zusammen mit einer niedrigen vm.swappiness den Kernel bei kurzen Lastspitzen kalten anonymen Speicher auslagern, sodass der Hauptdienst seltener per OOM beendet wird als auf demselben Host ohne Swap – auf Kosten gelegentlicher Latenz.
Maschinenlesbar: JSON