<?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: Carlos Alves</title>
    <description>The latest articles on DEV Community by Carlos Alves (@eucarlos).</description>
    <link>https://dev.to/eucarlos</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%2F831272%2F0f6341f6-668d-485e-b6b7-4c3af47d74a1.jpeg</url>
      <title>DEV Community: Carlos Alves</title>
      <link>https://dev.to/eucarlos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eucarlos"/>
    <language>en</language>
    <item>
      <title>Malwares e Ciberataques: como evitar ser vítima?</title>
      <dc:creator>Carlos Alves</dc:creator>
      <pubDate>Mon, 22 May 2023 13:39:06 +0000</pubDate>
      <link>https://dev.to/eucarlos/malwares-e-ataques-ciberneticos-3mo7</link>
      <guid>https://dev.to/eucarlos/malwares-e-ataques-ciberneticos-3mo7</guid>
      <description>&lt;p&gt;Nos dias de hoje, em que a tecnologia se tornou parte integrante da vida cotidiana, a segurança cibernética é uma preocupação crescente. A cada ano, milhões de pessoas são vítimas de malwares e ataques cibernéticos, que podem causar prejuízos financeiros, roubar informações pessoais e empresariais confidenciais e comprometer a privacidade online. Neste artigo, vamos discutir cada um desses ataques em detalhes e fornecer dicas para proteger-se contra eles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M_9kl6Ni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExNDNlNjcxYmY5MDFkNGYwNjE3MmVkYmRiMWJmOGFlMTYyOGUxYzlkZCZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/zOvBKUUEERdNm/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M_9kl6Ni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExNDNlNjcxYmY5MDFkNGYwNjE3MmVkYmRiMWJmOGFlMTYyOGUxYzlkZCZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/zOvBKUUEERdNm/giphy.gif" alt="gif" width="320" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1 - Adware
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;adware&lt;/strong&gt; é um tipo de malware que exibe anúncios indesejados em seu dispositivo, geralmente na forma de pop-ups e banners. O objetivo do adware é &lt;strong&gt;obter receita para seus criadores através dos cliques nos anúncios&lt;/strong&gt;. Embora o adware possa ser irritante, ele não é necessariamente prejudicial ao seu dispositivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r6mJeHMg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nyow0gmwmrm5qr4rjist.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r6mJeHMg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nyow0gmwmrm5qr4rjist.png" alt="Ilustração que representa o Adware" width="616" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1 - Principal alvo
&lt;/h3&gt;

&lt;p&gt;O principal alvo dos adwares são os usuários de computadores e dispositivos móveis que utilizam a internet regularmente. Adwares podem afetar qualquer sistema operacional, incluindo Windows, macOS, iOS e Android. Os adwares geralmente são distribuídos através de downloads de software gratuitos ou piratas, e podem ser instalados sem o conhecimento do usuário.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 - Nível de risco
&lt;/h3&gt;

&lt;p&gt;O nível de risco associado aos adwares é relativamente baixo em comparação com outros tipos de malware, como vírus ou ransomware. No entanto, os adwares podem ser bastante irritantes, exibindo anúncios pop-up em excesso e interferindo na navegação na web e no desempenho do computador ou dispositivo móvel. Além disso, alguns adwares têm a capacidade de coletar informações pessoais do usuário, como histórico de navegação e senhas, o que pode representar um risco de privacidade significativo. &lt;/p&gt;

&lt;h3&gt;
  
  
  1.3 - Medidas preventivas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Evitar clicar em anúncios suspeitos ou que parecem ser enganosos;&lt;/li&gt;
&lt;li&gt;Instalar um software de segurança confiável;&lt;/li&gt;
&lt;li&gt;Manter o software de segurança atualizado;&lt;/li&gt;
&lt;li&gt;Não baixar programas de fontes não confiáveis ou desconhecidas;&lt;/li&gt;
&lt;li&gt;Revisar cuidadosamente as permissões solicitadas pelos aplicativos antes de concedê-las;&lt;/li&gt;
&lt;li&gt;Monitorar regularmente o computador ou dispositivo móvel em busca de sinais de adware.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2 - Phishing
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;phishing&lt;/strong&gt; é um ataque cibernético no qual um hacker envia um e-mail ou mensagem falsa que parece legítima, mas que na verdade é projetada para enganar você e roubar suas informações pessoais. Os hackers podem fingir ser empresas conhecidas, como bancos ou redes sociais, para atrair as vítimas a fornecerem senhas, números de cartão de crédito e outras informações confidenciais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_q5eoSgr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/einva9yfy3aopp5zbypj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_q5eoSgr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/einva9yfy3aopp5zbypj.png" alt="Ilustração que representa o Phishing" width="616" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phishing é uma &lt;strong&gt;técnica de fraude online utilizada por criminosos cibernéticos para roubar informações confidenciais de usuários, como senhas, números de cartão de crédito e dados bancários&lt;/strong&gt;. Esses fraudadores geralmente se passam por empresas ou instituições confiáveis, enviando mensagens fraudulentas por email, mensagem de texto ou até mesmo em redes sociais.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 - Principal alvo
&lt;/h3&gt;

&lt;p&gt;As principais vítimas de phishing são geralmente usuários comuns e empresas de todos os tamanhos, que podem ser alvos de ataques direcionados ou de campanhas de phishing em massa. Os criminosos cibernéticos muitas vezes realizam pesquisas detalhadas sobre suas vítimas potenciais, coletando informações pessoais e profissionais para tornar seus ataques mais convincentes e persuasivos.&lt;/p&gt;

&lt;p&gt;Empresas que possuem informações confidenciais, como instituições financeiras, empresas de comércio eletrônico e organizações governamentais, também são frequentemente alvos de phishing. Além disso, indivíduos que possuem grandes quantidades de dinheiro, como celebridades e empresários bem-sucedidos, também são alvos populares de ataque.&lt;/p&gt;

&lt;p&gt;Os ataques de phishing podem ser extremamente sofisticados e difíceis de detectar, por isso é importante que os usuários estejam cientes dos sinais de alerta e tomem medidas preventivas para proteger suas informações pessoais.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 - Nível de risco
&lt;/h3&gt;

&lt;p&gt;O nível de risco associado a um ataque de phishing pode variar dependendo da natureza do ataque e do tipo de informações que são roubadas. Em alguns casos, as vítimas podem perder apenas algumas informações pessoais, enquanto em outros, podem perder grandes somas de dinheiro ou ter sua identidade roubada. O phishing também pode levar à infecção por malware, o que pode afetar significativamente o desempenho do computador e colocar outras informações em risco. &lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 - Medidas preventivas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Verificar cuidadosamente os remetentes das mensagens;&lt;/li&gt;
&lt;li&gt;Não clicar em links suspeitos ou baixar anexos desconhecidos;&lt;/li&gt;
&lt;li&gt;Manter o software de segurança atualizado;&lt;/li&gt;
&lt;li&gt;Usar senhas fortes e exclusivas para cada conta;&lt;/li&gt;
&lt;li&gt;Entrar em contato com a empresa ou instituição imediatamente se suspeitar que sua conta foi comprometida por um ataque de phishing;&lt;/li&gt;
&lt;li&gt;Informar o incidente às autoridades competentes;&lt;/li&gt;
&lt;li&gt;Prevenção é a melhor defesa contra esse tipo de fraude online.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3 - Pharming
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;pharming&lt;/strong&gt; é semelhante ao phishing, mas em vez de enviar uma mensagem falsa, &lt;strong&gt;o hacker redireciona o tráfego da web para um site falso que parece legítimo&lt;/strong&gt;. Quando você tenta acessar um site legítimo, como seu banco online, você é redirecionado para um site falso controlado pelo hacker. Lá, eles podem roubar suas informações confidenciais, como senhas e números de cartão de crédito.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0kAdafyU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94xq46carjdi12522ce8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0kAdafyU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94xq46carjdi12522ce8.png" alt="Ilustração que representa o Pharming" width="573" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As etapas nesse tipo de ataque consiste em:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;O invasor identifica o site legítimo que ele deseja direcionar para o site falso;&lt;/li&gt;
&lt;li&gt;Ele cria um site falso com uma aparência semelhante à do site original. Isso envolve copiar o código HTML e outros recursos do site legítimo;&lt;/li&gt;
&lt;li&gt;O invasor usa técnicas de DNS ou de envenenamento de cache para fazer com que o nome de domínio do site falso pareça estar vinculado ao servidor do site legítimo;&lt;/li&gt;
&lt;li&gt;Quando um usuário tenta acessar o site legítimo digitando seu endereço na barra de endereços do navegador, o pedido é redirecionado para o site falso;&lt;/li&gt;
&lt;li&gt;O usuário pode inserir informações confidenciais, como nomes de usuário, senhas e detalhes de cartões de crédito, no site falso, acreditando que está interagindo com o site legítimo;&lt;/li&gt;
&lt;li&gt;O invasor captura essas informações confidenciais e as usa para fins mal-intencionados, como roubo de identidade ou fraude financeira.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3.1 - Principal alvo
&lt;/h3&gt;

&lt;p&gt;As principais vítimas do Pharming são geralmente empresas de grande porte, instituições financeiras e prestadores de serviços online que possuem sites populares e com muitos acessos. Além disso, os usuários comuns também podem ser alvos de ataques de pharming se seus roteadores forem comprometidos por criminosos cibernéticos.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 - Nível de risco
&lt;/h3&gt;

&lt;p&gt;O nível de risco associado a um ataque de pharming pode ser bastante elevado, uma vez que as informações pessoais e financeiras dos usuários podem ser comprometidas sem que eles saibam. Os usuários podem inserir suas informações em um site falso e, em seguida, ter suas contas bancárias esvaziadas ou sofrer roubo de identidade. Além disso, os sites legítimos que foram alvo de attack pharming podem sofrer danos à sua reputação, perdendo a confiança dos usuários e clientes.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 - Medidas preventivas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Utilize um software antivírus e mantenha-o atualizado;&lt;/li&gt;
&lt;li&gt;Mantenha o sistema operacional e todos os programas atualizados com as últimas correções de segurança;&lt;/li&gt;
&lt;li&gt;Use um firewall confiável para monitorar o tráfego de rede e bloquear ameaças potenciais;&lt;/li&gt;
&lt;li&gt;Evite clicar em links suspeitos ou abrir anexos de e-mails desconhecidos;&lt;/li&gt;
&lt;li&gt;Cuidado com sites falsos que se passam por instituições financeiras ou empresas conhecidas, verificando sempre a URL e a identidade visual do site;&lt;/li&gt;
&lt;li&gt;Ative a autenticação em duas etapas sempre que possível, especialmente para serviços bancários online;&lt;/li&gt;
&lt;li&gt;Fique atento às instruções de segurança fornecidas pelo seu banco ou provedor de serviços online;&lt;/li&gt;
&lt;li&gt;Use senhas fortes e nunca as compartilhe com ninguém;&lt;/li&gt;
&lt;li&gt;Evite usar wifi público não segura;&lt;/li&gt;
&lt;li&gt;Faça backup regularmente dos seus dados importantes e armazene-os em um local seguro.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4 - Ransomware
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;ransomware&lt;/strong&gt; é um tipo de malware que &lt;strong&gt;criptografa seus arquivos e exige um resgate em troca da chave de descriptografia&lt;/strong&gt;. Os hackers usam o ransomware para extorquir dinheiro das vítimas, ameaçando apagar permanentemente seus arquivos se não pagarem o resgate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zRZvzFFl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xn6w2fqargflihkdko5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zRZvzFFl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xn6w2fqargflihkdko5f.png" alt="Ilustração que representa o Ransomware" width="616" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 - Principal alvo
&lt;/h3&gt;

&lt;p&gt;Empresas que possuem grandes quantidades de dados valiosos, como instituições financeiras, hospitais e órgãos governamentais, são frequentemente alvo de ataques de ransomware. Isso ocorre porque os criminosos cibernéticos acreditam que essas organizações terão mais incentivo para pagar o resgate para recuperar seus dados. No entanto, pequenas empresas e usuários individuais também podem ser vítimas de ataques de ransomware.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 - Nível de risco
&lt;/h3&gt;

