An open API service indexing awesome lists of open source software.

https://github.com/daredever/compressor

WIP: GZip CLI Tool
https://github.com/daredever/compressor

Last synced: about 1 year ago
JSON representation

WIP: GZip CLI Tool

Awesome Lists containing this project

README

          

# Compressor

GZip CLI Tool.

## Problem

Разработать консольное приложение на C# для поблочного сжатия и распаковки файлов с
помощью System.IO.Compression.GzipStream.

Для сжатия исходный файл делится на блоки одинакового размера, например, в 1
мегабайт. Каждый блок сжимается и записывается в выходной файл независимо от
остальных блоков.

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

В случае исключительных ситуаций необходимо проинформировать пользователя
понятным сообщением, позволяющим пользователю исправить возникшую проблему, в
частности, если проблемы связаны с ограничениями операционной системы.
При работе с потоками допускается использовать только базовые классы и объекты
синхронизации (Thread, Manual/AutoResetEvent, Monitor, Semaphor, Mutex) и не
допускается использовать async/await, ThreadPool, BackgroundWorker, TPL.
Код программы должен соответствовать принципам ООП и ООД (читаемость, разбиение
на классы и т.д.).

Параметры программы, имена исходного и результирующего файлов должны задаваться
в командной строке следующим образом:

_GZipTest.exe compress/decompress [имя исходного файла] [имя результирующего файла]_

В случае успеха программа должна возвращать 0, при ошибке возвращать 1.
Примечание: формат архива остаётся на усмотрение автора, и не имеет значения для
оценки качества тестового, в частности соответствие формату GZIP опционально.

## GZip

- https://en.wikipedia.org/wiki/Gzip
- https://tools.ietf.org/html/rfc1950
- https://tools.ietf.org/html/rfc1951
- https://tools.ietf.org/html/rfc1952
- https://www.daylight.com/meetings/mug00/Sayle/gzip.html