This media is not supported in your browser
VIEW IN TELEGRAM
Outrig — это open-source инструмент для разработчиков на Go, позволяющий:
• 🔍 В реальном времени искать по логам
• 🧵 Отслеживать goroutines
• 📊 Следить за переменными и метриками рантайма
💡 Всё работает локально — никакие данные не покидают вашу машину.
🖥 Поддержка: macOS и Linux (Windows — скоро)
➡️ Идеален для дебага, мониторинга и глубокого понимания поведения Go-приложений.
Github
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤7🔥4🥰1
📬 BillionMail — автономная платформа для email-маркетинга и почтовых серверов
🧩 Что это такое
BillionMail — это self-hosted open-source платформа, которая позволяет:
• Настроить полноценный почтовый сервер
• Управлять рассылками email
• Отслеживать открытие писем и клики
• Контролировать доставляемость и отклонения
• Работать через браузерный интерфейс без зависимости от облака
🚀 Ключевые возможности
• Управление почтовыми ящиками и доменами
• Email-маркетинг с шаблонами, сегментами и аналитикой
• Встроенный SMTP-сервер и логика ретраев
• Поддержка DKIM, SPF, DMARC
• Мониторинг отправок, спама, bounce-статистики
• API и интеграции с внешними системами
⚙️ Технологии
• Backend: Python
• Web-интерфейс: Vue.js
• СУБД: MySQL
• Mail engine: Postfix + Dovecot
• OS: Linux-серверы (Ubuntu/Debian)
🛠 Установка
Запустите:
🔗 Репозиторий
@golang_google
🧩 Что это такое
BillionMail — это self-hosted open-source платформа, которая позволяет:
• Настроить полноценный почтовый сервер
• Управлять рассылками email
• Отслеживать открытие писем и клики
• Контролировать доставляемость и отклонения
• Работать через браузерный интерфейс без зависимости от облака
🚀 Ключевые возможности
• Управление почтовыми ящиками и доменами
• Email-маркетинг с шаблонами, сегментами и аналитикой
• Встроенный SMTP-сервер и логика ретраев
• Поддержка DKIM, SPF, DMARC
• Мониторинг отправок, спама, bounce-статистики
• API и интеграции с внешними системами
⚙️ Технологии
• Backend: Python
• Web-интерфейс: Vue.js
• СУБД: MySQL
• Mail engine: Postfix + Dovecot
• OS: Linux-серверы (Ubuntu/Debian)
🛠 Установка
1. Установите `Docker` и `docker-compose`
2. Клонируйте репозиторий:
```bash
git clone https://github.com/aaPanel/BillionMail.git
cd BillionMail
Запустите:
docker-compose up -d
🔗 Репозиторий
@golang_google
❤6👍5😁2🔥1🤯1
🦙 Gollama — терминальный менеджер для Ollama-моделей. Этот инструмент с TUI-интерфейсом упрощает работу с локальными LLM: от сортировки по размеру и квантованию до редактирования Modelfile прямо в терминале. Горячие клавиши позволяют быстро запускать модели, выгружать их из памяти или копировать на удалённые серверы через функцию "spit".
Инструмент имеет интеграцию с LM Studio для автоматического создания симлинков и расчёт потребления vRAM под разные контексты. Проект активно развивается: недавно добавили поддержку Hugging Face-моделей в калькуляторе памяти.
🤖 GitHub
@golang_google
Инструмент имеет интеграцию с LM Studio для автоматического создания симлинков и расчёт потребления vRAM под разные контексты. Проект активно развивается: недавно добавили поддержку Hugging Face-моделей в калькуляторе памяти.
🤖 GitHub
@golang_google
👍10❤7🔥6
🎯 Email Linter — антифишинговый анализатор для почты
Email Linter — это CLI-инструмент на Go, который помогает выявлять спам и фишинг во входящих письмах, отправленных на одноразовые e-mail адреса (Fastmail, Topicbox и другие, через JMAP).
🔍 Что делает:
• Подключается к вашей почте через JMAP API
• Ищет все одноразовые адреса (Fastmail Masked Email, DuckDuckGo, iCloud и др.)
• Для каждого адреса показывает всех отправителей
• Помогает мгновенно определить фейковый или нежелательный трафик
🛡️ Зачем нужен:
Один из создателей проекта получил фишинг на “маску” — Email Linter помог быстро отследить странный «From» и отключить маску.
⚙️ Установка:
🔐 Безопасность и приватность
• Email Linter не передаёт письма никуда
• Использует локальный keyring для хранения JMAP-токена
• Все данные обрабатываются локально
• В будущем может появиться кэширование, но оно тоже будет локальным
🛠 Технологии
• Язык: Go
• CLI: Cobra
• Сборка: GoReleaser
• Поддержка JMAP (более гибкий аналог IMAP)
• Протестировано с Fastmail и Topicbox
📄 Лицензия
Apache 2.0 — можно использовать в любых проектах, в том числе коммерческих.
🔗 GitHub: github.com/wheelercj/email-linter
Email Linter — это CLI-инструмент на Go, который помогает выявлять спам и фишинг во входящих письмах, отправленных на одноразовые e-mail адреса (Fastmail, Topicbox и другие, через JMAP).
🔍 Что делает:
• Подключается к вашей почте через JMAP API
• Ищет все одноразовые адреса (Fastmail Masked Email, DuckDuckGo, iCloud и др.)
• Для каждого адреса показывает всех отправителей
• Помогает мгновенно определить фейковый или нежелательный трафик
🛡️ Зачем нужен:
Один из создателей проекта получил фишинг на “маску” — Email Linter помог быстро отследить странный «From» и отключить маску.
⚙️ Установка:
go install github.com/wheelercj/email-linter@latest
email-linter --help
🔐 Безопасность и приватность
• Email Linter не передаёт письма никуда
• Использует локальный keyring для хранения JMAP-токена
• Все данные обрабатываются локально
• В будущем может появиться кэширование, но оно тоже будет локальным
🛠 Технологии
• Язык: Go
• CLI: Cobra
• Сборка: GoReleaser
• Поддержка JMAP (более гибкий аналог IMAP)
• Протестировано с Fastmail и Topicbox
📄 Лицензия
Apache 2.0 — можно использовать в любых проектах, в том числе коммерческих.
🔗 GitHub: github.com/wheelercj/email-linter
👍11❤5🔥1🥰1
Gokapi — это минималистичный, self-hosted сервис для временного обмена файлами, написанный на Go. Его цель — быть лёгкой и приватной заменой таким сервисам, как WeTransfer.
⚙️ Возможности:
• Загрузка и скачивание файлов через веб-интерфейс
• Временное хранение (срок жизни настраивается)
• Одноразовые или многоразовые ссылки
• Поддержка паролей
• Простота установки — бинарник и всё
📦 Без лишнего функционала, без регистрации, без отслеживания — только удобный и быстрый обмен файлами.
🔗 GitHub: https://github.com/Forceu/Gokapi
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11🔥2🥰1
🌀 Go 1.25 приносит мощный апгрейд JSON-библиотеки:
Что изменилось:
● Прямая работа с
Новые функции
● Потоковая обработка JSON
Появился модуль
● Гибкая настройка
Теперь функции
-
-
-
-
-
Пример:
● Новое поведение по умолчанию
Теперь:
JSON-парсинг чувствителен к регистру
Дублирующиеся ключи запрещены
Неизвестные поля игнорируются, если не указано иное
Можно включить прежнее поведение опциями (например, MatchCaseInsensitiveNames)
● Ускорение десериализации
Внутренний движок полностью переписан — ускорение десериализации в 2.7–10.2 раз. При использовании потоковых API (UnmarshalJSONFrom) — прирост до 40×.
● Экспериментальный статус
API ещё может меняться. По умолчанию encoding/json использует новый движок, но json/v2 доступен отдельно и требует флага:
Это — один из самых масштабных апдейтов стандартной библиотеки Go за последние годы. Подходит для тех, кто работает с тяжёлыми JSON-структурами, большими потоками или требует строгого контроля сериализации.
📌 Полный разбор и примеры
@golang_google
#golang #go #JSON
encoding/json/v2
— переработанная с нуля система сериализации с гибкой настройкой, высокой скоростью и новым APIЧто изменилось:
● Прямая работа с
io.Writer
и io.Reader
Новые функции
MarshalWrite
и UnmarshalRead
позволяют писать и читать JSON напрямую, без создания Encoder/Decoder. Это упрощает потоковую работу и уменьшает аллокации.● Потоковая обработка JSON
Появился модуль
jsontext
с функциями MarshalEncode
и UnmarshalDecode
, которые читают и пишут JSON по одному объекту за раз. Это критично для систем, обрабатывающих большие JSON-потоки, например, в Kubernetes.● Гибкая настройка
Теперь функции
Marshal
и Unmarshal
принимают опции, напрямую влияющие на формат вывода и поведение парсера:-
OmitZeroStructFields(true)
— пропускать нулевые поля -
StringifyNumbers(true)
— числа как строки -
MatchCaseInsensitiveNames(true)
— имена полей без учёта регистра -
FormatNilMapAsNull(true)
— nil`-карты как `null
-
WithIndent(" ")
— отступы в JSONПример:
json.Marshal(
user,
json.OmitZeroStructFields(true),
json.StringifyNumbers(true),
jsontext.WithIndent(" "),
)
● Новое поведение по умолчанию
Теперь:
JSON-парсинг чувствителен к регистру
Дублирующиеся ключи запрещены
Неизвестные поля игнорируются, если не указано иное
Можно включить прежнее поведение опциями (например, MatchCaseInsensitiveNames)
● Ускорение десериализации
Внутренний движок полностью переписан — ускорение десериализации в 2.7–10.2 раз. При использовании потоковых API (UnmarshalJSONFrom) — прирост до 40×.
● Экспериментальный статус
API ещё может меняться. По умолчанию encoding/json использует новый движок, но json/v2 доступен отдельно и требует флага:
GOEXPERIMENT=jsonv2
Это — один из самых масштабных апдейтов стандартной библиотеки Go за последние годы. Подходит для тех, кто работает с тяжёлыми JSON-структурами, большими потоками или требует строгого контроля сериализации.
📌 Полный разбор и примеры
@golang_google
#golang #go #JSON
🔥137👍24❤18
🔏 RuleGo — легковесный rule-движок на Go для гибких систем. Когда бизнес-логика становится слишком сложной для хардкода, а традиционные workflow-движки кажутся громоздкими, этот проект предлагает элегантное решение. Инструмент позволяет описывать правила обработки данных в виде JSON-цепочки с компонентами, которые можно пересобирать на лету без перезапуска приложения.
Проект имеет поддержку edge-вычислений — движок стабильно работает даже на Raspberry Pi с потреблением памяти около 19MB. Встроенные компоненты для HTTP, MQTT и JavaScript-трансформаций делают его идеальным для IoT-сценариев, а визуальный редактор RuleGo-Editor упрощает конфигурирование.
🤖 GitHub
@golang_google
Проект имеет поддержку edge-вычислений — движок стабильно работает даже на Raspberry Pi с потреблением памяти около 19MB. Встроенные компоненты для HTTP, MQTT и JavaScript-трансформаций делают его идеальным для IoT-сценариев, а визуальный редактор RuleGo-Editor упрощает конфигурирование.
🤖 GitHub
@golang_google
👍11🔥8🥰3❤2👏1
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍8🔥4🥰1🤔1🤩1
«Go 1.25 interactive tour» — отличный обзор ключевых новинок, запланированных для Go 1.25 (релиз — август 2025)
Основные моменты:
1. Синтетическое время для тестов (synctest)
Новая библиотека testing/synctest позволяет использовать «фейковый» таймер для тестов, без реального ожидания:
🧪 Использование synctest.Test для "синтетического времени"
- synctest.Test(t, func(t *testing.T) {...}) запускает функцию в изолированном "пузыре", где:
- функции пакета time используют фиктивные часы;
- если все горутины заблокированы (например, time.Sleep, select без case), время продвигается вперед автоматически, чтобы "разблокировать" эти операции.
✅ Пример теста:
Здесь мы проверяем, что Read действительно отдает ошибку "timeout", без реального ожидания 60 секунд — synctest просто симулирует, что они прошли.
🕰 Как это работает?
Внутри synctest.Test:
- Время начинается с 2000-01-01T00:00:00Z;
- Когда все горутины заблокированы, время продвигается до следующего события (time.After, time.Sleep и т.д.);
- Это позволяет сразу активировать нужные ветки кода, которые зависят от времени, без настоящих задержек.
⚠️ Ограничения
Внутри synctest.Test нельзя использовать:
Пример неверного использования:
testing/synctest — это инструмент для тестирования кода, зависящего от времени, без реального ожидания, что делает тесты мгновенными и стабильными. Идеально подходит для timeout, retry, delays, ticker, и других случаев, когда вы хотите протестировать "прошло ли время", но не хотите реально ждать.
2. JSON v2 — серьезный апдейт
json/v2 вводит новые функции, включая MarshalToFunc, UnmarshalFromFunc и более гибкую систему маршаллинга с пользовательскими функциями.
Пример:
👉 Подробно можно почитать здесь
3. Container-aware GOMAXPROCS
Теперь Go учитывает ограничения CPU из cgroups – на Docker/Kubernetes GOMAXPROCS автоматически подстраивается под лимит, а не просто равен NumCPU
4. Новый сборщик мусора — Green Tea
Экспериментальный сборщик мусора оптимизирован для больших объёмов мелких объектов, обещают на 10–40 % снижение оверхеда. Включается через GOEXPERIMENT=greenteagc
5. Защита от CSRF (http.CrossOriginProtection)
Добавлен новый тип для отсечения запросов из кросс-доменных источников, анализируя заголовки Sec-Fetch-Site и Origin
6. sync.WaitGroup.Go
Упрощение работы c WaitGroup — теперь можно писать:
Вместо Add + Done
7. Flight Recorder (trace.FlightRecorder)
Flight recording — это способ отслеживать, что происходит в программе: какие функции вызываются, сколько памяти используется и другие важные события.
Но главное — эта запись ведётся не всё время, а только в «скользящем окне»: сохраняются только последние N секунд или последние N мегабайт данных.
👉 Это полезно, когда вы не знаете заранее, когда случится ошибка — flight recorder позволит «поймать» последние события перед сбоем.
8. Расширенные методы os.Root
Добавлены методы Chmod, Chown, Chtimes, Link, MkdirAll, RemoveAll, Rename, Symlink, ReadFile, WriteFile
9. reflect.TypeAssert
Упрощает преобразование reflect.Value в конкретный тип без промежуточного интерфейса.
10. hash.Cloner
Интерфейс клонирования состояния hash-функций (Clone()), поддерживается всеми реализациями STD (SHA-1, MD5 и др.)
📌 Полный обзор обновлений
@golang_google
Основные моменты:
1. Синтетическое время для тестов (synctest)
Новая библиотека testing/synctest позволяет использовать «фейковый» таймер для тестов, без реального ожидания:
🧪 Использование synctest.Test для "синтетического времени"
- synctest.Test(t, func(t *testing.T) {...}) запускает функцию в изолированном "пузыре", где:
- функции пакета time используют фиктивные часы;
- если все горутины заблокированы (например, time.Sleep, select без case), время продвигается вперед автоматически, чтобы "разблокировать" эти операции.
✅ Пример теста:
func TestReadTimeout(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
ch := make(chan int)
_, err := Read(ch)
if err == nil {
t.Fatal("expected timeout error, got nil")
}
})
}
Здесь мы проверяем, что Read действительно отдает ошибку "timeout", без реального ожидания 60 секунд — synctest просто симулирует, что они прошли.
🕰 Как это работает?
Внутри synctest.Test:
- Время начинается с 2000-01-01T00:00:00Z;
- Когда все горутины заблокированы, время продвигается до следующего события (time.After, time.Sleep и т.д.);
- Это позволяет сразу активировать нужные ветки кода, которые зависят от времени, без настоящих задержек.
⚠️ Ограничения
Внутри synctest.Test нельзя использовать:
t.Run(...)
t.Parallel()
t.Deadline()
Пример неверного использования:
synctest.Test(t, func(t *testing.T) {
t.Run("subtest", func(t *testing.T) {
t.Log("fail!") // это работать не будет
})
})
testing/synctest — это инструмент для тестирования кода, зависящего от времени, без реального ожидания, что делает тесты мгновенными и стабильными. Идеально подходит для timeout, retry, delays, ticker, и других случаев, когда вы хотите протестировать "прошло ли время", но не хотите реально ждать.
2. JSON v2 — серьезный апдейт
json/v2 вводит новые функции, включая MarshalToFunc, UnmarshalFromFunc и более гибкую систему маршаллинга с пользовательскими функциями.
Пример:
json.Marshal(vals, json.WithMarshalers(marshalers))
👉 Подробно можно почитать здесь
3. Container-aware GOMAXPROCS
Теперь Go учитывает ограничения CPU из cgroups – на Docker/Kubernetes GOMAXPROCS автоматически подстраивается под лимит, а не просто равен NumCPU
4. Новый сборщик мусора — Green Tea
Экспериментальный сборщик мусора оптимизирован для больших объёмов мелких объектов, обещают на 10–40 % снижение оверхеда. Включается через GOEXPERIMENT=greenteagc
5. Защита от CSRF (http.CrossOriginProtection)
Добавлен новый тип для отсечения запросов из кросс-доменных источников, анализируя заголовки Sec-Fetch-Site и Origin
6. sync.WaitGroup.Go
Упрощение работы c WaitGroup — теперь можно писать:
wg.Go(func() { /* … */ })
wg.Wait()
Вместо Add + Done
7. Flight Recorder (trace.FlightRecorder)
Flight recording — это способ отслеживать, что происходит в программе: какие функции вызываются, сколько памяти используется и другие важные события.
Но главное — эта запись ведётся не всё время, а только в «скользящем окне»: сохраняются только последние N секунд или последние N мегабайт данных.
👉 Это полезно, когда вы не знаете заранее, когда случится ошибка — flight recorder позволит «поймать» последние события перед сбоем.
8. Расширенные методы os.Root
Добавлены методы Chmod, Chown, Chtimes, Link, MkdirAll, RemoveAll, Rename, Symlink, ReadFile, WriteFile
9. reflect.TypeAssert
Упрощает преобразование reflect.Value в конкретный тип без промежуточного интерфейса.
10. hash.Cloner
Интерфейс клонирования состояния hash-функций (Clone()), поддерживается всеми реализациями STD (SHA-1, MD5 и др.)
📌 Полный обзор обновлений
@golang_google
1❤42👍17🔥15😁2
🔗 Schema — удобный инструмент для преобразования данных между HTML-формами и Go-структурами. Этот пакет из экосистемы Gorilla упрощает работу с веб-формами, автоматически связывая поля структуры с данными POST-запросов и наоборот.
Библиотека поддерживает базовые типы данных, позволяет задавать кастомные имена полей через тег
🤖 GitHub
@golang_google
Библиотека поддерживает базовые типы данных, позволяет задавать кастомные имена полей через тег
schema
и обрабатывать значения по умолчанию. Например, можно декодировать форму в структуру Person
с полями Name
и Phone
всего парой строк кода. 🤖 GitHub
@golang_google
👍12❤4🔥3
📔 Gorsk — готовый стартовый набор для создания RESTful-сервисов на Go с акцентом на чистую архитектуру. Этот проект избавляет от рутинной настройки, предлагая сразу работающую основу с JWT-аутентификацией, RBAC, валидацией данных и Swagger-документацией.
Инструмент имеет модульную структуру, позволяющую легко заменять компоненты вроде Echo на другой фреймворк или ORM. В комплекте: CRUD для пользователей, тесты с моками и контейнеризованные запросы к БД.
🤖 GitHub
@golang_google
Инструмент имеет модульную структуру, позволяющую легко заменять компоненты вроде Echo на другой фреймворк или ORM. В комплекте: CRUD для пользователей, тесты с моками и контейнеризованные запросы к БД.
🤖 GitHub
@golang_google
🔥16😢6❤5🤔1
Gozo — лёгкая и удобная библиотека, которая добавляет в Go инструментальный набор для повседневных задач: обработка срезов, карт, потоки и функциональные примитивы.
⚙️ Что внутри:
- `slices` — функции для работы с массивами:
Map
, Filter
, Delete
, Insert
, Pop
, PushFront
, Fold
, Some
, Equals
и даже ToMap
— всё с поддержкой дженериков - `maps` — утилиты:
Map
, Filter
, Reduce
, Equals
, FilterMap
, Fold
, Slice
- `fp` (функциональные примитивы) — монады
Option[T]
, Result[T]
, с конструктор-функциями: Some
, None
, Ok
, Err
, OptionFromPtr
, OptionFromTuple
- `streams` — конвейеры обработки данных:
Batch
, Filter
, Flatten
, CSV
, JSON
, Pipe
, Collect
и другие - `tuples` — простые структуры для пар значений (Tuple2)
🛠 Для чего это нужно:
- Ускоряет и делает код чище при работе с коллекциями
- Обладает безопасной обработкой ошибок и отсутствия значений через FP‑модели
- Дженерики обеспечивают типобезопанность и избавляют от лишнего шаблонного кода
- MIT‑лицензия
📌 Github
#go #golang #monads #functionalprogramming #toolkit #maps #utils #generics #slices
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤12🔥2😁1🤬1
🔥 Большая коллекция полезных сниппетов, примеров и рецептов на Go для создания эффективных, надёжных и масштабируемых приложений.
Идеально для разработчиков, которые хотят:
- писать чистый и читаемый Go-код
- быстро находить решения типовых задач
- изучать лучшие практики и готовые паттерны
📚 Всё — от HTTP-серверов и работы с JSON до многопоточности, базы данных и REST API.
🔗 https://go-cookbook.com
@Golang_google
#golang #go #guide
Идеально для разработчиков, которые хотят:
- писать чистый и читаемый Go-код
- быстро находить решения типовых задач
- изучать лучшие практики и готовые паттерны
📚 Всё — от HTTP-серверов и работы с JSON до многопоточности, базы данных и REST API.
🔗 https://go-cookbook.com
@Golang_google
#golang #go #guide
❤31👍20🔥9👏1
This media is not supported in your browser
VIEW IN TELEGRAM
🎁 Хорошая новость: Microsoft открыла исходный код GitHub Copilot Chat для VS Code!
Доступны и режим агента, и редактирование, и промпты — всё можно изучить, кастомизировать и использовать бесплатно под лицензией MIT.
GitHub
@Golang_google
Доступны и режим агента, и редактирование, и промпты — всё можно изучить, кастомизировать и использовать бесплатно под лицензией MIT.
GitHub
@Golang_google
❤24🔥18👍5👏1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Go-пикник? Да, вам не послышалось!
17 июля Go-разработчики собираются на Avito Grill & Go, чтобы понетворкать, сыграть в кастомные игры и, конечно, вкусно поесть.
В чилловой обстановке участники смогут:
➡️ поучаствовать в мемном Fast food System Design;
➡️ почелленджить над кодом;
➡️ обсудить карьерные треки;
➡️ а также перенять экспертизу напрямую от разработчиков Авито.
Участие бесплатное, но регистрация обязательна →
17 июля Go-разработчики собираются на Avito Grill & Go, чтобы понетворкать, сыграть в кастомные игры и, конечно, вкусно поесть.
В чилловой обстановке участники смогут:
Участие бесплатное, но регистрация обязательна →
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤6😱3