Библиотека Go-разработчика | Golang
24K subscribers
2.48K photos
48 videos
88 files
4.95K links
Все самое полезное для Go-разработчика в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0

#WXSSA
Download Telegram
📎 Анализатор omitzero

Давайте разберёмся, что делает анализатор omitzero.

Представьте, что вы пишете структуру с вложенными типами:
type User struct {
Name string `json:"name,omitempty"`
Address Address `json:"address,omitempty"`
}


Многие ожидают, что omitempty на поле Address сработает так же, как на Name — пропустит поле при сериализации, если оно пустое. Но нет.

Для полей-структур тег omitempty вообще ничего не делает. Пустая структура всё равно попадёт в JSON как "address": {}.

omitzero находит все такие случаи и предлагает два варианта:

1. Удалить тег, если он вам не нужен — зачем держать код, который ничего не делает.

2. Заменить на omitzero — он работает правильно и пропустит поле, если структура имеет нулевое значение.

Некоторые библиотеки сериализации интерпретируют json:",omitzero" по-своему. Модернизатор автоматически пропускает пакеты с аннотациями +kubebuilder, чтобы ничего не сломать.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
🚗 Мобильные приложения на чистом Go

Новый кросс-платформенный фреймворк для создания нативных мобильных приложений. Без JavaScript, без костылей, без виртуальных машин — только Go.

Вы остаётесь в экосистеме Go. Используете привычные инструменты, библиотеки, тестирование. Не нужно учить Kotlin, Swift или какой-то специфичный DSL для UI.

Как начать работать:
# Ставите CLI
go install github.com/go-drift/drift/cmd/drift@latest

# Создаёте проект
drift init my-app
cd my-app

# Запускаете на Android
drift run android


Автор признаётся, что вдохновением для него был фреймворк Flutter. В репозитории лежит showcase-приложение с примерами всех виджетов — можете посмотреть, как это выглядит в реальности.

➡️ Репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18🔥145❤‍🔥2
👀 Вредоносные AI-расширения для VS Code

Два расширения VS Code — «ChatGPT - 中文版» с миллионом установок и «ChatMoss» со 150 тысячами установок — работают как AI-помощники, но крадут весь ваш код и отправляют на сервера в Китай.

Расширения действительно работают. Они отвечают на вопросы, дополняют код, объясняют ошибки. Поэтому их установили 1.5 млн разработчиков. Под капотом — три скрытых канала утечки.

Три канала кражи данных

1. При открытии файла расширение читает его целиком, кодирует в Base64 и отправляет на сервер. Не 20 строк для автодополнения — весь файл. Триггер срабатывает на каждое изменение.

2. Сервер может удалённо запустить массовый сбор до 50 файлов без взаимодействия пользователя. Ваша кодовая база — в одной команде от полной эксфильтрации.

3. Невидимый iframe загружает четыре аналитических SDK: Zhuge.io, GrowingIO, TalkingData и Baidu Analytics; для сбора данных о вас, вашей компании и паттернах работы. Аналитика показывает, чьи файлы стоит красть.

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

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔102🤩2
🔄 Обновление Fiber

Вышел Fiber v3.0.0 – крупное мажорное обновление фреймворка.

• Главное архитектурное изменение: Ctx как интерфейс

В предыдущих версиях контекст был конкретным типом, что делало невозможным создание кастомных реализаций или расширение функциональности без форков. Теперь fiber.Ctx — это интерфейс с десятками методов, а стандартная реализация называется DefaultCtx

• Интеграция со стандартной библиотекой: context.Context

Долгое время одной из критик Fiber было отсутствие совместимости с контекстом из стандартной библиотеки Go.

В третьей версии fiber.Ctx реализует интерфейс context.Context, что означает полную совместимость со стандартной экосистемой. Теперь можно передавать Fiber контекст в функции баз данных, gRPC клиенты, любые библиотеки, работающие с контекстом.

• Новая система Binding: единое API для парсинга данных

В версии 2 для извлечения данных из запроса нужно было использовать разные методы: QueryParser() для query параметров, BodyParser() для тела запроса, ParamsParser() для параметров маршрута.

Третья версия вводит унифицированный Binding API, который умеет извлекать данные из всех источников через единый интерфейс. Метод Bind().All() автоматически парсит query параметры, тело запроса, заголовки, параметры маршрута и даже cookies, заполняя вашу структуру данными из всех источников одновременно.

• Extractors: универсальная система извлечения данных


Новый пакет extractors решает распространённую проблему: в разных миддлварах была дублирующаяся логика извлечения токенов из запроса. Каждый миддлвар по-своему искал данные в заголовках, куках или query параметрах.

Теперь есть единая система экстракторов с общим API. Вы создаёте экстрактор, указывая источник данных (cookie, header, query, form), и используете его везде.

И ещё куча исправлений и обновлений, обо всех можно почитать в репозитории проекта.

➡️ Release Notes

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥15😁2🥱2😢1
📄 gopdfsuit v4.2.0

Вышла новая версия библиотеки для генерации PDF на Go. Главное обновление — официальная поддержка Python.

Если у вас Python-сервис, но нужна мощная PDF-генерация — можно подключить gopdfsuit, не переписывая проект на Go. В релиз включены примеры кода, чтобы разобраться, как это работает.

Что нового, помимо поддержки питона:

• Добавили поддержку SVG — теперь векторные изображения можно встраивать напрямую в PDF без потери качества.

• Реализовали умные переносы текста, которые укладываются в заданные границы.

• Обновили веб-интерфейс и визуальный редактор — улучшили live-preview при создании шаблонов.

➡️ Репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
🚀 Первый заказ на фрилансе

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

➡️ В статье 9 небанальных способов найти первые деньги айтишнику

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🕹 Dota 2 + Go с RAG и real-time оверлеем

Разработчик поделился на Reddit своим AI-ассистентом для Dota 2, который анализирует игровую ситуацию в реальном времени и дает тактические советы прямо в игре.

Проект использует Game State Integration от Dota 2 – встроенный механизм, который отправляет JSON с игровым состоянием на HTTP-сервер. Go-приложение принимает эти данные, парсит их в структуры и сохраняет в thread-safe хранилище.

Дальше начинается интересное: система строит промпт не просто из текущего состояния игры, а использует полноценный RAG-пайплайн.

Сначала LLM генерирует поисковые запросы на основе ситуации в игре. Потом эти запросы ищутся в векторной базе знаний, где хранится информация о всех героях, предметах и способностях из Dota 2. Найденные релевантные куски знаний вместе с игровым контекстом формируют финальный промпт для AI.

💬 Где бы вы ещё применили подобные инструменты? Может Counter Strike?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22🥱432
🔄 Ergo Framework v3.2.0

Вышел мажорный релиз Ergo Framework – Go-реализации actor model в стиле Erlang/OTP.

Безопасность и сетевая инфраструктура

Главное нововведение – полноценная поддержка mutual TLS через новый интерфейс gen.CertAuthManager. Теперь можно настроить ClientCAs, RootCAs, ClientAuth и ServerName для двусторонней аутентификации между нодами.

Вторая важная фича – NAT support через RouteHost и RoutePort в gen.AcceptorOptions, что решает проблему работы нод за NAT'ом или load balancer'ами.

Управление процессами

Появился контроль времени инициализации через InitTimeout в gen.ProcessOptions – теперь можно ограничить длительность ProcessInit как для локальных, так и для удаленных процессов.

При graceful shutdown через ShutdownTimeout каждые 5 секунд логируются зависшие процессы с их состоянием и очередью.

Новые возможности API

Теперь можно делать синхронные запросы напрямую из gen.Node через семейство методов Call*, инспектировать процессы через Inspect, резолвить PID по имени и обратно.

➡️ Release Notes

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
👨‍💻 Новые вакансии - новые возможности

Golang разработчик
— до 350 000 ₽ и удалёнка.

Middle Golang Developer — 384 700 ₽ и удалёнка США.

Go Tech Lead — от 400 000 ₽ и удалёнка Москва.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoWork
Please open Telegram to view this post
VIEW IN TELEGRAM
2
⚡️ Терминальный mergetool для Git

Разрешение конфликтов в Git через стандартные инструменты часто превращается в мучение. Появился интересный TUI-инструмент на Go — ec, который делает этот процесс значительно удобнее.

ec использует трёхпанельный интерфейс в стиле IntelliJ: слева ours, по центру результат слияния, справа theirs. Инструмент показывает только конфликтные блоки, между которыми можно быстро переключаться через n/p.

Можно запустить просто ec без аргументов внутри репозитория с конфликтами – инструмент покажет список файлов и даст выбрать нужный. Есть интеграция с git mergetool через конфиг [mergetool "ec"].

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

Важный момент: ec не запускает git add после записи результата – это остаётся на усмотрение пользователя.

➡️ Репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍185🥱1
🔄 Три Go обновления

Команда Go выпустила срочные обновления безопасности: стабильные версии Go 1.25.7 и Go 1.24.13, а также релиз-кандидат go1.26rc3. Релизы содержат исправления двух уязвимостей.

Исправления безопасности


• cmd/cgo — контрабанда кода через doc-комментарии. Расхождение между тем, как Go и C/C++ парсят комментарии, позволяло внедрять код в результирующий бинарный файл cgo. Теперь компилятор cgo больше не будет парсить пользовательские doc-комментарии.

• crypto/tls — неожиданное возобновление сессии при использовании Config.GetConfigForClient.

➡️ Анонсы про релизы и про релиз-кандидата

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4👍1😁1
⚙️ Максимально упрощаем код

Можно забыть про:
for i := 0; i < n; i++


С версии 1.22 пишем:
for i := range n { ... }


Анализатор rangeint автоматически подсказывает, где можно заменить. Работает, если переменная цикла и лимит не меняются внутри.

Меньше букв, больше Go дзена.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🥱5😁21😢1
Мем смешной, ситуация — не очень

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoGiggle
Please open Telegram to view this post
VIEW IN TELEGRAM
😁154👾1
Что выведет код

Функция вызывает саму себя до инициализации. Код может запаниковать или выдать ответ? Давайте подумаем.

➡️ Узнать ответ: в канале с задачами

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱111👍1
Зачем Go-разработчику Python и агенты?

Даже если вы пишете микросервисы на Go, мир AI говорит на Python. Чтобы интегрировать умных агентов в свою архитектуру, нужно понимать, как они работают изнутри.

Курс «Разработка ИИ-агентов» стартовал. Мы разбираем архитектуру, которую можно перенести на любой язык, но кодим на Python.

Разбираем:

— паттерны взаимодействия агентов (A2A, иерархии);
— работу с векторными БД (RAG);
— протоколы и API (то, с чем вам придётся интегрироваться).

Для прохождения нужны базовые знания Python. Первую лекцию открыли для всех.

Смотреть лекцию

Записаться на курс
🥱161
✏️ Именованный возврат в Go

Именованные возвращаемые значения — это когда переменные инициализируются автоматически и можно писать просто return без аргументов.

func rectangle(w, h float64) (area, perimeter float64) {
area = w * h
perimeter = 2 * (w + h)
return // Вернёт area и perimeter
}


Плюсы

+ Документация в коде. Вместо загадочных (string, string) видите (dir, file string).

+ Удобство в defer. Именованная err доступна в defer, можно модифицировать результат после основной логики.

+ В коротких функциях с 1-2 возвратами избавляет от лишних объявлений.

Минусы

- Читаемость страдает. Когда функция больше экрана, голый return заставляет скроллить вверх. Явный return result, nil решает проблему мгновенно.

- Затенение — частая ошибка. Пишете := вместо = и создаётся новая переменная. Коварно с err: именованная остаётся nil, а локальная содержит ошибку.

- Изменения через defer. Defer может модифицировать именованные переменные. Функция вернёт не то, что в return.

- Нули скрывают баги. Забыли присвоить результат — функция вернёт nil или 0. Без явного return сложнее заметить.

Правило: если нужно скроллить вверх, чтобы понять что возвращает return — используйте явный возврат.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍173
📎 Когда простота — это сила

You Aren't Gonna Need It (YAGNI) — один из ключевых принципов хорошего кода, который призывает не реализовывать функциональность на будущее.

Суть проста: не пишите код, который может когда-нибудь пригодиться. Реализуйте только то, что нужно прямо сейчас для решения текущей задачи.

Go и YAGNI: идеальное сочетание

Go изначально спроектирован с учётом принципа простоты. Создатели языка сознательно отказались от модных фич, оставив только необходимое. И это не баг, а фича.

Нарушение YAGNI:
// На будущее создаём сложную структуру с кучей полей
type User struct {
ID int
Name string
Email string
Phone string
Address string
SecondPhone string // может пригодится
FaxNumber string // вдруг понадобится
SocialLinks map[string]string // для будущей интеграции
}

// Универсальный метод на все случаи жизни
func (u *User) UpdateProfile(opts ProfileOptions) error {
// Сложная логика для сотни сценариев,
// из которых реально используется три
}


Go-компилятор настолько педантичен к чистоте кода, что даже не позволит собрать программу с неиспользуемыми переменными или импортами. Это встроенная защита от нарушения YAGNI на уровне языка.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍244🥱2
🔒 TOTP-аутентификация с нуля на Go

Разработчик решил не брать готовые решения типа Auth0 и создал полноценную систему двухфакторной аутентификации с нуля.

Результат — проект TickTOTP, который показывает, что за теми самыми 6-значными кодами, меняющимися каждые 30 секунд, стоит довольно элегантная логика.

Что внутри

Стек: Go для бэкенда, React + Vite + Tailwind для фронта, Redis для хранения секретов, всё упаковано в Docker Compose.

Три основных эндпоинта:

• Генерация TOTP-секрета и QR-кода
• Верификация 6-значного кода
• Проверка статуса пользователя

Автор отмечает, что для прода нужно добавить rate limiting, HTTPS, JWT-аутентификацию и резервные коды. Но как образовательный проект и база для своего решения — отличный старт.

➡️ Посмотреть гайд | Зеркало

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124🤩2
Go идеален для бэкенда. Но «мозги» пишут на Python

Вам не обязательно переходить на Python полностью, но понимать архитектуру AI-агентов необходимо, чтобы эффективно интегрировать их в свои Go-сервисы через API или gRPC.

На курсе мы разбираем архитектуру агентов: как они хранят состояние, как работают с инструментами (Tools) и протоколом MCP. Эти знания помогут вам строить надёжные мосты между высокопроизводительным Go-бэкендом и AI-логикой.

Что полезного для Go-разработчика:

— Понимание Model Context Protocol (MCP).
— Архитектура мультиагентных систем (оркестрация).
— Работа с векторными базами данных (актуально для любого языка).

Разобраться в архитектуре AI-систем
😁21🥱101😢1🌚1
🆕 Дайджест недели

Собрали для вас самое главное за неделю.

Fiber v3.0.0

gopdfsuit v4.2.0

Первый заказ на фрилансе

Dota 2 + Go

Ergo Framework v3.2.0

Go 1.25.7, 1.24.13 и 1.26rc3

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🌚1
🧑‍💻 gofmt для текста

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

fixr использует ИИ, можно указать ключи для ChatGPT, Claude и даже на локальные LLM, поднятые с помощью ollama.

Установка:
git clone https://github.com/stadicshock/fixr && cd fixr
go build -o fixr .


Настроить конфиг:
./fixr config init
# В ~/.fixr/config.yaml указать ключ


Исправить текст из буфера обмена:
./fixr fix -c


➡️ Репозиторий

➡️ Собрать своего ИИ-агента

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱73👍1😁1