Seite 10 - Monthly Archives: April 2025
-
Maxim Mironjuk
-
April 17, 2025
Ein guter Schritt-Indikator zeigt jederzeit, wo im Formular-Wizard man sich befindet, welche Schritte bereits erledigt sind und wie viele noch folgen. Mit Tailwind CSS und Alpine.js lässt sich dieser Indikator konsequent aus wenigen wiederverwendbaren Zuständen aufbauen, statt für jeden Schritt eigenes Markup zu pflegen.
-
Maxim Mironjuk
-
April 17, 2025
In den meisten Anwendungen gibt es drei, vier verschiedene Bibliotheken für Benachrichtigungen: eine für E-Mails, eine für Slack, eine für SMS, eine für Push-Notifications. Symfony Notifier vereint alle Kanäle hinter einem einzigen Interface und einer einzigen Dispatch-Methode — mit konfigurierbarem Routing, kanalspezifischen Nachrichten und der Möglichkeit, eigene Bridges für interne Systeme zu schreiben.
-
Maxim Mironjuk
-
April 17, 2025
Vue Server Components sind ein noch experimentelles Konzept, das Komponenten beschreibt, die vollständig auf dem Server gerendert werden und dabei keinerlei eigenes JavaScript an den Client ausliefern, nicht einmal für die Hydration. Dieser Artikel ordnet das Konzept ein, grenzt es von klassischem SSR ab, zeigt den aktuellen Entwicklungsstand und vergleicht die Idee mit den bereits produktiv genutzten React Server Components.
-
Maxim Mironjuk
-
April 17, 2025
Das JavaScript Interface, JSI, verbindet JavaScript Runtime und nativen C++ Code direkt, ganz ohne JSON-Serialisierung oder asynchronen Bridge-Round-Trip. Wer ein eigenes HostObject baut, lernt, wie synchrone native Bindings in der Praxis funktionieren, warum der Performance-Gewinn vor allem bei häufigen Aufrufen zählt und wo die Grenzen dieses Ansatzes liegen.
-
Maxim Mironjuk
-
April 17, 2025
requestAnimationFrame ist die einzige korrekte Methode, um Animationen im Browser zu implementieren. Wer setTimeout oder setInterval nutzt, kämpft gegen den Rendering-Zyklus statt mit ihm. Dieser Artikel zeigt, wie rAF funktioniert, wie man einen robusten Render-Loop baut und welche Fallen den Frame-Rhythmus zerstören.
-
Maxim Mironjuk
-
April 17, 2025
Ein einzelner Node-Prozess kann tausende WebSocket-Verbindungen für GraphQL Subscriptions halten, doch sobald mehrere Server-Instanzen hinter einem Load Balancer laufen, verliert ein Publish-Event den Kontakt zu Clients auf anderen Prozessen. Redis Pub/Sub, Kafka und ein sauberes Verbindungsmanagement lösen dieses Fan-Out-Problem und machen GraphQL Subscriptions horizontal skalierbar.
-
Maxim Mironjuk
-
April 17, 2025
Wer TypeScript in einem Monorepo ohne Project References einsetzt, wartet bei jeder Änderung auf eine komplette Neuprüfung des gesamten Codes und verliert echte Typsicherheit zwischen Paketen. Project References, composite Builds und eine gemeinsame Basis-Konfiguration schaffen einen klaren Abhängigkeitsgraphen, schnelle inkrementelle Builds und verlässliche Grenzen zwischen Paketen, auch bei wachsender Paketanzahl.
-
Maxim Mironjuk
-
April 16, 2025
Eine GraphQL-API, die im Entwicklungsmodus funktioniert, ist noch keine produktionsreife API. Performance-Fallen, Sicherheitslücken und fehlende Observability machen sich erst unter Last bemerkbar — dann, wenn der Handlungsspielraum klein ist. Diese Checkliste schließt die Lücken, bevor sie zum Problem werden.
-
Maxim Mironjuk
-
April 16, 2025
Wer in GraphQL-Resolvern direkt aus der Datenbank lädt, produziert bei verschachtelten Feldern schnell Hunderte Einzelqueries pro Request. Das DataLoader Pattern sammelt diese Ladeanfragen innerhalb eines Tick, führt sie gebündelt aus und cached die Ergebnisse pro Request, ohne dass Resolver ihre einfache, isolierte Struktur verlieren.
-
Maxim Mironjuk
-
April 16, 2025
Conditional Aggregation kombiniert CASE WHEN oder die FILTER-Klausel mit Aggregatfunktionen und berechnet dadurch mehrere bedingte Kennzahlen in einem einzigen Durchlauf über die Tabelle, statt für jede Kennzahl eine eigene Abfrage zu schreiben. Dieser Artikel zeigt, wie Conditional Aggregation Dashboards und Reports schneller, wartbarer und übersichtlicher macht, und welche Fallstricke bei NULL-Werten und Datentypen typischerweise auftreten.
-