Page 22 - Monthly Archives: July 2025
-
Maxim Mironjuk
-
July 06, 2025
A shell script that runs fine on a developer's MacBook fails inside an Alpine-based CI container, because macOS ships Bash 3.2 and Alpine only includes BusyBox sh. Understanding the line between portable POSIX shell and Bash-specific features is a prerequisite for shell code that works reliably across a team.
-
Maxim Mironjuk
-
July 06, 2025
A Common Table Expression names a subquery with the WITH clause and makes it referenceable in the main query like a table. Instead of nesting subqueries multiple levels deep, you get a query that reads top to bottom, states its logic once, and can be traced step by step, whether in PostgreSQL, MySQL, SQL Server, or Oracle.
-
Maxim Mironjuk
-
July 06, 2025
A careless git reset --hard or a botched rebase feels like a permanent loss, but rarely is. The reflog logs every movement of HEAD locally and makes vanished commits recoverable again within minutes in most cases. This article shows how the reflog works, how long entries survive, and how a clean recovery plays out in practice.
-
Maxim Mironjuk
-
July 06, 2025
Symbol.iterator is the best known well known symbol, but far from the only one. This article shows how Symbol.toPrimitive, Symbol.hasInstance and Symbol.toStringTag precisely control the behavior of custom objects during type conversion, instanceof checks and debug output, and how custom symbols enable collision free object keys.
-
Maxim Mironjuk
-
July 05, 2025
A Redis hash with three fields and a Redis hash with thirty thousand fields are stored internally in completely different ways, even though both are addressed through the same commands like HSET and HGET. Redis automatically chooses between a compact, memory-optimized listpack encoding for small collections and a classic hashtable structure for large ones, depending on configurable thresholds. Knowing this automatic switchover point makes it possible to deliberately design data models so Redis stays in the memory-efficient listpack encoding as long as possible. This article covers how the switch works technically and what practical consequences follow for memory planning.
-
Maxim Mironjuk
-
July 05, 2025
Attribute routing covers the vast majority of applications, but it hits its limits once routes need to come from a database at runtime, for example for CMS pages or redirects. This article shows how a custom loader covers those cases, how custom requirements validate parameters with regex right inside routing, and how to reliably control ordering when routes overlap.
-
Maxim Mironjuk
-
July 04, 2025
A kernel version upgrade without a plan can take down a production server if drivers go missing or DKMS modules stop building. With a clear baseline snapshot, an LTS strategy, GRUB as a rollback safety net and a test plan, the risk turns into a controlled, repeatable procedure.
-
Maxim Mironjuk
-
July 04, 2025
Adding fields, mutations or complex types to the GraphQL schema from your own Magento module takes more than extend-type syntax: resolver architecture, cross-module schema merging and batch resolving against N+1 queries are all part of the job. This article walks through real code showing how a custom schema extension in Magento 2.4.8 is built cleanly, testably and in a version safe way.
-
Maxim Mironjuk
-
July 04, 2025
A test suite can reach 100 percent code coverage and still miss an obvious bug in a REST endpoint's validation logic, because code coverage only measures whether a line was executed, not whether its actual behavior was verified by a test. Mutation testing closes exactly this gap by artificially introducing small bugs into the code and checking whether the existing test suite actually catches these artificial bugs, instead of blindly relying on pure line coverage as a quality measure.
-
Maxim Mironjuk
-
July 04, 2025
A full git clone transfers every version of every file across the entire history, even when only the current state is needed. Partial clone and shallow clone reduce the transferred data volume in different ways, each suited to different scenarios, from CI runners to developer workstations.
-