Category : golang

golang
Go + Minio: как написать простой сервер для взаимодействия с файлами

Добрейшего! Недавно мой друг решил хранить картинки продуктов на сервере, в отдельной папочке, выдав ей публичный доступ. Что ж, эту статью я пишу чтобы рассказать другу плюсы и минусы, а так же показать как можно делать иначе. Если вы только изучаете go, начинаете писать сервера, то обязательно посмотрите эту статью - для бекендера уметь работать с s3 хранилищем так же важно, как и уметь работать с реляционной / нереляционной базой данных и с key-value базой - это основа основ.одно из самых до…

  • воскресенье, 2 июня 2024 г. в 00:00:15
golang
С Python на Go и обратно: мой опыт

Привет! Меня зовут Денис, я ведущий Golang-разработчик в МТС Диджитал. Еще год назад я работал экспертом по запуску новых сервисов и услуг в Корпоративном центре МТС и параллельно заканчивал курс «Продвинутый Go‑разработчик» от Практикума.В этой статье я расскажу, как начал программировать на Python и зачем мне понадобился Go, как и чему я учился и почему теперь посматриваю на Rust.  Начну с моего пути в разработчики, но если вам не интересна эта часть, смело листайте в середину — там много пол…

  • пятница, 31 мая 2024 г. в 00:00:13
golang
Ужасно подробные ошибки в API: пишем на Go инструмент для работы с ними

Привет, Хабр! Меня зовут Александр Лырчиков, я разрабатываю систему хранения данных TATLIN.UNIFIED в YADRO. СХД — сложная система, и, если при работе произошла ошибка, она должна своевременно и понятно сообщать пользователю об этом. В большинстве веб-сервисов для этого используют баннер с надписью «Что-то пошло не так», но такой способ уведомления нам не подходит. Мы столкнулись с проблемой, когда переданных сообщений и HTTP-кодов уже не хватает. Поэтому разработали собственный инструмент для о…

  • пятница, 31 мая 2024 г. в 00:00:12
golang
Интересный пример кода на Go и зашоренность мышления

Данная история началась с того, что как-то коллега скинула в телеграмм чат команды пример (на Go)type field struct { name string } func (p *field) print() { fmt.Println(p.name) } func main() { data := []field{{"one"},{"two"},{"three"}} for _,v := range data { go v.print() } time.Sleep(3 * time.Second) // горутины выводят: three, three, three } и попросила объяснить, почему если поменять массив структур на массив указателей на струк…

  • пятница, 31 мая 2024 г. в 00:00:12
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