Page 6 - Monthly Archives: September 2025
-
Maxim Mironjuk
-
September 22, 2025
An undersized Redis server leads to frequent eviction, dropping hit rates, and in the worst case out of memory errors right in the middle of checkout. Proper memory sizing means realistically estimating the memory needs of cache, session and full page cache based on catalog size and traffic, instead of relying on roughly guessed defaults that account for neither growth nor traffic peaks.
-
Maxim Mironjuk
-
September 21, 2025
Not every data integration needs Airflow, Dagster, or a distributed orchestration system. An ETL pipeline in Bash with clearly separated Extract, Transform, and Load stages, checkpointing, and idempotent runs handles a large share of daily data flows between systems reliably and without additional infrastructure.
-
Maxim Mironjuk
-
September 21, 2025
Updating dynamic content with JavaScript without informing screen reader users creates invisible errors and silent success messages. ARIA live regions with aria-live, aria-atomic and aria-relevant announce changes reliably without shifting focus, making cart updates, form validation and search results understandable for every user.
-
Maxim Mironjuk
-
September 21, 2025
Anyone running custom PHP applications without Symfony or Laravel has to build CSRF protection themselves. With random_bytes for token generation, hash_equals for constant time comparison and a clean session binding, robust CSRF protection can be built in a few lines of PHP, without any third party dependency.
-
Maxim Mironjuk
-
September 20, 2025
An unencrypted database backup sitting in external storage or with a cloud provider is a full export of every customer record the moment an attacker gains access to that storage. This article shows how Percona XtraBackup produces encrypted backups using the --encrypt options, how keys are managed securely, how the restore workflow with decryption plays out, and how to build a retention strategy for several backup generations under different keys.
-
Maxim Mironjuk
-
September 20, 2025
Since iOS 14.5, every app that wants to track a user across devices for advertising purposes must first explicitly ask for consent. Getting the prompt wrong, or showing it at the wrong time, costs analytics and advertising SDKs valuable signal. This article covers how it technically works, practical integration, and the concrete consequences of a denial.
-
Maxim Mironjuk
-
September 20, 2025
Anyone building forms in React 19 with React Hook Form will eventually need a schema validation library. Zod and Yup solve the same problem with different priorities: TypeScript-first versus an established JavaScript API. This article compares both across type inference, syntax, nested structures, and migration effort.
-
Maxim Mironjuk
-
September 20, 2025
Global Transaction Identifiers solve a problem every operator has run into: manually hunting down the right binlog position for CHANGE MASTER TO after a crash. Migrating an existing, position-based replication setup to GTIDs without losing data buys you automatic failover handling and eliminates an entire class of operational mistakes at once.
-
Maxim Mironjuk
-
September 20, 2025
A misconfigured robots.txt file can hide important product pages or knock an entire store out of Google Search after a relaunch. This article explains robots.txt syntax and wildcards, the most common Magento mistakes with CSS, JavaScript, and parameter URLs, the difference from noindex, and how to control crawling precisely without risking your rankings.
-
Maxim Mironjuk
-
September 19, 2025
Turbo replaces full page changes with fast partial updates, yet client-side UI state can easily get lost on every Turbo Frame render. Alpine.js and Turbo/Hotwire together deliver exactly what each approach lacks on its own: server-side navigation without a reload, plus reliably re-initialized, local reactivity in every component.
-