Ru-Board.club
← Вернуться в раздел «Тестирование»

» Far Manager - скрипты и плагины

Автор: Angel_Ka
Дата сообщения: 28.05.2016 23:02
Alexyz21

Цитата:
Но согласитесь, сравнивать эффективность надо бы в одинаковых условиях

Соглашусь. Надо бы.

Цитата:
иначе смысл в таком сравнении?

Органолептический способ, т.е. способ "на глаз", тоже имеет право на существование. Когда плюс-минус тысяча не существенна. Время работы консольных вариантов Dir я, между прочим, чтобы не тормозить, измерял простым секундомером. И на качественном уровне это вполне приемлемо.

Цитата:
Ведь изначально понятно, что они разные!

Вот и учтём это — то, что они разные. Но не определяюще разные, а просто разные и всё. Не существенно разные. Мы по Цельсию, а они по Фаренгейту. Мы в десятичной, а они в двенадцатеричной. И пусть так и будет. Это нормально. Бог создал мир так, что в нём нет ни чего в абсолютном соответствии. И поэтому тоже он живой.
Автор: Alexyz21
Дата сообщения: 28.05.2016 23:09

Цитата:
Не существенно разные.

Полученные файлы списки по количеству строк сравнивали - одинаковые? Судя по результатам - нет.
Автор: Angel_Ka
Дата сообщения: 28.05.2016 23:15
Alexyz21

Цитата:
Полученные файлы списки по количеству строк сравнивали - одинаковые?

Одинаковые. Обоими макросами — 3.683.855 файлов. Командой Dir — 3.677.408.

Добавлено:
Alexyz21
А хотите более интересную задачу? Имеем две базы. Обе производные от третьей и поэтому почти одинаковые. Но нам бы надо посмотреть в чём их отличие и постараться сблизить содержание. А я не знаю надёжного способа их сравнения. Базы большие. Но можно сделать бранч-списки. Однако из-за того, что одинаковые файлы в них расположены в разных местах, программы сравнения (в т.ч. плагин VisualCompare) их не идентифицируют. Вот и получается, что вроде бы нужен был бы макрос, решающий противоположную нахождению дублей задачу. Задачу нахождения не совпадающих файлов, разных. Т.е. полные и частичные (и от начала, и от конца) дубли нужно бы отбросить и выпятить не подходящие под эти критерии файлы. Или есть какой-то иной способ?
Автор: Alexyz21
Дата сообщения: 29.05.2016 07:25

Цитата:
Одинаковые

Значит ошибки в созданных симлинках, возможно петли из которых FarRecursiveSearch вырывается лишь благодаря внутреннему "предохранителю", имея атрибут directory, они в отчёт не попадают, но время пожирают - больше такой разнице взяться не откуда. Проверить легко - убираем флаг F.FRS_SCANSYMLINK и сравниваем результат.


Цитата:
А хотите более интересную задачу?

EFDFN отвечает этой задаче.
Автор: Angel_Ka
Дата сообщения: 29.05.2016 10:28
Alexyz21

Цитата:
убираем флаг F.FRS_SCANSYMLINK и сравниваем результат

Из строки ,F.FRS_RETUPDIR+F.FRS_RECUR+F.FRS_SCANSYMLINK,NULL) — она у меня 144-я, изъял выделенный фрагмент, и перемерял со следующим результатом:

104.199,453 101.379,504 102.253,784 102.104,539 102.835,386

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

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


Цитата:
EFDFN отвечает этой задаче.

А вот этого я не понял. Хотя бы потому, что нельзя же ведь одновременно задать условия поиска и по всей длине имён, и по совпадению на определённую величину от их начала, и вместе с тем от конца имён. А такие то комплексные находки, будучи они возможны, и нужно бы в данном случае исключить, и оставить в репорте только не совпадающие по этим позициям. Ведь лишь тогда они и будут только в одной из баз — либо той, либо другой.

