Page 291 - Mironsoft Blog
-
Maxim Mironjuk
-
April 02, 2025
Every time a page loads a script from an outside CDN, it silently trusts that the code delivered today is the exact code that got tested. If that CDN is compromised, the file's contents can change while the referenced URL stays identical, and the browser happily loads the tampered code anyway. Subresource Integrity addresses exactly this gap: a hash value embedded in the HTML compares the content actually received against the content expected, and blocks execution the moment they diverge.
-
Maxim Mironjuk
-
April 02, 2025
Naive entity iteration over millions of records reliably runs into a memory limit, because the UnitOfWork keeps every loaded entity in memory. EntityManager::clear(), toIterable() and bulk DQL updates solve this problem, each with its own trade offs.
-
Maxim Mironjuk
-
April 02, 2025
ROW_NUMBER, RANK and DENSE_RANK look almost identical at first glance, yet behave fundamentally differently as soon as two rows share the same value. Anyone who does not know the difference ends up with broken deduplication logic and incorrect leaderboards. This article shows the exact behavior of all three ranking functions using concrete tied-value examples.
-
Maxim Mironjuk
-
April 02, 2025
Once several microservices each offer their own REST API, the same cross-cutting logic repeats everywhere: checking authentication, enforcing rate limits, logging requests. An API gateway pulls that logic into one central place, with clear benefits but also new questions about resilience and latency.
-
Maxim Mironjuk
-
April 02, 2025
obj.hasOwnProperty(key) looks harmless, but it breaks with null prototype objects and with overridden prototype methods. Object.hasOwn(obj, key) is the static, robust alternative that avoids exactly these pitfalls and should be the default choice for property checks in modern code.
-
Maxim Mironjuk
-
April 02, 2025
Since ES2022, static class blocks allow real, multi step initialization logic for static class fields, including access to private fields and regular error handling. This article shows why the feature became necessary, how the syntax works in detail, and where it makes a practical difference.
-
Maxim Mironjuk
-
April 01, 2025
Queries like best bike shop near me follow a different logic than generic informational questions, because AI search engines need real time location data for these, not just solid topical content. Google Business Profile, LocalBusiness schema and consistent contact data become distinct GEO levers as a result, clearly separate from generic GEO strategy. This article covers how AI systems select sources for local queries, how the interplay with Google Business Profile works, and how to implement it practically in a Magento multi store setup with several branches.
-
Maxim Mironjuk
-
April 01, 2025
Forgetting to update Composer after every pull costs time chasing cryptic error messages. The post-merge hook handles routine tasks like that automatically, without anyone having to remember.
-
Maxim Mironjuk
-
April 01, 2025
SearchCriteria queries, collection filters and EAV attributes are the three most common data access patterns in Magento, and at the same time the three most common places where tests are either missing or structured incorrectly. This article shows which test type fits which access pattern and how to secure each one correctly.
-
Maxim Mironjuk
-
April 01, 2025
A fixed path like /tmp/script.tmp in a shell script is an open invitation for race conditions, data leaks, and symlink attacks. mktemp guarantees unique, safe temporary files, and trap EXIT ensures they get cleaned up in every termination scenario.
-