37.2K subscribers
1.5K photos
36 videos
5 files
1.65K links
加入频道
Go-митап с инженерами МТС Web Services

10 июня в Екатеринбурге пройдёт технический митап Go Up от MWS для Go-разработчиков.
Спикеры:
• Эмиль Ибрагимов — о генерации CLI из OpenAPI
• Валерий Локтаев — об автоматизации Terraform
• Георгий Фатеев — о безопасности Go-кода


Этот митап — классная возможность узнать, как строится облачная платформа изнутри, и задать вопросы топовым инженерам в неформальной обстановке. Go Up to the Cloud!

Музей истории Екатеринбурга, 18:00. Регистрация
👣 FFmate — умная автоматизация на базе FFmpeg

FFmate — это современный и мощный уровень автоматизации поверх FFmpeg. Он упрощает работу с видео и аудио, превращая хаос транскодирования в чистые, надёжные потоки обработки :contentReference[oaicite:0]{index=0}.

Ключевые возможности

- REST API — программно отправлять и управлять задачами
- Веб-интерфейс — мониторинг и контроль без командной строки
- Watchfolders — автоматически обрабатывать файлы, появившиеся в папке
- Presets — готовые настройки для типичных задач
- Webhooks — уведомления о событиях задач
- Wildcards — универсальные шаблоны для именования и папок
- Hooks pre/post-processing — запуск скриптов до и после задач
- Встроенная очередь — управление приоритетами и параллельностью :contentReference[oaicite:1]{index=1}

Примеры применения

- Автоматическое преобразование видео, извлечение аудио и создание превью
- Постпродакшн-пайплайны и медиа-публикации
- Интеграция с MAM-системами через вебхуки
- Централизованное API-first управление задачами FFmpeg
- Обработка файлов из папки (например, камеры) — всё без ручного запуска :contentReference[oaicite:2]{index=2}

🛠 Архитектура и запуск

FFmate написан на Go, распространяется под лицензией SSPL. В репозитории есть:
- Клиент и сервер (REST API + Web UI)
- Dockerfile и шаблоны для сборки
- Документация и примеры в docs/ :contentReference[oaicite:3]{index=3}

📣 Мнение сообщества

Из обсуждений на Reddit:
> “If you've ever struggled with managing multiple FFmpeg jobs, messy filenames, or automating transcoding tasks, FFmate might be just what you need.” :contentReference[oaicite:4]{index=4}

Это резюмирует суть — упростить задачу массового и автоматизированного транскодирования.

🔗 Полезные ссылки

- GitHub: https://github.com/welovemedia/ffmate
- Документация: https://docs.ffmate.io

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Бросить монады и обнять if err != nil...

Эта статья — не туториал, а исповедь скалиста-функциональщика, который ушёл в Go… Рассказ для тех, кто любит абстракции, но устал от них. И тех, кто хочет писать просто и по делу.

Читается на одном дыхании:  https://tglink.io/d05ced5c71d5?erid=2W5zFHrYxZW
🛠️ История создания “storage-agnostic” message queue

Контекст:
Работая на Go, автор вдохновился инструментами из Node.js экосистемы (BullMQ, RabbitMQ) и захотел сделать что-то похожее, но с нуля, без зависимостей. Так родилась идея — сначала он создал Gocq (Go Concurrent Queue): простую concurrent-очередь, работающую через каналы.

Основная проблема


Gocq отлично работал в памяти, но не поддерживал устойчивое хранение задач.
Автор задумался: а можно ли сделать очередь, не зависящую от конкретного хранилища — так, чтобы её можно было подключить к Redis, SQLite или совсем без них?

🧱 Как это реализовано в VarMQ

После рефакторинга Gocq был разделён на два компонента:
1) Worker pool — пул воркеров, обрабатывающих задачи
2) Queue interface — абстракция над очередью, не зависящая от реализации

Теперь воркер просто берёт задачи из очереди, не зная, где они хранятся.

🧠 Пример использования

• In-memory очередь:


w := varmq.NewVoidWorker(func(data any) {
// обработка задачи
}, 2)
q := w.BindQueue()


• С SQLite-поддержкой:


import "github.com/goptics/sqliteq"

db := sqliteq.New("test.db")
pq, _ := db.NewQueue("orders")
q := w.WithPersistentQueue(pq)


• С Redis (для распределённой обработки):


import "github.com/goptics/redisq"

rdb := redisq.New("redis://localhost:6379")
pq := rdb.NewDistributedQueue("transactions")
q := w.WithDistributedQueue(pq)


В итоге воркер обрабатывает задачи одинаково — независимо от хранилища.

Почему это круто

• Гибкость: адаптеры позволяют легко менять хранилище без правок воркера
• Минимальные зависимости: в яд

📌 Читать