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

» Far Manager

Автор: Alexyz21
Дата сообщения: 01.01.2016 17:02
Проверил под WinXPSP3 - тоже самое, после применения скрипта и обновления панелей, панель NB слетает в список сессий.

Обнаружилось, что Colorer падает при открытии в редакторе flist.txt, траплоги и файл в архиве, возможно не хватает какой-нибудь библиотеки в системе. Colorer'у из FAR3.0.2798 всего хватает.

P.S. От же ж, а где прикрепить файл-то? Кинул на обменник CrashLogs.7z
Автор: VictorVG2
Дата сообщения: 01.01.2016 18:18
Alexyz21

Кинуть линк на обменник. Например на zippyshare благо там кроме размера (<= 200 Mb на файл) иных ограничений нет (равно как и капчи в прошлом я там не видел).
Автор: Alexyz21
Дата сообщения: 01.01.2016 18:30
За NB уже довольно давно наблюдались похожие глюки - в процессе работы с ним, может ни с того, ни с сего выдать диалог импорта-экспорта сессий. Видимо внутри себя он уже перескочил в панель сессий, а FAR3 панели ещё не обновил - копируешь на панель NB, вот диалог и выскакивает.
Автор: VictorVG2
Дата сообщения: 01.01.2016 18:39
Alexyz21

Сколько с ним работаю - ни разу таких чудес не видел. Может ситуация типа той что я с иными устройствами видел?
Автор: Alexyz21
Дата сообщения: 01.01.2016 18:58
Я думаю это кривая совместимость с ХП постреливает.
Автор: VictorVG2
Дата сообщения: 01.01.2016 19:55
Alexyz21

Возможно, но маловероятно.
Автор: Alexyz21
Дата сообщения: 01.01.2016 20:30
А что тогда, если у вас на не ХП осях NB в список сессий не вылетает? Сейчас посмотрю под 8.1PE и 10PE.
Автор: VictorVG2
Дата сообщения: 01.01.2016 20:34
Alexyz21

Да я глянул тут у приятеля на ХР SP3 у него ничего не вылетает. Так что я бы исходил из предположения что это особенности конкретной машины.

Добавлено:
"Мелкий поправка" к ранее выложенному - там обновление не собралось, поправил опечатку - теперь порядок. Заодно и для 32-х битной сборки билд 4501 положил на свои сервера, до того с 64-х битной вопросов не было.
Автор: Alexyz21
Дата сообщения: 01.01.2016 21:04
Проверил. FAR3.0.4500x64, 8.1PEx64 и 10PEx64 всё также, как и под ХР. Если под всеми ОС не завязанное на железо ПО ведёт себя одинаково криво, то это не особенности конкретной машины, а особенности конкретного ПО

Импортируемая сессия NB

Код: <?xml version="1.0" encoding="UTF-8"?>
<NetBox version="2.1">
<Sessions>
<Session name="user@127.0.0.1">
<Version>2.1.45</Version>
<HostName>127.0.0.1</HostName>
<PortNumber>21</PortNumber>
<PingType>2</PingType>
<UserName>user</UserName>
<FSProtocol>FTP</FSProtocol>
<RemoteDirectory>/</RemoteDirectory>
<PreserveDirectoryChanges>No</PreserveDirectoryChanges>
<SFTPMaxVersion>0</SFTPMaxVersion>
<FtpPasvMode>No</FtpPasvMode>
<LoginType>1</LoginType>
<Password>Не скажу </Password>
</Session>
</Sessions>
</NetBox>
Автор: skipik001
Дата сообщения: 01.01.2016 22:49
Alexyz21

Цитата:
Надо, чтобы ещё кто-нибудь посмотрел для подтверждения.

Попробовал, всё в порядке, ничего никуда не вылетает. Far 3.0.4501 x64 + скрипт от VictorVG2.
Автор: Alexyz21
Дата сообщения: 02.01.2016 10:29
FAR3.0.4501, NB. far.GetPluginDirList(nil,"") приводит к завершению соединения. Соответственно, скрипт, будучи вызванный в корне ресурса, приводит к вылету в список сессий.

Баг, не баг - не знаю, но я бы предпочёл, чтобы сессии не закрывались.


На всякий случай, прошу проверить работу скрипта (любого, APanel.Path в корне равно "") из корня ресурса.
Автор: VictorVG2
Дата сообщения: 02.01.2016 17:25
Alexyz21

