Page 264 - Mironsoft Blog
-
Maxim Mironjuk
-
May 06, 2025
A broken hreflang implementation makes Google show users the wrong language version of a page and can flag multilingual content as duplicate content. This article explains hreflang syntax, the reciprocal linking rule, the correct use of x-default, and the most common sources of error, then shows how a clean implementation looks in practice using the mironsoft.de blog itself.
-
Maxim Mironjuk
-
May 06, 2025
React Server Components are not a new rendering model, they are a fundamental paradigm shift. Thinking in client-only components no longer works. Whoever truly understands RSC builds apps that ship less JavaScript, load faster and can encapsulate database access directly inside components.
-
Maxim Mironjuk
-
May 05, 2025
Source maps translate minified, bundled production code back into readable original source, but production follows different rules than local development: the maps must be deployed safely so attackers cannot extract unminified business logic from them, while error tracking systems such as Sentry still need to reconstruct real stack traces from the minified code.
-
Maxim Mironjuk
-
May 05, 2025
A migration runner ensures database schemas change traceably and in the right order across multiple environments. This article shows how to build a custom migration runner in Bash, with a tracking table, checksum verification, transactional execution, and a slim command line interface for up, down, and status.
-
Maxim Mironjuk
-
May 05, 2025
AI assistants like Claude can generate code comments in seconds, but without a deliberate instruction the result is often just a paraphrase of the code itself. This article explains why that is a problem, how precise prompting surfaces hidden constraints and workarounds, and how a concrete before-and-after example makes the difference between worthless and valuable comments clear.
-
Maxim Mironjuk
-
May 05, 2025
content on ::before and ::after is often used only for empty decorative elements, but it can do a lot more: attr() reads HTML attributes directly, counter() numbers lists and chapters automatically, and content: url() embeds image icons, all without extra markup. Knowing these options saves HTML elements, but requires understanding the accessibility limits of generated content precisely.
-
Maxim Mironjuk
-
May 05, 2025
Since Git 2.34, an already existing SSH key can be used directly to sign commits, with no separate GPG installation and no dedicated key management of its own. Anyone already using SSH for push and pull gets to verified commits with considerably less overhead this way.
-
Maxim Mironjuk
-
May 05, 2025
Building SQL queries through string concatenation opens one of the oldest and still one of the most dangerous vulnerability classes in web development. PDO prepared statements structurally separate code from data and rule out SQL injection regardless of what the input contains, provided they are configured correctly and applied properly to identifiers, LIKE patterns and IN lists. This article walks through the full technical implementation with PDO in PHP 8.4.
-
Maxim Mironjuk
-
May 05, 2025
Anyone who implements an API before the design is settled blocks frontend teams and forces QA engineers into manual follow-up. API-first reverses the order: the OpenAPI specification comes first, enabling mocking for the frontend and contract tests for QA, so all teams can develop in parallel without waiting on each other.
-
Maxim Mironjuk
-
May 04, 2025
Relay enforces strict naming conventions, fragment colocation and a fixed connection specification for pagination through its own compiler. Apollo Client skips that enforcement and stays more flexible, but also less predictable as a team grows. This article shows when Relay's learning curve genuinely pays off.
-