Ru-Board.club
← Вернуться в раздел «Программы»

» Far Manager

Автор: Alexyz21
Дата сообщения: 02.05.2016 16:22
shmuz2
Разве проблема не в panel.GetPanelItem(nil,1,i).FileName?
Автор: shmuz2
Дата сообщения: 02.05.2016 16:32
Alexyz21
Видимо я не понял, о чём речь - думал, что всё ещё про регексы через FFI.
А по данному макросу мне нечего сказать - не вникал ещё.
Автор: Alexyz21
Дата сообщения: 02.05.2016 16:37
От регексов через FFI мы не отказываемся, если чо
Автор: Angel_Ka
Дата сообщения: 02.05.2016 17:18
shmuz2

Цитата:
на что-то большее времени однозначно нет

Не торопитесь, пожалуйста, делайте основательно. А мы уж потом с удовольствием употребим Ваши улучшения. Удач Вам к нашей общей пользе!
Автор: Alexyz21
Дата сообщения: 02.05.2016 19:01
Angel_Ka
Вы же в курсе, что скрипт нужно запускать на панели в режиме сортировки по имени и сброшенном выделенные вперёд?
Автор: shmuz2
Дата сообщения: 02.05.2016 19:06
Alexyz21
И то, и другое, скрипт мог бы брать на себя. (Продолжения не обещаю).
Автор: Angel_Ka
Дата сообщения: 02.05.2016 21:27
Alexyz21

Цитата:
Вы же в курсе, что скрипт нужно запускать на панели в режиме сортировки по имени и сброшенном выделенные вперёд?

Да. Это я практически сразу же понял. И в вышеупомянутых тестах каждый новый замер начинался с приведения панели в режим сортировки по имени по возрастанию (индикатор — маленькая "и"). Опция "Помеченные файлы вперёд" (обозначаемая знаком крышки "^" после индикатора) не применялась.

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

Хорошо бы вот теперь мне научиться запоминать текущее состояние пометки и уметь восстанавливать её через некоторое время после сброса (и мне кажется такой макрос я видел раньше где то на форуме фара).
Автор: VictorVG4
Дата сообщения: 02.05.2016 22:34
Ошибка с раскрытием переменных среды исправлена в b4657. Я чуть иначе проверил, хотя и похоже - notepad %TMP%\svnlog.txt. В b4656 ошибка воспроизводится, в b4657 исправлена.
Автор: Angel_Ka
Дата сообщения: 02.05.2016 23:12
VictorVG4
Большое Вам спасибо за неустанную оперативную публикацию самых последних версий Фара! Это очень удобно для пользователя, а порой бывает и крайне необходимым.

А храните ли Вы где то базу Ваших сборок?
Автор: VictorVG4
Дата сообщения: 02.05.2016 23:20
Angel_Ka

Смотря что - собранные билды - да, у меня есть коллекция начиная с b3000 (сейчас это 700 архивов, 4408 Мб), сборки на ЯД вечно последние на момент их публикации.
Автор: Angel_Ka
Дата сообщения: 02.05.2016 23:31
VictorVG4
А как их можно скачать? Сейчас мне хотелось бы посмотреть far-30.4654-bin.7z.
Автор: VictorVG4
Дата сообщения: 03.05.2016 00:10
Angel_Ka

Не вопрос:

far-30.4643-bin.7z
far-30.4647-bin.7z
far-30.4649-bin.7z
far-30.4650-bin.7z
far-30.4651-bin.7z
far-30.4652-bin.7z
far-30.4653-bin.7z
far-30.4654-bin.7z
far-30.4655-bin.7z
far-30.4656-bin.7z
Автор: Angel_Ka
Дата сообщения: 03.05.2016 00:24
VictorVG4

Цитата:
Не вопрос

БОЛЬШОЕ СПАСИБО!
Автор: Angel_Ka
Дата сообщения: 03.05.2016 02:41
shmuz2
Alexyz21

На реальной небольшой 66-гиговой базе из 4 108 файлов контрольный сортировщик отработал за 1 672 597 mcs. А на 160-гиговой базе из 711 624 файлов — за 389 407 090 mcs. Это не вполне пропорционально увеличению численности обрабатываемых файлов, но всё же весьма хороший результат.

Выделяльщик же базу из 4 108 файлов обработал почти мгновенно — за 45 128 mcs, и нашёл в ней 469 дублей. А вот над базой из 711 624 файлов (это в 173 раза больше) он трудился гораздо дольше, больше часа — 4 126 309 862 mcs (это в 91 435 раз дольше), и нашёл 99 181 дубль.

Скорость работы выделяльщика падает сильно непропорционально росту количества обрабатываемых им файлов.


Добавлено:
Вышеизложенная информация приведена лишь для вашего сведения. В практическом же плане она для меня не критична, по крайней мере пока. Макрос пометки на бранч-панели дубликатов файлов Select Duplicates FileName in Branch panel очень полезен и вполне применим на практике. Ещё раз выражаю БОЛЬШУЮ БЛАГОДАРНОСТЬ за его создание!
Автор: Alexyz21
Дата сообщения: 03.05.2016 10:25
Новая версия с FFI [more]
Код: local F = far.Flags
local ffi = require'ffi'
local C = ffi.C

