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

Код и Капуста

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
1 675
Obunachilar
Ma'lumot yo'q24 soatlar
+27 kunlar
+1130 kunlar
Postlar arxiv
glyphcss #tools #fun Библиотека для рендеринга 3D-моделей форматов OBJ, glTF, GLB, STL, MagicaVoxel и VOX)в ASCII-арт внутри
glyphcss #tools #fun Библиотека для рендеринга 3D-моделей форматов OBJ, glTF, GLB, STL, MagicaVoxel и VOX)в ASCII-арт внутри одного HTML-элемента <pre>, без WebGL и <canvas>. Растеризатор проецирует полигоны, заполняет символьную сетку cols × rows и пишет одну строку в textContent - ни одного лишнего DOM-узла на полигон. Еще и интерактивность есть. Она добавляется через <GlyphHotspot> в заданной 3D-точке: на проекцию вешается один абсолютно спозиционированный <div> с реальными DOM-событиями, :hover-стилями и accessibility Прям как игры в далеком прошлом https://kodikapusta.ru/tools/32-glyphcss Поддержать проект на boosty и читать в MAX

GDPatch #rust #godot GDPatch - это новый универсальный загрузчик модов для Godot 4.x, написанный на Rust, который вместо патч
GDPatch #rust #godot GDPatch - это новый универсальный загрузчик модов для Godot 4.x, написанный на Rust, который вместо патчинга движка или игровых файлов перехватывает системные вызовы файловой системы, подменяя .pck-файлы и перенаправляя чтения на модифицированный контент. Такой подход позволяет работать с любым билдом Godot без модификации исполняемого файла, а внутренний парсер и токенизатор GDScript обеспечивают roundtrip между байткодом и исходным текстом, давая моддерам возможность патчить скрипты через Lua как простой заменой строк, так и через AST. Все это звучит капец как сложно и меня такие статьи оч мотивируют поглубже разобраться в теме https://kodikapusta.ru/news/1143-gdpatch Поддержать проект на boosty и читать в MAX

G# #lang Новый прикольный пятничный язык программирования G# - это новый язык для платформы .NET, сочетающий эргономику Go, K
G# #lang Новый прикольный пятничный язык программирования G# - это новый язык для платформы .NET, сочетающий эргономику Go, Kotlin и Swift: пакеты и импорты, объявления через func, дата классы nullable-типы с if let, структурную конкурентность через scope и async/await, а также явные числовые типы вроде int32 и float64. Работает через обычный инструмент dotnet build/dotnet run. Язык ориентирован на тех, кто хочет учить или использовать .NET с более современным и лаконичным синтаксисом, не начиная с C# https://kodikapusta.ru/news/1140-g Поддержать проект на boosty и читать в MAX

moonBASIC #golang #tools #fun Это современный BASIC с компилятором в байткод и встроенным рантаймом для 2D/3D-графики, физики
moonBASIC #golang #tools #fun Это современный BASIC с компилятором в байткод и встроенным рантаймом для 2D/3D-графики, физики и сети. Не интерпретатор, а прям настоящий компилятор. Исходники .mb компилируются в .mbc и исполняются на VM, интегрированной с Raylib, Jolt, Box2D и ENet через CGO. Поставляется в трех вариантах: - IDE-бандл в виде редактор + компилятор + рантайм + документация - полный рантайм moonrun - одной командой компилирует и запускает игру - compiler-only для CI/тулчейнов. Есть VS Code-расширение с LSP и дебаггером, стандартная библиотека покрывает тайловые карты, спрайты, атласы, частицы, звук, освещение, шейдеры. Написан на Go, распространяется Окей. Но зачем? https://kodikapusta.ru/tools/31-moonbasic Поддержать проект на boosty и читать в MAX

Не то время #learn #code Вторая статья автора в серии "Beyond Happy Path Engineering". Автор разбирает, как наивное обращение
Не то время #learn #code Вторая статья автора в серии "Beyond Happy Path Engineering". Автор разбирает, как наивное обращение со временем в продакшене приводит к багам. Разработчики часто используют now() и wall-clock там, где нужны монотонные часы для измерения длительности, guarded-транзиции состояния вместо сравнения таймстемпов для истечения срока, и явные часовые пояса/календари вместо голого UTC для пользовательских дат. Автор на примере резервирования товара при покупке показывает, как дрейф часов между машинами вызывает преждевременное освобождение брони, сравнение таймстемпов не доказывает порядок событий, просроченный cron-воркер при наверстывании создает лавину обновлений, а отсутствие монотонного времени приводит к отрицательным измерениям производительности. А надо явно разделять время на четыре категории: длительность, момент, порядок, бизнес-календар. Подробности в статье Непростое время https://kodikapusta.ru/news/1145-ne-to-vremia Поддержать проект на boosty и читать в MAX

