ZIP

1 무손실 압축 포맷 ZIP

필 캐츠(Phil Katz)가 1989년 만든 무손실 압축 포맷. 정확히 말하자면 ZIP 포맷은 여러개의 파일을 압축해서 하나의 파일로 만들기 위한 컨테이너 포맷이고, ZIP 내부의 데이타 압축은 Deflate 알고리즘을 사용한다. 참고로 필 캐츠는 말년에 알코올 중독에 시달리다가 2000년, 만 37세의 나이에 사망했다.

원래 정식 명칭은 PKZIP이며(필 캐츠의 이름에서 따왔다. 회사명도 PKWARE.) 파일 헤더에는 PK라는 문자열이 들어간다. DOS 시절 프로그램 이름도 pkzip.exe(압축하는 프로그램) pkunzip.exe(압축 해제하는 프로그램) 이었다. 압축효율은 그당시 경쟁 제품이였던 arj 나 lharc 보다는 조금 나빴지만, 압축 속도가 빨랐고 압축 포맷을 퍼블릭 도메인으로 공개하여 빠른 속도로 보급되었다.

특히 윈도우 시대에 접어들면서 경쟁 프로그램들이 변변치 않은 와중에 WinZip라는 편리한 프로그램이 두각을 나타내면서 사실상 업계 표준 포맷으로 자리잡게 된다. 다만 WinZip을 만든 회사는 PKWARE가 아닌 다른 회사이다. 필 캐츠 본인은 윈도우에 비판적인 입장이었던 탓에 윈도우용 PKZIP를 내놓는 것이 늦어지면서 큰 재미를 보지 못했고[1] 재주는 곰이 넘고 돈은 아직도 윈집에 비해서 쩌리 취급 당하고 있다.

하지만, PKWARE사는 현재도 ZIP 포맷의 확장 정의를 지속적으로 관리하고 있으며, 자사의 홈페이지를 통해서 이를 공개하고 있다. ZIP 표준 포맷 문서

ZIP 포맷은 기본적으로 DOS 운영체제를 위해서 만들어진 포맷[2]이지만, 이후 지속적인 확장을 통해서 다른 OS도 지원[3]하고, 압축 해제 프로그램이 오픈소스이기 때문에, 별도의 프로그램을 설치할 필요 없이 압축/해제가 가능하다는 점이다.

유닉스나 리눅스에서는 1990년대부터 OS 패키지에 ZIP 압축/해제 프로그램이 기본으로 포함해 제공하는 배포판들이 많다(unzip이 대표적).[4] 윈도우도 XP부터는 탐색기에서 ZIP 파일을 폴더처럼 열 수 있고, 압축/해제를 모두 지원하고 있으며, 맥도 기본적으로 OS에서 ZIP 파일의 압축 및 해제를 지원한다.

유니코드 파일지원이 정의된 것은 2006년으로 늦은 편. 게다가 지원하지 않는 프로그램도 많기[5] 때문에, 일찌감치 유니코드를 제대로 처리하기 시작한 RAR 이나 7Z에 비하면 호환성이 떨어지는 편.

ZIP 포맷은 원래 Deflate 알고리즘만을 지원하였지만, 이후 bzip2, LZMA 와 같은 최신 압축 알고리즘도 지원하도록 표준에 포함시켰으며, 요즈음 업데이트 되는 최신 압축 프로그램들은 대부분 이 알고리즘의 압축 해제를 지원한다.

Java의 .jar나 MS 오피스 2007 이후부터 기본적으로 지원되는 .docx, .xlsx 형식의 파일도 내부적으로 여러개의 파일들을 ZIP 형식으로 묶고 확장자만 바꿔놓은 것이다. 파일의 사용되는 목적이 다르기 때문에 이를 구분하기 위해 다른 확장자로 정의되어 있는 것이라 이 파일들도 압축 프로그램으로 압축해제가 가능하다. 윈앰프, 미디어 플레이어, 곰플레이어 등의 스킨파일들도 전부 ZIP 포맷으로 압축되어 있다.

OS X의 애플리케이션은 *.app 확장자를 가지는 파일 하나로 되어있는데, 알고보면 이것은 ZIP 형식으로 애플리케이션이 구동되는데 필요한 파일을 묶은 것이다. OS X 내부에서는 완벽하게 폴더인 것 처럼 동작한다.

  • 기타
- ZIP 포맷에서 파일을 압축하지 않고, 원본 그대로 저장할 경우 압축 알고리즘은 0으로 저장되고, 일반적으로 제일 많이 사용하는 Deflate 알고리즘은 8번을 사용한다. 즉, 거의 사용하지 않기는 하지만, 1번부터 7번까지의 압축 알고리즘도 존재한다.
- Winzip 에서는 Jpeg 파일을 30%까지 줄일 수 있는 WinzipJpeg 압축 알고리즘과, Wav 파일을 WavPack압축 알고리즘을 이용하여 압축하는 독특한 형태의 압축 알고리즘을 지원한다.
- ZIP 포맷은 DOS 시절에 개발되었기 때문에 4GB(2^32) 이상의 파일 포맷에 대해서는 처리하지 못했지만, 이후 ZIP64라고 불리는 확장된 정의를 통해서 2^64까지 처리가 가능하다.

2 미국의 지역 번호 시스템 ZIP code

ZIP code는 미국의 지역 번호 시스템이다. 우리나라로 치면 번지수 쯤 된다. 아마존 가입할 때 이거뜨면 우편번호 입력하면 된다.

국내에서 해외사이트 가입을 시도하거나 해외결제를 할 일이 있을 때 갑자기 이게 뜨기도 하는데, 다행히도 국내 각 지역에 대응하는 ZIP code가 존재한다. 이를 정리하면 다음과 같다. 일부 잘못된 부분이 있을 수 있으므로 수정바람.

  1. 도스 시절에 ZIP와 셰어를 다투었던 LZH나 ARJ 등도 죄다 윈도우 대응에 늦장을 부리다가 몰락한 것을 보면 필 캐츠만 유난한 것도 아니다.
  2. 파일의 시간 정보가 DOS 포맷과 동일하다.
  3. 유닉스의 파일 시스템 정보라던가, Windows의 NTFS파일 시간 정보라던가
  4. 물론, 따로 깔아야 하는 리눅스 배포판/유닉스도 많다.
  5. 윈도우 탐색기 내장 프로그램은 하위 호환성을 위해서 DOS와 동일한 코드페이지만을 지원하지만, 유닉스/리눅스/맥 계열 프로그램은 무조건 유니코드(UTF-8)만을 지원하기 때문에, 한글 파일명으로 된 파일을 서로 주고 받으면 파일명이 깨진다.