Библиотека Go-разработчика | Golang
23.5K subscribers
2.32K photos
47 videos
87 files
4.74K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
#tip

В пакете net есть функция JoinHostPort для объединения хоста и порта в сетевой адрес.

Использование этой функции для добавления портов намного проще, чем использование конкатенации строк для добавления двоеточия и порта.
"Пытаться использовать принцип, не понимая, какую проблему он решает, — все равно что пытаться использовать молоток, когда вы не знаете, что такое гвоздь".

Невозможно не согласиться с цитатой автора статьи, в которой уделено внимание хорошим и плохим практикам разработки, и приведен пример на Golang.

https://proglib.io/w/eebd4612
Как научиться правильно разрабатывать и запускать приложения в K8s? Есть несколько путей, но, пожалуй, самый быстрый — это пройти трёхдневный онлайн-интенсив «Kubernetes для разработчиков» от Слёрм.

Чем ещё хорош этот путь?
– Материал курса основан на практическом опыте. Учим тому, что делаем на своих проектах.
– Никаких админских штучек и историй про обслуживание кластера. Только инструментарий и знания, которые требуются разработчикам.
– Никто не уйдёт без результата. Спикеры и техподдержка помогут каждому студенту справиться с заданиями.

Интенсив стартует 3 марта. Сейчас можно записаться по минимальной цене – 20 000 рублей.

Посмотреть программу и подать заявку.
Gosivy — инструмент, предназначенный для визуализации метрик процессов Go.

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

https://proglib.io/w/37513083
#tip

Используйте пакеты google.golang.org/grpc/status и google.golang.org/grpc/codes для возврата пользовательских кодов ошибок клиентам gRPC.
Текстовое описание доклада Александра Емелина на конференции Golang Conf 2019 о масштабировании WebSocket-соединения на Go (презентация приводилась ранее на канале), в рамках которого идет речь как про детали, касающиеся Go, так и вообще про работу с большим количеством постоянных соединений.

https://proglib.io/w/92ad1b2f
Обширное введение в Golang в виде технической статьи для тех, кто работает или работал с другими языками программирования.

https://proglib.io/w/d7d8cbdd
#tip

Если функция init доступна в пакете, то она вызывается автоматически, когда вы импортируете этот пакет в свой проект на Go.

Читать подробнее.
Руководство по подключению к брокеру сообщений RabbitMQ с помощью Go: https://proglib.io/w/59dc04b0
Полезные заметки относительно некоторых лучших практик, параллелизма, памяти и многого другого в Go.

https://proglib.io/w/fce3b1f4
Декабрьский интенсив по SRE🦎

Формат: онлайн-интенсив (Zoom, записи занятий, git, стенды для практики, техподдержка и помощь спикеров).

На интенсиве разбираем SRE-подход к разработке и эксплуатации высоконагруженного сайта:
✔️будем настраивать и поддерживать сайт из нескольких микросервисов.
✔️сформулируем показатели SLO, SLI, SLA, разработаем архитектуру и инфраструктуру, соберем, протестируем и задеплоим сайт, настроим мониторинг и алертинг.
✔️определим причины ухудшения SLO, разберем устойчивость, error budget, практику тестирования, управление прерываниями и операционной нагрузкой.
✔️проработаем порядок действий в случае аварии.
✔️примем решения по дальнейшему предотвращению инцидентов.

Дата интенсива: 11–13 декабря 2020

Программа и регистрация на сайте - https://slurm.club/34O0stS
#tip

В пакете net есть функция LookupPort, с помощью которой можно определить номер порта для сети и сервиса.
Интересное обсуждение на Reddit, касаемое структурирования большого веб-приложения на Go.

Вот несколько ссылок, которые предложили члены сообщества:
- GopherCon 2018: Kat Zien - How Do You Structure Your Go Apps
- project-layout (Standard Go Project Layout)
- go-webapp-example (Example web application written in Go)
#tip

Можно преобразовать одну структуру в другую, если они обе имеют одинаковые базовые типы. Это работает, даже если у них разные структурные теги.