НОВОЕ: OS/2 GURU - Вопросы и ответы

eCoLabs - ветряные мельницы

Операционные системы
ArcaOS, eComStation, IBM OS/2 Warp
Мифы о eComStation 

 

 

Automator/2 - универсальный комбайн по обработке файлов

Существует много маленьких утилит, которые помогают автоматизировать какие-то операции. Например, пакетное переименование файлов, пакетная конвертация из одного формата в другой.

Нужно создать общий GUI для всех таких утилит, сами утилиты реализовать в виде плагинов.
Через GUI юзер выбирает последовательность операций (плагинов), параметры операции. Плагины выполняются один за другим.

Что дает плагинная система? Неужели это упростит разработчикам жизнь?

Технические плюсы

  • Разработчик экономит время и усилия: не нужно делать диалог загрузки/выбор/сохранения данных
  • Можно писать плагины не зная PM (PM знают только 20% разработчиков)
  • Унификация: если 20, 50 плагинов имеют одинаковый интерфейс, то их можно применять отдельно. Из WPS звать ИЛИ сделать утилитку, не требующую графического конфигуратора.
  • Разработчик заполняет шаблон (3-5 или 10 функций), ему не нужно думать о структуре программы. Поток данных - по заранее определенному конвееру.
  • Часто хочется сделать маленький графический плагин. В рамках pipeline - он дешевле и распространиться среди всех юзеров.
  • Pipeline берет на себя важную роль - промежуточные форматы данных, промежуточные xml-задания. Только благодаря Pipeline можно совмещать несколько плагинов от разных разработчиков

Коммерческие плюсы:

  • Отдельно простые утилитки стоят по 1 рублю. Когда они все в одном пакете Pipeline, то их суммарная стоимость может быть 15$.
  • Все 20, 50 утилиток доставляются каждому пользователю. А сейчас юзеры совсем не знают о существовании многих утилит с хоббеса. Не знаю, что можно что-то автоматизировать.
  • В комплекте с Pipeline будет собрано 100.. 200.. 500 полезных REXX-скриптов. Сейчас их никто и нигде не собирает.

Плагины

Плагин - это скрипт на REXX и/или .dll

API:

  • инфо о плагине: название, тип (типы: картинка, аудиофайл,текстовый файл)
  • на входе: файл со списком файлов для обработки. Итого: На входе список файлов, на выходе список файлов. (даже если обрабатывали 1 файл), это важно для сопряжения разнородных плагинов. Другое дело, что какие-то плагины требуют на входе N .zip файлов, а другие требуют 1 .dat файл + M .zip (или это не так?)
  • Диалоговое окно с настройками плагина
  • (заранее согласовать интерфейс)
  • В плагине есть большая PNG-картинка-иконка 240xN чтобы в Ленте было красиво. (важно для продвижения продукта)

Примеры плагинов

  • Файл любой природы -> "Переименование"
    • смотри Rename Enchance - пакетное переименование файлов. Повторить настройки.
  • Графика -> "Построение коллажа"
    • передаешь плагину N картинок. он собирает MxN штук на 1 листе.
  • Графика -> "Ресайз"
    • ресайз всех фоток в каталоге в .. и запись в ..
    • также юзер задает новые имена картинок. или в какой новый каталог сложить с теми же именами.
  • Графика -> "Поворот без потерь"
    • дает выбирать только JPG, BMP, PNG
    • поворачивает эти картинки. автоматически на нужный угол. Либо каждый раз спрашивает маленькое окошко.
  • dll для конвертирования аудио-файлов из формата А в Б

Оболочка GUI

Старые проекты:

Теперь, e-co в 2009:

Здесь диалог с настройками плагина

  • Тулбар с кнопками. неизвестно какими
  • Ниже три окна: левый список с группами плагинов, средний список - плагины в группе. Отсюда их можно D&D в Ленту. правый - это .inf окно с описанием плагина.
  • В центре - полоса, по высоте занимает 20% - это Лента с конвеером плагинов (pipeline).
  • Внизу - настройка плагина (текущего выделенного в Ленте)

Хоть статистику считай, главное - на входе файл и на выходе файл - остальное зависит от набора обработчиков.

Должен быть тулбар:

  • кнопка "Run" - выполнение.
  • Также Load/Save построенного дерева.
  • возможность сохранить построенный pipeline с настройками плагинов

Настройка плагина

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

