Arquivo

Posts Tagged ‘unique code’

Código único com NanoID.net

Nas suas aplicações, quantas vezes você já precisou de um código único? Seja para identificar um cadastro, um produto no pedido, etc?

O GUID é confiável, mas tem um tamanho exagerado, não? Podemos concordar que ele é ininteligível e difícil de decorar?

Pois bem, encontrei uma alternativa que gostaria de compartilhar: HASH-ID.

Uma biblioteca openSource que tem implementações em diversas linguagens e plataformas: JavaScript, Ruby, Python, Java, Scala, PHP, Perl, Perl 6, Swift, Clojure, Objective-C, C, C++11, D, F#, Go, Erlang, Lua, Haskell, OCaml, Elixir, Rust, Smalltalk, ColdFusion, Kotlin, Nim, VBA, Haxe, Crystal, Elm, ActionScript, Bash, R, TSQL, PostgreSQL, PLpgSQL, Dart, Io and for .NET

É muito fácil de usar. Veja um exemplo de código em CSharp:

public string GerarCodigoDaVenda(){
  return Nanoid.Nanoid.Generate( 
     alphabet: "1234567890abcdefghijklmnopqrstuwvxyz", 
     size: 10
   );                
}

No trecho de código acima, eu delimitei a variedade de caracteres que o NanoID vai utilizar, além de especificar o tamanho em 10 caracteres.

Na biblioteca você pode gerar inúmeras variações:

Normal

Na modalidade padrão, o método usa símbolos amigáveis com URLS (A-Za-z0-9_~), e retorna um ID com 21 caracteres (chances de colisão similares ao formato UUID v4).

var id = Nanoid.Generate() //=> "Uakgb_J5m9g~0JDMbcJqLJ"

Símbolos -,.() não são codificados em URL´s.

Se você quiser reduzir o tamanho do ID, passe o tamanho como argumento:

var id = Nanoid.Generate(size:10) //=> "IRFa~VaY2b"

Customizando o alfabeto:

var id = Nanoid.Generate('1234567890abcdef', 10) //=> "4f90d13a42"

A variação de caracteres deve conter 256 símbolos ou menos. De outra forma não será seguro.

Referências:

https://hashids.org/

Implementação em javascript: https://github.com/ai/nanoid

Implementação p/ .net: https://github.com/codeyu/nanoid-net

Guia Ecológico

Despertando a consciência que preserva!

Viagem e Voo

Dicas para viagens, férias e voos nacionais e internacionais

Ivan Guimarães Meirelles

Analista Desenvolvedor

Void Podcast

Vazio e sem retorno de valor

Elemar DEV

Negócios, tecnologia e desenvolvimento

2,000 Things You Should Know About WPF

Everything a WPF Developer Needs to Know, in Bite-Sized Chunks

Gabriel RB.net

Blog técnico, com dicas, códigos, novidades e problemas do dia-a-dia programando.

Alexandre Valente's Blog

Experiências em tecnologia e assuntos diversos

%d blogueiros gostam disto: