<?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: Leonardo Peixoto</title>
    <description>The latest articles on DEV Community by Leonardo Peixoto (@leonardo_peixoto).</description>
    <link>https://dev.to/leonardo_peixoto</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%2F2646996%2Fda7cf121-fdec-48a6-bd9c-202082238959.jpg</url>
      <title>DEV Community: Leonardo Peixoto</title>
      <link>https://dev.to/leonardo_peixoto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leonardo_peixoto"/>
    <language>en</language>
    <item>
      <title>Elements Kinds</title>
      <dc:creator>Leonardo Peixoto</dc:creator>
      <pubDate>Wed, 18 Mar 2026 11:57:32 +0000</pubDate>
      <link>https://dev.to/leonardo_peixoto/elements-kinds-3394</link>
      <guid>https://dev.to/leonardo_peixoto/elements-kinds-3394</guid>
      <description>&lt;p&gt;Se você usa arrays no JavaScript, o motor V8 está tomando decisões por trás dos panos que podem deixar seu código MUITO mais rápido… ou MUITO mais lento.&lt;/p&gt;

&lt;p&gt;E a maioria das pessoas nem percebe 👇&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;O segredo: *Elements Kinds&lt;/strong&gt;*&lt;/p&gt;

&lt;p&gt;O V8 classifica seus arrays internamente para otimizar execução.&lt;br&gt;
Mas essa otimização depende totalmente de &lt;em&gt;como você usa o array&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔑 Tipos que o V8 usa
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🟢 SMI (inteiros)&lt;/strong&gt; → mais otimizado&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&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;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🟡 DOUBLE (float)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🔴 GENERIC (misturado)&lt;/strong&gt; → pior cenário&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{}]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⚠️ &lt;strong&gt;Armadilha crítica (quase ninguém fala disso)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A evolução é &lt;strong&gt;irreversível&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;SMI → DOUBLE → GENERIC&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&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;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// já piorou&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// pior ainda&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Depois disso, não tem volta.&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 PACKED vs HOLEY
&lt;/h2&gt;

&lt;p&gt;🚀 &lt;strong&gt;PACKED (rápido)&lt;/strong&gt; → sem buracos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&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;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🐢 &lt;strong&gt;HOLEY (lento)&lt;/strong&gt; → com buracos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&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;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Isso força o V8 a fazer mais checks internos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ O que destrói sua performance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Misturar tipos no mesmo array&lt;/li&gt;
&lt;li&gt;Criar arrays esparsos (buracos)&lt;/li&gt;
&lt;li&gt;Mudar o tipo ao longo do tempo&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Como escrever código mais rápido
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use arrays homogêneos&lt;/li&gt;
&lt;li&gt;Evite buracos&lt;/li&gt;
&lt;li&gt;Seja previsível&lt;/li&gt;
&lt;li&gt;Não “evolua” o array sem necessidade&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🧠 &lt;strong&gt;Resumo brutal&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;V8 otimiza arrays agressivamente&lt;/li&gt;
&lt;li&gt;Você pode quebrar isso facilmente&lt;/li&gt;
&lt;li&gt;Pequenas decisões → grande impacto em escala&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para saber mais segue o post que fala mais a fundo sobre esse assunto.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://v8.dev/blog/elements-kinds#:%7E:text=In%20V8%2C%20properties%20with%20integer,indices%20that%20map%20to%20elements" rel="noopener noreferrer"&gt;https://v8.dev/blog/elements-kinds#:~:text=In%20V8%2C%20properties%20with%20integer,indices%20that%20map%20to%20elements&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>computerscience</category>
      <category>javascript</category>
      <category>performance</category>
      <category>programming</category>
    </item>
    <item>
      <title>Como o software é executado no computador</title>
      <dc:creator>Leonardo Peixoto</dc:creator>
      <pubDate>Thu, 11 Dec 2025 18:49:03 +0000</pubDate>
      <link>https://dev.to/leonardo_peixoto/como-o-software-e-executado-no-computador-3fcn</link>
      <guid>https://dev.to/leonardo_peixoto/como-o-software-e-executado-no-computador-3fcn</guid>
      <description>&lt;h2&gt;
  
  
  📌 Ideia Principal
&lt;/h2&gt;

&lt;p&gt;Computadores só executam um &lt;strong&gt;conjunto limitado de instruções simples&lt;/strong&gt; (linguagem de máquina). Para permitir que humanos escrevam software de forma produtiva, usamos mecanismos que &lt;strong&gt;traduzem linguagens de alto nível&lt;/strong&gt; para esse conjunto limitado.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Duas formas de realizar essa tradução
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Interpretação
&lt;/h3&gt;

&lt;p&gt;Um &lt;strong&gt;interpretador&lt;/strong&gt; lê o código-fonte e o executa diretamente, traduzindo instruções &lt;strong&gt;durante a execução&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Características-chave:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execução mais lenta (tradução em tempo real)
&lt;/li&gt;
&lt;li&gt;Maior portabilidade
&lt;/li&gt;
&lt;li&gt;Facilidade de depuração
&lt;/li&gt;
&lt;li&gt;Menor necessidade de geração de binário&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Compilação (Tradução antecipada)
&lt;/h3&gt;

&lt;p&gt;Um &lt;strong&gt;compilador&lt;/strong&gt; traduz o código-fonte &lt;strong&gt;antes da execução,&lt;/strong&gt; gerando um binário contendo apenas instruções que o hardware entende.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Características-chave:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execução mais rápida&lt;/li&gt;
&lt;li&gt;Melhor otimização
&lt;/li&gt;
&lt;li&gt;Dependente da arquitetura-alvo&lt;/li&gt;
&lt;li&gt;Processo dividido em etapas

&lt;ul&gt;
&lt;li&gt;análise léxica, sintática, semântica, &lt;/li&gt;
&lt;li&gt;otimização&lt;/li&gt;
&lt;li&gt;geração de código&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Por que isso importa?
&lt;/h2&gt;

&lt;p&gt;A diferença entre &lt;strong&gt;interpretar&lt;/strong&gt; e &lt;strong&gt;compilar&lt;/strong&gt; define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;performance&lt;/li&gt;
&lt;li&gt;portabilidade&lt;/li&gt;
&lt;li&gt;experiência de desenvolvimento&lt;/li&gt;
&lt;li&gt;design de linguagens de programação&lt;/li&gt;
&lt;li&gt;estrutura de sistemas (ex: JVM, V8, LLVM)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esses mecanismos são a base para entender como linguagens funcionam “under the hood”.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Referência
&lt;/h2&gt;

&lt;p&gt;Baseado em &lt;em&gt;Structured Computer Organization&lt;/em&gt;, Andrew Tanenbaum.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>programming</category>
    </item>
    <item>
      <title>Modelo OSI</title>
      <dc:creator>Leonardo Peixoto</dc:creator>
      <pubDate>Mon, 20 Oct 2025 15:13:05 +0000</pubDate>
      <link>https://dev.to/leonardo_peixoto/modelo-osi-4iko</link>
      <guid>https://dev.to/leonardo_peixoto/modelo-osi-4iko</guid>
      <description>&lt;p&gt;Redes permitem que dois ou mais processos, executados em máquinas distintas, se comuniquem. Compreender os fundamentos de redes é essencial para tomar decisões estruturadas e identificar possíveis gargalos.&lt;/p&gt;

&lt;p&gt;A troca de informações entre dois processos em máquinas diferentes é um tema complexo. Para lidar com essa complexidade, utilizamos o modelo OSI (Open Systems Interconnection) — uma estrutura conceitual criada pela ISO que organiza as funções de comunicação em &lt;strong&gt;sete camadas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aplicação&lt;/li&gt;
&lt;li&gt;Apresentação&lt;/li&gt;
&lt;li&gt;Sessão&lt;/li&gt;
&lt;li&gt;Transporte&lt;/li&gt;
&lt;li&gt;Rede&lt;/li&gt;
&lt;li&gt;Enlace&lt;/li&gt;
&lt;li&gt;Física&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cada camada possui responsabilidades bem definidas e se comunica apenas com a camada imediatamente adjacente. Isso permite reduzir a complexidade, já que cada parte entende apenas o que precisa saber.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Analogia&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pense em você como um motorista que deseja ir do ponto A ao ponto B. O carro fornece uma interface (volante, pedais, câmbio) que permite realizar essa tarefa sem precisar entender os detalhes de como o motor, a transmissão ou o sistema de freios funcionam.&lt;/p&gt;

&lt;p&gt;Da mesma forma, o modelo OSI abstrai as complexidades internas da comunicação em rede, tornando-o modular, compreensível e escalável.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsabilidades de Cada Camadas
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Layer 7 - Aplicação
&lt;/h3&gt;

&lt;p&gt;Serve como interface entre usuários/processos e a rede. Ela fornece serviços específicos da aplicação, como requisições HTTP, transferência de arquivos e e-mail.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 6 - Apresentação
&lt;/h3&gt;

&lt;p&gt;Traduz dados do formato da rede para o formato aceito pelas aplicações, realizando tarefas como criptografia, compressão e conversão de dados.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 5 - Sessão
&lt;/h3&gt;

&lt;p&gt;Responsável pela coordenação da comunicação entre duas aplicações em uma sessão, controlando o início, a manutenção e o encerramento da conexão.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4 - Transporte
&lt;/h3&gt;

&lt;p&gt;Gerencia a transferência de dados entre sistemas finais, segmentando informações em pacotes e controlando o fluxo e a confiabilidade da comunicação.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3 - Rede
&lt;/h3&gt;

&lt;p&gt;Cuida do roteamento, endereçamento e encaminhamento de pacotes entre redes distintas, garantindo que os dados cheguem ao destino correto.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2 - Enlace
&lt;/h3&gt;

&lt;p&gt;Define as tecnologias usadas para conectar duas máquinas em uma rede onde a camada física já existe. Também detecta e corrige erros que possam ocorrer na transmissão. &lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1 - Física
&lt;/h3&gt;

&lt;p&gt;Responsável pela transmissão e recepção de bits brutos sobre um meio físico, como cabos, fibras ópticas ou ondas de rádio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.paloaltonetworks.com/cyberpedia/what-is-layer-7" rel="noopener noreferrer"&gt;https://www.paloaltonetworks.com/cyberpedia/what-is-layer-7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/pt/what-is/osi-model" rel="noopener noreferrer"&gt;https://aws.amazon.com/pt/what-is/osi-model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fidelissauro.dev/protocolos-de-rede" rel="noopener noreferrer"&gt;https://fidelissauro.dev/protocolos-de-rede&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>networking</category>
      <category>systemdesign</category>
    </item>
  </channel>
</rss>
