80 lines
13 KiB
Markdown
80 lines
13 KiB
Markdown
# Сентябрь 2018 — черновое тройное ревью «Воспроизводимое окружение Windows»
|
||
|
||
Пакет автономный и предназначен для отдельной интеграции:
|
||
|
||
- <code>editorial-2018-09-practice-windows-dev-env</code>
|
||
- <code>editorial-2018-09-mechanism-windows-dev-env</code>
|
||
- <code>editorial-2018-09-field-windows-dev-env</code>
|
||
|
||
В этой партии созданы только:
|
||
|
||
- <code>web/scripts/upgrade-2018-09.mjs</code>;
|
||
- три SVG в <code>web/public/assets/editorial/2018/</code>;
|
||
- этот файл ревью.
|
||
|
||
<code>web/data/articles.json</code>, реестр ревизий, аудит, стандарт качества, очередь и Git не менялись. Дата ревью: 31 июля 2026 года.
|
||
|
||
## 1. Факты и техника — пройдено
|
||
|
||
### Граница и первичные источники
|
||
|
||
| Утверждение в статье | Чем сверено | Оговорка в тексте |
|
||
| --- | --- | --- |
|
||
| В Windows у переменных среды есть Machine, User и Process scopes; дочерние процессы наследуют переменные родителя | [about_Environment_Variables](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-5.1), [Win32 Environment Variables](https://learn.microsoft.com/en-us/windows/win32/procthread/environment-variables) | Статья не утверждает, что старое окно мгновенно получает постоянную правку; проверка идёт в новом сеансе |
|
||
| <code>PATH</code> задаёт каталоги поиска, а <code>PATHEXT</code> — исполняемые расширения | [about_Environment_Variables](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-5.1) | Это не единственный слой выбора в PowerShell: отдельно названы alias, функции, cmdlet и внешние приложения |
|
||
| <code>Get-Command -All</code> показывает несколько одноимённых команд в порядке выбора PowerShell | [Get-Command](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/get-command?view=powershell-5.1) | <code>where.exe</code> не выдан за эквивалент: он помогает увидеть файлы в текущем каталоге и <code>PATH</code> |
|
||
| <code>chcp</code> показывает активную кодовую страницу; смена относится к программам, стартующим после неё | [chcp](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/chcp) | Кодовая страница консоли не приравнена к кодировке файла или настройке вывода .NET |
|
||
| JSON-снимок и дифф строятся стандартными PowerShell-командами | [ConvertTo-Json](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-5.1), [Compare-Object](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/compare-object?view=powershell-5.1) | Сравнение показывает различающиеся строки, а не доказывает причину без повторного запуска исходной команды |
|
||
|
||
### Технический проход
|
||
|
||
- Скрипт экспортирует три ревизии и не меняет архив при import.
|
||
- Контракт CLI проверен отдельно: <code>--print-revisions</code> выдал только валидный JSON из трёх объектов, без строки Usage и без stderr.
|
||
- В примерах нет команды, отключающей execution policy, антивирус, проверку сертификатов или иной механизм безопасности.
|
||
- Опасные данные ограничены заранее выбранными полями. В тексте отдельно сказано, что <code>PATH</code> может раскрыть имя пользователя и внутренние каталоги, поэтому JSON нужно просмотреть перед передачей.
|
||
- Поля <code>PATH</code>, кодовая страница, найденный кандидат и результат <code>--version</code> не смешаны в один «универсальный диагноз». Каждая статья называет следующий наблюдаемый шаг.
|
||
- Пути и версии в полевом разборе прямо помечены учебными. Они не приписываются реальному пользователю, команде или измерению.
|
||
- В рабочей среде нет Windows PowerShell 5.1, поэтому примеры не объявлены выполненными на другой ОС. Их синтаксис, параметры и фактические утверждения сверены с первичной документацией; перед публикацией на Windows нужен отдельный локальный прогон учебных <code>.ps1</code>.
|
||
|
||
## 2. Редактура и голос М1 — пройдено
|
||
|
||
| Ревизия | Один вопрос | Симптом и цена в начале | Освоенное умение 2018 года | Основной текст |
|
||
| --- | --- | --- | --- | --- |
|
||
| Практика | Какой минимальный снимок позволяет повторить запуск | Команда не находит инструмент или выбирает другой; риск — случайная глобальная правка и утечка переменных | PowerShell-скрипт, JSON и ручная проверка пути | 5 866 знаков без кода и источников |
|
||
| Механизм | Как PowerShell выбирает команду и где участвует кодовая страница | Версия отличается и текст нечитаем; риск — исправить не тот бинарник или повредить текст | <code>Get-Command -All</code>, <code>where.exe</code>, процессный <code>PATH</code> | 6 864 знака без кода и источников |
|
||
| Поле | Как найти различие между двумя машинами без переустановки | Одинаковая команда расходится; риск — стереть след случайными установками | Снимок, <code>Compare-Object</code>, обратимый опыт в новом сеансе | 7 343 знака без кода и источников |
|
||
|
||
- Голос удержан на М1: инженерская заметка 2018 года идёт от наблюдаемой ошибки к короткой команде, затем к ручной проверке.
|
||
- Не добавлены поздние роли, SLO, Kubernetes, контейнерные платформы, продуктовые метрики или непроверяемые истории внедрения.
|
||
- В каждом тексте есть один рисунок с осмысленным <code>alt</code> и подписью, одна доступная таблица, воспроизводимый PowerShell-фрагмент, нумерованный порядок действий, ограничения и точный заголовок <code><h2>Проверяемые источники</h2></code>.
|
||
- Убраны общие вводные и обещания «универсального решения». Утверждения ограничены версией, текущим процессом, конкретной командой или учебным примером.
|
||
|
||
### Третий редакторский проход — пройдено
|
||
|
||
- Независимый draft-gate вернул замечание только к <code>editorial-2018-09-field-windows-dev-env</code>: в первых 800 знаках был сценарий, но не было явного маркера проблемы.
|
||
- Первое предложение заменено минимально: оно начинается с <code>Симптом:</code>, сохраняет две Windows-машины, расходящийся запуск и цену поспешной переустановки.
|
||
- Остальная структура, объём, источники, визуал и тон М1 не менялись. Повторный <code>npm run audit:draft -- scripts/upgrade-2018-09.mjs</code> из <code>web/</code> прошёл для всех трёх slug: 8 086 / 7 690 / 8 745 знаков body; <code>node --check scripts/upgrade-2018-09.mjs</code> также завершился успешно.
|
||
|
||
## 3. Визуал и выпуск — пройдено
|
||
|
||
- <code>windows-dev-env-snapshot-2018.svg</code> объясняет состав минимального снимка и границу с секретными данными.
|
||
- <code>windows-dev-env-resolution-2018.svg</code> разделяет поиск команды и проверку кодовой страницы; это предотвращает неверный вывод, что <code>where.exe</code> полностью описывает PowerShell.
|
||
- <code>windows-dev-env-diff-2018.svg</code> показывает порядок полевого разбора: одинаковая команда → очищенные снимки → одно отличие → обратимый опыт → повтор.
|
||
- Все схемы имеют адаптивный viewBox шириной 720px, используют контрастный текст и не содержат текста, который является единственным носителем смысла: связи также видны по группам и стрелкам.
|
||
- SVG открыты через локальный Quick Look в масштабе 1200px. При первом просмотре нижняя строка схемы полевого разбора выходила за правую границу; текст сокращён, схема отрендерена повторно без обрезания. На трёх схемах проверены стрелки, контраст, кириллица и отсутствие клиппинга.
|
||
|
||
### Выполненные команды и результат
|
||
|
||
node --check web/scripts/upgrade-2018-09.mjs
|
||
node web/scripts/upgrade-2018-09.mjs --print-revisions
|
||
node --input-type=module -e "import('./web/scripts/upgrade-2018-09.mjs').then(({revisions}) => { if (revisions.length !== 3) process.exit(1); })"
|
||
xmllint --noout web/public/assets/editorial/2018/windows-dev-env-snapshot-2018.svg
|
||
xmllint --noout web/public/assets/editorial/2018/windows-dev-env-resolution-2018.svg
|
||
xmllint --noout web/public/assets/editorial/2018/windows-dev-env-diff-2018.svg
|
||
|
||
- Все шесть команд завершились успешно. Отдельно проверены чистый import, точный порядок трёх slug, 5 000–15 000 знаков основного текста, 8 / 8 / 9 смысловых заголовков, по два блока кода, figure с непустым alt и подписью, таблица с thead, нумерованный маршрут, точный раздел источников и 4 / 5 / 5 внешних первичных ссылок.
|
||
- <code>git diff --check</code> по пяти файлам партии прошёл без пробелов и конфликтных маркеров. В статусе партии — ровно эти пять новых файлов; скрипт не импортирует и не записывает архив, реестр, аудит, стандарт, очередь или Git-историю.
|
||
- После интеграции основной редактор повторно прогнал strict audit через реестр ревизий и production build. Сборка прошла и сгенерировала 374 статические страницы.
|
||
|
||
Статус: принят в публикационный слой 31 июля 2026 года. Ревизии накладываются только по стабильным slug, без изменения даты, автора и базового архива.
|