Код и Капуста
Open in Telegram
Авторский канал с интересными ссылками про разработку на Go, Rust, Godot, Flutter, Android, iOS, Aurora. Все ссылки тут https://kodikapusta.ru/ Читать канал в max https://vk.cc/cVOWSP Для связи @akovardin Поддержать канал https://boosty.to/kodikapusta
Show more1 673
Subscribers
-524 hours
-97 days
-530 days
Data loading in progress...
Similar Channels
Tags Cloud
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
September '26
September '26
+2
in 1 channels
August '26
+31
in 1 channels
Get PRO
July '26
+44
in 2 channels
Get PRO
June '26
+66
in 1 channels
Get PRO
May '26
+31
in 1 channels
Get PRO
April '26
+42
in 2 channels
Get PRO
March '26
+33
in 2 channels
Get PRO
February '26
+54
in 2 channels
Get PRO
January '26
+36
in 1 channels
Get PRO
December '25
+43
in 2 channels
Get PRO
November '25
+41
in 2 channels
Get PRO
October '25
+54
in 1 channels
Get PRO
September '25
+36
in 2 channels
Get PRO
August '25
+34
in 3 channels
Get PRO
July '25
+42
in 2 channels
Get PRO
June '25
+39
in 2 channels
Get PRO
May '25
+111
in 5 channels
Get PRO
April '25
+55
in 1 channels
Get PRO
March '25
+72
in 2 channels
Get PRO
February '25
+62
in 1 channels
Get PRO
January '25
+73
in 3 channels
Get PRO
December '24
+37
in 1 channels
Get PRO
November '24
+53
in 1 channels
Get PRO
October '24
+75
in 2 channels
Get PRO
September '24
+96
in 2 channels
Get PRO
August '24
+75
in 2 channels
Get PRO
July '24
+57
in 4 channels
Get PRO
June '24
+41
in 3 channels
Get PRO
May '24
+33
in 2 channels
Get PRO
April '24
+46
in 2 channels
Get PRO
March '24
+41
in 1 channels
Get PRO
February '24
+38
in 2 channels
Get PRO
January '24
+70
in 2 channels
Get PRO
December '23
+57
in 2 channels
Get PRO
November '23
+68
in 3 channels
Get PRO
October '23
+30
in 4 channels
Get PRO
September '23
+6
in 0 channels
Get PRO
August '23
+5
in 0 channels
Get PRO
July '23
+26
in 0 channels
Get PRO
June '23
+25
in 0 channels
Get PRO
May '23
+42
in 0 channels
Get PRO
April '23
+27
in 0 channels
Get PRO
March '23
+62
in 0 channels
Get PRO
February '23
+38
in 0 channels
Get PRO
January '23
+76
in 0 channels
Get PRO
December '22
+42
in 0 channels
Get PRO
November '22
+31
in 0 channels
Get PRO
October '22
+49
in 0 channels
Get PRO
September '22
+31
in 0 channels
Get PRO
August '22
+21
in 0 channels
Get PRO
July '22
+9
in 0 channels
Get PRO
June '22
+32
in 0 channels
Get PRO
May '22
+16
in 0 channels
Get PRO
April '22
+223
in 0 channels
| Date | Subscriber Growth | Mentions | Channels | |
| 06 September | 0 | |||
| 05 September | +1 | |||
| 04 September | 0 | |||
| 03 September | +1 | |||
| 02 September | 0 | |||
| 01 September | 0 |
Channel Posts
Офис на заднем дворе
#fun
Чувак делится опытом постройки офиса на заднем дворе. Проект обошёлся примерно в $19 478, что вдвое-втрое дешевле готового решения или найма строительной компании.
Автор рекомендует ставить больше розеток, чем кажется необходимым, тщательно продумывать ориентацию и расположение окон, а также следить за уровнем CO₂ в герметичном помещении.
У меня будет такой же офис
https://kodikapusta.ru/news/1205-ofis-na-zadnem-dvore
Поддержать проект на boosty и читать в MAX
| 2 | учите С - https://www.youtube.com/watch?v=vhgI_F-WMwA | 282 |
| 3 | DDD во времена AI
#golang #ai
Статья утверждает, что с ростом AI-кодинга идеи Domain-Driven Design становятся еще актуальнее
DDD никогда не был строго про код - главная сложность всегда заключалась в понимании предметной области и ее моделировании. Автор подчеркивает, что доменная модель - это не артефакт. Даже если ИИ-агент сгенерирует внушительный документ или план, это не поможет команде понять бизнес-задачу, а ценность knowledge crunching в том, чтобы самому разобраться в домене и уметь судить, осмысленен ли результат агента. Полностью пожжерживаю автора в этом
Он советует проектировать решение командой до написания кода, использовать ограниченные контексты для точных имен и точных промптов, а не делегировать мышление ИИ. Иначе некому будет оценить корректность результата.
Даже если весь код пишет ИИ, инженеру нужно глубоко знать домен, чтобы направлять агента, как напарника. Аминь
https://kodikapusta.ru/news/1202-ddd-vo-vremena-ai
Поддержать проект на boosty и читать в MAX | 303 |
| 4 | TUIOS
#golang #fun
Современный терминальный мультиплексор и оконный менеджер, написанный на Go, с vim-подобным модальным интерфейсом, несколькими панелями, 9 воркспейсами, BSP-тайлингом, поддержкой kitty graphics protocol и командной палитрой - все внутри существующего терминала. Построен на Charm-стеке
Ну это прикольно
https://kodikapusta.ru/tools/55-tuios
Поддержать проект на boosty и читать в MAX | 399 |
| 5 | Введение в Racket
#lang
Нового языка на сегодня нет, но есть интересный вариант лиспа - Racket. К лиспам я вобще с трепетом отношусь, но никак не хватает времени со всем разобраться
Это дружелюбное введение в язык Racket для начинающих. Статья кратко излагает историю: от Лиспа 1958 года и Джона Маккарти через Scheme 1975 к Racket 2010. Автор отмечает, что многие "современные" идеи - сборка мусора, функции первого класса, REPL, условные выражения гомоиконность - родились именно в Лиспе.
Racket - "язык для создания языков", где синтаксис принадлежит программисту
https://kodikapusta.ru/news/1206-vvedenie-v-racket
Поддержать проект на boosty и читать в MAX | 309 |
| 6 | Оптимизация DNS-кэша
#rust #net
Ребята из Cloudflare рассказывают, как пять последовательных оптимизаций раскладки DNS-кэша Big Pineapple сократили потребление памяти на запись на 56% - с 953 до 420 байт. Освободили около 100 терабайт ОЗУ по всем машинам, а также ускорили кэш.
Они сделали замену Vec/String на Box<[T]>/Box<str>, объединенили три списка секций ответа в один с 2-байтовыми смещениями вместо указателей, отказались от хранения owner-имени записи, когда оно совпадает с запрошенным доменом, упаковали маленькие варианты enum RecordData inline с боксом крупных, и наконец реализовали хранение данных записей в сыром wire-формате единым Box<[u8]>
При масштабе в 250+ миллиардов записей экономия даже одного байта на запись дает гигабайты памяти, и круто что экономию памяти удалось совместить с ростом производительности
https://kodikapusta.ru/news/1204-optimizatsiia-dns-kesha
Поддержать проект на boosty и читать в MAX | 300 |
| 7 | resterm
#golang #tools
Терминальный API-клиент и "workbench" для REST, GraphQL, gRPC, WebSocket и SSE, построенный вокруг простых файлов .http/.rest, которые можно diff'ить и хранить в git.
В отличие от Postman, автоматизация живёт прямо в файлах запросов через директивы, плюс собственный язык выражений RestermScript с хуками на JavaScript. Есть встроенная авторизация, SSH-туннели и Kubernetes port-forward, мок-серверы с правилами сопоставления и верификацией вызовов, трейсинг/таймлайн с экспортом в OpenTelemetry, профилирование и сравнение прогонов, импорт OpenAPI и curl-команд. Все локально, без облака и телеметрии, и с явной позицией "никакой интеграции ИИ"
https://kodikapusta.ru/tools/54-resterm
Поддержать проект на boosty и читать в MAX | 419 |
| 8 | Конкурентный сервер на Go
#golang #learn
Это восьмая часть серии о конкурентных сетевых серверах, в этот раз посвященная Go. В прошлый раз было про Rust
Автор показывает, как язык решает описанные ранее задачи. Статья начинается с последовательного сервера с state machine, затем показывает конкурентную версию с одной горутиной на клиента.
Для ограничения параллелизма предлагаются счетный семафор на канале и паттерн воркер пул, когда нужно сохранять состояние между задачами.
Логично, что в Go почти никогда не нужно прибегать к async/event-driven программированию, потому что конкурентность встроена в язык и рантайм. Но интересно смотреть в сравнении с другими языками
https://kodikapusta.ru/news/1203-konkurentnyi-server-na-go
Поддержать проект на boosty и читать в MAX | 756 |
| 9 | Горутины повсюду
#golang
Частенько мы пишем Go-сервисы, не задумываясь о том, кто и как запускает наши горутины. Возникает феномен "случайного рантайма приложения": когда Go-сервис обрастает множеством долгоживущих горутин, их время жизни и связи оказываются неявно размазанными по коду инициализации. Это становится особенно очевидным, когда нужно реализовать graceful shutdown.
Автор на примере сервиса для 3D-принт-фермы показывает, как выделить конкурентные компоненты в явные модули с помощью небольшой библиотеки backplane. Каждый модуль - это обычная функция вида func(ctx context.Context, deps ...interface{}) error, где каналы задают потоки сообщений, а всё остальное - ресурсы.
Когда в приложении появляется несколько долгоживущих конкурентных компонентов, их архитектура заслуживает явного представления в коде, а не существования лишь в виде побочных эффектов при запуске
https://kodikapusta.ru/news/1199-gorutiny-vezde
Поддержать проект на boosty и читать в MAX | 317 |
| 10 | safebucket
#tools #golang
Селфхостед платформа для обмена файлами, написанная на Go и React, с подключаемой инфраструктурой, где файлы идут в обход сервера через presigned-URL.
Ключевые возможности:
- прямые загрузки/скачивания мимо сервера,
- заменяемые компоненты,
- SSO через любой OIDC-провайдер плюс локальная авторизация,
- ролевой доступ на уровне платформы и «бакета»,
- публичный шеринг ссылками с опциями
И еще многое другое
https://kodikapusta.ru/tools/53-safebucket
Поддержать проект на boosty и читать в MAX | 329 |
| 11 | Исполняемы файл - это SQLite база
#db #fun
Куда только этот ваш SQLite не запихивали
Статья рассказывает о проекте SELF - замене формата исполняемых файлов ELF на SQLite-базу данных, которую можно реально запускать через chmod +x и ./hello.
ELF по сути уже является базой данных, но автор вручную переизобретает ее примитивы. В SELF заголовок хранится в виде пар ключ/значение, сегменты - таблицей с BLOB, а символы - одной таблицей с обычным b-tree индексом вместо. Загрузчик self-exec мапит сегменты, релоцирует и прыгает в точку входа, а динамическое связывание можно делать через glibc rtld-audit или полностью SQL-линкером self-ld.
Все инструменты для работы с исполняемым файлом сводятся к SQL-запросам над базой, а опциональные отладочные таблицы можно удалять транзакцией
Используем?
https://kodikapusta.ru/news/1201-ispolniaemy-fail-eto-sqlite-baza
Поддержать проект на boosty и читать в MAX | 323 |
| 12 | Интересные баги
#golang
Команда sigma star(хз кто это) нашла и исправила давнюю ошибку в рантайме Go, проявлявшуюся только на 32-битных встраиваемых Linux-системах.
Приложение периодически падало с ошибкой "runtime: netpoll: eventfd ready for something unexpected". Корень проблемы оказался в том, что Go хранит в 8-байтовом поле ev.Data два типа указателей - сырой указатель на event fd и тегированный указатель на pollDesc, а сравнение на 32-битных little-endian системах считывает лишь младшие 4 байта, из-за чего адрес event fd алиасился с fdseq. Как только долгоживущая программа накапливала миллионы пересозданных pollDesc, netpoll путал сокет с event fd и падал
Ребята прям недра залезли. Представляю как они все это дебажили
https://kodikapusta.ru/news/1198-interesnye-bagi
Поддержать проект на boosty и читать в MAX | 864 |
| 13 | databasus
#db #tools #golang
Селфхостед инструмент для резервного копирования PostgreSQL, ориентированный на Point-in-Time Recovery с низкими RPO/RTO. Он поддерживает физические и логические бэкапы, гибкое расписание, компрессию 4–8x, верификацию восстановления, политики хранения, множество хранилищ и каналов уведомлений
https://kodikapusta.ru/tools/52-databasus
Поддержать проект на boosty и читать в MAX | 411 |
| 14 | Теория музыки
#fun #music
Статья объясняет теорию музыки "с нуля", отталкиваясь от физики и арифметики
Автор показывает, как все это можно вывести и воспроизвести кодом на JavaScript через Web Audio API.
По сути, звук - это число, меняющееся во времени. А дальше уже можно выводить двенадцать нот из удвоения частоты (октава) и обертонового ряда. Автор объясняет, почему простые отношения частот 3/2, 4/3 и тд звучат консонантно, а иррациональное √2 - диссонансно. И как "пифагорова комма" привела к равномерной темперации с двенадцатью полутонами.
Дальше все сводится к массивам целых чисел: гамма - это список интервалов, лады - это ротации того же массива, аккорды - "каждая вторая нота"
Нотная запись - это по сути сериализационный формат с заголовком, а вся "загадочная" теория на деле набор обычных инженерных решений
Всем штрудель
https://kodikapusta.ru/news/1200-teoriia-muzyki
Поддержать проект на boosty и читать в MAX | 413 |
| 15 | GopherCon UK 2026
#golang #video
Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл Кеннеди и другие широко известные в узких кругах докладчики.
И даже про AI есть вполне адекватные доклады
https://kodikapusta.ru/news/1196-gophercon-uk-2026
Поддержать проект на boosty и читать в MAX | 989 |
| 16 | Pake
#rust #tools
Это инструмент, превращающий любую веб-страницу в настольное приложение одной командой, с поддержкой macOS, Windows и Linux. Он построен на Rust-фреймворке Tauri, поэтому инсталляторы получаются почти в 20 раз меньше, чем у Electron, работают быстрее и потребляют меньше памяти
https://kodikapusta.ru/tools/51-pake
Поддержать проект на boosty и читать в MAX | 543 |
| 17 | Профилирование Rust
#rust
В статье про hotpath-rs - универсальный профайлер производительности для Rust.
Автор показывает, как находить и устранять реальные узкие места на разных уровнях приложения: SQL-запросов, HTTP-вызовов и I/O до блокировок, каналов, аллокаций памяти и сэмплирования CPU.
В статьн советы по оптимизации отсортированы по эффективности. Например, оптимизация N+1 SQL-запросов или распараллеливание HTTP-вызовов нередко дает больше выигрыша, чем микрооптимизации горячих путей CPU, поэтому сначала всегда разбираются верхние слои стека.
Каждый пример иллюстрирован "до/после" с измеримым эффектом - от ускорения в ~1.5 раза при замене N+1 запроса на JOIN+GROUP BY до 100 000-кратного снижения P95 при переносе медленной операции за пределы блокировки RwLock и 57-кратного ускорения Brotli-кодирования после правки конфигурации
https://kodikapusta.ru/news/1194-profilirovanie-rust
Поддержать проект на boosty и читать в MAX | 392 |
| 18 | Используем Datastar
#golang
В статье интеренсно про использование Datastar. Я вот первый раз про него услашал
Автор рассказывает, как построить веб-версию утилиты htop используя Go-бэкенд и, собственно, гипермедиа-фреймворк Datastar. Вместо фронтенд-фреймворка вроде React здесь HTML-патчи отправляются напрямую с сервера через Server-Sent Events. Вся интерактивность задается декларативными data-* атрибутами, поэтому клиентский код остается минимальным.
Системные метрики собираются библиотекой gopsutil, HTML шаблон вшивается в бинарник через go:embed, поэтому все приложение - это один бинарь
Кончено, Datastar не заменит React или Vue, но отлично подойдет для случаев, когда состояние живет преимущественно на бэкенде. В целом, это довольно интересный подход
https://kodikapusta.ru/news/1195-ispol-zuem-datastar
Поддержать проект на boosty и читать в MAX | 1 072 |
| 19 | htmx для Game Boy
#gamedev #fun
Автор рассказывает про видео игру "htmx 4: the game" - первую JavaScript-библиотеку, выпущенную исключительно на картридже для Game Boy и Game Boy Color, которую он купил сразу после анонса из-за.
Игра оказалась сложной и заняла больше часа, причем он так и не нашел все четыре буквы HTMX. Автора порадовало, что команда htmx распространяет исходный код как "программы из журнала" - финальный код нужно набирать вручную с экрана Game Boy, что, конечно, куда менее удобно, чем npm install, но в этом и весь смысл проекта
Люблю такое смешение старья и новых технологий
https://kodikapusta.ru/news/1193-htmx-dlia-geim-boia
Поддержать проект на boosty и читать в MAX | 409 |
| 20 | Фундаментальные знания важны
#learn #ai
Автор размышляет о том, что значит быть инженером в эпоху агентного ИИ, и приходит к выводу, что фундаментальные навыки важны как никогда.
Хотя LLM-агенты уже умеют генерировать "работающий" и даже "тестируемый" код, LLM на самом деле не рассуждают, а лишь предсказывают на основе сжатого человеческого знания. Поэтому такие вещи, как отлаживаемость, сопровождаемость, чистота и расширяемость, а также продумывание "швов" между компонентами остаются задачей человека.
Он ссылается на исследование Apple "The Illusion of Thinking" и "смертельную триаду" Саймона Уиллисона, подчеркивая фундаментальную неспособность моделей отличать хороший совет от вредного.
Главный навык инженера - тщательно ревьюить, планировать и чинить стыки систем, выбирая подходящие абстракции и управляя когнитивной нагрузкой
https://kodikapusta.ru/news/1190-fundamental-nye-znaniia-vazhny
Поддержать проект на boosty и читать в MAX | 412 |
