Go идеально подходит для разработки микросервисов, а с помощью gRPC можно легко и быстро обмениваться данными между сервисами. Подготовили для вас мини гайд как начать
Шаги для реализации микросервиса с gRPC в Go
1. Установка
Чтобы начать работать с gRPC в Go, сначала установим нужные инструменты. Для генерации кода нам понадобится protoc и два плагина к нему: protoc-gen-go и protoc-gen-go-grpc.
apt install -y protobuf-compiler
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
2. Создаём файл .proto для определения сервисов:
syntax = "proto3";
option go_package = "path/to/your/go/package;package_name"; // Путь к вашему Go пакету
service UserService {
rpc GetUser (UserRequest) returns (UserResponse);
}
message UserRequest {
string id = 1;
}
message UserResponse {
string name = 1;
string email = 2;
}
3. Теперь, когда все установлено, сгенерируйте код с помощью команды:
protoc --go_out=. --go-grpc_out=. user.proto
Эта команда сгенерирует два файла: user.pb.go и user_grpc.pb.go, которые будут содержать необходимый код для работы с сообщениями и gRPC-методами.
4. Реализация сервера и клиента для обмена данными
Сервер:
type server struct {
pb.UnimplementedUserServiceServer
}
func (s *server) GetUser(ctx context.Context, req *pb.UserRequest) (*pb.UserResponse, error) {
return &pb.UserResponse{Name: "John Doe", Email: "[email protected]"}, nil
}
func main() {
lis, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
pb.RegisterUserServiceServer(s, &server{})
fmt.Println("Server started on :50051")
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
Клиент:
func main() {
conn, err := grpc.Dial(":50051", grpc.WithInsecure())
if err != nil {
log.Fatalf("could not connect: %v", err)
}
defer conn.Close()
c := pb.NewUserServiceClient(conn)
resp, err := c.GetUser(context.Background(), &pb.UserRequest{Id: "123"})
if err != nil {
log.Fatalf("could not get user: %v", err)
}
fmt.Printf("User: %s, Email: %s\n", resp.Name, resp.Email)
}
Теперь ваш первый микросервис с gRPC готов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🥱5❤3😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20❤2
Сегодня составили для вас промпт, с которым можно самостоятельно спроектировать проект. От вас требуется только тематика проекта и основные функции, а остальное сделает нейросеть.
Промпт:
Проектируй детальную архитектуру проекта «ТЕМА ПРОЕКТА» с учётом следующих функций: [СПИСОК ФУНКЦИЙ]. Опиши ключевые модули, их взаимодействия (с использованием схем или диаграмм, если возможно), технологии для каждого компонента, а также обоснование выбора архитектурного стиля. Особое внимание удели масштабируемости, обеспечению безопасности и возможным ограничениям. Базовый язык программирования – Go, остальные технологии и инструменты выбирай самостоятельно, аргументируя выбор. Структурируй ответ по разделам: 1) Ключевые модули; 2) Взаимодействие модулей; 3) Используемые технологии; 4) Обоснование архитектурного стиля; 5) Масштабируемость и безопасность; 6) Ограничения и риски.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚11👍6😢4😁3🤩1
🫣 Боитесь математики в ML?
Думаете, для этого нужно вспоминать университетские интегралы и решать сложные уравнения?
У нас хорошая новость: машинное обучение — это в первую очередь инженерная практика, а не математическая олимпиада. Здесь важнее понимать суть, а не выводить формулы.
Именно на таком подходе — через логику, интуицию и наглядные примеры — и построен наш курс «ML для старта в Data Science», где мы объясняем всё на пальцах, без боли и зубрёжки.
Регистрируйтесь, пока есть свободные места 😉
Думаете, для этого нужно вспоминать университетские интегралы и решать сложные уравнения?
У нас хорошая новость: машинное обучение — это в первую очередь инженерная практика, а не математическая олимпиада. Здесь важнее понимать суть, а не выводить формулы.
Именно на таком подходе — через логику, интуицию и наглядные примеры — и построен наш курс «ML для старта в Data Science», где мы объясняем всё на пальцах, без боли и зубрёжки.
Регистрируйтесь, пока есть свободные места 😉
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Почему одним достаются крутые фичи, а вы — снова на багфиксе. Именно с такой историей пришёл к нам подписчик:
Работаю в команде больше года. Почти все ключевые и интересные задачи уходят к сеньорам. Мне достаются мелкие доработки, баги и то, что «надо кому-то сделать». Сначала думал, что это временно. Что делать, чтобы перейти на более серьёзный уровень и не застрять в рутине?
Если вы молча делаете своё и не выходите за рамки текущих задач, команду устраивает, что вы «надёжный исполнитель».
Хотите большего — начните показывать больше: идеи, инициативу, участие в обсуждениях, собственные предложения.
Даже если вы в команде давно — это не аргумент для роста. Важнее — насколько вы выросли профессионально, какой вклад вы создаёте, и готовы ли к задачам более высокого уровня.
Если вы хотите получить серьёзную задачу — приходите подготовленным: изучите фичу, продумайте архитектуру, обозначьте риски. Это сигнал: вам можно доверять.
💬 Что вы делали для того, чтобы взять задачку покруче? Делитесь опытом в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Proglib Academy — это место, где вы превращаете теорию в практику. Здесь ваши знания становятся проектами для портфолио, а вы — более уверенным специалистом.
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
Go‑команда представила Go 1.25 RC3. Посмотрим что там внутри.
Два важных фикс-патча, связанных с безопасностью:
• Функция LookPath могла возвращать неожиданные пути, если переменная PATH содержит исполняемые файлы вместо директорий и строчки "", "." или ".." передаются в LookPath.
• При отмене запроса Rows.Scan в случае параллельных запросов было возможна гонка — Scan может вернуть данные другого запроса или ошибку.
Как установить и попробовать:
go install golang.org/dl/go1.25rc3@latest
go1.25rc3 download
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2
💰 Сколько ты стоишь как разработчик
В переговорах о зарплате нет ничего хуже, чем назвать цифру «с потолка» и потом узнать, что рынок готов был платить больше.
Чтобы не гадать, а опираться на факты, есть три проверенных подхода. В статье — пошагово о каждом методе, с конкретными источниками и советами.
➡️ Читать статью
🐸 Библиотека Go-разработчика
В переговорах о зарплате нет ничего хуже, чем назвать цифру «с потолка» и потом узнать, что рынок готов был платить больше.
Чтобы не гадать, а опираться на факты, есть три проверенных подхода. В статье — пошагово о каждом методе, с конкретными источниками и советами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25⚡4❤1
Anonymous Quiz
14%
The bigger the interface, the weaker the abstraction
13%
A little copying is better than a little dependency
40%
A goroutine a day keeps the bugs away
34%
Cgo is not Go.
🤔11😁5👍2🥱1
🧐 Зоопарк моделей в ML: с чего начать?
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
❤4
📰 Go дайджест Go разработчикам
Собрали для вас материалы прошедшей недели.
— Обновления Go 1.24 и 1.23
В обоих минорных обновлениях закрыта уязвимость в
— Интерфейсы позволяют составлять поведение, не наследуя
Размышление на тему отличия Go от других языков программирования. В Go используется композиция интерфейсов — вместо массивных иерархий типов. Интерфейсы легко встраиваются друг в друга, позволяя гибко комбинировать функциональность.
— Свежий Cup o’ Go
В новом эпизоде подкаста ведущие обсуждают важные обновления вокруг Go: выпуски Go 1.24.6 и 1.23.12, Microsoft-версию Go Telemetry и обнаружение Supply Chain‑атаки через Go-модуль в GitLab.
— Go 1.25 rc3
🐸 Библиотека Go-разработчика #свежак
Собрали для вас материалы прошедшей недели.
— Обновления Go 1.24 и 1.23
В обоих минорных обновлениях закрыта уязвимость в
database/sql
, из-за которой Rows.Scan
мог возвращать некорректные результаты. Исправлен баг в os/exec LookPath
при обработке пустой строки, «.» и «..» в PATH.— Интерфейсы позволяют составлять поведение, не наследуя
Размышление на тему отличия Go от других языков программирования. В Go используется композиция интерфейсов — вместо массивных иерархий типов. Интерфейсы легко встраиваются друг в друга, позволяя гибко комбинировать функциональность.
— Свежий Cup o’ Go
В новом эпизоде подкаста ведущие обсуждают важные обновления вокруг Go: выпуски Go 1.24.6 и 1.23.12, Microsoft-версию Go Telemetry и обнаружение Supply Chain‑атаки через Go-модуль в GitLab.
— Go 1.25 rc3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Forwarded from Библиотека задач по Go | тесты, код, задания
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚7👍5❤1
Forwarded from Библиотека задач по Go | тесты, код, задания
❤2
Яндекс создаёт продукты и сервисы для миллионов пользователей. Нейросетевой поиск, умные устройства, машинный перевод — задачи, где нет готовых решений.
Поэтому нам нужны сильные бэкенд-разработчики! Если у вас от 5 лет опыта на C++, Python, Java или Go — участвуйте в Мультитреке.
Как это работает
• Подаёте заявку до 18 августа
• Проходите технические секции 23 и 24 августа
• Получаете офер 24 августа
После найма мы предложим поработать в трёх командах несколько недель. Будет время погрузиться в работу, прочувствовать атмосферу и выбрать проект, который вам больше подходит.
Узнайте подробности и оставьте заявку.
Поэтому нам нужны сильные бэкенд-разработчики! Если у вас от 5 лет опыта на C++, Python, Java или Go — участвуйте в Мультитреке.
Как это работает
• Подаёте заявку до 18 августа
• Проходите технические секции 23 и 24 августа
• Получаете офер 24 августа
После найма мы предложим поработать в трёх командах несколько недель. Будет время погрузиться в работу, прочувствовать атмосферу и выбрать проект, который вам больше подходит.
Узнайте подробности и оставьте заявку.
🥱6👾2❤1
Golang-разработчик — 250 000 — 400 000 ₽, удалённо (Москва).
Golang Developer — Офис (Москва).
Golang-разработчик — 270 000 — 485 000 ₽, удалённо (Москва).
Golang Developer — от 250 000 до 600 000 ₽, удалённо (Владивосток).
Бустер — удалённо (не только Москва)
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉3❤2
🛠 Как реализовать паттерн Singleflight
Паттерн Singleflight позволяет предотвратить выполнение одинаковых операций несколькими горутинами одновременно.
Это полезно, когда несколько горутин запрашивают одни и те же данные или выполняют одинаковые дорогостоящие операции.
В Go существует встроенная реализация этого паттерна в пакете
Пример реализации:
Используем
Остальные горутины просто ждут завершения работы первой и получают тот же результат.
🐸 Библиотека Go-разработчика
#буст
Паттерн Singleflight позволяет предотвратить выполнение одинаковых операций несколькими горутинами одновременно.
Это полезно, когда несколько горутин запрашивают одни и те же данные или выполняют одинаковые дорогостоящие операции.
В Go существует встроенная реализация этого паттерна в пакете
golang.org/x/sync/singleflight
Пример реализации:
Используем
singleflight.Group
для предотвращения дублирующихся запросов:package main
import (
"fmt"
"log"
"time"
"golang.org/x/sync/singleflight"
)
var g singleflight.Group
// Дорогая операция
func expensiveOperation(key string) (interface{}, error) {
fmt.Println("Выполняем операцию для:", key)
time.Sleep(2 * time.Second)
return fmt.Sprintf("Результат для %s", key), nil
}
func main() {
key := "operation1"
// Выполнение операции с использованием Singleflight
result, err, _ := g.Do(key, func() (interface{}, error) {
return expensiveOperation(key)
})
if err != nil {
log.Fatal(err)
}
fmt.Println(result)
// Запуск нескольких горутин с одинаковым ключом
for i := 0; i < 3; i++ {
go func() {
res, err, _ := g.Do(key, func() (interface{}, error) {
return expensiveOperation(key)
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res)
}()
}
// Ожидаем завершения горутин
time.Sleep(3 * time.Second)
}
singleflight.Group
гарантирует, что для каждого ключа будет выполнена только одна операция, даже если несколько горутин одновременно попытаются выполнить одинаковую операцию.Остальные горутины просто ждут завершения работы первой и получают тот же результат.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡10❤4👍1
Офлайн-митап Peer To Beer x Точка Банк: приходите слушать доклады и делиться своими историями
🍉 15 августа в Москве пройдёт митап для Python и Go-разработчиков. В программе доклады, открытый микрофон и нетворкинг-активности, которые организаторы подготовили вместе с Точка Банк — так что знакомства будут нескучными и позволят не только весело провести вечер, но и получше узнать друг друга.
🐤 Доклады
Юрий Маркин, Х5. Тернистый путь из Python в Golang
Сурен Хоренян, ВК Реклама. А правда, что Golang быстрее Python?
🐥 Открытый микрофон
Рассказывайте любую историю из любой сферы за 3 минуты: весёлую, странную, полезную. Приз достаётся тому, кому громче аплодируют.
‼️ Нетворкинг и тематические настолки
Будут знакомства, но нестандартные. Возможно, придётся жестами показывать прокси-сервер.
🥳 Регистрация
После регистрации анкета пройдёт модерацию — собирают специалистов со схожим опытом, чтобы на нетворкинге всем было интересно.
📅 Когда: 15 августа, пятница. Старт регистрации в 19:00
📍Место: спот в районе станции метро Чистые пруды, детали отправят после подтверждения регистрации
Приходите, чтобы август запомнился не только арбузами и песнями Стрыкало.
Регистрируйтесь в боте @peertobeer_bot
🍉 15 августа в Москве пройдёт митап для Python и Go-разработчиков. В программе доклады, открытый микрофон и нетворкинг-активности, которые организаторы подготовили вместе с Точка Банк — так что знакомства будут нескучными и позволят не только весело провести вечер, но и получше узнать друг друга.
Юрий Маркин, Х5. Тернистый путь из Python в Golang
Поделюсь личным опытом работы с Golang, разбирая как его сильные стороны, так и аспекты, которые можно улучшить. Обсудим минимализм в дизайне, особенности defer, работу с горутинами и многое другое, с акцентом на баланс между плюсами и минусами.
Сурен Хоренян, ВК Реклама. А правда, что Golang быстрее Python?
Расскажу свой опыт работы с Go, и почему с высоты многолетнего опыта на Python мне выглядит странным большое внимание к Go в мире веб-разработки.
Рассказывайте любую историю из любой сферы за 3 минуты: весёлую, странную, полезную. Приз достаётся тому, кому громче аплодируют.
Будут знакомства, но нестандартные. Возможно, придётся жестами показывать прокси-сервер.
После регистрации анкета пройдёт модерацию — собирают специалистов со схожим опытом, чтобы на нетворкинге всем было интересно.
📅 Когда: 15 августа, пятница. Старт регистрации в 19:00
📍Место: спот в районе станции метро Чистые пруды, детали отправят после подтверждения регистрации
Приходите, чтобы август запомнился не только арбузами и песнями Стрыкало.
Регистрируйтесь в боте @peertobeer_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Привет, go-сообщество. С чего бы вы начали свой путь, если бы только начали изучать этот язык с нуля?
Универсальных советов не бывает, поэтому хотелось бы услышать ваши фичи для обучения. Может была книга, которая открыла глаза или курс, который смог за ручку провести вас по всему языку.
Делитесь своими советами в комментариях 👇
P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Свежий релиз GoLand
GoLand 2025.2 от JetBrains уже доступен, и в нем есть несколько действительно крутых обновлений.
Теперь GoLand помогает избежать ошибок с nil на ранних стадиях. Он анализирует, как значения nil передаются через функции, и предупреждает, если есть шанс на ошибку.
Экран приветствия теперь не блокирует работу — он открывается как вкладка, так что можно сразу же использовать терминал, Docker или HTTP-клиент.
Junie стал еще умнее и быстрее. Он теперь поддерживает MCP, что открывает новые возможности для подключения к внешним источникам данных и API.
Поддержка golangci-lint версии 2 была улучшена, так что теперь анализ кода проходит быстрее и точнее.
➡️ Подробнее про обновление
🐸 Библиотека Go-разработчика
#свежак
GoLand 2025.2 от JetBrains уже доступен, и в нем есть несколько действительно крутых обновлений.
Теперь GoLand помогает избежать ошибок с nil на ранних стадиях. Он анализирует, как значения nil передаются через функции, и предупреждает, если есть шанс на ошибку.
Экран приветствия теперь не блокирует работу — он открывается как вкладка, так что можно сразу же использовать терминал, Docker или HTTP-клиент.
Junie стал еще умнее и быстрее. Он теперь поддерживает MCP, что открывает новые возможности для подключения к внешним источникам данных и API.
Поддержка golangci-lint версии 2 была улучшена, так что теперь анализ кода проходит быстрее и точнее.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰9🥱3❤2🤔1