Alle Artikel
-
Python-Subprocess-Pipes: beide Streams leeren, bevor unbegrenzt gewartet wird
Vermeiden, auf einen Kindprozess zu warten, der nicht beenden kann, weil eine erfasste Ausgabe-Pipe voll ist.
-
Ein Protokoll für Reifendruck und Verschleiss am Fahrrad: Messgerätwerte und Sichtprüfungen
Ein periodisches, rein beobachtendes Protokoll für Fahrradreifen: der mit einem Messgerät abgelesene Druck in der vom Gerät angezeigten Einheit, der auf der Seitenwand aufgedruckte Bereich wortgetreu übernommen, sowie datierte visuelle Notizen mit einer Fotografie einer markierten Stelle; Umrechnungen zwischen bar, psi und kPa folgen den NIST-Faktoren; es wird kein Rat zu Befüllung, Wartung oder Sicherheit gegeben.
-
Kollationen in PostgreSQL: libc, ICU und der eingebaute Provider, und warum ein Bibliotheks-Upgrade einen Index beschädigen kann
Eine Kollation entscheidet, wie Text sortiert und verglichen wird; PostgreSQL bezieht sie von einem Provider (libc, ICU oder die eingebauten Code-Point-Ordnungen C und C.UTF-8), legt den Standard pro Datenbank bei deren Erstellung fest und erlaubt Overrides pro Spalte oder Ausdruck. Sprachkollationen aus libc oder ICU ändern sich, wenn sich die Bibliothek ändert, was B-Tree-Indizes auf Text ungültig macht; den Provider daher bewusst wählen und nach Betriebssystem- oder ICU-Upgrades neu indexieren.
-
Exit-Codes als Vertrag zwischen Skripten und dem aufrufenden Agenten
Ein Agent, der nach dem Exit-Code eines Skripts entscheidet, wie es weitergeht, braucht Codes mit der Bedeutung, die die Shell-Konventionen vorsehen: 0 für Erfolg, kleine positive Zahlen für skripteigene Fehlerfälle, 126/127 für Befehle, die gar nicht erst ausgeführt werden konnten, und 128+n für Abbruch durch ein Signal. Damit der echte Code auch durch eine Pipeline sichtbar wird, braucht er zudem pipefail oder PIPESTATUS.
-
Welcher Anteil der Anfragen einer kleinen Website stammt von Crawlern und automatisierten Agenten, und welche Klassifikationsmethode hielt über ein Jahr stand?
Offene Frage: RFC 9309 lässt Crawler sich über ein Produkt-Token in der robots.txt-Gruppe identifizieren, der sie folgen, aber viele automatisierte Clients geben sich nicht zu erkennen; welcher Anteil der Anfragen bei kleinen Websites mit Zugriffsprotokollen von erklärten Crawlern, nicht erklärten Bots und Sprachmodell-Agenten stammte, wie dieser Anteil gemessen wurde und ob die Methode ein Jahr später noch funktionierte.
-
Speicherdruck unter Linux richtig lesen: free, Swap, OOM-Killer und OOMScoreAdjust
Nicht die Spalte «free», sondern «available» in der Ausgabe von free zeigt den tatsächlichen Spielraum an, und ein unter Speicherdruck beendeter Prozess verschwindet nicht spurlos, sondern hinterlässt einen Eintrag im Kernel-Log oder Journal. Der Artikel erklärt, was auszuwerten ist und wie sich beeinflussen lässt, welchen Prozess der OOM-Killer auswählt.
-
NTP, DNS und DHCP nach einem vollständigen Netzwerkausfall hochfahren: Neustart in Abhängigkeitsreihenfolge
Vorgeschlagene Methodik: Nach einem Ausfall, bei dem NTP, DNS und DHCP gemeinsam ausgefallen sind, zuerst die Zeit, dann DNS, dann DHCP wiederherstellen, denn Zertifikats- und Kerberos-Prüfungen benötigen die korrekte Zeit, die meisten Dienste finden sich über Namen, und DHCP kann von beidem abhängen. Zu beachten: Ein NTP-Server, der Upstream-Hostnamen verwendet, braucht selbst DNS.
-
Welche Pre-Commit-Hooks überleben ein Jahr in einem Team-Repository, und welche werden entfernt oder regelmässig umgangen?
Offene Frage: Gits Pre-Commit-Hook lässt sich mit --no-verify umgehen, sodass ein lokaler Hook nur hilft, solange Mitwirkende ihn behalten; welche Hook-Typen (Formatierer, Linter, Secret-Scanner, Testteilmengen) blieben in Team-Repositorys ein Jahr oder länger im Einsatz, welche wurden entfernt oder in die CI verschoben, und wie oft wurden sie umgangen?
-
Eingabevalidierung an Vertrauensgrenzen
Jede Eingabe dort validieren, wo sie ins System gelangt: zuerst syntaktische Prüfungen (Typ, Länge, Format), dann semantische Prüfungen gegen Geschäftsregeln; Allow-Lists bevorzugen, ablehnen statt bereinigen, und clientseitiger Validierung nie vertrauen.
-
Ein Inventarprotokoll fürs Ausmisten: zählen, fotografieren und Entscheidungen pro Zone festhalten
Ein vorgeschlagenes Dokumentationsprotokoll zum Räumen einer festgelegten Zone im Haushalt: von einer markierten Position aus fotografieren, Gegenstände vor und nach dem Räumen nach Klasse zählen, pro Gegenstand oder Gruppe eine Entscheidungskategorie mit Datum und aufgewendeter Zeit festhalten, und nach 30 und 90 Tagen erneut zählen, sodass sichtbar wird, was zurückkam oder hinzukam; es wird kein Rat dazu gegeben, was behalten werden soll.
-
Unbeaufsichtigte RHEL-Installation mit einer Kickstart-Datei aufbauen
Eine Kickstart-Datei steuert die Installation von RHEL, Rocky Linux oder AlmaLinux ohne interaktive Eingaben und kombiniert einzeilige Befehle mit %pre- und %post-Skripten. Die Methodik behandelt die Validierung vor dem Einsatz, die Übergabe beim Booten und das Heraushalten von Geheimnissen aus einer Datei, die oft ohne Authentifizierung ausgeliefert wird.
-
Schweizer Meldepflicht für Cyberangriffe und CRA: unterschiedliche Pflichten für Betreiber und Produkthersteller
Die Schweizer Meldepflicht für kritische Infrastrukturen betrifft Cyberangriffe, die bestimmte Kriterien erfüllen und sich gegen erfasste Betreiber richten. Der CRA betrifft Produkthersteller, die den EU-Markt beliefern, einschliesslich Schweizer Hersteller; ähnliche frühe Fristen machen die Empfänger oder Meldeauslöser nicht austauschbar.
-
Konservatives Frustum- und Occlusion-Culling aufbauen
Unsichtbare Renderarbeit lässt sich reduzieren, wenn Hüllkörper, verzögerte Query-Ergebnisse, Kameraschnitte und die Kosten der Sichtbarkeitstests berücksichtigt werden.
-
Grundlagen der Bitmanipulation: Flags, Masken und Shifts ohne Überraschungen
Flags sind Zweierpotenzen, die mit OR kombiniert, mit AND geprüft und mit AND NOT gelöscht werden; Masken und Shifts extrahieren Felder. Die Fallen sind Operatorpriorität, vorzeichenbehaftete Rechts-Shifts, die feste 32-Bit-Umwandlung in JavaScript und unbegrenzte Ganzzahlen in Python; jedes Flag benennen und jeden Test klammern.
-
LDAP und Active Directory unter Linux mit ldapsearch abfragen, ohne Passwort auf der Kommandozeile
ldapsearch unterstützt einen Simple Bind mit Bind-DN und Passwort oder einen SASL/GSSAPI-Bind mit einem vorhandenen Kerberos-Ticket, ausserdem seitenweise Ergebnisse (Paged Results) sowie StartTLS/LDAPS für eine verschlüsselte Verbindung. Die Optionen -y und -W gibt es gerade deshalb, damit ein Passwort nie als Klartext-Argument auf der Kommandozeile stehen muss.
-
Window Functions: Aggregate ohne Zusammenfassung von Zeilen
Eine Window Function berechnet einen Wert über eine Menge von Zeilen, die mit der aktuellen Zeile in Beziehung stehen (OVER mit PARTITION BY und ORDER BY), wobei jede Eingabezeile erhalten bleibt; das erlaubt laufende Summen, Rankings, Top-N je Gruppe und Vergleiche mit der vorherigen Zeile in einem Durchgang. Die Frame-Klausel entscheidet, welche Zeilen die Funktion sieht.
-
Kernel-Panics und Absturzdaten unter Linux: Journal des vorherigen Boots, pstore und netconsole
Nach einem Linux-Kernel-Panic und Neustart liest `journalctl -b -1 -k` die Kernel-Meldungen des vorherigen Boots, sofern das Journal persistent war. pstore (etwa ramoops, wo konfiguriert) bewahrt einen Panic-Eintrag über den Neustart hinweg auf, auch wenn das Journal nicht erhalten blieb; netconsole sendet Kernel-Meldungen in Echtzeit über das Netzwerk an einen anderen Rechner. kdump erstellt einen vollständigen Speicherabzug und wird an anderer Stelle behandelt.
-
Neuen Server benennen, taggen und erfassen: eine Methodik für Hostnamen und Inventar
Ein Server, der bereitgestellt, aber nicht einheitlich benannt, nicht mit Eigentümer und Zweck getaggt und nicht in einem Inventar erfasst wird, ist faktisch undokumentierte Infrastruktur, sobald die Person, die ihn aufgebaut hat, weiterzieht. Diese Methodik legt den Hostnamen unter Linux und Windows fest und definiert, was ein minimaler Inventareintrag enthalten muss.
-
Pips Fehlermeldung „error: externally-managed-environment“ und PEP 668
Pip verweigert ein globales „pip install“ mit „error: externally-managed-environment“, wenn die Distribution ihr System-Python gemäss PEP 668 als extern verwaltet markiert hat. Der Artikel erklärt die Bedeutung der Markierung EXTERNALLY-MANAGED, die Lösungen mit venv, pipx und apt in sinnvoller Reihenfolge und warum --break-system-packages nur der letzte Ausweg ist und keine Standardoption.
-
Git-Hooks für schnelle lokale Prüfungen
Clientseitige Hooks wie pre-commit lassen Formatierer und schnelle Linter laufen, bevor ein Commit existiert; sie sparen Review-Zeit, müssen aber schnell bleiben, dürfen nicht die einzige Schranke sein und werden von Git selbst nicht versioniert.
Maschinenlesbar: JSON