go.uuid
uuid
Our great sponsors
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.uuid
-
Writing UDF for Clickhouse using Golang
package main import ( "bufio" "encoding/binary" "encoding/hex" "fmt" "os" "strings" "time" ) func main() { scanner := bufio.NewScanner(os.Stdin) scanner.Split(bufio.ScanLines) for scanner.Scan() { id, _ := FromString(scanner.Text()) fmt.Println(id.Time()) } } func (me UUID) Nanoseconds() int64 { time_low := int64(binary.BigEndian.Uint32(me[0:4])) time_mid := int64(binary.BigEndian.Uint16(me[4:6])) time_hi := int64((binary.BigEndian.Uint16(me[6:8]) & 0x0fff)) return int64((((time_low) + (time_mid << 32) + (time_hi << 48)) - epochStart) * 100) } func (me UUID) Time() time.Time { nsec := me.Nanoseconds() return time.Unix(nsec/1e9, nsec%1e9).UTC() } // code below Copyright (C) 2013 by Maxim Bublis // see https://github.com/satori/go.uuid // Difference in 100-nanosecond intervals between // UUID epoch (October 15, 1582) and Unix epoch (January 1, 1970). const epochStart = 122192928000000000 // UUID representation compliant with specification // described in RFC 4122. type UUID [16]byte // FromString returns UUID parsed from string input. // Following formats are supported: // "6ba7b810-9dad-11d1-80b4-00c04fd430c8", // "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}", // "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8" func FromString(input string) (u UUID, err error) { s := strings.Replace(input, "-", "", -1) if len(s) == 41 && s[:9] == "urn:uuid:" { s = s[9:] } else if len(s) == 34 && s[0] == '{' && s[33] == '}' { s = s[1:33] } if len(s) != 32 { err = fmt.Errorf("uuid: invalid UUID string: %s", input) return } b := []byte(s) _, err = hex.Decode(u[:], b) return } // Returns canonical string representation of UUID: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. func (u UUID) String() string { return fmt.Sprintf("%x-%x-%x-%x-%x", u[:4], u[4:6], u[6:8], u[8:10], u[10:]) }
-
satori uuid vs google uuid vs gofrs uuid ? which to use to generate uuid for enterprise coding standards
Link to source code :https://github.com/satori/go.uuid up to v5
-
Building web-based SaaS with Go as a solo entrepreneur. What should I be aware of?
Something to note is that all of this is still open source. Theoretically, someone can decide to fork SQLBoiler and add all the missing things, or send in a PR. A good example is that the current most popular uuid package. gofrs/uuid was forked from an unmaintained previously popular package.
- CVE-2021-3538 issued for latest release of github.com/satori/go.uuid
uuid
-
satori uuid vs google uuid vs gofrs uuid ? which to use to generate uuid for enterprise coding standards
https://github.com/gofrs/uuid upto v5
-
Any way of blocking or preferring a package?
I use Google's UUID package a lot. But every time I refer to it in a new package, the language server picks up https://github.com/gofrs/uuid instead of https://github.com/google/uuid and then complains that the gofrs package isn't in go.mod. I assume because it's the first alphabetically (though this seems like a huge supply chain security loophole).
-
cmackenzie1/go-uuid: library for generating version 4 (random) and version 7 (time-ordered) UUIDs
What makes this different than https://github.com/gofrs/uuid ?
-
Building web-based SaaS with Go as a solo entrepreneur. What should I be aware of?
Something to note is that all of this is still open source. Theoretically, someone can decide to fork SQLBoiler and add all the missing things, or send in a PR. A good example is that the current most popular uuid package. gofrs/uuid was forked from an unmaintained previously popular package.
-
Which UUID package do you use? and why?
You could also look at github.com/gofrs/uuid which includes support for v6 and v7 from the latest draft UUID spec. Personally I think the API for this library is nicer since the google one makes it difficult to tell what kind of UUID you are generating.
-
Example Golang RESTful API (Fully Containerized Local Development)
Postgres has native UUID support so don't use VARCHAR(36). Look at https://github.com/gofrs/uuid library, among others, to create uuid.
-
CVE-2021-3538 issued for latest release of github.com/satori/go.uuid
If you're using this library and are unsure what to do, a few of us maintain a fork of this library that has fixed these issues (and others): https://github.com/gofrs/uuid
What are some alternatives?
uuid - Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.
golang-templates/seed - Go application GitHub repository template.
shortuuid - :mushroom: A generator library for concise, unambiguous and URL-safe UUIDs
go-shortid - Super short, fully unique, non-sequential and URL friendly Ids
fastuuid - FastUUID is a library which provides CPython bindings to Rust's UUID library
go-chat-bot - IRC, Slack, Telegram and RocketChat bot written in go
bob - SQL query builder and ORM/Factory generator for Go with support for PostgreSQL, MySQL and SQLite
autoflags - Populate go command line app flags from config struct
go-nanoid - Nano ID for Go
conv - Fast conversions across various Go types with a simple API.
sonyflake - A distributed unique ID generator inspired by Twitter's Snowflake