Вы пишете API на Gin, фронтенд-команда просит документацию, а вы обновляете её вручную в Notion или Confluence. Через неделю доки расходятся с кодом, и начинается хаос. Swaggo решает эту проблему. Вы пишете комментарии прямо в коде, а он генерирует интерактивную документацию по спецификации OpenAPI.
Как это работает
Swaggo парсит специальные комментарии над хендлерами Gin и на их основе собирает
swagger.json. Результат можно открыть в браузере через Swagger UI.Устанавливаем CLI:
go install github.com/swaggo/swag/cmd/swag@latest
Добавляем зависимости в проект:
go get github.com/swaggo/gin-swagger
go get github.com/swaggo/files
Пишем хендлер с аннотациями:
// @Summary Получить профиль пользователя
// @Description Парсит токен из заголовка и возвращает данные пользователя
// @Produce json
// @Success 200 {object} profileResponse
// @Router /api/v2/account/profile [get]
func FetchProfileHandler(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"status": "ok", "data": "user_data"})
}
Подключаем Swagger UI в роутере:
import (
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
_ "your-project/docs"
)
r := gin.Default()
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
Генерируем документацию:
swag init
После этого по адресу
/swagger/index.html будет доступна интерактивная страница со всеми эндпоинтами. Фронтенд-команда видит актуальные контракты, может отправлять тестовые запросы прямо из браузера.Что умеют аннотации
Swaggo поддерживает описание query-параметров, тела запроса, заголовков, кодов ответа и моделей данных. Всё через комментарии над функцией. Пример с параметрами:
// @Summary Список пользователей
// @Param page query int false "Номер страницы" default(1)
// @Param limit query int false "Количество на странице" default(20)
// @Success 200 {array} User
// @Router /api/v2/users [get]
Модели берутся из Go-структур. Если
User определён в коде, Swaggo автоматически подтянет его поля в документацию.Hot reload с Air
При активной разработке удобно, чтобы сервер перезапускался при каждом сохранении файла. Для этого используют Air.
Установка:
go install github.com/air-verse/air@latest
Запуск в корне проекта:
air
Air следит за изменениями в
.go файлах, пересобирает и перезапускает сервер. Работает быстро, конфигурируется через .air.toml. В связке с Swaggo можно добавить swag init в команду сборки, и документация будет обновляться вместе с кодом.Gin отвечает за роутинг и производительность. Swaggo превращает комментарии в OpenAPI-документацию. Air перезапускает сервер при изменениях.
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🥱1
Пока агент пишет код ➡️ Рассылка библиотеки программиста
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
🐸 Библиотека Go-разработчика
#GoGiggle
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
#GoGiggle
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5
🦾🧠🏋️ Качаем мозги к лету!
Все готовятся к пляжному сезону, а мы предлагаем прокачать хард-скилы, чтобы забрать крутой оффер, строить продукты будущего иработать из любой точки мира 😎
⚡️ Распродажа @proglib_academy: забирайте самые актуальные образовательные треки по сниженным ценам!
➡️ Разработка AI-агентов — от 49 000 ₽ (вместо 69 000 ₽).
➡️ Курс AgentOps — 129 000 ₽ (вместо 149 000 ₽).
➡️ Математика для разработки AI-моделей — 23 990 ₽ (вместо 31 990 ₽).
➡️ ML для старта в Data Science — 28 990 ₽ (вместо 38 990 ₽).
Почему мы?
⭐️ Учим для продакшена. Наши программы заточены под реальные задачи бизнеса: как не слить бюджет на токены, как заставить LLM работать стабильно в бэкенде и как выстроить отказоустойчивую архитектуру.
⭐️ Спикеры — суровые практики. Вы будете перенимать опыт у действующих AI-архитекторов, тимлидов и ML-инженеров из топовых IT-компаний.
⭐️ Комплексный подход. Мы даем как мощный математический фундамент для понимания моделей «под капотом», так и передовые инструменты оркестрации агентов.
⭐️ Много практики и фидбека. Вебинары, десятки практических заданий и живое общение с экспертами в чате Telegram на протяжении всего обучения.
⏳ Оставляйте заявку и бронируйте место со СКИДКОЙ 40%
Все готовятся к пляжному сезону, а мы предлагаем прокачать хард-скилы, чтобы забрать крутой оффер, строить продукты будущего и
⚡️ Распродажа @proglib_academy: забирайте самые актуальные образовательные треки по сниженным ценам!
Почему мы?
⏳ Оставляйте заявку и бронируйте место со СКИДКОЙ 40%
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Азбука айтишника
Типичный стек микросервисов
Кажется, что микросервисы — это просто много маленьких программок вместо одной большой.
Разберем схему, что там реально происходит:
➡️ Pre-Production:
Здесь создается фундамент:
- API First: Сначала описываем контракты (OpenAPI/Postman), и только потом пишем код.
- Разделение труда: Пока фронты пилят UI на React, бэкенд упаковывает логику в микросервисы на Java/Node.js.
- CI/CD: Тесты (JUnit), упаковка в Docker и автоматический деплой через Jenkins в Kubernetes. Итог: если этот процесс не настроен, ты будешь деплоить один баг вручную по полдня.
➡️ Production:
В реальной работе система обрастает «мясом», без которого всё упадет через 5 минут:
- Входная группа: Load Balancer (Nginx) и CDN распределяют трафик, чтобы сервер не закипел.
- API Gateway: Твой диспетчер (Spring Boot/Eureka), который рулит запросами.
- Инфраструктура: Кэш (Redis), поиск (Elasticsearch) и брокеры сообщений (Kafka). Это база, которая спасает основную БД от перегруза.
- Хранение: Забудь про одну БД. В микросервисах у тебя и классика (Postgres), и облака (S3), и тяжелая артиллерия для данных (Cassandra).
Уже собрали свой идеальный стек или пока только присматриваетесь к Docker?
❤️ — вовсю юзаем Kafka и Kubernetes
🔥 — пока держимся на одном сервере и старом добром SQL
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Азбука айтишника
#ликбез
Кажется, что микросервисы — это просто много маленьких программок вместо одной большой.
Разберем схему, что там реально происходит:
Здесь создается фундамент:
- API First: Сначала описываем контракты (OpenAPI/Postman), и только потом пишем код.
- Разделение труда: Пока фронты пилят UI на React, бэкенд упаковывает логику в микросервисы на Java/Node.js.
- CI/CD: Тесты (JUnit), упаковка в Docker и автоматический деплой через Jenkins в Kubernetes. Итог: если этот процесс не настроен, ты будешь деплоить один баг вручную по полдня.
В реальной работе система обрастает «мясом», без которого всё упадет через 5 минут:
- Входная группа: Load Balancer (Nginx) и CDN распределяют трафик, чтобы сервер не закипел.
- API Gateway: Твой диспетчер (Spring Boot/Eureka), который рулит запросами.
- Инфраструктура: Кэш (Redis), поиск (Elasticsearch) и брокеры сообщений (Kafka). Это база, которая спасает основную БД от перегруза.
- Хранение: Забудь про одну БД. В микросервисах у тебя и классика (Postgres), и облака (S3), и тяжелая артиллерия для данных (Cassandra).
Уже собрали свой идеальный стек или пока только присматриваетесь к Docker?
❤️ — вовсю юзаем Kafka и Kubernetes
🔥 — пока держимся на одном сервере и старом добром SQL
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#ликбез
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🥱7❤1
Ещё пару лет назад казалось, что работа на зарубежную компанию это мечта только для матёрых сеньоров. Сейчас картина другая: джуны с английским находят оффер быстрее, чем мидл на hh.ru.
Но и ловушек стало больше — прямой найм почти умер, компании всё чаще проверяют происхождение кандидатов, а Европа уступила место ОАЭ и Сингапуру.
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤3🥱3
🧑💻 Cервер обработки изображений на Go
imagor — HTTP-сервер на Go поверх
Параметры трансформации передаются прямо в URL. Поддерживает загрузку из HTTP, S3, GCS и файловой системы, кэширует обработанные результаты.
Как запустить
Запрос выглядит так:
Примеры фильтров
Ресайз с умной обрезкой и конвертацией:
Вотермарк по всей нижней части:
Основные фильтры:
Безопасность
В продакшне отключаем
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
🐸 Библиотека Go-разработчика
#GoToProduction
imagor — HTTP-сервер на Go поверх
libvips для трансформации изображений на лету. Параметры передаются прямо в URL — никакого кода писать не нужно. Поддерживает загрузку из HTTP, S3, GCS и файловой системы, кэширует обработанные результаты в Result Storage.Параметры трансформации передаются прямо в URL. Поддерживает загрузку из HTTP, S3, GCS и файловой системы, кэширует обработанные результаты.
Как запустить
docker run -p 8000:8000 shumc/imagor -imagor-unsafe -imagor-auto-webp
Запрос выглядит так:
http://localhost:8000/unsafe/fit-in/200x200/filters:fill(white)/https://example.com/photo.jpg
Примеры фильтров
Ресайз с умной обрезкой и конвертацией:
/unsafe/200x200/smart/filters:format(jpeg):quality(80)/photo.png
Вотермарк по всей нижней части:
/unsafe/fit-in/200x150/filters:fill(yellow):watermark(logo.png,repeat,bottom,0,40,40)/photo.gif
Основные фильтры:
blur, format, quality, fill, watermark, grayscale, rotate, strip_metadata, label. Применяются пайплайном через двоеточие.Безопасность
В продакшне отключаем
IMAGOR_UNSAFE и подписываем URL через IMAGOR_SECRET. Подпись на HMAC-SHA1 (или SHA256/SHA512), хэш в base64url добавляется в начало пути. Дополнительно ограничиваем источники и размеры входящих изображений:HTTP_LOADER_ALLOWED_SOURCES=*.example.com
VIPS_MAX_RESOLUTION=16800000
VIPS_MAX_WIDTH=5000
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
⚡️ Последний шанс забрать курсы со СКИДКОЙ 40%! Прокачайте свой мозг правильно
До конца акции вы можете воспользоваться специальными ценами на самые востребованные IT-направления. Круто и выгодно прокачать свои скиллы,чтобы получить оффер, уехать на Бали и больше не быть онлайн 😎
➡️ Разработка AI-агентов — от 49 000 ₽ (вместо 69 000 ₽)
Курс про контролируемую разработку ИИ-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — только практическая работа.
➡️ Курс AgentOps — 129 000 ₽ (вместо 149 000 ₽)
Профессиональный трек для разработчиков и LLM инженеров о том, как правильно внедрять AI-логику в бэкенд и сохранять железную стабильность сервиса.
➡️ Математика для Data Science — от 29 990 ₽ (вместо 39 990 ₽)
Вы научитесь решать сложные математические задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе. Отличная база для мощного старта в DS.
➡️ Курс Специалист по ИИ — 89 000 ₽ (вместо 113 900 ₽)
Комплексная программа для получения профессии в сфере ИИ с нуля. За 8 месяцев вы соберете сильное портфолио из 5 реальных проектов и дипломной работы.
➡️ Архитектуры и шаблоны проектирования — 27 990 ₽ (вместо 37 900 ₽)
Интенсив для разработчиков, который поможет освоить основные паттерны проектирования и прокачать навыки архитектора программного обеспечения.
🌸 Выбирайте направление, оставляйте заявку на сайте распродажи, и наш менеджер подробно вас проконсультирует
До конца акции вы можете воспользоваться специальными ценами на самые востребованные IT-направления. Круто и выгодно прокачать свои скиллы,
Курс про контролируемую разработку ИИ-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — только практическая работа.
Профессиональный трек для разработчиков и LLM инженеров о том, как правильно внедрять AI-логику в бэкенд и сохранять железную стабильность сервиса.
Вы научитесь решать сложные математические задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе. Отличная база для мощного старта в DS.
Комплексная программа для получения профессии в сфере ИИ с нуля. За 8 месяцев вы соберете сильное портфолио из 5 реальных проектов и дипломной работы.
Интенсив для разработчиков, который поможет освоить основные паттерны проектирования и прокачать навыки архитектора программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🥱3
Go хорошо показывает себя на бэкенде, но как только нужен графический интерфейс, выбор обычно невелик. Можно поднять локальный веб сервер и открыть его в браузере, можно взять Electron, который тащит за собой целый Chromium.
Wails позволяет писать бэкенд на обычном Go, а интерфейс на любом знакомом стеке, будь то React, Vue, Svelte, Angular или чистый JavaScript. Методы Go доступны из JavaScript напрямую, без ручного описания протокола. Для структур и методов автоматически генерируются типы TypeScript, поэтому фронтенд видит сигнатуры функций. В комплекте идут нативные диалоги и меню, поддержка тёмной и светлой темы, эффекты прозрачности окна.
Главное отличие от Electron в рендеринге.
Wails использует системный движок WebView вместо вкомпиленного Chromium. За счёт этого бинарник весит единицы мегабайт, а не сотни.Как это работает
Проверить окружение и зависимости помогает встроенная команда. Она подскажет, чего не хватает в системе:
wails doctor
Создаём проект из шаблона. Флаг
-t задаёт фронтенд, флаг -n имя проекта:wails init -n myapp -t svelte
Дальше работаем в режиме разработки с горячей перезагрузкой фронтенда:
wails dev
Финальная сборка под текущую платформу собирает один бинарник:
wails build
Теперь про связку Go и JavaScript. Любой метод структуры, привязанной к приложению, становится доступен фронтенду.
Вот пример на Go:
type App struct {
ctx context.Context
}
func (a *App) Greet(name string) string {
return fmt.Sprintf("Привет, %s!", name)
}На стороне фронтенда
Wails сам сгенерирует обёртку, и вызов выглядит как обычная асинхронная функция:import {Greet} from '../wailsjs/go/main/App'
Greet("мир").then((result) => {
console.log(result)
})Метод возвращает строку из Go, а JavaScript получает её через промис. Никакого ручного REST или WebSocket слоя писать не нужно.
Если вы знакомы с веб фронтендом, порог входа низкий. Вы остаётесь в привычном стеке, а на выходе получаете лёгкое нативное приложение одним файлом.
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2👾1
Команда Go опубликовала предложение с политикой устаревания и удаления флагов
GODEBUG. Это обсуждение задаёт правила, по которым старые флаги будут помечать устаревшими, а потом убирать из дистрибутива.Сами флаги появились как способ смягчить переход между версиями. Гарантия совместимости Go 1 обещает, что рабочий код продолжит собираться и работать, но иногда исправления безопасности всё же меняют поведение программ. Чтобы дать время на адаптацию, ввели переменную
GODEBUG. Например, в Go 1.21 вызов
panic(nil) стал ошибкой времени выполнения, а флаг panicnil=1 возвращает старое поведение Go 1.20. За 13 лет таких флагов накопилось много, и каждый из них это точка расхождения в поведении тулчейна. Это усложняет тестирование и поднимает стоимость поддержки.Что предлагают
Предложение делит флаги на четыре категории по сложности удаления.
Самые простые уже удалены раньше, как
x509sha1. Дальше идут флаги с заранее объявленной датой удаления, например
gotypesalias, который можно убрать не раньше Go 1.27. Третья группа это флаги без даты удаления и без статуса постоянных, им сначала назначат дату.
Четвёртая и самая сложная группа это флаги, объявленные постоянными, как
netdns, для их удаления нужно отдельное обоснованное предложение.Сам процесс устроен так: в релизе перед удалением флаг помечают устаревшим и объявляют об удалении в следующей версии. Если серьёзных возражений нет, флаг убирают. Если кто-то покажет критическую зависимость от старого поведения, удаление откладывают на один релизный цикл. Флаги, добавленные ради совместимости, обязаны жить минимум два года.
Как это сделают технически
Внутренний пакет godebug получает статус флага:
type FlagStatus int
const (
Active FlagStatus = iota
Deprecated
Removed
)
Сборочные инструменты будут предупреждать об устаревших флагах, а тесты сообщать об ошибке. Предлагается и новый флаг
deprecatedgodebug=0, который заставит программу упасть с паникой при попытке выставить устаревший флаг в недефолтное значение. Удалённый флаг всё ещё можно задать в его финальное значение по умолчанию, но любое другое значение вызовет фатальную ошибку. Имена удалённых флагов больше никогда не переиспользуют, чтобы старое имя случайно не получило новый смысл.
Пока это предложение на стадии обсуждения, а не финальное решение. Связанный тикет #75316 уже применяет новую логику и предлагает убрать набор крипто флагов из Go 1.23 и раньше в релизе Go 1.27. Если вы держите в go.mod строки с
GODEBUG, стоит следить за заметками к релизам, чтобы не словить фатальную ошибку после обновления.📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2