logutils — enhanced Go logging

The standard Go log package is pretty barebones, but is fine for many simple programs. For more complex applications, though, you’d probably want to have different log levels for different events. There are many logging packages, such as the previously covered log15 that implement log leveling and provide other features. HashiCorp’s logutils is something different.

Continue reading logutils — enhanced Go logging

goquery: jQuery-style HTML manipulation in Go

Writing HTML document handling code with parsers is pretty hard. Even plain DOM tree walking can make your code look like spaghetti. That is why libraries like jQuery are popular: they make it easy to do queries and all sorts of other manipulations with HTML documents.

goquery is like jQuery, but in Go.

Continue reading goquery: jQuery-style HTML manipulation in Go

Gogs: setting up self-hosted GitHub clone

Forget scripto-Perlo-C porridge to setup web interface for Git! Forget installing thousands of dependencies to setup your own repository hosting! Gogs is here to make your life easier!

Gogs is a GitHub clone written in Go, which you can host on your own server. It’s a web interface to Git repositories plus a simple bug tracker. Gogs is very easy to install and use.

Continue reading Gogs: setting up self-hosted GitHub clone

Bolt — an embedded key/value database for Go

If you want data persistence in your Go application, most likely you’re thinking of using some database. The easiest and probably the most convenient for deployment are embedded databases. There are many wrappers for C databases, however Go developers usually prefer pure Golang solutions.

Bolt is the way to go: it’s a pure Go embedded key/value database, which is easy to use for persistence in your Go projects. Bolt is similar to LMDB, which many consider the best among state-of-the-art modern key-value stores. Just like LMDB, and unlike LevelDB, BoltDB supports fully serializable ACID transactions. Unlike SQLite, it doesn’t have a query language, and is much easier to use for common things.

Bolt saves data into a single memory-mapped file on disk. It doesn’t have a separate journal, write-ahead log, or a thread for compaction or garbage collection: it deals with just one file, and does it safely.

Continue reading Bolt — an embedded key/value database for Go