<?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: Alexandre Bekor</title>
    <description>The latest articles on DEV Community by Alexandre Bekor (@alexandrebekor).</description>
    <link>https://dev.to/alexandrebekor</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%2F62334%2F3ed17515-52ae-4e29-8ce2-134da77daddb.jpg</url>
      <title>DEV Community: Alexandre Bekor</title>
      <link>https://dev.to/alexandrebekor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexandrebekor"/>
    <language>en</language>
    <item>
      <title>007/100 Days of Code: Week 01</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Fri, 25 Feb 2022 11:28:54 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/007100-days-of-code-week-01-513c</link>
      <guid>https://dev.to/alexandrebekor/007100-days-of-code-week-01-513c</guid>
      <description>&lt;p&gt;Hello galera!&lt;br&gt;
Hoje é um grande marco pra mim, completamos a primeira semana do desafio #100daysofcode! 🤩🤩🤩&lt;/p&gt;

&lt;p&gt;Ufa! Em vista do que está por vir ainda é um pequeno progresso, mas estou bem feliz com os resultados que temos alcançado.&lt;/p&gt;

&lt;p&gt;Como relatei no início do desafio, meu principal objetivo era o de revisar e documentar os fundamentos de Javascript, mas como alguns puderam perceber, essa semana acabei por entrar em alguns conceitos mais periféricos que costumam fazer parte do meu processo de desenvolvimento de software, por isso resolvi que o ideal vai ser intercalar entre essas revisões e a documentação do meu progresso pessoal com assuntos mais avançados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metas da Semana Anterior
&lt;/h2&gt;

&lt;p&gt;O desafio começou sem ter objetivos tão claros quanto aos assuntos que serão estudados e as atividades que serão desenvolvidas, mas com todos os testes realizados, durante essa primeira semana, consegui estabelecer alguns pontos importantes para a minha evolução.&lt;/p&gt;

&lt;h2&gt;
  
  
  Revisão Semanal
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Comecei o desafio separando as seções dos artigos entre estudos do dia anterior e dia atual, e publicando-os antes de dormir, vi que os resultados não estavam sendo bons, nem para divulgação e muito menos para minha produtividade, por isso resolvi começar a divulgá-los de manhã com o resumo do que foi estudado no dia anterior&lt;/li&gt;
&lt;li&gt;001/100: Fiz uma revisão detalhada sobre &lt;code&gt;Expressões Regulares&lt;/code&gt; e me diverti testando-as no &lt;a href="https://regex101.com/"&gt;Regex101&lt;/a&gt;, também aproveitei para esboçar um artigo mais completo sobre o assunto e em breve será publicado por aqui&lt;/li&gt;
&lt;li&gt;002/100: Também revisei os comandos do &lt;code&gt;Git&lt;/code&gt; para ver se encontrava algum processo que poderia encurtar meu fluxo de trabalho trazendo mais produtividade ou organização&lt;/li&gt;
&lt;li&gt;003/100: Aprendi a realizar o &lt;code&gt;Debugging&lt;/code&gt; de aplicações Javascript utilizando a biblioteca &lt;code&gt;debug&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;004/100: Revisei um pouco sobre &lt;code&gt;Estrutura de Dados&lt;/code&gt;, um assunto bem leve para o dia, porque estava bem cansado&lt;/li&gt;
&lt;li&gt;005/100: Meu primeiro dia de desmotivação durante o desafio... Resolvi escrever um pouco sobre isso, sobre hábitos e do quanto precisamos cuidar da nossa disposição e no dia seguinte acordei renovado!&lt;/li&gt;
&lt;li&gt;006/100: Comecei a explorar o poder da última atualização do &lt;code&gt;Strapi CMS&lt;/code&gt; e fiquei muito empolgado com as possibilidades&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Algun erros que cometi
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Acredito que poderia ter cuidado mais da minha disposição, principalmente por meio da alimentação, considerei demais a correria da semana e fingi que esqueci dos malefícios de se ingerir fast food todos os dias&lt;/li&gt;
&lt;li&gt;Meu gerenciamento de tempo também precisa ser melhorado, em um dos dias cheguei a trabalhar pouco mais de 12 horas sem nenhum intervalo de qualidade e nem notei o momento em que eu já tinha perdido a produtividade e minha cabeça já tinha parado de funcionar (kkkkkk dou risada agora porque no dia foi difícil)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  O que deu certo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Consegui estabelecer uma linha de progresso para os meus artigos&lt;/li&gt;
&lt;li&gt;Mantive o hábito de escrever pelo menos um artigo por dia, mesmo que alguns deles não tenham sido publicados&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Semana 01
&lt;/h2&gt;

