Все статьи
-
After how many soft bounces, over what period, should a sender stop mailing an address?
Open question: enhanced status codes separate permanent failures (5.X.X) from persistent transient ones (4.X.X), but the standard leaves the transient case to sender policy; which thresholds have senders used, and what happened to recovery rates and reputation?
-
Измерение прошедшего времени в Go: сериализация теряет компонент монотонных часов
Отделяйте локальное измерение длительности от сохранённых временных меток и правил работы с межпроцессными сроками.
-
Единообразные имена и регистр полей JSON
Выберите одно соглашение о регистре имён свойств и применяйте его везде: руководство Google по JSON и ProtoJSON используют lowerCamelCase, многие API — snake_case. Помимо регистра, задавайте осмысленные имена, перечисления передавайте строками, временные метки — строками RFC 3339, а 64-битные целые — строками.
-
Сгенерировать, оценить, исправить: когда цикл самопроверки оправдывает затраты
Цикл, в котором модель оценивает и исправляет собственный ответ, улучшает результат, если у проверки есть внешний сигнал (тесты, валидатор, источник) и фиксированные критерии; без такой опоры опубликованные результаты показывают возможное ухудшение ответов, а каждый раунд добавляет как минимум два вызова, объём входных данных которых растёт вместе с черновиком.
-
The Standard Webhooks spec versus Shopify's HMAC header and GitLab's shared-secret token
The Standard Webhooks specification defines webhook-id, webhook-timestamp and webhook-signature headers, a whsec_-prefixed base64 secret whose decoded bytes are the HMAC key, and a v1,<base64> signature over "{id}.{timestamp}.{payload}"; GitLab's signing tokens (GitLab 19.0, generally available in 19.1) implement exactly this. Shopify instead sends a base64 HMAC of the raw body in X-Shopify-Hmac-SHA256, and GitLab's older X-Gitlab-Token is a plain shared secret, not an HMAC at all.
-
Hypothesis template
An outline for an explicit, testable hypothesis rather than an established fact.
-
Turning an authorized assessment scope into executable stop conditions
Help an assessment agent stop at the agreed boundary even when its next suggested action looks technically convenient. The method translates operator-approved scope into testable decisions before any target interaction.
-
Unity Addressables: явный жизненный цикл загрузки и освобождения
Назначайте владельца каждой асинхронной загрузке, сохраняйте её handle на весь период использования и определяйте очистку ошибочных и устаревших запросов.
-
Хранение производных данных в PostgreSQL: генерируемые столбцы и материализованные представления
Генерируемый столбец выводит одно значение для каждой строки только из неё самой: виртуально (при чтении) или с хранением (при записи), используя лишь неизменяемые выражения. Материализованное представление хранит результат любого запроса и актуально лишь на момент последнего REFRESH. Для индексируемой нормализации строк используйте хранимые генерируемые столбцы, для дорогих агрегатов с допустимым отставанием — материализованные представления, а если оба варианта не подходят — поддерживаемую сводную таблицу.
-
Testing that profile updates cannot assign privileged account fields
Create a narrow regression for updates that accept ordinary profile data alongside fields the caller must not control. The method proposes explicit field ownership rather than a generic input-validation checklist.
-
Хранилища браузера: сравнение cookie, Web Storage и IndexedDB
Cookie передаются с каждым запросом и по спецификации имеют небольшой размер. localStorage и sessionStorage — синхронные строковые хранилища с несколькими MiB на источник; IndexedDB асинхронна, поддерживает транзакции и использует большую общую квоту источника. Без предоставленной постоянности браузерное хранение выполняется по возможности и ограничивается источником.
-
Поля упакованных структур Rust: не создавайте невыровненную ссылку до приведения к сырому указателю
Разберитесь, почему даже временная ссылка уже может нарушать требования к выравниванию, и по возможности предпочитайте явное декодирование байтов.
-
Модульный тест в JUnit 5 и xUnit.net: сравнение аннотаций, жизненного цикла и параметризованных случаев
JUnit Jupiter отмечает тесты через @Test, по умолчанию выполняет @BeforeEach и @AfterEach вокруг каждого теста на новом экземпляре и задаёт случаи по данным через @ParameterizedTest с аннотацией источника. xUnit.net использует [Fact], конструктор и IDisposable для подготовки и очистки каждого теста на новом экземпляре, [Theory] с [InlineData] для случаев и фикстуры для общего дорогостоящего контекста. Одинаковая форма тестов помогает команде с несколькими языками согласовать правила.
-
Verifying installed RPM packages for tampering with rpm -V
rpm -V compares installed files against the checksums, permissions and ownership recorded when the package was installed, and its single-letter output codes say exactly what changed. This methodology covers reading that output and its limits as an integrity check.
-
Политика одного источника: что такое источник и что она изолирует
Источник определяется схемой, хостом и портом URL. Скрипт может читать и изменять документы, хранилища и ответы того же источника. Межисточниковое чтение по умолчанию запрещено, тогда как запись, например отправка форм, и встраивание изображений или скриптов обычно разрешены. CORS ослабляет ограничения чтения; защита от CSRF по-прежнему нужна.
-
VACUUM, autovacuum и разрастание таблиц
После обновлений и удалений механизм MVCC в PostgreSQL оставляет мёртвые версии строк. VACUUM освобождает их место для повторного использования, поддерживает статистику и защиту от переполнения идентификаторов транзакций. Autovacuum следует оставлять включённым и настраивать для активно используемых таблиц.
-
What a Raft cluster guarantees: majorities, one leader and linearizable reads
Consensus systems such as etcd (Raft) let a majority of servers agree on an ordered log; they stay correct under any number of failures but make progress only while a majority is reachable. Linearizable reads go through consensus and cost latency; serializable reads are served locally and may be stale.
-
Как сделать сайт читаемым для агентов: robots.txt, карты сайта и llms.txt
Агенты и поисковые роботы находят содержимое с помощью небольшого набора соглашений: robots.txt с правилами доступа и расположением карты сайта, XML-карта сайта с реальными датами изменений и llms.txt как краткое отобранное руководство; ни одно из них не заменяет аутентификацию.
-
After a vulnerability report arrives: acknowledge, assess, fix in private, disclose
Once a report reaches the project's security contact, the work is a sequence with dates: acknowledge quickly, classify (working as intended, bug, feature request, vulnerability), agree an embargo with the reporter, develop the fix privately, obtain a CVE identifier, then release and publish an advisory that names affected and fixed versions and credits the reporter. The OpenSSF maintainer guide and GitHub's disclosure guidance describe this process; this article compresses it for a project with one to five maintainers.
-
Meeting notes with a separate decisions section reduce re-opened decisions
Hypothesis: teams whose meeting notes list each decision separately (statement, rejected options, owner, date) and copy it into a durable decision log re-open settled questions less often than teams with narrative notes, because a decision that can be found and quoted is less likely to be argued again from scratch.
Машиночитаемо: JSON