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

Код и Капуста

Ir al canal en Telegram

Авторский канал с интересными ссылками про разработку на Go, Rust, Godot, Flutter, Android, iOS, Aurora. Все ссылки тут https://kodikapusta.ru/ Читать канал в max https://vk.cc/cVOWSP Для связи @akovardin Поддержать канал https://boosty.to/kodikapusta

Mostrar más
1 673
Suscriptores
-124 horas
-57 días
+2130 días
Atraer Suscriptores
julio '26
julio '26
+38
en 2 canales
junio '26
+66
en 1 canales
Get PRO
mayo '26
+31
en 1 canales
Get PRO
abril '26
+42
en 2 canales
Get PRO
marzo '26
+33
en 2 canales
Get PRO
febrero '26
+54
en 2 canales
Get PRO
enero '26
+36
en 1 canales
Get PRO
diciembre '25
+43
en 2 canales
Get PRO
noviembre '25
+41
en 2 canales
Get PRO
octubre '25
+54
en 1 canales
Get PRO
septiembre '25
+36
en 2 canales
Get PRO
agosto '25
+34
en 3 canales
Get PRO
julio '25
+42
en 2 canales
Get PRO
junio '25
+39
en 2 canales
Get PRO
mayo '25
+111
en 5 canales
Get PRO
abril '25
+55
en 1 canales
Get PRO
marzo '25
+72
en 2 canales
Get PRO
febrero '25
+62
en 1 canales
Get PRO
enero '25
+73
en 3 canales
Get PRO
diciembre '24
+37
en 1 canales
Get PRO
noviembre '24
+53
en 1 canales
Get PRO
octubre '24
+75
en 2 canales
Get PRO
septiembre '24
+96
en 2 canales
Get PRO
agosto '24
+75
en 2 canales
Get PRO
julio '24
+57
en 4 canales
Get PRO
junio '24
+41
en 3 canales
Get PRO
mayo '24
+33
en 2 canales
Get PRO
abril '24
+46
en 2 canales
Get PRO
marzo '24
+41
en 1 canales
Get PRO
febrero '24
+38
en 2 canales
Get PRO
enero '24
+70
en 2 canales
Get PRO
diciembre '23
+57
en 2 canales
Get PRO
noviembre '23
+68
en 3 canales
Get PRO
octubre '23
+30
en 4 canales
Get PRO
septiembre '23
+6
en 0 canales
Get PRO
agosto '23
+5
en 0 canales
Get PRO
julio '23
+26
en 0 canales
Get PRO
junio '23
+25
en 0 canales
Get PRO
mayo '23
+42
en 0 canales
Get PRO
abril '23
+27
en 0 canales
Get PRO
marzo '23
+62
en 0 canales
Get PRO
febrero '23
+38
en 0 canales
Get PRO
enero '23
+76
en 0 canales
Get PRO
diciembre '22
+42
en 0 canales
Get PRO
noviembre '22
+31
en 0 canales
Get PRO
octubre '22
+49
en 0 canales
Get PRO
septiembre '22
+31
en 0 canales
Get PRO
agosto '22
+21
en 0 canales
Get PRO
julio '22
+9
en 0 canales
Get PRO
junio '22
+32
en 0 canales
Get PRO
mayo '22
+16
en 0 canales
Get PRO
abril '22
+223
en 0 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
24 julio0
23 julio+1
22 julio+1
21 julio0
20 julio0
19 julio+3
18 julio0
17 julio+1
16 julio+1
15 julio+3
14 julio+4
13 julio+2
12 julio+1
11 julio+1
10 julio+5
09 julio+3
08 julio+5
07 julio+1
06 julio+3
05 julio0
04 julio0
03 julio+1
02 julio0
01 julio+2
Publicaciones del Canal
GALA #golang #tools GALA (Go Alternative LAnguage) - статически типизированный функциональный язык, транспилирующийся в Go, к
GALA #golang #tools GALA (Go Alternative LAnguage) - статически типизированный функциональный язык, транспилирующийся в Go, который приносит в экосистему Go sealed-типы с исчерпывающим паттерн матчиг, монадический стек, иммутабельные коллекции и do-нотацию с накоплением ошибок через Validated и конкурентным выполнением через Future. Уже даже есть примеры проектов на GALA Кароче, ребята решили SCALA написать на Go https://kodikapusta.ru/tools/24-gala Поддержать проект на boosty и читать в MAX

