Код и Капуста
رفتن به کانال در Telegram
Авторский канал с интересными ссылками про разработку на Go, Rust, Godot, Flutter, Android, iOS, Aurora. Все ссылки тут https://kodikapusta.ru/ Читать канал в max https://vk.cc/cVOWSP Для связи @akovardin Поддержать канал https://boosty.to/kodikapusta
نمایش بیشتر1 678
مشترکین
-124 ساعت
-77 روز
اطلاعاتی وجود ندارد30 روز
در حال بارگیری داده...
کانالهای مشابه
ابر برچسبها
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
سپتامبر '26
سپتامبر '260
در 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 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 03 سپتامبر | 0 | |||
| 02 سپتامبر | 0 | |||
| 01 سپتامبر | 0 |
پستهای کانال
Конкурентный сервер на Go
#golang #learn
Это восьмая часть серии о конкурентных сетевых серверах, в этот раз посвященная Go. В прошлый раз было про Rust
Автор показывает, как язык решает описанные ранее задачи. Статья начинается с последовательного сервера с state machine, затем показывает конкурентную версию с одной горутиной на клиента.
Для ограничения параллелизма предлагаются счетный семафор на канале и паттерн воркер пул, когда нужно сохранять состояние между задачами.
Логично, что в Go почти никогда не нужно прибегать к async/event-driven программированию, потому что конкурентность встроена в язык и рантайм. Но интересно смотреть в сравнении с другими языками
https://kodikapusta.ru/news/1203-konkurentnyi-server-na-go
Поддержать проект на boosty и читать в MAX
| 2 | Горутины повсюду
#golang
Частенько мы пишем Go-сервисы, не задумываясь о том, кто и как запускает наши горутины. Возникает феномен "случайного рантайма приложения": когда Go-сервис обрастает множеством долгоживущих горутин, их время жизни и связи оказываются неявно размазанными по коду инициализации. Это становится особенно очевидным, когда нужно реализовать graceful shutdown.
Автор на примере сервиса для 3D-принт-фермы показывает, как выделить конкурентные компоненты в явные модули с помощью небольшой библиотеки backplane. Каждый модуль - это обычная функция вида func(ctx context.Context, deps ...interface{}) error, где каналы задают потоки сообщений, а всё остальное - ресурсы.
Когда в приложении появляется несколько долгоживущих конкурентных компонентов, их архитектура заслуживает явного представления в коде, а не существования лишь в виде побочных эффектов при запуске
https://kodikapusta.ru/news/1199-gorutiny-vezde
Поддержать проект на boosty и читать в MAX | 133 |
| 3 | safebucket
#tools #golang
Селфхостед платформа для обмена файлами, написанная на Go и React, с подключаемой инфраструктурой, где файлы идут в обход сервера через presigned-URL.
Ключевые возможности:
- прямые загрузки/скачивания мимо сервера,
- заменяемые компоненты,
- SSO через любой OIDC-провайдер плюс локальная авторизация,
- ролевой доступ на уровне платформы и «бакета»,
- публичный шеринг ссылками с опциями
И еще многое другое
https://kodikapusta.ru/tools/53-safebucket
Поддержать проект на boosty и читать в MAX | 235 |
| 4 | Исполняемы файл - это 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 | 256 |
| 5 | Интересные баги
#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 | 659 |
| 6 | databasus
#db #tools #golang
Селфхостед инструмент для резервного копирования PostgreSQL, ориентированный на Point-in-Time Recovery с низкими RPO/RTO. Он поддерживает физические и логические бэкапы, гибкое расписание, компрессию 4–8x, верификацию восстановления, политики хранения, множество хранилищ и каналов уведомлений
https://kodikapusta.ru/tools/52-databasus
Поддержать проект на boosty и читать в MAX | 302 |
| 7 | Теория музыки
#fun #music
Статья объясняет теорию музыки "с нуля", отталкиваясь от физики и арифметики
Автор показывает, как все это можно вывести и воспроизвести кодом на JavaScript через Web Audio API.
По сути, звук - это число, меняющееся во времени. А дальше уже можно выводить двенадцать нот из удвоения частоты (октава) и обертонового ряда. Автор объясняет, почему простые отношения частот 3/2, 4/3 и тд звучат консонантно, а иррациональное √2 - диссонансно. И как "пифагорова комма" привела к равномерной темперации с двенадцатью полутонами.
Дальше все сводится к массивам целых чисел: гамма - это список интервалов, лады - это ротации того же массива, аккорды - "каждая вторая нота"
Нотная запись - это по сути сериализационный формат с заголовком, а вся "загадочная" теория на деле набор обычных инженерных решений
Всем штрудель
https://kodikapusta.ru/news/1200-teoriia-muzyki
Поддержать проект на boosty и читать в MAX | 334 |
| 8 | GopherCon UK 2026
#golang #video
Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл Кеннеди и другие широко известные в узких кругах докладчики.
И даже про AI есть вполне адекватные доклады
https://kodikapusta.ru/news/1196-gophercon-uk-2026
Поддержать проект на boosty и читать в MAX | 789 |
| 9 | Pake
#rust #tools
Это инструмент, превращающий любую веб-страницу в настольное приложение одной командой, с поддержкой macOS, Windows и Linux. Он построен на Rust-фреймворке Tauri, поэтому инсталляторы получаются почти в 20 раз меньше, чем у Electron, работают быстрее и потребляют меньше памяти
https://kodikapusta.ru/tools/51-pake
Поддержать проект на boosty и читать в MAX | 389 |
| 10 | Профилирование 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 | 320 |
| 11 | Используем 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 | 866 |
| 12 | 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 | 342 |
| 13 | Фундаментальные знания важны
#learn #ai
Автор размышляет о том, что значит быть инженером в эпоху агентного ИИ, и приходит к выводу, что фундаментальные навыки важны как никогда.
Хотя LLM-агенты уже умеют генерировать "работающий" и даже "тестируемый" код, LLM на самом деле не рассуждают, а лишь предсказывают на основе сжатого человеческого знания. Поэтому такие вещи, как отлаживаемость, сопровождаемость, чистота и расширяемость, а также продумывание "швов" между компонентами остаются задачей человека.
Он ссылается на исследование Apple "The Illusion of Thinking" и "смертельную триаду" Саймона Уиллисона, подчеркивая фундаментальную неспособность моделей отличать хороший совет от вредного.
Главный навык инженера - тщательно ревьюить, планировать и чинить стыки систем, выбирая подходящие абстракции и управляя когнитивной нагрузкой
https://kodikapusta.ru/news/1190-fundamental-nye-znaniia-vazhny
Поддержать проект на boosty и читать в MAX | 363 |
| 14 | 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 | 361 |
| 15 | DuckDB v2.0
#db
Сегодня день баз данных. Авторы DuckDB представляют анонс крупного релиза v2.0 - Cyanoptera.
Более 10 000 коммитов и превращают встроенную СУБД в полноценный сервер. С расширением quack и оператором CONNECT любой процесс DuckDB сможет раздавать базы по сети, а запросы можно отправлять напрямую в PostgreSQL/MySQL.
Среди ключевых новинок - тип VARIANT для быстрой работы с полуструктурированными данными, полная поддержка триггеров, асинхронный ввод-вывод для S3, новый PEG-парсер, новый формат хранения, отказ от библиотеки ICU и стабильный C API с возможностью один раз написать расширение и хостить его в собственном подписанном репозитории.
Еще заявлены приросты производительности. Например, рекурсивный CTE стал в 40 раз быстрее, а запросы научились быстрее открывать широкие таблицы и умнее срезать данные через партиции
https://kodikapusta.ru/news/1192-duckdb-v2-0
Поддержать проект на boosty и читать в MAX | 396 |
| 16 | PostgreSQL для всего
#db
Я уже как-то писал про проект "PostgreSQL для всего". Вот эта статья с такой же идеей. Автор, использующий PostgreSQL с 2003 года, утверждает, что ответ на все - не "42", а PostgreSQL
Автор даже приводит три основные причины почему так: исключительная стабильность PostgreSQL, лёгкость установки и масштабирования, а также способность радикально упрощать IT-инфраструктуру.
Он показывает, как PostgreSQL может заменить множество специализированных систем - Solr/Elasticsearch, MongoDB, Kafka/RabbitMQ, ClickHouse, векторные БД, Redis, файловую систему, а также графовые БД и даже микросервисы-прослойки.
Перед внедрением любой новой технологии всегда стоит спрашивать себя, а не справится ли с задачей PostgreSQL?
https://kodikapusta.ru/news/1191-postgresql-dlia-vsego
Поддержать проект на boosty и читать в MAX | 405 |
| 17 | gittype
#rust #tools
CLI-игра на Rust, превращающая ваш собственный исходный код в упражнения по слепой печати.
Она поддерживает более 20 языков (Rust, TypeScript, Python, Go, C/C++ и т.д.), показывает в реальном времени WPM, точность и стабильность, а также систему рангов с ASCII-артом от "Hello World Newbie" до "Quantum Compute"». Играть можно с кодом из текущей директории, из указанного репозитория, из любого GitHub-репозитория
https://kodikapusta.ru/tools/50-gittype
Поддержать проект на boosty и читать в MAX | 425 |
| 18 | Интернет на калькуляторе
#fun #net
Радиолюбитель EI3LH, увлекся карманными компьютерами Casio и сумел запустить настоящий телнет BBS на калькуляторе Casio VX-4 с всего 8 КБ оперативной памяти.
Программа написана на BASIC и работает через RS232-порт. Связь с интернетом обеспечивает Raspberry Pi Zero W, который лишь служит мостом и архивом сообщений, не вмешиваясь в работу калькулятора.
BBS поддерживает вход по позывному радиолюбителя, чтение и отправку сообщений, страницу "о программе" и отключение, причем одновременно допускается только одно подключение на скорости 4800 бод
Кайф, конечно. Жалко у МК-85 нет внешнего интерфейса
https://kodikapusta.ru/news/1188-internet-na-kal-kuliatore
Поддержать проект на boosty и читать в MAX | 413 |
| 19 | На Rust после Go
#rust #golang
Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в его команде.
Но появился проект, в котором нужны были низкое потребление памяти и mpmc-обмен сообщениями. Пожтому несколько CLI и сервисов решили переписать на Rust и это заставил его освоить язык всерьез.
Переход оказался непростым. Больше всего дались строгость компилятора, макросы и, главное, borrow checker(ну конечно) и async с лайфтаймами, которые он советует изучить в первую очередь. Теперь он ценит именно эту строгость.
В итоге автор рекомендует если Go справляется, то использовать Go. А Rust брать при реальных ограничениях по памяти, стабильности и близости к железу. Ну или если вы ебнулись и решили все переписать на Rust с помощью AI
https://kodikapusta.ru/news/1189-na-rust-posle-go
Поддержать проект на boosty и читать в MAX | 1 314 |
| 20 | Ночные эксперименты на Go под дримкаст по ночам продолжаются
Очень интересный и необчный опыт. Приходится разбираться в разных нюансах консоли и устройстве рантайма Go | 434 |
