Observer — распаковка файлов из различных контейнеров

Здесь можно обсудить ваш любимый плагин.
Ariman
Posts: 1263
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 34 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Тема для обсуждения плагина Observer.
Плагин предназначен только для распаковки файлов. Запаковка/редактирование архивов не планируется.

Хотелки/баги:

Известные проблемы:

Планируемые новые модули:

Если "ничего не работает", то прежде чем писать сюда:


Сторонние модули:
Dir — поддержка вывода команд dir и ls в качестве виртуального архива. (на версии 1.10 работать не будет в связи с изменением API модулей)
Inno Setup - поддержка файлов Inno Setup (сделан на основе innounp).

Скачать последнюю сборку
Last edited by Ariman on Tue 26 Nov, 2019 11:25, edited 1 time in total.

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Latest post of the previous page:

Ariman wrote:Конкретно в этом файле, проблема в том, что между разделом заголовков и содержимым должна пустая строка идти, а тут она отсутствует.
Так, стоп, а где конкретно там должна быть ещё пустая строка? С виду вроде всего хватает…

Или “This is a multi-part message in MIME format.” — это как раз body?
Ага, поставил перед этой строкой пустую, стало открываться. Но ведь не хочется так каждый файл от пользователей дорабатывать напильником.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: Observer — распаковка файлов из различных контейнеров

Post by Centaur »

Напиши разработчику инструмента, пусть поправит баг у себя. Желательно сразу в ДНК.

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Centaur wrote:Напиши разработчику инструмента, пусть поправит баг у себя. Желательно сразу в ДНК.
Мне импонирует Ваш неиссякаемый идеализм, но в повседневной деятельности я не чужд и сугубо практических соображений.
А разработчик инструмента — как уже было упомянуто, корпорация Майкрософт. Притом их-то эта ошибка явно будет интересовать в последнюю очередь, т.к. их браузер (IE) такие файлы за милую душу открывает.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1263
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 34 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Centaur wrote:Напиши разработчику инструмента, пусть поправит баг у себя. Желательно сразу в ДНК.
У мелкософта багов не бывает, это всё фичи. :ha:
HaRT wrote: т.к. их браузер (IE) такие файлы за милую душу открывает.
Браузеру в этом вопросе значительно проще. Он считает, что всё что на входе с расширением .mht и есть файл в нужном формате. И в крайнем случае можно ошибками плеваться.

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

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:
HaRT wrote:0. Очень долго читает файл на входе
А что при этом происходит на экране?
Ariman wrote:
HaRT wrote:Большие файлы всё-таки иногда лочит
Хм. Именно PDB модуль лочит?
Какие-то чудеса: сегодня уже и не тормозит вообще, и файлы не лочит. Возможно, это связано с тем, что вчера я перезагружал систему. Возможно, с чем-то другим, например, отсутствием активного сеанса отладки. Будут новые вводные — отпишусь.
Ariman wrote:Контрольные суммы добавлю, эта инфа есть. Только как это лучше отформатировать? В одну строку, в две или как нибудь иначе?
Я бы предпочёл в одну строку, а разделителем — символ табуляции.
Ariman wrote:Для каждого исходника есть некий UniqueID, это он и выводится. Могу убрать если не нужен.
Пусть остаётся, есть не просит. Предлагаю такой формат: UniqueID табуляция ChecksumType табуляция ChecksumValue табуляция FullPath.
Ariman wrote:
HaRT wrote:А есть ли возможность добавить альтернативный взгляд на файлы исходников, представив их, подобно модулям, деревом в {sources}?
Сделаю.
Спасибо!
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:Можно попытаться немного открутить назад (с включением режима через конфиг), но сразу предупреждаю, что появятся артефакты в виде фальшивых срабатываний.
А нельзя ли в коде завести перечень текстов body, перед которыми может не быть пустой строки? На настоящий момент включить в этот список только “This is a multi-part message in MIME format.” — тогда и практически значимый случай будет покрыт, и ложных срабатываний будет минимум.

Centaur
Не знаете ли, строка “This is a multi-part message in MIME format.” не из RFC ли? Подлежит ли она локализации?