&lt;p&gt;O nível de risco associado a um ataque de ransomware pode ser elevado, pois os dados criptografados geralmente são irrecuperáveis sem a chave de descriptografia. Além disso, mesmo que o resgate seja pago, não há garantia de que os dados serão desbloqueados ou retornados aos proprietários originais. Em alguns casos, as vítimas podem perder toda a sua base de dados e ter suas operações comerciais completamente paralisadas.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 - Medidas preventivas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Manter o software de segurança atualizado;&lt;/li&gt;
&lt;li&gt;Fazer backup regular dos dados;&lt;/li&gt;
&lt;li&gt;Educar os funcionários sobre práticas de segurança cibernética adequadas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5 - Keylogger
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;keylogger&lt;/strong&gt; é um malware que &lt;strong&gt;registra tudo o que você digita no teclado do seu dispositivo&lt;/strong&gt;. Isso pode incluir senhas, nomes de usuário e outras informações confidenciais que os hackers podem usar para roubar sua identidade ou acesso a suas contas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3nR1q5yQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4irs5x3mc9pshftatt37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3nR1q5yQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4irs5x3mc9pshftatt37.png" alt="Ilustração que representa o Keylogger" width="616" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 - Principal alvo
&lt;/h3&gt;

&lt;p&gt;As principais vítimas do keylogger são empresas e indivíduos que lidam com informações sensíveis, como instituições financeiras e governamentais, escritórios de advocacia, consultorias em tecnologia da informação e empresas que possuem propriedade intelectual valiosa.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 - Nível de risco
&lt;/h3&gt;

&lt;p&gt;O nível de risco associado a um ataque de keylogger pode ser significativo, pois os criminosos cibernéticos podem usar as informações obtidas para realizar atividades fraudulentas, roubar dinheiro ou identidade, comprometer dados pessoais ou empresariais, entre outros crimes.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 - Medidas preventivas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Manter o software de segurança atualizado;&lt;/li&gt;
&lt;li&gt;Ter cuidado ao clicar em links suspeitos ou abrir anexos de e-mails desconhecidos;&lt;/li&gt;
&lt;li&gt;Usar senhas fortes e não compartilhá-las com ninguém;&lt;/li&gt;
&lt;li&gt;Monitorar regularmente as atividades de suas contas para detectar qualquer atividade suspeita.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6 - Screenlogger
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;screenlogger&lt;/strong&gt; é semelhante ao keylogger, mas &lt;strong&gt;registra tudo o que você faz na tela do seu dispositivo, incluindo cliques do mouse e movimentos do cursor&lt;/strong&gt;. Os hackers podem usar essas informações para roubar informações pessoais ou empresariais confidenciais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MJ_zpFXe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/681oljtmf7bmbwe999qi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MJ_zpFXe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/681oljtmf7bmbwe999qi.png" alt="Ilustração que representa o Screenlogger" width="641" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6.1 - Principal alvo
&lt;/h3&gt;

&lt;p&gt;As principais vítimas do Screenlogger são usuários de computadores e aparelhos móveis que lidam com informações sensíveis, como senhas, informações bancárias e financeiras, dados pessoais e corporativos. O objetivo dos ataques de Screenlogger é capturar as informações digitadas ou exibidas na tela do dispositivo.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.2 - Nível de risco
&lt;/h3&gt;

&lt;p&gt;O nível de risco associado a um ataque de Screenlogger pode ser significativo, pois os criminosos cibernéticos podem usar as informações obtidas para realizar atividades fraudulentas, roubar dinheiro, comprometer dados pessoais ou empresariais, entre outros crimes.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.3 - Medidas preventivas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mantenha o software de segurança atualizado;&lt;/li&gt;
&lt;li&gt;Tenha cuidado ao clicar em links suspeitos ou abrir anexos de e-mails desconhecidos;&lt;/li&gt;
&lt;li&gt;Monitore regularmente as atividades de suas contas;&lt;/li&gt;
&lt;li&gt;Utilize soluções de segurança digital eficientes para proteger seus dispositivos e informações pessoais ou empresariais.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Considerações finais
&lt;/h2&gt;

&lt;p&gt;Ao navegar na internet e utilizar dispositivos conectados à rede, é importante estar ciente dos perigos dos malwares e ataques cibernéticos. &lt;/p&gt;

&lt;p&gt;Para proteger-se contra esses tipos de ataques, é essencial tomar as medidas preventivas citados nesse artigo. Ao seguir essas práticas de segurança cibernética, você pode proteger-se contra os perigos do mundo digital e manter-se seguro online.&lt;/p&gt;

&lt;h2&gt;
  
  
  Me acompanhe no meu...
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="//carlosalves.vercel.app"&gt;carlosalves.vercel.app&lt;/a&gt;&lt;br&gt;
Gitub: &lt;a href="https://github.com/EuCarlos"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
Dribbble: &lt;a href="https://dribbble.com/eucarlos"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/josecarlos98"&gt;linkedin.com/in/josecarlos98&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>learning</category>
      <category>braziliandevs</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Bibliotecas NodeJS incríveis que você não tem ideia que existem</title>
      <dc:creator>Carlos Alves</dc:creator>
      <pubDate>Thu, 10 Nov 2022 17:45:20 +0000</pubDate>
      <link>https://dev.to/eucarlos/bibliotecas-nodejs-incriveis-que-voce-nao-tem-ideia-que-existem-3i4b</link>
      <guid>https://dev.to/eucarlos/bibliotecas-nodejs-incriveis-que-voce-nao-tem-ideia-que-existem-3i4b</guid>
      <description>&lt;p&gt;Olá pessoas! Estão preparados para conhecer 10 extensões incríveis que possa de ajudar no seu dia a dia nos estudos de programação? Então vem comigo e se liga nessa lista que está massa demais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c5yE1ArK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xva87yvvraoek03ki2wy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c5yE1ArK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xva87yvvraoek03ki2wy.gif" alt="OH! Come On" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;OBS.:&lt;/strong&gt; Lembrando que essa lista não está organizado de melhor para pior ou o inverso, são apenas sugestões de biblioteca para você.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. PM2
&lt;/h2&gt;

&lt;p&gt;PM2 é um gerenciador de processos para aplicativos NodeJS em produção com balanceador de carga (Load Balancer). Ele permite que você mantenha os aplicativos ativos para sempre, recarregue-os sem tempo de inatividade e facilite as tarefas comuns de administração do sistema.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pm2.keymetrics.io/"&gt;🔗 Site oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Unitech/pm2"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pm2.keymetrics.io/docs/usage/process-management/"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Video.js
&lt;/h2&gt;

&lt;p&gt;Caso você precise incluir um player de video no seu app certamente vale a pena testa a biblioteca Video.js, com ela você pode criar um player básico ou totalmente customizado.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://videojs.com/"&gt;🔗 Site oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/videojs/video.js"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://videojs.com/guides"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Sharp
&lt;/h2&gt;

