🛠️

Whiz Tools

Build • Create • Innovate

Kalkulačka pro výpočet smáčeného obvodu kanálů

Vypočítejte smáčený obvod pro různé tvary kanálů včetně lichoběžníků, obdélníků/čtverců a kruhových trubek. Nezbytné pro aplikace v hydraulickém inženýrství a mechanice tekutin.

Generátor ULID

Vygenerovaný ULID:

Struktura ULID


Časová značka (10 znaků)

Náhodnost (16 znaků)
📚

Dokumentace

Generátor ULID

Úvod

ULID (Universally Unique Lexicographically Sortable Identifier) je jedinečný identifikátor, který kombinuje časovou značku s náhodnými daty, aby vytvořil 26-znakový řetězec. ULID jsou navrženy tak, aby byly lexikograficky seřaditelné a zároveň si zachovaly vysoký stupeň jedinečnosti a náhodnosti.

Struktura ULID

ULID se skládá ze dvou hlavních částí:

  1. Časová značka (10 znaků): Prvních 10 znaků představuje čas v milisekundách od Unix Epoch (1970-01-01).
  2. Náhodnost (16 znaků): Zbývajících 16 znaků je generováno pomocí kryptograficky bezpečných náhodných dat.

Výsledný 26-znakový řetězec je kódován pomocí Crockfordovy base32 abecedy (0-9 a A-Z, s výjimkou I, L, O a U).

Vzorec

ULID je generován pomocí následujících kroků:

  1. Vygenerujte 48bitovou časovou značku (milisekundy od Unix Epoch).
  2. Vygenerujte 80 bitů kryptograficky bezpečných náhodných dat.
  3. Kódujte kombinovaných 128 bitů pomocí Crockfordovy base32 kódování.

Výpočet

Generátor ULID provádí následující kroky:

  1. Získejte aktuální časovou značku v milisekundách.
  2. Vygenerujte 10 náhodných bajtů (80 bitů) pomocí kryptograficky bezpečného generátoru náhodných čísel.
  3. Kombinujte časovou značku a náhodná data do 128bitového celého čísla.
  4. Kódujte 128bitové celé číslo pomocí Crockfordovy base32 kódování.

Případ použití

ULID jsou užitečné v různých scénářích, včetně:

  1. Klíče databáze: ULID mohou být použity jako jedinečné identifikátory pro záznamy v databázi, zajišťující jedinečnost a seřaditelnost.
  2. Distribuované systémy: V distribuovaných prostředích mohou být ULID generovány bez koordinace mezi uzly.
  3. Protokolování a sledování: ULID mohou být použity k označení záznamů protokolu nebo sledování událostí, poskytující seřaditelný a jedinečný identifikátor.
  4. URL-přátelské ID: ULID jsou bezpečné pro URL a mohou být použity ve webových aplikacích jako identifikátory v URL.

Alternativy

I když jsou ULID všestranné, existují i jiné systémy jedinečných identifikátorů, které je třeba zvážit:

  1. UUID (Universally Unique Identifier): 128bitový identifikátor, který neobsahuje komponentu časové značky.
  2. KSUID (K-Sortable Unique IDentifier): Podobný ULID, ale s jiným kódováním časové značky.
  3. Snowflake ID: Systém generování jedinečných ID od Twitteru, který zahrnuje časovou značku a ID pracovníka.

Historie

ULID byly představeny v roce 2016 Alizainem Feerastou jako alternativa k UUID. Byly navrženy tak, aby řešily některá omezení UUID, zejména pokud jde o seřaditelnost a čitelnost. Specifikace ULID zůstává stabilní od svého zavedení, s různými implementacemi dostupnými v různých programovacích jazycích.

Příklady

Zde jsou některé příklady kódu pro generování ULID v různých programovacích jazycích:

1// Implementace v JavaScriptu
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

Tyto příklady demonstrují, jak generovat ULID v JavaScriptu, Pythonu a Javě. Můžete tyto funkce přizpůsobit svým konkrétním potřebám nebo je integrovat do větších systémů vyžadujících jedinečné identifikátory.

Odkazy

  1. "Specifikace ULID." GitHub, https://github.com/ulid/spec. Přístup 2. srpna 2024.
  2. "Crockfordovo base32 kódování." Base32 Kódování, http://www.crockford.com/base32.html. Přístup 2. srpna 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Přístup 2. srpna 2024.