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

Код и Капуста

Відкрити в Telegram

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

Показати більше
1 673
Підписники
-124 години
-57 днів
+2130 день
Залучення підписників
липень '26
липень '26
+38
в 2 каналах
червень '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 каналах
Дата
Залучення підписників
Згадування
Канали
24 липня0
23 липня+1
22 липня+1
21 липня0
20 липня0
19 липня+3
18 липня0
17 липня+1
16 липня+1
15 липня+3
14 липня+4
13 липня+2
12 липня+1
11 липня+1
10 липня+5
09 липня+3
08 липня+5
07 липня+1
06 липня+3
05 липня0
04 липня0
03 липня+1
02 липня0
01 липня+2
Дописи каналу
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