tools.aw_id
tools.aw_id/src/main.go
* Новые автоматические версии выпускается в форме, пригодном для сортировки
1.1 --- a/src/main.go Wed Apr 09 20:20:05 2025 +0300 1.2 +++ b/src/main.go Thu Apr 10 13:10:33 2025 +0300 1.3 @@ -1,4 +1,4 @@ 1.4 -// devel.a0fs.ru -- aw_id -- v1.r202504.1 // 1.5 +// devel.a0fs.ru -- aw_id -- v1.r202504.2 // 1.6 /* 1.7 Утилиты генерирования полезных в работе ID 1.8 */ 1.9 @@ -9,8 +9,6 @@ 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 @@ -64,21 +62,45 @@ 1.19 } 1.20 1.21 func get_ver_auto_tag() string { 1.22 - var auto_version string = "AAAAAA" 1.23 + const CDB uint64 = 62 1.24 + var auto_version []byte = []byte{ 1.25 + '0', '0', '0', 1.26 + '0', '0', '0'} 1.27 1.28 - buf := make([]byte, 8) 1.29 + var CD [CDB]byte = [CDB]byte{'0', '1', '2', '3', '4', '5', '6', 1.30 + '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 1.31 + 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 1.32 + 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 1.33 + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 1.34 + 't', 'u', 'v', 'w', 'x', 'y', 'z'} 1.35 + 1.36 buf_time := time.Now() 1.37 buf_u64, err := strconv.ParseUint(buf_time.Format("02150405"), 10, 64) 1.38 if err == nil { 1.39 buf_u64 = buf_u64*uint64(100) + uint64(buf_time.Nanosecond()/10000000) 1.40 - _, err = binary.Encode(buf, binary.BigEndian, buf_u64) 1.41 if err == nil { 1.42 - auto_version = base64.RawURLEncoding.EncodeToString(buf[4:]) 1.43 + var buf_u64_idx uint64 1.44 + var ar_idx uint = 5 1.45 + 1.46 + for buf_u64 >= CDB && ar_idx > 0 { 1.47 + buf_u64_idx = buf_u64 % CDB 1.48 + buf_u64 /= CDB 1.49 + auto_version[ar_idx] = CD[buf_u64_idx] 1.50 + ar_idx-- 1.51 + } 1.52 + 1.53 + if buf_u64 >= CDB { 1.54 + panic(fmt.Sprintf("get_ver_auto_tag: Need more size in buffer, value %v > %v", buf_u64, CDB)) 1.55 + 1.56 + } else { 1.57 + auto_version[ar_idx] = CD[buf_u64] 1.58 + 1.59 + } 1.60 1.61 } 1.62 } 1.63 1.64 - return auto_version 1.65 + return string(auto_version) 1.66 } 1.67 1.68 func get_ver_id3() string {