Go Library
4.09K subscribers
16 photos
63 files
715 links
Go (Golang) Library

Реклама: @ostinostin
Контент: @mxssl
加入频道
Goquery for Data Parsing: Complete Tutorial 2023

Goquery for Golang is one of the most popular scraping libraries. This complete HTTP parser provides a jQuery-like syntax to traverse the DOM and extract the data of interest from it. In this tutorial, you'll first dig into the basics and then explore more advanced scenarios through examples.

https://www.zenrows.com/blog/goquery
Building Scalable Applications Using Redis as a Message Broker

In this article, we will discuss the Redis data structures that can be employed to build messaging solutions, each illustrated with a sample application written in Go.

https://semaphoreci.com/blog/redis-message-broker
climate

"CLI Mate" autogenerates CLIs from structs / functions (nested subcommands, global / local flags, help generation, typo suggestions, shell completion etc.)

https://github.com/avamsi/climate
Logging in Go: A Comparison of the Top 8 Libraries

This article aims to uncover some insights that should help you clarify that question by taking a look at eight logging solutions, discussing their pros and cons after considering the following factors: performance, flexibility, features, ease of use, and community support.

https://betterstack.com/community/guides/logging/best-golang-logging-libraries
Using Tailscale for Authentication of Internal Tools

JWT is a popular way for authentication and authorization, especially for service to service communications. When it comes to internal tools, distribution and renewal of JWT can become a challenge. Our internal support systems use JWT to authenticate and authorize access and they are written in a few different languages and run on different hosting options. By using JWT, can authenticate and authorize access for our different tools or different operations within those tools to all of these internal systems.

Until recently, we used to generate JWT on an internal web application that is only available internally. Authenticated and authorized users will navigate to the app and download a new JWT based on their permissions. This worked fine for a while but recently we switched to a better and more seamless system, as we started using Tailscale as our main VPN provider.

In this post, I share how we built a small service in Go that issues JWT to callers using Tailscale as identity provider.

https://blog.cloud66.com/using-tailscale-for-authentication-of-internal-tools
A comprehensive guide to file operations in Go

Dive into the world of file operations in Go and explore advanced concepts such as file manipulation, reading, writing, error handling, and more. It's time level up your Go skills.

https://www.honeybadger.io/blog/comprehensive-guide-to-file-operations-in-go
fx

Terminal JSON viewer & processor

https://github.com/antonmedv/fx
Awesome slog

Collection of log/slog related projects.

https://github.com/go-slog/awesome-slog
Use your database to power state machines

Most people are familiar with state machines and know their value. The average state machine library can help you model states, prevent invalid transitions, and produce diagrams that help even non-technical people understand how the code behaves.

This article isn’t about making the case for state machines. It’s about how you take the concept of a state machine and have it work alongside your database models, leveraging your relational database (say Postgres or MySQL) to help you build concurrent-safe and efficient software.

https://blog.lawrencejones.dev/state-machines
pterm

PTerm is a modern Go module to easily beautify console output. Featuring charts, progressbars, tables, trees, text input, select menus and much more 🚀 It's completely configurable and 100% cross-platform compatible.

https://github.com/pterm/pterm
static-server

Simple static file server, with support of HTTP and HTTPS. Useful for local testing of web applications.

https://github.com/eliben/static-server
maroto

A maroto way to create PDFs. Maroto is inspired in Bootstrap and uses gofpdf. Fast and simple.

https://github.com/johnfercher/maroto
goyave

Goyave is a progressive and accessible web application framework focused on REST APIs, aimed at making backend development easy and enjoyable. It has a philosophy of cleanliness and conciseness to make programs more elegant, easier to maintain and more focused. Goyave is an opinionated framework, helping your applications keeping a uniform architecture and limit redundancy. With Goyave, expect a full package with minimum setup.

https://github.com/go-goyave/goyave
resty

Simple HTTP and REST client library for Go (inspired by Ruby rest-client)

https://github.com/go-resty/resty
tproxy

A cli tool to proxy and analyze TCP connections.

https://github.com/kevwan/tproxy
skipper

Skipper is an HTTP router and reverse proxy for service composition. It's designed to handle >300k HTTP route definitions with detailed lookup conditions, and flexible augmentation of the request flow with filters. It can be used out of the box or extended with custom lookup, filter logic and configuration sources.

https://github.com/zalando/skipper
The Art of Building Fault-Tolerant Software Systems

Eight Pillars of Fault-tolerant Systems:
- Redundancy and Replication
- Load balancing
- Modularity
- Graceful degradation
- Circuit breaker
- Fail-fast
- Retries
- Rate limiting

https://www.codereliant.io/the-art-of-building-fault-tolerant-software-systems
pgroll

pgroll is an open source command-line tool that offers safe and reversible schema migrations for PostgreSQL by serving multiple schema versions simultaneously. It takes care of the complex migration operations to ensure that client applications continue working while the database schema is being updated. This includes ensuring changes are applied without locking the database, and that both old and new schema versions work simultaneously (even when breaking changes are being made!). This removes risks related to schema migrations, and greatly simplifies client application rollout, also allowing for instant rollbacks.

https://github.com/xataio/pgroll
unkey

Open Source API Key Management

https://github.com/unkeyed/unkey
Organizing a Go module

A common question developers new to Go have is “How do I organize my Go project?”, in terms of the layout of files and folders. The goal of this document is to provide some guidelines that will help answer this question.

https://go.dev/doc/modules/layout