🛠️

Whiz Tools

Build • Create • Innovate

Calculadora de Perímetro Molhado para Canais e Tubos

Calcule o perímetro molhado para várias formas de canais, incluindo trapezoides, retângulos/quadrados e tubos circulares. Essencial para aplicações em engenharia hidráulica e mecânica dos fluidos.

Gerador de ULID

ULID Gerado:

Estrutura do ULID


Timestamp (10 caracteres)

Aleatoriedade (16 caracteres)
📚

Documentação

Gerador de ULID

Introdução

Um ULID (Identificador Unicamente Lexicograficamente Ordenável Universal) é um identificador único que combina um timestamp com dados aleatórios para criar uma string de 26 caracteres. Os ULIDs são projetados para serem ordenáveis lexicograficamente, mantendo um alto grau de unicidade e aleatoriedade.

Estrutura de um ULID

Um ULID consiste em duas partes principais:

  1. Timestamp (10 caracteres): Os primeiros 10 caracteres representam o tempo em milissegundos desde a Época Unix (1970-01-01).
  2. Aleatoriedade (16 caracteres): Os 16 caracteres restantes são gerados usando dados aleatórios criptograficamente seguros.

A string resultante de 26 caracteres é codificada usando o alfabeto base32 de Crockford (0-9 e A-Z, excluindo I, L, O e U).

Fórmula

O ULID é gerado usando os seguintes passos:

  1. Gere um timestamp de 48 bits (milissegundos desde a Época Unix).
  2. Gere 80 bits de dados aleatórios criptograficamente seguros.
  3. Codifique os 128 bits combinados usando a codificação base32 de Crockford.

Cálculo

O gerador de ULID realiza os seguintes passos:

  1. Obtenha o timestamp atual em milissegundos.
  2. Gere 10 bytes aleatórios (80 bits) usando um gerador de números aleatórios criptograficamente seguros.
  3. Combine o timestamp e os dados aleatórios em um inteiro de 128 bits.
  4. Codifique o inteiro de 128 bits usando a codificação base32 de Crockford.

Casos de Uso

Os ULIDs são úteis em vários cenários, incluindo:

  1. Chaves de banco de dados: Os ULIDs podem ser usados como identificadores únicos para registros de banco de dados, garantindo unicidade e ordenabilidade.
  2. Sistemas distribuídos: Em ambientes distribuídos, os ULIDs podem ser gerados sem coordenação entre os nós.
  3. Registro e rastreamento: Os ULIDs podem ser usados para marcar entradas de log ou rastrear eventos, fornecendo um identificador único e ordenável.
  4. IDs amigáveis para URL: Os ULIDs são seguros para URL e podem ser usados em aplicativos web como identificadores em URLs.

Alternativas

Embora os ULIDs sejam versáteis, existem outros sistemas de identificadores únicos a considerar:

  1. UUID (Identificador Único Universal): Um identificador de 128 bits que não inclui um componente de timestamp.
  2. KSUID (Identificador Único K-Ondicional): Semelhante ao ULID, mas com uma codificação de timestamp diferente.
  3. Snowflake ID: O sistema de geração de ID único distribuído do Twitter, que inclui um timestamp e um ID de trabalhador.

História

Os ULIDs foram introduzidos em 2016 por Alizain Feerasta como uma alternativa aos UUIDs. Eles foram projetados para abordar algumas limitações dos UUIDs, particularmente em termos de ordenabilidade e legibilidade. A especificação do ULID permaneceu estável desde sua introdução, com várias implementações disponíveis em diferentes linguagens de programação.

Exemplos

Aqui estão alguns exemplos de código para gerar ULIDs em diferentes linguagens de programação:

1// Implementação em 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

Esses exemplos demonstram como gerar ULIDs em JavaScript, Python e Java. Você pode adaptar essas funções para suas necessidades específicas ou integrá-las em sistemas maiores que exigem identificadores únicos.

Referências

  1. "Especificação ULID." GitHub, https://github.com/ulid/spec. Acessado em 2 de ago. de 2024.
  2. "Codificação Base32 de Crockford." Codificação Base32, http://www.crockford.com/base32.html. Acessado em 2 de ago. de 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Acessado em 2 de ago. de 2024.