Page 302 - Mironsoft Blog
-
Maxim Mironjuk
-
March 20, 2025
Git submodules promise to cleanly stitch multiple repositories together, but in practice forgotten updates, a confusing detached HEAD state, and diverging commit pins across the team cause frustration on a regular basis. This article explains how submodules technically work, compares them with git subtree, Composer based dependencies, and monorepos, and shows which tool actually fits typical Magento multi repo setups.
-
Maxim Mironjuk
-
March 20, 2025
NTP reliably synchronizes system clocks to within a few milliseconds, but certain applications need far more: sub-microsecond accuracy across the local network. This guide explains how PTP under IEEE 1588 works with hardware timestamping, how linuxptp with ptp4l and phc2sys is set up on Linux, and when the extra effort compared to NTP actually pays off.
-
Maxim Mironjuk
-
March 20, 2025
Long selector lists that share the same declarations are a maintenance problem in every sizable stylesheet. CSS :is() and :where() compress such lists into a single rule, with precise control over specificity, and with an error tolerance behavior that classic comma lists simply do not have.
-
Maxim Mironjuk
-
March 20, 2025
Some parts of a form control can still only be styled through vendor specific pseudo-elements, because there is no standardized selector for them. Anyone who wants range sliders, file upload buttons and autofill backgrounds to look consistent cannot avoid webkit and moz prefixes, but has to use them in a structured, maintainable way.
-
Maxim Mironjuk
-
March 20, 2025
A clean App Store Connect listing decides discoverability, review success and user trust long before the first build gets uploaded. From Bundle ID registration through screenshots and the privacy label to automated maintenance with eas submit, this guide walks through the full process for React Native and Expo apps.
-
Maxim Mironjuk
-
March 19, 2025
A page query that lists every field for ten components in one block turns into a merge conflict magnet with every change. GraphQL fragments break queries into named, reusable building blocks that live right next to the component consuming them, solving maintainability problems that become unavoidable as an application grows.
-
Maxim Mironjuk
-
March 19, 2025
Returning a limited number of rows from a query sounds like a trivial task, yet MySQL, PostgreSQL, SQL Server, and Oracle write this limit with four completely different syntax forms. Anyone who wants to keep pagination code portable across these systems needs an overview of LIMIT, TOP, ROWNUM, and the common ANSI standard denominator OFFSET FETCH.
-
Maxim Mironjuk
-
March 19, 2025
A growing Redis Cluster sooner or later needs to move hash slots between nodes, take on new nodes, or remove old ones, all while the application keeps running uninterrupted. redis-cli --cluster reshard orchestrates this operation through the MIGRATING and IMPORTING state of individual slots, turning resharding into a controlled, live operation instead of a maintenance window.
-
Maxim Mironjuk
-
March 19, 2025
Symfony's RateLimiter component reliably protects endpoints from abuse, but only if the chosen storage backend actually matches the underlying infrastructure. In-memory storage is meant for tests and only counts requests within a single PHP process, which behind a load balancer with multiple server instances effectively means an attacker can multiply the limit by the number of instances. This article compares in-memory storage, the generic cache adapter, and Redis as shared state, walks through the concrete configuration of RateLimiterFactory, and explains the practical difference between sliding window and token bucket policies.
-
Maxim Mironjuk
-
March 19, 2025
Tests that depend on the current time, randomly generated UUIDs, or pseudo-random values are flaky: they sometimes fail and sometimes don't, and the cause is hard to reproduce. Clock interfaces, UUID factories, and controlled randomness solve this problem at its root, without complicating the production code.
-