Seite 200 - Maxim Mironjuk
-
Maxim Mironjuk
-
August 08, 2025
Legacy Code ist Code ohne Tests – und er lässt sich ohne Tests nicht sicher ändern. Der Ausweg aus diesem Dilemma beginnt mit Characterization Tests: Tests, die das tatsächliche Verhalten dokumentieren, nicht das gewünschte. Seams einführen, statische Abhängigkeiten aufbrechen und schrittweise Klassen extrahieren – ohne eine einzige Zeile Produktionslogik zu ändern, bevor der erste Test grün ist.
-
Maxim Mironjuk
-
August 08, 2025
Shop Reporting SQL ist mehr als SELECT SUM. Wer Umsatz, Warenkorbabbruchrate und Customer Lifetime Value korrekt berechnen will, muss Statusfilter, Stornierungen, Quote-Tabellen und CTEs verstehen.
-
Maxim Mironjuk
-
August 08, 2025
Eine CSS-Animation, die auf dem Compositor-Thread läuft, kann nicht vom JavaScript-Main-Thread blockiert werden. Wer verstehen will, warum manche Animationen bei 60fps fließen und andere ruckeln, muss den Weg vom CSS-Property zur GPU-Layer kennen — und wann will-change hilft statt schadet.
-
Maxim Mironjuk
-
August 07, 2025
Ein fehlendes, verstecktes oder veraltetes Impressum gehört zu den häufigsten Abmahngründen im deutschen Online-Handel und trifft kleine Nebenerwerbs-Shops genauso wie etablierte Unternehmen. Dieser Beitrag erklärt in einfacher Sprache, welche Angaben ein Impressum enthalten muss, was sich durch das neue Digitale-Dienste-Gesetz geändert hat und wie Sie typische Abmahnfallen zuverlässig vermeiden.
-
Maxim Mironjuk
-
August 07, 2025
Wer asynchrone Datenströme bisher mit manuellen Schleifen und push-Aufrufen in ein Array überführt hat, kennt die Race-Conditions und die umständliche Fehlerbehandlung. Array.fromAsync löst genau dieses Problem: eine einzige eingebaute Methode, die Async Iterables, Generatoren und gemischte Promise-Listen kontrolliert und in der richtigen Reihenfolge in ein Array sammelt.
-
Maxim Mironjuk
-
August 07, 2025
Wer mitten in einer Aufgabe dringend den Branch wechseln muss, kennt das Dilemma zwischen halbfertigem Code und einem sauberen Arbeitsverzeichnis. git stash legt uncommittete Änderungen sicher beiseite, verwaltet mehrere benannte Stashes parallel, erlaubt partielles Sichern einzelner Hunks und unterscheidet klar zwischen pop und apply, damit unterbrochene Arbeit nie verloren geht.
-
Maxim Mironjuk
-
August 07, 2025
Ein aufklappendes Mega-Menü, ein sanft einblendendes Modal, ein parallaxenartiger Scroll-Effekt: Für die meisten Nutzer wirken solche x-transition-Animationen in einer Alpine-Komponente elegant und modern. Für Nutzer mit vestibulären Störungen können dieselben Bewegungen jedoch Schwindel, Übelkeit oder Kopfschmerzen auslösen. Die CSS-Media-Query prefers-reduced-motion gibt genau diesen Nutzern die Möglichkeit, ihre Präferenz auf Betriebssystemebene zu hinterlegen. Dieser Artikel zeigt, wie eine Alpine-Komponente diese Präferenz zuverlässig ausliest, x-transition-Animationen konditional deaktiviert, und warum das keine kosmetische Nettigkeit, sondern eine WCAG-Anforderung ist.
-
Maxim Mironjuk
-
August 07, 2025
In JavaScript geht der ursprüngliche Fehler beim Re-Throw verloren – ein Error wird durch einen anderen ersetzt, der Kontext verschwindet. Das error.cause-Feature aus ES2022 löst genau dieses Problem: Es erlaubt strukturierte Fehlerketten, bei denen jeder Layer seinen Kontext beibehält und der Ursprungsfehler durchgereicht wird.
-
Maxim Mironjuk
-
August 07, 2025
Jede professionelle Schriftdatei enthält weit mehr als einen einzigen Zeichensatz: Ligaturen, alternative Glyphen, Kapitälchen und stilistische Sets liegen fertig in der Font-Datei, bleiben aber ungenutzt, solange niemand sie über CSS anspricht. font-variant-alternates und seine Geschwister-Properties machen genau das möglich, ohne JavaScript und ohne zusätzliche Schriftdateien.
-
Maxim Mironjuk
-
August 07, 2025
Die Wahl zwischen Nx, Turborepo und Bazel, und grundsätzlicher zwischen Monorepo und Polyrepo, lässt sich selten pauschal beantworten, sondern hängt stark von Teamgröße, Deployment-Kadenz und vorhandener Tooling-Landschaft ab. Dieser Artikel zeigt, wie sich Claude als strukturierter Sparringspartner für diese Entscheidung einsetzen lässt, inklusive einer skizzierten Migrationsstrategie von einem bestehenden Polyrepo-Setup.
-