Re[2]: Универсальный визард (мастер)
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 08.01.20 15:33
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Вспомнил еще один пример где подобное уже реализовано: Azure build pipelines tasks.


Спасибо, гляну
Маньяк Робокряк колесит по городу
Re[4]: j2cli
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 08.01.20 15:34
Оценка:
Здравствуйте, Sheridan, Вы писали:

M>>Но это не снимает вопроса способе задания аргументов

S>Всмысле? я ж явно показал — json.
S>Или, если мимо автоматизирующей сборку тулзы, то в environment запихнуть можно. Примеры по ссылке смотрел?

Не, пока не углублялся
Маньяк Робокряк колесит по городу
Re[8]: j2cli
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 08.01.20 15:35
Оценка:
Здравствуйте, Sheridan, Вы писали:

M>>Можно ли там выбор из списка организовать? Множественный выбор из списка, и тп?

M>>Откат на пару шагов назад с выбором новых значений и переходом по другой ветке?
S>Ну так можно и dialog пользовать, ежели так нужен интерфейс
S>Image: adventure_dialog-radiolist.png

Ну, и?
Консолька тут явно лишняя, не?
Маньяк Робокряк колесит по городу
Re[9]: j2cli
От: Sheridan Россия  
Дата: 08.01.20 15:40
Оценка:
Здравствуйте, Marty, Вы писали:

M>Консолька тут явно лишняя, не?

Интерфейс явно лишний.

Дело в том, что с ростом сложности шаблона будет расти и сложность интерфейса, причём сложность интерфейса будет расти сильно быстрее. Например, понадобился тебе именованный список именованных списков и приехали, в интерфейсе забодаешься реализовывать.
При отсутствии же интерфейса, если описывать параметры в json, то сложность json файлика никогда не превысит сложность шаблона, тебе не надо будет думать о реализации интерфейса, т.е. не надо будет отвлекатьсь на второстепенные сущности.
Ну и, наконец, при таком подходе, при необходимости, эта генерация может быть совершенно легко автоматизируема.
Matrix has you...
Re[6]: j2cli
От: Somescout  
Дата: 08.01.20 16:12
Оценка: 2 (1)
Здравствуйте, Sinclair, Вы писали:

M>>Это как? Вот у меня есть опция, где-то в коде она проверяется, что равна одному из пяти-десяти фикс значений, и что, такой автокомплит бывает?

S>Конечно. ValidateSet.

M>>Или, например, сам шаблон задается в ходе выбора в визарде, и последующие возможные переменные зависят от того, какой шаблон выбран. Как вот это всё нормально в консольке организовать?

S>Да, такое тоже возможно. Parameter Sets.

S>https://adamtheautomator.com/the-powershell-parameter/


Есть ещё более гибкий вариант, который почему-то мало где описан: Register-ArgumentCompleter (начиная с 5 версии входит в powershell, до этого ставится через модуль TabExpansionPlusPlus), он позволяет просто зарегистрировать функцию, которая будет дополнять аргумент:
function Test($Name) {
  Write-Host $Name
}

Register-ArgumentCompleter -CommandName Test -ParameterName Name -ScriptBlock { (ls C:\).Name }


После этого для Test -Name <tab> будет выведены имена файлов в C:\. Причём в эту функцию передеются уже заданные параметры, и можно на их основе делать автодополнение.
ARI ARI ARI... Arrivederci!
Re[7]: j2cli
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 09.01.20 02:17
Оценка: :)
Здравствуйте, Somescout, Вы писали:


M>>>Или, например, сам шаблон задается в ходе выбора в визарде, и последующие возможные переменные зависят от того, какой шаблон выбран. Как вот это всё нормально в консольке организовать?

S>>Да, такое тоже возможно. Parameter Sets.

S>>https://adamtheautomator.com/the-powershell-parameter/


S>Есть ещё более гибкий вариант, который почему-то мало где описан: Register-ArgumentCompleter (начиная с 5 версии входит в powershell, до этого ставится через модуль TabExpansionPlusPlus), он позволяет просто зарегистрировать функцию, которая будет дополнять аргумент:

S>
S>function Test($Name) {
S>  Write-Host $Name
S>}

S>Register-ArgumentCompleter -CommandName Test -ParameterName Name -ScriptBlock { (ls C:\).Name }
S>


S>После этого для Test -Name <tab> будет выведены имена файлов в C:\. Причём в эту функцию передеются уже заданные параметры, и можно на их основе делать автодополнение.


PowerShell и его крутые фичи — это конечно круто, но, на мой взгляд, уже слишком круто. А гуя с ними так и не сварить.
Вот и получается, что проще запилить свой DSL с интерпретатором, чем использовать PowerShell или что-то подобное.
Свой интерпретатор хотя бы не сломается при каких-то обновлениях.
Маньяк Робокряк колесит по городу
Re[7]: j2cli
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.01.20 04:19
Оценка:
Здравствуйте, Marty, Вы писали:

M>Ну, в принципе, довольно интересно. Но всё же не понятно, чем консолька лучше гуя?

В основном — тем, что у неё есть кривая обучения. Начинаешь с простого, потом постепенно осваиваешь всё более новое.
При этом под рукой — хистори, и не нужно мучительно вспоминать, а что же такого я "натыкал" в прошлый раз, что получилось не совсем то, что нужно.
Можно легко строить свои "надстройки" — т.е. если тебе часто приходится вызывать утилиту с длинным списком "одинаковых" параметров, и отличиями в одном-двух местах, то в пару строк ты делаешь "свою" утилиту, которая спрашивает только пару параметров, а остальное подставляет.
Легко встраивать вызов этой утилитки в любой скриптинг. Т.е. ты не обязан интерактивно прощёлкивать шаги визарда.

M>Можно ли там выбор из списка организовать? Множественный выбор из списка, и тп?

Да. Да.
M>Откат на пару шагов назад с выбором новых значений и переходом по другой ветке?
Да.
Ну, не так идеально, как в хорошем гуи-визарде, но вполне неплохо. Тут главное вот что: сам по себе ГУИ ничем не особенен. Чтобы сделать хороший гуй, надо вложить усилия.
Без усилий получится плохой гуй — какой-то непонятный вопрос, какие-то неразличимые радиобаттоны. Непонятно, почему в прошлый раз я видел страничку с выбором Х, а в этот — не вижу (зависимость страниц от уже сделанного выбора).
Со скриптом можно пробовать не только верные значения, и получать более-менее внятное объяснение причин ошибки.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Универсальный визард (мастер)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 09.01.20 11:04
Оценка: +1
Здравствуйте, Marty, Вы писали:

M>В общем, на мой взгляд, есть такая проблема. Кто как её решает? Ну, если у вас есть аналогичная проблема?


Когда у меня возникает необходимость в обобщении типовых случаев, делаю командно-строковые скрипты. Долгое время ваял их на убогом и кривом недоязыке cmd.exe, но сейчас заставляю себя переползать на что-то более другое. Желания сделать гуевые конфигураторы не возникало никогда — слишком геморройно и малоэффективно.
Re[3]: Универсальный визард (мастер)
От: ArtDenis Россия  
Дата: 09.01.20 14:09
Оценка:
Здравствуйте, Marty, Вы писали:

M>Сейчас надо ручками (откуда-то) скопировать соответствующую реализацию, поправить пины, то-сё.

M>Хочется: первая страница — выбор семейства. Последующие страницы — зависят от выбора на первой, и запрашивают разные параметры.
M>В итоге — имеем .h и .cpp для включения в проект

Для таких целей я давно написал либу на плюсовых шаблонах (для остальной периферии, а не только для АЦП). Поддерживает несколько семейств, максимально простая, очень легко конфигурируется через шаблонные параметры. Непонятно для чего тут нужна кодогенерация и визарды.
PS: за счёт того, что всё конфигурируется на шаблонах, сконфигурированную периферию легко передавать в качестве параметров в другие либы, которые обслуживают более высокоуровневую периферию или девайсы. Всё очень удобно, не надо ничего копипастить/править или генерировать. Конфигурируешь прямо в коде — и всё.
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.