Dockerfile Layer Caching: Order Instructions for Fast Rebuilds
A one-line code change should not reinstall every dependency. Timed rebuilds show how instruction order, .dockerignore and ARG placement decide what Docker reuses.
Archive
A one-line code change should not reinstall every dependency. Timed rebuilds show how instruction order, .dockerignore and ARG placement decide what Docker reuses.
no-cache does not mean do not cache. A hands-on look at Cache-Control, ETags and 304 responses with a tiny Node server, plus how a CDN treats them.
How I use python -m venv on servers and laptops: one environment per project, pinned requirements, no activation in cron, and why .venv never goes into Git.
"Address already in use" again? How to find the owner of a port with ss, lsof and fuser, decode /proc/net/tcp by hand, and why some ports show no process.
match looks like a shorter switch, but it compares strictly, never falls through, returns a value and throws when nothing matches. Here is what that means in practice.
amend, reset --soft, --mixed, --hard, revert and restore each undo something different. A tested walk-through, plus how the reflog recovers from a bad reset.
Work out the network, broadcast address and prefix length of an IPv4 address inside a query, using INET_ATON(), INET_NTOA() and a little bitwise arithmetic.
Find processes by their full command line in pure Bash by reading /proc/PID/cmdline, with the NUL bytes handled properly and the 2009 bugs fixed.
Test whether a directory is empty in pure Bash with nullglob and dotglob, handle hidden and unreadable directories, and know when find -quit is faster.
Bash's ${#var} counts characters, PHP's strlen() counts bytes. A clean strlen() function, a strbytes() companion, and the locale traps in between.