Новости
Обзоры и тесты
Техно
Советы
Разное
Главная » Веб-сайты, Главное

После семилетней паузы: как я обновил UCExpert с ИИ

Добавлено , 17.07.2026 – 00:19

Последняя статья на UCExpert вышла в мае 2019 года. Спустя семь лет я решил не закрывать накопившийся архив, а обновить WordPress, оживить старую тему и привести сайт в порядок с помощью ИИ. Рассказываю, что из этого получилось и зачем вообще сохранять технический блог в эпоху ИИ.

Последняя статья на UCExpert вышла 29 мая 2019 года. Получается, что пауза длилась не шесть лет, как мне сначала казалось, а чуть больше семи.

У этой паузы не было одной большой причины. В 2019 году начались серьёзные изменения в компании, где я тогда работал, и стало уже не до блога. Весной 2020 года пришли пандемия, удалённая работа и совершенно другой ритм жизни. Потом была смена места работы, новые обязанности и заметно меньше свободного времени.

Изменилась и сама работа. Раньше у меня регулярно появлялись новые устройства, системы и технологии, которые можно было испытать, настроить, а затем описать на основе собственного опыта. Со временем таких задач стало меньше, а писать пересказы чужих материалов мне не хотелось.

Наконец, этот блог никогда не был коммерческим проектом и денег мне не приносил. Он существовал из интереса к теме и желания сохранить полезный опыт. Когда свободного времени стало меньше, поддерживать его ради самого факта обновления оказалось трудно.

Все эти годы сайт продолжал работать, но фактически превратился в архив. Статьи оставались доступными через поиск и ссылки, а его техническая основа всё сильнее отставала от времени.

Почему я решил обновиться

За прошедшие годы изменился не только WordPress. Началась эпоха генеративного искусственного интеллекта, и вместе с ней возник более общий вопрос: нужны ли теперь такие технические блоги?

Я и сам стал заметно реже искать ответы в отдельных статьях. Во многих случаях проще задать вопрос ИИ, уточнить несколько деталей и получить объяснение именно в том виде, который нужен сейчас. Не приходится собирать ответ по кускам из документации, форумов и материалов десятилетней давности. С этой точки зрения возвращение к старому блогу может показаться немного странным. Зачем вкладывать время в сайт, если читатель всё равно спросит у нейросети? Но есть и другая сторона. ИИ хорошо обобщает уже существующие знания, однако этим знаниям всё равно нужно откуда-то появляться. Особую ценность имеют не очередные пересказы документации, а первичный опыт: что действительно заработало, где документация оказалась неполной, какие ограничения обнаружились в эксплуатации и что пришлось исправлять вручную. Именно такие материалы когда-то и составляли основную ценность UCExpert. Кроме того, мне не хотелось однажды потерять весь накопленный архив только потому, что устаревший движок больше невозможно запустить на современном сервере. Поэтому я решил сначала привести в порядок сам сайт, а вопрос о регулярности новых публикаций оставить открытым.

Старый WordPress

Исходное состояние было типичным для сайта, который долго работал без серьёзного обслуживания. Старый WordPress зависел от старой версии PHP. Обновить PHP мешала тема оформления Arthemia, разработчик которой давно прекратил выпускать новые версии. Тема, в свою очередь, использовала устаревшие функции WordPress и JavaScript-библиотеки прежних лет. Несколько старых плагинов тоже давно не поддерживались. Получилась цепочка зависимостей: нельзя обновить один компонент, не затронув остальные. Простое нажатие кнопки «Обновить» могло закончиться белой страницей, ошибками PHP или неработающей административной панелью. На руках у меня были архив файлов сайта и дамп базы данных. С них мы и начали. Я говорю «мы», потому что вторым участником этой работы стал Codex — ИИ-агент, который умеет разбирать проект, изменять код, запускать команды и проверять результат. Первым делом была собрана локальная копия сайта в Docker. WordPress с Apache и PHP работал в одном контейнере, база MySQL — в другом. Это позволило экспериментировать без риска для действующего сайта, повторять обновления с чистого состояния и перед каждым опасным изменением делать резервную копию. Основной принцип был простым: не переделывать всё сразу и не пытаться превратить старый блог в совершенно другой сайт. Мне хотелось сохранить узнаваемый вид UCExpert, но убрать технические ограничения, из-за которых он застрял в прошлом.

Этапы обновления

Со стороны работа с ИИ иногда выглядит почти магически: сформулировал задачу, подождал и получил готовый результат. В реальности этот проект выглядел иначе. За время обновления получилось около сотни коротких итераций. Я открывал сайт, проверял конкретный экран, находил новую проблему, присылал описание, снимок экрана или фрагмент журнала. Codex изучал связанный код, предлагал или сразу вносил исправление, после чего всё проверялось заново. Финальная серия изменений, связанных с развёртыванием сайта, была разделена на двенадцать отдельных коммитов.

Такой режим оказался гораздо полезнее попытки заранее составить один огромный запрос. Старый сайт хранит много неочевидных связей между темой, плагинами, настройками и данными. Часть проблем проявляется только после входа в административную панель, отправки формы или открытия конкретной статьи десятилетней давности. При этом ИИ не всегда оказывался прав с первой попытки. Например, несколько вариантов нового логотипа визуально отличались от оригинала, хотя технически выглядели лучше. В итоге нашёлся исходный EPS-файл, из которого удалось подготовить аккуратную векторную версию, сохранив прежние пропорции и цвет. В другой момент попытка улучшить расположение анонсов нарушила сетку страницы, и изменение пришлось пересмотреть. Такие ситуации хорошо напоминают, что окончательное решение всё равно принимает человек, который знает, каким должен быть результат.

Сложности при обновлении и переработки блога

Главной трудностью была не какая-то одна большая ошибка, а множество небольших несовместимостей. Панель настроек Arthemia сначала открывалась пустой. Когда её удалось вернуть, выяснилось, что блоки параметров нельзя перетащить в рабочую область: старый JavaScript рассчитывал на поведение библиотек, давно изменившееся в WordPress. Отдельно пришлось восстанавливать загрузчик изображений и другие элементы административного интерфейса. Некоторые страницы панели управления открывались примерно по двадцать секунд, хотя сам сайт отвечал быстро. Причиной оказался старый механизм проверки обновлений темы. Он пытался связаться с давно не существующим сервером разработчика и каждый раз ждал сетевого тайм-аута. После отключения этого механизма административная панель снова стала работать нормально.

В старом содержимом тоже нашлись неожиданные проблемы. Повреждённое изображение могло вызвать критическую ошибку при создании миниатюры. Блоки команд, которые когда-то красиво оформлялись плагином, после изменений превращались в красный текст или обычные абзацы. Встречались устаревшие и уже перехваченные посторонними владельцами ссылки. Несколько десятков материалов пришлось просматривать отдельно: восстанавливать разметку кода, исправлять явные опечатки, убирать лишние рамки у изображений и осторожно обновлять пояснения, не переписывая историю задним числом.

Даже отправка почты потребовала отдельного расследования. Один SMTP-порт на сервере оказался недоступен, а другой работал нормально. Чтобы отправка формы не заставляла посетителя ждать ответа внешнего почтового сервера, письма были вынесены в фоновую очередь с повторными попытками. Были и обычные инфраструктурные детали: получение HTTPS-сертификата зависит от DNS и доступности сервера извне; контейнер может сохранить старые файлы WordPress в томе даже после замены образа; а настройки сайта находятся не только в Git, но и в базе данных. Всё это пришлось не только исправить, но и подробно записать, чтобы через год не разгадывать собственную систему заново.

Результаты

Сейчас сайт работает на WordPress 7, PHP 8.3 и MySQL 8. Старую тему Arthemia удалось сохранить, но её код был адаптирован к современным версиям PHP и WordPress. Работают её настройки, административная панель, медиабиблиотека, виджеты и основные шаблоны страниц.

Все плагины были пересмотрены. Ненужные и заброшенные удалены, используемые обновлены, а изменения, которые должны переживать обновление сторонних компонентов, вынесены из их кода. Для сайта появились два небольших самостоятельных плагина: интерактивное облако тегов и собственная форма обратной связи.