Macro {
description="* Select Duplicates FileName in Branch panel"; name="SDFN"; area="Shell";
action=function()
local ptr=ffi.cast("BOOL*",1)
local pc=ffi.cast("struct PluginStartupInfo*",far.CPluginStartupInfo()).PanelControl
local pin=panel.GetPanelInfo(nil,1)
if bit.band(pin.Flags,F.PFLAGS_SELECTEDFIRST)>0 then Keys("ShiftF12") end
if pin.SortMode~=F.SM_NAME then panel.SetSortMode(nil,1,F.SM_NAME) end
local fn0,fn1,t0 = "","",far.FarClock()
for i=1,pin.ItemsNumber do
--fn0,fn1 = fn1,string.match(panel.GetPanelItem(nil,1,i).FileName,"[^\\\\]+$")
fn0,fn1 = fn1,string.gsub(panel.GetPanelItem(nil,1,i).FileName,"^.+\\","")
--if fn1==fn0 then panel.SetSelection(nil,1,{i-1,i},true) end
if fn1==fn0 then
pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-2,ptr)
pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-1,ptr)
end
end
pc(PANEL_ACTIVE,"FCTL_REDRAWPANEL",0,nil)
Keys("ShiftF12")
msgbox("SDFN","mcs: "..far.FarClock()-t0.."\n\nUse ShiftF12 for sort")
end;
}
Автор: Angel_Ka
Дата сообщения: 03.05.2016 11:32
Alexyz21

Цитата:
Новая версия с FFI

Блестяще! ОЧЕНЬ БЛАГОДАРЕН Вам за неё!

Вышеупомянутую базу из 711 624 файлов вместо часа обрабатывает за 10 секунд — вот три пробы: mcs: 9926678 mcs: 9999617 mcs: 9923393.

Добавлено:
Alexyz21

Цитата:
Новая версия с FFI

Превосходно! ОЧЕНЬ БЛАГОДАРЕН Вам за это!

Вышеупомянутую базу из 711 624 файлов новая версия макроса вместо прежнего часа обрабатывает за 10 секунд.

Добавлено:
Alexyz21

Цитата:
Новая версия с FFI

Новая версия макроса превосходна! Вышеупомянутую базу из 711 624 файлов вместо прежнего часа он теперь обрабатывает за 10 секунд.

ОЧЕНЬ БЛАГОДАРЕН Вам за это!
Автор: VictorVG4
Дата сообщения: 03.05.2016 11:45
Опечатка в changelog:

Цитата:
drkns 03.05.2016 11:28:32 +0200 - build 4658

1. 0003228: Shell команда CD не находит путь есть в конце выполняемой стоки стоит пробел

- в строки случайно "р" пропущена, ну бывает при быстром наборе текста.
Автор: Angel_Ka
Дата сообщения: 03.05.2016 11:45
VictorVG4

Похоже, что сайт опять бузит: отправляемый мною ответ проявился только после третьей отправки.
Автор: Alexyz21
Дата сообщения: 03.05.2016 12:03
Разница в 400 раз? - Офигеть! Видно в LUAMacro что-то неоптимально.
Автор: VictorVG4
Дата сообщения: 03.05.2016 12:06
Angel_Ka

Да, есть такое. Винты продолжают сыпаться.
Автор: Alexyz21
Дата сообщения: 03.05.2016 12:09
Что ж за винты такие? Или б/у ставили?

Добавлено:
Angel_Ka
А количество найденных дубликатов в обоих версиях совпадает?
Автор: VictorVG4
Дата сообщения: 03.05.2016 12:23
FarUE3 b4658 r14122 Tue May 03 12:13:38 +0300 2016

Цитата:
1. Far b4658 r14122
2. Опечатку в Far:changelog:b4658 поправил, в SVN исправления ещё нет, мелочь.
3. Рефакторинг. Обновление совместимо с SVN r14081 - SVN r14122

Изменения в х64 версии аналогичны п1 и п2 - не вижу смысла оставлять опечатку в тексте.

Alexyz21

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

P.S.

Ладно, пойду собираться - электричка через час, а до неё ещё дойти надо. Хочу успеть к вечеру обернуться, но х.з. - на ж/д ремонт, так что есть шансы на ночь застрять.
Автор: Angel_Ka
Дата сообщения: 03.05.2016 12:26
Alexyz21

Цитата:
А количество найденных дубликатов в обоих версиях совпадает?

Получив вопрос ещё раз специально перепроверил — да, полностью совпадает.
Автор: Alexyz21
Дата сообщения: 03.05.2016 12:38
Angel_Ka
А такой вариант [more]
Код: local F = far.Flags
local ffi = require'ffi'
local C = ffi.C

