FarNet.Vessel: (View/Edit/Save/SELect) file history tools

Здесь можно обсудить ваш любимый плагин.
Post Reply
User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

FarNet.Vessel: (View/Edit/Save/SELect) file history tools

Post by NightRoman » Thu 16 Dec, 2010 07:21

Анонс

Модуль FarNet.Vessel ставит целью улучшить обычную историю файлов.

1) решить проблему затирания истории разными сессиями (Мантис 1169)
2) иметь быстрый фильтр в списке сразу по открытию, а не по CtrlAltF
3) иметь и продвинутый фильтр с сохраняемыми регулярными выражениями
4) всякие прочие мелочи, см. хелп списков.

Еще одна цель - улучшить порядок файлов в списке с точки зрения потенциальности
их последующего открытия. Недавно открытые файлы всегда сортируются по времени
последнего открытия, как обычно. 80-90% случаев и есть открытие таких файлов,
так что улучшить можно лишь небольшую часть открытий. Ну и пусть.

Искусственный интеллект, если это не сильно названо, применен бесхитростный.
Реализовано обучение умной истории. Оно основано на эмпирической модели с двумя
параметрами и оптимизации ее перебором вариантов. Если улучшить список не получается,
используется обычная история.

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

Чтобы тренировка истории имела практический смысл надо накопить некоторую
историю открытий сначала. Тренировку можно и сразу запускать, но она либо
ничего не даст (простой список), либо сделает не очень адекватный выбор.

P.S. Пара замечаний по исключениям

*) Файлы из %TEMP% и подпапок не включаются в историю даже если при открытии
не имели флага "не включать в историю".

*) После некоторых колебаний решено также не включать файлы открытые быстрым
просмотром (CtrlQ). Таким образом оставлена возможность массивного
предварительного просмотра кучи файлов без занесения их в историю.

Если кому-то нужно включение и этих файлов, можно добавить опцию.
Last edited by NightRoman on Tue 28 Dec, 2010 09:50, edited 3 times in total.

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

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by John Doe » Thu 16 Dec, 2010 10:42

NightRoman wrote: 2) иметь быстрый фильтр в списке сразу по открытию, а не по CtrlAltF
Замечу что это легко делается макросом типа этого:
А в остальном очень интересно.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by NightRoman » Thu 16 Dec, 2010 12:38

Замечу что это легко делается макросом типа этого
Да это понятно. И это мелочь, конечно. Но в модуле эта мелочь готова к использованию сразу.

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

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by John Doe » Thu 16 Dec, 2010 12:52

В фаре когда-то обещали аналогичные возможности фильтра...

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by NightRoman » Tue 28 Dec, 2010 16:15

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

Зачем это нужно? Предсказательную способность модели, думаю, можно еще улучшить. Она и так уже неплохая, но чисто из спортивного интереса хочется еще дальше немного шагнуть. Однако, есть вероятность что дальнейшие улучшения неявно будут затачиваться под мою личную историю. Хоть я использую ее с трех разных машин для анализа, все равно эти данные отражают мой личный способ работы с файлами. Может даже уже заточка алгоритма сделана с уклоном в пользу моих данных. Вот и хочется это проанализировать.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by NightRoman » Tue 28 Dec, 2010 16:27

Впрочем, конфиденциальности ради я напишу скрипт, который обфускацию имен сделает, так что это не будет проблемой. Щас будет.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by NightRoman » Tue 28 Dec, 2010 16:55

Вот PowerShell скрипт, запускать все равно откуда. Он создает файл VesselHistory-Encoded.log из вашего лога в той же папке, где и лог. Все имена заменены на их MD5 хеши.


User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by NightRoman » Tue 28 Dec, 2010 17:20

Слегка изменил скрипт предыдущего поста, чтобы захешировать отдельно имена папок от имен файлов. Возможно, в будущем папки тоже будут задействованы в алгоритме, если будет подмечена повышенная вероятность открытия из той же папки, что вроде вполне возможно, но пока это не анализировалось. (И убрал конвертацию в base64 формат тоже, незачем это).

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by NightRoman » Thu 30 Dec, 2010 13:08

1.0.6 - Новогодняя и, вобщем, релизная версия, все первоначальные задумки реализованы.

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

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

FarNet.Vessel: (View/Edit/Save/SELect) file history tools

Post by NightRoman » Thu 30 Dec, 2010 13:48

На страничке вики (https://github.com/nightroman/FarNet-Wiki/wiki/Vessel) поместил визуальную картинку результатов полной тренировки истории на одной машине. Это довольно типичная картина, хорошо видно, что предсказательная способность умной истории существенно зависит от двух факторов. Но видно, что и с "плохими" факторами умная история все равно работает в заметный плюс.

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

Довольно важное наблюдение: когда накоплено достаточное количество истории, подобная картинка с течением времени меняется плавно, то есть умная история как бы хорошо помнит определенные закономерности и обладает некоторой инерцией. Это впрочем не исключает возможные прыжки факторов в новые белые зоны, но происходит это сравнительно редко (и ничего плохого в этом нет).
Last edited by NightRoman on Fri 28 Nov, 2014 15:36, edited 1 time in total.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: FarNet.Vessel: (View/Edit/Save/SELect) file history tool

Post by NightRoman » Sun 09 Jan, 2011 12:54

Похоже, предсказательная способность умной истории может быть улучшена еще эдак на 35% с учетом дополнительного полезного фактора сортировки "относительное количество фактов открытия при данном периоде бездействия" (проще говоря, подмечается и учитывается периодичность открытия определенных файлов).

Версию выкладывать не тороплюсь, пока наблюдаю, как это на практике выглядит хоть пару-тройку дней. А пишу, скорей, чтоб напомнить о том, что в общих интересах мне не помешали бы для тестирования дополнительные файлы истории с машин добровольцев (если накоплена история не менее пары недель). Текст скрипта для коверканья имен для секретности тут.

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

FarNet.Vessel: (View/Edit/Save/SELect) file history tools

Post by John Doe » Fri 28 Nov, 2014 15:03

NightRoman wrote:...
See wiki for more details.
404
Page "Vessel" Not Found

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

FarNet.Vessel: (View/Edit/Save/SELect) file history tools

Post by NightRoman » Fri 28 Nov, 2014 15:34

John Doe, спасибо, исправил.

Post Reply

Return to “Обсуждение плагинов”