Page 14 - Monthly Archives: March 2025
-
Maxim Mironjuk
-
March 15, 2025
Credentials in the environment section of a compose.yaml end up in docker inspect, in process lists and often accidentally in log output. The secrets block in Docker Compose solves this problem by delivering credentials as files inside the container instead of as visible environment variables, creating a significantly cleaner way of handling passwords and API keys.
-
Maxim Mironjuk
-
March 15, 2025
Accordions and tabs are among the most frequently misimplemented interface patterns on the web, because they look visually simple while requiring, underneath, a precisely defined keyboard interaction and their own ARIA role structure. An accordion that only reacts to a click on a div, or tabs that know no arrow key navigation, appear to work perfectly for mouse users while remaining unusable or at least confusing for keyboard and screen reader users.
-
Maxim Mironjuk
-
March 15, 2025
Rewriting the same Bash functions for logging, retry logic and notifications in every repository creates maintenance overhead a single, shared library file avoids. Built, versioned and tested properly, such a Bash library becomes the stable foundation for every CI pipeline on a team, instead of the next source of copy-paste bugs.
-
Maxim Mironjuk
-
March 15, 2025
A green test job in the pipeline overview only tells you that tests ran, not how many, which ones failed, or how well the code is actually covered. With artifacts:reports:junit and artifacts:reports:coverage_report, GitLab pulls exactly these details straight out of the test output and displays them in a structured way in the merge request widget, right down to colored lines in the diff. This article covers the concrete configuration for PHPUnit, from the correct output format setting to interpreting the results.
-
Maxim Mironjuk
-
March 15, 2025
Anyone developing PHP inside Docker containers but still wanting to run tests directly from the IDE faces a configuration challenge: PhpStorm needs to know which PHP interpreter lives in the container, how Xdebug can be reached, and how paths are mapped between host and container. This article shows the full path.
-
Maxim Mironjuk
-
March 15, 2025
AI-generated code often looks convincingly finished, yet it frequently hides subtle edge-case bugs, outdated API calls, or overlooked security gaps that a reviewer without a targeted eye can easily wave through. This article covers typical failure patterns of AI assistants and provides a practical checklist that lets developers review AI-generated changes just as thoroughly as human-written code.
-
Maxim Mironjuk
-
March 15, 2025
A single code change rarely worsens a product page's load time noticeably, but twenty such small, individually inconspicuous degradations over several months add up to an overall considerably slower application, without any single, clearly responsible commit being identifiable for it. A performance budget wired into the CI pipeline as an automated test assertion prevents exactly this creeping problem, by immediately checking every single change against fixed, objective thresholds, instead of monitoring performance only occasionally and manually.
-
Maxim Mironjuk
-
March 15, 2025
Page changes in classic multi-page applications usually feel abrupt: the old page disappears and the new one appears with no transition at all. Cross-Document View Transitions close that gap directly in the browser, with a few lines of CSS, no single-page framework and no extra JavaScript for the basic case.
-
Maxim Mironjuk
-
March 14, 2025
OpenAPI 3.1 is the industry standard for REST API documentation, yet many teams only use a fraction of its capabilities. This guide explains all the essential building blocks: from Info and Paths through Components and Schemas to Security and Callbacks, with complete practical YAML examples.
-
Maxim Mironjuk
-
March 14, 2025
The Apollo Client Cache is far more than a plain response store: it normalizes every object by __typename and id into a flat graph, keeps queries consistently in sync, and allows targeted updates without a refetch. Anyone who understands typePolicies, cache.modify, and optimistic responses builds noticeably faster and more consistent React applications.
-