<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MeloAlright</title>
    <description>The latest articles on DEV Community by MeloAlright (@meloalright).</description>
    <link>https://dev.to/meloalright</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F933378%2Fcf327790-1a0b-4519-800e-9f3e434b730b.jpeg</url>
      <title>DEV Community: MeloAlright</title>
      <link>https://dev.to/meloalright</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meloalright"/>
    <language>en</language>
    <item>
      <title>ColorID: 🌈 The unique 4-colors-ID string generator in JavaScript</title>
      <dc:creator>MeloAlright</dc:creator>
      <pubDate>Tue, 27 Sep 2022 14:44:42 +0000</pubDate>
      <link>https://dev.to/meloalright/colorid-the-unique-4-colors-id-string-generator-in-javascript-ghp</link>
      <guid>https://dev.to/meloalright/colorid-the-unique-4-colors-id-string-generator-in-javascript-ghp</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--doKAyNHr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sv3gfle2qjgmok36f4sa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--doKAyNHr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sv3gfle2qjgmok36f4sa.png" alt="Image description" width="880" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Color as Identify - The unique 4-colors-ID string generator in &lt;code&gt;JavaScript&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The performance of &lt;code&gt;ColorID&lt;/code&gt; is better than &lt;code&gt;UUID&lt;/code&gt; and &lt;code&gt;NanoID&lt;/code&gt; (The algorithm of &lt;code&gt;ColorID&lt;/code&gt; is actually very similar to the &lt;code&gt;UUID.V4&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;If we use &lt;code&gt;ColorID&lt;/code&gt; to represent identities in social networks, we can easily generate personalized social information for users, such as avatars, NFTs, etc.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ColorID&lt;/code&gt; is consisted by 4 colors in the RGB channel from 12 unsigned 8 bits numbers (&lt;code&gt;u8&lt;/code&gt;), so the theoretical total of &lt;code&gt;ColorID&lt;/code&gt; is &lt;code&gt;(2^8)^12&lt;/code&gt; = &lt;code&gt;2^96&lt;/code&gt; ≈ &lt;code&gt;7*10^28&lt;/code&gt;, which means that even if the &lt;code&gt;ColorID&lt;/code&gt; is generated for every 7.8 billion people in the world every second, it will take 300 billion years to use up all &lt;code&gt;ColorIDs&lt;/code&gt;. And &lt;code&gt;ColorID&lt;/code&gt; provides safety by using hardware random generator, can also be used in clusters.&lt;/p&gt;

&lt;p&gt;Because the Four color theorem, if we need to color the regions of any avatars or NFTs so that no two adjacent regions have the same color, four colors are enough!&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;npm i colorid.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;colorid&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;colorid.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;colorid&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// #5B34F9-#34F9DF-#F9DF4E-#DF4EB5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;#5B34F9-#34F9DF-#F9DF4E-#DF4EB5&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JJ41GfTo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/11075892/189944569-e00bfbaf-7e6e-408d-8a60-32994f79a2a2.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JJ41GfTo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/11075892/189944569-e00bfbaf-7e6e-408d-8a60-32994f79a2a2.svg" width="400" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="n"&gt;crypto&lt;/span&gt;&lt;span class="py"&gt;.randomUUID&lt;/span&gt;    &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;829&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;532&lt;/span&gt; &lt;span class="n"&gt;ops&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sec&lt;/span&gt;
&lt;span class="n"&gt;colorid&lt;/span&gt;              &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;649&lt;/span&gt; &lt;span class="n"&gt;ops&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sec&lt;/span&gt;
&lt;span class="n"&gt;nanoid&lt;/span&gt;               &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;925&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;204&lt;/span&gt; &lt;span class="n"&gt;ops&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sec&lt;/span&gt;
&lt;span class="n"&gt;uuid&lt;/span&gt; &lt;span class="n"&gt;v4&lt;/span&gt;                &lt;span class="mi"&gt;910&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;855&lt;/span&gt; &lt;span class="n"&gt;ops&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sec&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Benchmark configuration: Ubuntu, Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz, Node.js 18.9.0&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rustq/colorid.js/actions/runs/3045998209/jobs/4908256305"&gt;(runs: 3045998209)&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://opensource.org/licenses/MIT"&gt;MIT&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ColorID in Other Languages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/rustq/colorid"&gt;Rust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>node</category>
    </item>
  </channel>
</rss>
