Archive: 2025-05 | Page 20
Archive: May 2025
-
May 3, 2025
Iterating over filenames that contain spaces is one of the most common mistakes in shell scripts. for f in $(find ...) breaks on spaces, tabs, and newlines in filenames. find -print0 with null byte separation, correct globbing, and read -d '' solve the problem once and for all: reliably, portably, and without special-case logic.
-
May 2, 2025
Using PHPUnit in PhpStorm is trivial when PHP is installed locally. With Docker interpreters, Magento-specific bootstrap files and integration tests that require a running database, the configuration becomes more complex. This guide shows how to solve each of these cases cleanly.
-
May 2, 2025
Accessibility in a React Native app isn't a CSS afterthought like on the web, it requires deliberately set accessibilityLabel values, roles and a well thought out focus order from the very start. Ignoring these fundamentals effectively excludes screen reader users of VoiceOver and TalkBack from the app, and since the European Accessibility Act it also carries legal consequences.
-
May 2, 2025
A backup that has never actually been restored is an unproven assumption, not a reliable safety net. Automated restore tests regularly check whether a backup really works, whether the data is complete, and how long an actual restore takes. This article shows how to establish restore tests for Linux servers as a fixed, monitored part of operations.
-
May 2, 2025
A single conditional type checks a condition once. Recursive conditional types apply the same condition to themselves again and again until a base case is reached, turning nested objects, tuples, and strings into fully transformed types at compile time. Once you know the mechanics, the depth limit, and the tail recursion pattern, you can write DeepReadonly, tuple reverse, or recursive template literal types confidently on your own.
-
May 2, 2025
The slow query log is only the first step, because a raw file with thousands of lines does not deliver insight on its own. This article shows how to choose long_query_time sensibly, how pt-query-digest and mysqldumpslow aggregate the data, and how to turn that into a solid prioritization for the next round of optimizations.
-
May 1, 2025
Plain HTTPS trusts the entire operating system trust store, and that is exactly the gap rogue CAs, corporate proxies and tools like mitmproxy exploit. SSL pinning locks a certificate or public key directly into the app and turns intercepted traffic into a dead end for attackers, once certificate pinning and public key pinning are implemented cleanly for iOS and Android, tested properly and backed by a rollover strategy.
-
May 1, 2025
Not every compatibility module deserves a place in production. Anyone who enables Luma fallbacks blindly instead of auditing them deliberately pays with load time, CSP violations, and unnecessary maintenance effort for rendering paths that no customer ever sees.
-
May 1, 2025
A failed end-to-end test typically returns only an error message and a stack trace at the test framework level, revealing nothing about what actually happened in the backend during that particular test run. Test observability closes exactly this gap by correlating distributed tracing, structured logs, and metrics with the given test run, so a single glance at a red test immediately reveals whether the cause lies in the frontend, in a specific backend request, or in a third-party integration, instead of having to painstakingly reconstruct manually which service was involved at which point in time.
-
May 1, 2025
The order success page is the moment with the highest attention throughout the entire checkout: the customer has just made a purchase but is still on the page. Anyone who uses this moment for conversion tracking, cross-sell, and customer retention, without Knockout.js, jQuery, or UI components, but with clean Hyvä patterns built from ViewModels, layout XML, and Alpine.js, gets noticeably more out of the order success page than with the standard Luma output.