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
- Host: GitHub
- URL: https://github.com/daredever/compressor
- Owner: daredever
- License: mit
- Created: 2021-02-06T12:55:51.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-02-08T09:05:52.000Z (over 5 years ago)
- Last Synced: 2023-03-23T13:27:35.004Z (about 3 years ago)
- Language: C#
- Homepage:
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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