Seite 354 - Mironsoft Blog
-
Maxim Mironjuk
-
Januar 13, 2025
Redis Keyspace Notifications verwandeln jede Schreiboperation und jeden Key-Ablauf in ein Pub/Sub-Event, auf das beliebig viele Consumer reagieren koennen. Statt teures Polling gegen den Datenbestand zu betreiben, abonniert eine Anwendung genau die Aenderungen, die sie interessieren, und baut so reaktive Architekturen ohne zusaetzliche Message-Queue.
-
Maxim Mironjuk
-
Januar 13, 2025
Ein Commit ist nach dem Erstellen inhaltlich unveränderlich, jede nachträgliche Aenderung der Commit Message erzeugt einen neuen Hash. Git Notes lösen dieses Problem, indem sie zusätzliche Informationen in einem separaten, referenzierten Namespace speichern, der lose mit dem Commit verknüpft ist, ohne dessen Identität zu berühren.
-
Maxim Mironjuk
-
Januar 13, 2025
ObjectManager::getInstance()->get() versteckt Abhängigkeiten, macht Tests unmöglich und verhindert statische Analyse. Alles über das Service Locator Anti-Pattern – und die korrekte Alternative.
-
Maxim Mironjuk
-
Januar 12, 2025
Viele Teams verlassen sich fast nur auf langsame End to End Tests und manuelle Klicktests, weil eine Unit Test Kultur nie entstanden ist. Dieses Ice Cream Cone Anti Pattern kehrt die klassische Testpyramide um und führt zu trägen CI Pipelines, hoher Flakiness und später Fehlererkennung. Dieser Artikel zeigt, wie Teams das Muster erkennen und mit einem praktischen Migrationspfad zu einer schnellen, verlässlichen Testpyramide zurückfinden.
-
Maxim Mironjuk
-
Januar 12, 2025
Eine dynamische Proxy-Klasse steht stellvertretend für ein echtes Objekt und fängt Methodenaufrufe ab, bevor sie beim eigentlichen Objekt ankommen. Mit __call, eval()-basierter Codegenerierung und Reflection lassen sich in PHP Proxy-Klassen bauen, die Lazy Loading, Logging und Zugriffskontrolle ermöglichen, ganz ohne die Klasse selbst anzufassen oder ein komplettes ORM einzubinden.
-
Maxim Mironjuk
-
Januar 12, 2025
Wenn hundert Server um exakt 00:00 Uhr denselben Backup-Job starten, bricht die gemeinsame Datenbank oder das gemeinsame Storage-Backend unter der Lastspitze zusammen, obwohl jeder einzelne Job fuer sich genommen harmlos waere. Gezielter Scheduling Jitter verteilt solche Startzeitpunkte zufaellig ueber ein Zeitfenster und verhindert genau diesen Thundering-Herd-Effekt. Dieser Artikel zeigt, wie Jitter bei Cron und systemd-Timern eingesetzt wird.
-
Maxim Mironjuk
-
Januar 12, 2025
Mit defineCustomElement() lässt sich jede Vue-Komponente in ein echtes, standardkonformes Custom Element verwandeln, das sich wie ein natives HTML-Element in beliebigen Umgebungen einsetzen lässt, auch ohne dass die umgebende Anwendung selbst Vue verwendet. Dieser Artikel zeigt die API im Detail, wie Shadow-DOM-Kapselung Styling-Konflikte verhindert und wo die Einschränkungen gegenüber einer normalen Vue-Komponente liegen.
-
Maxim Mironjuk
-
Januar 12, 2025
Arrays gelten in JavaScript standardmäßig als veränderlich, was in größeren Codebasen zu subtilen Fehlern führt, wenn eine Funktion ein übergebenes Array unbeabsichtigt verändert. TypeScript bietet mit readonly Arrays und readonly Tupeln ein Werkzeug, um solche Mutationen bereits zur Kompilierzeit auszuschließen.
-
Maxim Mironjuk
-
Januar 12, 2025
Wo git apply lediglich einen Diff in den Arbeitsbaum überträgt, rekonstruiert git am aus einer Patch-Datei einen vollständigen Commit inklusive Autor, Datum und Commit-Nachricht. Damit ist git am das zentrale Werkzeug für patch-basierte Workflows, wie sie bei der Linux-Kernel-Entwicklung, bei Git selbst und in vielen mailinglistenbasierten Open-Source-Projekten bis heute Standard sind. Dieser Artikel zeigt, wie einzelne Patches und ganze Serien sauber angewendet werden, wie sich Konflikte während des Vorgangs lösen lassen und wann sich git am gegenüber einem klassischen Pull-Request-Merge lohnt.
-
Maxim Mironjuk
-
Januar 12, 2025
Die Migration von der Options API zur Composition API muss keine Komponente auf einmal komplett umbauen. Vue 3 erlaubt beide Stile im selben Projekt gleichzeitig, wodurch data, methods und computed Komponente für Komponente sauber in die Composition API übersetzt werden können, während der Rest der Anwendung unverändert weiterläuft.
-