🐿️ Gin-Swagger — автоматическая документация для Gin API. Этот инструмент генерирует OpenAPI-спецификацию прямо из аннотаций в коде — достаточно добавить специальные комментарии к обработчикам роутов.
После установки и запуска
🤖 GitHub
@golang_interview
После установки и запуска
swag init
в проекте появляется папка docs с готовой спецификацией. Достаточно подключить роут /swagger/*any
и интерактивная документация будет доступна через браузер. Особенно инструмент будет удобен для проектов, где API часто меняется: документация обновляется автоматически при изменении кода.🤖 GitHub
@golang_interview
⚙️ Option Pattern в Go: гибкая и читаемая настройка объектов
В статье Leapcell ["Option Pattern in Go: Advanced Parameter Handling"](https://dev.to/leapcell/option-pattern-in-go-advanced-parameter-handling-15hf) рассматривается эффективный способ управления параметрами функций и конструкторов в Go.:contentReference[oaicite:7]{index=7}
## 🧩 Проблема
:contentReference[oaicite:9]{index=9}:contentReference[oaicite:11]{index=11}
Недостатки:
- :contentReference[oaicite:13]{index=13}
- :contentReference[oaicite:16]{index=16}
- :contentReference[oaicite:19]{index=19}
- :contentReference[oaicite:22]{index=22}:contentReference[oaicite:24]{index=24}
## 💡 Решение: Option Pattern
:contentReference[oaicite:26]{index=26}:contentReference[oaicite:28]{index=28}
:contentReference[oaicite:30]{index=30}:contentReference[oaicite:32]{index=32}
Использование:
## 🛠️ Дополнительные возможности
- Валидация параметров:
- Группировка опций:
✅ Преимущества
- :contentReference[oaicite:34]{index=34}
- :contentReference[oaicite:37]{index=37}
- :contentReference[oaicite:40]{index=40}
- :contentReference[oaicite:43]{index=43}:contentReference[oaicite:45]{index=45}
:contentReference[oaicite:47]{index=47}:contentReference[oaicite:49]{index=49}
📌 Читать
В статье Leapcell ["Option Pattern in Go: Advanced Parameter Handling"](https://dev.to/leapcell/option-pattern-in-go-advanced-parameter-handling-15hf) рассматривается эффективный способ управления параметрами функций и конструкторов в Go.:contentReference[oaicite:7]{index=7}
## 🧩 Проблема
:contentReference[oaicite:9]{index=9}:contentReference[oaicite:11]{index=11}
func NewServer(addr string, port int, timeout time.Duration, maxConn int, protocol string) *Server {
// ...
}
Недостатки:
- :contentReference[oaicite:13]{index=13}
- :contentReference[oaicite:16]{index=16}
- :contentReference[oaicite:19]{index=19}
- :contentReference[oaicite:22]{index=22}:contentReference[oaicite:24]{index=24}
## 💡 Решение: Option Pattern
:contentReference[oaicite:26]{index=26}:contentReference[oaicite:28]{index=28}
type Server struct {
addr string
port int
timeout time.Duration
maxConn int
protocol string
}
type Option func(*Server)
func WithTimeout(t time.Duration) Option {
return func(s *Server) {
s.timeout = t
}
}
func WithMaxConn(max int) Option {
return func(s *Server) {
s.maxConn = max
}
}
:contentReference[oaicite:30]{index=30}:contentReference[oaicite:32]{index=32}
func NewServer(addr string, opts ...Option) *Server {
s := &Server{
addr: addr,
port: 8080,
timeout: 30 * time.Second,
maxConn: 100,
protocol: "tcp",
}
for _, opt := range opts {
opt(s)
}
return s
}
Использование:
server := NewServer("localhost",
WithTimeout(60*time.Second),
WithMaxConn(500),
)
## 🛠️ Дополнительные возможности
- Валидация параметров:
func WithPort(port int) Option {
return func(s *Server) {
if port < 0 || port > 65535 {
panic("invalid port number")
}
s.port = port
}
}
- Группировка опций:
type NetworkOptions struct {
Protocol string
Timeout time.Duration
}
func WithNetworkOptions(opts NetworkOptions) Option {
return func(s *Server) {
s.protocol = opts.Protocol
s.timeout = opts.Timeout
}
}
✅ Преимущества
- :contentReference[oaicite:34]{index=34}
- :contentReference[oaicite:37]{index=37}
- :contentReference[oaicite:40]{index=40}
- :contentReference[oaicite:43]{index=43}:contentReference[oaicite:45]{index=45}
:contentReference[oaicite:47]{index=47}:contentReference[oaicite:49]{index=49}
📌 Читать
Узнайте, что нового, что ожидается в будущем и как использовать Go для создания масштабируемых, безопасных и надёжных приложений — в том числе для задач генеративного ИИ.
https://io.google/2025/explore/pa-keynote-17
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
io.google
Google I/O 2025: What's new in Go
Don’t miss Google I/O, featuring product launches, innovations, and insights. Tune in for the live keynotes and sessions.
⚙️ Полный гид по GPU-экосистеме — без воды и маркетинга
Если ты путаешься в CUDA, OpenCL, SYCL и HIP — этот гайд от ENCCS расставит всё по полочкам. Это не просто обзор, а чёткое объяснение, как устроен мир GPU-программирования сегодня.
🧠 Что ты узнаешь:
🔹 Как и почему GPU радикально отличается от CPU
🔹 Из чего состоит стек GPU-технологий:
— CUDA и его аналоги (HIP, SYCL, OpenCL)
— Директивы: OpenMP, OpenACC
🔹 Какие языки и стандарты поддерживают какую архитектуру
🔹 NVIDIA, AMD, Intel — кто что умеет и чем отличается
🔹 Модели памяти, исполнения, и что влияет на производительность
📌 Гайд подходит для:
• Разработчиков HPC и научных расчётов
• Инженеров ML/AI, желающих копнуть глубже
• Всех, кто хочет разобраться в низкоуровневом GPU-стеке без маркетингового тумана
📖 Читать:
https://enccs.github.io/gpu-programming/2-gpu-ecosystem/
🔥 Один из самых понятных и системных разборов GPU-мира на сегодня.
#GPU #CUDA #OpenCL #HIP #SYCL #HPC #AI #HighPerformanceComputing
Если ты путаешься в CUDA, OpenCL, SYCL и HIP — этот гайд от ENCCS расставит всё по полочкам. Это не просто обзор, а чёткое объяснение, как устроен мир GPU-программирования сегодня.
🧠 Что ты узнаешь:
🔹 Как и почему GPU радикально отличается от CPU
🔹 Из чего состоит стек GPU-технологий:
— CUDA и его аналоги (HIP, SYCL, OpenCL)
— Директивы: OpenMP, OpenACC
🔹 Какие языки и стандарты поддерживают какую архитектуру
🔹 NVIDIA, AMD, Intel — кто что умеет и чем отличается
🔹 Модели памяти, исполнения, и что влияет на производительность
📌 Гайд подходит для:
• Разработчиков HPC и научных расчётов
• Инженеров ML/AI, желающих копнуть глубже
• Всех, кто хочет разобраться в низкоуровневом GPU-стеке без маркетингового тумана
📖 Читать:
https://enccs.github.io/gpu-programming/2-gpu-ecosystem/
🔥 Один из самых понятных и системных разборов GPU-мира на сегодня.
#GPU #CUDA #OpenCL #HIP #SYCL #HPC #AI #HighPerformanceComputing
Media is too big
VIEW IN TELEGRAM
МТС приглашает разработчиков на масштабную ИТ-конференцию True Tech Day 6 июня. Участие бесплатное.
В программе — спикеры российского и международного ИИ-рынка, лидеры бигтехов и ученые.
Тебя ждут 4 трека и 40+ докладов. Какие темы будем обсуждать:
— GPT для роботов: как ИИ учится взаимодействовать с реальным миром.
— Мультиагенты — главный AI-тренд 2025. Речь не просто о чат-ботах, а о системах, которые умеют спорить, сотрудничать и достигать целей.
— Автоматизация архитектурных аудитов с помощью ИИ: создание архитектурного datalake для сбора данных из Git, Kubernetes, мониторинга и других источников.
— Новая архитектура под AI: что приходит на смену микросервисам и как архитектор становится дизайнером когнитивного интерфейса.
— Архитектура «as code»: как автоматизировать проверку актуальности схем и генерировать их из реальной инфраструктуры, чтобы разработка всегда соответствовала замыслу архитектора.
— Разбор RAG: что это, зачем нужно, архитектурные подходы и их слабые места, как измерять качество и избегать ложных метрик.
Среди спикеров:
Иван Оселедец (AIRI), Пабло дель Веккио (NTT DATA), Кен Чжун Ли (Kyung Hee University), Алексей Друца (Яндекс), Александр Абрамов (Сбер), Павел Бабин (MWS GPT), Валентин Малых (MTS AI), Антон Скогорев (Т-Банк), Артем Якимчук (Сколтех) и другие эксперты.
Тебе точно стоит быть, если ты:
— разработчик, архитектор или технический руководитель;
— хочешь понять, что реально работает, а что — хайп.
Когда: 6 июня
Где: Москва, МТС Live Холл и онлайн
Регистрация по ссылке.
В программе — спикеры российского и международного ИИ-рынка, лидеры бигтехов и ученые.
Тебя ждут 4 трека и 40+ докладов. Какие темы будем обсуждать:
— GPT для роботов: как ИИ учится взаимодействовать с реальным миром.
— Мультиагенты — главный AI-тренд 2025. Речь не просто о чат-ботах, а о системах, которые умеют спорить, сотрудничать и достигать целей.
— Автоматизация архитектурных аудитов с помощью ИИ: создание архитектурного datalake для сбора данных из Git, Kubernetes, мониторинга и других источников.
— Новая архитектура под AI: что приходит на смену микросервисам и как архитектор становится дизайнером когнитивного интерфейса.
— Архитектура «as code»: как автоматизировать проверку актуальности схем и генерировать их из реальной инфраструктуры, чтобы разработка всегда соответствовала замыслу архитектора.
— Разбор RAG: что это, зачем нужно, архитектурные подходы и их слабые места, как измерять качество и избегать ложных метрик.
Среди спикеров:
Иван Оселедец (AIRI), Пабло дель Веккио (NTT DATA), Кен Чжун Ли (Kyung Hee University), Алексей Друца (Яндекс), Александр Абрамов (Сбер), Павел Бабин (MWS GPT), Валентин Малых (MTS AI), Антон Скогорев (Т-Банк), Артем Якимчук (Сколтех) и другие эксперты.
Тебе точно стоит быть, если ты:
— разработчик, архитектор или технический руководитель;
— хочешь понять, что реально работает, а что — хайп.
Когда: 6 июня
Где: Москва, МТС Live Холл и онлайн
Регистрация по ссылке.
📁 doublestar — расширенная поддержка glob-паттернов в Go
Альтернатива стандартному path/filepath.Glob в Go, с поддержкой:
• ** — рекурсивных поддиректорий
• Расширенных классов символов ([[:alpha:]], [[:digit:]])
• Исключающих шаблонов (!(pattern), @(pattern), ?(pattern))
• Более гибких масок в стиле Bash/Zsh
🔧 Использование:
📦 Подходит для написания CLI-инструментов, сборщиков, тулов для анализа кода и всего, где важна гибкость файловых шаблонов.
👉 Если filepath.Glob не хватает — doublestar легко заменяет его, не ломая привычный интерфейс.
github.com/bmatcuk/doublestar
Альтернатива стандартному path/filepath.Glob в Go, с поддержкой:
• ** — рекурсивных поддиректорий
• Расширенных классов символов ([[:alpha:]], [[:digit:]])
• Исключающих шаблонов (!(pattern), @(pattern), ?(pattern))
• Более гибких масок в стиле Bash/Zsh
go get github.com/bmatcuk/doublestar/v4
🔧 Использование:
matches, err := doublestar.Glob("**/*.go")
📦 Подходит для написания CLI-инструментов, сборщиков, тулов для анализа кода и всего, где важна гибкость файловых шаблонов.
👉 Если filepath.Glob не хватает — doublestar легко заменяет его, не ломая привычный интерфейс.
github.com/bmatcuk/doublestar