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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
☝️ Последний шанс купить курсы Proglib Academy с доступом навсегда!

Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).

Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!

👉 Выбрать курс
2🥱1
💎 Топ-вакансий для Go-разработчиков за неделю

Senior Golang Developer — от 350 000 ₽, гибрид в Москве.

Go-разработчик в глобальную аналитическую платформу.

Backend Golang Middle — до 200 000 ₽, удаленно в Москве.

Golang-разработчик — от 250 000 ₽, офис в Москве.

Бэкенд-разработчик — от 350 000 ₽, удаленно в Москве.

Golang Разработчик — до 350 000₽, гибрид в Москве.

Бустер — удалённо (не только Москва)

➡️ Еще больше топовых вакансий — в нашем канале Go jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
😢5🥱1
⚡️ Горячая перезагрузка конфигурации в Go

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

1. Структура хранения настроек

Используем atomic.Value, поскольку он обеспечивает безопасную запись и чтение из любого потока без блокировок.
type Config struct {
Port int `yaml:"port"`
LogLevel string `yaml:"log_level"`
FeatureXOn bool `yaml:"feature_x_on"`
}

var config atomic.Value // будет хранить Config


2. Загрузка и инициализация

При старте приложения читаем файл и парсим его один раз.
func loadConfig(path string) (Config, error) {
data, err := os.ReadFile(path)
if err != nil {
return Config{}, err
}
var cfg Config
if err := yaml.Unmarshal(data, &cfg); err != nil {
return Config{}, err
}
return cfg, nil
}

// при старте
initialCfg, err := loadConfig("config.yaml")
if err != nil {
log.Fatalf("Ошибка загрузки конфига: %v", err)
}
config.Store(initialCfg)


Если конфиг битый или недоступен, логгируем и останавливаем запуск — так мы предотвращаем непредсказуемое поведение в продакшене.

3. Наблюдаем за файлом

С помощью библиотеки fsnotify отслеживаем изменения на диске. Мы реагируем только на события Write и Create, чтобы не перегружать систему избыточными вызовами.

watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
go func() {
for event := range watcher.Events {
if event.Op&(fsnotify.Write|fsnotify.Create) != 0 {
if newCfg, err := loadConfig("config.yaml"); err == nil {
config.Store(newCfg)
log.Println("⚡️ Конфиг перезагружен:", newCfg)
} else {
log.Println("Ошибка при перезагрузке конфига:", err)
}
}
}
}()
if err := watcher.Add("config.yaml"); err != nil {
log.Fatal(err)
}


В любой части вашего кода обращайтесь к config.Load().(Config). Так вы гарантированно получите последнюю версию настроек без риска состояния гонки.

Что можно улучшить

• Добавьте debounce, чтобы игнорировать «шум» при сохранении редактора.

• Внедрите в HTTP-эндпоинт /reload, чтобы рулить перезагрузкой через API.

• Поддержите валидацию новой конфигурации и откат к предыдущей версии при ошибках.

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍196👾3
🔝 Как продвинуть резюме в ТОП на HeadHunter

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

В карточках разобрали как этого добиться, а в статье вы найдёте более подробные шаги.

➡️ Детали в статье

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6😁5❤‍🔥21
⚙️Генерация кода Go из спецификаций OpenAPI

oapi-codegen — это инструмент для генерации Go-кода, основанный на спецификациях OpenAPI. Экономит тонну времени и прост в использовании.

Что умеет oapi-codegen:

• Инструмент генерирует Go-код для взаимодействия с API, создавая серверные обработчики запросов и клиентские библиотеки для отправки запросов.

• На основе спецификаций OpenAPI генерируются структуры данных, соответствующие типам API.

• Позволяет детально настроить, какие части кода должны быть сгенерированы, а какие — пропущены.

• Кушает спецификации в формате YAML или JSON.

Недавно вышла версия 2.5.0, которая принесла несколько улучшений:

— Теперь можно настроить использование указателей для опциональных полей. Новый флаг prefer-skip-optional-pointer позволяет избежать использования указателей, если это не нужно.

— Появилась возможность автоматически добавлять флаг omitempty для опциональных полей в JSON-теги.

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

➡️ Попробовать инструмент

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍138🔥2💯1
🛠 Ключевые инструменты для продуктивной работы

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

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

Наткнулись на видео, в котором разработчик делится своим маст-хэв списком, с которым разработка становится как хобби.

➡️ Смотреть видео

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1
👨‍💻 ИИ в разработке: страх и адаптация

Сегодня автоматизация выходит на новый уровень: AI-агенты уже могут брать тикет в Jira, разбираться в кодовой базе и создавать PR за считанные минуты.

Но не стоит впадать в панику — важно понять, как эффективно работать с такими инструментами и сохранить контроль над качеством.

Наткнулись на тему на реддите:
Я только что наблюдал, как AI-агент взял задачу в Jira, разобрался в нашей кодовой базе и за несколько минут отправил Pull Request — и это меня действительно пугает.


Сначала отложите панику: AI-агент освободил вас от рутинных задач, но не может заменить критическое мышление, системный дизайн, коммуникацию с командой и управление рисками.

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

Параллельно развивайте «человеческие» навыки: умение просто и убедительно объяснять сложные идеи стейкхолдерам, менторить коллег в работе и проводить оценки рисков автоматической генерации кода.

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

💬 Боитесь нейронок? Как утешаете себя, что не уволят? Или бесстрашно готовы противостоять? Делитесь мыслями в комментах👇

P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека Go-разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
⚡️ Мгновенная генерация заглушек для интерфейсов

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

Автоматическая генерация позволяет сосредоточиться на логике тестов и избавляет от рутинных задач:
mockgen -source=service.go -destination=service_mock.go -package=service


Эта команда считывает все интерфейсы из файла service.go и создаёт в service_mock.go готовые заглушки в пакете service.

Сгенерированный код включает методы для записи ожиданий и проверок вызовов, что ускоряет настройку юнит‑тестов.

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥1
🐶 Карьерный козырь в резюме

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

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

➡️ Превратите пет-проекты в козырь

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚51😁1
🔥 Знакомьтесь, преподаватель нашего нового курса по ML — Мария Жарова.

В карточках рассказали, чем Мария занимается и какие советы даёт тем, кто хочет расти в IT и Data Science ☝️

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

👉 Записывайтесь на курс
🥱32👍1