38.2K subscribers
1.54K photos
38 videos
5 files
1.7K links
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Outrig — Observability-инструмент для Go

Outrig — это open-source инструмент для разработчиков на Go, позволяющий:

🔍 В реальном времени искать по логам
🧵 Отслеживать goroutines
📊 Следить за переменными и метриками рантайма

💡 Всё работает локально — никакие данные не покидают вашу машину.

🖥 Поддержка: macOS и Linux (Windows — скоро)

➡️ Идеален для дебага, мониторинга и глубокого понимания поведения Go-приложений.

Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍147🔥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)

🛠 Установка


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
👍107🔥6
🎯 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
👍115🔥1🥰1
👣 Быстрая альтернатива файлообменникам — Gokapi

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-библиотеки: 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👍2418
🔏 RuleGo — легковесный rule-движок на Go для гибких систем. Когда бизнес-логика становится слишком сложной для хардкода, а традиционные workflow-движки кажутся громоздкими, этот проект предлагает элегантное решение. Инструмент позволяет описывать правила обработки данных в виде JSON-цепочки с компонентами, которые можно пересобирать на лету без перезапуска приложения.

Проект имеет поддержку edge-вычислений — движок стабильно работает даже на Raspberry Pi с потреблением памяти около 19MB. Встроенные компоненты для HTTP, MQTT и JavaScript-трансформаций делают его идеальным для IoT-сценариев, а визуальный редактор RuleGo-Editor упрощает конфигурирование.

🤖 GitHub

@golang_google
👍11🔥8🥰32👏1
🖥 1Panel — открытый веб-интерфейс для управления Linux-серверами!

🌟 Он интегрирует функции мониторинга серверов, управления контейнерами, базами данных и веб-сайтами, а также систему резервного копирования и восстановления. Платформа поддерживает развертывание сайтов (включая WordPress) с одной кнопки, автоматическое обновление приложений и безопасность через контейнеризацию.

🔐 Лицензия: GPL-3.0

🖥 Github

@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), время продвигается вперед автоматически, чтобы "разблокировать" эти операции.

Пример теста:


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
142👍17🔥15😁2
🔗 Schema — удобный инструмент для преобразования данных между HTML-формами и Go-структурами. Этот пакет из экосистемы Gorilla упрощает работу с веб-формами, автоматически связывая поля структуры с данными POST-запросов и наоборот.

Библиотека поддерживает базовые типы данных, позволяет задавать кастомные имена полей через тег schema и обрабатывать значения по умолчанию. Например, можно декодировать форму в структуру Person с полями Name и Phone всего парой строк кода.

🤖 GitHub

@golang_google
👍124🔥3
📔 Gorsk — готовый стартовый набор для создания RESTful-сервисов на Go с акцентом на чистую архитектуру. Этот проект избавляет от рутинной настройки, предлагая сразу работающую основу с JWT-аутентификацией, RBAC, валидацией данных и Swagger-документацией.

Инструмент имеет модульную структуру, позволяющую легко заменять компоненты вроде Echo на другой фреймворк или ORM. В комплекте: CRUD для пользователей, тесты с моками и контейнеризованные запросы к БД.

🤖 GitHub

@golang_google
🔥16😢65🤔1
👣 Gozo — универсальный Go‑тулкит с мощными утилитами

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
👍2512🔥2😁1🤬1
🔥 Большая коллекция полезных сниппетов, примеров и рецептов на Go для создания эффективных, надёжных и масштабируемых приложений.

Идеально для разработчиков, которые хотят:
- писать чистый и читаемый 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
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;
➡️ почелленджить над кодом;
➡️ обсудить карьерные треки;
➡️ а также перенять экспертизу напрямую от разработчиков Авито.

Участие бесплатное, но регистрация обязательна →
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥136😱3