Forwarded from Библиотека задач по Go | тесты, код, задания
☝️ Последний шанс купить курсы Proglib Academy с доступом навсегда!
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
❤2🥱1
Senior Golang Developer — от 350 000 ₽, гибрид в Москве.
Go-разработчик в глобальную аналитическую платформу.
Backend Golang Middle — до 200 000 ₽, удаленно в Москве.
Golang-разработчик — от 250 000 ₽, офис в Москве.
Бэкенд-разработчик — от 350 000 ₽, удаленно в Москве.
Golang Разработчик — до 350 000₽, гибрид в Москве.
Бустер — удалённо (не только Москва)
Please open Telegram to view this post
VIEW IN TELEGRAM
😢5🥱1
В долгоживущих сервисах важно применять новые настройки без перезапуска процесса. Рассмотрим, как организовать «горячую» перезагрузку конфигурации.
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.
• Поддержите валидацию новой конфигурации и откат к предыдущей версии при ошибках.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤6👾3
Каждый соискатель мечтает о том, чтобы его резюме попало в поле зрения рекрутера, а для этого нужно быть заметным среди множества других кандидатов.
В карточках разобрали как этого добиться, а в статье вы найдёте более подробные шаги.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6😁5❤🔥2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰18😁13⚡1❤1
oapi-codegen — это инструмент для генерации Go-кода, основанный на спецификациях OpenAPI. Экономит тонну времени и прост в использовании.
Что умеет oapi-codegen:
• Инструмент генерирует Go-код для взаимодействия с API, создавая серверные обработчики запросов и клиентские библиотеки для отправки запросов.
• На основе спецификаций OpenAPI генерируются структуры данных, соответствующие типам API.
• Позволяет детально настроить, какие части кода должны быть сгенерированы, а какие — пропущены.
• Кушает спецификации в формате YAML или JSON.
Недавно вышла версия 2.5.0, которая принесла несколько улучшений:
— Теперь можно настроить использование указателей для опциональных полей. Новый флаг
prefer-skip-optional-pointer
позволяет избежать использования указателей, если это не нужно.— Появилась возможность автоматически добавлять флаг
omitempty
для опциональных полей в JSON-теги.— Теперь можно настроить, как обрабатывать инициалы в именах типов, что делает код более гибким и удобным для команды.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤8🔥2💯1
🛠 Ключевые инструменты для продуктивной работы
Вы можете сказать, что настоящему разработчику хватит клавиатуры и монитора для работы.
Но чтобы экономить часы на рутинных задачах и не отвлекаться на настройку окружения, нужен продуманный набор инструментов.
Наткнулись на видео, в котором разработчик делится своим маст-хэв списком, с которым разработка становится как хобби.
➡️ Смотреть видео
🐸 Библиотека Go-разработчика #буст
Вы можете сказать, что настоящему разработчику хватит клавиатуры и монитора для работы.
Но чтобы экономить часы на рутинных задачах и не отвлекаться на настройку окружения, нужен продуманный набор инструментов.
Наткнулись на видео, в котором разработчик делится своим маст-хэв списком, с которым разработка становится как хобби.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
Сегодня автоматизация выходит на новый уровень: AI-агенты уже могут брать тикет в Jira, разбираться в кодовой базе и создавать PR за считанные минуты.
Но не стоит впадать в панику — важно понять, как эффективно работать с такими инструментами и сохранить контроль над качеством.
Наткнулись на тему на реддите:
Я только что наблюдал, как AI-агент взял задачу в Jira, разобрался в нашей кодовой базе и за несколько минут отправил Pull Request — и это меня действительно пугает.
Сначала отложите панику: AI-агент освободил вас от рутинных задач, но не может заменить критическое мышление, системный дизайн, коммуникацию с командой и управление рисками.
Ваша задача — принимать ключевые архитектурные решения, оценивать предложения агента на соответствие бизнес-целям и техническим требованиям, а также обеспечивать прозрачность всех изменений через логи и аудит.
Параллельно развивайте «человеческие» навыки: умение просто и убедительно объяснять сложные идеи стейкхолдерам, менторить коллег в работе и проводить оценки рисков автоматической генерации кода.
Проводите небольшие эксперименты с новыми инструментами, собирайте результаты и делитесь опытом, чтобы вся команда уверенно двигалась в сторону инноваций.
💬 Боитесь нейронок? Как утешаете себя, что не уволят? Или бесстрашно готовы противостоять? Делитесь мыслями в комментах👇
P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.
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.
Сгенерированный код включает методы для записи ожиданий и проверок вызовов, что ускоряет настройку юнит‑тестов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥1
Фриланс или работа над pet-проектами остаются вне поля зрения работодателей, но именно эти начинания могут стать вашим настоящим преимуществом на рынке труда.
Важно уметь правильно представить неофициальный опыт в резюме и показать, как он может быть полезен на постоянной работе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚5❤1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11😁7👾2
🔥 Знакомьтесь, преподаватель нашего нового курса по ML — Мария Жарова.
В карточках рассказали, чем Мария занимается и какие советы даёт тем, кто хочет расти в IT и Data Science ☝️
А если вы уже поняли, что тянуть нечего, начните свой путь в ML правильно: с реальной практикой, поддержкой ментора и видимым результатом.
👉 Записывайтесь на курс
В карточках рассказали, чем Мария занимается и какие советы даёт тем, кто хочет расти в IT и Data Science ☝️
А если вы уже поняли, что тянуть нечего, начните свой путь в ML правильно: с реальной практикой, поддержкой ментора и видимым результатом.
👉 Записывайтесь на курс
🥱3❤2👍1