37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
👣 Советы по написанию Go кода от Uber

Держите полезные рекомендации по ведению кода на Go.

Целью данного руководства является упрощение понимания, того как как можно и нужно, а как нельзя писать код на Go в Uber.
Думаю, эти рекомендации довольно неплохо пригодятся и разрабам вне Uber.
Эти правила необходимы для того, чтобы сохранить контроль над кодовой базой проекта и при этом эффективно использовать возможности Go.

Данное руководство было создано Прашантом Варанаси и Саймоном Ньютоном. С течением времени в него были внесены изменения на основе обратной связи от читателей.

📎 Ссылка

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Укрощение примитивов синхронизации: строим пул потоков на С и Go

Встречайте годный контент)

Эта статья основана на истории об одном личном челлендже. Задача, которая стояла перед инженером, звучала так: помочь с реализацией взаимодействия компонентов в программном комплексе заказчика. Иными словами, понадобилась IPC (Inter-Process Communications, межпроцессное взаимодействие) для дальнейшего развития продукта. Вызов заключался в том, что в обязательных требованиях стояло использование чистого С. Другие языки, включая С++ и Go, не рассматривались.

В итоге Алексей Буреев получил интересный опыт в рамках системного и параллельного программирования. В статье он провел небольшой эксперимент: показал, как можно решить одну задачу с помощью разных языков программирования. Языку С он противопоставил Go, в основе которого есть исторические наработки проектирования языка С. Для этого Алексей заглянул «под капот» стандартных типов данных, которые уже были заботливо созданы разработчиками языка.

📎 Статья

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Tau - Infrastructure's Autopilot
Local Coding Equals Global Production

Инструмент на Go, который переводит облачную инфраструктуру в режим автономной работы, плавно соединяя локальную разработку и облачные технологии.

Работа происходит автоматически, в режиме реального времени, это гарантирует постоянную оптимизацию ваших систем без сбоев.

Github
Docs

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Паттерны проектирования с примерами на Go

Полезный контент 🔥
Это коллекция из 22 популярных паттернов проектирования с примерами кода на языке Go и кратким описанием паттерна.

В кратких описаниях будут употребляться классические термины, такие как Класс, Объект, Абстрактный Класс. Применимо к языку Go, это Тип, Значение этого типа и Интерфейс (где это возможно).

Умение правильно использовать шаблоны проектирования, так сказать, в нужном месте и в нужное время, помогут сохранить ваши нервные клетки, используйте эти ссылки

📎 Ссылки на паттерны

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🎊 Выпущены версии 1.22.2 и 1.21.9!

🔐 Безопасность: исправлена ошибка CVE-2023-45288

📢 Анонс: https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M

📦 Скачать: https://go.dev/dl/#go1.22.2

@Golang_google
🔥 Hypert - это библиотека Go с открытым исходным кодом, которая упрощает тестирование клиентов HTTP API.

Она предоставляет удобный способ создания и воспроизведения HTTP запросов, и значительно упрощает создание надежных тестов для ваших клиентов API.

Запись и воспроизведение тестов
Автоматическое удаления конфиденциальной информации
Проверка запросов для обеспечения их целостности
Полная интеграция с GO протоколом http.Client
Легко расширяемые и настраиваемые опции

go get github.com/areknoster/hypert

Github

@Golang_google
Go отлично подходит для работы с большими языковыми моделями и генеративным ИИ.

В этом выпуске "On the Go" показано, как использовать Go для работы с генеративным ИИ с помощью Gemini Pro.

Видео
Nvidia бесплатные обучающие курсы по генеративному ИИ

@Golang_google
👣 go-cfg - Go Configuration Library

Простой и удобный способ инициализировать конфигурацию в структуры, с помощью структурных тегов.

Поддерживаемые форматы:
Переменные окружения
Флаги
Файлы в формате yaml, toml, json, env

Создается структура с тэгами, затем указывается источник конфигурации и ссылка на переменную структуры. Источников может быть несколько, значения будут перекрываться в порядке инициализации.

▪️Github
▪️Docs

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Полностью локально работающий поисковый агрегатор с использованием агентов LLM.

Никаких ключей OpenAI или Google API не требуется.

Серверная часть написана на golang.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю

Почитать:
Dataloader 3.0: Новый алгоритм для решения проблемы N+1
Выпущены версии 1.22.2 и 1.21.9!
DevOps лучшие бесплатные курсы, книги и ресурсы
Golang: Мои Открытия
Data Flow Analysis для Go 
Миграция баз данных на GO
Beego в Golang для начинающих
Создание серверного Live Chat приложения с использованием Next.js, Fauna и WunderGraph для GraphQL Live Queries
Разбираемся в новом роутинге в Go 1.22
Интервью Роберта Пайка про Go
Огромный список лучших бесплатных курсов Data Science.
Масштабирование подписок GraphQL в Go с использованием Epoll и архитектуры, основанной на событиях
👋 Go "Hello world!" guide
Application Of The Multiple Return Function
Implementing OTel Trace Context Propagation Through Message Brokers with Go
Golang >>> Rust 🔥[Prediction]
Zero cost debug assertions in Go
Real-Time Example: Using Goroutines and Channels
Over 6K Lines Of Code In March, What's The Takeaway?
Simple constant time weighted random choice algorithm
Portr: open-source self-hosted tunnel designed for teams

