7.3 KiB
7.3 KiB
Черновое тройное ревью — февраль 2018
Партия не интегрирована в web/data/articles.json. Ревизии доступны только через:
node web/scripts/upgrade-2018-02.mjs --print-revisions
1. Факты и техника
| Слаг | Главный вопрос | Проверенные первичные источники | Результат |
|---|---|---|---|
editorial-2018-02-practice-php-diagnostics |
Как оставить диагностический факт при 500 и фатальной ошибке PHP? | set_error_handler, set_exception_handler, register_shutdown_function, error_get_last | Пример не обещает перехватить ошибки до регистрации обработчиков; отдельно названы ограничения фатального пути. |
editorial-2018-02-mechanism-php-diagnostics |
Почему строка от curl_exec() не означает успех API-операции? |
curl_exec, curl_getinfo, curl_errno, RFC 7231 | Строго разделены ошибка cURL, HTTP-статус и контракт тела; повтор записи не рекомендован без идемпотентности. |
editorial-2018-02-field-php-diagnostics |
Как отделить битый JSON от корректного null? |
json_decode, json_last_error, RFC 8259 | Используется подход PHP 7.1; отмечено, что JSON_THROW_ON_ERROR появился только в PHP 7.3. |
Проверено вручную:
- В каждой статье не меньше двух официальных или первичных источников.
- Утверждение о статусах HTTP ограничено протокольным уровнем; успех бизнес-операции проверяется проектным контрактом.
- В журналы не предлагается писать пароли, токены, исходное тело запроса или полный ответ партнёра.
- У примеров есть версия и границы: PHP 7.1, проектные таймауты, отсутствие универсального retry.
2. Редактура и голос
| Слаг | Проблема в начале | Техническая речь и тон 2018 | Объём основного текста |
|---|---|---|---|
editorial-2018-02-practice-php-diagnostics |
Ответ 500 без причины в журнале | Короткая практическая заметка: контекст, этап, обработчик, проверка | Проверяется скриптом, диапазон 5 000–15 000 знаков |
editorial-2018-02-mechanism-php-diagnostics |
Строка от cURL ошибочно объявляется успешной интеграцией | Симптом → уровень сбоя → запись в журнал → действие | Проверяется скриптом, диапазон 5 000–15 000 знаков |
editorial-2018-02-field-php-diagnostics |
if (!$data) склеивает несколько разных состояний |
Один вопрос о JSON, затем конкретные значения и контракт | Проверяется скриптом, диапазон 5 000–15 000 знаков |
Проверено вручную:
- У каждой статьи один главный вопрос; темы не копируют друг друга: runtime PHP, transport/HTTP и payload JSON.
- Изъяты общие вводные о «важности» и обещания универсального решения.
- Использованы проектные оговорки вместо выдуманных цифр, версий партнёрских API или результатов замеров.
- Статьи заканчиваются действиями и ограничениями до списка источников.
3. Визуал и выпуск
| Материал | Назначение | Проверка |
|---|---|---|
php-fatal-context-flow.svg |
Показывает три ветки диагностики PHP и общий контекст операции | SVG содержит title, desc, осмысленный alt и подпись в статье |
curl-outcome-classifier.svg |
Разделяет транспорт, HTTP и контракт тела | SVG содержит title, desc, осмысленный alt и подпись в статье |
json-payload-diagnostic.svg |
Разделяет ошибку декодера и нарушение JSON-контракта | SVG содержит title, desc, осмысленный alt и подпись в статье |
Проверки к запуску перед интеграцией:
node --check web/scripts/upgrade-2018-02.mjs
node web/scripts/upgrade-2018-02.mjs --print-revisions | jq 'length'
xmllint --noout web/public/assets/editorial/2018/php-fatal-context-flow.svg
xmllint --noout web/public/assets/editorial/2018/curl-outcome-classifier.svg
xmllint --noout web/public/assets/editorial/2018/json-payload-diagnostic.svg
После интеграции основной агент должен запустить общий audit-скрипт и production-сборку. Этот авторский черновик их намеренно не запускает: он не меняет архив.
Результаты авторского прохода
node --check web/scripts/upgrade-2018-02.mjs— PASS.node web/scripts/upgrade-2018-02.mjs --print-revisionsвернул массив из трёх ревизий; встроенная проверка структуры прошла.- Длина основного текста без источников: 7 109, 6 519 и 6 706 знаков соответственно; все значения в диапазоне 5 000–15 000.
xmllint --nooutдля трёх SVG — PASS.- Локальная браузерная отрисовка SVG заблокирована политикой среды, поэтому финальный просмотр на desktop и узком экране остаётся выпускной проверкой после интеграции в страницу. Структурная проверка выполнена: у каждого SVG единый
viewBox 1200×620, описаниеtitle/descи все координаты элементов лежат внутри полотна.