Seite 14 - Monthly Archives: April 2026
-
Maxim Mironjuk
-
April 13, 2026
Ein Upload-Formular mit loading, error, success und retry als vier separate boolesche Flags erzeugt schnell unmögliche Kombinationen. Ein State-Machine-Pattern in Alpine.js ersetzt diese Flags durch einen einzigen, benannten Zustand mit klar definierten Übergängen und macht komplexe UI-Zustände dadurch vorhersagbar und wartbar.
-
Maxim Mironjuk
-
April 13, 2026
Sobald zwei oder mehr Module dieselbe Methode patchen, entscheidet die Plugin-Sortierreihenfolge über das tatsächliche Verhalten der Anwendung, oft ohne dass ein Entwickler das bemerkt. sortOrder-Konflikte zeigen sich selten als klarer Fehler, sondern als subtil falsches Verhalten, das sich erst mit dev:di:info und einem klaren Verständnis der Interceptor-Ausführung sauber diagnostizieren lässt.
-
Maxim Mironjuk
-
April 13, 2026
Wer Magento Shops auf mehreren Applikationsservern betreibt, kennt das Problem: Ein Fehler taucht irgendwo zwischen Loadbalancer, Nginx, PHP-FPM und Datenbankserver auf, und die relevanten Zeilen liegen verteilt auf drei oder vier verschiedenen Maschinen. rsyslog löst dieses Problem, indem es Logs mehrerer Server über das Netzwerk an einen zentralen Server weiterleitet, dort konsolidiert und für die Auswertung an einem einzigen Ort verfügbar macht, wahlweise verschlüsselt und mit Zustellgarantie.
-
Maxim Mironjuk
-
April 13, 2026
Ein Symfony-Major-Upgrade scheitert selten an Symfony selbst, sondern an Composer-Abhaengigkeiten, die noch nicht kompatibel sind. Mit composer why-not, gezielt gelockerten Constraints und einer sauberen CI-Pipeline lassen sich diese Konflikte systematisch aufloesen, statt sie mit riskanten --ignore-platform-reqs-Flags zu uebertuenchen.
-
Maxim Mironjuk
-
April 13, 2026
setup:di:compile ist einer der zeitintensivsten Schritte im Magento-Build-Prozess — und einer der am häufigsten falsch platzierten. Zu früh ausgeführt fehlt die vollständige Composer-Basis; zu spät ausgeführt verzögert es den Deploy. Dieser Artikel zeigt, wann und wie di:compile in einer GitLab-Pipeline am besten läuft.
-
Maxim Mironjuk
-
April 12, 2026
Datenbanksperren schützen üblicherweise konkrete Datenzeilen oder Tabellen vor gleichzeitigem, inkonsistentem Zugriff. Advisory Locks verfolgen einen anderen Zweck: Sie nutzen dieselbe robuste Locking-Infrastruktur der Datenbank, um beliebige Anwendungslogik zu koordinieren, ohne dass diese Sperre an eine konkrete Zeile oder Tabelle gebunden ist. Ein typischer Einsatzfall ist verteiltes Locking für Cron-Jobs oder Hintergrundprozesse, die auf mehreren Servern laufen könnten, aber niemals gleichzeitig denselben Vorgang ausführen dürfen.
-
Maxim Mironjuk
-
April 12, 2026
Ein Sale-Banner, der pünktlich um Mitternacht erscheint, und eine Kampagnenseite, die am Montagmorgen automatisch wieder verschwindet, klingen einfach, bis Full Page Cache und Edge-Caching mitspielen müssen. Content-Staging-Kampagnen mit Page Builder lösen das im Hyvä-Theme sauber, wenn Vorschau-Modus und Cache-Invalidierung von Anfang an mitgedacht werden.
-
Maxim Mironjuk
-
April 12, 2026
Jahrelang griffen Entwickler zu privaten Properties mit öffentlichem Getter, nur um Lesbarkeit von außen zu erlauben, ohne Schreibzugriff zu öffnen. Asymmetric Visibility beendet diesen Umweg: Eine Property kann öffentlich lesbar und gleichzeitig privat oder protected beschreibbar sein, direkt in der Deklaration, ohne eine einzige Zeile Getter-Code.
-
Maxim Mironjuk
-
April 12, 2026
Hooks in Claude Code sind Shell-Befehle, die bei genau definierten Ereignissen wie einem Werkzeugaufruf automatisch ausgefuehrt werden, unabhaengig davon, ob der Modell-Kontext gerade an eine CLAUDE.md-Regel erinnert oder nicht. Waehrend eine Prompt-Instruktion nur eine Wahrscheinlichkeit erhoeht, erzwingt ein Hook ein Verhalten deterministisch, auf Betriebssystemebene, nicht auf Sprachmodell-Ebene.
-
Maxim Mironjuk
-
April 12, 2026
shUnit2 bringt den klassischen xUnit-Stil mit assertEquals und setUp/tearDown in die Bash-Welt, bats-core beschreibt Tests dagegen als lesbare @test-Blöcke im BDD-Stil. Beide Frameworks lösen dasselbe Grundproblem, aber mit unterschiedlicher Syntax, unterschiedlicher CI-Integration und unterschiedlichen Stärken je nach Projektgröße.
-