Page 312 - Mironsoft Blog
-
Maxim Mironjuk
-
March 06, 2025
A single list query followed by one query per item inside a loop looks harmless during development, yet turns into hundreds or thousands of database calls per page request under production load. This article shows how to spot the N+1 query problem in ORM and collection code, fix it with eager loading and batch queries, and keep it from returning with profiling tools.
-
Maxim Mironjuk
-
March 06, 2025
For years, PHP developers wrote a pair of getX() and setX() methods for every validated or computed property. Property Hooks move that logic directly into the property declaration itself, with get and set hooks that behave like plain fields for callers while keeping full control over reads and writes.
-
Maxim Mironjuk
-
March 06, 2025
If you only find out about quality gates in the CI pipeline, you lose minutes or hours on feedback loops that could have been resolved locally in seconds. PHPStan, PHPUnit, PHPCS and Rector can be integrated into PhpStorm so that errors become visible right at the moment you save, without ever leaving the command line.
-
Maxim Mironjuk
-
March 06, 2025
The Symfony Form component is one of the most powerful and most complex in the ecosystem. Anyone who only uses built-in types gives away half its potential. Custom Form Types encapsulate reusability, Data Transformers bridge the gap between form input and domain objects, without boilerplate in every single form.
-
Maxim Mironjuk
-
March 06, 2025
Once a Magento store works with microservices, external APIs, and asynchronous queues, classic logging loses sight of every request the moment it crosses a system boundary. Distributed tracing with OpenTelemetry connects every sub step into one continuous chain and shows exactly where latency comes from.
-
Maxim Mironjuk
-
March 06, 2025
Every new global state, whether theme, authentication, or feature flags, tends to add another layer of nested context providers around a React application's root. This article shows how to replace that deeply nested Provider Hell with a composable AppProviders pattern, including provider order, memoization, TypeScript typing, and testing.
-
Maxim Mironjuk
-
March 06, 2025
String aggregation folds multiple rows of a group into a single, comma separated text list, for example every tag of a product in one row instead of several rows. MySQL uses GROUP_CONCAT for this, PostgreSQL and SQL Server use STRING_AGG, Oracle uses LISTAGG. This article shows syntax, ordering, separators and length limits of all four systems side by side.
-
Maxim Mironjuk
-
March 06, 2025
Components that handle data fetching, form validation and UI state all at once are hard to test, hard to maintain and hard to reuse. Custom Hook Extraction is the fundamental React pattern that separates logic from presentation, making both better at the same time.
-
Maxim Mironjuk
-
March 05, 2025
Anyone who does not know the exact order in which Magento and Hyva resolve a template between module, parent theme and custom theme wastes time on overrides that seem to have no effect. The Hyva fallback mechanism follows a fixed, deterministic order that can be used deliberately once you understand it, without duplicating the parent theme or blocking future updates.
-
Maxim Mironjuk
-
March 05, 2025
Classic responsive design thinks in fixed device widths and three or four breakpoints. Intrinsic Web Design flips that perspective: the layout reacts directly to its own content and the space actually available, with minmax, clamp, auto-fit and container queries as practical tools for this approach.
-