Форматы файлов
Форматы документов
DOCX, XLSX, PPTX это ZIP с XML внутри. Переименуй в .zip и открой проводником. Microsoft сделала это в 2007 чтобы файлы весили меньше и восстанавливались после повреждений.
RVT это база данных SQLite внутри. Переименуй в .db и открой SQLite-браузером. Правда с шифрованием поверх, так просто не прочитаешь.
IFC это обычный текст. Открой блокнотом и увидишь строки вида #245 = IFCWALL(...). Вся модель здания в текстовом файле со ссылками между объектами.
DWG никогда не был опубликован Autodesk. Open Design Alliance взломала формат реверс-инжинирингом, Autodesk судился и в итоге ничего не добился. Теперь все CAD-системы кроме AutoCAD читают DWG через эту библиотеку.
PDF это тоже текст. Открой блокнотом и в начале увидишь %PDF-1.4, дальше команды "нарисуй букву А в точке 100,200". Картинки и шрифты закодированы внутри в base64.
Форматы изображений
PNG начинается с 8 одинаковых байт: 89 50 4E 47 0D 0A 1A 0A. По этой подписи система узнаёт формат даже если переименовать файл в .txt. Почти все форматы имеют такую магическую подпись в начале.
JPEG не хранит пиксели. Делит картинку на блоки 8x8 и хранит математические коэффициенты. Каждое пересохранение ухудшает качество безвозвратно. PNG хранит пиксели точно, поэтому не теряет качество но весит больше.
GIF поддерживает анимацию с 1989 года. Придуман для передачи картинок по модему, поэтому максимум 256 цветов.
RAW с фотоаппарата это почти не формат. Canon .CR3, Nikon .NEF, Sony .ARW у каждого своё. Adobe написала отдельный декодер для каждой камеры, поэтому Lightroom весит гигабайты.
Форматы звука
MP3 это поезд из кусочков по 26 миллисекунд. Можно склеить два MP3 командой copy 1.mp3 + 2.mp3 result.mp3 и получится рабочий файл. Сжимает в 10 раз выбрасывая частоты которые человек не слышит.
WAV это почти сырые данные с микрофона без сжатия. Минута звука весит около 10 МБ.
Архивы
ZIP придуман в 1989 Филом Кацем. Он украл идею у работодателя, выиграл суд и выпустил ZIP как открытый формат. Умер в 2000 в одиночестве от алкоголизма. Его формат используют миллиарды людей каждый день.
ZIP хранит оглавление в конце файла а не в начале. Это сделано специально чтобы дописывать файлы без перезаписи всего архива. Побочный эффект: если начало файла повреждено, оглавление может уцелеть и часть файлов восстановима.
RAR написал один человек, Евгений Рошал, в 1993 году. WinRAR не блокирует после пробного периода намеренно. Это осознанное решение, не баг.
7Z сжимает лучше всех, но медленно и требует много памяти. Поэтому ZIP победил как стандарт.
TAR вообще не сжимает. Просто склеивает файлы в один поток. Придуман для магнитных лент в Unix. Поэтому всегда .tar.gz или .tar.xz: сначала склеить, потом сжать.
GZIP сжимает только один файл, папки не умеет. Поэтому всегда в паре с TAR.
XZ в 2024 году содержал бэкдор. Кто-то два года втирался в доверие к разработчику под видом помощника и внедрил вредоносный код. Обнаружили случайно потому что SSH стал чуть медленнее.
ZIP64 это расширение для файлов больше 4 ГБ. Оригинальный ZIP хранил размер в 32 битах и упирался в потолок 4 ГБ. Исправили в 2001.
Матрёшка форматов: DOCX, JAR, APK, IPA, EPUB это всё ZIP. Переименуй любой и открой архиватором.
Исполняемые файлы
EXE на Windows начинается с букв MZ. Это инициалы Марка Збиковского, программиста Microsoft который придумал формат в 1981 году. Каждый раз когда запускаешь программу компьютер видит его инициалы.
Системный мусор
.DS_Store на Mac и Thumbs.db на Windows создаются автоматически и хранят миниатюры и настройки папок. Постоянно случайно попадают в архивы и репозитории и рассказывают о структуре файловой системы того кто прислал архив.