tools.aw_id
tools.aw_id/src/main.go
.. v1.r202504.1 . Переезд на go 1.23 + Новый тип версий. Теперь можно всю версию генерировать автоматом. Уникальность осуществляется за счёт точности в 0.01 секунды.
1.1 --- a/src/main.go Sat Jul 06 20:07:08 2024 +0300 1.2 +++ b/src/main.go Wed Apr 09 20:20:05 2025 +0300 1.3 @@ -1,4 +1,4 @@ 1.4 -// devel.a0fs.ru -- aw_id -- v1.r202407.1 // 1.5 +// devel.a0fs.ru -- aw_id -- v1.r202504.1 // 1.6 /* 1.7 Утилиты генерирования полезных в работе ID 1.8 */ 1.9 @@ -9,6 +9,10 @@ 1.10 "os" 1.11 "time" 1.12 1.13 + "encoding/base64" 1.14 + "encoding/binary" 1.15 + "strconv" 1.16 + 1.17 "github.com/google/uuid" 1.18 ) 1.19 1.20 @@ -59,6 +63,32 @@ 1.21 return fmt.Sprintf("0.%s.1", get_time_id(TIME_ID_SHORT2)) 1.22 } 1.23 1.24 +func get_ver_auto_tag() string { 1.25 + var auto_version string = "AAAAAA" 1.26 + 1.27 + buf := make([]byte, 8) 1.28 + buf_time := time.Now() 1.29 + buf_u64, err := strconv.ParseUint(buf_time.Format("02150405"), 10, 64) 1.30 + if err == nil { 1.31 + buf_u64 = buf_u64*uint64(100) + uint64(buf_time.Nanosecond()/10000000) 1.32 + _, err = binary.Encode(buf, binary.BigEndian, buf_u64) 1.33 + if err == nil { 1.34 + auto_version = base64.RawURLEncoding.EncodeToString(buf[4:]) 1.35 + 1.36 + } 1.37 + } 1.38 + 1.39 + return auto_version 1.40 +} 1.41 + 1.42 +func get_ver_id3() string { 1.43 + return fmt.Sprintf("v0.r%s.%s", get_time_id(TIME_ID_SHORT2), get_ver_auto_tag()) 1.44 +} 1.45 + 1.46 +func get_ver_id4() string { 1.47 + return fmt.Sprintf("0.%s.%s", get_time_id(TIME_ID_SHORT2), get_ver_auto_tag()) 1.48 +} 1.49 + 1.50 func prnt_out(k, v string) { 1.51 fmt.Printf("%10s : %s\n", k, v) 1.52 } 1.53 @@ -73,7 +103,9 @@ 1.54 prnt_out("hrs", get_time_id(TIME_HUM_SAFE)) 1.55 prnt_out("hrs2", get_time_id(TIME_HUM_SAFE2)) 1.56 prnt_out("v", get_ver_id()) 1.57 + prnt_out("va", get_ver_id3()) 1.58 prnt_out("vs", get_ver_id2()) 1.59 + prnt_out("vsa", get_ver_id4()) 1.60 fmt.Println("") 1.61 } 1.62 1.63 @@ -98,10 +130,16 @@ 1.64 fmt.Println(get_time_id(TIME_ID_SHORT2)) 1.65 case "v": 1.66 fmt.Println(get_ver_id()) 1.67 + case "va": 1.68 + fmt.Println(get_ver_id3()) 1.69 case "vs": 1.70 fmt.Println(get_ver_id2()) 1.71 + case "vsa": 1.72 + fmt.Println(get_ver_id4()) 1.73 default: 1.74 - fmt.Println("Need one of: uuid, ts, tss, tss2, hr, hrr, hrs, hrs2, v, vs") 1.75 + fmt.Println("Need one of: ") 1.76 + fmt.Println(" uuid, ts, tss, tss2, hr, hrr, hrs, hrs2,") 1.77 + fmt.Println(" v, va, vs, vsa") 1.78 } 1.79 fmt.Println("") 1.80 } else {