Проекты

Beego — новая версия высокопроизводительного Go фреймворка для разработки RESTful API, веб-приложений и бэкенд-сервисов, вдохновленный Tornado, Sinatra и Flask.
Паттерны проектирования с примерами на Go
Freeze — полезный Go инструмент для генерации изображений кода и вывода терминала.
Skopeo - это утилита командной строки, которая выполняет различные операции с образами контейнеров и их хранилищами.

Посмотреть:
🌐 Why Golang HTTP Handlers Should Return An Error ( 11:43)
🌐 Golang HTTP Error Handlers & Freestyle Coding To Get Better ( 02:09:24)
🌐 Solving A Golang Job Interview Assignment With Kafka ( 02:24:10)
🌐 1 BILLION ROWS CHALLENGE IN GOLANG ( 02:18:57)
🌐 Пишем рантайм Golang на чистом C | Планировщик Go ( 16:44)

Хорошего дня!

@Golang_google
👣 Как разработать gRCP-сервис на Go

Статья о том, как написать полноценный gRPC-сервис с архитектурой на Go. На примере сервера авторизации.
Попутно идёт знакомство с базовыми подходами к работе с авторизацией, а в конце — настройка автоматического деплоя на сервер с помощью GitHub Actions.

Содержание
• Как правильнее: SSO или Auth?
• Архитектура
• Описание контракта и генерация кода
• Точка входа и конфигурация

📎 Статья

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Go в тулинг! Какие внутренние инструменты мы пишем на Go

Ребята из Lamoda рассказывают, какие инструменты на Go они для себя запилили.

Вот некоторые:
Gonkey — библиотека для проектов на Golang и консольная утилита (для проектов на любых языках и технологиях), с помощью которой можно проводить функциональное и регрессионное тестирование сервисов путем обращения к их API по заранее составленному сценарию. Сценарии тестов описываются в YAML-файлах.

Molekula — инструмент генерации кода для десериализации Aerospike.
Aerospike — это распределённая schema-less key-value база данных, которая работает по принципу хэш-таблицы. Основная её особенность — отсутствие схемы данных. По одному ключу в ней может храниться что угодно, в том числе мапы и списки произвольной вложенности. В итоге в коде много строк и ошибок.

Scratch — инструмент, который позволяет генерировать код для новых сервисов.

📎 Статья
📎Gonkey

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Как я пишу HTTP-сервисы спустя 13 лет работы с Go

Держите отличную статью
Внутри такие очевидные и не очень вещи:

В статье предлагается использовать промежуточное ПО для разделения кода на слои и упрощения тестирования.

Важно оптимизировать чтение кода и избегать излишней косвенности.

Типы запросов и ответов могут быть определены внутри обработчиков для поддержания чистоты глобального пространства.

Использование вложенных типов запросов/ответов позволяет раскрывать дополнительную информацию для будущих поколений.

Функция run используется для запуска программы прямо из тестового кода, обеспечивая удобство тестирования.

Сквозное тестирование противопоставляется юнит-тестированию всех внутренних частей.

📎 Статья

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Portr

Туннельное решение, позволяющее подключать локальные HTTP и TCP-соединения к общедоступному Интернету.

Port в первую очередь предназначен для небольших команд разработчиков, которые хотят предоставить доступ к серверам своего проекта по общедоступному URL-адресу.

#golang

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Годный самоучитель по CI/CD и Kubernetes для Go-разработчиков

Что внутри этого бесплатного гайда:
Подготовка окружения и сборка образа
Основы Kubernetes
Создание приложения на Go, работа с файлами и БД
Лучшие практики деплоя
Построение CI/CD-пайплайна
GitLab CI/CD, GitHub Actions, ArgoCD

📎 Гайд

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 GigaAM: класс открытых моделей для обработки звучащей речи

Команда SberDevices показала свое семейство моделей для обработки речи, обученных на русском языке.

GigaAM умеет быстро адаптироваться к разным задачам, от распознавания речи до взаимодействия с различными доменами (колл-центр, подкасты, farfield).

GigaAM-CTC допускает на 20–37% меньше ошибок в словах на коротких русскоязычных запросах по сравнению с такими популярными решениями, как NeMo-Conformer-RNNT и Whisper-Large-v3.

GigaAM-Emo умеет устанавливать связь с рядом паттернов, которые отвечают за эмоциональное состояние говорящего.

📎 Статья
📎 github

@Golang_google
👣 Конкурентность и параллелизм в Go

Go — это язык, который проектировался в первую очередь для конкурентных и параллельных вычислений.
Поэтому, если Go — ваш рабочий инструмент, неплохо бы в этом разбираться.

Для этого держите годную статью в тему, а вот некоторые факты из неё:
Гонки могут привести к непредсказуемому поведению программы и ошибкам.

Для обнаружения гонок в программе используется race detector.

RWMutex может быть оптимизацией для приложений с высокой частотой операций чтения и записи.

Атомарные счётчики также являются примитивом синхронизации, который позволяет конкурентно читать и писать данные без блокировок.

sync.Map является обёрткой над map[any]any, готовой к конкурентному доступу.

📎 Статья

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM