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

Код и Капуста

الذهاب إلى القناة على Telegram

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

إظهار المزيد
1 675
المشتركون
-224 ساعات
-17 أيام
+3730 أيام
جذب المشتركين
يوليو '26
يوليو '26
+36
في 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 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
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
منشورات القناة
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

2
Интернет от самых основ #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
234
3
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
738
4
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
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 всё переписыв
А теперь переписываем на 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 — виртуальную машину
Запускаем 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 для борьбы с п
Объединение запросов #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? #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 Не хочу никаких сложных тем в пятницу. Лучше посмотрите на эту подборку красивых американских меню более
История в меню #fun Не хочу никаких сложных тем в пятницу. Лучше посмотрите на эту подборку красивых американских меню более чем столетней давности. Умели же! https://kodikapusta.ru/news/1121-istoriia-meniu Поддержать проект на boosty и читать в MAX
352
12
Ante #lang Пятница! Новый язык программирования - Ante! Автор рассказывает про этот экспериментальный язык, который сделал ша
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: книг, видео, ку
Borrowed & Owned 🦀 #rust #tools Открытая, курируемая сообществом коллекция ресурсов для изучения языка Rust: книг, видео, курсов, репозиториев, блогов и прочего. Есть удобный поиск с фильтрами по категории, уровню и бесплатности https://kodikapusta.ru/tools/21-borrowed-and-owned Поддержать проект на boosty и читать в MAX
388
14
mmap или pread #golang Автор статьи - инженер из VictoriaMetrics. На примере реального движка хранения VictoriaLogs разбирает
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 (
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 с использо
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 целых ч
Как не надо делать #fun Автор ставит забавный эксперимент: найти самый медленный способ просуммировать массив из 2^26 целых чисел на C++, меняя только порядок доступа к элементам. Он умудряется превзойти по медлительности даже случайный доступ более чем на 30%. Отправной точкой служат линейный проход и случайная перестановка Фишера-Йетса. После чего автор шаг за шагом выстраивает патологический паттерн, последовательно эксплуатируя устройство памяти: доступ с шагом в кэш-линию убивает переиспользование кэша, шаг в целую страницу ломает аппаратный префетчер и создает конфликтные промахи из-за наборно-ассоциативного кэша, а увеличение дистанции переиспользования выбивает данные из приватных кэшей ядра. Короче, действительно интересная статья, которая может многому научить по работе с памятью. Несмотря на нарочито комичную цель, статья служит наглядным уроком о работе кэшей, префетчеров, MMU и DRAM https://kodikapusta.ru/news/1122-kak-ne-nado-delat Поддержать проект на boosty и читать в MAX
410
18
PostgreSQL достаточно #db Авторы сайта утверждают, что PostgreSQL достаточно для всего. Большинству команд не нужны отдельные
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, а он з
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. Проект
Свой 3d редактор #rust Это первый эпизод серии туториалов по созданию простого 3D-редактора сцен на движке Bevy 0.19. Проект вдохновлен Blender. Теоретически, его можно будет использовать для разработки игровых миров, где редактор и игра используют одну и ту же ECS-архитектуру. Автор начинает с базовой настройки проекта и объясняет, что любая 3D-сцена требует трех вещей: камеры, источника света и меша. Все в мире Bevy представлено сущностями, собираемыми из компонентов, и этот редактор не исключение. Забавно, что редактор для игр сам разрабатывается как игра. В следующих выпусках обещает выбор объектов кликом, инструменты перемещения-поворота-масштабирования и сохранение сцен https://kodikapusta.ru/news/1115-svoi-3d-redaktor Поддержать проект на boosty и читать в MAX
415