Seite 2 - Monthly Archives: January 2025
-
Maxim Mironjuk
-
Januar 30, 2025
Ein hängender oder ständig neu berechnender Indexer bremst den gesamten Shop aus, von veralteten Preisen bis zu leeren Suchergebnissen. Dieser Artikel erklärt, welche Indexer-Modi es gibt, warum der Price Index und Category Products am teuersten sind, welche Änderungen einen ungewollten Full-Reindex auslösen und wie ihr hängende Indexer über indexer:status, die Tabelle indexer_state und wachsende Mview-Changelogs zuverlässig diagnostiziert und behebt.
-
Maxim Mironjuk
-
Januar 30, 2025
Handgeschriebene Testdaten wie 'Testname' oder 'test@test.de' verschleiern echte Bugs, weil sie nie die Vielfalt echter Eingaben abbilden. Die Faker-Bibliothek erzeugt realistische Namen, Adressen und Preise, bleibt dabei mit festen Seeds aber vollständig reproduzierbar.
-
Maxim Mironjuk
-
Januar 30, 2025
Ein Monorepo mit mehreren Millionen Dateien und einer jahrelangen Historie bringt Git-Befehle, die in einem kleinen Repository sofort reagieren, spürbar ins Schwitzen. Dieser Artikel zeigt, mit welchen konkreten Funktionen sich Clone-Zeit, Checkout-Größe und die Reaktionszeit von Status-Abfragen auch bei extremer Repository-Größe wieder in den Griff bekommen lassen.
-
Maxim Mironjuk
-
Januar 30, 2025
Der Transaction Scope entscheidet darüber, wie viel Arbeit innerhalb einer einzelnen Transaktion zusammengefasst wird. Ein zu breiter Scope erzeugt Lock Contention und blockiert parallele Zugriffe, ein zu enger Scope verliert die Garantie, dass zusammengehörige Änderungen gemeinsam gelten oder gemeinsam scheitern. Die richtige Dimensionierung folgt klaren, praktischen Kriterien statt reiner Intuition.
-
Maxim Mironjuk
-
Januar 30, 2025
PHP-Generators verwandeln gewöhnliche Funktionen über das Schlüsselwort yield in Iteratoren, die Werte einzeln statt komplett im Speicher erzeugen. Statt zehntausende Zeilen einer CSV-Datei oder ein komplettes Datenbank-Resultset als Array zu laden, liefert ein Generator Element für Element und hält den Speicherverbrauch konstant, unabhängig von der Datenmenge. Wer große Importe, Exporte oder Streaming-Pipelines in PHP 8.4 baut, kommt an yield kaum vorbei.
-
Maxim Mironjuk
-
Januar 30, 2025
Ohne Namenskonvention schreibt jeder Entwickler Utility-Klassen in einer anderen Reihenfolge, benennt Custom-Utilities unterschiedlich und macht Pull Requests unnötig schwer lesbar. Eine gemeinsame Konvention für Klassenreihenfolge, Custom-Namen und Präfixe verwandelt Tailwind-Markup von einer Zeichenkette in lesbaren, überprüfbaren Code.
-
Maxim Mironjuk
-
Januar 30, 2025
Claude Code und GitHub Copilot lösen auf den ersten Blick ein ähnliches Problem, folgen dabei aber grundlegend unterschiedlichen Philosophien. Wer für ein Team die richtige Wahl treffen will, muss Agent-Fähigkeiten, Codequalität, Sicherheitsanforderungen und Preismodelle gegeneinander abwägen, statt sich allein auf Marketingversprechen zu verlassen.
-
Maxim Mironjuk
-
Januar 30, 2025
Das case-Statement wird in vielen Bash-Skripten nur für eine Handvoll fester Zeichenketten genutzt, kann aber deutlich mehr: mehrere Pattern in einem Zweig, Wildcard-Kombinationen, gezieltes Fallthrough mit ;& und ;;& sowie case-insensitive Matching. Wer diese Werkzeuge kennt, ersetzt lange, schwer wartbare if/elif-Ketten durch kompakte, gut lesbare Verzweigungen.
-
Maxim Mironjuk
-
Januar 30, 2025
Asynchrones Datenladen ist in fast jedem interaktiven Widget nötig. Alpine.js macht es mit async/await und x-data erstaunlich einfach – aber erst mit sauber durchdachter Fehlerbehandlung, Ladezuständen und Abort-Logik wird ein Fetch-Widget produktionstauglich.
-
Maxim Mironjuk
-
Januar 29, 2025
CSS :has() ist mehr als ein Parent-Selektor — es ist ein vollständiger Kontextselektor. Layout-Entscheidungen, die bisher JavaScript-Event-Handler erforderten, lassen sich mit :has() deklarativ im Stylesheet treffen. Das verändert, wie man CSS-Architekturen aufbaut.
-