archiver is a compressing/decompressing tool made for educational purposes

Related tags

Compression archiver
Overview

archiver πŸ“

archiver is a compressing/decompressing tool made for educational purposes (specifically, it was a hometask given at a C++ course in the HSE university).

Being written in C++ and using Huffman coding techinque for data compression, this tool uses extremely small amount of RAM, while having pretty decent compressing/decompressing speeds.

archiver can be used as an every-day tool, however it requires some attention from the end-user. (just like the dd command πŸ˜‰ ).

Installation

  1. Clone this repository -- git clone https://github.com/chopikus/archiver.git.
  2. Open the cloned folder -- cd archiver.
  3. Create new folder for building the tool, and open it -- mkdir build && cd build.
  4. Run the following command: cmake .. && make. After that the executable file named archiver should appear.

Usage

  • archiver -c ARCHIVE file1 [file2...] -- compress files file1, file2, ... into an archive named ARCHIVE;
  • archiver -d ARCHIVE -- decompress archive named ARCHIVE into the current folder;
  • archiver -h -- show help message.

Sections below are not fully written yet.

Benchmarks

Video compression

This rickroll video was used for benchmarking (downloaded in 360p).

  • Initial file size -- 63.1 MB
  • Archive size -- 62.8 MB (space saving: 0.4%)
  • Compressing time -- 11.6s (speed: ~5.5MB/s)
  • Decompressing time -- 28.9s (speed: ~2.2MB/s)

Text compression

Testing compression of book "War and Peace" written by Leo Tolstoy.

  • File format -- txt
  • Initial file size -- 5.3 MB
  • Compressed size -- 2.6 MB (space saving: 52.9%)
  • Compressing time -- 0.49s (speed: ?)
  • Decompressing time -- ? (speed: ?)

Details

Running tests

TODO

Optimizations

TODO

File format

TODO

You might also like...
A mini HTTP Echo Server, just for educational purposes.

tiny-http-echo-server A simple HTTP Echo Server, just for educational purposes. If you send the HTTP request with a query parameter named "num" and an

Compressed Log Processor (CLP) is a free tool capable of compressing text logs and searching the compressed logs without decompression.

CLP Compressed Log Processor (CLP) is a tool capable of losslessly compressing text logs and searching the compressed logs without decompression. To l

An embedded-friendly library for decompressing files from zip archives

An 'embedded-friendly' (aka Arduino) library to extract and decompress files from ZIP archives

NanaZip is an open source file archiver intended for the modern Windows experience
NanaZip is an open source file archiver intended for the modern Windows experience

NanaZip is an open source file archiver intended for the modern Windows experience, forked from the source code of well-known open source file archiver 7-Zip 21.03.

Runtime Archiver plugin for Unreal Engine. Cross-platform archiving and unarchiving directories and files. Currently supports ZIP format.

Runtime Archiver Archiving and dearchiving directories and files Explore the docs Β» Marketplace . Releases . Support Chat Features Fast speed Easy arc

A simple C library for compressing lists of integers using binary packing

The SIMDComp library A simple C library for compressing lists of integers using binary packing and SIMD instructions. The assumption is either that yo

Slow5tools is a toolkit for converting (FAST5 - SLOW5), compressing, viewing, indexing and manipulating data in SLOW5 format.

slow5tools Slow5tools is a simple toolkit for converting (FAST5 - SLOW5), compressing, viewing, indexing and manipulating data in SLOW5 format. Abou

Bolt is an algorithm for compressing vectors of real-valued data and running mathematical operations directly on the compressed representations.
Bolt is an algorithm for compressing vectors of real-valued data and running mathematical operations directly on the compressed representations.

Bolt is an algorithm for compressing vectors of real-valued data and running mathematical operations directly on the compressed representations.

Sequential impulses physics engine made for learning purposes

A 3D physics engine that uses Separating Axis Test for collision detection, the clipping method for generating contact manifold, contact point reducti

πŸ› οΈ A simple ECS library made for learning purposes (header-only)

Met ECS A simple Entity Component System library made for learning purposes. It is header-only, so just have to copy the content of the src folder and

Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.
Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

Educational Operating System
Educational Operating System

Educational Operating System

The purpose of these streams is to be educational and entertaining for viewers to learn about systems architecture, reverse engineering, software security, etc., and NOT to encourage nor endorse malicious game hacking.
The purpose of these streams is to be educational and entertaining for viewers to learn about systems architecture, reverse engineering, software security, etc., and NOT to encourage nor endorse malicious game hacking.

Memestream This repository holds the code that I develop during my live game "modding" πŸ˜‰ sessions. When I stream, I like to speedrun making a success

Tilck is an educational monolithic x86 kernel designed to be Linux-compatible at binary leve
Educational material and examples for those interested in learning the C programming language

Learn C Educational material and examples for those interested in learning the C programming language Files: examples.c Various examples of programs w

Accepted solutions to the Atcoder Educational DP Contest

atcoder-educational-dp Accepted solutions to the Atcoder Educational DP Contest A - Frog 1 B - Frog 2 C - Vacation D - Knapsack 1 E - Knapsack 2 F - L

Unox is an educational unix-like operating system. #JustForFun
Unox is an educational unix-like operating system. #JustForFun

Unox Unox is a x86_64 unix-like operating system written in c and assembly for learn about operating systems. Roadmap Write bootloader and linker Writ

C library designed for the TI MSP432P401R microprocessor and the TI Educational Booster Pack, to easily play and control songs with the integrated Piezo Buzzer.

MusicLib C library designed for the TI MSP432P401R microprocessor and the TI Educational Booster Pack, to easily play and control songs with the integ

Owner
Ihor Chovpan
Ihor Chovpan
NanaZip is an open source file archiver intended for the modern Windows experience

NanaZip is an open source file archiver intended for the modern Windows experience, forked from the source code of well-known open source file archiver 7-Zip 21.03.

M2-Team 3.9k Jan 4, 2023
Runtime Archiver plugin for Unreal Engine. Cross-platform archiving and unarchiving directories and files. Currently supports ZIP format.

Runtime Archiver Archiving and dearchiving directories and files Explore the docs Β» Marketplace . Releases . Support Chat Features Fast speed Easy arc

Georgy Treshchev 26 Dec 15, 2022
Slow5tools is a toolkit for converting (FAST5 <-> SLOW5), compressing, viewing, indexing and manipulating data in SLOW5 format.

slow5tools Slow5tools is a simple toolkit for converting (FAST5 <-> SLOW5), compressing, viewing, indexing and manipulating data in SLOW5 format. Abou

Hasindu Gamaarachchi 57 Dec 2, 2022
LZFSE compression library and command line tool

LZFSE This is a reference C implementation of the LZFSE compressor introduced in the Compression library with OS X 10.11 and iOS 9. LZFSE is a Lempel-

null 1.7k Jan 4, 2023
Draco is a library for compressing and decompressing 3D geometric meshes and point clouds.

Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.

Google 5.4k Dec 30, 2022
Made for educational purposes.

Tested on Win10x64 20H2 and not latest gepard Last test some months ago Features: Breakpoints (HWBP & INT3 trap flag) Integrity of modified files on g

Charles 7 Dec 28, 2022
Collection of various algorithms in mathematics, machine learning, computer science, physics, etc implemented in C for educational purposes.

The Algorithms - C # {#mainpage} Overview The repository is a collection of open-source implementation of a variety of algorithms implemented in C and

The Algorithms 15.3k Jan 5, 2023
Custom WebSocket implementation in C for educational and recreational purposes.

C WebSockets WARNING! The library is in an active development state and is not even alpha yet. Use it at your own risk. Nothing is documented, anythin

Tsoding 17 May 25, 2022
RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational purposes primarily, but it still is a serious project. It is currently in its infancy.

RocketOS What is RocketOS? RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational pur

null 30 Sep 19, 2022
C/C++ Windows Process Injector for Educational Purposes.

ProcessInjector C/C++ Windows Process Injector for Educational Purposes. What does this software do? This is a simple process injector that uses the C

Berat Γ‡ağrΔ± Eroğlu 8 May 3, 2022