Golang Books
17K subscribers
298 photos
3 videos
334 files
284 links
Библиотека Golang разработчика

По всем вопросам- @haarrp

@Golang_google - Golang

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golangtests golang tests

@itchannels_telegram - 🔥лучшие ит-каналы

№ 5032829002
Download Telegram
📕 Книга "Build and Orchestrator in Go"

Автор
: Tim Boring
Год издания: 2024
Язык: Английский

Описание:
Системы оркестрации, такие как Kubernetes, могут показаться "черным ящиком": вы размещаете их в облаке, и оно волшебным образом обрабатывает все, что вам нужно. Это может показаться идеальным решением, пока что—то не пойдет не так, и вы не будете знать, как найти и устранить свои проблемы. Создание оркестратора на Go (с нуля) раскрывает внутреннюю работу фреймворков оркестровки, помогая вам создавать свой собственный.

🟠 Книга
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥9🥰1😁1
VK JT = Java + Go!

16 сентября VK приглашает Go‑ и Java‑разработчиков на VK JT Meetup в Санкт-Петербурге.

В программе:
— Максимально практические доклады от техлидов VK о трансформации ВКонтакте, переходе части сервисов на Go и об устройстве и развитии единой видеоплатформы VK
— Командные бэкенд-баттлы под менторством опытных разработчиков VK — кейсы, вдохновлённые реальной архитектурой VK
Задавайте вопросы экспертам, ищите лучшее командное решение кейса и оставайтесь на афтепати: нетворкинг, фуршет, свободное общение с коллегами.
Только офлайн, в офисе VK на Мойке.

🎟 Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете на сайте
2
Как на Go создать Validating Admission Controller для Kubernetes.

Это веб‑hook, который проверяет, что в каждом контейнере деплоя указаны memory.requests и memory.limits. Если хоть одно из них отсутствует — создание ресурса блокируется.
Автор подробно проходит через архитектуру (mutating → validating), код на Go для обработки AdmissionReview, настройку TLS, манифесты для Deployment и Webhook-а, и тестирование в кластере.

👉 Читать
👍52
Если вы пишете тесты на Go, есть одна мощная хитрость, о которой мало кто знает. Это займет 30 секунд.

Вместо привычного:


username := GetUser()
if username != "dummyUser" {
t.Errorf("unexpected username: got %s, want %s", username, "dummyUser")
}
используйте более элегантный и лаконичный подход:

if got, want := GetUser(), "dummyUser"; got != want {
t.Errorf("username=%s, want=%s", got, want)
}


Преимущества:
- Мгновенный фокус на «что получили» (got) и «что ожидали» (want) — глаза сразу видят суть.
- Отлично подходит для table-driven тестов — компактность и читаемость.
- Упрощённое копирование/вставка проверок — не забудете обновить сообщение об ошибке.
MT Lynch

**Чёткое разделение: if got, want := — это всегда проверка, любые другие if — логика теста.

Универсальная, аккуратная и не требует дополнительных библиотек — просто Go‑идиоматично.

https://mtlynch.io/if-got-want-improve-go-tests
👍28😁158🤬5😢2🔥1
Что нового в Go 1.25?

🚀 Практичное обновление, без громких изменений синтаксиса
Go 1.25 — это не о новом синтаксисе, а о качестве разработки: исправлены давние недочёты, улучшена безопасность работы рантайма и добавлены более умные инструменты.


🛠 Улучшения в инструментах и экосистеме
Команда Go внесла правки в компилятор, рантайм, линкер, стандартную библиотеку и вспомогательные инструменты — всё это для более стабильной и гладкой работы.


🆕 Добавлен новый пакет
Go 1.25 включает один новый пакет. Это небольшое, но значимое расширение возможностей стандартной библиотеки.

Источник: https://www.freecodecamp.org/news/what-is-new-in-go/
👍43🥰1
📕 Книга "Go for Machine Learning"

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

Книга

#eng #Go
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6🔥1
👣 Google объявил релиз **Genkit Go 1.0** — стабильную, готовую к продакшену версию open-source фреймворка для разработки AI-приложений на Go.
Также представлена новая команда genkit init:ai-tools для лёгкой интеграции с AI-ассистентами в процессе разработки.

🔑 Что нового в Genkit Go 1.0

1. Production-ready
API признан стабильным: все программы, написанные на Genkit 1.*, будут работать и собираться в будущих минорных версиях.

2. Type-safe AI-flows
- Определение “flows” через Go-структуры и JSON Schema.
- Повышенная типобезопасность, тестируемость, наблюдаемость и удобство при деплое.

3. Унифицированный интерфейс моделей
Поддержка разных провайдеров (Google AI, Vertex AI, OpenAI, Ollama и др.) через единый API — легко переключаться между ними.

4. Tool calling, RAG и мультимодальность
- Вызов внешних инструментов (tool calling).
- Retrieval-augmented generation (RAG).
- Поддержка мультимодальных сценариев (текст, изображения и др.).

5. Инструменты для разработчиков
- Независимая CLI-утилита для локальной разработки.
- Developer UI: тестирование промтов, отладка flows, отслеживание производительности и трассировка.

6. Команда `genkit init:ai-tools`
Автоматическая интеграция с AI-ассистентами разработки: Gemini CLI, Firebase Studio, Claude Code, Cursor и др.

7. Примеры кода
В официальной документации показано, как определять flows, запускать HTTP endpoints, работать с моделями и инструментами.

🚀 Почему это важно
- Быстрая и безопасная разработка AI-приложений на Go.
- Унифицированный API позволяет экспериментировать и менять провайдеров без переписывания логики.
- Встроенные dev-инструменты ускоряют отладку и интеграцию.
- Подходит как для прототипов, так и для production-решений.

📌 Официальный анонс: https://developers.googleblog.com/en/announcing-genkit-go-10-and-enhanced-ai-assisted-development/?linkId=16710004Нужно

@Golang_google


#Genkit #GoLang #GoogleAI #AIDevelopment #OpenSource #RAG
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍127🤔4🥰2🔥1😁1
👣🛠️ Как построить простую виртуальную машину (VM)

Введение
Автор вдохновился виртуальными машинами вроде WebAssembly и Ethereum VM и решил сам собрать упрощённую VM на языке Go.
Цель — интерпретация байткода, базовые арифметические операции и максимально простой дизайн.

Архитектура: стек-машина vs регистровая
- Стек-машина (stack machine) — работает по принципу LIFO, инструкции манипулируют вершиной стека. Простая и удобная для отладки.
- Регистровая машина (register machine) — оперирует регистрами как CPU, быстрее, но сложнее в реализации.
- Выбор автора — стек-машина из-за простоты и прозрачности.

Как работает

1. Пишем инструкции: PUSH8 0x48656C..., STORE8, RETURN.
2. Компилируем их в байткод: последовательность байтов (opcode + аргументы).
3. VM исполняет код: читает opcode, обновляет стек, память, pc.
4. RETURN возвращает участок памяти, например строку “Hello World!”.

Почему это интересно
- Даёт понимание, как устроены WebAssembly, JVM и другие среды выполнения.
- Отличный учебный проект: видно взаимодействие стека, памяти и инструкций.
- Можно экспериментировать: расширять набор команд, вводить обработку ошибок, делать оптимизации.

💡 Возможные улучшения
- Добавить работу с разными типами (int, float).
- Ввести условные переходы, циклы, функции.
- Сделать оптимизации: объединение инструкций, уменьшение накладных расходов.
- Обеспечить безопасность: проверка переполнения стека, деление на ноль.
- Добавить отладку: трассировка, дамп памяти и стека.

Источник: https://blog.phakorn.com/posts/2025/building-a-simple-vm/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍134🥰1
📊 Высокопроизводительная библиотека логирования для Go 🚀