&lt;p&gt;Obrigado a todos que me seguiram e interagiram comigo durante essa  última semana!&lt;/p&gt;

&lt;p&gt;Gostaria também de deixar registrado um agradecimento especial para o &lt;a class="mentioned-user" href="https://dev.to/erickwendel"&gt;@erickwendel&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/nicolaslima321"&gt;@nicolaslima321&lt;/a&gt; e o &lt;a class="mentioned-user" href="https://dev.to/romulosous"&gt;@romulosous&lt;/a&gt;, seus feedbacks serviram de grande incentivo e me inspiraram a buscar melhorias!&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>006/100 Days of Code: Strapi CMS</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Thu, 24 Feb 2022 13:18:32 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/006100-days-of-code-strapi-cms-n5i</link>
      <guid>https://dev.to/alexandrebekor/006100-days-of-code-strapi-cms-n5i</guid>
      <description>&lt;p&gt;Ontem foi dia de explorar mais a fundo a versão atualizada do &lt;a href="https://strapi.io/"&gt;Strapi&lt;/a&gt; e tudo o que encontrei me deixou bastante empolgado!&lt;/p&gt;




&lt;h2&gt;
  
  
  CMS
&lt;/h2&gt;

&lt;p&gt;Um CMS (Content Management System) é, como o próprio nome já diz, um Sistema de Gestão de Conteúdo, para nós desenvolvedores é como a implementação de um CRUD dinâmico onde você define os tipos de conteúdos e os relacionamentos entre eles e o próprio sistema se responsabiliza por implementá-los com a capacidade de Criação, Leitura, Atualização e Deleção.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strapi
&lt;/h2&gt;

&lt;p&gt;O Strapi é um CMS, e do tipo headless, ou seja, ele fornece apenas o backend, que pode ser consumido por diferentes front-ends, agilizando a configuração de produtos que requerem apenas as clássicas tarefas de um CRUD ao mesmo tempo que mantém a liberdade para o desenvolvedor caprichar no design!&lt;/p&gt;

&lt;p&gt;Apesar de já ter utilizado essa ferramenta algumas vezes no passado, as últimas atualizações conseguiram me surpreender, além da mudança visual, que agora apresenta um conceito mais clean, temos um suporte muito melhor ao desenvolvido com GraphQL e uma capacidade de extensão de componentes também melhoradas!&lt;/p&gt;

&lt;p&gt;Entendo que a explicação completa de cada uma dessas melhorias e como elas podem ser utilizadas só pode ser compreendida em sua totalidade quando aplicada em um projeto, por isso já estou preparando um material que, com certeza, incluirá esse CMS no seu próximo projeto!😉&lt;/p&gt;

&lt;h2&gt;
  
  
  Hoje
&lt;/h2&gt;

&lt;p&gt;A meta é explorar um pouco mais essa ferramenta para entender melhor como se dão os relacionamentos entre os componentes criados na aplicação e até onde chega o poder do GraphQL para gerenciamento desses dados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>strapi</category>
    </item>
    <item>
      <title>005/100 Days of Code: The habits</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Wed, 23 Feb 2022 00:50:02 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/005100-days-of-code-the-habits-3m5l</link>
      <guid>https://dev.to/alexandrebekor/005100-days-of-code-the-habits-3m5l</guid>
      <description>&lt;p&gt;Toda mudança de hábito requer &lt;strong&gt;esforço&lt;/strong&gt; e &lt;strong&gt;constância&lt;/strong&gt;, e isso não é problema nenhum quando estamos empolgados com uma nova ideia e com a expectativa do quanto ela pode ajudar outras pessoas!&lt;/p&gt;

