"Виртуализировать" вьювер
- John Doe
- Бюрократ
- Posts: 13808
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
"Виртуализировать" вьювер
Фаровский вьювер умеет просматривать только реальные файлы.
И в случае плагиновой панели, при нажатии 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
И в случае плагиновой панели, при нажатии 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
Re: "Виртуализировать" вьювер
+ TreeViewJohn Doe wrote:Вьювер просто первым пришёл в голову.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: "Виртуализировать" вьювер
Это где оно бьёт?John Doe wrote: То что данные вынуждены писаться на диск бьёт ... по безопасности, ведь данные из TEMP'а доступны всем
Темп в профиле, ходить в профиль может только владелец и админ.
А если у кого-то темп в c:\temp - то ССЗБ.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: "Виртуализировать" вьювер
А я подобное для редактора предлагал:
http://bugs.farmanager.com/view.php?id=465
http://bugs.farmanager.com/view.php?id=465
- John Doe
- Бюрократ
- Posts: 13808
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Re: "Виртуализировать" вьювер
Владелец ведь не лично ходит. Мало ли какая бяка от его имени запущена. А кому надо может и административный доступ получить, и даже физический.DrKnS wrote:Темп в профиле, ходить в профиль может только владелец и админ.
Впрочем, от всего конечно не защитишься.
Предлагаю на этом пункте особо внимание не заострять, он не основной. Прежде всего интересует Удобство и Быстродействие.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: "Виртуализировать" вьювер
Может я чего не понимаю, но вьюер - это окошечко отображения данных, которое ездит по потоку данных с произвольным доступом туда-сюда. Если поток виртуализировать, а не жестко считать, что это файл, то и получится, что надо. Понятно, что я упрощаю, но не на порядок же должно усложниться.Max Rusov wrote:Боюсь только, что это на порядок повышает Сложность.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: "Виртуализировать" вьювер
Есть нюансы, со всеми любимой фичей дописывания в конец, но дело вообще не в этом. Вьювер - это только вершина айсберга. Тогда уж это логично использовать на всех уровнях (например: копирование из плагина в плагин). А гораздо ранее - виртуализировать файловую систему, для поддержки межплагинного взаимодействия, перенести API на итерфейсы... Но это, наверное, уже будет Far 4...
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: "Виртуализировать" вьювер
Max Rusov
Понятно. И то, о чем ты, оно на порядок, может, и сложнее (может). Но почему не начать-то с первого шага, с верхушки айсберга? Вопрос риторический, само собой. Предоставить плугу АПИ: плуг говорит Фару, вот тебе поток и его функи, покажи это во вьюере. Это найдет применение уже сейчас (я найду). Взаимодействие плагинов и ФС плагинов к этому не относится напрямую.
Понятно. И то, о чем ты, оно на порядок, может, и сложнее (может). Но почему не начать-то с первого шага, с верхушки айсберга? Вопрос риторический, само собой. Предоставить плугу АПИ: плуг говорит Фару, вот тебе поток и его функи, покажи это во вьюере. Это найдет применение уже сейчас (я найду). Взаимодействие плагинов и ФС плагинов к этому не относится напрямую.
- John Doe
- Бюрократ
- Posts: 13808
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Re: "Виртуализировать" вьювер
В любом случае, надо же с чего-то начинать.Max Rusov wrote:Вьювер - это только вершина айсберга.
Вьювер действително в некотором роде вершина, т.к. в большинстве других случаев можно ограничиться последовательным доступом к файлу, и обойтись без "раннего" открытия.
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: "Виртуализировать" вьювер
Судя по всему, если приделать в плагинах механизм open/read/seek для файлов, то и копирование файлов с плагинов можно сделать одно на всех вместо GetFilesW (с общим интерфейсом т.п.).
- HaRT
- Moderator
- Posts: 10829
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: "Виртуализировать" вьювер
А ещё в Винде для этих целей давным-давно есть интерфейс IStream, который вполне реально реализовать самому. И это открывает широкие возможности для интеграции.
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: "Виртуализировать" вьювер
Вот если бы все API было на интерфейсах, тогда - да. А так - как то выбивается...
- HaRT
- Moderator
- Posts: 10829
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: "Виртуализировать" вьювер
“Дорога в тысячу миль начинается с первого шага.”Max Rusov wrote:Вот если бы все API было на интерфейсах, тогда - да. А так - как то выбивается...
Фар есть инструмент, а не нянька. © 2009 DrKnS