Category : golang

golang
Укрощение примитивов синхронизации: сравниваем решения задачи с построением пула потоков на С и Go

Эта статья основана на истории об одном личном челлендже. Нужно было помочь с реализацией взаимодействия компонентов в программном комплексе заказчика. Иными словами, понадобилось IPC для дальнейшего развития продукта. Вызов заключался в том, что в обязательных требованиях числилось использование чистого С. Другие языки, включая С++ и Go, не рассматривались. В итоге я получил интересный опыт системного и параллельного программирования. Меня зовут Алексей Буреев, я работаю старшим инженером по …

  • пятница, 15 марта 2024 г. в 00:00:12
golang
А ты хорошо знаешь Go? Держи пару полезностей по оптимизации кода

Привет, Хабр!Эта статья — моя подборка приёмов и техник, которые помогут писать лаконичный и производительный код на Go без лишних костылей и велосипедов.Речь пойдёт о:полезностях для конкурентного программированияприёмах в Go в целом, таких как использование iota, работа с ошибками, вывод интерфейса и т.д.методах оптимизации работы со слайсамиОбсудим, как избежать ненужной аллокации памяти, как быть с состоянием гонки, поговорим про компактность и лаконичность кода и ещё про массу полезных шт…

  • среда, 13 марта 2024 г. в 00:00:16
golang
Делаем RPG на Go: часть 0.5

В предыдущей статье мы начали знакомство с Ebitengine. В этой части структура игры будет доработана и переведена на сцены. Часть 0.5? Это вторая pre-1 часть, в которой разрабатывается отдельный демо-проект. Начинать делать RPG с нулевой базы было бы слишком сложно: я хочу использовать все свои любимые библиотеки и практики как можно раньше, при этом у меня не получилось придумать способа достаточно плавно вводить все составляющие на менее искусственном проекте. Возможно, уже следующая статья …

  • среда, 13 марта 2024 г. в 00:00:15
golang
Go на митап: обсудим sync.Pool, свой mini-k8s, паттерны и сообщения об ошибках

28 марта встречаемся на митапе по Go-разработке с инженерами из команд систем хранения данных и телекома YADRO, а также разработчиками из VK и AvitoTech. Эксперты расскажут, как: снизить нагрузку на сборщик мусора,сделать свой mini-k8s,написать библиотеку для обработки ошибок,использовать горутины грамотно и безопасно.Митап пройдет в Нижнем Новгороде и онлайн. Регистрируйтесь на встречу по ссылке и выбирайте удобный формат участия. Снижаем нагрузку на Garbage Collector и ускоряем работу с памя…

  • среда, 13 марта 2024 г. в 00:00:15
golang
Bazel, stamping, remote cache (часть 2)

В Bazel есть две крайне полезные фичи:stamping – позволяет встроить в артефакт данные о том, от какого коммита можно собрать аналогичный артефакт;remote cache и remote build – позволяет иметь общий кэш между сборщиками или даже собрать артефакты на ферме.Ранее, к сожалению, эти фичи были взаимоисключающими, но с версии Bazel 7.0 можно использовать stamping с remote cache при помощи scrubbing-а. Сегодня вышла версия Bazel 7.1, в которой появилась возможность использовать stamping с remote build…

  • вторник, 12 марта 2024 г. в 00:00:21
golang
Как я выживаю с диабетом при помощи Golang

В этом посте я расскажу, как воспользовался методологией управления инцидентами, чтобы справляться со сложным заболеванием. Надеюсь, вам понравится! Британцы любят выпить. Вы когда-нибудь задумывались, сколько граммов углеводов в пинте пива? А как насчёт бургера с картошкой? Или салата, который в меню обычно указан как блюдо с низким содержанием углеводов? Вы можете ответить: да кого это вообще волнует? Людей заботит съедаемое количество калорий, только когда они пытаются набрать или сбр…

  • вторник, 12 марта 2024 г. в 00:00:20
golang
Разработка игр с использованием Go и библиотеки Ebiten

Go является мощным и эффективным языком программирования, который можно использовать для создания игр. В этой статье мы рассмотрим разработку простой игры с использованием языка Go и библиотеки Ebiten, предназначенной для создания 2D игр.Что такое Ebiten?Ebiten - это простая и эффективная библиотека для создания 2D игр на языке Go. Она предоставляет удобные инструменты для рисования графики, обработки ввода и управления анимациями.Установка и настройкаПеред тем как начать разработку игры, вам …

  • суббота, 9 марта 2024 г. в 00:00:20
golang
Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

Пару недель назад я прочитал о запавшем мне в душу челлендже по обработке миллиарда строк, поэтому захотел решить его на Go.Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничен…

  • пятница, 8 марта 2024 г. в 00:00:16
golang
Структурированное логирование в Go с помощью Slog

Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчиков Google Go наконец-то представила Slog — высокопроизводительный пакет для структурированного ведения логов в стандартной библиотеке Go. Мы перевели гайд о возможностях slog.ПредысторияПакет Slog берет свое начало в дискуссии на GitHub, открытой Джонатаном …

  • среда, 6 марта 2024 г. в 00:00:16