Библиотека 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
💳 Как выбить зарплату побольше

Собрали для вас в карточках 4 стратегии для торгов на собеседовании. Есть ещё несколько, которые подробно описаны в статье.

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

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7👍5🤔2🥱1
🎄 Скоро Новый год, а ты всё ещё не в бигтехе?

Если твой путь лежит в ML, DS или AI, то одна вещь решает всё: математика. Без неё — хоть три проекта сделай, хоть сотню туториалов посмотри — на собесе тебя всё равно вернут на «а что такое градиент?»

🔥 Экспресс-курс «Математика для разработки AI-моделей» — 8 недель, чтобы закрыть базу раз и навсегда.

Что внутри:

🔘 живые вебинары, где можно задавать вопросы экспертам
🔘 записи лекций + доступ к материалам
🔘 практические задания на Python и финальный мини-проект с фидбеком
🔘 программа обновлена в ноябре 2025
🔘 2 месяца только нужного — без воды
🔘 достаточно школьной математики и базового Python

🎁 Бонусы ноября:

→ 40% скидка до 30 ноября
→ при оплате до конца месяца — курс «Базовая математика» в подарок
→ бесплатный тест, чтобы узнать свой уровень математики

👉 Хочу стартовать
⚡️ Go 1.27 перестанет поддерживать macOS 12

В репозитории Go появилось предложение о завершении поддержки macOS 12 начиная с Go 1.27. Инициатива идет от команды релиза Go и уже помечена как Likely Accept.

Ключевой аргумент команда Go смотрит на жизненный цикл самой macOS. Последнее обновление безопасности для macOS 12 вышло в июле 2024, Apple фактически завершила поддержку системы.

На этом фоне логично перестать гарантировать работу и тестирование Go под этой версией.

➡️ Источник

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

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍5😢5🤔4🤩2
✏️ Забытый cancel()

Контексты в Go созданы для сигнализации об отмене и таймаутах.

Представьте классическую ситуацию:
ctx, cancel := context.WithTimeout(parent, 150*time.Millisecond)
// забыли про cancel!
go someAsyncWork(ctx)


Контекст создан на 150 миллисекунд. Горутина запущена. Но кто её остановит?

Решение предельно простое:
ctx, cancel := context.WithTimeout(parent, 150*time.Millisecond)
defer cancel() // всегда, в конце функции
go someAsyncWork(ctx)


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

🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117
💼 Карьерная «страховка» для IT‑шника

В последние годы рынок IT-сферы изменился: после бурного роста, наступил период масштабных сокращений и оптимизации команд.

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

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

➡️ Собрать свою страховку

🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3
⚙️ Балласт в Go остался позади

Раньше в высоконагруженных Go сервисах часто использовали memory ballast огромный буфер в heap, чтобы отодвинуть порог GC. С Go 1.19 эту схему лучше забыть и перейти на GOMEMLIMIT.

В чем суть балласта

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

Пример:
package main

func main() {
// 1 ГиБ балласта
ballast := make([]byte, 1<<30)
_ = ballast

// дальше работает приложение
select {}
}


Такой код увеличивает heap и уменьшает частоту GC за счёт меньшего относительного роста.

Проблемы балласта

Балласт держит виртуальную память частично занимает реальную RAM, как только вы по нему пройдётесь
привязан к конкретным лимитам контейнера и профилю нагрузки.

Чуть ошиблись с размером в одну сторону получите частые GC, в другую риск OOM или сильный рост RSS.

Что даёт GOMEMLIMIT

С Go 1.19 появился мягкий лимит памяти GOMEMLIMIT. Он говорит рантайму сколько памяти у процесса реально есть и заставляет GC работать агрессивнее при приближении к этому порогу.

Пример запуска:
GOGC=100 GOMEMLIMIT=2GiB ./your-service


Здесь GOGC управляет частотой GC как раньше. GOMEMLIMIT ограничивает общий объём памяти, к которому стремится рантайм.

Паттерн «накинуть балласт в кучу и расслабить GOGC» долго считался нормальным тюнингом Go. Сейчас это скорее антипаттерн, особенно в контейнерах.

🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍176🤔2😁1
💡 Практическое руководство по сортировке

Сортировка в Go часто сводится к нескольким строкам кода, если опираться на стандартный пакет sort.

Для срезов базовых типов все максимально просто. Существуют функции sort.Ints, sort.Float64s и sort.Strings, которые упорядочивают элементы по возрастанию прямо в переданном срезе.

Небольшой пример с числами:
nums := []int{10, 5, 7, 1}
sort.Ints(nums)


Гибкая сортировка реализуется через sort.Slice, где правила сравнения задаются анонимной функцией less:
sort.Slice(tasks, func(i, j int) bool {
return tasks[i].Priority < tasks[j].Priority
})


Если нужно сохранить относительный порядок равных элементов, используется sort.SliceStable. Для более строгого подхода есть интерфейс sort.Interface и функции sort.Sort и sort.Stable:
type Task struct {
Title string
Priority int
}

type ByPriority []Task

func (t ByPriority) Len() int { return len(t) }
func (t ByPriority) Less(i, j int) bool { return t[i].Priority < t[j].Priority }
func (t ByPriority) Swap(i, j int) { t[i], t[j] = t[j], t[i] }


🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Хочешь строить свои AI-модели, а не просто запускать чужие?

Proglib.academy открывает курс «Математика для разработки AI-моделей» — программу, которая превращает понимание ML из «черного ящика» в осознанную инженерную работу.

📌 Почему без математики в AI никуда:

→ Чтобы пройти собеседование. Это первый фильтр: линал, матстат, оптимизация — спрашивают везде.
→ Чтобы понимать процесс изнутри. Инженер AI должен понимать, почему и как работает модель, а не просто жать fit().

🎓 Что будет на курсе:

→ 3 практических задания на Python + финальный проект с разбором от специалистов;
→ программа обновлена в ноябре 2025;
→ за 2 месяца пройдёшь весь фундамент, нужный для работы с моделями;
→ преподаватели — гуру математики, методисты и исследователи из ВШЭ и индустрии.

🎁 Бонусы ноября:

— 40% скидка;
— получаешь курс «Школьная математика» в подарок;
— короткий тест и узнать свой уровень.

🔗 Подробнее о курсе
😁2
📰 Дайджест недели

Завтра декабрь, а сегодня провожаем последнюю неделю ноября и вспоминаем что произошло.

Свежий Cup o’ Go

В подкасте обсуждают новости экосистемы вокруг 16‑летия языка

Go 1.27 перестанет поддерживать macOS 12

Как выбить зарплату побольше

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

Перестаньте ждать, пока вас найдут

🫶 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🥶 Go 1.26 заморозили, но это не то, о чём вы думаете

Команда Go объявила о начале заморозки релиза версии 1.26.

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

🫶 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤔53
📘 4 декабря стартует набор на курс «Математика для разработки AI-моделей»

Если вы работаете с моделями или хотите перейти в DS/ML, декабрь — идеальный момент закрыть фундаментальные пробелы.

На курсе вы разберёте ключевые разделы, которые лежат в основе современных AI-моделей: линейная алгебра, анализ, оптимизация, математический анализ, вероятности, статистика. Всё через практику в Python.

В программе живые занятия с экспертами AI-индустрии (SberAI, ВШЭ, WB&Russ), разбор реальных задач, квизы и финальный проект.

🌐 Формат: онлайн + доступ к записям

🎁 Бонусы: курс «Школьная математика» в подарок, бесплатный тест по математике

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

👉 Записаться на курс
👍1
✏️ Gas Station — жадный проход за O(n)

Даны два массива одинаковой длины:

gas[i] — сколько топлива можно взять на станции i;
cost[i] — сколько уйдёт, чтобы доехать до следующей.

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

Если такой станции нет — вернуть -1. Гарантируется, что если ответ есть, то он единственный.

Идея алгоритма

• Если суммарное sum(gas) < sum(cost), то круг не проехать ни при каком старте → сразу -1.

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

Отсюда жадный алгоритм за один проход:

1. Ведём totalGain — общий баланс по всему кругу. Ведём currGain — текущий баланс от выбранного старта.

Идём по всем станциям:

2. Добавляем gas[i] - cost[i] в оба баланса. Eсли currGain < 0, обнуляемся: следующий индекс — новый кандидат на старт, currGain = 0.

3. В конце если totalGain < 0 → вернуть -1 иначе вернуть индекс кандидата — это и есть ответ.​

Решение:
func canCompleteCircuit(gas []int, cost []int) int {
currGain := 0
totalGain := 0
start := 0

for i := 0; i < len(gas); i++ {
diff := gas[i] - cost[i]
totalGain += diff
currGain += diff

if currGain < 0 {
start = i + 1
currGain = 0
}
}

if totalGain < 0 {
return -1
}
return start
}


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

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

#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👏21
🌟 Топ-вакансий для Go-разработчиков за неделю

Джун Go разработчик — до 118 000 ₽

Разработчик DBaaS с уверенным знанием Go — от 321 000 ₽

Lead Go-developer — от 395 000 ₽

➡️ Еще больше топовых вакансий — в нашем канале Go jobs

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

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

#GoWork
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚31👍1🤔1
🎮 Nintendo 64 на Go — первые шаги

Чтобы запустить N64 эмулятор на Go, нужно установить язык Go и собрать проект из исходников. Далее загружают ROM игры и запускают его через эмулятор. Большая часть настроек уже оптимизирована и не требует изменений.

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

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

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

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥5👍1👾1
⭐️ Lock-free структуры данных

В многопоточных приложениях mutex часто становятся узким местом из-за ожидания и блокировок. Lock-free структуры данных позволяют избежать этих проблем, используя атомарные операции и циклы Compare-And-Swap (CAS).

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

Основная идея CAS-цикла такова: читаем текущее значение, вычисляем новое на его основе, пытаемся заменить старое новым. Если другой поток изменил значение раньше, попытка не удаётся — цикл повторяется:
for {
oldVal := atomic.LoadInt64(&counter)
newVal := oldVal + 1
if atomic.CompareAndSwapInt64(&counter, oldVal, newVal) {
break
}
}


Это часто быстрее, чем блокировки, особенно при высокой конкуренции. Но есть подводные камни — например, проблема ABA, когда значение вернулось к старому, и CAS не видит изменений. Здесь помогают счётчики версий и строгие барьеры памяти.

Lock-free код сложнее писать и отлаживать, но он приносит выигрыш в масштабируемости и производительности там, где mutex становятся бутылочным горлышком. Используйте lock-free подходы там, где настоящая конкуренция и важны задержки.

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

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135😢3🤔1
📰 Генератор статических страниц для Git-реп на Go

Gitmal — это инструмент, который превращает Git-репозитории в красивые статические HTML страницы. Он автоматически создаёт страницу с файлами, коммитами, подсветкой кода и поддержкой markdown. Зачем? Для документирования и презентации проектов.

Можно запустить простым вызовом в каталоге с репозиторием:
gitmal .


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

Проект активно развивается, лицензирован MIT и написан в основном на Go.

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

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔2
Пишешь ML на Go? Учи матчасть.

Go идеален для инференса моделей благодаря своей производительности. Но чтобы переписывать тяжёлые Python-решения на Go или оптимизировать алгоритмы, нужно железное понимание математики.

«Математика для разработки AI-моделей»
— старт уже завтра.

— Интенсивная программа.
— Цена 28 200 ₽.
— Практический уклон.

Забирайте базу для HighLoad AI:

👉 Записаться

Проверь себя:
@proglib_academy_webinar_bot
2👾1
🔒 Обновления безопасности

Команда Go выпустила обновления версий 1.25.5 и 1.24.11, которые закрывают две серьёзные уязвимости в пакете crypto/x509.

CVE-2025-61729 — это угроза типа отказ в обслуживании. Проблема скрывалась в методе HostnameError.Error(), который при построении строки ошибки мог потребовать огромное количество памяти и процессорного времени.

CVE-2025-61727 — более коварная уязвимость в логике валидации сертификатов. Речь идёт об исключённых поддоменах, которые должны ограничивать действие подстановочных Subject Alternative Name.

➡️ Анонс

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

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤔3👍21
👨‍💻 Определите роль Go в своей AI архитектуре

В AI проектах Go лучше всего чувствует себя не в роли «я сам напишу модель», а в роли надежного каркаса вокруг моделей. Речь про сервисы, API, очереди, оркестрацию пайплайнов, интеграцию с другими системами.

Тяжелые вычисления и обучение обычно остаются на Python, C++ или готовых AI платформах, а Go берет на себя устойчивость, предсказуемое время ответа и нагрузку.

Допустим, у вас есть сервис с моделью на Python, поднятый через FastAPI или gRPC. Go слой выглядит как обычный HTTP или gRPC сервис, который:

• принимает запрос от клиента
• валидирует данные, обогащает контекст
• делает запрос к модельному сервису
• обрабатывает ответ, пишет логи и метрики
• возвращает результат пользователю

Где Go раскрывается по максимуму

— API слой и шлюзы

Go используют для API gateway и BFF (backend for frontend): высокая нагрузка, множество клиентов, разные типы аутентификации и трейсинг.

​AI здесь — всего лишь одна из зависимостей. Это позволяет не смешивать фронтовую и AI‑специфику.

— Оркестрация AI пайплайнов

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

Go хорошо сочетается с:

• очередями (Kafka, RabbitMQ, NATS)
• workflow системами (Temporal, Cadence, Argo Workflows
• gRPC и protobuf для связи с Python сервисами.

— Реалтайм и стриминг

Если вам нужен стриминговый чат, онлайн‑анализ событий, веб‑сокеты или SSE поверх LLM — Go с его сетевой моделью и goroutine хорошо закроет эту задачу. Модель может отвечать стримом, а Go будет потоково прокидывать их клиенту, не блокируя остальную систему.

Что явно не стоит насильно тащить в Go

— обучение больших моделей и сложный

— эксперименты с фреймворками, где вся экосистема вокруг Python

— CUDA‑обвязка и кастомные GPU‑ядра без серьёзной причины

Удачная стратегия на 2026 год выглядит так: не превращать Go в ещё один ML язык, а использовать его как надёжный сервисный и оркестрационный слой вокруг AI.

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

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135😢1