Старые комментарии сохранены как часть материалов, но добавление новых отключено. Из базы формы обратной связи были удалены накопившиеся за годы тысячи спам-сообщений. Новая форма использует капчу, скрытое поле-приманку и ограничение частоты отправок. Сообщение сохраняется в базе на ограниченный срок, а его копия отправляется администратору по электронной почте.

Отдельно были исправлены русские подписи в теме, даты, футер, архивы, результаты поиска и отображение комментариев. Для фрагментов кода вернулось нормальное оформление с моноширинным шрифтом и номерами строк. Миниатюры статей теперь ведут к самой статье, а не открывают бесполезную увеличенную копию изображения.

Сайт получил векторный логотип и корректную иконку, адаптацию для мобильных экранов, автоматические описания страниц архивов и меток, а также счётчик Яндекс Метрики. Это не превращает старую тему в современный дизайн с нуля, но делает её аккуратнее и пригоднее для нынешних браузеров и поисковых систем.

Изменилась и серверная часть. Конфигурация хранится отдельно от содержимого сайта, секреты не попадают в репозиторий, база данных не публикуется в интернет. Caddy принимает веб-трафик и автоматически продлевает HTTPS-сертификаты. Доступ к административной панели можно ограничить доверенными адресами и сетями. Для файлов и базы подготовлены сценарии резервного копирования, восстановления и переноса на другой сервер.

В результате получился не просто сайт, который однажды удалось запустить, а воспроизводимая схема: её можно проверить локально, развернуть на новом сервере и восстановить из резервной копии.

О работе с ИИ

Для такого проекта ИИ оказался особенно полезен не потому, что написал много нового кода. Основная работа напоминала техническую археологию: прочитать чужой код пятнадцатилетней давности, понять его намерение, найти несовместимость, сопоставить её с журналами и аккуратно изменить только необходимое. Человеку такая работа быстро становится утомительной. Codex мог последовательно просматривать десятки файлов, искать одинаковые конструкции, сравнивать настройки, готовить сценарии миграции и одновременно вести техническую документацию. Он заметно ускорил путь от сообщения «здесь пустая страница» до конкретной причины в старом PHP или JavaScript. Но этот опыт не подтвердил идею, что ИИ можно просто оставить наедине с проектом. Ему требовалась обратная связь: как выглядит страница, соответствует ли результат оригиналу, действительно ли письмо пришло, не сломалась ли мобильная версия. Иногда он исправлял техническую проблему, но предлагал визуальное решение, которое мне не нравилось. Иногда новая правка обнаруживала более старую скрытую ошибку. Лучше всего сработало разделение ролей. Я определял, что важно сохранить, проверял сайт глазами пользователя и принимал решения. Codex быстро исследовал техническую часть, выполнял рутинную работу и фиксировал результат. Без одного из этих участников итог был бы хуже.

Будущее

Я пока не готов сказать, что UCExpert снова будет обновляться. Моя работа изменилась, а вместе с ней изменился и набор тем, о которых я могу писать на основании реального опыта.

Да и формат технической информации становится другим. Краткую справку, типовую конфигурацию или объяснение протокола сегодня действительно проще получить у ИИ. Вероятно, доля статей, которые лишь пересказывают документацию, будет уменьшаться. Но это не означает, что писать больше незачем. Скорее, возрастает ценность материалов, в которых есть личный опыт, проверяемый результат и контекст. ИИ может объяснить, как в общем случае обновляется WordPress, но сам по себе он не знает историю конкретного старого сайта, не видел его ошибок и не принимал решений о том, что стоит сохранить. Пока кто-то не опишет такой опыт, обобщать будет нечего.

Я не столько «вернул блог», сколько снова сделал продолжение возможным. Сайт больше не держится на версии PHP десятилетней давности, его можно резервировать, переносить и обновлять. А будет ли здесь следующая статья и о чём она окажется — теперь это снова содержательный вопрос, а не ограничение старого движка. UCExpert может оставаться живым архивом и иногда пополняться материалами, для которых у меня действительно есть собственные наблюдения. Эта статья — как раз один из таких материалов.

Теги: , , , ,