Контентные плагины с внешним хранением информации.
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Написание плагинов для Total Commander

#1: Контентные плагины с внешним хранением информации. Author: Lev PostPosted: Fri Jun 22, 2007 23:14
    —
Мое видение внутренних принципов работы контентных плагинов (или Почему не развивается 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

#2:  Author: fundukLocation: Санкт-Петербург PostPosted: Sat Jun 23, 2007 15:26
    —
Нууууу. Вот если ты переименовываешь через твой плагин файлы, то в инфофайле всё стирать надо, т.е. надо как-то отслеживать, нажал ли юзер Ок в ИГП.
Некоторую информацию, особенно результат регэкспа, применённого к имени файла, хранить в инфофайле вовсе нецелесообразно.

Далее: есть два способа хранить инфо - всё в одном файле или "файл на папку".
Первый вариант: если очень много файлов, или они постоянно обновляются (например, у меня на компе 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?

#3: Re: Контентные плагины с внешним хранением информации. Author: BatyaLocation: Москва, Россия PostPosted: Sat Jun 23, 2007 19:38
    —
Lev wrote:
Реализация данных принципов работы, по моему мнению, позволит забыть о моем устаревшем ScriptContent Plugin'е Smile

Блин, вот так всегда - "лучшее - враг хорошего" Sad
И я бы сказал - "очень хорошего".

#4:  Author: cupuyc PostPosted: Sat May 14, 2011 12:20
    —
Может немножко не в тему, но это только на первый взгляд.
Вообще, мне кажется, Ghisler избрал далеко не самый лучший способ показа доп. инфы о файлах - в режиме таблицы. Лично я его никогда не использую НИГДЕ! Во-первых это СИЛЬНО замедляет навигацию (особенно когда нужно проходить без показа промежуточные директории), во-вторых - резко снижает читабельность.
А учитывая что в одной директории могут храниться разные файлы, а для них актуальна РАЗНАЯ доп. инфа так удобства вообще стремятся к нулю.
Более актуальным способом вывода доп. инфы я вижу в том, как это было сделано еще во времена DOS в DosNavigator-е. Там внизу основного экрана была дополнительная панель, на которую выводилась вся дополнительная инфа (размер, атрибуты, причем и в режиме выделения).
а если данную панель слелать многовкладочной и вывести туда Lister-плугин так вообще сказка получится.
В пользу предлагаемого способа говорит не только скорость но и то, что в 99% случаев(по крайней мере у меня) нужна доп инфа по ДАННОМУ КОНКРЕТНОМУ файлу.
Но автору, похоже, этого не понять... Он зациклился на 2-х панелях... А жаль.... Sad

#5:  Author: ask-rusLocation: Russian Federation PostPosted: Sat May 14, 2011 12:37
    —
cupuyc wrote:
А учитывая что в одной директории могут храниться разные файлы, а для них актуальна РАЗНАЯ доп. инфа так удобства вообще стремятся к нулю.

Совсем к нулю не стремятся - есть всплывающие подсказки с выводом в них контентной инфы.

#6:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat May 14, 2011 12:42
    —
cupuyc wrote:
Может немножко не в тему, но это только на первый взгляд.

И на второй тоже. Искусственный подъём темы. Не имеет отношения ни к подфоруму, ни к текущей теме, ни — по большому счёту — к WDX- плагинам. С выяснением того, что понять и что не понять автору — пожалуйста, к нему на оффорум. А на русском форуме обсуждать гипотетическую идеологию, несовместимую с базовой идеологией TC (колонки, подсказки и пр.), считаю пустой тратой времени. Толку — ноль.
А если нужна инфа по данному конкретному файлу — на то есть краткий режим плюс подсказка, настроенная для данного типа файлов. Плюс стандартная строка состояния TC. И ничего лишнего.
В DN (в котором я работал много лет) была не дополнительная панель, а расширенная строка состояния, где одновременно отображалась информация и о текущем объекте, и о выделенных — это да. Но при чём тут WDX-плагины и — тем более — Листер?
И про многопанельность на форуме уже говорено-переговорено. Пора бы прекратить (о чём, кстати, уже говорилось здесь).
cupuycзамечание за нарушение п. 9 правил форума. Прекращаем оффтоп. Последующие посты в том же ключе будут удаляться.



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group