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 

В TC 11.00 заменена библиотека для работы с ZIP

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Hobo



Joined: 06 Jul 2007
Posts: 45

Post (Separately) Posted: Fri May 05, 2023 18:27    Post subject: В TC 11.00 заменена библиотека для работы с ZIP Reply with quote

Quote:
New functions and fixes in Total Commander 11.00:
File operations:
- High speed packing and unpacking of ZIP and GZ files with modified libdeflate library

Ранее использовалась библиотека InfoZIP. Кстати, в "About" до сих пор -- INFO-ZIP.

Лично для меня это -- самое значимое изменение, потому что ежедневно пользуюсь обновлением, распаковкой, синхронизацией ZIP-архивов. А что, если после перехода на 11-ю версию, в один прекрасный день мои наработки превратятся в...? Как она будет работать с архивами от 10-й?

Решил проверить. Использовались версии 10.52 (далее -- 10) и 11.00b1 (11).

Запаковал обеими версиями каталог с файлами .html, .png, .jpg. Примерно 1,5 тыс. файлов. Причём в .html в качестве символа новой строки используется не пара CRLF, а просто LF. У 11-й архив оказался примерно на 0.1% меньше (про скорость пока не важно). Т.е. в результате получаются разные архивы.

Распаковал оба архива обеими версиями и сравнил по содержимому. Всё идентично оригиналу.

Команда unzip -Z <arc.zip> после размера файла выводит его тип (t - текст, b - двоичный), как здесь:
Code:
Archive:  tc1100x32_b1.exe
Zip file size: 5510920 bytes, number of entries: 7
-rw-a--     2.0 fat     1142 t- stor 23-May-03 11:00 FILE_ID.DIZ
-rw-a--     2.0 fat  5281931 b- stor 23-May-03 11:00 INSTALL.CAB
-rw-a--     2.0 fat     4677 t- stor 23-May-03 11:00 INSTALL.INF
-rw-a--     2.0 fat    56756 t- stor 23-May-03 11:00 INSTALL.LNG
-rw-a--     2.0 fat     4217 t- stor 23-May-03 11:00 LIESMICH.TXT
-rw-a--     2.0 fat     3407 t- stor 23-May-03 11:00 README.TXT
-rw-a--     2.0 fat       89 t- stor 23-May-03 11:00 TotalCommander.URL
7 files, 5352219 bytes uncompressed, 5352219 bytes compressed:  0.0%

Выяснилось, что для .html файлов библиотеки по-разному решают, какого типа файл, двоичный или текстовый. Иногда их мнения совпадают, иногда нет. Отсюда и разница в размере архива. Видимо, тут ещё дело в том, что .html файлы у меня в unix-формате.

И меня по-прежнему "терзают смутные сомнения", а что, если разница не только в этом, и в один прекрасный день...?
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Fri May 05, 2023 19:43    Post subject: Reply with quote

Hobo
Не поясните подробнее, что же такого не происходящего сейчас может произойти в один прекрасный день и что для предотвращения этого дня предлагается предпринять?
И вас, похоже, не озаботил (даже чисто теоретически) обратный вопрос — поддержка вновь созданных архивов, к примеру, старыми версиями TC...
(Как по мне, так все эти опасения примерно в одну цену и никакими фактами на данный момент не подтверждаются.)
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Hobo



Joined: 06 Jul 2007
Posts: 45

Post (Separately) Posted: Sat May 06, 2023 14:25    Post subject: Reply with quote

Avada wrote:
Hobo
Не поясните подробнее, что же такого не происходящего сейчас может произойти в один прекрасный день и что для предотвращения этого дня предлагается предпринять?

Допустим, достал я из архива какой-нить старый ZIP, обновил в нём пару файлов, положил его обратно и забыл на некоторое время. А потом оказалось, что обновился он некорректно.

Тут, конечно, дело привычки. Я лет двадцать пользуюсь TC для работы с ZIP-ами. И всё это время был InfoZIP. И тут -- БАЦ! Ни с того, ни с сего -- другая библиотека. Вот и мандражнул децл и стал проверять. Да, с новой библиотекой даже на глаз, даже на HDD видна, хоть и небольшая, но разница в скорости. Но это как с методами сжатия по умолчанию и 9. Разница есть, но смысла особого от этого нет. А вот смысл в сохранности данных есть.

Оставаться на 10.* предотвратит. Но всё равно когда-то придётся обновляться.
Quote:
И вас, похоже, не озаботил (даже чисто теоретически) обратный вопрос — поддержка вновь созданных архивов, к примеру, старыми версиями TC...

Я, наверно, неточно написал ранее. Было сделано два архива (10 и 11). Оба были распакованы обеими версиями TC и unzip-ом, который Info-ZIP. Результат распаковки сравнивался с оригиналом. Всё, казалось бы гут, но... Вот вам одна непоняточка:

