Код и Капуста
الذهاب إلى القناة على Telegram
Авторский канал с интересными ссылками про разработку на Go, Rust, Godot, Flutter, Android, iOS, Aurora. Все ссылки тут https://kodikapusta.ru/ Читать канал в max https://vk.cc/cVOWSP Для связи @akovardin Поддержать канал https://boosty.to/kodikapusta
إظهار المزيد1 673
المشتركون
-224 ساعات
-57 أيام
+3130 أيام
جاري تحميل البيانات...
القنوات المماثلة
سحابة العلامات
الإشارات الواردة والصادرة
---
---
---
---
---
---
جذب المشتركين
يوليو '26
يوليو '26
+37
في 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 قنوات
| التاريخ | نمو المشتركين | الإشارات | القنوات | |
| 23 يوليو | 0 | |||
| 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 |
منشورات القناة
OpenLogi
#tools #rust
Я давно влюбился в лоджитековские мыши MX Master. И вдруг появляется OpenLogi - это нативная, локальная альтернатива Logitech Options+, написанная на Rust.
Приложение управляет мышами Logitech напрямую через протокол HID++ без аккаунта, телеметрии и облака и не аффилирован с Logitech.
Кто-то любит MX Master еще больше меня
https://kodikapusta.ru/tools/26-openlogi
Поддержать проект на boosty и читать в MAX
| 2 | Научные статьи
#learn
Это интерактивная семантическая карта ~3 миллионов статей arXiv. Авторы собирали статьи для AI агентов, но люди тоже могут почитать
Хотели начать читать научные статьи, но не знали с чего начать? Вот вам знак
https://kodikapusta.ru/news/1132-nauchnye-stat-i
Поддержать проект на boosty и читать в MAX | 191 |
| 3 | Убираем ограничения
#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 | 324 |
| 4 | 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 | 356 |
| 5 | Псевдопокалипсис
#fun
В статье выдвигается и математически обосновывается тезис о "псевдокалипсисе" - неизбежном конце анонимности в интернете из-за статистического "отпечатка", который каждый человек оставляет в своих текстах.
Для уникальной идентификации среди ~490 млн англоязычных людей достаточно всего ~29 бит информации. Обычные сообщения раскрывают порядка 106 бит информации о личности. 17 бит уходит на демографию, 39 - на черты личности по модели HEXACO, а 50 бит - это стилистические особенности: от частот служебных слов до пунктуационных привычек.
По его расчетам, псевдонимность компрометируется уже после ~1000 слов. Современные стилометрические методы работают лишь на пулах из ~50 авторов, но LLM уже неплохо угадывают авторов "случайно", а специализированная модель, обученная по рецепту "огромный датасет + огромная сеть + огромный бюджет", могла бы приблизиться к теоретическому пределу.
В статье автор упоминает и другие факторы для идентификации. Это может быть походка, царапины на машине, динамика нажатий клавиш, а также аналоговые схемы зарядки наушников.
Прикольно, что одной из контрмер может быть LLM-фильтрация, выхолащивающая человечность текста.
Кажется, что гонка вооружений между идентификацией и приватностью складывается в пользу идентификации
https://kodikapusta.ru/news/1131-psevdopokalipsis
Поддержать проект на boosty и читать в MAX | 292 |
| 6 | 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 | 688 |
| 7 | dnsfs
#golang #tools
Шуточно-гениальный проект Бена Картрайта
Файловая система FUSE, хранящая данные в кеше DNS-резолверов чужих людей. Файл разбивается на чанки, которые кодируются в DNS-запросы к специально настроенному авторитативному DNS-серверу. Резолверы по всему миру кешируют ответы - и данные физически распределяются по глобальной инфраструктуре DNS, буквально "true cloud storage"
Чтение файла восстанавливается из тех же DNS-запросов: если ответ закеширован - данные возвращаются мгновенно, если кеш протух - сервер перегенерирует чанк
https://kodikapusta.ru/tools/23-dnsfs
Поддержать проект на boosty и читать в MAX | 469 |
| 8 | Интернет от самых основ
#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 | 316 |
| 9 | 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 | 960 |
| 10 | 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 | 447 |
| 11 | Теперь про 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 | 878 |
| 12 | А теперь переписываем на 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 | 362 |
| 13 | Запускаем 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 | 323 |
| 14 | Запилил еще один видос. В этот рас рассказываю про программирование на Go под Playdate
Пока только на Ютубе https://www.youtube.com/watch?v=TH1q-Yt8Jwc | 975 |
| 15 | Объединение запросов
#golang
Статья объясняет технику объединения запросов на Go с помощью пакета singleflight для борьбы с проблемой "громового стада". Когда после истечения популярного ключа в кэше сотни одновременных запросов промахиваются и каждый выполняет собственный идентичный запрос к базе данных, перегружая ее и рискуя вызвать постоянный каскадный отказ.
Но решение есть - использовать метод Group.Do с заданным ключом. Это гарантирует выполнение функции не более одного раза для ключа за раз: первый вызывающий выполняет запрос, а остальные ждут его и получают тот же результат, при этом singleflight обычно оборачивает только путь промаха кэша.
Автор подробно разбирает подводные камни: разделяемый вызов означает, что одна ошибка или один медленный запрос бьет по всем ждущим, поэтому стоит использовать DoChan с собственным таймаутом и context.WithoutCancel, чтобы отмена одного вызывающего не рушила остальных, а также помнить, что все получают один и тот же объект.
Отдельно обсуждается инструментирование и вопрос распределенного выполнения
https://kodikapusta.ru/news/1124-ob-edinenie-zaprosov
Поддержать проект на boosty и читать в MAX | 397 |
| 16 | А зачем нужны 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 | 404 |
| 17 | История в меню
#fun
Не хочу никаких сложных тем в пятницу. Лучше посмотрите на эту подборку красивых американских меню более чем столетней давности. Умели же!
https://kodikapusta.ru/news/1121-istoriia-meniu
Поддержать проект на boosty и читать в MAX | 389 |
| 18 | Ante
#lang
Пятница! Новый язык программирования - Ante!
Автор рассказывает про этот экспериментальный язык, который сделал шаг к тому, что раньше считалось невозможным: объединить подсчет ссылок и проверку заимствований без риска падений в рантайме, в отличие от Rust с его Rc<RefCell> и Swift с проверками эксклюзивности.
Ключевая идея - "стабильность формы" (я хз как нормально перевести shape-stability). Пока никто не может уничтожить объект, можно безопасно иметь несколько мутабельных ссылок на структуру и ее поля одновременно, а типы можно пометить как шаренные (че-то типа Rc) для автоматического подсчета ссылок.
У подхода есть недостаток - он требует рекурсивного анализа типов, что работает довольно хрупко, поэтому создатель языка ищет более надежные варианты
https://kodikapusta.ru/news/1112-ante
Поддержать проект на boosty и читать в MAX | 413 |
| 19 | Borrowed & Owned 🦀
#rust #tools
Открытая, курируемая сообществом коллекция ресурсов для изучения языка Rust: книг, видео, курсов, репозиториев, блогов и прочего. Есть удобный поиск с фильтрами по категории, уровню и бесплатности
https://kodikapusta.ru/tools/21-borrowed-and-owned
Поддержать проект на boosty и читать в MAX | 410 |
| 20 | mmap или pread
#golang
Автор статьи - инженер из VictoriaMetrics. На примере реального движка хранения VictoriaLogs разбирает выбор между системным вызовом pread и отображением файла в память mmap при чтении байтов из файлов.
Автор объясняет, что pread имеет заметную цену: каждый вызов - это дорогой переход из пользовательского пространства в ядро с копированием данных, и при миллионе мелких случайных чтений на один запрос теряется целая секунда процессорного времени только на пересечение границы ядра.
Mmap превращает эти чтения в дешевый доступ к памяти, но у него есть коварная проблема именно для Go: обращение к "холодной" странице вызывает major page fault, который блокирует поток ОС незаметно для планировщика Go. При достаточном числе таких блокировок программа может застопориться.
В итоге, оптимальное решение - это абстракция ReaderAt, которая через системный вызов mincore проверяет, находится ли нужная страница уже в оперативной памяти. Если да, то используется быстрый mmap-путь, а если нет - то безопасный pread. При этом результаты mincore кэшируются в битовой карте на срок до минуты.
В статье еще разбирается целая куча самых разных тонкостей
https://kodikapusta.ru/news/1120-mmap-ili-pread
Поддержать проект на boosty и читать в MAX | 1 319 |
