Лекція 22. Стиснення та архіви
Лекція 22. Стиснення та архіви
Section titled “Лекція 22. Стиснення та архіви”Рівень 4: Хранитель файлів
Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.
Що ми сьогодні розкриємо
Section titled “Що ми сьогодні розкриємо”- розрізняти архівування і стиснення
- створювати та розпаковувати прості ZIP-архіви
- експериментально порівнювати, які дані стискаються краще
Зв’язок з попередніми лекціями
Section titled “Зв’язок з попередніми лекціями”У цій лекції ми використаємо знання про файли з лекції 17, щоб навчитися архівувати та стискати їх.
Архів — коробка для кількох файлів
Section titled “Архів — коробка для кількох файлів”Архів об’єднує багато файлів і папок в один контейнер. Це зручно для перенесення, резервної копії або надсилання.
Стиснення — окрема ідея: зробити представлення компактнішим. ZIP зазвичай поєднує обидві функції: пакує кілька файлів і стискає їх.
Повтори стискаються добре
Section titled “Повтори стискаються добре”Текст із великою кількістю повторів часто легко стискати. Уже стиснуті формати — JPEG, MP4, деякі інші — можуть стискатися ZIP значно слабше, бо багато очевидної надлишковості вже прибрано.
Без втрат означає точне відновлення
Section titled “Без втрат означає точне відновлення”Коли ти розпаковуєш ZIP із Python-кодом, кожен байт має повернутися точно таким самим. Інакше програма може зламатися. Це lossless compression — стиснення без втрат.
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”Файл із тисячами однакових A зазвичай стискається дуже добре.
Приклад 2
Section titled “Приклад 2”JPEG-фото вже використовує власне стиснення, тому ZIP не обов’язково зменшить його в рази.
Приклад 3
Section titled “Приклад 3”Архів project.zip може містити main.py, README.md і папку data/ в одному файлі.
Linux-лабораторія: експеримент із ZIP
Section titled “Linux-лабораторія: експеримент із ZIP”mkdir -p ~/marko-lab/compresscd ~/marko-lab/compresspython3 - <<'PYCODE'print('A' * 10000, file=open('repeats.txt','w'))PYCODEls -lh repeats.txtzip repeats.zip repeats.txtls -lh repeats.txt repeats.zipmkdir unpackedunzip repeats.zip -d unpackedcmp repeats.txt unpacked/repeats.txt && echo 'Файли однакові'cmp нічого не друкує, якщо файли однакові; ми додаємо повідомлення після успіху.
Місія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- виконай ZIP-експеримент
- створи другий текстовий файл з менш повторюваним текстом і порівняй ступінь стиснення
- запакуй обидва текстові файли в один архів
- розпакуй у нову папку й перевір
cmpхоча б для одного файлу - поясни різницю між «архівувати» і «стиснути»
Перевір себе
Section titled “Перевір себе”- Що робить архів?
- Що таке lossless compression?
- Чому повторювані дані часто стискаються добре?
- Чому JPEG може погано додатково стискатися ZIP?
- Якими командами ми створювали і розпаковували ZIP?
Терміни однією фразою
Section titled “Терміни однією фразою”- Архів — одна «коробка», у якій зібрані багато файлів і папок.
- Стиснення — зробити ті самі дані компактнішими.
- Lossless compression (без втрат) — стиснення, що відновлює дані точно (ZIP).
- Надлишковість — повтори й закономірності, які можна прибрати під час стиснення.
zip/unzip— команди пакування та розпакування архівів.cmp— команда порівняння двох файлів байт за байтом.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити різницю між архівацією та стисненням?
- Чи вмієш ти створювати та розпаковувати архіви за допомогою
zipтаunzip? - Чи розумієш ти, навіщо потрібні архіви для зберігання та передачі файлів?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”- архівування збирає файли разом, стиснення зменшує представлення
- ZIP часто робить і те, й інше
- експеримент з розміром файлів допомагає зрозуміти стиснення краще за сухе визначення
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.