Monthly Archives: February 2026
-
Maxim Mironjuk
-
February 28, 2026
Containers are ephemeral, data must not be. Building Docker Persistent Storage with Named Volumes, backup automation, and clear restore procedures prevents data loss and turns host migrations into a controlled process instead of an emergency.
-
Maxim Mironjuk
-
February 28, 2026
Since MySQL 8, tree structures and other hierarchical data can be resolved directly in SQL through WITH RECURSIVE, without needing recursive application logic or a fixed number of self joins. The basic syntax follows the SQL standard, but MySQL brings a few implementation details of its own, from the internal handling as a UNION loop to the configurable infinite loop protection through cte_max_recursion_depth. This article covers how recursive CTEs work internally in MySQL, where the typical pitfalls sit, and how a Magento category tree can be resolved with one in practice, performantly.
-
Maxim Mironjuk
-
February 28, 2026
Two identical production environments, a controlled traffic switch and compatible database migrations turn a risky Magento release into something customers never notice. This article explains the complete architecture of Blue-Green Deployment for Magento 2, from the infrastructure all the way to automated rollback.
-
Maxim Mironjuk
-
February 28, 2026
With server-side request forgery, an attacker tricks a server into making requests on their behalf against internal resources, such as cloud metadata endpoints or internal admin panels. We cover the typical entry points and how to validate target URLs with an allowlist instead of a blocklist.
-
Maxim Mironjuk
-
February 28, 2026
GraphQL and caching are often seen as a difficult pair, because every request hits the same endpoint and CDNs do not cache POST requests by default. With the right combination of application-level resolver caching and edge caching through persisted queries, the problem can be solved systematically.
-
Maxim Mironjuk
-
February 28, 2026
The ANSI SQL standard defines less than many developers assume, and the major database systems rarely implement it in full. This article shows which parts of SQL are actually standardized, where PostgreSQL, MySQL, Oracle, and SQL Server use their own dialect extensions, and how to recognize whether a query is portable or not.
-
Maxim Mironjuk
-
February 28, 2026
Code that is never tested and never analyzed quietly accumulates errors. Bundling PHPUnit, PHPStan, PHPCS and composer audit as parallel GitLab CI jobs delivers feedback after every commit on tests, type safety, style and known security vulnerabilities, automatically and without manual effort.
-
Maxim Mironjuk
-
February 27, 2026
Elasticsearch's standard analyzer treats every language the same and thereby ignores word stems, stopwords and special characters that differ completely between German, French or English. A custom analyzer per language, combined with a per-field-per-language mapping strategy, turns a generic full text search into one that actually returns the right hits in every shop language.
-
Maxim Mironjuk
-
February 27, 2026
A Zod schema describes at once which values a form field may accept and what TypeScript type the result has after successful validation. Combined with VeeValidate through a Zod resolver, this creates a single source of truth for forms that would otherwise easily drift apart between validation logic and type definitions.
-
Maxim Mironjuk
-
February 27, 2026
"My app behaves strangely in development mode, but runs flawlessly in production" is a warning sign, not a reason to relax. React Strict Mode makes visible bugs that will eventually surface in production. Running things twice is not a bug, it is a precise diagnostic strategy.
-