Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Контентные плагины с внешним хранением информации.

 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Fri Jun 22, 2007 23:14    Post subject: Контентные плагины с внешним хранением информации. Reply with quote

Мое видение внутренних принципов работы контентных плагинов (или Почему не развивается ScriptContent Plugin?).

Написав несколько контентных плагинов, я составил некоторое свое представление (возможно неправильное) о необходимых принципах их работы.

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

Место хранения полученной информации - полученная информация может храниться во временной директории системы (или поддиректории в ней), в директории плагина, в каждой из просматриваемых директорий (как description.ini). Желательно иметь возможность выбора между вариантами места хранения информации. В настройках плагина должен быть соответствующий изменяемый ключ.

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

Имя файла с информацией - желательно иметь возможность задания имени файла, и подключать нужный по ключу. В разных файлах можно хранить разные наборы выдаваемой информации.

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

Получение файла с информацией можно поручить внешней программе, плагину-пакеру, скрипту и т.п. вызываемому по кнопке, по входу в директорию и т.д., тогда на долю плагина останется только чтение инфофайла и заполнение соответствующих полей, верификация при этом способе опускается (по образу работы с descript.ion)

Реализация данных принципов работы, по моему мнению, позволит забыть о моем устаревшем ScriptContent Plugin'е Smile
Естественно могут быть и плагины время получения информации которыми пренебрежимо мало и все эти ухищрения с сохранением-чтением инфы им не нужны.

-------
Попытаюсь обрисовать ТЗ на простейший плагин читалку полей, файлы будем создавать внешними методами
plugin.ini - хранится в директории плагина, наверно, для простейшей читалки можно обойтись и без него
[Options]
InfoFileName = "content.inf"

[content.inf]
Fields=10 'для данного имени инфофайла зарезервировано 10 полей
StoragePlace = 1 'храним инфофайлы в каждой из директорий
StorageMethod = 1 'храним plain text
Verification = 0 'не проверяем свежесть информации и не перезаписываем её
PlainTextSeparator = "|"

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

---
Спасибо за внимание
lev
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1503
Location: Санкт-Петербург

Post (Separately) Posted: Sat Jun 23, 2007 15:26    Post subject: Reply with quote

Нууууу. Вот если ты переименовываешь через твой плагин файлы, то в инфофайле всё стирать надо, т.е. надо как-то отслеживать, нажал ли юзер Ок в ИГП.
Некоторую информацию, особенно результат регэкспа, применённого к имени файла, хранить в инфофайле вовсе нецелесообразно.

Далее: есть два способа хранить инфо - всё в одном файле или "файл на папку".
Первый вариант: если очень много файлов, или они постоянно обновляются (например, у меня на компе 4737 муз. файла с тегами, в неделю появляется ещё где-то 20-100), то возникает масса вопросов. Как добавлять в инфофайл новую инфу? Чтобы её потом удобно читать, надо упорядочивать как-нибудь, поддерживать структуру (а для этого надо весь файл в память считать). При этом я, например, использую много полей - если в plain text, то не меньше 100 байт на песню, а если с путём файла хранить, то 180. Т.о., при моих скромных потребностях (это я вам посчитал в 4737 файлах ~2400 лосслесс) инфофайл будет весить 832 КиБ и рост 3,5 КиБ в неделю (хотя на самом деле, я использую символические ссылки для двойного представления музыки - по исполнителям и по жанрам - а потому будет файл в два раза больший), а у среднего меломана будут все 20000 мп3, что даст 3,5 МиБ, и рост 20 КиБ в неделю (это я сужу по своей локальной сети). Но это рассмотрен пример plain text инфофайла, с добавлением методом вставки.
Если же делать БД, то получится так же тормознуто, как в плагине Media. Он, к тому же, не рассчитан на автоматическое добавление новых кодеков, а здесь надо бы автоматически добавлять новых исполнителей, новые альбомы...

Второй вариант: инфофайлов много. Где их хранить? Если в той же папке, к которой они относятся, то это будет как thumbs.db, только хуже - мало того, что друзьям много папок так просто не скопируешь (надо копировать с шаблоном) и не расшаришь в локальной сети (надо их делать скрытыми), так их ещё и эксплорер не понимает. Ладно - это не главное. Главное, что их надо постоянно открывать/закрывать (долго) или держать в памяти (жрёт память, может не записать изменения в инфофайле на диск).

В любом случае может легко случиться прикол: в ИГП плагин вызывается для некоторого файла (хуже - для тысячи) в первый раз, записывает о нём инфу в инфофайл, а после этого этот файл переименовывается в ИГП и записанная инфа оказывается мёртвой.

P.S.: и при чём тут SCP?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2185
Location: Москва, Россия

Post (Separately) Posted: Sat Jun 23, 2007 19:38    Post subject: Re: Контентные плагины с внешним хранением информации. Reply with quote

Lev wrote:
Реализация данных принципов работы, по моему мнению, позволит забыть о моем устаревшем ScriptContent Plugin'е Smile

Блин, вот так всегда - "лучшее - враг хорошего" Sad
И я бы сказал - "очень хорошего".
Back to top
View user's profile Send private message
cupuyc



Joined: 12 Jan 2010
Posts: 9

Post (Separately) Posted: Sat May 14, 2011 12:20    Post subject: Reply with quote

Может немножко не в тему, но это только на первый взгляд.
Вообще, мне кажется, Ghisler избрал далеко не самый лучший способ показа доп. инфы о файлах - в режиме таблицы. Лично я его никогда не использую НИГДЕ! Во-первых это СИЛЬНО замедляет навигацию (особенно когда нужно проходить без показа промежуточные директории), во-вторых - резко снижает читабельность.
А учитывая что в одной директории могут храниться разные файлы, а для них актуальна РАЗНАЯ доп. инфа так удобства вообще стремятся к нулю.
Более актуальным способом вывода доп. инфы я вижу в том, как это было сделано еще во времена DOS в DosNavigator-е. Там внизу основного экрана была дополнительная панель, на которую выводилась вся дополнительная инфа (размер, атрибуты, причем и в режиме выделения).
а если данную панель слелать многовкладочной и вывести туда Lister-плугин так вообще сказка получится.
В пользу предлагаемого способа говорит не только скорость но и то, что в 99% случаев(по крайней мере у меня) нужна доп инфа по ДАННОМУ КОНКРЕТНОМУ файлу.
Но автору, похоже, этого не понять... Он зациклился на 2-х панелях... А жаль.... Sad
Back to top
View user's profile Send private message
ask-rus



Joined: 10 Nov 2009
Posts: 2075
Location: Russian Federation

Post (Separately) Posted: Sat May 14, 2011 12:37    Post subject: Reply with quote

cupuyc wrote:
А учитывая что в одной директории могут храниться разные файлы, а для них актуальна РАЗНАЯ доп. инфа так удобства вообще стремятся к нулю.

Совсем к нулю не стремятся - есть всплывающие подсказки с выводом в них контентной инфы.
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 8530
Location: Россия, Саратов

Post (Separately) Posted: Sat May 14, 2011 12:42    Post subject: Reply with quote

cupuyc wrote:
Может немножко не в тему, но это только на первый взгляд.

И на второй тоже. Искусственный подъём темы. Не имеет отношения ни к подфоруму, ни к текущей теме, ни — по большому счёту — к WDX- плагинам. С выяснением того, что понять и что не понять автору — пожалуйста, к нему на оффорум. А на русском форуме обсуждать гипотетическую идеологию, несовместимую с базовой идеологией TC (колонки, подсказки и пр.), считаю пустой тратой времени. Толку — ноль.
А если нужна инфа по данному конкретному файлу — на то есть краткий режим плюс подсказка, настроенная для данного типа файлов. Плюс стандартная строка состояния TC. И ничего лишнего.
В DN (в котором я работал много лет) была не дополнительная панель, а расширенная строка состояния, где одновременно отображалась информация и о текущем объекте, и о выделенных — это да. Но при чём тут WDX-плагины и — тем более — Листер?
И про многопанельность на форуме уже говорено-переговорено. Пора бы прекратить (о чём, кстати, уже говорилось здесь).
cupuycзамечание за нарушение п. 9 правил форума. Прекращаем оффтоп. Последующие посты в том же ключе будут удаляться.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group