Обновить

Все потоки

Сначала показывать
Порог рейтинга
Уровень сложности

Приложение течёт, а утечки нет: как оптимизатор картинок Next.js съел 4-гигабайтный VPS

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.5K

История про то, как я три дня искал утечку памяти в Node-приложении, не нашёл — и был прав, что не нашёл. А ещё про то, что у каждого починенного пункта тут оказывался свой счёт: фикс памяти через месяц вернулся жалобой на скорость, а разбор скорости вскрыл третью проблему, о которой я не думал вовсе.

Читать далее

У nginx сжатие заголовков одностороннее

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели8.1K

Стенд: один nginx, одно HTTP/3-соединение, четыре одинаковых запроса подряд. Меряем размер сжатого блока заголовков в обе стороны.

Ответ (nginx → клиент): 131, 131, 131, 131 байт. Запрос (клиент → nginx): 246, 8, 8, 8.

Ответ — константа: сколько запросов ни повтори, столько же байт. Запрос со второго раза схлопывается в тридцать раз. В HTTP/2 к тому же серверу — та же константа.

Между тем динамическая таблица HPACK и QPACK и есть половина смысла обоих протоколов: повторяющийся заголовок отправляется один раз, дальше идут ссылки на номер. Клиент ей пользуется. Сервер не пользуется ни в одном из двух — в HTTP/2 выставляет её размер в ноль, в HTTP/3 не открывает encoder-поток вовсе.

Разбор по фиксированным тегам: nginx 1.31.3, quic-go, Cloudflare quiche, ls-qpack, Google QUICHE. Две реализации из пяти таблицу всё-таки ведут. И приёмная половина — та, которой сервер сам не пользуется, но обязан обслуживать, — в мае принесла nginx use-after-free с оценкой 9.2.

Читать далее

Я заменил разработчиков нейронкой — и не пожалел. Простите

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели55K

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

Во-первых, потому что мир меняется, нейронки с каждым годом становятся все умнее — намечается некий тренд на изменение самой сути работы многих специалистов. Во-вторых, это несправедливо, что на Хабре есть тысячи статей о тупости ИИ и превосходстве людей над машинами, но так мало статей с противоположным мнением.

Читать далее

IQ и его термиты. Сотни тысяч умных детей и один неудобный вопрос

Уровень сложностиПростой
Время на прочтение24 мин
Охват и читатели7.7K

IQ — штука, которой принято либо хвастаться, либо доказывать, что это полная ерунда. Причём и то, и другое обычно делают люди, не открывавшие ни одной работы по теме. И вот что странно: про самый крупный и самый долгий эксперимент по изучению интеллекта на Хабре почти ничего нет.

Одна небольшая статья его вскользь упоминает — и, разумеется, проходит мимо самого интересного.

Сейчас исправим. Но сначала честно расставим гирьки на весах, иначе финал не сработает.

Читать далее

Что такое Harness и с какими моделями его едят?

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.5K

Сегодня, 13 августа DeepSeek выложил DeepSeek Harness v0.1 в Developer Preview. Открытый код, MIT, пакет @deepseek-ai/dsh в npm, запуск в одну строку.

Нюхаем, что вообще такое harness, какие виды его бывают и пытаемся разобраться зачем он нужен.

Выбрать свой молоток

Выбор платформы виртуализации для малых инсталляций

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.5K

Сегодня даже для небольшого бизнеса или образовательного учреждения «сервер» редко представляет собой одну физическую машину. Чаще в эту сущность упаковывают понятийно сразу несколько сервисов: файловое хранилище, веб‑сервер, базу данных и пр. Потому что запускать каждую службу на отдельном «железе» дорого, неэффективно и сложно в обслуживании. В этом случае на помощь приходит виртуализация — технология, позволяющая создать несколько изолированных виртуальных машин (ВМ) на одном физическом сервере.

Как выбрать правильную платформу, особенно когда у вас нет отдельного штата ИТ‑инженеров и огромного бюджета?

В нашей статье мы разберём ключевые критерии, на которые стоит обратить внимание при выборе системы виртуализации.

Читать далее

Почему кросс-постинг в соцсети оказался задачей про state, idempotency и битую кириллицу

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели7K

В какой-то момент у меня появилась задача от маркетинга автоматизировать кросс-постинг статей в соц.сети и, в принципе, задача довольно понятная и здравая.

Запрос был такой - сделать короткий анонс из готовой статьи в блоге для размещения в соц.сети, подготовить рерайты для площадок, прикрепить картинку, поставить UTM-метки и опубликовать все по каналам. 

Т.к. задача рутинная, сразу возникла идея отдать ее агенту.
То есть, на входе статья в блоге, а на выходе Google Doc с короткими анонсами, рерайтами для Дзена и Spark, а далее публикация в Telegram и отложенные посты для остальных социальных сетей.

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

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

Читать далее

Один DNS‑запрос породил 329 запросов. Я полез разбираться, куда они все ушли

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.4K

Один DNS‑запрос. Пустой кеш. И 329 исходящих запросов вслед за ним.

Сначала я решил, что где‑то неправильно понял цифры. Потом полез разбираться и выяснил, что recursive resolver внутри делает намного больше работы, чем видно по обычному dig.

Разбираю, откуда берутся эти сотни запросов, при чём здесь CNAME, glue, DNSSEC, IPv6 PTR и почему разные версии BIND на одном и том же запросе могут отличаться почти в три раза.

Читать далее

От десктопа к Android и в роутеры

Время на прочтение8 мин
Охват и читатели7.2K

MASQUE — туннель, неотличимый от обычного HTTPS-трафика к Cloudflare, постквантовый VLESS, AmneziaWG, дотянутый до эталона. Всё это теперь не только в телефоне, но и прямо на роутере: отдельный Wi-Fi, весь трафик которого уходит в туннель. Рассказываю, как мое ядро sing-box-lx до этого доросло

Читать далее

Пенсия всё позже, а карьерный потолок всё раньше. Где работать человеку после 45?

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели5.7K

Давайте представим 45-летнего специалиста: обычный спец, не руководитель. Если это будет мужчина, то в текущих реалиях до пенсионного возраста ему ещё 20 лет. Если женщина, то 15. А с 2028 года общий пенсионный возраст составит 65 и 60 лет соответственно.

Много еще работы впереди, но именно где-то в этом возрасте сменить работодателя или профессию становится заметно сложнее.

Читать далее

От спанов к сценарию агента: зачем мы добавили GenAI-представление трейса

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.1K

Трейс ИИ-агента можно открыть в обычном "дереве" и найти медленный вызов или спан с ошибкой. Но по дереву трудно восстановить логику запуска: сколько раз агент обращался к модели, какие инструменты вызывал, где повторил шаг и какой ответ в итоге увидел пользователь.

В Proto Observability Platform уже были дерево, граф, флейм-граф и другие представления трейса. Они продолжали решать инфраструктурные задачи, но ответы о поведении агента приходилось собирать вручную из десятков спанов, транспортных вызовов и повторяющихся тел сообщений. Мы увидели это сначала на OpenTelemetry Demo 3.0, затем при отладке собственного «AI-аналитика» в связке с нашим MCP-сервером.

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

Читать далее

Красное не мёржим: как мы внедрили e2e тесты в разработку

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6K

Можно ли сделать e2e тесты мощным инструментом раннего отлова багов, не потопив при этом CI и не всем не разругавшись?

Рассказываю, через что пришлось пройти, чтобы релизы были спокойные, пайплайны — зеленые, разработчики — довольные.

Как мы это внедряли, сколько сопротивления получили и что из этого выжило спустя четыре месяца.

Читать далее

SOLID в реальном мире: LSP без квадратов и прямоугольников

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели5.9K

SOLID в реальном мире: LSP без квадратов и прямоугольников Дисклеймер: статья для разработчиков уровня junior и middle, которые знакомятся с принципами чистого кода и SOLID. Примеры кода — PHP 8.1+.

Читать далее

Ближайшие события

ПЛК перестает быть закрытой коробкой. Зачем контроллеру Linux?

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели6.1K

Когда мы говорим про ПЛК, обычно представляем достаточно закрытое устройство: подключили модули ввода-вывода, написали программу на ST или LD, загрузили проект - и контроллер годами выполняет один и тот же цикл.

Но современные контроллеры все чаще совмещают PLC-runtime и Linux-среду, в которой можно запускать базы данных, MQTT, VPN, приложения на Python и C++, web-сервисы и даже контейнеры. Разберемся, зачем производители идут в эту сторону, что такая архитектура дает пользователю и какие новые риски создает.

Читать далее

Роботы сожрали интернет, пока мы спали. И это вообще не метафора

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7K

99% посетителей сайта — НЕ ЛЮДИ.

И это не «подозрительный трафик», а буквально: из 1,28 миллиона отданных страниц живые люди посмотрели меньше шести тысяч. Чувак, который это заметил (разработчик благотворительной базы PatronView) — вывел формулу: на каждую страницу, увиденную человеком, приходится ещё ≋214 загрузок, которые никто никогда не увидит. Ну то есть вообще никто. Новая норма, просто не все ещё заметили что декорации сменились.

Дальше будет куча цифр, немного паранойи и шрифт, который врёт роботам в лицо.

Читать далее

Пирамида тестирования Avalonia-приложений на практике: 10 380 тестов на четырёх ОС перед каждым релизом

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.5K

Интуитивно любой разработчик понимает: чтобы выпуски проходили спокойно, нужно написать автоматизированные тесты. Чем больше тестов, тем спокойнее проходят выпуски. Или нет?)) В этой статье я поделюсь нашим опытом построения пирамиды тестирования. Надеюсь, что она понравится читателям и станет первой из цикла статей об автоматизированном тестировании. Нам есть что рассказать!

Читать далее

Как выбор двух мониторов превратился в собственный RDP/SSH‑клиент для macOS

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.8K

Когда я перешёл на Mac, мне казалось, что с удалённой работой проблем не будет. RDP существует много лет, клиентов для macOS хватает, а подключение к Windows — давно решённая задача.

Проблема обнаружилась в тот момент, когда я подключил к MacBook внешний монитор.

Мне хотелось самостоятельно указать, на каких физических дисплеях должна открываться удалённая Windows‑сессия. Например, отдать под неё один или два внешних монитора, а экран ноутбука оставить macOS. Или, наоборот, запустить Windows только на встроенном дисплее. Я перебрал доступные варианты, но не нашёл приложения, в котором можно было бы нормально настроить такую схему: не просто включить режим «использовать все мониторы», а сопоставить физические дисплеи macOS с виртуальной раскладкой Windows.

Так появился первый прототип будущего Selective Remote.

Читать далее

AI слушает звонки, сверяет CRM и ничего не меняет: как я собрал QA-агента через MCP

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.9K

Сколько бы правил валидации я ни закладывал в CRM, они всегда упираются в один тупик: классическая логика умеет проверять процесс, но не умеет понимать контекст.

Обязательные поля заполнены, SLA соблюдён, формальный порядок сохранён — для детерминированных правил CRM всё идеально. Но что на самом деле произошло в коммуникации и почему лид оказался в «корзине», жесткие if/else увидеть не способны. Свести сложный человеческий диалог к SQL-условию без ложных срабатываний невозможно.

Появление LLM и стандартов вроде MCP дало инструмент, который наконец-то умеет работать с неструктурированным смыслом. В ESM-CRM я добавил второй слой контроля: AI QA разбирает контекст, сверяет его с реальным статусом и передает подозрительные кейсы руководителю.

При этом я сразу зафиксировал жесткое архитектурное ограничение: AI только подсвечивает аномалии, но принципиально не имеет права менять данные в CRM.

В статье пошагово разбираю всю цепочку: от сборки MCP-сервера и подключения к Yandex AI Studio до асинхронных воркеров, валидации JSON-схем и логики event-driven запуска.

Читать далее

Как выбрать норму управляемости в IT без перегруза руководителей

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели6.3K

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

Разобраться подробнее

Зачем вести базу знаний, если ты не блогер и не спикер

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.6K

Привет, %username%! Знакомая, которая к IT никакого отношения не имеет, спросила: «А для чего мне вести свою базу знаний?» И я завис. Не потому что нечего ответить, а потому что все мои заготовленные ответы оказались профессиональными: писать в блог, готовить доклады, расти в квалификации, держать в порядке рабочий контекст. Ей это всё не нужно. Она не пишет статей, не выступает на конференциях и не собирается.

Пришлось отвечать заново. И ответ оказался короче, чем всё, что я до этого рассказывал на эту тему:

База знаний нужна тому, кто хочет разобраться в своей голове, а не тому, кто хочет всё запомнить.

Дальше — почему «чтобы ничего не забывать» плохая цель, при чём тут письмо и картина мира, три правила, которых хватает на старте, и как не собрать чулан Плюшкина. Работает это одинаково для айтишника и для человека, который слово «репозиторий» слышал только от меня, разница будет в примерах.

Читать далее