Golang ULID 구현하는 ULID 라이브러리 알아보기
오늘은 Golang으로 Universally Unique Lexicographically Sortable Identifier 구현하는 ULID 라이브러리를 알아보려 합니다.
ULID 설치
우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.
맥에서 brew로 쉽게 설치할 수 있습니다.
brew install go
우분투에서도 apt로 쉽게 설치할 수 있습니다.
sudo apt-get install golang-go
맥에서 Golang의 버전을 올리려면 brew를 이용합니다.
brew upgrade go
우분투에서도 Golang의 버전을 올리려면 backports 저장소를 등록하고 apt를 이용합니다.
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go
go get으로 ULID 패키지를 설치합니다.
go get github.com/oklog/ulid
홈의 go 폴더에 ULID 소스코드와 패키지 파일이 생성됩니다.
예제
package main
해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.
import (
"fmt"
"math/rand"
"time"
"github.com/oklog/ulid"
)
fmt, math, time 그리고 ulid를 가져옵니다.
func main() {
localTime := time.Unix(1000000, 0)
unixTime := localTime.UnixNano()
로컬 시간을 기반으로 1970년 1월 1일 이후의 유닉스 시간을 생성합니다.
해당 유닉스 시간은 int64 타입입니다.
randSource := rand.NewSource(unixTime)
유닉스 시간으로 랜덤 소스를 생성합니다.
random := rand.New(randSource)
랜덤 소스로 Rand를 생성합니다.
entropy := ulid.Monotonic(random, 0)
ULID 타임 스탬프로 엔트로피 소스를 생성합니다.
ulid := ulid.MustNew(ulid.Timestamp(localTime), entropy)
fmt.Println(ulid)
}
만들어둔 초 단위 시간 스탬프와 엔트로피 소스로 ULID를 생성하여 출력합니다.
Written on November 21, 2019