Библиотека Go-разработчика | Golang – Telegram
Библиотека Go-разработчика | Golang
23.5K subscribers
2.34K photos
47 videos
87 files
4.76K links
Все самое полезное для Go-разработчика в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
😊 Гайд по Fedora на MacBook Pro 2019

А вы тоже любите испытания? У нас тут есть статья, в которой описывается как поставить дистрибутив Fedora на макбук с чипом Т2.

Fedora ставится полностью рабочей, с Wi-Fi, звуком и тачпадом, если не торопиться с патчами. Для айтишников такой вызов превращается в стабильную dev-машину.

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

🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱31👍1🤩1
Go в Data Engineering + Математика = 🚀

Go всё чаще используют для подготовки данных и высоконагруженных ML-сервисов. Но чтобы говорить на одном языке с Data Scientist'ами, нужно подтянуть математику.

Приглашаем на обновленный курс с живыми вебинарами. Разбираем линейную алгебру и алгоритмы «под капотом».

Что будет:

— работа с векторами и матрицами (база вычислений);
— реализация линейной регрессии и метода наименьших квадратов;
— SVD-разложение и снижение размерности данных.

Первый вебинар уже в записи, отзывы отличные.

Последний шанс попасть в поток (до 9.12):
https://clc.to/LojFzw
3🥱2
🤩 Библиотека на Go которая склеивает OpenAPI и OpenAI

Если у вас уже есть REST API с OpenAPI схемой то библиотека openapi openai go позволяет почти напрямую подружить его с ChatGPT.

Она берёт описание вашего API из OpenAPI и сама превращает эндпоинты в функции которые понимает OpenAI SDK для Go.

Дальше всё выглядит так: чат генерирует вызов функции модель просит например get_pets с параметром limit равно 10 а библиотека под капотом отправляет обычный HTTP запрос к вашему сервису и возвращает ответ обратно в модель.

Вам не нужно руками описывать каждую функцию для ChatGPT достаточно поддерживать актуальную OpenAPI спецификацию.

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

🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍2
⚙️ Когда каналов достаточно и очереди не нужны

Каналы в Go уже сами по себе маленькие очереди внутри процесса. Они дают потокобезопасную доставку сообщений между горутинами и встроенное обратное давление когда потребитель не успевает читать.

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

Классический пример — конвейер обработки данных. В Go его собирают из нескольких функций каждая принимает входной канал и возвращает выходной:
func generate(nums []int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for _, n := range nums {
out <- n
}
}()
return out
}

func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for n := range in {
out <- n * n
}
}()
return out
}

func main() {
in := generate([]int{1, 2, 3, 4})
out := square(in)
for n := range out {
fmt.Println(n)
}
}


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

🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍203🌚1
📰 Первый дайджест декабря

Новый год на 7 дней ближе, а мы пока вспомним что за эти 7 дней произошло.

JetBrains выпустили новую IDE

Ещё одна IDE с ИИ-агентом внутри. Сейчас доступен только Claude Agent, требуется подписка Anthropic. Поставить получится только на MacOS, а версию для Windows и Linux придётся подождать.

Go 1.26 заморозили

Nintendo 64 на Go

Генератор статических страниц для Git-реп

Go 1.25.5 и 1.24.11

Устанавливаем федору на мак

🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👾1
⛄️ Новогодние подарки

Интересно, что хочет разработчик на Go. Может, вы хотите новый проект, повышение, апгрейд рабочего места или просто выспаться и никуда не спешить.

А кто-то мечтает о маленьком, но тёплом подарке — книге, мерче или уютном вечерке без задач из джиры.

💬 Напишите в комментариях одну вещь, которую вы больше всего хотите получить в этом году 👇

🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
✏️ Считаем Пифагоровы тройки на Go

Сегодня разбираемся с ежедневной задачей из литкода — нам нужно посчитать количество троек чисел (a, b, c) от 1 до n, для которых верно a²+b²=c². Это классические Пифагоровы тройки.

Идея проста: перебираем все пары (a, b), вычисляем сумму их квадратов и проверяем, является ли корень этой суммы целым числом не больше n. Если да, значит тройка валидна, увеличиваем счётчик.

Компактное решение на Go:
for a := 1; a <= n; a++ {
for b := 1; b <= n; b++ {
sum := int64(a)*int64(a) + int64(b)*int64(b)
c := int(math.Sqrt(float64(sum)))
if c <= n && int64(c)*int64(c) == sum {
count++
}
}
}


Такое решение вызовет лишь вопрос по времени выполнения. Есть решение куда быстрее, но для него нужно знать математику, которую можно подтянуть у нас на курсах.

🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
1🥱9👍51🔥1🤔1
🛠 Используем deadcode для удаления неиспользуемых функций

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

Eсть утилита deadcode, которая помогает быстро находить и чистить неиспользуемые функции. Устанавливается она простой командой:
go install golang.org/x/tools/cmd/deadcode@latest


Для запуска сканирования проекта используйте:
deadcode .


Инструмент выведет список мёртвого кода с указанием файлов и строк:
internal/params.go:34:6: unreachable func: WithUserRanking
internal/wallets.go:50:35 unreachable func: Transaction.CollectionName
internal/utilx/randomx/string.go:23:6: unreachable func: RandomAlphabet


Если хотите понять, почему функция оказалась мёртвой, используйте флаг -whylive, который объяснит ее связь с остальной частью кода.

➡️ Документация

🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍7
👨‍💻 Контекстные ошибки в Go от джуна к сеньору

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

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

Решение — добавлять уровень контекста в каждом слое с помощью fmt.Errorf("doing X for id=%s: %w", id, err). Так сохраняется исходная ошибка для errors.Is и errors.As и одновременно появляется понятное человеку сообщение.

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

Развёрнутый пример:
// Общая «смысловая» ошибка

var ErrTokenInvalid = errors.New("token invalid")

// Три разных места где может что то пойти не так

func parseToken(raw string) (Token error) {
const op = "parseToken"

t err := reallyParse(raw)
if err != nil {
return Token{} fmt.Errorf("%s: parse raw token failed: %w" op ErrTokenInvalid)
}

return t nil
}

func validateClaims(t Token) error {
const op = "validateClaims"

if time.Now().After(t.ExpiresAt) {
return fmt.Errorf("%s: token expired at %s: %w" op t.ExpiresAt ErrTokenInvalid)
}

if !t.HasScope("admin") {
return fmt.Errorf("%s: missing admin scope: %w" op ErrTokenInvalid)
}

return nil
}

func lookupSession(ctx context.Context store SessionStore t Token) (*Session error) {
const op = "lookupSession"

s err := store.GetByID(ctx t.SessionID)
if err != nil {
if errors.Is(err sql.ErrNoRows) {
return nil fmt.Errorf("%s: session %q not found: %w" op t.SessionID ErrTokenInvalid)
}

return nil fmt.Errorf("%s: load session %q failed: %w" op t.SessionID err)
}

return s nil
}


Можно спорить о синтаксисе и бойлерплейте, но без хороших сообщений и контекста ни один синтаксический сахар ситуацию не спасет.

🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍7
🤩 Локальный map store в файлах

MapStore — библиотека на Go для хранения данных в мапах прямо в файловой системе.

Поддерживает сменные кодеки сериализации, шифрование ключей через keyring ОС и полнотекстовый поиск по SQLite FTS5. Подходит для задач без внешних БД, где важна простота и локальность.

Каждый ключ сохраняется в отдельный файл с именем по UUIDv7, директории партиционированы для масштаба. Шифрование опциональное, использует системный keyring без лишних настроек.

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

🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
4😁3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Летим зимовать ✈️

Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.

Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!

Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:

😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech

Теперь осталось нажать на кнопку участия под этим постом и вы в игре!

Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.

Всем удачи!

Участников: 111
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (3 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍🎓 Нужен ли диплом Go разработчику в 2025 году

Вокруг высшего образования в IT до сих пор много мифов. Одни уверяют что Go разработчику хватит пет проектов на GitHub другие советуют не выходить на рынок без корочек.

➡️ Узнаем реальность в статье

🔹 ML для старта в Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
👾1
🎮 Ретроспектива игрового движка

Ebitengine в 2025 году показал что экосистема вокруг 2D игр на Go уже вышла из стадии эксперимента и живет как зрелый проект.

Автор движка Хадзимэ Хоси отмечает что спустя 12 лет разработки темп добавления новых фич снижается но количество вышедших игр в том числе на консолях только растет.

Экосистема вокруг движка активно живет за счет геймджемов. В июне прошел Ebitengine Game Jam 2025 двухнедельный онлайн джем где участники делали игры на скрытую тему и показывали возможности библиотеки.

➡️ Источник

🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3
This media is not supported in your browser
VIEW IN TELEGRAM
От первой строчки кода — до миллионов запросов в секунду.

В VK бэкендеры решают задачи, которые действительно меняют цифровой ландшафт. Узнайте об их принципах работы и драгоценных победах. По ссылке — истории из первых рук и вакансии для тех, кто не боится вызовов.
👍2👾1
🆚 Каналы против итераторов

Каналы в Go удобны для конвейеров и синхронизации, но как механизм итерации по коллекции они заметно проигрывают обычному «pull» подходу.

На больших объемах данных итерация через каналы примерно в два три раза медленнее прямого pull варианта и порождает больше аллокаций на элемент.

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

Каналы лучше оставлять для обмена сообщениями между горутинами и обработки событий.

➡️ Посмотреть итоги бенчмарка

🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩41
🔄 GoLand 2025.3

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

Что нового

• JetBrains прокачали AI Assistant и объединили его с Junie в единую подписку, при этом базовые фичи вроде AI completion доступны бесплатно в IDE.

• Добавили инлайн промпты — можно просто написать запрос на английском прямо в коде и IDE преобразует его в изменения без лишних окон.

• GoLand добавил локальную инспекцию, которая в фоне ищет открытые файлы и сетевые подключения, забытые без Close. Предупреждения появляются прямо в редакторе и помогают не тащить в прод утечки дескрипторов и коннектов.

• Улучшили Kubernetes-интеграцию — появилось больше ресурсов в Services view и управление port forwarding прямо из IDE.

• Линтер Golangci-lint с поддержкой нового форматирования включен по умолчанию.

➡️ Источник

🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱184👍4🔥2🤔1
👨‍💻 Куда утекает память

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

История начинается с сервиса который просто стал потреблять чуть больше RAM чем ожидалось без явных пиков нагрузки, а заканчивается детальным расследованием в профайлерах и разбором ошибки в работе с горутинами и контекстами.

Вот такой простой код стал причиной утечки:
func leakyWorker(ctx context.Context, messages <-chan Message) {
for {
select {
case message, ok := <-messages:
if !ok {
return
}

ctx = context.WithValue(ctx, "id", message.Id)
processMessage(ctx, message)
case <-ctx.Done():
return
}
}
}


➡️ Читать статью | Зеркало

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7🌚2👍1
🔄 Релиз csv-go v3.3.0

Иногда релиз — это не «добавили пару фич», а признание: прежний подход был ошибкой. В csv-go v3.3.0 автор честно выкинул удобный, но прожорливый FieldWriter и заменил его на новый RecordWriter.

Что нового в csv-go


• В csv.Writer добавились функции NewRecord и MustNewRecord, которые возвращают RecordWriter и позволяют собирать строку как fluent‑цепочку прямо во внутренних буферах writer’а, без лишних слайсов и временных структур.

• Предыдущий подход с FieldWriter оказался дорог по памяти и приводил к escape’ам из‑за того, как Go анализирует вариадики и слайсы, поэтому API перепроектировали

csv-go остаётся без внешних зависимостей, использует «обычные» подходы без магии и при этом быстрее стандартной encoding/csv.

➡️ Changelog

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4