Модули с сервис-ориентированной моделью

Все что касается разработки, отладки, использования подключаемых модулей.

Moderators: Korney San, marcipan

Post Reply
User avatar
Korney San
Гуру
Posts: 1116
Joined: 02 Oct 2006, 17:01 Mon
Location: Беларусь, Гомель
Contact:

Модули с сервис-ориентированной моделью

Post by Korney San »

Здесь я привожу список модулей, основанных на доработанном Plugin SDK, и их зависимости.
За доработку Plugin SDK огромное спасибо товарищу DRONу с Королевства Delphi.

Сервисы первого уровня:

1. Окно подтверждения с таймером (ServiceAskForm). Проверочный модуль.
По команде выводит окно подтверждения с кнопками ОК и Отмена и указанными заголовком, текстом, кнопкой по умолчанию, временем закрытия, временем фокусировки на окно. В результате возвращает уникальный идентификатор окна.
Результат закрытия окна (нажатую кнопку) возвращает в событии.
2. Объём папки (ServiceDirSize). Проверочный модуль.
По команде вычисляет объём указанной папки, который возвращает в результате.
3. Перезагрузка (ServiceReboot).
По команде перезагружает компьютер (также может выключить), не зависит от операционной системы.
4. Дополнительная информация загрузки (ServiceExtDldInfo, бывший ServiceSizeTimeDiff). Проверочный модуль.
Вычисляет для каждой активной загрузки:
объём скачанного за 5 сек;
время, прошедшее с момента запуска (перехода в состояние "Скачивается");
запоминает оставшееся время (для использования в OSD);
По команде возвращает данные в результате.
Также может возвратить предыдущий размер файла (для использования в возможном аналоге Trayindicator);
5. Шифратор (ServiceCipher).
Простой шифратор по ключу. По команде [де]шифрует переданные данные и возвращает в результате.
6. Регулярные выражения (ServiceRegExpr). Проверочный модуль.
Возвращает результат проверки текста на совпадение с регулярным выражением.
7. Система (ServiceSystem).
Определяет:
время работы системы;
время неактивности пользователя;
заголовок и файл полноэкранного приложения.
8. Значки в трее (ServiceTrayIcons). Проверочный модуль.
Допускает произвольное количество значков в трее, вывод произвольного значка (по дескриптору из программы или модуля) и подсказки к нему, вывод произвольного одноуровневого всплывающего меню у значка, передачу событий (щелчков мышью по значку или в меню) в события (EventRaised) модулей.
9. Перезапуск DM (ServiceRestart).
Перезапускает DM по команде, нажатию кнопки "Настройка" или щелчку в меню "Плагины". Таким образом, проверочный модуль ему не требуется, но будьте аккуратны.
10. Фильтр загрузок (ServiceFilter). Проверочный модуль.
Выбирает из списка загрузок индентификаторы загрузок, соответствующие заданным условиям (13 полей). Можно задать список загрузок, исключаемых из поиска. Некоторые поля требуют установленного ServiceRegExpr.

Сервисы второго уровня:

1. Proxy Manager 0.2 Проверочный модуль.
Основное назначение: дать возможность контролировать и использовать настройки прокси серверов из одного места, т.к. доступа к встроенному в DM менеджеру прокси нет.
Зависимости: ServiceCipher (не включён в архив)

2. Link to USD 0.1
Основное назначение: проверка ссылок на возможность скачивания при помощи Universal Share Downloader, передача ссылок в USD.
Зависимости: ServiceRegExpr (не включён в архив)

3. Command Centre (в процессе тестирования, RC)
Основное назначение: выполнение команд (именованных последовательностей операций с DM) из модулей, описание команд задаётся при помощи скриптов, совместимых с FastScript.
Зависимости: ServiceDirSize, ServiceReboot, ServiceSystem, определяются
Альфа-комплект и проверочный модуль.
Альфа-комплект содержит Command Centre, ServiceRestart и скрипт, выполняющий перезапуск DM по команде из проверочного модуля.

4. Remote Users 0.1 Проверочный модуль
Основное назначение: хранилище идентификаторов и уровней доступа пользователей для модулей удалённого управления.
Зависимости: нет

Модули:

Auto Switch Extended 0.4.3
Основное назначение: переключение на следующую загрузку, когда скорость текущей упала ниже заданной.
Зависимости: ServiceExtDldInfo (включён в архив)

Rebooter Extended 0.3
Основное назначение: перезагрузка компьютера при падении скорости скачивания.
Зависимости: ServiceAskForm, ServiceDirSize, ServiceReboot, ServiceSizeTimeDiff (включены в архив)

ICQ Remote (в процессе тестирования, RC)
Основное назначение: удалённое управление DM через ICQ. Наследник и последователь дела ICQ RemoteCP.
Зависимости: ServiceCipher, ServiceTrayIcons, Proxy Manager, Command Centre, Remote Users.

Auto URL Replace 0.3
Основное назначение: автозамена ссылок на файлы одинакового размера с одного источника.
Зависимости: ServiceFilter, ServiceRegExpr.

Downloads Cleaner 0.1
Основное назначение: очистка списка загрузок с отбором ненужных по 15 критериям.
Зависимости: ServiceFilter, ServiceRegExpr.

Примечание.
Сервисы, не задействованные в модулях, прошли только предварительное тестирование и могут содержать ошибки.
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
vasa_pmr
Профи
Posts: 71
Joined: 29 Mar 2009, 20:56 Sun

Re: Модули с сервис-ориентированной моделью

Post by vasa_pmr »

Молодец. Далеко пойдешь. Я вообще задумал весь доунлоад менеджер (приемник несостоявшегося Extended Downloader и UF Download Manager) построить на плагинах. Еще не скоро он кому-то составит конкуренцию, но начало многообещающее. Пример такой схемы: среда разработки qt creator. Не смотря на ресурсоемкость пока удается вписатся в 10 мб оперативки. Зато перспектива расширения весьма не плохая. Но есть и недостатки - язык разработки плагинов только с++/qt. а также компилятор mingw. Но так как проект опенсорс (LGPL, для линковки с своими закрытыми плагинами), то особых проблем с созданием плагина позволяющего писать на других языках пусть и с ограничниями возникнуть не должно. Неудачный опыт с первыми двумя проектами дал мне понять что бессмыслено писать то что написано до нас. Я пересмотрел свои взгляды на программу в целом и перевел ее под лицензию LGPL, что позволяет мне не тратить время и пользоватся уже написаными продуктами такими как cURL, Extension System из Qt Creator.

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

Это все. Спасибо за внимание.
User avatar
Korney San
Гуру
Posts: 1116
Joined: 02 Oct 2006, 17:01 Mon
Location: Беларусь, Гомель
Contact:

Re: Модули с сервис-ориентированной моделью

Post by Korney San »

vasa_pmr wrote:Молодец. Далеко пойдешь.
Я уже слышал от других пользователей DM предложения написать свой менеджер. Или взять исходники этого и... :D
vasa_pmr wrote:С системой плагинов, да и доунлоад мастрером в целом разработчикам надо что-то делать.
...
По сравнению с другими бесплатными и или опенсорс качалками дм пока еще борется успешно.
Начну с конца. Я пока не нашел бесплатную (да и хотя бы платную - была бы программа, а кряк найдётся :D ) качалку, в которой хотя бы была сама система плагинов. Не говоря уже о "широте" DM. И не мечтая о подобии Miranda, где любой модуль может перехватить нужную ему функцию/данные, добавить свои и прочее. А поддержка протоколов кроме HTTP и FTP в виде плагинов для DM вообще фантастика - в то время как я лично написал для Миранды псевдопротокол. На Delphi.
Что касается самой системы плагинов...
Пишите мне на: slava@westbyte.com для добавления необходимых вам событий.
(с)2006 Вячеслав Витер
С самого начала пользования DM и разработки под него всяких примочек меня нервирует безразличие разработчиков к обращениям. Что по электронной почте - складывается ощущение, что они включили АнтиСпам Касперского на полную мощность. Что по ICQ - за три года я ни разу не видел в онлайне указанный в контактах номер, а потом он вообще исчез из раздела. Что на форуме - молниеносная реакция следует лишь на сообщения, несущие угрозу репутации программы, все остальные - просматриваются ли хотя бы?
Поэтому я решил сделать всё сам. И даже изобрёл небольшой велосипед, который может похвастаться функцией, недоступной в DM - "горячее" подключение и отключение плагинов. Но этот путь, даже на мой непрофессиональный взгляд, был тупиковым - и я решил попросить помощи. И нашёл её. Заинтересовавшийся человек сделал возможным существование "сердца" идеи Thunk - межплагинного обмена, пусть и чисто по-русски, через... её самую. Этот человек развязал мне руки.
Я переписываю код своих плагинов - в них слишком много повторяющихся участков. Достаточно для выделения в самостоятельную часть - а уже к ней обращаются все, кому нужно. И вот они:
сервис первого уровня - чисто функция, не требующая каких-либо настроек;
сервис второго уровня - функция, для работы которой требуются настройки либо сервис (первого или второго уровня);
модуль - русское значение слова plugin, то самое расширение, которое выполняет полезную работу при помощи сервисов и, возможно, других модулей.
Я поражён простотой решения моей проблемы и удивлён, как разработчики DM прошли мимо него и придумали тот способ написания плагинов, который описан в SDK. Не говоря уже о нежелании добавить обработчик новой функции.
И я расслаиваю свои плагины на сервисы и модули, оставляя в каждом лишь основу, необходимую для работы, а не для засорения памяти дублированием "одинаковых" данных.

Вот такой вот "крик души".

P.S. Покажите мне качалку, у которой можно через плагины управлять загрузками вплоть до удаления, а сами плагины писать на Delphi - и я сменю пристрастия. :twisted:
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
vasa_pmr
Профи
Posts: 71
Joined: 29 Mar 2009, 20:56 Sun

Re: Модули с сервис-ориентированной моделью

Post by vasa_pmr »

проект загнулся
ponand
Гуру
Posts: 134
Joined: 15 Jun 2008, 2:55 Sun
Location: Ставропольский край

Re: Модули с сервис-ориентированной моделью

Post by ponand »

Korney San wrote:1. Окно подтверждения с таймером (ServiceAskForm). Проверочный модуль.
По команде выводит окно подтверждения с кнопками ОК и Отмена и указанными заголовком, текстом, кнопкой по умолчанию, временем закрытия, временем фокусировки на окно. В результате возвращает уникальный идентификатор окна.
Результат закрытия окна (нажатую кнопку) возвращает в событии.
при подключенном сервисе вот такая ошибка почемуто
XPProSP3 (zver) DM 5.13.2.1317 Опера 12.01.1532
User avatar
Korney San
Гуру
Posts: 1116
Joined: 02 Oct 2006, 17:01 Mon
Location: Беларусь, Гомель
Contact:

Re: Модули с сервис-ориентированной моделью

Post by Korney San »

ponand wrote:при подключенном сервисе вот такая ошибка почемуто
Странно. Пару плагинов работают и в ус не дуют...
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
ponand
Гуру
Posts: 134
Joined: 15 Jun 2008, 2:55 Sun
Location: Ставропольский край

Re: Модули с сервис-ориентированной моделью

Post by ponand »

Korney San wrote:Странно. Пару плагинов работают и в ус не дуют...
странно то, что почемуто, только если из трея закрывать ...

провел различные эксперементы вылитает даже при отключенных всех плагинах и серверах кроме него
XPProSP3 (zver) DM 5.13.2.1317 Опера 12.01.1532
User avatar
Korney San
Гуру
Posts: 1116
Joined: 02 Oct 2006, 17:01 Mon
Location: Беларусь, Гомель
Contact:

Re: Модули с сервис-ориентированной моделью

Post by Korney San »

ponand wrote:странно то, что почемуто, только если из трея закрывать ...

провел различные эксперементы вылитает даже при отключенных всех плагинах и серверах кроме него
Что ж, буду следить. Может, найду.
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Post Reply