Код и Капуста
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ás1 675
Suscriptores
-224 horas
-17 días
+3730 días
Carga de datos en curso...
Canales Similares
Nube de Etiquetas
Menciones Entrantes y Salientes
---
---
---
---
---
---
Atraer Suscriptores
julio '26
julio '26
+36
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 | |
| 21 julio | 0 | |||
| 20 julio | 0 | |||
| 19 julio | +3 | |||
| 18 julio | 0 | |||
| 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 julio | 0 | |||
| 04 julio | 0 | |||
| 03 julio | +1 | |||
| 02 julio | 0 | |||
| 01 julio | +2 |
Publicaciones del Canal
dnsfs
#golang #tools
Шуточно-гениальный проект Бена Картрайта
Файловая система FUSE, хранящая данные в кеше DNS-резолверов чужих людей. Файл разбивается на чанки, которые кодируются в DNS-запросы к специально настроенному авторитативному DNS-серверу. Резолверы по всему миру кешируют ответы - и данные физически распределяются по глобальной инфраструктуре DNS, буквально "true cloud storage"
Чтение файла восстанавливается из тех же DNS-запросов: если ответ закеширован - данные возвращаются мгновенно, если кеш протух - сервер перегенерирует чанк
https://kodikapusta.ru/tools/23-dnsfs
Поддержать проект на boosty и читать в MAX
| 2 | Интернет от самых основ
#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 | 234 |
| 3 | 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 | 738 |
| 4 | 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 | 397 |
| 5 | Теперь про 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 | 792 |
| 6 | А теперь переписываем на 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 | 338 |
| 7 | Запускаем 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 | 301 |
| 8 | Запилил еще один видос. В этот рас рассказываю про программирование на Go под Playdate
Пока только на Ютубе https://www.youtube.com/watch?v=TH1q-Yt8Jwc | 893 |
| 9 | Объединение запросов
#golang
Статья объясняет технику объединения запросов на Go с помощью пакета singleflight для борьбы с проблемой "громового стада". Когда после истечения популярного ключа в кэше сотни одновременных запросов промахиваются и каждый выполняет собственный идентичный запрос к базе данных, перегружая ее и рискуя вызвать постоянный каскадный отказ.
Но решение есть - использовать метод Group.Do с заданным ключом. Это гарантирует выполнение функции не более одного раза для ключа за раз: первый вызывающий выполняет запрос, а остальные ждут его и получают тот же результат, при этом singleflight обычно оборачивает только путь промаха кэша.
Автор подробно разбирает подводные камни: разделяемый вызов означает, что одна ошибка или один медленный запрос бьет по всем ждущим, поэтому стоит использовать DoChan с собственным таймаутом и context.WithoutCancel, чтобы отмена одного вызывающего не рушила остальных, а также помнить, что все получают один и тот же объект.
Отдельно обсуждается инструментирование и вопрос распределенного выполнения
https://kodikapusta.ru/news/1124-ob-edinenie-zaprosov
Поддержать проект на boosty и читать в MAX | 358 |
| 10 | А зачем нужны 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 | 351 |
| 11 | История в меню
#fun
Не хочу никаких сложных тем в пятницу. Лучше посмотрите на эту подборку красивых американских меню более чем столетней давности. Умели же!
https://kodikapusta.ru/news/1121-istoriia-meniu
Поддержать проект на boosty и читать в MAX | 352 |
| 12 | Ante
#lang
Пятница! Новый язык программирования - Ante!
Автор рассказывает про этот экспериментальный язык, который сделал шаг к тому, что раньше считалось невозможным: объединить подсчет ссылок и проверку заимствований без риска падений в рантайме, в отличие от Rust с его Rc<RefCell> и Swift с проверками эксклюзивности.
Ключевая идея - "стабильность формы" (я хз как нормально перевести shape-stability). Пока никто не может уничтожить объект, можно безопасно иметь несколько мутабельных ссылок на структуру и ее поля одновременно, а типы можно пометить как шаренные (че-то типа Rc) для автоматического подсчета ссылок.
У подхода есть недостаток - он требует рекурсивного анализа типов, что работает довольно хрупко, поэтому создатель языка ищет более надежные варианты
https://kodikapusta.ru/news/1112-ante
Поддержать проект на boosty и читать в MAX | 359 |
| 13 | Borrowed & Owned 🦀
#rust #tools
Открытая, курируемая сообществом коллекция ресурсов для изучения языка Rust: книг, видео, курсов, репозиториев, блогов и прочего. Есть удобный поиск с фильтрами по категории, уровню и бесплатности
https://kodikapusta.ru/tools/21-borrowed-and-owned
Поддержать проект на boosty и читать в MAX | 388 |
| 14 | 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 263 |
| 15 | TypeScript переписали на Go
#golang
Команда Microsoft с помощью AI переписала компилятор TypeScript 7.0 на Go, а не на Rust (шах и мат!). Команда добилась примерно десятикратного ускорения сборки, и автор использует это как повод доказать, что Go - оптимальный язык для эпохи агентной разработки с использованием ИИ.
Go изначально спроектирован ради читателя, а не писателя кода. И это свойство идеально подходит большим языковым моделям, которые читают код гораздо больше, чем люди (что печально). Автор разбирает четыре накапливающиеся проблемы, которые Go решает лучше Python и TypeScript: медленная сборка, недетерминированное управление зависимостями, слабая обратная связь по ошибкам и постоянная нестабильность экосистемы.
Вот видите, есть еще порох в пороховницах! Все на Go перепишем
https://kodikapusta.ru/news/1119-typescript-perepisali-na-go
Поддержать проект на boosty и читать в MAX | 1 238 |
| 16 | taproom
#golang #tools
Это уютный терминальный интерфейс для менеджера пакетов Homebrew на macOS, написанный на Go с использованием библиотек Bubble Tea, Bubbles и Lip Gloss. Он позволяет быстро и удобно исследовать формулы и cask-пакеты прямо в терминале, делая ряд вещей проще, чем стандартный CLI brew. Поиск сразу показывает все детали в реальном времени, отображает рекурсивные зависимости и обратные зависимости без медленной команды brew uses, а также поддерживает сортировку по популярности (установки за 90 дней) и размеру на диске
https://kodikapusta.ru/tools/20-taproom
Поддержать проект на boosty и читать в MAX | 584 |
| 17 | Как не надо делать
#fun
Автор ставит забавный эксперимент: найти самый медленный способ просуммировать массив из 2^26 целых чисел на C++, меняя только порядок доступа к элементам. Он умудряется превзойти по медлительности даже случайный доступ более чем на 30%.
Отправной точкой служат линейный проход и случайная перестановка Фишера-Йетса. После чего автор шаг за шагом выстраивает патологический паттерн, последовательно эксплуатируя устройство памяти: доступ с шагом в кэш-линию убивает переиспользование кэша, шаг в целую страницу ломает аппаратный префетчер и создает конфликтные промахи из-за наборно-ассоциативного кэша, а увеличение дистанции переиспользования выбивает данные из приватных кэшей ядра.
Короче, действительно интересная статья, которая может многому научить по работе с памятью. Несмотря на нарочито комичную цель, статья служит наглядным уроком о работе кэшей, префетчеров, MMU и DRAM
https://kodikapusta.ru/news/1122-kak-ne-nado-delat
Поддержать проект на boosty и читать в MAX | 410 |
| 18 | PostgreSQL достаточно
#db
Авторы сайта утверждают, что PostgreSQL достаточно для всего. Большинству команд не нужны отдельные системы для кэширования, очередей, поиска, документов и векторных эмбеддингов, потому что PostgreSQL справляется с этими задачами достаточно хорошо.
Типичная проблема в том, что приложения обрастают самыми разными хранилищами: Redis, Elasticsearch, MongoDB, Kafka, Snowflake, Pinecone и так далее. И каждое из них добавляет операционную нагрузку на мониторинг, резервное копирование, обновления и ночные сбои. Все это, как правило, преждевременная оптимизация.
Всего 0,3% проектов реально достигают успеха, а с ним и нагрузок. Стартапам разумнее не тратить силы на сложную архитектуру, а решать реальную задачу, опираясь на "скучные" проверенные технологии. Так делают Notion, Netflix и Instagram. Cпециализированную инфраструктуру стоит добавлять только после того, как возможности PostgreSQL действительно исчерпаны
Но! Это все не просто слова. На сайте как раз можно поискать как использовать PostgreSQL вместо всех этих сервисов
https://kodikapusta.ru/news/1117-postgresisenough
Поддержать проект на boosty и читать в MAX | 403 |
| 19 | httpsms
#golang #tools
Сервис, превращающий обычный Android-телефон в SMS-шлюз. Вы делаете запрос к простому HTTP API, а он запускает отправку SMS с вашего телефона. Входящие сообщения могут пересылаться на ваш webhook.
Проект создан разработчиком из Камеруна, потому что во многих странах нельзя купить виртуальные номера, а готового удобного решения для отправки и приёма SMS через телефон не нашлось
Система состоит из веб-интерфейса на Nuxt/Vuetify, API на Go (фреймворк Fiber) с базой CockroachDB
https://kodikapusta.ru/tools/19-httpsms
Поддержать проект на boosty и читать в MAX | 551 |
| 20 | Свой 3d редактор
#rust
Это первый эпизод серии туториалов по созданию простого 3D-редактора сцен на движке Bevy 0.19.
Проект вдохновлен Blender. Теоретически, его можно будет использовать для разработки игровых миров, где редактор и игра используют одну и ту же ECS-архитектуру.
Автор начинает с базовой настройки проекта и объясняет, что любая 3D-сцена требует трех вещей: камеры, источника света и меша. Все в мире Bevy представлено сущностями, собираемыми из компонентов, и этот редактор не исключение. Забавно, что редактор для игр сам разрабатывается как игра.
В следующих выпусках обещает выбор объектов кликом, инструменты перемещения-поворота-масштабирования и сохранение сцен
https://kodikapusta.ru/news/1115-svoi-3d-redaktor
Поддержать проект на boosty и читать в MAX | 415 |