&lt;p&gt;Sharp é um processador de imagens NodeJS de alto desempenho, o módulo mais rápido para redimensionar imagens JPEG, PNG, WebP, AVIF e TIFF. Usa a biblioteca lipvips escrita em C, a qual é 4-5 vezes mais rápida que ImageMagick ou GraphicsMagick.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sharp.pixelplumbing.com/"&gt;🔗 Site oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lovell/sharp"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sharp.pixelplumbing.com/install"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Uppy
&lt;/h2&gt;

&lt;p&gt;Fazer upload de arquivos pode ser difícil às vezes em ambiente de desenvolvimento, mas com a Uppy esse processo fica bem mais simples.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uppy.io/"&gt;🔗 Site oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/transloadit/uppy"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uppy.io/docs/"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Winston
&lt;/h2&gt;

&lt;p&gt;Mecanismo de registro projetado para aplicativos de produção. Winston permite que seu log seja salvo em um banco de dados, ou em arquivos locais, permite enviar e-mail em formatos altamente personalizáveis. A meu ver, é uma obrigação para depuração em produção.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;🔗 Site oficial&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/winstonjs/winston"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/winstonjs/winston#usage"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Leaflet
&lt;/h2&gt;

&lt;p&gt;Insira mapas interativos no seu aplicativo que se ajustam no dispositivo mobile e permitem adicionar marcadores em endereços de forma fácil.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://leafletjs.com/"&gt;🔗 Site oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Leaflet/Leaflet"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leafletjs.com/reference.html"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. JsPDF
&lt;/h2&gt;

&lt;p&gt;Gerar PDF's para relatório ou documentos é uma tarefa comum para programadores, usando a biblioteca JsPDF você consegue fazer isso de forma fácil e rápida.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parall.ax/products/jspdf"&gt;🔗 Site oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/parallax/jsPDF"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://raw.githack.com/MrRio/jsPDF/master/docs/index.html"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Node-Html-To-Image
&lt;/h2&gt;

&lt;p&gt;Agora você já se perguntou, como faço para gerar uma imagem do arquivo HTML? Então esta é a biblioteca NodeJS para você.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;🔗 Site oficial&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/frinyvonnick/node-html-to-image"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/frinyvonnick/node-html-to-image#install"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Howler.js
&lt;/h2&gt;

&lt;p&gt;Biblioteca de áudio para a web moderna. Howler.js torna o trabalho com áudio em JavaScript fácil e confiável em todas as plataformas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://howlerjs.com/"&gt;🔗 Site oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/goldfire/howler.js"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/goldfire/howler.js#documentation"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Multer
&lt;/h2&gt;

&lt;p&gt;Lida com dados de formulários e multipartes, encontra uso para upload de arquivos. Multer não processará nenhum formulário que não seja multipartes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;🔗 Site oficial&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/expressjs/multer"&gt;🔀 Repositório no GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/expressjs/multer/blob/master/doc/README-pt-br.md"&gt;📚 Documentação oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Considerações Finais
&lt;/h2&gt;

&lt;p&gt;Você acaba ver 10 indicações minhas de bibliotecas NodeJS para você colocar no seu repertório de estudos. Escolha as que mais gostou ou a que possa te ajudar em algo e estude sua documentação.&lt;/p&gt;

&lt;p&gt;E aí gostou? Gostaria de recomendar alguma? Trouxemos alguma que você não conhecia? Coloque seu comentário para sabemos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Me acompanhe no meu...
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://carlosalves.vercel.app/"&gt;carlosalves.vercel.app&lt;/a&gt;&lt;br&gt;
Gitub: &lt;a href="https://github.com/EuCarlos"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
Dribbble: &lt;a href="https://dribbble.com/eucarlos"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/josecarlos98"&gt;linkedin.com/in/josecarlos98&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Extensões ótimas para VS Code e pouco falado</title>
      <dc:creator>Carlos Alves</dc:creator>
      <pubDate>Thu, 14 Jul 2022 18:13:25 +0000</pubDate>
      <link>https://dev.to/eucarlos/extensoes-otimas-para-vs-code-e-pouco-falado-f45</link>
      <guid>https://dev.to/eucarlos/extensoes-otimas-para-vs-code-e-pouco-falado-f45</guid>
      <description>&lt;p&gt;Olá, pessoas! Me fale a verdade, você está cansando de ver as mesmas extensões em diversos artigos sobre extensões para VS Code, Certo?  Então você tem que ler esse artigo porque é agora o momento de eu apresentar extensões feito para VOCÊ.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kqs28o132ciddqpdkaq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kqs28o132ciddqpdkaq.gif" alt="Menino gritando "&gt;&lt;/a&gt;
"/&amp;gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Auto Import
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://marketplace.visualstudio.com/items?itemName=steoates.autoimport" rel="noopener noreferrer"&gt;Auto Import&lt;/a&gt; é uma ferramenta para arquivos TypeScript(.ts e .tsx) que localiza, analisa e fornece ações de código e autocompletar de código automaticamente para todas as importações disponíveis. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Thunder client
&lt;/h2&gt;

&lt;p&gt;o &lt;a href="https://www.thunderclient.io/" rel="noopener noreferrer"&gt;Thunder Client&lt;/a&gt; oferece uma ferramenta de extensão do Rest API Client leve, fácil de usar, limpa e simples. Permite que você teste rapidamente os endpoints da API da base de código no próprio editor, minimizando a alternância de guias. Deixar-nos realizar testes sem script torna esta uma alternativa muito atraente ao Postman (embora em uma versão simplificada).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2ovqs9225fn7qtuxd4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2ovqs9225fn7qtuxd4q.png" alt="uso da extensão Thunder Client na IDE VSCode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. SQLite Viewer
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://marketplace.visualstudio.com/items?itemName=qwtel.sqlite-viewer" rel="noopener noreferrer"&gt;SQLite View&lt;/a&gt; como o próprio nome já diz é um visualizador para dados para SQLite rápido e fácil.&lt;/p&gt;

