37.3K subscribers
1.48K photos
35 videos
5 files
1.63K links
加入频道
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
🗂️ Dbmate — инструмент для миграций БД без привязки к языку.

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

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

🤖 GitHub

@golang_google
👣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
👣 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
📊 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
Вопрос:

Что будет выведено на экран?


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


package main

import (
"fmt"
"time"
)

type Speaker interface {
Speak() string
}

type Person struct {
name string
}

func (p Person) Speak() string {
return "Hi, I'm " + p.name
}

func main() {
var s Speaker
p := Person{name: "Alice"}
s = p

p.name = "Bob"

fmt.Println(s.Speak()) // (1)

func() {
s := p // shadowing: s — это теперь Person, а не Speaker
fmt.Println(s.Speak()) // (2)
}()
go func(p Person) {
time.Sleep(10 * time.Millisecond)
fmt.Println(p.Speak()) // (3)
}(p)

p.name = "Charlie"

time.Sleep(20 * time.Millisecond)
}


💡Подсказки:
Что происходит с интерфейсами в Go при присвоении структур?

Что такое shadowing и как это влияет на s внутри анонимной функции?

Как работает передача аргументов в goroutine?

Как изменения структуры после передачи влияют на уже переданные значения?



Ответ:

Hi, I'm Alice
Hi, I'm Bob
Hi, I'm Bob


@golangtests
👣 Ninjabot — фреймворк для алгоритмического трейдинга на крипторынке, написанный на Go.

Он позволяет тестировать стратегии на исторических данных и запускать их в реальной торговле на Binance (спот и фьючерсы).

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

🖥 GitHub

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 «Streaming Large Files Between Microservices: A Go Implementation» - практическое руководство по эффективной передаче больших файлов между микросервисами на Go.​

🔍 Основная идея
Автор предлагает решение для передачи больших данных между микросервисами, используя стандартные возможности HTTP/1.1, такие как Range-запросы и заголовки Content-Encoding. Цель — избежать загрузки всего файла в память и обеспечить возможность возобновления передачи при прерывании соединения.​


🛠️ Ключевые особенности
Потоковая передача данных: Использование io.Reader, io.Writer и bufio для чтения и записи данных по частям, что снижает нагрузку на память.​

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

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

Обработка прерываний: Реализация корректного завершения работы при получении сигналов SIGINT, SIGTERM и SIGHUP.​

Определение типа содержимого: Сервер определяет MIME-тип файла с помощью расширения и функции http.DetectContentType, что помогает в принятии решений о сжатии.​
DEV Community

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

📌 Подробности

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🌐 Weather MCP Server — лёгкий Go-сервер для ИИ-доступа к погоде

Этот проект реализует лёгкий сервер на Go по протоколу MCP (Model Context Protocol). Он позволяет ИИ-ассистентам, таким как Claude, подключаться к погодным API и интерпретировать данные в реальном времени.

🧩 Что делает:
Предоставляет интерфейс MCP для интеграции с LLM
Получает и обрабатывает прогноз с OpenWeather API
Позволяет ИИ «понимать» текущую погоду и тренды
Подходит для систем, где ИИ должен принимать решения на основе реальных данных

🚀 Используется как context tool — внешняя служба, к которой ИИ обращается за фактами.

🔗 Репозиторий
👣 Fibratus — инструмент для мониторинга и трассировки ядра Windows.

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

📌 Fibratus работает без драйверов и стороннего ПО, делая его удобным и эффективным для анализа системы.

$ msiexec /i fibratus-2.3.0-amd64.msi /qn

🔗 GitHub

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Go2o — фреймворк для O2O-коммерции на Golang.

Это реализация Domain-Driven Design на Go, предлагающая готовые модули для мультиканальных продаж, управления заказами, платежами и логистикой.

Проект разбит на четыре компонента: панель управления, интернет-магазины, центр лояльности и API для интеграции. Особенность фреймворка — глубокая бизнес-логика и поддержка сценариев вроде snapshots товаров.

🤖 GitHub

@golang_google
👣 Dish — минималистичный инструмент для мониторинга сокетов (Go)

Лёгкий и автономный агент, проверяющий доступность TCP/HTTP-соединений. Не требует серверов или сложной установки.

🛠 Возможности:
🔄 Параллельные проверки сокетов (из JSON-файла или API)

Уведомления: Telegram, Webhook, Prometheus Pushgateway, REST API

🧩 Можно запускать по cron без постоянного демона

💾 Кэширование API-ответов при недоступности сервера

🌍 Распределённый мониторинг: агенты на разных хостах, централизованная конфигурация

📦 Установка:

go install go.vxn.dev/dish/cmd/dish@latest
# или
brew install dish


🔗 Подробнее

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Яндекс Вертикали в поисках старшего разработчика, который поможет развивать IDP

Вертикали — это сервисы Авто.ру, Яндекс Недвижимость, Аренда и Путешествия. Все они помогают людям найти что-то действительно важное: дом или машину, а также организовать отпуск или командировку.

Сейчас бизнес-юнит развивает платформенное решение для комфортной, быстрой и качественной разработки. Пользователи платформы — разработчики, тестировщики и аналитики из команд Вертикалей. 

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

Можно работать на гибриде или в офисе — в Питере и Москве.

В условия входят все плюшки Яндекса: расширенная программа ДМС, гибкий график, спорт и многое другое.

Откликайтесь здесь.