Только что смотрел - не вылетает. Ну, может я неправильно что делал, но как был список файлов на сервере, так и остался. Что на CtrlR, что на Enter, Up, Dwn хотя курсор стоял на "..". Стоит как вкопанный.
Автор: 127
Дата сообщения: 02.01.2016 19:29
Renewal и UpdateEx, я так понял, уже все? можно выкидывать? Или еще возможны варианты?
Автор: Alexyz21
Дата сообщения: 02.01.2016 22:53
VictorVG2
А если в вашем скрипте заменить far.GetPluginDirList(nil,APanel.Path) на far.GetPluginDirList(nil,""), что равнозначно вызову в корне ресурса, где APanel.Path="". Вызвать скрипт, находясь в папке FTP сервера, а после отработки и закрытия выданного far.Show() листинга, нажать CtrlR - в список сессий NB не вылетит? У меня в логе после отработки far.GetPluginDirList(nil,"") NB пишет Quit.

Добавлено:
127
Для FAR3 они работают
Автор: VictorVG2
Дата сообщения: 03.01.2016 07:16
Alexyz21

Посмотрел по Энциклопедии что в таком случае ждать - непредсказуемые последствия, т.к. в WinAPI исходно посылается неизвестно что: GetPluginDirList(GUID,'неопределённость') и это всё одно что на ноль делить. Ну словит ЦП аффинную бесконечность, выставит бит переполнения и прерывание дёрнет, а смысл то в чём?

Добавлено:
127

Эти плагины есть в версии для Far3 и работают, просто решение об их использовании принимается исходя из решаемой задачи.
Автор: Alexyz21
Дата сообщения: 03.01.2016 09:05
VictorVG2

Цитата:
а смысл то в чём?

А смысл в том, что far.GetPluginDirList(nil,APanel.Path) в корне ресурса это и посылает, ведь в корне APanel.Path="". Но даже если мы и будем посылать в корне "/" или "\\", то это ничего не изменит - NB пошлёт вместо "CWD PWD" - "CWD / PWD" и QUIT в конце. Но так поступает не только NB, ансишный FAR FTP делает тоже самое, только QUIT в конце не пишет, просто рвёт соединение и возвращается в список сессий.
Вот кусок лога NB на вызов far.GetPluginDirList(nil,"/"):

Код: . 2016-01-03 10:19:40.390 Changing directory to "/".
> 2016-01-03 10:19:40.390 CWD /
< 2016-01-03 10:19:40.390 250 Ok
. 2016-01-03 10:19:40.437 Got reply 1 to the command 16
. 2016-01-03 10:19:40.437 Getting current directory name.
> 2016-01-03 10:19:40.437 PWD
< 2016-01-03 10:19:40.437 257 "/" Ok
. 2016-01-03 10:19:40.437 Got reply 1 to the command 16
. 2016-01-03 10:19:40.437 Retrieving directory listing...
> 2016-01-03 10:19:40.437 TYPE A
< 2016-01-03 10:19:40.437 200 Ok
> 2016-01-03 10:19:40.453 PORT 127,0,0,1,7,155
< 2016-01-03 10:19:40.453 200 port: 1947
> 2016-01-03 10:19:40.453 LIST
< 2016-01-03 10:19:40.453 150 Ok
< 2016-01-03 10:19:40.453 226 Ok
. 2016-01-03 10:19:40.453 drw-rw-rwx 1 nouser nogroup 0 Jan 3 10:19 .
. 2016-01-03 10:19:40.500 drw-rw-rwx 1 nouser nogroup 0 Jan 3 10:19 ..
. 2016-01-03 10:19:40.500 Directory listing successful
. 2016-01-03 10:19:40.500 Got reply 1 to the command 2
. 2016-01-03 10:19:40.500 ..;D;0;1899-12-30T1190:02:47.297Z;"" [0];"" [0];---------;0
> 2016-01-03 10:19:40.500 QUIT
Автор: VictorVG2
Дата сообщения: 03.01.2016 09:42
Alexyz21

Нет иначе бы у нас скрипт так же бы в тартары вылетал. Я вспомнил - когда правил исходный вариант скрипта написанного zg чтобы он не ругался на отсутствующий каталог, то прикидывал варианты far.GetPluginDirList(nil,"..") и far.GetPluginDirList(nil,"/") и мне StackTrace выводил сообщение об ошибке что в far.GetPluginDirList летит nil, т.е. неопределённость точки отсчёта и именно чтобы её убрать я и поставил APanel.Path - его значение определено текущим каталогом активной панели и неопределённости нет. Я тогда на скорую руку правки вносил, но сию неопределённость убрал изначально, вот почему у меня скрипт не вышибает в список сессий.
Автор: Alexyz21
Дата сообщения: 03.01.2016 09:48
VictorVG2
Опять 25, - APanel.Path в корне ресурса равен "", см. LuaExplorer.
Автор: VictorVG2
Дата сообщения: 03.01.2016 10:07
Alexyz21

