"Виртуализировать" вьювер

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

"Виртуализировать" вьювер

Post by John Doe »

Фаровский вьювер умеет просматривать только реальные файлы.
И в случае плагиновой панели, при нажатии F3 данные вначала пишутся во временный файл на диске, и уже потом открываются вьювером.

"Файловость" вьювера довольно сильно ограничивает наши возможности.

1) Например в случае распаковки большого файла мы не начнём его смотреть до тех пор, пока он не распакуется в %TEMP% целиком. На самом деле данные (по крайней мере начало файла) доступны сразу же, просто вьювер вызывается только после полной распаковки.
Файл может быть огромен, а пользователю возможно нужно только начало (например чтобы понять в каком формате файл).

2) Допустим мы пытаемся просмотрить гиговый файл, находящийся ISO-образе. Данные вообще-то никак не запакованы, но тем не менее плагин не может вызвать вьювер до тех пор пока не продублирует в TEMP всё до последнего байта.

3) Очевидно что подобные ограничения касаются не только архиваторных плагинов.
В первую очередь вспоминается ftp (например невозможно просмотреть log-файл, не скачав его целиком).

4) То что данные вынуждены писаться на диск бьёт не только по быстродействию, но и по безопасности, ведь данные из TEMP'а доступны всем (не говоря о том, что фар их не всегда потом удаляет).

Хотелось бы чтобы вьювер мог получать данные от плагинов (а) без посредства временных файлов, (б) "на лету", не дожидаясь полной распаковки, и (в) не последовательно, а произвольно, т.е. мог запросить сразу середину или конец.

Безусловно всё зависит от природы данных, и а/б/в возможно не всегда.

P.S.
Вьювер просто первым пришёл в голову.
Можно развивать идею дальше, например затронуть фаровский поиск, ведь в процессе поиска по содержимому (Containing text:) все плагиновые данные извлекаются в файлы, и это может в сотни раз замедлить поиск (не говоря уже о том, что не всё получается записать в файл по причине "некорректности" имён плагиновых объектов).

Update
См. также: http://bugs.farmanager.com/view.php?id=56, http://forum.farmanager.com/viewtopic.php?f=8&t=1758
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: "Виртуализировать" вьювер

Post by Skirda »

John Doe wrote:Вьювер просто первым пришёл в голову.
+ TreeView
We are the Borg. You will be assimilated.
So Say We All!
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: "Виртуализировать" вьювер

Post by DrKnS »

John Doe wrote: То что данные вынуждены писаться на диск бьёт ... по безопасности, ведь данные из TEMP'а доступны всем
Это где оно бьёт?
Темп в профиле, ходить в профиль может только владелец и админ.
А если у кого-то темп в c:\temp - то ССЗБ.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: "Виртуализировать" вьювер

Post by NightRoman »

А я подобное для редактора предлагал:
http://bugs.farmanager.com/view.php?id=465
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: "Виртуализировать" вьювер

Post by John Doe »

DrKnS wrote:Темп в профиле, ходить в профиль может только владелец и админ.
Владелец ведь не лично ходит. Мало ли какая бяка от его имени запущена. А кому надо может и административный доступ получить, и даже физический.
Впрочем, от всего конечно не защитишься.
Предлагаю на этом пункте особо внимание не заострять, он не основной. Прежде всего интересует Удобство и Быстродействие.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: "Виртуализировать" вьювер

Post by Max Rusov »

Боюсь только, что это на порядок повышает Сложность.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: "Виртуализировать" вьювер

Post by NightRoman »

Max Rusov wrote:Боюсь только, что это на порядок повышает Сложность.
Может я чего не понимаю, но вьюер - это окошечко отображения данных, которое ездит по потоку данных с произвольным доступом туда-сюда. Если поток виртуализировать, а не жестко считать, что это файл, то и получится, что надо. Понятно, что я упрощаю, но не на порядок же должно усложниться.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: "Виртуализировать" вьювер

Post by Max Rusov »

Есть нюансы, со всеми любимой фичей дописывания в конец, но дело вообще не в этом. Вьювер - это только вершина айсберга. Тогда уж это логично использовать на всех уровнях (например: копирование из плагина в плагин). А гораздо ранее - виртуализировать файловую систему, для поддержки межплагинного взаимодействия, перенести API на итерфейсы... Но это, наверное, уже будет Far 4...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: "Виртуализировать" вьювер

Post by NightRoman »

Max Rusov
Понятно. И то, о чем ты, оно на порядок, может, и сложнее (может). Но почему не начать-то с первого шага, с верхушки айсберга? Вопрос риторический, само собой. Предоставить плугу АПИ: плуг говорит Фару, вот тебе поток и его функи, покажи это во вьюере. Это найдет применение уже сейчас (я найду). Взаимодействие плагинов и ФС плагинов к этому не относится напрямую.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: "Виртуализировать" вьювер

Post by John Doe »

Max Rusov wrote:Вьювер - это только вершина айсберга.
В любом случае, надо же с чего-то начинать.
Вьювер действително в некотором роде вершина, т.к. в большинстве других случаев можно ограничиться последовательным доступом к файлу, и обойтись без "раннего" открытия.
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: "Виртуализировать" вьювер

Post by Ariman »

Судя по всему, если приделать в плагинах механизм open/read/seek для файлов, то и копирование файлов с плагинов можно сделать одно на всех вместо GetFilesW (с общим интерфейсом т.п.).
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: "Виртуализировать" вьювер

Post by HaRT »

А ещё в Винде для этих целей давным-давно есть интерфейс IStream, который вполне реально реализовать самому. И это открывает широкие возможности для интеграции.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: "Виртуализировать" вьювер

Post by Max Rusov »

Вот если бы все API было на интерфейсах, тогда - да. А так - как то выбивается...
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: "Виртуализировать" вьювер

Post by HaRT »

Max Rusov wrote:Вот если бы все API было на интерфейсах, тогда - да. А так - как то выбивается...
“Дорога в тысячу миль начинается с первого шага.”
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Предложения и идеи”