uk
Feedback
Код и Капуста

Код и Капуста

Відкрити в 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 во времена 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-подобным модальным инте
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 #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-кэша B
Оптимизация 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, построенный вокруг про
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.
Конкурентный сервер на 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-сервисы, не задумываясь о том, кто и как запускает наши горутины. Возникает фе
Горутины повсюду #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, с подключаемой инфраструктурой,
safebucket #tools #golang Селфхостед платформа для обмена файлами, написанная на Go и React, с подключаемой инфраструктурой, где файлы идут в обход сервера через presigned-URL. Ключевые возможности: - прямые загрузки/скачивания мимо сервера, - заменяемые компоненты, - SSO через любой OIDC-провайдер плюс локальная авторизация, - ролевой доступ на уровне платформы и «бакета», - публичный шеринг ссылками с опциями И еще многое другое https://kodikapusta.ru/tools/53-safebucket Поддержать проект на boosty и читать в MAX
318
10
Исполняемы файл - это SQLite база #db #fun Куда только этот ваш SQLite не запихивали Статья рассказывает о проекте SELF - зам
Исполняемы файл - это 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, проявлявшуюся только на
Интересные баги #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 Re
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 Статья объясняет теорию музыки "с нуля", отталкиваясь от физики и арифметики Автор показывает, как
Теория музыки #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 подоспели. Много всего интересного. Девид Чейни, Билл Кеннеди и д
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,
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. Автор показывает, ка
Профилирование 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. Я вот первый раз про него услашал Автор рассказыв
Используем 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-библиотеку, выпущенн
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 Автор размышляет о том, что значит быть инженером в эпоху агентного ИИ, и приходит к
Фундаментальные знания важны #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 и предназначе
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