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

Код и Капуста

رفتن به کانال در 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.
Конкурентный сервер на 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-сервисы, не задумываясь о том, кто и как запускает наши горутины. Возникает фе
Горутины повсюду #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, с подключаемой инфраструктурой,
safebucket #tools #golang Селфхостед платформа для обмена файлами, написанная на Go и React, с подключаемой инфраструктурой, где файлы идут в обход сервера через presigned-URL. Ключевые возможности: - прямые загрузки/скачивания мимо сервера, - заменяемые компоненты, - SSO через любой OIDC-провайдер плюс локальная авторизация, - ролевой доступ на уровне платформы и «бакета», - публичный шеринг ссылками с опциями И еще многое другое https://kodikapusta.ru/tools/53-safebucket Поддержать проект на boosty и читать в MAX
235
4
Исполняемы файл - это 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
256
5
Интересные баги #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
659
6
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
302
7
Теория музыки #fun #music Статья объясняет теорию музыки "с нуля", отталкиваясь от физики и арифметики Автор показывает, как
Теория музыки #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 подоспели. Много всего интересного. Девид Чейни, Билл Кеннеди и д
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,
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. Автор показывает, ка
Профилирование 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. Я вот первый раз про него услашал Автор рассказыв
Используем 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-библиотеку, выпущенн
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 Автор размышляет о том, что значит быть инженером в эпоху агентного ИИ, и приходит к
Фундаментальные знания важны #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 и предназначе
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 ком
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 для всего #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, превращающая ваш собственный исходный код в упражнения по слепой печати. Она поддержив
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 и сумел запустить настоящий тел
Интернет на калькуляторе #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 в его команде. Но
На 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 под дримкаст по ночам продолжаются Очень интересный и необчный опыт. Приходится разбираться в разных нюансах консоли и устройстве рантайма Go
434