SkillAgentSearch skills...

Cuid

Collision-resistant ids, in Elixir

Install / Use

/learn @duailibe/Cuid
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

cuid

Collision-resistant ids optimized for horizontal scaling and sequential lookup performance, written in Elixir.

For full rationale behind CUIDs refer to the main project site.

Usage

Add Cuid as a dependency in your mix.exs file:

defp deps do:
    [{:cuid, "~> 0.1.0"}]
end

Run mix deps.get to fetch and compile Cuid. It works as a process

{:ok, pid} = Cuid.start_link
Cuid.generate(pid)  # => ch72gsb320000udocl363eofy

Each CUID is made by the following groups: c - h72gsb32 - 0000 - udoc - l363eofy

  • c identifies this as a cuid, and allows you to use it in html entity ids. The fixed value helps keep the ids sequential.
  • h72gsb32 is a timestamp
  • 0000 is a counter
  • udoc is a fingerprint. The first two characters are based on the process ID and the next two are based on the hostname. This is the same method used in the Node implementation
  • l363eofy random (uses :random.uniform)

TODOs

  • Optimize (it takes 15s to run 200000 generations in my MBP)

Credit

View on GitHub
GitHub Stars55
CategoryDevelopment
Updated1y ago
Forks6

Languages

Elixir

Security Score

80/100

Audited on Jul 23, 2024

No findings