Open LanThrusteR opened 1 year ago
ведь не было же этого в WinSCP - это был правильно сделано, сейчас просто умучил плагин, объясню ситуацию - часто эти пути используются в консолях, приходятся вырезать каждый раз этот префикс.
Самое простое - Lua-скрипт ищущий позицию первого вхождения например /var и делающий clip(clip(tostring( subst(pos,lшngth)));
Самое простое - Lua-скрипт ищущий позицию первого вхождения например /var и делающий clip(clip(tostring( subst(pos,lшngth)));
Спасибо. А этот косяк в плагине происходит или в самом FAR3? Если в плагине - то его пересобрать можно. Я так понимаю что в плагине. Приходится FAR 1.70 использовать или 2.0 где WinSCP работает. Lua скрипты я не писал, я думаю это тернистый путь, с учетом того куда пошел Far3. Все настройки раньше в реестре были - теперь в базе. Раньше можно было настройки плагинов руками редактировать в текстовых файлов - убрали в базу, чтобы осложнить жизнь с FARом. Не соображают.
Единственное чем FAR3 лучше FAR1.70 это юникод редактором. Не нужно заниматься перекодировкой. Но больше в нем ничего не сделано лучше. Время потрачено на FAR3 много, а результат таков, что мне вот лично - нельзя даже перейти на 3.0 спустя 10 лет после его "запила" и "стадии активной поддержки"
1) Этот "косяк", точнее конфликт ожиданий пользователя и реальности субъективен :).
2) NetBox отдаёт полный URL объекта в формате оговоренном в RFC и мы всегда обратимся именно к нему, а WinSCP возвращает URL относительно текущего на момент копирования каталога на удалённом сервере, и тут есть "подводный камень" - этот каталог меняется по мере перехода по дереву каталогов.
3) Настройки фар-а и плагинов в БД легко правятся - для чего в Far3 имеется куча инструментов от команды far:config и скриптов типа DBEdit (c) IgorZ , до плагинов SQLiteDB, Polygon. Но, главное, хранение настроек приложений вне Реестра в их собственных конфигах, это не прихоть, а настоятельная рекомендация Microsoft высказанная ей при анонсе Windows 3.1 где появился Реестр ибо он грузится в память, и если эта БД окажется слишком велика, то возникнут проблемы с запуском ОС.
4) Настройки Far3 и плагинов можно править и в тексте - far -export
WinSCP возвращает путь относительно серверного рута. Т.е. если вы находитесь в папке /home/VicktorVG и в ней есть файл text.txt то если вы установите выделение Far на файле text.txt и нажмете кнопку Ctrl + F то у вас в строке внизу - в пути появится /home/VictorVG/text.txt и затем вам нужно нажать Ctrl+C чтобы путь файла оказался в буфере обмена. Вы зачем то это выпилили из плагина WinSCP - его люди создавали кто в теме был - и теперь вместо пути появляется никому не нужный префикс аля ssh://имяпользоваля@сервер:порт/и далее то что нужно и что было в WinSCP теперь если вы это скопируете и вам нужно в консоль это вставить - путь к файлу то вам надо постоянно убирать этот префикс и это делает NetBox для меня лично совершенно бесполезным плагином и я не могу перейти на него уже лет 5 - все так и пользуяюсь Far 1.70 и плагином WinSCP Скажите, зачем это переделано с правильно варианта в WinSCP на кривой? Вот допустим вы работаете с сервером у вас открыта консоль и открыт фар надо вам сделать операцию с файлом в консоле - вам нужен путь к файлу - в WinSCP : вы наводите строку выделения в фаре на файл, затем нажимаете Ctrl+F - путь появляется в командной строке и затем нажимаете Ctrl+C и вот он - путь к файлу у вас буфере перенесли в консоль - использовали, дали команду ln или исполнили его. Другой случай вам нужно в самом WInSCP выполнить операции с файлами для этого нужны пути - так же один путь к файлу в буфер поместили дали команду - вставили путь. Всё это больше не возможно с Нетбоксом! Да даже если вы гуляли по каталогам в сервере и вам хочется быстро вернуться в каталог вы делаете Ctrl+F на каталоге затем Ctrl+C затем ходите по каталогам а когда хотите вернуться делаете cd команду - и Ctrl+V - путь в каталог куда хотите вернуться. Так это было в WInSCP но теперь это все криво переделано на строку ssh://имяпользователя@имясервера:порт/каталог - ну и как теперь этим пользоваться? И главное - ЗАЧЕМ это сделано, я не могу на этот вопрос ответить зачем вам в буфере обмена вот такая строк аssh://имяпользователя@имясервера:порт/каталог - вместо пути к файлу. Что вы с ней будете делать? Ну это потрясающее!
- Настройки фар-а и плагинов в БД легко правятся - для чего в Far3 имеется куча инструментов от команды far:config и скриптов типа DBEdit (c) IgorZ , до плагинов SQLiteDB, Polygon. Но, главное, хранение настроек приложений вне Реестра в их собственных конфигах, это не прихоть, а настоятельная рекомендация Microsoft высказанная ей при анонсе Windows 3.1 где появился Реестр ибо он грузится в память, и если эта БД окажется слишком велика, то возникнут проблемы с запуском ОС.
Если шуткой - то кто фар вообще в виндовсе сейчас использует, это давно популярное приложение в линуксе. А если чуть более серьезно - не будем изобретать "новую культуру" линукс был есть и будет и то как он конфигурируется культура его настройки весьма правильна и стоит её позаимствовать. Весть линукс сделан так чтобы было просто, быстро и понятно его настраивать. Для этого в частности используются обычные текстовые файлы и это позволяет быстро профессионалам работать с системой. В этой культурной среде был сделан первый FAR , это было правильное решение. Вы понимаете когда у вас унифицирванный конфиг - когда все находится в файловой системе то время которое вам необходимо чтобы делать настройки серьезно снижается. Вам нужен всего лишь текстовый редактор для настройки всех сервисов и систем. Вам не надо каждый раз думать как настроить эту программу как ту. В Виндовсе файловую систему фактически перенесли в реестр. Зачем они так сделали - это другой вопрос, но раньше многие плагины фара настраивались так же в текстовых файлах. И это было удобно, понятно, но сейчас куда пойти чтобы настроить плагин, нужно свершить множество действий, использовать специальные программы, плагины... ну это фантастика, фантастика что у нашего разработчика в голове как он может так взять и испортить саму концепцию идеального продукта.
У меня просьба - можете эту опцию добавить - убрать этот префикс - сделайте NetBOX лучше ну невозможно с ним работать с путями файла, это очень медленно вырезать эти префиксы, проще его вообще не использовать. WinSCP то же самое все делает. В Фаре3 есть хорошая поддержка кодировок, которой нет в 1.70, и хотелось бы перейти на Far3 но WinSCP не работает в нем а NetBOX делает так что ваша работа будет умножена на 15%, будете постоянно префиксы очищать после Ctrl-F. Тут конечно много есть решений - но я предпочитаю 1.70 Фар и WinSCP плагин. Вы сами попробуйте, вы наверное этой клавиши не знали Ctrl+F - это же одна из самых нужных опций в фаре. Можно возвращаться на пути, можно использовать в других программах, ну это пожалуй самая нужная опция фара. И нетбокс её отменил и ради чего - чтобы зачем то в буфере оказалась эта чушь ssh://имяпользователя:пароль@имясервера:порт/ где этот путь использовать? Кому он нужен? Допустим у вас буфере после Ctrl-F + Ctrl + C ssh://имяпользователя:пароль@имясервера:порт/text.txt и что? И что с этим делать? Ну допустим даже вы куда то вставите что понимает ssh:// и что этому что то делать с этим файлом? Он его исполнить должен или что - вычитать содержимое, зачем... кому это нужно. Глюкало какое то.
Фар должен иметь обычный конфиг файл far.conf в котором все его настройки, плагины такие же файлы имяплагина.conf и всё не нужны эти реестры, базы данных, открыли в редакторе файл - изменили - дали команду фару far:reload и всё. Просто, быстро, понятно. Всё что нужно это один единственный плагин дописать который бы мог парсить настройки из конфигов. И дальше свобода, в редакторе фара открываете файл far.conf в нем вносите изменения делаете far:reload в командной строке. В текстовом файле настроек - комментарии, читаешь - меняешь. Очень удобно. Вот вам нужно изменить настройке в нетбоксе - добавить там настройку - прям в конфиг новую переменную и комментарии и всё.
Во первых WinSCP возвращает не URL (Uniform Resource Locators, RFC1738), а UNC (Uniform Naming Convention) путь в модифицированной схеме FILE (см. RFC1738 стр. 17):
fileurl = "file://" [ host | "localhost" ] "/" fpath
где префикс file заменён префиксом scp, а NetBox возвращает URL что есть "слегка":) разные по смыслу сущности - первая указатель местонахождения ресурса, а вторая соглашение об именовании ресурса, но да, при желании пользователь может преобразовать URL -> UNC любым удобным ему способом, а предугадать что захочет увидеть конкретный пользователь никто не может.
По поводу конфига - он "обычный", только в качестве контейнера Far Team выбрала не текст, а быструю БД SQLite3 которая сегодня стала стандартом "де факто" для тех приложений которые вынуждены оперировать большим количеством параметров. Если у вас несколько параметров их можно быстро найти в текстовом списке, а если их много, то просмотр текста даже используя алгоритм в-tree займёт намного большее чем обращение к индексированной БД время, хотя для пользователя если он хочет наглядно увидеть настройки текст удобнее т.к. не нужно изучать и после использовать инструменты чтения-модификации БД.
Во первых WinSCP возвращает не URL (Uniform Resource Locators, RFC1738), а UNC (Uniform Naming Convention) путь в модифицированной схеме FILE (см. RFC1738 стр. 17):
fileurl = "file://" [ host | "localhost" ] "/" fpath
где префикс file заменён префиксом scp, а NetBox возвращает URL что есть "слегка":) разные по смыслу сущности - первая указатель местонахождения ресурса, а вторая соглашение об именовании ресурса, но да, при желании пользователь может преобразовать URL -> UNC любым удобным ему способом, а предугадать что захочет увидеть конкретный пользователь никто не может.
Но к счастью, хорошие программы пишутся исходя из здравого смысла а не стандартизации. Вот, как разработчик, вы видите смысл в копировании по Ctrl + F всего префикса? Где это может пригодиться? Зачем это нужно? В этом нет никого практического смысла, это мешает работе в NetBOX и в меньше мере конечно, делает NetBOX более опасным. Для меня это очевидно. И для разработчиков WinSCP это было 20 лет назад тоже очевидно, спустя 20 лет, NetBOX не понимает зачем это было сделано. Ну добавьте пожалуйста опцию чтобы это бессмыслица в контексте работы нетбокса в начале вырезалась. Все же код небокса это WinSCP это не совсем ваш код, ради уважения к рассудку разработчиков верните обратно функционал. Спасибо заранее за ваш труд.
Знаете, в технике есть такое понятие "Стандарт надо соблюдать, а если он устарел, то он пересматривается, но так чтобы не ломать работающее!". В вашем случае вам лично мешает стандарт, значит он не нужен!
я бы прислушался к этому если Россия была законодателем технических стандартов, это ошибка следовать стандартом, нужно делать удобные интерфейсы и программы, так чтобы они требовали минимум времени для работы с ними, и это и есть стандарт - оптимизация интерфейса по времени работы с ним, а все остальное - вторично. Просто это станет новым стандартом) Ну ладно а что тут говорить, будем в 1.70 сидеть или - пожалуйста git clone и можно это поправить, я так понимаю FAR получает список файлов на панели а панель заполняется плагином, все что нужно это убрать префикс из панели и всё будет работать как раньше. Плагин же не может этот URL в SSH сервер пихать значит он где то его обратно в пути конвертирует которые понимает SSH сервер, и хранит только эту чушь внутри себя. Если файлы выделить и скопировать их как ссылки тоже везде этот префекс мешается в путях).
Вы можете как разработчик, не ссылаясь к стандартам, объяснить где и в какой программе такая строка ssh:// может быть использована? Т.е. - вопрос ЗАЧЕМ он меня не оставляет, это удивительно... зачем это было сделано? Все же ФАР он для людей а не для стандартов и пользуются им люди а не машины, и я не могу со своим опытом с 5 лет с компьютерами понять зачем такая строка нужна, где она может исползоваться. ДЛя меня это просто лик логина и сервера, я уверен кроме как снижения безопасности и растраты времени тем кто выдергивает путь без префикса это следование стандарту не несет. Т.е. вообще нет смыла. Зачем в программе бессмысленные возможности... Может быть туда Слава России подставлять, перед SSH чтобы уж точно было стандартно)
Вам спасибо за время вложенное в НетБОКС это всего лишь маленький дефект а в остальном нетбокс работает хорошо... кстати вот ещё много глюков которых не было в следующем посте.
Вот вам простой случай. Логичный плагин НетБОКС. Зайдите на сервер скопируете Ctrl+F строку, например к папке etc. Вы увидите в буфере строку ssh://user:@server/etc теперь сделайте cd Ctrl +V получим cd ssh://user:@server/etc и теперь нажмите ENTER вы увидите что смена папки не происходит без всяких сообщений ничего не происходит
А раньше это работало в WinSCP и всё остальное стало так же логично работать.
Например видите вы на сервере файле /etc/group хотите его скопировать делаете Ctrl+F у вас в буфере ssh://user:@server/etc теперь делаете cp ssh://user:@server/etc/group ~/tmp и чего вы видите? Правильно - ничего ни ошибки не действия, просто черный экран. Как будто что то сработало но на самом деле то ли что сработало то ли заглючило или сработало не так.
Не надо было этого делать, это нарушило логику работы WinSCP плагина который без этого были изначально префикса и работал хорошо и удобно.
Во первых WinSCP возвращает не URL (Uniform Resource Locators, RFC1738), а UNC (Uniform Naming Convention) путь в модифицированной схеме FILE (см. RFC1738 стр. 17):
fileurl = "file://" [ host | "localhost" ] "/" fpath
где префикс file заменён префиксом scp, а NetBox возвращает URL что есть "слегка":) разные по смыслу сущности - первая указатель местонахождения ресурса, а вторая соглашение об именовании ресурса, но да, при желании пользователь может преобразовать URL -> UNC любым удобным ему способом, а предугадать что захочет увидеть конкретный пользователь никто не может.По поводу конфига - он "обычный", только в качестве контейнера Far Team выбрала не текст, а быструю БД SQLite3 которая сегодня стала стандартом "де факто" для тех приложений которые вынуждены оперировать большим количеством параметров. Если у вас несколько параметров их можно быстро найти в текстовом списке, а если их много, то просмотр текста даже используя алгоритм в-tree займёт намного большее чем обращение к индексированной БД время, хотя для пользователя если он хочет наглядно увидеть настройки текст удобнее т.к. не нужно изучать и после использовать инструменты чтения-модификации БД.
Не забывайте под большим кол-ом параметров подразумевается от 100 миллионов параметров, тогда действительно будет задержка при пуске FARа но у фара меньше тысячи параметров. Для этих целей БД не нужны. Вообще, весь линукс на таких конфигах работает - все программы в линуксе. И не забывайте сама база данных тоже требует времени и ресурсов. Запросы к ней не бесплатны. Зачем фару хранить конфиги с всего 1000 параметров в базе данных.... это все равно что вместо autoexec.bat сделать базу данных и туда запихнуть парметры из autoexec.bat - это медленно и что самое главное тем кто работает с ФАР это очень неудобно.
Т.е. это вообще не нужно, уже написаны GNU библиотеки для парсинга конфигов, взять нужно было такую бибилиотеку и использовать её для парсинга far.conf и всё, зачем SQL Lite когда фар однотредовый, это может быть актуально в таком ПО как хром и то... все его кеши это текстовые файлы, там миллионы параметров я не вижу задержек. А уж в ФАРЕ то с его 100 параметрами пользоваться для этого SQL.... это точно ошибка. Никто не будет лазить по этим базам настраивать плагины. Никто не знает зачем эти параметры в базе какие значения они принимают и зачем потому что всё это в разных файлах человек не видит когда правит - что он может тут сделать. Просто обычный far.conf и обычная GNU библиотека для парсинга libconfig, iniparser, configparser, confuse и многие другие
ну что сделано то сделано, теперь никто не будет конфиги в фаре править, надо было просто в EXE файлы все парметры закодить чтобы хекс редактором их только менять можно было, так быстрее всего бы было
Я бы хотел обратить ваше внимание что производительность никогда не была проблемой в FAR ни его старт ничто не отнимало много времени, я удивляюсь что такой фокус был уделен SQL Lite как будто он грузился долго и теперь стал быстрее. Давайте тест проведем. Я вам пришлю результаты старт FAR 1.70 и старт FAR 3.0 - есть ли какая то разница в миллисекундах и если есть то в пользу чего - 1.70 или 3.0
В любом случае проблемы медленного запуска у фара не было. Это просто удивительно что для хранения 1000 параметров используется база данных... такое сомнительное решение. В чем его смысл - опять же назревает вопрос - ЗАЧЕМ.
Но опять же все это уже сделано и время потрачено и спасибо за то что это вообще сделано. Как можно было так и сделано - исходники есть хочешь сделать лучше - возьми и сделай. Это никакое не обесцениваение. С большой благодарностью.
Вам когда нибудь приходилось писать что-то типа информационно-поисковых систем? А мне приходилось, и не раз. И то,что вы назвали - 100 млн.параметров дли них сверхвысокая нагрузка. Даже несколько сотен имеющих сложные связи параметров в конфиге достаточно сложно отследить, особенно в формате Clean/TEXT и потому был выбран вариант SQLite3.
А скорость запуска Far3 в общем случае штука переменчивая и сильно зависит от таких параметров как скорость чтения дисковой подсистемы и наличие и число скриптов и макросов используемых в конкретном случае. Например у меня если отключить скрипты FarUE3 имеющий около 75 плагинов стартует (время запуска считается от момента выдачи ОС функции CtrateProcess() до момента готовности программы к вводу команд оператором ЭВМ) примерно за 7,6 миллисекунды, а если включить все 154 скрипта а которых содержится свыше 200 макросов время запуска возрастает до 80 - 90 миллисекунд и его типовое значение составляет примерно 77 - 78 миллисекунд так что использование СУБД не сильно влияет на скорость работы пакета.
@LanThrusteR , сделал себе макрос Shell. CtrlF.lua:
local NetBox = '42E4AEB1-A230-44F4-B33C-F195BB654931' if not Plugin.Exist(NetBox) then return end
Macro { area="Shell"; key="CtrlF"; action = function() if not CmdLine.Empty then Keys('Space') end if win.Uuid(panel.GetPanelInfo(nil,1).OwnerGuid):upper() == NetBox then mf.print(APanel.Path.."/"..APanel.Current) else Keys(akey(1)) end end; }
сделал вариант без окавычивания потому что например команда перехода goto: на FAR2M (на Linux'e) понимает пути без кавычек
Нужно чтобы было не ssh://user@host:port:/var/tmp при копировании Ctrl +F а /var/tmp как это и было всегда в WinSCP
все настройки облазил, не отключаемые сложности