Ну так воспользуйся APanel.UNCPath - он не должен формировать неопределённость и возьми подстроку без пути к корню сетевого ресурса. Чем не идея?
Автор: Alexyz21
Дата сообщения: 03.01.2016 10:15
VictorVG2
И в NB, и в FAR FTP APanel.UNCPath=APanel.Path, т.е. справка "UNCPath String содержит UNC-путь панели (без заключительного '\'); для плагиновой панели - prefix:[hostfile/]path" в данном случае заблуждается Но даже если мы отправим согласно справки сформированный UNCPath, то NB заменит его на "".

Кстати, почему-то, APanel.HostFile=nil и для NB, и для FAR FTP - почему он не содержит имя сессии?

NB берёт string из far.GetPluginDirList(nil, string) и честно подставляет её в CWD string (судя по логу), но почему-то в случае far.GetPluginDirList() вызванного перед этим, всё заканчивается QUIT. Если же вручную исполнять CWD /, то соединение не разрывается.
Автор: VictorVG2
Дата сообщения: 03.01.2016 10:41
Alexyz21

Странно, почему не вышибает:



да, путь APanel.UNCPath плагин преобразовал в APanel.Path, но вылета нет и неопределённого параметра в WinAPI не передано. Можно конечно предположить что первопричина сбоев в настройках или особенностях железа - у меня ведь именно несовместимость 4 x 2Rx8x256M модулей памяти с чипсетом P45 всю машину на уши ставили и всё кончилось сменой железа после чего все проблемы испарились. Может и в данном случае первопричины явлений имеют схожую по глубине возникновения природу?
Автор: Alexyz21
Дата сообщения: 03.01.2016 10:50
Не выбрасывает потому, что это не корень ресурса, а подпапка FTP. Нужно подняться на уровень вверх, там вызвать скрипт, закрыть диалог far.Show(), жмякнуть CtrlR для обновления панелей и созерцания списка сессий.

Кстати, APanel.HostFile=nil и в NB, и в FAR FTP - разве он не должен содержать имя сессии? - Видимо HostFile только для реальных FS, а не панелей плагина. Но всё равно, помещать в него имя сессии было бы полезно.
Автор: VictorVG2
Дата сообщения: 03.01.2016 12:16
Alexyz21

Так воспроизвёл, но тут иной коленкор - мы даём команду подъёма по дереву на одну ступень вверх, и последствия ожидаемы. По крайней мере я так понимаю что происходит.
Автор: Alexyz21
Дата сообщения: 03.01.2016 12:44
Ожидаемы? - С чего вдруг? Имхо, либо far.GetPluginDirList(nil,"") не умеет обрабатывать корневую директорию, либо плагины неправильно обрабатывают получаемые "","/","\".
Автор: VictorVG2
Дата сообщения: 03.01.2016 12:46
Alexyz21

Скорее плагины отрабатывают что-то типа Ctrl/.
Автор: Alexyz21
Дата сообщения: 03.01.2016 12:51
не знаю, не знаю... вручную поданную команду CWD / NB нормально отрабатываtт, возвращаясь из любой папки в корень.

UP. сейчас проверил - не возвращается..., что за @#$$ %)
Автор: VictorVG2
Дата сообщения: 03.01.2016 12:53
Alexyz21

Так CWD отрабатывает сервер, а Ctrl/ сам Far и по идее тут она отрабатывается правильно как "перейти в корень файловой системы текущей панели".
Автор: Alexyz21
Дата сообщения: 03.01.2016 13:13
О! Похоже вижу где собака порылась... Если дать команду "CWD /", то содержимое панели обновляется на содержимое корня (по логу мы в корне), а вот заголовок панели и командная строка нет.
Автор: VictorVG2
Дата сообщения: 03.01.2016 13:40
Alexyz21

Вот тут возможна рассинхронизация событий "изменение текущей директории и обновление состояния панелей" во времени, хотя, хотя - а нет ли тут связи с тем что состояние каталога обновляется - например в него скачивается файл, а активная панель находящейся в фокусе копии Far обновляется только коли CtrlR нажать несмотря на то, что опция System::Update panels only when Far is active отключена по дефолту? По идее этого быть не должно, но поглядим что разработчики скажут.
Автор: Alexyz21
Дата сообщения: 03.01.2016 13:48
VictorVG2
Так CtrlR в данном случае заголовок и комстроку не обновляет.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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