Seite 19 - Monthly Archives: April 2025
-
Maxim Mironjuk
-
April 06, 2025
Wer in Unit-Tests wahllos alles mockt, was mit einer Klasse zusammenhängt, baut Tests, die bei jedem Refactoring brechen, ohne dass sich am Verhalten der Anwendung etwas geändert hat. Die Taxonomie nach Gerard Meszaros unterscheidet Dummy, Stub, Fake, Spy und Mock als fünf klar abgegrenzte Rollen mit unterschiedlichem Zweck, unterschiedlicher Prüflogik und unterschiedlichem Kopplungsgrad an Implementierungsdetails. Dieser Beitrag zeigt die Theorie hinter jedem Test Double anhand handgeschriebener PHP-Implementierungen, unabhängig von einem bestimmten Test-Framework.
-
Maxim Mironjuk
-
April 06, 2025
Eine Komponente, die gleichzeitig Logik verwaltet und HTML rendert, lässt sich kaum wiederverwenden. Renderless Components und Headless Patterns in Vue.js lösen dieses Problem: Die Logik lebt in einem Composable oder einer renderless Komponente, die Darstellung übernimmt der Konsument vollständig per Scoped Slot oder Template.
-
Maxim Mironjuk
-
April 06, 2025
Ein Skript als POSIX konform zu bezeichnen ist schnell behauptet und selten geprueft. Diese Checkliste liefert konkrete Schritte, Werkzeuge und eine Testmatrix, um ein bestehendes Skript systematisch gegen Dash, BusyBox ash und andere schlanke Shells abzusichern.
-
Maxim Mironjuk
-
April 05, 2025
GROUP BY ist mehr als nur Gruppieren. Wer die Semantik, ONLY_FULL_GROUP_BY, den Unterschied zwischen WHERE und HAVING sowie die Fan-out-Falle nicht kennt, baut Queries die falsche Zahlen liefern.
-
Maxim Mironjuk
-
April 05, 2025
Ein Magento 2 Store Switcher wirkt im Frontend wie ein simples Dropdown, verbirgt dahinter aber eine Redirect-Logik, die entscheidet, ob ein Kunde beim Sprachwechsel auf derselben Produktseite landet oder unerwartet zur Startseite springt. Wer den Store Switcher in Hyvä mit Alpine.js sauber anpasst, erhält Seitenkontext, respektiert Cookie-Präferenzen und vermeidet Frust bei internationalen Besuchern.
-
Maxim Mironjuk
-
April 05, 2025
Prozess-Parallelisierung mit pcntl erlaubt es PHP CLI-Skripten, echte Betriebssystem-Prozesse zu erzeugen und CPU-gebundene Arbeit tatsächlich gleichzeitig auf mehreren Kernen auszuführen. Wer pcntl_fork, pcntl_wait und Signal-Handling beherrscht, baut Worker-Pools, die Warteschlangen leeren, Batch-Jobs verarbeiten und dabei sauber herunterfahren, statt Zombie-Prozesse zu hinterlassen.
-
Maxim Mironjuk
-
April 05, 2025
Magento 2 Währungsumrechnung wirkt auf den ersten Blick wie ein einfacher Faktor zwischen zwei Zahlen, ist in der Praxis aber ein Zusammenspiel aus Basiswährung, Kurs-Import, Rundungsregeln und Preisregeln, das pro Store unterschiedlich konfiguriert werden muss. Wer Basiswährung und Anzeigewährung verwechselt, riskiert Preisdrift bei jedem Kursupdate und Rabattregeln, die in der falschen Währung greifen.
-
Maxim Mironjuk
-
April 05, 2025
Die offizielle Magento-Systemanforderungsliste nennt nur Versionsnummern, doch dazwischen liegt viel Konfigurationsarbeit auf dem Linux-Server. Dieser Beitrag uebersetzt PHP-Extensions, memory_limit, OpenSearch, Redis und Varnish in konkrete Befehle und Konfigurationsdateien und liefert eine Pre-Flight-Checkliste, die Setup-Fehler vor dem ersten Deployment verhindert.
-
Maxim Mironjuk
-
April 04, 2025
Constructor Property Promotion reduziert die klassische Dreifach-Wiederholung aus Property-Deklaration, Konstruktor-Parameter und Zuweisung im Body auf eine einzige Zeile pro Feld, ohne dabei Typsicherheit, Sichtbarkeit oder readonly-Garantien zu opfern, und macht gerade Value Objects und DTOs spürbar kompakter und wartbarer.
-
Maxim Mironjuk
-
April 04, 2025
Eine Vergleichstabelle klingt zunächst nach einem simplen HTML-Table mit ein paar Spalten. Sobald aber mehrere Produkte mit unterschiedlich vielen Attributen nebeneinander stehen sollen, eine Nur-Unterschiede-Ansicht gewünscht ist und die Tabelle auch auf einem Smartphone noch bedienbar bleiben muss, wird daraus eine echte kleine Anwendung mit eigenem Zustand. Alpine.js eignet sich für genau diese Aufgabe gut, weil sich Zeilen- und Spaltenlogik komplett deklarativ im Markup abbilden lassen, ohne dass ein eigenes Build-Tooling oder ein Framework wie React nötig wäre.
-