В новой версии Task появились две функции, которых давно ждали. Разберем, что они дают на практике.
Task — это инструмент на Go для автоматизации задач. Альтернатива Makefile, только с YAML-синтаксисом и без специфики make. Вы описываете команды в файле Taskfile.yml, а потом запускаете их через task имя-задачи.
К новым фичам.
Условное выполнение через
if:if: работает на уровне задачи или отдельной команды. Условие задается либо через bash-команду, либо через Go template.Пример на уровне задачи:
version: '3'
tasks:
deploy:
if: '[ "$CI" = "true" ]'
cmds:
- echo "Deploying..."
- ./deploy.sh
Задача deploy выполнится только если переменная окружения CI равна true. В локальной разработке деплой не запустится, в CI — запустится.
До этого в Task были
sources:, status: и preconditions:, но они решали другие задачи.Интерактивный ввод переменных
Вторая функция — автоматический запрос обязательных переменных. По умолчанию отключена, включается флагом
--interactive или параметром interactive: true в .taskrc.yml.Когда функция активна, Task будет спрашивать значения обязательных переменных во время выполнения:
version: '3'
tasks:
greet:
desc: Greet someone by name
requires:
vars:
- NAME
cmds:
- echo "Hello, {{.NAME}}!"
При запуске
task greet появится приглашение ввести NAME.Условное выполнение упрощает Taskfile, когда логика зависит от окружения или флагов. Не нужно создавать отдельные задачи для разных условий — одна задача с несколькими ветками.
📍 Навигация: Вакансии • Задачи • Собесы
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤4
Golang-разработчик — до 200 000 ₽ на гибрид в МСК.
Junior Golang разработчик — до 120 000 ₽.
Golang Developer Middle+ — до 260 000 ₽ на удалёнку.
📍 Навигация: Вакансии • Задачи • Собесы
#GoWork
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3❤2🔥2
Go + AI-агенты: как строить архитектуру современных ИИ-сервисов
Хотя агентов чаще пишут на
Курс «Углубленные AI-агенты» поможет вам разобраться в теме на стыке инженерии и ИИ.
На курсе вы:
— поймете принципы работы мультиагентных систем;
— изучите фреймворки
— разберетесь с RAG и использованием внешних инструментов;
— узнаете, как деплоить и масштабировать агентские решения.
Обучение уже идет, залетайте.
🚀 Записаться на основной курс
Если сомневаетесь — просто посмотрите вводное занятие.
Хотя агентов чаще пишут на
Python, их бэкенд и инфраструктура в нагруженных системах часто ложатся на Go. Чтобы эффективно интегрировать ИИ в свои продукты, нужно понимать логику работы агентских систем.Курс «Углубленные AI-агенты» поможет вам разобраться в теме на стыке инженерии и ИИ.
На курсе вы:
— поймете принципы работы мультиагентных систем;
— изучите фреймворки
LangGraph и CrewAI;— разберетесь с RAG и использованием внешних инструментов;
— узнаете, как деплоить и масштабировать агентские решения.
Обучение уже идет, залетайте.
🚀 Записаться на основной курс
Если сомневаетесь — просто посмотрите вводное занятие.
В Go 1.26 появится возможность передавать выражения в встроенную функцию
new. Раньше new принимал только типы — new(int), new(MyStruct). Теперь можно писать new(123) или new(x + y), и функция вернет указатель на значение выражения.Что делает анализатор newexpr
Анализатор находит функции вида:
func varOf(x T) *T { return &x }и предлагает два фикса.
Первый фикс — преобразовать функцию в обертку вокруг
new://go:fix inline
func varOf(x int) *int { return new(x) }
Директива
//go:fix inline указывает анализатору inline предлагать инлайнинг вызовов этой функции.Второй фикс — заменить вызовы функции напрямую на
new://Было
use(varOf(123))
//Стало
use(new(123))
Если в проекте есть десятки или сотни вызовов вспомогательных функций типа
varOf, intPtr, stringPtr, анализатор автоматизирует их замену.📍 Навигация: Вакансии • Задачи • Собесы
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Признайтесь: вы не хотите работать больше. Вы хотите работать быстрее, чтобы скорее закрыть ноутбук и заняться своими делами.
Достаточно просто перестать мешать своему мозгу.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
gomodjail ограничивает системные вызовы для конкретных Go-модулей. Цель — снизить риски от уязвимостей и атак через цепочку поставок зависимостей. Это контейнеризация на уровне модулей, а не всего приложения.
Старт в два шага
1. Добавить комментарий в go.mod:
require (
example.com/module v1.0.0 // gomodjail:confined
)
2. Запустить программу через
gomodjail:gomodjail run --go-mod=go.mod -- ./program
Модули с пометкой
gomodjail:confined теперь работают с ограничениями на системные вызовы.Важно понимать границы инструмента:
• Не работает с бинарниками от недоверенных сторон
• Не применим к модулям, использующим unsafe, reflect, plugin, CGO, ассемблер
• На macOS защиту можно отключить через unset DYLD_INSERT_LIBRARIES
В репозитории есть готовые профили для популярных инструментов, включая Docker.
📍 Навигация: Вакансии • Задачи • Собесы
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3
🎯 Нестандартные форматы резюме
Листайте карточки и подбирайте вариант резюме под свои навыки. В комментах можете поделиться своими нестандартными резюме 👇
➡️ В статье ещё один формат
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
Листайте карточки и подбирайте вариант резюме под свои навыки. В комментах можете поделиться своими нестандартными резюме 👇
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👾3👍1
Команда Go обновляет статус Go 1.26: на данный момент нет блокеров для релиза и права на коммиты в релизную ветку теперь имеют только релиз-координаторы.
На следующей неделе ждём третий релиз-кандидат
📍 Навигация: Вакансии • Задачи • Собесы
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4
Оркестрация AI: подход LangGraph
Философия Go — простота и контроль. Линейные цепочки
Это превращает «магию» в надёжный процесс:
— управляемый поток (аналог каналов коммуникации);
—
— отсутствие скрытой магии (explicit over implicit).
Хотите понять, как строить такие бэкенды? Курс уже стартовал.
Записаться на курс
Сомневаетесь? Гляньте первую лекцию.
Философия Go — простота и контроль. Линейные цепочки
LangChain — это «спагетти».LangGraph ближе к тому, как мы проектируем микросервисы: чёткие узлы, явные связи, контроль потока.Это превращает «магию» в надёжный процесс:
— управляемый поток (аналог каналов коммуникации);
—
state как единственный источник истины;— отсутствие скрытой магии (explicit over implicit).
Хотите понять, как строить такие бэкенды? Курс уже стартовал.
Записаться на курс
Сомневаетесь? Гляньте первую лекцию.
❤1
Вроде бы простой вопрос, но ответов может быть множество.
0 1 0 1? Или 1 2 3 4? Попробуйте порассуждать, прежде чем смотреть ответ под спойлером
Ответ:
#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🛠 Трейсинг SQL-запросов в Go
Медленные запросы, N+1, отсутствие индексов — классика жанра при нагруженной работе с БД. Проблема в том, что понять, где именно всё тормозит, не всегда просто. Разберём три подхода к отслеживанию SQL-запросов: от самого простого к наиболее элегантному.
1. Добавляем трейсинг вручную в каждую функцию репозитория:
Проблемы: засоряет код, нужно обновлять при каждом изменении запроса, много дублирования.
2. Обёртка над sql.DB
Создаём структуры-обёртки, которые автоматически оборачивают запросы:
Использование:
Плюсы: явный контроль, легко отключить, минимальные изменения в коде.
3. Обёртка драйвера
Используем кастомный database driver, который полностью скрывает логику трейсинга. Это полностью избавляет от лишнего кода и оставляет бизнес-логику чистой, но в это же время будет сложнее понять, что происходит под капотом у таких решений.
Второй подход — оптимальный баланс между явностью кода и удобством использования. Получаем чистый код репозиториев, автоматический трейсинг всех запросов и возможность легко отключить отслеживание там, где оно не нужно.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoDeep
Медленные запросы, N+1, отсутствие индексов — классика жанра при нагруженной работе с БД. Проблема в том, что понять, где именно всё тормозит, не всегда просто. Разберём три подхода к отслеживанию SQL-запросов: от самого простого к наиболее элегантному.
1. Добавляем трейсинг вручную в каждую функцию репозитория:
func GetUserByEmail(ctx context.Context, db *sql.DB, email string) (*User, error) {
span := tracer.Begin(ctx, "query: users by email")
defer span.Finish()
row := db.QueryRowContext(ctx,
"SELECT id, name, email FROM users WHERE email = $1", email)
// обработка результата...
}Проблемы: засоряет код, нужно обновлять при каждом изменении запроса, много дублирования.
2. Обёртка над sql.DB
Создаём структуры-обёртки, которые автоматически оборачивают запросы:
type TracedDB struct {
db *sql.DB
context context.Context
}
func (tdb *TracedDB) QueryRow(sql string, params ...any) *sql.Row {
span := tracer.Begin(tdb.context, sql)
defer span.Finish()
return tdb.db.QueryRowContext(tdb.context, sql, params...)
}
func (tdb *TracedDB) Exec(sql string, params ...any) (sql.Result, error) {
span := tracer.Begin(tdb.context, sql)
defer span.Finish()
return tdb.db.ExecContext(tdb.context, sql, params...)
}Использование:
// Инициализация
tracedDB := NewTracedDB(ctx, database)
// В репозитории
func (r *Repository) FindUser(ctx context.Context, db *TracedDB, id int64) (*User, error) {
// все запросы автоматически попадают в трейсинг
row := db.QueryRow("SELECT * FROM users WHERE id = $1", id)
}
Плюсы: явный контроль, легко отключить, минимальные изменения в коде.
3. Обёртка драйвера
Используем кастомный database driver, который полностью скрывает логику трейсинга. Это полностью избавляет от лишнего кода и оставляет бизнес-логику чистой, но в это же время будет сложнее понять, что происходит под капотом у таких решений.
Второй подход — оптимальный баланс между явностью кода и удобством использования. Получаем чистый код репозиториев, автоматический трейсинг всех запросов и возможность легко отключить отслеживание там, где оно не нужно.
📍 Навигация: Вакансии • Задачи • Собесы
#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
Технически мы вспоминаем последние новости января, но сегодня уже февраль, поэтому дайджест февраля.
— Исследование Go в России
— Task 3.47.0
— 10 чит-кодов для домашнего офиса
— Нестандартные форматы резюме
— Go избавился от блокеров
📍 Навигация: Вакансии • Задачи • Собесы
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Архитектура агентов: взгляд инженера
Хотя
Современный AI-агент — это не магия, а распределённая система с логикой retry, fallback и валидацией. Если вы проектируете сложные системы, вам полезно понимать, как устроен «мозг» агента изнутри.
Курс по AI-агентам поможет расширить инженерный кругозор.
Записаться на курс
Разбор архитектуры: Смотрите вводный урок бесплатно.
Хотя
LangGraph написан на Python/JS, концепции, которые он внедряет, важны для любого бэкендера. Это чистая инженерия: State Machines, DAGs (и циклические графы), персистентность состояния.Современный AI-агент — это не магия, а распределённая система с логикой retry, fallback и валидацией. Если вы проектируете сложные системы, вам полезно понимать, как устроен «мозг» агента изнутри.
Курс по AI-агентам поможет расширить инженерный кругозор.
Записаться на курс
Разбор архитектуры: Смотрите вводный урок бесплатно.
❤1
🤹♂️ Жонглирование окнами вместо разработки
Разработчик больше десяти лет поддерживает сервис на Go в продакшене. За это время накопилась проблема: локальная разработка — это постоянное переключение между запущенными процессами, логами, SSH-сессиями и несколькими worktree. Держать в голове контекст всех этих частей одновременно оказалось утомительно.
Решение — собственная разработка на Go под названием Trellis. Инструмент объединяет весь цикл работы в одну среду: локальные сервисы, удалённые логи, SSH-сессии и worktree синхронизируются автоматически. Переключили worktree — вместе с ним переехали все связанные процессы, терминалы и логи.
➡️ Чекнуть проект
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoLive
Разработчик больше десяти лет поддерживает сервис на Go в продакшене. За это время накопилась проблема: локальная разработка — это постоянное переключение между запущенными процессами, логами, SSH-сессиями и несколькими worktree. Держать в голове контекст всех этих частей одновременно оказалось утомительно.
Решение — собственная разработка на Go под названием Trellis. Инструмент объединяет весь цикл работы в одну среду: локальные сервисы, удалённые логи, SSH-сессии и worktree синхронизируются автоматически. Переключили worktree — вместе с ним переехали все связанные процессы, терминалы и логи.
📍 Навигация: Вакансии • Задачи • Собесы
#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3