Far 3.0 & Guids

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Far 3.0 & Guids

Post by Smitis »

Latest post of the previous page:

techie wrote:Я ещё не настолько сектант, чтобы лазить на специальный сайт для того, чтобы сгенерить случайное число, уникальное в пределах всей экосистемы фара с вероятностью > 99.99999%
ФАР уже сто лет в обед умеет сам генерировать гуиды. И в этой теме это уже было.
  1. Macro {
  2.  
  3.     description="UUID";
  4.  
  5.     area="Shell Editor";
  6.  
  7.     key="CtrlAltShiftU";
  8.  
  9.     action=function()
  10.  
  11.         print(win.Uuid(win.Uuid()):upper())
  12.  
  13.     end;
  14.  
  15. }
Разум когда-нибудь победит.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Far 3.0 & Guids

Post by techie »

HaRT wrote: Чтобы из-за кривых гуидов не возникло конфликтов впоследствии.
2. Почему Far не чекает плагины на дублицирующиеся GUIDы, и не предупреждает/вываливается, если для него это так важно?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Far 3.0 & Guids

Post by citRiks »

Не буду спорить или доказывать, так как вопрос не выглядит слишком важным или принципиальным.
мне, лично, длинный непонятный номер хоть и нарушает чувство прекрасного, но можно и мирится с этим.
Прочитал все что нашел касательно нужности назначения ГУИДов, так и не понял нужности.
Возможно потому что кругозора не хватает, но тем не менее.

Мне кажется что бОльший смысл имеет автогенерация ГУИДов.
Например:
Для плагинов - берется имя плагина+версия, на них автоматом делается MD5, назначается ГУИДом.
Для диалогов (и меню) берется menu_props + menu_items на них автоматом делается MD5, назначается ГУИДом.
Для пущей красоты в базу для МД5 можно добавлять:
* имя (и путь?) файла (плагина, скрипта) вызвавшего Меню
* то же самое только уже ГУИД плагина/скрипта.

Таким образом ГУИД может начать иметь смысл, как "отпечаток пальцев" для верификации, а не просто какой-то номер с потолка..

PS
вышесказанное не означает что что я против ручного назначения ГУИДов (как сейчас),
это тоже имеет смысл в некоторых понятных и мне сценариях
Last edited by citRiks on Sun 06 Sep, 2020 21:39, edited 1 time in total.
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 3.0 & Guids

Post by buniak_a_h »

citRiks, Вы, видимо, не поняли смысл ГУИДа. Главное: он (а) уникален и (б) постоянен для некоего плагина. Т.е. не должен зависеть ни от версии, ни от пути к ДЛЛ (как отпечатки пальцев не зависят от возраста и адреса). Именно для идентификации плагина.
Технология генерации ГУИДа такова, что уникальность обеспечивается (во всяком случае, это декларируется авторами). В т.ч. некоторые параметры компа (MAC-адрес)., а также дата-время. Поэтому, якобы он практически уникален.
В то же время генерировать его, как Вы предлагаете, сделает его непостоянным, а значит, использовать для идентификации (как вы сравнили с отпечатками пальцев) станет невозможно.
----
Нет, автор плагина (ну, или сертифицированный распространитель) должен сам сгенерировать ГУИД и присвоить его плагину навсегда.
Сорри, Вы поняли (я не дочитал Ваше сообщение до конца), но сделали странные выводы
Last edited by buniak_a_h on Sun 06 Sep, 2020 21:59, edited 2 times in total.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Far 3.0 & Guids

Post by zg »

citRiks wrote: Sun 06 Sep, 2020 21:27Для плагинов - берется имя плагина+версия, на них автоматом делается MD5, назначается ГУИДом.
т.е. вы предлагаете вместо банального Plugin.SyncCall('9860393A-918D-450F-A3EA-84186F21B0A2',…) держать список уидов для всех возможных версий и битностей, при помощи far.FindPlugin каждый раз искать, а какая версия плагина есть, и уже только потом вызывать Plugin.SyncCall. а при выходе новой версии плагина обязательно обновлять макрос. я вас правильно понимаю?
Last edited by zg on Sun 06 Sep, 2020 22:14, edited 2 times in total.
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 3.0 & Guids

Post by buniak_a_h »

zg wrote: Sun 06 Sep, 2020 22:14 список уидов для всех возможных версий и битностей
да-да, а ещё (у меня, например, только 64-разрядных ФАР-ов штук 5 плюс "переносимая", которая может у юзера быть запущена откуда угодно.)
Last edited by buniak_a_h on Sun 06 Sep, 2020 22:47, 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 3.0 & Guids

Post by citRiks »

zg wrote: Sun 06 Sep, 2020 22:14
citRiks wrote: Sun 06 Sep, 2020 21:27Для плагинов - берется имя плагина+версия, на них автоматом делается MD5, назначается ГУИДом.
т.е. вы предлагаете вместо банального Plugin.SyncCall('9860393A-918D-450F-A3EA-84186F21B0A2',…) держать список уидов для всех возможных версий и битностей, при помощи far.FindPlugin каждый раз искать, а какая версия плагина есть, и уже только потом вызывать Plugin.SyncCall. а при выходе новой версии плагина обязательно обновлять макрос. я вас правильно понимаю?
да, это хороший обьясняющий пример
Post Reply

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