ਗਿੱਲੀ ਪਰਿਮਿਟਰ ਕੈਲਕੂਲੇਟਰ: ਹਾਈਡ੍ਰੌਲਿਕ ਇੰਜੀਨੀਅਰਿੰਗ ਲਈ
ਤਿਕੋਣ, ਆਯਤਕਾਰ/ਵਰਗ ਅਤੇ ਗੋਲ ਪਾਈਪ ਸਮੇਤ ਵੱਖ-ਵੱਖ ਚੈਨਲ ਆਕਾਰਾਂ ਲਈ ਗਿੱਲੀ ਪਰਿਮਿਟਰ ਦੀ ਗਿਣਤੀ ਕਰੋ। ਹਾਈਡ੍ਰੌਲਿਕ ਇੰਜੀਨੀਅਰਿੰਗ ਅਤੇ ਤਰਲ ਗਤੀਵਿਧੀਆਂ ਦੇ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਜ਼ਰੂਰੀ।
ਯੂਐਲਆਈਡੀ ਜਨਰੇਟਰ
ਬਣਾਈ ਗਈ ਯੂਐਲਆਈਡੀ:
ਯੂਐਲਆਈਡੀ ਢਾਂਚਾ
ਟਾਈਮਸਟੈਂਪ (10 ਅੱਖਰ)
ਰੈਂਡਮਨੈਸ (16 ਅੱਖਰ)
ਦਸਤਾਵੇਜ਼
ULID ਜਨਰੇਟਰ
ਪਰੀਚਯ
ULID (ਯੂਨੀਵਰਸਲ ਯੂਨੀਕ ਲੈਕਸੀਕੋਗ੍ਰਾਫਿਕਲੀ ਸੋਰਟੇਬਲ ਆਈਡੈਂਟੀਫਾਇਰ) ਇੱਕ ਵਿਲੱਖਣ ਆਈਡੈਂਟੀਫਾਇਰ ਹੈ ਜੋ ਸਮੇਂ ਨੂੰ ਯਾਦ ਰੱਖਣ ਵਾਲੇ ਡੇਟਾ ਨਾਲ ਜੋੜਦਾ ਹੈ ਤਾਂ ਜੋ 26-ਅੱਖਰਾਂ ਦੀ ਸਟ੍ਰਿੰਗ ਬਣਾਈ ਜਾ ਸਕੇ। ULIDs ਨੂੰ ਲੈਕਸੀਕੋਗ੍ਰਾਫਿਕਲੀ ਸੋਰਟੇਬਲ ਬਣਾਉਣ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤਾ ਗਿਆ ਹੈ ਜਦੋਂ ਕਿ ਉੱਚ ਪੱਧਰ ਦੀ ਵਿਲੱਖਣਤਾ ਅਤੇ ਰੈਂਡਮਨੈੱਸ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦੇ ਹਨ।
ULID ਦਾ ਢਾਂਚਾ
ULID ਦੇ ਦੋ ਮੁੱਖ ਹਿੱਸੇ ਹਨ:
- ਸਮਾਂ ਚਿੰਨ੍ਹ (10 ਅੱਖਰ): ਪਹਿਲੇ 10 ਅੱਖਰ ਯੂਨੀਕ ਐਪੋਕ (1970-01-01) ਤੋਂ ਮਿਲੀਸੈਕੰਡਾਂ ਵਿੱਚ ਸਮੇਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ।
- ਰੈਂਡਮਨੈੱਸ (16 ਅੱਖਰ): ਬਾਕੀ ਦੇ 16 ਅੱਖਰਾਂ ਨੂੰ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕਲੀ ਸੁਰੱਖਿਅਤ ਰੈਂਡਮ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ।
ਨਤੀਜੇ ਵਜੋਂ 26-ਅੱਖਰਾਂ ਦੀ ਸਟ੍ਰਿੰਗ ਨੂੰ ਕ੍ਰੋਕਫੋਰਡ ਦੇ ਬੇਸ32 ਅਲਫਾਬੇਟ (0-9 ਅਤੇ A-Z, I, L, O, ਅਤੇ U ਨੂੰ ਛੱਡ ਕੇ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੋਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਫਾਰਮੂਲਾ
ULID ਨੂੰ ਨਿਮਨਲਿਖਤ ਕਦਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਨਰੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ:
- 48-ਬਿੱਟ ਸਮਾਂ ਚਿੰਨ੍ਹ (ਯੂਨੀਕ ਐਪੋਕ ਤੋਂ ਮਿਲੀਸੈਕੰਡਾਂ) ਜਨਰੇਟ ਕਰੋ।
- 80 ਬਿੱਟਾਂ ਦਾ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕਲੀ ਸੁਰੱਖਿਅਤ ਰੈਂਡਮ ਡੇਟਾ ਜਨਰੇਟ ਕਰੋ।
- ਕ੍ਰੋਕਫੋਰਡ ਦੇ ਬੇਸ32 ਕੋਡਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਿਲੇ ਹੋਏ 128 ਬਿੱਟਾਂ ਨੂੰ ਕੋਡ ਕਰੋ।
ਗਣਨਾ
ULID ਜਨਰੇਟਰ ਨਿਮਨਲਿਖਤ ਕਦਮਾਂ ਨੂੰ ਅੰਜਾਮ ਦਿੰਦਾ ਹੈ:
- ਮਿਲੀਸੈਕੰਡਾਂ ਵਿੱਚ ਮੌਜੂਦਾ ਸਮਾਂ ਪ੍ਰਾਪਤ ਕਰੋ।
- ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕਲੀ ਸੁਰੱਖਿਅਤ ਨੰਬਰ ਜਨਰੇਟਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ 10 ਰੈਂਡਮ ਬਾਈਟਾਂ (80 ਬਿੱਟ) ਜਨਰੇਟ ਕਰੋ।
- ਸਮਾਂ ਚਿੰਨ੍ਹ ਅਤੇ ਰੈਂਡਮ ਡੇਟਾ ਨੂੰ 128-ਬਿੱਟ ਪੂਰਨਾਂਕ ਵਿੱਚ ਜੋੜੋ।
- 128-ਬਿੱਟ ਪੂਰਨਾਂਕ ਨੂੰ ਕ੍ਰੋਕਫੋਰਡ ਦੇ ਬੇਸ32 ਕੋਡਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੋਡ ਕਰੋ।
ਵਰਤੋਂ ਦੇ ਕੇਸ
ULIDs ਵੱਖ-ਵੱਖ ਸਥਿਤੀਆਂ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹਨ, ਜਿਵੇਂ ਕਿ:
- ਡੇਟਾਬੇਸ ਕੁੰਜੀਆਂ: ULIDs ਨੂੰ ਡੇਟਾਬੇਸ ਰਿਕਾਰਡਾਂ ਲਈ ਵਿਲੱਖਣ ਆਈਡੈਂਟੀਫਾਇਰ ਵਜੋਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਵਿਲੱਖਣਤਾ ਅਤੇ ਸੋਰਟੇਬਿਲਿਟੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।
- ਵੰਡੇ ਗਏ ਸਿਸਟਮ: ਵੰਡੇ ਗਏ ਵਾਤਾਵਰਨ ਵਿੱਚ, ULIDs ਨੂੰ ਨੋਡਾਂ ਦੇ ਵਿਚਕਾਰ ਸਹਿਯੋਗ ਦੇ ਬਿਨਾਂ ਜਨਰੇਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
- ਲਾਗਿੰਗ ਅਤੇ ਟਰੇਸਿੰਗ: ULIDs ਨੂੰ ਲਾਗ ਐਂਟਰੀਆਂ ਨੂੰ ਟੈਗ ਕਰਨ ਜਾਂ ਘਟਨਾਵਾਂ ਨੂੰ ਟਰੇਸ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਇੱਕ ਸੋਰਟੇਬਲ ਅਤੇ ਵਿਲੱਖਣ ਆਈਡੈਂਟੀਫਾਇਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
- URL-ਮਿਤ੍ਰ ਆਈਡੀ: ULIDs URL-ਸੁਰੱਖਿਅਤ ਹਨ ਅਤੇ ਵੈਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ URLs ਵਿੱਚ ਆਈਡੈਂਟੀਫਾਇਰ ਵਜੋਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਵਿਕਲਪ
ਜਦੋਂ ਕਿ ULIDs ਬਹੁਤ ਸਾਰੇ ਕੰਮਾਂ ਲਈ ਲਾਭਦਾਇਕ ਹਨ, ਹੋਰ ਵਿਲੱਖਣ ਆਈਡੈਂਟੀਫਾਇਰ ਸਿਸਟਮਾਂ ਨੂੰ ਵੀ ਵਿਚਾਰਣਾ ਹੈ:
- UUID (ਯੂਨੀਵਰਸਲ ਯੂਨੀਕ ਆਈਡੈਂਟੀਫਾਇਰ): ਇੱਕ 128-ਬਿੱਟ ਆਈਡੈਂਟੀਫਾਇਰ ਜੋ ਸਮਾਂ ਚਿੰਨ੍ਹ ਭਾਗ ਨਹੀਂ ਸ਼ਾਮਲ ਕਰਦਾ।
- KSUID (K-Sortable Unique IDentifier): ULID ਦੇ ਸਮਾਨ ਪਰ ਵੱਖਰੇ ਸਮਾਂ ਚਿੰਨ੍ਹ ਕੋਡਿੰਗ ਨਾਲ।
- ਸਨੋਫਲੇਕ ਆਈਡੀ: ਟਵਿੱਟਰ ਦਾ ਵੰਡਿਆ ਹੋਇਆ ਵਿਲੱਖਣ ਆਈਡੀ ਜਨਰੇਸ਼ਨ ਸਿਸਟਮ, ਜੋ ਸਮਾਂ ਚਿੰਨ੍ਹ ਅਤੇ ਵਰਕਰ ਆਈਡੀ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ।
ਇਤਿਹਾਸ
ULIDs ਨੂੰ 2016 ਵਿੱਚ ਅਲੀਜ਼ੈਨ ਫੀਰਾਸਟਾ ਦੁਆਰਾ UUIDs ਦੇ ਵਿਕਲਪ ਵਜੋਂ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਸੀ। ਇਹ UUIDs ਦੀਆਂ ਕੁਝ ਸੀਮਾਵਾਂ, ਖਾਸ ਕਰਕੇ ਸੋਰਟੇਬਿਲਿਟੀ ਅਤੇ ਪੜ੍ਹਨਯੋਗਤਾ ਦੇ ਤੌਰ 'ਤੇ, ਨੂੰ ਦੂਰ ਕਰਨ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤੇ ਗਏ ਸਨ। ULID ਵਿਸ਼ੇਸ਼ਤਾ ਆਪਣੇ ਪੇਸ਼ਕਸ਼ ਤੋਂ ਬਾਅਦ ਸਥਿਰ ਰਹੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਕਾਰਜਾਂ ਦੀ ਉਪਲਬਧਤਾ ਹੈ।
ਉਦਾਹਰਣ
ਹੇਠਾਂ ਵੱਖ-ਵੱਖ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ULIDs ਜਨਰੇਟ ਕਰਨ ਲਈ ਕੁਝ ਕੋਡ ਉਦਾਹਰਣਾਂ ਹਨ:
1// ਜਾਵਾਸਕ੍ਰਿਪਟ ਕਾਰਜਨਵਾਈ
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## ਪਾਇਥਨ ਕਾਰਜਨਵਾਈ
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// ਜਾਵਾ ਕਾਰਜਨਵਾਈ
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
ਇਹ ਉਦਾਹਰਣਾਂ ਜਾਵਾਸਕ੍ਰਿਪਟ, ਪਾਇਥਨ, ਅਤੇ ਜਾਵਾ ਵਿੱਚ ULIDs ਜਨਰੇਟ ਕਰਨ ਦਾ ਤਰੀਕਾ ਦਿਖਾਉਂਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਇਨ੍ਹਾਂ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਆਪਣੇ ਵਿਸ਼ੇਸ਼ ਲੋੜਾਂ ਲਈ ਅਨੁਕੂਲਿਤ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਵਿਲੱਖਣ ਆਈਡੈਂਟੀਫਾਇਰਾਂ ਦੀ ਲੋੜ ਵਾਲੇ ਵੱਡੇ ਸਿਸਟਮਾਂ ਵਿੱਚ ਇਨ੍ਹਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ।
ਹਵਾਲੇ
- "ULID ਵਿਸ਼ੇਸ਼ਤਾ." GitHub, https://github.com/ulid/spec. ਪਹੁੰਚ ਕੀਤੀ 2 ਅਗਸਤ 2024.
- "ਕ੍ਰੋਕਫੋਰਡ ਦਾ ਬੇਸ32 ਕੋਡਿੰਗ." ਬੇਸ32 ਕੋਡਿੰਗ, http://www.crockford.com/base32.html. ਪਹੁੰਚ ਕੀਤੀ 2 ਅਗਸਤ 2024.
- "UUID ਵਿਰੁੱਧ ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. ਪਹੁੰਚ ਕੀਤੀ 2 ਅਗਸਤ 2024.
ਫੀਡਬੈਕ
ਇਸ ਟੂਲ ਬਾਰੇ ਫੀਡਬੈਕ ਦੇਣ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਫੀਡਬੈਕ ਟੋਸਟ 'ਤੇ ਕਲਿੱਕ ਕਰੋ
ਸੰਬੰਧਿਤ ਟੂਲ
ਹੋਰ ਟੂਲਾਂ ਦੀ ਖੋਜ ਕਰੋ ਜੋ ਤੁਹਾਡੇ ਕੰਮ ਦੇ ਪ੍ਰਵਾਹ ਲਈ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦੀਆਂ ਹਨ