Сам я пытался делать следующим образом. Одну базу считывал в бранч-лист с диска Х:, а другую — с Y: (так по результатам обработки сразу видно с какой базы какой файл), и листы объединял в один. А потом пытался с ним работать. Но у меня пока не получилось того, что я хотел бы. И, кстати, м.б. и в макросе сделаете не создание каждый раз нового FList.txt, а его дополнение?
Автор: shmuz2
Дата сообщения: 29.05.2016 11:14
Angel_Ka

Цитата:
м.б. и в макросе сделаете не создание каждый раз нового FList.txt, а его дополнение?

Для этого достаточно в той строчке, где io.open. заменить аргумент "w" на "a" (это в моём макросе; возможно и в других так же).
Автор: Angel_Ka
Дата сообщения: 29.05.2016 11:18
shmuz2

Цитата:
достаточно в той строчке, где io.open. заменить аргумент "w" на "a" (это в моём макросе; возможно и в других так же)

Благодарю Вас за оперативную и лаконичную подсказку!

Alexyz21

Приведу пример.

Содержание базы Икс:

Код: X:\arProf\tstSort\ПРОБА2.3\72011 МУК 4.3.2756-10 МЕТОДУКАЗАНИЯ 2010.pdf
X:\arProf\tstSort\ПРОБА2.3\72014 ... 2011.doc
X:\arProf\tstSort\ПРОБА2.3\72014 ... 2011.pdf
X:\arProf\tstSort\ПРОБА2.3\72024 МУ 3911-85 «Методуказания по проведению измерений 2001».pdf
X:\arProf\tstSort\ПРОБА2.3\72029 магнитных полей промчастоты (50 Гц) ... .pdf
Автор: shmuz2
Дата сообщения: 31.05.2016 12:34

Цитата:
Содеражние бызы

Автор: Angel_Ka
Дата сообщения: 31.05.2016 13:23
shmuz2
Спасибо! Исправил.
Автор: shmuz2
Дата сообщения: 31.05.2016 13:31

Цитата:
Исправил.

Исправили одну ошибку из двух.
Автор: VictorVG4
Дата сообщения: 31.05.2016 13:31
Angel_Ka

Содержание бызы - недолёт.
Автор: Angel_Ka
Дата сообщения: 31.05.2016 14:50
shmuz2
VictorVG4
Спасибо! Теперь уже, кажется, исправил.

Быль: в одном издании, вышедшем на миллион экземпляров, после проверки пятью профессиональными корректорами всё таки напечатано "фельдмаршал Михаил Иванович Кутузов".
Автор: VictorVG4
Дата сообщения: 31.05.2016 15:30
Angel_Ka

Бывает, в десятку.
Автор: sToLp
Дата сообщения: 26.06.2016 08:38
Alexyz21

Цитата:
sToLp
можно попробовать так:
Изменяем в Panel.CustomSortByName.lua:251

Неожиданное и привлекательное предложение — регекс из 149 знаков вместо 429.

