Comments 34
В сырцах кути есть чудесный QZipReader
+1
хорошо, когда у человека есть время и желание разбираться в чужих багах
+18
Тут скорее не время и желание) а время и потребность. Так как без этого пришлось бы писать с нуля зип/анзип либу (проект требует этого).
+5
Это основная фишка Open Source, ты можешь использовать чужой код, но если он окажется с багами — то тебе придется их исправлять. В итоге всем профит — код оттестирован еще одним разработчиком и выявленные баги исправлены.
+4
Мужик!
+16
Проведена отличная работа.
Мне бы наверное было лень :) Хотя, надо признать, что для нужд текущего своего проекта мне пришлось исправить уже около 10 багов в трех библиотеках, которые я использую)
Мне бы наверное было лень :) Хотя, надо признать, что для нужд текущего своего проекта мне пришлось исправить уже около 10 багов в трех библиотеках, которые я использую)
+1
«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
Естественно это реализует только алгоритм сжатия, саи формат файлов уже тут не затрагивается.
ничего он не поддерживает, просто у класса 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
Естественно это реализует только алгоритм сжатия, саи формат файлов уже тут не затрагивается.
+2
Молодец.
А вообще, с зипом много вещей интересных бывает.
В свое время напоролся на косяк, что java.util.zip весьма странно работает с именами файлов в юникодной кодировке. Через этот пакет можно заархивировать и обратно, а вот WinZip уже обламывается на разорхивировании этих файлов. Долго гуглил/читал спеку ZIP — оказывается, там вообще мрак — юникод-имена могут хранится несколькими способами — в зависимости от архиватора.
К чему это я? А, ну так, на всякий случай — вдруг кто столкнется — ссыль на баг
в sun-oracle багтрекере
Также это исправлено в Apache Commons Compress.
А вообще, с зипом много вещей интересных бывает.
В свое время напоролся на косяк, что java.util.zip весьма странно работает с именами файлов в юникодной кодировке. Через этот пакет можно заархивировать и обратно, а вот WinZip уже обламывается на разорхивировании этих файлов. Долго гуглил/читал спеку ZIP — оказывается, там вообще мрак — юникод-имена могут хранится несколькими способами — в зависимости от архиватора.
К чему это я? А, ну так, на всякий случай — вдруг кто столкнется — ссыль на баг
в sun-oracle багтрекере
Также это исправлено в Apache Commons Compress.
+3
Перед прочтеним до конца именно о кодировке и подумал, но конец оказался совсем иным ;)
0
а можно поподробнее про кодировку? а то есть подозрение, что автор статьи (и я в том числе, как входящий в ту же команду разработки) с этим столкнется
0
Если не забуду — сдеру завтра резолюцию по багу, если сильно интересно. Там, правда, java-specific. Как с этим в других языках не могу сказать.
+2
Будем рады ;) Интересно поглядеть. Да и вообще можно сделать цикл статей «История одного бага». Т.к. баги бывают разные, интересные, иногда даже веселые. А самое интересное — его исправление. Автору большой респект!
0
Да, интересно, неважно что java, я думаю суть везде одна и таже. Ждем статью, спасибо!
0
Про кодировку я думаю не стокнемся, я чесно тебе скажу, не копал в эиу сторону, но QuaZIP вроде вполне прилично сам все гонит в нужную кодировку еще до создания архива. Да и не думаю что в этом приложении нам прям-таки необходимы будут русскоязычные имена файлов.
0
Кстати не знаю как в QuaZIP, но в minizip есть одна очень досадная недоработка — он не проверяет пароль на правильность, а сразу пытается распаковать архив с заданным паролем.
0
Не знаю ни Qt, ни C, ничего не понимаю в зипах и шестнадцатиричных кодах. Но было безумно интересно читать. Очень славный стиль изложения.
+12
SDaB ZIP пришлось отбросить сразу, не смотря на то, что это отличная библиотека, ее код распространяется только под лицензией GPL, мне же нужно было встроить функционал в проприетарное приложение. К счастью QuaZIP оказался с двумя лицензиями GPL и LGPL.
Вот если бы вы и свою программу под GPL опубликовали, то возможно и ваши баги (а у кого их нет?) кто-нибудь пофиксил бы. Как и вы сейчас. А так — это вы фиксите чужие баги. За что вам конечно спасибо, и от меня как от косвенного пользователя.
Вот если бы вы и свою программу под GPL опубликовали, то возможно и ваши баги (а у кого их нет?) кто-нибудь пофиксил бы. Как и вы сейчас. А так — это вы фиксите чужие баги. За что вам конечно спасибо, и от меня как от косвенного пользователя.
-7
Если бы это была моя программа, и писал бы я ее для себя, то я безусловно бы ее под GPL опубликовал, но, очевидно, что помимо любви к программированию, у меня как и у любого другого человека или животного, есть здоровая любовь к процессу приема пищи, по этому, писать приходится часто, то, что просят, и под той лицензией, под которой говорят.
+9
Zip-формат как будто специально создан для того, чтобы возникла уйма разных, неудобных, и часто глючных и непрозрачных реализаций.
Когда мне таки пришлось работать с ним, я плюнул на все, взял в зубы zlib и реализовал формат-обертку сам. И нисколько не пожалел.
Когда мне таки пришлось работать с ним, я плюнул на все, взял в зубы zlib и реализовал формат-обертку сам. И нисколько не пожалел.
0
Интересная статья, спасибо.
А в minizip вы патчик тоже скинули?
А в minizip вы патчик тоже скинули?
0
А толку-то, если такое шифрование ни от чего по сути не защищает?
Использовали б уже WinZip«овский AES, там ничего сложного нет, и документация открыта (и поддерживается всеми нормальными реализацями)
Использовали б уже WinZip«овский AES, там ничего сложного нет, и документация открыта (и поддерживается всеми нормальными реализацями)
0
Sign up to leave a comment.
История одного бага или как я ZIP паролил