Код и Капуста
СтатистикаАвторский канал с интересными ссылками про разработку на Go, Rust, Godot, Flutter, Android, iOS, Aurora. Все ссылки тут https://kodikapusta.ru/ Читать канал в max https://vk.cc/cVOWSP Для связи @akovardin Поддержать канал https://boosty.to/kodikapusta
- Последний пост
- 11:20
- Последнее чтение
- 12:46
- Постов за неделю
- 17
- Всего постов
- 609
- Тип
- открытый
- Язык
- русский
- Категория
- Блоги
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 369
- 1/48двое суток
- 422
- 1/72трое суток
- 456
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Пишите руками #ai Автор предлагает парадоксальный на первый взгляд подход к работе с LLM: вместо того чтобы позволять ассистенту править файлы напрямую, он просит его показывать предлагаемый код в чате и вручную перенабирает каждую строчку в редакторе. Это замедляет его примерно до "всего лишь 2x" вместо "10x", но дает глубокое понимание кода, помогает вылавливать галлюцинации и неудачные дизайн-решения на лету и формирует пространственную карту кодовой базы - знание того, где что лежит. Он сравнивает это с советом из эпохи обучения по книгам: никогда не копипастить примеры, а перепечатывать их руками, чтобы по-настоящему усвоить материал, и утверждает, что индустрия накапливает колоссальный когнитивный долг, который скоро придется отдавать https://kodikapusta.ru/news/1171-pishite-rukami Поддержать проект на boosty и читать в MAX
Самый сложный калькулятор #zig Автор строит "калькулятор" максимально сложным способом. От токенизации арифметических выражений до нативного исполняемого файла, используя Zig для фронтенда и QBE в качестве компиляторного бэкенда. Начинает с формальной грамматики в EBNF, затем реализует токенизатор как конечный автомат, парсер строит AST из бинарных и унарных узлов, а эмиттер генерирует QBE SSA-инструкции вроде %0 =l mul 2, 2. Ну а почему нет? https://kodikapusta.ru/news/1170-samyi-slozhnyi-kal-kuliator Поддержать проект на boosty и читать в MAX
paneru #rust #tools Оконный менеджер для macOS, который размещает окна на бесконечной полосе, расширяющейся вправо. При открытии нового окна размер существующих окон не меняется, новые окна не накладываются друг на друга - все окна просто красиво выровнены в один ряд с возможностью прокрутки. Интересный опыт https://kodikapusta.ru/tools/41-paneru Поддержать проект на boosty и читать в MAX
Игры под Nintendo 64 #fun #gamedev Автор портировал свой старый JavaScript-демо-шутер Xibalba (2014) на Nintendo 64, ставший лишь второй новой физической игрой для консоли с 2002 года - его издала Modretro для своего клона M64 с картриджем, коробкой и мануалом Чувак реально заморочился. В основе лежит собственный 2D-движок high_impact на C (порт ImpactJS), дополненный бэкендами под SDL2/Sokol и модульной графикой. Для N64 он написал платформенный бэкенд поверх open-source библиотеки Libdragon и 3D-рендеринга Tiny3D. Визуализация построена на raycasting'е с батчингом треугольников и хитрыми оптимизациями под 4 КБ видеопамяти Все это выглядит шикарно и держит стабильные 60 FPS А знаете что? Хочу себе дримкаст и начать писать игры под него https://kodikapusta.ru/news/1166-igry-pod-nintendo-64 Поддержать проект на boosty и читать в MAX
Soppo #golang #lang #rust Пятничный язык программирования! Я про него уже писал, но он продолжает развиваться и стоит взглянуть на него еще разок. Этот язык программирования сохраняет синтаксис Go, но добавляющий недостающие возможности: перечисления с паттерн матчингом, оператор ? для лаконичной обработки ошибок, проверку на nil на уровне компиляции с автоматическим сужением типов и понятные сообщения об ошибках с подсветкой проблемного кода и подсказками. Soppo полностью совместим с экосистемой Go - можно использовать любые библиотеки и инструменты, постепенно внедряя язык в существующие проекты Начнем? https://kodikapusta.ru/news/1163-soppo Поддержать проект на boosty и читать в MAX
frame #rust #tools Нативная утилита для конвертации медиафайлов, написанная на языке Rust. Она предоставляет десктопный интерфейс для операций FFmpeg с детальным контролем над настройками видео, аудио, изображений, субтитров и метаданных https://kodikapusta.ru/tools/40-frame Поддержать проект на boosty и читать в MAX
Треды в Zig #zig Автор разбирает устройство std.Io.Threaded в Zig - реализации интерфейса ввода-вывода, которая использует обычные блокирующие системные вызовы и потоки, но при этом полноценно поддерживает отмену операций. Фокус на различии между параллелизмом и конкурентностью. Проблема "просто использовать потоки" в том, что нет способа прервать заблокированный в ядре поток. Zig решает это на POSIX через сигналы: отменяющий поток выставляет флаг в разделяемой памяти и циклически посылает сигнал целевому потоку, пока тот не получит EINTR и не проверит флаг, аккуратно сворачивая работу через error.Canceled https://kodikapusta.ru/news/1168-tredy-v-zig Поддержать проект на boosty и читать в MAX
Мигаем диодом на Rust #rust Автор показывает использование Embedded Rust - от подключения программатора ST-LINK V2 через SWD-интерфейс до сборки и прошивки. Все это на STM32 Автор использует готовый шаблон проекта на базе крейта stm32f1xx-hal, разбирает ключевые атрибуты, а затем прям построчно объясняет код https://kodikapusta.ru/news/1167-migaem-diodom-na-rust Поддержать проект на boosty и читать в MAX
Rayfish #rust #tools Peer-to-peer mesh VPN на Rust, построенный поверх библиотеки iroh, который позволяет объединить все ваши устройства в частную сеть без аренды серверов, регистраций и единой точки управления. Достаточно одному участнику выполнить ray create, сгенерировать одноразовый инвайт-код через ray invite, а другому - ray join, после чего все пиры соединяются напрямую в полносвязную mesh-сеть и доступны друг другу по имени через Magic DNS без ручного управления ключами и IP https://kodikapusta.ru/tools/39-rayfish Поддержать проект на boosty и читать в MAX
Какой ты газонокосильщик #fun The Pudding провели интерактивный эксперимент, в котором больше 30 тысяч человек "косили" виртуальный газон, чтобы исследовать, насколько эффективно люди решают задачу Coverage Path Planning - родственную знаменитой "задаче коммивояжера" 52% участников уложились в пять лишних ходов от оптимума, а 16% прошли идеально, причем ключевым отличием лучших "косцов" оказалось не время размышлений, а *когда* они думали: сильные игроки делали паузы на развилках и предвидели тупики, заканчивая маршрут в них намеренно, тогда как слабые реагировали на препятствия постфактум и больше возвращались по своим следам Давайте, начинаем все дружно косить https://kodikapusta.ru/news/1169-kakoi-ty-gazonokosil-shchik Поддержать проект на boosty и читать в MAX
Typescript Defer #golang Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScript, реализовав парсинг, проверки и AST-трансформацию, которая оборачивает тело функции в try/finally и выполняет отложенные вызовы в обратном порядке (LIFO) с захватом значений на момент регистрации. В процессе он столкнулся с принципиальными сложностями: ошибки в JavaScript - это поток управления, а не значения, как в Go, поэтому пришлось вводить политики агрегации исключений через AggregateError, последовательный await для асинхронной очистки и явный запрет defer await. В итоге автор пришел к выводу, что defer плохо ложится на модель ошибок TypeScript/JavaScript, и рекомендует использовать нативный using из пропозала Explicit Resource Management как более идиоматичную альтернативу, что логично https://kodikapusta.ru/news/1164-typescript-defer Поддержать проект на boosty и читать в MAX
go-push-receiver #golang #tools Go-библиотека для подписки на GCM/FCM и получения push-уведомлений напрямую, без необходимости в Android-устройстве или Firebase Admin SDK. Библиотека эмулирует поведение Android-клиента: использует protobuf-протоколы MCS и Checkin, заимствованные из Chromium, для регистрации устройства, аутентификации и установки долгоживущего соединения с серверами Google, через которое приходят входящие уведомления https://kodikapusta.ru/tools/38-go-push-receiver Поддержать проект на boosty и читать в MAX
Raft сломан #net #golang Ребята из Antithesis(я хз кто это) протестировали несколько популярных реализаций протокола Raft в своей среде детерминированной симуляции с инжекцией сбоев. Они выбрали HashiCorp Raft, Aeron Cluster, OpenRaft и MicroRaft. И да, они нашли критические баги в каждой из них, нарушающие главный инвариант - state machine safety. На примере HashiCorp Raft подробно разбираются три бага: - гонка асинхронных heartbeat'ов с основным потоком, нарушающая консенсус и безопасность выборов; - deadlock при передаче лидерства, навечно блокирующий кластер; - и livelock при установке снапшотов из-за несоблюдения правила из спецификации. Они приходят к выводу, что формальная верификация сама по себе не гарантирует корректности, поскольку между спецификацией на TLA+ и продакшен-кодом остаются неявные допущения. И еще забавно, что хватило простой нагрузки вроде "цепочки блоков" в сочетании с симуляцией сбоев, чтобы эти проблемы вскрылись https://kodikapusta.ru/news/1165-raft-sloman Поддержать проект на boosty и читать в MAX
Движение назад #golang Прикольная статья если вы хотите поковыряться в итераторах, джинериках и вот в этих новых фишечках Go. Автор в шутливой форме проводит мысленный эксперимент: как бы выглядела эволюция функции Backward для обхода слайса в обратном порядке, если бы ее писал не Go-разработчик из Google, а обычный программист Начав с простого копирования слайса, он шаг за шагом усложняет решение - добавляет замыкание, колбэк-итератор, поддержку индексов, а затем и дженерики для пользовательских типов слайсов. И в итоге приходит приходит к той самой "сложной" сигнатуре из стандартной библиотеки (func Backward[Slice ~[]E, E any](s Slice) iter.Seq2[int, E]). Навороченная версия из slices оправдана универсальностью, но для конкретных проектных задач часто достаточно более простого варианта https://kodikapusta.ru/news/1162-going-backward Поддержать проект на boosty и читать в MAX
oscar #golang #tools Селф-зостед сервер мгновенных сообщений на Go, совместимый с классическими AIM- и ICQ-клиентами, позволяющий запустить собственный аналог легендарных мессенджеров на Linux, macOS или Windows. Поддерживаются десятки старых клиентов: Windows AIM версий 1.x–7.x, TOC1/TOC2-клиенты (Quick Buddy, TiK, vAIM), ICQ-клиенты (98a–2003b, 4, 5), включая buddy-листы, чат-комнаты, обмен файлами через Direct Connect и Rendezvous, а также управление пользователями и сессиями через REST API. Проект независимый, не аффилирован с AOL/Yahoo, и активно развивается сообществом. Настало время https://kodikapusta.ru/tools/37-oscar Поддержать проект на boosty и читать в MAX
AI фабрики не работают #ai Основатель HumanLayer разбирает, почему "lights-off software factory" - подход, при котором AI-агенты пишут код без человеческого ревью - не работает в долгую. Модели отлично решают разовые задачи и проходят бенчмарки, но не умеют сохранять поддерживаемость кода, потому что в RL-тренировке reward-сигнал - это "прошли тесты или нет" за секунды, а цена плохой архитектуры измеряется неделями и месяцами, и обратного распространения этой цены в процесс обучения не существует. Данные Faros AI подтверждают тренд. С массовым внедрением AI-кодинга качество ревью упало, инциденты выросли на 242%, баги на разработчика выросли на 54%. Нужно вернуть человеческое ревью через четыре фазы - Product Review. Что и зачем строим начиная с мокапов - System Architecture. Сервисы, схемы, контракты - Program Design. Структура кода внутри сервиса - Vertical Slices Используйте AI как ускоритель, а не замену инженерного мышления https://kodikapusta.ru/news/1159-ai-fabriki-ne-rabotaiut Поддержать проект на boosty и читать в MAX
Go 1.27 #golang Антон Жиянов делал интерактивные туры по Go с версии 1.22 по 1.26, но решил остановиться. Хесус Эспино подхватил эстафету и разбирает здесь огромный массив нововведений Go 1.27 - от обобщенных методов и профиля goroutineleak до нового пакета uuid и экспериментальной переносимой SIMD https://kodikapusta.ru/news/1161-go-1-27 Поддержать проект на boosty и читать в MAX
Кровать на zig #zig Физик с PhD, с ADHD и аутизмом рассказывает, как купил Chilipad 2.0 - систему водяного охлаждения/подогрева кровати за $1700. Уже интересно, неправда ли? Чтобы решить проблемы со сном из-за сенсорных особенностей и душной спальни без кондиционера он написал для своей кровати CLI-клиент bedctl на Zig. Производитель кровати предоставляет HTTP API для управления устройством, позволяя задавать температуру, включать/выключать терморегуляцию и читать статус. Теперь есть bedctl - это библиотека без зависимостей вне stdlib Zig и тонкая CLI-обертка над ней. Субъективно автор отмечает значительное улучшение качества сна, подтвержденное данными фитнес-трекера https://kodikapusta.ru/news/1157-krovat-na-zig Поддержать проект на boosty: https://boosty.to/kodikapusta
esp32 http2 сервер #rust #net Вот у людей времени дофига. Автор демонстрирует, как он запускает HTTP/2-сервера с TLS 1.3 на микроконтроллере ESP32-WROVER-E. Сервер написан на Rust с помощью собственного крейта WTX, Embassy и официальных ESP-крейтов. Сервер слушает порт 9000, выполняет полный TCP+TLS+HTTP/2 handshake, использует Ed25519-сертификаты с кастомной настройкой X.509 и шифр ChaCha20Poly1305Sha256, а время синхронизируется через NTP для проверки валидности сертификатов. Сервер выдает ~37 запросов/с через h2load, и хотя TcpSocket нельзя шарить между задачами, долгоживущие двунаправленные стримы позволяют переиспользовать соединение без повторного handshake. Я хочу столько же свободного времени https://kodikapusta.ru/news/1156-esp32-http2-server Поддержать проект на boosty: https://boosty.to/kodikapusta
jolliai #ai #tools Open-source инструмент, который автоматически превращает сессии AI-кодинга в структурированную документацию, привязанную к каждому коммиту через git-хуки, без каких-либо дополнительных действий со стороны разработчика. После коммита фоновый процесс читает транскрипт сессии и дифф, вызывает LLM и сохраняет структурированное резюме на отдельную orphan-ветку jollimemory/summaries/v3, а также в plain-Markdown Memory Bank на диске. Через MCP-сервер AI-агент может искать по истории всех веток, восстанавливать контекст, трассировать эволюцию решений и генерировать PR-описания, а опциональный Jolli Space позволяет делиться памятью внутри команды https://kodikapusta.ru/tools/36-jolliai Поддержать проект на boosty: https://boosty.to/kodikapusta