&lt;p&gt;O problema é que durante esse processo de construção somos pegos de surpresa por dias em que a nossa produtividade, criatividade e disposição não parecem colaborar com nenhuma atividade, são nesses momentos que nossa mente começa a criar justificativas, muitas vezes bem lógicas, para postergarmos ou deixarmos de lado qualquer atividade, principalmente as que ainda estamos nos acostumando a fazer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ontem foi um desses dias pra mim!
&lt;/h2&gt;

&lt;p&gt;E por mais que tenha produzido algumas horas de código, o sentimento de falta de progresso liderou em grande parte do meu dia, antes de dormir a minha lista de atividades e meu painel de controle de novos hábitos estavam pintados em escarlate e a frustração foi ainda maior.&lt;/p&gt;

&lt;p&gt;Mas não ache que isso tudo é apenas um desabafo de alguém descontente, muito pelo contrário, é na verdade pra te falar:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hoje o dia pode ter sido ruim, talvez seu sentimento seja de total improdutividade nesse momento e ESTÁ TUDO BEM!"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lembre-se sempre:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amanhã é uma nova oportunidade para avançar, não abra mão da sua evolução por um dia que, aparentemente, não deu muito certo&lt;/li&gt;
&lt;li&gt;Pare, respire e repense no planejamento, aproveite a recuperação de um dia improdutivo para reconhecer as suas atuais limitações e, caso entenda que alguma atitude específica e dependente totalmente de você, possa ter contribuido para a indisposição, crie formas de combatê-las&lt;/li&gt;
&lt;li&gt;Prefira redistribuir as atividades do dia anterior ao invés de tentar executá-las de uma só vez junto com as atividades de hoje na intenção de "correr atrás do tempo perdido", isso pode criar uma grande bola de neve de atividades não realizadas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;Se você identificar que esses episódios são recorrentes e/ou duradouros busque ajuda profissional, nunca descarte a alternativa de uma boa terapia, uma consulta a uma nutricionista ou um checkup rotineiro, leve sua disposição a sério!&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>004/100 Days of Code: Estrutura de Dados</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Mon, 21 Feb 2022 15:24:32 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/004100-days-of-code-estrutura-de-dados-50id</link>
      <guid>https://dev.to/alexandrebekor/004100-days-of-code-estrutura-de-dados-50id</guid>
      <description>&lt;p&gt;Saber como organizar, acessar e editar dados utilizando estruturas padrões da linguagem é uma das chaves para desenvolver aplicações mais performáticas.&lt;br&gt;
Para esse artigo, vamos falar de forma rápida sobre um dos tipos de estruturas disponibilizadas no Javascript: &lt;code&gt;Vetores&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Vetores
&lt;/h2&gt;

&lt;p&gt;Os vetores, mais comumente chamados de &lt;code&gt;arrays&lt;/code&gt;, em sua forma mais simples são unidimensionais, ou seja, possuem internamente apenas tipos primitivos e imutáveis de dados, e podem ser heterogêneos, ou seja, ser compostos por tipos diferentes desses dados na mesma estrutura:&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cada item possui um índice (index) que corresponde a posição desse elemento dentro do vetor, iniciando sempre pela posição Zero, e é por meio desse &lt;code&gt;index&lt;/code&gt; que temos a primeira forma de acesso aos dados do array:&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;world&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&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;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="c1"&gt;// hello&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&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;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="c1"&gt;// world&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utilizando esse mesmo conceito podemos também alterar os dados internos de um vetor ou adicionar novos dados por meio de um índice:&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;world&lt;/span&gt;&lt;span class="dl"&gt;'&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;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Alexandre&lt;/span&gt;&lt;span class="dl"&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;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bekor&lt;/span&gt;&lt;span class="dl"&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;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&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="c1"&gt;// ['Alexandre', 'Bekor', '!']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Manipulação de Vetores
&lt;/h3&gt;

