Добавить в FAR API события (events) о плагинах и от них

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

Latest post of the previous page:

Когда есть ворох разных плагинов, надо бы знать кто из них что творит, и вычислять кто делает длительные операции.
И почему например при запуске без всяких макросов размер экрана вдруг теперь становится 80х25.
Смотрим в лог плагинов, и видим что ConsoleControl это творит зачем-то.
Или видим что есть много вызовов какого-то плагина которые не нужны и сам плагин не нужен,
сам он об этом тебе не скажет, а по евентам можно вычислить.
Или видим что поставили плагин, а он не работает. Почему не работает?
Если есть "плагин лог", то можно увидеть евент что он честно пытался загрузитья,
молча сфэйлился, но в эвенте сообщение об ошибке осталось.

на этом все, всем спасибо
Last edited by citRiks on Tue 07 Apr, 2020 22:22, edited 1 time in total.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Добавить в FAR API события (events) о плагинах и от них

Post by zg »

citRiks wrote: Tue 07 Apr, 2020 21:55А зачем есть евенты для диалогов?
прекрасный вопрос. я так понимаю, вы не в курсе, что возможность обрабатывать события в диалогах появились почти за 5 лет до того, как их поддержка появилась в фаре. например, вся функциональность плагина dialogtools была доступна ещё в 2003 году, когда как нужное для этого апи добавили в фар в конце 2007-го. т.е. еще до добавления событий можно было попробовать, как это работает. с колорером примерно такая же история была, первая версия вышла до появления поддержки раскраски в фар.
citRiks wrote: Tue 07 Apr, 2020 21:55Я могу доказать очень легко что можно обойтись и без них, и без прочих АПИ
не очень понятно, что вы имеете ввиду, можете рассказать, надеюсь, что не очередная демагогия.
citRiks wrote: Tue 07 Apr, 2020 21:55Время исполнения плагина надо знать чтобы определить тормознутость плагина.
это вот прямо очень востребованная и частая задача среди пользователей фара? и решить её никак другими методами нельзя?
citRiks wrote: Tue 07 Apr, 2020 21:55Или например, есть несколько плагинов для картинок, например дефолтный и другие.
Если дефолтный не смог открыть файл, то об этом получить эвент и запустить другой.
и как это согласуется с этим:
citRiks wrote: Tue 07 Apr, 2020 17:22Евент генерирует не сам плагин, а ФАР
? фар про картинки ничего не знает.
citRiks wrote: Tue 07 Apr, 2020 21:55Наверное можно сделать это обходными путями, но хочется идти прямыми путями.
собственно показ картинок в консоли это огромный хак и говорить здесь про прямой путь бессмысленно.
citRiks wrote: Tue 07 Apr, 2020 21:55.. и делать там все что угодно, но это не будет правильно.
почему? как минимум вы продемонстрируете реальную пользу.
citRiks wrote: Tue 07 Apr, 2020 21:55в то же время не понимаю почему нельзя сделать то же самое built-in.
окей, предположим я сделаю то, что вы просите в первом посте, но это не поможет вам разруливать ситуацию с картинками. понимаете в чем дело?
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Добавить в FAR API события (events) о плагинах и от них

Post by buniak_a_h »

zg wrote: Tue 07 Apr, 2020 20:53 9 сообщений и ни слова о том, зачем это нужно. какой реакции вы хотите?
Вообще-то, я писал.
Вообще единственная задача ивентов - это возможность повесить на них обработчик события. Не только в ФАР-е - вообще. Аналог WM_USER. В противном случае это не ивент, а просто рутина.
Всё остальное, согласен, набор слов.
Last edited by buniak_a_h on Wed 08 Apr, 2020 05:45, edited 1 time in total.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Добавить в FAR API события (events) о плагинах и от них

Post by zg »

buniak_a_h wrote: Wed 08 Apr, 2020 05:41Вообще-то, я писал.
я вижу одно ваше сообщение и не вижу там ни одного примера — зачем?
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Добавить в FAR API события (events) о плагинах и от них

Post by buniak_a_h »

zg wrote: Wed 08 Apr, 2020 08:38
buniak_a_h wrote: Wed 08 Apr, 2020 05:41Вообще-то, я писал.
я вижу одно ваше сообщение и не вижу там ни одного примера — зачем?
Примеров не будет. Я в этом же сообщении описал, как лично я обхожу отсутствие пользовательских событий. Хотя, наверно, если бы было пользовательское событие, я бы определил, например, OnFolderChanged в area=Shell с возможностью повесить свой динамический фильтр. Или
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

zg wrote: Tue 07 Apr, 2020 23:17 рекрасный вопрос. я так понимаю, вы не в курсе, что возможность обрабатывать события в диалогах появились почти за 5 лет до того, как их поддержка появилась в фаре. например, вся функциональность плагина dialogtools была доступна ещё в 2003 году, когда как нужное для этого апи добавили в фар в конце 2007-го. т.е. еще до добавления событий можно было попробовать, как это работает. с колорером примерно такая же история была, первая версия вышла до появления поддержки раскраски в фар.
Прекрасный ответ! (на этот раз я без сарказма)
В этом есть смысл - опробовать новую функциональность в плагине, и в случае успеха внести в комплект искаропки.
Возможно ли сделать то что я предлагаю в плагине?
Типа плагин-перехватчик? Я - за, может даже осилю C++ для этого.
Где можно увидеть описание API для "hook-plуgin (назовем его так)?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

zg wrote: Tue 07 Apr, 2020 23:17 Я могу доказать очень легко что можно обойтись и без них, и без прочих АПИ
zg wrote: Tue 07 Apr, 2020 23:17 не очень понятно, что вы имеете ввиду, можете рассказать, надеюсь, что не очередная демагогия.
Берем опен-сорс-код ФАРа, и творим что хотим, все по-взрослому, "сделай сам/не нянька", полная свобода самореализации.
Сойдет за формальное доказательство ненужности АПИ? На мой взгляд очень сойдет
Да, доказательство слишко формальное, но тут ни один я страдаю излишним формализмом :)
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

zg wrote: Tue 07 Apr, 2020 23:17 Время исполнения плагина надо знать чтобы определить тормознутость плагина.
zg wrote: Tue 07 Apr, 2020 23:17 это вот прямо очень востребованная и частая задача среди пользователей фара?
Думаю что кстати да! то что народ безмолвствует, ну так.. это отдельная тема и оффтопик почему он безмолвствует
и решить её никак другими методами нельзя?
например есть плагин браузинга ActiveDirectory (или еще какого браузинга)
он естественно делает всякие разные обращения по LDAP, по Plugin.Call.
И если он будет подторомаживать по неизвестной причине,
(ну кроме причины что обновил ФАР или сам плугин, хихи)
то это будет очень бесить пользователя который хочет пользоваться благами ФАРа и плагинов
Далее, тут три варианта, или сеть тормозит (1), или плагин (2), или сам юзер слишком нервный сегодня (3)
Журналирование времени реакции на запрос поможет:
1.) исключить проблему (3), если среднее время обращения к LDAP такое же как и вчера.
2.) если тестовый запрос в LDAP через другой инструмент по времени такой же как и был и быстрее плагиновского,
3.) .. то значит остается пункт "новая версия плагина безбожно тормозит"

Можно ли решить другими методами?
Конечно можно, взять исхдоники ФАРа, и там наваять все что надо.
Или свой плагин написать, или .. вариантов много.
Но лучше бы иметь в ФАРа ту несложную функциональность которую я предлагаю
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

zg wrote: Tue 07 Apr, 2020 23:17 Евент генерирует не сам плагин, а ФАР
zg wrote: Tue 07 Apr, 2020 23:17 ? фар про картинки ничего не знает.
ФАР знает (а технически сам это и запускает) что Plugin.Call(гуид, параметры) вернул код неудачи
(или где-то есть GetLastErrorMsg(..)),
и так как есть евент на любой Plugin.Call,
то неудачный Plugin.Call запишется как евент с параметром ErrorCode = <whatever>
И нам ничего более и не нужно чтобы знать что,например, картинка этим плагином не прочиталась,
значит можно запустить другой плагин, или тот же плагин с другим декодером
А так-то ФАР не знает и не должен знать, грубо говоря, что делает плагин,
его дело просто сообщать "Запущен вызов=Ок", "Вызов вернул result=Ok", "Вызов вернул result=ErrorCode"
Last edited by citRiks on Wed 08 Apr, 2020 15:04, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

zg wrote: Tue 07 Apr, 2020 23:17 Наверное можно сделать это обходными путями, но хочется идти прямыми путями.
zg wrote: Tue 07 Apr, 2020 23:17 собственно показ картинок в консоли это огромный хак и говорить здесь про прямой путь бессмысленно.
я выше достаточно внятно обьяснил что дело не в картинках, и не в Active Directory?
надо простейший АПИ для диагностики и взаимодействия с плагинами
(как бонус и может быть самих плагинов дргу с другом)

у меня например постояно крашится DeepCompare, хотя я его даже не запускаю,
я бы хотел посмотреть какие вызовы делает, если делает.
Еще стоит видеть время загрузки плагинов (евент "plugin loaded") - ну с этим все сталкиваются,
наставили плагины и ФАР теперь стартует меееееедленно, - нужен не очень замороченный способ вычислить кто виноват
Last edited by citRiks on Wed 08 Apr, 2020 15:11, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Добавить в FAR API события (events) о плагинах и от них

Post by HaRT »

citRiks wrote: Wed 08 Apr, 2020 15:10 я бы хотел посмотреть какие вызовы делает, если делает
Это решается без событий — созданием прокси-плагина, который пропускает через себя все вызовы между Фаром и исследуемым плагином в две стороны.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Добавить в FAR API события (events) о плагинах и от них

Post by John Doe »

Без реальных примеров всё написанное в этой теме не более чем демагогия.
Лучше когда пример представляет собой реальный прототип, из этого явно видно что за проблему пытается решить автор, и соответствующими ли средствами.

Я из первого сообщения например не понял ничего.
citRiks wrote: Tue 07 Apr, 2020 17:38 Обьясните мне, стоит ли мне (или кому-то другому) создавать подобные темы,
Абстрактные точно смысла нет.
https://t.me/FarManager — Telegram чат
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Добавить в FAR API события (events) о плагинах и от них

Post by zg »

HaRT, John Doe, вот вы же в теме ответили, и значит всё что выше — прочитали. и даже на что-то конкретное ответили. и вас вот это предложение не смутило:
citRiks wrote: Wed 08 Apr, 2020 14:53например есть плагин браузинга ActiveDirectory (или еще какого браузинга)
он естественно делает всякие разные обращения по LDAP, по Plugin.Call.
?
если так, то объясните мне пожалуйста, что имел ввиду автор, потому что я не понял. у меня конечно есть версия, объясняющая всё, но…
Last edited by zg on Wed 08 Apr, 2020 18:31, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

zg,
плагин для ActiveDirectry, туда заходишь, и видишь обьекты ActiveDirectory
что с этим не так? такой плагин есть на плагринге, на мой взгляд для примера сойдет, не?
извиняюсь, у меня тут на самом интерeсном месте всякое случилось, постараюсь дообьяснить
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

HaRT wrote: Wed 08 Apr, 2020 15:44
citRiks wrote: Wed 08 Apr, 2020 15:10 я бы хотел посмотреть какие вызовы делает, если делает
Это решается без событий — созданием прокси-плагина, который пропускает через себя все вызовы между Фаром и исследуемым плагином в две стороны.
Прикольно, и это действительно есть сейчас?
его можно сделать не влезая в код самого ФАРа?
таких прокси может быть несколько?

ну если действительно так, то таким путем и надо идти, наверное
мне все таки не очень нравится, но можно начать с этого
Last edited by citRiks on Wed 08 Apr, 2020 18:54, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Добавить в FAR API события (events) о плагинах и от них

Post by citRiks »

John Doe wrote: Wed 08 Apr, 2020 16:25 Абстрактные точно смысла нет.
Я привел три неабстрактных сценария:
1.) Пример с просмотрщиком картинок (выше подробнее)
2.) Пример с плагином для ActiveDirectory (выше подробнее)
3.) Пример с измерением времени загрузки плагинов - критично для старта ФАРа)
5.) Пример с измерением времени работы (calls) плагинов -) чтобы знать какой плагин шустрее,
или тот же плагин в разных конфигурациях, или новая версия того же плагина (будем спорить что это важно для всех?)

или это опять абстрактное все?
Locked

Return to “Разработка плагинов”