Page 300 - Maxim Mironjuk
-
Maxim Mironjuk
-
March 22, 2025
A complete rewrite of a grown Bootstrap application is rarely realistic. Teams that migrate from Bootstrap to Tailwind without freezing the project for weeks need a phased plan with an audit, a class mapping table and a clean dual running setup that rolls out page by page instead of risking everything at once.
-
Maxim Mironjuk
-
March 22, 2025
Anyone who cannot start a service because a port is already in use, or needs to know which process is really behind a connection, cannot avoid ss. This article explains why ss replaced the old netstat, how to correctly read connection states like ESTABLISHED and TIME_WAIT, and how to reliably diagnose port conflicts before starting a service.
-
Maxim Mironjuk
-
March 22, 2025
Magento 2 governs every click in the backend through a hierarchical Admin ACL system: acl.xml declares the resource tree, roles under System, Permissions, User Roles bind administrators to exactly the resources they need, and isAllowed() checks in controllers, blocks and view models enforce those rights at runtime. Anyone who builds custom modules without declaring their own ACL resources exposes new admin functionality by default to every role that has access to the parent resource, a risk that often only surfaces during the next role audit. This article shows how to build the resource tree correctly, model custom ACL resources for custom modules, check permissions in controllers and view models, and avoid the most common pitfalls around acl.xml, system.xml bindings and config caching.
-
Maxim Mironjuk
-
March 22, 2025
Teams looking for a Docker Desktop alternative because of licensing rules or resource usage almost always end up comparing Colima and Podman. Both replace the commercial Docker Desktop daemon with leaner, open solutions, but they differ significantly in architecture, compatibility and everyday usability for development teams.
-
Maxim Mironjuk
-
March 22, 2025
An endpoint loads a list of a hundred rows and triggers a hundred additional single row queries, one per row. The N+1 problem rarely comes from bad SQL, it comes from how application code loads relationships between tables. Once you recognize the pattern in the query log, you can fix the root cause with a JOIN or batch loading instead of optimizing symptoms.
-
Maxim Mironjuk
-
March 22, 2025
A stuck or constantly recalculating indexer slows down the entire store, from stale prices to empty search results. This article explains the available indexer modes, why the Price Index and Category Products are the most expensive, which changes trigger an unwanted full reindex, and how to reliably diagnose and fix stuck indexers using indexer:status, the indexer_state table, and growing mview changelog tables.
-
Maxim Mironjuk
-
March 22, 2025
Claude and ChatGPT now handle many coding tasks similarly well, but differ noticeably in context handling, agentic tool-use in the terminal, and how cleanly they fit into existing development workflows. This comparison focuses on concrete, practice-relevant differences instead of blanket verdicts, helping teams make a grounded tooling decision.
-
Maxim Mironjuk
-
March 21, 2025
The same query can get two completely different execution plans on two databases with an identical schema but a different data distribution, without a single character of the SQL text changing. Responsible for this is the cost-based optimizer, which selects the cheapest option, in its own estimation, from among many theoretically possible access strategies, using statistics, cardinality estimates, and a cost model. Understanding how this decision process works internally lets you diagnose optimizer misjudgments precisely instead of merely guessing at them.
-
Maxim Mironjuk
-
March 21, 2025
Anyone who rewrites the invoice logic or credit memo processing in Magento 2 completely via preference risks conflicts with every additional module and every core update. Plugins on InvoiceRepositoryInterface, CreditmemoManagementInterface, and ShipmentRepositoryInterface allow targeted extensions: custom numbering, approval workflows for credit memos, additional totals lines, and automatic invoice creation on shipment, without replacing the core logic.
-
Maxim Mironjuk
-
March 21, 2025
Redis Geo-Commands do not store coordinates in a dedicated data structure but in a plain sorted set with a specially encoded score. Once you understand this mechanism, you can build radius searches, store locator features and distance calculations with a handful of commands, without a separate geo database.
-