Seite 6 - Monthly Archives: January 2025
-
Maxim Mironjuk
-
Januar 26, 2025
Wer Value Objects nur als hübschere Datenklassen versteht, verschenkt ihren eigentlichen Nutzen: Ein Value Object kapselt Gleichheit, Gültigkeit und Unveränderlichkeit an genau einer Stelle im Code, statt diese Regeln über Services, Controller und Formulare zu verstreuen. Dieser Artikel zeigt in reinem, frameworkunabhängigem PHP 8.4, wie man equals() statt naivem Vergleich einsetzt, Invarianten im Constructor erzwingt und mit readonly-Properties echte Unveränderlichkeit erreicht, ohne dabei die Balance zwischen zu kleinen und zu großen Objekten zu verlieren.
-
Maxim Mironjuk
-
Januar 26, 2025
Modul-Abhängigkeiten in Magento existieren auf zwei getrennten Ebenen: composer.json steuert, welches Paket überhaupt installiert wird, und module.xml sequence steuert, in welcher Reihenfolge es geladen wird. Wer beides vermischt, baut zirkuläre Abhängigkeiten, die erst bei setup:upgrade auffallen und sich ohne sauberes Refactoring kaum mehr entwirren lassen.
-
Maxim Mironjuk
-
Januar 26, 2025
rsync vergleicht Dateien Datei für Datei und kostet bei Millionen kleiner Dateien wertvolle Zeit allein für den Vergleich. Btrfs Send und Receive umgeht dieses Problem vollständig, indem es direkt die Unterschiede zwischen zwei Snapshots auf Blockebene ermittelt und überträgt, ohne den Dateibaum überhaupt durchlaufen zu müssen.
-
Maxim Mironjuk
-
Januar 26, 2025
chmod kennt nur einen Besitzer und eine einzige Gruppe pro Datei, doch reale Serverumgebungen brauchen oft mehrere Zugriffsebenen gleichzeitig. Dieser Leitfaden erklärt setfacl und getfacl, zeigt an einem Deploy-User-Beispiel granulare Zugriffskontrolle jenseits von rwx und erläutert Default-ACLs, die neue Dateien automatisch mit den richtigen Rechten versehen.
-
Maxim Mironjuk
-
Januar 25, 2025
Auf Multi-Core-Servern landen Netzwerkkarten-Interrupts ohne gezielte IRQ-Affinity oft alle auf demselben CPU-Kern, waehrend die restlichen Kerne unbeteiligt bleiben. Bei hoher Paketrate wird dieser eine Kern zum Flaschenhals, lange bevor die Gesamt-CPU-Auslastung des Servers auch nur annaehernd ausgereizt ist.
-
Maxim Mironjuk
-
Januar 25, 2025
Minifiziertes JavaScript ohne Source Maps macht jeden Produktionsfehler zu einer Rätselraterei aus kryptischen Zeilennummern. Wer Source Maps aber einfach öffentlich neben dem Bundle ausliefert, legt seinen kommentierten TypeScript-Quellcode für jeden Besucher offen. Hidden Source Maps und ein kontrollierter Upload an Error-Tracking-Dienste lösen dieses Dilemma sauber.
-
Maxim Mironjuk
-
Januar 25, 2025
Abstände zwischen Flex-Items über margin zu setzen bedeutet fast immer, im Anschluss den Rand-Effekt an den äußeren Kanten wieder mit einem Selektor wie :last-child auszugleichen. Die CSS-Eigenschaft gap löst dieses Problem an der Wurzel: Sie erzeugt Abstand ausschließlich zwischen den Items, niemals an den äußeren Rändern des Containers, und macht damit einen der am häufigsten wiederholten CSS-Hacks überflüssig.
-
Maxim Mironjuk
-
Januar 25, 2025
Kaum ein Performance-Problem trifft GraphQL-APIs so zuverlässig wie das N+1-Problem: Eine harmlos aussehende, verschachtelte Anfrage löst im Hintergrund hunderte einzelne Datenbankabfragen aus. Das DataLoader-Pattern löst dieses Problem systematisch durch Batching und Request-scoped Caching.
-
Maxim Mironjuk
-
Januar 25, 2025
Rechtecke und Border-Radius sind nicht die einzigen Formen im Tailwind-Designraum. Mit clip-path lassen sich Polygone, Kreise, Schrägschnitte und komplexe Masken direkt in CSS definieren – ohne SVG-Wrapper, ohne JavaScript, und mit Animations-Support durch einfache CSS-Transitions.
-
Maxim Mironjuk
-
Januar 25, 2025
Klassisches PHP im shared-nothing Modell kennt keinen echten Connection Pool im Speicher eines einzelnen Prozesses. Wer trotzdem den Overhead ständiger Neuverbindungen vermeiden will, braucht entweder persistente Verbindungen mit klaren Grenzen, einen externen Connection Pooler wie ProxySQL, oder ein Long-Running-Prozessmodell wie Swoole.
-