Библиотека Go-разработчика | Golang
23.3K subscribers
2.17K photos
43 videos
87 files
4.55K links
Все самое полезное для Go-разработчика в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
👨‍💻 Команды терминала, которые должен знать каждый разработчик

Многие знакомы с cd, ls, pwd, но под капотом терминала — море полезных шорткатов и трюков. Вот список тех, которые экономят время, исправляют ошибки и упрощают работу:

1. Запуск предыдущей команды — !!

Бывает забываешь написать sudo, тогда можно просто sudo !!

2. Заменить очепятку и выполнить команду заново — ^old^new

3. Заменить все вхождения в команде — !!:gs/old/new/

4. Поиск по тексту в файлах — grep -R "pattern" .

5. Открыть последнюю команду в редакторе для редактирования — fc

6. Проверка доступности порта — nc -zv <host> <port>

7. Проверить чем занят порт — lsof -i :<port>

Практикуйте — и они войдут в привычку.

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍292😁2
🧑‍💻 Failsafe-go v0.8.4: проект снова в деле

Библиотека failsafe-go долго не обновлялась с прошлого года, и вот — свежий релиз. Разработчик вернулся к активной доработке инструмента для отказоустойчивости в Go.

Что изменилось:

v0.8.0 — серьёзная переработка API: политики стали более гибкими, добавились удобные билдеры и улучшена работа с асинхронностью.

v0.8.1–0.8.3 — фиксы и улучшения, связанные с управлением retry/timeout, плюс доработка логики fallback.

v0.8.4 — свежий релиз, в котором можно напрямую задавать Budget в retry и hedge-политиках

➡️ Репозиторий либы

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👨‍💻 Маленький трюк, который срезал 35% задержки

Иногда для ускорения не нужны сложные оптимизации — достаточно пары строк кода. В одном проекте команда заметила, что при каждом JSON-энкодинге создаётся новый bytes.Buffer. Это вело к лишним аллокациям и работе GC.

Решение оказалось простым: вынести буфер в sync.Pool и переиспользовать его для json.NewEncoder. В итоге:

— меньше аллокаций
— меньше работы сборщика мусора
— задержка p99 снизилась примерно на 35%.

Вот как это сделать:
var bufPool = sync.Pool{
New: func() interface{} {
return new(bytes.Buffer)
},
}

func encodeJSON(w http.ResponseWriter, v interface{}) error {
buf := bufPool.Get().(*bytes.Buffer)
buf.Reset()
defer bufPool.Put(buf)

if err := json.NewEncoder(buf).Encode(v); err != nil {
return err
}

_, err := w.Write(buf.Bytes())
return err
}


Буфер не создаётся каждый раз заново — он берётся из пула и после использования возвращается обратно.

➡️ Источник

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍236👏1😁1
👨‍💻 Релиз инструмента для порт-форвардинга

Проект tunn — это небольшой инструмент для прокидывания портов. Его задача проста: быстро и прозрачно соединять локальные сервисы с внешними клиентами без лишних зависимостей.

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

Всё это — в духе утилиты взял и запустил, без лишней конфигурации.

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

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43
🤫 Курс «ИИ-агенты для DS-специалистов»

Каждый технологический скачок оставляет позади тех, кто «подождал ещё чуть-чуть». ИИ-агенты — это новый рывок.

Уже через пару лет именно они будут драйвить аналитику и автоматизацию. Хотите остаться на гребне?

🖥️ На курсе «ИИ-агенты для DS-специалистов» мы разберём:

— создание AI-агентов с нуля
— сборку собственной RAG-системы
— интеграцию LLM под задачи бизнеса

📌 Курс подходит:

→ ML/AI инженерам (middle+ / senior)
→ Data Scientists
→ Backend и platform-инженерам
→ Advanced CS/DS студентам

⚡️ Старт уже скоро — 3 октября.

💰 До 28 сентября действует скидка — 57.000 ₽ вместо 69.000 ₽ (по промокоду datarascals).

🔗 Узнать больше о курсе и записаться

З.ы. если вы не успели на вебинар «ИИ-агенты: новая фаза развития искусственного интеллекта» — запись уже доступна
🥱51
🕵️‍♂️ 5 приёмов поиска утечек горутин в Go

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

Ниже 5 рабочих приёмов, которые помогут держать горутины под контролем.

1. Мониторинг количества горутин

Запуск фоновой задачи, которая периодически считывает runtime.NumGoroutine() и сравнивает с базовым уровнем — если количество горутин выросло выше порога, сигнализировать (лог, алерт).

go func() {
for range ticker.C {
n := runtime.NumGoroutine()
if n > base+50 { // ваш порог
log.Printf("горутин многовато: %d (base %d)", n, base)
}
}
}()


2. Трассировка с помощью go tool trace

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

func main() {
f, _ := os.Create("trace.out")
defer f.Close()
_ = trace.Start(f)
defer trace.Stop()

for i := 0; i < 10; i++ {
go func() { time.Sleep(500 * time.Millisecond) }()
}
time.Sleep(2 * time.Second)
}


go run .            # создаст trace.out
go tool trace trace.out


3. Контекстная отмена

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

func worker(ctx context.Context, jobs <-chan int) {
for {
select {
case <-ctx.Done():
log.Println("worker: cancelled")
return
case j, ok := <-jobs:
if !ok {
return
}
_ = j // делаем работу
}
}
}

func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

jobs := make(chan int)
go worker(ctx, jobs)

go func() { // имитация продьюсера
for i := 0; i < 100; i++ {
select {
case <-ctx.Done():
close(jobs)
return
case jobs <- i:
}
}
}()

time.Sleep(3 * time.Second)
}


4. Интеграция goleak в тесты

В тестовой среде использовать goleak.VerifyTestMain или goleak.VerifyNone (внутри тестов) для автоматического обнаружения оставшихся горутин. Это помогает не допустить утечки до продакшена.

func TestMain(m *testing.M) { // глобальная проверка
goleak.VerifyTestMain(m)
}

func TestNoLeaks(t *testing.T) {
defer goleak.VerifyNone(t)

// Демонстрация «правильной» горутины
done := make(chan struct{})
go func() {
time.Sleep(10 * time.Millisecond)
close(done)
}()
<-done
}


5. Graceful shutdown

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

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

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍185🔥2
😀 Выберите свой класс

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

#GoGiggle
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17👍2👾2
🏗 Красивые таблицы в Go

Иногда данные хочется вывести не просто строками в консоль, а в аккуратной читаемой таблице. Чтобы не изобретать велосипеды с fmt.Printf и ручными отступами, можно взять библиотеку tabby.

Что умеет

— Форматировать данные в консольные таблицы.
— Поддерживает выравнивание колонок.
— Позволяет строить вложенные таблицы (nested).

Как использовать:
t := tabby.New()
t.AddHeader("ID", "Name", "Age")
t.AddLine(1, "Alice", 23)
t.AddLine(2, "Bob", 30)
t.Print()


Вывод:
ID   Name   Age
1 Alice 23
2 Bob 30


➡️ Сделать свою таблицу

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍324
🚀 Всё о курсе «ИИ-агенты для DS-специалистов»

Зачем нужны ИИ-агенты?

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

Зачем мне курс?

Курс отвечает на три ключевых вопроса:

— Как построить собственную систему агентов с нуля?
— Каким образом использовать RAG-подход для работы с корпоративными данными?
— Как адаптировать LLM под реальные задачи бизнеса?

Подходит ли это мне?

Курс рассчитан на специалистов уровня middle+ и senior: ML/AI инженеров, Data Scientists, backend и platform-разработчиков. Подойдёт и студентам CS/DS, если вы готовы к продвинутым практикам.

Запись вводной встречи «ИИ-агенты: новая фаза развития искусственного интеллекта» доступна по ссылке.

Когда старт?

Обучение начинается 3 октября.

Сколько стоит?

До 28 сентября действует скидка → 57 000 ₽ вместо 69 000 ₽ (промокод datarascals).

🔗 Описание программы и регистрация
2
🔥 Сегодня последний день скидки!

На недавнем вебинаре «ИИ-агенты: новая фаза развития AI» мы показали, как агенты уже меняют работу Data Scientists и инженеров.

Что тебя ждёт на курсе:

⚡️ создашь своего ИИ-агента с нуля
⚡️ соберёшь RAG-систему
⚡️ научишься адаптировать LLM под реальные данные бизнеса

До конца этого дня цена на курс 57 000 ₽. Уже завтра будет 69 000 ₽. Успевай записаться (используй промокод datarascals).

🔗 Записаться на курс
1
⚡️ Блиц дайджест

Пробежимся быстро по новостям и обновлениям недели.

Свежий Cup o' Go

Go Flight Recorder

Flight Recorder — встроенный инструмент, который работает как «чёрный ящик» в самолёте. Его планируют добавить в стандартный стек Go.

Failsafe-go v0.8.4

Релиз tunn

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
Последние часы со скидкой!

Мы уже закрыли вебинар «ИИ-агенты: новая фаза развития AI», но запись всё ещё доступна.

А дальше остаётся только практика. На курсе «ИИ-агенты для DS-специалистов» ты научишься разрабатывать агентов, собирать RAG-системы и адаптировать LLM под бизнес.

Сегодня цена ещё 57.000 ₽ с промокодом datarascals.
Завтра — 69.000 ₽.

👉 Успеть оплатить до полуночи
🥱2
🍿 Социальный опрос

Как вам контент этой недели? Что понравилось, а что не зашло?

Велком в комменты 👇

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
👏31
Оффтоп в понедельник

У нас к вам несерьёзный вопрос — как вы называете X? Не букву, а социальную сеть. До сих пор говорите твиттер или привыкли, к тому, что это теперь икс?

Пишите свои варианты в комменты, а ещё подпишитесь на наш канал в твиттериксе ➡️ Подписаться

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧑‍💻 Go работать

Смотрите какие вакансии есть в нашем канале с вакансиями — Go jobs.

Software Engineer с ЗП от 6 тысяч €

Мидл разработчик в офис в Казань.

Удалённый мидл с плюсом.

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

#GoWork
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤖 Курс «ИИ-агенты для DS-специалистов»

Последняя возможность в этом году освоить ИИ-агентов — курс стартует уже 3 октября! Первый вебинар пройдёт в день старта, а подробности вебинара можно найти на сайте.

📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.

🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.

🔗 Записаться на курс и узнать подробности
🌚3😁1
📎 Разница между merge и rebase в git

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

#GoVisual
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🥱52
🕺 Слог или «эс лог»

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

Одни уверены, что это «эс-лог», как аббревиатура.
Другие читают как «слог»

💬 А вы как произносите — эс-лог или слог?

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

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱11🤔1👾1
🤖 Курс «ИИ-агенты для DS-специалистов»

Последняя возможность в этом году освоить ИИ-агентов с Proglib— старт живых вебинаров на курсе уже 3 октября!

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

📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.

🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.

🔗 Записаться на курс и узнать подробности