УДК 004.42

РАЗРАБОТКА ПРОГРАММЫ ДЛЯ СЖАТИЯ ДАННЫХ МЕТОДОМ GZIP

Бондаренко Владислав Витальевич1, Козич Виталий Геннадьевич2, Баженов Руслан Иванович3
1Приамурский государственный университет имени Шолом-Алейхема, студент
2Приамурский государственный университет имени Шолом-Алейхема, студент
3Приамурский государственный университет имени Шолом-Алейхема, к.п.н., доцент, зав. кафедрой информационных систем, математики и методик обучения

Аннотация
Каждый пользователь хранит огромное количество информации на своем компьютере, соответственно было бы разумным сжимать данные для экономии пространства на жестком диске, а также для хранения нескольких файлов в одном архиве для последующей передачи через Интернет. Особенно актуально это для мобильных платформ и для тех, у кого медленный Интернет. В данной статье рассматривается создание приложения, реализующего GZip сжатие при помощи алгоритма Deflate и упаковку файлов в архив.

Ключевые слова: алгоритм Хаффмана, сжатие данных


DEVELOPMENT OF PROGRAM FOR DATA COMPRESSION WITH HELP OF GZIP METHOD

Bondarenko Vladislav Vitalievich1, Kozich Vitaliy Gennadievich2, Bazhenov Ruslan Ivanovich3
1Sholom-Aleichem Priamursky State University, student
2Sholom-Aleichem Priamursky State University, student
3Sholom-Aleichem Priamursky State University, Candidate of pedagogical sciences, associate professor, Head of the Department of Information Systems, Mathematics and teaching methods

Abstract
Each user stores a wealth of information on own computer, so it would be reasonably to compress data for saving space on hard disk and stores a few files in one archive for transfer via Internet. Especially it is actual for mobile platforms and for those, who have slow Internet. This article describes how to create an application that implements GZip compress using the Deflate algorithm and packaging of files in the archive.

Keywords: data compression, Deflate, GZip, LZ77, the algorithm Huffman


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Бондаренко В.В., Козич В.Г., Баженов Р.И. Разработка программы для сжатия данных методом GZip // Современные научные исследования и инновации. 2016. № 4 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2016/04/66586 (дата обращения: 20.11.2016).

С развитием новых технологий обработки и хранения информации вырастает объём данных, хранящихся на запоминающих устройствах. В целях экономии пространства памяти компьютера разрабатываются различные алгоритмы сжатия данных. Ещё с середины XX века активно велись работы по исследованию эффективных методов сжатия данных, например, алгоритм Хаффмана или алгоритм Шеннона-Фано. Несмотря на множество существующих методов сжатия, разработка новых способов продолжается и по сей день. Особенно актуально уменьшение размера файлов в Интернете, где скорость передачи данных играет существенную роль. Deflate – один из таких алгоритмов, являющийся сочетанием алгоритмов Хаффмана и LZ77 и реализующийся в методе сжатия GZip. Данный метод позволяет сжимать данные любого типа, но особую эффективность он имеет в отношении текстовых данных.

Исследованием методов сжатия данных занимались учёные R. Sedgewick и K.Wayne, которое было опубликовано в книге под названием Algorithms [1]. Исследователь из Лондонского университета I. Pu написала об основных, фундаментальных знаниях сжатия данных, которые позволяют получить полное представление о современных алгоритмах сжатия [2]. Полная техническая спецификация об алгоритме сжатия DeflateRFC 1951 была опубликована программистом P. Deutsch [3]. Разработкой программы, реализующей сжатие файлов с помощью кода Хаффмана занимались Я.Г. Малиевский, Р.И. Баженов [4]. Г.Г. Ласточкин, Т.А.Самойлова при помощи применения сжатия GZip смогли добиться значительного повышения производительности веб-сервисов [5]. Основные преимущества и недостатки алгоритмов, применяемых в сжатии GZip, были высказаны в статье на электронном ресурсе Habrahabr [6]. На сайте «Всё о сжатии данных, изображений и видео» выложен материал по описанию работы алгоритма Deflate [7]. Математическая реализация алгоритма Хаффмана предоставлена на электронном ресурсе «Университет ИТМО» [8].

Для создания программы GZipArchiver применялся язык программирования C#. Среда программирования Visual Studio 2013 располагает стандартными средствами для реализации сжатия GZip. Разработанная программа обладает базовым функционалом, достаточного для компрессии и декомпрессии файлов. Стоит отметить, что по умолчанию данный метод не умеет определять начало и конец файла, в результате чего становится невозможным упаковывать и распаковывать несколько файлов. Для решения этой проблемы были внедрены метки, дающие ссылку на конец файла.

При запуске программы откроется следующее окно (см. рис. 1).

 Рисунок 1. Внешний вид окна программы

Рабочая область программы состоит из трёх частей: сжатие данных (слева), разжатие данных (справа) и полоса текущего состояния (внизу).Для сжатия необходимо нажать кнопку «Добавить файлы» в соответствующей области и выбрать файлы в диалоговом окне. Выбранные файлы отобразятся в небольшом окошке. После нажатия кнопки «Сжать» программа начнёт свою работу, процесс которой будет отображаться в полосе загрузки (см. рис. 2).

Рисунок 2. Процесс сжатия файлов

Для осуществления обратного процесса необходимо нажать кнопку «Выбрать» в области «Разжатие данных», после чего выбрать запакованный файл. Программа выдаст список файлов, содержащийся в данном архиве, и покажет их размер в байтах. Завершить распаковку можно, нажав на кнопку «Разжать» и выбрав папку, в которую будут скопированы файлы (см. рис. 3).

Рисунок 3. Процесс разжатия файлов

Если при добавлении файлов потребуется удалить один или несколько из них, это всегда можно сделать через контекстное меню, нажав правой кнопкой мыши в окошке с файлами.

Как уже было сказано, метод сжатия GZipбольше всего подходит для компрессии файлов с текстовыми данными. Чтобы убедиться в этом рассмотрим данные следующей таблицы (см. таб. 1).

Таблица 1. Сравнение размера файлов до и после сжатия

Типы файлов

Размер файла в килобайтах

До сжатия

После сжатия

Текст (txt)

578

211

Изображение (jpg)

478

478

Звук (mp3)

6540

6440

Видео (mp4)

106822

99648

HTML документ (html)

159

28,8

Исполняемый файл (exe)

51504

19445

Из таблицы видно, что сжатие изображений, звука и видео не даёт нам особых преимуществ. Причиной тому является то, что эти типы файлов уже находятся в сжатом состоянии, например, сжатие JPEG. Повторное сжатие не приносит никакого выигрыша в уменьшении размера файла. Зато другие типы данных имеют явное преимущество: текстовый и исполняемый файлы более чем в 2,5 раза, html документ в 5,5 раз.

Таким образом, была создана компьютерная программа, позволяющая сжимать и разжимать данные и упаковывать их в компактный архив. Метод сжатия GZip никоим образом не является лучшим, но при этом обеспечивает хороший баланс между скоростью работы и степенью сжатия. Все веб-браузеры на сегодняшний день поддерживают данный алгоритм сжатия, что позволяет использовать его повсеместно в Интернете, тем более что он показывает хорошие результаты при сжатии текста и html документов. Также он свободно распространяется, давая разработчикам возможность создавать собственные реализации алгоритма.


Библиографический список
  1. Sedgewick R., Wayne K. Algorithms.London: Pearson, 2011. 992 с.
  2. PuI.Data compression.London:UniversityofLondon, 2004. 256 с.
  3. Deutsch P. Deflate Compressed Data Format Specification version 1.3 // RFC 1951. 1996.
  4. Малиевский Я.Г., Баженов Р.И. Разработка компьютерной программы сжатия файлов на основе кода Хаффмана // Актуальные направления научных исследований XXI века: теория и практика. 2015. Т. 3. № 7-4 (18-4). С. 434-437.
  5. Ласточкин Г.Г., Самойлова Т.А. Повышение производительности веб-сервисов методом сжатия // Системы компьютерной математики и их приложения. 2015. №16. С. 83-85.
  6. Как работает сжатие GZIP // Habrahabr URL: https://habrahabr.ru/post/221849/ (дата обращения: 15.04.2016).
  7. Описание формата сжатия данных Deflate // Всё о сжатии данных, изображений и видео URL: http://compression.ru/download/articles/lz/mihalchik_deflate_decoding.html (дата обращения: 15.04.2016).
  8. Алгоритм Хаффмана // Университет ИТМО URL: http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A5%D0%B0%D1%84%D1%84%D0%BC%D0%B0%D0%BD%D0%B0 (дата обращения: 15.04.2016).


Все статьи автора «Баженов Руслан Иванович»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться:
  • Регистрация