~ / blog / series / masterskaya-razrabotchika

Мастерская разработчика

Цикл о собственных инструментах вокруг сайтов — Telegram-бот вместо личного ника, свой сервер обновлений плагинов, зонд вёрстки на Chrome DevTools Protocol — и о том, как не обмануть себя замером.

#Разработка 4 мин

Telegram-бот вместо личного ника: посетитель → группа → ответ

Посетитель пишет боту, сообщение уходит в рабочую группу, ответ реплаем бот копирует обратно. Карта «сообщение → посетитель», copyMessage вместо пересылки, режим приватности, лимит 30 в час и переписка в админке — 250 строк в теме WordPress, без вебхука.

· · ·
#Разработка 4 мин

Свой сервер обновлений плагинов: Update URI и update_plugins_{домен}

С WordPress 5.8 плагин с Update URI не сверяется с каталогом, а спрашивает фильтр update_plugins_{домен}. Клиент на 120 строк: проверка версии, окно «Подробнее» через plugins_api, кэш 12 часов и час на ошибку, номер редакции в имени класса.

· · ·
#Разработка 4 мин

Релиз плагина из CI и учёт установок без адресов сайтов

Сервер обновлений как плагин к сайту: релиз одной командой curl с токеном через hash_equals, версия и требования из самого архива, отказ без Update URI, X-Accel-Expires мимо кэша, атомарный счётчик скачиваний и число сайтов по хэшу адреса из User-Agent.

· · ·
#Разработка 4 мин

Зонд вёрстки без расширений: headless Chrome через CDP на Python

Клик, прокрутка к блоку, размеры и стили, колесо и перетаскивание — через Chrome DevTools Protocol и websocket-client, без Puppeteer. Скелет на 50 строк, четыре условия, без которых зонд получает другую страницу, подмена ответов через Fetch и 7 ГБ забытых профилей.

· · ·
#Разработка 3 мин

Скрипт поправил две строки и сломал файл: усечение, CRLF и BOM

open("w") обнуляет файл до записи — упавший print стёр 685 строк. Текстовый режим Python на Windows переписал переводы строк, и сборка упала на 181 ошибку prettier, не пересобрав JS. PowerShell 5.1 дописал BOM, и Python не запустился. Атомарная запись и три проверки.

· · ·
#Разработка 4 мин

Замер, который ничего не мерил: шесть красивых чисел

Четыре прогона по 0,0 с — воркер упирался в замок. 679 из 679 холодных — не тот тип аргумента. Ноль совпадений — шаблон не понял [400]. Таймаут head -c на сокете, символы вместо байтов и ручные прогоны вместо крона. И семь вопросов к любому замеру.

· · ·
#Разработка 5 мин

Проверка, которая не идёт путём пользователя

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

· · ·

$ tail -f /blog

Не пропустите новые статьи

Пишу разборы по скорости сайтов, кэшу и разработке — на живых проектах и с цифрами. Подпишитесь, и ссылка на новую статью придёт сразу после выхода. Без рекламы и спама, отписаться — в один клик.

В Telegramодна кнопка «Старт» в боте

или на почту

связаться

Расскажите о задаче