clipivot is a command-line tool for quickly creating pivot tables.
If you want to use the program, visit the
Github repo for installation
and usage instructions. If, on the other hand, you want to contribute to
development, read on.
In particular, I strongly advise you to read the brief bit at the top of the page for the
aggregation module. That bit should show you how
clipivot is structured, so you can
more knowledgeably explore the tool.
How to help
Regardless of your programming experience, you can help make
clipivot a better tool.
Requires programming experience
- Performance: I’ve tried to design
clipivotto be reasonably performant, but I’m sure there are places where performance could be optimized. If you have any suggestions, I’d love to hear them. (Note: I’m aware that there are technically faster algorithms for computing median than the one I wound up with, the
BTreeMapin Rust’s standard library. The reason I chose the
BTreeMapis that it is well-suited for adding items from a stream and it is more memory efficient than other algorithms I’m aware of. But let me know if you’re aware of a way to improve the speed of the median computation while maintaining the best case memory efficiency of
- Coding style: This is my first project in Rust, so I’m sure there are parts of the code that are not idiomatic in Rust or that are poorly structured.
- Testing: I think I’ve included fairly decent testing for this tool, but I’m sure there are places where my testing can improve.
Doesn’t require programming experience
- Bugs: If something in this program doesn’t work like you think it’s supposed to, please let me know.
- Error handling: I’ve tried to make error handling as clear and helpful as possible, so if an error
message you get from
clipivotconfuses you, let me know and I’ll do what I can to fix it.
In particular, pretty much nothing you run should ever result in what Rust calls a “panic” — basically an unanticipated, fast exit from a program. Panics look something like:
thread 'main' panicked at 'explicit_panic', src/main.rs:5:1 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Documentation: You shouldn’t be confused about how to get
clipivotto work. If you’ve read the guide on GitHub and the help message and are confused by part of it, please let me know.
Features: I don’t have any new features in mind for
clipivot, but if you do, let me know and I’ll consider whether or not I think it makes sense to add the feature.
In order to contribute code, first clone the repository to install the source code:
$ git clone https://github.com/maxblee/clipivot
Then, make changes to the code and/or add/change tests, and then run
$ cargo test
to run tests.
In addition, I use
clippy to lint code and
rustfmt to automatically format code.
To install them, type
$ rustup update $ rustup component add rustfmt --toolchain stable $ rustup component add clippy --toolchain stable
And from there, you can run
$ cargo fmt --all
$ cargo clippy -- -A clippy::ptr_arg
Note that I am ignoring the
clippy::ptr_arg warning, which raises a warning
when you put a
&Vec<T> into a function call.
To get in touch with me about
clipivot, send me an email at email@example.com or submit an issue on
the GitHub page.
aggfuncmodule is the central module for computing statistics from a stream of records.
- The module that actually aggregates the records.
- Defines some basic settings surrounding a CSV file.
- The module for describing recoverable errors in my CSV command-line tools.
- The module for customized parsing of types for the command-line program.