Все статьи
-
Designing an on-call rotation and its handover
An on-call rotation needs a primary and a backup, a bounded share of each engineer's time, shift lengths and swap rules that people can plan around, a pager budget that triggers corrective work when exceeded, and a written handover at every shift change; the Google SRE book and PagerDuty's public response documentation describe the constraints.
-
Bezeichner benennen: nach Rolle, im Fachvokabular, so lang wie die Reichweite
Ein Name sagt, was ein Ding im Fachgebiet ist oder tut – nicht, welchen Typ es hat oder wie es implementiert ist. Die Länge wächst mit der Reichweite, ein Begriff hat genau ein Wort, Wahrheitswerte lesen sich als Aussage, Sammlungen stehen im Plural. Sprachkonventionen (PEP 8, Effective Go) gehen dem Geschmack vor, und Umbenennen ist billig, solange es mit Werkzeug und in eigenem Commit geschieht.
-
Тестирование кода, зависящего от времени и случайности
Внедряйте часы и источник случайности вместо прямых вызовов time.time() или random. Тогда тесты передают фиксированные значения, а код остаётся детерминированным и воспроизводимым.
-
Десериализация недоверенных данных: pickle и сериализация Java
Нативные форматы сериализации объектов предписывают получателю создавать произвольные объекты, а их создание выполняет код; документация Python прямо называет pickle небезопасным модулем. Никогда не десериализуйте такие форматы из недоверенного ввода; если устаревший интерфейс вынуждает это делать, ограничьте классы, которые может указывать поток, и подпишите данные.
-
Ротация логов и ограничения срока хранения
На каждом уровне — в приложении, среде выполнения контейнеров, прокси и системном журнале — нужно ограничивать объём и возраст логов. Срок хранения следует выбирать исходя из потребностей отладки и правовых требований, а не принципа «хранить всё».
-
Updating FreeBSD: freebsd-update for the base system, pkg upgrade for packages, and pkg audit for known vulnerabilities
FreeBSD splits patching into two independent tools: freebsd-update fetch/install for the base system (with upgrade -r for a major release change), and pkg upgrade for installed packages. pkgbase — installing the base system itself as pkg(8) packages — is documented as experimental on FreeBSD 14 and a technology preview for FreeBSD 15.0, not yet the default path.
-
The Linux boot chain for troubleshooting: firmware, bootloader, kernel, initramfs and systemd
A Linux boot passes through firmware, a boot loader, the kernel, an initramfs and finally the system manager, each stage handing control to the next. Knowing what each stage does and where it logs lets an administrator narrow down a failed boot to one stage before touching anything.
-
Access logs for personal data: recording who read which record
An access log for personal data records reads, not only writes: actor, subject, object, reason and time, emitted at the application read path and reconciled with database-level statement logging for paths that bypass it; it must answer subject-centric questions such as who looked at this person's record in the last year.
-
Освоить незнакомую кодовую базу за день: протокол исследования с письменной картой
Ограниченный по времени протокол первого дня в кодовой базе: до чтения соберите код и запустите тесты, изучите историю через git shortlog и git log, чтобы найти активные области, проследите один запрос или команду от начала до конца и составьте одностраничную карту с точками входа, моделью данных, инвариантами и открытыми вопросами. Результат — карта, а не память.
-
Открытые перенаправления: проверка адреса из параметра next
Перенаправление на адрес из запроса позволяет атакующему создавать ссылки на вашем домене, ведущие на его сайт. Разрешайте перенаправление только на относительные пути или к источникам из разрешённого списка либо сопоставляйте короткие идентификаторы с адресами на сервере. Проверить хост URL сложнее, чем кажется: документация Python предупреждает, что urlsplit не проверяет входные данные.
-
Оценки RICE и ICE: что означают числа и где заканчивается их применимость
RICE перемножает охват, влияние и уверенность и делит результат на трудозатраты; ICE убирает охват и оставляет влияние, уверенность и лёгкость выполнения. Оба метода помогают сделать доводы при расстановке приоритетов явными и сопоставимыми, и оба перестают работать, когда исходные данные — догадки в виде чисел или когда игнорируются зависимости и стратегия.
-
Do prompt-injection test suites predict how an agent behaves against injections written after the suite?
Agents are often evaluated against fixed collections of injection attempts. It is unclear how well a good score transfers to new phrasings, new carriers and adaptive attackers, and what a test suite would need to contain to be predictive.
-
Distinguishing denied access from a broken negative-test fixture
Prevent an agent from treating any error as proof that an access-control test passed. The proposed method uses matched controls to identify whether the application actually reached the intended authorization decision.
-
Schema migrations run with a short lock_timeout and automatic retry cause fewer deploy-time incidents than migrations without one
Hypothesis: because most ALTER TABLE forms take an ACCESS EXCLUSIVE lock that queues behind any long transaction while blocking every later query, migrations executed with a lock_timeout of a few seconds and a bounded retry loop produce fewer and shorter deploy-time outages than the same migrations run with the default unlimited wait, at the cost of a few migrations that need a manual rerun.
-
JCL and batch basics: JOB/EXEC/DD statements, return codes, submitting from USS, and reading output
A JCL job is a JOB statement, one or more EXEC steps each naming a program, and DD statements binding files/datasets to that program's I/O; each step ends with a return code where 0 is clean and higher values signal warnings or errors, and a job can be submitted from the USS shell with submit and its output read through SDSF or the z/OSMF jobs REST API.
-
Rolling out a service worker safely: scope, versioned caches, the waiting worker and a kill switch
A service worker that caches HTML can pin users to old code after a deploy. Register it with an explicit scope, fetch the script fresh on every update check, version caches per build and delete old ones on activate, choose per-resource strategies, decide how the waiting worker takes over, and ship a tested kill switch before the first release.
-
Инкрементальное обучение с partial_fit: стабильные признаки, список классов и корректная оценка
Инкрементальные алгоритмы обновляют модель небольшими пакетами, не загружая весь набор данных в память. Надёжный процесс также сохраняет смысл признаков, задаёт классы и оценивает прогнозы до обучения на их результатах.
-
Разбор AddressSanitizer: исправьте первый недопустимый доступ, прежде чем доверять дальнейшему поведению
Превратите отчёт AddressSanitizer в минимальный регрессионный сценарий владения или границ, не считая чистый запуск доказательством.
-
Безопасный запуск внешних команд из Python
Используйте subprocess.run со списком аргументов и shell=False, задавайте тайм-ауты, явно выбирайте способ получения вывода, проверяйте коды завершения и никогда не стройте командную строку из недоверенных строк.
-
Практика извлечения из памяти как учебный протокол: закройте источник, дайте ответ, затем проверьте
Протокол обучения через воспроизведение по памяти вместо перечитывания: после каждой единицы материала закройте источник, запишите то, что можете воспроизвести, сравните с источником, отметьте пробелы и запланируйте новую попытку их вспомнить. Обобщённые в систематическом обзоре 2021 года исследования в аудиториях и лабораториях сообщают о пользе на разных уровнях и в разных форматах.
Машиночитаемо: JSON