🛠️

Whiz Tools

Build • Create • Innovate

Calculator pentru Perimetrul Udat al Formelor de Canale

Calculează perimetrul udat pentru diverse forme de canale, inclusiv trapezoide, dreptunghiuri/pătrate și țevi circulare. Esențial pentru aplicații de inginerie hidraulică și mecanica fluidelor.

Generator ULID

ULID generat:

Structura ULID


Timestamp (10 caractere)

Randomness (16 caractere)
📚

Documentație

Generator ULID

Introducere

Un ULID (Identificator Unic Lexicografic Sortabil Universal) este un identificator unic care combină un timestamp cu date aleatorii pentru a crea un șir de 26 de caractere. ULID-urile sunt concepute pentru a fi sortabile lexicografic, menținând în același timp un grad ridicat de unicitate și aleatorietate.

Structura unui ULID

Un ULID constă din două părți principale:

  1. Timestamp (10 caractere): Primele 10 caractere reprezintă timpul în milisecunde de la Epoca Unix (1970-01-01).
  2. Aleatorietate (16 caractere): Celelalte 16 caractere sunt generate folosind date aleatorii criptografic securizate.

Șirul rezultat de 26 de caractere este codificat folosind alfabetul base32 al lui Crockford (0-9 și A-Z, excluzând I, L, O și U).

Formula

ULID-ul este generat folosind următorii pași:

  1. Generați un timestamp de 48 de biți (milisecunde de la Epoca Unix).
  2. Generați 80 de biți de date aleatorii criptografic securizate.
  3. Codificați cei 128 de biți combinați folosind codificarea base32 a lui Crockford.

Calcul

Generatorul ULID efectuează următorii pași:

  1. Obțineți timestamp-ul curent în milisecunde.
  2. Generați 10 bytes aleatorii (80 de biți) folosind un generator de numere aleatorii criptografic securizat.
  3. Combinați timestamp-ul și datele aleatorii într-un întreg de 128 de biți.
  4. Codificați întregul de 128 de biți folosind codificarea base32 a lui Crockford.

Cazuri de utilizare

ULID-urile sunt utile în diverse scenarii, inclusiv:

  1. Chei de bază de date: ULID-urile pot fi folosite ca identificatori unici pentru înregistrările din bazele de date, asigurând unicitate și sortabilitate.
  2. Sisteme distribuite: În medii distribuite, ULID-urile pot fi generate fără coordonare între noduri.
  3. Jurnalizare și urmărire: ULID-urile pot fi folosite pentru a eticheta intrările de jurnal sau a urmări evenimente, oferind un identificator unic și sortabil.
  4. ID-uri prietenoase cu URL-urile: ULID-urile sunt sigure pentru URL-uri și pot fi folosite în aplicații web ca identificatori în URL-uri.

Alternative

Deși ULID-urile sunt versatile, există și alte sisteme de identificatori unici de luat în considerare:

  1. UUID (Identificator Unic Universal): Un identificator de 128 de biți care nu include un component de timestamp.
  2. KSUID (Identificator Unic Sortabil K): Similar cu ULID, dar cu o codificare diferită a timestamp-ului.
  3. Snowflake ID: Sistemul de generare a ID-urilor unice distribuite al Twitter, care include un timestamp și un ID de lucru.

Istorie

ULID-urile au fost introduse în 2016 de Alizain Feerasta ca o alternativă la UUID-uri. Ele au fost concepute pentru a aborda unele limitări ale UUID-urilor, în special în ceea ce privește sortabilitatea și lizibilitatea. Specificația ULID a rămas stabilă de la introducerea sa, cu diverse implementări disponibile în diferite limbaje de programare.

Exemple

Iată câteva exemple de cod pentru a genera ULID-uri în diferite limbaje de programare:

1// Implementare 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

Aceste exemple demonstrează cum să generați ULID-uri în JavaScript, Python și Java. Puteți adapta aceste funcții la nevoile dumneavoastră specifice sau le puteți integra în sisteme mai mari care necesită identificatori unici.

Referințe

  1. "Specificația ULID." GitHub, https://github.com/ulid/spec. Accesat pe 2 Aug. 2024.
  2. "Codificarea base32 a lui Crockford." Codificare Base32, http://www.crockford.com/base32.html. Accesat pe 2 Aug. 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Accesat pe 2 Aug. 2024.