frotate alternatives and similar packages
Based on the "Math" category.
Alternatively, view frotate alternatives based on common mentions on social networks and blogs.
-
vector
An efficient implementation of Int-indexed arrays (both mutable and immutable), with a powerful loop optimisation framework . -
statistics
A fast, high quality library for computing with statistics in Haskell. -
HerbiePlugin
GHC plugin that improves Haskell code's numerical stability -
hgeometry
HGeometry is a library for computing with geometric objects in Haskell. It defines basic geometric types and primitives, and it implements some geometric data structures and algorithms. The main two focusses are: (1) Strong type safety, and (2) implementations of geometric algorithms and data structures that have good asymptotic running time guarantees. -
dimensional
Dimensional library variant built on Data Kinds, Closed Type Families, TypeNats (GHC 7.8+). -
computational-algebra
General-Purpose Computer Algebra System as an EDSL in Haskell -
mwc-random
A very fast Haskell library for generating high quality pseudo-random numbers. -
numhask
A haskell numeric prelude, providing a clean structure for numbers and operations that combine them. -
poly
Fast polynomial arithmetic in Haskell (dense and sparse, univariate and multivariate, usual and Laurent) -
cf
"Exact" real arithmetic for Haskell using continued fractions (Not formally proven correct) -
optimization
Some numerical optimization methods implemented in Haskell -
equational-reasoning
Agda-style equational reasoning in Haskell -
safe-decimal
Safe and very efficient arithmetic operations on fixed decimal point numbers -
monoid-subclasses
Subclasses of Monoid with a solid theoretical foundation and practical purposes -
polynomial
Haskell library for manipulating and evaluating polynomials -
eigen
Haskel binding for Eigen library. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. -
modular-arithmetic
A useful type for working with integers modulo some constant.
Collect and Analyze Billions of Data Points in Real Time
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of frotate or a related project?
README
About
frotate
stands for "functional rotate", whatever.
This is an evolution of the log2rotate's ideas.
See also pylog2rotate.
frotate
is designed to rotate backups with any balance between retention
and space usage. Instead of rotating backups using some familiar method such
as daily, weekly, monthly, and yearly periods, it rotates backups using any
periods. Thus "functional".
The idea is simple, the rotation schedule is determined by an integer function. This function gives us a period (number) of days when we must encounter at least one backup or whatever we are rotating. When we use an exponential function, the scheme is similar to the radioactive decay law. When the function is simply a constant 1, we don't rotate anything and retain all the backups. If it is 2, we retain each second backup. With some trivial function we can achieve a well-known dayly-weekly-monthly-yearly scheme.
The frotate
command line utility implements only exponential periods with
arbitrary base (ensure it is > 1, or have fun otherwise).
Usage
Note that when neither --keep
nor --delete
option is given, the utility
prints all intervals with all days to standard error and exits with non-zero
code. In production you will need to specify --keep
or --delete
explicitly.
Usage: frotate ([-k|--keep] | [-d|--delete]) [-b|--base BASE] DAY...
Available options:
-k,--keep Print days to keep
-d,--delete Print days to delete
-b,--base BASE Base of the exponent (default: 1.1)
-h,--help Show this help text
Example
Different modes with the same days:
$ frotate --base 2 2019-08-31 2019-08-30 2019-08-29 2019-08-28 2019-08-27 2019-08-26 2019-08-25 2019-08-24
2019-08-31
2019-08-29 2019-08-30
2019-08-25 2019-08-26 2019-08-27 2019-08-28
2019-08-24
$ frotate --keep --base 2 2019-08-31 2019-08-30 2019-08-29 2019-08-28 2019-08-27 2019-08-26 2019-08-25 2019-08-24
2019-08-31 2019-08-29 2019-08-25 2019-08-24
$ frotate --delete --base 2 2019-08-31 2019-08-30 2019-08-29 2019-08-28 2019-08-27 2019-08-26 2019-08-25 2019-08-24
2019-08-30 2019-08-26 2019-08-27 2019-08-28
More or less realistic example when we keep some backups and get new ones, but not every day:
$ frotate --keep --base 2 2019-09-01 2019-08-31 2019-08-30 2019-08-28 2019-08-24
2019-09-01 2019-08-30 2019-08-28 2019-08-24
$ frotate --keep --base 2 2019-09-05 2019-09-01 2019-08-30 2019-08-28 2019-08-24
2019-09-05 2019-08-30 2019-08-24
$ frotate --keep --base 2 2019-09-06 2019-09-05 2019-08-30 2019-08-24
2019-09-06 2019-09-05 2019-08-24
$ frotate --keep --base 2 2019-09-07 2019-09-06 2019-09-05 2019-08-24
2019-09-07 2019-09-05 2019-08-24
$ frotate --keep --base 2 2019-09-08 2019-09-07 2019-09-06 2019-08-24
2019-09-08 2019-09-06 2019-08-24
$ frotate --keep --base 2 2019-09-09 2019-09-08 2019-09-06 2019-08-24
2019-09-09 2019-09-08 2019-09-06 2019-08-24