Делаем так: параметры в виде текста, в MLE-окне.

  • Загружаем в MLE текстовый файл, в нем комментарии: // параметры, дефолтные значения. Короче, в тексте всё-всё разжевано.
  • Параметры разбиты на группы (это чтобы удобнее было)
  • Название параметров такое, чтобы было понятно, на что они влияют.
  • Дальше этот текст записывается в xml.

Joseph:

  • диалог настроек надо сразу текстовонастраиваемым делать - чтобы легче писать было длл, т.е. сразу всадить в шаблон такой функционал. все установки текстом пусть хранит на себе сам набор

e-co: у нас уже есть Merlin XML .dll - настройки описаны как .xml, открываем ноутбук/диалог - пользователь выбрал параметры - сняли все введенные данные. Поддерживаются: entry-field, radio-button

Какие модули составляют Pipeline?

  • LANGE - мультиязычность
  • Новый Progress bar
  • Новый MsgBox
  • можно Vivid listbox (пока что не знаю где именно)
  • Лента (последовательность плагинов)
  • MerlinXML.dll - для настройки плагинов

Progress-bar во время выполнения плагина

  • Прогресс-бар - как при копировании файлов. % всех файлов и % про текущий файл.
  • Настраивать плагины можно заранее, можно во время выполнения конвеера.
  • По умолчанию, нужно будет настраивать каждый плагин, когда до него дойдет очередь. Также у каждого плагина есть [x] настройка не требуется
  • Если заранее, то обычный диалог настроек. Если во время, то диалог настроек приклеен к прогресс-бару.
  • Диалог настроек может показывать preview, как действует плагин. Для картинок - До.. и После.. Для Переименования файла - Имя До.. и После..

Что даем разработчикам плагинов?

  • библиотеки типа ecoxml, ecomedia, ..
  • Требования: что на входе плагина, что на выходе

Сопряжение плагинов

обмен данными между плагинами - через списки файлов в temp (?)

Не всегда плагины сопрягаются. Значит в .xml, которые плагин передает дальше, должна быть информация, что же он передает? Например, передает картинки, а следующий плагин - принимает только mp3. Значит Pipeline должна MsgBox и все это остановить, либо пропустить плагин mp3 (варианты ответов: Continue, Cancel, Ignore)

Промежуточные форматы:

  • Для картинок - HBITMAP2
  • Если обработка файлов, то XML. внутри имена файлов, полные пути к файлам

Лента

  • Можно D&D бросить в начало ленты (точнее, в стартовый плагин Load files/Open files) файлы и обработка сразу же стартует.
  • Сохранение ленты. Будем называть это "сценарием". Сохраняется в .xml, плагин за плагином. и настройки каждого в отдельном .xml (чтобы гибко было, вдруг старая версия плагина не знает про какую-то опцию, тогда всё равно зажует) И весь сценарий тогда - в .zip

Вспомогательные exe, dll

Многие плагины будут использовать внешние dll и exe (например, Imagemagic, ..) Потому, должен быть каталог типа aux\, в котором название программы, версия, и уже там exe/dll.

Пример:

  pipeline\aux\ImageMagic\3.14\imagemagic.exe

Разные вопросы

  • И что если юзер загружает файлы разной природы? плагин Load/Open должен их отсекать, ругаться про них
  • А что если ошибки во время выполнения конвеера? не понятно..
  • Если во время выполнения нажать Stop, то предлагать: полная установка или все-таки записать результаты кое-как через конечный плагин Save/Export
  • Есть коды ошибок глобальные, каждый плагин может свои номера ошибок вводить

Дополнительные усилия

  • Также нужно сразу же реализовать сопряжение с REXX. Чтобы пользователь мог усиливать плагины скриптами на REXX
  • Подумать, можно ли сделать такое: в первый столбик - выбор класса/объекта, второй - выбор метода. Объект - любой. WPS или еще откуда - неважно. Как делать библиотеки нужных классов?

Спец.требования

  • Сразу же мультиязычность через LANGE
  • все требования по оформлению диалоговых окно
  • Свой temp-каталог

Дополнительно

  • также нужно сделать рег.ключ, в плагинах? генератор ключа. Можно попросить заготовки у Glassman.

Перспективы

Можно засосать следующие утилиты:

  • Rename enchancer -- http://195.72.142.42/ReEn/RenameEnhancer.html
  • http://ru.ecomstation.ru/projects/warpgogo
  • WPPerson: http://ecomstation.ru/wpperson

Стадии работы

  • макет: первый плагин (ресайз картинок) + холст для составления pipeline + тулбар + возможность накидать плагины
  • базовая версия, публичная - 1 месяц
  • внести исправления по советам, исправить все критические проблемы

