Category : golang

golang
Сервисы дружитес. Как платформа упрощает создание интеграций без ошибок

Всем привет! Кратко обо мне: меня зовут Никита и я уже третий год работаю над тем, чтобы платформа СберМаркета становилась лучше день ото дня. Мой основной язык программирования — Go, но, учитывая специфику платформенной разработки, еще и bash.В этой статье на примерах разберу, что мешает строить разработчикам надежные интеграции, попутно заглядывая в детали реализации нашей утилиты sbm-cli, шаблона микросервиса и CI/CD. Этот материал я написал в соавторстве с моим коллегой Эмилем Шарифуллиным…

  • суббота, 25 ноября 2023 г. в 00:00:18
golang
Корутины для Go

Эта заметка о том, зачем нам нужен пакет coroutine для Go и как он будет выглядеть. Но прежде всего, что такое корутины?Сегодня каждый программист знаком с вызовами функций (подпрограмм): F вызывает G, которая останавливает F и запускает G. G выполняет свою работу, потенциально вызывая и ожидая другие функции, и в конце концов возвращается. Когда G возвращается, G уже нет, а F продолжает работать. В этой схеме одновременно выполняется только одна функция, а ее вызывающие ожидают, поднимаясь вв…

  • четверг, 23 ноября 2023 г. в 00:00:17
golang
Эффективность на максимум: Микрооптимизации в Golang

Привет, Хабр!Каждая миллисекунда имеет значение, микрооптимизация это must have, особенно на языке Go. Казалось бы, современные пекарни настолько мощные, что могут простить нам небольшую неэффективность. Однако, когда дело доходит до масштабируемых систем и высоконагруженных приложений, каждая лишняя аллокация памяти и каждый неоптимальный цикл могут привести к значительному снижению производительности. Микрооптимизации позволяют добиться максимальной эффективности и производительности.Особен…

  • четверг, 23 ноября 2023 г. в 00:00:17
golang
Пишем gRPC сервис на Go — сервис авторизации

В этой статье мы научимся писать полноценный gRPC сервис на Go на примере сервера авторизации с полноценной архитектурой, готовой к продакшену. Мы напишем как серверную часть, так и клиентскую. В качестве клиента мы возьмём мой сервис — URL Shortener, о котором у меня также есть статья и видео-гайд на ютубе. Попутно мы познакомимся с базовыми подходами к работе с авторизацией. И в конце настроим автоматический деплой сервиса с помощью GitHub Actions на удалённый сервер. Видео-версия этого гай…

  • воскресенье, 19 ноября 2023 г. в 00:00:15
golang
Как я реверс-инженерил китайский блютуз контроллер

С чего все началосьМы с друзьями купили лед ленту с управлением по блютузу и повесили её в зале. В приложении была прикольная функция цветомузыки, но она была недостаточно хороша. Так что я решил реализовать её самому.Шаги к реализацииНаучиться отправлять свои данные на блютуз контроллерАнализировать аудиопоток, находит резкие изменения в бите.Скрестить два скриптаНаписать обертку для удобной работыКак понять что отправлять на блютуз контроллер?У нас есть рабочее приложение для контроля лед ле…

  • суббота, 18 ноября 2023 г. в 00:00:17
golang
Собираем статистику по телеграм-каналу и строим кастомные графики

Привет, Хабр! Меня зовут Вадим, я разработчик и у меня есть свой канал в Телеграме. Как и многие уважающие себя телеграм‑админы, я хочу следить за статистикой: оценивать эффективность, когда что‑то делаю для привлечения подписчиков, мониторить прирост аудитории и знать, какие именно пользователи и когда подписались/отписались.В Телеграме из коробки можно посмотреть какие‑то графики. Но, например, количество подписчиков отображается с точностью до дня, что не очень удобно. Сделать оттуда drill …

  • пятница, 17 ноября 2023 г. в 00:00:25
golang
Здоровая конкуренция в GO. Главное не перехитрить самого себя

Несколько лет назад я прочитал статью о параллелизации в GO и ничего не понял – я тогда только начинал программировать на этом языке. Но размышления автора мне очень понравились – они подкреплялись бэнчмарками, что было довольно убедительно. Автор игрался c параметром GOMAXPROCS и показал, что увеличение этого параметра не всегда приводит к увеличению производительности. Под конец статьи он подобрал такое значение, которое будет максимально эффективным для его функции, на мое удивление, это зн…

  • четверг, 16 ноября 2023 г. в 00:01:46
golang
Как использовать ресурсы Kubernetes по максимуму для работы с Go-приложениями

Привет! Меня зовут Антон Жуков, я руковожу группой разработки в Сбермаркете. В профессии я уже более 12 лет, с Golang работаю с 2016 года, а с Kubernetes — с 2018 года. В этой статье расскажу об основах Kubernetes, возможных проблемах и решениях, а также о том, как грамотно использовать ресурсы этой платформы, чтобы выжать максимум из Go-приложений. Кроме того, в конце статьи я опишу кейс настройки GOMAXPROCS на примере нашего приложения и расскажу, как нам удалось повысить его производительно…

  • среда, 15 ноября 2023 г. в 00:00:12
golang
Multipath TCP в Go

КДПВПо данным mptcp.io на 1 ноября 2023 года в глобальной сети функционируют около 350 тысяч ресурсов с поддержкой Multipath TCP (далее - MPTCP).График с сайтаРанее уже был проведен некоторый анализ внедрения стандарта.И, если коротенечко, то MPTCP позволяет использовать несколько каналов связи. Например на смартфоне использовать одновременно WiFi и сотовую сеть.Предназначен для решения задачи улучшения производительности (утилизации каналов) и надежности передачи данных в сети.Другим инструме…

  • четверг, 9 ноября 2023 г. в 00:00:19