ืืฉืชืืฉ ืืืจ ืจืืฆื ืืืชืื ืคืืกืช ื ืชืื ืื ืืืฉื ืืืื ื ืืงืฉืื, ืื ืืื ืื ืืกืคืืง ืืงืื ืคื ืื ืืขืฉืืช ืืืช. ืื ื ืื ืื ืจืืฆื ืืืืืง ืฉืื ืืืจ, ืฉืื "ืืื ืืืื ืืฉืื ืืืืจืื." ืืื ืขืืื ื ืืขืฉืืช ืขื ืื?
ืืืฃ ืืื ืืื ืืช ืืืขืื ืืื. ืืฉ ืืจื-ืืืื ืฉื ืืืืข ืขื ืืืื ื ืื ืืงืฉืืืื ืฉืื ื, ืืืืืช ืื ืืื ื ื ืืื ืืจืืช. ืืื ืขื ืืื ืืื ืืืืืื? ืืกืืคื ืฉื ืืืจ, ืื ืืงืืฆืื ืื ืจืง ืกืืื ืฉื ืืืืื ืืืืจื ืืกืืื, ืืกืืืจ ืืื ืื ืฉืืืืฉ ืื ืฉืื ื ืืืจืื ืืื ืฉืืืจ ืืืืืกื.
ืืจืืจ ืฉืืืคืืฉ ืืืจ ืคืืกืืช ืืืืข ืฉืืืจ ืืืืืกื ืืช ืืืื ื ืงืฉืื ืืื, ืื ืื ืืฉื, ืื ืืคืืืช ืื ืืฉืืื ืืขืืื. ืืฆื ืฉื ื, ืื ืืืืื ืงืื, ืื ืืชื ืืืื ืืืชืืื ืืืชื ืงืฆืช...
TL;DR - ืื ืืกืืื ืืฉื ื ืืืืจ ืขื ืฉืืื ืืืืจื ืืืืคืืืืืืฆืื ืฉื ื ืชืื ืื ืืืืฆืขืืช ืงืืฆื JPEG, ืืขืช ืืฆืืจื ืืืื ืช ืืืชืจ.
ืขื ืงืืขืื ืืืืืืื
ืื ืืชื ืืืงื ืฉื ื ืคืืกืืช ื ืชืื ืื ืืงืจืืืืช ืืืืืืื, ืื ืืืืืฆืข ืืืฆืืช ืืืกืืืืืช ืฉืื ืืืืืื ืืืคืคืื. ืืืื, ืืื ืืคืจืืกืืช ืืืคืฉืจืืืช ืืื ืืื ('00, 01, 10, 11โฒ), ืืืืืง ืืืืฆืืช ืืฉ ืืช ืืืชื ืขืจืืื, ืืื ืคืฉืื ืืื.
ืืื ืืืืื, ืื ืจืง ื ืืงื ืฉื ื ืงืืฆืื ืื ืชืืื ืืื ืืฉื ื, ืื ื ืืื ืืื ืืื. ืื ื ืฉืืืจ ืืช ืืฉืื ืืืื, ืคืฉืื ื ืืฆืื ืืืืฉ
ืืื ืื ืืื ืื ืื ื ืืชื ืืืื ืืช ืืืืื? ืืืื, ืืืืืจ, ืงืืืฅ ืืืฉ ืฉื ืืชื ืขื ืืื ืืืฉืชืืฉ ืืื ืจืง ืจืฆืฃ ืฉื ืืืืื, ืฉืืืชื ืืื ื ื ืืืืืื ืืขืฉืืช ืืืจ ืืขืฆืื. ืื ืืชื ืจืง ืฆืจืื ืืืฆืื ืกืืืืืช ืืืื ืืืื ื ืืงืฉืื ืฉื ืืชื ืืฉื ืืช ืืืชื ืืืื ืืืืกื ืืช ืืืคืจืฉ, ืื ืฉืชืืื ืืฉืจืื ืืช ืืืืืื ืฉืืื ืืื ืืฉืืืืช ืืืืจืืช. ืืื ืืืืื ื ืืฉื ืืช ืื ืจืง ืืช ืืงืืืฅ ื-FS ืขืฆืื, ืืื ืงืฆืช ืืืืข ืคืืืช ืจืืืฉ ืืชืืื. ืืื ืืืื ืืืื?
ืฉืืืืช ืืชืืื
ืงืืฆืื ืืืืกืื ืืืืืื ืืืื ืืืฆืื. ืื ื-JPEG, MP3s ืืืืจืื ืืืื, ืืืจืืช ืืืืกื ืืืืืช, ืืืืืื ืืืืจื ืฉื ืืืืื ืฉื ืืชื ืืฉื ืืช ืืืืื. ืืคืฉืจ ืืืฉืชืืฉ ืืืื ืืงืืช ืืชืงืืืืช ืฉืืฉื ืืช ืืืืคื ืืืชื ืืืจืืฉ ืืช ืืจืืืืืื ืืฉืืืื ืฉืื ืื ืฉื ืืงืืืื. ืึทืึฒืืึนืช. ืืื ืืงืืช ืืชืงืืืืช... ืฉืื ืื ืืืชื ืืืจืืฉ... ืืื ืืชืื ืืฉื ื... ืื ืืืขื ืืื
ืืืื, ืืืืขืช ืืืืข ืืื ืืืืจ ืืืืืจื ืืช ืืฉืืืืช ืฉืื ืืื ืฉืื ืืืจ ืืืจ. ืื ื ืื ืืชืจืฉื ืืืืกืจ ืืืืจืืฉ ืฉื ืืฉืื ืืืื ืฉื ืขืฉื ืืืืฉืื ืืื ืืฉืืื. ืืืื ืฉืืืจืืื ืืชืคืฆืืืช ืืื ืืกืืืืืช: ืืืฉืืื ืฉืื ื ืืกืชืืืช ืืื ืฉืืืฉืชืืฉ ืืืื ืืืืข ื ืืกืฃ ืขื ืืืื ื ืืงืฉืื ืฉืื; ืื ืจืง ืืืืง ืื. ืืื ืืฉืื ืฉืื.
ืืื, ืืืจืืช ืฉืื ืื ื ืืืืืื ืืืฉืชืืฉ ืืื, ืื ืื ื ืฆืจืืืื ืืขืฉืืช ืืื ืฉืื ืืืื. ืืื ืืกืคืจ ืืืจืื ืืืชื ืืืืฆืขืืช ืืืืืื ืฉื ืืืช ืืฉืืืืช ืืงืืืืืช ืืคืืจืื ืงืืืฅ ื ืคืืฅ.
ืขื ืชื ืื
ืื ืืชื ืืืืช ืืืืฅ ืืช ืื, ืื ืื ืืืืจ ืืื ืืืืกื ืืขืืื. ืื ืื ื, ืืืืื, ืืืืจืื ืขื ืงืืฆื JPEG. ืื ืจืง ืฉืืฉ ืืื ืืช ืฉื ืืืื ืืฉืืืืช ืงืืืืืช ืืืืืขืช ื ืชืื ืื ืืชืืื, ืืื ืฉืืื ืืคืืจืื ืืืจืคื ืืคืืคืืืจื ืืืืชืจ ืขื ืืคืื ืื ืืื.
ืขื ืืืช, ืืื ืื ืืขืกืืง ืืืืืื ืืืืื, ืขืืื ืืืืืื ืืช ืชืืื ืืคืขืืืืช ืฉืื ืืงืืฆืื ืืคืืจืื ืื. ืืฃ ืืื ืื ืืืื ืจืืืืขืื ืืื ืืืจืื ืืืืคืืขืื ืขืงื ืืืืกื ืืืืืืช, ืื ืืชื ืฆืจืื ืืืืืื ืืช ืขืฆืื ืืขืืืื ืขื ืงืืืฅ ืฉืืืจ ืืืืก, ืืืื ืขืืช ืืงืืืื ืืืืฉ. ืืืชืจ ืืืืง, ืขื ืืงืืืื ืฉืืืื, ืฉื ืฉืืจืื ืืืืจ ืคืขืืืืช ืืืืจืืืืช ืืืืืื ื ืชืื ืื - DCT ื-quantization, ืฉืืืฆื ืืฆืืจื ืืืฉืืืช ืืกืืืืช ืืงืืืื (ืืืืืช ืืืืืงื ืฉื ืืกืคืจืืื ืืืืืืืช ืืืืื):
ืืฉื ื ืฉืืืืช ืจืืืช ืืคืฉืจืืืช ืืืืคืืืืืืฆืื ืฉื ืงืืฆื jpeg. ืืฉ ืืืคืืืืืืฆืื ืืื ืืคืกืืื (jpegtran), ืืฉ ืืืคืืืืืืฆืื "
F5
ืืฉืคืื ืฉืืื ืฉื ืืืืืจืืชืืื ืืชืืืื ืืชื ืืื ืืืื, ืฉืชืืืื ืืืืืจ
ืืฉืื ืืืื ืขืฆืื ืืกืชืืืื ืืืคืืชืช ืืขืจื ืืืืืื ืฉื ืืืงืืืื ืืืื ืืชื ืืื ืืกืืืืื (ืืืืืจ, ืื ืชืืื), ืื ืฉืืืคืฉืจ ืื ืืืฉืชืืฉ ื-F5 ืืื ืืืืขื ืืช ืืืกืื ืื ืชืื ืื ืืืื ื ืืงืฉืื ืฉืื. ืื ืงืืื ืืื ืฉืืื ืื ืจืื ืืืงืื ืืืืจ ืฉืื ืื ืืื ืืชืคืืก ืคืืืช ืืืืื ืืืืจ ืงืืืื ืืืคืื ืืืื ืืืชืคืืืืช ืืกืืืืกืืืช ืฉื ืืขืจืืื ื-JPEG, ืืืืคืกืื ืืืืฉืื ืืชื ื ืจืืื ืืขืช ืงืืืืื ืืืืฆืขืืช RLE.
ืืฉืื ืืืื ืื ืืจืฉืื ืืกืชืืืื ืืืืืื ืืืืง ืืืืจืื ืขื ืืกืืืืืช (ืกืืืืจ ืืืืฉ ืฉื ืกืืกืื), ืืืืกื ืืฉืืืื ืืืื ืืืฆืืข, ืืืืกืคืช ืื ืื ืื ืืขืืืื ืขื ืงืืฆืื ืจืืื ืืืงืื ืืื ืืื ืคืขื. ืื ืกืืืจ ืฉืืงืืจื ืืชืขื ืืื ืืชืืืื ืืฉืื ืื ืืืชืจ ืคืืจืื, ืื ืืืื ื ืขืืืจ ืืชืืืืจ ืืืืฉืื.
ืืื ืืง
ืืื ืืืืืื ืืื ืืืฉื ืื ืขืืืืช, ืืืฉืืชื ืืช ืืฉืืื ื-C ืืืืจ ืืืืฆืขืชื ืืกืคืจ ืืืคืืืืืืฆืืืช ืื ืืืืื ืช ืืืืจืืช ืืืืฆืืข ืืื ืืืืื ืช ืืืืืจืื (ืืชื ืื ืืืืืื ืืืืืื ืืื ืฉืืงืืืช ืืชืืื ืืช ืืืื ืืื ืืืืกื, ืืคืืื ืืคื ื DCT). ืืืฆื ืคืืืคืืจืืืช ืืืฉืืช ืืืืฆืขืืช ืฉืืืื ืฉื ืกืคืจืืืช
ืืืืืขื ืืืื ื ืืฆืืจื ืฉื ืืื ืขืืจ ืืกืคืจืืื ืืืกืืฃ. ืืืขืื ืืื ืื ืืืืืื ืืืจืจ ืขืื ืขื ืืฉืืืืฉ ืืืืจืื ื-readme ืืืืืจ ื-Github, ืืงืืฉืืจ ืืืื ืืฆืจืฃ ืืกืืฃ ืืคืืกื.
ืืืฆื ืืืฉืชืืฉ?
ืืงืคืืื. ืืชืืื ืืช ืืืฉืืฉืืช ืืืจืืื ื ืืืจืืช ืขื ืืื ืืืคืืฉ ืืืืฆืขืืช ืืืืื ืจืืืืจื ืืกืคืจืืืช ืืฉืืจืฉ ืื ืชืื ื. ืืกืืื, ื ืืชื ืืืขืืืจ ืงืืฆืื, ืืฉื ืืช ืืช ืฉืืืชืืื ืืืืขืชืืงื ืืจืฆืื ื ืืืืืืืชืื, ืืฉื ืืช ืงืืฆืื ืืืขืจืืืช ืืคืขืื ืืื'. ืขื ืืืช, ืืฉ ืืืืืืจ ืืืืชืจ ืืื ืืฉื ืืช ืืช ืืชืืื ืืืืืื ืืฉืื ืฆืืจื. ืืืืื ืืขืจื ืฉื ืกืืืืืช ืืืช ืืืื ืืืคืื ืืช ืื ืืืืชื ืืคืฉืจื ืืฉืืืจ ืืืืข.
ืืกืืื, ืืื ืืฉืืจืืช ืืฉืืืจ ืงืืืฅ ืืจืืืื ืืืืื ืืืืื ืืช ืื ืืืืืข ืืืจืืฉ ืืคืจืืงื, ืืืื ื ืชืื ืื ืขื ืืชืืื ืืช ืืื ื ืขืฉื ืฉืืืืฉ. ืืฉืืขืฆืื, ืืื ืฉืืงื ืืขืจื ืืื ืงืืืืืืืืื ืืืื ืื ืืฉืคืขื ืืฉืืขืืชืืช ืขื ืฉืื ืืืืกืง ืืชืคืืก.
ืืชื ืืืื ืื ืชื ืืช ืืงืืืืืช ืืืคืฉืจืืช ืืืืฆืขืืช ืืืื '-a': './f5ar -a [ืชืืงืืืช ืืืคืืฉ] [ืืืืื ืจืืืืจื ืชืืื Perl]'. ืืืจืืื ืืชืืฆืขืช ืขื ืืคืงืืื './f5ar -p [ืชืืงืืืช ืืืคืืฉ] [ืืืืื ืจืืืืจื ืชืืื Perl] [ืงืืืฅ ืืจืื] [ืฉื ืืจืืืื]', ืืคืจืืงื ืขื './f5ar -u [ืงืืืฅ ืืจืืืื] [ืฉื ืงืืืฅ ืืฉืืืืจ ]'.
ืืืืืช ืขืืืื
ืืื ืืืจืืืช ืืช ืืขืืืืช ืืฉืืื, ืืขืืืชื ืืืกืฃ ืฉื 225 ืชืืื ืืช ืืืื ื ืืืืืืื ืฉื ืืืืื ืืืฉืืจืืช
ืืจืฆืฃ ืื ืคืฉืื:
$ du -sh knuth.pdf dogs/
44M knuth.pdf
633M dogs/
$ ./f5ar -p dogs/ .*jpg knuth.pdf dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 17.0s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 39.4s
Saving the archive... ok
$ ./f5ar -u dogs/dogs.f5ar knuth_unpacked.pdf
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.4s
Decompressing... done in 21.0s
Writing extracted data... ok
$ sha1sum knuth.pdf knuth_unpacked.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth_unpacked.pdf
$ du -sh dogs/
551M dogs/
ืฆืืืืื ืืกื ืืืขืจืืฆืื
ื ืืชื ืืฆืจืื ืืงืจืื ืืช ืืงืืืฅ ืฉื ืคืจืง:
ืืคื ืฉืืชื ืืืื ืืจืืืช, ื-633 + 36 == 669 ืืื-ืืชืื ืืืงืืจืืื ืฉื ื ืชืื ืื ืืืื ื ืืงืฉืื, ืืืขื ื ื-551 ื ืขืืืื ืืืชืจ. ืืืื ืงืืฆืื ื ืืื ืืืกืืจ ืขื ืืื ืืืจืืื ืืขืจืื ืืืงืืืื, ืืืฉืคืืขื ืขืืืื. ืืืืกื ืืื ืืคืกืืื ืฉืืืืจ ืืื: ืฆืืฆืื ืืื ืืื ืืืื ืืืื ืืงืืืช "ืื ืชืง ืืื ืืชืื ืืืงืืืฅ ืืกืืคื. ืขื ืืืช, ืื ืขืืืื ืืืืื ื ืชืื ืื, ืื ืื ืงืื ืืืืชืจ, ืฉืชืฆืืจื ืืกืืื.
ืืืจืื ืืืื, ืื ืืืชื ื ืจืืื ืืืืืืื ืืขืื. ืชืืช ืืกืคืืืืืจ (ืืืืืื ืฉ-habrastorage ืืื ื ืืืื ืืืชืืืื ืขื ืงืืฆืื ืืืืืื), ืืงืืจื ืืืื ืืืขืจืื ืืช ืืืืื ืื ืืคื ืืขืื ืืื ืืขืืฆืืชื, ืืืชืงืื ืขื ืืื ืืคืืชืช ืืขืจืืื ืฉื ืืจืืื ืฉืืฉืชื ื ืืืืงืืจ:
ืืืงืื ืืกืงื ื
ืืืชืืฉื ืืื ืืงืฉืืื ืืืื, ืงื ืืืช ืืื ื ืงืฉืื ืื ืืขืืืช ืืื ืืขื ื ืขืฉืื ืืืืจืืืช ืืื ืคืชืจืื ืืจืื ืืืชืจ ืคืฉืื ืืืขืื. ืืื ืืืจืืช ืฉืื ืื ื ืืืื ืืชืงืืคื ืื ืื ื ืคืืื ืขืืฉืื, ืืื ืขืจืืื ืฉืืืจ ืขืืืื ืืืื ืืคืฉืจ ืืืืื ืก ืืืื ืืจื ื ืืืืขืืืช ืืช ืื ืื ืชืื ืื ืื ืืกืคืื ืฉืื ืืื ืฉืื. ืื ืื ืืื ืืช ืืงื ื ืืขืฆืื ืขืื ืืื ื ืงืฉืื ืฉื ืืืฃ ืืจื-ืืืื. ืืื ืืชื ืชืืื ืืืื ืืืฉืชืืฉ ืืืชืื ืงืืืืื.
->
ืืงืืจ: www.habr.com