Page 274 - Maxim Mironjuk
-
Maxim Mironjuk
-
April 22, 2025
Repository tests with mocks check the wrong layer. A mock repository cannot detect a SQL syntax problem, an index problem, or an N+1 bug. Real database access in tests is expensive, but irreplaceable at the right spots. The art lies in knowing exactly where those spots are and how to implement database isolation reliably.
-
Maxim Mironjuk
-
April 22, 2025
Cypress tests that pass reliably on your local machine often fail unexpectedly in CI due to resource limits, mismatched viewports, and timing differences on shared runners. This article shows how to run Cypress headless in GitLab CI and GitHub Actions, capture video and screenshot artifacts on failure, cache node_modules and the Cypress binary, and parallelize test runs across multiple jobs.
-
Maxim Mironjuk
-
April 22, 2025
Beyond the built-in shorthands like flip-block, @position-try lets you define your own named fallback positions, complete with their own viewport safety margin. This article walks through ready-to-copy recipes for dropdown menus, nested submenus and tooltips that reliably stay inside the visible area.
-
Maxim Mironjuk
-
April 22, 2025
Anyone who wants to customize an invoice PDF inevitably ends up at Pdf\AbstractPdf, Pdf\Invoice, and Zend_Pdf, not at the sales business logic. This article shows how a targeted preference instead of a full class copy extends PDF generation, how custom renderers get registered via di.xml, and how invoice PDFs can be generated performantly via CLI batch or message queue instead of synchronously in checkout.
-
Maxim Mironjuk
-
April 22, 2025
Optimizer hints such as USE INDEX, FORCE INDEX, and STRAIGHT_JOIN intervene directly in the query optimizer's decisions and can solve real problems with stale statistics, but they can also create new ones when applied carelessly. This article shows the syntax, the effect, and the clear line between legitimate optimization and risky code smell.
-
Maxim Mironjuk
-
April 22, 2025
As soon as multiple campaigns with overlapping time windows are being prepared at once, a single scheduled update in Content Staging stops being enough. With a clear structure for parallel staging updates, conflict detection and an approval process, campaign planning stays manageable even with several running actions at the same time.
-
Maxim Mironjuk
-
April 22, 2025
An SEO briefing nobody reads is worthless, no matter how thorough the keyword research behind it was. Many SEO teams produce briefings with twenty bullet points, several pages of keyword lists and redundant instructions that writers skim through out of sheer overload instead of actually implementing. This article shows a lean briefing format that focuses on the elements that genuinely matter, and therefore actually lands in day to day editorial work.
-
Maxim Mironjuk
-
April 21, 2025
EXISTS and IN look interchangeable at first glance, but differ in one decisive point: how they handle NULL values in the inner result set. While EXISTS only checks for the existence of a row and NULL plays no role there, a NOT IN with a NULL-containing list can silently return an empty result set, a behavior that regularly leads to missing rows in reports in production, without any error appearing.
-
Maxim Mironjuk
-
April 21, 2025
A Symfony major upgrade rarely fails because of Symfony itself, but because of Composer dependencies that aren't yet compatible. With composer why-not, deliberately widened constraints, and a clean CI pipeline, these conflicts can be resolved systematically instead of papering over them with risky --ignore-platform-reqs flags.
-
Maxim Mironjuk
-
April 21, 2025
A 1.2 GB Docker image is not a sign of completeness, it is a sign of missing optimization. Multi-stage builds, precise layer order, a well thought out .dockerignore and the right choice of base image make the difference between a lean, fast CI build and a deployment bottleneck.
-