В моём случае из ~400 .html libdeflate признал двоичными ~250, Info-ZIP не признал ни одного. Напомню, что все .html -- в unix-формате новой строки. Дело, естественно происходит в мирке, где CRLF.

У unzip-а есть опция -a:
Quote:
convert text files. Ordinarily all files are extracted exactly as they are stored (as ‘‘binary’’ files). The −a option causes files identified by zip as text files (those with the ‘t’ label in zipinfo listings, rather than ‘b’) to be automatically extracted as such, converting line endings, end-of-file characters and the character set itself as necessary. (For example, Unix files use line feeds (LFs) for end-of-line (EOL) and have no end-of-file (EOF) marker; Macintoshes use carriage returns (CRs) for EOLs; and most PC operating systems use CR+LF for EOLs and control-Z for EOF.

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

Есть же в настройках FTP, какие файлы передавать как текстовые, а какие нет.

Вот.

Как на этот флаг смотрит(ел) TC -- неизвестно. Конечно, если архив не будет покидать мира CRLF или распаковщику будет плевать на флаг "t", то, скорее всего, ничего не произойдёт.

Quote:
(Как по мне, так все эти опасения примерно в одну цену и никакими фактами на данный момент не подтверждаются.)

Я не говорил, что "всё пропало" и, конечно, посмотрел что это за libdeflate. Да, это достаточно проверенный проект, всё с ним хорошо.
"Но осадочек остался..."
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon May 08, 2023 01:55    Post subject: Reply with quote

Смена библиотеки не означает смену формата. Deflate — это как раз формат, используемый в ZIP-архивации, и название библиотеки libdeflate всячески намекает, что именно этот алгоритм она и реализует. То есть никаких проблем совместимости не ожидается. Формат ZIP — это сжатие без потерь. То есть какими бы ни были данные, как бы их ни определяла библиотека, они после распаковки всегда обязаны оставаться точной копией оригинала, до каждого бита. Если обнаружится хотя бы минимальное несовпадение — в том числе смена формата концов строк — это будет повод для незамедлительного репорта Гислеру. (Точной идентичности самого ZIP-архива, разумеется, никто не обещает, но в этом обычно нужды и не возникает.)

unzip -a — это некий расширенный режим, где распаковываемые файлы подвергаются дополнительной обработке. По умолчанию эта опция не применяется и, если честно, я ни разу не слышал, чтобы кто-то ей вообще пользовался. Задачей архивации, повторюсь, обычно является сохранение абсолютно точной копии. Но если есть необходимость обеспечить совместимость с прежним поведением режима автокоррекции, то необходимо зарепортить это на оф. форум.

Естественно, сам по себе переход на другую библиотеку может привести к ошибкам, но для того и существует этап бета-тестирования, на котором ошибки предполагается обнаруживать, работая с некритичными данными, и исправлять.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Hobo



Joined: 06 Jul 2007
Posts: 45

Post (Separately) Posted: Mon May 08, 2023 16:19    Post subject: Reply with quote

Судя по Диспетчеру задач Win10 32-bit, 11b1 не освобождает память после упаковки. Заметил на ~150 Mb, ~5000 файлов. После нескольких упаковок TC по потреблению памяти приблизился к Firefox. М.б., я что-то делаю не так.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon May 08, 2023 16:41    Post subject: Reply with quote

У меня не получается воспроизвести. Распаковал сначала 5 ZIP-архивов суммарным объёмом в 8,5 гигов и 3000 файлов. Потом дополнительно распаковал 870 мелких архивов на 1-2 файла каждый, суммарно на 450 Мб. Существенного изменения в потреблении памяти не заметил ни в одном из показателей.

Сразу после запуска
После распаковки больших архивов
После распаковки маленьких архивов

Виден незначительный рост Working set и Private Bytes, но большая его часть происходила не при распаковке, а когда я по каталогам гулял в поисках архивов.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Hobo



Joined: 06 Jul 2007
Posts: 45

Post (Separately) Posted: Mon May 08, 2023 17:16    Post subject: Reply with quote

Ключевое слово: упаковка.

~30 тыс. файлов, ~800 Mb.

После первой упаковки: https://imgur.com/EipzHXs
После второй: https://imgur.com/NWVHa3r

На тестировании/распаковке всё гут.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon May 08, 2023 17:39    Post subject: Reply with quote

Пардоньте, не вчитался…
С упаковкой подтверждаю. Не как Firefox, конечно, но да, стабильно растёт и не освобождается. В 64-битной, кстати, тоже, причём значительно активнее.

Добавлено спустя 6 минут:

Закинул.
https://www.ghisler.ch/board/viewtopic.php?t=78939
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun May 14, 2023 09:28    Post subject: Reply with quote

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

А вот насчёт ZIP-контейнера у разных упаковщиков, насколько я знаю, были разные подходы к записи тех или иных метаданных (в частности, юникодных имён файлов)...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы 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