go-sqlite3
goreleaser
Our great sponsors
go-sqlite3 | goreleaser | |
---|---|---|
39 | 60 | |
7,446 | 13,072 | |
- | 3.1% | |
6.3 | 9.8 | |
11 days ago | about 19 hours ago | |
C | Go | |
MIT License | 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.
go-sqlite3
-
Redis Re-Implemented with SQLite
for what it's worth, the two pool approach is suggested here by a collaborator to github.com/mattn/go-sqlite3: https://github.com/mattn/go-sqlite3/issues/1179#issuecomment...
-
Replacing Complicated Hashmaps with SQLite
SQLite is great. I've also recently settled on it as a key-value store, after considering a few purpose-built key-value solutions. Turns out that it's really easy to make SQLite work as a key-value store, but very difficult to make key-value stores relational.
Just be careful with `:memory:` databases. From the mattn/go-sqlite3 FAQ[1]:
> Each connection to ":memory:" opens a brand new in-memory sql database, so if the stdlib's sql engine happens to open another connection and you've only specified ":memory:", that connection will see a brand new database. A workaround is to use "file::memory:?cache=shared" (or "file:foobar?mode=memory&cache=shared"). Every connection to this string will point to the same in-memory database.
I noticed strange behaviors with just `:memory:` where tables would just disappear at random, and this workaround helped. Make sure to use a unique filename as the `file:` value, especially if using this in tests.
[1]: https://github.com/mattn/go-sqlite3#faq
-
What 3rd-party libraries do you use often/all the time?
github.com/mattn/go-sqlite3
-
From Golang Beginner to Building Basic Web Server in 4 Days!
For building my web server, I chose to use the Gin framework as the foundation of my app. It was incredibly easy to understand and work with, and I was pleasantly surprised by how seamlessly it integrated with writing unit tests for the server. To handle the database, I leveraged the power of go-sqlite and migrate for efficient SQL queries and migrations. These libraries proved to be both powerful and user-friendly, making the development process a breeze.
-
Zig now has built-in HTTP server and client in std
https://github.com/mattn/go-sqlite3/blob/master/_example/sim...
-
Exciting SQLite Improvements Since 2020
SQLite does have an optional "user authentication" extension, though I've not personally tried it out:
https://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth....
The widely used Go SQLite library by mattn says it supports it, if that's useful:
https://github.com/mattn/go-sqlite3#user-authentication
-
Go port of SQLite without CGo
I have an OSS project, sq which is a data-wrangling swiss-army knife for structured data. Think of it as jq for databases. It supports Postgres, SQLServer, MySQL and - relevantly - SQLite. It embeds SQLite via CGo and the mattn/go-sqlite3 driver.
- In-memory key value store
-
Tools besides Go for a newbie
IDE: use whatever make you productive. I personally use vscode. VCS: git, as golang communities use github heavily as base for many libraries. AFAIK Linter: use staticcheck for linting as it looks like mostly used linting tool in go, supported by many also. In Vscode it will be recommended once you install go plugin. Libraries/Framework: actually the standard libraries already included many things you need, decent enough for your day-to-day development cycles(e.g. `net/http`). But here are things for extra: - Struct fields validator: validator - Http server lib: chi router , httprouter , fasthttp (for non standard http implementations, but fast) - Web Framework: echo , gin , fiber , beego , etc - Http client lib: most already covered by stdlib(net/http), so you rarely need extra lib for this, but if you really need some are: resty - CLI: cobra - Config: godotenv , viper - DB Drivers: sqlx , postgre , sqlite , mysql - nosql: redis , mongodb , elasticsearch - ORM: gorm , entgo , sqlc(codegen) - JS Transpiler: gopherjs - GUI: fyne - grpc: grpc - logging: zerolog - test: testify , gomock , dockertest - and many others you can find here
- GitHub - elgs/gosqlapi: Turns any SQL database into a RESTful API.
goreleaser
-
Show HN: Docker-phobia: Analyze Docker image size with a treemap
> This is a much faster way than setting up Github Actions to build an executable for every possible platform on every release
It's not even that hard. Just use GoReleaser.
https://goreleaser.com/
-
FOSDEM 2024 - Summary and Reflections
I also got my eyes on GoReleaser, which I will use in my (Go) projects.
- Distribuindo uma aplicação Go sem o Docker
- goreleaser: Deliver Go binaries as fast and easily as possible
- Goreleaser
-
Build an Open Source Project: Behind the Scenes
With "xq", I went even further and automated the release process using GoReleaser. To publish a new release, the only thing I need is to create and push the Git tag. The corresponding GitHub Action will trigger a release process, and GoReleaser prepares the binaries and changelog based on declared conventions. The result has a high level of predictability, and no manual work is required.
-
How to start a Go project in 2023
Things I can't live without in a new Go project in no particular order:
- https://github.com/golangci/golangci-lint - meta-linter
- https://goreleaser.com - automate release workflows
- https://magefile.org - build tool that can version your tools
- https://github.com/ory/dockertest/v3 - run containers for e2e testing
- https://github.com/ecordell/optgen - generate functional options
- https://golang.org/x/tools/cmd/stringer - generate String()
- https://mvdan.cc/gofumpt - stricter gofmt
- https://github.com/stretchr/testify - test assertion library
- https://github.com/rs/zerolog - logging
- https://github.com/spf13/cobra - CLI framework
FWIW, I just lifted all the tools we use for https://github.com/authzed/spicedb
We've also written some custom linters that might be useful for other folks: https://github.com/authzed/spicedb/tree/main/tools/analyzers
-
What is recommended build tool and process for go project that contains multiple libraries, apis and executables?
Goreleaser is nice. https://goreleaser.com/
-
Best practices for distributing and updating a Go CLI on Linux?
I use goreleaser for packaging my binaries. I'm not currently doing RPM, but it does a lot of services and if you don't hunker down on a single solution, it might help with keeping your releases up to date/in sync.
-
Looking for projects ideas for experienced devops engineers
There's some packaging issues, for example, we've always wanted to publish deb/rpm packages, but never got around to adding it to either promu or completely switching our build tooling over to GoReleaser.
What are some alternatives?
GORM - The fantastic ORM library for Golang, aims to be developer friendly
Task - A task runner / simpler Make alternative written in Go
sqlx - general purpose extensions to golang's database/sql
gron - gron, Cron Jobs in Go.
pgx - PostgreSQL driver and toolkit for Go
go-torch
go-sqlite - Low-level Go interface to SQLite 3
godropbox - Common libraries for writing Go services/applications.
go-sqlite-lite - SQLite driver for the Go programming language
hub - A command-line tool that makes git easier to use with GitHub.
Sqinn-Go - Golang SQLite without cgo
goreporter - A Golang tool that does static analysis, unit testing, code review and generate code quality report.