&lt;p&gt;Uma alternativa é &lt;a href="https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-database-client2" rel="noopener noreferrer"&gt;Database Client&lt;/a&gt; que é um gerenciador de banco de dados para MySQL/MariaDB, PostgreSQL, SQLite, Redis e ElasticSearch.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Code Time
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://marketplace.visualstudio.com/items?itemName=softwaredotcom.swdc-vscode" rel="noopener noreferrer"&gt;Code Time&lt;/a&gt; apresenta métricas de programação automática e rastreamento de tempo no VS Code. O Code Time mantém você responsável por sua produtividade rastreando seu tempo e pode ajudá-lo a segmentar em qual projeto você está trabalhando mais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnrw4nmwqqtgmjis3l10t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnrw4nmwqqtgmjis3l10t.png" alt="uso da extensão Code Time na IDE VSCode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma ótima alternativa para o Code Time é o &lt;a href="https://wakatime.com/" rel="noopener noreferrer"&gt;WakaTime&lt;/a&gt; que é também uma extensão para métricas sobre sua programação.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Excel Viewer
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://marketplace.visualstudio.com/items?itemName=GrapeCity.gc-excelviewer" rel="noopener noreferrer"&gt;Excel Viewer&lt;/a&gt; facilita o tratamento de dados do Excel em seu editor do VS Code formatando strings longas e separadas por vírgulas em um formato de tabela. Isso pode fazer maravilhas para suas extensões .csv, .tsv e .tab.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16rjpfn7mhzfdgkv4u5f.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16rjpfn7mhzfdgkv4u5f.gif" alt="uso da extensão Excel Viewer na IDE VSCode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. TinyPNG
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://marketplace.visualstudio.com/items?itemName=andi1984.tinypng" rel="noopener noreferrer"&gt;TinyPNG&lt;/a&gt; é uma ferramente usa técnicas inteligentes de compactação com perdas para reduzir o tamanho dos arquivos WEBP, JPEG e PNG. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4kmyjks9r94rkcmc5da.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4kmyjks9r94rkcmc5da.png" alt="uso da extensão TinyPNG na IDE VSCode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Blockman
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://marketplace.visualstudio.com/items?itemName=leodevbro.blockman" rel="noopener noreferrer"&gt;Blockman&lt;/a&gt; destacar o escopo focando mais facilmente no bloco de código atual, permite alterar as cores do bloco e profundidade, alternar o foco e fazer muito mais personalização.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmuva2hjb62n827b4j2e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmuva2hjb62n827b4j2e.png" alt="uso da extensão Blockman na IDE VSCode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Git Graph
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph" rel="noopener noreferrer"&gt;Git Graph&lt;/a&gt; apresenta as ações do seu repositório Git a partir de um gráfico também sendo possível executar facilmente ações Git diretamente no VS Code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmr7astablswqutg98mbv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmr7astablswqutg98mbv.gif" alt="uso da extensão Git Graph na IDE VSCode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Considerações finais
&lt;/h2&gt;

&lt;p&gt;Então apresentei nesta postagem 8 extensões ótimas que geralmente não vejo sendo citado nas postagens envolvendo "Extensões do VS Code", lembrando que esta lista não está ordenado de melhor para pior (nem o inverso). Apenas teste as extensões que você acredita ser relevante para seu workspace.&lt;/p&gt;

&lt;h2&gt;
  
  
  Me acompanhe no meu...
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://carlosalves.vercel.app/" rel="noopener noreferrer"&gt;carlosalves.vercel.app&lt;/a&gt;&lt;br&gt;
Gitub: &lt;a href="https://github.com/EuCarlos" rel="noopener noreferrer"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
Dribbble: &lt;a href="https://dribbble.com/eucarlos" rel="noopener noreferrer"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/josecarlos98" rel="noopener noreferrer"&gt;linkedin.com/in/josecarlos98&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>programming</category>
      <category>workstations</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Corrigir no Docker: Got permission denied issue 🐳</title>
      <dc:creator>Carlos Alves</dc:creator>
      <pubDate>Mon, 06 Jun 2022 15:19:23 +0000</pubDate>
      <link>https://dev.to/eucarlos/corrigir-no-docker-got-permission-denied-issue-5ba</link>
      <guid>https://dev.to/eucarlos/corrigir-no-docker-got-permission-denied-issue-5ba</guid>
      <description>&lt;p&gt;Hoje o artigo será bem curto, o que falaremos hoje é como resolver o seguinte erro:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See docker run --help.


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

&lt;/div&gt;

&lt;p&gt;É provável que você obteve este erro quando tentou executar o comando &lt;code&gt;docker-compose up&lt;/code&gt; é a uma solução bem simples para esse problema, basta digitar &lt;code&gt;sudo&lt;/code&gt; antes de qualquer comando docker. Por exemplo:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo docker ps -a


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

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlhg4wxjf09bqf2q6iyh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlhg4wxjf09bqf2q6iyh.gif" alt="Wow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adicione seu usuário ao grupo do Docker
&lt;/h3&gt;

&lt;p&gt;Entretanto, é chato ficar digitando sudo a todo comando Docker e sabemos que não é recomendável executar nenhum comando com privilégios sudo no ambiente de produção. Então pensando nisso, vamos adicionar o seu usuário ao grupo do Docker com o seguinte comando:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo usermod -aG docker $USER


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

&lt;/div&gt;

