Код и Капуста
1.58K subscribers
2.68K photos
62 videos
3 files
2.97K links
Авторский канал с интересными ссылками про разработку на Go, Rust, Godot, Flutter, Android, iOS, Aurora. Все ссылки тут https://kodikapusta.ru/

Реклама https://kodikapusta.ru/ads

Для связи @akovardin

Поддержать канал https://boosty.to/kodikapusta
Download Telegram
Хотрелоад

Горячая перезагрузка в gamedev на Rust обычно используется только для данных - чтобы обновлять ресурсы без перезапуска игры. Но хочется большего: использовать сам Rust как скриптовый язык с возможностью горячей перезагрузки кода. Так не придётся подключать другой язык, плодить сложное API и терять время на преобразование типов. В этой статье разберемся, как настроить такой подход для разработки

#rust

https://kodikapusta.ru/news/426a-khotreload
🔥3
Антиишники

Антирез красиво написал. том, что времена меняются. И становится антиишником не выгодно

Отказ от ИИ не поможет ни тебе, ни твоей карьере. Подумай об этом. Тестируй эти новые инструменты тщательно, в течение нескольких недель, а не в рамках пятиминутного теста, который лишь укрепит твои собственные убеждения. Найдите способ приумножить себя, а если у вас не получается, пробуйте снова и снова, каждые несколько месяцев.

Аминь

#ai

https://kodikapusta.ru/news/9h02-antiishniki
👍52
Запилил библиотеку для работы с ОРД (Оператор Рекламных Данных) ВК — https://github.com/akovardin/goord.
Протестил на песочнице. Надеюсь, если вы пишете рекламные системы, то эта либа немного упростит вам жизнь.
🔥5
Локи или атомики?

Являются ли атомарные операции более быстрыми и эффективными, чем мьютексы? Это зависит от ситуации

В этой статье рассмотрим атомарные операции и мьютексы, их различия в производительности и поведении, а также случаи, когда что уместно использовать

Начнём с рассмотрения средств управления параллелизмом и того, как атомарные операции и мьютексы принципиально по-разному защищают общие данные

#golang

https://kodikapusta.ru/news/n4e7-loki-ili-atomiki
👍2
Tansu

Нашел такую штуку - Tansu. Это полная замена Apache Kafka, использующая в качестве движков хранения PostgreSQL, libSQL (SQLite), S3 или оперативную память. Топики с определённой схемой (Avro, JSON или Protocol buffers) могут записываться в формате таблиц Apache Iceberg или Delta Lake

А в статье автор показывает как запустить его на минимальном инстансе

#rust

https://kodikapusta.ru/news/gnla-tansu
👍6😁1
Церковь Христианской науки

На самом деле это бывшая церковь, сейчас там интернет-архив. Ага, тот самый, котрый борется с забвением в интеренете. Это штаб-квартира Internet Archive, некоммерческой библиотеки, которая взяла на себя сизифов труд - записать всю цифровую историю человеческой цивилизации

#fun

https://kodikapusta.ru/news/w6x9-tserkov-khristianskoi-nauki
🔥5
Система сборки Go

Наверное, вы десятки раз в неделю набираете go build или go run, не особо вдаваясь в детали. Со стороны это похоже на магию: нажал Enter - и код компилируется, собирается, а иногда и сразу запускается. Но за этой простотой скрывается продуманная система, которая делает жизнь разработчика удобнее, а работу машин - быстрой и предсказуемой.

Разобраться в том, как Go собирает, запускает и кэширует код, полезно не просто для общего развития. Это помогает понять, почему инкрементные сборки такие быстрые, почему CI-пайплайны работают стабильно и почему порой даже маленькое изменение может заставить пересобрать всё с нуля. В этой статье мы посмотрим на современный тулчейн Go и освоим модель, на которую можно опереться в работе

#golang

https://kodikapusta.ru/news/13d3-sistema-sborki-go
🔥2
Rustlings

А во сколько лет вы узнали что есть такое?

Rustlings - небольшие упражнения, которые помогут вам привыкнуть к чтению и написанию кода на Rust. Учитесь, исправляя запрятанные ошибки и наблюдая за компиляцией вашего кода.

#rust

https://kodikapusta.ru/news/073y-rustlings
3
Фармим симулятор

Загрузил для вас, мои хорошие, туториал по созданию фарминг симулятора на 25 эпизодов, но все в одном обльшом видосе. Ссылки на ассеты и исходники прилагаютя

#godot

https://kodikapusta.ru/news/4kbu-farmim-simuliator
👍31
Лучший менеджер пакетов

Вот вам мысленный эксперимент. Что, если бы в Ruby был require "github.com/rails/rails" и вы использовали go get для его получения? Укажите в GOPATH путь к загрузкам Ruby пакетов, и модули Go станут вашим транспортным уровнем. Команда Go не планировала этого делать. Но это работает

А все благодаря децентрализации

#golang

https://kodikapusta.ru/news/2513-luchshii-menedzher-paketov
👍21😁1
Пердолинг Wii

Максимально бесполезная статья, но очень увлекательная. Автор нашел способ публиковать новости в новостных каналах на Wii. И еще немножко Go для этого исопльзовал

Вот откуда у людей столько времени?

#golang

https://kodikapusta.ru/news/57jg-perdoling-wii
1👍1
История маркдаун

Почти все в мире высоких технологий, от самых передовых систем искусственного интеллекта в крупнейших компаниях до случайных фрагментов кода, наспех написанных студентами, аннотировано и описано в одном и том же простом текстовом формате. Независимо от того, пытаетесь ли вы дать сложные инструкции ChatGPT, хотите ли вы обменяться списком покупок в Apple Notes или скопировать чью-то домашнюю работу в Google Docs, этот формат вам подойдёт. Самое удивительное, что этот формат был создан не конгломератом технологических магнатов, а ворчливым парнем с добрым сердцем, который прямо сейчас, вероятно, пересматривает фильм Кубрика, болея за совершенно бездарную спортивную команду

#learn #fun

https://kodikapusta.ru/news/17dk-istoriia-markdaun
3
Файловое хранилище

Видос на 10 часов в котором узнаем, как создать децентрализованную, полностью распределённую систему хранения файлов с контентной адресацией на Go, которая умеет работать и стримить даже очень большие файлы. В этом курсе мы разберём проектирование системы, низкоуровневое программирование и сетевые протоколы - и всё это на примере реального, практичного и масштабируемого приложения.

#golang #db

https://kodikapusta.ru/news/uax2-raspredelennoe-failovoe-khranilishche
🔥21
Свой компилятор

Автор покажет как сделать простой компилятор, который умеет превращать арифметические выражения в объектные файлы

Поддерживаются операции сложения и умножения, можно использовать скобки, чтобы менять порядок вычислений. Константы пока не работают - только целочисленные переменные (символы).

Сгенерированный объектный файл будет ссылаться на внешние переменные (например, a, b, c, d), которые можно определить в другом объектном файле - например, на C. Итоговый код можно собрать и слинковать вместе с другими программами.

По сути, это основа для экспериментального компилятора, который можно развивать дальше.

#golang

https://kodikapusta.ru/news/6zg7-svoi-kompiliator
1🔥1
Freenet

Я тут наткнулся на еще один вариант федеративного интернета - Freenet. Это одноранговая сеть, которая заменяет клиент-серверную структуру современной сети на сеть равноправных узлов. Каждый компьютер, на котором запущено ядро Freenet, хранит и обрабатывает данные, поэтому ни одна сторона не может блокировать, подвергать цензуре или монетизировать доступ.

А по ссылка как раз пример, как написать распределенный чат на Rust для сети Freenet

#rust

https://kodikapusta.ru/news/9sua-freenet
1
Плавающие точки

Расс Кокс в этой статье рассказывает про новый быстрый и простой алгоритм для преобразования чисел с плавающей точкой в десятичные строки и обратно. Основная идея - использовать операцию масштабирования без округления, которая приближённо вычисляет x 2^e 10^p за одно 64-битное умножение. На этой основе строятся почти тривиальные алгоритмы форматирования (в том числе с минимальным количеством цифр) и парсинга, которые работают быстрее всех известных аналогов, включая Ryū, Dragonbox и Eisel-Lemire. Алгоритмы реализованы в Go, ожидается их включение в Go 1.27

#golang

https://kodikapusta.ru/news/44q7-plavaiushchie-tochki
🔥71
Паника

В Go продолжаются споры о том, когда использовать панику, а когда - ошибки. Паника может возникать не только из-за явного вызова panic(), но и из-за ошибок времени выполнения, например, разыменования nil-указателя или выхода за границы среза. Функция recover() позволяет восстановить выполнение после паники, но только если она вызвана непосредственно внутри отложенной функции и в той же горутине, где произошла паника. Несоблюдение этих правил - частая причина сбоев. Для надёжной обработки паники в конкурентных сценариях рекомендуется использовать вспомогательные обёртки (например, на основе errgroup), которые автоматически преобразуют панику в ошибку и гарантируют, что ни одна горутина не обрушит всё приложение. Понимание этих нюансов поможет избежать скрытых багов и сделать код стабильнее.

#golang

https://kodikapusta.ru/news/6719-panika
🫡21
Я любил этот фронтенд

14 февраля пройдет самая крупная конференция Яндекса для фронтенд-разработчиков — «Я 💛 Фронтенд».

На одной площадке соберутся лучшие эксперты индустрии, чтобы поделиться опытом, дать прикладные советы по развитию навыков и зарядить на новые идеи.

#events

https://kodikapusta.ru/events/087q-ya-love-frontend-2026
1👍1👎1
Социальные файлы

Так получилось, что последнее время много про федеративный интернет. Вот в этой статье предлагается перенести парадигму файлов в социальные сети: всё, что пользователь создаёт (посты, лайки, подписки), должно храниться в виде файлов в его персональной папке, а приложения - лишь отражать эти данные. Это обеспечивает независимость данных от конкретного софта, позволяет свободно переключаться между приложениями и гарантирует, что информация переживёт сами сервисы. В основе этой идеи лежит протокол AT, используемый в Bluesky и других открытых социальных сетях. Данные представляются в виде записей (records) с чёткими схемами (лексиконами), организованных в коллекции по доменным именам создателей форматов. Такой подход создаёт распределённую социальную файловую систему, где приложения реагируют на файлы, а не наоборот, возвращая контроль над данными пользователю.

#kod

https://kodikapusta.ru/news/57rm-sotsial-nye-faily
1👍1
Смотрите что у меня есть
👍20🔥114
Дженерики в методах

В этом пропозале описывается как можно было бы объявлять параметризованные методы для конкретных типов в Go. Методы смогут объявлять свои собственные параметры типа, как это уже делают функции, но привязанные к получателю. При этом такие методы не смогут удовлетворять интерфейсам, так как интерфейсы по-прежнему не будут поддерживать методы с параметрами типа. Цель - позволить разработчикам организовывать код удобнее (например, через цепочки вызовов x.a().b().c()) и использовать преимущества дженериков в методах, даже если они не предназначены для полиморфизма через интерфейсы. Изменение полностью обратно совместимо, синтаксически метод становится просто функцией с получателем, и вызов работает через явные аргументы типа или их выведение

Параметр параметра мараметров параметры

#golang

https://kodikapusta.ru/news/64b0-dzheneriki-v-motodakh
1