18:25
Практика показала, что PSR в русскоязычной Win7 эту строку (“This is a multi-part message in MIME format.”) в MHT-файлах не локализует.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1263
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 34 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:Предлагаю такой формат: UniqueID табуляция ChecksumType табуляция ChecksumValue табуляция FullPath.
Ок. Сделаю пока так.
HaRT wrote:А есть ли возможность добавить альтернативный взгляд на файлы исходников, представив их, подобно модулям, деревом в {sources}?
Вопрос по поводу этих исходников. А что показывать в качестве содержимого таких файлов? Просто пустой файл?
HaRT wrote:Практика показала, что PSR в русскоязычной Win7 эту строку (“This is a multi-part message in MIME format.”) в MHT-файлах не локализует.
Эта строка не предназначена для показа в браузере. Это только для программ, которые multipart сообщения парсить не умеют. И локализация там без надобности.

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:Сделаю пока так.
Спасибо.
Ariman wrote:Вопрос по поводу этих исходников. А что показывать в качестве содержимого таких файлов? Просто пустой файл?
Конечно нет!
Подобно тому, как в файлах для модулей показываются данные по одному полю на строку, так и тут стоило бы показывать всё те же UniqueId, ChecksumType, ChecksumValue. Ну и ниже — (самый сок!) [Modules] — в каких модулях упомянут этот исходник, притом идентификация, само собой, по контрольной сумме. Реально?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1263
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 34 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:так и тут стоило бы показывать всё те же UniqueId, ChecksumType, ChecksumValue.
Вряд ли эти данные будут постоянные для каждого исходника. Вполне вероятно, что разные модули имеют разные версии одного и того же исходника (будет актуально для сорцов из рантайма, они скорее всего будут отличаться от файлов в текущем SDK, с которым личный код собран). Тогда уже имеет смысл заводить упомянутую секцию [Modules] и там писать актуальные чексуммы и id для каждого модуля.

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:Вряд ли эти данные будут постоянные для каждого исходника. Вполне вероятно, что разные модули имеют разные версии одного и того же исходника (будет актуально для сорцов из рантайма, они скорее всего будут отличаться от файлов в текущем SDK, с которым личный код собран). Тогда уже имеет смысл заводить упомянутую секцию [Modules] и там писать актуальные чексуммы и id для каждого модуля.
Вот тут выявилась существенная разница в понятиях. Когда я говорю, что в модуле используется такой-то исходник, я подразумеваю совокупность полного пути и контрольной суммы. Соответственно, в секции [Modules] я ожидаю увидеть все те и только те модули, которые упоминают в точности эту версию этого исходного файла.
Исходники же с разными контрольными суммами я бы хотел видеть отдельными элементами панели, пусть даже и по одинаковому пути.
Если же склеивать все исходники с одним путём в один элемент панели, то разбираться, в каких модулях использована действительно одинаковая версия, а в каких разная, становится несколько муторно.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1263
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 34 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:Исходники же с разными контрольными суммами я бы хотел видеть отдельными элементами панели, пусть даже и по одинаковому пути.
А как их в таком случае называть, если имя файла будет одинаковое?

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

Re: Observer — распаковка файлов из различных контейнеров

Post by Centaur »

HaRT wrote:Centaur
Не знаете ли, строка “This is a multi-part message in MIME format.” не из RFC ли? Подлежит ли она локализации?
Этот вопрос не имеет смысла. По RFC всё, что до первой пустой строки, является заголовками и должно следовать синтаксису заголовков. Эта строка не соответствует. Согласно синтаксису, описанному в RFC5322, такая строка не является заголовком. Но она и не может считаться началом тела, потому что между всеми заголовками и телом должна быть пустая строка. Таким образом, формально весь файл не является сообщением RFC5322.

Следуя генеральному принципу «либеральности в принимаемом и консервативности в производимом», логично игнорировать эту строчку при обработке и считать, что за ней могут следовать ещё заголовки.

Если же мы считаем эту строку частью тела (а конкрентее, преамбулой), то, конечно же, на неё не накладывается никаких ограничений (кроме общего требования, что тело состоит из строк (длиной не более 998 символов us-ascii 0x1..0x9, 0xB, 0xC, 0xE..0x7F), разделённых переводами строк CRLF (0xD 0xA)). Потребители должны игнорировать преамбулу; производители могут писать туда что-нибудь человекопонятное для тех, чья почточиталка (напоминаю, формат RFC822 исходно почтовый) ещё не умеет MIME.

Как бы то ни было, есть два пути: либо игнорировать строчку (независимо от того, является ли она кривым заголовком или началом кривого тела), либо отказываться обрабатывать всё сообщение.

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:
HaRT wrote:Исходники же с разными контрольными суммами я бы хотел видеть отдельными элементами панели, пусть даже и по одинаковому пути.
А как их в таком случае называть, если имя файла будет одинаковое?
Одинаково и называть; вон ProcList сколько лет так делает и ничего, до сих пор жив. А вот внутри, под капотом, как раз можно использовать любезно предоставляемый UniqueId.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1263
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 34 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:А нельзя ли в коде завести перечень текстов body, перед которыми может не быть пустой строки? На настоящий момент включить в этот список только “This is a multi-part message in MIME format.” — тогда и практически значимый случай будет покрыт, и ложных срабатываний будет минимум.
Это не очень согласуется с логикой кода библиотеки. Не хочется костыли лепить
HaRT wrote:Одинаково и называть; вон ProcList сколько лет так делает и ничего, до сих пор жив. А вот внутри, под капотом, как раз можно использовать любезно предоставляемый UniqueId.
. Теоретически можно попробовать. Одинаковые имена обычно создают проблему, если файлы планируется распаковывать пачками. Но, судя по всему, это не тот случай.

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

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:Не хочется костыли лепить
Не критично. В конце концов, эти MHT, как выяснилось, успешно открываются достаточно свежим MailView.
Ariman wrote:Одинаковые имена обычно создают проблему, если файлы планируется распаковывать пачками.
А может ли плагин при копировании со своей панели управлять логикой обработки нештатных ситуаций (в частности, переименовывать при конфликтах имён)?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1263
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 34 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:Не критично. В конце концов, эти MHT, как выяснилось, успешно открываются достаточно свежим MailView.
Ну смотрите сами. Моё предложение по поводу опции, которая будет разрешать отсутствие пустой строки между заголовком и телом, в силе. Я так подозреваю, что в MailView этот вариант разрешён по умолчанию, поэтому и открывает файлы. Вряд ли там список разрешённых строк для этого забит.
HaRT wrote:А может ли плагин при копировании со своей панели управлять логикой обработки нештатных ситуаций (в частности, переименовывать при конфликтах имён)?
Он этим занимается на стадии чтения списка файлов. К одинаковым имена циферки добавляются, чтобы файлы различать.

Post Reply

Return to “Обсуждение плагинов”