Код и Капуста
Відкрити в Telegram
Авторский канал с интересными ссылками про разработку на Go, Rust, Godot, Flutter, Android, iOS, Aurora. Все ссылки тут https://kodikapusta.ru/ Читать канал в max https://vk.cc/cVOWSP Для связи @akovardin Поддержать канал https://boosty.to/kodikapusta
Показати більше1 674
Підписники
Немає даних24 години
-27 днів
+330 днів
Триває завантаження даних...
Схожі канали
Хмара тегів
Вхідні та вихідні згадування
---
---
---
---
---
---
Залучення підписників
вересень '26
вересень '26
+2
в 1 каналах
серпень '26
+31
в 1 каналах
Get PRO
липень '26
+44
в 2 каналах
Get PRO
червень '26
+66
в 1 каналах
Get PRO
травень '26
+31
в 1 каналах
Get PRO
квітень '26
+42
в 2 каналах
Get PRO
березень '26
+33
в 2 каналах
Get PRO
лютий '26
+54
в 2 каналах
Get PRO
січень '26
+36
в 1 каналах
Get PRO
грудень '25
+43
в 2 каналах
Get PRO
листопад '25
+41
в 2 каналах
Get PRO
жовтень '25
+54
в 1 каналах
Get PRO
вересень '25
+36
в 2 каналах
Get PRO
серпень '25
+34
в 3 каналах
Get PRO
липень '25
+42
в 2 каналах
Get PRO
червень '25
+39
в 2 каналах
Get PRO
травень '25
+111
в 5 каналах
Get PRO
квітень '25
+55
в 1 каналах
Get PRO
березень '25
+72
в 2 каналах
Get PRO
лютий '25
+62
в 1 каналах
Get PRO
січень '25
+73
в 3 каналах
Get PRO
грудень '24
+37
в 1 каналах
Get PRO
листопад '24
+53
в 1 каналах
Get PRO
жовтень '24
+75
в 2 каналах
Get PRO
вересень '24
+96
в 2 каналах
Get PRO
серпень '24
+75
в 2 каналах
Get PRO
липень '24
+57
в 4 каналах
Get PRO
червень '24
+41
в 3 каналах
Get PRO
травень '24
+33
в 2 каналах
Get PRO
квітень '24
+46
в 2 каналах
Get PRO
березень '24
+41
в 1 каналах
Get PRO
лютий '24
+38
в 2 каналах
Get PRO
січень '24
+70
в 2 каналах
Get PRO
грудень '23
+57
в 2 каналах
Get PRO
листопад '23
+68
в 3 каналах
Get PRO
жовтень '23
+30
в 4 каналах
Get PRO
вересень '23
+6
в 0 каналах
Get PRO
серпень '23
+5
в 0 каналах
Get PRO
липень '23
+26
в 0 каналах
Get PRO
червень '23
+25
в 0 каналах
Get PRO
травень '23
+42
в 0 каналах
Get PRO
квітень '23
+27
в 0 каналах
Get PRO
березень '23
+62
в 0 каналах
Get PRO
лютий '23
+38
в 0 каналах
Get PRO
січень '23
+76
в 0 каналах
Get PRO
грудень '22
+42
в 0 каналах
Get PRO
листопад '22
+31
в 0 каналах
Get PRO
жовтень '22
+49
в 0 каналах
Get PRO
вересень '22
+31
в 0 каналах
Get PRO
серпень '22
+21
в 0 каналах
Get PRO
липень '22
+9
в 0 каналах
Get PRO
червень '22
+32
в 0 каналах
Get PRO
травень '22
+16
в 0 каналах
Get PRO
квітень '22
+223
в 0 каналах
| Дата | Залучення підписників | Згадування | Канали | |
| 05 вересня | +1 | |||
| 04 вересня | 0 | |||
| 03 вересня | +1 | |||
| 02 вересня | 0 | |||
| 01 вересня | 0 |
Дописи каналу
| 2 | DDD во времена AI
#golang #ai
Статья утверждает, что с ростом AI-кодинга идеи Domain-Driven Design становятся еще актуальнее
DDD никогда не был строго про код - главная сложность всегда заключалась в понимании предметной области и ее моделировании. Автор подчеркивает, что доменная модель - это не артефакт. Даже если ИИ-агент сгенерирует внушительный документ или план, это не поможет команде понять бизнес-задачу, а ценность knowledge crunching в том, чтобы самому разобраться в домене и уметь судить, осмысленен ли результат агента. Полностью пожжерживаю автора в этом
Он советует проектировать решение командой до написания кода, использовать ограниченные контексты для точных имен и точных промптов, а не делегировать мышление ИИ. Иначе некому будет оценить корректность результата.
Даже если весь код пишет ИИ, инженеру нужно глубоко знать домен, чтобы направлять агента, как напарника. Аминь
https://kodikapusta.ru/news/1202-ddd-vo-vremena-ai
Поддержать проект на boosty и читать в MAX | 251 |
| 3 | TUIOS
#golang #fun
Современный терминальный мультиплексор и оконный менеджер, написанный на Go, с vim-подобным модальным интерфейсом, несколькими панелями, 9 воркспейсами, BSP-тайлингом, поддержкой kitty graphics protocol и командной палитрой - все внутри существующего терминала. Построен на Charm-стеке
Ну это прикольно
https://kodikapusta.ru/tools/55-tuios
Поддержать проект на boosty и читать в MAX | 373 |
| 4 | Введение в Racket
#lang
Нового языка на сегодня нет, но есть интересный вариант лиспа - Racket. К лиспам я вобще с трепетом отношусь, но никак не хватает времени со всем разобраться
Это дружелюбное введение в язык Racket для начинающих. Статья кратко излагает историю: от Лиспа 1958 года и Джона Маккарти через Scheme 1975 к Racket 2010. Автор отмечает, что многие "современные" идеи - сборка мусора, функции первого класса, REPL, условные выражения гомоиконность - родились именно в Лиспе.
Racket - "язык для создания языков", где синтаксис принадлежит программисту
https://kodikapusta.ru/news/1206-vvedenie-v-racket
Поддержать проект на boosty и читать в MAX | 298 |
| 5 | Оптимизация 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 | 292 |
| 6 | 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 | 398 |
| 7 | Конкурентный сервер на Go
#golang #learn
Это восьмая часть серии о конкурентных сетевых серверах, в этот раз посвященная Go. В прошлый раз было про Rust
Автор показывает, как язык решает описанные ранее задачи. Статья начинается с последовательного сервера с state machine, затем показывает конкурентную версию с одной горутиной на клиента.
Для ограничения параллелизма предлагаются счетный семафор на канале и паттерн воркер пул, когда нужно сохранять состояние между задачами.
Логично, что в Go почти никогда не нужно прибегать к async/event-driven программированию, потому что конкурентность встроена в язык и рантайм. Но интересно смотреть в сравнении с другими языками
https://kodikapusta.ru/news/1203-konkurentnyi-server-na-go
Поддержать проект на boosty и читать в MAX | 718 |
| 8 | Горутины повсюду
#golang
Частенько мы пишем Go-сервисы, не задумываясь о том, кто и как запускает наши горутины. Возникает феномен "случайного рантайма приложения": когда Go-сервис обрастает множеством долгоживущих горутин, их время жизни и связи оказываются неявно размазанными по коду инициализации. Это становится особенно очевидным, когда нужно реализовать graceful shutdown.
Автор на примере сервиса для 3D-принт-фермы показывает, как выделить конкурентные компоненты в явные модули с помощью небольшой библиотеки backplane. Каждый модуль - это обычная функция вида func(ctx context.Context, deps ...interface{}) error, где каналы задают потоки сообщений, а всё остальное - ресурсы.
Когда в приложении появляется несколько долгоживущих конкурентных компонентов, их архитектура заслуживает явного представления в коде, а не существования лишь в виде побочных эффектов при запуске
https://kodikapusta.ru/news/1199-gorutiny-vezde
Поддержать проект на boosty и читать в MAX | 305 |
| 9 | safebucket
#tools #golang
Селфхостед платформа для обмена файлами, написанная на Go и React, с подключаемой инфраструктурой, где файлы идут в обход сервера через presigned-URL.
Ключевые возможности:
- прямые загрузки/скачивания мимо сервера,
- заменяемые компоненты,
- SSO через любой OIDC-провайдер плюс локальная авторизация,
- ролевой доступ на уровне платформы и «бакета»,
- публичный шеринг ссылками с опциями
И еще многое другое
https://kodikapusta.ru/tools/53-safebucket
Поддержать проект на boosty и читать в MAX | 318 |
| 10 | Исполняемы файл - это 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 | 310 |
| 11 | Интересные баги
#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 | 832 |
| 12 | databasus
#db #tools #golang
Селфхостед инструмент для резервного копирования PostgreSQL, ориентированный на Point-in-Time Recovery с низкими RPO/RTO. Он поддерживает физические и логические бэкапы, гибкое расписание, компрессию 4–8x, верификацию восстановления, политики хранения, множество хранилищ и каналов уведомлений
https://kodikapusta.ru/tools/52-databasus
Поддержать проект на boosty и читать в MAX | 352 |
| 13 | Теория музыки
#fun #music
Статья объясняет теорию музыки "с нуля", отталкиваясь от физики и арифметики
Автор показывает, как все это можно вывести и воспроизвести кодом на JavaScript через Web Audio API.
По сути, звук - это число, меняющееся во времени. А дальше уже можно выводить двенадцать нот из удвоения частоты (октава) и обертонового ряда. Автор объясняет, почему простые отношения частот 3/2, 4/3 и тд звучат консонантно, а иррациональное √2 - диссонансно. И как "пифагорова комма" привела к равномерной темперации с двенадцатью полутонами.
Дальше все сводится к массивам целых чисел: гамма - это список интервалов, лады - это ротации того же массива, аккорды - "каждая вторая нота"
Нотная запись - это по сути сериализационный формат с заголовком, а вся "загадочная" теория на деле набор обычных инженерных решений
Всем штрудель
https://kodikapusta.ru/news/1200-teoriia-muzyki
Поддержать проект на boosty и читать в MAX | 394 |
| 14 | GopherCon UK 2026
#golang #video
Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл Кеннеди и другие широко известные в узких кругах докладчики.
И даже про AI есть вполне адекватные доклады
https://kodikapusta.ru/news/1196-gophercon-uk-2026
Поддержать проект на boosty и читать в MAX | 945 |
| 15 | Pake
#rust #tools
Это инструмент, превращающий любую веб-страницу в настольное приложение одной командой, с поддержкой macOS, Windows и Linux. Он построен на Rust-фреймворке Tauri, поэтому инсталляторы получаются почти в 20 раз меньше, чем у Electron, работают быстрее и потребляют меньше памяти
https://kodikapusta.ru/tools/51-pake
Поддержать проект на boosty и читать в MAX | 527 |
| 16 | Профилирование 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 | 382 |
| 17 | Используем 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 050 |
| 18 | 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 | 406 |
| 19 | Фундаментальные знания важны
#learn #ai
Автор размышляет о том, что значит быть инженером в эпоху агентного ИИ, и приходит к выводу, что фундаментальные навыки важны как никогда.
Хотя LLM-агенты уже умеют генерировать "работающий" и даже "тестируемый" код, LLM на самом деле не рассуждают, а лишь предсказывают на основе сжатого человеческого знания. Поэтому такие вещи, как отлаживаемость, сопровождаемость, чистота и расширяемость, а также продумывание "швов" между компонентами остаются задачей человека.
Он ссылается на исследование Apple "The Illusion of Thinking" и "смертельную триаду" Саймона Уиллисона, подчеркивая фундаментальную неспособность моделей отличать хороший совет от вредного.
Главный навык инженера - тщательно ревьюить, планировать и чинить стыки систем, выбирая подходящие абстракции и управляя когнитивной нагрузкой
https://kodikapusta.ru/news/1190-fundamental-nye-znaniia-vazhny
Поддержать проект на boosty и читать в MAX | 400 |
| 20 | Tetra3D
#golang #gamedev #tools
Гибридный программно/аппаратный 3D-рендерер на Go, работающий поверх Ebitengine и предназначенный в первую очередь для игр.
В отличие от полноценных движков вроде OpenGL/Vulkan, он в основном рисует программно и лишь частично использует GPU для растеризации треугольников и межобъектного depth-теста, поэтому он медленнее, но зато "джаковый" и по атмосфере напоминает графику PS1, N64 или DS.
Автор создал его из-за нехватки 3D-инструментов для геймдева на Go, ценя простоту API и кроссплатформенность Ebitengine. Проект включает коллайдеры, анимации, освещение, 3D-текст и аддон для Blender
https://kodikapusta.ru/tools/47-tetra3d
Поддержать проект на boosty и читать в MAX | 412 |
