<?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: juanpumpkinpie</title>
    <description>The latest articles on DEV Community by juanpumpkinpie (@juanpumpkinpie).</description>
    <link>https://dev.to/juanpumpkinpie</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%2F471183%2Fd822e58b-6730-431f-a62b-102eed43e9ae.png</url>
      <title>DEV Community: juanpumpkinpie</title>
      <link>https://dev.to/juanpumpkinpie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juanpumpkinpie"/>
    <language>en</language>
    <item>
      <title>Hash Tables? How to avoid IF/Switch in JS</title>
      <dc:creator>juanpumpkinpie</dc:creator>
      <pubDate>Wed, 01 Dec 2021 21:00:18 +0000</pubDate>
      <link>https://dev.to/juanpumpkinpie/hash-tables-how-to-avoid-ifswitch-in-js-1fln</link>
      <guid>https://dev.to/juanpumpkinpie/hash-tables-how-to-avoid-ifswitch-in-js-1fln</guid>
      <description>&lt;p&gt;Easily &lt;a href="https://en.wikipedia.org/wiki/Hash_table"&gt;they are &lt;/a&gt; associative data structures that allow you to create list paired values, retrieving from the key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why to use them?&lt;/strong&gt;&lt;br&gt;
Because is more fast to: space, search, insertion and delete operations. Javascript Object is the sample of hash tables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let Obj = {
Juan: "developer",
Shellby: "recruiter"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Javascript has implemented a way to approach the hash tables using &lt;code&gt;map&lt;/code&gt; to store the data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const newCollection = new Map();
newCollection.set("Juan", "developer"); // Paired
newCollection.set("Marina", "developer");
newCollection.set("Shellby", "recruiter"); // Paired

console.log(newCollection.get("Juan")); // -&amp;gt; Developer
console.log(newCollection.size); // -&amp;gt; 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, as you can see above, Map use &lt;code&gt;get&lt;/code&gt; and &lt;code&gt;set&lt;/code&gt; to pair the Object. But as difference using Map you can't overwrite their values because it violates the inherited method property &lt;code&gt;hasOwnProperty()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to IMPLEMENT a Hash Table Data Structure in Javascript?&lt;/strong&gt;&lt;br&gt;
Let's make an exercise with Marvel Comic characters vs. Characters. Implement a logic to define who wins a fight between 'Loki' character assuming who's attacking:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;attack&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Loki must be:&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Iron-Man&lt;/td&gt;
&lt;td&gt;Magneto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thor&lt;/td&gt;
&lt;td&gt;Odin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hulk&lt;/td&gt;
&lt;td&gt;Thanos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wolwerine&lt;/td&gt;
&lt;td&gt;Magneto&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here is the answer. Usually you could follow this pattern generated by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const attack = "Iron-Man";
const Loki = "";

if(attack === 'Iron-Man'){
 loki = 'Magneto'; //-&amp;gt; Loki custom as Magneto;
}else if(attack === 'Hulk'){
 loki = 'Thanos';  //-&amp;gt; Loki custom as Thanos;
}..etc..
else{
loki='loki';
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this point, many developers can to think about refactor to switch because it works as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch(attack){
   case 'Iron-Man':
   loki = 'Magneto'
   break;

   default:
   Loki = 'Loki'

(.. so on)...
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Implementation HashTable:&lt;/strong&gt;&lt;br&gt;
You could use &lt;code&gt;attack&lt;/code&gt; as index for the hash table to recover the value and refactor as clean code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const attack = 'Hulk'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;LOKI_CUSTOM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;'Iron-Man':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'Magneto'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;Thor:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'Odin'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;Hulk:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'Thanos'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const LOKI_DEFAULT = 'Loki'
const loki = LOKI_CUSTOM[attack] || LOKI_DEFAULT

console.log(loki) -&amp;gt; Thanos

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also allow you to export and re-use the object, and it can be implemented with methods and ternary functions! e.x:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;LOKI_CUSTOM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;'Iron-Man':&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'Magneto'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;Thor:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'Odin'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;Hulk:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'Thanos'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const loki = LOKI_CUSTOM[attack]
 ? LOKI_CUSTOM[attacks]()
 : LOKI_DEFAULT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>programming</category>
      <category>hashtables</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>React Prot-Types and Errors</title>
      <dc:creator>juanpumpkinpie</dc:creator>
      <pubDate>Wed, 20 Jan 2021 15:41:19 +0000</pubDate>
      <link>https://dev.to/juanpumpkinpie/react-prot-types-and-errors-5010</link>
      <guid>https://dev.to/juanpumpkinpie/react-prot-types-and-errors-5010</guid>
      <description>&lt;p&gt;Guys, is important to add the prop-types for the apps you are developing to avoid problems in the UI render, because if the app start to growing up, the errors also can do it.&lt;br&gt;
Here I attach sample, &lt;/p&gt;

&lt;p&gt;&lt;a href="https://es.reactjs.org/docs/typechecking-with-proptypes.html"&gt;https://es.reactjs.org/docs/typechecking-with-proptypes.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Besides, it is important handle the errors, and to know what is happening back the app in the modeling, structure and behave: &lt;a href="https://es.reactjs.org/blog/2017/07/26/error-handling-in-react-16.html"&gt;https://es.reactjs.org/blog/2017/07/26/error-handling-in-react-16.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;componentDidCatch is more important than a simple Try,Catch, check the documentation and improve your code!&lt;/p&gt;

</description>
      <category>react</category>
      <category>errors</category>
      <category>apps</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Steps to create a SSH-key</title>
      <dc:creator>juanpumpkinpie</dc:creator>
      <pubDate>Fri, 18 Sep 2020 08:38:07 +0000</pubDate>
      <link>https://dev.to/juanpumpkinpie/steps-to-create-a-ssh-key-1ag3</link>
      <guid>https://dev.to/juanpumpkinpie/steps-to-create-a-ssh-key-1ag3</guid>
      <description>&lt;p&gt;In this vlog I found a good way to control repositories with the shh-key, but the most important, works for CTF365 Capture the flag! (Swietnie).&lt;/p&gt;

</description>
      <category>github</category>
      <category>ssh</category>
      <category>ctf</category>
      <category>secutiry</category>
    </item>
  </channel>
</rss>
