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

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

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

Post by citRiks »

Добавить в ФАР АПИ евенты генерируемые плагинами, и соответственно обработчики
нужно для координации работы плагинов, а также их разноцелевого мониторинга, журналирования, диагностики
реализация не выглядит сложной (поэтому и предлагаю)

* Реализация синхронная или асинхронная - как проще
* Евент генерирует не сам плагин, а ФАР например имея hook в функциях Plugin.Call/SyncCall/Command/Load итд.
* В обработчике будет приходить:
{guid = "<плагин гуид>", action = "<either Call/SyncCall/Command/Load>", params = <table of params>}
* (Опционально) возможна генерация самими плагинами или даже скриптом кастомных евентов для простой асинхронности и координации
Last edited by HaRT on Tue 07 Apr, 2020 20:44, edited 1 time in total.
Reason: Улучшен заголовок Темы
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

Добавить в FAR API евенты генерируемые плагинами

Post by citRiks »

Товарищи админы, модеры, разрабы
Обьясните мне, стоит ли мне (или кому-то другому) создавать подобные темы,
если вы и так все сами знаете, но не делаете по каким-то своим причинам?
Если вы ждете оценки популярности предложенного со стороны сообщества,
то ее не будет, так как итак активное сообщество ичезающе мало,
так и реакция (или отсутствие реакции) ФарТима на предложения не поощряет что-либо предлагать
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Добавить в FAR API евенты генерируемые плагинами

Post by Shmuel »

citRiks wrote: Tue 07 Apr, 2020 17:38 Товарищи админы, модеры, разрабы
Обьясните мне, стоит ли мне (или кому-то другому) создавать подобные темы,
если вы и так все сами знаете, но не делаете по каким-то своим причинам?
Если на предложение нет реакции разработчиков, значит предложение не показалось им стОящим.
А завязывать дискуссию на каждое предложение у них нет времени, ни желания.
Yegor
Posts: 1115
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 18 times
Been thanked: 26 times

Добавить в FAR API евенты генерируемые плагинами

Post by Yegor »

У меня ваш заголовок "евенты генерируемые плагинами" конфликтует с "Евент генерирует не сам плагин". Ивенты, которые генерирует не плагин, это не ивенты плагина.

Вам нужны события, типа BeforePluginCall, AfterPluginCall etc?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
buniak_a_h
Posts: 2851
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 154 times
Been thanked: 406 times
Contact:

Добавить в FAR API евенты генерируемые плагинами

Post by buniak_a_h »

Тут надо определить главное - зачем это надо. Поправьте меня, если я не прав, но я вижу единственный смысл в собственных ивентах - это дать возможность определить обработчик. А эта задача легко решается поиском far.GetMacroCopy, проверкой condition и вызовом соответствующего action. Да, перанально, проктологично. Но не тупик.
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

Добавить в FAR API евенты генерируемые плагинами

Post by citRiks »

Yegor wrote: Tue 07 Apr, 2020 19:10 У меня ваш заголовок "евенты генерируемые плагинами" конфликтует с "Евент генерирует не сам плагин". Ивенты, которые генерирует не плагин, это не ивенты плагина.
ок, скажу более корректно:
"евенты, гернерируемые в результате деятельности плагинов, как побочно, так и напрямую"
"побочные", они же обязательные, они же дефолтные, они же системные - в том смысле что плагин хочет или не хочет, а евент произойдет.
"прямые", они же кастомные, они же юзерские - создаются по желанию и инициативе самого плагина

Tак лучше?
Yegor wrote: Tue 07 Apr, 2020 19:10 Вам нужны события, типа BeforePluginCall, AfterPluginCall etc?
Да, оно самое.
Например, когда есть "BeforePluginCall" и нет "AfterPluginCall" - значит что-то висит, а мы точно знаем что.
В моей терминологии AfterPluginCall/AfterPluginCall это пример "прямыx" (=системные/дефолтные/обязательные) евентoв.
и еще мы точно знаем время исполнения, и в целом нет никаких белых пятен
Last edited by citRiks on Tue 07 Apr, 2020 19:47, edited 3 times in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

Добавить в FAR API евенты генерируемые плагинами

Post by citRiks »

Shmuel wrote: Tue 07 Apr, 2020 19:04 Если на предложение нет реакции разработчиков, значит предложение не показалось им стОящим.
А завязывать дискуссию на каждое предложение у них нет времени, ни желания.
Ели вы действительно хотите участие сообщетства, то какой-то ответ от разрабов нужен, как например:
* "нет смысла, чушь сказал" (код "Д")
* "идея хорошая, но слишком сложное" (код "С")
* "идея хорошая и простая для реализации, да, но все равно лично у меня нет никакого времени на это" (код "В")
для сохранения разрабов времени такие типовые ответы можно прикрутить к форумы как шаблоны наверное, или копипастить,
или так и написать "Код ответа Д."
Гнать народ на мантис и wishes менее практично, так туда народ не пойдет, и не потому что нечего предложить или сказать..
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

Добавить в FAR API евенты генерируемые плагинами

Post by citRiks »

buniak_a_h wrote: Tue 07 Apr, 2020 19:17 Тут надо определить главное - зачем это надо. Поправьте меня, если я не прав, но я вижу единственный смысл в собственных ивентах - это дать возможность определить обработчик. А эта задача легко решается поиском far.GetMacroCopy, проверкой condition и вызовом соответствующего action. Да, перанально, проктологично. Но не тупик.
ну для своих можно как угодно реализовывать,
более или мнее перанально в зависимости от собственных способностей
я и сказал, что самое главное иметь системные евенты, и если это будет,
то думаю в ту же инфраструктуру добавить и кастомные евенты как бонус,
и это будет правильнее чем своя кустарщина
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Shmuel
Posts: 6319
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 387 times

Добавить в FAR API евенты генерируемые плагинами

Post by Shmuel »

citRiks wrote: Tue 07 Apr, 2020 19:54 Ели вы действительно хотите участие сообщетства, то какой-то ответ от разрабов нужен
Мой подход таков, что стимуляция участия сообщества не является целью разработчика.
Отсутствие реакции разработчиков - это (обычно) форма отрицательного ответа. Никто на форуме не обязан реагировать на каждый чих.
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

Добавить в FAR API евенты генерируемые плагинами

Post by citRiks »

Shmuel wrote: Tue 07 Apr, 2020 20:04 Мой подход таков, что стимуляция участия сообщества не является целью разработчика.
Ну этот подход автоматически означает ниспадающую кривую скачиваний в месяц
Shmuel wrote: Tue 07 Apr, 2020 20:04 Отсутствие реакции разработчиков - это (обычно) форма отрицательного ответа. Никто на форуме не обязан реагировать на каждый чих.
Ок, статистика "чихов" хорошо видна в "идеях и предложениях",
и она безрадостных несколько штук за год.
Сложно ли дать несколько раз в год формальный ответ?
А польза от того значительна.
Если конечно распространение и использоование продукта можно считать пользой
Last edited by citRiks on Tue 07 Apr, 2020 20:28, edited 3 times in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

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

Post by zg »

9 сообщений и ни слова о том, зачем это нужно. какой реакции вы хотите?
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

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

Post by citRiks »

zg wrote: Tue 07 Apr, 2020 20:53 9 сообщений и ни слова о том, зачем это нужно. какой реакции вы хотите?
citRiks wrote: Tue 07 Apr, 2020 17:22 нужно для координации работы плагинов, а также их разноцелевого мониторинга, журналирования, диагностики
citRiks wrote: Tue 07 Apr, 2020 19:42 Например, когда есть "BeforePluginCall" и нет "AfterPluginCall",
это значит что что-то висит, а мы точно знаем (="тогда будем знать") что.
..
и еще мы точно знаем (="тогда будем знать") время исполнения (="начало и длительность"),
и в целом нет (="тогда не будет") никаких белых пятен
Last edited by citRiks on Tue 07 Apr, 2020 21:26, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

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

Post by zg »

citRiks wrote: Tue 07 Apr, 2020 17:22нужно для координации работы плагинов, а также их разноцелевого мониторинга, журналирования, диагностики
набор красивых слов.
citRiks wrote: Tue 07 Apr, 2020 19:42Например, когда есть "BeforePluginCall" и нет "AfterPluginCall",
это значит что что-то висит, а мы точно знаем (="тогда будем знать") что.
..
и еще мы точно знаем (="тогда будем знать") время исполнения (="начало и длительность"),
и в целом нет (="тогда не будет") никаких белых пятен
и зачем это всё?
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

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

Post by citRiks »

zg wrote: Tue 07 Apr, 2020 21:42и зачем это всё?
Ну извините, как смог так и обьяснил.
Значит наверное не суждено быть евентам от плагинов.

В свою очередь я тоже не понял что значит ваше "зачем это все",
читается выражение презрения к моей способности сформулировать,
но больше отношу это к тому что все было напрасным, жизнь прожита зря, итд
типа "все напрасно, короновирус всех убьет, а вы/мы тут время тратите"
PS
последняя попытка:
А зачем есть евенты для диалогов?
Я могу доказать очень легко что можно обойтись и без них, и без прочих АПИ

Время исполнения плагина надо знать чтобы определить тормознутость плагина.
Или например, есть несколько плагинов для картинок, например дефолтный и другие.
Если дефолтный не смог открыть файл, то об этом получить эвент и запустить другой.
Наверное можно сделать это обходными путями, но хочется идти прямыми путями.
И что значит "зачем"?
Конечно незачем, я же могу например залезть сюда:

.. и делать там все что угодно, но это не будет правильно.
в то же время не понимаю почему нельзя сделать то же самое built-in.
если что-то не нравится - не делайте, но ответьте хотя бы "не будет никогда, потому что не будет",
это тоже приемлимый ответ, без таких крайне философских ответных вопросов "зачем?"
Last edited by citRiks on Tue 07 Apr, 2020 22:12, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1443
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 439 times
Been thanked: 91 times

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

Post by citRiks »

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

на этом все, всем спасибо
Last edited by citRiks on Tue 07 Apr, 2020 22:22, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Locked

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