reiver Go
reiver Go is a list of golang libraries, software, and guides created by Charles Iliya Krempeaux (@reiver), for the Go programming language.
Contents
- Binary-To-Text Encoding
- Buffers
- Byte
- Casting
- Color
- Content Addressing
- Counting
- Database
- Error Handler
- File System
- Image
- IO
- Iterators
- JSON
- Logging
- Maps
- Monads
- Money
- Natural Language Processing
- Networking
- Numbers
- Porting
- Stream Processing
- String Formatting
- Supervision Tree
- Testing
- twtxt
- Unicode
- Unique IDs
- Video
Binary-To-Text Encoding
- go-bravo16 — a more (human) safe base-16 binary-to-text encoding, and decoding; brave16 is an alternative to hexadecimal.
- go-caret — encodes, and decodes caret text (i.e., where ASCII control codes are in caret notation) into UTF-8 text (which may also be ASCII text).
Buffers
- go-buffers — provides betters buffers, and tools for working with buffers.
Byte
- go-byteliteral — binary number literals for Go's byte type; including binary literals. note that Go 1.13 added binary literals, which makes this package obsolete.
Casting
- go-cast — tools for safely converting from one type to another, without information loss.
Color
-
go-palette2048
—
a type that represents a color palette of 256 RGBA color with 8-bits per color channel, for a total of 2048-bits altogether, that seamlessly works with Go's built-in
"image"
,"image/color"
, and"image/draw"
packages. -
go-rgba32
—
a type that represents an RGBA color with 8-bits per color channel (stored as a slice rather than a struct), for a total of 32-bits altogether, that seamlessly works with Go's built-in
"image"
,"image/color"
, and"image/draw"
packages.
Content Addressing
- go-hashuri — parses Hash URIs.
Counting
- go-mjrty — implementation of the mjrty algorithm; which igures out what is the majority of a sequence of items in a single pass, in O(n) time and O(1) space -- in linear time complexity and constant space complexity. this makes the mjrty algorithm suitable for some types of data streaming.
Database
- go-pqerror — a helper library that provides constants for the Postgres Error Codes, to be used with the Golang Postgres driver.
-
go-shunt
—
enables you to create "middleware" for the the
"database/sql"
package.
Error Handler
fck.Error
errors can be a Go const
; this can be considered a replacement for errors.New()
and fmt.Errorf()
File System
- go-strfs — provides a virtual file-system, where a fs.File can be created from a Go string.
Image
- go-img800x418 — provides tools for working with images whose width and height are 800×418.
- go-imgdye — provides tools dying an image; one use case for this is giving a (new) image a background-color.
- go-imgrow — provides tools for growing and image by an integer value; for example — if you have an image, then you make it 2× bigger, or 3× bigger, or 4× bigger, etc.
- go-imgprint — implements tools for printing text on images.
- go-imgstr — provides to serializing an image in “IMAGE:<base64-encoded-png>” format (that is natively supported by the Go-playground), that seamlessly works with Go's built-in "image", "image/color", and "image/draw" packages.
- go-palimg — provides tools for working with and creating paletted-images.
IO
Iterators
- go-iter — provides tools for creating, normalizing, and working with iterators.
JSON
-
go-jsonio
—
tools for working with JSON I/O. this supplements Go's built-in
"encoding/json"
package.
Logging
- go-log — structured and formatted logging.
- go-loggers — useful tools for dealing with loggers.
Maps
-
go-mapstringinterface
—
tools for working with Go's
map[string]interface{}
type.
Monads
- go-opt — implements an optional-type, which is also know as, a option-type, and a maybe-type.
Money
- go-money — deals with money in a type safe way, including parsing from strings.
Natural Language Processing
- go-porterstemmer — a native Go clean room implementation of the Porter Stemming algorithm.
Networking
-
go-hg
—
provides ☿ Mercury Protocol client and server implementations.
- hydrargyrum — a ☿ Mercury Protocol server that uses go-hg
-
go-telnet
—
TELNET and TELNETS client and server implementations, in a style similar to the
"net/http"
library that is part of the Go standard library, including support for "middleware"; TELNETS is secure TELNET, with the TELNET protocol over a secured TLS (or SSL) connection.
Finger
- go-finger — implements the finger protocol.
HTTP
- go-errhttp — provides errors that make dealing with HTTP response errors easier.
-
go-httprequestpath
—
provides tools for getting the path from an
http.Request
. - go-modhandler — deals with conditional GETs by sending out a "Last-Modified" HTTP response header, and properly dealing with a "If-Modified-Since" HTTP request header.
- go-netfield — provides tools for parsing "net fields" — i.e., the type of fields found in HTTP headers & trailers, as well as SMTP headers.
-
go-netln
—
provides tools for parsing "net lines" — i.e., lines that end with a
"\r\n"
.
Numbers
Porting
- go-php — implements functions and classes familiar to PHP developrs in Go.
Stream Processing
- go-mjrty — implementation of the mjrty algorithm; which igures out what is the majority of a sequence of items in a single pass, in O(n) time and O(1) space -- in linear time complexity and constant space complexity. this makes the mjrty algorithm suitable for some types of data streaming.
String Formatting
- go-stringcase — makes it so you can convert strings to different casing styles: lower case, UPPER CASE, Title Case, camelCase, PascalCase, snake_case, CONST_CASE, property-case, Header-Case.
- go-tmpl — provides templating capabilities.
Supervision Tree
- go-retoil — provides simple functionality for restarting toilers (i.e., workers).
- go-toil — provides simple functionality for managing toilers (i.e., workers).
- go-toilfork — provides simple functionality for managing a group of toilers (i.e., workers) where each toiler in the group is basically the "same" toiler.
Testing
- go-arbitrary — provides tools for generating arbitrary data; useful for testing and placeholder data.
-
go-shunt
—
enables you to create "middleware" for the the
"database/sql"
package.
twtxt
- go-twtxt — implements encoding and decoding of the twtxt data format; which is used for creating feeds that makes up a decentralized micro-blogging social network.
Unicode
- go-peek — provides tools to peek at input, such as peek.PeekRune(), which lets you peek at the next Unicode character.
-
go-utf8
—
implements encoding and decoding of UTF-8, for the Go programming language; this package is meant to be a replacement for Go's built-in
"unicode/utf8"
package. - go-whitespace — A small library for dealing with whitespace; note that this Go library accounts for all 26 UNICODE whitespace characters (and not just the standard ASCII ones), as well as accounts for all 7 UNICODE mandatory break characters.
Unique IDs
-
go-xim
—
quazi‐ monotonically‐increasing unique‐identifiers, whose serialized form are safe to use as file‐names, and directory‐names, and where lexical-ordering of the xim-id (under Unicode & ASCII) is in-practice also temporal-ordering of the xim-id (almost all of the time)
- xim-id — a program using go-xim
Video
- go-fourcc — a Go implementation of FOURCC (four character code) (4CC) identifiers for a video codecs, compression formats, colors, and pixel format used in media files.