&lt;p&gt;Na maioria das vezes estamos lidando com vetores dinâmicos, ou seja, arrays de recebem entradas e saídas de dados com tamanhos que podem variar durante o seu uso na aplicação, por isso fica difícil utilizar um método de consulta, alteração ou atualização tão estático como os mostrados anteriormente.&lt;br&gt;
Por isso foram criadas funções que facilitam a interação com os vetores de forma muito mais dinâmica.&lt;/p&gt;
&lt;h4&gt;
  
  
  Adicionar um ou mais itens
&lt;/h4&gt;

&lt;p&gt;Para adição de itens temos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;push&lt;/code&gt;: adiciona os itens que recebe como parâmetro ao final do vetor&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;unshift&lt;/code&gt;: adiona os itens que recebe como parâmetro no início do vetor
&lt;/li&gt;
&lt;/ul&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;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// [3, 4, 5, 6, 7, 8]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;unshift&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="c1"&gt;// [1, 2, 3, 4, 5, 6, 7, 8]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Remover um item
&lt;/h4&gt;

&lt;p&gt;Para remoção de um item também temos outras duas funções:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pop&lt;/code&gt;: que remove o último item do vetor&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;shift&lt;/code&gt;: remove o primeiro item do vetor
&lt;/li&gt;
&lt;/ul&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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// [1, 2, 3, 4, 5, 6, 7]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// [2, 3, 4, 5, 6, 7]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Como deve ter notado, essas funções não recebem nenhum parâmetro, ou seja, removem apenas um item por vez e apenas na primeira ou última posição.&lt;/p&gt;
&lt;h4&gt;
  
  
  Remover um ou mais itens
&lt;/h4&gt;

&lt;p&gt;Para quando precisamos remover um ou mais itens e que não estejam necessariamente no início ou final do vetor temos a função &lt;code&gt;splice&lt;/code&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="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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&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="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// [1, 2, 3, 7]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa função pode receber até três elementos, como demonstrado no exemplo acima temos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;3&lt;/code&gt;: índice do primeiro elemento do intervalo de deleção&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;2&lt;/code&gt;: quantidade de elementos que serão deletados, a partir do, e incluindo, o primeiro elemento do intervalo de deleção&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;'item 02', 'item 3'&lt;/code&gt;: opcionalmente os itens que serão inclusos no lugar do intervalo deletado
&lt;/li&gt;
&lt;/ul&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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&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="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;item 02&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;item 03&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// [1, 2, 3, 'item 02', 'item 03', 7]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Extrair um intervalo de itens para um novo array
&lt;/h4&gt;

&lt;p&gt;Além da habilidade de adicionar ou remover itens diretamente de um vetor, existem situações em que precisaremos extrair dados sem alterar o array original, para isso temos a função &lt;code&gt;slice&lt;/code&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="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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slice&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;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// []&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cuidado para não confundir com a função &lt;code&gt;splice&lt;/code&gt;!&lt;br&gt;
Nesse caso, a função &lt;code&gt;slice&lt;/code&gt; recebe apenas dois argumentos e, similar a função anterior, eles representam um intervalo só que, com uma sutil diferença, enquanto o primeiro representa o índice onde o intervalo que será extraído inicia, o segundo representa o índice do último item, porém sem incluí-lo.&lt;br&gt;
Como essa função gera um novo array copiando o itens com a regra proposta, não se esqueça de atribuí-lo a uma nova variável, como fiz quando declarei &lt;code&gt;const newArr =&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Copiando todos os itens
&lt;/h4&gt;

&lt;p&gt;O ES6 adicionou um atalho para a cópia de todos os itens de um array que vale muito a pena ser mencionado! O &lt;code&gt;spread operator&lt;/code&gt;, que é um operador que 'espalha' os itens internos de um array onde ele é declarado:&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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newArr&lt;/span&gt; &lt;span class="o"&gt;=&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="c1"&gt;// [1, 2, 3, 4, 5]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A sua facilidade de uso nos permite realizar adições melhor elaboradas como:&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;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newArr&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="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;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;// [1, 2, 3, 4, 5, 6, 7, 8]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apesar de ter me aprofundado em estruturas um pouco mais complexas e teóricas acredito que transmitir um pouco dessa base mais simples, no primeiro momento, mantenha um histórico mais agradável dos meus artigos, documentando um processo evolutivo mais organizado.&lt;/p&gt;

&lt;p&gt;Por isso por hoje é só 😄.&lt;br&gt;
Mas o desafio continua e amanhã nos vemos novamente!&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>estruturadedados</category>
      <category>beginners</category>
    </item>
    <item>
      <title>003/100 Days of Code: Debugging Javascript</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Sat, 19 Feb 2022 13:39:10 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/003100-days-of-code-debugging-javascript-3cfd</link>
      <guid>https://dev.to/alexandrebekor/003100-days-of-code-debugging-javascript-3cfd</guid>
      <description>&lt;p&gt;Na tentativa de adaptar o relatório do desafio à minha rotina vou passar a divulgar o post na parte da manhã com o resumo do aprendizado do dia anterior, por enquanto faz todo sentido, então vamos de teste! &lt;/p&gt;

&lt;p&gt;Ontem resolvi adiantar algumas funções e componentes de um projeto em que estou trabalhando e passei um pouco mais de 12 horas imerso nessas tarefas, por isso quando fui revisar a matéria para o desafio preferi optar por um assunto leve e que pudesse lidar sem que fosse preciso iniciar um projeto de teste.&lt;/p&gt;

&lt;p&gt;Olhando a grade de aprendizado do FreeCodeCamp vi que dedicaram um módulo apenas para o debugging e por isso resolvi explorar um pouco esse processo, afinal é uma das habilidades que tenho como  obrigatórias para todo desenvolvedor.&lt;/p&gt;

&lt;p&gt;Em Javascript o debug pode ser realizado por meio da famosa função &lt;code&gt;console.log()&lt;/code&gt; que retorna os valores de seus parâmetros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no terminal de comandos, quando o código está sendo executado no back-end,
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nN_S1jwq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lr08rcrgbo809zgl22tt.png" alt="Image description" width="880" height="137"&gt;
&lt;/li&gt;
&lt;li&gt;ou na área do console em 'Ferramentas do Desenvolvedor' nos navegadores, quando executado no front-end
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WlfznP2F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ni3pikadkbk1o2wp4f0.png" alt="Image description" width="880" height="337"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O seu uso é simples e direto ao ponto, basta informar um ou mais parâmetros para a função e os resultados serão impressos:&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;str1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;str2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;World&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;str2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// no console: Hello World&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ela pode ser adicionada a qualquer momento no código e te permite descobrir facilmente o atual estado de uma variável ou se uma função de fato está sendo executada.&lt;/p&gt;

&lt;p&gt;Também é possível adicionarmos uma pequena personalização para o retorno do debug por meio dessas variações da função &lt;code&gt;console&lt;/code&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="c1"&gt;// no console do navegador retorna o valor como um aviso&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Isso é um aviso&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// no console do navegador retorna o valor como uma informação&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Isso é uma informação&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// no console do navegador retorna o valor como um erro&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Cuidado com isso aqui!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// informe um objeto para ter um retorno organizado em tabela&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Alexandre&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bekor&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apesar de dificilmente impactar o processo de desenvolvimento da grande maioria dos desenvolvedores é importante ter como informação que a função &lt;code&gt;console.log()&lt;/code&gt; e suas variações são executadas de forma síncrona.&lt;/p&gt;

&lt;p&gt;Além desse modo clássico e talvez o mais utilizado, existe uma biblioteca que também auxilia o debug e torna o processo ainda mais profissional e informativo, cujo nome é bem auto explicativo: &lt;code&gt;debug&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Por meio dessa biblioteca é possível gerar um log ainda mais detalhado e organizado do estado das variáveis, da execução das funções, e das requisições (para quem é apaixonado por organização e documentação é um verdadeiro show luzes no terminal), ainda estou me exercitando nela por isso prefiro não me arriscar transmitir informações mais profundas, mas se você quiser já começar a experimentar basta instalá-la e:&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="c1"&gt;// importá-la atribuindo a uma variável&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;log&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;debug&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello World&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;// utilizá-la como função envolvendo o trecho que será depurado&lt;/span&gt;
&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executá-la no terminal primeiro definindo a variável &lt;code&gt;DEBUG&lt;/code&gt; seguido da flag &lt;code&gt;*&lt;/code&gt; e por fim executando o arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;set &lt;/span&gt;&lt;span class="nv"&gt;DEBUG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt; &amp;amp; node index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você pode explorar um pouco mais da biblioteca diretamente pelo &lt;a href="https://github.com/debug-js/debug"&gt;repositório dela aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E obviamente tendo em breve um material mais detalhado por aqui e por meio das minhas outras redes sociais.&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>debugging</category>
      <category>beginners</category>
    </item>
    <item>
      <title>002/100 Days of Code: Git</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Fri, 18 Feb 2022 11:56:26 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/002100-days-of-code-git-jen</link>
      <guid>https://dev.to/alexandrebekor/002100-days-of-code-git-jen</guid>
      <description>&lt;p&gt;Git: A forma mais assertiva para se contar a história do seu projeto, usar essa ferramenta é como escrever a biografia do seu código! 🧐&lt;/p&gt;

&lt;h2&gt;
  
  
  Ontem
&lt;/h2&gt;

&lt;p&gt;Desenvolvi templates para validação de formulários com Regex e pesquisei algumas boas práticas na formatação das expressões.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Durante o aprendizado de &lt;em&gt;Expressões Regulares&lt;/em&gt; com o auxílio do &lt;a href="https://regex101.com/"&gt;Regex101&lt;/a&gt; desenvolvi alguns materiais de consulta que em breve estarei compartilhando por aqui!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Hoje
&lt;/h2&gt;

&lt;p&gt;Enquanto me preparava para enviar um projeto front-end para o Gitlab notei que alguns dos comandos que havia estudado para gerenciar os versionamentos haviam sido esquecidos, por isso resolvi dedicar o final dessa noite para relembrar e exercitar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Git
&lt;/h3&gt;

&lt;p&gt;É um versionador de código, ele te permite empacotar as modificações de arquivos com uma descrição e gerar a partir disso um ponto de salvamento que pode ser restaurado a qualquer momento. Ou seja, por mais que você altere o código, é possível retrocedê-lo a qualquer momento para qualquer ponto de salvamento.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Uma ótima saída para quando um 🐛 bug resolve aparecer na nova versão da aplicação e estamos com pouco tempo de reação!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Aqui estão alguns dos comandos que mais utilizado e que provavelmente você também utilizará:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
// inicia o versionador na pasta em que foi chamado

git clone &amp;lt;URL do Repositório&amp;gt;
// clona um repositório a partir de uma url
// exemplo: git clone https://github...

git add .
// adiciona todos os arquivos do projeto na monitoria

git remote add &amp;lt;nome&amp;gt; &amp;lt;url&amp;gt;
// adiciona uma referência para um repositório remoto a partir de uma url
// exemplo: git remote add origin https://github...

git commit -m "Mensagem do Commit"
// empacota as modificações do arquivos monitorados com uma descrição

git push &amp;lt;Nome do repositório remoto&amp;gt;
// envia o commit para o repositório remoto
// exemplo: git push origin

git pull &amp;lt;Nome do repositório remoto&amp;gt; &amp;lt;Nome da branch&amp;gt;
// Incorpora as alterações de um repositório remoto na branch atual
// exemplo: git pull origin master

git status
// Retorna os arquivos que estão sendo monitorados

git log
// Retorna o histórico de commits

git checkout &amp;lt;ID do Commit&amp;gt;
git restore --source &amp;lt;ID do Commit&amp;gt;
git restore .
// restaura o projeto ou um arquivo específico a um ponto anterior

git switch -c &amp;lt;Nome da Nova Branch&amp;gt;
git branch &amp;lt;Nome da Nova Branch&amp;gt;
git branch
git switch &amp;lt;Nome da Branch&amp;gt;
// git switch master

// Atalho para selecionar a branch master
git switch -

git tag -a &amp;lt;Tag&amp;gt; -m 'Descrição'
// cria uma tag e atribui ao commit atual, é como criar um marco, alguns utilizam esse recurso para indicar o início de nova versão da aplicação
// exemplo: git tag -a 1.0 -m 'Alpha Version'

git tag
// lista as tags
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Commit para múltiplos repositórios remotos
&lt;/h3&gt;

&lt;p&gt;Esse processo já me atendeu muito bem, então vou destacá-lo aqui!&lt;br&gt;
Já me deparei com uma situação em que precisava realizar o envio dos commits para dois repositórios remotos diferentes, mas por questão de produtividade precisava que o envio fosse realizado com apenas um comando de &lt;code&gt;git push&lt;/code&gt;, ao invés de ficar alterando entre as branches e os repositórios remotos, aqui está a estratégia:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Crie um repositório remoto
git remote add &amp;lt;Nome do Repositório&amp;gt; &amp;lt;URL do Repositório Remoto 01&amp;gt;

// Aponte a URL do outro repositório para o mesmo &amp;lt;Nome do Repositório&amp;gt; utilizado no comando anterior 
git remote set-url --add --push &amp;lt;Nome do Repositório Anterior&amp;gt; &amp;lt;URL do Repositório Remoto 02&amp;gt;

// Exemplo
git remote add origin https://github...
git remote set-url --add --push origin https://gitlab...
git remote set-url --add --push origin https://bitbucket...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, quando enviar os commits com um &lt;code&gt;git push&lt;/code&gt;, eles serão processados para todos os repositórios remotos adicionados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;Sei que não entrei em detalhamento de nenhum dos comandos, mas esse post é apenas a sumarização do estudo do dia, em breve estarei escrevendo alguns artigos mais detalhados abordando cada um desses temas e você pode acompanhá-los nesse e nos meus outros canais de comunicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>git</category>
    </item>
    <item>
      <title>001/100 Days of Code: Expressões Regulares</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Thu, 17 Feb 2022 01:53:48 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/001100-days-of-code-expressoes-regulares-56ji</link>
      <guid>https://dev.to/alexandrebekor/001100-days-of-code-expressoes-regulares-56ji</guid>
      <description>&lt;p&gt;A sopa de letrinhas que pode revolucionar sua maneira de validar entradas de dados! 🍲&lt;/p&gt;

&lt;h2&gt;
  
  
  Ontem
&lt;/h2&gt;

&lt;p&gt;Comecei a estudar sobre expressões regulares realizando os exercícios do módulo &lt;strong&gt;Regular Expressions&lt;/strong&gt; no FreeCodeCamp e acompanhei uma explicação incrível do &lt;a class="mentioned-user" href="https://dev.to/erickwendel"&gt;@erickwendel&lt;/a&gt; que, por feliz coincidência, lançou um material na segunda-feira em seu canal no youtube que, apesar de não ser o tema principal do vídeo, explica com excelência a respeito desse assunto.&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=G8_Feca_9U0"&gt;Esse é o vídeo&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Hoje
&lt;/h2&gt;

&lt;p&gt;Sumarizei as principais flags e operadores dessa grande sopa de letrinhas e utilizei a maioria delas em alguns experimentos no &lt;a href="https://regex101.com/"&gt;Regex101&lt;/a&gt;, um editor online que te auxilia no processo de construção da sua expressão regular, uma ferramenta incrível e bem intuitiva, basta inserir os termos que devem ser testados e sair construindo sua expressão enquanto acompanha simultaneamente os resultados.&lt;/p&gt;

&lt;p&gt;Um pouco do que foi aprendido:&lt;/p&gt;

&lt;h3&gt;
  
  
  Expressões Regulares
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;São padrões utilizados para identificar cadeias de caracteres em uma string&lt;/li&gt;
&lt;li&gt;São muito utilizadas para validação de entrada de dados&lt;/li&gt;
&lt;li&gt;Em Javascript as expressões regulares não são declaradas entre aspas&lt;/li&gt;
&lt;li&gt;Alguns caracteres:
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Caractere&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;th&gt;Exemplo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;|&lt;/td&gt;
&lt;td&gt;Ou&lt;/td&gt;
&lt;td&gt;/Yes|No/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;Ignora a caixa do caractere&lt;/td&gt;
&lt;td&gt;/Alexandre/i&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;g&lt;/td&gt;
&lt;td&gt;Retorna um vetor com todas as ocorrências&lt;/td&gt;
&lt;td&gt;/Alexandre/g&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;Indica um caractere qualquer&lt;/td&gt;
&lt;td&gt;/ti./&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[ ]&lt;/td&gt;
&lt;td&gt;Escolhas permitidas&lt;/td&gt;
&lt;td&gt;/B[au]g/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[ - ]&lt;/td&gt;
&lt;td&gt;Intervalo de caracteres&lt;/td&gt;
&lt;td&gt;/B[a-j]u/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[^ ]&lt;/td&gt;
&lt;td&gt;Negação de caractere&lt;/td&gt;
&lt;td&gt;/Alex[^a]ndre/i&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^&lt;/td&gt;
&lt;td&gt;Obrigatório estar no início&lt;/td&gt;
&lt;td&gt;/^a/&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>regex</category>
    </item>
    <item>
      <title>100 Days of Code</title>
      <dc:creator>Alexandre Bekor</dc:creator>
      <pubDate>Tue, 15 Feb 2022 15:03:11 +0000</pubDate>
      <link>https://dev.to/alexandrebekor/100-days-of-javascript-3aoh</link>
      <guid>https://dev.to/alexandrebekor/100-days-of-javascript-3aoh</guid>
      <description>&lt;p&gt;Após tanto tempo postergando finalmente decidi entrar de vez no desafio: 100 dias de código! 😎&lt;/p&gt;

&lt;h2&gt;
  
  
  100 days of Code!
&lt;/h2&gt;

&lt;p&gt;Para quem não conhece esse desafio, todas as regras podem ser encontradas em &lt;a href="https://www.100daysofcode.com/"&gt;100daysofcode.com&lt;/a&gt;, mas em resumo é exatamente o que o próprio nome diz, quem entra se responsabiliza em praticar um assunto específico, que pode ser uma linguagem de programação, um framework, uma nova ferramenta ou até mesmo um novo hábito, por pelo menos 1 hora pelos próximos 100 dias.&lt;br&gt;
E dentre todos os assuntos propostos resolvi começar pela linguagem de programação da minha stack favorita: Javascript!&lt;/p&gt;
&lt;h2&gt;
  
  
  Mas não deveria ser um assunto inédito?
&lt;/h2&gt;

&lt;p&gt;Apesar de já ter um certo domínio da linguagem a ideia é revisar os conceitos fundamentais e ir prosseguindo até assuntos mais avançados, acredito que fortalecer o entendimento dos fundamentos nunca é demais!&lt;/p&gt;
&lt;h2&gt;
  
  
  Reporte Diário
&lt;/h2&gt;

&lt;p&gt;Enquanto estava procurando uma forma de ser o mais direto possível com os reportes diários do desafio me deparei com &lt;a href="https://dev.to/rammina/100-days-of-code-and-scrum-a-new-challenge-24lp"&gt;esse modelo incrível&lt;/a&gt; idealizado por &lt;a class="mentioned-user" href="https://dev.to/rammina"&gt;@rammina&lt;/a&gt; e decidi começar por ele:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ontem...
Hoje... 
Estou tendo dificuldades com... (opcional)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Mãos à obra
&lt;/h2&gt;

&lt;p&gt;E que comecem os jogos! 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros Canais
&lt;/h2&gt;

&lt;p&gt;Fique à vontade para entrar em contato comigo por essas outras mídias sociais também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/joaovitoralexandre/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/alexandrebekor/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/alexandrebekor"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/alexandrebekor"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>100daysofcode</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
