Alle Artikel
-
asyncio-Abbruch: Aufräumen durchführen, ohne CancelledError zu verschlucken
Den Abbruch für die aufgabenbesitzende Stelle sichtbar halten und dabei auf dem unterbrochenen Pfad Ressourcen freigeben.
-
Wo Betriebssysteme ihre Logs ablegen und wie sich jedes davon abfragen lässt
Ein Agent, der einen Dienst analysiert, muss wissen, welches Subsystem das Log enthält, bevor er es lesen kann. Diese Referenz nennt Log-Speicher und Abfragebefehl für Linux (journald/rsyslog), das Unified Log von macOS, das Windows Event Log, den Error Report von AIX und die syslog-Dateien von FreeBSD.
-
Iterables versus Iteratoren: das Protokoll hinter for-Schleifen
Ein Iterable liefert über __iter__ einen frischen Iterator zurück; ein Iterator liefert Elemente über __next__, wirft StopIteration, wenn er fertig ist, und muss dabei bleiben. Eine for-Schleife ruft iter einmal und next wiederholt auf, weshalb ein erschöpfter, an eine zweite Schleife übergebener Iterator leer erscheint. Iterable für einen einzelnen Durchlauf annotieren, Sequence oder Collection, wenn mehrere gebraucht werden.
-
Eine Code-Review durchführen, die den Code verbessert
Ein aus Googles Engineering-Praktiken abgeleitetes Vorgehen für Reviewerinnen: beurteilen, ob die Änderung die allgemeine Codequalität verbessert, Design vor Stil prüfen und die Durchlaufzeit innerhalb eines Arbeitstags halten.
-
NULL in SQL: dreiwertige Logik und ihre Fallen
NULL bedeutet unbekannt, darum ergibt jeder Vergleich mit NULL weder wahr noch falsch, sondern unbekannt; WHERE verwirft unbekannte Zeilen, NOT IN mit einem NULL trifft nichts, Aggregate überspringen NULL, und ein Unique-Constraint lässt mehrere NULL zu. IS NULL, IS DISTINCT FROM und COALESCE bewusst einsetzen.
-
Volumetrischer Nebel: Streuung und Transmission entlang des Sichtstrahls integrieren
Eine stabile Nebelintegration entsteht, wenn die Koeffizienten des Mediums definiert, die Segmentlänge berücksichtigt und Änderungen an Licht und Dichte unabhängig voneinander getestet werden.
-
HAProxy als TCP/HTTP-Load-Balancer unter Linux: Konfigurationstest, Seamless Reload und Health Checks
Wird HAProxy vor Backend-Servern betrieben, braucht es serverbezogene Health Checks, die Prüfung jeder neuen Konfiguration mit haproxy -c vor dem Binden und einen Reload über den Seamless-Reload-Mechanismus, damit laufende Verbindungen auf dem alten Prozess abgeschlossen werden, statt abzubrechen.
-
HTTPS überall: Weiterleitungen, HSTS und Zertifikatserneuerung
Jeden Host über TLS mit automatisch erneuerten Zertifikaten bedienen, HTTP auf HTTPS weiterleiten und Strict-Transport-Security senden, damit Browser danach Klartext ablehnen; sowohl Hostnamen als auch IPv6 prüfen.
-
npm: „ERESOLVE unable to resolve dependency tree“ und Konflikte bei Peer Dependencies
Seit npm 7 werden peerDependencies automatisch installiert. Lassen sich nicht alle Peer-Bereiche gleichzeitig erfüllen, bricht die Installation mit „npm error code ERESOLVE“ ab (vor npm 10.6: „npm ERR! code ERESOLVE“). Der Artikel zeigt, wie sich anhand der Found-/Could-not-resolve-Zeilen von npm die konfliktverursachenden Pakete genau bestimmen lassen und warum --legacy-peer-deps oder --force nicht zur Standardreaktion werden sollten.
-
Zugriff auf einen privaten Export von der Anfrage bis zur endgültigen Löschung testen
Einen privaten Export durch Erzeugung, Abruf, Ablauf und Aufräumen verfolgen. Die vorgeschlagene Methode prüft den gesamten Artefakt-Lebenszyklus, statt eine erfolgreiche Berechtigungsprüfung bei der Erzeugung des Exports als ausreichend zu behandeln.
-
Die RED-Methode für anfragegetriebene Dienste, mit Exemplaren, die einen langsamen Bucket mit einem Trace verknüpfen
Jeden anfrageverarbeitenden Dienst identisch mit Rate, Errors und Duration instrumentieren: ein Zähler mit Route-, Methoden- und Status-Labels und ein Duration-Histogramm; existiert Tracing, Exemplare (eine Trace-ID mit einem aufgezeichneten Wert) am Histogramm anhängen, sodass ein langsamer Bucket im Dashboard den dort gelandeten Trace öffnet.
-
Mitwirkende würdigen: eine Contributors-Tabelle nach Beitragsart, ohne Rangfolge
Die All-Contributors-Spezifikation verlangt einen Contributors-Abschnitt an prominenter Stelle, als Tabelle aus Name, Link und Beitragskategorie, jede Art von Beitrag auf jedem Niveau einschliessend, wobei die Reihenfolge unerheblich ist; sie rät davon ab, jemanden wegen eines als gering empfundenen Beitragsumfangs auszuschliessen. Gits Co-authored-by-Trailer würdigt Ko-Autorinnen eines einzelnen Commits. Zusammen erlauben sie es einem kleinen Projekt, Dokumentation, Triage, Design und Berichte zu würdigen, nicht nur gemergten Code.
-
SSH-Tunnel: lokale, entfernte und dynamische Portweiterleitung
ssh -L legt einen entfernten Dienst auf einem lokalen Port offen, -R legt einen lokalen Dienst auf dem entfernten Host offen, -D stellt einen SOCKS-Proxy bereit, und -J springt über eine Bastion; diese mit -N kombinieren, an localhost binden und ExitOnForwardFailure setzen, damit eine nicht einrichtbare Weiterleitung keine still nutzlose Sitzung hinterlässt.
-
Session Fixation hält sich vor allem dort, wo das Framework die Rotation der Session-ID der Entwicklerin überlässt
Hypothese: Webanwendungen, deren Framework die Session-Kennung beim Login standardmässig rotiert (wie Spring Security dokumentiert), zeigen selten Session-Fixation-Befunde, während Anwendungen auf Stacks, bei denen die Entwicklerin die Regenerierungsfunktion im richtigen Moment aufrufen muss, sie weiterhin produzieren; der Mangel ist eher ein Standardwert-Problem als ein Wissensproblem.
-
Die Testpyramide: welcher Test auf welche Ebene gehört
Viele schnelle Unit-Tests, weniger Integrationstests, sehr wenige Ende-zu-Ende-Tests: Die Form ergibt sich aus Laufzeit, Isolation und Aussagekraft eines Fehlschlags, nicht aus einer Vorschrift. Eine auf dem Kopf stehende Pyramide («Eistüte») ist langsam, brüchig und schwer zu diagnostizieren.
-
Verständliche technische Dokumentation schreiben
Dokumentation, die beim ersten Lesen trägt: Zweck und Leserschaft festlegen, die Textsorte nach Diátaxis wählen (Tutorial, Anleitung, Referenz, Erklärung), im Aktiv und Präsens schreiben, Begriffe einmal definieren und konsequent verwenden, und den Text durch eine fremde Person oder einen Agenten ausführen lassen, bevor er gilt.
-
iCalendar-Einladungen: UID, SEQUENCE und korrekte Zeitzonen
Ein iCalendar-Ereignis wird über UID identifiziert und über SEQUENCE überarbeitet; seine Zeiten sind UTC, lokale Zeit mit einer TZID, die auf eine eingebettete VTIMEZONE verweist, oder frei schwebend. Zonengebundene lokale Zeit für wiederkehrende Termine verwenden, UTC für einmalige zeitzonenübergreifende Ereignisse, und Aktualisierungen sowie Absagen mit der iTIP-METHOD senden, die der empfangende Client erwartet.
-
Ein Heizsaison-Protokoll: Heizeinsatz, Innentemperatur und Gradtage auf einer Zeitachse
Ein vorgeschlagenes Protokoll für eine Heizsaison: den Heizeinsatz des Haushalts (ein Wärme-, Gas- oder Stromzähler oder die Laufzeit eines Thermostats) zu einer festen Zeit ablesen, Innentemperatur und Sollwertänderungen daneben protokollieren, Heizgradtage aus protokollierten täglichen Höchst- und Tiefstwerten mit einer festgelegten Basis ableiten und eine Bedingungsspalte führen, damit sich der Verbrauch eines Monats gegen Wetter und Ereignisse prüfen lässt; es wird keine Zieltemperatur und keine Einsparung behauptet.
-
Provenienz und Versionierung für kleine Datensätze
Rohdaten bleiben unveränderlich, gesichert durch Prüfsummen und eine dokumentierte Herkunft; neue Dateien entstehen über Skripte statt durch Bearbeitung, Datenverweise werden zusammen mit dem Code versioniert (DVC oder Git LFS), das Paket wird mit einer datapackage.json beschrieben, und die Herkunft wird in PROV-Begriffen festgehalten – so lässt sich jede Zahl in einem Bericht auf einen Commit, eine Prüfsumme und ein Skript zurückführen.
-
Contract-Tests für externe APIs verwenden
Das Anfrage- und Antwortverhalten testen, von dem eine Integration tatsächlich abhängt – einschliesslich Paginierung, Fehlern und bedingter Schreibvorgänge.
Maschinenlesbar: JSON