Библиотека Go-разработчика | Golang
23.3K subscribers
2.18K 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
📎 Разница между merge и rebase в git

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

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

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

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

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

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

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

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

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

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

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

🔗 Записаться на курс и узнать подробности
Что возвращает метод ctx.Err() после отмены контекста вручную
Anonymous Quiz
24%
nil
5%
false
6%
true
66%
context.Canceled
📎 Где заказать курсовую по программированию

Курсовую по программированию легко заказать онлайн — сервисов действительно много.

Проблема в том, что не все они работают честно: бывает низкое качество, завышенные цены или несоблюдение сроков.

По ссылке — подборка площадок, которые в 2025 году показали стабильный результат.

➡️ Узнать, где лучше

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5😢3👍1🥱1
👀 Необычный опыт в Go

В Go всё крутится вокруг горутин и каналов. Но автор видео решил проверить: а можно ли в языке сделать что-то вроде async/await?

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

➡️ Смотреть что получилось

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

#GoVisual
Please open Telegram to view this post
VIEW IN TELEGRAM
7🥰3👍2😁2
👨‍💻 Open source без правил

Эрик Рэймонд, одна из ключевых фигур в истории open source и автор The Cathedral and the Bazaar, резко высказался о кодексах поведения в проектах с открытым исходным кодом.

По его словам, за десять лет стало ясно: «Codes of Conduct» не укрепляют сообщество, а наоборот превращаются в источник конфликтов, политики и бессмысленной драмы.

Рэймонд предлагает радикальное решение — полностью отказаться от подобных документов. А если формально без них нельзя, заменить всё одной фразой: «Если работа с вами доставляет больше неудобств, чем того требует ваш вклад, вас выгонят».

➡️ Пост в X от Эрика

💬 Что думаете? Кодекс поведения В С Ё ?

У нас тоже есть свой X

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

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥3💯2🤔1👾1
👾 AI-агенты — настоящее, о котором все говорят!

Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».

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

На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.

🎓 В рамках курса вы научитесь:

1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.

🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
🍑 Копипаста для прода

Есть задачи, которые можно выполнить не сразу: письмо, ресайз картинки, запись в аналитику. Если их складывать в канал, всё работает… пока сервис не упадёт. После перезапуска задачи теряются.

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

Интерфейс, очереди и воркеры:
type Job interface {
Execute(ctx context.Context) error
}

type JobQueue struct {
jobs chan *TrackedJob
wg sync.WaitGroup
}

func (q *JobQueue) Submit(job Job) {
q.wg.Add(1)
q.jobs <- NewTracked(job)
}


Воркеры читают из q.jobs, запускают задачу, повторяют при ошибках.

Повторы и таймауты:
func (t *TrackedJob) ExecuteWithRetry(ctx context.Context) {
for t.retries < t.MaxRetries {
ctx, cancel := context.WithTimeout(ctx, t.Timeout)
err := t.Job.Execute(ctx)
cancel()
if err == nil { return }
t.retries++
time.Sleep(backoff(t.retries))
}
}


Чтобы задачи не терялись:
type Persister interface {
Save(job *TrackedJob) error
Update(jobID string, status string) error
LoadPending() ([]*TrackedJob, error)
}


Простейший вариант — JSON-файлы. После рестарта: LoadPending() и заново в очередь.

Использование:
q := NewJobQueue(10, 3)
q.Submit(&EmailJob{To: "[email protected]"})
q.Submit(&ResizeJob{File: "pic.png"})
q.Wait()


Такой дизайн легко расширить: добавить Redis вместо файлов, метрики, мониторинг.

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136
👀 Алгоритм Дейкстры

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

Как он работает:

1. Берём стартовую вершину и задаём для неё расстояние = 0, для всех остальных ?.

2. Поддерживаем множество вершин, для которых уже найдено минимальное расстояние (назовём их «посещёнными»).

3. На каждом шаге выбираем вершину с минимальным текущим расстоянием, которая ещё не посещена.

4. Рассматриваем все рёбра, исходящие из неё: если через эту вершину путь в соседнюю вершину короче, чем записанное ранее расстояние, обновляем его.

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

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

#GoVisual
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍1