Ищу желающих помочь с разработкой плагинов.

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: Tolik, zed, vdemidov

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение vdemidov » 16 июн 2010, 16:07

svp писал(а):Мне видится идеальной система плагинов, применяемая в firefox и thunderbird.Можно как один плагин, так и несколько в пакете всегда хранить в zip-контейнере, как у того же файрфокса.Сам контейнер никогда не нужно блокировать, а плагины можно при установке просто распаковывать во внутренний рабочий каталог. Для portable версии (коих любителей здесь over 9к) этот каталог можно иметь внутри каталога с прогой, а для установленных Планет (или вообще любых хост-приложений, использующих эту плагинную систему) хранить в юзерском хомяке. В точичности как делает файрфокс. Зачем изобретать самокат (а-ля FAR с блекджеком), когда есть отличный кладезь мозиловских идей?

Ну оно бы хорошо, но кто это все будет реализовывать. Да и при моей схеме никто не запретит распространять плагины в виде неких инсталляционных пакетов в zip контейнере. К самому движку это имеет слабое отношение.
svp писал(а):Установленный плагин будет иметь свой гарантированно уникальный каталог в виде его же гуида. Плагины могут иногда иметь зависимости. Я не предлагаю реализовывать аналог дебиановского, к примеру, пакетного менеджера для отслеживания зависимостей, но чтобы избежать конфликтов можно просто предусмотреть в плагине специальный файл требований к среде, где перечислить допустимые вилки версий для всего окружения, что ему требуется. Ну и следовать правилам: меняется интерфейс -- меняем версию; меняется реализация -- меняем только субверсию.По всему выходит, что для пущей гибкости и, как ни парадоксально, простоты каждый плагин (или/и пакет?) должен всегда иметь в своей основе эдакий xml-файлик (xml потому, что структура легко расширяется с обратной совместимостью), где будет определяться основная техническая информация о плагине. О том, что он собой представляет (dll с реализацией некого интерфейса, или набор js-скриптов, как у мозиллы), о зависимостях от компонентов хост-приложения, о зависимостях от других плагинов, вилках совместимости с тем, отчего зависимости.

Ну сейчас у пакета плагинов предусмотрена выдача некоторого количества инфы о себе, своей версии и требуемой минимальной версии программы. Теоретически в любой момент можно заменить загрузчик плагинов, что бы он брал инфу не загружая саму dll, а из одноименного xml. Можно даже с проверкой хеша dll и даже электронной подписи и сертификата разработчика :)
А сейчас объясню почему я выбрал вариант, что в dll может быть много плагинов, а не ровно 1 штука. Просто в моем понимании каждый конкретный тип плагина задает очень жесткие рамки и требования для реализующих его, но разных типов я планирую наделать очень много. Поэтому вполне может получится, что какой-то механизм сможет реализовывать 3-4 типа плагинов используя общие 90% кода. Тогда разносить их в отдельные длл получается ну уж очень нерентабельно. Да и ресурсоемко держать столько открытых dll.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение Parasite » 16 июн 2010, 18:55

vdemidov писал(а):
Parasite писал(а):А со с голым Перлом в сюды как-нибудь присоседиться - реально?

загрузчик для перловых плагинов, написанный на делфе,
Как оно реализуется ХЗ.

Другими словами - дохлый номер? Я в дельфи чуть менее чем никак.

vdemidov писал(а):Ну или ограничиваться типами плагинов, которые ничего от базовой программы не получают.

Так это уже давно есть. САС на 127.0.0.1 + прокси-скриптик, общение - исключительно через строку УРЛа...но хотелось бы именно поддержки программой, а не прикладной гинекологии через замочную скважину.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение svp » 17 июн 2010, 10:06

Parasite писал(а):
vdemidov писал(а):
Parasite писал(а):А со с голым Перлом в сюды как-нибудь присоседиться - реально?

загрузчик для перловых плагинов, написанный на делфе,
Как оно реализуется ХЗ.

Другими словами - дохлый номер? Я в дельфи чуть менее чем никак.

Ну почему сразу никак? Со временем всё будет. Думаю, однако, что сперва будет яваскрипт или питон.
Parasite писал(а):
vdemidov писал(а):Ну или ограничиваться типами плагинов, которые ничего от базовой программы не получают.

Так это уже давно есть. САС на 127.0.0.1 + прокси-скриптик, общение - исключительно через строку УРЛа...но хотелось бы именно поддержки программой, а не прикладной гинекологии через замочную скважину.

Речь не о том. Имелось виду, что плагину, как правило, требуется обращаться к некоторым функциям хост-программы. Например, получать от неё текущие координаты, координаты выделения, текущую открытую карту, набор слоёв, и т.д. Это и имелось виду, когда говорилось "ничего от базовой программы не получают". Выходит, что от таких плагинов проку мало. Однако, вопрос о предоставлении API скриптовому интерпретатору вполне решаем. Просто это, наверно, не первоочередная задача сейчас.
Аватара пользователя
svp
Советчик
 
Сообщения: 446
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение Parasite » 17 июн 2010, 11:28

svp писал(а):Думаю, однако, что сперва будет яваскрипт или питон.

Не припомню к вышеназванным коллекцию over 9k расширений сравнимую хотя бы со штатным CPAN'ом (не говоря уж о сторонних разрозненных расширениях - тысячи их!), с помощью коих из стандартного минимального набора можно сделать даже полнейший блэкджэк..... Это все отразится на теоретически возможном функционале данного скриптового плагина исключительно в самую лучшую сторону.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение vdemidov » 17 июн 2010, 13:37

Ну в любом случае, в ближайшее время никаких скриптовых плагинов я делать не планирую.
И раз тут возникло понимание того что я имею в виду под плагинами, которые "ничего от базовой программы не получают", то жду идей для новых типов плагинов, а еще лучше реализации этих идей на делфе.
Например я хочу сделать в ближайшее время такие типы плагинов: простой экспорт в файл, и простой экспорт в папку. Почему простой, а потому, что программа сама будет скармливать им тайлы в том порядке в котором захочет, тоесть склейку в растр скорее всего через такой экспорт сделать не получится, а вот копирование тайлов в какой-нибудь контейнер - запросто.
Что-то похожее на вот такое:
Код: Выделить всё
type
  IExportSimpleFolderProcessor = interface
    procedure AddTile(APos: Tpoint; Azoom: byte; ALonLatRect: TDoubleRect; ATileSize: Cardinal; ATileBuf: Pointer);
  end;
  IExportSimpleFolder = interface
    function StartExport(AFolderName: WideString): IExportSimpleFolderProcessor;
  end;

Тоесть SAS.Планета сама будет перебирать тайлы по выделению, и скармливать плагину, порядок и наличие всех тайлов не гарантируется.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение Parasite » 17 июн 2010, 16:32

svp писал(а):Ну так топикстартер (vdemidov) меж тем и без дела не сидит. Вообще молодец он, что столько времени проекту уделяет. А пинать и про обещания напоминать это каждый может. Надо вносить посильную лепту. Мне вот не удаётся столько времени выкроить.

Да я бы и рад, посильно....Но, как уже сказал - я в дельфи еще менее, чем в балете на льду. Увы. Не тот профиль. ASM(non-PC)/Perl/Fortran/Cobol/Lisp/Ada - могу, со скрЫпом (за давностью лет). Потому и жду именно что скриптовых плагинов, а так как под планку "современные скриптовые" из вышеуказанных подпадает только Перл - посему и вполне конкретный запрос...

svp писал(а):Да кто ж спорит? Я сказал про яваскрипт и питон только потому, что без дополнительных изысканий в общих чертах уже сейчас представляю себе как к ним подступиться.

Есть еще LUA - там нахаляву раздаются уже готовые тулзы, манулы и дллки по встраиванию скриптоподдержки в практически любое приложение. Вот в HandyCache например оченно здорово прикрутили. Правда, сам язык весьма...ээ...негуманоиден - ну да ладно, хоть такой.....Если топикстартер втроит LUA - освоим, не вопрос. Было бы что осваивать...
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение Parasite » 17 июн 2010, 16:37

vdemidov писал(а):Ну в любом случае, в ближайшее время никаких скриптовых плагинов я делать не планирую.

