Page 180 - Maxim Mironjuk
-
Maxim Mironjuk
-
September 03, 2025
Few sentences frustrate a development team as reliably as it works on my machine, followed by a glance at a red GitLab pipeline. Almost always the root cause is not the code itself but a difference between the local environment and the CI runner, whether a different PHP version, a missing extension, a wrong timezone, or a cache holding something different locally than in the pipeline. This article shows a systematic approach for pinpointing such discrepancies deliberately instead of guessing.
-
Maxim Mironjuk
-
September 03, 2025
Anyone who treats PHPUnit results as nothing more than terminal output is throwing away most of the value that automated tests provide. JUnit XML, HTML coverage, Teamcity output, and structured test duration reports make test results analyzable for CI systems, teams, and monitoring, well beyond a single build run.
-
Maxim Mironjuk
-
September 03, 2025
Testing Doctrine repositories with pure mocks rarely exercises the actual query. An in-memory SQLite database runs DQL and query builder calls for real, without any database server, and makes repository tests run in milliseconds instead of seconds.
-
Maxim Mironjuk
-
September 03, 2025
Magento ships MSI with two built-in source selection algorithms: Priority and Distance. For many operations that is not enough once current warehouse utilization, per-carrier shipping cost, or a combination of several criteria needs to drive the selection. This article shows how to implement a custom algorithm as a full-fledged replacement and register it correctly via di.xml.
-
Maxim Mironjuk
-
September 02, 2025
Nuxt modules are the tool for extending the build process, the runtime, and even the developer tooling of a Nuxt project. In this article we build a module step by step that hooks into the build process, ships typed options, and finally registers its own tab in Nuxt DevTools.
-
Maxim Mironjuk
-
September 02, 2025
Autowiring makes Symfony development convenient, but used carelessly it creates unnecessary objects on every single request. With lazy services, ghost objects and service subscribers, kernel boot performance can be noticeably improved without giving up autowiring entirely.
-
Maxim Mironjuk
-
September 02, 2025
mironsoft.de › Blog › Design Patterns
Magento 2 · Design Patterns
Active Record Pattern
in Magento 2
The Active Record Pattern combines database access and business logic in a single object. Magento 2 is historically built on it, yet modern Magento 2.4.8 clearly favors the Repository Pattern. Why that is, which bugs are typical, and how the migration succeeds.
15 min read
PHP 8.4
Magento 2.4.8
The Active Record Pattern: origin and definition
The Active Record Pattern was described by Martin Fowler in his 2002 book "Patterns of Enterprise Application Architecture" and has shaped web development ever since. The core idea
-
Maxim Mironjuk
-
September 02, 2025
A responsive product grid pattern with auto-fill, minmax and aspect-ratio ensures product cards stay evenly distributed at every screen size, without maintaining a separate media query for every column count. This technique is the difference between a category grid that breaks at every new screen width and one that adapts by itself.
-
Maxim Mironjuk
-
September 02, 2025
A single GraphQL endpoint can serve thousands of different operation shapes, and classic endpoint-based APM fails outright at that point. GraphQL observability needs resolver-level tracing that makes every single field call visible, combined with OpenTelemetry standardization and distributed tracing across federation gateways.
-
Maxim Mironjuk
-
September 02, 2025
B2B Company Accounts let Magento 2 represent real organizations with multiple buyers, team hierarchies and approval chains, instead of reducing customers to a single account. Get company structure, roles, ACL and approval workflows right, and B2B Company Accounts stay stable even with thousands of employees and complex procurement processes.
-