- Главная
- →
- Бэкенд, теория программирования
Хочу всё сжать Бэкенд, теория программирования
Пишет код на всём подряд, показывает другим как. В удачные дни код удается сносить, это обязательно показывает другим и заставляет "точно так же" втройне сильнее. Всю сознательную жизнь из этого выходят разные движки, прямо проклятие какое-то.
Тезисы
Ловко придумать схему сжатия для своих данных умеют не все, а очень зря. Иногда (иногда) при помощи этой магии удается добиться как бы невозможного: одновременно и сэкономить диск или память, и при этом ускорить код.
Как работает магия сжатия в целом? Как она работает более конкретно в очень разных продуктах: "просто базах" типа MySQL или Mongo; в поисковиках типа Lucene или Sphinx (или даже веб-поисках); в колоночных хранилищах типа Vertica или Clickhouse; в конце концов, внутри апдейтов Chrome? Обсудим это, пробежимся по всем важным ключевым словам от замшелых Huffman до моднейших Snappy - и, важнее, по ещё паре десятков других ключевых слов. Подробно разберем несколько особо интересных методов и трюков про сжатие и прочую перепаковку данных. Посмотрим пример на 100 строк кода со сжатием в 6 раз и одновременным ускорением работы в 5 раз (читерством, конечно), причем успешно написанный не специально обученным монстром, а совершенно обычными разработчиками. Посмотрим на скорость разных готовых кодеков, попытаемся понять, когда какой можно применять, а где нельзя.
Бонус-трек в коридоре, если кому интересно, как устроено внутри сжатие картинок, видео и прочего такого. Условно прикинем на пальцах, как написать свой простенький игрушечный JPEG-декодер в сотню-другую строк; можно на JavaScript или Python. Или не JPEG!