Как стать автором
Обновить

Комментарии 34

В сырцах кути есть чудесный QZipReader
НЛО прилетело и опубликовало эту надпись здесь
Да там и writer есть.
Они незадокументированы и используются только для внутренних нужд, как то боязно использовать это в платном проекте с длительным циклом развития, так как не известно, что с ними будет дальше.
хорошо, когда у человека есть время и желание разбираться в чужих багах
Тут скорее не время и желание) а время и потребность. Так как без этого пришлось бы писать с нуля зип/анзип либу (проект требует этого).
Это основная фишка Open Source, ты можешь использовать чужой код, но если он окажется с багами — то тебе придется их исправлять. В итоге всем профит — код оттестирован еще одним разработчиком и выявленные баги исправлены.
Проведена отличная работа.
Мне бы наверное было лень :) Хотя, надо признать, что для нужд текущего своего проекта мне пришлось исправить уже около 10 багов в трех библиотеках, которые я использую)
«cам Qt поддерживает методы qCompress и qDecompress для упаковки.»
ничего он не поддерживает, просто у класса QByteArray есть возможность работы со сжатыми файлами, и по дефолту он работает с zlib бибилтекой. В самом Qt ничего нет для сжати и распаковки, но есть интерфейс.
doc.trolltech.com/4.6/qbytearray.html#qCompress
doc.trolltech.com/4.6/3rdparty.html#data-compression-library-version-1-2-3

Естественно это реализует только алгоритм сжатия, саи формат файлов уже тут не затрагивается.
Молодец.
А вообще, с зипом много вещей интересных бывает.
В свое время напоролся на косяк, что java.util.zip весьма странно работает с именами файлов в юникодной кодировке. Через этот пакет можно заархивировать и обратно, а вот WinZip уже обламывается на разорхивировании этих файлов. Долго гуглил/читал спеку ZIP — оказывается, там вообще мрак — юникод-имена могут хранится несколькими способами — в зависимости от архиватора.
К чему это я? А, ну так, на всякий случай — вдруг кто столкнется — ссыль на баг
в sun-oracle багтрекере
Также это исправлено в Apache Commons Compress.
Перед прочтеним до конца именно о кодировке и подумал, но конец оказался совсем иным ;)
а можно поподробнее про кодировку? а то есть подозрение, что автор статьи (и я в том числе, как входящий в ту же команду разработки) с этим столкнется
Если не забуду — сдеру завтра резолюцию по багу, если сильно интересно. Там, правда, java-specific. Как с этим в других языках не могу сказать.
Будем рады ;) Интересно поглядеть. Да и вообще можно сделать цикл статей «История одного бага». Т.к. баги бывают разные, интересные, иногда даже веселые. А самое интересное — его исправление. Автору большой респект!
Да, интересно, неважно что java, я думаю суть везде одна и таже. Ждем статью, спасибо!
Ну, на статью там не тянет, так, заметка.
Про кодировку я думаю не стокнемся, я чесно тебе скажу, не копал в эиу сторону, но QuaZIP вроде вполне прилично сам все гонит в нужную кодировку еще до создания архива. Да и не думаю что в этом приложении нам прям-таки необходимы будут русскоязычные имена файлов.
а вот я как раз не сомневаюсь)
Кстати не знаю как в QuaZIP, но в minizip есть одна очень досадная недоработка — он не проверяет пароль на правильность, а сразу пытается распаковать архив с заданным паролем.
Да так и есть, QuaZIP написан поверх MiniZIP.
Не знаю ни Qt, ни C, ничего не понимаю в зипах и шестнадцатиричных кодах. Но было безумно интересно читать. Очень славный стиль изложения.
забыл ссылку добавить
SDaB ZIP пришлось отбросить сразу, не смотря на то, что это отличная библиотека, ее код распространяется только под лицензией GPL, мне же нужно было встроить функционал в проприетарное приложение. К счастью QuaZIP оказался с двумя лицензиями GPL и LGPL.
Вот если бы вы и свою программу под GPL опубликовали, то возможно и ваши баги (а у кого их нет?) кто-нибудь пофиксил бы. Как и вы сейчас. А так — это вы фиксите чужие баги. За что вам конечно спасибо, и от меня как от косвенного пользователя.
Если бы это была моя программа, и писал бы я ее для себя, то я безусловно бы ее под GPL опубликовал, но, очевидно, что помимо любви к программированию, у меня как и у любого другого человека или животного, есть здоровая любовь к процессу приема пищи, по этому, писать приходится часто, то, что просят, и под той лицензией, под которой говорят.
Zip-формат как будто специально создан для того, чтобы возникла уйма разных, неудобных, и часто глючных и непрозрачных реализаций.

Когда мне таки пришлось работать с ним, я плюнул на все, взял в зубы zlib и реализовал формат-обертку сам. И нисколько не пожалел.
Так и выложили бы её, че там…
Чтобы даровать миру еще одну неудобную реализацию? :)
Я уж лучше сам при своем, не такая уж сложная вещь, чтобы среднестатистический програмист не мог реализовать по своему вкусу.
Интересная статья, спасибо.
А в minizip вы патчик тоже скинули?
Нет, еще не списывался с автором, но попробую.
А толку-то, если такое шифрование ни от чего по сути не защищает?
Использовали б уже WinZip«овский AES, там ничего сложного нет, и документация открыта (и поддерживается всеми нормальными реализацями)
Толк в потребности. Есть такая вещь как обратная совместимость, вот для нее родимой и писалось.
Кхе, парится столько времени ради обратной совместимости по защите, которая и защитой-то не является.
ммм, дело не в защите, а именно в обратной совместимости, которая позволяет итеративно и безболезненно обновлять программные комплексы по частям
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории