Magento Blog: Anleitungen und Praxiswissen | Seite 242 | mironsoft
Magento Blog
-
18.06.2025
Hundert Prozent Code-Coverage bedeutet nur, dass jede Zeile einmal ausgeführt wurde, nicht dass ein Test einen echten Fehler auch bemerken würde. Mutation Testing dreht diese Frage um: Stryker verändert gezielt einzelne Codezeilen zu kleinen Bugs und prüft, ob eure Tests diese Mutanten tatsächlich erkennen und fehlschlagen, statt stillschweigend grün zu bleiben.
-
18.06.2025
Statische Eigenschaften wirken auf den ersten Blick wie ein bequemer Ort für klassenweiten Zustand, etwa einen Zähler oder eine Registry. Sobald Vererbung ins Spiel kommt, entsteht jedoch ein Fallstrick, der erfahrene Entwickler regelmässig überrascht: Eine in der Basisklasse deklarierte statische Property wird nicht pro Subklasse dupliziert, sondern von allen Subklassen gemeinsam genutzt, sofern sie nicht explizit neu deklariert wird. Dieser Artikel zeigt das Problem an konkreten Beispielen und beschreibt Wege, es zuverlässig zu vermeiden.
-
18.06.2025
Wer Content ausschließlich auf Keywords statt auf die dahinterliegende Suchintention optimiert, verliert selbst mit perfekter On-Page-SEO gegen Wettbewerber, deren Format zur Absicht der Suchenden passt. Die vier Intentionstypen informational, navigational, commercial und transactional bestimmen, ob eine Kategorieseite, ein Ratgeber oder ein Blogartikel überhaupt ranken kann, unabhängig von Backlinks oder Textlänge.
-
18.06.2025
Das Composite Pattern macht einzelne Objekte und ganze Baumstrukturen über dieselbe Schnittstelle nutzbar. In Magento 2 sieht man das besonders bei Preisregeln, Sales Rule Conditions, Layout-Containern und Konfigurationsbäumen.
-
17.06.2025
Filter, Sortierung, Pagination und aktive Tabs landen in vielen React Anwendungen in useState, obwohl sie eigentlich Teil der Adresse sind. Wer diesen Zustand stattdessen in der URL speichert, bekommt Deep Linking, funktionierenden Browser Zurück Button und teilbare Links geschenkt, ganz ohne zusätzlichen Store.
-
-
17.06.2025
Ein Composable, das Daten lädt, aber laufende Requests nicht abbrechen kann, produziert schleichend zwei Arten von Problemen: veraltete Antworten, die nach dem Unmount noch versuchen, einen längst zerstörten Zustand zu aktualisieren, und Race Conditions, bei denen ein schneller zweiter Request von einem langsameren ersten überschrieben wird. AbortController löst beide Probleme, wenn man ihn konsequent in das eigene useFetch-Composable integriert.
-
17.06.2025
Claude Code, Cursor und Windsurf loesen dasselbe Grundproblem mit unterschiedlicher Architektur: der CLI-Agent Claude Code arbeitet editor-unabhaengig direkt im Terminal, Cursor ist ein VS-Code-Fork mit tiefer Tab-Vervollstaendigung, Windsurf setzt auf den Cascade-Agenten in einer eigenen Editor-Oberflaeche. Wer die Unterschiede kennt, waehlt das richtige Werkzeug fuer den jeweiligen Workflow statt sich auf Marketing-Versprechen zu verlassen.
-
17.06.2025
Local History speichert in PhpStorm lückenlos jede gespeicherte Änderung, ganz ohne Commit. Git dagegen speichert nur, was bewusst committet wurde, dafür teamfähig und dauerhaft. Wer beide Werkzeuge kennt und richtig einsetzt, verliert deutlich seltener Arbeit, egal ob durch einen fehlerhaften Refactoring-Schritt oder einen IDE-Absturz.
-
17.06.2025
Bash-Skripte, die im Terminal korrekt funktionieren, versagen oft in Pipes, als Cronjob oder in CI-Umgebungen. Die Ursache liegt im unterschiedlichen Verhalten von stdin, stdout und interaktiven Tools je nach Kontext. /dev/null, /dev/tty, isatty-Erkennung und Non-Interactive-Mode sind die Werkzeuge für Skripte, die in allen Kontexten zuverlässig funktionieren.