본문 바로가기

압축

(3)
WEBDAV 에서 받은 파일이 다 깨진거 같을때 ?! 어느날, 기존에 WEBDAV 에 올려 뒀던 파일을 내려 받고 나서 열려고 하니 뭔가 이상해 지고, 파일 내용이 단순 텍스트로만 된 것이 아래 이미지 처럼 보이는 경우를 격는다면? 혹시 이런 경우가 생기는 것은 먼저 HEX editor 로 아래 2 바이트 코드가 0x78 과 0x9C 로 시작 되는지 확인 해 보는 것이 좋습니다. 만약 이 경우는 WEBDAV 서버로 올린 클라이언트가 deflate 로 압축해서 보냈거나, 서버가 내용을 deflate 로 압축 한상태를 받는 클라이언트가 이를 인지 하지 못하고 그대로 파일을 받은 경우 입니다. 이 0x78 과 0x9C 는 zlib 의 compress 를 거치면 만들어 지는 Magic header 이며, 이 경우 단순 deflate 를 거친 버퍼를 그대로 저장하는..
LZSS , LZMA(T) 압축 비교. 기존에 사용하던 LZSS 알고리즘 대신 LZMA(T) 알고리즘을 사용해 보았습니다. 코드는 C 로 만들어 져 있는 상태에서 LZSS 와 동일하게 obj 를 생성하여 함께 빌드 하였습니다. 352KB 의 단순한 구조의 BMP 를 가지고 압축을 비교 해 본 결과 LZSS 와 LZMA(T)는 많은 차이가 발생하였습니다. LZMA(T) 가 7zip 에서 사용하는 구조인 것을 감안할때 기대했던 만큼 높은 압축율을 보여 주는 듯 합니다. LZSS : 352KB -> 142KB (40% 만큼 크기 감소) LZMA(T) : 352KB -> 100KB (28% 만큼 크기 감소) 속도에 있어서는 CPU 가 빠른 이유로 차이를 못 느낀다고는 하지만, 일단 압축율을 비교해 보았을 때 LZMA(T) 의 압축알고리즘은 현존 최고..
64bit 실행 파일 압축은 어떻게 ? : mpress v2.12 기존에 Ojbect Pascal 로 빌드된 실행 파일들은 UPX 를 이용하여 striping 과 symbol remove 를 수행 하였습니다만, 64bit 로 넘어 오면서 만들어진 실행 파일들에 대해 UPX 를 적용하기가 어려웠습니다. 그래서 찾아 보던 중 mpress 가 x86.64bit 실행파일들을 지원 한다는 것을 알게 되었고, 이를 64bit 용으로 만들어진 EXE 를 압축 하는데 테스트 해 보게 되었습니다. 일단 FPK 로 빌드된 win64 용 실행파일은 무려 12MB 를 육박 하고 있습니다... 이런 바이너리 크기 차이가 상용 컴파일러와 OpenSource 의 차이이기도 합니다만 -_-;;; 아무튼 별거없이 만들어본 어플리케이션 하나가 12MB 의 크기를 가지고 있다는건 너무 heavy 한게 ..