pebble
viper
pebble | viper | |
---|---|---|
2 | 74 | |
133 | 25,862 | |
4.5% | - | |
9.0 | 8.8 | |
3 days ago | 3 days ago | |
Go | Go | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pebble
-
What type of software do you write at your workplace?
At Canonical I work on two open-source projects written in Go: Juju, a large cloud-based application deployment tool, and Pebble, a small Linux service manager. Both include CLI clients and API-based server daemons. Juju in particular is a large distributed system.
-
Useful and Useless Code Comments
Yeah, I like the "visual boundaries" way of framing it. A line of whitespace is a visual boundary, of course, but I find the // comment above it acts as a heading. Like a bold heading above a couple of paragraphs of text in a document.
I wouldn't add a heading above every paragraph, but I would might above every few paragraphs. In code, this translates to every 5-15 lines of code. Here's some code I wrote recently that shows this (https://github.com/canonical/pebble/blob/b152ff448bbe7d08c39...):
func writeFile(item writeFilesItem, source io.Reader) error {
viper
-
Upload and Delete file from Amazon S3 Bucket in Go using Presigned URLs
Once environment variables are setup we need load them into our project. For this this i will use viper
-
Proxy Server in Go
The code uses Viper to load configuration files in the application.
- API completa em Golang - Parte 2
-
What 3rd-party libraries do you use often/all the time?
github.com/spf13/viper
- API completa em Golang - Parte 1
-
Building RESTful API with Hexagonal Architecture in Go
Instead of directly accessing environment variables with os.Getenv(), integrating a configuration handler like viper might make it maintainable.
-
What is the most common approach to configure a backend app?
I guess most people are using https://github.com/spf13/viper but I don't know if I should read everything from
-
Could I get a code review?
Use Viper for config file or environmental variable configuration -- it's going to save you a whole lot of time.
-
Which packages do you recommend for building cli tools?
Cobra and Viper.
-
Library for Python similar to Go's Viper / 12 Factor
I've mostly been using https://github.com/spf13/viper of late for my go projects. It supports the standard config formats, (json, yaml, toml etc) and lets you override any value with a ENV value.
What are some alternatives?
goleveldb - LevelDB key/value database in Go.
godotenv - A Go port of Ruby's dotenv library (Loads environment variables from .env files)
Juju - Orchestration engine that enables the deployment, integration and lifecycle management of applications at any scale, on any infrastructure (Kubernetes or otherwise).
envconfig - Small library to read your configuration from environment variables
Benthos - Fancy stream processing made operationally mundane
koanf - Simple, extremely lightweight, extensible, configuration management library for Go. Support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.
cobra - A Commander for modern Go CLI interactions
cleanenv - ✨Clean and minimalistic environment configuration reader for Golang
gqlgen - go generate based graphql server library
kelseyhightower/envconfig - Golang library for managing configuration data from environment variables
easyjson - Fast JSON serializer for golang.
mapstructure - Go library for decoding generic map values into native Go structures and vice versa.