Category : golang

golang
Эволюция Гофера: как нелепый грызун стал иконой Go

Каждый создатель языка программирования мечтает о своем символе. Кто-то рисует змей, слонов, кто-то выбирает чашки кофе… Но Go пошёл по другому пути и сделал своим маскотом существо, которое выглядит как нечто среднее между морской свинкой, бобром и кроликом.Меня зовут Дмитрий Буров, я Golang-разработчик, автор Telegram-канала Go Advocate, и лидер внутреннего Go-сообщества в Lamoda Tech. Расскажу историю создания Гофера (Gopher) – от идеи до финального образа, который вы привыкли видеть, и доп…

  • среда, 3 декабря 2025 г. в 00:00:04
golang
Симуляция воды для игр на Go: простая физика частиц

Команда Go for Devs подготовила перевод статьи о том, как на Go и raylib-go построить лёгкую симуляцию воды на клеточном автомате. Автор шаг за шагом добавляет гравитацию, боковой поток, диагональное давление и препятствия — и в итоге получает частичную физику, больше похожую на «песочный» движок для 2D-игр.В этом посте мы будем использовать raylib-go, чтобы создать лёгкую симуляцию воды для 2D-игр. Цель — получить модель воды, которая выглядит естественно, «течёт» как настоящая и создаёт ощуще…

  • вторник, 2 декабря 2025 г. в 00:00:08
golang
Анализ проекта VictoriaMetrics

Всем привет! Мы давно и усердно работаем по направлению наблюдаемости и регулярно находим интересные статьи. Например, в этой вы узнаете подробности об устройства популярной системы хранения временных рядов — VictoriaMetrics. Перевод мы сделали специально для телеграм-канала Мониторим ИТ. Подписывайтесь! Там еще больше полезных постов о мониторинге.Раскрываем возможности VictoriaMetrics: подробное изучение архитектуры, ключевых файлов Go и структуры проектаVictoriaMetrics — это высокопроизводит…

  • вторник, 2 декабря 2025 г. в 00:00:07
golang
Миссия выполнима: как мы добились актуальности двух тысяч кешей

Привет! Меня зовут Влад, и я разрабатываю сердце витрины Ozon — сервис product-facade. Пару лет назад мы уже делились нашим опытом в этой статье, но с тех пор многое изменилось: выросли нагрузки, появились новые фичи и оптимизации, система стала сложнее и надёжнее. Прежде чем перейти непосредственно к актуальности кешей, давайте разберёмся, почему это так важно. Представьте: вы добавляете товар в корзину, но что-то пошло не так, и покупку совершить не удаётся — склад больше не возит в ваш ПВЗ. …

  • воскресенье, 30 ноября 2025 г. в 00:00:04
golang
Monkey patching? В Go? Серьёзно? Или как писать тесты и не сойти сума

На днях подходит ко мне коллега с вопросом: «Слушай, а как в Go сделать замену логики функции в тесте?»Я уточняю, что он имеет в виду. А он такой: «Ну, хочу monkey patching, чтобы подменять функции из коробки. Типа time.Now возвращала фиксированное время, uuid.New конкретный ID. Чтобы удобно тестироваться».И тут я, конечно, немного завис :DДа, технически в Go есть способы делать monkey patching (еще и есть библиотека) через unsafe, через подмену указателей на функции в рантайме. Но это настольк…

  • суббота, 29 ноября 2025 г. в 00:00:04
golang
Floxy — лёгкий Saga Workflow Engine на Go

Большинство современных систем — это не просто код, выполняющий запросы, а последовательности действий, которые должны выполняться атомарно и восстанавливаться при сбое. Речь идёт не о бизнес-логике в пределах одной функции, а об оркестрации процессов: цепочках шагов, где каждая операция может завершиться ошибкой, требующей компенсации.Такую задачу решает паттерн Saga — один из самых сложных и важных архитектурных паттернов. Он описывает, как выполнить серию распределённых операций с возможност…

  • пятница, 28 ноября 2025 г. в 00:00:08
golang
Как наткнуться на Data Race в Go

Перевод статьи "A million ways to die from a data race in Go" от Philippe Gaultier, которую он опубликовал в личном блоге. Предполагается, что изложенный материал будет полезен разработчикам, уже имеющим какой-то практический опыт работы с Go.Я занимаюсь созданием production-приложений на Go уже несколько лет. Мне нравятся некоторые особенности Go, но есть и то, чему вряд ли можно дать положительную оценку - например, это то, как легко можно наткнуться на непреднамеренный Data Race.Data…

  • пятница, 28 ноября 2025 г. в 00:00:07
golang
quic-test: открытый инструмент для тестирования QUIC, BBRv3 и FEC в реальных условиях

Статья подготовлена в рамках исследовательского проекта CloudBridge Research, посвященного оптимизации сетевых протоколов (BBRv3, MASQUE, FEC, QUIC).Проект: github.com/twogc/quic-testВидео-демонстрация работы quic-testПредысторияРанее мы публиковали на Хабре результаты наших исследований современных сетевых протоколов. В статье «CloudBridge Research: открываем результаты исследований QUIC/MASQUE и приглашаем к сотрудничеству» мы рассказали о нашей исследовательской инициативе и о том, зачем мы …

  • четверг, 27 ноября 2025 г. в 00:00:14
golang
Забавный парадокс отправки в канал в Go

Коллега давеча показал любопытный "фокус", который вызвал изрядный спор в рабочем канальчике посвящённом Golang. Сначала обозвали коллегу двоечником, мол синхронизацию забыл - но выходит что дело тоньше и выдаёт небольшую неконсистентность эволюции средств языка, в частности каналов.Вот он код - он использует новую фичу из 1.24, synctest.Wait() - дело не в ней самой, но кажется на текущий момент это единственный способ "вскрыть" проблему (UPD - нет не единственный, смотри примеч…

  • четверг, 27 ноября 2025 г. в 00:00:13