Все статьи
-
Явно обозначайте границы транзакций
Документируйте, какие изменения состояния фиксируются вместе и что может происходить между транзакциями базы данных и внешними вызовами.
-
Морф-цели: сложение смещений вершин с сохранением базовой формы
Для предсказуемой лицевой и корректирующей деформации сохраняйте соответствие вершин, аддитивную семантику весов и порядок морфинга и скиннинга.
-
Choosing permission checkpoints for queued jobs after access is revoked
Make the timing of authorization explicit when a request schedules work that runs later. The proposed exercise separates permission to enqueue work from permission to execute it and retrieve its output.
-
Checking placeholder contracts when an agent adds translated interface text
Preserve the runtime meaning of placeholders and message variants while translating interface text, so fluent prose does not introduce broken substitutions or missing cases.
-
Python 3.10 после окончания поддержки: поиск интерпретаторов и пересоздание окружений
В таблице жизненного цикла проекта Python датой окончания поддержки Python 3.10 указано 1 октября 2026 года. Учтите интерпретаторы, которые действительно используют службы, виртуальные окружения и образы, затем пересоберите и проверьте каждое приложение на поддерживаемой ветке.
-
Конвейер, fan-out, оркестратор и коллегия критиков: какой паттерн мультиагентной системы подходит для какой задачи
Конвейер подходит для задач с фиксированной последовательностью преобразований; параллельный fan-out — для независимых подвопросов или для нескольких попыток, по которым потом проводится голосование; оркестратор с воркерами — для задач, чья декомпозиция становится известна только во время выполнения; коллегия критиков — для результатов, которые нужно проверить по нескольким критериям; каждый из этих паттернов увеличивает расход токенов и добавляет уровень координации, который может дать сбой сам по себе.
-
Смена DNS-записи с путём отката: снижение TTL, переключение и проверка
Изменение DNS доходит до пользователей не быстрее, чем истекает старый TTL в кэшах, поэтому TTL нужно снизить за один полный период старого TTL до самого изменения, старую цель нужно держать рабочей, пока новая не подтверждена повсеместно, а также учитывать, что резолверы могут отдавать устаревшие данные, если авторитетные серверы недоступны, — это разрешено RFC 8767.
-
Base64 variants: standard vs URL-safe alphabets, padding rules and decoder strictness
RFC 4648 defines both the standard and URL-safe base64 alphabets and requires padding by default, but JWTs explicitly omit it, MIME wraps lines at 76 characters while GNU base64 needs -w0 to stop doing the same, and decoders from Python to the browser disagree on whether stray characters and missing padding are errors.
-
PowerShell error handling for admin scripts: terminating errors, $ErrorActionPreference and $LASTEXITCODE
PowerShell has two error classes that behave differently in a script: terminating errors that try/catch can stop, and non-terminating errors that only $ErrorActionPreference or -ErrorAction can turn into a stop. A third class, failures from native executables, follows neither path unless $PSNativeCommandUseErrorActionPreference is set (PowerShell 7.4+, experimental in 7.3).
-
HTTP-Statuscodes richtig verwenden: die erste Verzweigung des Clients
Clients, Caches und Agenten entscheiden allein am Statuscode über Wiederholen, Neuladen oder Aufgeben: 201/204 für Erfolg mit und ohne Körper, 401 gegen 403 für fehlende Anmeldung gegen fehlende Berechtigung, 409/412/428 für Konflikte und Vorbedingungen, 429 und 503 mit Retry-After für «später». Ein 200 mit Fehlerobjekt täuscht alle.
-
Мониторинг истечения TLS-сертификатов на всех узлах, а не только на основном сайте
Истёкший сертификат — это отказ с абсолютно предсказуемым моментом наступления; опрашивайте дату notAfter каждого реально обслуживаемого сертификата (веб, API, почта, внутренние панели, балансировщики нагрузки) снаружи, настраивайте оповещение с запасом времени, достаточным для ручного продления, и проверяйте не только листовой сертификат, но и промежуточные.
-
Managing ZFS boot environments with beadm and rolling back a failed update
beadm list/create/activate/destroy manage the ZFS boot environments that pkg update creates automatically when an update requires a reboot. Activating the previous boot environment and rebooting is the supported rollback for a failed update, with no need to reinstall packages by hand.
-
Стили для печати: как сделать веб-страницу пригодной для печати и для PDF
Таблица стилей для печати скрывает навигацию и элементы управления, раскрывает свёрнутый контент, выводит адреса ссылок после текста самой ссылки, задаёт размер страницы и поля через @page, не даёт таблицам и иллюстрациям разрываться между страницами через break-inside: avoid и просит браузер сохранить значимые фоновые цвета. Проверять нужно в режиме предварительного просмотра печати браузера, а не только на экране.
-
Непрерывное профилирование в продакшене: постоянно включённое сэмплирующее профилирование и на какие вопросы оно отвечает
Непрерывное профилирование систематически снимает профили CPU и памяти во времени и хранит их как размеченные серии, поэтому команда может спросить, какая функция потребила больше всего CPU по всему парку серверов вчера, или что изменилось между двумя версиями; сэмплирующие профилировщики делают это достаточно дёшево, чтобы держать их включёнными постоянно, а сами профили поставляют рантайм-эндпоинты вроде /debug/pprof/ в Go или eBPF-агенты.
-
Фильтрация по умолчанию в ripgrep сокращает поиск по коду агентами по сравнению с grep -r
Гипотеза: агентам, которые пишут код и ищут по репозиторию с помощью правил игнорирования ripgrep по умолчанию (пропускаются файлы из .gitignore, скрытые и бинарные файлы), требуется меньше вызовов поиска и меньше нерелевантного вывода на задачу, чем агентам, использующим grep -r без исключений, — потому что среди результатов нет совпадений в артефактах сборки и зависимостях; никаких измерений не приводится.
-
Summarizing time in system calls with strace -c, its overhead, and perf trace as an alternative
strace -c counts time, calls and errors per system call instead of printing every call, but strace's own manual warns that a traced process runs more slowly than an untraced one; perf trace, described as a strace-inspired tool built on perf_events rather than ptrace, is the lower-ceremony alternative when that overhead matters.
-
Запланированный день документации привлекает больше новых контрибьюторов, чем постоянно висящий призыв помочь с документацией
Гипотеза: проект, который назначает один день с отобранным списком небольших задач по документации, доступными в этот день для ревью мейнтейнерами и меткой good-first-issue на каждой задаче, получает больше принятых изменений документации от людей, которые раньше никогда не контрибьютили, чем тот же список задач, весь год провисевший открытым; предлагается сравнение на истории одного и того же проекта.
-
Проектирование консольной утилиты на Python: argparse, main() и коды возврата
Разместите интерфейс в функции main(argv) -> int, зарегистрированной как консольный скрипт; проверяйте аргументы через type и choices в argparse; следуйте соглашению о кодах возврата (0 — успех, 2 — ошибка использования, 1 — прочий сбой, коды sysexits — только если они задокументированы); выводите результаты в stdout, а диагностику — в stderr; обрабатывайте SIGINT и разорванные каналы (broken pipe).
-
Writing a portable POSIX sh script across Linux, BSD, macOS and AIX
A script meant to run unchanged on Debian's dash, a Linux box's bash-as-sh, FreeBSD, macOS and AIX has to stay inside the POSIX Shell Command Language and avoid GNU-only tool flags; checkbashisms and a short list of GNU-versus-BSD command differences catch most of what breaks.
-
Обновление Debian и Ubuntu до следующего основного выпуска с сохранением возможности отката
И do-release-upgrade в Ubuntu, и ручная процедура Debian с изменением списка источников и последующим обновлением предполагают наличие полной резервной копии и резервного доступа через консоль на случай обрыва SSH-соединения во время обновления; сами примечания к выпуску Debian рекомендуют сначала выполнить минимальное обновление, а затем полное.
Машиночитаемо: JSON