Кодим чат #golang Автор просто час пишет чат. Никаких слов, никакого хайпа. Просто час кодинга под музычку https://kodikapust
Кодим чат #golang Автор просто час пишет чат. Никаких слов, никакого хайпа. Просто час кодинга под музычку https://kodikapusta.ru/news/1146-kodim-chat Поддержать проект на boosty и читать в MAX

freeink #tools Free Ink - это сборизе энтузиастов, коотрые создаюют программное обеспечение, прошивки и аппаратную платформу
freeink #tools Free Ink - это сборизе энтузиастов, коотрые создаюют программное обеспечение, прошивки и аппаратную платформу для устройств на электронных чернилах. Ребята публикует в открытом доступе как софт, так и хардварных спецификации, чтобы любой желающий мог взять, доработать и сделать свою собственную читалку. Моя следующая читалка точно будет опенсорсной. На каком-нибудь ESP32 https://kodikapusta.ru/tools/30-freeink Поддержать проект на boosty и читать в MAX

768 серверов Postgres #db Статья рассказывает, как PlanetScale заставляет 768 серверов Postgres, хранящих петабайт данных, вы
768 серверов Postgres #db Статья рассказывает, как PlanetScale заставляет 768 серверов Postgres, хранящих петабайт данных, выглядеть для приложения как одна монолитная база. 768 серверов это 256 шардов, каждый с мастером + 2 реплики. Ключевой компонент - прокси-слой, который парсит SQL, понимает топологию данных через JSON-конфигурацию , хеширует ID и направляет записи и чтения в нужные шарды, агрегируя результаты при запросах, затрагивающих несколько шардов. Сверху балансир распределяет подключения между десятками прокси, а приложение видит единый хост mydb.pscale.com. Получается, что вся сложность шардирования скрыта за привычной строкой коннекта https://kodikapusta.ru/news/1142-768-serverov-postgres Поддержать проект на boosty и читать в MAX

Хранение паскеев #golang Автор предлагает формат для паскеев спеуиальный формат. Что похожее на интероперабельную, непрозрачн
Хранение паскеев #golang Автор предлагает формат для паскеев спеуиальный формат. Что похожее на интероперабельную, непрозрачную строку для хранения паскей-записей, по аналогии с PHC-строками для паролей. Зачем это нужно? Приложения смогут обращаться с паскеями как с хешами паролей, не привязываясь к конкретной схеме БД или библиотеке. На основе этого формата он набросал небольшое Go API crypto/passkey. Библиотека генерирует JSON, а приложение отвечает только за хранение passkey-записей, привязанных к пользователю, и кеширование challenge'ов Отличная идея, кмк https://kodikapusta.ru/news/1139-khranenie-paskeev Поддержать проект на boosty и читать в MAX

chatto #golang #tools Chatto - полнофункциональный self-hosted чат для команд и сообществ с поддержкой скриншеринга, видео- и
chatto #golang #tools Chatto - полнофункциональный self-hosted чат для команд и сообществ с поддержкой скриншеринга, видео- и голосовых звонков. Бекенж написан на Go Ну что, настало время своих собственных серверов с чатами https://kodikapusta.ru/tools/27-chatto Поддержать проект на boosty и читать в MAX

Zig на примерах #zig Это интерактивное введение в язык Zig через примеры программ, оформленное в стиле известного проекта Go
Zig на примерах #zig Это интерактивное введение в язык Zig через примеры программ, оформленное в стиле известного проекта Go by Example. Этоя прям ностальгические вайбы, в свое время Go by Example прям очень выручал Сайт покрывает версию Zig 0.16 и разбит на разделы: базовые типы, функции и ошибки, управляющие конструкции ( составные типы, стандартную библиотеку, comptime-метапрограммирование, асинхронный I/O, работу с C, систему сборки и написание CLI-программ - каждая тема иллюстрируется коротким компилируемым примером с пояснениями Это мы используем https://kodikapusta.ru/news/1141-zig-na-primerakh Поддержать проект на boosty и читать в MAX

Арены жалко #golang Go отказался от экспериментальных Memory Arenas - механизма, позволявшего выделять память крупными пулами
Арены жалко #golang Go отказался от экспериментальных Memory Arenas - механизма, позволявшего выделять память крупными пулами в обход GC для снижения накладных расходов в высоконагруженных сценариях. Автор считает это стратегической ошибкой. Формальной причиной стали проблемы безопасности, когда можно попытаться использовать память после ее освобождения. И еще никому не понравилась несовместимость с интерфейсами - пришлось бы добавлять аргумент *Arena в сигнатуры функций, и это раскололо бы экосистему на стандартный и arena-миры, подобно тому как context.Context когда-то "инфицировал" весь Go. Но, по мнению автора, реальная опасность в том, что Go добровольно ограничил свой потолок производительности в момент, когда быстрые интерпретируемые языки догоняют его сверху, а системные языки вроде Rust и Zig становятся проще снизу. Go рискует остаться застывшим в "среднем" сегменте, став COBOLом облачной эпохи https://kodikapusta.ru/news/1137-areny-zhalko Поддержать проект на boosty и читать в MAX

Kutta #tools #golang Это 2D-аэродинамическая труба, написанная на Go с Ebitengine, Ага, прям настоящая аэродинамическая труба
Kutta #tools #golang Это 2D-аэродинамическая труба, написанная на Go с Ebitengine, Ага, прям настоящая аэродинамическая труба, которая симулирует обтекание профиля крыла методом Lattice-Boltzmann и визуализирует поле скоростей, завихрения, линии дыма и векторы подъемной силы/сопротивления. Это не валидированная CFD-модель. Она правильно передает форму потока, но не точные числа Но как красиво! https://kodikapusta.ru/tools/28-kutta Поддержать проект на boosty и читать в MAX

SIMD для всех #zig Митчелл Хашимото утверждает, что SIMD незаслуженно считается сложным. Он на примере из своего терминала Gh
SIMD для всех #zig Митчелл Хашимото утверждает, что SIMD незаслуженно считается сложным. Он на примере из своего терминала Ghostty показывает, что "обработка N значений за раз" всегда сводится к одному и тому же шаблону из пяти шагов: размножить константы в вектор, загружать по одному вектору за итерацию, выполнить операцию сразу над всеми линиями, свернуть векторный результат в скаляр и дообработать остаток обычным циклом. Звучит просто, неправда ли? Он демонстрирует это на сканировании массива. 12 строк SIMD-кода дают ускорение до 5×, при этом компиляторы плохо справляются с авто-векторизацией таких циклов. Каждый разработчик должен узнавать ситуации, где применим SIMD, и не бояться его, потому что типовой паттерн осваивается быстро и не требует знания ассемблера или конкретных инструкций процессора А ты уже используешь SIMD? https://kodikapusta.ru/news/1138-simd-dlia-vsekh Поддержать проект на boosty и читать в MAX

687 ГБ аллокаций #golang Автор профилировал свою многопоточную реализацию Redis на Go и обнаружил, что одна строка кода s.kvL
687 ГБ аллокаций #golang Автор профилировал свою многопоточную реализацию Redis на Go и обнаружил, что одна строка кода s.kvList[k] = append(v[popped:], s.kvList[k]...) за время бенчмарка суммарно аллоцировала 687 ГБ памяти. Реально приложение держало в памяти лишь около 4,58 МБ. В чем прикол? Проблема была в том, что LPUSH каждый раз создавал новый массив и копировал весь существующий список, давая O(n²) по аллокациям, тогда как RPUSH использовал штатную стратегию роста слайсов с амортизированным O(1). Замена на deque с двумя индексами, растущий от середины в обе стороны, ускорила LPUSH в 33 раза, а аллокации упали с 715 ГБ до 27 ГБ Нужно быть внимательным https://kodikapusta.ru/news/1136-687-gb-allokatsii Поддержать проект на boosty и читать в MAX

Кста, канал в MAX теперь публичный и есть ссылка https://max.ru/channel_kodkapusta

HTMX с Go #golang Автор детально описывает свои паттерны интеграции HTMX с Go. Почитайте, там много всего интересного. Но мне
HTMX с Go #golang Автор детально описывает свои паттерны интеграции HTMX с Go. Почитайте, там много всего интересного. Но мне весь это веб всё еще не нравится. Любой HTML - это в первую очередь ебля со стилями. Я хотел бы, чтобы уже сделали как во Flutter или Qt, чтобы было очевидно, как выравнивать и форматировать блоки. А не вот это всё https://kodikapusta.ru/news/1135-htmx-s-go Поддержать проект на boosty и читать в MAX

Запускаем юникловскую футболку #fun Автор обнаружил на футболке Uniqlo из коллекции Akamai "Peace for All" обфусцированный ba
Запускаем юникловскую футболку #fun Автор обнаружил на футболке Uniqlo из коллекции Akamai "Peace for All" обфусцированный bash-скрипт. На спине напечатан небэнг и base64-закодированная строка, подаваемая в eval. После трудоемкого OCR и выверки расшифрованный скрипт оказался очень милой пасхалкой: бесконечная синусоидная анимация текста ♥PEACE♥FOR♥ALL♥ с цветовым градиентом от циана к оранжевому, бегущая по терминалу. Футболка отсылает к эпохе раннего интернета и Linux как "open-source языку интернета". Немножко компьютерной ностальгии для гиков и отличная рекламная кампания для Uniqlo https://kodikapusta.ru/news/1133-zapuskaem-iuniklovskuiu-futbolku Поддержать проект на boosty и читать в MAX

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

Виртуальная память #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