์คํ ๊ฐ๋ ธ๊ทธ๋ํผ์ ๋ํด ์ด์ผ๊ธฐํ ๋ ์ฌ๋๋ค์ ํ ๋ฌ๋ฆฌ์คํธ, ์์์ฑ์ ์, ์คํ์ด, ๊ธฐ๊ปํด์ผ ์ํธ ๋ฌด์ ๋ถ์ฃผ์์ ๋ฐ ๊ธฐํ ๊ณผํ์๋ฅผ ๋ ์ฌ๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ๋๊ฐ ํ์ํ ๊น์? ์จ๋ค ์ธ๋ถ ๋์์ ๋ญ๊ฐ? ์ด๊ฒ์ด ๋ณดํต ์ฌ๋์๊ฒ ๋ฌด์จ ์ ์ต์ด ์๊ฒ ์ต๋๊น?
ํ๋๊ฐ ์๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ์ด๊ฒ์ด ์ค๋ ์ฐ๋ฆฌ๊ฐ ์คํ ๊ฐ๋ ธ๊ทธ๋ํผ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ถํ๋ ์ด์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ตญ ๋ ์๋ JPEG ํ์์ ์์คํ ์ฌ์ง ์์นด์ด๋ธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ์์คํ ์ ๋ฌด๋ฃ ๊ธฐ๊ฐ๋ฐ์ดํธ ์๋ฅผ ๋๋ฆด ์๋ ์์ต๋๋ค.
๋ญ๋ผ๊ตฌ?
๋ ์๊ฐ ๊ธฐ์ตํ๋ค๋ฉด, ์คํ ๊ฐ๋ ธ๊ทธ๋ํผ๋ ํ ์ ๋ณด์ ์กด์ฌ๋ฅผ ๋ค๋ฅธ ์ ๋ณด ์์ ์จ๊ธธ ์ ์๊ฒ ํด์ฃผ๋ ์ด์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๋ ๊ฐ๋จํ ์ธ์ด๋ก: ๊ทธ๋ฆผ + ํ์ผ == ๊ฑฐ์ ๋์ผํ ๊ทธ๋ฆผ์ด์ง๋ง ์์ ํ ๊ฐ์ง๋ ์์ต๋๋ค(๊ทธ๋ฆผ ๋์ ์ ๋ฌด์์ด๋ ์์ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ๋ ๋ช ํํฉ๋๋ค). ์์ ๋ญ๊ฐ๊ฐ ์๋์ง ์๋์ง ์ฝ๊ฒ ํ๋จํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์๋ ์ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ํ๋๋ฅผ ๋ค๋ฅธ ํ๋์ ๊ตฌ๋ณํ ์ ์๋ค๋ฉด ์ ํ ์ฐจ์ด๊ฐ ์์ต๋๊น? ์๋น์์ ๊ด์ ์์ ๋ณผ ๋, ์ฌ์ฉ์๋ ์ํ์ ์ ๋ฐ๋(ํน์ ๋นํธ ์ธํธ์ ์ํด ๋ฐ์๋จ)์๋ ๊ด์ฌ์ด ์๊ณ ๋จ์ง ์์ ์ด ์ธ์ํ๋ ๊ฒ์๋ง ๊ด์ฌ์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ท์ฌ์ด ๊ฐ์์ง์ ์ธ ๊ฐ์ง ์ด๋ฏธ์ง๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์กฐ์ฌํ์ธ์, JPEG!
ํฌ๊ธฐ์ ํฐ ์ฐจ์ด์๋ ๋ถ๊ตฌํ๊ณ ์ธ ๋ฒ์งธ ๋ฒ์ ์ ์ ํํ๋ ์ฌ๋์ ๊ฑฐ์ ์์ต๋๋ค. ๋ฐ๋ฉด์ ์ฒ์ ๋ ์ฌ์ง์ ์ฐจ์ด๋ ๊ทธ๋ค์ง ๋์ ๋์ง ์์ผ๋ฉฐ (๋ด ๊ด์ ์์ ๋ณผ ๋) ๊ทธ ์์ ๋ด๊ธด ์ ๋ณด์ ์์ ๋์ผํ ์ ์์ต๋๋ค.
์ด ์๋ฆฌ ์์ฒด๋ ์ด๋ฏธ ์ค๋๋์์ผ๋ฉฐ ์๋
๋์ ์์ค ์ ๋ณด ์์ถ ๋ฐฉ๋ฒ์ ์ํด ์ ๊ทน์ ์ผ๋ก ํ์ฉ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๊ดด๋ ๊ตฌ์ถ์ด ์๋๋ฉฐ, ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ์ ๋ณด๋ค ์ง๋ณด๋ ์ธก๋ฉด์ ๊ด์ฌ์ด ์์ต๋๋ค. ์ถ๊ฐ ์ฌ์ด์ฆ ์ ๋ณด๋ฅผ ์ฝ์
ํ ์ ์๋์? N
ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋๋ก ํ์ผ์ ์ถ๊ฐ M < N
, ๊ทธ๋ฌ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฌ์ฉ์์๊ฒ ๋์ ๋์ง ์์์ต๋๊น?
๋ฌผ๋ก ๋น์ ์ ํ ์. ํ์ง๋ง ์ฆ์ ๋ช ๊ฐ์ง ์์ฝ์ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
- ์ฒซ์งธ, ๋ฐฉ๋ฒ์ ๋ณดํธ์ ์ด์ด์ผ ํ๋ฉฐ ๋๋ถ๋ถ์ ์ ๋ ฅ ๋ฐ์ดํฐ์ ๋ํด ๊ธ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ฆ, ํ๊ท ์ ์ผ๋ก ๋ฌด์์ ์ ๋ ฅ์ ๊ฒฝ์ฐ ์ ์ฅ๋ ์ ๋ณด์ ์์ด ์ค์ ๋ก ๊ฐ์ํด์ผ ํฉ๋๋ค. "ํ๊ท ์ ์ผ๋ก"๋ ๋ฐ๋๊ฐ ๋ฐ์ํ ์ ์์ง๋ง ์ฐ์ธํด์๋ ์ ๋๋ค๋ ์๋ฏธ์ ๋๋ค.
- ๋์งธ, ์ ๋ณด๋ฅผ ์ฝ์ ํ๊ธฐ ์ ์์ถ๋ ์ปจํ ์ด๋์ ํฌ๊ธฐ๋ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ์์ถ๋ ์์ ๋ณธ๋ณด๋ค ์ปค์ผ ํฉ๋๋ค. ๋จ์ํ LSB ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ BMP ์ด๋ฏธ์ง์ ์ฌ๋ฌ ๋นํธ๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ ์คํ ๊ฐ๋ ธ๊ทธ๋ํฝ ์์ถ์ด ์๋๋๋ค. ์ผ์ข ์ DEFLATE๋ฅผ ์คํํ๋ฉด ์๋ณธ ์ด๋ฏธ์ง๊ฐ ๋์ ๋๊ฒ ์์์ง ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ ์งธ, ๊ธฐ์กด ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฏธ ์์ถ๋ ๋ฐ์ดํฐ์ ๋ํด ๊ฒฐ๊ณผ๋ฅผ ์ํํ๊ณ ๋น๊ตํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ณต์ฑ ์ฐจ์ด๋ก ์ธํ ํ๋ฅ ์ ํจ๊ณผ๊ฐ ์ ๊ฑฐ๋๊ณ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ ๋ณด๋ค ํจ์จ์ ์ธ ์์ถ์ด ์ ๊ณต๋ฉ๋๋ค.
์ด๋์?
์คํ ๊ฐ๋ ธ๊ทธ๋ํผ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์์ถ๋ ์ ๋ณด ์ธ์๋ ํด๋น ์ ๋ณด๋ฅผ ๋ด์ฅํ ์ปจํ ์ด๋๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํฌํจ๋ ์ ๋ณด์ ์ต๋๋์ ์ฃผ๋ก ๊ฐ๋ณ ์์ฑ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ํด๋น ์์ ๋ฐ๋ผ ํ์ฅํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ "์์ถ" ํ๋ก์ธ์ค์์ ์ด์ ์ ์ป์ ์ ์๋๋ก ์ปจํ ์ด๋ ํ์์ ๊ณตํต๋์ด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋งฅ๋ฝ์์ ๊ทธ๋ํฝ, ์ค๋์ค ๋ฐ ๋น๋์ค ํ์ผ์ด ์ข์ ํ๋ณด์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ค์ํ ํ์, ์ฝ๋ฑ ๋ฑ์ผ๋ก ์ธํด ์ค์ ๋ก๋ ๊ทธ๋ ๊ฒ ๋ง์ง ์์ ์ต์ ์ค์์ ์ ํํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ๊ณ ๋ คํ์ฌ ์ ๊ฐ ์ ํํ JPEG๋ ๊ฑฐ์ ๋ชจ๋ ์ฌ๋์ด ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๊ฐ์ธ ๋ฐ ๋น์ฆ๋์ค ๋ชฉ์ ์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ ๋๋ถ๋ถ์ ์ด๋ฏธ์ง์ ๋ํ ์ฌ์ค์์ ํ์์ ๋๋ค.
๋์ ๋ฐ๋ผ ๋ค๋ฅด์ง?
๊ทธ ๋ค์์๋ ๋ณ๋ค๋ฅธ ์ค๋ช ์์ด ๋๋ต์ ์ด๊ณ ๊ธฐ์ ์ ์ธ ๋ค์ด์ด๊ทธ๋จ๊ณผ ์ค๋ช ์ด ์์ผ๋ฏ๋ก ๊ด์ฌ์ด ์๋ ์ฌ๋์ "์ฒจ๋จ ๊ธฐ์ " ์น์ ์ผ๋ก ์คํฌ๋กคํ์ฌ ํด๋น ๋ด์ฉ์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค.
๊ณตํต ๊ธฐ๋ฅ
๋ฐ์ดํฐ๋ฅผ ์ด๋๊ฐ์ ์ฝ์ ํ๋ ค๋ฉด ๋จผ์ ์์น๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ํ์ผ ์์คํ ์๋ ๋ค์ํ ์ฌ์ง์ด ์ผ๋ง๋ ์ง ์์ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๋ ๊ทธ์ค ๋ช ์ฅ๋ง ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ฌํ ์ํ๋ ์ปจํ ์ด๋ ์ธํธ๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ๋ถ๋ฅผ ๊ฒ์ ๋๋ค.
์์ถ ์ ๊ณผ ์์ถ ํด์ ์ ์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ๋จ์ํ ํ์ผ ์ด๋ฆ ์งํฉ(๋๋ ์ ๊ท์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์)์ ์ฌ์ฉํ ์ ์์ง๋ง ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ๋ณด๋ค ์์ ์ ์ธ ๊ฒ์ด ํ์ํฉ๋๋ค. ์ฆ, ์ฌ์ฉ์๊ฐ ํ์ผ ์์คํ ๋ด์์ ํด๋น ํ์ผ์ ๋ณต์ฌํ๊ณ ์ด๋ํ ์ ์์ต๋๋ค. , ์ด๋ก ์ธํด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ณ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์์ ์ด ์๋ฃ๋ ํ์๋ ํด์(md5์ด๋ฉด ์ถฉ๋ถํจ)๋ฅผ ์ ์ฅํด์ผ ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ์ ์ฒด ํ์ผ ์์คํ ์์ ์ ๊ท์์ ์ฌ์ฉํ์ฌ ์ด๊ธฐ ๊ฒ์์ ์ํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ผ๋ฉฐ ํน์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์์ถ๋ ์ ๋ณด์ ํ์ ๋ณต๊ตฌ์ ํ์ํ ๊ธฐํ ๋ฉํ์ ๋ณด์ ํจ๊ป ํด๋น ํด์๋ฅผ ํฌํจํ๋ ํน์ ์์นด์ด๋ธ ํ์ผ์ด ์ฌ๊ธฐ์ ์ ์ฅ๋ฉ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ์คํ ๊ฐ๋ ธ๊ทธ๋ํผ ๋ฐ์ดํฐ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๊ตฌํ์ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ ์์ถ ๋ฐ ๋ณต๊ตฌ ํ๋ก์ธ์ค ์์ฒด๋ฅผ ์์ถ ๋ฐ ์์ถ ํ๊ธฐ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
F5
์ด์ ์ฐ๋ฆฌ๊ฐ ๋ฌด์์, ์ ํ๋์ง ๋ช ํํด์ก์ผ๋ฏ๋ก ๋ชฉํ ๋ฌ์ฑ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํ๋ ์ผ๋ง ๋จ์์ต๋๋ค. JPEG ํ์ผ์ ์ธ์ฝ๋ฉํ๋ ๊ณผ์ ์ ๋ ์ฌ๋ ค ๋ณด๊ฒ ์ต๋๋ค(Bauman National Library์ ์ํค ๋๋ถ์):
์ด๋ฅผ ์ดํด๋ณด๋ฉด ์ฆ์ ๋ช ๊ฐ์ง ์๊ฒฌ์ ์ ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- JPEG ํ์ผ์ ํฌ๊ธฐ๋ ์ผ์ข ์ Winrar๋ก ์์ถํ์ง ์๊ณ ๋ ์ต์ ์ ํฌ๊ธฐ๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค.
- ์ ์ฅ๋ ์ ๋ณด(์ด์ฐ ์ฝ์ฌ์ธ ๋ณํ, DCT์ ์ถ๋ ฅ)๋ง ์์ ํ์ฌ ์ต์ํ ํ์ฉ ๊ฐ๋ฅํ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋์ ๋๋ ์ฐ์ ๊ท๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ์์ง ์์ผ๋ ค๋ฉด ๊ฐ ๊ฐ๋ณ ์ด๋ฏธ์ง๋ฅผ ์ต์ํ์ผ๋ก ์์ ํด์ผ ํฉ๋๋ค.
์ ์ฒด ์๊ณ ๋ฆฌ์ฆ ์ ํ๊ตฐ์ด ์ด๋ฌํ ์กฐ๊ฑด์ ์ ํฉํ๋ฉฐ ์ด์ ์ต์ํด์ง ์ ์์ต๋๋ค.
F5 ๋ธ๋ก์ ๋งคํธ๋ฆญ์ค ์ธ์ฝ๋ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ณ ๊ธ ์๋ฒ ๋ฉ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค. ๋ ์๋ ์ ๋งํฌ์์ ์ด ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๊ณ ๋ฆฌ์ฆ ์์ฒด์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ง๋ง, ์ฐ๋ฆฌ๋ ์ด ๋์์ ํตํด ๋์ผํ ์์ ์ ๋ณด๋ฅผ ์ฝ์ ํ ๋ ๋ ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ์ ์๊ณ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋์ ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง๋ค๋ ์ฌ์ค์ ์ฃผ๋ก ๊ด์ฌ์ด ์์ต๋๋ค. , ๊ทธ๋ฆฌ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ํํ๊ธฐ ์ํด์๋ ๊ฐ๋จํ ํํ๋ง ๋ฐ RLE (๋)์ฝ๋ฉ ์์ ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
๋ณ๊ฒฝ ์์ฒด๋ ์ ์ ๊ณ์์ ์ ์ฉ๋๋ฉฐ ์ ๋๊ฐ์ 5์ฉ ์ค์ฌ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ์์ถ์ FXNUMX๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ ์ JPEG ๊ฐ์ ํต๊ณ์ ๋ถํฌ๋ก ์ธํด ์ ๋๊ฐ์ผ๋ก ๊ฐ์๋ ๊ณ์๊ฐ ํํ๋ง ์ธ์ฝ๋ฉ ํ ๋ ์ ์ ๋นํธ๋ฅผ ์ฐจ์งํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฒ์ ๋๋ค.
XNUMX์ด ํ์ฑ๋๋ ๊ฒฝ์ฐ(์์ ์ถ์) ์ด์ ์ ๋ ๋ฆฝ ๊ณ์๊ฐ RLE๋ก ์ธ์ฝ๋ฉ๋ XNUMX ์ํ์ค์ ์ผ๋ถ๊ฐ ๋๋ฏ๋ก ์ ์ฅ๋ ์ ๋ณด์ ์๊ฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ค์ด๋ญ๋๋ค.
์์
๋ฐ์ดํฐ ๋ณดํธ์ ์์ถ์ ์ง๊ต ๋ฌธ์ ์ด๋ฏ๋ก ์๋ ์๊ณ ๋ฆฌ์ฆ์ ๋น๋ฐ ๋น๋ฐ๋ฒํธ ์์ด์ ๋ฌด์ํ ์ ์์ต๋๋ค. ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋ฐฉ๋ฒ์ ์ ํํ ์์์ผ ํ๋ฏ๋ก ์ด์ ํ์ํ ๋ชจ๋ ์ ๋ณด(์ฌ์ฉ๋ ์ปจํ ์ด๋, ์ฌ์ฉ๋ ์์ ๋ฑ)๋ ๋ณ๋์ ํ์ผ์ ๊ธฐ๋กํ๊ณ ์์นด์ด๋ฒ๊ฐ ๋ฌด๋ฃ๋ก ์ฝ์ ์ ์๋๋ก ๊ณต๊ฐํด์ผ ํฉ๋๋ค.
์๋ ์๊ณ ๋ฆฌ์ฆ์ ๋น๋ฐ ๋ฉ์์ง๋ฅผ ์ ์กํ๋๋ก ์ค๊ณ๋์์ผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ปจํ ์ด๋๋ฅผ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋๋ ๊ฒ์ด๋ผ๋ ๊ฐ์ ํ์ ํ ๋ฒ์ ํ๋์ ์ปจํ ์ด๋์์๋ง ์๋ํฉ๋๋ค. ๋ํ ๊ฐ ์ปจํ ์ด๋์ ๋ ๋ฆฝ์ ์ผ๋ก ํฌํจ๋๋ ๊ฒฝ์ฐ ๊ฐ ์ปจํ ์ด๋์ ๋ช ๋นํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์์ง ๋ฏธ๋ฆฌ ์์์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ ์์์ ๊ณ์๋ ํ๋์ ์ถ์์ ์ด๊ณ ํฐ ์์๋ก ๊ฒฐํฉ๋์ด ์๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ์์ ๋์ด์ผ ํฉ๋๋ค.
์๋ F5๋ ์ปจํ ์ด๋ ํฌ๊ธฐ์ ์ต๋ 12%๋ฅผ ํ์ฉํ๋ฏ๋ก ์ด ์์ ์ผ๋ก ์ต๋ ์ฉ๋๋ ์ฆ๊ฐํฉ๋๋ค. ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌ๊ธฐ์ "์ต๋ 12%"๋ "์ต๋ 12%"์ ํฉ๊ณ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ต๋๋ค. "๋ฅผ ๊ฐ ์์์์ ๊ฐ์ ธ์ต๋๋ค.
์ฑ๋ฌธํ๋ ์ผ๋ฐ ๊ณํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ ์์ฒด
์ด์ ๋ ์๊ฐ ํผ๋์ ๋น ์ง์ง ์๋๋ก ์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ์ค๋ช ํ ์ฐจ๋ก์ ๋๋ค.
- ์ฌ์ฉ์๋ ์ ๊ท์๊ณผ ๊ฒ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ง ์์ถ ๋ฐ์ดํฐ M๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ L์ ์ ์ํฉ๋๋ค.
- FS์ ๋ํ๋๋ ์์๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์๋ MC๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์ผ๋ จ์ ๊ณ์ C๊ฐ ํ์ผ ๋ฐ์ดํฐ์์ ๋์ฝ๋ฉ๋ฉ๋๋ค.
- MC <- MC | ์จ;
- ๋งค๊ฐ๋ณ์ k๋ ๋์ฐํ ๋ถ๋ฑ์์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค.
|M| * 8 / (count_full(MC) + count_ones(MC) * k_rate(k)) < k / ((1 << k) - 1)
; - ๋ค์ ์ดฌ์
n = (1 << k) - 1
MC์์ XNUMX์ด ์๋ ์์์ ์ตํ์ ๋นํธ๋ฅผ ์์ฑํ๊ณa
:- ๋งค์ง ํด์ ํจ์๊ฐ ๊ณ ๋ ค๋ฉ๋๋ค.
f
, n๋นํธ ๋จ์ด๋ฅผ ๋ํ๋a
k๋นํธ๋กs
; - ๋ฉด
s == 0
, ๊ทธ๋ฌ๋ฉด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ผ๋ฉฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ ๊ณ์๋ก ์ด๋ํฉ๋๋ค. - ํด๋น ๊ณ์์ ์ ๋ ๊ฐ์ ์ค์
๋๋ค.
s
-์๋ , ๋ง์ด ์ข ๊ทธ๋ ์ง๋งa
; - ๊ฐ์์ ๊ฒฐ๊ณผ๋ก ๊ฐ์๊ฐ ๋ฐ์ํ๋ฉด(๊ณ์๊ฐ 0์ด ๋จ) ์ฒ์๋ถํฐ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
- ๋งค์ง ํด์ ํจ์๊ฐ ๊ณ ๋ ค๋ฉ๋๋ค.
- ๋ชจ๋ ๊ณ์๋ RLE ๋ฐ Huffman์ผ๋ก ์ธ์ฝ๋ฉ๋์ด ์์ค ํ์ผ์ ๊ธฐ๋ก๋ฉ๋๋ค.
- ๋งค๊ฐ๋ณ์ k๋ ์์นด์ด๋ธ ํ์ผ์ ๊ธฐ๋ก๋ฉ๋๋ค.
- MD5 ํด์๋ ๊ฐ ํ์ผ L์์ ์๋ ์์น ์์๋๋ก ๊ณ์ฐ๋์ด ์์นด์ด๋ธ ํ์ผ์ ๊ธฐ๋ก๋ฉ๋๋ค.
ํ์ด ํ ํฌ
์์งํ ํํ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค๋ฅธ ๊ณ ๊ธ ์ธ์ด(ํนํ ๊ฐ๋น์ง ์์ง ํฌํจ)๋ก ๊ตฌํํ๋ฉด ์ฑ๋ฅ์ด ํํธ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ชจ๋ ๋ณต์ก์ฑ์ ์์ C๋ก ๊ตฌํํ๊ณ ์คํ ์๋์ ์ธก๋ฉด์์ ์ฌ๋ฌ ๊ฐ์ง ์ต์ ํ๋ฅผ ์ํํ์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ(DCT ์ด์ ์๋ ์์ถํ์ง ์์ ์ฌ์ง์ ๋ฌด๊ฒ๊ฐ ์ผ๋ง๋ ๋๋์ง ์ ์ ์์ต๋๋ค). ํ์ง๋ง ๊ทธ๋ ๋ค๊ณ ํด๋ ์ฒ์์๋ ์คํ ์๋๊ฐ ์์ฌ์ด ์ ์ด ๋ง์๊ธฐ ๋๋ฌธ์ ์ ์ฒด ๊ณผ์ ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ค๋ช ํ์ง ์๊ฒ ์ต๋๋ค.
ํฌ๋ก์ค ํ๋ซํผ์ libjpeg, pcre ๋ฐtinydir ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์กฐํฉ์ ์ฌ์ฉํ์ฌ ๋ฌ์ฑ๋ฉ๋๋ค. ์ด์ ๋ํด ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ ์ผ๋ฐ์ ํตํด ์ปดํ์ผ๋ฉ๋๋ค. make
, ๋ฐ๋ผ์ Windows ์ฌ์ฉ์๋ ์ผ๋ถ Cygwin์ ์ค์ค๋ก ์ค์นํ๊ฑฐ๋ Visual Studio ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์ค๋ก ์ฒ๋ฆฌํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
๊ตฌํ์ ์ฝ์ ์ ํธ๋ฆฌํฐ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. ๊ด์ฌ ์๋ ๋ถ๋ค์ Github ์ ์ฅ์์ ์ถ๊ฐ ์ ๋ณด์์ ํ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค. ์ด ๋งํฌ๋ ๊ฒ์๋ฌผ ๋์ ์ฒจ๋ถํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ ์์ ์ ๋ํ ์ค๋ช ๊ณผ ์์ฐ์ผ๋ก ๋์ด๊ฐ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ์?
์ฃผ์ํ์ฌ. ์ฌ์ฉ๋ ์ด๋ฏธ์ง๋ ์ํ๋ ๋๋ก ์ด๋ํ๊ณ , ์ด๋ฆ์ ๋ฐ๊พธ๊ณ , ๋ณต์ฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋งค์ฐ ์ฃผ์ํด์ผ ํ๋ฉฐ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ๋ด์ฉ์ ๋ณ๊ฒฝํด์๋ ์ ๋ฉ๋๋ค. ํ ๋นํธ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํด์๊ฐ ์ค๋จ๋์ด ์ ๋ณด๋ฅผ ๋ณต๊ตฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ปดํ์ผ ํ์ f5ar ์คํ ํ์ผ์ ์ป์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ๋ถ์ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ ๊ณ์ฐํ ์ ์์ต๋๋ค. -a
: ./f5ar -a [ะฟะฐะฟะบะฐ ะฟะพะธัะบะฐ] [Perl-ัะพะฒะผะตััะธะผะพะต ัะตะณัะปััะฝะพะต ะฒััะฐะถะตะฝะธะต]
. ํฌ์ฅ์ ํ์์ ์ํํฉ๋๋ค. ./f5ar -p [ะฟะฐะฟะบะฐ ะฟะพะธัะบะฐ] [Perl-ัะพะฒะผะตััะธะผะพะต ัะตะณัะปััะฝะพะต ะฒััะฐะถะตะฝะธะต] [ัะฟะฐะบะพะฒัะฒะฐะตะผัะน ัะฐะนะป] [ะธะผั ะฐัั
ะธะฒะฐ]
, ๊ทธ๋ฆฌ๊ณ ๋ค์์ ์ฌ์ฉํ์ฌ ์์ถ ํ๊ธฐ ./f5ar -u [ัะฐะนะป ะฐัั
ะธะฒะฐ] [ะธะผั ะฒะพัััะฐะฝะพะฒะปะตะฝะฝะพะณะพ ัะฐะนะปะฐ]
.
์์ ์์ฐ
์ด ๋ฐฉ๋ฒ์ ํจ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์๋น์ค์์ ์์ ๋ฌด๋ฃ๋ก ์ ๊ณต๋๋ 225์ฅ์ ๊ฐ ์ฌ์ง ๋ชจ์์ ์
๋ก๋ํ์ต๋๋ค.
ํ ์คํธ ๊ณผ์ ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
$ ls
binary_data dogs f5ar
$ du -sh dogs/
633M dogs/
$ du -h binary_data
36M binary_data
$ ./f5ar -p dogs/ .*jpg binary_data dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 16.8s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 32.6s
Saving the archive... ok
$ ./f5ar -u dogs/dogs.f5ar unpacked
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.2s
Decompressing... done in 17.5s
Writing extracted data... ok
$ sha1sum binary_data unpacked
ba7ade4bc77881ab463121e77bbd4d41ee181ae9 binary_data
ba7ade4bc77881ab463121e77bbd4d41ee181ae9 unpacked
$ du -sh dogs/
563M dogs/
์๋๋ฉด ํฌ๋ค์ ์ํ ์คํฌ๋ฆฐ์ท
๋ณด์๋ค์ํผ, ํ๋ ๋๋ผ์ด๋ธ์ ์๋ ์๋ 633 + 36 == 669MB์ ๋ฐ์ดํฐ์์ ์ฐ๋ฆฌ๋ ~563์ ์์ถ๋ฅ ์ ์ ๊ณตํ๋ ๋ ์ข์ 1,188์ ์ป์์ต๋๋ค. ์ด๋ฌํ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๋ ๋งค์ฐ ์์ ์์ค๋ก ์ค๋ช ๋ฉ๋๋ค. ์ด๋ ๊ณ ์ ์ ์ธ ๋ฐฉ๋ฒ(์:tinyjpg)์ ์ฌ์ฉํ์ฌ JPEG ํ์ผ์ ์ต์ ํํ ๋ ์ป์ ์์ค๊ณผ ์ ์ฌํฉ๋๋ค. ๋น์ฐํ ์คํ ๊ฐ๋ ธ๊ทธ๋ํฝ ์์ถ์ ์ฌ์ฉํ๋ฉด ์ ๋ณด๊ฐ ๋จ์ํ "์์ค"๋๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ F5 ์ฌ์ฉ์ผ๋ก ์ธํด "์ต์ ํ๋" ๊ณ์์ ์๊ฐ ๊ธฐ์กด ์ต์ ํ๋ณด๋ค ํจ์ฌ ์ ์ต๋๋ค.
์ด๋ค ์์ ์ด ์๋๋ผ๋ ๋์๋ ์ ํ ๋ณด์ด์ง ์์ต๋๋ค. ์๋ ์คํฌ์ผ๋ฌ์์ ๋ ์๋ ๋์ผ๋ก ์ฐจ์ด๋ฅผ ํ๊ฐํ ์๋ ์๊ณ ์๋ณธ์์ ๋ณ๊ฒฝ๋ ๊ตฌ์ฑ ์์์ ๊ฐ์ ๋นผ์ ์ฐจ์ด๋ฅผ ํ๊ฐํ ์๋ ์์ต๋๋ค(์์์ด ์ฝํด์ง์๋ก ์ฐจ์ด๊ฐ ์์์ง).
habrastorage์ ๋ง์ง ์๋ ์ด๋ฏธ์ง์ ๋ํ ๋งํฌ
์๋์ -
์์ ๋จ -
์ฐจ์ด์ -
๋์ ๊ฒฐ๋ก
๊ทธ๋ฌํ ๋ฐฉ๋ฒ์ด ๊ฐ๋ฅํ๊ณ ์๋ช ๊ถ์ด ์๋ค๋ ๊ฒ์ ๋ ์๋ค์๊ฒ ํ์ ์ํฌ ์ ์์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋ ๋๋ผ์ด๋ธ๋ ์ถ๊ฐ ์ฑ๋(๋คํธ์ํฌ ์ ์ก์ฉ)์ ๊ตฌ์ ํ๋ ๊ฒ์ด ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋น์ฉ์ ์ ์ฝํ๋ ค๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๊ฐ๋จํ ์ต์ ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค. ํํธ์ผ๋ก๋ ์ด๊ฒ์ด ์ฌ์ค์ ๋๋ค; ๊ด๋ฒ์ํ ๊ฐ๋ฐ์ด ์ข ์ข ๋ ๊ฐ๋จํ๊ณ ๋ ์์ ์ ์ ๋๋ค. ํ์ง๋ง ๋ฐ๋ฉด์ ๊ฐ๋ ฌํจ๋ ์์ด์๋ ์ ๋ฉ๋๋ค. ๊ฒฐ๊ตญ, ๋ด์ผ ์์ ์ ์์ ์ฒ ํ ๋ผ๋ฐ์ดํธ์ ํ๋ ๋๋ผ์ด๋ธ๋ฅผ ์ถ๊ฐ๋ก ๊ตฌ์ ํ ์ ์๋ค๋ ๋ณด์ฅ์ ์์ง๋ง ์ด๋ฏธ ์ง์ ๋์ ์๋ ๋๋ผ์ด๋ธ๋ ์ธ์ ๋ ์ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
->
์ถ์ฒ: www.habr.com