Category : golang

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
golang
Организация стенда локальной разработки для самых маленьких с автоматической пересборкой приложения…

Вносить изменения в код приложения и тут же автоматически получать задеплоенные изменения, чтобы быстро тестировать его, — мечта разработчика. В этой статье мы посмотрим, как реализовать такой подход для небольшого приложения с фронтендом и бэкендом: организуем два варианта локального стенда на базе minikube или Docker с автоматическим развертыванием всех изменений или только закоммиченых в Git. Бэкенд приложения напишем на Go, а фронтенд — на Vue.js. Все это позволит быстро запускать проект д…

  • вторник, 7 ноября 2023 г. в 00:00:20
golang
Проблемы функции Golang init

Прежде чем говорить о функции init в Golang, необходимо понять, что такое пакет в Golang. Программа go организована в пакеты. Пакет собирает несколько исходных файлов в одном каталоге. Он похож на ящик, в котором находятся некоторые инструменты или небольшая машина. Он является отправной точкой для инициализации всего пакета. По-видимому, это соответствует назначению функции init.Предположим, что у вас есть код без функции init, например, такой:// foo.go package foo var A int func bar(){} /…

  • воскресенье, 5 ноября 2023 г. в 00:00:21
golang
Реализация Graceful Shutdown в Go

Изящное завершение работы (Graceful Shutdown) важно для любого длительного процесса, особенно для того, который обрабатывает состояние. Например, что если вы хотите завершить работу базы данных, поддерживающей ваше приложение, а процесс db не сбрасывает текущее состояние на диск, или что если вы хотите завершить работу веб-сервера с тысячами соединений, но не дожидаетесь окончания запросов. Изящное завершение работы не только положительно сказывается на пользовательском опыте, но и облегчает в…

  • суббота, 4 ноября 2023 г. в 00:00:19