Он позволяет разработчикам создавать типобезопасные API без необходимости вручную писать обработчики или маршруты.
X (formerly Twitter)
🔧 Основные возможности
Поддержка нескольких протоколов: Генерация серверов с использованием gRPC, Connect или стандартного HTTP.
- Гибкая настройка: Возможность указания пользовательских опций, таких как имя пакета, префиксы маршрутов и другие параметры через конфигурационный файл sqlc.yaml.
- Простая интеграция: Легко встраивается в существующие проекты на Go, используя стандартные инструменты и практики.
🚀 Быстрый старт
Установка sqlc:
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
Добавление плагина в конфигурацию
sqlc.yaml:
version: '2'
plugins:
- name: go-server
wasm:
url: https://github.com/walterwanderley/sqlc-gen-go-server/releases/download/v0.1.0/sqlc-gen-go-server.wasm
sha256: "<SHA256-сумма>"
sql:
- schema: schema.sql
queries: query.sql
engine: postgresql
codegen:
- plugin: go-server
out: internal/db
options:
package: db
Генерация кода:
sqlc generate
▪ Github
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Без рефлексии. Без аллокаций. В реальном времени.
✅ Поддержка новых map на базе Swiss Table
✅ Тег omitzero для пропуска нулевых значений
✅ Интерфейсы TextAppender и JsonAppender
✅ Ускоренный Unmarshal через jessy.UnmarshalTrusted
✅ Кастомные энкодеры: AddValueEncoder, AddUnsafeEncoder
💡 Как это работает:
При первом проходе Jessy анализирует тип, и запоминает стек вызовов для каждого поля и всех возможных ветвлений.
Дальнейшая работа — просто прямой маршаллинг из памяти, без лишней логики.
⚙️ Подходит для high-load систем, realtime-сервисов и микросервисной архитектуры.
Jessy — не просто быстрее. Быстрее всех.
🔧 Главное отличие от конкурентов:
Поддержка новых версий Go, минимальный overhead, никакой автогенерации и никакого ассемблера.
🔗 github.com/avpetkun/jessy-go
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Розыгрыш билетов на GolangConf X от сообщества Go To IT‼️
Уже 4 июня в Москве пройдет конференция по Golang в новом формате: целый день топовые спикеры в четыре потока будут рассказывать о самом языке, а также о его всевозможных применениях. Это отличная возможность набраться знаний и пообщаться с коммьюнити онлайн или офлайн 🖥
Поэтому сообщество gIT разыгрывает 4 онлайн-билета на GolangConf X! 🎫🎫🎫🎫
Как получить билет:
- подписаться на телеграм-канал gIT;
- под постом розыгрыша оставить комментарий, в котором необходимо рассказать, чего вам не хватает в Golang или чем помог язык, оказавшись лучшим выбором из остальных вариантов.. Примеры кейсов из жизни приветствуются 🔝
Два человека, чьи комментарии нам понравятся больше всего, получат свои билеты напрямую. Остальных двух победителей выберет рандомайзер 🎲
А результаты подведем 3️⃣0️⃣ мая. Увидимся в комментариях!
Уже 4 июня в Москве пройдет конференция по Golang в новом формате: целый день топовые спикеры в четыре потока будут рассказывать о самом языке, а также о его всевозможных применениях. Это отличная возможность набраться знаний и пообщаться с коммьюнити онлайн или офлайн 🖥
Поэтому сообщество gIT разыгрывает 4 онлайн-билета на GolangConf X! 🎫🎫🎫🎫
Как получить билет:
- подписаться на телеграм-канал gIT;
- под постом розыгрыша оставить комментарий, в котором необходимо рассказать, чего вам не хватает в Golang или чем помог язык, оказавшись лучшим выбором из остальных вариантов.. Примеры кейсов из жизни приветствуются 🔝
Два человека, чьи комментарии нам понравятся больше всего, получат свои билеты напрямую. Остальных двух победителей выберет рандомайзер 🎲
А результаты подведем 3️⃣0️⃣ мая. Увидимся в комментариях!
🛠 brewkit — инструмент для контейнеризации сборки приложений.
Инструмент основан на движке BuildKit и дополняет его полезными фишками:
• "Агрессивное" кеширование всех этапов сборки;
• Простой формат конфигурации в JSONNET.
Главное преимущество brewkit в том, что сборка полностью независима от платформы и не требует дополнительно устанавливать на хосте все необходимые компиляторы, кодогенераторы, линтеры и т.д., ведь всё подтягивается из Docker-образов.
Проект — open-source разработка компании iSpring, в которой он повсеместно используется для сборки приложений на Go, как локально, так и в CI/CD.
👩💻 GitHub
@golang_google
Инструмент основан на движке BuildKit и дополняет его полезными фишками:
• "Агрессивное" кеширование всех этапов сборки;
• Простой формат конфигурации в JSONNET.
Главное преимущество brewkit в том, что сборка полностью независима от платформы и не требует дополнительно устанавливать на хосте все необходимые компиляторы, кодогенераторы, линтеры и т.д., ведь всё подтягивается из Docker-образов.
Проект — open-source разработка компании iSpring, в которой он повсеместно используется для сборки приложений на Go, как локально, так и в CI/CD.
go install github.com/ispringtech/brewkit/cmd/brewkit@latest
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🌠 NATS.go — клиент для облачного обмена сообщениями на Go. Официальный Go-клиент от команды NATS.io предоставляет простой интерфейс для работы — от базовой pub/sub до персистентных JetStream-сообщений.
Достаточно трёх строк кода, чтобы подписаться на топик и обрабатывать сообщения асинхронно. Клиент поддерживает все фишки NATS: wildcard-подписки, TLS-аутентификацию и даже сервисный API для создания микросервисов.
🤖 GitHub
@golang_google
Достаточно трёх строк кода, чтобы подписаться на топик и обрабатывать сообщения асинхронно. Клиент поддерживает все фишки NATS: wildcard-подписки, TLS-аутентификацию и даже сервисный API для создания микросервисов.
🤖 GitHub
@golang_google
ИТ-событие, которое нельзя пропустить. Участие бесплатное
6 июня разработчики из российских бигтехов на практических примерах покажут, как ИИ перестал быть экспериментом и стал частью разработки.
В программе:
— Больше 40 докладов от известных ученых и ИТ-компаний.
— Выступления зарубежных спикеров с индексом Хирша более 50.
— Концентрация практических кейсов: как создаются большие проекты с применением AI.
— Доклады по архитектуре, бэкенд-разработке и построению ИТ-платформ.
— AI-интерактивы и технологические квесты.
— Пространство для нетворкинга,
Когда: 6 июня
Где: Москва, МТС Live Холл и онлайн
Регистрация по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
🕰️ Подводные камни работы с пакетом `time` в Go
Пакет
Работа со временем — это всегда зона риска: вы можете не заметить, как из-за смены часового пояса или перехода на летнее время ваша система начнёт вести себя непредсказуемо. В Go это особенно критично, поскольку язык делает ставку на простоту, но предоставляет тонкие механизмы управления временем.
Перейдём к основным идеям статьи:
- Монотонное время в Go
Go использует монотонные часы (monotonic time) при сравнении времён и вычислении интервалов. Это означает, что функции вроде
Однако есть нюанс: поддержка монотонного времени зависит от операционной системы. Например, на Windows поведение может отличаться от Linux. Кроме того, некоторые функции
Точность ожиданий
Функции вроде
Такой способ может быть полезен в тестах, где нужна высокая точность, но для продакшена не рекомендуется из-за нагрузки.
Бенчмаркинг и измерения
Многие разработчики используют
Go сам подберёт количество итераций и обеспечит надёжные измерения с учётом шумов и сборщика мусора.
Часовые пояса
В Go объект
-
-
-
Вы можете работать с временными зонами через файл
Сравнение времён
При сравнении времён важно, чтобы они были приведены к одной временной зоне. Даже если два объекта
Или используйте
📌 Подробности
Пакет
time
в языке Go — мощный инструмент, но с рядом нюансов, которые важно понимать, особенно при разработке кросс-платформенного кода, тестировании производительности и работе с часовыми поясами. В статье ["Important Considerations When Using Go's Time Package"](https://dev.to/rezmoss/important-considerations-when-using-gos-time-package-910-3aim) автор выделяет ключевые моменты, на которые стоит обратить внимание каждому Go-разработчику.Работа со временем — это всегда зона риска: вы можете не заметить, как из-за смены часового пояса или перехода на летнее время ваша система начнёт вести себя непредсказуемо. В Go это особенно критично, поскольку язык делает ставку на простоту, но предоставляет тонкие механизмы управления временем.
Перейдём к основным идеям статьи:
- Монотонное время в Go
Go использует монотонные часы (monotonic time) при сравнении времён и вычислении интервалов. Это означает, что функции вроде
time.Since(start)
или time.Until(deadline)
не зависят от текущего системного времени, что защищает от проблем при его изменении (например, если системное время изменилось вручную или произошло переключение на летнее/зимнее).Однако есть нюанс: поддержка монотонного времени зависит от операционной системы. Например, на Windows поведение может отличаться от Linux. Кроме того, некоторые функции
time.Time
, особенно при сериализации (например, MarshalJSON`), не сохраняют информацию о монотонности. Поэтому нельзя полагаться на `time.Since()
между разными экземплярами времени, сериализованными и десериализованными между процессами или машинами.Точность ожиданий
Функции вроде
time.Sleep
или таймеры (`time.After`) не гарантируют точности в миллисекундах или тем более микросекундах. Если вам важно очень точное ожидание — например, в измерениях производительности — лучше использовать активное ожидание с проверкой времени, хоть это и более затратно для CPU:
deadline := time.Now().Add(1 * time.Millisecond)
for time.Now().Before(deadline) {
// активный busy-loop
}
Такой способ может быть полезен в тестах, где нужна высокая точность, но для продакшена не рекомендуется из-за нагрузки.
Бенчмаркинг и измерения
Многие разработчики используют
time.Now()
для измерения производительности кода. Это ошибка. Вместо этого используйте пакет testing
и его возможности Benchmark
:
func BenchmarkMyFunc(b *testing.B) {
for i := 0; i < b.N; i++ {
MyFunc()
}
}
Go сам подберёт количество итераций и обеспечит надёжные измерения с учётом шумов и сборщика мусора.
Часовые пояса
В Go объект
time.Time
всегда содержит информацию о часовом поясе. Это важно! Не путайте:-
UTC()
— время в UTC-
Local()
— локальное системное время-
In(loc *time.Location)
— преобразование времени в конкретную временную зонуВы можете работать с временными зонами через файл
zoneinfo
, но будьте внимательны — не все контейнерные образы или минималистичные ОС содержат актуальные данные о временных зонах, и это может привести к неожиданным ошибкам.Сравнение времён
При сравнении времён важно, чтобы они были приведены к одной временной зоне. Даже если два объекта
time.Time
представляют одинаковую точку во времени, но один — в UTC, а другой — в Local()
, t1.Equal(t2)
может вернуть false
. Для сравнения используйте:
t1.UTC().Equal(t2.UTC())
Или используйте
Sub()
и Before/After
— они учитывают монотонную часть и обычно безопаснее.📌 Подробности
Пост об аудите криптографии Go от Trail of Bits
Статья на [go.dev](http://go.dev/blog/tob-crypto-audit) посвящена аудиту безопасности криптографических библиотек Go, проведенному Trail of Bits. Основные моменты:
🔐 Высокая надежность криптографии Go: Аудит подтвердил безопасность криптографических пакетов Go, которые отличаются строгим подходом к безопасности, минимальной сложностью кода и тщательным тестированием. Это обеспечивает защиту от уязвимостей, включая проблемы управления памятью, благодаря свойствам языка Go.
🛠 Единственная уязвимость: Обнаружена одна потенциально эксплуатируемая проблема (TOB-GOCL-3) низкой серьезности в экспериментальной интеграции Go+BoringCrypto, используемой только внутри Google. Уязвимость связана с управлением памятью и уже исправлена в Go 1.25. Она не затрагивает стандартные сборки Go, так как Go+BoringCrypto не включена по умолчанию.
🕒 Тайминговые атаки: Найдены незначительные риски тайминговых побочных каналов (TOB-GOCL-1, TOB-GOCL-2, TOB-GOCL-6). Только TOB-GOCL-2 затрагивает операции с секретными данными, но лишь на платформах Power ISA (ppc64, ppc64le). Все замечания исправлены в Go 1.25.
🔍 Дополнительные улучшения: Аудит выявил несколько информационных замечаний, включая потенциальные риски неправильного использования API (TOB-GOCL-4) и отсутствие проверки недостижимого лимита (TOB-GOCL-5). Эти рекомендации также учтены в разработке Go 1.25.
🚀 Будущее криптографии Go: Команда Go планирует внедрить новые высокоуровневые API, упрощающие выбор безопасных алгоритмов, начиная с API для хеширования паролей с автоматическим переходом на новые алгоритмы по мере развития технологий.
https://go.dev/blog/tob-crypto-audit
@golang_google
Статья на [go.dev](http://go.dev/blog/tob-crypto-audit) посвящена аудиту безопасности криптографических библиотек Go, проведенному Trail of Bits. Основные моменты:
🔐 Высокая надежность криптографии Go: Аудит подтвердил безопасность криптографических пакетов Go, которые отличаются строгим подходом к безопасности, минимальной сложностью кода и тщательным тестированием. Это обеспечивает защиту от уязвимостей, включая проблемы управления памятью, благодаря свойствам языка Go.
🛠 Единственная уязвимость: Обнаружена одна потенциально эксплуатируемая проблема (TOB-GOCL-3) низкой серьезности в экспериментальной интеграции Go+BoringCrypto, используемой только внутри Google. Уязвимость связана с управлением памятью и уже исправлена в Go 1.25. Она не затрагивает стандартные сборки Go, так как Go+BoringCrypto не включена по умолчанию.
🕒 Тайминговые атаки: Найдены незначительные риски тайминговых побочных каналов (TOB-GOCL-1, TOB-GOCL-2, TOB-GOCL-6). Только TOB-GOCL-2 затрагивает операции с секретными данными, но лишь на платформах Power ISA (ppc64, ppc64le). Все замечания исправлены в Go 1.25.
🔍 Дополнительные улучшения: Аудит выявил несколько информационных замечаний, включая потенциальные риски неправильного использования API (TOB-GOCL-4) и отсутствие проверки недостижимого лимита (TOB-GOCL-5). Эти рекомендации также учтены в разработке Go 1.25.
🚀 Будущее криптографии Go: Команда Go планирует внедрить новые высокоуровневые API, упрощающие выбор безопасных алгоритмов, начиная с API для хеширования паролей с автоматическим переходом на новые алгоритмы по мере развития технологий.
https://go.dev/blog/tob-crypto-audit
@golang_google
🚀 AЭРОДИСК ищет Golang-разработчика для разработки высокопроизводительных систем хранения данных!
Если ты хочешь:
— Разрабатывать и оптимизировать модули СХД на Go;
— Работать с блочными и файловыми хранилищами, повышая их производительность;
— Реализовывать репликацию, балансировку нагрузки и отказоустойчивость;
— Интегрироваться с Linux-системами и сетевыми стеками;
— Писать тесты и бенчмарки для оценки производительности;
📌 Что важно:
— Опыт разработки на Go от 2 лет;
— Глубокое понимание Linux, системных вызовов, работы с файловыми системами;
— Опыт работы с блочными устройствами, SCSI, NVMe, iSCSI, NFS, SMB;
— Знание распределённых систем и алгоритмов согласованности данных;
— Умение работать с сетевыми протоколами (TCP/IP, RDMA);
— Понимание принципов оптимизации ввода-вывода (IOPS, latency, throughput);
🕒 Все плюшки у нас: оформление по ТК РФ, социальный пакет с выбором льгот (ДМС, спорт, питание, обучение), оплата мобильной связи, внутренние тренинги, уютный офис в БЦ "Кругозор" (10 минут от м. Калужская), корпоративные мероприятия, зона отдыха с аэрохоккеем и настольным футболом.
👉 Больше деталей и отклик на hh.ru
Разработка, где скучно точно не будет.
Реклама. ООО "АЕРО ДИСК". ИНН 7731475010. erid: 2W5zFHN7k48
Если ты хочешь:
— Разрабатывать и оптимизировать модули СХД на Go;
— Работать с блочными и файловыми хранилищами, повышая их производительность;
— Реализовывать репликацию, балансировку нагрузки и отказоустойчивость;
— Интегрироваться с Linux-системами и сетевыми стеками;
— Писать тесты и бенчмарки для оценки производительности;
📌 Что важно:
— Опыт разработки на Go от 2 лет;
— Глубокое понимание Linux, системных вызовов, работы с файловыми системами;
— Опыт работы с блочными устройствами, SCSI, NVMe, iSCSI, NFS, SMB;
— Знание распределённых систем и алгоритмов согласованности данных;
— Умение работать с сетевыми протоколами (TCP/IP, RDMA);
— Понимание принципов оптимизации ввода-вывода (IOPS, latency, throughput);
🕒 Все плюшки у нас: оформление по ТК РФ, социальный пакет с выбором льгот (ДМС, спорт, питание, обучение), оплата мобильной связи, внутренние тренинги, уютный офис в БЦ "Кругозор" (10 минут от м. Калужская), корпоративные мероприятия, зона отдыха с аэрохоккеем и настольным футболом.
👉 Больше деталей и отклик на hh.ru
Разработка, где скучно точно не будет.
Реклама. ООО "АЕРО ДИСК". ИНН 7731475010. erid: 2W5zFHN7k48
Ключи шардирования могут передаваться в запросе как явно, так и неявно, в виде комментариев.
В SPQR реализованы функции транзакционного и сессионного пулинга, автобалансировки шардированных таблиц, а также поддержка всех возможных методов аутентификации, сбора статистики и динамической перезагрузки конфигурации.
SPQR поддерживает как запросы к определённому шарду, так и запросы ко всем шардам. В ближайших планах — добавить поддержку двухфазных транзакций и референсных таблиц.
Исходный код SPQR распространяется под лицензией PostgreSQL Global Development Group
⚡️ Ссылки:
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Тест для Golang-разработчиков, проверьте свои знания, готовы ли вы к обучению на курсе.
💻 Ответьте на 20 вопросов за 30 минут и проверьте, готовы ли вы к обучению на онлайн-курсе «Golang Developer. Professional» от OTUS. Сейчас Go становится все востребованнее, благодаря своей производительности, масштабируемости и экосистеме.
После 5 месяцев обучения вы сможете:
— Писать production-ready код, многопоточные и конкурентные программы.
— Понимать синтаксис и внутреннее устройство языка Go.
— Разворачивать микросервисы с помощью Docker.
— Проектировать и реализовывать микросервисную архитектуру на Go.
Также вас ждет прокачка навыков на реальных коммерческих кейсах и под руководством экспертов в этой области. Возможна рассрочка.
👉 ПРОЙТИ ТЕСТ
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
💻 Ответьте на 20 вопросов за 30 минут и проверьте, готовы ли вы к обучению на онлайн-курсе «Golang Developer. Professional» от OTUS. Сейчас Go становится все востребованнее, благодаря своей производительности, масштабируемости и экосистеме.
После 5 месяцев обучения вы сможете:
— Писать production-ready код, многопоточные и конкурентные программы.
— Понимать синтаксис и внутреннее устройство языка Go.
— Разворачивать микросервисы с помощью Docker.
— Проектировать и реализовывать микросервисную архитектуру на Go.
Также вас ждет прокачка навыков на реальных коммерческих кейсах и под руководством экспертов в этой области. Возможна рассрочка.
👉 ПРОЙТИ ТЕСТ
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🕊️ RoadRunner — высокопроизводительный application server на Go. Этот проект заменяет связку Nginx+PHP-FPM, позволяя запускать PSR-7-совместимые приложения с поддержкой HTTP/3, WebSockets и даже Temporal workflow.
Конфигурация через
🤖 GitHub
@golang_google
Конфигурация через
.rr.yaml
напоминает docker-compose: можно подключать очереди, кеш и метрики как плагины. Рабочие процессы PHP остаются в памяти, что даёт до 10x прирост скорости против традиционного FPM. Особенно радует встроенная система мониторинга и автоматические рестарты упавших воркеров. 🤖 GitHub
@golang_google
Go-митап с инженерами МТС Web Services
10 июня в Екатеринбурге пройдёт технический митап Go Up от MWS для Go-разработчиков.
Этот митап — классная возможность узнать, как строится облачная платформа изнутри, и задать вопросы топовым инженерам в неформальной обстановке. Go Up to the Cloud!
Музей истории Екатеринбурга, 18:00. Регистрация
10 июня в Екатеринбурге пройдёт технический митап Go Up от MWS для Go-разработчиков.
Спикеры:
• Эмиль Ибрагимов — о генерации CLI из OpenAPI
• Валерий Локтаев — об автоматизации Terraform
• Георгий Фатеев — о безопасности Go-кода
Этот митап — классная возможность узнать, как строится облачная платформа изнутри, и задать вопросы топовым инженерам в неформальной обстановке. Go Up to the Cloud!
Музей истории Екатеринбурга, 18:00. Регистрация
FFmate — это современный и мощный уровень автоматизации поверх FFmpeg. Он упрощает работу с видео и аудио, превращая хаос транскодирования в чистые, надёжные потоки обработки :contentReference[oaicite:0]{index=0}.
✨ Ключевые возможности
- REST API — программно отправлять и управлять задачами
- Веб-интерфейс — мониторинг и контроль без командной строки
- Watchfolders — автоматически обрабатывать файлы, появившиеся в папке
- Presets — готовые настройки для типичных задач
- Webhooks — уведомления о событиях задач
- Wildcards — универсальные шаблоны для именования и папок
- Hooks pre/post-processing — запуск скриптов до и после задач
- Встроенная очередь — управление приоритетами и параллельностью :contentReference[oaicite:1]{index=1}
✅ Примеры применения
- Автоматическое преобразование видео, извлечение аудио и создание превью
- Постпродакшн-пайплайны и медиа-публикации
- Интеграция с MAM-системами через вебхуки
- Централизованное API-first управление задачами FFmpeg
- Обработка файлов из папки (например, камеры) — всё без ручного запуска :contentReference[oaicite:2]{index=2}
🛠 Архитектура и запуск
FFmate написан на Go, распространяется под лицензией SSPL. В репозитории есть:
- Клиент и сервер (REST API + Web UI)
- Dockerfile и шаблоны для сборки
- Документация и примеры в
docs/
:contentReference[oaicite:3]{index=3}📣 Мнение сообщества
Из обсуждений на Reddit:
> “If you've ever struggled with managing multiple FFmpeg jobs, messy filenames, or automating transcoding tasks, FFmate might be just what you need.” :contentReference[oaicite:4]{index=4}
Это резюмирует суть — упростить задачу массового и автоматизированного транскодирования.
🔗 Полезные ссылки
- GitHub: https://github.com/welovemedia/ffmate
- Документация: https://docs.ffmate.io
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM