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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный

Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.

Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.

➡️ Читать статью

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как ускорить ваш релизный процесс

GoReleaser — это инструмент для автоматизации релиза программных продуктов. Он поддерживает несколько языков программирования (в том числе Go, Rust, Zig, и TypeScript) и позволяет ускорить процесс релиза за счет автоматизации сборки, упаковки и распространения.

⚡️ Как GoReleaser ускоряет релизный процесс

• Нет необходимости вручную собирать и публиковать версии. GoReleaser автоматизирует все процессы — от генерации бинарников до распространения релиза через CI/CD.

• Поддержка нескольких языков программирования позволяет вам использовать GoReleaser для проектов не только на Go, но и для других популярных языков.

• поддерживает Windows, macOS и Linux, а также позволяет генерировать Docker-образы.

• Каждый релиз сопровождается автоматически сгенерированным changelog, что позволяет легко отслеживать изменения и уведомлять пользователей.

Пример конфига для быстрого релиза:
builds:
- goos: linux
goarch: amd64
main: ./cmd/myapp/main.go
binary: myapp

archives:
- format: tar.gz
files:
- ./dist/myapp

dockers:
- image: myapp
dockerfile: ./Dockerfile

publish:
github:
owner: myusername
name: myrepo
draft: true
prerelease: true


➡️ Попробовать goreleaser

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
От многомерности к сути: чему нас учит PCA

На собеседовании важно уметь выделить главное — свои сильные стороны, мышление и ценности. Это помогает справляться со стрессом, неожиданными вопросами и субъективной оценкой.

В машинном обучении есть похожий подход — PCA (метод главных компонент). Он сокращает размерность данных, устраняя шум и второстепенные детали, и помогает сфокусироваться на самом важном.

В новой статье мы разберём:
• Как работает PCA
• Зачем он нужен
• Как применять его на практике — например, для анализа доходностей акций S&P 500

🐸 Подробнее: https://proglib.io/sh/uXsDlt75MY

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️ Умный способ не плодить объекты в Go

Если вы уже устали от постоянных new() и хотите, чтобы объекты жили чуть дольше, чем внимание пользователя в TikTok — гляньте на go-pool.

Это обёртка над sync.Pool, только с мозгами:

• Можно пометить объект как негодный (например, если он после .Use() начал вонять),
• Лимитировать размер пула.
• Следить за количеством объектов.

Пример прост как "Hello, world":
pool := pool.New(func() *X { return &X{} }, 5)
x := pool.Borrow()
defer x.Return()


➡️Попробовать go-pool

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Какое слово из мира Go мы загадали?

💬Пишите свои догадки в комментарии 👇

🐸Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
📰 Главное за неделю

Неважно, в отпуске, на удалёнке или в танке — теперь вы снова в курсе.

Свежий апдейт GoLand
JetBrains выпустила GoLand 2025.1 с полной поддержкой Go 1.24, интеграцией с golangci-lint, улучшенным рефакторингом JSON-тегов и AI-ассистентами для автодополнения и генерации кода.

Простой подход к структуре проектов на Go
Автор делится своим опытом и предлагает упростить структуру проектов на Go, избегая излишней сложности и следуя принципу KISS.

Как писать код, который не развалится
В статье предлагается архитектурный подход, при котором код организуется в слои по уровням абстракции. Каждый слой зависит только от нижележащих, что упрощает тестирование, повторное использование и масштабирование

Главные проблемы распределенных систем (и способы их решения)

20 лет Git: все такой же необычный, все такой же великолепный

От многомерности к сути: чему нас учит PCA

🐸Библиотека Go разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😋 Топ-вакансий для go разработчиков за неделю

Middle Backend-developer — Удаленно (Москва)

Старший Backend-разработчик — до 485 000 ₽, Удаленно (Москва)

Senior Golang разработчик — от 250 000 ₽, Удаленно (Москва)

GO-разработчик — Удаленно/Офис (Москва/Краснодар)

Старший Backend-разработчик — от 200 000 ₽, Офис/Гибрид (Москва)

Бустер — удалённо (по всему миру)

➡️ Еще больше топовых вакансий — в нашем канале Go jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ How to: тестировать с фейковым сервером

Подключились к внешнему API, всё работает, но тесты — как лотерея: то проходит, то «502». Если это про Вас, пора узнать, как создать фейковый сервер и навести порядок.

1️⃣ Импорт пакетов
import (
"net/http"
"net/http/httptest"
"testing"
"io/ioutil"
)


2️⃣ Создайте фейковый сервер

