🚀 Разработка LLM приложений на Go с Eino
Eino — это фреймворк для создания приложений на основе LLM, ориентированный на простоту и масштабируемость. Он предлагает мощные абстракции компонентов, удобные API и инструменты для всего цикла разработки, что позволяет разработчикам легко создавать и управлять LLM приложениями.
🚀 Основные моменты:
- Удобные компоненты для быстрого создания LLM приложений.
- Мощная система оркестрации для обработки потоков и управления типами.
- Четкие и простые API для разработчиков.
- Набор лучших практик и примеров использования.
- Инструменты для визуализации и отладки приложений.
📌 GitHub: https://github.com/cloudwego/eino
#go
Eino — это фреймворк для создания приложений на основе LLM, ориентированный на простоту и масштабируемость. Он предлагает мощные абстракции компонентов, удобные API и инструменты для всего цикла разработки, что позволяет разработчикам легко создавать и управлять LLM приложениями.
🚀 Основные моменты:
- Удобные компоненты для быстрого создания LLM приложений.
- Мощная система оркестрации для обработки потоков и управления типами.
- Четкие и простые API для разработчиков.
- Набор лучших практик и примеров использования.
- Инструменты для визуализации и отладки приложений.
📌 GitHub: https://github.com/cloudwego/eino
#go
👍15❤8🔥4🤬1😢1
❓ Что выведет программа?
Всё выглядит так:
Мы передаём объект в mutate → внутри меняем → значения должны измениться.
Тут ловушка в том, что:
- интерфейсы в Go копируют значение, если оно не pointer receiver
- type assertion s, ok := i.(S) создаёт новую копию
- мы мутируем копию, а не оригинал
Так что вывод будет:
10
10
А не 100.
👉 Запустить код
package main
import (
"fmt"
)
type S struct {
v int
}
func (s S) Value() int {
return s.v
}
type I interface {
Value() int
}
func mutate(i I) {
// Мы думаем, что меняем реальный объект...
if s, ok := i.(S); ok {
s.v = 100
}
}
func main() {
s := S{v: 10}
var i I = s
mutate(i)
fmt.Println(s.v) // ???
fmt.Println(i.Value()) // ???
}
Всё выглядит так:
Тут ловушка в том, что:
- интерфейсы в Go копируют значение, если оно не pointer receiver
- type assertion s, ok := i.(S) создаёт новую копию
- мы мутируем копию, а не оригинал
Так что вывод будет:
10
10
А не 100.
👉 Запустить код
❤21👍15🤔3🔥2
Что загадывает DevOps на Новый год?
⏺ чтобы кластер обновлялся без ночных алертов
⏺ сеть работала стабильно и предсказуемо
⏺ апгрейд кластера не превращался в вечер с release notes
Разработчики Managed Kubernetes в облаке MWS Cloud Platform⬜ знают все ваши тайные желания и готовы упростить вашу DevOps-рутину.
🎄🎁 Попробуйте с грантом до 10 000 ₽
➡ Попробовать
Разработчики Managed Kubernetes в облаке MWS Cloud Platform
С Managed Kubernetes вы получаете:⏺ готовый кластер за несколько минут без сложной настройки⏺ управление жизненным циклом кластера и нод⏺ автоматическое масштабирование под нагрузку⏺ нативную работу с сетью и storage через CCM / CSI⏺ централизованное управление доступами через IAM
🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3😱1
🚀 Новый продвинутый планировщик заданий для PostgreSQL - лучше, чем cron
Если устал от cron и временных триггеров, обрати внимание на pg_timetable:
✅ Сильный: гибкий, надёжный, с богатым функционалом
✅ Легко настраивается, понятен и прозрачен
✅ Позволяет:
• запускать SQL-задачи по расписанию
• отслеживать их статус и history
• обеспечивать graceful restart и защиту от сбоев
Идеален для рабочих баз, сложной логики задач и критичных приложений.
📦 Репозиторий: https://github.com/cybertec-postgresql/pg_timetable
#golang #postgresql #devops #golang
Если устал от cron и временных триггеров, обрати внимание на pg_timetable:
✅ Сильный: гибкий, надёжный, с богатым функционалом
✅ Легко настраивается, понятен и прозрачен
✅ Позволяет:
• запускать SQL-задачи по расписанию
• отслеживать их статус и history
• обеспечивать graceful restart и защиту от сбоев
Идеален для рабочих баз, сложной логики задач и критичных приложений.
📦 Репозиторий: https://github.com/cybertec-postgresql/pg_timetable
#golang #postgresql #devops #golang
👍10❤8🔥3
Forwarded from Backend VK Hub
This media is not supported in your browser
VIEW IN TELEGRAM
❗ Пора отвлечься от хотфиксов на приятные хлопоты ❗
Время забирать подарки — годовые подписки на Облако Mail и VK Музыку.
Чтобы посоревноваться за подарки:
🔹 подпишитесь на наш канал @backendhubvk
🔹 нажмите кнопку «Участвовать»
🔹 почитайте по ссылке информацию об организаторе, правилах и призах
🔹 дождитесь 30 декабря — в этом посте мы выберем случайным образом 6 победителей
Время забирать подарки — годовые подписки на Облако Mail и VK Музыку.
Чтобы посоревноваться за подарки:
🔹 подпишитесь на наш канал @backendhubvk
🔹 нажмите кнопку «Участвовать»
🔹 почитайте по ссылке информацию об организаторе, правилах и призах
🔹 дождитесь 30 декабря — в этом посте мы выберем случайным образом 6 победителей
🤬5❤1👍1🔥1
🚀 LLMHub - единая клиент-библиотека LLM для Go
LLMHub - это легковесная библиотека на Go, которая предоставляет унфицированный API для работы с большим количеством LLM-провайдеров через единый интерфейс, совместимый с OpenAI API.
Если вы пишете на Go и хотите легко подключать разные модели (OpenAI, Claude, Gemini, Mistral, DeepSeek и многие другие) без переписывания кода под каждый провайдер, LLMHub делает этот процесс простым, типобезопасным и унифицированным.
Ключевые возможности:
• OpenAI-совместимый интерфейс для запросов завершений и чат-запросов;
• Поддержка 20+ провайдеров LLM (включая глобальные и китайские модели);
• Типобезопасные структуры данных и работа со стриминг-ответами;
• Примеры и готовый HTTP-сервер для запуска собственного LLM API.
https://github.com/gotoailab/llmhub
@Golang_google
LLMHub - это легковесная библиотека на Go, которая предоставляет унфицированный API для работы с большим количеством LLM-провайдеров через единый интерфейс, совместимый с OpenAI API.
Если вы пишете на Go и хотите легко подключать разные модели (OpenAI, Claude, Gemini, Mistral, DeepSeek и многие другие) без переписывания кода под каждый провайдер, LLMHub делает этот процесс простым, типобезопасным и унифицированным.
Ключевые возможности:
• OpenAI-совместимый интерфейс для запросов завершений и чат-запросов;
• Поддержка 20+ провайдеров LLM (включая глобальные и китайские модели);
• Типобезопасные структуры данных и работа со стриминг-ответами;
• Примеры и готовый HTTP-сервер для запуска собственного LLM API.
go get github.com/gotoailab/llmhubhttps://github.com/gotoailab/llmhub
@Golang_google
👍20❤10
Отличный репозиторий для тех, кто хочет понять трансформеры изнутри, а не только пользоваться ими.
Код полностью прокомментирован и идёт по шагам в духе курса Andrej Karpathy Neural Networks: Zero to Hero.
Внутри:
• реализация ключевых идей GPT
• понятные разборы архитектуры
• учебный, но близкий к реальным моделям подход
Хороший мостик между теорией и практикой.
Если изучаешь Go и LLM - это отличный старт:
github.com/zakirullin/gpt-go
#golang #go #llm #gpt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤28👍22🔥5
Forwarded from Golang вопросы собеседований
🚀 Go 1.26 ускоряет работу с памятью
В новом релизе Go команда сильно оптимизировала выделение памяти для малых объектов (1–512 байт).
Теперь рантайм использует специализированные версии allocator’а и таблицы переходов — чтобы быстрее подбирать нужную функцию под размер объекта, а не полагаться на одну универсальную реализацию.
📈 Что это даёт
- до 30% экономии на выделении маленьких объектов;
- примерно ~1% ускорения в реальных программах, где много аллокаций (что на масштабе — очень ощутимо).
Техническая деталь: компилятор всё ещё вызывает общий mallocgc, но на этапе выполнения он перенаправляется к новым специализированным функциям.
При необходимости поведение можно отключить флагом сборки:
GOEXPERIMENT=nosizespecializedmalloc.
Go продолжает аккуратно выжимать производительность не ломая экосистему - маленькие изменения, большой эффект.
@golang_interview
В новом релизе Go команда сильно оптимизировала выделение памяти для малых объектов (1–512 байт).
Теперь рантайм использует специализированные версии allocator’а и таблицы переходов — чтобы быстрее подбирать нужную функцию под размер объекта, а не полагаться на одну универсальную реализацию.
📈 Что это даёт
- до 30% экономии на выделении маленьких объектов;
- примерно ~1% ускорения в реальных программах, где много аллокаций (что на масштабе — очень ощутимо).
Техническая деталь: компилятор всё ещё вызывает общий mallocgc, но на этапе выполнения он перенаправляется к новым специализированным функциям.
При необходимости поведение можно отключить флагом сборки:
GOEXPERIMENT=nosizespecializedmalloc.
Go продолжает аккуратно выжимать производительность не ломая экосистему - маленькие изменения, большой эффект.
@golang_interview
👍68❤15🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
🎮 Server Survival - браузерная игра, которая обучает облачной архитектуре через механику tower-defense.
Что это:
Server Survival - это 3D-симулятор, где вы строите устойчивую инфраструктуру, выдерживаете растущий трафик и отбиваетесь от атак, следя при этом за бюджетом и репутацией.
Ключевые особенности:
- Реалистичные концепции облачных систем: балансировщики нагрузки, кэш, очереди, базы данных, WAF, хранилище.
- Нужно одновременно обрабатывать легитимный трафик и защищаться от DDoS-подобных атак.
- Каждый компонент имеет стоимость, пропускную способность и расход на обслуживание — всё как в настоящей архитектуре.
- Два режима: Survival (рост нагрузки) и Sandbox (свободная настройка параметров).
Технологии:
- Игра работает прямо в браузере.
- Сделана на JavaScript + Three.js.
- Не требует сборки — достаточно открыть index.html.
Кому подойдёт:
- Начинающим DevOps/Backend разработчикам,
- Всем, кто хочет наглядно понять, как масштабируются реальные сервисы,
- Тем, кто любит игры, но хочет попутно изучать архитектуру.
Репозиторий: github.com/pshenok/server-survival
@Golang_google
Что это:
Server Survival - это 3D-симулятор, где вы строите устойчивую инфраструктуру, выдерживаете растущий трафик и отбиваетесь от атак, следя при этом за бюджетом и репутацией.
Ключевые особенности:
- Реалистичные концепции облачных систем: балансировщики нагрузки, кэш, очереди, базы данных, WAF, хранилище.
- Нужно одновременно обрабатывать легитимный трафик и защищаться от DDoS-подобных атак.
- Каждый компонент имеет стоимость, пропускную способность и расход на обслуживание — всё как в настоящей архитектуре.
- Два режима: Survival (рост нагрузки) и Sandbox (свободная настройка параметров).
Технологии:
- Игра работает прямо в браузере.
- Сделана на JavaScript + Three.js.
- Не требует сборки — достаточно открыть index.html.
Кому подойдёт:
- Начинающим DevOps/Backend разработчикам,
- Всем, кто хочет наглядно понять, как масштабируются реальные сервисы,
- Тем, кто любит игры, но хочет попутно изучать архитектуру.
Репозиторий: github.com/pshenok/server-survival
@Golang_google
❤37👍22🔥10
Это 2D/3D-движок на базе Vulkan, разрабатываемый с акцентом на производительность, предсказуемость поведения и простоту интеграции. Автор, ранее работавший с C, отмечает, что Go в данном случае демонстрирует существенно более высокую эффективность, чем обычно ожидают от языка со сборщиком мусора.
Ключевые особенности:
— Высокая производительность: пустая сцена в тестах достигает ≈5400 FPS (против ≈1600 FPS у Unity), а полноценный рендер с PBR-материалами и тенями выдаёт до ≈2700 FPS;
— Экономное использование памяти и более быстрые сборки по сравнению с популярными конкурентами;
— Поддержка нескольких платформ: Windows, Linux, Android (в рабочем состоянии), macOS - в активной разработке;
— Возможность интегрировать локальные LLM непосредственно в движок.
Проект находится в стадии активной разработки, но уже сейчас подходит для экспериментов, пет-проектов и изучения геймдева с использованием Go.
https://github.com/KaijuEngine/kaiju
Please open Telegram to view this post
VIEW IN TELEGRAM
👍67❤11🥰5
⚡ Go 1.26 «всё стало быстрее»
Go 1.26 - это не просто минорное обновление, а заметный прирост скорости почти во всём:
- более быстрый GreenTea GC
- ускоренные аллокации памяти
- плюс 20–30% скорости на cgo-вызовах
🔎 Что именно изменили внутри
В рантайме Go есть сущность processor (P) — ресурс, который нужен, чтобы поток мог выполнять горутины.
Каждый P может быть в одном из состояний:
- running - выполняет код
- idle - ждёт работу
- gcstop - остановлен для сборки мусора
Раньше было ещё состояние syscall:
оно использовалось, когда горутина выполняла системный вызов или cgo.
Теперь это состояние убрали.
Вместо него рантайм просто проверяет состояние самой горутины, закреплённой за процессором.
✅ Что это даёт
- меньше внутреннего оверхеда
- более простые и прямые код-пути
- заметное ускорение системных и cgo-вызовов
Красиво и элегантно: упрощение кода сделало работу быстрее.
Go 1.26 - это не просто минорное обновление, а заметный прирост скорости почти во всём:
- более быстрый GreenTea GC
- ускоренные аллокации памяти
- плюс 20–30% скорости на cgo-вызовах
🔎 Что именно изменили внутри
В рантайме Go есть сущность processor (P) — ресурс, который нужен, чтобы поток мог выполнять горутины.
Каждый P может быть в одном из состояний:
- running - выполняет код
- idle - ждёт работу
- gcstop - остановлен для сборки мусора
Раньше было ещё состояние syscall:
оно использовалось, когда горутина выполняла системный вызов или cgo.
Теперь это состояние убрали.
Вместо него рантайм просто проверяет состояние самой горутины, закреплённой за процессором.
✅ Что это даёт
- меньше внутреннего оверхеда
- более простые и прямые код-пути
- заметное ускорение системных и cgo-вызовов
Красиво и элегантно: упрощение кода сделало работу быстрее.
🔥95👍36❤16🤔3
Опубликовал подробный тур по предстоящему релизу Golang. Часть функций мы уже успели обсудить, другие ещё разберём — а если хотите сразу всю картину целиком, заглядывайте.
Версия Go 1.26 выходит в феврале 2026 года и приносит сразу несколько важных улучшений от языка до производительности и инструментов.
В официальных релиз-нотах (сухих по стилю) мало примеров, поэтому ниже главное в понятной форме с примерами.
🆕 1. new(expr) - новый синтаксис, упрощающий код
Раньше new принимал только тип:
p := new(int)
Теперь можно передавать выражение, и это создаёт указатель на значение:
p := new(42) // *int со значением 42
Это особенно полезно, когда вы используете указатели на поля в структурах (например, для опциональных значений в JSON).
💡 2. Улучшенное проверочное API для ошибок
Появилась функция errors.AsType, которая делает проверку ошибок типобезопасной и без рефлексии:
if target, ok := errors.AsType[*net.OpError](err); ok {
fmt.Println("Network error:", target.Op)
}
Это удобнее и безопаснее, чем errors.As.
🧠 3. Green Tea garbage collector
Сборщик мусора получил значительные оптимизации:
— работает быстрее и эффективнее за счёт лучшего использования кеша и многопоточной обработки,
— снижает накладные расходы в программах с интенсивной аллокацией.
🚀 4. Быстрее cgo, системные вызовы, аллокация
— Существенно уменьшена стоимость cgo вызовов — до ~30% в сторону ускорения.
— Улучшено время системных вызовов.
— Улучшена производительность аллокации небольших объектов.
🧬 5. Experimental: SIMD и безопасное стирание секретов
В Go 1.26 появляются эксперименты, которые можно включить через GOEXPERIMENT:
• simd/archsimd — доступ к векторным (SIMD) операциям на amd64.
• runtime/secret — безопасное стирание временных данных, используемых, например, в криптографии.
📊 6. Новые метрики и инструменты
Пакет runtime/metrics расширен:
— можно отслеживать количество горутин по состояниям,
— появились дополнительные показатели для диагностики.
📦 7. Мелкие, но важные изменения
— go fix переработан на основе анализа кода (Modernizers).
— go doc становится «одной командой» для документации.
— Улучшены стандартные библиотеки, включая работу с ошибками и кодированием.
Go 1.26 не ломает обратную совместимость, но приносит:
✔ более выразительные языковые конструкции,
✔ ускорение выполнения и сборки,
✔ улучшенные инструменты разработчика,
✔ экспериментальные механизмы для высокопроизводительных и безопасных систем.
Если вы используете Go в продакшене - стоит начать тестировать ранние сборки и готовиться к обновлению.
Тур: https://antonz.org/go-1-26
Видео: https://www.youtube.com/watch?v=TxqTwSx-rI4
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤65🔥36👍19👏2😁1
gotui - это современная TUI-библиотека на Go, построенная поверх tcell. Проект является обновлённым и доработанным форком termui с фокусом на производительность и возможности современных терминалов.
Основные возможности:
- Поддержка TrueColor (24-битный цвет)
- Быстрый и эффективный рендеринг без лишних перерисовок
- Гибкие flex-layoutы для адаптивных интерфейсов
- Закруглённые рамки и аккуратный внешний вид
- Обработка пользовательского ввода
- Полная функциональная совместимость с termui
Где пригодится:
- Терминальные дашборды
- Мониторинг сервисов
- DevOps и SRE инструменты
- Админки и внутренние утилиты
- Интерактивные CLI-приложения
Отличный выбор, если хочется писать красивые, современные и быстрые TUI-приложения на Go без боли и устаревших ограничений.
github.com/metaspartan/gotui
#golang #go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥9🤔3❤2🤯2🥰1
Владение Docker - навык, который отличает новичка от профи,
Сегодня почти всё разворачивается в контейнерах.
Если ты не умеешь работать с Docker, ты медленнее, зависим от чужих настроек и постоянно ловишь баги «у меня локально работает».
• как упаковывать проекты в контейнеры
• как поднимать целые системы за минуты
• как избегать типичных ошибок в продакшене
• как делать стабильные и повторяемые окружения
•в нем разобраны все возможные ошибки
Только практика и реальные кейсы от авторов Docker Академии - с нуля до уверенного уровня.
🎁 Скидка 40 процентов действует 48 часов
👉 Записывайся и сделай Docker своим настоящим рабочим инструментом.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24👍6🤬6😁4🔥3
Раньше ограничения типов не могли напрямую или косвенно ссылаться на параметр типа.
Например, такое объявление интерфейса:
type Ordered[T Ordered[T]] interface {
Less(T) bool
}
Что приводило к ошибке компиляции:
invalid recursive type: Ordered refers to itself.Начиная с Go 1.26, этот код компилируется без проблем.
Типичный сценарий использования - обобщённый тип, который поддерживает операции с аргументами или результатами того же типа, что и он сам (например,
Ordered[T]).Такой тип можно использовать как элемент обобщённого контейнера, например
Tree[T Ordered[T]].В результате дженерики в Go стали немного более выразительными и гибкими, особенно для структур данных и алгоритмов.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉32👍17❤13😱3🔥2🤯2😁1