Seite 235 - Mironsoft Blog
-
Maxim Mironjuk
-
Juni 18, 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.
-
Maxim Mironjuk
-
Juni 18, 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.
-
Maxim Mironjuk
-
Juni 18, 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.
-
Maxim Mironjuk
-
Juni 17, 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.
-
Maxim Mironjuk
-
Juni 17, 2025
Doppelte Datensätze entstehen in jeder produktiven Datenbank — durch Importfehler, Race Conditions bei gleichzeitigen Schreibzugriffen, fehlende UNIQUE Constraints oder migrierte Altdaten. In Magento können Kundenduplikate zu falschen Bestellzuordnungen führen, doppelte Produkteinträge die Suche verwirren und redundante Preisdaten die Kalkulation brechen. Dieser Artikel zeigt, wie man SQL Duplikate entfernen kann und anschließend dauerhaft verhindert — von der einfachen GROUP-BY-Analyse bis zum sicheren Massen-Delete auf Tabellen mit Millionen von Zeilen.
Duplikate finden mit GROUP BY und HAVING
Der erste Schritt ist immer das Sichtbarmachen der Duplikate. Die klassische Methode verwendet GROUP BY auf den Spalten, die eindeutig sein sollten, und filtert Gruppen mit mehr als einem Eintrag per HAVING COUNT(*) > 1. Dieser Query zeigt das Problem, aber noch nicht die konkreten Zeilen-IDs.
-- Einfache Duplikatsuche über eine Spalte
SELECT
email,
COUNT(*) AS anzahl
FROM customer_entity
GROUP
-
Maxim Mironjuk
-
Juni 17, 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.
-
Maxim Mironjuk
-
Juni 17, 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.
-
Maxim Mironjuk
-
Juni 17, 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.
-
Maxim Mironjuk
-
Juni 17, 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.
-
Maxim Mironjuk
-
Juni 17, 2025
Code-Generierung aus OpenAPI-Spezifikationen klingt verlockend, produziert in der Praxis aber oft unlesbaren Müll, der sofort manuell gepatcht werden muss. Das zerstört den Hauptvorteil der Generierung. Dieser Artikel zeigt, wie man openapi-generator so konfiguriert, dass der Ausgabecode wartbar ist – und warum Template-Overrides der Schlüssel dazu sind.
-