Сроки

  • базовая версия, перечисленные плагины - 1 месяц
  • 2 недели - собираем новый список багов и плагинов
  • вторая версия, улучшенная - 1 месяц

Вознаграждение

Pipeline будет продаваться за 25 USD. Отчисления разработчику: 33% от продаж.

  • 5000 руб за первую версию движка;
  • 5000 руб за первую версию гуя.
  • 5000 руб за вторую версию движка;
  • 5000 руб когда реализованы все предложения/добавки по гую.
  • Дальше отчисления от продаж вашего пакета плагинов

Права

Права на распространение и модификацию принадлежат Заказчику.


Примеры плагинов

Пример 1) юзер выбирает: Обработка картинок -> Операция: Ресайз.

Пример 2) посмотрим конвертирование звуков.

Пример 3) Картинки -> Печать

Пример 4) Конвертация Thunderbird -> PCM

Пример 5) Приписывание подписи к фотографиям

Пример 6) Прозрачный фон для PNG/GIF картинки

Пример 7) Скрпиты REXX: поиск дупликатов email в файле или файлах.

Пример 8) Обрезать mp3 слева и справа

Пример 9: Ворода из.. в.. (Gates)

Пример 10) На входе X картинок. Разложить картинки на странице в виде матрицы MxN

Пример 11) Печать всевозможная

Пример 12) WPS, что-то сделать с обхектом X

Пример 13) Виртуальный ввод. Эмулировать нажатие кнопок, мышки. только не понятно, в какой точке, в какое окно.

Пример 14) Разрезать огромный файл на куски. Лучше насильно на выходе выдать .rar файлы.. Чтобы сборка стоила нам 0 усилий.

Пример 15) Картинки для USB Dock.

Обсуждение заказа:

В: Неужели разработчики сразу же побегут делать плагины?

A: ДА, все побегут, т.к. можно писать плагины не зная PM. Мы все знаем, чтобы писать для PM, человек должен учиться 2-3 года.

В: что для разработчика проще: научиться программировать под PM или научиться программировать под PipeLine?

Есть разработчики драйверов/алгоритмов. у них нет времени на изучение PM. они хотят прокрутить свой код. vio-утилитку. И если им дать типовой плагин, то они легко подвинут там контролы, переименуют их. Pipeline будет содержать типовые PM-приложения.

В: Плагины - сами по себе, WPS/REXX/.. - отдельно. Значит это глупо

Да, плагины будут расти отдельно. Но потом эти плагины начнут использовать из WPS и REXX.

Опишите, как устроена Pipeline?

посмотрим на картинка т.е. прога для пакетного переименования файлов. ШАблон, Найти - это диалог настроек плагина Выбор каталогов - это pipeline начало и конец. еще видим журнал - список с обрабатываемыми файлами.. pipeline может его показывать во время выполнения. показывая зеленое/красное по коду возврата. плагин перерабатывает и сообщает. ..

"Диалог с настройками загрузили из плагина" = значит к плагину приклеен .rc + функция заполнения + функция считывания заполненного + (опционально) функция диалогово окна.

Все-таки нужно знание PM:

 

2009

Оболочка GUI: Конкуренты

Откуда эта идея? макось 1, макось 2

Оболочка GUI: Старый вариант

Программа может выглядеть так:

 

Как выглядят программы пакетного переименования файлов? Смотри Rename Enchancer:

смотри картинку да, на этой картинке из плагина загрузили только правое окно с настройками. все остальное - это pipeline оболочка.

Обзоры Automator: * http://macovod.net/2009/02/automator-programmirovanie-dostupnoe-kazhdomu/#more-1197 * http://macovod.net/2009/02/automator-massovoe-pereimenovanie/#more-1210

Joseph:

Представь дерево - в идеале с одним корнем.

Дай метод добавить, оторвать, удалить ветку и перенести конец ветки. - это можно сделать в виде операций с графами. В каждом кружочке - узле сидит функция - ее дропают из набора функций-иконок. у нее свое меню настройки. Так набирается последовательность обработки - ее можно сохранить. затем дропаешь на нее объект и тот последовательно проходит по узлам дерева. красиво, понятно, оригинально.

Для линейных схем можно реализовать наборную полоску - процесс слева-направо проходит через все обработчики. Дерево нужно только для ветвлений - если ты хочешь двумя способами один поток обработать.

Эскизы: эскиз 1 эскиз 2, эскиз 2

 


 

(C) OS2.GURU 2001-2021