Forwarded from Библиотека задач по Go | тесты, код, задания
Anonymous Quiz
24%
nil
5%
false
5%
true
66%
context.Canceled
Курсовую по программированию легко заказать онлайн — сервисов действительно много.
Проблема в том, что не все они работают честно: бывает низкое качество, завышенные цены или несоблюдение сроков.
По ссылке — подборка площадок, которые в 2025 году показали стабильный результат.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5😢3👍1🥱1
В Go всё крутится вокруг горутин и каналов. Но автор видео решил проверить: а можно ли в языке сделать что-то вроде async/await?
В итоге он собирает свой маленький Future-тип на дженериках: запускает асинхронные задачи, дожидается результата через await, разбирается с паниками и показывает, где такой подход ломается.
#GoVisual
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🥰3👍2😁2
Эрик Рэймонд, одна из ключевых фигур в истории open source и автор The Cathedral and the Bazaar, резко высказался о кодексах поведения в проектах с открытым исходным кодом.
По его словам, за десять лет стало ясно: «Codes of Conduct» не укрепляют сообщество, а наоборот превращаются в источник конфликтов, политики и бессмысленной драмы.
Рэймонд предлагает радикальное решение — полностью отказаться от подобных документов. А если формально без них нельзя, заменить всё одной фразой: «Если работа с вами доставляет больше неудобств, чем того требует ваш вклад, вас выгонят».
У нас тоже есть свой X
#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥3🤔1💯1👾1
👾 AI-агенты — настоящее, о котором все говорят!
Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».
Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи.
На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.
🎓 В рамках курса вы научитесь:
1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой
Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.
🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
Уже 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 вместо файлов, метрики, мониторинг.
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4