Страница 68 из 243

Добавлено: Вт ноя 05, 2013 16:43
Loopback
Flasher писал(а):Отсутствие интереса с чем связано? С изучением кода или добавлением переменных?
С отсутствием лишнего времени.

Впрочем, если вот этой информации хватит, можно будет добавить в sysinfo.
Flasher писал(а):Пухнет конфиг от этих лишних строк, скорость запуска и закрытия падает.
Тестировал? :)

Количество строк в скрипте, тем более с простыми операциями вроде присваивания, оказывает настолько малое влияние на скорость, что даже не знаю, о чем тут говорить.
Flasher писал(а):Всего-то надо обрамлять папку в знаки процента, а плагин будет проверять существование таких папок в корне и подставлять полный путь в случае истины.
Ты серьезно думаешь, что такой вариант будет быстрее? Не будет, поскольку дисковые операции медленны. Не говоря уже о том, что ты предлагаешь эти операции проделывать каждый раз при вызове макропеременной.

Еще негативный момент - возникает неоднозначность с именами переменных. Вот допустим, есть каталог UTILS. Я получаю значение переменной %UTILS%, при этом в ней находится путь к подкаталогу UTILS в папке плагина (уже нелогично, но да ладно). Что произойдет, если я определю в начале скрипта переменную %UTILS%? А это зависит от того, где будет производиться проверка, до или после поиска переменной в списке. До - нельзя, иначе проверка существования каталогов будет производиться для всех переменных. Если после - в этом случае каталог никогда не будет возвращен, поскольку будет найдена переменная. И что делать? Запрещать создавать переменные с именем подкаталога?

В общем я вижу больше проблем, чем пользы. Вернее, пользы я вообще не нахожу.

Если уж заботиться о скорости, то самым быстрым способом будет непосредственное использование %AUTORUN_DIR%\Utils в тексте, либо предварительное создание переменной:

Set UTILS %AUTORUN_DIR%\Utils

Добавлено: Вт ноя 05, 2013 17:54
Flasher
Loopback писал(а):С отсутствием лишнего времени.
Отсутствие интереса связано с отсутствием лишнего времени? Какая-то неувязочка.
Loopback писал(а):Впрочем, если вот этой информации хватит, можно будет добавить в sysinfo.
Сейчас меня по сути интересуют пока пару значений. Если оно получится с пом. данной функции, то ОК.
Loopback писал(а):Количество строк в скрипте, тем более с простыми операциями вроде присваивания, оказывает настолько малое влияние на скорость, что даже не знаю, о чем тут говорить.
Визуально по ощущениям с распуханием конфига скорость таки замедляется, особенно при подключении сторонних утилит.
Программно нет, не тестировал.
Loopback писал(а):Не будет, поскольку дисковые операции медленны.
Смотря какие диски. К тому же операции (уже внешние) в любом случае будут дисковые.
Loopback писал(а):Не говоря уже о том, что ты предлагаешь эти операции проделывать каждый раз при вызове макропеременной.
Нет, конечно, только вначале запуска, единожды, как и в случае с другими переменными. Поэтому негативный момент отпадает.

И ниже я предложил вариант получше. По нему что?

Добавлено: Вт ноя 05, 2013 23:02
Loopback
Flasher писал(а):Отсутствие интереса связано с отсутствием лишнего времени? Какая-то неувязочка.
Чего тут увязывать? Времени слишком мало, чтобы заниматься неинтересными вещами. А почему что-то одно интересно, а другое нет? Кто ж его знает.
Flasher писал(а):Если оно получится с пом. данной функции, то ОК.
Не, не получится.
Flasher писал(а):Визуально по ощущениям с распуханием конфига скорость таки замедляется, особенно при подключении сторонних утилит.
Запуск утилит - самая медленная операция. Затем идут прочие, которые работают с внешними файлами и ресурсами - Ini*, Load*, Reg*. Собственно, эти функции выполняются системой и практически не поддаются оптимизации на уровне кода плагина. Все остальное, в том числе строчные функции, выполняется примерно одинаково, но существенно быстрее перечисленных выше.
Flasher писал(а):Нет, конечно, только вначале запуска, единожды, как и в случае с другими переменными. Поэтому негативный момент отпадает.
Не отпадает, все равно остается неявное создание переменных, что я считаю идеологически некорректным. И главное, это не дает ни малейших преимуществ, кроме чуть более короткой записи нескольких путей.
Flasher писал(а):И ниже я предложил вариант получше. По нему что?
Я не понял, что там подразумевалось.

Добавлено: Ср ноя 06, 2013 00:14
Flasher
Loopback писал(а):Чего тут увязывать? Времени слишком мало, чтобы заниматься неинтересными вещами.
Игра слов какая-то. Мой вопрос о другом. Он про интерес и причины его отсутствия, а не про время, которое сегодня есть, завтра нет, оно не вяжется с интересом, оно вяжется с возможностями, не более.
Loopback писал(а):все равно остается неявное создание переменных, что я считаю идеологически некорректным.
По мне так нормально. Хитро и гибко.
Loopback писал(а):кроме чуть более короткой записи нескольких путей
А это уже не мало. Я вот всё пытаюсь тебя сподвигнуть на оптимизацию записей в конфиге. Ранее ещё функции обсуждали, если не забыл.
Loopback писал(а):Я не понял, что там подразумевалось.
|Plugins\Autorun_Sysinfo.dll = F:\Total Commander\Plugins\wdx\Autorun\Plugins\Autorun_Sysinfo.dll

Добавлено: Ср ноя 06, 2013 13:45
Loopback
Flasher писал(а):По мне так нормально. Хитро и гибко.
Ну да, любую идею можно довести до абсурда.
Flasher писал(а):А это уже не мало. Я вот всё пытаюсь тебя сподвигнуть на оптимизацию записей в конфиге.
Странное у тебя понимание оптимизации.
Flasher писал(а):|Plugins\Autorun_Sysinfo.dll = F:\Total Commander\Plugins\wdx\Autorun\Plugins\Autorun_Sysinfo.dll
Нет, это что-то вообще за гранью.

Короче, в основной код я это ни за что включать не стану. Но чтобы была возможность попробовать и убедится в полной несостоятельности предлагаемого механизма, вот реализация в виде плагина. Другой не будет.

Добавлено: Ср ноя 06, 2013 15:10
Flasher
Loopback писал(а):Ну да, любую идею можно довести до абсурда.
Почему абсурда? В системе же можно менять имена виртуальных папок с автосогласованием с реестром.
Loopback писал(а):Странное у тебя понимание оптимизации.
Да нормальное. Есть разные макроязыки, где такие вещи предусмотрены. Взять хотя бы пресеты от kIT Universal Presets.

Что делать с реализацией? Как это работает? Везде или только в параметрах? Какой символ взял?
И как убедиться в несостоятельности?

Добавлено: Ср ноя 06, 2013 18:32
Loopback
Flasher писал(а):Что делать с реализацией? Как это работает? Везде или только в параметрах?
Загружаешь плагин в начале скрипта, получаешь кучу переменных с именами дочерних подпапок в папке Autorun. Работает везде, ибо обычные переменные.
Да, еще - работает только с текущей версией autorun (в которой добавлен AUTORUN_PATH), приложена в архиве.
Flasher писал(а):И как убедиться в несостоятельности?
Каждый решает для себя. Я уже убедился :)

@All
Тестирую функцию получения значений из WMI. Тестовая версия плагина sysinfo, документация по функции тут.

Вообще, полноценной работы с WMI вряд ли получится добиться, но получать какие-нибудь значения можно.

Добавлено: Ср ноя 06, 2013 19:37
Flasher
Loopback писал(а):Загружаешь плагин в начале скрипта, получаешь кучу переменных с именами дочерних подпапок в папке Autorun.
Что-то не хочет пока работать. Там косой черты нет на конце?
Loopback писал(а):работает только с текущей версией autorun
А для любой нельзя сделать (пусть не в базовом дистрибутиве)?

С WMI какая команда? Если всё как в примере, то не работает.

Добавлено: Ср ноя 06, 2013 23:15
Loopback
Flasher писал(а):Что-то не хочет пока работать. Там косой черты нет на конце?
Просто подключается через LoadLibrary, больше никаких действий не требуется. Но только с приложенной версией основного плагина.
Flasher писал(а):А для любой нельзя сделать (пусть не в базовом дистрибутиве)?
Я вложил в архив обновленную версию основного плагина. Она будет следующей версией. С более старыми работать не сможет.
Flasher писал(а):С WMI какая команда? Если всё как в примере, то не работает.
У меня нормально отрабатывает. Например:

Код: Выделить всё

GetWMIValue VAR "Manufacturer" "SELECT * FROM Win32_Processor"
выдает "GenuineIntel", а

Код: Выделить всё

GetWMIValue VAR "Caption" "SELECT * FROM Win32_VideoController"
выдает "VirtualBox Graphics Adapter".

Добавлено: Чт ноя 07, 2013 00:43
Flasher
Loopback писал(а):больше никаких действий не требуется
Я про возвращаемое значение. Там в пути на конце обратный слеш есть. Уже убедился. Можно убрать?
Loopback писал(а):С более старыми работать не сможет.
А с новыми?
Loopback писал(а):Например
А, ну в примере-то сперва идёт переменная в знаках процента, и имя параметра не берётся в кавычки. Поэтому не сообразил сходу.
[s]Тогда почему такой код не отрабатывает?:[/s]

Код: Выделить всё

GetWMIValue Manufacturer "Manufacturer" "SELECT Manufacturer FROM Win32_Processor"
SetEnv Manufacturer %Manufacturer%
[s]В переменной среды пусто.[/s]

Добавлено: Чт ноя 07, 2013 08:00
sa
Flasher писал(а):почему такой код не отрабатывает?
Должно быть:
"SELECT * FROM Win32_Processor"

Добавлено: Чт ноя 07, 2013 09:00
Flasher
sa
Нет, не должно. Советую почитать, как составляются WQL-запросы.

Добавлено: Чт ноя 07, 2013 09:46
sa
Flasher
Хорошо! Скажу по-другому: такой код отрабатывает.

Добавлено: Чт ноя 07, 2013 09:50
Flasher
Тьфу ты, не в ту переменную смотрел. Работает, но плохо. То есть значение, то нет (после перезапуска).
Вот эти строки всегда пустую переменную дают:

Код: Выделить всё

GetWMIValue DataWidth "DataWidth" "SELECT DataWidth FROM Win32_Processor"
SetEnv DataWidth %DataWidth%
А если их поставить перед теми, то и те ничего не дадут.

И вообще было бы грамотно, чтобы список с одним именем класса запрашивался единожды, как коллекция, из которой уже можно было бы получать соответствующее значение.

Добавлено: Чт ноя 07, 2013 12:03
Loopback
Flasher писал(а):Я про возвращаемое значение. Там в пути на конце обратный слеш есть. Уже убедился. Можно убрать?
Можно.
Flasher писал(а):А с новыми?
Будет, конечно.
Flasher писал(а):А, ну в примере-то сперва идёт переменная в знаках процента, и имя параметра не берётся в кавычки. Поэтому не сообразил сходу.
Да, это мой косяк. Исправил.
sa писал(а):Хорошо! Скажу по-другому: такой код отрабатывает.
При использовании * выбираются все параметры, но в запросе можно перечислять только нужные, как у Flasher. Хотя сомневаюсь, что это дает ускорение выборки.
Flasher писал(а):Вот эти строки всегда пустую переменную дают:
Может эти значения просто не выдаются системой? Надо смотреть.
Flasher писал(а):А если их поставить перед теми, то и те ничего не дадут.
Вообще, не совсем корректно использовать одно и то же имя для внутренней переменной и переменной окружения. Может поэтому и неоднозначности возникают.
Flasher писал(а):И вообще было бы грамотно, чтобы список с одним именем класса запрашивался единожды, как коллекция, из которой уже можно было бы получать соответствующее значение.
Понятно, так было бы лучше. Но я пока не вижу удобного способа работать с коллекциями в Autorun. Потому и писал об ограничениях.