Seite 355 - Mironsoft Blog
-
Maxim Mironjuk
-
Januar 12, 2025
Das Iterator Pattern steckt tief in Magento 2 Collections. AbstractCollection implementiert IteratorAggregate und lädt Daten lazy. Vom PHP Iterator Interface über EAV-Filter bis zu SearchCriteria — alles was Collections in Magento 2.4.8 wirklich können.
-
Maxim Mironjuk
-
Januar 11, 2025
Falsch konfigurierte Cache-Control-Header lassen Browser bei jedem Seitenaufruf dieselben Dateien erneut laden und kosten damit spürbare Ladezeit sowie unnötige Serverlast. Dieser Artikel erklärt die wichtigsten Direktiven, ETag-Validierung, Cache Busting und das Zusammenspiel von Browser-, Shared- und Service-Worker-Cache anhand konkreter Magento-Beispiele.
-
Maxim Mironjuk
-
Januar 11, 2025
Wer Tailwind CSS in einem Monorepo mit vielen Paketen betreibt, kennt das Problem: Der Build-Prozess wird von Sekunden zu Minuten, sobald die Content-Konfiguration zu viele Dateien scannt. Mit gezielten Globs, Turborepo-Caching, Nx-Task-Pipelines und Parallelisierung lässt sich die Build-Zeit auch bei hunderten Paketen konsequent niedrig halten.
-
Maxim Mironjuk
-
Januar 11, 2025
Ein Backup, das nie tatsaechlich wiederhergestellt wurde, ist eine unbewiesene Vermutung, kein verlaesslicher Schutz. Automatisierte Restore-Tests pruefen regelmaessig, ob eine Sicherung wirklich funktioniert, ob die Daten vollstaendig sind und wie lange die Wiederherstellung tatsaechlich dauert. Dieser Artikel zeigt, wie sich Restore-Tests fuer Linux-Server als fester, ueberwachter Bestandteil des Betriebs etablieren lassen.
-
Maxim Mironjuk
-
Januar 11, 2025
Wer an einem eigenen Modul-Repository arbeitet, aber staendig gegen den Magento-Core nachschlagen muss, kann beide als Multi-Root-Projekt in einem PhpStorm-Fenster fuehren. Jede Wurzel behaelt ihre eigene VCS-Historie, waehrend Navigation und Suche projektuebergreifend funktionieren. Der folgende Artikel zeigt Einrichtung, Grenzen und die Frage, wann zwei separate Fenster doch die bessere Wahl bleiben.
-
Maxim Mironjuk
-
Januar 11, 2025
In fast jeder Anwendung gibt es Logik, die von der aktuellen Zeit abhängt: Ablaufdaten von Gutscheinen, Fristen für Bestellstornierungen, oder zeitgesteuerte Freischaltungen. Wird diese Zeit über ein direktes new \DateTime() im Code abgefragt, wird jeder Test, der einen bestimmten Zeitpunkt simulieren muss, entweder zu einer fragilen Konstruktion mit echten Sleep-Aufrufen oder schlicht unmöglich zu schreiben. Die Symfony Clock-Component löst dieses Problem, indem sie die aktuelle Zeit als injizierbare Abhängigkeit behandelt, die sich in Tests durch eine deterministische Implementierung ersetzen lässt, ohne eine einzige Millisekunde echter Wartezeit.
-
Maxim Mironjuk
-
Januar 11, 2025
API Platform generiert GraphQL-Schemata automatisch aus PHP-Entities – das klingt nach der einfachsten Lösung. In der Praxis zeigen sich aber schnell Grenzen: komplexe Mutations, domänenspezifische Validierung, Performance-Probleme durch N+1 und fehlende Kontrolle über das generierte Schema. Dieser Artikel zeigt, wann API Platform GraphQL ausreicht und wann es erweitert oder ersetzt werden muss.
-
Maxim Mironjuk
-
Januar 11, 2025
Jahrelang haben PHP-Entwickler für jede validierte oder berechnete Eigenschaft ein Paar aus getX() und setX() geschrieben. Property Hooks verlagern diese Logik direkt in die Property-Deklaration selbst - mit get- und set-Hooks, die sich wie normale Felder verwenden lassen, aber wie Methoden Kontrolle über Lesen und Schreiben behalten.
-
Maxim Mironjuk
-
Januar 11, 2025
Ohne ElementInternals konnte ein selbst gebautes Custom Element nie wirklich an einem form-Element teilnehmen: kein automatischer Eintrag in FormData, keine native Validierung, kein :invalid-Styling. Die ElementInternals API schliesst diese Luecke ueber attachInternals(), setFormValue() und setValidity() und macht aus einem gewoehnlichen Custom Element ein vollwertiges Formular-Steuerelement.
-
Maxim Mironjuk
-
Januar 10, 2025
JavaScript ist von Natur aus single-threaded – aber mit SharedArrayBuffer und Atomics gibt es echten Shared Memory zwischen Threads. Damit lassen sich Szenarien lösen, die mit postMessage nicht effizient zu realisieren waren: schnelle Bildverarbeitung, Parser, WASM-Integration und Lock-freie Datenstrukturen.
-