Больше года назад я запустил SVG4Читать полностью »
Больше года назад я запустил SVG4Читать полностью »
Несколько месяцев назад мне понадобилось заключить договор с водоканалом. Казалось бы, обычная бюрократическая задача: отправил документы, дождался ответа, подписал договор. На практике всё оказалось значительно веселее — ответа долго не было, сроки шли, а что делать дальше, было не совсем понятно.
Юриста у меня не было, зато был AI. Я загрузил документы, описал ситуацию и начал разбираться, какие вообще есть варианты дальнейших действий. В итоге с помощью AI подготовил несколько обращений и жалоб, после чего ситуация сдвинулась с места и договор со мной всё‑таки заключили.
С сериализацией всё вроде бы просто. Есть значение x, мы превращаем его в последовательность байт, передаём куда‑то ещё, а потом восстанавливаем:
x → encode → bytes → decode → x'
И первое, что хочется проверить:
decode(encode(x)) == x
Если получилось — значит, сериализация работает. По крайней мере, так кажется. Потому что в этой формуле есть одна маленькая деталь, которую легко не заметить: что именно означает ==?
Возьмём совершенно обычный Go‑код: a := &Node{Value: 42} и x := []*Node{a, a}.
Если вы держите on‑prem кластер на десятки или сотни нод, дальше можно не объяснять. Обновили CNI, или ядро, или драйвер сетевой карты, или просто переехали частью нод в новый сегмент. Проходит какое‑то время, и начинают капать тикеты: «у нас иногда таймаутит между подами», «DNS иногда не резолвится», «health‑check то падает, то нет».
В первую очередь статья (или статьи) написана ради комментариев, чтобы развлечь себя и читателя, но с надеждой получить какие‑то дельные советы и мнения по теме проекта.
Точкой старта работы над проектом можно считать день, когда Дедушка Мороз положил мне под ёлку набор «Робот‑автомобиль для Raspberry Pi 4B» от Keyestudio.
Год назад мой типичный пулл‑реквест писался руками часа три и ревьюился минут двадцать. Сейчас четыреста строк агент выдаёт за минуту, а ревью того же дифа занимает час: приходится вычитывать уверенно написанный чужой код, в котором ошибка выглядит ровно так же убедительно, как правильное решение. Узкое место переехало с набора кода на его проверку, и усилием воли оно не расширяется.
В августе у Google вышел текст о том, почему Go хорошо подходит для разработки с агентамиЧитать полностью »

Привет! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой рефакторинг в Читать полностью »

Объясню кэш через холодильник, а потом покажу, где эта аналогия ломается, и что с этим делают в проде.
Статья для тех, кто кэш уже ставил, но не разбирался, почему он иногда роняет сервис вместо того, чтобы его ускорять.
В начале августа я сел делать игру для мессенджера MAX – обычный вордли, слово из пяти букв, шесть попыток. Мини-приложение на ванильном JS, сервер на Go, самый дешёвый VPS. По моим прикидкам всё должно было заработать, за три вечера.
Первый вечер целиком ушёл на то, чтобы сервер вообще смог поговорить с API мессенджера. Не на игру, не на словарь, а на TCP-соединение.