Как устроены файлы? Разбор
Файлы… что вообще может быть проще? Мы все привыкли создавать, удалять, редактировать, перекидываться файлами.
Но можем ли мы заглянуть внутрь каждого файла и понять как он устроен? Конечно можем, поэтому сегодня мы немного покопаемся в бинарном коде и пощупаем метаданные.
Заодно узнаем, почему iPhone зависает от SMS и распотрошим PowerPoint.
Почему форматов файлов так много?
Если бы мы просто могли взглянуть на сырые данные, которые хранятся внутри жесткого диска или SSD, то мы бы не увидели никаких файлов: мы бы увидели только нолики и единички. Потому как, в любом случае, в памяти компьютера всё хранится в виде сплошного потока двоичного кода.
Но как же тогда понять, где заканчивается один файл и начинается другой?
Поначалу эту проблему человечество решало брутально. Люди записывали один файл на один жесткий диск, чтобы уж точно не ошибиться. Поэтому раньше словом файл называли не отдельную область на жестком диске, а прям целое устройство. К примеру IBM 305.
Но потом, люди придумали файловые системы. Если очень упростить, это такое оглавление в котором указано имя файла, где он начинается и его длина. А также всякие метаданные, типа время создания, изменения, и можно ли его перезаписывать.
Но для того чтобы прочитать файл, знать его местоположение и границы на жестком диске недостаточно, ведь нам нужно как-то расшифровать бинарный код.
Для этого и существуют различные форматы файлов. В большинстве операционных систем форматы файлов указываются в виде расширения, которое отделяется точкой от имени файла. А если вы не видите расширения, это нормально. Потому что, по умолчанию, современные ОС их скрывают, но можно поставить галочку в настройках.
Расширение даёт подсказку операционной системе и программам, о том какой тип данных он содержит и как это всё структурировано. Например, увидев файл droider.jpg операционная система и мы, люди, сразу понимаем, что это картинка в формате JPEG.
Естественно, для типов данных и разных задач оптимальной будет разная структура файла. Поэтому и форматов файлов существует огромная масса.
Поэтому давайте разберем, как устроены наиболее популярные форматы файлов от более простых к более сложным.
TXT
Один из самый простых форматов — это TXT. Это текстовый формат. Знаменитое приложение «Блокнот» в Windows работает как раз с этим форматом.
TXT — формат незамысловатый. Он может хранить в себе только простой неформатированный текст, то есть в нем нет никаких выделений, подчеркиваний, курсивов, отступов, разных шрифтов. Только голый текст, а точнее просто символы.
Каждый символ в TXT-формате хранится в виде бинарного кода.
Hello, world!
То что мы с вами видим как осмысленный текст, операционная система видит вот так:
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111 01101111 01110010 01101100 01100100 00100001
Каждые 8 цифр, то есть 8 бит этого кода — это отдельный символ.
Например, 01001000 — это “H”, 01100101 — это “e”, и так далее.
01001000 — H
01100101 — e
01101100 — l
01101100 — l
01101111 — o
Но как операционная система расшифровывает эти данные? Всё просто. Операционной системе требуется загрузить таблицу, в которой описано соответствие бинарного кода конкретному символу. Таких таблиц много, самые известные сегодня — CP1251 (Windows), UTF-8 (Android, Mac) и так далее. Такие таблицы, часто называют кодировками. В данном файле используется кодировка UTF-8, то есть 8-битный Юникод.
Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит»
Подобрав правильную кодировку остается дело техники. Система сопоставляет бинарный код с таблицей кодировки UTF-8 и готово! Но что будет если система подберет кодировку неправильно? Вариантов не много, скорее всего мы увидим крякозябры:
çÁ%%?Ï?Ê%À (кодировка EBCDIC).
И такое часто случается, так как TXT-файл не содержит никакой дополнительной информации о кодировке. И это большой недостаток формата.
Еще интересный момент. Исторически, компьютеры «знали» только латиницу, которая используется в большинстве европейских языков. И тут произошла проблема: 8-бит — это всего лишь 256 возможных значений. Это немного, но этого было достаточно, чтобы закодировать все базовые символы + латинские буквы.
И вдобавок, эту таблицу нужно было загрузить в оперативную память при загрузке компьютера, а у типового ПК в начале 80-х годов редко было больше 640 килобайт оперативки. А использовать 16-битные таблицы (65536 вариантов) было просто невозможно, такая таблица просто не влезла бы в память.
Но мощность компьютеров росла и проблема ушла. К таблицам с латинскими символами добавились кириллические, которые занимали уже не по 8 бит, а по 16 бит каждый. Поэтому текст на русском занимает в два раза больше памяти, при том же количестве символов.
11010000 10011111 11010001 10000000 11010000 10111000 11010000 10110010 11010000 10110101 11010001 10000010 00101100 00100000 11010000 10111100 11010000 10111000 11010001 10000000 00100001
11010000 10011111 — П
11010001 10000000 — р
10111000 11010000 — и
11010000 10110010 — в
…
Привет, мир!
Старики помнят лайфхак, если писать SMS на латинице, то влезет в два раза больше текста. Всё это как раз из-за кодировки.
Кстати, помните все эти случаи, когда iPhone умирал от присланного сообщения со странными символами или картинки? Это как раз связано с тем, что система не могла правильно распознать присланные символы и правильно определить их длину.
Например, вот такое сообщение в своё время заставляло любой айфон уйти в цикличный ребут:
Power
لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ
冗
WAV
Так вот, чтобы у операционной системы не было проблем с пониманием как прочитать файл. Помимо самих данных, в разные форматы стали добавлять данные о данных. То есть метаданные, которые хранятся прямо внутри файла и содержат дополнительную информацию о том, как этот файл прочитать.
К примеру, возьмём файл в формате WAV.
Это простой аудиоформат, который содержит несжатый. Всё CD диски записаны в формате WAV.
Первыt 44 байта классического WAV-файла содержат заголовок, к котором указывается полезнейшая информация:
- количество аудио каналов,
- частота дискретизации,
- битовая глубина
- и многое другое.
Все эти данные позволяют быть уверенным, что аудио будет воспроизведено корректно.
Открытые и проприетарные форматы
Структура WAV хорошо известна и наверное такой файл сможет прочитать практически любой плеер. Всё потому, что WAV-файл — это пример открытого формата.
Есть и другие открытые форматы, которыми вы ежедневно пользуетесь. Например:
- язык разметки web-страниц — HTML
- картинки — PNG
- аудио в формате — OGG
- архива — ZIP,
- видео — MKV,
- электронной книги — EPUB
- и другие…
Но бывают и закрытые форматы файлов, а точнее проприетарные. Открытие и редактирование таких файлов сторонним софтом часто либо вообще запрещено, либо распространяется по лицензиям.
Проприетарные форматы всем прекрасны, но в отдельных случаях они препятствуют конкуренции в сфере программного обеспечения, так как приводят к замыканию на поставщике. Есть даже такой термин Vendor lock-in.
Старый офис
Например, раньше такая ситуация была с форматами Microsoft Office: DOC, XLS, PPT.
Мало того, что это были проприетарные форматы компании Microsoft и работали только с фирменным ПО. Так еще Microsoft постоянно меняли свою структуру файлов от одной версии MS Office к другой. И в результате? при выходе новой версии офисного пакета? файлы из старого редактора уже не читались новым, а наоборот — и подавно.
Такая ситуация не очень нравилась Европейскому Союзу. Поэтому, ЕС взъелся на тему ограничения конкуренции. В итоге, форматы файлов опубличили, и все научились хотя бы их читать, но для записи в старые форматы, по-прежнему, нужна лицензия Microsoft. И параллельно этому начали разрабатываться открытые форматы.
ODF и OOXML
1 мая 2006 года на свет появился формат формат ODF, что буквально расшифровывается как открытый формат документов для офисных приложений. Он был разработан консорциумом OASIS и Sun Microsystems.
- ODF — Open Document Format for Office Application
- OASIS — Organization for the Advancement of Structured Information Standards
Формат основан на универсальном языке разметки XML. А сам файл ODF представляет из себя ZIP-архив с папками, XML-файлами и всякими вложениями в виде картинок, видео и прочим. Иными словами, если открыть такой файл через архиватор мы можем спокойно увидеть все внутренности. Вот так пример открытости!
Microsoft тоже не спал. Под давлением Европейского суда они объединились с рядом компаний в ассоциацию ECMA и разработали свой открытый формат Office Open XML, который появился на свет чуть позже в 2006 году.
OOXML стандартизирован European Computer Manufacturers Association. Standard ECMA-376
К привычным форматом конце добавилась буква X и мы получили: DOCX, XLSX, PPTX.
OOXML — Office Open XML (DOCX, XLSX, PPTX)
OOXML, в целом, очень похож на ODF. Он также основан на XML-разметке и также представляет из себя ZIP-архив. Поэтому вы также можете заглянуть внутрь офисных файлов при помощи любого архиватора. Можно даже вытащить картинки и даже подменить их, что бывает особенно удобно при работе с презентациями или когда вам присылают текстовый документ с картинками внутри файла.
Несмотря на кажущуюся простоту, формат реально сложный. Только основная документация — это 5 тысяч страниц. И это практически без картинок.
Тем не менее, кто-то всё таки смог прочитать всю эту документацию и поэтому на свет появились классные офисные пакеты, например МойОфис, которые умеют работать и ODF форматом, и с Office Open XML, и даже с устаревшими форматами типа DOC.
Но есть важная ремарка про старые форматы. Как правило, современный софт умеет их только читать, но не записывать, потому как это действие требует приобретение лицензии Microsoft. Впрочем, в наше время это действие, мягко говоря, бессмысленно.
МойОфис
Перейдём теории к практике. Как видите, форматов файлов много. У всех форматов есть своя специфика и история. Поэтому, если мы говорим про офисное ПО, важно, чтобы оно работало как с можно большим количеством форматов. И что приятно, такой софт есть. Одно из таких приложений сделали нашими разработчики и назвали его МойОфис.
Вообще, МойОфис — это хороший пример, современного приложения. Во-первых, есть бесплатные десктопная и мобильная версии приложения для работы с текстом и таблицами. На секундочку, это не урезанные, полнофункциональные приложения, без рекламы!
Во-вторых, мобильную версию приложения «МойОфис Документы» хочется отдельно похвалить, хотя у него и так высокий рейтинг в AppStore и GooglePlay. Приложение очень удобное и быстрое. Приложение работает со всеми форматами OOXML, OpenDocument, и даже с устаревшими бинарными форматами (DOC, XLS).
А еще все работает в одном приложении. Вместо того чтобы отдельно качать программу для презентаций, таблиц, текста и даже PDF, достаточно поставить «МойОфис Документы» и готово. Почему все так не делают?
Также ребята первыми в мире добавили в офисное приложение функцию аудиокомментариев. Чтобы вы понимали, это не голосовой ввод с клавиатуры, когда просто вводишь текст голосом, то этот голос улетает на расшифровку на сторонние серверы, обрабатывается там и возвращается обратно в виде текста. Тут же всё устроено просто и безотказно: приложение записывает голос и размещает аудиозапись внутри документа. То есть голос не покидает пределов пользовательского устройства, и хранится только внутри самого документа. Прогрессивненько. А что так можно было?
В десктопной версии есть тоже куча мелочей ускоряющих работу:
- Меню быстрых действий, которое можно открыть сочетанием клавиш [Ctrl]+[/] в любом месте документа.
- Есть подсказки быстрых клавиш
- Более удобная работа с абзацами и прочее, прочее.
- А главное, приложение просто удобное и понятное. Без труда сможет разобраться хоть школьник, хоть бабушка.
В общем, попробуйте программы МойОфис у себя дома и на смартфоне. Вы точно ничего не потеряете, потому как бесплатные версии со всем необходимым функционалом для частного использования и щедрые пробные версии для офисов.
Итого
Что мы в итоге узнали? Файлы бывают нескольких типов:
Самые базовые — бинарные. Такие форматы любят придумывать компании, чтобы никто не понял, как их программы хранят данные.
Более открытый вариант — xml-контейнеры. К счастью, большинство популярных офисных форматов сейчас такие. Если хотите работать со всеми этими файлами хоть дома, хоть на бегу, скачивайте программы МойОфис! На этом у нас сегодня всё.
Post Views: 363