37.1K subscribers
1.45K photos
34 videos
5 files
1.6K links
加入频道
🎊 Выпущены версии Go 1.24.2 и 1.23.8!

Эти релизы являются минорными и в основном направлены на исправление проблем безопасности.

🔐 Безопасность: Содержит исправление безопасности для net/http (CVE-2025-22871).

📣 Анонс: https://groups.google.com/g/golang-announce/c/Y2uBTVKjBQk/m/cs_6qIK5BAAJ

📦 Скачать https://go.dev/dl/#go1.24.2

#golang #go #release

@golang_google
🌐 GoDoxy — лёгкий и быстрый reverse proxy с Web UI.

Особенности:
— простая настройка;
— многоузловая конфигурация с агентами;
— понятные сообщения об ошибках;
— авто SSL через Let's Encrypt (DNS-01);
— горячая перезагрузка при изменениях;
— маршруты из Docker-контейнеров;
— idlesleeper: спящий режим при простое;
— резервный HTTP-прокси и перенаправление TCP/UDP;
— поддержка OpenID Connect;
— middleware и кастомные страницы ошибок;
— Web UI: управление, редактор, мониторинг, логи;
— работает на Linux/AMD64, Linux/ARM64.

🔗 Github

@golang_google
Forwarded from Golang Books
👣 “Common Go Performance Patterns” — распространённые паттерны производительности в Go.

В ней рассматриваются ключевые техники, сгруппированные в четыре основные категории:​


1. Управление памятью и эффективность:

- Pooling объектов: Повторное использование объектов для снижения нагрузки на сборщик мусора и уменьшения накладных расходов на выделение памяти.​

- Предварительное выделение памяти: Заранее задавать емкость срезов и карт для предотвращения дорогостоящих операций изменения размера.​

- Выравнивание полей структур: Оптимизация расположения полей в структурах для минимизации заполнения и улучшения локальности данных.​

- Избегание упаковки интерфейсов: Предотвращение скрытых выделений памяти путем отказа от ненужных преобразований типов к интерфейсам.​


- Техники нулевого копирования: Минимизация копирования данных с использованием срезов и буферов.​

- Эффективность памяти и сборщик мусора Go: Снижение нагрузки на сборщик мусора путем минимизации использования кучи и повторного использования памяти.​

- Стековые выделения и анализ ускользания: Использование анализа ускользания для размещения значений в стеке, когда это возможно.​

2. Конкурентность и синхронизация:

Пулы рабочих горутин: Контроль уровня конкурентности с помощью пулов фиксированного размера для ограничения использования ресурсов.​

Атомарные операции и примитивы синхронизации: Использование атомарных операций или легковесных блокировок для управления общим состоянием.​

Ленивая инициализация: Отсрочка выполнения затратных операций до момента, когда они действительно необходимы.​

Совместное использование неизменяемых данных: Безопасное совместное использование данных между горутинами без блокировок путем обеспечения их неизменяемости.​
goperf.dev

Эффективное управление контекстом: Использование пакета context для передачи тайм-аутов и сигналов отмены между горутинами.​


3. Оптимизация ввода/вывода и пропускная способность:


Эффективное буферизирование: Использование буферизованных читателей/писателей для минимизации вызовов ввода/вывода.​

Группировка операций: Объединение нескольких мелких операций для уменьшения количества раунд-трипов и повышения пропускной способности.​

4. Оптимизация на уровне компилятора и настройка:

Использование флагов оптимизации компилятора: Применение флагов сборки, таких как -gcflags и -ldflags, для настройки производительности.​

Стековые выделения и анализ ускользания: Анализ того, какие значения переходят в кучу, чтобы помочь компилятору оптимизировать размещение памяти.​
goperf.dev

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

🔗 Читать

@golang_books
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Goshs — это удобная и функциональная система передачи файлов на Go, альтернатива Python библиотеки SimpleHTTPServer.

Позволяет загружать и скачивать файлы через HTTP/S с поддержкой самоподписанных или пользовательских сертификатов и базовой аутентификацией.

Ключевые возможности: загрузка/скачивание в .zip, поддержка POST/PUT-запросов, доступ через Drag & Drop, удаление файлов (по одному или массово).

Дополнительно: аутентификация, работа с буфером обмена, WebDAV (чтение), настройка тем и выполнение команд на хосте.

📌 Github

@golang_books
Please open Telegram to view this post
VIEW IN TELEGRAM
Highload буткемп: Системный дизайн, Производительность и Масштабирование

Приглашаем на курсы для прокачки навыков архитектора и проектировщика на весеннем highload-потоке от DevHands.

🌐 Приходите на уникальный образовательный трек без отрыва от работы (занятия вечером), в рамках которого вы:

🤩 изучите ключевые хайлоад-паттерны и получите навыки проектирования систем с миллионной аудиторией (балансировка, масштабирование, высокая доступность, шардинг, CAP/PACELS, транзакционные очереди и многое другое)
🤩 поупражняетесь в системном дизайне и проектировании, и получите живую обратную связь на реальных задачах: магазин/маркетплейс, объявления, соцсети, такси/доставка и тд.
🤩 погрузитесь в highload максимально, при желании в первый же день получите в управление свою инфраструктуру, попробуете “выжать” 100K RPS из своих сервисов, получите уникальный опыт работы с кластерными решениями - Redis, SPQR, CockroachDB
🤩 научитесь планировать нагрузку и связывать бизнес-показатели с нефункциональными требованиями к системе
🤩 попрактикуетесь в проведении и прохождения секций системного дизайна на интервью

Только «живые» онлайн-сессии: лекции, брейнштормы, презентации домашних проектов.

🗓 Старт потока 22 апреля, изучайте программу и записывайтесь:

🤩 Буткэмп “Производительность и масштабируемость” для тех, кто хочет поработать с собственной инфрой

🤩 Курс “Системный дизайн высоконагруженных проектов” для тех, кто хочет только практику проектирования “у доски”

🥸 Кто мы: R&D-центр Devhands, основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo и Yum! Brands, с многолетним опытом высоконагруженных проектов и управления глобальными технологическими организациями, член программного комитета Highload.

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqv8dwE1
Please open Telegram to view this post
VIEW IN TELEGRAM
🗂️ Dbmate — инструмент для миграций БД без привязки к языку.

Это самодостаточный бинарник, который не требует интеграции с конкретным фреймворком и одинаково хорошо работает с Go.

Главная фишка Dbmate — простота. Вместо сложных DSL миграции пишутся на чистом SQL, а для подключения к БД используется привычное DATABASE_URL. При этом инструмент не забывает о важных деталях: атомарности выполнения, версионировании по времени и возможности быстрого создания/удаления тестовых БД.

🤖 GitHub

@golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
Все на CodeFest’15

31 мая и 1 июня в Новосибирске пройдет ИТ-конференция CodeFest’15. Это юбилейная встреча для ИТ-специалистов. Только офлайн.

Ждут всех, кто хочет обменяться опытом и пообщаться с коллегами в неформальной обстановке. В программе конференции:

— 10 потоков и 150+ докладов от топовых спикеров по направлениям от Backend до Web3;
— «квартирники» с горячими профессиональными дискуссиями;
— нетворкинг и обмен опытом со специалистами других компаний;
— сытные кофе-брейки и большая афтепати.

Чем еще удивит CodeFest смотрите тут
👣Mox — это современный, полнофункциональный и защищенный почтовый сервер с открытым исходным кодом, предназначенный для самостоятельного обслуживания электронной почты без необходимости сложного администрирования. ​
Mox

- Основные возможности Mox:
Быстрый и простой запуск: Позволяет легко развернуть и поддерживать почтовый сервер для одного или нескольких доменов. ​

-Поддержка протоколов:
SMTP с расширениями: Для приема и отправки электронной почты.​

- IMAP4 с расширениями: Обеспечивает доступ почтовых клиентов к электронной почте. ​

- Автоматический TLS с ACME: Интеграция с Let's Encrypt и другими центрами сертификации для обеспечения безопасного соединения. ​

📌 Механизмы аутентификации и защиты:
SPF: Проверяет, разрешено ли удаленному узлу отправлять электронную почту от имени домена.​

DKIM: Подтверждает, что сообщение подписано заявленным доменом отправителя, а также подписывает исходящие письма для проверки другими серверами.​

DMARC: Применяет политики SPF/DKIM, установленные доменами, и анализирует входящие сводные отчеты DMARC. ​

Фильтрация спама и отслеживание репутации: Обучается на основе предпочтений пользователя, анализируя нежелательную и желаемую почту, для повышения эффективности фильтрации. ​
Mox

Mox предоставляет все необходимые инструменты для создания надежного и безопасного почтового сервера, объединяя современные технологии в едином, легко управляемом решении.

Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Deep vs Shallow Go interfaces

В этой статье рассматривается концепциюя «глубоких» и «поверхностных» интерфейсов в Go, основываясь на идеях из книги Джона Оустерхута «A Philosophy of Software Design».

Автор утверждает, что
"правильные" модули предоставляют мощную функциональность через простые интерфейсы, подчеркивая важность соотношения между полезностью абстракции и сложностью её интерфейса.


Пример глубокого интерфейса:
В качестве примера глубокого интерфейса рассматривается io.Reader из стандартной библиотеки Go:​


type Reader interface {
Read(p []byte) (n int, err error)
}


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

Пример поверхностного интерфейса:

В противоположность, рассматривается интерфейс Cmdable из клиента go-redis, который включает около 200 методов:​


type Cmdable interface {
Pipeline() Pipeliner
Pipelined(ctx context.Context, fn func(Pipeliner) error) ([]Cmder, error)
// ... множество других методов ...
}


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

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

🔗 Подробнее

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 "Go Docs Syntax Highlighter" - это полезное для Гоферов Chrome расширение, которое
добавляет синтаксическую подсветку (раскрашивает ключевые слова, типы данных, строки, комментарии и т.д.) к блокам кода Go на различных сайтах и документах.

Расширение делает примеры кода значительно более наглядными и легкими для восприятия.

🔗 Скачать

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Пишете на Go или хотите на него перейти??

Тогда почему мы ещё не видим вашу регистрацию на Avito Go Drinkup #2? 🚀

Если без шуток, 23 апреля бэкендеры соберутся в офисе Авито на Лесной на «круглые столы», чтобы обсудить:

➡️Архитектуру микросервисов на Go;
➡️Как перейти с другого языка на Go;
➡️Карьерный путь в бэкенде;
➡️Реальные кейсы использования Go.

И ещё много чего! Посмотреть подробнее и зарегистрироваться можно тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 browserhttp

Go-пакет, который полностью совместим с интерфейсом http.Client.

Однако, в отличие от стандартного клиента, он использует настоящий безголовый браузер (Chrome через библиотеку chromedp) для отправки запросов и взаимодействия с веб-страницами.

Данный подход позволяет:

- Выполнять рендеринг JavaScript и обрабатывать динамические страницы «как настоящий браузер» (включая работу с куками, DOM, скриптами).

- Обходить системы защиты (например, WAF или анти-бот средства), которые могут блокировать стандартные HTTP-запросы.

Автоматизировать действия в браузере (заполнение форм, клики, переходы по ссылкам) для тестирования, сканирования и скрапинга.

Основные возможности
- Полная совместимость с http.Client
Можно использовать browserhttp в существующем коде как замену стандартному клиенту (метод Do(*http.Request)).

- Реальные сессии с помощью Chrome
Запросы обрабатываются внутри настоящего браузера, обеспечивая поведение, максимально близкое к «живому» пользователю.

- Поддержка GET и POST
Базовые HTTP-запросы отправляются так же, как в стандартном клиенте.

- Симуляция отправки форм
Можно взаимодействовать с динамическими формами, которые зависят от JavaScript.

- Подробный лог запросов
При включённом режиме EnableVerbose() можно отлаживать и отслеживать все действия клиента.

- Сохранение сессии
Поддерживаются многоэтапные сценарии с сохранением вкладок и сессий между запросами (например, логин → переход к другой странице).

✔️ Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансия Golang-разработчика в Otello!

1️⃣ Разрабатываем сервис бронирования, где команда сама отвечает за архитектуру, консистентность данных и деплой.
2️⃣ Максимум ответственности и развитияТы сам проектируешь фичи, принимаешь решения и доводишь их до продакшена. У нас нет бюрократии и долгих согласований — есть автономные команды и возможность проявить лидерские качества.
3️⃣ Технологический стек, который радуетGo, PostgreSQL, Clickhouse, Kafka, Kubernetes, Prometheus, Grafana и многое другое. Пишем гексагональные REST-сервисы, разворачиваемся в четырех датацентрах. Любим архитектурные обсуждения, но технологии для нас — не самоцель, а инструмент.
4️⃣ Процесс, который не бесит. Работаем по Shape Up, поэтому без бесконечных таск-трекеров и бесцельных стендапов. Всегда задаем себе вопрос "Зачем?" и находим лучшие ответы на "Как?".
5️⃣ Классная команда и атмосфера. Мы ценим простые и эффективные решения, любим обсуждать архитектуру и масштабирование, а еще умеем работать динамично и с кайфом.
🔥 Если тебе близко —откликайся!
📊 Vince — локальная альтернатива Google Analytics на Go

Vince — self-hosted система веб-аналитики с упором на конфиденциальность и простоту развертывания.

Основные характеристики:
— Установка одной командой (bash, Docker, Helm)
— Без использования cookie
— Соответствие GDPR, CCPA, PECR
— Поддержка событий: клики, загрузки, ошибки 404, пользовательские действия
— Интеграция с Plausible-совместимыми скриптами
— Автоматический TLS (Let's Encrypt)
— Возможность публичных дашбордов
— Неограниченное число сайтов и событий

Система не поддерживает воронки, но охватывает базовую аналитику: уникальные посетители, просмотры, длительность сессий, разбивку по источникам и устройствам.

Плюсы: полный контроль над данными, отсутствие внешних трекеров, минималистичный скрипт.

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

@golang_google
👣 Wax

Это попытка принести JSX / TSX синтаксис в мир Go-шаблонов.

Не SSR, не React, а альтернатива html/template и Templ с более выразительным и современным синтаксисом.

📌 В чём суть?
Wax позволяет писать Go-шаблоны, используя знакомую по фронтенду структуру JSX-компонентов — но всё это компилируется и работает на Go-бэкенде.

🧩 Что под капотом?

- JSX/TSX обрабатывается через esbuild
- Код транслируется в Go-шаблоны с типами

🧪 Это похоже на рендеринг компонентов, но на Go — без React, VDOM Чистый вывод HTML, но с привычным JSX-стилем.

📜 Wax компилирует JSX в Go-код, минуя всю экосистему React.

Подойдет тем, кто хочет писать компоненты в духе React, но оставаться в Go-экосистеме и тем, кто делает JAMStack / MPA / гибридные сайты без тяжёлого фронта

🖥 Github

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

Инструмент для анализа зависимостей Go-модулей (на GitHub).

🔍 Что делает:
- Сканирует указанные GitHub-аккаунты или организации
- Ищет публичные репозитории с Go-кодом
- Читает их go.mod файлы (в них указаны зависимости)
- Строит граф зависимостей между модулями

📦 Выводит:
Граф зависимостей в формате DOT (можно визуализировать через Graphviz)

Или топологическую сортировку — порядок, в котором модули зависят друг от друга (например, для правильной сборки)

Пример применения:
- У тебя есть несколько Go-проектов в организации, и ты хочешь:- Понять, какие модули используют какие зависимости
- Найти циклы, повторяющиеся зависимости
- Визуализировать это как граф

go install github.com/ldemailly/depgraph@latest

🔗Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣  Возможность стать частью команды ВКонтакте для Go-разработчиков

💡 ВКонтакте запускает технологический проект по переходу на сервисную архитектуру и построению единой платформы разработки. Для развития современного технологического стека и написания архитектуры планируется привлечь больше 100 Go-разработчиков.

🗓  24 апреля в офисе компании в Питере пройдет митап. На нем можно будет узнать о том, как попасть в команду и что надо будет делать.

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 go-audit — альтернатива auditd от Slack на Go 🐹

go-audit — лёгкое и эффективное решением для аудита безопасности в Linux, созданным инженерами из Slack.

🔧 Что это такое?
go-audit — это демон, который напрямую подключается к ядру Linux через audit netlink socket (/dev/audit) и перехватывает системные события в реальном времени — без использования ausearch или разбора логов вручную.

🧠 Что он умеет?
Подключается напрямую к audit subsystem через netlink
Слушает события ядра: запуск процессов, доступ к файлам, ошибки и т.п.
Преобразует их в структурированный JSON
Отправляет данные в:
stdout / файл
syslog
HTTP / Kafka
Поддерживает фильтрацию событий по типу
Подходит для real-time мониторинга и интеграции с SIEM-системами

⚙️ Почему это важно?
Это быстрая, расширяемая и удобная альтернатива auditd, особенно если вы работаете с современными инструментами логирования и хотите больше контроля над потоками событий.

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

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