Go-митап с инженерами МТС Web Services
10 июня в Екатеринбурге пройдёт технический митап Go Up от MWS для Go-разработчиков.
Этот митап — классная возможность узнать, как строится облачная платформа изнутри, и задать вопросы топовым инженерам в неформальной обстановке. Go Up to the Cloud!
Музей истории Екатеринбурга, 18:00. Регистрация
10 июня в Екатеринбурге пройдёт технический митап Go Up от MWS для Go-разработчиков.
Спикеры:
• Эмиль Ибрагимов — о генерации CLI из OpenAPI
• Валерий Локтаев — об автоматизации Terraform
• Георгий Фатеев — о безопасности Go-кода
Этот митап — классная возможность узнать, как строится облачная платформа изнутри, и задать вопросы топовым инженерам в неформальной обстановке. Go Up to the Cloud!
Музей истории Екатеринбурга, 18:00. Регистрация
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
Эта статья — не туториал, а исповедь скалиста-функциональщика, который ушёл в 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 очередь:
• С SQLite-поддержкой:
• С Redis (для распределённой обработки):
В итоге воркер обрабатывает задачи одинаково — независимо от хранилища.
✅ Почему это круто
• Гибкость: адаптеры позволяют легко менять хранилище без правок воркера
• Минимальные зависимости: в яд
📌 Читать
Контекст:
Работая на 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)
В итоге воркер обрабатывает задачи одинаково — независимо от хранилища.
✅ Почему это круто
• Гибкость: адаптеры позволяют легко менять хранилище без правок воркера
• Минимальные зависимости: в яд
📌 Читать