Leave a comment

fatoff October 31 2016, 20:17:22 UTC
Пробежался глазами, хотел что-то сказать про то, что битность платформы в данном случае не должно быть непреодолимым препятствием, лишь бы выводить продукт сжатия на диск своевременно, и иметь разумный размер входного буфера. Потом увидел, что автор поучаствовал в WinRar, и передумал что-то говорить: тут какая-то засада собственно в  перловом скрипте или библиотеке (де)компрессии.

Reply

anspa November 1 2016, 03:54:04 UTC
Да, разумеется. Итс окей, как говорят у нас на ист косте, мы открыты для обсуждений. Засада в старом формате zip архива, который имел определенные лимиты (ну кому в 89-м году пришло бы в голову что 65535 файлов в одном зипе может не хватить). Про 2Гб тоже, чисто ограничения формата. Т.е. просто там 32-битные длины в оффсетах и когда размер превышает лимит они тупо переполняются и начинают писать файл с нулевого оффсета. Zip-овцы давно уж придумали новый "64bit" формат. Проблема в том что товарищи, ответственные за Archive::Zip модуля для Perl его так и не имплементировали. Хотя распаковывать 64bit-ный формат можно через IO::Uncompress, модуля сжатия нет. Можно было б прикрутить вызов внешней утилиты, но это отстой и непереносимость между ОС. Вкратце так.

Reply

fatoff November 1 2016, 04:18:28 UTC
Не, естественно, второй мыслью было дочитать вашу мысль до конца. :D
Спасибо за развёрнутое объяснение. Рошаль большой молодец.

Reply

anspa November 1 2016, 11:51:53 UTC
Да не за что. =) Со мной никто не разговаривает, поэтому я иногда не прочь поговорить. А Женя, да, молодец. Спасибо. =)

Reply

fatoff November 1 2016, 17:28:52 UTC
Что ещё интересно, так используются ли многие головы процессора при сжатии многофайлового архива?

Reply

anspa November 1 2016, 17:55:18 UTC
Здравая идея. Я могу нарисовать примерчик где таки используются внутри одного процесса. Но, т.к. в данной конкретной системе на одном сервере бежит много параллельных работ одновременно, распараллеливать треды внутри одного процесса нет большого смысла. Вот получение тысяч файлов по http - то да, параллельно до сотни сессий делается.

Reply

anspa November 2 2016, 16:01:40 UTC
Дописал там про очередной фикс. Оказывается оно сообщало неверно uncompressedSize как compressedSize. Тоже ловушечка модуля.

Reply

fatoff November 4 2016, 23:44:24 UTC
Вот прямо сейчас копая опен-сорс за отсутствием нужных решений где-либо в точности расследованием программных ошибок и занят. А так хотелось побыстрее сделать proof of concept. Благородное дело, исправлять опенсорс. Но я до конца не смогу выправить, где копаю, больше в принцип вникаю, чтобы воспроизвести по частям.

Reply

anspa November 5 2016, 03:32:20 UTC
Hidden costs of free open source? =)

Reply

fatoff November 6 2016, 21:06:41 UTC
С другой стороны... github clone и понеслась.

Reply


Leave a comment

Up