2
Виртуальная память #learn Масштабное погружение в виртуальную память от самых основ. Туториал прикольно написан как диалог дв
Виртуальная память #learn Масштабное погружение в виртуальную память от самых основ. Туториал прикольно написан как диалог двух приятелей - процесса по имени Аллока и Ядра. Раскрывается множество тем: зачем нужна виртуальная память, раскладка адресного пространства, 4-уровневые иерархические таблицы страниц, роль MMU и TLB в ускорении трансляции адресов, ленивое выделение памяти через page faults, copy-on-write для fork() и разделяемой памяти, mmap, типы памяти, swap, эффекты NUMA-топологии, производительность data-intensive систем и наблюдаемость. И это я еще не все перечислил https://kodikapusta.ru/news/1134-virtual-naia-pamiat Поддержать проект на boosty и читать в MAX
227
3
Agda #lang Пятничный язык программирования Agda - это функциональный язык программирования с зависимыми типами, основанный на
Agda #lang Пятничный язык программирования Agda - это функциональный язык программирования с зависимыми типами, основанный на интуиционистской теории типов Пер Мартин-Лёфа и разрабатываемый группой Logic and Types в Чалмерском технологическом университете. Язык поддерживает индуктивные семейства, параметризованные модули, mixfix-операторы, Unicode-символы и интерактивный Emacs-интерфейс. А еще язык используется для доказательства корректности программ https://kodikapusta.ru/news/1118-agda Поддержать проект на boosty и читать в MAX
243
4
OpenLogi #tools #rust Я давно влюбился в лоджитековские мыши MX Master. И вдруг появляется OpenLogi - это нативная, локальная
OpenLogi #tools #rust Я давно влюбился в лоджитековские мыши MX Master. И вдруг появляется OpenLogi - это нативная, локальная альтернатива Logitech Options+, написанная на Rust. Приложение управляет мышами Logitech напрямую через протокол HID++ без аккаунта, телеметрии и облака и не аффилирован с Logitech. Кто-то любит MX Master еще больше меня https://kodikapusta.ru/tools/26-openlogi Поддержать проект на boosty и читать в MAX
404
5
Научные статьи #learn Это интерактивная семантическая карта ~3 миллионов статей arXiv. Авторы собирали статьи для AI агентов,
Научные статьи #learn Это интерактивная семантическая карта ~3 миллионов статей arXiv. Авторы собирали статьи для AI агентов, но люди тоже могут почитать Хотели начать читать научные статьи, но не знали с чего начать? Вот вам знак https://kodikapusta.ru/news/1132-nauchnye-stat-i Поддержать проект на boosty и читать в MAX
298
6
Убираем ограничения #golang Автор разбирает продвинутый прием устранения проверки границ в горячих путях Go Когда компилятор
Убираем ограничения #golang Автор разбирает продвинутый прием устранения проверки границ в горячих путях Go Когда компилятор не может доказать безопасность доступа к срезу, а программист может, на помощь приходит unsafe.Pointer с арифметикой указателей. Вместо binary.LittleEndian.Uint32(data[i:]) можно использовать *(*uint32)(unsafe.Add(unsafe.Pointer(unsafe.SliceData(b)), i)), что устраняет все проверки границ и на реальном бенчмарке brotli-компрессора даёт прирост ~10%. У автора в статье довольно много таких хаков Кроме очевидного сокращения инструкций и ветвлений в хотпасе, вы еще и работу кеша процессора улучшаете. Меньше инструкций, меньше мисов https://kodikapusta.ru/news/1129-ubiraem-ogranicheniia Поддержать проект на boosty и читать в MAX
782
7
UTM #tools UTM - бесплатное open-source приложение для macOS, использующее Apple Hypervisor для виртуализации ARM64 на Apple
UTM #tools UTM - бесплатное open-source приложение для macOS, использующее Apple Hypervisor для виртуализации ARM64 на Apple Silicon и QEMU для эмуляции x86/x64, ARM32, MIPS, PPC, RISC-V и SPARC. Мне понравилась очень удобная надстройка над QEMU. Запомнить команды и праметры для консольной QEMU я не в состоянии Есть версия для iOS https://kodikapusta.ru/tools/25-utm Поддержать проект на boosty и читать в MAX
429
8
Псевдопокалипсис #fun В статье выдвигается и математически обосновывается тезис о "псевдокалипсисе" - неизбежном конце аноним
Псевдопокалипсис #fun В статье выдвигается и математически обосновывается тезис о "псевдокалипсисе" - неизбежном конце анонимности в интернете из-за статистического "отпечатка", который каждый человек оставляет в своих текстах. Для уникальной идентификации среди ~490 млн англоязычных людей достаточно всего ~29 бит информации. Обычные сообщения раскрывают порядка 106 бит информации о личности. 17 бит уходит на демографию, 39 - на черты личности по модели HEXACO, а 50 бит - это стилистические особенности: от частот служебных слов до пунктуационных привычек. По его расчетам, псевдонимность компрометируется уже после ~1000 слов. Современные стилометрические методы работают лишь на пулах из ~50 авторов, но LLM уже неплохо угадывают авторов "случайно", а специализированная модель, обученная по рецепту "огромный датасет + огромная сеть + огромный бюджет", могла бы приблизиться к теоретическому пределу. В статье автор упоминает и другие факторы для идентификации. Это может быть походка, царапины на машине, динамика нажатий клавиш, а также аналоговые схемы зарядки наушников. Прикольно, что одной из контрмер может быть LLM-фильтрация, выхолащивающая человечность текста. Кажется, что гонка вооружений между идентификацией и приватностью складывается в пользу идентификации https://kodikapusta.ru/news/1131-psevdopokalipsis Поддержать проект на boosty и читать в MAX
342
9
Go конкурентность в C #golang #c Автор исследует, насколько близко можно воспроизвести конкурентную модель Go на чистом C с п
Go конкурентность в C #golang #c Автор исследует, насколько близко можно воспроизвести конкурентную модель Go на чистом C с помощью только POSIX-потоков. Это делается для проекта Solod - строгого подмножества Go, транслируемого в C без рантайма и сборщика мусора. Реализация построена на двух примитивах - pthread_mutex_t и pthread_cond_t. Поверх них сделаны мьютексы, condition-переменные, пул воркеров с кольцевым буфером и буферизированные/небуферизированные каналы с рандеву-передачей значений напрямую со стека отправителя. Но без зеленых тредов и своего планировщика Бенчмарки показывают, что на крупных задачах пул pthreads уступает Go всего ~10%, а атомики и неподблокированные мьютексы даже быстрее, но как только поток паркуется в ядре, накладные расходы на wakeup-сисколлы дают проигрыш до 23 раз. Это, очевидно, плата за отсутствие отдельного планировщика и простоту кода в ~200 строк https://kodikapusta.ru/news/1128-go-konkurentnost-v-c Поддержать проект на boosty и читать в MAX
859
10
dnsfs #golang #tools Шуточно-гениальный проект Бена Картрайта Файловая система FUSE, хранящая данные в кеше DNS-резолверов чу
dnsfs #golang #tools Шуточно-гениальный проект Бена Картрайта Файловая система FUSE, хранящая данные в кеше DNS-резолверов чужих людей. Файл разбивается на чанки, которые кодируются в DNS-запросы к специально настроенному авторитативному DNS-серверу. Резолверы по всему миру кешируют ответы - и данные физически распределяются по глобальной инфраструктуре DNS, буквально "true cloud storage" Чтение файла восстанавливается из тех же DNS-запросов: если ответ закеширован - данные возвращаются мгновенно, если кеш протух - сервер перегенерирует чанк https://kodikapusta.ru/tools/23-dnsfs Поддержать проект на boosty и читать в MAX
505
11
Интернет от самых основ #learn #net Масштабный интерактивный разбор устройства интернета от первых принципов до наших дней. Н
Интернет от самых основ #learn #net Масштабный интерактивный разбор устройства интернета от первых принципов до наших дней. Начинаем с телеграфа Морзе и релейной регенерации сигналов, Увидим что цифровая передача битов через дискретные символы появилась задолго до компьютеров. Пройдем через коммутацию каналов и dial-up-модемы - к пакетной коммутации Барана и Дэвиса, ARPANET и первым IMP-маршрутизаторам. Автор последовательно проводит читателя через Ethernet, IP-адресацию с CIDR, TCP, BGP-маршрутизацию между автономными системами, NAT в домашних сетях, иерархический DNS, HTTP как пользовательский интерфейс интернета, TLS-шифрование. Посмотрим на полный путь пакета при клике на ссылку - от радиоволн Wi-Fi до света в оптоволокне на дне океана. Статья с очень крутыми интерактивными симуляторами, которые все показывают максимально наглядно Обязательно к прочтению https://kodikapusta.ru/news/1130-internet-ot-samykh-osnov Поддержать проект на boosty и читать в MAX
344
12
OpenTelemetry в комптайме #golang Разрабы OpenTelemetry объявили о первом стабильном релизе Go Compile-Time Instrumentation (
OpenTelemetry в комптайме #golang Разрабы OpenTelemetry объявили о первом стабильном релизе Go Compile-Time Instrumentation (v1) Новый инструмента otelc, который встраивает телеметрию в Go-бинарник на этапе компиляции через механизм -toolexec, без правок исходного кода и без отдельного кода в рантайме. В v1 поддерживаются net/http, database/sql, gRPC, Redis и метрики рантайма Go. Можно инструментировать кастомный код через специальные правила в конфиге. Инструмент заменяет go build на otelc go build. Но это необязательно, можно просто настроить GOFLAGS с указанием toolexec, а значит все уже совместимо с вашим CI/CD В будущем планируется реестр инструментаций, расширение покрытия библиотек и оптимизация Лучшее использование toolexec, которое я видел https://kodikapusta.ru/news/1127-opentelemetry-v-komptaime Поддержать проект на boosty и читать в MAX
1 100
13
Davit #tools Полностью нативное macOS-приложение для управления контейнерами на платформе Apple (apple/container), без Docker
Davit #tools Полностью нативное macOS-приложение для управления контейнерами на платформе Apple (apple/container), без Docker Desktop, Electron и фоновых сервисов. Общается напрямую с демоном Apple по XPC. Каждый контейнер запускается в собственном легковесном VM через Apple Virtualization framework. К сожалению, не имеет 100% docker CLI/API-совместимости, поэтому не замена для сложных скриптованных CI-пайплайнов, но для разработки "run/compose/build" подойдет Кста, а кто-то пользуется podman? https://kodikapusta.ru/tools/22-davit Поддержать проект на boosty и читать в MAX
507
14
Теперь про Go и Playdate доступен и на вквидео и на рутубе вквидео https://vkvideo.ru/video-228916121_456239441 рутуб https://rutube.ru/video/338ceeb9741a5f53acf04b58b1ddff3d/ ну и на ютубе тоже посмотрите https://www.youtube.com/watch?v=TH1q-Yt8Jwc Playdate — это компактная портативная игровая консоль от компании Panic и Teenage Engineering. У консоли черно-белый экран 2,7 дюйма без подсветки, необычное механическое управление крутилой кранком В этом видео научимся писать программы под playdate на Go и напишем приложение для чтения новостей с сайта kodikapusta.ru
999
15
А теперь переписываем на Zig #zig #rust Окей, Bun переписывают с Zig на Rust. Но вы что думаете, только на Rust всё переписыв
А теперь переписываем на Zig #zig #rust Окей, Bun переписывают с Zig на Rust. Но вы что думаете, только на Rust всё переписывают? Нифига! Команда языка Roc за полтора года переписала свой 300 000-строчный компилятор с Rust на Zig и реализовала почти весь функционал оригинала. Основной причиной стала потребность в полном контроле над управлением памятью и архитектурная перестройка вокруг новой системы дефункционализации замыканий, которая потребовала переписать почти весь компилятор. Автор отмечает, что выбор между Rust и Zig не опирался на memory safety, но Zig дал желанные сверхбыстрые инкрементальные сборки, встроенную поддержку кастомных аллокаторов, нестандартных целочисленных типов и упакованных структур. При этом автор, судя по всему, любит Rust и скучает по derive-макросам, приватным полям, трейтам и бесшовным обновлениям Rust, а значит, выбор был вполне объективным Ну и что, что вы ничего не слышали про Roc https://kodikapusta.ru/news/1126-a-teper-perepisyvaem-na-zig Поддержать проект на boosty и читать в MAX
419
16
Запускаем DOOM на базе данных #db #fun Разработчики Turso портировали оригинальный Doom на байткод VDBE — виртуальную машину
Запускаем DOOM на базе данных #db #fun Разработчики Turso портировали оригинальный Doom на байткод VDBE — виртуальную машину SQLite. Они написали целый компилятор vdbecc, который переводит LLVM IR в инструкции VDBE, а всю C-память игры разместили в одном BLOB-столбце таблицы. Чтение и запись идут через b-tree-страницы базы данных, которая фактически работает как MMU. Кадры отрисовываются как строки результата одного бесконечного SELECT, управление передается через bind-параметры, а сохранение игры - это просто запись базы на диск. Ребята хотели порекламироваться и показать, что байткод SQLite можно использовать как универсальную платформу для пересборки любых СУБД, включая грядущий Postgres на Rust, о котором я уже упоминал. https://kodikapusta.ru/news/1125-zapuskaem-doom-na-baze-dannykh Поддержать проект на boosty и читать в MAX
376
17
Запилил еще один видос. В этот рас рассказываю про программирование на Go под Playdate Пока только на Ютубе https://www.youtube.com/watch?v=TH1q-Yt8Jwc
1 092
18
Объединение запросов #golang Статья объясняет технику объединения запросов на Go с помощью пакета singleflight для борьбы с п
Объединение запросов #golang Статья объясняет технику объединения запросов на Go с помощью пакета singleflight для борьбы с проблемой "громового стада". Когда после истечения популярного ключа в кэше сотни одновременных запросов промахиваются и каждый выполняет собственный идентичный запрос к базе данных, перегружая ее и рискуя вызвать постоянный каскадный отказ. Но решение есть - использовать метод Group.Do с заданным ключом. Это гарантирует выполнение функции не более одного раза для ключа за раз: первый вызывающий выполняет запрос, а остальные ждут его и получают тот же результат, при этом singleflight обычно оборачивает только путь промаха кэша. Автор подробно разбирает подводные камни: разделяемый вызов означает, что одна ошибка или один медленный запрос бьет по всем ждущим, поэтому стоит использовать DoChan с собственным таймаутом и context.WithoutCancel, чтобы отмена одного вызывающего не рушила остальных, а также помнить, что все получают один и тот же объект. Отдельно обсуждается инструментирование и вопрос распределенного выполнения https://kodikapusta.ru/news/1124-ob-edinenie-zaprosov Поддержать проект на boosty и читать в MAX
452
19
А зачем нужны CORS? #learn Автор разбирает распространенные заблуждения о CORS. Автор любит задавать каверзный вопрос на собе
А зачем нужны CORS? #learn Автор разбирает распространенные заблуждения о CORS. Автор любит задавать каверзный вопрос на собеседовании: является ли CORS механизмом защиты сервера или браузера? Правильный ответ - браузера. Сервер вообще не проверяет источник запроса и спокойно выполняет его, а браузер лишь решает, отдавать ли пришедший ответ JavaScript-коду. Работает это так: браузер добавляет заголовок Origin к кросс-доменным запросам, а при получении ответа ищет заголовок Access-Control-Allow-Origin, и если источники не совпадают - просто выбрасывает ответ, хотя запрос уже дошел до сервера и был обработан. Для "непростых" запросов сначала отправляется предварительный OPTIONS-запрос. Реальная угроза, от которой защищает CORS, требует одновременно браузера жертвы и ее активной сессии: вредоносный сайт может отправить запрос с cookie жертвы к банку, но браузер не даст злоумышленнику прочитать ответ с балансом. При этом важно, что CORS не защищает от CSRF: если атака не требует чтения ответа, запрос все равно доходит до сервера и наносит ущерб, а блокировка ответа уже бесполезна https://kodikapusta.ru/news/1123-a-zachem-nuzhny-cors Поддержать проект на boosty и читать в MAX
429
20
История в меню #fun Не хочу никаких сложных тем в пятницу. Лучше посмотрите на эту подборку красивых американских меню более
История в меню #fun Не хочу никаких сложных тем в пятницу. Лучше посмотрите на эту подборку красивых американских меню более чем столетней давности. Умели же! https://kodikapusta.ru/news/1121-istoriia-meniu Поддержать проект на boosty и читать в MAX
406