गीला परिधि कैलकुलेटर: चैनल आकारों के लिए गणना करें
विभिन्न चैनल आकारों के लिए गीला परिधि की गणना करें, जिसमें ट्रैपेज़ॉइड्स, आयत/वर्ग और गोल पाइप शामिल हैं। हाइड्रोलिक इंजीनियरिंग और तरल यांत्रिकी अनुप्रयोगों के लिए आवश्यक।
ULID जनरेटर
जनरेट किया गया ULID:
ULID संरचना
टाइमस्टैम्प (10 अक्षर)
यादृच्छिकता (16 अक्षर)
दस्तावेज़ीकरण
ULID जनरेटर
परिचय
ULID (यूनिवर्सली यूनिक लेक्सिकोग्राफिकली सॉर्टेबल आइडेंटिफायर) एक अद्वितीय पहचानकर्ता है जो एक टाइमस्टैम्प को यादृच्छिक डेटा के साथ जोड़ता है ताकि 26-चर का स्ट्रिंग बनाया जा सके। ULID को लेक्सिकोग्राफिकली सॉर्टेबल होने के लिए डिज़ाइन किया गया है जबकि उच्च स्तर की अद्वितीयता और यादृच्छिकता बनाए रखता है।
ULID की संरचना
ULID दो मुख्य भागों में विभाजित होता है:
- टाइमस्टैम्प (10 वर्ण): पहले 10 वर्ण Unix Epoch (1970-01-01) के बाद मिलीसेकंड में समय का प्रतिनिधित्व करते हैं।
- यादृच्छिकता (16 वर्ण): शेष 16 वर्ण क्रिप्टोग्राफिकली सुरक्षित यादृच्छिक डेटा का उपयोग करके उत्पन्न होते हैं।
परिणामी 26-चर का स्ट्रिंग क्रॉकफोर्ड के बेस32 वर्णमाला (0-9 और A-Z, I, L, O, और U को छोड़कर) का उपयोग करके एन्कोड किया जाता है।
सूत्र
ULID निम्नलिखित चरणों का उपयोग करके उत्पन्न किया जाता है:
- Unix Epoch (1970-01-01) के बाद मिलीसेकंड में 48-बिट टाइमस्टैम्प उत्पन्न करें।
- क्रिप्टोग्राफिकली सुरक्षित यादृच्छिक डेटा के 80 बिट उत्पन्न करें।
- क्रॉकफोर्ड के बेस32 एन्कोडिंग का उपयोग करके संयुक्त 128 बिट को एन्कोड करें।
गणना
ULID जनरेटर निम्नलिखित चरणों का पालन करता है:
- मिलीसेकंड में वर्तमान टाइमस्टैम्प प्राप्त करें।
- क्रिप्टोग्राफिकली सुरक्षित यादृच्छिक संख्या जनरेटर का उपयोग करके 10 यादृच्छिक बाइट (80 बिट) उत्पन्न करें।
- टाइमस्टैम्प और यादृच्छिक डेटा को 128-बिट पूर्णांक में संयोजित करें।
- क्रॉकफोर्ड के बेस32 एन्कोडिंग का उपयोग करके 128-बिट पूर्णांक को एन्कोड करें।
उपयोग के मामले
ULID विभिन्न परिदृश्यों में उपयोगी होते हैं, जिनमें शामिल हैं:
- डेटाबेस कुंजी: ULID को डेटाबेस रिकॉर्ड के लिए अद्वितीय पहचानकर्ताओं के रूप में उपयोग किया जा सकता है, जो अद्वितीयता और सॉर्टेबिलिटी सुनिश्चित करते हैं।
- वितरित सिस्टम: वितरित वातावरण में, ULID बिना नोड्स के बीच समन्वय के उत्पन्न किए जा सकते हैं।
- लॉगिंग और ट्रेसिंग: ULID का उपयोग लॉग प्रविष्टियों को टैग करने या घटनाओं को ट्रेस करने के लिए किया जा सकता है, जो एक सॉर्टेबल और अद्वितीय पहचानकर्ता प्रदान करता है।
- URL-अनुकूल आईडी: ULID URL-सुरक्षित होते हैं और वे वेब अनुप्रयोगों में URL में पहचानकर्ताओं के रूप में उपयोग किए जा सकते हैं।
विकल्प
हालांकि ULID बहुपरकारी हैं, अन्य अद्वितीय पहचानकर्ता प्रणालियों पर विचार करना भी महत्वपूर्ण है:
- UUID (यूनिवर्सली यूनिक आइडेंटिफायर): एक 128-बिट पहचानकर्ता जिसमें टाइमस्टैम्प घटक शामिल नहीं होता है।
- KSUID (K-Sortable यूनिक आईडेंटिफायर): ULID के समान लेकिन विभिन्न टाइमस्टैम्प एन्कोडिंग के साथ।
- स्नोफ्लेक आईडी: ट्विटर की वितरित अद्वितीय आईडी जनरेशन प्रणाली, जिसमें टाइमस्टैम्प और वर्कर आईडी शामिल है।
इतिहास
ULID को 2016 में अलीज़ैन फीरस्ता द्वारा UUID के विकल्प के रूप में पेश किया गया था। इन्हें UUID के कुछ सीमाओं को संबोधित करने के लिए डिज़ाइन किया गया था, विशेष रूप से सॉर्टेबिलिटी और पठनीयता के मामले में। ULID विनिर्देशन अपनी प्रस्तुति के बाद से स्थिर रहा है, और विभिन्न प्रोग्रामिंग भाषाओं में कई कार्यान्वयन उपलब्ध हैं।
उदाहरण
यहां विभिन्न प्रोग्रामिंग भाषाओं में ULID उत्पन्न करने के लिए कुछ कोड उदाहरण दिए गए हैं:
1// JavaScript कार्यान्वयन
2function generateULID() {
3 const timestamp = Date.now().toString(36).padStart(10, '0');
4 const randomness = crypto.getRandomValues(new Uint8Array(16))
5 .reduce((acc, byte) => acc + byte.toString(36).padStart(2, '0'), '');
6 return (timestamp + randomness).toUpperCase();
7}
8
9console.log(generateULID());
10
1## Python कार्यान्वयन
2import time
3import secrets
4import base64
5
6def generate_ulid():
7 timestamp = int(time.time() * 1000).to_bytes(6, byteorder="big")
8 randomness = secrets.token_bytes(10)
9 return base64.b32encode(timestamp + randomness).decode("ascii").lower()
10
11print(generate_ulid())
12
1// Java कार्यान्वयन
2import java.security.SecureRandom;
3import java.time.Instant;
4
5public class ULIDGenerator {
6 private static final SecureRandom random = new SecureRandom();
7 private static final char[] ENCODING_CHARS = "0123456789ABCDEFGHJKMNPQRSTVWXYZ".toCharArray();
8
9 public static String generateULID() {
10 long timestamp = Instant.now().toEpochMilli();
11 byte[] randomness = new byte[10];
12 random.nextBytes(randomness);
13
14 StringBuilder result = new StringBuilder();
15 // टाइमस्टैम्प को एन्कोड करें
16 for (int i = 9; i >= 0; i--) {
17 result.append(ENCODING_CHARS[(int) (timestamp % 32)]);
18 timestamp /= 32;
19 }
20 // यादृच्छिकता को एन्कोड करें
21 for (byte b : randomness) {
22 result.append(ENCODING_CHARS[b & 31]);
23 }
24 return result.toString();
25 }
26
27 public static void main(String[] args) {
28 System.out.println(generateULID());
29 }
30}
31
ये उदाहरण JavaScript, Python, और Java में ULID उत्पन्न करने के तरीके को प्रदर्शित करते हैं। आप इन कार्यों को अपनी विशिष्ट आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं या अद्वितीय पहचानकर्ताओं की आवश्यकता वाले बड़े सिस्टम में एकीकृत कर सकते हैं।
संदर्भ
- "ULID विनिर्देशन।" GitHub, https://github.com/ulid/spec. 2 अगस्त 2024 को एक्सेस किया गया।
- "क्रॉकफोर्ड का बेस32 एन्कोडिंग।" बेस32 एन्कोडिंग, http://www.crockford.com/base32.html. 2 अगस्त 2024 को एक्सेस किया गया।
- "UUID बनाम ULID।" स्टैक ओवरफ्लो, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. 2 अगस्त 2024 को एक्सेस किया गया।
प्रतिक्रिया
इस उपकरण के बारे में प्रतिक्रिया देने के लिए प्रतिक्रिया टोस्ट पर क्लिक करें
संबंधित उपकरण
अधिक उपकरणों का पता लगाएँ जो आपके कार्यप्रवाह के लिए उपयोगी हो सकते हैं