Macro {
description="* Select Duplicates FileName in Branch panel"; name="SDFN"; area="Shell";
action=function()
local ptr=ffi.cast("BOOL*",1)
local pc=ffi.cast("struct PluginStartupInfo*",far.CPluginStartupInfo()).PanelControl
local pin=panel.GetPanelInfo(nil,1)
if bit.band(pin.Flags,F.PFLAGS_SELECTEDFIRST)>0 then Keys("ShiftF12") end
if pin.SortMode~=F.SM_NAME then panel.SetSortMode(nil,1,F.SM_NAME) end
local pt,fn0,fn1,t0 = nil,"","",far.FarClock()
for i=1,pin.ItemsNumber do
--fn0,fn1 = fn1,string.match(panel.GetPanelItem(nil,1,i).FileName,"[^\\\\]+$")
fn0,fn1 = fn1,string.gsub(panel.GetPanelItem(nil,1,i).FileName,"^.+\\","")
--if fn1==fn0 then panel.SetSelection(nil,1,{i-1,i},true) end
if fn1==fn0 then
if pt then pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-2,ptr) pt=false end
pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-1,ptr)
else pt=true
end
end
pc(PANEL_ACTIVE,"FCTL_REDRAWPANEL",0,nil)
Keys("ShiftF12")
msgbox("SDFN","mcs: "..far.FarClock()-t0.."\n\nUse ShiftF12 for sort")
end;
}
Автор: DVall
Дата сообщения: 03.05.2016 12:41
FAR 3 build 4657
FarFtp 1.75.0.277 от 05-08-2015.
После того как заливаешь файл на сервер, в заголовке отаётся висеть {0.0% } Upload.
Автор: Angel_Ka
Дата сообщения: 03.05.2016 13:05
Alexyz21

Цитата:
А такой вариант

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

Добавлено:
Докладываю:

Код:
Новая mcs: 9855528 mcs: 9776599 mcs: 9854369
Прежняя mcs: 9992161 mcs: 9976228 mcs: 9911495
Автор: Angel_Ka
Дата сообщения: 03.05.2016 15:11
Ранее я писал:

Цитата:
Хорошо бы вот теперь мне научиться запоминать текущее состояние пометки и уметь восстанавливать её через некоторое время после сброса (и мне кажется такой макрос я видел раньше где то на форуме фара).

Ринулся я искать макросы, и вышло у меня из этого следующее.

Два макроса, на первый взгляд показавшиеся мне подходящими, я обнаружил в сборке от уважаемого Victor_VG. Это Shell_SelectingEx.lua и Shell_RememberSelected.lua от мастера SimSU. Но Shell_SelectingEx.lua и в обычной то панели работает как-то странно, а в бранче совсем не восстанавливает пометку. А Shell_RememberSelected.lua на небольшом, на 4 тыс. файлов, бранче отрабатывает нормально, быстро, а вот при 700 тыс. файлов результатов его работы я не стал дожидаться — подождав 15 минут, сбросил его. При этом проц он грузил, как и первые два бесFFIишные варианта выделяльщика, — на 26%.

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

При этом мне всё же недостаёт возможности восстановления пометки файлов между сессиями Фара. Скопировать и поместить в файл полные имена отмеченных на панели файлов несложно. А вот нельзя ли как то этим потом воспользоваться для восстановления их пометки?

Добавлено:
И вот ещё любопытно: а сама то CtrlM где хранит данные для восстановления пометки? Может это как то можно использовать?

Добавлено:
Для восстановления пометки файлов на бранч-панели после перезагрузки Фара попытался приспособить плагин Select-From-Clipboard. И он отлично справляется с данной задачей на относительно небольших по численности файлов бранчах. Но на бранчах с несколькими десятками тысяч файлов нещадно тормозит. Так, что даже возникает вопрос: не висит ли? На CtrlBreak не реагирует.

Неужели нет решения задачи?
Автор: Angel_Ka
Дата сообщения: 03.05.2016 19:57
shmuz2
Заметил такую особенность, что медленно работающий макрос, запущенный на исполнение в бранч-панели на несколько десятков тысяч файлов (достоверно проверено на 70 тыс.), не удаётся прервать оп CtrlBreak. В частности, первая и вторая версии чудесного макроса Select Duplicates FileName in Branch panel от Alexyz21 дорабатывают до конца, невзирая на неоднократные нажатия на CtrlBreak. Причём отрабатывают нормально, с правильным результатом. А чтобы прервать Shell_RememberSelected.lua — макрос из набора v2014.10 от SimSU приходится убивать процесс Фара.
Автор: shmuz2
Дата сообщения: 03.05.2016 20:57
Angel_Ka
После замены макроязыка на Lua прерывание макросов по CtrlBreak перестало работать (если не ошибаюсь, оно и до Lua не во всех случаях работало). Я попытался было это поправить несколько лет назад, но эта работа была прервана и больше не возобновлялась.
Автор: Angel_Ka
Дата сообщения: 03.05.2016 21:20
shmuz2

Цитата:
После замены макроязыка на Lua прерывание макросов по CtrlBreak перестало работать

Понятно. Благодарю Вас за информацию! По инерции думал, что CtrlBreak стандартный шорткат для прерывания макросов.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: оффтоп


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