Page 9 - Monthly Archives: July 2025
-
Maxim Mironjuk
-
July 22, 2025
A regular index speeds up finding rows based on a filter condition, but in most cases still requires an additional access to the actual table afterward to fetch the remaining requested columns. This extra jump, often called a key lookup or bookmark lookup, costs noticeable time with many matches. A covering index already contains every column a query needs, making the lookup entirely unnecessary, an effect known as an index-only scan.
-
Maxim Mironjuk
-
July 21, 2025
How to write custom Twig filters and functions in Symfony using AbstractExtension, when each concept is the right choice, and what performance aspects matter with complex Twig logic.
-
Maxim Mironjuk
-
July 21, 2025
Dashboards and charts in Symfony usually require custom JavaScript: initializing Chart.js, loading data via AJAX, configuring options. The Symfony UX Chart.js package takes over completely, charts are built from PHP objects, embedded as Twig components and initialized automatically by Symfony UX.
-
Maxim Mironjuk
-
July 21, 2025
The more merge requests race against the same protected branch at the same time, the greater the risk that two individually well tested changes break each other once merged. Merge trains solve this by testing every merge request not against the current state but against the expected future state of the target branch, sequentially, one after another, like carriages on a train.
-
Maxim Mironjuk
-
July 21, 2025
Environment variables separate configuration from code, but the same mechanism that makes secrets flexible also makes them exposed. Reachable phpinfo() calls, credentials baked into Docker images, and unprotected env.php files rank among the most common causes of data leaks in PHP and Magento projects. This article shows concrete countermeasures for Docker, CI/CD, and Magento.
-
Maxim Mironjuk
-
July 21, 2025
Single sign-on through an external identity provider takes more than redirecting a login button. This guide shows how OAuth2 and OpenID Connect are integrated cleanly into Symfony, from the authorization code flow through ID token validation to role mapping into your own user management.
-
Maxim Mironjuk
-
July 21, 2025
Misconfigured Cache-Control headers force browsers to reload the same files on every page view, costing noticeable load time and unnecessary server load. This article explains the key directives, ETag validation, cache busting, and how the browser cache, shared cache, and service worker cache interact, using concrete Magento examples.
-
Maxim Mironjuk
-
July 21, 2025
Integration and end-to-end tests rarely fail because of the test logic itself, they fail because of the environment: the wrong database version, services that never started, race conditions during startup. Docker Compose solves exactly that, with declared dependencies, healthchecks and network isolation that make every test run reproducible.
-
Maxim Mironjuk
-
July 21, 2025
A CHECK constraint can do far more than enforce a positive price. Multi-column conditions, state machines for status fields, IMMUTABLE functions, and EXCLUDE constraints against overlapping ranges turn a simple range check into a tool for complex business rules that would otherwise only be captured with triggers or application code.
-
Maxim Mironjuk
-
July 21, 2025
Unpatched servers are the most common entry point for attackers, but fully automatic updates without oversight carry their own risk. This article shows how unattended-upgrades reliably applies security patches, reports failures by email, and moves reboots into a plannable maintenance window instead of interrupting operations unpredictably.
-