Page 107 - Mironsoft Blog
-
Maxim Mironjuk
-
December 16, 2025
Every new TCP connection to Redis costs time, and with TLS enabled, that cost rises noticeably further due to the extra handshake. Connection pooling avoids repeated connection setup, but a wrongly sized pool creates new problems of its own, ranging from wait times to overloading the server with open connections.
-
Maxim Mironjuk
-
December 16, 2025
Lone surrogates from URL parameters, file uploads, or third party APIs can crash entire function chains. isWellFormed() and toWellFormed() finally provide a native safeguard.
-
Maxim Mironjuk
-
December 15, 2025
Once a transaction spans multiple independent databases or services, a simple COMMIT no longer guarantees atomicity. Two-phase commit solves this through a coordinator-based prepare-and-commit protocol, but it has structural weaknesses that lead most large, distributed systems today to prefer the saga pattern with compensating actions instead.
-
Maxim Mironjuk
-
December 15, 2025
A critical kernel CVE traditionally forces a reboot with a downtime window, even when the affected server is really just a single, highly available member of a database cluster. Kernel live patching through kpatch or commercial offerings like Canonical Livepatch closes exactly that gap, but it never replaces the regular reboot cycle needed for larger kernel upgrades.
-
Maxim Mironjuk
-
December 15, 2025
A large JavaScript bundle costs more than download time, it blocks the main thread while parsing and compiling. With dynamic import(), vendor chunk splitting, and targeted lazy loading of heavy below-the-fold widgets, initial bundle size drops noticeably without losing functionality, even in server-rendered Hyva stores built on Alpine.js.
-
Maxim Mironjuk
-
December 15, 2025
Most successful attacks on Linux servers exploit open SSH password logins, missing firewall rules, and outdated packages, not sophisticated zero-day exploits. This article shows a practical hardening baseline that closes most of the attack surface with minimal effort, without making operations unnecessarily harder.
-
Maxim Mironjuk
-
December 15, 2025
A chain of multiple assertEquals calls comparing individual fields of a domain object is tedious to write and only delivers fragmentary information on failure. Custom, domain specific assertions such as assertMoneyEquals or assertValidOrderState bundle these comparisons in one place and produce failure messages that immediately show what went wrong from a business perspective. This article explains how such assertions come together and when the effort pays off.
-
Maxim Mironjuk
-
December 15, 2025
The Fetch API is more than a replacement for XMLHttpRequest. Anyone who masters timeouts, retry logic, streaming responses, authentication and cache strategies writes HTTP communication that stays reliable and maintainable in real applications, without external libraries.
-
Maxim Mironjuk
-
December 15, 2025
Debugging PHPUnit tests in a Docker environment with PhpStorm is one of the most frustrating parts of PHP development. Configuration usually fails because of XDEBUG_MODE, incorrect path mapping, or a remote interpreter that was never set up correctly. This guide shows the complete path, from installing Xdebug to running coverage reports.
-
Maxim Mironjuk
-
December 14, 2025
Blue green deployment replaces the risky, gradual rollout with a single, instantly reversible cut: two fully identical environments run in parallel, the load balancer points at one while the new version is fully prepared and tested in the other. This article shows how blue green deployment for Symfony is built in practice, including database, sessions and rollback.
-