Апгрейд Plugin API

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
OCTAGRAM
Posts: 72
Joined: Sun 24 Jul, 2005 03:42
Location: Барнаул
Contact:

Апгрейд Plugin API

Post by OCTAGRAM »

Давно хотел выразиться по следующим вопросам :

Текущий интерфейс плагинов для Far позволяет им вести себя как броузеры FS, вместо того, чтобы дать им возможность представлять FS непосредственно, с произвольным доступом.

Нет единого формата для путей. CurDir в структуре OpenPluginInfo служит скорее для красоты командной строки, чем для какого-то полезного применения. Ну разве что в Folder Shortcuts его занести. Все равно строки путей крутятся внутри каждого плагина по отдельности. Нужно составить соглашение об именовании.

Моё дело только предложить, я надеюсь, что общими усилиями можно довести это до ума :

Обычные диски и SMB ресурсы пишутся как обычно :
C:\Program Files\
\\SERVER\SHARE\Path\

Также они могут быть записаны в виде URL :

file:/C:/Program Files/
file://SERVER/SHARE/Path/

Это используемые в Windows правила именования.

У FTP и WebDAV ресурсов путь совпадает с URL.

-----------------------------------------------------------

Теперь ближе к Far'у :

Как известно, Windows диски именуются только одной буквой.
Значит, можно использовать многобуквенные комбинации для
обращения к глобальным плагинам :

reg:\HKLM\SOFTWARE\

Далее, альтернативные потоки NTFS именуются как file:stream:streamtype, при этом значения streamtype ограничены файловой системой, т. е. не произвольны. Так что к внутрифайловым плагинам можно обращаться так :
C:\Work\Arch.zip::Zip\Folder\File.txt

А если вдруг у Arch.zip есть альтернативный поток Backup, то к нему
можно обратиться через
C:\Work\Arch.zip:Backup:Zip\Folder\File.txt

В итоге получаем :
Есть два формата файловых путей - Windows-style и URL-style, и они не смешиваются.

Остаётся только дополнить картину недостающими фрагментами :
Следующие примеры путей также должны быть правильными, хотя точное написание ещё подлежит уточнению :

reg:/HKLM/SOFTWARE/
reg://computer/HKLM/SOFTWARE/

file:\C:\Program Files\
file:\\SERVER\SHARE\Path\
ftp:\\SERVER\Path\
reg:\\SERVER\HKLM\Path\

Также стоит поменять способ доступа к содержимому виртуальных FS.
Чтобы, например, можно было зайти на медленный FTP с поддержкой докачки, зайти в архив и не ждать, пока он перекачается полностью.
FTP позволяет произвольный доступ к файлу, этого достаточно, чтобы найти начало списка файлов, скачать его, а дальше скачивать только образы нужных файлов, чтобы распаковать.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Post by HaRT »

Да, подобная унификация давно назрела.
Только вот непонятно, кто и когда будет всё это делать с обеих сторон API. :(
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Post by Wave »

Угу. Новые апи, уникод...
Много ещё чего...
Новую версию практически с нуля нужно делать. На кардинально новой архитектуре.

*вот так доведя идею до абсурда, показал, что никто это делать не будет*

*злой я*
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

А что, могла бы получиться довольно красивая система.

Для этого нужно:

1. Дать плагинам возможность предоставлять произвольный доступ к файлам.
1a. Непосредственно: экспортируемые функции OpenPluginFile/ClosePluginFile, SeekPluginFile, ReadPluginFile/WritePluginFile. (Считаем, что API для перечисления файлов в подкаталоге у нас уже есть.)
1b. Через семантику символической связи: плагин говорит, что «вот этот файл foo.txt — на самом деле является объектом ftp://somewhere/else/foo.zip::zip/dir/foo.txt».

2. Дать плагинам средства для работы с произвольными объектами FAR namespace — сервисные функции типа OpenFile/CloseFile, SeekFile, ReadFile/WriteFile, FindFirstFile/FindNextFile/FindClose, которые бы перенаправлялись в зависимости от имени файла в соответствующие плагины.

3. Написать кучу плагинов поддержки, чтобы всё это работало. Или для начала обернуть текущее API (GetFiles/PutFiles), чтобы поддержать произвольный доступ через распаковку/скачивание во временный каталог.

Однако, «меня терзают смутные сомнения»…
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Люди, на дворе 2006 год. Купите себе нормальный интернет и качайте архивы с FTP. И хватит пудрить мозги.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Post by HaRT »

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

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

А что касается нормального интернета, так ведь и размеры выкладываемых архивов тоже уже не те, что десять лет назад. У меня на работе интернет что надо, однако качать десятки мегабайт, чтобы потом вытащить 1-2 небольших файла, всё-таки не хочется.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Апгрейд Plugin API

Post by John Doe »

А ведь интересная тема была...
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Апгрейд Plugin API

Post by HaRT »

John Doe wrote: интересная тема
Да, притом не требуется изобретать велосипед — предлагаемая архитектура была реализована ещё в COM'овских интерфейсах.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Апгрейд Plugin API

Post by John Doe »

Post Reply

Return to “Разработка плагинов”