🛠️

Whiz Tools

Build • Create • Innovate

Calculadora de Perímetro Mojado para Canales y Tubos

Calcule el perímetro mojado para varias formas de canales, incluyendo trapezoides, rectángulos/cuadrados y tuberías circulares. Esencial para aplicaciones de ingeniería hidráulica y mecánica de fluidos.

Generador de ULID

ULID generado:

Estructura de ULID


Marca de tiempo (10 caracteres)

Aleatoriedad (16 caracteres)
📚

Documentación

Generador de ULID

Introducción

Un ULID (Identificador Único Lexicográficamente Ordenable Universal) es un identificador único que combina una marca de tiempo con datos aleatorios para crear una cadena de 26 caracteres. Los ULID están diseñados para ser ordenables lexicográficamente mientras mantienen un alto grado de unicidad y aleatoriedad.

Estructura de un ULID

Un ULID consta de dos partes principales:

  1. Marca de tiempo (10 caracteres): Los primeros 10 caracteres representan el tiempo en milisegundos desde la Época Unix (1970-01-01).
  2. Aleatoriedad (16 caracteres): Los 16 caracteres restantes se generan utilizando datos aleatorios criptográficamente seguros.

La cadena resultante de 26 caracteres se codifica utilizando el alfabeto base32 de Crockford (0-9 y A-Z, excluyendo I, L, O y U).

Fórmula

El ULID se genera utilizando los siguientes pasos:

  1. Generar una marca de tiempo de 48 bits (milisegundos desde la Época Unix).
  2. Generar 80 bits de datos aleatorios criptográficamente seguros.
  3. Codificar los 128 bits combinados utilizando la codificación base32 de Crockford.

Cálculo

El generador de ULID realiza los siguientes pasos:

  1. Obtener la marca de tiempo actual en milisegundos.
  2. Generar 10 bytes aleatorios (80 bits) utilizando un generador de números aleatorios criptográficamente seguros.
  3. Combinar la marca de tiempo y los datos aleatorios en un entero de 128 bits.
  4. Codificar el entero de 128 bits utilizando la codificación base32 de Crockford.

Casos de uso

Los ULID son útiles en varios escenarios, incluyendo:

  1. Claves de base de datos: Los ULID se pueden usar como identificadores únicos para registros de base de datos, asegurando unicidad y ordenabilidad.
  2. Sistemas distribuidos: En entornos distribuidos, los ULID se pueden generar sin coordinación entre nodos.
  3. Registro y trazabilidad: Los ULID se pueden usar para etiquetar entradas de registro o rastrear eventos, proporcionando un identificador único y ordenable.
  4. IDs amigables con URL: Los ULID son seguros para URL y se pueden utilizar en aplicaciones web como identificadores en URLs.

Alternativas

Si bien los ULID son versátiles, hay otros sistemas de identificadores únicos a considerar:

  1. UUID (Identificador Único Universal): Un identificador de 128 bits que no incluye un componente de marca de tiempo.
  2. KSUID (Identificador Único Ordenable por K): Similar a ULID pero con una codificación de marca de tiempo diferente.
  3. ID de Snowflake: El sistema de generación de ID único distribuido de Twitter, que incluye una marca de tiempo y un ID de trabajador.

Historia

Los ULID fueron introducidos en 2016 por Alizain Feerasta como una alternativa a los UUID. Fueron diseñados para abordar algunas limitaciones de los UUID, particularmente en términos de ordenabilidad y legibilidad. La especificación de ULID se ha mantenido estable desde su introducción, con varias implementaciones disponibles en diferentes lenguajes de programación.

Ejemplos

Aquí hay algunos ejemplos de código para generar ULIDs en diferentes lenguajes de programación:

1// Implementación en 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

Estos ejemplos demuestran cómo generar ULIDs en JavaScript, Python y Java. Puedes adaptar estas funciones a tus necesidades específicas o integrarlas en sistemas más grandes que requieran identificadores únicos.

Referencias

  1. "Especificación de ULID." GitHub, https://github.com/ulid/spec. Consultado el 2 de agosto de 2024.
  2. "Codificación Base32 de Crockford." Codificación Base32, http://www.crockford.com/base32.html. Consultado el 2 de agosto de 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Consultado el 2 de agosto de 2024.