Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):При каждом вызове любого окна считываются все хэши на предмет класса и разрешения?
Даже если бы так было, ты бы вряд ли заметил замедление :) Разумеется, сделано не так. Хэши "независимые" считаются один раз для всех диалогов при запуске (как хорошо и эффективно было в первом варианте...). "Зависимые" - один раз для одного диалога при каждом открытии диалога (можно, конечно, и здесь чуть оптимизировать, но лень). Далее секции читаются и пишутся напрямую.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):"Зависимые" - один раз для одного диалога при каждом открытии диалога
А как ты отличаешь зависимые от независимых без перечёта всех хэшей?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher
Ээ, ну их как бы и не надо специально отличать. Они же уникальны для каждого диалога. И те и другие. Конечно, коллизии совсем нельзя исключить, но на таком количестве строк они очень маловероятны.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
Ты же пишешь, что "сделано не так". Я спрашиваю про момент открытия любого окна. Ты пишешь, что независимые считаются единожды. Но файл же пополняется. Как без "вечного" пересчёта можно выяснить, какие считать единожды, а какие при каждом вызове?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher
Единожды считается на основе данных диалога (строка из класса диалога, условий - кстати, забыл, надо еще обязательно учитывать условия visible). При запуске окна ("окно", чтобы отличать от диалога, "диалог" в данном случае - его описание во внутреннем массиве) - диалог мы определяем по классу окна плюс исходя из заданных условий, независимый хэш для него уже посчитан вначале. Для прошлой версии этого уже было достаточно, по хэшу сразу читаем/пишем секцию. Независимый хэш всегда одинаков для диалога при любом разрешении. Зависимый считается заново из тех же исходных данных (диалог-то мы уже нашли условиями) плюс строка разрешения экрана - хэш другой. При изменении разрешения строка разрешения поменяется, опять будет другой хэш. Всё просто :)

В общем, если остались вопросы - всё завтра.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
То, чем отличаются зависимые и независимые хэши, я не спрашиваю. С этим было понятно.
Я спрашиваю про то, что происходит в момент запуска окна. Хэш независимый записан в ini. Но в любом случае нужно опять выснить все данные для сравнения с ini? Или есть какая-то автопривязка ко всем окнам типа раширенного стиля, которая сразу выдаёт нужный хэш?
Loopback писал(а):При изменении разрешения строка разрешения поменяется, опять будет другой хэш.
И всё равно непонятно, зачем писать разрешение в хэш, если можно вдвое сэкономить на секциях? Или хэш меняется при смене разрешения независимо от склейки?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher
Слушай, я не знаю, как ещё объяснить. Я же сказал, в момент запуска окна считается ровно один хэш для того диалога, который открывается, с учётом разрешения. Считается на основе данных, которые ты задаешь командами AddDialog, AddCondition + строка разрешения. Hex-строка из подсчитанного хэша - это секция ini, я сразу ее читаю и записываю.

По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25. Секций больше, зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д.

