Хотрелоад
Горячая перезагрузка в gamedev на Rust обычно используется только для данных - чтобы обновлять ресурсы без перезапуска игры. Но хочется большего: использовать сам Rust как скриптовый язык с возможностью горячей перезагрузки кода. Так не придётся подключать другой язык, плодить сложное API и терять время на преобразование типов. В этой статье разберемся, как настроить такой подход для разработки
#rust
https://kodikapusta.ru/news/426a-khotreload
Горячая перезагрузка в gamedev на Rust обычно используется только для данных - чтобы обновлять ресурсы без перезапуска игры. Но хочется большего: использовать сам Rust как скриптовый язык с возможностью горячей перезагрузки кода. Так не придётся подключать другой язык, плодить сложное API и терять время на преобразование типов. В этой статье разберемся, как настроить такой подход для разработки
#rust
https://kodikapusta.ru/news/426a-khotreload
🔥3
Антиишники
Антирез красиво написал. том, что времена меняются. И становится антиишником не выгодно
Отказ от ИИ не поможет ни тебе, ни твоей карьере. Подумай об этом. Тестируй эти новые инструменты тщательно, в течение нескольких недель, а не в рамках пятиминутного теста, который лишь укрепит твои собственные убеждения. Найдите способ приумножить себя, а если у вас не получается, пробуйте снова и снова, каждые несколько месяцев.
Аминь
#ai
https://kodikapusta.ru/news/9h02-antiishniki
Антирез красиво написал. том, что времена меняются. И становится антиишником не выгодно
Отказ от ИИ не поможет ни тебе, ни твоей карьере. Подумай об этом. Тестируй эти новые инструменты тщательно, в течение нескольких недель, а не в рамках пятиминутного теста, который лишь укрепит твои собственные убеждения. Найдите способ приумножить себя, а если у вас не получается, пробуйте снова и снова, каждые несколько месяцев.
Аминь
#ai
https://kodikapusta.ru/news/9h02-antiishniki
👍5❤2
Запилил библиотеку для работы с ОРД (Оператор Рекламных Данных) ВК — https://github.com/akovardin/goord.
Протестил на песочнице. Надеюсь, если вы пишете рекламные системы, то эта либа немного упростит вам жизнь.
Протестил на песочнице. Надеюсь, если вы пишете рекламные системы, то эта либа немного упростит вам жизнь.
GitHub
GitHub - akovardin/goord: Go клиент для работы с VK ОРД
Go клиент для работы с VK ОРД. Contribute to akovardin/goord development by creating an account on GitHub.
🔥5
Локи или атомики?
Являются ли атомарные операции более быстрыми и эффективными, чем мьютексы? Это зависит от ситуации
В этой статье рассмотрим атомарные операции и мьютексы, их различия в производительности и поведении, а также случаи, когда что уместно использовать
Начнём с рассмотрения средств управления параллелизмом и того, как атомарные операции и мьютексы принципиально по-разному защищают общие данные
#golang
https://kodikapusta.ru/news/n4e7-loki-ili-atomiki
Являются ли атомарные операции более быстрыми и эффективными, чем мьютексы? Это зависит от ситуации
В этой статье рассмотрим атомарные операции и мьютексы, их различия в производительности и поведении, а также случаи, когда что уместно использовать
Начнём с рассмотрения средств управления параллелизмом и того, как атомарные операции и мьютексы принципиально по-разному защищают общие данные
#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
Нашел такую штуку - 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
На самом деле это бывшая церковь, сейчас там интернет-архив. Ага, тот самый, котрый борется с забвением в интеренете. Это штаб-квартира 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
Наверное, вы десятки раз в неделю набираете 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
А во сколько лет вы узнали что есть такое?
Rustlings - небольшие упражнения, которые помогут вам привыкнуть к чтению и написанию кода на Rust. Учитесь, исправляя запрятанные ошибки и наблюдая за компиляцией вашего кода.
#rust
https://kodikapusta.ru/news/073y-rustlings
❤3
Фармим симулятор
Загрузил для вас, мои хорошие, туториал по созданию фарминг симулятора на 25 эпизодов, но все в одном обльшом видосе. Ссылки на ассеты и исходники прилагаютя
#godot
https://kodikapusta.ru/news/4kbu-farmim-simuliator
Загрузил для вас, мои хорошие, туториал по созданию фарминг симулятора на 25 эпизодов, но все в одном обльшом видосе. Ссылки на ассеты и исходники прилагаютя
#godot
https://kodikapusta.ru/news/4kbu-farmim-simuliator
👍3❤1
Лучший менеджер пакетов
Вот вам мысленный эксперимент. Что, если бы в Ruby был require "github.com/rails/rails" и вы использовали go get для его получения? Укажите в GOPATH путь к загрузкам Ruby пакетов, и модули Go станут вашим транспортным уровнем. Команда Go не планировала этого делать. Но это работает
А все благодаря децентрализации
#golang
https://kodikapusta.ru/news/2513-luchshii-menedzher-paketov
Вот вам мысленный эксперимент. Что, если бы в Ruby был require "github.com/rails/rails" и вы использовали go get для его получения? Укажите в GOPATH путь к загрузкам Ruby пакетов, и модули Go станут вашим транспортным уровнем. Команда Go не планировала этого делать. Но это работает
А все благодаря децентрализации
#golang
https://kodikapusta.ru/news/2513-luchshii-menedzher-paketov
👍2❤1😁1
Пердолинг Wii
Максимально бесполезная статья, но очень увлекательная. Автор нашел способ публиковать новости в новостных каналах на Wii. И еще немножко Go для этого исопльзовал
Вот откуда у людей столько времени?
#golang
https://kodikapusta.ru/news/57jg-perdoling-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
Почти все в мире высоких технологий, от самых передовых систем искусственного интеллекта в крупнейших компаниях до случайных фрагментов кода, наспех написанных студентами, аннотировано и описано в одном и том же простом текстовом формате. Независимо от того, пытаетесь ли вы дать сложные инструкции 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
Видос на 10 часов в котором узнаем, как создать децентрализованную, полностью распределённую систему хранения файлов с контентной адресацией на Go, которая умеет работать и стримить даже очень большие файлы. В этом курсе мы разберём проектирование системы, низкоуровневое программирование и сетевые протоколы - и всё это на примере реального, практичного и масштабируемого приложения.
#golang #db
https://kodikapusta.ru/news/uax2-raspredelennoe-failovoe-khranilishche
🔥2❤1
Свой компилятор
Автор покажет как сделать простой компилятор, который умеет превращать арифметические выражения в объектные файлы
Поддерживаются операции сложения и умножения, можно использовать скобки, чтобы менять порядок вычислений. Константы пока не работают - только целочисленные переменные (символы).
Сгенерированный объектный файл будет ссылаться на внешние переменные (например, a, b, c, d), которые можно определить в другом объектном файле - например, на C. Итоговый код можно собрать и слинковать вместе с другими программами.
По сути, это основа для экспериментального компилятора, который можно развивать дальше.
#golang
https://kodikapusta.ru/news/6zg7-svoi-kompiliator
Автор покажет как сделать простой компилятор, который умеет превращать арифметические выражения в объектные файлы
Поддерживаются операции сложения и умножения, можно использовать скобки, чтобы менять порядок вычислений. Константы пока не работают - только целочисленные переменные (символы).
Сгенерированный объектный файл будет ссылаться на внешние переменные (например, 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
Я тут наткнулся на еще один вариант федеративного интернета - 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
Расс Кокс в этой статье рассказывает про новый быстрый и простой алгоритм для преобразования чисел с плавающей точкой в десятичные строки и обратно. Основная идея - использовать операцию масштабирования без округления, которая приближённо вычисляет x 2^e 10^p за одно 64-битное умножение. На этой основе строятся почти тривиальные алгоритмы форматирования (в том числе с минимальным количеством цифр) и парсинга, которые работают быстрее всех известных аналогов, включая Ryū, Dragonbox и Eisel-Lemire. Алгоритмы реализованы в Go, ожидается их включение в Go 1.27
#golang
https://kodikapusta.ru/news/44q7-plavaiushchie-tochki
🔥7❤1
Паника
В Go продолжаются споры о том, когда использовать панику, а когда - ошибки. Паника может возникать не только из-за явного вызова panic(), но и из-за ошибок времени выполнения, например, разыменования nil-указателя или выхода за границы среза. Функция recover() позволяет восстановить выполнение после паники, но только если она вызвана непосредственно внутри отложенной функции и в той же горутине, где произошла паника. Несоблюдение этих правил - частая причина сбоев. Для надёжной обработки паники в конкурентных сценариях рекомендуется использовать вспомогательные обёртки (например, на основе errgroup), которые автоматически преобразуют панику в ошибку и гарантируют, что ни одна горутина не обрушит всё приложение. Понимание этих нюансов поможет избежать скрытых багов и сделать код стабильнее.
#golang
https://kodikapusta.ru/news/6719-panika
В Go продолжаются споры о том, когда использовать панику, а когда - ошибки. Паника может возникать не только из-за явного вызова panic(), но и из-за ошибок времени выполнения, например, разыменования nil-указателя или выхода за границы среза. Функция recover() позволяет восстановить выполнение после паники, но только если она вызвана непосредственно внутри отложенной функции и в той же горутине, где произошла паника. Несоблюдение этих правил - частая причина сбоев. Для надёжной обработки паники в конкурентных сценариях рекомендуется использовать вспомогательные обёртки (например, на основе errgroup), которые автоматически преобразуют панику в ошибку и гарантируют, что ни одна горутина не обрушит всё приложение. Понимание этих нюансов поможет избежать скрытых багов и сделать код стабильнее.
#golang
https://kodikapusta.ru/news/6719-panika
🫡2❤1
Я любил этот фронтенд
14 февраля пройдет самая крупная конференция Яндекса для фронтенд-разработчиков — «Я 💛 Фронтенд».
На одной площадке соберутся лучшие эксперты индустрии, чтобы поделиться опытом, дать прикладные советы по развитию навыков и зарядить на новые идеи.
#events
https://kodikapusta.ru/events/087q-ya-love-frontend-2026
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
Так получилось, что последнее время много про федеративный интернет. Вот в этой статье предлагается перенести парадигму файлов в социальные сети: всё, что пользователь создаёт (посты, лайки, подписки), должно храниться в виде файлов в его персональной папке, а приложения - лишь отражать эти данные. Это обеспечивает независимость данных от конкретного софта, позволяет свободно переключаться между приложениями и гарантирует, что информация переживёт сами сервисы. В основе этой идеи лежит протокол AT, используемый в Bluesky и других открытых социальных сетях. Данные представляются в виде записей (records) с чёткими схемами (лексиконами), организованных в коллекции по доменным именам создателей форматов. Такой подход создаёт распределённую социальную файловую систему, где приложения реагируют на файлы, а не наоборот, возвращая контроль над данными пользователю.
#kod
https://kodikapusta.ru/news/57rm-sotsial-nye-faily
❤1👍1
Дженерики в методах
В этом пропозале описывается как можно было бы объявлять параметризованные методы для конкретных типов в Go. Методы смогут объявлять свои собственные параметры типа, как это уже делают функции, но привязанные к получателю. При этом такие методы не смогут удовлетворять интерфейсам, так как интерфейсы по-прежнему не будут поддерживать методы с параметрами типа. Цель - позволить разработчикам организовывать код удобнее (например, через цепочки вызовов x.a().b().c()) и использовать преимущества дженериков в методах, даже если они не предназначены для полиморфизма через интерфейсы. Изменение полностью обратно совместимо, синтаксически метод становится просто функцией с получателем, и вызов работает через явные аргументы типа или их выведение
Параметр параметра мараметров параметры
#golang
https://kodikapusta.ru/news/64b0-dzheneriki-v-motodakh
В этом пропозале описывается как можно было бы объявлять параметризованные методы для конкретных типов в Go. Методы смогут объявлять свои собственные параметры типа, как это уже делают функции, но привязанные к получателю. При этом такие методы не смогут удовлетворять интерфейсам, так как интерфейсы по-прежнему не будут поддерживать методы с параметрами типа. Цель - позволить разработчикам организовывать код удобнее (например, через цепочки вызовов x.a().b().c()) и использовать преимущества дженериков в методах, даже если они не предназначены для полиморфизма через интерфейсы. Изменение полностью обратно совместимо, синтаксически метод становится просто функцией с получателем, и вызов работает через явные аргументы типа или их выведение
Параметр параметра мараметров параметры
#golang
https://kodikapusta.ru/news/64b0-dzheneriki-v-motodakh
❤1