&lt;p&gt;Com isso, o seu usuário já está adicionado ao grupo do Docker, então o próximo passo será fazer algumas das opções abaixo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fazer login novamente;&lt;/li&gt;
&lt;li&gt;Reiniciar sua maquina;&lt;/li&gt;
&lt;li&gt;Ou executar o seguinte comando:
```
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;exec su -l $USER&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Se testamos agora o comando `docker ps -a` veremos que vai ser listado no terminal os contêineres disponíveis localmente sem a necessidade de utilizar o sudo.

## Me acompanhe no meu...

Website: [carlosalves.vercel.app](https://carlosalves.vercel.app/)
Gitub: [@EuCarlos](https://github.com/EuCarlos)
Dribbble: [@EuCarlos](https://dribbble.com/eucarlos)
LinkedIn: [linkedin.com/in/josecarlos98](https://www.linkedin.com/in/josecarlos98)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>docker</category>
      <category>ubuntu</category>
      <category>linux</category>
      <category>beginners</category>
    </item>
    <item>
      <title>status 22003 no banco de dados</title>
      <dc:creator>Carlos Alves</dc:creator>
      <pubDate>Sun, 05 Jun 2022 14:10:25 +0000</pubDate>
      <link>https://dev.to/eucarlos/status-22003-no-banco-de-dados-59a2</link>
      <guid>https://dev.to/eucarlos/status-22003-no-banco-de-dados-59a2</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Nesse artigo você vai aprender a como resolver o problema emitindo o status 22003 no banco de dados.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contexto
&lt;/h3&gt;

&lt;p&gt;Em um dia desses eu estava fazendo deploy de uma aplicação com Adonis e Postgres no Heroku, até que recebo as seguintes mensagens de log:&lt;/p&gt;

&lt;h4&gt;
  
  
  Logs do erro
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku[router]: at=banlanco-patrimonial method=PUT path="/banlanco-patrimonial/7" host=&amp;lt;website&amp;gt;.herokuapp.com request_id=&amp;lt;id&amp;gt; fwd=&amp;lt;fwd&amp;gt; dyno=web.1 connect=0ms service=7ms status=500 bytes=1101 protocol=https
app[web.1]: [1650719030687] ERROR (banco-de-dados/22 on &amp;lt;hash&amp;gt;): update "balanco_patrimonial_dres" set "clientes_a_receber" = $1, "updated_at" = $2 where "id" = $3 - numeric field overflow
app[web.1]:     x-request-id: &amp;lt;id&amp;gt;
app[web.1]:     request_id: &amp;lt;id&amp;gt;
app[web.1]:     err: {
app[web.1]:       "type": "DatabaseError",
app[web.1]:       "message": "update \"balanco_patrimonial_dres\" set \"clientes_a_receber\" = $1, \"updated_at\" = $2 where \"id\" = $3 - numeric field overflow",
app[web.1]:       "stack":
app[web.1]:           error: update "balanco_patrimonial_dres" set "clientes_a_receber" = $1, "updated_at" = $2 where "id" = $3 - numeric field overflow
app[web.1]:               at Parser.parseErrorMessage (/app/node_modules/pg-protocol/src/parser.ts:369:69)
app[web.1]:       "length": 164,
app[web.1]:       "name": "error",
app[web.1]:       "severity": "ERROR",
app[web.1]:       "code": "22003",
app[web.1]:       "detail": "A field with precision 8, scale 2 must round to an absolute value less than 10^6.",
app[web.1]:       "file": "numeric.c",
app[web.1]:       "line": "6589",
app[web.1]:       "routine": "apply_typmod",
app[web.1]:       "status": 500
app[web.1]:     }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O que está acontecendo?
&lt;/h2&gt;

&lt;p&gt;Está emitido o &lt;strong&gt;status 22003&lt;/strong&gt; no banco de dados, isso significa que o valor numérico está fora do intervalo. Então pode ser que o valor está muito alto, ou muito baixo do esperado.&lt;/p&gt;

&lt;p&gt;De acordo com &lt;a href="https://docs.informatica.com/data-security-group/data-archive/6-5/data-vault-message-reference/data-definition-language-errors/22-data-exception/22003.html"&gt;Data Vault Message Reference&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;22003&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Data exception - numeric value out of range&lt;/strong&gt;&lt;br&gt;
This message appears when an SQL operation results in a numeric overflow or underflow. That is, an evaluated numeric expression is either too large or too small to be contained in a suitable datatype without loss of precision or scale.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Possível solução:
&lt;/h3&gt;

&lt;p&gt;Uma possível solução para este problema seria a troca o tipo de dados numérico que serão recebidos na requisição da API&lt;br&gt;
Exemplos de valores altos que estão atrapalhando nas requisições:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"estoques": 1502412,
"imobilizados": 1386896,
"fornecedores": 1417072,
"clientes_a_receber": 2091280,
"capital_e_reservas": 1314166,
"receitas_operacionais_brutas": 12226104,
"impostos_incidentes_sobre_vendas": -2420768.59,
"custo_dos_produtos_vendidos": -7101833.06,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;OBS.:&lt;/strong&gt; Regex utilizado para verificar que valores estão altos: &lt;code&gt;\-?[0-9]{7,}&lt;/code&gt; ou &lt;code&gt;\"[a-z]{1,}\"\: \-?[0-9]{7,}&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Decimal
&lt;/h4&gt;

&lt;p&gt;Começando pelo tipo de dado que estou usando, o tipo &lt;strong&gt;decimal&lt;/strong&gt; é a melhor escolha quando se envolve dinheiro e finança por trazer uma grande precisão para evitar erros de arredondamento. Porém, no meu caso está emitindo o erro de valor fora do intervalo numérico pois, o número é muito grande.&lt;/p&gt;

&lt;h4&gt;
  
  
  Float e Double
&lt;/h4&gt;

&lt;p&gt;Então a possível solução é trocar o tipo para &lt;strong&gt;float&lt;/strong&gt; ou &lt;strong&gt;double&lt;/strong&gt;. Caso tenha dúvida da escolha entre esses dois tipos a diferença seria a precisão, a variação e a quantidade de casas decimais que consegue suportar. &lt;br&gt;
Esses tipos são chamados ponto flutuante binários:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;Bits&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Float&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;32 bits&lt;/td&gt;
&lt;td&gt;Tem 24 dígitos de precisão e por isso é chamado de simples precisão&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Double&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;64 bits&lt;/td&gt;
&lt;td&gt;Tem 53 dígitos de precisão e é chamado de dupla precisão&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Conclusão
&lt;/h4&gt;

&lt;p&gt;Então minha escolha/solução foi a troca do tipo de dados &lt;strong&gt;DECIMAL&lt;/strong&gt; pelo o tipo &lt;strong&gt;FLOAT&lt;/strong&gt;, apesar de o &lt;strong&gt;DOUBLE&lt;/strong&gt; ter uma precisão maior e suportar uma quantidade maior de casas decimais no meu caso não seria necessário.&lt;/p&gt;

&lt;h2&gt;
  
  
  Me acompanhe no meu...
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://carlosalves.vercel.app/"&gt;carlosalves.vercel.app&lt;/a&gt;&lt;br&gt;
Gitub: &lt;a href="https://github.com/EuCarlos"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
Dribbble: &lt;a href="https://dribbble.com/eucarlos"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/josecarlos98"&gt;linkedin.com/in/josecarlos98&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Referencias:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.informatica.com/data-security-group/data-archive/6-5/data-vault-message-reference/data-definition-language-errors/22-data-exception/22003.html"&gt;Data Vault Message Reference - 22003&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>sql</category>
      <category>database</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Neutralinojs - Alternativa para o Electron</title>
      <dc:creator>Carlos Alves</dc:creator>
      <pubDate>Mon, 21 Mar 2022 23:57:21 +0000</pubDate>
      <link>https://dev.to/eucarlos/neutralinojs-alternativa-para-o-electron-41g4</link>
      <guid>https://dev.to/eucarlos/neutralinojs-alternativa-para-o-electron-41g4</guid>
      <description>&lt;p&gt;Se você estiver procurando por uma alternativa para o framework Electron, você acabou de acessar o artigo certo. &lt;/p&gt;

&lt;h2&gt;
  
  
  Antes de tudo...
&lt;/h2&gt;

&lt;p&gt;Para quem está perdido, primeiramente vamos responder a pergunta &lt;strong&gt;o que são os frameworks Electron e Neutralino?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Basicamente o que esses frameworks fazem é buildar aplicações multiplataforma (Linux, Windows e Mac OS) criadas com HTML, CSS e Javascript para aplicações desktop. Então onde queremos chegar é que você consegue criar aplicações desktop sem necessariamente saber desenvolver nas linguagens Delphi, Java ou C# que são linguagens mais específicas para criação de aplicações desktop. Ou seja, com os mesmos conhecimentos que você tem para criar um simples website com neutralino ou electron você consegue facilmente criar um programa desktop em pouco tempo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que escolher Neutralinojs?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feoefe5hz3lifow4xoxcz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feoefe5hz3lifow4xoxcz.gif" alt="What"&gt;&lt;/a&gt;&lt;br&gt;
Se você usa VS Code, Microsoft Teams ou Figma Desktop como eu sabe muito bem que essa aplicações são lentas, o fato é que esses softwares são desenvolvendo em electron.&lt;/p&gt;

&lt;p&gt;Electron é incrível, porém é um devorador de memória e processamento. Diferente do Neutralinojs que em comparação tem um desempenho muito bom.&lt;/p&gt;

&lt;p&gt;Clicando neste &lt;a href="https://github.com/neutralinojs/evaluation" rel="noopener noreferrer"&gt;link&lt;/a&gt; você pode ver um comparativo muito bem elaborado (em 2018) do consumo de disco e memoria do Electron e Neutralinojs.&lt;/p&gt;
&lt;h2&gt;
  
  
  Como usar o Neutralinojs
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Abra o terminal
&lt;/h3&gt;

&lt;p&gt;Antes de qualquer coisa precisaremos do terminal, então nossa primeira missão é abri-lo.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Instalando Neutralinojs
&lt;/h3&gt;

&lt;p&gt;Com seu terminal de comando aberto, digite o cole o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm i -g @neutralinojs/neu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O que esse comando vai fazer é instalar globalmente o cliente do Neutralinojs.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Criando Projeto
&lt;/h3&gt;

&lt;p&gt;Neutralinojs instalado, a próxima etapa é criar nosso projeto, com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ neu create &amp;lt;nome do projeto&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No meu caso vou desenvolver um relógio pomodoro, então estou nomeado o projeto de &lt;code&gt;pomodoro&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1yiwcaoe4i8suzqdnsjc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1yiwcaoe4i8suzqdnsjc.png" alt="Printscreen do terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Rodando a aplicação
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd &amp;lt;nome-do-projeto&amp;gt; &amp;amp;&amp;amp; neu run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado deve ser este:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo097jgijk1v2raucgxgd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo097jgijk1v2raucgxgd.png" alt="Resultado"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🚨 &lt;strong&gt;ATENÇÃO USUÁRIOS WINDOWS:&lt;/strong&gt; Se ao rodar programa, caso esteja aparecendo uma tela em branco. Execute o comando seguinte no terminal cmd(como administrador):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.Win32WebViewHost_cw5n1h2txyewy"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚨 &lt;strong&gt;ATENÇÃO USUÁRIOS LINUX:&lt;/strong&gt; Se ao rodar o programa e você estiver com o erro &lt;code&gt;neutralino-linux_x64 was stopped with error code 127&lt;/code&gt; no terminal, basta colar o seguinte comando no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install \
    libgtk-3-dev \
    libwebkit2gtk-4.0-37 \
    libwebkit2gtk-4.0-dev \
    libayatana-appindicator3-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa solução é somente para Ubuntu, mas &lt;a href="https://neutralino.js.org/docs/contributing/framework-developer-guide/" rel="noopener noreferrer"&gt;clicando aqui&lt;/a&gt; é fácil encontrar solução para o fedora.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Primeiros passos
&lt;/h3&gt;

&lt;p&gt;Antes de começar a codar é bom ter uma noção da estrutura de pastas do framework. Se você abrir em seu projeto em um editor de código vai encontrar uma estrutura semelhante a esta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── .tmp
│    └──  auth_info.json
├── bin
│    ├── neutralino-linux_x64
│    ├── neutralino-mac_x64
│    └── neutralino-win_x64.exe
├── resources
│        ├── icons
│        ├── js
│        ├── index.html
│        └── styles.css
├── LICENSE
├── neutralino.log
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  5.1 Editando arquivos HTML, CSS e JavaScript
&lt;/h4&gt;

&lt;p&gt;Olhando na estrutura de basta vemos que temos o arquivo &lt;strong&gt;index.html&lt;/strong&gt; é nele que vamos mexer primeiro. Nele vou adicionar a marcação do programa:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvn5yhftx6lwzuwuqkf3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvn5yhftx6lwzuwuqkf3.png" alt="HTML do Pomodoro"&gt;&lt;/a&gt;&lt;br&gt;
Para acessar o código HTML desse projeto &lt;a href="https://github.com/EuCarlos/neu-to-devto/blob/main/resources/index.html" rel="noopener noreferrer"&gt;clique aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Então agora vamos mexer no &lt;strong&gt;styles.css&lt;/strong&gt; e estilizar nosso relógio pomodoro:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz471w4a60ry69p8092z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz471w4a60ry69p8092z.png" alt="CSS do pomodoro"&gt;&lt;/a&gt;&lt;br&gt;
Para acessar o código CSS desse projeto &lt;a href="https://github.com/EuCarlos/neu-to-devto/blob/main/resources/styles.css" rel="noopener noreferrer"&gt;clique aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Precisamos programar o nosso relógio em **js/main.js, nele programei a função de iniciar, pausar e resetar o tempo. Para acessar o código JavaScript desse projeto &lt;a href="https://github.com/EuCarlos/neu-to-devto/blob/main/resources/js/main.js" rel="noopener noreferrer"&gt;clique aqui&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  5.2 Alterando ícone da aplicação
&lt;/h4&gt;

&lt;p&gt;Vamos agora alterar o ícone, que apesar de não ser nada tão relevante para esse artigo é bem legal de aprender. É só ir em no arquivo &lt;code&gt;neutralino.config.json&lt;/code&gt; e procurar pela chave &lt;code&gt;icon&lt;/code&gt; e colocar o caminho da imagem ao lado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"icon": "/resources/icons/medium.png",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E o resultado é esse:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrwq6vnyxel5e608jnyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrwq6vnyxel5e608jnyh.png" alt="Icon do programa"&gt;&lt;/a&gt;&lt;br&gt;
Todo esse código que criei para este projeto pode ser encontrado no repositório &lt;a href="https://github.com/EuCarlos/neu-to-devto" rel="noopener noreferrer"&gt;@EuCarlos/example-neu-to-devto&lt;/a&gt; no github.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Buildando aplicação
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ neu build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com esse comando vai ser criado um arquivo ZIP contendo 3 programas executáveis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;-win_x64.exe&lt;/strong&gt;: É para ser executado no Windows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-linux_x64&lt;/strong&gt;: É para ser executado no linux.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-mac_x64&lt;/strong&gt;: É para ser executado no Mac OS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Outras alternativas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nwjs.io/" rel="noopener noreferrer"&gt;NW.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tauri.studio/" rel="noopener noreferrer"&gt;Tauri&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.nodegui.org/" rel="noopener noreferrer"&gt;NodeGUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Considerações Finais
&lt;/h2&gt;

&lt;p&gt;Aqui aprendemos como criar uma aplicação desktop multiplataforma usando o framework neutralinojs, html, css e javascript. Se houver engajamento para esse artigo posso trazer mais artigos do uso de essa ferramenta muito legal e pouca conhecida. Posso ensinar como usar os templates para usar React, Vue, Angular.js, typescript no Neutralinojs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Me acompanhe no meu...
&lt;/h2&gt;

&lt;p&gt;Website &lt;a href="https://carlosalves.vercel.app" rel="noopener noreferrer"&gt;carlosalves.vercel.app&lt;/a&gt;&lt;br&gt;
Gitub: &lt;a href="https://github.com/EuCarlos" rel="noopener noreferrer"&gt;@EuCarlos &lt;/a&gt;&lt;br&gt;
Dribbble: &lt;a href="https://dribbble.com/eucarlos" rel="noopener noreferrer"&gt;@EuCarlos&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/josecarlos98" rel="noopener noreferrer"&gt;linkedin.com/in/josecarlos98&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Referencias:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://neutralino.js.org/" rel="noopener noreferrer"&gt;Site oficial&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/neutralinojs/evaluation" rel="noopener noreferrer"&gt;Comparativos Neutralino vs Electron&lt;/a&gt;&lt;br&gt;
&lt;a href="https://neutralino.js.org/docs/contributing/framework-developer-guide/" rel="noopener noreferrer"&gt;Setup and build the framework&lt;/a&gt;&lt;/p&gt;

</description>
      <category>electron</category>
      <category>neutralino</category>
      <category>programming</category>
      <category>builder</category>
    </item>
    <item>
      <title>Como atualizar o Node.js para a ultima versão no Ubuntu 🐧</title>
      <dc:creator>Carlos Alves</dc:creator>
      <pubDate>Wed, 16 Mar 2022 00:36:56 +0000</pubDate>
      <link>https://dev.to/eucarlos/como-atualizar-o-nodejs-para-a-ultima-versao-no-ubuntu-35f3</link>
      <guid>https://dev.to/eucarlos/como-atualizar-o-nodejs-para-a-ultima-versao-no-ubuntu-35f3</guid>
      <description>&lt;p&gt;Olá, pessoas! Por questões de estudantis na última semana migrei de sistema operacional... o que antes eu usava Windows 10 para tudo, hoje uso a distribuição Ubuntu do Linux.&lt;/p&gt;

&lt;p&gt;Com isso, me deparei com diversas mudanças e dores de cabeças em que nunca passei. E uma delas é que instalei node.js via terminal com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install nodejs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Então tá, tudo certo né? Né?!😐 Não, o problema é que foi instalado uma versão muito antiga do node.js no meu caso era a versão 6.11.3, então toda vez que eu iria instalar um pacote mais atual emitia a mensagem abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The engine "node" is incompatible with this module. Expected version "&amp;gt;=12.6". Got "10.19.0"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Então começaremos a saga da resolução desde problema.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Abra o Terminal no Ubuntu
&lt;/h3&gt;

&lt;p&gt;Antes de qualquer coisa precisaremos do terminal, então nossa primeira missão é abri-lo.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Limpar o cache
&lt;/h3&gt;

&lt;p&gt;Para limpar o cache no npm, precisamos executar o comando abaixo em nosso terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo npm cache clean -f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vai solicitar a senha, e então é só colocar e prosseguir.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Instalar globalmente o modulo &lt;em&gt;n&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;o modulo &lt;strong&gt;n&lt;/strong&gt; vai ajudar a facilitar a atualização do node.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo npm install -g n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Escolha versão do node
&lt;/h3&gt;

&lt;p&gt;Para instalar a &lt;strong&gt;última versão&lt;/strong&gt; lançada do node basta usar o comando abaixa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo n latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Porém, a última versão nunca é a recomendada, então a melhor escolha seria a &lt;strong&gt;versão mais recente que está estável&lt;/strong&gt;, para isso é bem simples basta usar o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo n stable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ótimo, agora está perfeito... e se ao invés de querer a &lt;strong&gt;última versão lançada&lt;/strong&gt; ou &lt;strong&gt;versão recente estável&lt;/strong&gt; eu quisesse a uma &lt;strong&gt;versão específica&lt;/strong&gt;? Também é muito simples... suponhamos que queremos a versão &lt;code&gt;8.2.6&lt;/code&gt;. Para isso usaremos o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo n 8.2.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Verificar a versão do Node
&lt;/h3&gt;

&lt;p&gt;Pronto, seu node está atualizado. Agora verifique a versão do node com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Calma, sei que retornou a versão antiga do node. Não há nada de errado, reinicie o terminal e digite o comando de verificar a versão novamente que dessa vez será apresentado versão atualizada.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Então só para concluir, afirmo com total clareza que os simples comandos ensinados nesse artigo foram os que resolveram esse problema e agora posso instalar todos meus pacotes tranquilamente.&lt;/p&gt;

&lt;p&gt;Me acompanhe no &lt;a href="https://github.com/EuCarlos"&gt;GitHub&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/josecarlos98"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://dribbble.com/eucarlos"&gt;Dribbble&lt;/a&gt; e &lt;a href="https://carlosalves.vercel.app/"&gt;Website&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Referencias:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tj/n"&gt;https://github.com/tj/n&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>ubuntu</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
