Полезный контент
Это коллекция из 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
🔐 Безопасность: исправлена ошибка 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
▪Легко расширяемые и настраиваемые опции
▪ Github
@Golang_google
Она предоставляет удобный способ создания и воспроизведения HTTP запросов, и значительно упрощает создание надежных тестов для ваших клиентов API.
▪Запись и воспроизведение тестов
▪Автоматическое удаления конфиденциальной информации
▪Проверка запросов для обеспечения их целостности
▪Полная интеграция с GO протоколом http.Client
▪Легко расширяемые и настраиваемые опции
go get github.com/areknoster/hypert
▪ Github
@Golang_google
✅ Go отлично подходит для работы с большими языковыми моделями и генеративным ИИ.
В этом выпуске "On the Go" показано, как использовать Go для работы с генеративным ИИ с помощью Gemini Pro.
▪Видео
▪Nvidia бесплатные обучающие курсы по генеративному ИИ
@Golang_google
В этом выпуске "On the Go" показано, как использовать Go для работы с генеративным ИИ с помощью Gemini Pro.
▪Видео
▪Nvidia бесплатные обучающие курсы по генеративному ИИ
@Golang_google
Простой и удобный способ инициализировать конфигурацию в структуры, с помощью структурных тегов.
Поддерживаемые форматы:
yaml
, toml
, json
, env
Создается структура с тэгами, затем указывается источник конфигурации и ссылка на переменную структуры. Источников может быть несколько, значения будут перекрываться в порядке инициализации.
▪️Github
▪️Docs
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Никаких ключей 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
Почитать:
— 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
Попутно идёт знакомство с базовыми подходами к работе с авторизацией, а в конце — настройка автоматического деплоя на сервер с помощью GitHub Actions.
Содержание
• Как правильнее: SSO или Auth?
• Архитектура
• Описание контракта и генерация кода
• Точка входа и конфигурация
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Ребята из Lamoda рассказывают, какие инструменты на Go они для себя запилили.
Вот некоторые:
Aerospike — это распределённая schema-less key-value база данных, которая работает по принципу хэш-таблицы. Основная её особенность — отсутствие схемы данных. По одному ключу в ней может храниться что угодно, в том числе мапы и списки произвольной вложенности. В итоге в коде много строк и ошибок.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Держите отличную статью
Внутри такие очевидные и не очень вещи:
run
используется для запуска программы прямо из тестового кода, обеспечивая удобство тестирования.@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Туннельное решение, позволяющее подключать локальные HTTP и TCP-соединения к общедоступному Интернету.
Port в первую очередь предназначен для небольших команд разработчиков, которые хотят предоставить доступ к серверам своего проекта по общедоступному URL-адресу.
#golang
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Что внутри этого бесплатного гайда:
@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
Команда SberDevices показала свое семейство моделей для обработки речи, обученных на русском языке.
⏩GigaAM умеет быстро адаптироваться к разным задачам, от распознавания речи до взаимодействия с различными доменами (колл-центр, подкасты, farfield).
⏩GigaAM-CTC допускает на 20–37% меньше ошибок в словах на коротких русскоязычных запросах по сравнению с такими популярными решениями, как NeMo-Conformer-RNNT и Whisper-Large-v3.
⏩GigaAM-Emo умеет устанавливать связь с рядом паттернов, которые отвечают за эмоциональное состояние говорящего.
📎 Статья
📎 github
@Golang_google
Go — это язык, который проектировался в первую очередь для конкурентных и параллельных вычислений.
Поэтому, если Go — ваш рабочий инструмент, неплохо бы в этом разбираться.
Для этого держите годную статью в тему, а вот некоторые факты из неё:
race detector
.RWMutex
может быть оптимизацией для приложений с высокой частотой операций чтения и записи.sync.Map
является обёрткой над map[any]any
, готовой к конкурентному доступу.@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Для тех, кто ещё не пробовал использовать GoLand для работы с Go — попробуйте, вам понравится)
Вот некоторые фишки:
Ctrl
+Shift
+Space
вызывает список вариантов автодополнения, наиболее подходящих для данного контекста.Alt
+Enter
.Ctrl
+O
, IDE поможет вам реализовать любой интерфейс, сгенерировав его методы.Alt+
) всегда под рукой, если необходимо узнать тип выражения, на котором находится курсор.Ctrl
+Shift
+F7
, установив курсор на ключевом слове func, return или panic. Это поможет быстрее понять, как работает функция.Вот такие классные возможности, так что пользуйтесь GoLand)
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
golang.org/x/crypto/ssh.
А при помощи пакета
github.com/gliderlabs/ssh
можно разработать ssh-сервер легко и быстро. Ssh подразумевает не только доступ к оболочке (shell), но и прочие возможности: файловый сервер (sftp), проброс портов.
package main
import (
"github.com/gliderlabs/ssh"
"io"
"log"
)
func main() {
ssh.Handle(func(s ssh.Session) {
io.WriteString(s, "Hello world\n")
})
log.Fatal(ssh.ListenAndServe(":2222", nil))
}
golang.org/x/term.
Упрощенно обработчик будет выглядеть вот так:
import (
...
terminal "golang.org/x/term"
)
func sessionHandler(s gssh.Session) {
defer s.Close()
if s.RawCommand() != "" {
io.WriteString(s, "raw commands are not supported")
return
}
// создаем терминал
term := terminal.NewTerminal(s,
fmt.Sprintf("/%s/ > ", s.User()))
// добавляем обработку pty-request
pty, winCh, isPty := s.Pty()
if isPty {
_ = pty
go func() {
// реагируем на изменение размеров терминала
for chInfo := range winCh {
_ = term.SetSize(chInfo.Width, chInfo.Height)
}
}()
}
for {
// считываем ввод пользователя
line, err := term.ReadLine()
if err == io.EOF {
_, _ = io.WriteString(s, "EOF.\n")
break
}
// обработаем результат
result = processInput(line)
// выведем в терминал
io.WriteString(term, result)
}
}
▪GitHub
▪Подробнее
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🐇 Gorabbit
Оболочка на GO, обеспечивающая высокоуровневую и надежную работу RabbitMQ с помощью клиента или менеджера.
RabbitMQ — программный брокер сообщений на основе стандарта AMQP — тиражируемое связующее программное обеспечение, ориентированное на обработку сообщений.
• Github
@Golang_google
Оболочка на GO, обеспечивающая высокоуровневую и надежную работу RabbitMQ с помощью клиента или менеджера.
RabbitMQ — программный брокер сообщений на основе стандарта AMQP — тиражируемое связующее программное обеспечение, ориентированное на обработку сообщений.
• Github
@Golang_google