Однако сортировка не соответствует желаемой:
(
({
)
){
@
[
[(
[({
[)
[){
[{
]
](
]({
])
]){
]{
_
{
~
1
f
F 1

Если, конечно, я правильно заменил три строки

Код: if xRegexp then
sRegexp,sRgxRet = regex.match(sRegexp,"^(?:\\-\\-[^\\n]+?\\n)?(.*?)(?:\\{!:(.*?)\\}|)$")
for i=1,#sRgxTbl do sRgxTbl[i]=nil end
Автор: Alexyz21
Дата сообщения: 27.06.2016 10:49
sToLp
строку

Код: if sRegexp:match("%[%[..-%]%]") then sRegexp = regex.gsub(sRegexp,"\\[\\[(.+?)\\]\\]",function(s) return regex.gsub(s,"[^\\|]","\\%1") end) end
Автор: sToLp
Дата сообщения: 27.06.2016 23:15
[more] Alexyz21

На текущий момент вставил в макрос Panel.CustomSortByName.lua строку по Вашей последней инструкции. С составленным мною регексом (в оставленной без изменений его редакции) обновлённый макрос работает вроде бы также как и без этой строки.

Меня смущает, что в применяемом регексе вроде бы нет конструкций, обрамлённых двойными квадратными скобками [[]]:

Код: /^(\@|\_|\~|\F\L)|(\s|\w)|([\[\]](?:\s|\w))|([\(\)](?:\s|\w))|([\{\}](?:\s|\w))|(\[\((?:\s|\w)|\]\((?:\s|\w)|\[\)(?:\s|\w)|\]\)(?:\s|\w)|\[\{(?:\s|\w)|\]\{(?:\s|\w)|\[\}(?:\s|\w)|\]\}(?:\s|\w))|(\(\{(?:\s|\w)|\)\{(?:\s|\w)|\(\}(?:\s|\w)|\)\}(?:\s|\w))|(\[\(\{(?:\s|\w)|\]\(\{(?:\s|\w)|\]\)\{(?:\s|\w)|\[\(\}(?:\s|\w)|\[\)\}(?:\s|\w)|\]\(\}(?:\s|\w)|\[\)\{(?:\s|\w)|\]\)\}(?:\s|\w))|(?:[сортировкаМакросов])/i{!:$1$2$3$4$5$6$7$8}
Автор: sToLp
Дата сообщения: 28.06.2016 16:11
[more] Alexyz21

Уточнил регекс, в т.ч. убрал лишние шифты:
/^(\@|\_|\~|(?:\s|\w)|\F\L)|([\[\]](?:\s|\w))|([\(\)](?:\s|\w))|(\{(?:\s|\w))|(\[\((?:\s|\w)|\]\((?:\s|\w)|\[\)(?:\s|\w)|\]\)(?:\s|\w))|(\[\{(?:\s|\w)|\]\{(?:\s|\w))|(\(\{(?:\s|\w)|\)\{(?:\s|\w))|(\[\(\{|\]\(\{|\]\)\{|\[\)\{) /i{!:$1$2$3$4$5$6$7}

http://s009.radikal.ru/i307/1606/3a/cba5ecbda75d.png

/^ — начало регекса;

(\@|\_|\~|(?:\s|\w)|\F\L) — $1: заданная последовательность начальных знаков имён файлов;

([\[\]](?:\s|\w)) — $2: Ctrl, RCtrl;

([\(\)](?:\s|\w)) — $3: Alt, RAlt;

(\{(?:\s|\w)) — $4: Shift;

(\[\((?:\s|\w)|\]\((?:\s|\w)|\[\)(?:\s|\w)|\]\)(?:\s|\w)) — $5: CtrlAlt, RCtrlAlt, CtrlRAlt, RCtrlRAlt;

(\[\{(?:\s|\w)|\]\{(?:\s|\w)) — $6: CtrlShift, RCtrlShift;

(\(\{(?:\s|\w)|\)\{(?:\s|\w)) — $7: AltShift, RAltShift;

(\[\(\{|\]\(\{|\]\)\{|\[\)\{) — $8: CtrlAltShift, RCtrlAltShift, CtrlRAltShift, RCtrlRAltShift;

(?:[сортировкаМакросов])/i{!:$1$2$3$4$5$6$7} — окончание регекса.

Будучи применённым в макросе Panel.CustomSortByName.lua, регекс обеспечивает сортировку файлов с макросами согласно начальным знакам в их именах в следующем порядке:

@
_
~
1
f
F 1
[
]
(
)
{
[(
[)
](
])
[{
]{
({
){
[({
[){
]({
]){ [/more]
Автор: VictorVG4
Дата сообщения: 16.07.2016 13:44
Возникла тут у меня задача - подчистить WIKI мусор с TDF из Release Notes LibreOffice - при сохранении версии для печати WIKI вставляет в тэг img блок srcset="..." для каждой картинки, а он мешает ибо встречается десятки раз (например сами гляньте что сохранится), и внутри тэга начинка разная. Пришлось через LuaFAR Search убирать регуляркой / (?:srcset=").+(?:") / . Может ещё кому пригодится.
Автор: shmuz2
Дата сообщения: 16.07.2016 21:08
VictorVG4
Вместо .+ правильнее будет .+? (то-есть применить нежадное сопоставление вместо жадного).
Если в одной строке только один srcset, то разницы не будет.
Автор: VictorVG4
Дата сообщения: 17.07.2016 00:14
shmuz2

В общем да, просто в тот момент меня эти srcset здорово разозлили - их там аж 19 штук сидело. И если каждый выделять руками.
Автор: sToLp
Дата сообщения: 30.07.2016 09:32
Jon_Dow

Касательно усовершенствованной версии CtrlAlt.lua.

Испытал данный набор макросов на нескольких машинах с системой Win10x64entRu из-под одного и того же портабельного Far 4745x64, запускаемого с флеш-диска.

Для того, чтобы макросы, назначенные на разовые нажатия CtrlAlt, RCtrlRAlt, LRCtrl и LRAlt, срабатывали, надо было приноровиться одномоментно отпускать обе клавиши. А это не во всех случаях получалось. Причём, на одних машинах правильно жать и отпускать клавиши получалось почти всегда, а на других — через раз и реже. А это для пользователя не очень-то удобно.

Таким образом макросы срабатывали почти во всех областях. Кроме редактора. В редакторе же на всех машинах "поймать момент" удавалось и вовсе один раз из нескольких нажатий, а иногда и из нескольких десятков нажатий. То есть в редакторе Фара практически не получалось нормально запустить эти макросы ни на одной из машин.

Проявился также странный нюанс с использованием меню "Исполнить макрос".
При том, что область Menu из поля area каждого из испытываемых макросов мною была исключена: area="Other Shell Viewer Editor Dialog Search Disks MainMenu Help Info QView Tree FindFolder UserMenu ShellAutoCompletion DialogAutoCompletion"; а в поле key выставлялся только один ключ.
Дело в следующем. Если поверх меню "Исполнить макрос", вызванного из какой-либо области (для примера — из диалога) нажать тот же шорткат ещё раз, то появляется сообщение, соответствующее области, из которой изначально вызывались макросы (в данном случае — из диалога). И после гашения этого сообщения иногда вновь появлялось прежнее меню "Исполнить макрос".


Цитата:
(с двойным нажатием скомбинируйте самостоятельно, я не проверял)


[more=Попытался]
Код: local maxDelay = 500

local F = far.Flags
local mods = {}
for i,v in ipairs{"Ctrl","Alt"} do
local r = far.NameToInputRecord(v)
mods[r.VirtualKeyCode] = true
end
local mask = bor(F.LEFT_ALT_PRESSED,F.RIGHT_ALT_PRESSED,F.LEFT_CTRL_PRESSED,F.RIGHT_CTRL_PRESSED,F.SHIFT_PRESSED)

local keys = {
[bor(F.LEFT_CTRL_PRESSED,F.LEFT_ALT_PRESSED)] ="CtrlAlt",
[bor(F.LEFT_CTRL_PRESSED,F.RIGHT_ALT_PRESSED)] ="CtrlRAlt",
[bor(F.RIGHT_CTRL_PRESSED,F.LEFT_ALT_PRESSED)] ="RCtrlAlt",
[bor(F.RIGHT_CTRL_PRESSED,F.RIGHT_ALT_PRESSED)]="RCtrlRAlt",
[bor(F.LEFT_ALT_PRESSED,F.RIGHT_ALT_PRESSED)] ="LRAlt",
[bor(F.LEFT_CTRL_PRESSED,F.RIGHT_CTRL_PRESSED)]="LRCtrl",
}

local wait
Event{
group="ConsoleInput";
description="CtrlAlt";
id="158AEACD-3677-4D2E-ABEA-C73DE378A745";
action=function(r)
if not r.EventType==F.KEY_EVENT then
return
elseif mods[r.VirtualKeyCode] then
if r.KeyDown then
wait = band(mask,r.ControlKeyState)
elseif wait then
mf.postmacro(mf.eval,keys[wait],2)
wait = false
end
else
wait = false
end
end;
}

local t = 0
Macro { description="CtrlAlt тест на двойное нажатие (JD)";
-- area="Common";
-- Menu - временно отключена
area="Other Shell Viewer Editor Dialog Search Disks MainMenu Help Info QView Tree FindFolder UserMenu ShellAutoCompletion DialogAutoCompletion";
key="CtrlAlt"; -- key="CtrlAlt LRCtrl LRAlt";
id="99CA87C8-005B-431B-B967-3AC07CC9B16C";
condition=function()
local t1 = Far.UpTime
local delay = t1-t
t = t1
return delay<maxDelay
end;
action=function()
far.Message"tada!" -- far.Message(mf.akey(1,1),Area.Current)
end;
}

local t = 0
Macro { description="LRCtrl тест на двойное нажатие (JD)";
-- area="Common";
-- Menu - временно отключена
area="Other Shell Viewer Editor Dialog Search Disks MainMenu Help Info QView Tree FindFolder UserMenu ShellAutoCompletion DialogAutoCompletion";
key="LRCtrl"; -- key="CtrlAlt LRCtrl LRAlt";
id="99CA87C8-005B-431B-B967-3AC07CC9B16C";
condition=function()
local t1 = Far.UpTime
local delay = t1-t
t = t1
return delay<maxDelay
end;
action=function()
far.Message"tada!" -- far.Message(mf.akey(1,1),Area.Current)
end;
}

local t = 0
Macro { description="LRAlt тест на двойное нажатие (JD)";
-- area="Common";
-- Menu - временно отключена
area="Other Shell Viewer Editor Dialog Search Disks MainMenu Help Info QView Tree FindFolder UserMenu ShellAutoCompletion DialogAutoCompletion";
key="LRAlt"; -- key="CtrlAlt LRCtrl LRAlt";
id="99CA87C8-005B-431B-B967-3AC07CC9B16C";
condition=function()
local t1 = Far.UpTime
local delay = t1-t
t = t1
return delay<maxDelay
end;
action=function()
far.Message"tada!" -- far.Message(mf.akey(1,1),Area.Current)
end;
}

--[=[
John Doe Thu 28 Jul 2016 23:09 http://forum.farmanager.com/viewtopic.php?p=139646#p139646
Усовершенствованная версия.
Теперь различаются все комбинации правых и левых Ctrl/Alt, включая LCtrl+RCtrl (LRCtrl) и LAlt+RAlt (RAlt)

P.S.
Аналогичным образом и Shift можно добавить, но.. полноценной реализации в фаре данный скрипт не заменит.
Например по waitkey получить всё ещё ничего невозможно..
]=]--
Автор: Smitis
Дата сообщения: 30.07.2016 21:56
sToLp

Цитата:
Причём почти все их (кроме CtrlAltF8) можно отключить.

Убить процесс igfxHK.exe. Заодно можно заменить igfxHK.exe каким-нибудь исполняемым файлом-пустышкой (который ничего не делает, после запуска сразу заканчивает работу).
Автор: VictorVG4
Дата сообщения: 30.07.2016 23:51
sToLp

Например используя NSIS 2.x/3.x исходник сохранить как "igfxHK.nsi" (имя любое, расширение .nsi или бинарник не соберётся):

OutFile "igfxHK.exe"
InstallDir "$TEMP"
Function .onInit
HideWindow
FunctionEnd
ShowInstDetails hide
Section
SetAutoClose true
SectionEnd


мелькнёт окошко и испарится. Выйдет правда немного великовато - ~40 Кб, но на скорую руку терпимо.
Автор: sToLp
Дата сообщения: 31.07.2016 17:43
Jon_Dow

В Win10x64entRu Far 4747x64 макросы из состава усовершенствованной версии CtrlAlt.lua, назначенные на CtrlAlt, CtrlRAlt, RCtrlAlt, RCtrlRAlt, срабатывают вполне нормально, в т.ч. в редакторе. А назначенные на LRCtrl и LRAlt не срабатывают ни в одной из областей.

Добавлено:

При нажатии на шорткат LCtrlLAlt меню конфликтующих макросов выводит макросы, назначенные на CtrlAlt. А при нажатии на RCtrlRAlt это меню выводит макросы, назначенные на CtrlAlt, CtrlRAlt, RCtrlAlt и RCtrlRAlt.

Smitis

Цитата:
Убить процесс igfxHK.exe. Заодно можно заменить igfxHK.exe каким-нибудь исполняемым файлом-пустышкой (который ничего не делает, после запуска сразу заканчивает работу).

Конкретно такого процесса в системе не наблюдаю. Есть похожий по наименованию igfxCUIService.exe, но с его убиением упомянутые клавиши не освобождаются. Но принцип понятен. Спасибо за подсказку.

VictorVG4

Исходя из принципа "нельзя объять необъятное" сам я бинарники, как правило, не собираю. Если же у Вас найдутся возможность и время, то бросьте, пожалуйста, архивированный екзешник куда-нибудь в пределах досягаемости. Благодарю Вас за помощь.
Автор: Smitis
Дата сообщения: 31.07.2016 20:36
sToLp
https://yadi.sk/d/CZun_H5ntnaam
"Заглушки" x86 и x64. Ничего не делают, ничего не мелькает.
Автор: VictorVG4
Дата сообщения: 31.07.2016 20:41
sToLp

Не вопрос igfxHK.exe (x86, 35281 байт, SHA-256: 57ea0d0d75d3b90ac83134def5d5b8937d1c2856bbb2dbe26c69b2bb65d60125 *igfxHK.exe ). У меня 32-х битный NSIS v2.51 с поддержкой строк до 8k, так что он х64 бинарники не компилит.

Автор: sToLp
Дата сообщения: 31.07.2016 21:04
Smitis
VictorVG4
Спасибо за отзывчивость. В x64 хорошо запускаются и работают многие 32-х битные программы тоже. Включая Фар.
А про MsOffice 2016 даже ходит молва, что его x86-версия предпочтительнее. И то, что мне доводилось самому наблюдать с Вордом и Икселем, а также и по отзывам операторов, этому не противоречит.
Автор: VictorVG4
Дата сообщения: 31.07.2016 21:18
sToLp

Я у себя после того как налетел на ошибки редиректа в ярлыках использую только х64 Far. А для бумаг LibreOffice 5.1.4 х64 и пока не решил ставить мне 5.2.0 RC4 (этот уже есть на официальном FTP, но ещё не анонсирован) или 5.1.5 RC2 - оба заменяют текущую установку т.к. собраны в релизной конфигурации, а вот бету можно ставить в параллель, но ...
Автор: shmuz2
Дата сообщения: 31.07.2016 21:23
VictorVG4
У меня стоит OpenOffice.org 3.2.1 (кажется 2010 года), и так хорошо работает, что не хочется его обновлять.
Автор: sToLp
Дата сообщения: 31.07.2016 21:35
VictorVG4

Цитата:
Я у себя после того как налетел на ошибки редиректа в ярлыках использую только х64 Far.

Прошу пардону, о каких ошибках в ярлыках речь?

Страницы: 123456789101112

Предыдущая тема: кл


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.