Category : golang

golang
Go напишем шахматный сервер? Часть вторая — структуры, интерфейсы и методы

В предыдущей части были сформулированы общие для всех фигур свойства и основные алгоритмы, которые позволят нам анализировать ситуацию на доске. Вот только как всё это реализовать в коде?ФигурыВ Go можно представить некий объект как структуру:type BaseFigure struct { IsWhite bool Type byte CellCoordinates [2]int }Структура BaseFigure содержит информацию о цвете, типе и координатах фигуры. Для этой обезличенной фигуры мы можем создавать различные методы (функции, работающ…

  • четверг, 30 мая 2024 г. в 00:00:11
golang
Рецепт приготовления непрерывного профайлера в 2к24

Всем привет! Меня зовут Газимагомед, я занимаюсь разработкой внутреннего распределённого профайлера Vision в Ozon. В этой статье я раскрою понятие профиля, расскажу о том, что такое распределённый профайлинг, чем отличается автоматический сбор профилей от ручного. А также рассмотрим проблемы, возникающие при построении профайлера. Что ж, усаживайтесь поудобнее, мы начинаем. Глава 1. Закладываем фундаментЧто такое профильНачнём с базы, а именно с того, что же такое профиль. Если без нудятины из …

  • среда, 29 мая 2024 г. в 00:00:08
golang
Structured concurrency в языке Go

Горутины виснут непонятно почему, случайная запись в закрытый канал вызывает panic, нормально протестировать приложение вообще невозможно. Наверняка многие из вас сталкивались с такой проблемой: синтаксис языка Go вроде бы очень простой, можно сказать примитивный, да и горутины создаются элементарно, но при этом написать мало-мальски серьёзную программу, которая конкурентно что-то делает, внезапно оказывается не так-то просто. Чтобы не запутаться, люди придумали концепцию structured concurrency…

  • вторник, 28 мая 2024 г. в 00:00:08
golang
Три оттенка Kubernetes Operator, или чем слушает Prometheus

00. О чёмВашему вниманию предлагается вольное описание работы некоторых компонентов Кубернетес Операторов, с которыми приходится иметь дело как в эксплуатации уже написанных кем-то, так и при разработке собственного Оператора. Чтобы лучше разобраться, как реализован функционал этих компонентов, для наглядности, позволю себе рассмотреть Golang сорс-код Prometheus Оператора для мониторинга и Оператора Hashicorp Vault для управления секретами в Кубернетес, архитектура которых разработана с примене…

  • понедельник, 27 мая 2024 г. в 00:00:12
golang
Generic Concurrency в Go

Привет, гоферы!В этой статье я хочу поделиться мыслями и идеями, которые у меня накопились за время работы с дженериками в Go, и в частности о том, как шаблоны многозадачности могут стать более удобными и переиспользуемыми с помощью дженериков.TL;DRДженерики и горутины (и итераторы в будущем) – это отличные инструменты, которые мы можем использовать для параллельной обработки данных в общем виде.В этой статье мы рассмотрим возможности их совместного использования.ВступлениеДавайте сформируем ко…

  • воскресенье, 26 мая 2024 г. в 00:00:08
golang
Protobuf и buf: блеск, нищета и импортозамещение

Если для компиляции proto-файлов вы всё ещё используете protoc, самое время перестать и перейти на buf. Разберём, как это сделать и почему это необходимо. Также рассмотрим проблемы доступа к buf.build.Меня зовут Эдгар Сипки, я Go-разработчик в Ozon Fintech. buf — мощная утилита для линтинга протофайлов, проверки обратной совместимости API, генерации кода и валидации запросов. Однако, из-за санкций она недоступна в России. Поэтому я расскажу, как мы разрабатывали собственное решение в рамках имп…

  • суббота, 25 мая 2024 г. в 00:00:16
golang
От и Go: доклады для гоферов про инструменты для фаззинга, kuber-кластер на Go и не только

Бывает, что перед инженерами встает выбор: найти подходящее решение для задачи или написать свое. И часто разработчики предпочитают второй вариант.Большинство докладов в этой подборке — инструкции по созданию кастомных решений, которые инженеры и разработчики из YADRO, Avito Tech, Ozon Fintech и других технологических компаний уже опробовали на собственных продуктах. Если вашей команде не хватает инструмента для фаззинга или обработки ошибок на Go — можете сделать их по примерам, которые предст…

  • пятница, 24 мая 2024 г. в 00:00:10
golang
Как я бэкенд для интернет-магазина пилил…

Привет, читатель! Это моя самая первая статья на тему программирования, на написание которой меня побудил интерес к микросервисной архитектуре.Первые строки кода.. Для начала я решил написать всё в монолитной архитектуре так как в силу своего опыта не имел дело с микросервисами и выбрал следующий стек технологий: PythonFastAPIPostgreSQLПримерная схема БД На моё удивление я быстро написал методы API к такой структуре БД, даже успел накинуть тесты) Эта схема выглядит вполне расширяемой …

  • среда, 22 мая 2024 г. в 00:00:20
golang
Vo(IP) Really Simple: пишем простое VoIP решение

Будучи поклонником suckless философии, минимализма и простоты в программном обеспечении, я не нахожу простых и маленьких VoIP решений. Программ связанных с VoIP очень много. Но это либо колоссальные системы для построения SIP-based экосистемы, либо что-то из мира WebRTC. Особняком выделяю Mumble -- популярное решение среди геймеров: централизованный сервер, указываешь его адрес и вот уже слышишь в наушниках другого человека. А нет ли чего ещё попроще?Чего я хочу? Просто указать адрес сервера, в…

  • среда, 22 мая 2024 г. в 00:00:19