Скрипты: система их названий и описаний

Здесь обсуждается всё, что касается макросов.
IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Re: Макросы: Система их названий и описаний

Post by IgorZ » Mon 14 Jul, 2014 03:50

Latest post of the previous page:

John Doe wrote:IgorZ
Дело вот в чём: скрипт может определять 20 макросов. А может не определять ни одного.
Т.е. регистрировать скрипт целесообразнее независимо.
Но регистрируются в Far-е макросы, а не скрипты. В общем, неоднозначный вопрос, согласен. Идея моего предложения заключалась в том, чтобы ещё больше приблизить макросы к плагинам. Поскольку по возможностям они уже почти сравнялись.

User avatar
John Doe
Бюрократ
Posts: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: Макросы: Система их названий и описаний

Post by John Doe » Mon 14 Jul, 2014 08:26

IgorZ wrote:Но регистрируются в Far-е макросы, а не скрипты.
Регистрируются клавиатурные сочетания, вызывающие скрипт.
Регистрируются пункты меню плагинов, вызывающие скрипт.
Регистрируются обработчики событий.
Что из этого сейчас называть макросами?
IgorZ wrote:Идея моего предложения заключалась в том, чтобы ещё больше приблизить макросы к плагинам.
Как и моего.
Объединить всё многообразие связанных функций общим понятием скрипт.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Re: Макросы: Система их названий и описаний

Post by IgorZ » Fri 18 Jul, 2014 05:11

John Doe wrote:
IgorZ wrote:Но регистрируются в Far-е макросы, а не скрипты.
Регистрируются клавиатурные сочетания, вызывающие скрипт.
Регистрируются пункты меню плагинов, вызывающие скрипт.
Регистрируются обработчики событий.
Что из этого сейчас называть макросами?
Предлагаю так:
  • Скриптовый язык - язык пограммирования, программы на котором Far может исполнять, сам или с помощью соответствующих плагинов;
  • Макрос - некая программа на скриптовом языке, которую Far вызывает на непосредственное исполнение по нажатию заданной клавиатурной комбинации. Вероятно, сюда же можно отнести и пункты, вставляемые в меню плагинов - по общности вызова (прямые, явные действия пользователя);
  • Эвент(Событие) - некая программа на скриптовом языке, которую Far вызывает на непосредственное исполнение по наступлению заданного события Far-а;
  • Модуль - некая библиотека на скриптовом языке, к которой могут обращаться макросы и эвенты;
  • Скрипт - некий логически целостный пакет, могущий (но не обязанный) содержать макросы,эвенты и модули.
Хм. Почитал, что написал. Всё-таки чёткая формулировка сильно помогает. Действительно, обсуждаемое описание более всего подходит скрипту. С другой стороны, тогда потребуется разработка системы регистрации скриптов. Возьмётся ли Shmuel за такое? Объём работы, на первый взгляд, не маленький, если делать капитально, ведь тогда стоит в описание скрипта внести поля
  1. macros = { . . . };
  2. events = { . . . };
  3. modules = { . . . };
  4. plugmenuitems = { . . . };
и, возможно, ещё что-нибудь, к примеру, список всех файлов, входящих в скрипт. В общем, хотелось бы выслушать начальника транспортного цеха Shmuel-я, что он думает по этому поводу.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Re: Макросы: Система их названий и описаний

Post by Shmuel » Fri 18 Jul, 2014 09:30

IgorZ wrote:Действительно, обсуждаемое описание более всего подходит скрипту. С другой стороны, тогда потребуется разработка системы регистрации скриптов. Возьмётся ли Shmuel за такое? Объём работы, на первый взгляд, не маленький, если делать капитально, ведь тогда стоит в описание скрипта внести поля
  1. macros = { . . . };
  2. events = { . . . };
  3. modules = { . . . };
  4. plugmenuitems = { . . . };
и, возможно, ещё что-нибудь, к примеру, список всех файлов, входящих в скрипт. В общем, хотелось бы выслушать начальника транспортного цеха Shmuel-я, что он думает по этому поводу.
Думает, что это либо не нужно, либо преждевременно.
В то же время, из того, что вы предлагали выше, кое-что можно применить. Но прежде, чем усложнять систему, я бы предпочёл пока заниматься решением/улучшением некоторых моментов в существующей.

User avatar
John Doe
Бюрократ
Posts: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: Макросы: Система их названий и описаний

Post by John Doe » Fri 18 Jul, 2014 09:56

IgorZ wrote:[...]если делать капитально, ведь тогда стоит в описание скрипта внести поля
  1. macros = { . . . };
  2. events = { . . . };
  3. modules = { . . . };
  4. plugmenuitems = { . . . };
Это излишне.
Достаточно будет в начале файла сопоставить скрипту гуид, и остальное приложится, т.к. для macros/events/menuitems имя файла известно.
Разные файлы могут автоматически объединяться в пакет по общности гуида.
Модули регистрировать не нужно. Но можно (тоже автоматически, по общности гуида).
и, возможно, ещё что-нибудь, к примеру, список всех файлов, входящих в скрипт.
Что-то подобное может в перспективе пригодиться, например для деинсталляции. Лучше не список файлов, а функция, получится универсальнее.

User avatar
HaRT
Moderator
Posts: 8109
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

Re: Макросы: Система их названий и описаний

Post by HaRT » Fri 18 Jul, 2014 14:57

John Doe wrote:Что-то подобное может в перспективе пригодиться, например для деинсталляции. Лучше не список файлов, а функция, получится универсальнее.
Зачем изобретать велосипед?! Уже давным-давно есть возможность делать на базе Windows Installer полноценные де-/инсталляторы скриптов и даже плагинов — в формате MSI или завёрнутые в EXE.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: Скрипты (Макросы): Система их названий и описаний

Post by John Doe » Fri 18 Jul, 2014 15:06

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

User avatar
DrKnS
Posts: 4641
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Re: Макросы: Система их названий и описаний

Post by DrKnS » Fri 18 Jul, 2014 18:40

HaRT wrote:Зачем изобретать велосипед?! Уже давным-давно есть возможность делать на базе Windows Installer полноценные де-/инсталляторы скриптов и даже плагинов — в формате MSI или завёрнутые в EXE.
http://www.rsdn.ru/forum/flame.comp/5245011.1

User avatar
HaRT
Moderator
Posts: 8109
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

Re: Макросы: Система их названий и описаний

Post by HaRT » Fri 18 Jul, 2014 18:59

DrKnS wrote:
HaRT wrote:Зачем изобретать велосипед?! Уже давным-давно есть возможность делать на базе Windows Installer полноценные де-/инсталляторы скриптов и даже плагинов — в формате MSI или завёрнутые в EXE.
http://www.rsdn.ru/forum/flame.comp/5245011.1
Windows Installer — стандарт де-факто. Чтобы скрыть его недостатки, есть соответствующие инструменты. Для скриптов или плагинов в большинстве случаев хватит банального ZipInstaller.
Фар есть инструмент, а не нянька. © 2009 DrKnS

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Скрипты (Макросы): Система их названий и описаний

Post by AleXH » Fri 18 Jul, 2014 21:05

Или Inno Setup, он прост и удобен, написан людьми для людей, в то время как Windows Installer писан хищниками для чужих. Но сама уже идея использовать сторонний установщик, который в сотни раз тяжелее заключённого в нём скрипта, отдаёт безумием.

User avatar
John Doe
Бюрократ
Posts: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: Скрипты (Макросы): Система их названий и описаний

Post by John Doe » Fri 22 Aug, 2014 12:06

IgorZ wrote:Легко могу представить ситуацию, когда сложный скрипт состоит из нескольких файлов.
Представить можно, но функция отображения "соседних" макросов/событий, находящихся в одном файле, имеет смысл в любом случае:
— Не каждый макрос обязан принадлежать какому-то скрипту.
— И не каждый скрипт обязан регистрироваться (в первую очередь давайте подумаем что даёт нам эта регистрация).
IgorZ wrote: Ещё легче представить ситуацию, когда в одном файле собрана куча независимых мелких скриптов.
Опять же, надо отталкиваться от того, зачем мы собрали скрипты в один файл, и для чего нам их регистрировать отдельно (а не как единый скрипт).
IgorZ wrote:Кстати, возможна ли ситуация, когда один и тот же макрос/эвент относится к нескольким независимым скриптам? Поскольку тогда нужна возможность задания для одного макроса/эвента нескольких suid.
Полагаю, такой ситуации возникнуть не может никогда.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Re: Скрипты (Макросы): Система их названий и описаний

Post by IgorZ » Mon 25 Aug, 2014 08:20

John Doe wrote:
IgorZ wrote:Легко могу представить ситуацию, когда сложный скрипт состоит из нескольких файлов.
Представить можно, но функция отображения "соседних" макросов/событий, находящихся в одном файле, имеет смысл в любом случае:
— Не каждый макрос обязан принадлежать какому-то скрипту.
— И не каждый скрипт обязан регистрироваться (в первую очередь давайте подумаем что даёт нам эта регистрация).
Собственно, я и не возражал, просто заметил, что этот способ - не панацея, а суррогат. А что не обязан регистрироваться - это да. Но, надеюсь, выгода и удобство победят, и наличие suid станет нормой. Кстати, если макрос не принадлежит скрипту - это значит, что сам макрос и является скриптом, который состоит из единственного макроса - данного. Уф, ну и сформулировал.
John Doe wrote:
IgorZ wrote: Ещё легче представить ситуацию, когда в одном файле собрана куча независимых мелких скриптов.
Опять же, надо отталкиваться от того, зачем мы собрали скрипты в один файл, и для чего нам их регистрировать отдельно (а не как единый скрипт).
Например, куча мелких макросов, по сложности на уровне клавиатурных или чуть выше, не имеющих практически ничего общего и собранных вместе только для того, чтобы не плодить десятки файлов, каждый из пары строк.
John Doe wrote:
IgorZ wrote:Кстати, возможна ли ситуация, когда один и тот же макрос/эвент относится к нескольким независимым скриптам? Поскольку тогда нужна возможность задания для одного макроса/эвента нескольких suid.
Полагаю, такой ситуации возникнуть не может никогда.
Да, наверное, это я расфантазировался. Но есть схожая, вполне реальная ситуация - с модулями. Возможно, неплохо было бы ввести поле
  1. uses="список используемых модулей";
для указания внешних ссылок.

User avatar
John Doe
Бюрократ
Posts: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: Скрипты (Макросы): Система их названий и описаний

Post by John Doe » Mon 25 Aug, 2014 10:16

IgorZ wrote:Но, надеюсь, выгода и удобство победят, и наличие suid станет нормой.
В чём заключаются выгода и удобство?
IgorZ wrote:Например, куча мелких макросов, по сложности на уровне клавиатурных или чуть выше, не имеющих практически ничего общего и собранных вместе только для того, чтобы не плодить десятки файлов, каждый из пары строк.
Допустим. Как и для чего вы собираетесь их регистрировать?
IgorZ wrote:Возможно, неплохо было бы ввести поле
  1. uses="список используемых модулей";
для указания внешних ссылок.
Что с этим полем предполагается потом делать?

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Re: Скрипты (Макросы): Система их названий и описаний

Post by IgorZ » Tue 26 Aug, 2014 05:07

John Doe wrote:
IgorZ wrote:Но, надеюсь, выгода и удобство победят, и наличие suid станет нормой.
В чём заключаются выгода и удобство?
Однозначный и универсальный способ указать все компоненты, входящие в составной скрипт. Этого мало? Хочу напомнить, что uid тоже поначалу не казался нужной и очевидной вещью.
John Doe wrote:
IgorZ wrote:Например, куча мелких макросов, по сложности на уровне клавиатурных или чуть выше, не имеющих практически ничего общего и собранных вместе только для того, чтобы не плодить десятки файлов, каждый из пары строк.
Допустим. Как вы и для чего их регистрировать?
О регистрации в данном случае речь не шла. Я говорил о том, что в одном файле могут оказаться несколько независимых друг от друга макросов, и привёл пример.
John Doe wrote:
IgorZ wrote:Возможно, неплохо было бы ввести поле
  1. uses="список используемых модулей";
для указания внешних ссылок.
Что с этим полем предполагается потом делать?
Примеры возможных действий:
  • Автоматическая проверка при загрузке наличия необходимых для работы скрипта модулей.
  • Автоматизация сборки файлов, содержащих скрипт и все компоненты, от которых он зависит. К примеру, выбираешь в списке нужный макрос, сборщик проходится по ссылкам, составляет список всех файлов и экспортирует их в виде архива.
А вообще, как показывает практика, спустя некоторое время после введения новых возможностей число способов их использования может стать куда больше изначально предполагаемого.

User avatar
John Doe
Бюрократ
Posts: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: Скрипты (Макросы): Система их названий и описаний

Post by John Doe » Tue 26 Aug, 2014 10:57

IgorZ wrote:Однозначный и универсальный способ указать все компоненты, входящие в составной скрипт. Этого мало?
Раз вы подразумеваете множество применений, значит стоит попытаться их перечислить, ведь от этого зависит решение задачи.
IgorZ wrote:Хочу напомнить, что uid тоже поначалу не казался нужной и очевидной вещью.
Но пока что пользуются им ровно 2 человека )
IgorZ wrote:О регистрации в данном случае речь не шла. Я говорил о том, что в одном файле могут оказаться несколько независимых друг от друга макросов, и привёл пример.
Могут оказаться. Но даже если макросы технически независимы, их объединяют в одном файле по какому-то общему признаку, поэтому функция "показать все макросы из файла" вполне осмыслена.
IgorZ wrote:Возможно, неплохо было бы ввести поле
  1. uses="список используемых модулей";
для указания внешних ссылок.
Это чтобы совсем не читать и не думать?
Вот если бы была возможность не отходя от кассы скачать недостающие модули, тогда польза была бы действительно ощутима.
IgorZ wrote:[*]Автоматизация сборки файлов, содержащих скрипт и все компоненты, от которых он зависит. К примеру, выбираешь в списке нужный макрос, сборщик проходится по ссылкам, составляет список всех файлов и экспортирует их в виде архива.
Понятно. Задача весьма специфическая.
Чтобы было универсально, можно разрешить произвольные поля. Посмотрим, какие приживутся.
IgorZ wrote:А вообще, как показывает практика, спустя некоторое время после введения новых возможностей число способов их использования может стать куда больше изначально предполагаемого.
Согласен. Но уже сейчас есть какие-то идеи - высказывайтесь.
Я уже занимаюсь реализацией.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Re: Скрипты (Макросы): Система их названий и описаний

Post by IgorZ » Thu 28 Aug, 2014 05:32

John Doe wrote:
IgorZ wrote:Однозначный и универсальный способ указать все компоненты, входящие в составной скрипт. Этого мало?
Раз вы подразумеваете множество применений, значит стоит попытаться их перечислить, ведь от этого зависит решение задачи.
В данном случае я рассуждаю методом дедукции: однозначная привязка компонента к пакету открывает возможность манипулировать пакетом как единым целым. Применений для этого может быть почти бесконечно много. Лично для меня актуальнее всего возможность фильтрации по этому признаку для удобства просмотра и редактирования.
Хотя, можно пойти старым, проверенным путём и складывать все компоненты скрипта в отдельный подкаталог. Тоже вариант, кстати. И почему-то подумал я о нём только сейчас. Надо обмозговать. Впрочем, один недостаток (общий, кстати, для всех вариантов решений) виден сходу - никто не гарантирует обязательность того, что это будет сделано.
John Doe wrote:
IgorZ wrote:Хочу напомнить, что uid тоже поначалу не казался нужной и очевидной вещью.
Но пока что пользуются им ровно 2 человека )
Лиха беда начало. Думаю, остальных пока сдерживает отсутствие поддержки "искаропки".
John Doe wrote:
IgorZ wrote:О регистрации в данном случае речь не шла. Я говорил о том, что в одном файле могут оказаться несколько независимых друг от друга макросов, и привёл пример.
Могут оказаться. Но даже если макросы технически независимы, их объединяют в одном файле по какому-то общему признаку, поэтому функция "показать все макросы из файла" вполне осмыслена.
Я не отрицаю её полезность, я указал на её ограниченность.
John Doe wrote:
IgorZ wrote:Возможно, неплохо было бы ввести поле
  1. uses="список используемых модулей";
для указания внешних ссылок.
Это чтобы совсем не читать и не думать?
Вот если бы была возможность не отходя от кассы скачать недостающие модули, тогда польза была бы действительно ощутима.
Кто знает? Скрипты уже достигли уровня сложности плагинов, так что появление со временем аналога UpdateEx или Renewal меня не удивит. Возможно даже, сам когда-либо дойду до его написания. И наличие к тому времени (и активное использование) подобного поля было бы огромным подспорьем.
John Doe wrote:
IgorZ wrote:[*]Автоматизация сборки файлов, содержащих скрипт и все компоненты, от которых он зависит. К примеру, выбираешь в списке нужный макрос, сборщик проходится по ссылкам, составляет список всех файлов и экспортирует их в виде архива.
Понятно. Задача весьма специфическая.
Чтобы было универсально, можно разрешить произвольные поля. Посмотрим, какие приживутся.
Возможно, это наилучший вариант на первое время. А там, глядишь, самые востребованные перенесутся в разряд постоянных.
John Doe wrote:
IgorZ wrote:А вообще, как показывает практика, спустя некоторое время после введения новых возможностей число способов их использования может стать куда больше изначально предполагаемого.
Согласен. Но уже сейчас есть какие-то идеи - высказывайтесь.
Я уже занимаюсь реализацией.
Ждём-с. И кое-что планирую. Хотя мгновенной реакции на обновление не обещаю - у меня запарка продлится до середины сентября минимум.

User avatar
John Doe
Бюрократ
Posts: 11394
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Скрипты (Макросы): Система их названий и описаний

Post by John Doe » Thu 28 Aug, 2014 10:14

IgorZ wrote:однозначная привязка компонента к пакету открывает возможность манипулировать пакетом как единым целым.
А как быть с *.cfg, *.lng, и т.п.?
Читать ли прямо из них метаинфоромацию, или помещать её в основной скрипт.
И как быть с модулями, загружаемыми по require?
IgorZ wrote:Хотя, можно пойти старым, проверенным путём и складывать все компоненты скрипта в отдельный подкаталог. Тоже вариант, кстати. И почему-то подумал я о нём только сейчас. Надо обмозговать. Впрочем, один недостаток (общий, кстати, для всех вариантов решений) виден сходу - никто не гарантирует обязательность того, что это будет сделано.
Если мета-информация содержится в самом скрипте, то всё зависит от того, заполнил ли её автор. А станет ли автор это делать зависит от того, что это ему даст.
Наша цель - централизованное управление скриптами.
Поэтому будет общий их список, с общей информацией (описание, домашняя страница), откуда можно вызвать справку, конфигурацию и пр.
Но почти то же самое уже можно сделать с помощью MenuItem, не так ли?

Сверх того можно предложить следующее:
  • возможность интерактивно отключить скрипт (или отдельные составляющие)
  • общие средства для хранения и изменения параметров скрипта, чтобы каждому скрипту не приходилось реализовывать собственный велосипед (viewtopic.php?p=120397#p120397).
  • контроль минимальной версии фара
  • в перспективе полное управление пакетами: установка (из архива, или онлайн-репозитория), удаление, обновление.
  • ...что ещё?
IgorZ wrote:Лиха беда начало. Думаю, остальных пока сдерживает отсутствие поддержки "искаропки".
Это факт. И никаких гарантий, что "фкаропке" это когда-либо появится.

Update: продолжение тут: viewtopic.php?f=15&t=10418

Post Reply

Return to “Обсуждение макросов”