x

package module
v0.0.0-...-f32f910 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 2, 2022 License: MIT Imports: 0 Imported by: 0

README

Toolkit GoDoc

Go packages that are common to many of my projects — in the spirit of golang.org/x

Usage

To get these packages on your system, it's as easy as:

$ go get github.com/bbengfort/x/[pkg]

Where [pkg] is the name of the package you want to install. Import the packages required in your code, vendoring as necessary in order to use them in other projects.

About

Package x hosts several packages, modules, and libraries that are common across most of my code for easy reuse. This package is very much in the spirit of golang.org/x though it does have a slightly longer import path as a result of being hosted in my GitHub repository.

One thing that I think is important to note is that most of the subpackages in this repository are independent. That is that they are implemented and tested separately from other subpackages. Future me and anyone who would like to use this package should only go get exactly what they need and rely on the documentation on godoc and in the subpackage README.md for more information.

Generally speaking, these things are simply ported out of my other applications once I discover that they need to be reused. The x repository gives me the ability to manage them all in the same version control without jumping through all the GitHub hoops. I'm not sure this is what was intended by Golang, but managing multiple repositories with just one or two files was too much of a pain, hence this system.

Subpackages

This is a single repository that stores many, independent subpackages. This list changes often as common code gets moved from specific projects into this repository.

  • net: additional networking packages
  • peers: defines and synchronizes remote peers on the network
  • pid: manages pid files and background processes
  • noplog: no operation logger to capture internal logging
  • stats: online computation of summary statistics
  • console: hierarchical console logging
  • events: event dispatcher and callbacks
  • bandit: multi-armed bandit strategies for random choice
  • lock: provides logging to diagnose lock contention issues
  • unique: finds unique elements in a slice
Under Development

The following subpackages are currently under development

  • cfrv: implements conflict-free replicated versions of multiple types.
  • interval: provides an interface for time based event dispatchers.

Tests and Benchmarks

Packages in this repository use different tests and benchmarking tools. Beyond the standard go test environment, most packages will probably use ginkgo for BDD style testing and gomega for matching and assertions. To install these packages:

$ go get github.com/onsi/ginkgo/ginkgo
$ go get github.com/onsi/gomega

This will install the libraries as well as the runner executables.

Documentation

Overview

Package x hosts several packages, modules, and libraries that are common across most of my code for easy reuse. This package is very much in the spirit of golang.org/x though it does have a slightly longer import path as a result of being hosted in my GitHub repository.

One thing that I think is important to note is that most of the subpackages in this repository are independent. That is that they are implemented and tested separately from other subpackages. Future me and anyone who would like to use this package should only go get exactly what they need and rely on the documentation on godoc and in the subpackage README.md for more information.

Generally speaking, these things are simply ported out of my other applications once I discover that they need to be reused. The x repository gives me the ability to manage them all in the same version control without jumping through all the GitHub hoops. I'm not sure this is what was intended by Golang, but managing multiple repositories with just one or two files was too much of a pain, hence this system.

Directories

Path Synopsis
Package bandit implements multi-armed bandit strategies for random choice.
Package bandit implements multi-armed bandit strategies for random choice.
Package cfrv implements conflict-free replicated versions of multiple types.
Package cfrv implements conflict-free replicated versions of multiple types.
Package console implements simple hierarchical logging functionality.
Package console implements simple hierarchical logging functionality.
Wrapper for a command line editor to edit files.
Wrapper for a command line editor to edit files.
Package events provides an event dispatcher and registration framework.
Package events provides an event dispatcher and registration framework.
Package interval provides an interface for time based event dispatchers.
Package interval provides an interface for time based event dispatchers.
Package lock provides lock contention diagnostics for go mutexes.
Package lock provides lock contention diagnostics for go mutexes.
Package net provides additional networking utilities and helpers.
Package net provides additional networking utilities and helpers.
Package noplog implements a noop logger with a null writer.
Package noplog implements a noop logger with a null writer.
Package peers provides helpers for defining and synchronizing remote peers on a network.
Package peers provides helpers for defining and synchronizing remote peers on a network.
Package pid manages pid files for background process management.
Package pid manages pid files for background process management.
Package stats implements an online computation of summary statistics.
Package stats implements an online computation of summary statistics.
Package unique implements type-specific functions to deduplicate a slice and return a slice with only the unique elements in it.
Package unique implements type-specific functions to deduplicate a slice and return a slice with only the unique elements in it.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL