Archive: 2025-03 | Seite 19
Archive: March 2025
-
08.03.2025
Barrierefreiheit in React-Komponenten scheitert oft an einem Detail: IDs für aria-labelledby und htmlFor müssen einmalig sein und auf Server und Client übereinstimmen. useId löst beides auf einmal – ohne Boilerplate und ohne Hydration-Fehler.
-
08.03.2025
Eine verworrene Git-History mit hunderten WIP-Commits macht Bisect nutzlos, Reviews mühsam und Blame unzuverlässig. Klare Konventionen wie atomare Commits, Rebase vor dem Merge und disziplinierte Commit-Messages verwandeln das Log in ein verlässliches Werkzeug für Debugging und Nachvollziehbarkeit, ohne die Geschwindigkeit im Team zu bremsen.
-
08.03.2025
Ein Cookie-Banner, der den Fokus verschluckt, Ablehnen nur über einen versteckten Link erlaubt und Screenreadern verborgen bleibt, ist nicht nur ein Dark Pattern, sondern gleich mehrfach eine handfeste Barrierefreiheits-Verletzung.
-
07.03.2025
Wiederholtes Nachfragen per setInterval ist der naheliegendste Weg, um eine Alpine-Komponente aktuell zu halten, aber es ist selten der effizienteste. Server-Sent Events bieten dafür eine schlanke Alternative: Der Browser öffnet über die native EventSource-API eine einzige, dauerhafte HTTP-Verbindung, und der Server schickt neue Daten genau dann, wenn sich tatsächlich etwas ändert, statt auf eine Anfrage zu warten. Dieser Artikel zeigt, wie eine solche Verbindung sauber in x-data initialisiert wird, wie eingehende Events in reaktiven Alpine-State übersetzt werden, wie sich Verbindungsabbrüche zuverlässig abfangen lassen und wo die technischen Grenzen von Server-Sent Events gegenüber Polling und WebSocket liegen.
-
07.03.2025
performance_schema, Slow Query Log, EXPLAIN und typische Magento-Anti-Pattern – ein systematischer Ansatz, um die langsamsten SQL-Abfragen zu finden, zu verstehen und gezielt zu beheben.
-
07.03.2025
Eine Many-to-Many-Beziehung lässt sich nicht direkt in zwei Tabellen abbilden, sondern braucht eine dritte Tabelle als Vermittler. Dieser Beitrag zeigt, wie Junction-Tabellen aufgebaut werden, ob ein zusammengesetzter oder ein künstlicher Primärschlüssel sinnvoller ist und wie zusätzliche Attribute an der Beziehung selbst gespeichert werden, ohne die referenzielle Integrität zu gefährden.
-
07.03.2025
Die Standard-codegen.yml aus dem Quickstart deckt gerade mal die Hälfte dessen ab, was GraphQL Code Generator wirklich kann. Custom Scalars, Fragment Masking und das near-operation-file Preset entscheiden darüber, ob generierter Code eine Freude oder eine Zumutung ist.
-
07.03.2025
Ein einzelner Aufruf von htmlspecialchars() wird gerne als vollständiger XSS Schutz missverstanden, dabei hängt sicheres Output Encoding immer vom Ausgabekontext ab: HTML-Body, HTML-Attribut, JavaScript-String und URL erfordern jeweils eigene Escaping-Regeln, die bei Verwechslung genau die Lücke offen lassen, die eigentlich geschlossen werden sollte.
-
07.03.2025
Wer JSON-Daten bisher als String in Redis abgelegt hat, kennt das Problem: Jede noch so kleine Änderung an einem einzelnen Feld erfordert, das komplette Dokument zu laden, zu deserialisieren, zu ändern und wieder als Ganzes zurückzuschreiben. RedisJSON löst dieses Problem, indem es JSON-Dokumente als eigenen, nativen Datentyp verwaltet und über JSONPath-Ausdrücke gezielten Zugriff auf einzelne Pfade erlaubt, ohne das gesamte Dokument zu bewegen.
-
06.03.2025
Ein Natural Key wie eine E-Mail-Adresse oder eine Artikelnummer wirkt beim ersten Schema-Entwurf verlockend praktisch: Er ist ohnehin eindeutig, spart scheinbar eine zusätzliche Spalte und macht Fremdschlüssel auf den ersten Blick lesbarer. Das Problem zeigt sich erst später, wenn sich genau dieser fachliche Wert ändern muss, ein Fall, der in praktisch jedem langlebigen System irgendwann eintritt. Dieser Artikel erklärt, warum Natural Keys als Fremdschlüssel-Ziel strukturell fragil sind, wie ein stabiler Surrogate Key diese Fragilität auflöst, und zeigt an einer realistischen Migration, wie teuer die nachträgliche Korrektur wird.