mtlog — это библиотека структурированного логирования для Go, вдохновленная Serilog. Она обеспечивает нулевые аллокации для простых операций логирования и поддерживает мощные функции для сложных сценариев, включая шаблоны сообщений и совместимость с OpenTelemetry.

🚀Основные моменты:
- Нулевые аллокации для простых сообщений
- Поддержка шаблонов сообщений и Go синтаксиса
- Интеграция с Kubernetes и OpenTelemetry
- Многофреймворковая поддержка для HTTP
- Расширенные стратегии выборки и маршрутизации логов

📌 GitHub: https://github.com/willibrandon/mtlog

#go
7👍6🔥2
👣 From Bash to Go — часть III

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

Что реализовано:
• Easypod API Server — простой API-сервер поверх Kubernetes.
• Поддерживаются три базовые операции:
- POST /pod — создать Pod
- GET /pods — получить список Pod’ов
- DELETE /pod/{name} — удалить Pod
• Подключение к Kubernetes через официальный Go SDK (client-go).
• Показаны примеры кода: структуры, обработчики запросов, JSON-декодинг, взаимодействие с API-сервером кластера.

Зачем это нужно:
• Bash-скрипты хороши для простых задач, но плохо масштабируются. Go даёт типизацию, читаемость и безопасность.
• Платформа на Go позволяет абстрагировать сложные операции (например, работу с Kubernetes) и предоставить командам удобный API.
• Такой подход можно развивать: добавлять новые маршруты, интеграции и строить полноценные инструменты для DevOps и платформенной инженерии.

Что можно улучшить:
• Добавить авторизацию и аутентификацию, чтобы ограничить доступ к API.
• Реализовать логирование, метрики и мониторинг.
• Улучшить обработку ошибок и подумать о масштабировании.

🟢 Репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥2
Офер в VK для бэкендеров и ML-щиков — станьте частью команды за выходные.

4–5 октября пройдёт VK Weekend Offer. Всего за 2 дня вы сможете пройти весь путь от знакомства с командами до приглашения на работу: пройти техническое собеседование, встретиться с лидами и получить офер.

Требования для бекэндеров – три года опыта коммерческой разработки, знание Java, Go, Python, C++.
Для ML-щиков – те же три года опыта + знания Classic ML, RecSys, NLP/LLM, CV, Speech.

Читайте подробности на сайте и подавайте заявку до 2 октября!
1🤔1😢1
Forwarded from Golang
📊 Высокопроизводительная библиотека логирования для Go 🚀

mtlog — это библиотека структурированного логирования для Go, вдохновленная Serilog. Она обеспечивает нулевые аллокации для простых операций логирования и поддерживает мощные функции для сложных сценариев, включая шаблоны сообщений и совместимость с OpenTelemetry.

🚀Основные моменты:
- Нулевые аллокации для простых сообщений
- Поддержка шаблонов сообщений и Go синтаксиса
- Интеграция с Kubernetes и OpenTelemetry
- Многофреймворковая поддержка для HTTP
- Расширенные стратегии выборки и маршрутизации логов

📌 GitHub: https://github.com/willibrandon/mtlog

@golang_google

#golang
👍42🔥2
📈 Ещё месяц назад вы могли не знать о Go ничего. Сегодня — читаете этот канал. Следующий уровень — начать применять знания на практике.

Чтобы ускорить процесс, попробуйте структурированный подход: обновлённый курс 2025 года «Go-разработчик с нуля» от Нетологии.

На нём вы:

- Выстроите прочную базу по Golang: от написания первых строк кода до работы с модулями, файлами и ошибками.
- Изучите основы DevOps, поймёте, как работать с данными, создавать веб-приложения и REST API.
- Попрактикуетесь на реальных задачах и добавите в портфолио 5 масштабных проекта.
- Пройдёте тестовые собеседования и получите возможность стажировки у партнёров курса.

А потом сможете читать этот канал с ещё большим интересом и понимать каждое обсуждение.

Начать учиться со скидкой 40%.

А если купите курс в сентябре, получите ещё 5 в подарок — по ИИ, психологии и коммуникациям

Реклама. ООО "Нетология". ИНН 7726464125 Erid 2VSb5wmoZDT
😢21😁1
📦 Для Go появился лёгкий и удобный инструмент для событийной архитектуры

signals — это минималистичная библиотека без зависимостей, которая реализует простой pub-sub механизм для ваших Go-приложений.

Особенности:
- никаких внешних зависимостей
- тонкий и понятный API
- удобный in-process event system

Репозиторий: https://github.com/maniartech/signals

#golang
👍13🔥51
🆕 На Stepik вышел курс — «Golang + SQLx: построение высоконагруженных сервисов с нуля до продакшена» 

Уже пишете на Go и хотите разобраться, как строить быстрые и отказоустойчивые сервисы? Этот курс — именно то, что нужно, чтобы прокачать навыки работы с SQLx и backend-архитектурой.

• Полный путь от CRUD-операций до масштабируемых систем: транзакции, уровни изоляции, конкурентное программирование, балансировка нагрузки
• Оптимизация SQL: индексы, кэширование, профилирование запросов
• Масштабирование и администрирование сервисов: кластеры, отказоустойчивость, мониторинг и логирование
• Практика на реальных кейсах: проектируем API, отрабатываем ошибки, настраиваем CI/CD
• 150+ интерактивных заданий с автопроверкой — пишите код прямо в браузере, когда удобно
• Итоговый pet-project: к концу курса у вас будет готовый сервис уровня продакшн

🎓 Сертификат по завершении — добавьте его в резюме или профиль LinkedIn

🚀 Прокачайте Golang и SQLx с пользой и практикой. Начните уже сегодня и получите скидку 30%, которая действует в течение 48 часов.

👉 Пройти курс на Stepik
🤬63🤔3🔥1
Graceful Shutdowns в Go HTTP-серверах: как обеспечить 0 простоев при живом трафике

Graceful shutdown - это “прощание с клиентами”, когда сервер:
- перестаёт принимать новые запросы
- даёт завершиться текущим запросам
- чистит ресурсы (базы, файлы и т.д.)
- и только потом закрывается

Зачем это нужно:
Если просто “убить” сервер:
- запросы могут оборваться на полпути (например, оплата)
- пользователи получат ошибки или потеряют данные
- могут остаться “висячие” соединения и утечки ресурсов

Graceful shutdown решает это, особенно важно при деплое, перезагрузках, работе в Kubernetes/Docker.

# Как это сделать в Go
1. Использовать http.Server.Shutdown(ctx) - сервер перестаёт принимать новые запросы, но завершает текущие в рамках таймаута.
2. Перехватывать сигналы ОС (`SIGINT`, SIGTERM`) через `os/signal, чтобы начать shutdown.
3. Использовать context.WithTimeout, чтобы ограничить время завершения.
4. Корректно закрывать ресурсы: БД, логи, файлы и т.д.

# Пример кода

package main

import (
"context"
"log"
"net/http"
"os"
"os/signal"
"time"
)

func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
time.Sleep(3 * time.Second)
w.Write([]byte("Request done"))
})

server := &http.Server{
Addr: ":8080",
Handler: mux,
}

go func() {
log.Println("Server starting on :8080")
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("ListenAndServe error: %v", err)
}
}()

stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, os.Kill)

<-stop
log.Println("Shutting down server...")

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

if err := server.Shutdown(ctx); err != nil {
log.Fatalf("Forced shutdown: %v", err)
}

log.Println("Server exited gracefully")
}


Вывод

- Graceful shutdown — не просто “красивость”, а необходимая практика для надёжных Go-сервисов:
- минимизирует потери данных и ошибок для пользователей
- обеспечивает корректное завершение внутренних операций
- делает деплой и перезапуск безопасными и незаметными

https://blog.stackademic.com/graceful-shutdowns-in-go-http-servers-ensuring-zero-downtime-for-live-traffic-b8224b28ab4a
18👍10