Я же не говорю, что твоим способом принципиально нельзя сделать, но в данном случае это не даёт никакого выигрыша, плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
Как и из чего формируются хэши это по 2-му разу повторять не нужно.
Вот "сразу записываю" уже о чём-то говорит. Т.е. пишешь без сравнения.
Loopback писал(а):По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25.
Насчёт "вдвое" я, конечно, слукавил:
[cut="Твой вариант (32 строки)"][хэш]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[хэш_изм.]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[хэш2]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[хэш2_изм.]
Prop1=значение
Prop2=значение
Prop4=значение
Prop5=значение
[хэш3]
Prop1=значение
Prop2=значение
Prop4=значение
Prop5=значение
[хэш3_изм.]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[Common]
RestoreFromLastRes=1[/cut]
[cut="Мой вариант (28 строк):"][разрешение1]
хэш_Prop1=значение
хэш_Prop2=значение
хэш_Prop3=значение
хэш_Prop4=значение
хэш2_Prop1=значение
хэш2_Prop2=значение
хэш2_Prop3=значение
хэш2_Prop4=значение
хэш3_Prop1=значение
хэш3_Prop2=значение
хэш3_Prop3=значение
хэш3_Prop4=значение
[разрешение2]
хэш_Prop1=значение
хэш_Prop2=значение
хэш_Prop3=значение
хэш_Prop4=значение
хэш2_Prop1=значение
хэш2_Prop2=значение
хэш2_Prop3=значение
хэш2_Prop4=значение
хэш3_Prop1=значение
хэш3_Prop2=значение
хэш3_Prop3=значение
хэш3_Prop4=значение
[последнее разрешение]
разрешение=разрешение1[/cut]Разница несущественная, хотя с увеличением числа разрешений и окон она будет расти в пользу моего варианта.
Loopback писал(а):зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д.
В рамках запуска одного окна не кучу, а всего 4. И тебе, если я правильно понял, не придётся по новой считать хэши:
Loopback писал(а):Хэши "независимые" считаются один раз для всех диалогов при запуске
Уж явно 4 конкатенации по скорости значительно быстрее вычисления хэша.
Loopback писал(а):плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед?
Я сейчас больше интересуюсь не в целях перекомпиляции, а скорее в образовательных.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Уж явно 4 конкатенации по скорости значительно быстрее вычисления хэша.
Замерять не буду, но не факт, хэш простейший, криптостойкость же ему не нужна. Плюс есть как минимум два пути оптимизации, может даже и сделаю один (расчет зависимого на основе независимого), тогда будет точно быстрее. Но на самом деле реально не вижу необходимости, на строках в пару десятков символов это микросекунды, а у нас не какие-нибудь нагруженные базы данных, где это будет хоть как-то заметно.
интересуюсь не в целях перекомпиляции
Это понятно, про переделывать я и слушать не стану :) Посему предлагаю заканчивать, раз все равно ничего меняться не будет.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Это понятно
Было бы понятно, не спросил бы про велосипед. ;)

В общем, если захочешь оптимизировать, делай. Или выкладывай релиз с правкой смещения до левой границы и хелпа (если нужны примеры всех окон Тотала с комментами, пиши, выложу). Я бы ещё переименовал плагин под новые реалии. MoveWindow/MoveDialog — что-то в этом духе.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):. Я бы ещё переименовал плагин под новые реалии.
Про переименование уже думал, как минимум хорошо бы главную функцию переименовать (для совместимости можно псевдоним добавить). Если переименовать сам плагин, его старая версия останется лежать мусором, к сожалению, тоталовский инсталлятор плагинов не умеет удалять файлы.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
За мусором каждый сам должен следить. Это по сути то же самое, что устанавливать новый плагин, не удалив уже ненужный аналог.
Да и у первых версий тоже не было приставки Autorun_.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
rk2019
Сообщения: 16
Зарегистрирован: Чт фев 28, 2019 23:44
Откуда: Moskov

Сообщение rk2019 »

Loopback

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

Изображение

Я очень благодарен чудной версии от 4 марта, которая наконец вернула узкие диалоги в ТС 8.52а. Не сочтите за наглость, спросить как убрать нахрен выделенные красным пункты?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

rk2019
Сместить их на сотню-другую пикселей вправо /X-ключом такая уж проблема? В случае кнопки [+] достаточно просто занулить ширину: /W:0. Указания контролов я вам давал в примере под спойлером. Учитесь решать подобные вопросы самостоятельно, тем более что выглядят они как откровенное издевательство на диалогом — особенно в отношении весьма и весьма полезной кнопки [+].
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Loopback
Flasher
Насчёт новых реалий — я бы название не трогал. Намёк на изменения содержимого окон достаточно адкватен, а привязки к конкретному диалогу там и нет. В конце концом, и TWinKey, например, получил когда-то название по одной конкретной функции, далеко впоследствии не главной...

rk2019
Вы уже отняли у участников этой темы непомерно много времени на удовлетворение своих прихотей. Дальше — самостоятельно. Тем более при такой наглядной демонстрации непонимания и незнания современных возможностей TC и нежелания этому учиться. Про кнопку вам ответили, а скрытие опции для проверки и так предусмотрено штатно: прочитайте в справке описание ключа VerifyEnabled.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить