37.2K subscribers
1.49K photos
36 videos
5 files
1.64K links
加入频道
Outpost — это open-source инструмент, позволяющий принимать вебхуки локально и безопасно проксировать их к вашему приложению.

По сути, это альтернатива таким сервисам, как ngrok, но с упором на работу с вебхуками.

Что делает:

Принимает вебхуки из внешних сервисов (например, Stripe, GitHub, Twilio и др.).

Проксирует их к локальному серверу через защищённое соединение.

Поддерживает надёжную доставку и ретрансляцию, если ваш локальный сервер временно недоступен.

Работает через Hookdeck Cloud, но может использоваться и в self-hosted сценариях.

Особенности:

Полностью open-source и легко кастомизируется.

CLI-утилита для быстрой настройки и мониторинга.

Удобный лог событий и перехватчики вебхуков для отладки.

Локальный сервер остаётся закрытым для интернета — только безопасный туннель.

Примеры применения:

- Тестирование интеграции с платёжными шлюзами.

- Отладка CI/CD хуков с GitHub или GitLab.

- Разработка приложений, реагирующих на события (реальное время).

Преимущества:

Альтернатива ngrok, но заточена именно под вебхуки.

Хорошая интеграция с экосистемой Hookdeck.

Можно разворачивать в своей инфраструктуре при необходимости.

👉 Подходит для разработчиков, которые хотят настроить и тестировать вебхуки локально без хлопот с настройкой публичного доступа к своему серверу.

🖥 Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Проект: GoVisual


🧩 Что это такое

GoVisual — это инструмент с нулевой конфигурацией, написанный на Go, предназначенный для *визуализации и отладки HTTP-запросов* во время локальной разработки Go-приложений.


🚀 Ключевые возможности

• Визуализирует все входящие HTTP-запросы
• Показывает структуру и содержимое запросов в реальном времени
• Не требует дополнительной конфигурации
• Легко интегрируется в существующие Go-проекты
• Работает локально и предназначен для отладки

⚙️ Как это работает

1. Подключается к вашему HTTP-серверу в Go
2. Перехватывает и отображает все запросы, поступающие на сервер
3. Автоматически запускает веб-интерфейс для отображения логов

🎯 Когда использовать

GoVisual идеально подойдёт, если:

• Вы разрабатываете API или веб-сервер на Go
• Хотите смотреть каждый HTTP-запрос без Postman или стороннего прокси
• Нужна отладка без лишней настройки
• Хотите встроить простой мониторинг в локальную разработку
• Работает «из коробки»

go get github.com/doganarif/govisual

📦 GitHub

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
📦 Go-Package-Manager — легкий менеджер пакетов для Go-проектов без go.mod

🚀 Что это такое?

Go-Package-Manager (GPM) — это минималистичный менеджер пакетов для Go, который:
- 📁 копирует зависимости напрямую в папку pkg/
- 🧵 поддерживает установку с GitHub, Gist, Bitbucket и GitLab
- 🔧 позволяет собирать и запускать проект без конфликта с go.mod

🛠️ Основные команды:

- gpm get [repo] — загрузка зависимости
- gpm run [main.go] — сборка и запуск проекта
- gpm install — установка всех зависимостей из packages.yaml
- gpm clean — очистка всех пакетов

💡 Пример packages.yaml:

packages:
- github.com/some/package
- gitlab.com/another/dep


🎯 Кому будет полезно?

• Новичкам, которые не хотят сразу погружаться в go mod
• Тем, кто работает над однострочными утилитами или экспериментальными скриптами
• Для старых проектов без модулей или в нестандартных окружениях

🔗 Репозиторий

@golang_google
🔐 Boulder — реализация ACME-совместимого центра сертификации, автоматически проверяющего владение доменом и выпускающего TLS-сертификаты. Именно на нём работает Let’s Encrypt, бесплатно обеспечивая шифрование для миллионов сайтов.

Проект разделён на компоненты: Web Frontend, Registration Authority, Certificate Authority и другие, что позволяет изолировать критичные части системы. Внутри — строгая логика на основе объектов ACME: аккаунтов, авторизаций и сертификатов. Для связи между модулями используется gRPC, а для разработки — Docker-окружение с полным набором зависимостей.

🤖 GitHub

@golang_google
Производительность и наблюдаемость бэкенда. Поиск проблем в продакшене

Признак мастерства бэкендера — глубокое понимание своего стека и того, как работает код в продакшене. Недаром во многих бигтех-компаниях принят подход “you build it, you run it”. Хороший программист не только умеет запилить фичи, но и знает, как работает в проде его софт, и может разобраться, почему его сервис тормозит. Для этого нужно знать особенности рантаймов, инфраструктуры и современные подходы к сбору телеметрии.

Приходи на курс — разберёшься в перформансе на уровне кода и инфраструктуры, научишься внедрять наблюдаемость как в бигтех-компаниях, прокачаешься для собеседований в компании, где ждут от разработчиков широкого инженерного мышления.

🌐 В программе курса:

🤩 Архитектура бэкенд-серверов (Golang, Java, PHP и др) и её особенности: модели обработки запросов и параметры конфигурации, влияющих на производительность
🤩 Zero-code instrumentation на разных языках программирования
🤩 Open Telemetry: основы технологии и применение на примере SigNoz
🤩 Суб-real-time телеметрия поверх UDP c PINBA и “промстэком” (Grafana/Prometheus)

🥸 Кто мы: R&D-центр Devhands. Автор курса — Михаил Курмаев, эксперт по сложным распределённым системам. Долгое время строил платформу в Badoo/Bumble, сейчас в Т-банке развивает дата-платформу.

🗓 Старт курса: 3 июня, 4 недели обучения.
Изучить программу и записаться можно здесь.

Ждем вас!

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqvWLPSc
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Sqlc-gen-go-server — это плагин для sqlc, который автоматически генерирует серверную часть на Go (gRPC, Connect или HTTP) на основе SQL-запросов.

Он позволяет разработчикам создавать типобезопасные 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
👣 Jessy — ультрабыстрая JSON-библиотека для Go

Без рефлексии. Без аллокаций. В реальном времени.

Поддержка новых 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️⃣ мая. Увидимся в комментариях!
🛠 brewkit — инструмент для контейнеризации сборки приложений.

Инструмент основан на движке BuildKit и дополняет его полезными фишками:
• "Агрессивное" кеширование всех этапов сборки;
• Простой формат конфигурации в JSONNET.

Главное преимущество brewkit в том, что сборка полностью независима от платформы и не требует дополнительно устанавливать на хосте все необходимые компиляторы, кодогенераторы, линтеры и т.д., ведь всё подтягивается из Docker-образов.

Проект — open-source разработка компании iSpring, в которой он повсеместно используется для сборки приложений на Go, как локально, так и в CI/CD.

go install github.com/ispringtech/brewkit/cmd/brewkit@latest

👩‍💻 GitHub

@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
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣🔟
ИТ-событие, которое нельзя пропустить. Участие бесплатное


6 июня разработчики из российских бигтехов на практических примерах покажут, как ИИ перестал быть экспериментом и стал частью разработки.

В программе:
— Больше 40 докладов от известных ученых и ИТ-компаний.
— Выступления зарубежных спикеров с индексом Хирша более 50.
— Концентрация практических кейсов: как создаются большие проекты с применением AI.
— Доклады по архитектуре, бэкенд-разработке и построению ИТ-платформ.
— AI-интерактивы и технологические квесты.
— Пространство для нетворкинга,
…а еще after-party со звездным лайн-апом.

Когда: 6 июня
Где: Москва, МТС Live Холл и онлайн
Регистрация по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
🕰️ Подводные камни работы с пакетом `time` в 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
🚀 AЭРОДИСК ищет Golang-разработчика для разработки высокопроизводительных систем хранения данных!

Если ты хочешь:

— Разрабатывать и оптимизировать модули СХД на Go;
— Работать с блочными и файловыми хранилищами, повышая их производительность;
— Реализовывать репликацию, балансировку нагрузки и отказоустойчивость;
— Интегрироваться с Linux-системами и сетевыми стеками;
— Писать тесты и бенчмарки для оценки производительности;

📌 Что важно:
— Опыт разработки на Go от 2 лет;
— Глубокое понимание Linux, системных вызовов, работы с файловыми системами;
— Опыт работы с блочными устройствами, SCSI, NVMe, iSCSI, NFS, SMB;
— Знание распределённых систем и алгоритмов согласованности данных;
— Умение работать с сетевыми протоколами (TCP/IP, RDMA);
— Понимание принципов оптимизации ввода-вывода (IOPS, latency, throughput);

🕒 Все плюшки у нас: оформление по ТК РФ, социальный пакет с выбором льгот (ДМС, спорт, питание, обучение), оплата мобильной связи, внутренние тренинги, уютный офис в БЦ "Кругозор" (10 минут от м. Калужская), корпоративные мероприятия, зона отдыха с аэрохоккеем и настольным футболом.

👉 Больше деталей и отклик на hh.ru

Разработка, где скучно точно не будет.

Реклама. ООО "АЕРО ДИСК". ИНН 7731475010. erid: 2W5zFHN7k48
👣 Stateless Postgres Query Router — это система шардирования для PostgreSQL-кластера, доступная с открытым исходным кодом. Её основной компонент, роутер, анализирует запросы и определяет, на каком конкретном PostgreSQL-кластере следует выполнить транзакцию или запрос.

Ключи шардирования могут передаваться в запросе как явно, так и неявно, в виде комментариев.
В SPQR реализованы функции транзакционного и сессионного пулинга, автобалансировки шардированных таблиц, а также поддержка всех возможных методов аутентификации, сбора статистики и динамической перезагрузки конфигурации.

SPQR поддерживает как запросы к определённому шарду, так и запросы ко всем шардам. В ближайших планах — добавить поддержку двухфазных транзакций и референсных таблиц.

Исходный код SPQR распространяется под лицензией PostgreSQL Global Development Group

⚡️ Ссылки:
🟢https://github.com/pg-sharding/spqr
🟢https://pg-sharding.tech/

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM