golang
Запись в Kubernetes: как контроллеры учились не перезаписывать друг друга

Привет. В прошлой статье мы в основном говорили про чтение — кэш в controller-runtime, informer’ы, Reflector, DeltaFIFO, почему r.Get в реконсайле не ходит в apiserver. Сегодня поговорим больше про запись.Kubernetes по своей природе спроектирован так, что одним и тем же объектом могут управлять разные контроллеры — и это нормально. На один Deployment смотрят и deployment-controller (правит status), и HPA (правит spec.replicas), и admission-мутаторы (расставляют labels), и cert-manager (дописыва…

  • среда, 27 мая 2026 г. в 00:00:24
golang
Не наступайте на наши грабли, если собираетесь использовать Temporal

Всем привет! Меня зовут Миша, я разрабатываю платформу Яндекс Еды. В декабре я рассказывал, как Temporal без боли решает привычную проблему распределённой бизнес‑логики.В продолжение темы я задумал написать такую статью, которую мне самому хотелось бы прочитать перед тем, как мы начали миграцию на Temporal. Всё изложенное проверено на практике: процессинг заказов Яндекс Еды уже почти год работает целиком на Temporal. Об общих принципах работы с Temporal я уже рассказал в предыдущей статье, а зд…

  • среда, 27 мая 2026 г. в 00:00:23
golang
Практическое построение сервисов на Go под реальный трафик

Оптимизация кода сервисов на Go под реальную нагрузку Когда сервис на Go начинает «тормозить» под реальной нагрузкой, проблема почти всегда не в самом языке и даже не в алгоритмах. Чаще всего узкие места лежат на уровне работы с памятью, сериализации данных и неочевидных накладных расходов рантайма. Если сервис упирается в сеть, базу данных или внешние API — оптимизация кода даёт ограниченный эффект. Но в CPU-bound сценариях (парсинг JSON, агрегации, обработка данных) каждая лишняя аллокация и…

  • среда, 27 мая 2026 г. в 00:00:22
javascript
Веб-терминал для COM-порта без установки: подключается за 2 секунды

Web TerminalПолностью браузерный терминал для работы с последовательными портами (COM-портами). Не требует установки, работает прямо в Chrome или Edge. Весь код одним файлом. Не требует компиляции и сборки, легко править обычным блокнотом — открыл и работаешь. Работает на JavaScript и Web Serial API.Быстро подключается к портуНе нужно узнавать номер COM-порта в диспетчере устройств и вводить его вручную. Просто нажмите «Подключить» — браузер сам покажет список всех доступных последовательных по…

  • среда, 27 мая 2026 г. в 00:00:20
javascript
@tanstack/vue-table: почему я почти отказался от этого…

Привет. Недавно пришлось повозиться с @tanstack/vue-table. Задача была стандартная: нужна таблица с сортировкой, фильтрами и редактированием ячеек. Казалось бы - идеальное время подключить готовое решение. Но не всё так гладко. Делюсь мыслями, граблями и тем, как я в итоге выкрутился. Что это вообще такоеЕсли коротко: это headless-библиотека. То есть она даёт логику, а как это будет выглядеть - решаешь ты сам. Никаких готовых тем, никаких дефолтных стилей. Полный контроль, но и вся ответственн…

  • среда, 27 мая 2026 г. в 00:00:18
javascript
Capacitor: от веба к мобильным приложениям. Часть 4. Интегрируем локальный LLM в проект

Привет, Хабр! Продолжаем серию статей о разработке мобильных приложений с помощью Capacitor. Если вы не читали предыдущие части, лучше начать с них:Часть 0. Зачем нужен CapacitorЧасть 1. Миграция проекта на CapacitorЧасть 2: Как написать свой плагинЧасть 3: OTA-обновленияВ этой части разберём, как запустить языковую модель прямо на телефоне — без сервера, без API-ключей и без постоянного интернета.Зачем локальный AIНа первый взгляд может показаться, что локальная модель на телефоне — это лишняя…

  • среда, 27 мая 2026 г. в 00:00:17
javascript
Как уместить DOOM в QR-код

DOOM известен тем, что запускается где угодно – различные порты игры появляются с 1993 года. Мем «It Runs Doom» живёт в интернете уже больше десяти лет. Люди запускали DOOM на тостерах, на тачбарах макбуков, на умных холодильниках.И, кажется, я – первый человек, который засунул DOOM в QR-код.Абсурдная постановка задачиQR-код может хранить до ~3 КБ текстовых и бинарных данных. Для сравнения:Этот абзац до текущего момента весит около 0,4 КБ.Спрайт «chaingun» из оригинального DOOM – 1,2 КБ.Моя цел…

  • среда, 27 мая 2026 г. в 00:00:15
javascript
Как я хотел две странички для SAMBA и NFS, а сделал полноценную панель управления NAS на 20+ страни…

Предупреждение сразу: я не программист. Код мог быть красивее, архитектура — стройнее. Но моя задача была другой — сделать удобный инструмент для себя как для системного администратора. Получилось то, что получилось. Не судите строго, это бета.С чего всё началосьПоявилось у меня свободное время. Лежал у меня старенький Netgear Stora MS2000 — когда-то ставил на него Debian 7 и OpenMediaVault. Потом рухнул диск, переставил я Debian 9, а вот OMV для этого железа уже оказался слишком тяжёлым.Конфиг…

  • среда, 27 мая 2026 г. в 00:00:14
javascript
Как я сделал «клик по элементу → открыть в VS Code» за один вечер

Началось всё банально. Зашёл коллега, говорит: «Где у нас хлебные крошки в шапке лежат?». Проект — около 150 компонентов, всё именуется по-своему, структура папок местами загадочная. Я начал тыкать в React DevTools, искать по тексту «Breadcrumb» в файлах… В общем, минут через пять нашёл. Это в очередной раз раздражало.Так появился vite-plugin-debug-meta — плагин, который позволяет зажать Ctrl + Shift, навести на любой элемент в браузере, кликнуть — и нужный файл откроется в редакторе на нужной …

  • среда, 27 мая 2026 г. в 00:00:08