Ну вот. Опять старые песни о вечном... :(
Скриптовые плагины хомяки сделают сами. Нужна сама возможность поддержки скриптоплагинов САСом. Очень нужна. Я - первый, кому нужна :)
Надоело через прокси-скрипт извращаться, право слово....Оно хоть и работает худо-бедно, но гибкости HandyCache - нету. :(

vdemidov писал(а):И раз тут возникло понимание того что я имею в виду под плагинами, которые "ничего от базовой программы не получают", то жду идей для новых типов плагинов, а еще лучше реализации этих идей на делфе.

Можно посмотреть, как сделана реализация поддержки пользовательских скриптов в HandyCache. Она документирована, нек.образом.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение vdemidov » 17 июн 2010, 17:01

Parasite писал(а):Нужна сама возможность поддержки скриптоплагинов САСом. Очень нужна. Я - первый, кому нужна

Нахрена? Ну прикручу я сейчас тупо интерпретатор перла, который ни скрипту ничего не передаст, ни от скрипта ничего не получит тебе полегчает?
Если нужны скрипты на какое-то конкретное дело опиши что скрипт должен получать, что возвращать.
Parasite писал(а):Можно посмотреть, как сделана реализация поддержки пользовательских скриптов в HandyCache. Она документирована, нек.образом.

Толку мне от скриптов HandyCache, там все заточено на обработку заголовков запросов и жесткий список глобальных переменных скрипта. Если тебе нужен тот же список, так проще HandyCache использовать и не тащить его функциональность в Планету. Просто в HandyCache по сути только 2 конкретных типа плагинов: обработка запроса и обработка ответа. В Планете же точек для самых разнообразных типов плагинов просто тьма.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение Parasite » 17 июн 2010, 21:00

vdemidov писал(а):Толку мне от скриптов HandyCache, там все заточено на обработку заголовков запросов и жесткий список глобальных переменных скрипта.

В SAS есть нативная обработка заголовков запросов и жесткого списка глобальных переменных скрипта?
В САСе нет нативной обработки заголовков запросов и жесткий список глобальных переменных скрипта...

vdemidov писал(а):проще HandyCache использовать и не тащить его функциональность в Планету.

Я нигде не говорил что я НЕ использую HC. Скорее наоборот. :)
Но еще чаще я использую zmp:127.0.0.1 и самописный скрипт. Но в этом варианте есть некоторые проблемы (например скорость работы, или отсутствие версионности к.тайла в САСе)

vdemidov писал(а):В Планете же точек для самых разнообразных типов плагинов просто тьма.

Пока что число плагинов равно ровнехонькому нулю.
Пока что, навскидку:
Код: Выделить всё
В плагин:
map_name
X\Y\Z
V
map_name
URL (опционально)

Из плагина:
:content_data
override_cache_path

То есть, тупо возложить добывание контента для MAPName\X\Y\Z\V на плагин (включая разнообразные урлы, капчи, баны и кики), кой контент плагин может записть в произвольное место системы через $override_cache_path (самостоятельно или используя ф-ции САСа -это уже детали) невзирая на собственные установки САСа. В дальнейшем, задел про $override_cache_path можно заюзать для разнообразнейших типов хранилищ кэша.

То есть, САС должен тупо спросить у плагина XXXXXXXX (имя карты?) параметры X\Y\Z\V - и иметь растровый контент 256\256 на выхлопе плагина (либо цепочки ZMP->CACHE->LOAD плагинов), либо стандартный еррор. В этом случае даже контроль заголовков запросов навешан на плагин, что нам собссно и требуется......:)
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Ищу желающих помочь с разработкой плагинов.

Сообщение svp » 17 июн 2010, 21:12

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

ИМХО, совершенно неправильно, что zmp-файлы как-то логически будут чем-то иным нежели плагины. Это те же плагины, просто кода в них нет, ибо он встроен в Планету.
Я исходники Планеты давно не листал, тяжело будет заставить её брать тайлы у соответствующего интерфейса, вместо нативной реализации загрузки? Может там всё так размазано по коду, что проще переписать, чем такой рефакторинг?
Аватара пользователя
svp
Советчик
 
Сообщения: 446
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Пред.След.

Вернуться в Раздел для разработчиков программы SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron