Page 10 - Monthly Archives: June 2025
-
Maxim Mironjuk
-
June 18, 2025
Checking out a commit, tag, or remote reference directly puts you in detached HEAD state, and commits created there can quietly disappear the moment you switch back to a branch. This article explains how HEAD really works in Git, why commits can look lost even though they rarely are, and how git branch, git switch, and git reflog rescue every situation safely.
-
Maxim Mironjuk
-
June 18, 2025
A domain type bundles a base data type together with one or more constraints into its own, named type that any number of tables and columns can reuse. This article covers CREATE DOMAIN and ALTER DOMAIN in detail, practical examples for email addresses and positive amounts, migrations of existing columns, and the limits of this approach compared to per-column constraints.
-
Maxim Mironjuk
-
June 18, 2025
A pricing table with a toggle between monthly and yearly billing is standard for SaaS products and subscription models, because it makes the yearly discount directly visible and eases the purchase decision. With Alpine.js you build a pricing table that recalculates amounts reactively, shows discount badges and highlights the recommended plan, entirely without a page reload and without server side logic in the frontend.
-
Maxim Mironjuk
-
June 18, 2025
chroot is one of the oldest isolation tools on Unix and, at the same time, one of the most misunderstood. Anyone building a jail environment to seal off a process from the rest of the filesystem must understand exactly what chroot actually secures and where that protection ends, since many servers have already been compromised through a chroot environment mistakenly believed to be secure.
-
Maxim Mironjuk
-
June 17, 2025
Automated accessibility tests with axe-core reliably catch roughly a third of all WCAG violations and integrate directly into an existing Playwright or Cypress suite. With a baseline strategy the build only fails on new violations, while known legacy issues stay visible instead of blocking the pipeline permanently. Manual review remains essential for keyboard operation and screen readers.
-
Maxim Mironjuk
-
June 17, 2025
Shipping releases straight from main or develop risks unstable versions and blocked feature work. Structured release branches separate stabilization from new development, semantic versioning makes changes traceable, signed tags create trustworthy shipping points, cherry-pick backporting safely brings bugfixes into older supported versions, and CI/CD pipelines react automatically and predictably to branches and tags.
-
Maxim Mironjuk
-
June 17, 2025
PHP manages memory seemingly invisibly in the background, but understanding how Reference Counting, the Zend Memory Manager, and Garbage Collection actually work together lets you spot memory leaks in long-running processes before they become a production incident. This article explains the zval structure, circular references, the Cycle Collector algorithm, and the practical tools for diagnosis, for PHP developers who want to think beyond just memory_limit.
-
Maxim Mironjuk
-
June 17, 2025
As soon as a business operation changes data across multiple microservices with their own databases, a classic ACID transaction no longer works. Distributed transactions across services do not solve this problem with global locks, but with the saga pattern: a chain of local transactions with defined compensation steps for the failure case.
-
Maxim Mironjuk
-
June 17, 2025
Import Maps solve a problem ES modules have had in the browser since day one: a bare specifier such as import { render } from "preact" simply does not resolve natively unless something rewrites the path first. With an Import Map the browser itself carries out that resolution, and scopes even allow different versions for different parts of the same application, with no Webpack or Vite required.
-
Maxim Mironjuk
-
June 17, 2025
A collapsible sidebar navigation is one of the most common layout elements in dashboards and admin interfaces. With Alpine.js, the complete state, from opening and closing to browser persistence and a mobile overlay variant, fits into one compact component, with no need to load React or Vue.
-