Еще одна реализация Обработки Данных

    Представьте себе инструмент, с помощью которого вы можете трансформировать любые данные в… любые данные.

    Самый доступный пример — Изображения. Что если я хочу получить картинку определенного размера и поставить где-нибудь водяную марку (тоже определенного размера).

    И вот один из примеров как это может выглядеть:

    image

    P.S.: Это обзорная статья, если будет интересно, дальше опишу подходы детальнее.

    Мотивация


    Недавно, в ноябре 2018, мне нужно было изменить размер фотографии…

    Онлайн сервисы из-за своих «особенностей» ( реклама, странный интерфейс и тд ) сделали этот процесс максимально мучительным.

    Стандартные средства Windows 10 мне показались не очевидными. Пришлось скачать GIMP и оттуда сделать все что было надо — изменить размер фотографии.

    В свое оправдание:

    1. Время возникновения проблемы ~1AM ( час ночи )
    2. Рабочего ноута под рукой не было
    3. Windows дома только для игр. Сейчас иногда пишу код с apple клавиатурой



    И тут очередной программист решил создать еще один кост… Инструмент.

    Требования


    Этот Инструмент должен быть всем костылям костыль:

    1. Простой UI
    2. Простой API
    3. Удобная организация сущностей проекта
    4. Минимум кнопок и настроек
    5. Возможность имплементировать свои… «стандарты»
    6. Open Source: Backend и Frontend

    И главное — пользоваться этим должны иметь возможность все, кто понимают чего они хотят.

    Несколько возможных последовательностей:

    1. Картинка, Картинка поменьше, Фильтр
    2. Скачать содержимое URL, оставить только полезный Контент, Оставить только текст
    3. Скачать картинку, определить что на ней есть какой-нибудь предмет ( template matching )



    Имплементация


    Недавно на Хабре читал До микросервисов нужно дорасти... и решил последовать этому. Уже были пару попыток сделать такую штуку через «красивые» ( в моем воображении ) структуры: каждая функция ( вроде template_match, md5 ) как микросервис, оптимизированный для решения своей задачи. В итоге к этому все и придет, но не сегодня :)

    Итого имеются:

    1. Frontend без красивых обоев
    2. Backend API
    3. Celery ( в локальной разработке использую Redis, а в тесте и проде RabbitMQ )
    4. Backend Workers

    Скажу сразу: я очень посредственно знаком с Frontend, однако, спасибо Stackoverflow и Google поиску.



    Больше примеров


    Все примеры можно найти здесь, они объединены в «проекты».

    Один из них: извлечение текста из HTML страницы



    Внимание: сайт работает в режиме read-only, но результат вам вернет. Он не сможет сохранить ваши изменения на Project и Pipeline.

    Небольшие пояснения


    Список того, что может трансформировать данные: здесь

    Чем этот Проект не является:

    1. Хранилищем данных
    2. Майнером биткоинов

    Проект очень похож на:

    1. Zapier
    2. Яндекс Нирвана
    3. Parse.com (пару лет как выкуплен Facebook )

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Этот Проект имеет Право на жизнь?

    • 32.1%Да9
    • 14.2%Нет4
    • 28.5%Затрудняюсь ответить8
    • 25%Не дочитал статью7
    • +14
    • 2,5k
    • 8
    Поделиться публикацией

    Комментарии 8

      +1
      Стандартные средства Windows 10 мне показались не очевидными.

      Почему это не сработало?
      image
        0

        Я слишком привык к маку — жму Help, ввожу "resize" и он подсвечивает где это :) А так — походу я не заметил этот пункт в Paint.
        Спасибо, теперь буду знать, и добавлю в "resize_image" boolean поле "maintain aspect ratio" :D

        +1

        А всего-то надо было поставить imagemagick и почитать man convert или раздел мануала про аннотирование картинок.

          0

          Кстати, делал в предыдущей версии с через "imagemagick"
          :)

          +1
          Графы для перекладывания из одного места в другое и обработки кстати можно довольно неплохо делать мышкой в nifi.apache.org :)
            0

            Спасибо! На первый взгляд — очень интересная и мощная штука.
            Проблема только в одном — надо научиться ей пользоваться.
            Однозначно что я поставлю Apache NiFi и попробую там сделать все, что сделал в своей поделке :D

              +1
              Ещё неплохая штука схожая — streamsets.com

              Вообще для Flow-based programming много чего есть, но обычно оно либо монструозное и тащить в проект страшно, либо минималистичное и тащить в проект бесполезно.
            +1
            вот этим никогда не пользовались?
            Попробуйте, наверняка пригодится в Вашем проекте. Удобная штука. Мы генерим в pdf карточки товаров, добавляя сгенерированные картинки (исходя из контекста пришедшего посетителя).

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое