Технология eBPF — интересная штука. С её помощью можно без труда внедрять в ядро Linux фрагменты кода, которые затем компилируются в коды операций (опкоды), которые гарантированно не обрушат работу ядра. Набор допустимых инструкций ограничен, переходы назад не допускаются (поэтому не будет никаких неопределённых циклов). При этом вы не можете разыменовывать указатели, но вместо этого можете выполнять проверяемые операции считывания через указатели, которые потенциально могут оказаться неудачным…
Паттерны конкурентности в Go. Подробный разбор. Часть 1. Worker poolПаттерны конкурентности в Go. Подробный разбор. Часть 2. Fan-Out/Fan-InPub/SubPub/sub, сокращение от «publish-subscribe» (публикация-подписка), — это паттерн обмена сообщениями между различными частями приложения. Прелесть такого подхода в том, что отправитель сообщения не знает о получателе, а получатель не знает об отправителе. Оба они знают только об одном посреднике — брокере сообщений. Отправитель публикует сообщение, а по…
Хочу поделиться историей о том, как вайб-кодинг решил мою вполне реальную инженерную боль. Без пафоса, без “я построил SaaS стартап за вечер” — просто задача, Claude и пару вечеров свободного времени.Делюсь мыслями о работе, жизни и небольшими наблюдениями из будней разработчика в своём Telegram-каналеПосле показа драфта статьи Николай М. подсказал готовый репозиторий GitHub Action для деплоя Serverless Container в Yandex Cloud, который решает проблему с автоматизацией. Этот факт меня не остано…
Меня зовут Сергей, я разработчик в «Финаме». Торгую на бирже около четырех лет. Большую часть дня провожу в терминале - пишу код, деплою, работаю с инструментами. И в какой-то момент заметил нестыковку: все мое рабочее пространство уже в консоли, кроме одной вещи - торгового терминала.Так появился Finam Terminal - TUI-клиент с открытым кодом для торговли через API брокера «Финам». Написан на Go в свободное время, работает прямо в консоли, весит ~24 МБ. В этой статье расскажу, зачем он нужен, ка…
Я написал сервис мониторинга сайтов. Проверяю доступность из 10 точек мира, шлю алерты в Telegram, Slack, на почту. Есть бесплатный план, платные тарифы, status-страницы, SSL-мониторинг, серверный агент — всё как у больших.Дашборд с мониторингом конкретного сайта.Тут не будет универсальных советов «как выбрать стек для стартапа». Просто мой опыт: что взял, почему, и что бы поменял.Бэкенд: FastAPIВыбирал между Django, Flask и FastAPI. Django отпал сразу — мне не нужен его ORM (я хотел async), не…
Или что происходит, когда AI-агенты сами ведут спринт-бордКанбан-бордДисклеймер: оригинал статьи написан автором для medium.com на английском языке. Для адаптации на русский язык использовалась помощь AI.Есть такой момент, знакомый каждому, кто долго работает в паре с AI. Сидишь в терминале, Claude генерит код, ты ревьюишь, правишь курс, снова запускаешь. Проходит пара часов, и ты понимаешь: никто не записал, что вообще произошло.Ни один тикет не обновлен. Таймер не запущен. Чат на тысячу строк…
OpenClaw — Node.js. Это значит: установи Node, установи npm, склонируй репо, npm install, подожди пока 800 МБ node_modules скачается, настрой конфиг, запусти. Если что-то сломалось — разбирайся с версиями Node, конфликтами зависимостей, нативными модулями.Кто-то посмотрел на это и решил переписать всё на Go. Результат — GoClaw: один бинарный файл на 35 МБ, который скачал, дал права на запуск и работаешь. Никаких зависимостей, никакого рантайма, никаких node_modules.Разбираю, что внутри и имеет …
Нет повести печальнее на свете, чем повесть о лежачем алерте.Pusk — self‑hosted сервер алертов на 16 МБ. Один бинарник, без внешних сервисов, частично совместим с Telegram Bot API (13 методов из 80+).Типичная ситуация: несколько серверов, Zabbix собирает метрики, Python‑боты шлют алерты в Telegram. У кого‑то это веб‑проект, у кого‑то видеонаблюдение, у кого‑то живые эфиры, где 2 минуты без алерта = зрители видят чёрный экран. Работало годами. А потом канал до API отвалился. Причина неважна — ли…
Для тех кому лень читать и хочется сразу потрогать вот Github.Откуда задачаПеред командой встала типичная для высоконагруженных сервисов постановка по обработке сообщений:Порядок обработки в рамках одной логической партиции — события по одному пользователю/сущности должны идти строго последовательно.Очень много ключей партиций — сотни тысяч и выше; заводить под каждую ключ отдельную «очередь» в классическом смысле неразумно.Ограниченный пул воркеров, который шарится между партициями, при этом о…