~ / blog

Блог — страница 2

Пишу о том, что делаю каждый день: скорость сайтов, кэш, обмен с 1С, серверы и WordPress без лишнего.

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

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

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

· · ·
#Серверы 3 мин

Сборка фронта на сервере: Node 20, зависший линтер и CI, который видит больше

Node 22 удалил синтаксис assert для JSON — сборка падает, помогает только Node 20 в контейнере. Прерванный eslint продолжает молотить в своём контейнере. А CI ловит ошибки, которых сборка на тесте не видит из-за lintDirtyModulesOnly.

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

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

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

· · ·
#Серверы 3 мин

Крон и консоль на виртуальном хостинге: «Минуты: 1» — это раз в час

Цифра в поле планировщика — момент, а не интервал; адрес в поле команды — не команда; php в консоли 5.6; защита от ботов перехватывает POST; mysqldump ругается, но делает дамп; сервер живёт по Москве. Три захода на одну задачу крона.

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

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

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

· · ·
#Серверы 3 мин

Половина медиапапки — миниатюры, которые сайт не показывает

WordPress режет каждую картинку на все зарегистрированные размеры: на одном каталоге это 6,39 ГБ из 12, три размера темы на 2,54 ГБ не читались нигде. Как посчитать у себя, почему сначала перестать плодить, что проверить до удаления — и +13 ГБ на другом сайте.

· · ·
#Серверы 5 мин

Почему почта и DNS не живут дома — и итог цикла про домашнюю инфраструктуру

Порт 25 открыт, Spamhaus чист, PTR сделают — и всё равно почту дома держать не стоит. Как проверять чёрные списки с контрольными адресами, почему авторитетный DNS дома хуже, чем кажется, и как переносить зону. Плюс итог 14 частей: где что молча не работало.

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

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

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

· · ·

$ tail -f /blog

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

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

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

или на почту

связаться

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