Апгрейд Plugin API

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

Апгрейд Plugin API

Post by OCTAGRAM » Mon 04 Sep, 2006 09:49

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

Текущий интерфейс плагинов для 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: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Post by HaRT » Mon 04 Sep, 2006 09:58

Да, подобная унификация давно назрела.
Только вот непонятно, кто и когда будет всё это делать с обеих сторон API. :(

User avatar
Wave
Posts: 1706
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

Post by Wave » Mon 04 Sep, 2006 11:24

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

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

*злой я*
Пользуюсь ФАРом больше 15 лет © собирательный.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia

Post by Centaur » Mon 04 Sep, 2006 11:44

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

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

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: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Mon 04 Sep, 2006 13:06

Люди, на дворе 2006 год. Купите себе нормальный интернет и качайте архивы с FTP. И хватит пудрить мозги.

User avatar
HaRT
Moderator
Posts: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Post by HaRT » Mon 04 Sep, 2006 14:02

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

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

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

User avatar
John Doe
Бюрократ
Posts: 11074
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Апгрейд Plugin API

Post by John Doe » Fri 28 Aug, 2015 11:52

А ведь интересная тема была...

User avatar
HaRT
Moderator
Posts: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Апгрейд Plugin API

Post by HaRT » Fri 28 Aug, 2015 11:55

John Doe wrote: интересная тема
Да, притом не требуется изобретать велосипед — предлагаемая архитектура была реализована ещё в COM'овских интерфейсах.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11074
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Апгрейд Plugin API

Post by John Doe » Fri 28 Aug, 2015 14:26

Связанное обсуждение: viewtopic.php?f=6&t=6339, и ещё тут: viewtopic.php?p=59082#p59082

Post Reply

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

Who is online

Users browsing this forum: No registered users and 7 guests