Он будет эмулировать ответы настоящего API:
fakeServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"message": "hello, world!"}`))
}))
defer fakeServer.Close()


3️⃣ Используйте урл фейкового сервера вместо настоящего API в тесте

Выглядеть это будет вот так:
func TestGetMessage(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{"message": "hello from test"}`))
}))
defer server.Close()

msg, err := GetMessage(server.URL)
if err != nil || msg == "" {
t.Errorf("ожидался непустой ответ, получена ошибка: %v", err)
}
}


Фейковый сервер может вернуть и ошибку:
httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
}))


Теперь у Вас есть рабочий способ тестировать HTTP-клиенты без внешнего API. Осталось только внедрить это в свои тесты — и забыть, что значит «флак».

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда сроки горят, а разработчиков не хватает

Нехватка квалифицированных разработчиков, срывы дедлайнов и перегруз команды — эти проблемы знакомы большинству IT-руководителей. В условиях растущей конкуренции найти баланс между качеством реализации, сроками и бюджетом становится всё сложнее, особенно когда проект требует редких компетенций или быстрого масштабирования.

Решение проблемы — задействовать дополнительные ресурсы на аутсорсе или аутстаффе. Например, обратиться в Proglib. Да-да, мы запустили свою студию веб-разработки!

Что мы предлагаем:

• Опытные специалисты для аутстаффа (frontend, backend, DevOps, UI/UX, PM, BA) 

• Полноценная разработка проектов под ключ 

• Гибкое масштабирование команды под потребности клиента 

• Прозрачная коммуникация и регулярная отчетность

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

Заполните форму, чтобы ускорить свою разработку 👉 https://forms.yandex.ru/u/67e548a4eb614622efa0bcb2/
💪 Оптимизация структур в Go

В Go порядок полей в структуре влияет на размер и эффективность использования памяти. Если не обращать на это внимание, программа будет расходовать память впустую.

Что важно знать:

Go автоматически добавляет отступы между полями.

Чем более «плотно» вы размещаете данные, тем меньше памяти тратится.

Используйте unsafe.Sizeof() или инструменты визуализации, чтобы проверить реальный размер.

➡️ Разобраться с оптимизацией

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Веб-сервер, который настраивает себя сам

Если Вы только начинаете свой путь в веб-разработке, выбор веб-сервера может показаться сложным. Но есть Caddy — решение, которое позволяет сосредоточиться на коде, а не на конфигурации.

Что делает Caddy особенным

Самостоятельно получает и обновляет сертификаты от Let's Encrypt.

Один Caddyfile может заменить 200 строк YAML'а

Написан на Go, расширяется плагинами, запускается где угодно. Даже на тостере с Wi-Fi.

Функциональность из коробки:

• Обратный прокси
• Статическая отдача контента
• Балансировка нагрузки
• Поддержка HTTP/3
• Интеграция с PHP (если это ещё актуально для Ваших задач)

➡️ Попробовать Caddy

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как изменились микросервисы за десять лет и действительно ли микросервисная архитектура в 2025 году — маст хэв для большой компании?

Разобрались в этом вопросе с CTO платформ Газпромбанка Андреем Бирюковым и Виктором Цветковым, которые стали гостями подкаста «Техно.Логично» 💙

Главные темы эпизода:
как наладить мониторинг и observability
какова роль DevOps-культуры в стабильности сервисов и непрерывности процесса разработки
как поменялись роли инженеров в командах с переходом на новую архитектуру
что ждет микросервисные подходы в будущем

Посмотреть:
📺VK Видео

Послушать:
🎵Яндекс Музыка
📱Apple Podcasts
💙VK Музыка
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Что посмотреть: как живётся с Go по-настоящему

Go хвалят за скорость, простоту и tooling. Но автор видео — разработчик с 15+ годами стажа — показывает, что у этой медали есть обратная сторона.

➡️ Узнать тёмные стороны go

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👋 Привет, разработчики!

Если у вас возникали вопросы по Go — архитектурные, синтаксические или просто «что это вообще сейчас было?» — вы по адресу.

📩
Делитесь вопросами в нашей гугл-форме

И мы обязательно на них ответим

🐸Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🗺 Карта взаимодействия приложения

Когда проект на Go становится больше пары пакетов, держать в голове связи между функциями — задача неблагодарная.

go-callvis решает эту проблему: он строит интерактивную диаграмму вызовов прямо из кода.

Как установить:
go install github.com/ofabry/go-callvis@latest


Главная команда:
go-callvis ./...

Это запустит HTTP-сервер по адресу http://localhost:7878/, где можно интерактивно просматривать граф вызовов.

➡️ Репозиторий инструмента

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM