This media is not supported in your browser
VIEW IN TELEGRAM
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Основные темы, рассмотренные в статье:
Что такое DNS и его значение:
DNS (Domain Name System) действует как телефонная книга интернета, преобразуя удобочитаемые доменные имена (например, google.com) в машинно-читаемые IP-адреса (например, 142.250.182.206), облегчая навигацию в сети.
Пошаговый процесс разрешения DNS:
1️⃣ Инициирование запроса: Локальный резолвер в операционной системе проверяет кэш на наличие IP-адреса запрашиваемого домена. Если адрес отсутствует, запрос направляется к рекурсивному DNS-резолверу.
2️⃣ Обращение к рекурсивному резолверу: Рекурсивный резолвер, такой как Google Public DNS (8.8.8.8) или Cloudflare DNS (1.1.1.1), принимает запрос и начинает процесс поиска.
3️⃣ Запрос к корневому DNS-серверу: Рекурсивный резолвер обращается к корневому серверу, который направляет его к соответствующему серверу верхнего уровня (TLD) для запрашиваемого домена.
4️⃣ Запрос к TLD-серверу: Сервер верхнего уровня (например, для доменов .com или .tech) указывает на авторитетный сервер конкретного домена.
5️⃣ Запрос к авторитетному серверу: Авторитетный сервер предоставляет окончательный IP-адрес запрашиваемого домена.
Создание собственного DNS-сервера на Go:
В статье вы найдите гайд по разработке простого DNS-сервера на Go, и предоставляет исходный код проекта для самостоятельного изучения.
Годное чтиво на выходные )
📌Читать
#junior #golang #go #dns
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Разделы: HR-этап, техническое интервью, полезные ресурсы и топ вопросов по частоте.
Весь материал на русском, на основе опыта российских компаний. Бери и готовься!
🔗 Github
@golang_google
#devops #девопс
Please open Telegram to view this post
VIEW IN TELEGRAM
✍️ gosec — это инструмент статического анализа кода для Go, который выявляет уязвимости, сканируя AST и SSA-представление программы.
Вместо поверхностного поиска шаблонов он анализирует структуру кода, что позволяет находить сложные уязвимости, такие как SQL-инъекции, проблемы с криптографией или неправильные настройки TLS.
Инструмент можно легко настраивать: включать только нужные проверки, исключать определенные файлы и выводить отчеты в разных форматах.
🔐 Лицензия: Apache 2.0.
🤖 GitHub
@golang_google
Вместо поверхностного поиска шаблонов он анализирует структуру кода, что позволяет находить сложные уязвимости, такие как SQL-инъекции, проблемы с криптографией или неправильные настройки TLS.
Инструмент можно легко настраивать: включать только нужные проверки, исключать определенные файлы и выводить отчеты в разных форматах.
🔐 Лицензия: Apache 2.0.
🤖 GitHub
@golang_google
🆘 Notify — интрумент, представляющий способ получать мгновенные оповещения о критических событиях прямо в любимые мессенджеры и почту.
Проект подходит для любых сценариев уведомлений: от оповещений о завершении CI/CD-сборок до сигналов от домашних скриптов.
С недавних пор добавили поддержку
🤖 GitHub
@golang_google
Проект подходит для любых сценариев уведомлений: от оповещений о завершении CI/CD-сборок до сигналов от домашних скриптов.
С недавних пор добавили поддержку
Telegram, Slack, Discord
и других платформ через единый интерфейс. 🤖 GitHub
@golang_google
dbc4go
Это AI-генератор кода, который берет Go-код с контрактами (правилами), написанными прямо в комментариях, и создает новую версию кода.
▪️ Как работает?
Он "инструментирует" ваш код, добавляя в начало функций/методов блоки проверки, которые следят за выполнением контрактов во время работы программы.
▪️ Зачем нужно?
Чтобы автоматически проверять соблюдение условий (например, что функция получает правильные входные данные или возвращает ожидаемый результат) во время выполнения. Если контракт нарушен — программа упадет (panic), явно указывая на проблему.
▪️ Преимущество:
Контракты находятся в комментариях, поэтому исходный код остается валидным Go-кодом. Инструментированную версию можно использовать для тестирования (например, запустить go generate, а потом go test), чтобы повысить шансы на обнаружение багов, комбинируя тесты и контракты.
По сути, dbc4go помогает писать более надежный код на Go, внедряя проверки контрактов непосредственно во время выполнения.
📌 Github
@golang_google
Это AI-генератор кода, который берет Go-код с контрактами (правилами), написанными прямо в комментариях, и создает новую версию кода.
▪️ Как работает?
Он "инструментирует" ваш код, добавляя в начало функций/методов блоки проверки, которые следят за выполнением контрактов во время работы программы.
▪️ Зачем нужно?
Чтобы автоматически проверять соблюдение условий (например, что функция получает правильные входные данные или возвращает ожидаемый результат) во время выполнения. Если контракт нарушен — программа упадет (panic), явно указывая на проблему.
▪️ Преимущество:
Контракты находятся в комментариях, поэтому исходный код остается валидным Go-кодом. Инструментированную версию можно использовать для тестирования (например, запустить go generate, а потом go test), чтобы повысить шансы на обнаружение багов, комбинируя тесты и контракты.
По сути, dbc4go помогает писать более надежный код на Go, внедряя проверки контрактов непосредственно во время выполнения.
📌 Github
@golang_google
🎊 Выпущены версии 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
Эти релизы являются минорными и в основном направлены на исправление проблем безопасности.
🔐 Безопасность: Содержит исправление безопасности для 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
Особенности:
— простая настройка;
— многоузловая конфигурация с агентами;
— понятные сообщения об ошибках;
— авто 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
В ней рассматриваются ключевые техники, сгруппированные в четыре основные категории:
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
Позволяет загружать и скачивать файлы через HTTP/S с поддержкой самоподписанных или пользовательских сертификатов и базовой аутентификацией.
Ключевые возможности: загрузка/скачивание в .zip, поддержка
POST/PUT-
запросов, доступ через Drag & Drop, удаление файлов (по одному или массово). Дополнительно: аутентификация, работа с буфером обмена, WebDAV (чтение), настройка тем и выполнение команд на хосте.
📌 Github
@golang_books
Please open Telegram to view this post
VIEW IN TELEGRAM
🗂️ Dbmate — инструмент для миграций БД без привязки к языку.
Это самодостаточный бинарник, который не требует интеграции с конкретным фреймворком и одинаково хорошо работает с Go.
Главная фишка Dbmate — простота. Вместо сложных DSL миграции пишутся на чистом SQL, а для подключения к БД используется привычное
🤖 GitHub
@golang_google
Это самодостаточный бинарник, который не требует интеграции с конкретным фреймворком и одинаково хорошо работает с Go.
Главная фишка Dbmate — простота. Вместо сложных DSL миграции пишутся на чистом SQL, а для подключения к БД используется привычное
DATABASE_URL.
При этом инструмент не забывает о важных деталях: атомарности выполнения, версионировании по времени и возможности быстрого создания/удаления тестовых БД.🤖 GitHub
@golang_google
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
В этой статье рассматривается концепциюя «глубоких» и «поверхностных» интерфейсов в 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 на различных сайтах и документах.
Расширение делает примеры кода значительно более наглядными и легкими для восприятия.
🔗 Скачать
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Go-пакет, который полностью совместим с интерфейсом http.Client.
Однако, в отличие от стандартного клиента, он использует настоящий безголовый браузер (Chrome через библиотеку
chromedp
) для отправки запросов и взаимодействия с веб-страницами.Данный подход позволяет:
- Выполнять рендеринг JavaScript и обрабатывать динамические страницы «как настоящий браузер» (включая работу с куками, DOM, скриптами).
- Обходить системы защиты (например, WAF или анти-бот средства), которые могут блокировать стандартные HTTP-запросы.
Автоматизировать действия в браузере (заполнение форм, клики, переходы по ссылкам) для тестирования, сканирования и скрапинга.
Основные возможности
- Полная совместимость с
http.Client
Можно использовать browserhttp в существующем коде как замену стандартному клиенту (метод
Do(*http.Request)).
- Реальные сессии с помощью Chrome
Запросы обрабатываются внутри настоящего браузера, обеспечивая поведение, максимально близкое к «живому» пользователю.
- Поддержка GET и POST
Базовые HTTP-запросы отправляются так же, как в стандартном клиенте.
- Симуляция отправки форм
Можно взаимодействовать с динамическими формами, которые зависят от JavaScript.
- Подробный лог запросов
При включённом режиме EnableVerbose() можно отлаживать и отслеживать все действия клиента.
- Сохранение сессии
Поддерживаются многоэтапные сценарии с сохранением вкладок и сессий между запросами (например, логин → переход к другой странице).
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
📊 Vince — локальная альтернатива Google Analytics на Go
Vince — self-hosted система веб-аналитики с упором на конфиденциальность и простоту развертывания.
Основные характеристики:
— Установка одной командой (bash, Docker, Helm)
— Без использования cookie
— Соответствие GDPR, CCPA, PECR
— Поддержка событий: клики, загрузки, ошибки 404, пользовательские действия
— Интеграция с Plausible-совместимыми скриптами
— Автоматический TLS (Let's Encrypt)
— Возможность публичных дашбордов
— Неограниченное число сайтов и событий
Система не поддерживает воронки, но охватывает базовую аналитику: уникальные посетители, просмотры, длительность сессий, разбивку по источникам и устройствам.
Плюсы: полный контроль над данными, отсутствие внешних трекеров, минималистичный скрипт.
🔗 Репозиторий
@golang_google
Vince — self-hosted система веб-аналитики с упором на конфиденциальность и простоту развертывания.
Основные характеристики:
— Установка одной командой (bash, Docker, Helm)
— Без использования cookie
— Соответствие GDPR, CCPA, PECR
— Поддержка событий: клики, загрузки, ошибки 404, пользовательские действия
— Интеграция с Plausible-совместимыми скриптами
— Автоматический TLS (Let's Encrypt)
— Возможность публичных дашбордов
— Неограниченное число сайтов и событий
Система не поддерживает воронки, но охватывает базовую аналитику: уникальные посетители, просмотры, длительность сессий, разбивку по источникам и устройствам.
Плюсы: полный контроль над данными, отсутствие внешних трекеров, минималистичный скрипт.
🔗 Репозиторий
@golang_google
Это попытка принести
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 / гибридные сайты без тяжёлого фронта
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Инструмент для анализа зависимостей 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
💡 ВКонтакте запускает технологический проект по переходу на сервисную архитектуру и построению единой платформы разработки. Для развития современного технологического стека и написания архитектуры планируется привлечь больше 100 Go-разработчиков.
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
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