<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3704563907057270487</atom:id><lastBuildDate>Tue, 14 Apr 2026 03:40:42 +0000</lastBuildDate><category>Artigos variados</category><category>Segurança Digital</category><category>Java</category><category>Rede</category><category>Python</category><category>Windows</category><category>BD</category><category>Banco de dados</category><category>API</category><category>Ferramentas Online</category><category>Notícias</category><category>tecnologia</category><category>Article in English</category><category>Docker</category><category>Linux</category><category>Web</category><category>Eletrônica</category><category>Hardware</category><category>IA</category><category>MacOS</category><category>MikroTik</category><title>Blog do KDS </title><description></description><link>http://www.blogdokdsti.com.br/</link><managingEditor>noreply@blogger.com (Klebes Santos)</managingEditor><generator>Blogger</generator><openSearch:totalResults>87</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-8309214709873352515</guid><pubDate>Sat, 11 Apr 2026 01:21:00 +0000</pubDate><atom:updated>2026-04-14T00:40:42.581-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">tecnologia</category><title>Os 8 Motivos Reais e Como Resolver de Vez</title><description>&lt;!--ARTIGO PRINCIPAL--&gt;
  &lt;article itemscope=&quot;&quot; itemtype=&quot;https://schema.org/Article&quot;&gt;

    &lt;meta content=&quot;Internet Lenta no Celular? Os 8 Motivos Reais e Como Resolver (Android e iPhone)&quot; itemprop=&quot;headline&quot;&gt;&lt;/meta&gt;
    &lt;meta content=&quot;2026-04-10&quot; itemprop=&quot;datePublished&quot;&gt;&lt;/meta&gt;
    &lt;meta content=&quot;KDS&quot; itemprop=&quot;author&quot;&gt;&lt;/meta&gt;

    &lt;!--INTRODUÇÃO--&gt;
    &lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Descubra os 8 motivos que deixam a internet lenta no celular e veja como resolver no Android e iPhone — passo a passo completo.&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhGMuKDFuUM3XZNf3biB4mBhkt-YNvYcIg59gU29HbRHvijYjo-_MPj-Kt3doSJgfx7zeBeLa3jJ7zvnXBvOGAQemABVgJ2x_WExZs7R52JXGEU2tOJ5UKoFg0GyaULVw9wBeZ-Xmv0-_a37k30_1oWMYWqOqX8YyY8OCAzk3dyaBzEMPjDMA95LtyxwCw&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhGMuKDFuUM3XZNf3biB4mBhkt-YNvYcIg59gU29HbRHvijYjo-_MPj-Kt3doSJgfx7zeBeLa3jJ7zvnXBvOGAQemABVgJ2x_WExZs7R52JXGEU2tOJ5UKoFg0GyaULVw9wBeZ-Xmv0-_a37k30_1oWMYWqOqX8YyY8OCAzk3dyaBzEMPjDMA95LtyxwCw=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/article&gt;&lt;article itemscope=&quot;&quot; itemtype=&quot;https://schema.org/Article&quot;&gt;&lt;br /&gt;Você está assistindo um vídeo, fazendo uma videochamada ou simplesmente tentando abrir o WhatsApp — e a internet trava. Frustrante, não é?&lt;p&gt;&lt;/p&gt;
    &lt;p&gt;A boa notícia é que, na maioria dos casos, o problema tem solução e &lt;strong&gt;não é culpa só da operadora&lt;/strong&gt;. Neste guia completo, você vai entender os verdadeiros motivos que deixam a internet lenta no celular — seja Android ou iPhone — e aprender como resolver cada um deles, passo a passo.&lt;/p&gt;&lt;div class=&quot;box box-blue&quot; role=&quot;note&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;📊&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;Você sabia?&lt;/strong&gt;
        92 milhões de brasileiros acessam a internet exclusivamente pelo celular, segundo a pesquisa TIC Domicílios. Quando a internet do celular falha, tudo para.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;hr class=&quot;divider&quot; /&gt;

    &lt;!--DIAGNÓSTICO--&gt;
    &lt;h2 id=&quot;diagnostico&quot;&gt;🔍 Antes de tudo: descubra se o problema é real&lt;/h2&gt;
    &lt;p&gt;Antes de sair mexendo em configurações, faça um &lt;strong&gt;teste de velocidade&lt;/strong&gt; para saber exatamente o que está acontecendo com sua conexão.&lt;/p&gt;

    &lt;h3&gt;Como testar a velocidade do seu celular:&lt;/h3&gt;
    &lt;ol class=&quot;list-numbered&quot;&gt;
      &lt;li&gt;Abra a loja de apps — Google Play (Android) ou App Store (iPhone)&lt;/li&gt;
      &lt;li&gt;Baixe o app &lt;strong&gt;Speedtest by Ookla&lt;/strong&gt; — gratuito e confiável&lt;/li&gt;
      &lt;li&gt;Abra o app e toque em &lt;strong&gt;Iniciar&lt;/strong&gt;&lt;/li&gt;
      &lt;li&gt;Anote os valores de Download, Upload e Ping&lt;/li&gt;
      &lt;li&gt;Repita o teste no Wi-Fi &lt;strong&gt;e&lt;/strong&gt; nos dados móveis separadamente&lt;/li&gt;
    &lt;/ol&gt;

    &lt;div class=&quot;box box-blue&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;📌&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;Como interpretar o resultado:&lt;/strong&gt;
        Download abaixo de 5 Mbps = lento para vídeos. Abaixo de 1 Mbps = quase inutilizável. Ping acima de 100ms = atraso perceptível em chamadas e jogos.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;hr class=&quot;divider&quot; /&gt;

    &lt;!--8 MOTIVOS--&gt;
    &lt;h2 id=&quot;causas&quot;&gt;⚡ Os 8 motivos mais comuns de internet lenta no celular&lt;/h2&gt;

    &lt;!--1--&gt;
    &lt;h3 id=&quot;apps-segundo-plano&quot;&gt;1. Apps rodando em segundo plano&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhujD7EtHXZ79S8QvUS691M-15FX2_7MCZG3isdKvSS0SwI-njri-IESWLn_Sh2olq8gSQcGexCe3slc77Md7CsMT_qE-ckwPyh-kZnDprS4xaEq33TCfA1zXB85doTbOFBBGoc9HXz4xdpXTybQ43REdmB-gl-WGC0q2XKMsAbLcCpN-dEHWLg0Oe1TPg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhujD7EtHXZ79S8QvUS691M-15FX2_7MCZG3isdKvSS0SwI-njri-IESWLn_Sh2olq8gSQcGexCe3slc77Md7CsMT_qE-ckwPyh-kZnDprS4xaEq33TCfA1zXB85doTbOFBBGoc9HXz4xdpXTybQ43REdmB-gl-WGC0q2XKMsAbLcCpN-dEHWLg0Oe1TPg=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Este é o vilão número 1 e a maioria das pessoas não sabe. Aplicativos como Instagram, YouTube, e-mail e até antivírus ficam rodando em segundo plano, &lt;strong&gt;consumindo dados e memória&lt;/strong&gt; mesmo quando você não os usa.&lt;/div&gt;

    &lt;div class=&quot;platform-grid&quot;&gt;
      &lt;div class=&quot;platform-card android&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🤖 Android&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Configurações&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Aplicativos&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Selecione o app problemático&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Uso de dados&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Desative &lt;strong&gt;Dados em segundo plano&lt;/strong&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
      &lt;div class=&quot;platform-card iphone&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🍎 iPhone&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Ajustes&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Geral&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Atualização em 2° Plano&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Desative para apps não essenciais&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!--2--&gt;
    &lt;h3 id=&quot;cache&quot;&gt;2. Cache acumulado no navegador e nos apps&lt;/h3&gt;
    &lt;p&gt;O cache são arquivos temporários que agilizam o carregamento. Mas quando acumulam demais, o efeito é o oposto: tudo fica mais lento e o celular consome mais memória.&lt;/p&gt;

    &lt;div class=&quot;platform-grid&quot;&gt;
      &lt;div class=&quot;platform-card android&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🤖 Android&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Configurações&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Aplicativos&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Selecione o Chrome (ou outro)&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Armazenamento&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Limpar Cache&lt;/strong&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
      &lt;div class=&quot;platform-card iphone&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🍎 iPhone&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Ajustes&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Safari&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Limpar Histórico e Dados&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Para outros apps, reinstale o aplicativo&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!--3--&gt;
    &lt;h3 id=&quot;distancia-roteador&quot;&gt;3. Distância e obstáculos do roteador&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEizT8W8kAhjCa7P2tPys68-74471yT6bdxGqvzEFCv4fbuXfTkPOZ0ZJqKNKAvRXraYzKyJbH2ugXPIaxyLVAEnBqXbJ1he-jVqZDpVllE71ixhFqhIOWZm6pCP3BLmFuzRZcbzrpJranfSdCPuDt31Rfn_CU_z7QyxqCA5MjvhsDz0QcA6hnKxXKM5tlk&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEizT8W8kAhjCa7P2tPys68-74471yT6bdxGqvzEFCv4fbuXfTkPOZ0ZJqKNKAvRXraYzKyJbH2ugXPIaxyLVAEnBqXbJ1he-jVqZDpVllE71ixhFqhIOWZm6pCP3BLmFuzRZcbzrpJranfSdCPuDt31Rfn_CU_z7QyxqCA5MjvhsDz0QcA6hnKxXKM5tlk=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Paredes grossas, espelhos, aquários, micro-ondas e objetos de metal bloqueiam ou enfraquecem o sinal Wi-Fi de forma significativa.&lt;/div&gt;

    &lt;ul class=&quot;list-styled&quot;&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;📍&lt;/span&gt; Posicione o roteador no &lt;strong&gt;centro da casa&lt;/strong&gt; e em local elevado&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🚫&lt;/span&gt; Evite deixá-lo dentro de armários ou atrás da TV&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;📡&lt;/span&gt; Mantenha distância de micro-ondas e telefones sem fio&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;📱&lt;/span&gt; Capas de celular de metal ou tecido grosso também podem atrapalhar o sinal&lt;/li&gt;
    &lt;/ul&gt;

    &lt;!--4--&gt;
    &lt;h3 id=&quot;muitos-dispositivos&quot;&gt;4. Muitos dispositivos na mesma rede&lt;/h3&gt;
    &lt;p&gt;Cada aparelho conectado ao Wi-Fi divide a banda disponível. Smart TV em 4K, notebook, tablet, celular e câmera de segurança juntos consomem muita largura de banda.&lt;/p&gt;

    &lt;div class=&quot;box box-amber&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;💡&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;Solução:&lt;/strong&gt;
        Desconecte da rede os dispositivos que não estão sendo usados. Acesse o painel do roteador e verifique quem está conectado — você pode encontrar dispositivos desconhecidos consumindo sua banda.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!--5--&gt;
    &lt;h3 id=&quot;modo-economia&quot;&gt;5. Celular em modo economia de energia&lt;/h3&gt;
    &lt;p&gt;Quando ativado, o modo economia de energia &lt;strong&gt;reduz o desempenho do processador e limita a atividade de rede&lt;/strong&gt; para poupar bateria — isso inclui a velocidade da internet.&lt;/p&gt;

    &lt;div class=&quot;platform-grid&quot;&gt;
      &lt;div class=&quot;platform-card android&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🤖 Android&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra o &lt;strong&gt;Painel Rápido&lt;/strong&gt; (deslize de cima)&lt;/li&gt;
          &lt;li&gt;Desative &lt;strong&gt;Economia de Energia&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Ou: Configurações &amp;gt; Bateria &amp;gt; desative&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
      &lt;div class=&quot;platform-card iphone&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🍎 iPhone&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Ajustes&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Bateria&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Desative &lt;strong&gt;Modo de Baixo Consumo&lt;/strong&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!--6--&gt;
    &lt;h3 id=&quot;frequencia-wifi&quot;&gt;6. Frequência Wi-Fi errada (2,4 GHz vs 5 GHz)&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgL0Phftv56E_ZeiKZR4zEkhaJfkCUX6qaVYPWpwNAnQECLUwgN7u6YVTgtOL9WFdeW8FJqyWKmiTwM4yPKqGMcjWHexE7exYDHh9vQaVBZP8sl9bfvLSwc4KGLIoaIzM4JLl88Fx1M_7f0Bd9Ixp4Ta1RMeN89fJM1jKHpgrGO6PO73staKSgByATt8PA&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgL0Phftv56E_ZeiKZR4zEkhaJfkCUX6qaVYPWpwNAnQECLUwgN7u6YVTgtOL9WFdeW8FJqyWKmiTwM4yPKqGMcjWHexE7exYDHh9vQaVBZP8sl9bfvLSwc4KGLIoaIzM4JLl88Fx1M_7f0Bd9Ixp4Ta1RMeN89fJM1jKHpgrGO6PO73staKSgByATt8PA=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Roteadores modernos oferecem duas frequências. A &lt;strong&gt;2,4 GHz&lt;/strong&gt; tem maior alcance mas menor velocidade. A &lt;strong&gt;5 GHz&lt;/strong&gt; é muito mais rápida, mas com menor alcance. Celulares mais antigos só suportam 2,4 GHz.&lt;/div&gt;

    &lt;div class=&quot;box box-green&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;✅&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;Dica:&lt;/strong&gt;
        Se seu celular suporta 5 GHz e você está perto do roteador, conecte-se sempre à rede de 5 GHz. A velocidade pode dobrar ou triplicar comparado à rede de 2,4 GHz.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!--7--&gt;
    &lt;h3 id=&quot;dns-lento&quot;&gt;7. DNS lento do provedor&lt;/h3&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEib8kUmVGQT6YS8vwwa-pCZACS3eGYAdBHO0c51Ayp1bjSGEpzFbD4jJgX-Yv1IfgVZo1zpyHApQcqzc6JER4SzgPE901kXGcaM7jw3EfXty6_p8B82_B0eOTz76QFADDwk4fd0TosgiaGc-_JvfhNBL6Q4fExb_5CYWTDPYLoq4aPIcurNHpzUMDZXgG0&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEib8kUmVGQT6YS8vwwa-pCZACS3eGYAdBHO0c51Ayp1bjSGEpzFbD4jJgX-Yv1IfgVZo1zpyHApQcqzc6JER4SzgPE901kXGcaM7jw3EfXty6_p8B82_B0eOTz76QFADDwk4fd0TosgiaGc-_JvfhNBL6Q4fExb_5CYWTDPYLoq4aPIcurNHpzUMDZXgG0=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;O DNS é como a &lt;em&gt;&quot;agenda telefônica&quot;&lt;/em&gt; da internet — converte endereços de sites em IPs. Se o DNS da sua operadora for lento, cada site demora mais para abrir, mesmo com boa velocidade de download.&lt;/div&gt;

    &lt;div class=&quot;box box-blue&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;🔧&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;DNS recomendados (gratuitos e rápidos):&lt;/strong&gt;
        Google: &lt;code&gt;8.8.8.8&lt;/code&gt; e &lt;code&gt;8.8.4.4&lt;/code&gt; &amp;nbsp;|&amp;nbsp; Cloudflare: &lt;code&gt;1.1.1.1&lt;/code&gt; e &lt;code&gt;1.0.0.1&lt;/code&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!--8--&gt;
    &lt;h3 id=&quot;sistema-desatualizado&quot;&gt;8. Sistema operacional ou app desatualizado&lt;/h3&gt;
    &lt;p&gt;Versões antigas do Android e iOS podem ter bugs que afetam diretamente a performance de rede. &lt;strong&gt;Atualizações corrigem falhas e melhoram a estabilidade da conexão.&lt;/strong&gt;&lt;/p&gt;

    &lt;div class=&quot;platform-grid&quot;&gt;
      &lt;div class=&quot;platform-card android&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🤖 Android&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Configurações&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Sobre o telefone&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Atualização do sistema&lt;/strong&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
      &lt;div class=&quot;platform-card iphone&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🍎 iPhone&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Ajustes&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Geral&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Atualização de Software&lt;/strong&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;hr class=&quot;divider&quot; /&gt;

    &lt;!--SOLUÇÕES RÁPIDAS--&gt;
    &lt;h2 id=&quot;solucoes-rapidas&quot;&gt;⚡ Soluções rápidas: tente primeiro&lt;/h2&gt;
    &lt;p&gt;Antes de entrar em configurações avançadas, tente estas ações simples — resolvem a maioria dos problemas em segundos:&lt;/p&gt;

    &lt;ul class=&quot;list-styled&quot;&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;✈️&lt;/span&gt;&lt;span&gt;Ative e desative o &lt;strong&gt;Modo Avião&lt;/strong&gt; por 10 segundos — força o celular a redefinir a conexão&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🔄&lt;/span&gt;&lt;span&gt;&lt;strong&gt;Reinicie o celular&lt;/strong&gt; — resolve travamentos de memória e conexão&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;📡&lt;/span&gt;&lt;span&gt;&lt;strong&gt;Reinicie o roteador&lt;/strong&gt; — desligue da tomada por 10 segundos e religue&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;❌&lt;/span&gt;&lt;span&gt;&lt;strong&gt;Feche todos os aplicativos&lt;/strong&gt; abertos em segundo plano&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;📶&lt;/span&gt;&lt;span&gt;Desative e ative o &lt;strong&gt;Wi-Fi ou dados móveis&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🌐&lt;/span&gt;&lt;span&gt;Tente um &lt;strong&gt;navegador diferente&lt;/strong&gt; — às vezes o problema é só no app&lt;/span&gt;&lt;/li&gt;
    &lt;/ul&gt;

    &lt;div class=&quot;box box-red&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;⚠️&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;Atenção:&lt;/strong&gt;
        Se o problema persistir após todas as tentativas, pode ser que você tenha atingido o limite de dados do plano — a operadora reduz a velocidade automaticamente após esse limite.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;hr class=&quot;divider&quot; /&gt;

    &lt;!--TABELA COMPARATIVA--&gt;
    &lt;h2 id=&quot;comparativo&quot;&gt;📊 Android vs iPhone: onde encontrar cada configuração&lt;/h2&gt;

    &lt;div aria-label=&quot;Comparativo Android vs iPhone&quot; class=&quot;table-wrap&quot; role=&quot;region&quot;&gt;
      &lt;table&gt;
        &lt;thead&gt;
          &lt;tr&gt;
            &lt;th scope=&quot;col&quot;&gt;Recurso&lt;/th&gt;
            &lt;th scope=&quot;col&quot;&gt;Android&lt;/th&gt;
            &lt;th scope=&quot;col&quot;&gt;iPhone (iOS)&lt;/th&gt;
          &lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td&gt;Apps em 2° plano&lt;/td&gt;
            &lt;td&gt;Configurações &amp;gt; Aplicativos&lt;/td&gt;
            &lt;td&gt;Ajustes &amp;gt; Geral &amp;gt; Atualiz. 2° plano&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Limpar cache&lt;/td&gt;
            &lt;td&gt;Configurações &amp;gt; Apps &amp;gt; Armazenamento&lt;/td&gt;
            &lt;td&gt;Reinstalar o aplicativo&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Modo economia&lt;/td&gt;
            &lt;td&gt;Painel rápido ou Configurações &amp;gt; Bateria&lt;/td&gt;
            &lt;td&gt;Ajustes &amp;gt; Bateria &amp;gt; Baixo Consumo&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Trocar DNS&lt;/td&gt;
            &lt;td&gt;Config. &amp;gt; Wi-Fi &amp;gt; Avançado &amp;gt; IP Estático&lt;/td&gt;
            &lt;td&gt;Ajustes &amp;gt; Wi-Fi &amp;gt; (i) &amp;gt; DNS Manual&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Resetar rede&lt;/td&gt;
            &lt;td&gt;Config. &amp;gt; Gerenc. Geral &amp;gt; Redefinir&lt;/td&gt;
            &lt;td&gt;Ajustes &amp;gt; Geral &amp;gt; Transferir &amp;gt; Redefinir&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Ver uso por app&lt;/td&gt;
            &lt;td&gt;Configurações &amp;gt; Rede &amp;gt; Uso de dados&lt;/td&gt;
            &lt;td&gt;Ajustes &amp;gt; Celular &amp;gt; scroll até apps&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Frequência 5 GHz&lt;/td&gt;
            &lt;td&gt;Maioria dos modelos atuais&lt;/td&gt;
            &lt;td&gt;Todos os modelos recentes&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Modo avião (reset)&lt;/td&gt;
            &lt;td&gt;Painel rápido (deslize de cima)&lt;/td&gt;
            &lt;td&gt;Centro de Controle (deslize canto)&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;

    &lt;hr class=&quot;divider&quot; /&gt;

    &lt;!--DNS PASSO A PASSO--&gt;
    &lt;h2 id=&quot;como-trocar-dns&quot;&gt;🔧 Como trocar o DNS: passo a passo completo&lt;/h2&gt;
    &lt;p&gt;Trocar o DNS é uma das melhorias mais impactantes e invisíveis — sites abrem mais rápido sem nenhum custo.&lt;/p&gt;

    &lt;div class=&quot;platform-grid&quot;&gt;
      &lt;div class=&quot;platform-card android&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🤖 Android — DNS Privado&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Configurações&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Conexões &amp;gt; Mais configurações&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;DNS Privado&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Selecione &lt;strong&gt;Nome do host do DNS privado&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Digite: &lt;code&gt;one.one.one.one&lt;/code&gt; (Cloudflare)&lt;/li&gt;
          &lt;li&gt;Ou: &lt;code&gt;dns.google&lt;/code&gt; (Google)&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Salvar&lt;/strong&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
      &lt;div class=&quot;platform-card iphone&quot;&gt;
        &lt;div class=&quot;plabel&quot;&gt;🍎 iPhone — DNS Manual&lt;/div&gt;
        &lt;ol&gt;
          &lt;li&gt;Abra &lt;strong&gt;Ajustes &amp;gt; Wi-Fi&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Toque no ícone &lt;strong&gt;(i)&lt;/strong&gt; da rede&lt;/li&gt;
          &lt;li&gt;Role até &lt;strong&gt;Configure o DNS&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Selecione &lt;strong&gt;Manual&lt;/strong&gt;&lt;/li&gt;
          &lt;li&gt;Remova os servidores existentes&lt;/li&gt;
          &lt;li&gt;Adicione &lt;code&gt;1.1.1.1&lt;/code&gt; e &lt;code&gt;1.0.0.1&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;Toque em &lt;strong&gt;Salvar&lt;/strong&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;box box-green&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;💡&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;Qual DNS usar?&lt;/strong&gt;
        O Cloudflare (&lt;code&gt;1.1.1.1&lt;/code&gt;) é geralmente o mais rápido do mundo em testes de latência. O Google (&lt;code&gt;8.8.8.8&lt;/code&gt;) é mais conhecido e igualmente confiável. Ambos são gratuitos e seguros.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;hr class=&quot;divider&quot; /&gt;

    &lt;!--QUANDO É A OPERADORA--&gt;
    &lt;h2 id=&quot;problema-operadora&quot;&gt;📞 Quando o problema é a operadora&lt;/h2&gt;
    &lt;p&gt;Se você testou todas as soluções acima e a internet continua lenta, o problema pode estar fora do seu controle:&lt;/p&gt;

    &lt;ul class=&quot;list-styled&quot;&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🕗&lt;/span&gt;&lt;span&gt;Congestionamento da rede em &lt;strong&gt;horários de pico&lt;/strong&gt; (geralmente entre 20h e 23h)&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;📶&lt;/span&gt;&lt;span&gt;&lt;strong&gt;Cobertura fraca&lt;/strong&gt; na sua região&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;📊&lt;/span&gt;&lt;span&gt;&lt;strong&gt;Plano de dados esgotado&lt;/strong&gt; — a operadora reduz a velocidade automaticamente&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🔧&lt;/span&gt;&lt;span&gt;Falha ou manutenção na infraestrutura da operadora&lt;/span&gt;&lt;/li&gt;
    &lt;/ul&gt;

    &lt;div class=&quot;box box-amber&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;📱&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;O que fazer:&lt;/strong&gt;
        Acesse o site ou app da sua operadora para verificar o consumo de dados, alertas de rede e chamados de manutenção na sua região.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;hr class=&quot;divider&quot; /&gt;

    &lt;!--CHECKLIST FINAL--&gt;
    &lt;h2 id=&quot;checklist&quot;&gt;✅ Checklist final — salve este guia!&lt;/h2&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjP9UHXUPnUzl9aQZorF1cGeEnIA9sLM0l7cs5iWZHISWc7IjDY4Vbqsafdwz5bl3ny2TFLLsYIhV-kmDjN9aOwA5_6NMqkt3QnJlrUd5ApEYGDCXyODhPaXuDpj-HhvGM01axTo2g8XV78bubC16QOiFagNXVY_6nse4ci9bqYi4FD66E9_7JWGIExsCg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjP9UHXUPnUzl9aQZorF1cGeEnIA9sLM0l7cs5iWZHISWc7IjDY4Vbqsafdwz5bl3ny2TFLLsYIhV-kmDjN9aOwA5_6NMqkt3QnJlrUd5ApEYGDCXyODhPaXuDpj-HhvGM01axTo2g8XV78bubC16QOiFagNXVY_6nse4ci9bqYi4FD66E9_7JWGIExsCg=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Use este checklist sempre que a internet do celular travar:&lt;/div&gt;

    &lt;ul class=&quot;checklist&quot;&gt;
      &lt;li&gt;Teste a velocidade com o Speedtest (Google Play / App Store)&lt;/li&gt;
      &lt;li&gt;Ative e desative o Modo Avião por 10 segundos&lt;/li&gt;
      &lt;li&gt;Reinicie o celular completamente&lt;/li&gt;
      &lt;li&gt;Reinicie o roteador (desligue 10 segundos)&lt;/li&gt;
      &lt;li&gt;Feche todos os apps em segundo plano&lt;/li&gt;
      &lt;li&gt;Limpe o cache do navegador&lt;/li&gt;
      &lt;li&gt;Conecte-se à frequência 5 GHz se disponível&lt;/li&gt;
      &lt;li&gt;Troque o DNS para 8.8.8.8 ou 1.1.1.1&lt;/li&gt;
      &lt;li&gt;Verifique o limite de dados do seu plano&lt;/li&gt;
      &lt;li&gt;Verifique atualizações pendentes do sistema&lt;/li&gt;
    &lt;/ul&gt;

    &lt;div class=&quot;box box-blue&quot;&gt;
      &lt;span class=&quot;box-icon&quot;&gt;💡&lt;/span&gt;
      &lt;div class=&quot;box-body&quot;&gt;
        &lt;strong&gt;Dica final:&lt;/strong&gt;
        Salve este artigo nos favoritos! Internet lenta é um problema que sempre volta. Da próxima vez que acontecer, você já sabe exatamente o que fazer — sem precisar chamar o suporte técnico.
      &lt;/div&gt;
    &lt;/div&gt;

  &lt;/article&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;style&gt;
    :root {
      --blue-50:  #EFF6FF;
      --blue-100: #DBEAFE;
      --blue-600: #2563EB;
      --blue-700: #1D4ED8;
      --blue-800: #1E40AF;
      --blue-900: #1E3A8A;
      --green-50: #F0FDF4;
      --green-600:#16A34A;
      --amber-50: #FFFBEB;
      --amber-600:#D97706;
      --red-50:   #FEF2F2;
      --red-600:  #DC2626;
      --gray-50:  #F8FAFC;
      --gray-100: #F1F5F9;
      --gray-200: #E2E8F0;
      --gray-400: #94A3B8;
      --gray-500: #64748B;
      --gray-700: #334155;
      --gray-900: #0F172A;
      --font-main: &#39;Plus Jakarta Sans&#39;, sans-serif;
      --font-mono: &#39;JetBrains Mono&#39;, monospace;
      --radius: 10px;
      --shadow: 0 1px 3px rgba(0,0,0,.08), 0 4px 16px rgba(0,0,0,.06);
    }

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    body {
      font-family: var(--font-main);
      background: var(--gray-50);
      color: var(--gray-900);
      line-height: 1.75;
      font-size: 16px;
    }

    /* ── LAYOUT ── */
    .page-wrap { max-width: 780px; margin: 0 auto; padding: 0 20px 80px; }

    /* ── HERO ── */
    .hero {
      background: linear-gradient(135deg, #1E3A8A 0%, #1D4ED8 60%, #2563EB 100%);
      border-radius: 0 0 24px 24px;
      padding: 56px 32px 48px;
      text-align: center;
      margin-bottom: 40px;
      position: relative;
      overflow: hidden;
    }
    .hero::before {
      content: &#39;&#39;;
      position: absolute;
      inset: 0;
      background: radial-gradient(ellipse at 70% 20%, rgba(255,255,255,.07) 0%, transparent 60%);
    }
    .hero-label {
      display: inline-block;
      background: rgba(255,255,255,.15);
      color: #BFDBFE;
      font-size: 12px;
      font-weight: 600;
      letter-spacing: .08em;
      text-transform: uppercase;
      padding: 4px 14px;
      border-radius: 99px;
      margin-bottom: 20px;
    }
    .hero h1 {
      font-size: clamp(1.6rem, 5vw, 2.4rem);
      font-weight: 700;
      color: #fff;
      line-height: 1.25;
      margin-bottom: 16px;
    }
    .hero p {
      font-size: 1rem;
      color: #BFDBFE;
      max-width: 520px;
      margin: 0 auto 28px;
    }
    .hero-meta {
      display: flex;
      justify-content: center;
      gap: 20px;
      flex-wrap: wrap;
      font-size: 13px;
      color: #93C5FD;
    }
    .hero-meta span { display: flex; align-items: center; gap: 5px; }

    /* ── BREADCRUMB ── */
    nav.breadcrumb {
      font-size: 13px;
      color: var(--gray-400);
      margin-bottom: 32px;
      display: flex;
      gap: 6px;
      flex-wrap: wrap;
      align-items: center;
    }
    nav.breadcrumb a { color: var(--blue-600); text-decoration: none; }
    nav.breadcrumb a:hover { text-decoration: underline; }
    nav.breadcrumb span { color: var(--gray-400); }

    /* ── ARTICLE BODY ── */
    article { background: #fff; border-radius: 16px; box-shadow: var(--shadow); padding: 40px 40px; margin-bottom: 24px; }
    @media (max-width: 600px) { article { padding: 24px 20px; } }

    /* ── TIPOGRAFIA ── */
    article h2 {
      font-size: 1.35rem;
      font-weight: 700;
      color: var(--blue-800);
      margin: 48px 0 16px;
      padding-bottom: 10px;
      border-bottom: 2px solid var(--blue-100);
      display: flex;
      align-items: center;
      gap: 10px;
    }
    article h2:first-child { margin-top: 0; }

    article h3 {
      font-size: 1.05rem;
      font-weight: 600;
      color: var(--blue-700);
      margin: 28px 0 10px;
    }

    article h4 {
      font-size: .95rem;
      font-weight: 600;
      color: var(--gray-700);
      margin: 20px 0 8px;
    }

    article p { color: var(--gray-700); margin-bottom: 16px; }
    article p:last-child { margin-bottom: 0; }

    article strong { color: var(--gray-900); font-weight: 600; }

    article code {
      font-family: var(--font-mono);
      font-size: .82em;
      background: var(--gray-100);
      color: var(--blue-800);
      padding: 2px 7px;
      border-radius: 5px;
      border: 1px solid var(--gray-200);
    }

    /* ── LISTAS ── */
    .list-styled { list-style: none; padding: 0; margin: 12px 0 20px; }
    .list-styled li {
      display: flex;
      gap: 10px;
      align-items: flex-start;
      padding: 8px 0;
      border-bottom: 1px solid var(--gray-100);
      font-size: .95rem;
      color: var(--gray-700);
    }
    .list-styled li:last-child { border-bottom: none; }
    .list-styled li .icon { flex-shrink: 0; margin-top: 2px; }

    .list-numbered { list-style: none; padding: 0; margin: 12px 0 20px; counter-reset: steps; }
    .list-numbered li {
      counter-increment: steps;
      display: flex;
      gap: 14px;
      align-items: flex-start;
      padding: 10px 0;
      border-bottom: 1px solid var(--gray-100);
      font-size: .95rem;
      color: var(--gray-700);
    }
    .list-numbered li:last-child { border-bottom: none; }
    .list-numbered li::before {
      content: counter(steps);
      flex-shrink: 0;
      width: 26px; height: 26px;
      border-radius: 50%;
      background: var(--blue-600);
      color: #fff;
      font-size: 12px;
      font-weight: 700;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-top: 1px;
    }

    /* ── INFOBOXES ── */
    .box {
      border-radius: var(--radius);
      padding: 16px 20px;
      margin: 20px 0;
      display: flex;
      gap: 12px;
      align-items: flex-start;
      font-size: .92rem;
    }
    .box-icon { font-size: 1.2rem; flex-shrink: 0; margin-top: 1px; }
    .box-body { flex: 1; line-height: 1.65; }
    .box-body strong { display: block; margin-bottom: 4px; font-size: .9rem; }

    .box-blue   { background: var(--blue-50);  border-left: 4px solid var(--blue-600);  color: #1e3a8a; }
    .box-green  { background: var(--green-50); border-left: 4px solid var(--green-600); color: #14532d; }
    .box-amber  { background: var(--amber-50); border-left: 4px solid var(--amber-600); color: #78350f; }
    .box-red    { background: var(--red-50);   border-left: 4px solid var(--red-600);   color: #7f1d1d; }

    /* ── PLATAFORMAS ANDROID / IPHONE ── */
    .platform-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 16px 0 24px; }
    @media (max-width: 520px) { .platform-grid { grid-template-columns: 1fr; } }

    .platform-card {
      border-radius: var(--radius);
      padding: 16px;
      border: 1.5px solid var(--gray-200);
    }
    .platform-card.android { border-color: #4CAF50; background: #F1F8F1; }
    .platform-card.iphone  { border-color: #999;    background: #F5F5F7; }

    .platform-card .plabel {
      font-size: 11px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .08em;
      margin-bottom: 8px;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .platform-card.android .plabel { color: #2E7D32; }
    .platform-card.iphone  .plabel { color: #555;    }

    .platform-card ol {
      padding-left: 18px;
      font-size: .88rem;
      color: var(--gray-700);
      line-height: 1.7;
    }

    /* ── TABELA ── */
    .table-wrap { overflow-x: auto; margin: 20px 0; border-radius: var(--radius); border: 1px solid var(--gray-200); }
    table { width: 100%; border-collapse: collapse; font-size: 13.5px; min-width: 520px; }
    thead tr { background: var(--blue-800); }
    th { padding: 12px 16px; text-align: left; font-weight: 600; color: #fff; font-size: 12px; letter-spacing: .04em; text-transform: uppercase; }
    td { padding: 11px 16px; border-bottom: 1px solid var(--gray-100); color: var(--gray-700); vertical-align: top; }
    tr:last-child td { border-bottom: none; }
    tr:nth-child(even) td { background: var(--gray-50); }
    tr:hover td { background: var(--blue-50); }
    td:first-child { font-weight: 600; color: var(--gray-900); }

    /* ── CHECKLIST ── */
    .checklist { list-style: none; padding: 0; margin: 12px 0; }
    .checklist li {
      display: flex;
      gap: 10px;
      align-items: center;
      padding: 9px 12px;
      border-radius: 8px;
      font-size: .92rem;
      color: var(--gray-700);
      transition: background .15s;
    }
    .checklist li:hover { background: var(--blue-50); }
    .checklist li::before {
      content: &#39;&#39;;
      width: 18px; height: 18px;
      border: 2px solid var(--blue-600);
      border-radius: 4px;
      flex-shrink: 0;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    /* ── DIVIDER ── */
    .divider { border: none; border-top: 2px solid var(--blue-100); margin: 40px 0; }

    /* ── RODAPÉ DO ARTIGO ── */
    .article-footer {
      text-align: center;
      padding-top: 32px;
      border-top: 1px solid var(--gray-200);
      margin-top: 40px;
      font-size: 13px;
      color: var(--gray-400);
    }
    .article-footer a { color: var(--blue-600); text-decoration: none; }

    /* ── TAGS ── */
    .tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
    .tag {
      background: var(--blue-50);
      color: var(--blue-700);
      border: 1px solid var(--blue-100);
      font-size: 12px;
      font-weight: 600;
      padding: 4px 12px;
      border-radius: 99px;
    }
  &lt;/style&gt;</description><link>http://www.blogdokdsti.com.br/2026/04/internet-lenta-celular-android-iphone.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhGMuKDFuUM3XZNf3biB4mBhkt-YNvYcIg59gU29HbRHvijYjo-_MPj-Kt3doSJgfx7zeBeLa3jJ7zvnXBvOGAQemABVgJ2x_WExZs7R52JXGEU2tOJ5UKoFg0GyaULVw9wBeZ-Xmv0-_a37k30_1oWMYWqOqX8YyY8OCAzk3dyaBzEMPjDMA95LtyxwCw=s72-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-773248824713627953</guid><pubDate>Thu, 02 Apr 2026 04:14:00 +0000</pubDate><atom:updated>2026-04-02T01:53:01.879-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>Seu Roteador Pode Ser Invadido por um App do Celular? Veja o Que Aconteceu Comigo</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_kzpdHPKiT7_lhpAQsKMUrHWcGb94R__TKIKZfjbOkoDfQT1pxBhUtNYwHPIpCLCa29pxF39WgrJRqOc-W2cddzT6Sa4HUAz14jvzEhtDkXrNUHpMZgppHedO_ug3BVyXaNLYiWHlvvV8skVjdQiQf7nm4haR9qaLBJe2QaIAx9ZdAbKozx4N1M3Tt-Q/s540/app-jogo-malicioso-play-store-invadiu-roteador-wifi%20.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Seu Roteador Pode Ser Invadido por um App do Celular? Veja o Que Aconteceu Comigo&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_kzpdHPKiT7_lhpAQsKMUrHWcGb94R__TKIKZfjbOkoDfQT1pxBhUtNYwHPIpCLCa29pxF39WgrJRqOc-W2cddzT6Sa4HUAz14jvzEhtDkXrNUHpMZgppHedO_ug3BVyXaNLYiWHlvvV8skVjdQiQf7nm4haR9qaLBJe2QaIAx9ZdAbKozx4N1M3Tt-Q/s16000/app-jogo-malicioso-play-store-invadiu-roteador-wifi%20.jpg&quot; title=&quot;Ilustração cartoon de um app de jogo escondendo um cavalo de troia que ataca o roteador Wi-Fi de uma casa&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Muitas vezes, acreditamos que o perigo mora nos cantos obscuros da internet — em sites suspeitos ou downloads piratas. No entanto, aprendi da maneira mais difícil que a ameaça pode estar bem diante dos nossos olhos, disfarçada de entretenimento inofensivo dentro da própria &lt;strong&gt;Google Play Store&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;br /&gt;Recentemente, passei por uma situação com meus familiares que serviu de alerta real sobre &lt;strong&gt;segurança digital em redes domésticas&lt;/strong&gt;. Tudo começou quando uma das crianças instalou um jogo simples de quebra-cabeça — daqueles que parecem inofensivos e ocupam pouco espaço no celular. O que ninguém esperava é que aquele código aparentemente lúdico carregasse um passageiro extremamente mal-intencionado.&lt;/p&gt;
&lt;hr class=&quot;border-border-200 border-t-0.5 my-3 mx-1.5&quot; /&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;🔵 O Que é a &quot;Carga Útil Postergada&quot;? O Novo Cavalo de Troia&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKzwObSrt0HLPDpHCuCd0kyBK-jVB3NmMxK_vdaz_X0d85qVBjCyIsHj8Hf0pUXSbjyJvu2SKHMbiFX7cjv719J0232j3sjNbWBZM20UhmZBeTnMRMP5eDsVTXs_PqpnGSrth4sGTus-Qy0yCmj5pIYXQKK75R3kRfGduptgyEleJsKYy9ZjEA55LDHD0/s540/jogo-infectado-android-spyware-ilustracao.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img alt=&quot;Criança usando app infectado com spyware no Android sem saber&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKzwObSrt0HLPDpHCuCd0kyBK-jVB3NmMxK_vdaz_X0d85qVBjCyIsHj8Hf0pUXSbjyJvu2SKHMbiFX7cjv719J0232j3sjNbWBZM20UhmZBeTnMRMP5eDsVTXs_PqpnGSrth4sGTus-Qy0yCmj5pIYXQKK75R3kRfGduptgyEleJsKYy9ZjEA55LDHD0/s16000/jogo-infectado-android-spyware-ilustracao.jpg&quot; title=&quot;Cartoon de criança jogando no tablet enquanto app malicioso baixa código espião em segundo plano&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Embora o Google utilize o &lt;strong&gt;Play Protect&lt;/strong&gt; para escanear aplicativos, cibercriminosos têm se tornado mestres em burlar essa proteção por meio do que chamamos de &lt;strong&gt;Carga Útil Postergada&lt;/strong&gt; (&lt;em&gt;Delayed Payload&lt;/em&gt;, em inglês).&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;O funcionamento é simples e assustador:&lt;/p&gt;
&lt;ol class=&quot;[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3&quot;&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;O app é enviado para a Play Store &lt;strong&gt;completamente limpo&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;Passa normalmente por todas as verificações de segurança do Google&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;Após alguns dias instalado no dispositivo, ele &lt;strong&gt;baixa silenciosamente uma atualização&lt;/strong&gt; de um servidor externo&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;Essa atualização contém o código malicioso — o spyware&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;É exatamente por isso que muitos usuários não associam o problema ao aplicativo. O celular estava &quot;limpo&quot; quando o app foi instalado.&lt;/p&gt;
&lt;hr class=&quot;border-border-200 border-t-0.5 my-3 mx-1.5&quot; /&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;🔵 Como o App Atacou o Roteador&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjxA5CYhJfdY9H6qk-rkNuWaIBOGFvMETxgGS5xYyx8BZA_QPlBHc3yciM7pNeC5lJgATJRqOtjeEA1UM8w7HSNVCpfT8supzFammNp0ZLyX9oKEQy91do9zNO6yvNu0X4r_uwrXj1QhogwmYCMROcB5ckLqg7yrhCTGzhC49f2W0XCoOmoRpsnsRUfV-4&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Roteador Wi-Fi doméstico sofrendo ataque de força bruta por app malicioso&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjxA5CYhJfdY9H6qk-rkNuWaIBOGFvMETxgGS5xYyx8BZA_QPlBHc3yciM7pNeC5lJgATJRqOtjeEA1UM8w7HSNVCpfT8supzFammNp0ZLyX9oKEQy91do9zNO6yvNu0X4r_uwrXj1QhogwmYCMROcB5ckLqg7yrhCTGzhC49f2W0XCoOmoRpsnsRUfV-4=s16000&quot; title=&quot;Ilustração cartoon de roteador Wi-Fi sendo invadido por personagens hackers representando um ataque de força bruta&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;No nosso caso, o transtorno foi imediato e confuso. De repente, a &lt;strong&gt;rede Wi-Fi ficou completamente inacessível&lt;/strong&gt;: dispositivos desconectavam, a senha parecia não funcionar mais e ninguém conseguia navegar.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;O que aconteceu nos bastidores foi uma &lt;strong&gt;invasão técnica em etapas&lt;/strong&gt;:&lt;/p&gt;
&lt;ol class=&quot;[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3&quot;&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;O app, já com o código malicioso ativo, realizou uma &lt;strong&gt;varredura da rede local&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;Identificou o &lt;strong&gt;endereço IP do roteador&lt;/strong&gt; automaticamente&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;Executou um &lt;strong&gt;ataque de força bruta&lt;/strong&gt;, testando senhas padrão de fábrica&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;Conseguiu acessar o &lt;strong&gt;painel administrativo do roteador&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words pl-2&quot;&gt;Alterou as configurações de acesso, &lt;strong&gt;nos bloqueando da nossa própria rede&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Foi necessário acionar o suporte técnico do provedor de internet. Somente após uma análise detalhada e um &lt;strong&gt;reset físico do hardware&lt;/strong&gt; é que os técnicos conseguiram identificar o ponto de entrada e restabelecer o serviço.&lt;/p&gt;
&lt;hr class=&quot;border-border-200 border-t-0.5 my-3 mx-1.5&quot; /&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;🔵 Como Proteger Seu Roteador Agora&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEivkn8wQfzYsDHUrzGM5rdWD5cs0lfO23OPLoIvsGq2mZDaT77KdF1LuqMhNCXCZdoo6Aa9tuU48pGIWNLquI_m2e2BXbdxr2Uyxg6lTj8O6M11dXu0_0YD7knHDSdmvk62xfHA5m3ow9MqMGTczs8sL8BBJepK8LuZLiL0rp1y4xy4OWloUCypMTe6rbQ&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Como proteger seu roteador Wi-Fi contra apps maliciosos no Android&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEivkn8wQfzYsDHUrzGM5rdWD5cs0lfO23OPLoIvsGq2mZDaT77KdF1LuqMhNCXCZdoo6Aa9tuU48pGIWNLquI_m2e2BXbdxr2Uyxg6lTj8O6M11dXu0_0YD7knHDSdmvk62xfHA5m3ow9MqMGTczs8sL8BBJepK8LuZLiL0rp1y4xy4OWloUCypMTe6rbQ=s16000&quot; title=&quot;Cartoon de roteador Wi-Fi com escudo e cadeado representando proteção contra ataques de apps maliciosos&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Esse episódio mostrou que segurança digital exige &lt;strong&gt;camadas de proteção&lt;/strong&gt;. Veja o que passamos a adotar rigorosamente — e que você deve fazer hoje:&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;✔️ 1. Troque a senha de administrador do roteador&lt;/strong&gt;
Nunca deixe a senha padrão &lt;code class=&quot;bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]&quot;&gt;admin&lt;/code&gt; ou aquela que vem impressa na etiqueta do equipamento. É literalmente a primeira combinação que qualquer ataque automatizado testa.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;✔️ 2. Fique de olho nas permissões dos apps&lt;/strong&gt;
Se um jogo simples de quebra-cabeça solicita permissão para &lt;em&gt;&quot;gerenciar dispositivos na rede local&quot;&lt;/em&gt; ou &lt;em&gt;&quot;acessar conexões de rede&quot;&lt;/em&gt;, desconfie imediatamente. Jogo não precisa disso.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;✔️ 3. Leia as avaliações mais recentes antes de instalar&lt;/strong&gt;
Usuários lesados costumam relatar lentidão, quedas de rede ou comportamentos estranhos nos comentários &lt;strong&gt;antes&lt;/strong&gt; de o app ser banido pela Google. Filtre por avaliações recentes de 1 estrela.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;✔️ 4. Desative o WPS do roteador&lt;/strong&gt;
O protocolo WPS facilita conexões rápidas, mas é uma porta aberta para ataques automatizados. A maioria dos roteadores permite desativá-lo pelo painel administrativo.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;✔️ 5. Mantenha o firmware do roteador atualizado&lt;/strong&gt;
Fabricantes lançam atualizações que corrigem vulnerabilidades conhecidas. Acesse o painel do seu roteador periodicamente e verifique se há atualizações disponíveis.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;✔️ 6. Crie uma rede separada para dispositivos das crianças&lt;/strong&gt;
A maioria dos roteadores modernos permite criar uma &lt;strong&gt;rede Wi-Fi de convidados&lt;/strong&gt;. Use-a para os dispositivos das crianças — assim, mesmo que um app malicioso atue, ele fica isolado da rede principal.&lt;/p&gt;
&lt;hr class=&quot;border-border-200 border-t-0.5 my-3 mx-1.5&quot; /&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;🔵 A Play Store é Segura?&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;A Play Store é, sem dúvida, mais segura que baixar APKs de sites aleatórios. Mas &lt;strong&gt;não é infalível&lt;/strong&gt; — e esse episódio prova isso.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;O Google remove milhares de apps maliciosos por mês, mas o modelo de Carga Útil Postergada dificulta a detecção prévia. A vigilância precisa ser constante, especialmente com &lt;strong&gt;dispositivos usados por crianças&lt;/strong&gt;, que são o alvo preferido desses &quot;cavalos de Troia coloridos&quot;.&lt;/p&gt;
&lt;hr class=&quot;border-border-200 border-t-0.5 my-3 mx-1.5&quot; /&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;strong&gt;✅ Conclusão&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Segurança digital não é paranoia — é prevenção. Um jogo de quebra-cabeça quase derrubou toda a nossa rede doméstica. Hoje, com as camadas de proteção certas, dormimos mais tranquilos.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Se este artigo foi útil, compartilhe com alguém que ainda usa a senha padrão do roteador. Pode ser o aviso que falta.&amp;nbsp;&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2026/04/app-virus-play-store-invadiu-roteador.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_kzpdHPKiT7_lhpAQsKMUrHWcGb94R__TKIKZfjbOkoDfQT1pxBhUtNYwHPIpCLCa29pxF39WgrJRqOc-W2cddzT6Sa4HUAz14jvzEhtDkXrNUHpMZgppHedO_ug3BVyXaNLYiWHlvvV8skVjdQiQf7nm4haR9qaLBJe2QaIAx9ZdAbKozx4N1M3Tt-Q/s72-c/app-jogo-malicioso-play-store-invadiu-roteador-wifi%20.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-1031556609108167176</guid><pubDate>Wed, 11 Mar 2026 00:50:00 +0000</pubDate><atom:updated>2026-03-10T21:50:11.057-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Rede</category><title>💡 Li-Fi: A Internet que Viaja pela Luz</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 4.0pt; text-align: center;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgkdQZo_oDiIDqNgIrda_-0xCvsm9a4I8YeVdkbr1nUN63iRbanAnpx-B3rSeDlDidGgPidXJ5qIXpppJ4L5Cl8C4msEkK371djsp4PKqS9s4GsXt74fHssZwAT7z05hUSVejO9lZgFLCl9WP-Q6Rl3-d3G4Krwlq1-gUz9UopSnpt1HVHLMg_w6bRCcmk&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgkdQZo_oDiIDqNgIrda_-0xCvsm9a4I8YeVdkbr1nUN63iRbanAnpx-B3rSeDlDidGgPidXJ5qIXpppJ4L5Cl8C4msEkK371djsp4PKqS9s4GsXt74fHssZwAT7z05hUSVejO9lZgFLCl9WP-Q6Rl3-d3G4Krwlq1-gUz9UopSnpt1HVHLMg_w6bRCcmk=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 4.0pt; text-align: center;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #64748b; font-size: 12.0pt;&quot;&gt;Descubra a tecnologia que pode
substituir o Wi-Fi usando lâmpadas LED&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 16.0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #94a3b8; font-size: 10.0pt;&quot;&gt;Blog do KDS • Tecnologia&lt;/span&gt;&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Você já se perguntou se a internet poderia
ser transmitida pela própria luz da sua sala? A resposta é sim — e isso não é
ficção científica. A tecnologia se chama Li-Fi, e ela pode mudar completamente
a forma como nos conectamos à internet nos próximos anos.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Neste artigo, você vai entender como
funciona, quais as vantagens e limitações, e se um dia ela vai substituir o
Wi-Fi da sua casa.&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;🔵 O que é o Li-Fi?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Li-Fi é a abreviação de Light Fidelity — em
português, &quot;Fidelidade de Luz&quot;. É uma tecnologia de comunicação sem
fio que usa luz LED ou infravermelho para transmitir dados em alta velocidade,
ao invés das ondas de rádio usadas pelo Wi-Fi.&lt;/p&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; margin-left: 6.5pt; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0cm .5pt 0cm .5pt; width: 752px;&quot;&gt;
 &lt;tbody&gt;&lt;tr style=&quot;mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;&quot;&gt;
  &lt;td style=&quot;background: #EFF6FF; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 451.3pt;&quot; valign=&quot;top&quot; width=&quot;752&quot;&gt;
  &lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 2.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 2.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;📌 Em resumo: &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #1e293b;&quot;&gt;Em vez de um roteador emitindo ondas de rádio, uma
  lâmpada LED transmite dados piscando milhões de vezes por segundo — de forma
  totalmente invisível ao olho humano.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-top: 8.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;A tecnologia foi desenvolvida pelo físico
alemão &lt;b&gt;Harald Haas&lt;/b&gt;, professor da Universidade de Edimburgo, que pesquisa
o tema desde o início dos anos 2000. Ela ganhou destaque em 2011, durante uma
palestra TED que viralizou no mundo da tecnologia.&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;🔵 Como funciona na
prática?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;O funcionamento do Li-Fi é fascinante e simples
de entender:&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;1️⃣ A
lâmpada LED pisca (mas você não vê)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;A lâmpada LED recebe dados da internet via
cabo — da mesma forma que seu roteador recebe via fibra óptica. Ela então
&quot;pisca&quot; em velocidades altíssimas, codificando as informações em
pulsos de luz imperceptíveis ao olho humano.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;2️⃣ Um
sensor capta os pulsos&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;O seu dispositivo (celular, notebook, TV)
precisa ter um fotodetector — um sensor de luz capaz de captar essas variações.
Ele converte os pulsos luminosos de volta em dados digitais (0s e 1s).&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;3️⃣ A
conexão é estabelecida&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Com emissão e recepção funcionando, a conexão
está ativa. O processo é bidirecional: o dispositivo também envia dados de
volta para a lâmpada usando um LED infravermelho próprio.&lt;/p&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; margin-left: 6.5pt; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0cm .5pt 0cm .5pt; width: 752px;&quot;&gt;
 &lt;tbody&gt;&lt;tr style=&quot;mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;&quot;&gt;
  &lt;td style=&quot;background: #EFF6FF; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 451.3pt;&quot; valign=&quot;top&quot; width=&quot;752&quot;&gt;
  &lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 2.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 2.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;💡 Curiosidade: &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #1e293b;&quot;&gt;A luz pisca até 10 bilhões de vezes por segundo. Para
  efeito de comparação, a luz da sua casa pisca apenas 60 vezes por segundo — e
  isso já é rápido demais para o olho humano perceber.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-top: 8.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;🔵 Qual a velocidade do
Li-Fi?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Este é o ponto mais impressionante da
tecnologia. Veja a comparação:&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Wi-Fi 6 (atual): velocidade máxima de até 9,6 Gbps&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Li-Fi em laboratório: velocidade comprovada de até 224
Gbps&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Li-Fi comercial atual: entre 1 Gbps e 10 Gbps&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Em termos práticos: &lt;b&gt;um filme de 1,5 GB
poderia ser baixado em milésimos de segundo&lt;/b&gt; com Li-Fi na velocidade máxima
de laboratório. Mesmo nas velocidades comerciais atuais, seria muito mais
rápido que qualquer Wi-Fi disponível hoje.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;A faixa de frequência do Li-Fi chega a
200.000 GHz, enquanto o máximo do Wi-Fi é de apenas 5 GHz — uma diferença de
40.000 vezes.&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;✅ Vantagens do Li-Fi&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;🚀
Velocidade muito superior&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Como vimos, o Li-Fi é potencialmente centenas
de vezes mais rápido que o Wi-Fi. Isso abre portas para aplicações que hoje
seriam inviáveis sem fio.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;🔒
Segurança elevada&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Como a luz não atravessa paredes, o sinal
Li-Fi fica confinado ao ambiente iluminado. Isso significa que ninguém de fora
do cômodo consegue interceptar sua conexão — algo impossível de garantir com o
Wi-Fi convencional.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;📡
Sem interferência&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;O Li-Fi não sofre interferência de outros
dispositivos eletrônicos que operam em radiofrequência, como micro-ondas,
Bluetooth e outros roteadores. Em ambientes com muitos dispositivos, isso é uma
grande vantagem.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;🌱
Sustentável e econômico&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Aproveita a iluminação já existente no
ambiente. Qualquer luminária LED pode se tornar um ponto de internet, sem
necessidade de roteadores adicionais. O consumo de energia é significativamente
menor que o Wi-Fi.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;🏥
Funciona onde o Wi-Fi não pode&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Em hospitais, aviões, indústrias com equipamentos
sensíveis — locais onde ondas de rádio causam interferência ou são proibidas —
o Li-Fi funciona sem nenhum problema.&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;⚠️ Limitações e desafios&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;🚧
Não atravessa paredes&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;A mesma característica que torna o Li-Fi mais
seguro também é sua principal limitação: cada cômodo precisa de sua própria
lâmpada Li-Fi. Em uma casa com vários ambientes, o custo de instalação aumenta.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;📲
Dispositivos ainda não são compatíveis&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Atualmente, smartphones, notebooks e TVs não
possuem o fotodetector necessário nativamente. Existem pequenos adaptadores USB
que permitem a conexão, mas ainda são produtos de nicho.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;☀️ Luz
ambiente pode interferir&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Fontes de luz externas intensas, como luz solar
direta, podem dificultar a recepção do sinal. Isso limita o uso em ambientes
muito iluminados externamente.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;📏
Alcance limitado&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;O alcance atual é de aproximadamente 10
metros a partir da fonte de luz. Para ambientes maiores, seria necessário mais
de um emissor.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 5.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1d4ed8; font-size: 12.0pt;&quot;&gt;💰
Custo ainda alto&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Lâmpadas com suporte a Li-Fi, como as da
Philips (PowerBalance gen2 e LuxSpace), ainda têm custo elevado comparado às
lâmpadas LED comuns.&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;📊 Li-Fi vs Wi-Fi:
Comparativo completo&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; margin-left: 6.5pt; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0cm .5pt 0cm .5pt; width: 752px;&quot;&gt;
 &lt;tbody&gt;&lt;tr style=&quot;mso-yfti-firstrow: yes; mso-yfti-irow: 0;&quot;&gt;
  &lt;td style=&quot;background: #1A56A4; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: white; font-size: 10.0pt;&quot;&gt;Critério&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #1A56A4; border-left: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: white; font-size: 10.0pt;&quot;&gt;Li-Fi&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #1A56A4; border-left: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: white; font-size: 10.0pt;&quot;&gt;Wi-Fi&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 1;&quot;&gt;
  &lt;td style=&quot;background: white; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Velocidade máx.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Até 224 Gbps&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Até 9,6 Gbps (Wi-Fi 6)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 2;&quot;&gt;
  &lt;td style=&quot;background: #EFF6FF; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Meio de transmissão&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Luz LED/Infravermelho&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Ondas de rádio&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 3;&quot;&gt;
  &lt;td style=&quot;background: white; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Atravessa paredes?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Não&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Sim&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 4;&quot;&gt;
  &lt;td style=&quot;background: #EFF6FF; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Segurança&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Muito alta&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Média&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 5;&quot;&gt;
  &lt;td style=&quot;background: white; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Alcance&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Até 10 metros&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Até 100+ metros&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 6;&quot;&gt;
  &lt;td style=&quot;background: #EFF6FF; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Interferência&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Nenhuma&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Alta em áreas densas&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 7;&quot;&gt;
  &lt;td style=&quot;background: white; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Disponível no mercado?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Limitado / Industrial&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: white; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Sim, amplamente&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&quot;mso-yfti-irow: 8; mso-yfti-lastrow: yes;&quot;&gt;
  &lt;td style=&quot;background: #EFF6FF; border-top: none; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Custo atual&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Alto&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style=&quot;background: #EFF6FF; border-bottom: solid #CCCCCC 1.0pt; border-left: none; border-right: solid #CCCCCC 1.0pt; border-top: none; mso-border-alt: solid #CCCCCC .25pt; mso-border-left-alt: solid #CCCCCC .25pt; mso-border-top-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 150.4pt;&quot; valign=&quot;top&quot; width=&quot;251&quot;&gt;
  &lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #1e293b; font-size: 10.0pt;&quot;&gt;Acessível&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;🔵 Onde o Li-Fi faz mais
sentido hoje?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Embora ainda não chegou ao mercado
residencial comum, o Li-Fi já tem aplicações reais em:&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Hospitais e clínicas — onde ondas de rádio podem
interferir em equipamentos médicos&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Aviões — para conexão estável durante voos sem
interferir nos instrumentos&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Ambientes industriais — com equipamentos sensíveis a
radiofrequência&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Data centers — para comunicação ultrarrápida entre
servidores&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Salas de reunião corporativas — onde segurança de dados
é crítica&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Museus e galerias — com pontos informativos em cada
luminária&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;📅 Qual o status atual
do Li-Fi?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Em julho de 2023, o IEEE aprovou o padrão &lt;b&gt;802.11bb&lt;/b&gt;
— o primeiro padrão global para comunicações baseadas em luz. Esse é um marco
histórico: significa que a tecnologia agora tem uma base oficial e padronizada
para desenvolvimento e interoperabilidade com o Wi-Fi.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;A Philips já comercializa lâmpadas com suporte
Li-Fi. A startup pureLiFi desenvolve adaptadores e componentes para smartphones
e notebooks. O mercado de Li-Fi foi estimado em USD 1,72 bilhão em 2024, com
crescimento acelerado previsto.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;A expectativa dos especialistas é que Li-Fi e
Wi-Fi coexistam nos próximos anos, cada um sendo usado onde faz mais sentido —
e não necessariamente um substituindo o outro.&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;🔵 Relação com a fibra
óptica&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Uma curiosidade importante: tanto a fibra
óptica quanto o Li-Fi usam luz para transmitir dados. Mas há uma diferença
fundamental.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Fibra óptica: a luz viaja dentro de um cabo de vidro ou
plástico — confinada fisicamente&lt;/p&gt;

&lt;p class=&quot;MsoListParagraph&quot; style=&quot;line-height: 141%; margin-bottom: 3.0pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 3.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;•&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Li-Fi: a luz viaja pelo ar, de forma sem fio — como
ondas de rádio, mas usando luz visível&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Ou seja, o Li-Fi é como &quot;liberar a luz
da fibra óptica para o ambiente&quot;. A fibra óptica traz a internet até o
modem, e o Li-Fi distribui essa conexão pelo cômodo via luz — sem fio, sem
cabo, sem roteador convencional.&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;Heading1&quot; style=&quot;margin-bottom: 8.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 16.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;✅ Conclusão&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;O Li-Fi é uma das tecnologias mais
promissoras para o futuro da conectividade. Com velocidades até 100 vezes
maiores que o Wi-Fi, segurança superior e zero interferências, ela tem
potencial de revolucionar como nos conectamos.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 6.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 4.0pt;&quot;&gt;Por enquanto, a tecnologia ainda está se
consolidando no mercado — os dispositivos precisam de adaptação e a infraestrutura
está sendo construída. Mas com a padronização pelo IEEE em 2023 e o crescimento
acelerado do mercado, é questão de tempo para vermos lâmpadas Li-Fi nas
residências.&lt;/p&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; margin-left: 6.5pt; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0cm .5pt 0cm .5pt; width: 752px;&quot;&gt;
 &lt;tbody&gt;&lt;tr style=&quot;mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;&quot;&gt;
  &lt;td style=&quot;background: #EFF6FF; border: solid #CCCCCC 1.0pt; mso-border-alt: solid #CCCCCC .25pt; padding: 5.0pt 7.0pt 5.0pt 7.0pt; width: 451.3pt;&quot; valign=&quot;top&quot; width=&quot;752&quot;&gt;
  &lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 2.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 2.0pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a56a4;&quot;&gt;💡 Resumindo: &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #1e293b;&quot;&gt;Se você tem fibra óptica em casa hoje, no futuro
  próximo sua lâmpada pode ser o &quot;roteador&quot; — e sua TV, celular e
  notebook vão se conectar pela luz que já ilumina sua sala.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-top: 10.0pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;div style=&quot;border-bottom: solid #DBEAFE 1.0pt; border: none; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-element: para-border-div; padding: 0cm 0cm 1.0pt 0cm;&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 10.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 10.0pt; mso-border-bottom-alt: solid #DBEAFE .5pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-top: 10.0pt; text-align: center;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #94a3b8; font-size: 9.0pt;&quot;&gt;Blog do KDS | blogdokdsti.com.br&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-top: 3.0pt; text-align: center;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #cbd5e1; font-size: 8.0pt;&quot;&gt;✝ Isaías 40:5 — &quot;A glória do Senhor
se manifestará, e toda a humanidade a verá.&quot;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2026/03/lifi-internet-pela-luz.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgkdQZo_oDiIDqNgIrda_-0xCvsm9a4I8YeVdkbr1nUN63iRbanAnpx-B3rSeDlDidGgPidXJ5qIXpppJ4L5Cl8C4msEkK371djsp4PKqS9s4GsXt74fHssZwAT7z05hUSVejO9lZgFLCl9WP-Q6Rl3-d3G4Krwlq1-gUz9UopSnpt1HVHLMg_w6bRCcmk=s72-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-3019814110192224207</guid><pubDate>Mon, 09 Feb 2026 01:32:00 +0000</pubDate><atom:updated>2026-02-08T22:32:08.411-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><category domain="http://www.blogger.com/atom/ns#">tecnologia</category><title>📱➡️📺 Como Espelhar a Tela do iPhone na TV (Guia Fácil e Atualizado)</title><description>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgoEICpC8A4WZiGYIQU6JNYXSEzQH40x5iPC6nLTo0KcvOqnHmGJoex5MWMf5IsXKLkGfHXOlMWlSD8FO11SxevLSXXuQ5TE-rJMBjCHOu58zq7z9AdWICOFNMbnx59mtNUOzMgj00EovUwyIjuayuX9YQKebwO342GG_wAdyVVrYOTBmgKPhv9k_bEnvk&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Como Espelhar a Tela do iPhone na TV Guia Fácil e Atualizado&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgoEICpC8A4WZiGYIQU6JNYXSEzQH40x5iPC6nLTo0KcvOqnHmGJoex5MWMf5IsXKLkGfHXOlMWlSD8FO11SxevLSXXuQ5TE-rJMBjCHOu58zq7z9AdWICOFNMbnx59mtNUOzMgj00EovUwyIjuayuX9YQKebwO342GG_wAdyVVrYOTBmgKPhv9k_bEnvk=s16000&quot; title=&quot;Como Espelhar a Tela do iPhone na TV Guia Fácil e Atualizado&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Espelhar a tela do iPhone na TV é uma solução prática para assistir vídeos, ver fotos, fazer apresentações ou até jogar em uma tela maior. A boa notícia é que &lt;strong data-end=&quot;474&quot; data-start=&quot;427&quot;&gt;existem várias formas simples de fazer isso&lt;/strong&gt;, com ou sem cabo, dependendo do modelo da sua TV.&lt;/p&gt;
&lt;p data-end=&quot;603&quot; data-start=&quot;526&quot;&gt;Neste guia, você vai aprender &lt;strong data-end=&quot;587&quot; data-start=&quot;556&quot;&gt;todas as maneiras possíveis&lt;/strong&gt;, passo a passo.&lt;/p&gt;
&lt;hr data-end=&quot;608&quot; data-start=&quot;605&quot; /&gt;
&lt;h2 data-end=&quot;669&quot; data-start=&quot;610&quot;&gt;🔹 Opção 1: Espelhar iPhone na TV com AirPlay (Sem Cabo)&lt;/h2&gt;
&lt;p data-end=&quot;751&quot; data-start=&quot;671&quot;&gt;Essa é a forma &lt;strong data-end=&quot;716&quot; data-start=&quot;686&quot;&gt;mais simples e recomendada&lt;/strong&gt;, desde que sua TV seja compatível.&lt;/p&gt;
&lt;h3 data-end=&quot;769&quot; data-start=&quot;753&quot;&gt;✅ Requisitos&lt;/h3&gt;
&lt;ul data-end=&quot;933&quot; data-start=&quot;770&quot;&gt;
&lt;li data-end=&quot;799&quot; data-start=&quot;770&quot;&gt;
&lt;p data-end=&quot;799&quot; data-start=&quot;772&quot;&gt;iPhone com iOS atualizado&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;885&quot; data-start=&quot;800&quot;&gt;
&lt;p data-end=&quot;885&quot; data-start=&quot;802&quot;&gt;Apple TV &lt;strong data-end=&quot;817&quot; data-start=&quot;811&quot;&gt;ou&lt;/strong&gt; Smart TV compatível com AirPlay (Samsung, LG, Sony mais recentes)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;933&quot; data-start=&quot;886&quot;&gt;
&lt;p data-end=&quot;933&quot; data-start=&quot;888&quot;&gt;iPhone e TV conectados &lt;strong data-end=&quot;933&quot; data-start=&quot;911&quot;&gt;à mesma rede Wi-Fi&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;955&quot; data-start=&quot;935&quot;&gt;📌 Passo a passo&lt;/h3&gt;
&lt;ol data-end=&quot;1181&quot; data-start=&quot;956&quot;&gt;
&lt;li data-end=&quot;1044&quot; data-start=&quot;956&quot;&gt;
&lt;p data-end=&quot;1044&quot; data-start=&quot;959&quot;&gt;Deslize o dedo &lt;strong data-end=&quot;996&quot; data-start=&quot;974&quot;&gt;de baixo para cima&lt;/strong&gt; (ou de cima para baixo nos modelos sem botão)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1083&quot; data-start=&quot;1045&quot;&gt;
&lt;p data-end=&quot;1083&quot; data-start=&quot;1048&quot;&gt;Toque em &lt;strong data-end=&quot;1081&quot; data-start=&quot;1057&quot;&gt;Espelhamento de Tela&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1121&quot; data-start=&quot;1084&quot;&gt;
&lt;p data-end=&quot;1121&quot; data-start=&quot;1087&quot;&gt;Selecione sua &lt;strong data-end=&quot;1119&quot; data-start=&quot;1101&quot;&gt;TV ou Apple TV&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1181&quot; data-start=&quot;1122&quot;&gt;
&lt;p data-end=&quot;1181&quot; data-start=&quot;1125&quot;&gt;Pronto! A tela do iPhone aparecerá automaticamente na TV&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1264&quot; data-start=&quot;1183&quot;&gt;💡 &lt;strong data-end=&quot;1195&quot; data-start=&quot;1186&quot;&gt;Dica:&lt;/strong&gt; se pedir um código, ele aparecerá na TV — basta confirmar no iPhone.&lt;/p&gt;
&lt;hr data-end=&quot;1269&quot; data-start=&quot;1266&quot; /&gt;
&lt;h2 data-end=&quot;1333&quot; data-start=&quot;1271&quot;&gt;🔹 Opção 2: Espelhar iPhone na TV com Cabo HDMI (Sem Wi-Fi)&lt;/h2&gt;
&lt;p data-end=&quot;1407&quot; data-start=&quot;1335&quot;&gt;Ideal para quem não quer depender de internet ou tem uma TV mais antiga.&lt;/p&gt;
&lt;h3 data-end=&quot;1438&quot; data-start=&quot;1409&quot;&gt;✅ O que você vai precisar&lt;/h3&gt;
&lt;ul data-end=&quot;1585&quot; data-start=&quot;1439&quot;&gt;
&lt;li data-end=&quot;1494&quot; data-start=&quot;1439&quot;&gt;
&lt;p data-end=&quot;1494&quot; data-start=&quot;1441&quot;&gt;Adaptador &lt;strong data-end=&quot;1474&quot; data-start=&quot;1451&quot;&gt;Lightning para HDMI&lt;/strong&gt; (iPhones antigos)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1549&quot; data-start=&quot;1495&quot;&gt;
&lt;p data-end=&quot;1549&quot; data-start=&quot;1497&quot;&gt;Adaptador &lt;strong data-end=&quot;1526&quot; data-start=&quot;1507&quot;&gt;USB-C para HDMI&lt;/strong&gt; (iPhones mais novos)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1563&quot; data-start=&quot;1550&quot;&gt;
&lt;p data-end=&quot;1563&quot; data-start=&quot;1552&quot;&gt;Cabo HDMI&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1585&quot; data-start=&quot;1564&quot;&gt;
&lt;p data-end=&quot;1585&quot; data-start=&quot;1566&quot;&gt;TV com entrada HDMI&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1607&quot; data-start=&quot;1587&quot;&gt;📌 Passo a passo&lt;/h3&gt;
&lt;ol data-end=&quot;1785&quot; data-start=&quot;1608&quot;&gt;
&lt;li data-end=&quot;1642&quot; data-start=&quot;1608&quot;&gt;
&lt;p data-end=&quot;1642&quot; data-start=&quot;1611&quot;&gt;Conecte o adaptador ao iPhone&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1686&quot; data-start=&quot;1643&quot;&gt;
&lt;p data-end=&quot;1686&quot; data-start=&quot;1646&quot;&gt;Ligue o cabo HDMI no adaptador e na TV&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1734&quot; data-start=&quot;1687&quot;&gt;
&lt;p data-end=&quot;1734&quot; data-start=&quot;1690&quot;&gt;Selecione a &lt;strong data-end=&quot;1726&quot; data-start=&quot;1702&quot;&gt;entrada HDMI correta&lt;/strong&gt; na TV&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1785&quot; data-start=&quot;1735&quot;&gt;
&lt;p data-end=&quot;1785&quot; data-start=&quot;1738&quot;&gt;A tela do iPhone será espelhada automaticamente&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1875&quot; data-start=&quot;1787&quot;&gt;✔️ Funciona para vídeos, apps, jogos e apresentações&lt;br data-end=&quot;1842&quot; data-start=&quot;1839&quot; /&gt;
✔️ Não tem atraso (latência zero)&lt;/p&gt;
&lt;hr data-end=&quot;1880&quot; data-start=&quot;1877&quot; /&gt;
&lt;h2 data-end=&quot;1933&quot; data-start=&quot;1882&quot;&gt;🔹 Opção 3: Espelhar iPhone na TV com Chromecast&lt;/h2&gt;
&lt;p data-end=&quot;2022&quot; data-start=&quot;1935&quot;&gt;O Chromecast &lt;strong data-end=&quot;1984&quot; data-start=&quot;1948&quot;&gt;não espelha o iPhone nativamente&lt;/strong&gt;, mas funciona com alguns aplicativos.&lt;/p&gt;
&lt;h3 data-end=&quot;2046&quot; data-start=&quot;2024&quot;&gt;Funciona bem para:&lt;/h3&gt;
&lt;ul data-end=&quot;2098&quot; data-start=&quot;2047&quot;&gt;
&lt;li data-end=&quot;2058&quot; data-start=&quot;2047&quot;&gt;
&lt;p data-end=&quot;2058&quot; data-start=&quot;2049&quot;&gt;YouTube&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2070&quot; data-start=&quot;2059&quot;&gt;
&lt;p data-end=&quot;2070&quot; data-start=&quot;2061&quot;&gt;Netflix&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2082&quot; data-start=&quot;2071&quot;&gt;
&lt;p data-end=&quot;2082&quot; data-start=&quot;2073&quot;&gt;Spotify&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2098&quot; data-start=&quot;2083&quot;&gt;
&lt;p data-end=&quot;2098&quot; data-start=&quot;2085&quot;&gt;Prime Video&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2116&quot; data-start=&quot;2100&quot;&gt;📌 Como usar&lt;/h3&gt;
&lt;ol data-end=&quot;2252&quot; data-start=&quot;2117&quot;&gt;
&lt;li data-end=&quot;2147&quot; data-start=&quot;2117&quot;&gt;
&lt;p data-end=&quot;2147&quot; data-start=&quot;2120&quot;&gt;Conecte o Chromecast à TV&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2185&quot; data-start=&quot;2148&quot;&gt;
&lt;p data-end=&quot;2185&quot; data-start=&quot;2151&quot;&gt;Abra um app compatível no iPhone&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2228&quot; data-start=&quot;2186&quot;&gt;
&lt;p data-end=&quot;2228&quot; data-start=&quot;2189&quot;&gt;Toque no ícone de &lt;strong data-end=&quot;2226&quot; data-start=&quot;2207&quot;&gt;Transmitir (📺)&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2252&quot; data-start=&quot;2229&quot;&gt;
&lt;p data-end=&quot;2252&quot; data-start=&quot;2232&quot;&gt;Escolha o Chromecast&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;2326&quot; data-start=&quot;2254&quot;&gt;⚠️ &lt;strong data-end=&quot;2272&quot; data-start=&quot;2257&quot;&gt;Observação:&lt;/strong&gt; não espelha a tela inteira, apenas o conteúdo do app.&lt;/p&gt;
&lt;hr data-end=&quot;2331&quot; data-start=&quot;2328&quot; /&gt;
&lt;h2 data-end=&quot;2382&quot; data-start=&quot;2333&quot;&gt;🔹 Opção 4: Espelhamento com Apps de Terceiros&lt;/h2&gt;
&lt;p data-end=&quot;2421&quot; data-start=&quot;2384&quot;&gt;Útil quando a TV &lt;strong data-end=&quot;2420&quot; data-start=&quot;2401&quot;&gt;não tem AirPlay&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;2441&quot; data-start=&quot;2423&quot;&gt;Apps populares&lt;/h3&gt;
&lt;ul data-end=&quot;2510&quot; data-start=&quot;2442&quot;&gt;
&lt;li data-end=&quot;2458&quot; data-start=&quot;2442&quot;&gt;
&lt;p data-end=&quot;2458&quot; data-start=&quot;2444&quot;&gt;ApowerMirror&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2471&quot; data-start=&quot;2459&quot;&gt;
&lt;p data-end=&quot;2471&quot; data-start=&quot;2461&quot;&gt;LetsView&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2510&quot; data-start=&quot;2472&quot;&gt;
&lt;p data-end=&quot;2510&quot; data-start=&quot;2474&quot;&gt;AirScreen (instalado direto na TV)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2529&quot; data-start=&quot;2512&quot;&gt;Como funciona&lt;/h3&gt;
&lt;ul data-end=&quot;2616&quot; data-start=&quot;2530&quot;&gt;
&lt;li data-end=&quot;2563&quot; data-start=&quot;2530&quot;&gt;
&lt;p data-end=&quot;2563&quot; data-start=&quot;2532&quot;&gt;O app cria um “AirPlay virtual”&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2593&quot; data-start=&quot;2564&quot;&gt;
&lt;p data-end=&quot;2593&quot; data-start=&quot;2566&quot;&gt;Você conecta o iPhone a ele&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2616&quot; data-start=&quot;2594&quot;&gt;
&lt;p data-end=&quot;2616&quot; data-start=&quot;2596&quot;&gt;A TV recebe a imagem&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2678&quot; data-start=&quot;2618&quot;&gt;⚠️ Pode haver pequeno atraso ou anúncios na versão gratuita.&lt;/p&gt;
&lt;hr data-end=&quot;2683&quot; data-start=&quot;2680&quot; /&gt;
&lt;h2 data-end=&quot;2709&quot; data-start=&quot;2685&quot;&gt;📊 Comparativo Rápido&lt;/h2&gt;
&lt;div class=&quot;TyagGW_tableContainer&quot;&gt;&lt;div class=&quot;group TyagGW_tableWrapper flex flex-col-reverse w-fit&quot; tabindex=&quot;-1&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Método de Espelhamento&lt;/th&gt;&lt;th&gt;Precisa de Wi-Fi&lt;/th&gt;&lt;th&gt;Compatibilidade&lt;/th&gt;&lt;th&gt;Melhor Uso&lt;/th&gt;&lt;th&gt;Observações&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;AirPlay&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sim&lt;/td&gt;&lt;td&gt;Apple TV e Smart TVs compatíveis&lt;/td&gt;&lt;td&gt;Uso diário&lt;/td&gt;&lt;td&gt;Mais simples e rápido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cabo HDMI&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Não&lt;/td&gt;&lt;td&gt;Qualquer TV com HDMI&lt;/td&gt;&lt;td&gt;Qualidade máxima&lt;/td&gt;&lt;td&gt;Zero atraso&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Chromecast&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sim&lt;/td&gt;&lt;td&gt;TVs com Chromecast&lt;/td&gt;&lt;td&gt;Streaming&lt;/td&gt;&lt;td&gt;Não espelha tela inteira&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Apps de terceiros&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sim&lt;/td&gt;&lt;td&gt;TVs sem AirPlay&lt;/td&gt;&lt;td&gt;Alternativa&lt;/td&gt;&lt;td&gt;Pode ter anúncios&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;3017&quot; data-start=&quot;2711&quot;&gt;&lt;thead data-end=&quot;2773&quot; data-start=&quot;2711&quot;&gt;&lt;tr data-end=&quot;2773&quot; data-start=&quot;2711&quot;&gt;&lt;th class=&quot;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2720&quot; data-start=&quot;2711&quot;&gt;&lt;/th&gt;&lt;th class=&quot;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2732&quot; data-start=&quot;2720&quot;&gt;&lt;/th&gt;&lt;th class=&quot;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2758&quot; data-start=&quot;2732&quot;&gt;&lt;/th&gt;&lt;th class=&quot;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2773&quot; data-start=&quot;2758&quot;&gt;&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;3017&quot; data-start=&quot;2832&quot;&gt;&lt;tr data-end=&quot;3017&quot; data-start=&quot;2965&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2982&quot; data-start=&quot;2965&quot;&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2988&quot; data-start=&quot;2982&quot;&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3002&quot; data-start=&quot;2988&quot;&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3017&quot; data-start=&quot;3002&quot;&gt;Alternativa&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr data-end=&quot;3022&quot; data-start=&quot;3019&quot; /&gt;
&lt;h2 data-end=&quot;3056&quot; data-start=&quot;3024&quot;&gt;❓ Problemas Comuns e Soluções&lt;/h2&gt;
&lt;p data-end=&quot;3140&quot; data-start=&quot;3058&quot;&gt;&lt;strong data-end=&quot;3087&quot; data-start=&quot;3058&quot;&gt;Espelhamento não aparece?&lt;/strong&gt;&lt;br data-end=&quot;3090&quot; data-start=&quot;3087&quot; /&gt;
✔️ Verifique se TV e iPhone estão no mesmo Wi-Fi&lt;/p&gt;
&lt;p data-end=&quot;3209&quot; data-start=&quot;3142&quot;&gt;&lt;strong data-end=&quot;3162&quot; data-start=&quot;3142&quot;&gt;Imagem travando?&lt;/strong&gt;&lt;br data-end=&quot;3165&quot; data-start=&quot;3162&quot; /&gt;
✔️ Prefira cabo HDMI ou reduza uso da rede&lt;/p&gt;
&lt;p data-end=&quot;3265&quot; data-start=&quot;3211&quot;&gt;&lt;strong data-end=&quot;3225&quot; data-start=&quot;3211&quot;&gt;TV antiga?&lt;/strong&gt;&lt;br data-end=&quot;3228&quot; data-start=&quot;3225&quot; /&gt;
✔️ Use adaptador HDMI ou Chromecast&lt;/p&gt;
&lt;hr data-end=&quot;3270&quot; data-start=&quot;3267&quot; /&gt;
&lt;h2 data-end=&quot;3286&quot; data-start=&quot;3272&quot;&gt;✅ Conclusão&lt;/h2&gt;
&lt;p data-end=&quot;3475&quot; data-start=&quot;3288&quot;&gt;Espelhar a tela do iPhone na TV é &lt;strong data-end=&quot;3350&quot; data-start=&quot;3322&quot;&gt;mais fácil do que parece&lt;/strong&gt;.&lt;br data-end=&quot;3354&quot; data-start=&quot;3351&quot; /&gt;
Se você busca praticidade, o &lt;strong data-end=&quot;3394&quot; data-start=&quot;3383&quot;&gt;AirPlay&lt;/strong&gt; é a melhor opção.&lt;br data-end=&quot;3415&quot; data-start=&quot;3412&quot; /&gt;
Para máxima estabilidade, o &lt;strong data-end=&quot;3456&quot; data-start=&quot;3443&quot;&gt;cabo HDMI&lt;/strong&gt; ainda é imbatível.&lt;/p&gt;
&lt;p data-end=&quot;3542&quot; data-start=&quot;3477&quot;&gt;Agora é só escolher o método ideal para sua casa e aproveitar 🎬✨&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2026/02/como-espelhar-iphone-na-tv.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgoEICpC8A4WZiGYIQU6JNYXSEzQH40x5iPC6nLTo0KcvOqnHmGJoex5MWMf5IsXKLkGfHXOlMWlSD8FO11SxevLSXXuQ5TE-rJMBjCHOu58zq7z9AdWICOFNMbnx59mtNUOzMgj00EovUwyIjuayuX9YQKebwO342GG_wAdyVVrYOTBmgKPhv9k_bEnvk=s72-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-2889064607140639442</guid><pubDate>Sat, 07 Feb 2026 17:31:00 +0000</pubDate><atom:updated>2026-02-07T14:31:35.728-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>📶 630 Mbps de Internet é Exagero? Veja Quanto Cada Dispositivo Realmente Usa na Sua Casa</title><description>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiYSPchDV2z8mmAa8cXBEjMcLvtN6hGkEXmWgDLEieam2oXMHH7vv2M5oKUFU-_c3vR4nUI48bDk7sEz-TFdKHbjiz7759yZjDlvj5BbQj3nX_8YKTdX-dmm5l60Glw7qj-p_x8TK4mo1_WbWkAp-XdwbgdUbXOHWx2CyDQU2Pu2o25VbuKkaY_lz9kw5Y&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Casa conectada com celular, TV, notebook, câmeras e IoT&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiYSPchDV2z8mmAa8cXBEjMcLvtN6hGkEXmWgDLEieam2oXMHH7vv2M5oKUFU-_c3vR4nUI48bDk7sEz-TFdKHbjiz7759yZjDlvj5BbQj3nX_8YKTdX-dmm5l60Glw7qj-p_x8TK4mo1_WbWkAp-XdwbgdUbXOHWx2CyDQU2Pu2o25VbuKkaY_lz9kw5Y=s16000&quot; title=&quot;Consumo de internet residencial com celulares, TV, notebook, câmeras Wi-Fi e dispositivos IoT&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Você contratou &lt;strong data-end=&quot;434&quot; data-start=&quot;410&quot;&gt;630 Mbps de internet&lt;/strong&gt; e o técnico comentou que &lt;strong data-end=&quot;499&quot; data-start=&quot;460&quot;&gt;uma velocidade menor já daria conta&lt;/strong&gt; do uso diário com celular, notebook, TV e até dispositivos IoT.&lt;/p&gt;&lt;p data-end=&quot;608&quot; data-start=&quot;395&quot;&gt;
Mas afinal… &lt;strong data-end=&quot;603&quot; data-start=&quot;578&quot;&gt;isso é verdade mesmo?&lt;/strong&gt; 🤔&lt;/p&gt;
&lt;p data-end=&quot;780&quot; data-start=&quot;610&quot;&gt;Neste artigo, vamos explicar &lt;strong data-end=&quot;674&quot; data-start=&quot;639&quot;&gt;quanto cada equipamento consome&lt;/strong&gt;, &lt;strong data-end=&quot;712&quot; data-start=&quot;676&quot;&gt;quando a internet realmente pesa&lt;/strong&gt; e &lt;strong data-end=&quot;779&quot; data-start=&quot;715&quot;&gt;quem pode usar o máximo da sua banda em cenários específicos&lt;/strong&gt;.&lt;/p&gt;
&lt;hr data-end=&quot;785&quot; data-start=&quot;782&quot; /&gt;
&lt;h2 data-end=&quot;838&quot; data-start=&quot;787&quot;&gt;🔵 &lt;strong data-end=&quot;838&quot; data-start=&quot;793&quot;&gt;O que significa ter 630 Mbps de internet?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;944&quot; data-start=&quot;840&quot;&gt;630 Mbps significa que sua conexão pode transferir até &lt;strong data-end=&quot;923&quot; data-start=&quot;895&quot;&gt;630 megabits por segundo&lt;/strong&gt; em condições ideais.&lt;/p&gt;
&lt;p data-end=&quot;976&quot; data-start=&quot;946&quot;&gt;👉 Traduzindo para o uso real:&lt;/p&gt;
&lt;ul data-end=&quot;1109&quot; data-start=&quot;977&quot;&gt;
&lt;li data-end=&quot;1016&quot; data-start=&quot;977&quot;&gt;
&lt;p data-end=&quot;1016&quot; data-start=&quot;979&quot;&gt;É uma &lt;strong data-end=&quot;1016&quot; data-start=&quot;985&quot;&gt;internet de alto desempenho&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1051&quot; data-start=&quot;1017&quot;&gt;
&lt;p data-end=&quot;1051&quot; data-start=&quot;1019&quot;&gt;Muito acima da média residencial&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1109&quot; data-start=&quot;1052&quot;&gt;
&lt;p data-end=&quot;1109&quot; data-start=&quot;1054&quot;&gt;Capaz de atender &lt;strong data-end=&quot;1109&quot; data-start=&quot;1071&quot;&gt;vários dispositivos ao mesmo tempo&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1158&quot; data-start=&quot;1111&quot;&gt;Mas… &lt;strong data-end=&quot;1157&quot; data-start=&quot;1116&quot;&gt;nem todos os aparelhos usam tudo isso&lt;/strong&gt;.&lt;/p&gt;
&lt;hr data-end=&quot;1163&quot; data-start=&quot;1160&quot; /&gt;
&lt;h2 data-end=&quot;1218&quot; data-start=&quot;1165&quot;&gt;🔵 &lt;strong data-end=&quot;1218&quot; data-start=&quot;1171&quot;&gt;Quanto cada dispositivo consome na prática?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1280&quot; data-start=&quot;1220&quot;&gt;Vamos aos números reais, baseados em testes e uso cotidiano.&lt;/p&gt;
&lt;h3 data-end=&quot;1339&quot; data-start=&quot;1282&quot;&gt;📱 &lt;strong data-end=&quot;1339&quot; data-start=&quot;1289&quot;&gt;Celular (WhatsApp, Instagram, YouTube, TikTok)&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1355&quot; data-start=&quot;1341&quot;&gt;Consumo médio:&lt;/p&gt;
&lt;ul data-end=&quot;1480&quot; data-start=&quot;1356&quot;&gt;
&lt;li data-end=&quot;1399&quot; data-start=&quot;1356&quot;&gt;
&lt;p data-end=&quot;1399&quot; data-start=&quot;1358&quot;&gt;Navegação e redes sociais: &lt;strong data-end=&quot;1399&quot; data-start=&quot;1385&quot;&gt;1 a 5 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1430&quot; data-start=&quot;1400&quot;&gt;
&lt;p data-end=&quot;1430&quot; data-start=&quot;1402&quot;&gt;Vídeos em HD: &lt;strong data-end=&quot;1430&quot; data-start=&quot;1416&quot;&gt;5 a 8 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1480&quot; data-start=&quot;1431&quot;&gt;
&lt;p data-end=&quot;1480&quot; data-start=&quot;1433&quot;&gt;Vídeos em 4K (raro no celular): &lt;strong data-end=&quot;1480&quot; data-start=&quot;1465&quot;&gt;até 25 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1538&quot; data-start=&quot;1482&quot;&gt;📌 Mesmo vários celulares juntos &lt;strong data-end=&quot;1537&quot; data-start=&quot;1515&quot;&gt;não saturam a rede&lt;/strong&gt;.&lt;/p&gt;
&lt;hr data-end=&quot;1543&quot; data-start=&quot;1540&quot; /&gt;
&lt;h3 data-end=&quot;1577&quot; data-start=&quot;1545&quot;&gt;💻 &lt;strong data-end=&quot;1577&quot; data-start=&quot;1552&quot;&gt;Notebook / Computador&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1589&quot; data-start=&quot;1579&quot;&gt;Uso comum:&lt;/p&gt;
&lt;ul data-end=&quot;1742&quot; data-start=&quot;1590&quot;&gt;
&lt;li data-end=&quot;1637&quot; data-start=&quot;1590&quot;&gt;
&lt;p data-end=&quot;1637&quot; data-start=&quot;1592&quot;&gt;Navegação, e-mails, sistemas: &lt;strong data-end=&quot;1637&quot; data-start=&quot;1622&quot;&gt;2 a 10 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1681&quot; data-start=&quot;1638&quot;&gt;
&lt;p data-end=&quot;1681&quot; data-start=&quot;1640&quot;&gt;Reuniões no Zoom / Teams: &lt;strong data-end=&quot;1681&quot; data-start=&quot;1666&quot;&gt;5 a 10 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1742&quot; data-start=&quot;1682&quot;&gt;
&lt;p data-end=&quot;1742&quot; data-start=&quot;1684&quot;&gt;Downloads grandes: &lt;strong data-end=&quot;1742&quot; data-start=&quot;1703&quot;&gt;pode usar tudo que tiver disponível&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1839&quot; data-start=&quot;1744&quot;&gt;👉 Aqui está o primeiro cenário onde &lt;strong data-end=&quot;1820&quot; data-start=&quot;1781&quot;&gt;velocidades maiores fazem diferença&lt;/strong&gt;, especialmente em:&lt;/p&gt;
&lt;ul data-end=&quot;1895&quot; data-start=&quot;1840&quot;&gt;
&lt;li data-end=&quot;1851&quot; data-start=&quot;1840&quot;&gt;
&lt;p data-end=&quot;1851&quot; data-start=&quot;1842&quot;&gt;Downloads&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1866&quot; data-start=&quot;1852&quot;&gt;
&lt;p data-end=&quot;1866&quot; data-start=&quot;1854&quot;&gt;Atualizações&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1895&quot; data-start=&quot;1867&quot;&gt;
&lt;p data-end=&quot;1895&quot; data-start=&quot;1869&quot;&gt;Upload de arquivos grandes&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1900&quot; data-start=&quot;1897&quot; /&gt;
&lt;h3 data-end=&quot;1953&quot; data-start=&quot;1902&quot;&gt;📺 &lt;strong data-end=&quot;1953&quot; data-start=&quot;1909&quot;&gt;Smart TV (Netflix, YouTube, Prime Video)&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1970&quot; data-start=&quot;1955&quot;&gt;Consumo típico:&lt;/p&gt;
&lt;ul data-end=&quot;2046&quot; data-start=&quot;1971&quot;&gt;
&lt;li data-end=&quot;2005&quot; data-start=&quot;1971&quot;&gt;
&lt;p data-end=&quot;2005&quot; data-start=&quot;1973&quot;&gt;Full HD (1080p): &lt;strong data-end=&quot;2005&quot; data-start=&quot;1990&quot;&gt;5 a 10 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2046&quot; data-start=&quot;2006&quot;&gt;
&lt;p data-end=&quot;2046&quot; data-start=&quot;2008&quot;&gt;4K / Ultra HD: &lt;strong data-end=&quot;2046&quot; data-start=&quot;2023&quot;&gt;15 a 25 Mbps por TV&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2128&quot; data-start=&quot;2048&quot;&gt;📌 Duas TVs em 4K ao mesmo tempo ≈ &lt;strong data-end=&quot;2094&quot; data-start=&quot;2083&quot;&gt;50 Mbps&lt;/strong&gt;&lt;br data-end=&quot;2097&quot; data-start=&quot;2094&quot; /&gt;
Ainda muito longe dos 630 Mbps.&lt;/p&gt;
&lt;hr data-end=&quot;2133&quot; data-start=&quot;2130&quot; /&gt;
&lt;h3 data-end=&quot;2159&quot; data-start=&quot;2135&quot;&gt;📷 &lt;strong data-end=&quot;2159&quot; data-start=&quot;2142&quot;&gt;Câmeras Wi-Fi&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2190&quot; data-start=&quot;2161&quot;&gt;Consumo depende da qualidade:&lt;/p&gt;
&lt;ul data-end=&quot;2269&quot; data-start=&quot;2191&quot;&gt;
&lt;li data-end=&quot;2211&quot; data-start=&quot;2191&quot;&gt;
&lt;p data-end=&quot;2211&quot; data-start=&quot;2193&quot;&gt;HD: &lt;strong data-end=&quot;2211&quot; data-start=&quot;2197&quot;&gt;1 a 2 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2237&quot; data-start=&quot;2212&quot;&gt;
&lt;p data-end=&quot;2237&quot; data-start=&quot;2214&quot;&gt;Full HD: &lt;strong data-end=&quot;2237&quot; data-start=&quot;2223&quot;&gt;2 a 4 Mbps&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2269&quot; data-start=&quot;2238&quot;&gt;
&lt;p data-end=&quot;2269&quot; data-start=&quot;2240&quot;&gt;Upload constante (para nuvem)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2340&quot; data-start=&quot;2271&quot;&gt;👉 Mesmo com &lt;strong data-end=&quot;2302&quot; data-start=&quot;2284&quot;&gt;4 ou 5 câmeras&lt;/strong&gt;, o consumo é baixo, mas &lt;strong data-end=&quot;2339&quot; data-start=&quot;2327&quot;&gt;contínuo&lt;/strong&gt;.&lt;/p&gt;
&lt;hr data-end=&quot;2345&quot; data-start=&quot;2342&quot; /&gt;
&lt;h3 data-end=&quot;2429&quot; data-start=&quot;2347&quot;&gt;🏠 &lt;strong data-end=&quot;2429&quot; data-start=&quot;2354&quot;&gt;Dispositivos IoT (Alexa, lâmpadas, tomadas, geladeira, ar-condicionado)&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2445&quot; data-start=&quot;2431&quot;&gt;Consumo médio:&lt;/p&gt;
&lt;ul data-end=&quot;2517&quot; data-start=&quot;2446&quot;&gt;
&lt;li data-end=&quot;2466&quot; data-start=&quot;2446&quot;&gt;
&lt;p data-end=&quot;2466&quot; data-start=&quot;2448&quot;&gt;Extremamente baixo&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2517&quot; data-start=&quot;2467&quot;&gt;
&lt;p data-end=&quot;2517&quot; data-start=&quot;2469&quot;&gt;Geralmente &lt;strong data-end=&quot;2517&quot; data-start=&quot;2480&quot;&gt;menos de 0,1 Mbps por dispositivo&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2577&quot; data-start=&quot;2519&quot;&gt;📌 Eles &lt;strong data-end=&quot;2548&quot; data-start=&quot;2527&quot;&gt;não pesam na rede&lt;/strong&gt;, mesmo em grande quantidade.&lt;/p&gt;
&lt;hr data-end=&quot;2582&quot; data-start=&quot;2579&quot; /&gt;
&lt;h2 data-end=&quot;2632&quot; data-start=&quot;2584&quot;&gt;🔵 &lt;strong data-end=&quot;2632&quot; data-start=&quot;2590&quot;&gt;Então… uma internet menor daria conta?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2664&quot; data-start=&quot;2634&quot;&gt;Na maioria dos casos, &lt;strong data-end=&quot;2663&quot; data-start=&quot;2656&quot;&gt;sim&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;2701&quot; data-start=&quot;2666&quot;&gt;Veja um cenário típico residencial:&lt;/p&gt;
&lt;div class=&quot;TyagGW_tableContainer&quot;&gt;&lt;div class=&quot;group TyagGW_tableWrapper flex flex-col-reverse w-fit&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;2935&quot; data-start=&quot;2703&quot;&gt;&lt;thead data-end=&quot;2739&quot; data-start=&quot;2703&quot;&gt;&lt;tr data-end=&quot;2739&quot; data-start=&quot;2703&quot;&gt;&lt;th class=&quot;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2717&quot; data-start=&quot;2703&quot;&gt;Equipamento&lt;/th&gt;&lt;th class=&quot;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2739&quot; data-start=&quot;2717&quot;&gt;Consumo aproximado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;2935&quot; data-start=&quot;2776&quot;&gt;&lt;tr data-end=&quot;2801&quot; data-start=&quot;2776&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2790&quot; data-start=&quot;2776&quot;&gt;2 celulares&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2801&quot; data-start=&quot;2790&quot;&gt;10 Mbps&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2826&quot; data-start=&quot;2802&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2815&quot; data-start=&quot;2802&quot;&gt;1 notebook&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2826&quot; data-start=&quot;2815&quot;&gt;10 Mbps&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2848&quot; data-start=&quot;2827&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2837&quot; data-start=&quot;2827&quot;&gt;1 TV 4K&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2848&quot; data-start=&quot;2837&quot;&gt;25 Mbps&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2877&quot; data-start=&quot;2849&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2867&quot; data-start=&quot;2849&quot;&gt;2 câmeras Wi-Fi&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2877&quot; data-start=&quot;2867&quot;&gt;6 Mbps&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2905&quot; data-start=&quot;2878&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2893&quot; data-start=&quot;2878&quot;&gt;IoT diversos&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2905&quot; data-start=&quot;2893&quot;&gt;&amp;lt; 1 Mbps&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2935&quot; data-start=&quot;2906&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2918&quot; data-start=&quot;2906&quot;&gt;&lt;strong data-end=&quot;2917&quot; data-start=&quot;2908&quot;&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2935&quot; data-start=&quot;2918&quot;&gt;&lt;strong data-end=&quot;2933&quot; data-start=&quot;2920&quot;&gt;≈ 52 Mbps&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p data-end=&quot;2997&quot; data-start=&quot;2937&quot;&gt;👉 Uma conexão de &lt;strong data-end=&quot;2973&quot; data-start=&quot;2955&quot;&gt;100 a 200 Mbps&lt;/strong&gt; já atenderia com folga.&lt;/p&gt;
&lt;hr data-end=&quot;3002&quot; data-start=&quot;2999&quot; /&gt;
&lt;h2 data-end=&quot;3056&quot; data-start=&quot;3004&quot;&gt;🔵 &lt;strong data-end=&quot;3056&quot; data-start=&quot;3010&quot;&gt;Quem realmente pode usar o máximo da rede?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;3121&quot; data-start=&quot;3058&quot;&gt;Alguns cenários &lt;strong data-end=&quot;3120&quot; data-start=&quot;3074&quot;&gt;conseguem consumir toda a banda disponível&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 data-end=&quot;3161&quot; data-start=&quot;3123&quot;&gt;🚀 &lt;strong data-end=&quot;3161&quot; data-start=&quot;3130&quot;&gt;Downloads e uploads pesados&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;3240&quot; data-start=&quot;3162&quot;&gt;
&lt;li data-end=&quot;3177&quot; data-start=&quot;3162&quot;&gt;
&lt;p data-end=&quot;3177&quot; data-start=&quot;3164&quot;&gt;Jogos grandes&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3203&quot; data-start=&quot;3178&quot;&gt;
&lt;p data-end=&quot;3203&quot; data-start=&quot;3180&quot;&gt;Atualizações do sistema&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3221&quot; data-start=&quot;3204&quot;&gt;
&lt;p data-end=&quot;3221&quot; data-start=&quot;3206&quot;&gt;Backup em nuvem&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3240&quot; data-start=&quot;3222&quot;&gt;
&lt;p data-end=&quot;3240&quot; data-start=&quot;3224&quot;&gt;Upload de vídeos&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;3284&quot; data-start=&quot;3242&quot;&gt;☁️ &lt;strong data-end=&quot;3284&quot; data-start=&quot;3249&quot;&gt;Cloud, home office e servidores&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;3344&quot; data-start=&quot;3285&quot;&gt;
&lt;li data-end=&quot;3302&quot; data-start=&quot;3285&quot;&gt;
&lt;p data-end=&quot;3302&quot; data-start=&quot;3287&quot;&gt;VPN corporativa&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3318&quot; data-start=&quot;3303&quot;&gt;
&lt;p data-end=&quot;3318&quot; data-start=&quot;3305&quot;&gt;Acesso remoto&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3344&quot; data-start=&quot;3319&quot;&gt;
&lt;p data-end=&quot;3344&quot; data-start=&quot;3321&quot;&gt;Sincronização constante&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;3386&quot; data-start=&quot;3346&quot;&gt;🎮 &lt;strong data-end=&quot;3386&quot; data-start=&quot;3353&quot;&gt;Games + downloads simultâneos&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;3474&quot; data-start=&quot;3387&quot;&gt;
&lt;li data-end=&quot;3433&quot; data-start=&quot;3387&quot;&gt;
&lt;p data-end=&quot;3433&quot; data-start=&quot;3389&quot;&gt;Não pelo jogo em si (jogos usam pouca banda)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3474&quot; data-start=&quot;3434&quot;&gt;
&lt;p data-end=&quot;3474&quot; data-start=&quot;3436&quot;&gt;Mas por &lt;strong data-end=&quot;3474&quot; data-start=&quot;3444&quot;&gt;downloads em segundo plano&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3479&quot; data-start=&quot;3476&quot; /&gt;
&lt;h2 data-end=&quot;3524&quot; data-start=&quot;3481&quot;&gt;🔵 &lt;strong data-end=&quot;3524&quot; data-start=&quot;3487&quot;&gt;Por que então contratar 630 Mbps?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;3550&quot; data-start=&quot;3526&quot;&gt;Existem vantagens reais:&lt;/p&gt;
&lt;ul data-end=&quot;3713&quot; data-start=&quot;3552&quot;&gt;
&lt;li data-end=&quot;3588&quot; data-start=&quot;3552&quot;&gt;
&lt;p data-end=&quot;3588&quot; data-start=&quot;3554&quot;&gt;Mais pessoas usando ao mesmo tempo&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3619&quot; data-start=&quot;3589&quot;&gt;
&lt;p data-end=&quot;3619&quot; data-start=&quot;3591&quot;&gt;Downloads muito mais rápidos&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3646&quot; data-start=&quot;3620&quot;&gt;
&lt;p data-end=&quot;3646&quot; data-start=&quot;3622&quot;&gt;Menor chance de lentidão&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3686&quot; data-start=&quot;3647&quot;&gt;
&lt;p data-end=&quot;3686&quot; data-start=&quot;3649&quot;&gt;Melhor desempenho em horários de pico&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3713&quot; data-start=&quot;3687&quot;&gt;
&lt;p data-end=&quot;3713&quot; data-start=&quot;3689&quot;&gt;Preparação para o futuro&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3796&quot; data-start=&quot;3715&quot;&gt;📌 &lt;strong data-end=&quot;3796&quot; data-start=&quot;3718&quot;&gt;Velocidade alta não é só sobre consumo, mas sobre conforto e estabilidade.&lt;/strong&gt;&lt;/p&gt;
&lt;hr data-end=&quot;3801&quot; data-start=&quot;3798&quot; /&gt;
&lt;h2 data-end=&quot;3863&quot; data-start=&quot;3803&quot;&gt;🔵 &lt;strong data-end=&quot;3863&quot; data-start=&quot;3809&quot;&gt;O verdadeiro gargalo muitas vezes não é a internet&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;3924&quot; data-start=&quot;3865&quot;&gt;Muita gente culpa a velocidade, mas o problema costuma ser:&lt;/p&gt;
&lt;ul data-end=&quot;4028&quot; data-start=&quot;3926&quot;&gt;
&lt;li data-end=&quot;3942&quot; data-start=&quot;3926&quot;&gt;
&lt;p data-end=&quot;3942&quot; data-start=&quot;3928&quot;&gt;Roteador fraco&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3966&quot; data-start=&quot;3943&quot;&gt;
&lt;p data-end=&quot;3966&quot; data-start=&quot;3945&quot;&gt;Wi-Fi mal posicionado&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3989&quot; data-start=&quot;3967&quot;&gt;
&lt;p data-end=&quot;3989&quot; data-start=&quot;3969&quot;&gt;Equipamentos antigos&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4005&quot; data-start=&quot;3990&quot;&gt;
&lt;p data-end=&quot;4005&quot; data-start=&quot;3992&quot;&gt;Interferência&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4028&quot; data-start=&quot;4006&quot;&gt;
&lt;p data-end=&quot;4028&quot; data-start=&quot;4008&quot;&gt;Rede mal configurada&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4084&quot; data-start=&quot;4030&quot;&gt;👉 Uma internet rápida &lt;strong data-end=&quot;4083&quot; data-start=&quot;4053&quot;&gt;não compensa um Wi-Fi ruim&lt;/strong&gt;.&lt;/p&gt;
&lt;hr data-end=&quot;4089&quot; data-start=&quot;4086&quot; /&gt;
&lt;h2 data-end=&quot;4129&quot; data-start=&quot;4091&quot;&gt;🔵 &lt;strong data-end=&quot;4129&quot; data-start=&quot;4097&quot;&gt;Conclusão: 630 Mbps é muito?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;4310&quot; data-start=&quot;4131&quot;&gt;✔️ Para a maioria das casas, &lt;strong data-end=&quot;4188&quot; data-start=&quot;4160&quot;&gt;é mais do que suficiente&lt;/strong&gt;&lt;br data-end=&quot;4191&quot; data-start=&quot;4188&quot; /&gt;
✔️ Em muitos casos, &lt;strong data-end=&quot;4245&quot; data-start=&quot;4211&quot;&gt;200 ou 300 Mbps já resolveriam&lt;/strong&gt;&lt;br data-end=&quot;4248&quot; data-start=&quot;4245&quot; /&gt;
✔️ Mas 630 Mbps oferece &lt;strong data-end=&quot;4310&quot; data-start=&quot;4272&quot;&gt;folga, conforto e futuro garantido&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;4320&quot; data-start=&quot;4312&quot;&gt;Se você:&lt;/p&gt;
&lt;ul data-end=&quot;4418&quot; data-start=&quot;4321&quot;&gt;
&lt;li data-end=&quot;4339&quot; data-start=&quot;4321&quot;&gt;
&lt;p data-end=&quot;4339&quot; data-start=&quot;4323&quot;&gt;Trabalha de casa&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4365&quot; data-start=&quot;4340&quot;&gt;
&lt;p data-end=&quot;4365&quot; data-start=&quot;4342&quot;&gt;Tem muitos dispositivos&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4389&quot; data-start=&quot;4366&quot;&gt;
&lt;p data-end=&quot;4389&quot; data-start=&quot;4368&quot;&gt;Faz downloads grandes&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4418&quot; data-start=&quot;4390&quot;&gt;
&lt;p data-end=&quot;4418&quot; data-start=&quot;4392&quot;&gt;Quer estabilidade máxima&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4453&quot; data-start=&quot;4420&quot;&gt;👉 &lt;strong data-end=&quot;4453&quot; data-start=&quot;4423&quot;&gt;630 Mbps faz todo sentido.&lt;/strong&gt;&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2026/02/internet-630mbps-vale-a-pena.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiYSPchDV2z8mmAa8cXBEjMcLvtN6hGkEXmWgDLEieam2oXMHH7vv2M5oKUFU-_c3vR4nUI48bDk7sEz-TFdKHbjiz7759yZjDlvj5BbQj3nX_8YKTdX-dmm5l60Glw7qj-p_x8TK4mo1_WbWkAp-XdwbgdUbXOHWx2CyDQU2Pu2o25VbuKkaY_lz9kw5Y=s72-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-418205662620206619</guid><pubDate>Sat, 31 Jan 2026 02:39:00 +0000</pubDate><atom:updated>2026-01-31T00:08:22.151-03:00</atom:updated><title>PostgreSQL vs SQL Server: Análise Comparativa</title><description>
&lt;header id=&quot;title-block-header&quot;&gt;
&lt;h1 class=&quot;title&quot;&gt;&lt;/h1&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;PostgreSQL
vs SQL Server: Análise Comparativa Completa dos SGBDs&lt;/h3&gt;&lt;/header&gt;
&lt;h2 id=&quot;introdução&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKFoJy2Ltp9tRMUJnvTx01Cr32laWbPXDUmwbKKM0dhi_YVZEHZKoU9n0FwzsaoUltv2fCyPoM3QKZuKDMs-rfJ-CzLtuHoHF53qp2gbsR2Or1G6-2ROx_N_GZzLUqrY7RGud6tnVaOqBXieGgruznvGEDTcyhwDjGZYkfQwQmkYqmg9eV9nBeAm7wuPA/s540/postgresql-vs-sql-server-comparacao-2025.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Comparação visual entre PostgreSQL e SQL Server mostrando logotipos e principais diferenças&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKFoJy2Ltp9tRMUJnvTx01Cr32laWbPXDUmwbKKM0dhi_YVZEHZKoU9n0FwzsaoUltv2fCyPoM3QKZuKDMs-rfJ-CzLtuHoHF53qp2gbsR2Or1G6-2ROx_N_GZzLUqrY7RGud6tnVaOqBXieGgruznvGEDTcyhwDjGZYkfQwQmkYqmg9eV9nBeAm7wuPA/s16000/postgresql-vs-sql-server-comparacao-2025.jpg&quot; title=&quot;Comparação visual entre PostgreSQL e SQL Server mostrando logotipos e principais diferenças&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Introdução&lt;/h2&gt;
&lt;p&gt;No cenário atual de gerenciamento de dados, a escolha do Sistema de
Gerenciamento de Banco de Dados (SGBD) adequado é uma das decisões mais
críticas para o sucesso de projetos tecnológicos. PostgreSQL e Microsoft
SQL Server representam duas filosofias distintas: o caminho open-source
orientado pela comunidade versus a abordagem comercial integrada ao
ecossistema proprietário.&lt;/p&gt;
&lt;p&gt;Este artigo apresenta uma análise comparativa abrangente entre
PostgreSQL e SQL Server, baseada em artigos técnicos, benchmarks
recentes e experiências relatadas por usuários que utilizam essas
tecnologias no dia a dia.&lt;/p&gt;
&lt;h2 id=&quot;histórico-e-evolução&quot;&gt;1. Histórico e Evolução&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/MgEo2zsOVWM&quot; width=&quot;320&quot; youtube-src-id=&quot;MgEo2zsOVWM&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/h2&gt;
&lt;h3 id=&quot;postgresql&quot;&gt;PostgreSQL&lt;/h3&gt;
&lt;p&gt;O PostgreSQL teve origem em 1986 na Universidade da Califórnia,
Berkeley, sendo lançado pela primeira vez em 1989. Desenvolvido sob
licença open-source, o projeto mantém lançamentos regulares desde então.
A versão atual é o PostgreSQL 17.4, com o PostgreSQL 18 no horizonte
para 2025. O projeto mantém suporte oficial para versões anteriores por
cinco anos após o lançamento inicial.&lt;/p&gt;
&lt;h3 id=&quot;sql-server&quot;&gt;SQL Server&lt;/h3&gt;
&lt;p&gt;Desenvolvido pela Microsoft, o SQL Server foi lançado inicialmente em
1989. A versão mais recente, SQL Server 2025 (17.x), representa a
atualização mais significativa da plataforma em uma década,
posicionando-se como um banco de dados preparado para IA. As versões
anteriores continuam recebendo suporte desde o SQL Server 2012 em
diante, com suporte estendido de 10 anos e opção de extensão premium por
até 16 anos.&lt;/p&gt;
&lt;h2 id=&quot;licenciamento-e-custos&quot;&gt;2. Licenciamento e Custos&lt;/h2&gt;
&lt;h3 id=&quot;postgresql-1&quot;&gt;PostgreSQL&lt;/h3&gt;
&lt;p&gt;Como software open-source sob a Licença PostgreSQL (aprovada pela
Open Source Initiative), o uso do PostgreSQL é completamente gratuito
para qualquer finalidade, incluindo aplicações comerciais. Não há custos
de licenciamento, eliminando o risco de sub-licenciamento e
proporcionando liberdade perpétua de uso sob o PostgreSQL Global
Development Group.&lt;/p&gt;
&lt;p&gt;Segundo análise de Total Cost of Ownership (TCO) em 5 anos, o
PostgreSQL apresenta custos apenas com hardware e gerenciamento,
enquanto soluções comerciais podem ser até 5 vezes mais caras.&lt;/p&gt;
&lt;h3 id=&quot;sql-server-1&quot;&gt;SQL Server&lt;/h3&gt;
&lt;p&gt;O SQL Server está disponível através de licença comercial, com
modelos de licenciamento por núcleo ou servidor + CAL (Client Access
License). A Microsoft oferece duas edições principais:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Standard Edition&lt;/strong&gt;: A partir de $3.586 (para dois
núcleos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise Edition&lt;/strong&gt;: A partir de $13.748 (para dois
núcleos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modelo Server + CAL&lt;/strong&gt;: $899 pelo servidor + $209 por
usuário&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Uma versão gratuita está disponível para estudantes e desenvolvedores
para fins de aprendizado e testes.&lt;/p&gt;
&lt;h2 id=&quot;características-técnicas-e-recursos&quot;&gt;3. Características Técnicas
e Recursos&lt;/h2&gt;
&lt;h3 id=&quot;arquitetura-e-extensibilidade&quot;&gt;Arquitetura e
Extensibilidade&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; se destaca por sua arquitetura altamente
extensível:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suporte a tipos de dados personalizados através do sistema de
extensões&lt;/li&gt;
&lt;li&gt;Foreign Data Wrappers (FDW) permitindo conexão com fontes de dados
externas&lt;/li&gt;
&lt;li&gt;Multi-Version Concurrency Control (MVCC) para acesso concorrente
eficiente sem bloqueios de leitura&lt;/li&gt;
&lt;li&gt;Point-in-Time Recovery (PITR) permitindo restauração para qualquer
momento&lt;/li&gt;
&lt;li&gt;Suporte nativo a JSON e JSONB para dados semi-estruturados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SQL Server&lt;/strong&gt; oferece:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integração profunda com o ecossistema Microsoft (Azure, Active
Directory, Power BI)&lt;/li&gt;
&lt;li&gt;Recursos avançados de Business Intelligence nativos&lt;/li&gt;
&lt;li&gt;SQL Server 2025 introduz tipo de dados vetorial nativo e indexação
DiskANN para aplicações de IA&lt;/li&gt;
&lt;li&gt;Suporte a T-SQL (Transact-SQL) com recursos procedurais
avançados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tipos-de-dados&quot;&gt;Tipos de Dados&lt;/h3&gt;
&lt;p&gt;O PostgreSQL oferece uma gama mais ampla de tipos de dados
especializados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tipos geométricos e geográficos (via extensão PostGIS)&lt;/li&gt;
&lt;li&gt;Arrays nativos&lt;/li&gt;
&lt;li&gt;Tipos especializados como hstore, ltree, citext&lt;/li&gt;
&lt;li&gt;UUID nativo&lt;/li&gt;
&lt;li&gt;Tipos de intervalo de tempo e data avançados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O SQL Server possui tipos de dados robustos, incluindo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tipo geography nativo para dados geoespaciais&lt;/li&gt;
&lt;li&gt;XML nativo&lt;/li&gt;
&lt;li&gt;Tipos de dados hierárquicos&lt;/li&gt;
&lt;li&gt;Suporte a vetores (introduzido no SQL Server 2025)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;conformidade-com-padrões-sql&quot;&gt;Conformidade com Padrões SQL&lt;/h3&gt;
&lt;p&gt;O PostgreSQL é altamente conforme aos padrões SQL:2008, suportando a
maioria dos tipos de dados incluindo BOOLEAN, NUMERIC, INTEGER, DATE,
VARCHAR, TIMESTAMP, INTERVAL e CHAR. O sistema é ACID-compliant e
oferece suporte completo para views, foreign keys, triggers, joins e
stored procedures em várias linguagens.&lt;/p&gt;
&lt;p&gt;O SQL Server utiliza T-SQL, uma implementação proprietária que
estende o padrão SQL com recursos adicionais, mantendo compatibilidade
com ANSI SQL.&lt;/p&gt;
&lt;h2 id=&quot;performance-e-benchmarks&quot;&gt;4. Performance e Benchmarks&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSUyx9rgUn3T3hyphenhyphenFlgAThEGJpaeTXt-Tq_yiAaKAz_zPaTYRH2VDoQ8mY-q1QTXkUmZWAgKdQ1zaKOt-TwaPp0QAJPj7Ks-YSNgVV9hn27UtOal0T4Mr6NOJmSeHYt0rzcT4EmmtlQa6452dddfe7P4SKCv4A5AnOFtrvqBm3TZVYjQwgEoRnxZlwrg6Q/s540/postgresql-sqlserver-analise-comparativa.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Infográfico completo comparando custos, performance e recursos do PostgreSQL e SQL Server&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSUyx9rgUn3T3hyphenhyphenFlgAThEGJpaeTXt-Tq_yiAaKAz_zPaTYRH2VDoQ8mY-q1QTXkUmZWAgKdQ1zaKOt-TwaPp0QAJPj7Ks-YSNgVV9hn27UtOal0T4Mr6NOJmSeHYt0rzcT4EmmtlQa6452dddfe7P4SKCv4A5AnOFtrvqBm3TZVYjQwgEoRnxZlwrg6Q/s16000/postgresql-sqlserver-analise-comparativa.jpg&quot; title=&quot;Infográfico completo comparando custos, performance e recursos do PostgreSQL e SQL Server&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;resultados-de-testes-comparativos&quot;&gt;Resultados de Testes
Comparativos&lt;/h3&gt;
&lt;p&gt;Benchmarks recentes demonstram diferenças significativas de
performance entre os dois sistemas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL:&lt;/strong&gt; - Em testes com consultas complexas em
tabelas com 1 milhão de registros, o PostgreSQL executou consultas
SELECT com COUNT e AVG em 2,3 segundos - Para consultas SELECT básicas,
o tempo de execução variou entre 0,6ms e 0,8ms - Consultas com cláusula
WHERE executaram em 0,09ms a 0,13ms - O mecanismo MVCC proporciona
melhor performance em transações concorrentes&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SQL Server:&lt;/strong&gt; - Mesma consulta complexa executou em
3,8 segundos - Consultas SELECT básicas variaram entre 9ms e 12ms -
Consultas com WHERE executaram em 0,9ms a 1ms&lt;/p&gt;
&lt;p&gt;Segundo estudos comparativos, o PostgreSQL demonstrou ser
aproximadamente 13 vezes mais rápido em operações de SELECT básicas e
cerca de 9 vezes mais eficiente em consultas com condições WHERE quando
comparado ao MySQL (frequentemente usado como baseline em
benchmarks).&lt;/p&gt;
&lt;h3 id=&quot;evolução-de-performance-entre-versões&quot;&gt;Evolução de Performance
entre Versões&lt;/h3&gt;
&lt;p&gt;Testes comparativos entre versões do PostgreSQL (9.6 a 15)
demonstraram que atualizar para a versão mais recente pode resultar em
até 47,7% mais transações processadas no mesmo período, dependendo de
quão desatualizada está a implementação atual. Os testes com PostgreSQL
16 mostraram que a nova versão não apresenta regressões de performance
significativas em relação à versão 15.4, mantendo estabilidade com
pequenas melhorias incrementais.&lt;/p&gt;
&lt;h3 id=&quot;escalabilidade&quot;&gt;Escalabilidade&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; oferece escalabilidade horizontal através
de: - Particionamento de tabelas - Sharding - Streaming replication -
Extensão Citus para clusters distribuídos&lt;/p&gt;
&lt;p&gt;A escalabilidade do PostgreSQL é considerada mais amigável e
econômica, especialmente para startups e empresas de médio porte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SQL Server&lt;/strong&gt; tem capacidades de escalabilidade
horizontal menos diretas, sendo mais adequado para organizações com
orçamentos substanciais para infraestrutura de alta capacidade. O SQL
Server 2025 introduziu “Optimized Locking” para reduzir bloqueios em
ambientes de alta concorrência.&lt;/p&gt;
&lt;h2 id=&quot;experiência-do-usuário-e-comunidade&quot;&gt;5. Experiência do Usuário e
Comunidade&lt;/h2&gt;
&lt;h3 id=&quot;postgresql---feedback-da-comunidade&quot;&gt;PostgreSQL - Feedback da
Comunidade&lt;/h3&gt;
&lt;p&gt;Desenvolvedores que utilizam PostgreSQL frequentemente destacam:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pontos Positivos:&lt;/strong&gt; - Comunidade ativa e suporte
gratuito através de fóruns e extensões - Facilidade de instalação em
ambientes Linux - Documentação extensa e de alta qualidade -
Flexibilidade total sem vendor lock-in - Excelente para aplicações
cloud-native e estratégias multi-cloud&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Casos de Uso Preferenciais:&lt;/strong&gt; - Startups tecnológicas
e scale-ups que precisam de capital livre para desenvolvimento -
Aplicações que mesclam dados relacionais e documentos - Sistemas de
gerenciamento de conteúdo (CMS) como WordPress, Drupal e Joomla -
Plataformas de machine learning (para metadados e configurações) -
Serviços financeiros que requerem compliance ACID para OLTP&lt;/p&gt;
&lt;h3 id=&quot;sql-server---feedback-da-comunidade&quot;&gt;SQL Server - Feedback da
Comunidade&lt;/h3&gt;
&lt;p&gt;Usuários do SQL Server relatam:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pontos Positivos:&lt;/strong&gt; - Interface muito amigável e fácil
de usar - Integração perfeita com ferramentas Microsoft (Visual Studio,
Power BI, .NET) - SQL Server Management Studio (SSMS) oferece ambiente
padronizado e gerenciável - Suporte confiável da Microsoft - Recursos
robustos de backup automático - Excelente para reporting e análise de
dados&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desvantagens Relatadas:&lt;/strong&gt; - Custos de licenciamento
podem ser proibitivos conforme a escala aumenta - Ajuste de performance
pode ser intensivo em recursos - Problemas ocasionais de compatibilidade
com ecossistemas não-Microsoft&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Casos de Uso Preferenciais:&lt;/strong&gt; - Empresas .NET com
investimento pesado no framework Microsoft - Cargas de trabalho pesadas
de Business Intelligence e análise de dados - Aplicações centradas em IA
(com recursos de vetor do SQL Server 2025) - Organizações que já
utilizam extensivamente Azure e Power BI&lt;/p&gt;
&lt;h2 id=&quot;segurança-e-compliance&quot;&gt;6. Segurança e Compliance&lt;/h2&gt;
&lt;h3 id=&quot;postgresql-2&quot;&gt;PostgreSQL&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Controles de acesso granulares&lt;/li&gt;
&lt;li&gt;Suporte a SCRAM-SHA-256 para autenticação (mais seguro que MD5)&lt;/li&gt;
&lt;li&gt;Row-Level Security (RLS) para segmentação de permissões&lt;/li&gt;
&lt;li&gt;Criptografia via extensão pgcrypto&lt;/li&gt;
&lt;li&gt;Requer configuração de pg_hba.conf para restrições baseadas em
IP&lt;/li&gt;
&lt;li&gt;Comunidade ativa identifica e corrige vulnerabilidades
regularmente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sql-server-2&quot;&gt;SQL Server&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Integração com Microsoft Entra ID&lt;/li&gt;
&lt;li&gt;Suporte a TDS 8.0 para segurança aprimorada (SQL Server 2025)&lt;/li&gt;
&lt;li&gt;Detecção de anomalias orientada por IA para identificar atividades
incomuns&lt;/li&gt;
&lt;li&gt;Frameworks de conformidade regulatória mais automatizados&lt;/li&gt;
&lt;li&gt;Recursos nativos mais robustos para detecção avançada de
ameaças&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tendências-e-evolução-futura&quot;&gt;7. Tendências e Evolução
Futura&lt;/h2&gt;
&lt;h3 id=&quot;postgresql-3&quot;&gt;PostgreSQL&lt;/h3&gt;
&lt;p&gt;O PostgreSQL está ganhando cada vez mais recursos empresariais e
opções de suporte comercial, mantendo sua filosofia open-source.
Tendências incluem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aceleração do ciclo de inovação com lançamentos anuais
principais&lt;/li&gt;
&lt;li&gt;Crescente adoção empresarial e redução de dependência de
fornecedores comerciais&lt;/li&gt;
&lt;li&gt;Expansão de ferramentas de IA e integração com frameworks
modernos&lt;/li&gt;
&lt;li&gt;Melhorias contínuas em performance e escalabilidade&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sql-server-3&quot;&gt;SQL Server&lt;/h3&gt;
&lt;p&gt;O SQL Server está se tornando mais aberto e flexível:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suporte a Linux e containerização (desde 2017)&lt;/li&gt;
&lt;li&gt;Integração profunda com Azure e serviços cloud&lt;/li&gt;
&lt;li&gt;SQL Server 2025 posicionado como banco de dados preparado para
IA&lt;/li&gt;
&lt;li&gt;Foco em automação e gerenciamento orientado por IA&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;popularidade-e-adoção-no-mercado&quot;&gt;8. Popularidade e Adoção no
Mercado&lt;/h2&gt;
&lt;p&gt;Segundo dados da Statista de junho de 2024:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SQL Server&lt;/strong&gt;: Terceiro SGBD mais popular mundialmente
com 26,63% de market share&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;: Quarto lugar com 17,51% de market share
estimado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambos os sistemas continuam inovando e desenvolvendo-se, mantendo-se
competitivos e relevantes às necessidades empresariais em evolução.&lt;/p&gt;
&lt;h2 id=&quot;conclusão-qual-banco-de-dados-se-destaca&quot;&gt;Conclusão: Qual Banco
de Dados se Destaca?&lt;/h2&gt;
&lt;p&gt;Baseado na análise de artigos técnicos, benchmarks e experiências de
usuários, é possível identificar pontos fortes distintivos em cada
solução:&lt;/p&gt;
&lt;h3 id=&quot;quando-o-postgresql-se-destaca&quot;&gt;Quando o PostgreSQL se
Destaca&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Custo-Benefício Superior&lt;/strong&gt; - Zero custos de
licenciamento - ROI significativamente maior para empresas que investem
o capital economizado em desenvolvimento - Ideal para startups,
scale-ups e organizações com orçamentos limitados&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Performance em Cenários Específicos&lt;/strong&gt; - Consultas
complexas e grandes datasets mostram vantagem clara do PostgreSQL -
Melhor performance em ambientes com alta concorrência de transações -
MVCC proporciona eficiência superior sem bloqueios de leitura&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Flexibilidade e Independência&lt;/strong&gt; - Liberdade total
de vendor lock-in - Ideal para estratégias multi-cloud e cloud-native -
Extensibilidade incomparável através do sistema de extensões&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Comunidade e Inovação&lt;/strong&gt; - Comunidade global ativa e
engajada - Ciclo de inovação acelerado com releases anuais -
Documentação de alta qualidade e recursos gratuitos abundantes&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Versatilidade Técnica&lt;/strong&gt; - Suporte superior a dados
heterogêneos (relacional + JSON) - Tipos de dados especializados e
customizáveis - Melhor escolha para aplicações modernas que mesclam
diferentes paradigmas&lt;/p&gt;
&lt;h3 id=&quot;quando-o-sql-server-se-destaca&quot;&gt;Quando o SQL Server se
Destaca&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Integração com Ecossistema Microsoft&lt;/strong&gt; - Sinergia
perfeita com Azure, Active Directory, Power BI e .NET - Produtividade
maximizada para equipes .NET - Menor curva de aprendizado em ambientes
Microsoft&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Business Intelligence e Analytics&lt;/strong&gt; - Recursos
nativos superiores para BI - Integração com Power BI e Microsoft Fabric
cria stack analytics poderoso - Ideal para manufatura, finanças e varejo
com necessidades intensas de reporting&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Suporte Empresarial Robusto&lt;/strong&gt; - Suporte comercial
confiável da Microsoft - SLAs empresariais e garantias de tempo de
atividade - Menor risco percebido por gestores corporativos&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Recursos Específicos de IA (SQL Server 2025)&lt;/strong&gt; -
Tipo de dados vetorial nativo e indexação DiskANN - Aplicações RAG
inteiramente dentro do banco de dados - Vantagem clara para aplicações
centradas em IA e busca semântica&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Ferramentas de Gerenciamento&lt;/strong&gt; - SQL Server
Management Studio (SSMS) oferece ambiente integrado maduro - Ferramentas
de profiling e monitoramento robustas - Facilidade de governança para
grandes organizações&lt;/p&gt;
&lt;h2 id=&quot;pontos-importantes---o-veredito-final&quot;&gt;Pontos Importantes - O
Veredito Final&lt;/h2&gt;
&lt;p&gt;Com base em evidências de benchmarks, feedback de usuários e análise
técnica, &lt;strong&gt;o PostgreSQL emerge como a escolha superior para a
maioria dos cenários modernos&lt;/strong&gt; pelos seguintes motivos
críticos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Economia Comprovada&lt;/strong&gt;: Sem custos de licenciamento,
o PostgreSQL pode economizar centenas de milhares de dólares em projetos
empresariais, com TCO até 5 vezes menor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Performance Documentada&lt;/strong&gt;: Benchmarks
consistentemente demonstram que o PostgreSQL executa consultas complexas
65% mais rápido e operações básicas até 13 vezes mais rápidas que
alternativas comerciais.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Liberdade Estratégica&lt;/strong&gt;: A independência de
fornecedor único permite flexibilidade estratégica incomparável,
essencial em um mundo multi-cloud.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Inovação Sustentável&lt;/strong&gt;: Com releases anuais e uma
comunidade global ativa, o PostgreSQL demonstra velocidade de inovação
superior, ganhando recursos empresariais enquanto mantém sua essência
open-source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Versatilidade Técnica Real&lt;/strong&gt;: A capacidade de lidar
nativamente com dados relacionais e JSON, tipos customizados e extensões
especializadas faz do PostgreSQL a escolha natural para aplicações
modernas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exceção Importante&lt;/strong&gt;: SQL Server mantém vantagem
decisiva em organizações profundamente investidas no ecossistema
Microsoft, cenários de BI intensivo com Power BI, e aplicações centradas
em IA que podem aproveitar os novos recursos vetoriais do SQL Server
2025.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recomendação Geral&lt;/strong&gt;: Para a grande maioria das
organizações — especialmente startups, empresas tecnológicas, projetos
cloud-native e organizações buscando reduzir custos mantendo capacidades
enterprise — &lt;strong&gt;o PostgreSQL representa a escolha mais inteligente,
versátil e economicamente viável&lt;/strong&gt; para gerenciamento de dados em
2025 e além.&lt;/p&gt;
&lt;p&gt;A decisão final deve considerar o contexto específico de cada
organização, mas as evidências apontam claramente: PostgreSQL oferece
uma combinação superior de performance, custo-benefício e flexibilidade
que o torna a primeira escolha para a maioria dos casos de uso
modernos.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Fontes Consultadas:&lt;/strong&gt; Este artigo foi elaborado com
base em análises técnicas de Bytebase, EDB, Airbyte, Astera, Kinsta,
HakunaMatata Tech, DZone, PlanetScale, MDPI Journal, Crunchy Data, entre
outros, além de reviews de usuários em plataformas como Capterra e
Software Advice, e documentação oficial dos projetos PostgreSQL e
Microsoft SQL Server.&lt;/p&gt;&lt;br /&gt;</description><link>http://www.blogdokdsti.com.br/2026/01/postgresql-vs-sql-server-analise.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKFoJy2Ltp9tRMUJnvTx01Cr32laWbPXDUmwbKKM0dhi_YVZEHZKoU9n0FwzsaoUltv2fCyPoM3QKZuKDMs-rfJ-CzLtuHoHF53qp2gbsR2Or1G6-2ROx_N_GZzLUqrY7RGud6tnVaOqBXieGgruznvGEDTcyhwDjGZYkfQwQmkYqmg9eV9nBeAm7wuPA/s72-c/postgresql-vs-sql-server-comparacao-2025.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-7700209091923297826</guid><pubDate>Sun, 25 Jan 2026 03:09:00 +0000</pubDate><atom:updated>2026-01-25T22:34:06.169-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>Como Descobrir Pontos de Erro no Código de Forma Fácil e Intuitiva Usando Sua IDE</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJrpN1EPzvzi839MkxVU-ot71N91Ao_Gcm5RUkGVt9HNp02tLkNs_jzIRsvZbYf5zE9IMCVBFYgp80fHZKzawVx3fPF3YukDHhABVBRFIGDhQaCrKkGMsaFzVDbQlrJUb70qe1NQNIFuj1NXYTN9XL9cvZ3f7-qf6FMMSqvcSBXfCElKonIEVz32g2jIQ/s540/descobrir-erros-codigo-ide-debugger-console.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Tela do IntelliJ ou Visual Studio Code com destaque para o console de erro e debugger&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJrpN1EPzvzi839MkxVU-ot71N91Ao_Gcm5RUkGVt9HNp02tLkNs_jzIRsvZbYf5zE9IMCVBFYgp80fHZKzawVx3fPF3YukDHhABVBRFIGDhQaCrKkGMsaFzVDbQlrJUb70qe1NQNIFuj1NXYTN9XL9cvZ3f7-qf6FMMSqvcSBXfCElKonIEVz32g2jIQ/s16000/descobrir-erros-codigo-ide-debugger-console.jpg&quot; title=&quot;Tela do IntelliJ ou Visual Studio Code com destaque para o console de erro e debugger&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Você já se deparou com aquele erro&amp;nbsp;&lt;strong data-end=&quot;515&quot; data-start=&quot;492&quot;&gt;difícil de rastrear&lt;/strong&gt;&amp;nbsp;no código, mas não sabia como encontrar exatamente onde ele estava estourando? Se você está com dificuldades para identificar falhas na sua aplicação, este artigo é para você!&lt;/p&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;986&quot; data-start=&quot;693&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Ao longo deste conteúdo, vamos explorar&amp;nbsp;&lt;strong data-end=&quot;765&quot; data-start=&quot;733&quot;&gt;métodos simples e eficientes&lt;/strong&gt;&amp;nbsp;para&amp;nbsp;&lt;strong data-end=&quot;801&quot; data-start=&quot;771&quot;&gt;descobrir e corrigir erros&lt;/strong&gt;&amp;nbsp;no seu código diretamente pela&amp;nbsp;&lt;strong data-end=&quot;840&quot; data-start=&quot;833&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+IDE&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;IDE&lt;/a&gt;&lt;/strong&gt;. Com estas técnicas, você vai aprender a&amp;nbsp;&lt;strong data-end=&quot;917&quot; data-start=&quot;882&quot;&gt;localizar rapidamente problemas&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;952&quot; data-start=&quot;919&quot;&gt;entender as&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=tipos+de+mensagens+de+erro+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;mensagens de erro&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;985&quot; data-start=&quot;955&quot;&gt;melhorar sua produtividade&lt;/strong&gt;.&lt;/p&gt;&lt;hr data-end=&quot;991&quot; data-start=&quot;988&quot; style=&quot;font-size: medium; font-weight: 400;&quot; /&gt;&lt;/h1&gt;&lt;h2 data-end=&quot;1053&quot; data-start=&quot;993&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;1053&quot; data-start=&quot;999&quot;&gt;Por Que Usar a IDE Para Encontrar Erros no Código?&lt;/strong&gt;&lt;/h2&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;1411&quot; data-start=&quot;1055&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;As&amp;nbsp;&lt;strong data-end=&quot;1075&quot; data-start=&quot;1058&quot;&gt;IDEs modernas&lt;/strong&gt;, como&amp;nbsp;&lt;strong data-end=&quot;1099&quot; data-start=&quot;1082&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=IntelliJ+IDEA&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;IntelliJ IDEA&lt;/a&gt;&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;1123&quot; data-start=&quot;1101&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Visual+Studio+Code&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;1137&quot; data-start=&quot;1126&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Eclipse+IDE&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Eclipse&lt;/a&gt;&lt;/strong&gt;, oferecem uma variedade de&amp;nbsp;&lt;strong data-end=&quot;1190&quot; data-start=&quot;1165&quot;&gt;ferramentas poderosas&lt;/strong&gt;&amp;nbsp;que podem te ajudar a identificar problemas no seu código sem perder tempo.&amp;nbsp;&lt;strong data-end=&quot;1284&quot; data-start=&quot;1267&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Autocompletar&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Autocompletar&lt;/a&gt;&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;1310&quot; data-start=&quot;1286&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+depura%C3%A7%C3%A3o+interativa&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;depuração interativa&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;1335&quot; data-start=&quot;1313&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+an%C3%A1lises+est%C3%A1ticas&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;análises estáticas&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;são apenas algumas das funcionalidades que tornam esse processo mais fácil.&lt;/p&gt;&lt;p data-end=&quot;1573&quot; data-start=&quot;1413&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Com o uso adequado dessas ferramentas,&amp;nbsp;&lt;strong data-end=&quot;1468&quot; data-start=&quot;1452&quot;&gt;muitos erros&lt;/strong&gt;&amp;nbsp;podem ser&amp;nbsp;&lt;strong data-end=&quot;1509&quot; data-start=&quot;1479&quot;&gt;identificados e corrigidos&lt;/strong&gt;&amp;nbsp;ainda durante a escrita do código, antes mesmo de você rodá-lo.&lt;/p&gt;&lt;hr data-end=&quot;1578&quot; data-start=&quot;1575&quot; style=&quot;font-size: medium; font-weight: 400;&quot; /&gt;&lt;/h1&gt;&lt;h2 data-end=&quot;1637&quot; data-start=&quot;1580&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;1637&quot; data-start=&quot;1586&quot;&gt;Métodos Fáceis Para Identificar Erros no Código&lt;/strong&gt;&lt;/h2&gt;&lt;h3 data-end=&quot;1681&quot; data-start=&quot;1639&quot;&gt;1️⃣&amp;nbsp;&lt;strong data-end=&quot;1681&quot; data-start=&quot;1647&quot;&gt;Usando a Depuração (Debugging)&lt;/strong&gt;&lt;/h3&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;1904&quot; data-start=&quot;1683&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;O&amp;nbsp;&lt;strong data-end=&quot;1697&quot; data-start=&quot;1685&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+debugger&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;debugger&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;é uma das ferramentas mais poderosas em qualquer IDE. Ele permite que você&amp;nbsp;&lt;strong data-end=&quot;1801&quot; data-start=&quot;1773&quot;&gt;faça uma pausa no código&lt;/strong&gt;&amp;nbsp;enquanto ele está sendo executado,&amp;nbsp;&lt;strong data-end=&quot;1864&quot; data-start=&quot;1837&quot;&gt;inspecione as variáveis&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;1903&quot; data-start=&quot;1867&quot;&gt;caminhe pelas linhas de execução&lt;/strong&gt;.&lt;/p&gt;&lt;/h1&gt;&lt;h4 data-end=&quot;1924&quot; data-start=&quot;1906&quot;&gt;✔️ Como usar:&lt;/h4&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;ul data-end=&quot;2172&quot; data-start=&quot;1925&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;li data-end=&quot;2044&quot; data-start=&quot;1925&quot;&gt;&lt;p data-end=&quot;2044&quot; data-start=&quot;1927&quot;&gt;&lt;strong data-end=&quot;1969&quot; data-start=&quot;1927&quot;&gt;No IntelliJ IDEA ou Visual Studio Code&lt;/strong&gt;, você pode clicar no ponto em que deseja parar (o chamado&amp;nbsp;&lt;strong data-end=&quot;2042&quot; data-start=&quot;2028&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+breakpoint+debugging&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;breakpoint&lt;/a&gt;&lt;/strong&gt;).&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;2172&quot; data-start=&quot;2045&quot;&gt;&lt;p data-end=&quot;2172&quot; data-start=&quot;2047&quot;&gt;Durante a execução, o código será interrompido no ponto do breakpoint, permitindo que você&amp;nbsp;&lt;strong data-end=&quot;2171&quot; data-start=&quot;2138&quot;&gt;analise o estado da aplicação&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2322&quot; data-start=&quot;2174&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;127&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Ddebugger&amp;amp;ved=1t%3A269313&amp;amp;bbid=3704563907057270487&amp;amp;bpid=7700209091923297826&quot; width=&quot;200&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;O&amp;nbsp;&lt;strong data-end=&quot;2188&quot; data-start=&quot;2176&quot;&gt;debugger&lt;/strong&gt;&amp;nbsp;é essencial quando você não sabe exatamente onde o erro está ocorrendo, mas tem uma boa ideia de qual parte do código está envolvida.&lt;br /&gt;&lt;hr data-end=&quot;2327&quot; data-start=&quot;2324&quot; style=&quot;font-size: medium; font-weight: 400;&quot; /&gt;&lt;/h1&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfxPH1QckBkjaJWHcbc_UsDOt7MnqZmBynfYwsiyBMwwg4tQdhYDfkOPcypwA0ZhTPHoYs6EFbYuLUMwzJHBH13NBlz1zmb3vK-PlBUMHBdTNuZG08x16xM-F3DmilzRZVgRkr92mKRB-562mALVBiXFdX_oZVu_-McQIfWe4Fgwyrn5Fq9KWICIjldxI/s540/porque-seu-codigo-falha-debugger-ide.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Tela da IDE mostrando como encontrar erros no código com debugger e logs de erro em tempo real&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfxPH1QckBkjaJWHcbc_UsDOt7MnqZmBynfYwsiyBMwwg4tQdhYDfkOPcypwA0ZhTPHoYs6EFbYuLUMwzJHBH13NBlz1zmb3vK-PlBUMHBdTNuZG08x16xM-F3DmilzRZVgRkr92mKRB-562mALVBiXFdX_oZVu_-McQIfWe4Fgwyrn5Fq9KWICIjldxI/s16000/porque-seu-codigo-falha-debugger-ide.jpg&quot; title=&quot;Tela da IDE mostrando como encontrar erros no código com debugger e logs de erro em tempo real&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 data-end=&quot;2367&quot; data-start=&quot;2329&quot;&gt;2️⃣&amp;nbsp;&lt;strong data-end=&quot;2367&quot; data-start=&quot;2337&quot;&gt;Observando os Logs de Erro&lt;/strong&gt;&lt;/h3&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;2484&quot; data-start=&quot;2369&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Muitas vezes, as&amp;nbsp;&lt;strong data-end=&quot;2407&quot; data-start=&quot;2386&quot;&gt;mensagens de erro&lt;/strong&gt;&amp;nbsp;são um&amp;nbsp;&lt;strong data-end=&quot;2441&quot; data-start=&quot;2415&quot;&gt;banco de dados valioso&lt;/strong&gt;&amp;nbsp;de informações sobre onde o código falhou.&lt;/p&gt;&lt;/h1&gt;&lt;h4 data-end=&quot;2504&quot; data-start=&quot;2486&quot;&gt;✔️ Como usar:&lt;/h4&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;ul data-end=&quot;2734&quot; data-start=&quot;2505&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;li data-end=&quot;2611&quot; data-start=&quot;2505&quot;&gt;&lt;p data-end=&quot;2611&quot; data-start=&quot;2507&quot;&gt;&lt;strong data-end=&quot;2536&quot; data-start=&quot;2507&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=logs+de+erro+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Verifique os logs de erro&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;gerados pela IDE ou pelo próprio framework (como Spring, Django, Node.js).&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;2734&quot; data-start=&quot;2612&quot;&gt;&lt;p data-end=&quot;2734&quot; data-start=&quot;2614&quot;&gt;&lt;strong data-end=&quot;2636&quot; data-start=&quot;2614&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=como+ler+stack+trace&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Leia a stack trace&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;com atenção. Ela geralmente inclui o nome do arquivo, número da linha e a exceção que foi gerada.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2902&quot; data-start=&quot;2736&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;strong data-end=&quot;2753&quot; data-start=&quot;2736&quot;&gt;Dica de ouro:&lt;/strong&gt;&amp;nbsp;&lt;strong data-end=&quot;2778&quot; data-start=&quot;2754&quot;&gt;Nunca ignore os logs&lt;/strong&gt;! Mesmo que a mensagem de erro pareça confusa à primeira vista, ela pode apontar diretamente para o local do erro no código.&lt;/p&gt;&lt;hr data-end=&quot;2907&quot; data-start=&quot;2904&quot; style=&quot;font-size: medium; font-weight: 400;&quot; /&gt;&lt;/h1&gt;&lt;h3 data-end=&quot;2963&quot; data-start=&quot;2909&quot;&gt;3️⃣&amp;nbsp;&lt;strong data-end=&quot;2963&quot; data-start=&quot;2917&quot;&gt;Utilizando Analisadores de Código Estático&lt;/strong&gt;&lt;/h3&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;3155&quot; data-start=&quot;2965&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Ferramentas de&amp;nbsp;&lt;strong data-end=&quot;3010&quot; data-start=&quot;2980&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+an%C3%A1lise+est%C3%A1tica+de+c%C3%B3digo&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;análise estática de código&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;podem detectar&amp;nbsp;&lt;strong data-end=&quot;3042&quot; data-start=&quot;3026&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=erros+comuns+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;erros comuns&lt;/a&gt;&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;3071&quot; data-start=&quot;3044&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=problemas+de+desempenho+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;problemas de desempenho&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;3103&quot; data-start=&quot;3074&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=inconsist%C3%AAncias+no+estilo+c%C3%B3digo&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;inconsistências no estilo&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;do código, antes mesmo de o programa ser executado.&lt;/p&gt;&lt;/h1&gt;&lt;h4 data-end=&quot;3175&quot; data-start=&quot;3157&quot;&gt;✔️ Como usar:&lt;/h4&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;ul data-end=&quot;3427&quot; data-start=&quot;3176&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;li data-end=&quot;3292&quot; data-start=&quot;3176&quot;&gt;&lt;p data-end=&quot;3292&quot; data-start=&quot;3178&quot;&gt;&lt;strong data-end=&quot;3209&quot; data-start=&quot;3178&quot;&gt;Instale e configure plugins&lt;/strong&gt;&amp;nbsp;de análise estática, como&amp;nbsp;&lt;strong data-end=&quot;3249&quot; data-start=&quot;3236&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=SonarLint&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;SonarLint&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;ou&amp;nbsp;&lt;strong data-end=&quot;3267&quot; data-start=&quot;3253&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=CheckStyle&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;CheckStyle&lt;/a&gt;&lt;/strong&gt;, diretamente na sua IDE.&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3427&quot; data-start=&quot;3293&quot;&gt;&lt;p data-end=&quot;3427&quot; data-start=&quot;3295&quot;&gt;Esses plugins vão exibir&amp;nbsp;&lt;strong data-end=&quot;3343&quot; data-start=&quot;3320&quot;&gt;alertas e sugestões&lt;/strong&gt;&amp;nbsp;em tempo real enquanto você digita o código, ajudando a evitar problemas no futuro.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3576&quot; data-start=&quot;3429&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;strong data-end=&quot;3449&quot; data-start=&quot;3429&quot;&gt;Benefício extra:&lt;/strong&gt;&amp;nbsp;Essas ferramentas ajudam também a manter seu código&amp;nbsp;&lt;strong data-end=&quot;3524&quot; data-start=&quot;3502&quot;&gt;limpo e organizado&lt;/strong&gt;, evitando bugs causados por padrões inconsistentes.&lt;/p&gt;&lt;hr data-end=&quot;3581&quot; data-start=&quot;3578&quot; style=&quot;font-size: medium; font-weight: 400;&quot; /&gt;&lt;/h1&gt;&lt;h3 data-end=&quot;3634&quot; data-start=&quot;3583&quot;&gt;4️⃣&amp;nbsp;&lt;strong data-end=&quot;3634&quot; data-start=&quot;3591&quot;&gt;Verificando o Console de Saída (Output)&lt;/strong&gt;&lt;/h3&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;3806&quot; data-start=&quot;3636&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Após rodar seu programa, o&amp;nbsp;&lt;strong data-end=&quot;3683&quot; data-start=&quot;3663&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=console+de+sa%C3%ADda+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;console de saída&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;(também conhecido como&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=terminal+prompt+de+comando&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;terminal ou prompt de comando&lt;/a&gt;) exibe todos os logs e mensagens de erro gerados durante a execução.&lt;/p&gt;&lt;/h1&gt;&lt;h4 data-end=&quot;3826&quot; data-start=&quot;3808&quot;&gt;✔️ Como usar:&lt;/h4&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;ul data-end=&quot;4081&quot; data-start=&quot;3827&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;li data-end=&quot;3946&quot; data-start=&quot;3827&quot;&gt;&lt;p data-end=&quot;3946&quot; data-start=&quot;3829&quot;&gt;&lt;strong data-end=&quot;3861&quot; data-start=&quot;3829&quot;&gt;Verifique a saída do console&lt;/strong&gt;&amp;nbsp;para ver&amp;nbsp;&lt;strong data-end=&quot;3903&quot; data-start=&quot;3871&quot;&gt;mensagens de erro detalhadas&lt;/strong&gt;&amp;nbsp;e o&amp;nbsp;&lt;strong data-end=&quot;3929&quot; data-start=&quot;3908&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=fluxo+de+execu%C3%A7%C3%A3o+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;fluxo de execução&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;do seu programa.&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;4081&quot; data-start=&quot;3947&quot;&gt;&lt;p data-end=&quot;4081&quot; data-start=&quot;3949&quot;&gt;Muitas vezes, você pode capturar o erro específico e até&amp;nbsp;&lt;strong data-end=&quot;4042&quot; data-start=&quot;4006&quot;&gt;identificar onde o código falhou&lt;/strong&gt;&amp;nbsp;observando o que foi impresso na tela.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/h1&gt;&lt;h3 data-end=&quot;4150&quot; data-start=&quot;4083&quot;&gt;5️⃣&amp;nbsp;&lt;strong data-end=&quot;4150&quot; data-start=&quot;4091&quot;&gt;Explorando os Tipos de Erros Comuns (Syntax vs Runtime)&lt;/strong&gt;&lt;/h3&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;4293&quot; data-start=&quot;4152&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Entender a diferença entre&amp;nbsp;&lt;strong data-end=&quot;4199&quot; data-start=&quot;4179&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=erros+de+sintaxe+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;erros de sintaxe&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;4242&quot; data-start=&quot;4202&quot;&gt;erros de tempo de execução (runtime)&lt;/strong&gt;&amp;nbsp;pode te ajudar a localizar rapidamente o problema.&lt;/p&gt;&lt;/h1&gt;&lt;h4 data-end=&quot;4313&quot; data-start=&quot;4295&quot;&gt;✔️ Como usar:&lt;/h4&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;ul data-end=&quot;4642&quot; data-start=&quot;4314&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;li data-end=&quot;4480&quot; data-start=&quot;4314&quot;&gt;&lt;p data-end=&quot;4480&quot; data-start=&quot;4316&quot;&gt;&lt;strong data-end=&quot;4336&quot; data-start=&quot;4316&quot;&gt;Erros de sintaxe&lt;/strong&gt;&amp;nbsp;são geralmente identificados instantaneamente pela IDE, como&amp;nbsp;&lt;strong data-end=&quot;4419&quot; data-start=&quot;4398&quot;&gt;erro de digitação&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;4448&quot; data-start=&quot;4421&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=par%C3%AAnteses+n%C3%A3o+fechados+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;parênteses não fechados&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;4479&quot; data-start=&quot;4451&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=falta+de+ponto+e+v%C3%ADrgula+programa%C3%A7%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;falta de ponto e vírgula&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;4642&quot; data-start=&quot;4481&quot;&gt;&lt;p data-end=&quot;4642&quot; data-start=&quot;4483&quot;&gt;&lt;strong data-end=&quot;4503&quot; data-start=&quot;4483&quot;&gt;Erros de runtime&lt;/strong&gt;&amp;nbsp;são mais difíceis, pois só aparecem quando o código é executado. Utilize o&amp;nbsp;&lt;strong data-end=&quot;4591&quot; data-start=&quot;4579&quot;&gt;debugger&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;4601&quot; data-start=&quot;4593&quot;&gt;logs&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;4624&quot; data-start=&quot;4604&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+testes+unit%C3%A1rios&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;testes unitários&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;para detectá-los.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-end=&quot;4647&quot; data-start=&quot;4644&quot; style=&quot;font-size: medium; font-weight: 400;&quot; /&gt;&lt;/h1&gt;&lt;h2 data-end=&quot;4692&quot; data-start=&quot;4649&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;4692&quot; data-start=&quot;4655&quot;&gt;Ferramentas e Recursos Adicionais&lt;/strong&gt;&lt;/h2&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;4837&quot; data-start=&quot;4694&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Além dos métodos já mencionados, algumas IDEs oferecem&amp;nbsp;&lt;strong data-end=&quot;4771&quot; data-start=&quot;4749&quot;&gt;ferramentas extras&lt;/strong&gt;&amp;nbsp;que podem ser úteis no processo de depuração e correção de erros:&lt;/p&gt;&lt;ul data-end=&quot;5334&quot; data-start=&quot;4839&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;li data-end=&quot;5019&quot; data-start=&quot;4839&quot;&gt;&lt;p data-end=&quot;5019&quot; data-start=&quot;4841&quot;&gt;&lt;strong data-end=&quot;4862&quot; data-start=&quot;4841&quot;&gt;Testes Unitários:&lt;/strong&gt;&amp;nbsp;Use ferramentas como&amp;nbsp;&lt;strong data-end=&quot;4893&quot; data-start=&quot;4884&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=JUnit+testing&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;JUnit&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;(Java),&amp;nbsp;&lt;strong data-end=&quot;4912&quot; data-start=&quot;4902&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=pytest+testing&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;pytest&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;(Python) ou&amp;nbsp;&lt;strong data-end=&quot;4933&quot; data-start=&quot;4925&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Jest+testing&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Jest&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;(JavaScript) para garantir que seu código funciona corretamente em pequenas unidades.&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;5143&quot; data-start=&quot;5020&quot;&gt;&lt;p data-end=&quot;5143&quot; data-start=&quot;5022&quot;&gt;&lt;strong data-end=&quot;5052&quot; data-start=&quot;5022&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Live+Templates+e+Snippets&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Live Templates e Snippets&lt;/a&gt;:&lt;/strong&gt;&amp;nbsp;Salve trechos de código comuns para acelerar o processo de desenvolvimento e evitar erros.&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;5334&quot; data-start=&quot;5144&quot;&gt;&lt;p data-end=&quot;5334&quot; data-start=&quot;5146&quot;&gt;&lt;strong data-end=&quot;5181&quot; data-start=&quot;5146&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Plugins+de+Integra%C3%A7%C3%A3o+Cont%C3%ADnua&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8603121202188207198&quot; target=&quot;_blank&quot;&gt;Plugins de Integração Contínua&lt;/a&gt;:&lt;/strong&gt;&amp;nbsp;Ferramentas como&amp;nbsp;&lt;strong data-end=&quot;5210&quot; data-start=&quot;5199&quot;&gt;Jenkins&lt;/strong&gt;&amp;nbsp;ou&amp;nbsp;&lt;strong data-end=&quot;5232&quot; data-start=&quot;5214&quot;&gt;GitHub Actions&lt;/strong&gt;&amp;nbsp;podem realizar&amp;nbsp;&lt;strong data-end=&quot;5272&quot; data-start=&quot;5248&quot;&gt;análises automáticas&lt;/strong&gt;&amp;nbsp;e detectar falhas no código sempre que uma alteração é feita.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-end=&quot;5339&quot; data-start=&quot;5336&quot; style=&quot;font-size: medium; font-weight: 400;&quot; /&gt;&lt;/h1&gt;&lt;h2 data-end=&quot;5410&quot; data-start=&quot;5341&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;5410&quot; data-start=&quot;5347&quot;&gt;Conclusão: Melhore sua Eficiência na Identificação de Erros&lt;/strong&gt;&lt;/h2&gt;&lt;h1 data-end=&quot;451&quot; data-start=&quot;362&quot;&gt;&lt;p data-end=&quot;5681&quot; data-start=&quot;5412&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;A capacidade de&amp;nbsp;&lt;strong data-end=&quot;5472&quot; data-start=&quot;5428&quot;&gt;encontrar rapidamente os erros no código&lt;/strong&gt;&amp;nbsp;é uma das habilidades mais valiosas de um programador. Com a&amp;nbsp;&lt;strong data-end=&quot;5554&quot; data-start=&quot;5534&quot;&gt;ajuda da sua IDE&lt;/strong&gt;, depuração, logs e outras ferramentas, você pode&amp;nbsp;&lt;strong data-end=&quot;5624&quot; data-start=&quot;5604&quot;&gt;economizar tempo&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;5647&quot; data-start=&quot;5626&quot;&gt;evitar frustração&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;5680&quot; data-start=&quot;5650&quot;&gt;aumentar sua produtividade&lt;/strong&gt;.&lt;/p&gt;&lt;p style=&quot;font-size: medium; font-weight: 400;&quot;&gt;&lt;/p&gt;&lt;p data-end=&quot;5847&quot; data-start=&quot;5683&quot; style=&quot;font-size: medium; font-weight: 400;&quot;&gt;Além disso,&amp;nbsp;&lt;strong data-end=&quot;5726&quot; data-start=&quot;5695&quot;&gt;bons hábitos de codificação&lt;/strong&gt;, como usar&amp;nbsp;&lt;strong data-end=&quot;5758&quot; data-start=&quot;5738&quot;&gt;análise estática&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;5794&quot; data-start=&quot;5761&quot;&gt;escrever testes automatizados&lt;/strong&gt;, vão te ajudar a evitar muitos erros desde o início.&lt;/p&gt;&lt;/h1&gt;</description><link>http://www.blogdokdsti.com.br/2026/01/debug-sem-sofrer-ide.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJrpN1EPzvzi839MkxVU-ot71N91Ao_Gcm5RUkGVt9HNp02tLkNs_jzIRsvZbYf5zE9IMCVBFYgp80fHZKzawVx3fPF3YukDHhABVBRFIGDhQaCrKkGMsaFzVDbQlrJUb70qe1NQNIFuj1NXYTN9XL9cvZ3f7-qf6FMMSqvcSBXfCElKonIEVz32g2jIQ/s72-c/descobrir-erros-codigo-ide-debugger-console.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-8340562011368506210</guid><pubDate>Fri, 09 Jan 2026 03:12:00 +0000</pubDate><atom:updated>2026-01-16T13:13:01.118-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><category domain="http://www.blogger.com/atom/ns#">Segurança Digital</category><title>O Golpe Mais Perigoso do Celular: Como se Proteger do SIM Swap</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNvSDcmJqxn-0Ywh72f-MpFgF1m4BCV8QiUA305EI-85SSdJn3AfkE22P0h5DV1qplZC5o76dyCn-LF4C41mz5BXNQ0ua-th5askkdfKY1IPJxFKwgCCNArNhg6P9tV-BKsZJsess1cruOszmZWqNEJZpQ7j1jafvTxStYv3Lh2Tj17ssxXwrD-52oy6Y/s540/golpe-sim-swap-protecao-celular-chip.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;O Golpe Mais Perigoso do Celular: Como se Proteger do SIM Swap&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNvSDcmJqxn-0Ywh72f-MpFgF1m4BCV8QiUA305EI-85SSdJn3AfkE22P0h5DV1qplZC5o76dyCn-LF4C41mz5BXNQ0ua-th5askkdfKY1IPJxFKwgCCNArNhg6P9tV-BKsZJsess1cruOszmZWqNEJZpQ7j1jafvTxStYv3Lh2Tj17ssxXwrD-52oy6Y/s16000/golpe-sim-swap-protecao-celular-chip.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Introdução&lt;/h2&gt;
        &lt;p&gt;Senhas fortes, antivírus atualizado, cuidado com links suspeitos - a maioria das pessoas conhece essas práticas básicas de segurança digital. Porém, existe uma vulnerabilidade que passa despercebida pela maioria dos usuários: o chip do celular. E é justamente através dele que acontece um dos golpes mais silenciosos e devastadores da atualidade: o &lt;strong&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+SIM+Swap&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;SIM Swap&lt;/a&gt;&lt;/strong&gt; (ou troca de chip).&lt;/p&gt;

        &lt;p&gt;O que torna esse golpe particularmente perigoso é que ele não depende de você clicar em links maliciosos, baixar aplicativos suspeitos ou cair em conversas fraudulentas no WhatsApp. Em muitos casos, a vítima só percebe quando já perdeu o controle completo de suas contas digitais.&lt;/p&gt;

        &lt;h2&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DO%2520Que%2520%25C3%25A9%2520o%2520Golpe%2520do%2520SIM%2520Swap&amp;amp;ved=1t%3A269313&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;O Que é o Golpe do SIM Swap?&lt;/h2&gt;
        &lt;p&gt;O SIM Swap é uma fraude onde criminosos conseguem transferir seu número de telefone para outro chip que fica em posse deles. O processo é simples, mas devastador: seu chip para de funcionar subitamente - sem sinal, sem ligações, sem internet móvel.&lt;/p&gt;

        &lt;p&gt;Muitas pessoas acreditam que se trata apenas de um problema temporário da operadora, mas a realidade é bem mais grave: o número foi sequestrado.&lt;/p&gt;

        &lt;h3&gt;Por Que Seu Chip é Tão Valioso?&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP7MhZp1j61edNmXeAEpdg6EQbCuBAwjpFEyYoJBYALG-AwXSbB1ddIqElFsyo6dYHptnrXuOnjjdNCM-Asi_78-GsariG_5veVH-44YawwRqodHc8kbciJkh4gKql3HryWE-lSlOCvojaS_vo3J3kRQYMWBVt1LrCC9044fxtjggbreFXkjYA9fM_4cg/s540/como-configurar-pin-sim-card-passo-a-passo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;O Que é o Golpe do SIM Swap?&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP7MhZp1j61edNmXeAEpdg6EQbCuBAwjpFEyYoJBYALG-AwXSbB1ddIqElFsyo6dYHptnrXuOnjjdNCM-Asi_78-GsariG_5veVH-44YawwRqodHc8kbciJkh4gKql3HryWE-lSlOCvojaS_vo3J3kRQYMWBVt1LrCC9044fxtjggbreFXkjYA9fM_4cg/s16000/como-configurar-pin-sim-card-passo-a-passo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
        &lt;p&gt;Hoje, o chip do celular funciona como a chave mestra da sua vida digital. É através dele que chegam:&lt;/p&gt;
        
        &lt;ul&gt;
            &lt;li&gt;Códigos de verificação do WhatsApp&lt;/li&gt;
            &lt;li&gt;Confirmações do Instagram e Facebook&lt;/li&gt;
            &lt;li&gt;Recuperação de senha do Gmail&lt;/li&gt;
            &lt;li&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=autentica%C3%A7%C3%A3o+banc%C3%A1ria&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;Autenticação bancária&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Verificação de &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=aplicativos+de+investimento+seguran%C3%A7a&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;aplicativos de investimento&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Acesso a diversas redes sociais&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p&gt;Quando alguém toma o controle do seu chip, essa pessoa não precisa adivinhar suas senhas. Basta solicitar a recuperação de conta e receber todos os códigos de verificação no lugar de você.&lt;/p&gt;

        &lt;h2&gt;Como Funciona o Golpe na Prática&lt;/h2&gt;
        &lt;p&gt;O processo de execução do SIM Swap segue geralmente estas etapas:&lt;/p&gt;

        &lt;h3&gt;1. Coleta de Informações&lt;/h3&gt;
        &lt;p&gt;O criminoso reúne dados pessoais básicos sobre a vítima: nome completo, &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=o+que+%C3%A9+CPF&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;CPF&lt;/a&gt;, data de nascimento ou informações vazadas em sites.&lt;/p&gt;

        &lt;h3&gt;2. Contato com a Operadora&lt;/h3&gt;
        &lt;p&gt;Com esses dados em mãos, o golpista entra em contato com a operadora se passando pela vítima e solicita a troca do chip. Em alguns casos, o golpe acontece com ajuda interna, tornando a detecção ainda mais difícil.&lt;/p&gt;

        &lt;h3&gt;3. Transferência do Número&lt;/h3&gt;
        &lt;p&gt;O número é transferido para o chip que está com o criminoso. Neste momento, o chip original para de funcionar completamente.&lt;/p&gt;

        &lt;h3&gt;4. Invasão de Contas&lt;/h3&gt;
        &lt;p&gt;Com o número ativo, o golpista inicia a invasão sistemática:&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;Primeiro, acessa o e-mail usando a opção &quot;esqueci minha senha&quot;&lt;/li&gt;
            &lt;li&gt;Depois, invade as redes sociais&lt;/li&gt;
            &lt;li&gt;Por fim, tenta acessar aplicativos bancários&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p&gt;Em cada etapa, os códigos de verificação por &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+SMS&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;SMS&lt;/a&gt; são recebidos pelo criminoso. Em poucos minutos, contas são invadidas, senhas são alteradas e o dono verdadeiro fica completamente bloqueado.&lt;/p&gt;

        &lt;h2&gt;Mitos e Verdades Sobre o Golpe&lt;/h2&gt;

        &lt;div class=&quot;danger-box&quot;&gt;
            &lt;h4&gt;Mito: &quot;Só acontece com pessoas famosas ou ricas&quot;&lt;/h4&gt;
            &lt;p&gt;&lt;strong&gt;Realidade:&lt;/strong&gt; O golpe atinge pessoas comuns todos os dias. Qualquer pessoa com informações básicas expostas pode ser vítima.&lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;danger-box&quot;&gt;
            &lt;h4&gt;Mito: &quot;Não uso SMS, então estou seguro&quot;&lt;/h4&gt;
            &lt;p&gt;&lt;strong&gt;Realidade:&lt;/strong&gt; O problema não é conversar por SMS. O SMS se tornou a principal forma de verificação de identidade digital. Mesmo que você nunca leia mensagens, elas continuam sendo usadas como chave de segurança.&lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;danger-box&quot;&gt;
            &lt;h4&gt;Mito: &quot;Tenho senha forte, estou protegido&quot;&lt;/h4&gt;
            &lt;p&gt;&lt;strong&gt;Realidade:&lt;/strong&gt; Com acesso ao seu número, o golpista não precisa descobrir sua senha. Ele simplesmente a redefine usando os códigos de recuperação.&lt;/p&gt;
        &lt;/div&gt;

        &lt;h2&gt;Os Sinais de Alerta&lt;/h2&gt;
        &lt;p&gt;O golpe do SIM Swap costuma dar um sinal claro, mas muitas pessoas ignoram ou demoram a reagir:&lt;/p&gt;

        &lt;div class=&quot;alert-box&quot;&gt;
            &lt;p&gt;&lt;strong&gt;Principal Alerta:&lt;/strong&gt; Seu celular perde o sinal completamente e não retorna. Não é ficar alguns minutos sem internet - é perder totalmente o sinal da operadora: sem ligações, sem SMS, sem dados móveis.&lt;/p&gt;
            &lt;p&gt;Se isso acontecer e você não estiver em um local sem cobertura, &lt;strong&gt;desconfie imediatamente&lt;/strong&gt;. Este pode ser o exato momento em que seu chip foi transferido para outro aparelho.&lt;/p&gt;
        &lt;/div&gt;

        &lt;h2&gt;Como se Proteger: Guia Completo de Segurança&lt;/h2&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBk859Q9fuos7pq6V8RcQEbwln7cprQqJAHrSZeF48sva5b6qH5ZTJ_XRnZp_f0uumZlkLUXuFXRr9F5GVvcKvSe847mDEZN3XbRQ9LeG8BdvY926TBAL8Ds3US9QzEa2ABM_qEoQ6C9ruY7_bG8ZTheTKqvxkSbPXK50A_ZSUUIhJT-MEMOoJAaw1Ny0/s540/seguranca-digital-protecao-chip-celular.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Como se Proteger: Guia Completo de Segurança&quot; border=&quot;0&quot; data-original-height=&quot;540&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBk859Q9fuos7pq6V8RcQEbwln7cprQqJAHrSZeF48sva5b6qH5ZTJ_XRnZp_f0uumZlkLUXuFXRr9F5GVvcKvSe847mDEZN3XbRQ9LeG8BdvY926TBAL8Ds3US9QzEa2ABM_qEoQ6C9ruY7_bG8ZTheTKqvxkSbPXK50A_ZSUUIhJT-MEMOoJAaw1Ny0/s16000/seguranca-digital-protecao-chip-celular.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

        &lt;h3&gt;1. Proteja Suas Informações Pessoais&lt;/h3&gt;
        &lt;p&gt;Este é o ponto de partida. Quanto menos informações pessoais públicas, melhor.&lt;/p&gt;

        &lt;p&gt;&lt;strong&gt;Evite expor:&lt;/strong&gt;&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;Data de nascimento completa&lt;/li&gt;
            &lt;li&gt;Nome completo da mãe&lt;/li&gt;
            &lt;li&gt;Endereço residencial&lt;/li&gt;
            &lt;li&gt;Rotina diária detalhada&lt;/li&gt;
            &lt;li&gt;Local de trabalho&lt;/li&gt;
            &lt;li&gt;CPF e documentos&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p&gt;O que parece um post inocente nas redes sociais é um prato cheio para golpistas. Essas informações são exatamente as utilizadas para convencer atendentes de operadoras.&lt;/p&gt;

        &lt;h3&gt;2. Abandone o SMS Como Verificação Principal&lt;/h3&gt;
        &lt;p&gt;A &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=verifica%C3%A7%C3%A3o+em+duas+etapas+o+que+%C3%A9&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;verificação em duas etapas&lt;/a&gt; por SMS fica vulnerável diante do SIM Swap. Se o golpista rouba seu número, passa a receber todos os códigos.&lt;/p&gt;

        &lt;div class=&quot;success-box&quot;&gt;
            &lt;p&gt;&lt;strong&gt;Solução:&lt;/strong&gt; Substitua por &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=aplicativos+autenticadores+o+que+s%C3%A3o&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;aplicativos autenticadores&lt;/a&gt; que geram códigos dentro do próprio app. Eles não dependem do chip e continuam funcionando mesmo se o número for sequestrado.&lt;/p&gt;
        &lt;/div&gt;

        &lt;p&gt;&lt;strong&gt;Aplique isso em:&lt;/strong&gt;&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;E-mail (Gmail, Outlook, etc.)&lt;/li&gt;
            &lt;li&gt;WhatsApp&lt;/li&gt;
            &lt;li&gt;Instagram e Facebook&lt;/li&gt;
            &lt;li&gt;Aplicativos bancários&lt;/li&gt;
            &lt;li&gt;Plataformas de investimento&lt;/li&gt;
            &lt;li&gt;Qualquer serviço com informações importantes&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;3. Fique Atento aos Sinais&lt;/h3&gt;
        &lt;p&gt;Se seu celular perder o sinal de forma estranha:&lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;Não espere&lt;/strong&gt; para ver se volta sozinho&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Não assuma&lt;/strong&gt; que é apenas problema técnico&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Aja imediatamente&lt;/strong&gt;&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p&gt;Tempo é crucial nesta situação. Quanto mais você demora, mais tempo o golpista tem para causar danos.&lt;/p&gt;

        &lt;h3&gt;4. Tenha um Plano de Ação de Emergência&lt;/h3&gt;
        &lt;div class=&quot;info-box&quot;&gt;
            &lt;p&gt;&lt;strong&gt;Se suspeitar de SIM Swap:&lt;/strong&gt;&lt;/p&gt;
            &lt;ol&gt;
                &lt;li&gt;Entre em contato IMEDIATAMENTE com sua operadora&lt;/li&gt;
                &lt;li&gt;Solicite o bloqueio do chip&lt;/li&gt;
                &lt;li&gt;Informe sobre a suspeita de fraude&lt;/li&gt;
                &lt;li&gt;Tente acessar suas contas principais de outro dispositivo&lt;/li&gt;
                &lt;li&gt;Altere senhas de serviços críticos&lt;/li&gt;
                &lt;li&gt;Registre um boletim de ocorrência&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/div&gt;

        &lt;h3&gt;5. Configure o PIN do SIM (ESSENCIAL)&lt;/h3&gt;
        &lt;p&gt;Esta é &lt;span class=&quot;highlight&quot;&gt;a proteção mais importante e ignorada&lt;/span&gt; pela maioria das pessoas.&lt;/p&gt;

        &lt;h2&gt;Como Configurar o PIN do SIM: Passo a Passo Completo&lt;/h2&gt;
        &lt;p&gt;O &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=PIN+do+SIM+o+que+%C3%A9&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;PIN do SIM&lt;/a&gt; é uma senha que protege o chip em si, diferente da senha de bloqueio da tela. Mesmo que alguém coloque seu chip em outro celular, ele não funcionará sem essa senha.&lt;/p&gt;

        &lt;div class=&quot;step-box&quot;&gt;
            &lt;h3&gt;Passo 1: Ativar o PIN do SIM&lt;/h3&gt;
            &lt;ol&gt;
                &lt;li&gt;Abra as &lt;strong&gt;Configurações&lt;/strong&gt; do seu celular&lt;/li&gt;
                &lt;li&gt;Use a &lt;strong&gt;lupa de busca&lt;/strong&gt; (geralmente no topo)&lt;/li&gt;
                &lt;li&gt;Pesquise por: &quot;PIN do SIM&quot;, &quot;bloquear chip&quot;, &quot;bloquear cartão SIM&quot; ou &quot;configurar bloqueio do SIM&quot;&lt;/li&gt;
                &lt;li&gt;Clique em &lt;strong&gt;&quot;Alterar PIN do chip&quot;&lt;/strong&gt;&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;Ative a chavinha&lt;/strong&gt; correspondente&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/div&gt;

        &lt;div class=&quot;step-box&quot;&gt;
            &lt;h3&gt;Passo 2: Inserir o PIN Padrão da Operadora&lt;/h3&gt;
            &lt;p&gt;Ao ativar, o sistema pedirá o PIN atual. Use o código padrão da sua operadora:&lt;/p&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;strong&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Claro+operadora&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;Claro&lt;/a&gt;:&lt;/strong&gt; 3636&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=TIM+operadora&amp;amp;bbid=3287495007086150028&amp;amp;bpid=8160670955020779424&quot; target=&quot;_blank&quot;&gt;TIM&lt;/a&gt;:&lt;/strong&gt; 1010&lt;/li&gt;
            &lt;/ul&gt;
            &lt;p&gt;Digite o código correspondente e clique em OK.&lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;step-box&quot;&gt;
            &lt;h3&gt;Passo 3: Trocar para Seu PIN Personalizado&lt;/h3&gt;
            &lt;div class=&quot;alert-box&quot;&gt;
                &lt;p&gt;&lt;strong&gt;ATENÇÃO:&lt;/strong&gt; Não deixe o PIN padrão! Ele é fácil de descobrir.&lt;/p&gt;
            &lt;/div&gt;
            &lt;ol&gt;
                &lt;li&gt;Volte para &lt;strong&gt;Configurações&lt;/strong&gt;&lt;/li&gt;
                &lt;li&gt;Pesquise novamente por &lt;strong&gt;&quot;PIN do SIM&quot;&lt;/strong&gt;&lt;/li&gt;
                &lt;li&gt;Clique em &lt;strong&gt;&quot;Alterar PIN do chip&quot;&lt;/strong&gt;&lt;/li&gt;
                &lt;li&gt;Agora você pode definir seu próprio PIN&lt;/li&gt;
                &lt;li&gt;Escolha uma senha de 4 a 8 dígitos que você &lt;strong&gt;nunca esquecerá&lt;/strong&gt;&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/div&gt;

        &lt;div class=&quot;danger-box&quot;&gt;
            &lt;h4&gt;⚠️ IMPORTANTE: Cuidados com o PIN&lt;/h4&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;strong&gt;Nunca esqueça seu PIN:&lt;/strong&gt; Se errar várias vezes, o chip será bloqueado&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;Guarde em local seguro:&lt;/strong&gt; Anote em lugar físico e seguro&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;Não use sequências óbvias:&lt;/strong&gt; Evite 1234, sua data de nascimento, etc.&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;Em caso de bloqueio:&lt;/strong&gt; Será necessário contatar a operadora para desbloquear&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;

        &lt;p&gt;Esta configuração cria uma camada extra de proteção direta no chip. Não depende de aplicativo, internet ou terceiros. É simples, rápido e extremamente eficaz.&lt;/p&gt;

        &lt;h2&gt;O Que Fazer Se Você For Vítima&lt;/h2&gt;
        &lt;p&gt;Se você já foi vítima do golpe:&lt;/p&gt;

        &lt;ol&gt;
            &lt;li&gt;&lt;strong&gt;Contate sua operadora imediatamente&lt;/strong&gt; para bloquear o chip&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Acesse suas contas&lt;/strong&gt; de outro dispositivo e altere todas as senhas&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Desative temporariamente&lt;/strong&gt; contas que não conseguir acessar&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Registre boletim de ocorrência&lt;/strong&gt;&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Notifique seu banco&lt;/strong&gt; sobre o incidente&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Alerte seus contatos&lt;/strong&gt; sobre a invasão para evitar golpes em cadeia&lt;/li&gt;
        &lt;/ol&gt;

        &lt;p&gt;Recuperar tudo dá trabalho, leva tempo e, em alguns casos, nem é possível. Fotos, contatos, contas e dinheiro podem simplesmente desaparecer.&lt;/p&gt;

        &lt;div class=&quot;conclusion&quot;&gt;
            &lt;h2&gt;Conclusão&lt;/h2&gt;
            &lt;p&gt;O golpe do SIM Swap é traiçoeiro porque não avisa, não pede permissão e não faz barulho. Quando você percebe, sua vida digital já começou a desmoronar.&lt;/p&gt;

            &lt;p&gt;Seu chip não é apenas um pedaço de plástico - é sua identidade digital. Se alguém rouba essa identidade, o prejuízo pode ser devastador.&lt;/p&gt;

            &lt;p&gt;A boa notícia é que existem medidas simples e eficazes para reduzir drasticamente o risco. Configure o PIN do seu SIM hoje mesmo, revise suas configurações de segurança e proteja suas informações pessoais.&lt;/p&gt;
        &lt;/div&gt;

        &lt;hr /&gt;

        &lt;p style=&quot;font-size: 1.2em; margin-top: 30px; text-align: center;&quot;&gt;
            &lt;strong&gt;Proteja-se agora. Compartilhe este conhecimento. A segurança digital começa com informação.&lt;/strong&gt;
        &lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2026/01/golpe-sim-swap-como-proteger.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNvSDcmJqxn-0Ywh72f-MpFgF1m4BCV8QiUA305EI-85SSdJn3AfkE22P0h5DV1qplZC5o76dyCn-LF4C41mz5BXNQ0ua-th5askkdfKY1IPJxFKwgCCNArNhg6P9tV-BKsZJsess1cruOszmZWqNEJZpQ7j1jafvTxStYv3Lh2Tj17ssxXwrD-52oy6Y/s72-c/golpe-sim-swap-protecao-celular-chip.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-5826979816554158452</guid><pubDate>Tue, 23 Dec 2025 02:12:00 +0000</pubDate><atom:updated>2025-12-22T23:12:00.136-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>🔐 Como Bloquear Portas USB no Windows Sem Instalar Programas (Guia Prático e Seguro)</title><description>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Q7wSaFKPR688Sd5E8a8sz3uFxOcXIeG5ewhBy9XYBpjR5w52yLy6ZUtdumbyfh6TRvyqz9g_V7QDmhYKW4cV7YmE2ZiUUFlhdrWpxiWVFERhSuZ6IxWH7XC5F3O62QuIY2UesLf3EPdwtJ1zz9reCD61fuU0b1CiGL8da5IKhzKqadmla3IMpF9lW6g/s540/bloquear-portas-usb-windows-registro-seguranca.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Tela do Registro do Windows mostrando a configuração USBSTOR usada para bloquear portas USB e aumentar a segurança do sistema.&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Q7wSaFKPR688Sd5E8a8sz3uFxOcXIeG5ewhBy9XYBpjR5w52yLy6ZUtdumbyfh6TRvyqz9g_V7QDmhYKW4cV7YmE2ZiUUFlhdrWpxiWVFERhSuZ6IxWH7XC5F3O62QuIY2UesLf3EPdwtJ1zz9reCD61fuU0b1CiGL8da5IKhzKqadmla3IMpF9lW6g/s16000/bloquear-portas-usb-windows-registro-seguranca.jpg&quot; title=&quot;Configuração no Registro do Windows para bloquear portas USB e impedir uso de pendrives no computador&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Você sabia que é possível&amp;nbsp;&lt;strong data-end=&quot;516&quot; data-start=&quot;434&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=bloquear+portas+USB+Windows+sem+software&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;bloquear o uso de portas USB no Windows sem instalar nenhum software adicional&lt;/a&gt;&lt;/strong&gt;?&lt;/p&gt;&lt;p data-end=&quot;706&quot; data-start=&quot;408&quot;&gt;Essa funcionalidade já existe no próprio sistema operacional e é uma excelente medida para&amp;nbsp;&lt;strong data-end=&quot;635&quot; data-start=&quot;611&quot;&gt;aumentar a segurança&lt;/strong&gt;, especialmente em ambientes corporativos, educacionais e laboratórios.&lt;/p&gt;&lt;p data-end=&quot;880&quot; data-start=&quot;708&quot;&gt;Neste guia, você vai entender&amp;nbsp;&lt;strong data-end=&quot;766&quot; data-start=&quot;738&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=como+funciona+bloqueio+portas+USB+Windows&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;como funciona o bloqueio&lt;/a&gt;&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;783&quot; data-start=&quot;768&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=quando+bloquear+portas+USB+Windows&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;quando usar&lt;/a&gt;&lt;/strong&gt;,&amp;nbsp;&lt;strong data-end=&quot;815&quot; data-start=&quot;785&quot;&gt;como aplicar passo a passo&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong data-end=&quot;842&quot; data-start=&quot;818&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=quais+cuidados+bloquear+portas+USB+Windows&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;quais cuidados tomar&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;para não gerar problemas no ambiente.&lt;/p&gt;&lt;hr data-end=&quot;885&quot; data-start=&quot;882&quot; /&gt;&lt;h2 data-end=&quot;936&quot; data-start=&quot;887&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;936&quot; data-start=&quot;893&quot;&gt;Por que bloquear portas USB no Windows?&lt;/strong&gt;&lt;/h2&gt;&lt;p data-end=&quot;1066&quot; data-start=&quot;938&quot;&gt;Dispositivos USB, como pendrives e&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+HDs+externos&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;HDs externos&lt;/a&gt;, são uma das&amp;nbsp;&lt;strong data-end=&quot;1065&quot; data-start=&quot;999&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=riscos+portas+USB+Windows+dados+malware&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;principais portas de entrada para vazamento de dados e malware&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;1098&quot; data-start=&quot;1068&quot;&gt;Bloquear o acesso USB ajuda a:&lt;/p&gt;&lt;ul data-end=&quot;1317&quot; data-start=&quot;1100&quot;&gt;&lt;li data-end=&quot;1141&quot; data-start=&quot;1100&quot;&gt;&lt;p data-end=&quot;1141&quot; data-start=&quot;1102&quot;&gt;Evitar cópia não autorizada de arquivos&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1180&quot; data-start=&quot;1142&quot;&gt;&lt;p data-end=&quot;1180&quot; data-start=&quot;1144&quot;&gt;Reduzir risco de vírus e ransomwares&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1219&quot; data-start=&quot;1181&quot;&gt;&lt;p data-end=&quot;1219&quot; data-start=&quot;1183&quot;&gt;Impedir uso de dispositivos pessoais&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1266&quot; data-start=&quot;1220&quot;&gt;&lt;p data-end=&quot;1266&quot; data-start=&quot;1222&quot;&gt;Cumprir políticas de segurança da informação&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1317&quot; data-start=&quot;1267&quot;&gt;&lt;p data-end=&quot;1317&quot; data-start=&quot;1269&quot;&gt;Padronizar ambientes corporativos e educacionais&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1388&quot; data-start=&quot;1319&quot;&gt;👉 Essa prática faz parte de estratégias de&amp;nbsp;&lt;strong data-end=&quot;1387&quot; data-start=&quot;1363&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+hardening+do+Windows&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;hardening do Windows&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;hr data-end=&quot;1393&quot; data-start=&quot;1390&quot; /&gt;&lt;h2 data-end=&quot;1448&quot; data-start=&quot;1395&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;1448&quot; data-start=&quot;1401&quot;&gt;Quando esse tipo de bloqueio é recomendado?&lt;/strong&gt;&lt;/h2&gt;&lt;p data-end=&quot;1490&quot; data-start=&quot;1450&quot;&gt;Esse método é ideal para ambientes como:&lt;/p&gt;&lt;ul data-end=&quot;1644&quot; data-start=&quot;1492&quot;&gt;&lt;li data-end=&quot;1519&quot; data-start=&quot;1492&quot;&gt;&lt;p data-end=&quot;1519&quot; data-start=&quot;1494&quot;&gt;🏢 Empresas e escritórios&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1548&quot; data-start=&quot;1520&quot;&gt;&lt;p data-end=&quot;1548&quot; data-start=&quot;1522&quot;&gt;🏫 Escolas e universidades&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1581&quot; data-start=&quot;1549&quot;&gt;&lt;p data-end=&quot;1581&quot; data-start=&quot;1551&quot;&gt;🧪 Laboratórios de informática&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1609&quot; data-start=&quot;1582&quot;&gt;&lt;p data-end=&quot;1609&quot; data-start=&quot;1584&quot;&gt;🖥️ Computadores públicos&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1644&quot; data-start=&quot;1610&quot;&gt;&lt;p data-end=&quot;1644&quot; data-start=&quot;1612&quot;&gt;🔐 Ambientes com dados sensíveis&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1740&quot; data-start=&quot;1646&quot;&gt;Em cenários assim,&amp;nbsp;&lt;strong data-end=&quot;1739&quot; data-start=&quot;1665&quot;&gt;controle físico de portas é tão importante quanto controle de usuários&lt;/strong&gt;.&lt;/p&gt;&lt;hr data-end=&quot;1745&quot; data-start=&quot;1742&quot; /&gt;&lt;h2 data-end=&quot;1789&quot; data-start=&quot;1747&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;1789&quot; data-start=&quot;1753&quot;&gt;O que exatamente será bloqueado?&lt;/strong&gt;&lt;/h2&gt;&lt;p data-end=&quot;1862&quot; data-start=&quot;1791&quot;&gt;Este procedimento&amp;nbsp;&lt;strong data-end=&quot;1855&quot; data-start=&quot;1809&quot;&gt;bloqueia dispositivos de armazenamento USB&lt;/strong&gt;, como:&lt;/p&gt;&lt;ul data-end=&quot;1912&quot; data-start=&quot;1864&quot;&gt;&lt;li data-end=&quot;1877&quot; data-start=&quot;1864&quot;&gt;&lt;p data-end=&quot;1877&quot; data-start=&quot;1866&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+pendrives&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Pendrives&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1894&quot; data-start=&quot;1878&quot;&gt;&lt;p data-end=&quot;1894&quot; data-start=&quot;1880&quot;&gt;HDs externos&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1912&quot; data-start=&quot;1895&quot;&gt;&lt;p data-end=&quot;1912&quot; data-start=&quot;1897&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+SSDs+externos&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;SSDs externos&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1950&quot; data-start=&quot;1914&quot;&gt;⚠️&amp;nbsp;&lt;strong data-end=&quot;1950&quot; data-start=&quot;1917&quot;&gt;Não bloqueia automaticamente:&lt;/strong&gt;&lt;/p&gt;&lt;ul data-end=&quot;1996&quot; data-start=&quot;1951&quot;&gt;&lt;li data-end=&quot;1961&quot; data-start=&quot;1951&quot;&gt;&lt;p data-end=&quot;1961&quot; data-start=&quot;1953&quot;&gt;Teclados&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1969&quot; data-start=&quot;1962&quot;&gt;&lt;p data-end=&quot;1969&quot; data-start=&quot;1964&quot;&gt;Mouse&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1978&quot; data-start=&quot;1970&quot;&gt;&lt;p data-end=&quot;1978&quot; data-start=&quot;1972&quot;&gt;Webcam&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1996&quot; data-start=&quot;1979&quot;&gt;&lt;p data-end=&quot;1996&quot; data-start=&quot;1981&quot;&gt;Impressoras USB&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2045&quot; data-start=&quot;1998&quot;&gt;Isso evita impacto no uso normal do computador.&lt;/p&gt;&lt;hr data-end=&quot;2050&quot; data-start=&quot;2047&quot; /&gt;&lt;h2 data-end=&quot;2126&quot; data-start=&quot;2052&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;2126&quot; data-start=&quot;2058&quot;&gt;Como bloquear portas USB no Windows via Registro (Passo a Passo)&lt;/strong&gt;&lt;/h2&gt;&lt;blockquote data-end=&quot;2269&quot; data-start=&quot;2128&quot;&gt;&lt;p data-end=&quot;2269&quot; data-start=&quot;2130&quot;&gt;⚠️ Atenção: alterações no&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Registro+do+Windows&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Registro do Windows&lt;/a&gt;&amp;nbsp;devem ser feitas com cuidado.&lt;br data-end=&quot;2208&quot; data-start=&quot;2205&quot; /&gt;O procedimento abaixo é seguro quando seguido corretamente.&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 data-end=&quot;2318&quot; data-start=&quot;2271&quot;&gt;✔️&amp;nbsp;&lt;strong data-end=&quot;2318&quot; data-start=&quot;2278&quot;&gt;Passo 1 — Abrir o Editor do Registro&lt;/strong&gt;&lt;/h3&gt;&lt;ul data-end=&quot;2380&quot; data-start=&quot;2319&quot;&gt;&lt;li data-end=&quot;2342&quot; data-start=&quot;2319&quot;&gt;&lt;p data-end=&quot;2342&quot; data-start=&quot;2321&quot;&gt;Pressione&amp;nbsp;&lt;strong data-end=&quot;2342&quot; data-start=&quot;2331&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=como+abrir+Win+%2B+R&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Win + R&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;2361&quot; data-start=&quot;2343&quot;&gt;&lt;p data-end=&quot;2361&quot; data-start=&quot;2345&quot;&gt;Digite&amp;nbsp;&lt;code data-end=&quot;2361&quot; data-start=&quot;2352&quot;&gt;regedit&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;2380&quot; data-start=&quot;2362&quot;&gt;&lt;p data-end=&quot;2380&quot; data-start=&quot;2364&quot;&gt;Clique em&amp;nbsp;&lt;strong data-end=&quot;2380&quot; data-start=&quot;2374&quot;&gt;OK&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-end=&quot;2385&quot; data-start=&quot;2382&quot; /&gt;&lt;h3 data-end=&quot;2433&quot; data-start=&quot;2387&quot;&gt;✔️&amp;nbsp;&lt;strong data-end=&quot;2433&quot; data-start=&quot;2394&quot;&gt;Passo 2 — Acessar o caminho correto&lt;/strong&gt;&lt;/h3&gt;&lt;p data-end=&quot;2446&quot; data-start=&quot;2434&quot;&gt;Navegue até:&lt;/p&gt;&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2550&quot; data-start=&quot;2448&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;@w-xl/main:top-9 sticky top-[calc(--spacing(9)+var(--header-height))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;HKEY&lt;span class=&quot;hljs-emphasis&quot;&gt;_LOCAL_&lt;/span&gt;MACHINE
 └─ SYSTEM
&lt;span class=&quot;hljs-code&quot;&gt;    └─ CurrentControlSet
       └─ Services
          └─ &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=USBSTOR+registro+Windows&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;USBSTOR&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;hr data-end=&quot;2555&quot; data-start=&quot;2552&quot; /&gt;&lt;h3 data-end=&quot;2599&quot; data-start=&quot;2557&quot;&gt;✔️&amp;nbsp;&lt;strong data-end=&quot;2599&quot; data-start=&quot;2564&quot;&gt;Passo 3 — Alterar a chave Start&lt;/strong&gt;&lt;/h3&gt;&lt;p data-end=&quot;2654&quot; data-start=&quot;2600&quot;&gt;Dentro da pasta&amp;nbsp;&lt;strong data-end=&quot;2627&quot; data-start=&quot;2616&quot;&gt;USBSTOR&lt;/strong&gt;, localize a chave chamada:&lt;/p&gt;&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2669&quot; data-start=&quot;2656&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;@w-xl/main:top-9 sticky top-[calc(--spacing(9)+var(--header-height))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Start+USBSTOR+registro+Windows&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Start&lt;/a&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;2706&quot; data-start=&quot;2671&quot;&gt;Altere o valor conforme o objetivo:&lt;/p&gt;&lt;div class=&quot;TyagGW_tableContainer&quot;&gt;&lt;div class=&quot;group TyagGW_tableWrapper flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;2813&quot; data-start=&quot;2708&quot;&gt;&lt;thead data-end=&quot;2733&quot; data-start=&quot;2708&quot;&gt;&lt;tr data-end=&quot;2733&quot; data-start=&quot;2708&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2716&quot; data-start=&quot;2708&quot;&gt;Valor&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2733&quot; data-start=&quot;2716&quot;&gt;Comportamento&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;2813&quot; data-start=&quot;2758&quot;&gt;&lt;tr data-end=&quot;2786&quot; data-start=&quot;2758&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2766&quot; data-start=&quot;2758&quot;&gt;&lt;strong data-end=&quot;2765&quot; data-start=&quot;2760&quot;&gt;4&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2786&quot; data-start=&quot;2766&quot;&gt;🚫 USB bloqueado&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2813&quot; data-start=&quot;2787&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2795&quot; data-start=&quot;2787&quot;&gt;&lt;strong data-end=&quot;2794&quot; data-start=&quot;2789&quot;&gt;3&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2813&quot; data-start=&quot;2795&quot;&gt;✅ USB liberado&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p data-end=&quot;2832&quot; data-start=&quot;2815&quot;&gt;Após a alteração:&lt;/p&gt;&lt;ul data-end=&quot;2879&quot; data-start=&quot;2833&quot;&gt;&lt;li data-end=&quot;2879&quot; data-start=&quot;2833&quot;&gt;&lt;p data-end=&quot;2879&quot; data-start=&quot;2835&quot;&gt;Reinicie o computador para aplicar a mudança&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-end=&quot;2884&quot; data-start=&quot;2881&quot; /&gt;&lt;h2 data-end=&quot;2927&quot; data-start=&quot;2886&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;2927&quot; data-start=&quot;2892&quot;&gt;Esse método é realmente seguro?&lt;/strong&gt;&lt;/h2&gt;&lt;p data-end=&quot;2946&quot; data-start=&quot;2929&quot;&gt;Sim. Esse método:&lt;/p&gt;&lt;ul data-end=&quot;3104&quot; data-start=&quot;2948&quot;&gt;&lt;li data-end=&quot;2986&quot; data-start=&quot;2948&quot;&gt;&lt;p data-end=&quot;2986&quot; data-start=&quot;2950&quot;&gt;Não depende de software de terceiros&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3018&quot; data-start=&quot;2987&quot;&gt;&lt;p data-end=&quot;3018&quot; data-start=&quot;2989&quot;&gt;Usa recurso nativo do Windows&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3067&quot; data-start=&quot;3019&quot;&gt;&lt;p data-end=&quot;3067&quot; data-start=&quot;3021&quot;&gt;É amplamente adotado em ambientes corporativos&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3104&quot; data-start=&quot;3068&quot;&gt;&lt;p data-end=&quot;3104&quot; data-start=&quot;3070&quot;&gt;Reduz superfícies de ataque físico&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3135&quot; data-start=&quot;3106&quot;&gt;Porém, ele&amp;nbsp;&lt;strong data-end=&quot;3134&quot; data-start=&quot;3117&quot;&gt;não substitui&lt;/strong&gt;:&lt;/p&gt;&lt;ul data-end=&quot;3223&quot; data-start=&quot;3136&quot;&gt;&lt;li data-end=&quot;3147&quot; data-start=&quot;3136&quot;&gt;&lt;p data-end=&quot;3147&quot; data-start=&quot;3138&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Antiv%C3%ADrus&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Antivírus&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3172&quot; data-start=&quot;3148&quot;&gt;&lt;p data-end=&quot;3172&quot; data-start=&quot;3150&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Controle+de+permiss%C3%B5es&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Controle de permissões&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3223&quot; data-start=&quot;3173&quot;&gt;&lt;p data-end=&quot;3223&quot; data-start=&quot;3175&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+GPO+pol%C3%ADticas+de+grupo&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Políticas de grupo (GPO) em ambientes de domínio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-end=&quot;3228&quot; data-start=&quot;3225&quot; /&gt;&lt;h2 data-end=&quot;3281&quot; data-start=&quot;3230&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;3281&quot; data-start=&quot;3236&quot;&gt;Diferença entre Registro do Windows e GPO&lt;/strong&gt;&lt;/h2&gt;&lt;div class=&quot;TyagGW_tableContainer&quot;&gt;&lt;div class=&quot;group TyagGW_tableWrapper flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;3493&quot; data-start=&quot;3283&quot;&gt;&lt;thead data-end=&quot;3309&quot; data-start=&quot;3283&quot;&gt;&lt;tr data-end=&quot;3309&quot; data-start=&quot;3283&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;3292&quot; data-start=&quot;3283&quot;&gt;Método&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;3309&quot; data-start=&quot;3292&quot;&gt;Indicado para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;3493&quot; data-start=&quot;3334&quot;&gt;&lt;tr data-end=&quot;3380&quot; data-start=&quot;3334&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3356&quot; data-start=&quot;3334&quot;&gt;Registro do Windows&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3380&quot; data-start=&quot;3356&quot;&gt;Máquinas individuais&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3441&quot; data-start=&quot;3381&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3407&quot; data-start=&quot;3381&quot;&gt;GPO (Política de Grupo)&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3441&quot; data-start=&quot;3407&quot;&gt;Ambientes com Active Directory&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3493&quot; data-start=&quot;3442&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3460&quot; data-start=&quot;3442&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Software+de+DLP&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Software de DLP&lt;/a&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3493&quot; data-start=&quot;3460&quot;&gt;Ambientes de alta criticidade&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p data-end=&quot;3565&quot; data-start=&quot;3495&quot;&gt;👉 Em redes corporativas grandes, o ideal é combinar essas abordagens.&lt;/p&gt;&lt;hr data-end=&quot;3570&quot; data-start=&quot;3567&quot; /&gt;&lt;h2 data-end=&quot;3621&quot; data-start=&quot;3572&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;3621&quot; data-start=&quot;3578&quot;&gt;Erros comuns ao bloquear USB no Windows&lt;/strong&gt;&lt;/h2&gt;&lt;p data-end=&quot;3641&quot; data-start=&quot;3623&quot;&gt;Evite estes erros:&lt;/p&gt;&lt;ul data-end=&quot;3797&quot; data-start=&quot;3643&quot;&gt;&lt;li data-end=&quot;3680&quot; data-start=&quot;3643&quot;&gt;&lt;p data-end=&quot;3680&quot; data-start=&quot;3645&quot;&gt;❌ Bloquear sem documentar a mudança&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3711&quot; data-start=&quot;3681&quot;&gt;&lt;p data-end=&quot;3711&quot; data-start=&quot;3683&quot;&gt;❌ Não avisar usuários finais&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3754&quot; data-start=&quot;3712&quot;&gt;&lt;p data-end=&quot;3754&quot; data-start=&quot;3714&quot;&gt;❌ Aplicar em máquinas críticas sem teste&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3797&quot; data-start=&quot;3755&quot;&gt;&lt;p data-end=&quot;3797&quot; data-start=&quot;3757&quot;&gt;❌ Esquecer de criar ponto de restauração&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3853&quot; data-start=&quot;3799&quot;&gt;💡&amp;nbsp;&lt;strong data-end=&quot;3818&quot; data-start=&quot;3802&quot;&gt;Boa prática:&lt;/strong&gt;&amp;nbsp;sempre teste em uma máquina antes.&lt;/p&gt;&lt;hr data-end=&quot;3858&quot; data-start=&quot;3855&quot; /&gt;&lt;h2 data-end=&quot;3909&quot; data-start=&quot;3860&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;3909&quot; data-start=&quot;3866&quot;&gt;Boas práticas de segurança recomendadas&lt;/strong&gt;&lt;/h2&gt;&lt;ul data-end=&quot;4102&quot; data-start=&quot;3911&quot;&gt;&lt;li data-end=&quot;3961&quot; data-start=&quot;3911&quot;&gt;&lt;p data-end=&quot;3961&quot; data-start=&quot;3913&quot;&gt;Criar um ponto de restauração antes da alteração&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3998&quot; data-start=&quot;3962&quot;&gt;&lt;p data-end=&quot;3998&quot; data-start=&quot;3964&quot;&gt;Documentar a configuração aplicada&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;4051&quot; data-start=&quot;3999&quot;&gt;&lt;p data-end=&quot;4051&quot; data-start=&quot;4001&quot;&gt;Usar conta administrativa apenas quando necessário&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;4102&quot; data-start=&quot;4052&quot;&gt;&lt;p data-end=&quot;4102&quot; data-start=&quot;4054&quot;&gt;Revisar periodicamente as políticas de segurança&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4171&quot; data-start=&quot;4104&quot;&gt;Essas ações aumentam a&amp;nbsp;&lt;strong data-end=&quot;4170&quot; data-start=&quot;4127&quot;&gt;confiabilidade e governança do ambiente&lt;/strong&gt;.&lt;/p&gt;&lt;hr data-end=&quot;4176&quot; data-start=&quot;4173&quot; /&gt;&lt;h2 data-end=&quot;4235&quot; data-start=&quot;4178&quot;&gt;🔵&amp;nbsp;&lt;strong data-end=&quot;4235&quot; data-start=&quot;4184&quot;&gt;Conclusão: vale a pena bloquear USB no Windows?&lt;/strong&gt;&lt;/h2&gt;&lt;p data-end=&quot;4346&quot; data-start=&quot;4237&quot;&gt;Sim, especialmente se o objetivo for&amp;nbsp;&lt;strong data-end=&quot;4323&quot; data-start=&quot;4274&quot;&gt;reduzir riscos e melhorar o controle de dados&lt;/strong&gt;&amp;nbsp;sem custos adicionais.&lt;/p&gt;&lt;p data-end=&quot;4367&quot; data-start=&quot;4348&quot;&gt;Essa é uma solução:&lt;/p&gt;&lt;ul data-end=&quot;4450&quot; data-start=&quot;4368&quot;&gt;&lt;li data-end=&quot;4377&quot; data-start=&quot;4368&quot;&gt;&lt;p data-end=&quot;4377&quot; data-start=&quot;4370&quot;&gt;Simples&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;4389&quot; data-start=&quot;4378&quot;&gt;&lt;p data-end=&quot;4389&quot; data-start=&quot;4380&quot;&gt;Eficiente&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;4409&quot; data-start=&quot;4390&quot;&gt;&lt;p data-end=&quot;4409&quot; data-start=&quot;4392&quot;&gt;Nativa do Windows&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;4450&quot; data-start=&quot;4410&quot;&gt;&lt;p data-end=&quot;4450&quot; data-start=&quot;4412&quot;&gt;Muito usada em ambientes profissionais&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><link>http://www.blogdokdsti.com.br/2025/12/bloqueio-usb-windows.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Q7wSaFKPR688Sd5E8a8sz3uFxOcXIeG5ewhBy9XYBpjR5w52yLy6ZUtdumbyfh6TRvyqz9g_V7QDmhYKW4cV7YmE2ZiUUFlhdrWpxiWVFERhSuZ6IxWH7XC5F3O62QuIY2UesLf3EPdwtJ1zz9reCD61fuU0b1CiGL8da5IKhzKqadmla3IMpF9lW6g/s72-c/bloquear-portas-usb-windows-registro-seguranca.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-2887570174199516551</guid><pubDate>Sat, 13 Dec 2025 02:10:00 +0000</pubDate><atom:updated>2025-12-12T23:30:17.868-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>Como Criar uma Configuração de Execução no IntelliJ IDEA (Guia Completo e Atualizado 2026)</title><description>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhImpiNmeG0gx1hfRjWC711sQU22k2cih1LmLEnJQ7N3mtofmtqPvfvfIWnw3iVaNtW3qeRn60y-ZHhQZQCuU5pYYW_SRals7tL9UEsRzB8pMkYvc1TOFj8eHk13C3CRM2aoJz4eW81W8X8GCitibcHzzNbeYT_Y1PCVLhpHA31QCxm9A0JjmngWwuY8DE/s540/configurar-intellij-idea-run-debug-configurations.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img alt=&quot;Guia visual para configurar o IntelliJ IDEA corretamente e salvar configurações de execução no projeto&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhImpiNmeG0gx1hfRjWC711sQU22k2cih1LmLEnJQ7N3mtofmtqPvfvfIWnw3iVaNtW3qeRn60y-ZHhQZQCuU5pYYW_SRals7tL9UEsRzB8pMkYvc1TOFj8eHk13C3CRM2aoJz4eW81W8X8GCitibcHzzNbeYT_Y1PCVLhpHA31QCxm9A0JjmngWwuY8DE/s16000/configurar-intellij-idea-run-debug-configurations.jpg&quot; title=&quot;Capa ilustrativa mostrando como configurar o IntelliJ IDEA com foco em Run/Debug Configurations passo a passo&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Criar uma &lt;em data-end=&quot;348&quot; data-start=&quot;329&quot;&gt;Run Configuration&lt;/em&gt; no IntelliJ IDEA é uma etapa essencial para rodar projetos Java, Spring Boot, Kotlin e outras aplicações de forma organizada, rápida e profissional.&lt;/p&gt;&lt;p data-end=&quot;701&quot; data-start=&quot;319&quot;&gt;
Neste guia atualizado para 2026, você vai aprender &lt;strong data-end=&quot;568&quot; data-start=&quot;551&quot;&gt;passo a passo&lt;/strong&gt;, com exemplos práticos, como criar e salvar configurações de execução sem nunca perder suas preferências ao trocar de branch no Git.&lt;/p&gt;
&lt;hr data-end=&quot;706&quot; data-start=&quot;703&quot; /&gt;
&lt;h1 data-end=&quot;766&quot; data-start=&quot;708&quot;&gt;🔥 &lt;strong data-end=&quot;766&quot; data-start=&quot;713&quot;&gt;O que é uma Configuração de Execução no IntelliJ?&lt;/strong&gt;&lt;/h1&gt;
&lt;p data-end=&quot;876&quot; data-start=&quot;768&quot;&gt;Uma &lt;em data-end=&quot;797&quot; data-start=&quot;772&quot;&gt;Run/Debug Configuration&lt;/em&gt; é um conjunto de parâmetros que definem &lt;strong data-end=&quot;875&quot; data-start=&quot;838&quot;&gt;como sua aplicação será executada&lt;/strong&gt;:&lt;/p&gt;
&lt;ul data-end=&quot;1129&quot; data-start=&quot;878&quot;&gt;
&lt;li data-end=&quot;913&quot; data-start=&quot;878&quot;&gt;
&lt;p data-end=&quot;913&quot; data-start=&quot;880&quot;&gt;Classe principal (&lt;code data-end=&quot;910&quot; data-start=&quot;898&quot;&gt;Main class&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;940&quot; data-start=&quot;914&quot;&gt;
&lt;p data-end=&quot;940&quot; data-start=&quot;916&quot;&gt;Argumentos de execução&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;966&quot; data-start=&quot;941&quot;&gt;
&lt;p data-end=&quot;966&quot; data-start=&quot;943&quot;&gt;Variáveis de ambiente&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;992&quot; data-start=&quot;967&quot;&gt;
&lt;p data-end=&quot;992&quot; data-start=&quot;969&quot;&gt;Diretório de trabalho&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1010&quot; data-start=&quot;993&quot;&gt;
&lt;p data-end=&quot;1010&quot; data-start=&quot;995&quot;&gt;SDK utilizado&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1028&quot; data-start=&quot;1011&quot;&gt;
&lt;p data-end=&quot;1028&quot; data-start=&quot;1013&quot;&gt;Perfis Spring&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1058&quot; data-start=&quot;1029&quot;&gt;
&lt;p data-end=&quot;1058&quot; data-start=&quot;1031&quot;&gt;Flags especiais de testes&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1079&quot; data-start=&quot;1059&quot;&gt;
&lt;p data-end=&quot;1079&quot; data-start=&quot;1061&quot;&gt;Argumentos de VM&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1129&quot; data-start=&quot;1080&quot;&gt;
&lt;p data-end=&quot;1129&quot; data-start=&quot;1082&quot;&gt;Configurações salvas no projeto ou localmente&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1226&quot; data-start=&quot;1131&quot;&gt;Ter essas configurações organizadas evita retrabalho e traz mais velocidade ao desenvolvimento.&lt;/p&gt;
&lt;hr data-end=&quot;1231&quot; data-start=&quot;1228&quot; /&gt;
&lt;h1 data-end=&quot;1314&quot; data-start=&quot;1233&quot;&gt;🧭 &lt;strong data-end=&quot;1312&quot; data-start=&quot;1238&quot;&gt;1. Como Criar uma Configuração de Execução no IntelliJ (Passo a Passo)&lt;/strong&gt;&lt;/h1&gt;
&lt;h2 data-end=&quot;1364&quot; data-start=&quot;1315&quot;&gt;&lt;strong data-end=&quot;1364&quot; data-start=&quot;1318&quot;&gt;Acesse o gerenciador de configurações&lt;/strong&gt;&lt;/h2&gt;
&lt;ol data-end=&quot;1493&quot; data-start=&quot;1365&quot;&gt;
&lt;li data-end=&quot;1452&quot; data-start=&quot;1365&quot;&gt;
&lt;p data-end=&quot;1452&quot; data-start=&quot;1368&quot;&gt;No canto superior direito do IntelliJ, clique na setinha ao lado do botão &lt;strong data-end=&quot;1449&quot; data-start=&quot;1442&quot;&gt;Run&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1493&quot; data-start=&quot;1453&quot;&gt;
&lt;p data-end=&quot;1493&quot; data-start=&quot;1456&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8c5lmqoQqe8YnEVnXHjg4ubTrJugMETUDRdOwS8v3QAxgnORe9uIY8BQLOMA4QiDxZGV-WxQl5_3-hZgSJ00eMewMaOdJGVYYhyphenhyphen6ZCkyalouAqzCV-eqrk9NtVMO447hsvClJtz_FbjZ3vg5hZPcuROt_0pNbakthyK6tJkpQx42sE2-0C8AhVI7tOP0/s540/run-debug-intellij-blog-kds.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Tela principal para criar configurações de execução no IntelliJ IDEA&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8c5lmqoQqe8YnEVnXHjg4ubTrJugMETUDRdOwS8v3QAxgnORe9uIY8BQLOMA4QiDxZGV-WxQl5_3-hZgSJ00eMewMaOdJGVYYhyphenhyphen6ZCkyalouAqzCV-eqrk9NtVMO447hsvClJtz_FbjZ3vg5hZPcuROt_0pNbakthyK6tJkpQx42sE2-0C8AhVI7tOP0/s16000/run-debug-intellij-blog-kds.jpg&quot; title=&quot;janela run debug configurations do intellij&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Clique em &lt;strong data-end=&quot;1490&quot; data-start=&quot;1466&quot;&gt;Edit Configurations…&lt;/strong&gt;.&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;&lt;p data-end=&quot;1535&quot; data-start=&quot;1495&quot; style=&quot;text-align: left;&quot;&gt;Você verá a tela semelhante à da imagem:&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlM98s_XpGnVRntT3s-b9hzg43e8bumd0cyaQ3VdYEsgbFXJQYREgF0GWK42Ik1vEssDrZ5fNARFTSqwR0jnTPcXNVdzLgZcVRWF1dGk3vtnogYikok4VWLl-2V9yoD-QvHnyfhyphenhyphenOpm3x5PPa3lH63_edt55dI2pYGnXvXEcMSQLjhVTYFrWnFeRcbxTs/s540/menu-run-edit-configurations-intellij.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Como salvar sua configuração no projeto para não perder ao trocar de branch&quot; border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlM98s_XpGnVRntT3s-b9hzg43e8bumd0cyaQ3VdYEsgbFXJQYREgF0GWK42Ik1vEssDrZ5fNARFTSqwR0jnTPcXNVdzLgZcVRWF1dGk3vtnogYikok4VWLl-2V9yoD-QvHnyfhyphenhyphenOpm3x5PPa3lH63_edt55dI2pYGnXvXEcMSQLjhVTYFrWnFeRcbxTs/s16000/menu-run-edit-configurations-intellij.jpg&quot; title=&quot;store as project file intellij&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;1758&quot; data-start=&quot;1537&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1763&quot; data-start=&quot;1760&quot; /&gt;
&lt;h2 data-end=&quot;1803&quot; data-start=&quot;1765&quot;&gt;&lt;strong data-end=&quot;1803&quot; data-start=&quot;1768&quot;&gt;Crie uma nova configuração&lt;/strong&gt;&lt;/h2&gt;
&lt;ol data-end=&quot;1893&quot; data-start=&quot;1805&quot;&gt;
&lt;li data-end=&quot;1858&quot; data-start=&quot;1805&quot;&gt;
&lt;p data-end=&quot;1858&quot; data-start=&quot;1808&quot;&gt;Clique no botão &lt;strong data-end=&quot;1829&quot; data-start=&quot;1824&quot;&gt;+&lt;/strong&gt; (canto superior esquerdo).&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh22u3Kqj9BJrT0b1t6ABtxuTsd7pz56hwqrub18lTnBHeMvJmva7H21EVYcH6wjN21sBPx-XNR97lxh11c5QsB2cq7GElejgSL_reSCsQC2F9xmYvtKjJ7fwymCbpZ1Yob549zF838vKGJkjG2H_nuSosaTZCaVA61Ns3igsfrCiFMhqp3BJswfur2Udg&quot;&gt;&lt;img alt=&quot;application run configuration intellij example&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh22u3Kqj9BJrT0b1t6ABtxuTsd7pz56hwqrub18lTnBHeMvJmva7H21EVYcH6wjN21sBPx-XNR97lxh11c5QsB2cq7GElejgSL_reSCsQC2F9xmYvtKjJ7fwymCbpZ1Yob549zF838vKGJkjG2H_nuSosaTZCaVA61Ns3igsfrCiFMhqp3BJswfur2Udg=s16000&quot; title=&quot;Exemplo completo de configuração Application&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol data-end=&quot;1893&quot; data-start=&quot;1805&quot;&gt;
&lt;li data-end=&quot;1893&quot; data-start=&quot;1859&quot;&gt;
&lt;p data-end=&quot;1893&quot; data-start=&quot;1862&quot;&gt;Escolha o tipo de configuração:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;1933&quot; data-start=&quot;1895&quot;&gt;&lt;strong data-end=&quot;1933&quot; data-start=&quot;1899&quot;&gt;Para projetos Java comuns&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1960&quot; data-start=&quot;1934&quot;&gt;Selecione &lt;strong data-end=&quot;1959&quot; data-start=&quot;1944&quot;&gt;Application&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;2000&quot; data-start=&quot;1962&quot;&gt;&lt;strong data-end=&quot;2000&quot; data-start=&quot;1966&quot;&gt;Para projetos Spring Boot&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2027&quot; data-start=&quot;2001&quot;&gt;Selecione &lt;strong data-end=&quot;2026&quot; data-start=&quot;2011&quot;&gt;Spring Boot&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;2071&quot; data-start=&quot;2029&quot;&gt;&lt;strong data-end=&quot;2071&quot; data-start=&quot;2033&quot;&gt;Para projetos Maven ou Gradle&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2082&quot; data-start=&quot;2072&quot;&gt;Selecione:&lt;/p&gt;
&lt;ul data-end=&quot;2110&quot; data-start=&quot;2084&quot;&gt;
&lt;li data-end=&quot;2097&quot; data-start=&quot;2084&quot;&gt;
&lt;p data-end=&quot;2097&quot; data-start=&quot;2086&quot;&gt;&lt;strong data-end=&quot;2095&quot; data-start=&quot;2086&quot;&gt;Maven&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2110&quot; data-start=&quot;2098&quot;&gt;
&lt;p data-end=&quot;2110&quot; data-start=&quot;2100&quot;&gt;&lt;strong data-end=&quot;2110&quot; data-start=&quot;2100&quot;&gt;Gradle&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2143&quot; data-start=&quot;2112&quot;&gt;Dependendo da tecnologia usada.&lt;/p&gt;
&lt;hr data-end=&quot;2148&quot; data-start=&quot;2145&quot; /&gt;
&lt;h2 data-end=&quot;2191&quot; data-start=&quot;2150&quot;&gt;&lt;strong data-end=&quot;2191&quot; data-start=&quot;2153&quot;&gt;Preencha os campos essenciais&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2275&quot; data-start=&quot;2192&quot;&gt;Assim que você criar a configuração, o IntelliJ solicitará informações importantes.&lt;/p&gt;
&lt;h3 data-end=&quot;2310&quot; data-start=&quot;2277&quot;&gt;&lt;strong data-end=&quot;2310&quot; data-start=&quot;2281&quot;&gt;Nome da configuração&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2339&quot; data-start=&quot;2311&quot;&gt;Coloque um nome claro, como:&lt;/p&gt;
&lt;ul data-end=&quot;2405&quot; data-start=&quot;2341&quot;&gt;
&lt;li data-end=&quot;2360&quot; data-start=&quot;2341&quot;&gt;
&lt;p data-end=&quot;2360&quot; data-start=&quot;2343&quot;&gt;&lt;code data-end=&quot;2360&quot; data-start=&quot;2343&quot;&gt;Rodar API Local&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2377&quot; data-start=&quot;2361&quot;&gt;
&lt;p data-end=&quot;2377&quot; data-start=&quot;2363&quot;&gt;&lt;code data-end=&quot;2377&quot; data-start=&quot;2363&quot;&gt;Execução DEV&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2405&quot; data-start=&quot;2378&quot;&gt;
&lt;p data-end=&quot;2405&quot; data-start=&quot;2380&quot;&gt;&lt;code data-end=&quot;2405&quot; data-start=&quot;2380&quot;&gt;Spring Boot – Perfil QA&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2430&quot; data-start=&quot;2407&quot;&gt;&lt;strong data-end=&quot;2430&quot; data-start=&quot;2411&quot;&gt;&amp;nbsp;Main Class&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2486&quot; data-start=&quot;2431&quot;&gt;Clique no ícone de busca e escolha a classe que contém:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2538&quot; data-start=&quot;2488&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-java&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title function_&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(String[] args)&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2562&quot; data-start=&quot;2540&quot;&gt;Ou, no caso do Spring:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2598&quot; data-start=&quot;2564&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-java&quot;&gt;&lt;span class=&quot;hljs-meta&quot;&gt;@SpringBootApplication&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DSpringBootApplication&amp;amp;ved=1t%3A269313&amp;amp;bbid=3704563907057270487&amp;amp;bpid=2887570174199516551&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h3 data-end=&quot;2619&quot; data-start=&quot;2600&quot;&gt;&lt;strong data-end=&quot;2619&quot; data-start=&quot;2604&quot;&gt;Module&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2694&quot; data-start=&quot;2620&quot;&gt;Escolha o módulo correto do projeto (geralmente IntelliJ detecta sozinho).&lt;/p&gt;
&lt;hr data-end=&quot;2699&quot; data-start=&quot;2696&quot; /&gt;
&lt;h1 data-end=&quot;2798&quot; data-start=&quot;2701&quot;&gt;🧪 &lt;strong data-end=&quot;2798&quot; data-start=&quot;2706&quot;&gt;2. Configurações Avançadas: Program Arguments, Environment Variables e Working Directory&lt;/strong&gt;&lt;/h1&gt;
&lt;h2 data-end=&quot;2829&quot; data-start=&quot;2800&quot;&gt;&lt;strong data-end=&quot;2829&quot; data-start=&quot;2803&quot;&gt;Program arguments&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2895&quot; data-start=&quot;2830&quot;&gt;Aqui vão argumentos que sua aplicação recebe na linha de comando.&lt;/p&gt;
&lt;p data-end=&quot;2912&quot; data-start=&quot;2897&quot;&gt;Exemplos úteis:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2987&quot; data-start=&quot;2914&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;--spring.profiles.active&lt;/span&gt;=dev
&lt;span class=&quot;hljs-attr&quot;&gt;--server.port&lt;/span&gt;=&lt;span class=&quot;hljs-number&quot;&gt;8082&lt;/span&gt;
&lt;span class=&quot;hljs-attr&quot;&gt;--enableMock&lt;/span&gt;=&lt;span class=&quot;hljs-literal&quot;&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h2 data-end=&quot;3022&quot; data-start=&quot;2989&quot;&gt;&lt;strong data-end=&quot;3022&quot; data-start=&quot;2992&quot;&gt;Environment variables&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;3095&quot; data-start=&quot;3023&quot;&gt;Clique em &lt;strong data-end=&quot;3064&quot; data-start=&quot;3033&quot;&gt;Environment Variables → ...&lt;/strong&gt; para adicionar variáveis como:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3151&quot; data-start=&quot;3097&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;DB_HOST&lt;/span&gt;=localhost
&lt;span class=&quot;hljs-attr&quot;&gt;DB_USER&lt;/span&gt;=admin
&lt;span class=&quot;hljs-attr&quot;&gt;API_KEY&lt;/span&gt;=&lt;span class=&quot;hljs-number&quot;&gt;123456&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3218&quot; data-start=&quot;3153&quot;&gt;Essa é uma área crítica para testes locais, microservices e APIs.&lt;/p&gt;
&lt;hr data-end=&quot;3223&quot; data-start=&quot;3220&quot; /&gt;
&lt;h1 data-end=&quot;3293&quot; data-start=&quot;3225&quot;&gt;&lt;/h1&gt;
&lt;h1 data-end=&quot;3959&quot; data-start=&quot;3913&quot;&gt;📌 &lt;strong data-end=&quot;3959&quot; data-start=&quot;3918&quot;&gt;4. Exemplos Práticos de Configurações&lt;/strong&gt;&lt;/h1&gt;
&lt;h2 data-end=&quot;4004&quot; data-start=&quot;3961&quot;&gt;&lt;strong data-end=&quot;4004&quot; data-start=&quot;3964&quot;&gt;&amp;nbsp;Exemplo: Aplicação Java Simples&lt;/strong&gt;&lt;/h2&gt;
&lt;ul data-end=&quot;4127&quot; data-start=&quot;4005&quot;&gt;
&lt;li data-end=&quot;4026&quot; data-start=&quot;4005&quot;&gt;
&lt;p data-end=&quot;4026&quot; data-start=&quot;4007&quot;&gt;Tipo: Application&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4064&quot; data-start=&quot;4027&quot;&gt;
&lt;p data-end=&quot;4064&quot; data-start=&quot;4029&quot;&gt;Main class: &lt;code data-end=&quot;4062&quot; data-start=&quot;4041&quot;&gt;com.meuprojeto.Main&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4082&quot; data-start=&quot;4065&quot;&gt;
&lt;p data-end=&quot;4082&quot; data-start=&quot;4067&quot;&gt;Module: &lt;code data-end=&quot;4080&quot; data-start=&quot;4075&quot;&gt;app&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4099&quot; data-start=&quot;4083&quot;&gt;
&lt;p data-end=&quot;4099&quot; data-start=&quot;4085&quot;&gt;SDK: Java 21&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4127&quot; data-start=&quot;4100&quot;&gt;
&lt;p data-end=&quot;4127&quot; data-start=&quot;4102&quot;&gt;Program args: &lt;em data-end=&quot;4125&quot; data-start=&quot;4116&quot;&gt;(vazio)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;4191&quot; data-start=&quot;4129&quot;&gt;&lt;strong data-end=&quot;4191&quot; data-start=&quot;4132&quot;&gt;&amp;nbsp;Exemplo: Spring Boot com perfil de desenvolvimento&lt;/strong&gt;&lt;/h2&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;4266&quot; data-start=&quot;4192&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;Program arguments:
&lt;span class=&quot;hljs-deletion&quot;&gt;--spring.profiles.active=dev&lt;/span&gt;
&lt;span class=&quot;hljs-deletion&quot;&gt;--server.port=8081&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h2 data-end=&quot;4322&quot; data-start=&quot;4268&quot;&gt;&lt;strong data-end=&quot;4322&quot; data-start=&quot;4271&quot;&gt;Exemplo: API que usa variáveis de ambiente&lt;/strong&gt;&lt;/h2&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;4395&quot; data-start=&quot;4323&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;Environment variables:
DB_HOST=localhost;DB_USER=dev;DB_PASS=123&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;5497&quot; data-start=&quot;5416&quot;&gt;&lt;strong data-end=&quot;5497&quot; data-start=&quot;5416&quot;&gt;Experimente agora mesmo criar sua primeira configuração usando este tutorial.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;</description><link>http://www.blogdokdsti.com.br/2025/12/como-criar-uma-configuracao-de-execucao.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhImpiNmeG0gx1hfRjWC711sQU22k2cih1LmLEnJQ7N3mtofmtqPvfvfIWnw3iVaNtW3qeRn60y-ZHhQZQCuU5pYYW_SRals7tL9UEsRzB8pMkYvc1TOFj8eHk13C3CRM2aoJz4eW81W8X8GCitibcHzzNbeYT_Y1PCVLhpHA31QCxm9A0JjmngWwuY8DE/s72-c/configurar-intellij-idea-run-debug-configurations.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-861020877108890734</guid><pubDate>Thu, 04 Dec 2025 03:18:00 +0000</pubDate><atom:updated>2025-12-04T00:44:02.012-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>Como Otimizar o Tempo de Uso da Bateria do Notebook: Guia Completo e Atualizado (2025)</title><description>&lt;title&gt;Como Otimizar o Tempo de Uso da Bateria do Notebook (Guia 2025)&lt;/title&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiYf6MQKHurgVhMfdaIlhjWMA0yZOeNBeVUMx-uUEjYrRO-6qktsQ4uYmRyctNiukG15uGlVC9Zi-C6LXyPlkmagB3DGG8_YCYmViol2L1IXuajaI0vuy_9bojmPQl9N0eD4kHiVE-PTuU-vO9eeGw3MfjjV7CiinBcZ4ej7Aenr_KHxqiQsD116YBRxc0&quot;&gt;&lt;figure&gt;&lt;img alt=&quot;Ilustração de otimização da bateria do notebook&quot; data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiYf6MQKHurgVhMfdaIlhjWMA0yZOeNBeVUMx-uUEjYrRO-6qktsQ4uYmRyctNiukG15uGlVC9Zi-C6LXyPlkmagB3DGG8_YCYmViol2L1IXuajaI0vuy_9bojmPQl9N0eD4kHiVE-PTuU-vO9eeGw3MfjjV7CiinBcZ4ej7Aenr_KHxqiQsD116YBRxc0=s16000&quot; title=&quot;Como otimizar o tempo de uso da bateria do notebook&quot; /&gt;  &lt;figcaption&gt;Dicas práticas para aumentar a autonomia da bateria do notebook.&lt;/figcaption&gt; &lt;/figure&gt; &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;A bateria é um dos componentes mais importantes de um notebook — mas também um dos que mais sofrem desgaste com o tempo. Se você sente que seu notebook está descarregando rápido demais, saiba que isso é totalmente normal, mas pode ser corrigido com alguns ajustes simples e estratégias inteligentes.&lt;/p&gt;

&lt;figure&gt;
  &lt;img alt=&quot;Ilustração de otimização da bateria do notebook&quot; src=&quot;URL-DA-IMAGEM-AQUI.jpg&quot; title=&quot;Como economizar a bateria do notebook&quot; /&gt;
  &lt;figcaption&gt;Dicas práticas para aumentar a autonomia da bateria do notebook.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Neste guia completo, você vai aprender como aumentar a autonomia da bateria, prolongar sua vida útil e evitar desgastes desnecessários, aplicando práticas recomendadas pelos fabricantes e especialistas.&lt;/p&gt;

&lt;h2&gt;Por que a bateria do notebook dura pouco?&lt;/h2&gt;

&lt;p&gt;Antes de otimizar, é importante entender os principais vilões que drenam a bateria:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Brilho da tela muito alto&lt;/li&gt;
  &lt;li&gt;Programas em segundo plano consumindo energia&lt;/li&gt;
  &lt;li&gt;Conexões sem fio ativas (Wi-Fi, Bluetooth)&lt;/li&gt;
  &lt;li&gt;Processador trabalhando acima do necessário&lt;/li&gt;
  &lt;li&gt;Armazenamento cheio ou fragmentado&lt;/li&gt;
  &lt;li&gt;Temperaturas elevadas&lt;/li&gt;
  &lt;li&gt;Configurações de energia mal ajustadas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A boa notícia é que quase tudo isso pode ser ajustado rapidamente.&lt;/p&gt;

&lt;h2&gt;1. Ajuste o plano de energia para modo eficiente&lt;/h2&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiBElAr-KkM4Co02OCD4UfqQYZzCldeSUUFoFUtGqN1t0gE2_9yoekvcLgN7xvPLRSy29om4kheuYv3JmJioTcNjAXvYHb7p55zGWhMMSm3cu-b6xrvCvUeexEG0_A5h1b3sSFthFPos2_A2R4dgGQqbo-4zQAIVBKXezVi3XfC6WjoRpf34VyoiACbPnI&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;360&quot; data-original-width=&quot;540&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiBElAr-KkM4Co02OCD4UfqQYZzCldeSUUFoFUtGqN1t0gE2_9yoekvcLgN7xvPLRSy29om4kheuYv3JmJioTcNjAXvYHb7p55zGWhMMSm3cu-b6xrvCvUeexEG0_A5h1b3sSFthFPos2_A2R4dgGQqbo-4zQAIVBKXezVi3XfC6WjoRpf34VyoiACbPnI=s16000&quot; title=&quot;Como otimizar o tempo de uso da bateria do notebook&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;

&lt;h3&gt;Windows 10/11&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Acesse &lt;strong&gt;Configurações → Sistema → Energia e suspensão&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Clique em &lt;strong&gt;Configurações de energia adicionais&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Selecione &lt;strong&gt;Economia de energia&lt;/strong&gt; ou &lt;strong&gt;Equilibrado&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Ajuste o recurso “Desempenho vs Eficiência energética”&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;macOS&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Abra &lt;strong&gt;Preferências do Sistema&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Vá em &lt;strong&gt;Bateria&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Ative:
    &lt;ul&gt;
      &lt;li&gt;&quot;Gerenciamento adaptativo da bateria&quot;&lt;/li&gt;
      &lt;li&gt;&quot;Otimizar vídeos em HDR&quot;&lt;/li&gt;
      &lt;li&gt;&quot;Reduzir brilho automaticamente&quot;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;2. Reduza o brilho da tela&lt;/h2&gt;
&lt;p&gt;O brilho é responsável por 30% a 50% do consumo total da bateria. Ajuste para um nível confortável, entre 30% e 60%, dependendo da iluminação do ambiente.&lt;/p&gt;

&lt;h2&gt;3. Feche programas que rodam em segundo plano&lt;/h2&gt;

&lt;h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DCTRL%2520%252B%2520SHIFT%2520%252B%2520ESC&amp;amp;ved=1t%3A269313&amp;amp;bbid=3704563907057270487&amp;amp;bpid=861020877108890734&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;Windows&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Pressione &lt;strong&gt;&lt;br /&gt;CTRL + SHIFT + ESC&lt;/strong&gt; → Aba “Processos”&lt;/li&gt;
  &lt;li&gt;Encerre o que não for necessário&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;macOS&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Abra o &lt;strong&gt;Monitor de Atividade&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Ordene por “Energia”&lt;/li&gt;
  &lt;li&gt;Encerre os apps pesados&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;4. Desative conexões que não estiver usando&lt;/h2&gt;
&lt;p&gt;Wi-Fi, Bluetooth, GPS e NFC aumentam o consumo. Se estiver trabalhando offline, desligue tudo:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Wi-Fi&lt;/li&gt;
  &lt;li&gt;Bluetooth&lt;/li&gt;
  &lt;li&gt;Localização&lt;/li&gt;
  &lt;li&gt;Hotspot&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;5. Controle a temperatura do notebook&lt;/h2&gt;
&lt;p&gt;Calor extremo é o maior inimigo da bateria. Para evitar superaquecimento:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Mantenha o notebook em superfícies rígidas e ventiladas&lt;/li&gt;
  &lt;li&gt;Use bases refrigeradas&lt;/li&gt;
  &lt;li&gt;Mantenha o ambiente ventilado&lt;/li&gt;
  &lt;li&gt;Limpe a poeira das ventoinhas a cada 6 meses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dica:&lt;/strong&gt; temperaturas acima de 45°C aceleram o desgaste da bateria.&lt;/p&gt;

&lt;h2&gt;6. Limite aplicativos inicializados com o sistema&lt;/h2&gt;

&lt;h3&gt;Windows&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Pressione &lt;strong&gt;CTRL + SHIFT + ESC&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Acesse a aba &lt;strong&gt;Inicializar&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Desative programas desnecessários&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;macOS&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Preferências → &lt;strong&gt;Usuários e Grupos&lt;/strong&gt; → Itens de Início&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;7. Mantenha o sistema atualizado&lt;/h2&gt;
&lt;p&gt;Atualizações podem melhorar o gerenciamento de energia. Mantenha atualizado:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Sistema operacional (Windows / macOS)&lt;/li&gt;
  &lt;li&gt;BIOS/UEFI&lt;/li&gt;
  &lt;li&gt;Drivers da placa de vídeo&lt;/li&gt;
  &lt;li&gt;Drivers de processador e chipset&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;8. Ative recursos inteligentes de economia&lt;/h2&gt;

&lt;h3&gt;Windows 10/11&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Bateria Inteligente&lt;/li&gt;
  &lt;li&gt;Limitar carga a 80% (em notebooks compatíveis)&lt;/li&gt;
  &lt;li&gt;Modo de eficiência energética no Gerenciador de Tarefas&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;macOS&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Otimização de carregamento&lt;/li&gt;
  &lt;li&gt;Aprendizagem do padrão de recarga&lt;/li&gt;
  &lt;li&gt;Redução automática de brilho HDR&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;9. Otimize o armazenamento&lt;/h2&gt;
&lt;p&gt;Discos quase cheios fazem o sistema trabalhar mais. Mantenha ao menos 20% do SSD livre.&lt;/p&gt;

&lt;h3&gt;Ferramentas úteis:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Limpeza de disco (Windows)&lt;/li&gt;
  &lt;li&gt;Storage Management (macOS)&lt;/li&gt;
  &lt;li&gt;Apps como Wise Cleaner, CCleaner e CleanMyMac&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;10. Use carregamento inteligente&lt;/h2&gt;
&lt;p&gt;Carregar até 100% constantemente acelera o desgaste da bateria. Prefira:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Manter a carga entre 20% e 80%&lt;/li&gt;
  &lt;li&gt;Evitar deixar carregando durante a noite&lt;/li&gt;
  &lt;li&gt;Não usar o notebook aquecendo enquanto carrega&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Bônus: Hacks profissionais para prolongar a bateria&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Use navegadores mais leves (Edge, Safari)&lt;/li&gt;
  &lt;li&gt;Reduza a taxa de atualização (120Hz → 60Hz)&lt;/li&gt;
  &lt;li&gt;Desative animações do sistema&lt;/li&gt;
  &lt;li&gt;Ative o modo avião quando possível&lt;/li&gt;
  &lt;li&gt;Use tema escuro em telas OLED/miniLED&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Otimizar o tempo de uso da bateria do notebook é uma combinação de boas práticas, configurações inteligentes e manutenção preventiva. Ao aplicar estas dicas, você verá um aumento significativo na autonomia e ainda prolongará a vida útil do equipamento.&lt;/p&gt;
</description><link>http://www.blogdokdsti.com.br/2025/12/otimizar-bateria-notebook-guia-visual.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiYf6MQKHurgVhMfdaIlhjWMA0yZOeNBeVUMx-uUEjYrRO-6qktsQ4uYmRyctNiukG15uGlVC9Zi-C6LXyPlkmagB3DGG8_YCYmViol2L1IXuajaI0vuy_9bojmPQl9N0eD4kHiVE-PTuU-vO9eeGw3MfjjV7CiinBcZ4ej7Aenr_KHxqiQsD116YBRxc0=s72-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-8714510335912133556</guid><pubDate>Sat, 29 Nov 2025 04:06:00 +0000</pubDate><atom:updated>2025-12-02T23:03:55.588-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>IntelliJ apagando configs? Veja a solução!</title><description>&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO9DKf6ERJBaWJF3YBlRsLCzaSwBAlHR9w5pNIu-sb9au_MMNLWB_j7pfeSeLSvKxIsGy6OA9pz93uosoH3k8QiiknBvg2C94Iw3nSX6ezOPVxOrnYgk-T378NAfhUEpOSJFJC0yt-Gk7M03Z8KDR6X7tPK8F0QNaW6QAV257ruP4XejoySgUcNPBkOEI/s1536/intellij-perdendo-configuracoes-como-resolver-2025.webp&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Imagem ilustrativa mostrando o logo do IntelliJ IDEA com destaque para o problema de perda de configurações ao trocar de branch, com chamada para solução rápida e definitiva.&quot; border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO9DKf6ERJBaWJF3YBlRsLCzaSwBAlHR9w5pNIu-sb9au_MMNLWB_j7pfeSeLSvKxIsGy6OA9pz93uosoH3k8QiiknBvg2C94Iw3nSX6ezOPVxOrnYgk-T378NAfhUEpOSJFJC0yt-Gk7M03Z8KDR6X7tPK8F0QNaW6QAV257ruP4XejoySgUcNPBkOEI/s16000/intellij-perdendo-configuracoes-como-resolver-2025.webp&quot; title=&quot;Por que o IntelliJ perde configurações ao trocar de branch?&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Por que o IntelliJ perde configurações ao trocar de branch?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Quando você trabalha com&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Git&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Git&lt;/a&gt;&amp;nbsp;dentro do&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=IntelliJ+IDEA&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;IntelliJ IDEA&lt;/a&gt;, é comum alternar entre&lt;br /&gt;branches ou até mesmo remover branches locais.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dbranches&amp;amp;ved=1t%3A269313&amp;amp;bbid=3704563907057270487&amp;amp;bpid=8714510335912133556&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;O problema é que, em muitos projetos Java, o IntelliJ armazena&amp;nbsp;&lt;strong&gt;configurações específicas da branch&lt;/strong&gt;&amp;nbsp;dentro da pasta .idea — incluindo:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Versão do&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+JDK&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;JDK&lt;/a&gt;&amp;nbsp;usado&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Configuração do Project SDK&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Configuração de Linguagem (&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Java+8&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Java 8&lt;/a&gt;, 11, 17…)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Estrutura de módulos&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Web settings (Spring Boot,&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Maven&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Maven&lt;/a&gt;, WAR, etc.)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Code Style, inspeções e mapeamentos&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Se essa pasta .idea ou o arquivo *.iml for alterado, sobrescrito ou removido, o IntelliJ “perde” todas as definições e abre o projeto como se fosse novo.&lt;/p&gt;&lt;p&gt;Isso explica por que&amp;nbsp;&lt;strong&gt;ao remover ou trocar a branch&lt;/strong&gt;, suas configurações somem.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;A boa notícia: existem 3 formas de impedir que o IntelliJ apague configurações ao mexer nas branches.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;No seu .&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+.gitignore&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;gitignore&lt;/a&gt;, garanta que estes itens estejam excluídos:&lt;/p&gt;&lt;p&gt;Assim, suas configurações ficam&amp;nbsp;&lt;strong&gt;locais&lt;/strong&gt;, e não vão ser sobrescritas quando mudar de branch.&lt;/p&gt;&lt;p&gt;💡&amp;nbsp;&lt;em&gt;Importante&lt;/em&gt;: o Maven e o IntelliJ irão recriar automaticamente o projeto quando necessário.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Vá em:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=IntelliJ+IDEA+SDK+settings&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;File → Project Structure → Platform Settings → SDKs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;E configure:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;JDK desejado&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Nome padrão&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Pasta fixa do Java no seu sistema&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Depois vá em:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;File → Settings → Build Tools → Maven → Runner → JRE&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Selecione&amp;nbsp;&lt;strong&gt;&quot;Use External JDK&quot;&lt;/strong&gt;&amp;nbsp;e aponte para o Java instalado.&lt;/p&gt;&lt;p&gt;Isso faz o IntelliJ usar o mesmo SDK&amp;nbsp;&lt;strong&gt;para todos os projetos&lt;/strong&gt;, mesmo que a branch troque arquivos internos.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Vá em:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;File → Settings for New Projects&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;E defina:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Project SDK&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Language level&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Encoding&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Frameworks (Spring, Maven,&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Lombok&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Lombok&lt;/a&gt;, etc.)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Assim, sempre que o IntelliJ “reabrir” o projeto, ele recriará com esses padrões.&lt;/p&gt;&lt;hr /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;A branch antiga tinha arquivos .idea que são diferentes&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Você usa “git checkout .” que sobrescreve o .idea&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;O IntelliJ está configurado para reimportar o Maven automaticamente&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;O projeto foi clonado novamente e perdeu metadados&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;A solução definitiva é:&lt;/p&gt;&lt;p&gt;✔ Ignorar arquivos do IntelliJ no Git&lt;br /&gt;✔ Fixar o SDK globalmente no IntelliJ&lt;br /&gt;✔ Configurar os padrões globais para novos projetos&lt;/p&gt;&lt;p&gt;Com isso, mesmo que você apague, recrie ou troque branches,&amp;nbsp;&lt;strong&gt;as configurações do ambiente não somem mais&lt;/strong&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=IntelliJ+settings+disappearing&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;Configurações IntelliJ apagando&lt;/a&gt;,&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=IntelliJ+settings+lost+on+branch+switch&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;IntelliJ perde configurações ao trocar branch&lt;/a&gt;,&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=IntelliJ+Git+branch+settings&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;IntelliJ Git branch settings&lt;/a&gt;, Java SDK IntelliJ sumindo, IntelliJ IDEA 2025 tutorial,&amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=IntelliJ+branch+error&amp;amp;bbid=2579729598185954177&amp;amp;bpid=2926979658554373391&quot; target=&quot;_blank&quot;&gt;erro IntelliJ branch&lt;/a&gt;, .idea git ignore.&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2025/11/intellij-configs-sumindo-fix.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO9DKf6ERJBaWJF3YBlRsLCzaSwBAlHR9w5pNIu-sb9au_MMNLWB_j7pfeSeLSvKxIsGy6OA9pz93uosoH3k8QiiknBvg2C94Iw3nSX6ezOPVxOrnYgk-T378NAfhUEpOSJFJC0yt-Gk7M03Z8KDR6X7tPK8F0QNaW6QAV257ruP4XejoySgUcNPBkOEI/s72-c/intellij-perdendo-configuracoes-como-resolver-2025.webp" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-1695620078847744470</guid><pubDate>Mon, 24 Nov 2025 03:37:00 +0000</pubDate><atom:updated>2025-11-26T23:21:22.253-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><title>O que você precisa configurar antes de escrever seu projeto no IntelliJ com Java</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimm394yNHIXJavwRcP7AUtVqc74Wt1CEk7AjiKolXMARdzhx38nOoXPlOVUtc0OTb68r_KaqRdvlAaS98XqkDDsiqUcXdNAssF0mttneUebyWnKepsXG7JqbvQAYrXCEM33tOx7o14dVRb3CRHeM7elH4iBpW6JFELq9eJnPZDOzYrjZYc031ytebpnsM/s635/configurar-intellij-para-java-iniciantes.webp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;O que Configurar no IntelliJ Antes de Criar Seu Projeto Java (Guia para Iniciantes)&quot; border=&quot;0&quot; data-original-height=&quot;405&quot; data-original-width=&quot;635&quot; height=&quot;204&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimm394yNHIXJavwRcP7AUtVqc74Wt1CEk7AjiKolXMARdzhx38nOoXPlOVUtc0OTb68r_KaqRdvlAaS98XqkDDsiqUcXdNAssF0mttneUebyWnKepsXG7JqbvQAYrXCEM33tOx7o14dVRb3CRHeM7elH4iBpW6JFELq9eJnPZDOzYrjZYc031ytebpnsM/w320-h204/configurar-intellij-para-java-iniciantes.webp&quot; title=&quot;Aprenda o que configurar no IntelliJ antes de iniciar um projeto Java. Evite erros, ganhe desempenho e comece seu desenvolvimento do jeito certo.&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Configurar IntelliJ Java corretamente pode ser a diferença entre um fluxo de desenvolvimento produtivo e horas de frustração com erros evitáveis.&lt;/p&gt;
&lt;p&gt;Muitos desenvolvedores iniciantes pulam essa etapa crucial e acabam enfrentando problemas de compilação, dependências e performance.&lt;/p&gt;
&lt;p&gt;A boa notícia é que configurar o IntelliJ para projetos Java não precisa ser complicado.&lt;/p&gt;
&lt;p&gt;Com as configurações certas desde o início, você ganha velocidade, evita bugs e aproveita todo o potencial dessa IDE poderosa.&lt;/p&gt;
&lt;p&gt;Neste guia completo, você vai descobrir exatamente o que precisa configurar IntelliJ Java antes de começar qualquer projeto.&lt;/p&gt;
&lt;p&gt;Desde a instalação do JDK até as otimizações de performance, vou mostrar o passo a passo para você não perder tempo.&lt;/p&gt;
&lt;p&gt;Ao final desta leitura, você terá um ambiente de desenvolvimento profissional e estará pronto para codar com máxima eficiência.&lt;/p&gt;
&lt;h2&gt;Configurar IntelliJ Java: Instalação do JDK e SDK&lt;/h2&gt;
&lt;p&gt;Configurar IntelliJ Java começa obrigatoriamente pela instalação e configuração correta do JDK (Java Development Kit). Sem o JDK configurado, a IDE não consegue compilar nem executar seu código Java, tornando impossível o desenvolvimento.&lt;/p&gt;
&lt;p&gt;O primeiro passo é verificar se você já possui o JDK instalado no seu sistema. Abra o terminal e digite &lt;code&gt;java -version&lt;/code&gt; para confirmar. Se não houver instalação, baixe a versão mais recente do JDK no site oficial da Oracle ou opte pelo OpenJDK, uma alternativa gratuita e de código aberto.&lt;/p&gt;
&lt;p&gt;Após instalar o JDK, você precisa configurar o SDK no IntelliJ IDEA. Abra a IDE e vá em &lt;strong&gt;File &amp;gt; Project Structure&lt;/strong&gt; (ou pressione Ctrl+Alt+Shift+S). Na seção &lt;strong&gt;Platform Settings&lt;/strong&gt;, clique em &lt;strong&gt;SDKs&lt;/strong&gt; e depois no botão de mais (+) para adicionar um novo JDK.&lt;/p&gt;
&lt;p&gt;Navegue até o diretório onde você instalou o JDK e selecione-o. O IntelliJ IDEA detectará automaticamente a versão e configurará o SDK. É fundamental escolher a versão do Java compatível com seu projeto - para projetos modernos, o Java 17 LTS ou Java 21 LTS são excelentes opções.&lt;/p&gt;
&lt;p&gt;Uma dica importante: você pode ter múltiplas versões do JDK configuradas no IntelliJ. Isso é útil quando você trabalha em projetos diferentes que exigem versões específicas do Java. Para gerenciar isso, mantenha todos os SDKs organizados na seção &lt;strong&gt;Project Structure&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Depois de configurar IntelliJ Java com o SDK correto, defina também o &lt;strong&gt;Project SDK&lt;/strong&gt; específico para seu projeto atual. Vá em &lt;strong&gt;Project Settings &amp;gt; Project&lt;/strong&gt; e selecione o SDK que você acabou de adicionar. Configure também o &lt;strong&gt;Language Level&lt;/strong&gt; para corresponder às features do Java que você pretende usar.&lt;/p&gt;
&lt;p&gt;Não esqueça de verificar o &lt;strong&gt;Module SDK&lt;/strong&gt; em &lt;strong&gt;Project Settings &amp;gt; Modules&lt;/strong&gt;. Cada módulo do seu projeto pode ter um SDK diferente, embora geralmente você use o mesmo SDK do projeto para manter a consistência.&lt;/p&gt;
&lt;p&gt;Com o JDK e SDK corretamente instalados, você elimina 90% dos problemas de compilação que desenvolvedores iniciantes enfrentam ao configurar IntelliJ para Java.&lt;/p&gt;
&lt;h2&gt;Sistema de Build: Maven ou Gradle para seu projeto Java&lt;/h2&gt;
&lt;p&gt;Depois de configurar o SDK, você precisa decidir qual sistema de build usar: Maven ou Gradle. Esses gerenciadores de dependências são essenciais para projetos Java profissionais e facilitam o gerenciamento de bibliotecas externas.&lt;/p&gt;
&lt;p&gt;O Maven é o sistema mais tradicional e amplamente adotado em projetos corporativos. Ele usa um arquivo &lt;code&gt;pom.xml&lt;/code&gt; para definir dependências, plugins e configurações do projeto. O IntelliJ IDEA oferece suporte nativo ao Maven, detectando automaticamente arquivos pom.xml e importando as dependências.&lt;/p&gt;
&lt;p&gt;Para criar um projeto Maven no IntelliJ, vá em &lt;strong&gt;File &amp;gt; New &amp;gt; Project&lt;/strong&gt;, selecione &lt;strong&gt;Maven&lt;/strong&gt; e configure o GroupId, ArtifactId e a versão. O IntelliJ gerará automaticamente a estrutura de pastas padrão do Maven (src/main/java, src/test/java, etc.).&lt;/p&gt;
&lt;p&gt;O Gradle é uma alternativa mais moderna e flexível, usando Groovy ou Kotlin DSL para configuração. Ele tende a ser mais rápido que o Maven em builds grandes e oferece maior personalização. Projetos Android, por exemplo, usam Gradle por padrão.&lt;/p&gt;
&lt;p&gt;Para configurar Gradle no IntelliJ, siga o mesmo processo: &lt;strong&gt;File &amp;gt; New &amp;gt; Project &amp;gt; Gradle&lt;/strong&gt;. Escolha se quer usar Groovy ou Kotlin DSL para o arquivo build.gradle. O IntelliJ sincronizará automaticamente as dependências após salvar o arquivo.&lt;/p&gt;
&lt;p&gt;Independente da escolha, configure o IntelliJ para fazer download automático de fontes e documentação. Vá em &lt;strong&gt;Settings &amp;gt; Build, Execution, Deployment &amp;gt; Build Tools &amp;gt; Maven&lt;/strong&gt; (ou Gradle) e marque as opções &lt;strong&gt;Download sources&lt;/strong&gt; e &lt;strong&gt;Download documentation&lt;/strong&gt;. Isso melhora significativamente a experiência de desenvolvimento com autocomplete mais inteligente.&lt;/p&gt;
&lt;p&gt;Uma configuração crucial é definir a JVM usada pelo Maven ou Gradle. Em &lt;strong&gt;Settings &amp;gt; Build Tools &amp;gt; Maven (ou Gradle)&lt;/strong&gt;, configure o &lt;strong&gt;Gradle JVM&lt;/strong&gt; ou &lt;strong&gt;Maven home directory&lt;/strong&gt; para apontar para a instalação correta. Use a mesma versão do JDK do seu projeto para evitar incompatibilidades.&lt;/p&gt;
&lt;p&gt;Ative também o &lt;strong&gt;Build and run using IntelliJ IDEA&lt;/strong&gt; em vez do Maven/Gradle quando possível. Isso torna a compilação mais rápida durante o desenvolvimento, embora para builds de produção você deva usar o sistema de build nativo.&lt;/p&gt;
&lt;h2&gt;Configurações essenciais de performance e aparência&lt;/h2&gt;
&lt;p&gt;Configurar IntelliJ Java vai além do JDK e build tools - as configurações de performance fazem enorme diferença na sua produtividade diária. A IDE pode consumir muita memória RAM, especialmente em projetos grandes, então otimizar é fundamental.&lt;/p&gt;
&lt;p&gt;Primeiro, aumente a memória heap do IntelliJ. Vá em &lt;strong&gt;Help &amp;gt; Change Memory Settings&lt;/strong&gt; e ajuste o valor. Para máquinas com 8GB de RAM, configure 2GB; para 16GB ou mais, use 4GB ou mais. Isso evita travamentos e lentidão ao trabalhar com projetos complexos.&lt;/p&gt;
&lt;p&gt;Desative plugins desnecessários em &lt;strong&gt;Settings &amp;gt; Plugins&lt;/strong&gt;. O IntelliJ vem com dezenas de plugins pré-instalados que você provavelmente nunca usará. Desabilite aqueles relacionados a tecnologias que você não trabalha (Kotlin, Scala, Docker, etc.) para liberar recursos.&lt;/p&gt;
&lt;p&gt;Configure o tema e a fonte do editor em &lt;strong&gt;Settings &amp;gt; Appearance &amp;amp; Behavior &amp;gt; Appearance&lt;/strong&gt; e &lt;strong&gt;Settings &amp;gt; Editor &amp;gt; Font&lt;/strong&gt;. Use um tema dark mode (como Darcula) se você programa à noite, pois reduz o cansaço visual. Para fontes, JetBrains Mono, Fira Code ou Consolas são excelentes opções com ligaduras.&lt;/p&gt;
&lt;p&gt;Ajuste as configurações de código em &lt;strong&gt;Settings &amp;gt; Editor &amp;gt; Code Style &amp;gt; Java&lt;/strong&gt;. Defina o tamanho da indentação (geralmente 4 espaços), posição de chaves, e formatação de imports. Isso garante que seu código siga padrões consistentes automaticamente.&lt;/p&gt;
&lt;p&gt;Ative o &lt;strong&gt;Auto Import&lt;/strong&gt; em &lt;strong&gt;Settings &amp;gt; Editor &amp;gt; General &amp;gt; Auto Import&lt;/strong&gt; marcando as opções &lt;strong&gt;Add unambiguous imports on the fly&lt;/strong&gt; e &lt;strong&gt;Optimize imports on the fly&lt;/strong&gt;. Isso economiza tempo eliminando imports não utilizados e adicionando os necessários automaticamente.&lt;/p&gt;
&lt;p&gt;Configure atalhos de teclado personalizados em &lt;strong&gt;Settings &amp;gt; Keymap&lt;/strong&gt;. Atalhos eficientes podem dobrar sua velocidade de desenvolvimento. Familiarize-se com os principais: Ctrl+Space (autocomplete), Alt+Enter (quick fix), Ctrl+Shift+F (formatar código), Shift+Shift (buscar tudo).&lt;/p&gt;
&lt;p&gt;Por fim, configure o &lt;strong&gt;Version Control&lt;/strong&gt; em &lt;strong&gt;Settings &amp;gt; Version Control &amp;gt; Git&lt;/strong&gt;. Se você usa Git, configure seu nome de usuário, email e o caminho do executável. O IntelliJ oferece excelente integração com Git, permitindo commits, merges e visualização de diffs diretamente na IDE.&lt;/p&gt;
&lt;h2&gt;Como validar se configurou IntelliJ Java corretamente&lt;/h2&gt;
&lt;p&gt;Agora que você configurou IntelliJ para desenvolvimento Java, é hora de validar se tudo está funcionando perfeitamente antes de começar seu primeiro projeto.&lt;/p&gt;
&lt;p&gt;Crie um projeto de teste rápido para verificar a configuração. Vá em &lt;strong&gt;File &amp;gt; New &amp;gt; Project&lt;/strong&gt;, escolha Java, selecione o SDK que você configurou e crie um projeto simples.&lt;/p&gt;
&lt;p&gt;No projeto criado, adicione uma classe Main.java com um método main básico que imprime &quot;Hello World&quot;. Se o código compilar sem erros vermelhos e você conseguir executar pressionando Shift+F10, sua configuração de SDK está correta.&lt;/p&gt;
&lt;p&gt;Teste também o sistema de build adicionando uma dependência externa. Se escolheu Maven, adicione uma biblioteca popular como JUnit ou Gson no pom.xml. Se o IntelliJ baixar automaticamente a dependência e você conseguir importar classes dessa biblioteca, o Maven está configurado corretamente.&lt;/p&gt;
&lt;p&gt;Verifique a performance observando o uso de memória no rodapé do IntelliJ. Se a IDE não estiver consumindo mais de 70% da heap alocada durante uso normal, suas configurações de performance estão adequadas.&lt;/p&gt;
&lt;p&gt;Ficou com alguma dúvida sobre como configurar IntelliJ Java? Deixe seu comentário abaixo que vou te ajudar a resolver! E se este guia foi útil, compartilhe com outros desenvolvedores que estão começando sua jornada com Java.&lt;/p&gt;
&lt;p&gt;Agora é só começar a codar! Com o ambiente configurado corretamente, você tem tudo para desenvolver projetos Java profissionais e aproveitar ao máximo os recursos que o IntelliJ IDEA oferece.&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2025/11/configurar-intellij-java-guia-completo-iniciantes.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimm394yNHIXJavwRcP7AUtVqc74Wt1CEk7AjiKolXMARdzhx38nOoXPlOVUtc0OTb68r_KaqRdvlAaS98XqkDDsiqUcXdNAssF0mttneUebyWnKepsXG7JqbvQAYrXCEM33tOx7o14dVRb3CRHeM7elH4iBpW6JFELq9eJnPZDOzYrjZYc031ytebpnsM/s72-w320-h204-c/configurar-intellij-para-java-iniciantes.webp" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-6480081220653735651</guid><pubDate>Sat, 22 Nov 2025 03:51:00 +0000</pubDate><atom:updated>2025-12-02T23:05:23.668-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Artigos variados</category><category domain="http://www.blogger.com/atom/ns#">Rede</category><title>Como Resolver Quedas de Conexão na Intel Wi-Fi 6 AX200: Guia Completo</title><description>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQcC8OfmtSgDlAj4qAkIRjZA_LOmgepJHgcPUekYyzva5Xh21XIFiNNn_aWk_pnseuuXVKo_6HKWhAJUwTR2mh1F5maFh_GwPiOcQpGLsr1OjoiXiIjPcClwcV_PAnArVV7sKWagU_jL2l4RZ5MJ679mCih4OA2ZSOPBCD-Jf0BaGfoB5laptDlpncNWU/s641/wifi-killer-ataque-rede.webp&quot;&gt;&lt;img alt=&quot;Imagem ilustrativa de um Wi-Fi Killer, mostrando o símbolo de sinal sem fio em alerta, representando ataques que derrubam conexões, bloqueiam redes e comprometem dispositivos. Ideal para artigos sobre segurança Wi-Fi, proteção de redes e quedas de internet.&quot; border=&quot;0&quot; data-original-height=&quot;422&quot; data-original-width=&quot;641&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQcC8OfmtSgDlAj4qAkIRjZA_LOmgepJHgcPUekYyzva5Xh21XIFiNNn_aWk_pnseuuXVKo_6HKWhAJUwTR2mh1F5maFh_GwPiOcQpGLsr1OjoiXiIjPcClwcV_PAnArVV7sKWagU_jL2l4RZ5MJ679mCih4OA2ZSOPBCD-Jf0BaGfoB5laptDlpncNWU/s16000/wifi-killer-ataque-rede.webp&quot; title=&quot;Imagem ilustrativa de um Wi-Fi Killer, mostrando o símbolo de sinal sem fio em alerta, representando ataques que derrubam conexões, bloqueiam redes e comprometem dispositivos. Ideal para artigos sobre segurança Wi-Fi, proteção de redes e quedas de internet.&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;A Intel Wi-Fi 6 &lt;br /&gt;AX200 160 MHz é reconhecida como uma excelente placa de rede sem fio, oferecendo velocidades impressionantes e suporte aos padrões mais modernos. Porém, há um problema recorrente que afeta inúmeros usuários: quedas aleatórias de conexão, especialmente em sistemas Windows 10 e 11.&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DAX200&amp;amp;ved=1t%3A269313&amp;amp;bbid=3704563907057270487&amp;amp;bpid=6480081220653735651&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;Mesmo com drivers atualizados, muitos usuários continuam enfrentando desconexões inesperadas que prejudicam a experiência de uso. A boa notícia é que existem soluções comprovadas para eliminar definitivamente esse problema.&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Por Que a AX200 Apresenta Quedas de Conexão?&lt;/h2&gt;
&lt;p&gt;Antes de partir para as soluções, é importante entender as principais causas:&lt;/p&gt;
&lt;p&gt;A placa AX200 é extremamente sensível às configurações de economia de energia do Windows. O sistema operacional tenta desligar ou reduzir a potência da placa para economizar bateria, causando desconexões. Além disso, a AX200 compartilha a mesma antena para Wi-Fi e Bluetooth, o que pode gerar conflitos de radiofrequência quando ambos estão ativos simultaneamente.&lt;/p&gt;
&lt;p&gt;Outro fator relevante é que o driver genérico fornecido pelo Windows Update não oferece a estabilidade necessária para essa placa específica. As configurações padrão de roaming também fazem com que a placa tente trocar de rede sem necessidade, resultando em quedas. Por fim, alguns roteadores implementam recursos do Wi-Fi 6 de forma inadequada, causando incompatibilidades.&lt;/p&gt;
&lt;h2&gt;Desative a Economia de Energia da Placa&lt;/h2&gt;
&lt;p&gt;Esta é a solução mais eficaz, resolvendo aproximadamente 70% dos casos de quedas aleatórias.&lt;/p&gt;
&lt;p&gt;Abra o Gerenciador de Dispositivos (pressione Windows + X e selecione a opção correspondente). Expanda a categoria &quot;Adaptadores de rede&quot; e localize &quot;Intel Wi-Fi 6 AX200 160MHz&quot;. Clique com o botão direito sobre a placa e selecione &quot;Propriedades&quot;.&lt;/p&gt;
&lt;p&gt;Na janela que abrir, acesse a guia &quot;Gerenciamento de Energia&quot;. Você verá uma caixa de seleção chamada &quot;Permitir que o computador desligue este dispositivo para economizar energia&quot;. Desmarque essa opção e clique em &quot;OK&quot; para aplicar a mudança.&lt;/p&gt;
&lt;h2&gt;Configure o Modo de Economia de Energia do Windows&lt;/h2&gt;
&lt;p&gt;Mesmo desativando a economia de energia na placa, o Windows possui configurações globais que também precisam ser ajustadas.&lt;/p&gt;
&lt;p&gt;Acesse o Painel de Controle e navegue até &quot;Opções de Energia&quot;. Localize o plano de energia que está em uso e clique em &quot;Alterar configurações do plano&quot;. Em seguida, selecione &quot;Alterar configurações avançadas de energia&quot;.&lt;/p&gt;
&lt;p&gt;Na janela que abrir, procure por &quot;Configurações do adaptador sem fio&quot; e expanda essa opção. Você verá &quot;Modo de economia de energia&quot;. Configure tanto a opção &quot;Na bateria&quot; quanto &quot;Conectado&quot; para &quot;Desempenho máximo&quot;. Aplique as alterações e feche a janela.&lt;/p&gt;
&lt;h2&gt;Ajuste os Parâmetros Avançados da Placa&lt;/h2&gt;
&lt;p&gt;A AX200 é particularmente sensível às configurações de roaming e à banda de frequência utilizada. Configurar manualmente esses parâmetros pode eliminar as quedas de conexão.&lt;/p&gt;
&lt;p&gt;No Gerenciador de Dispositivos, acesse novamente as propriedades da placa AX200. Desta vez, clique na guia &quot;Avançado&quot;. Você verá uma lista de propriedades configuráveis.&lt;/p&gt;
&lt;p&gt;Configure &quot;Preferred Band&quot; (Banda preferencial) como &quot;Prefer 5GHz&quot; para priorizar a banda de 5 GHz, que geralmente é mais estável. Em &quot;Channel Width for 5GHz&quot; (Largura do canal para 5GHz), mantenha em 160 MHz se seu roteador suportar adequadamente, ou considere reduzir para 80 MHz caso os problemas persistam.&lt;/p&gt;
&lt;p&gt;A configuração mais importante é &quot;Roaming Aggressiveness&quot; (Agressividade de roaming). Coloque no valor mais baixo possível (Lowest). Quando essa opção está configurada em valores altos, a placa fica constantemente procurando redes melhores, causando desconexões desnecessárias.&lt;/p&gt;
&lt;p&gt;Configure &quot;Transmit Power&quot; (Potência de transmissão) como &quot;Highest&quot; para potência máxima. Certifique-se de que as opções relacionadas ao padrão 802.11ax estejam habilitadas. Se disponível, ative também &quot;Throughput Booster&quot; para melhorar o desempenho.&lt;/p&gt;
&lt;h2&gt;Reinstale o Driver Oficial da Intel&lt;/h2&gt;
&lt;p&gt;O driver genérico instalado pelo Windows Update frequentemente causa problemas de estabilidade com a AX200. A solução é remover completamente esse driver e instalar a versão oficial da Intel.&lt;/p&gt;
&lt;p&gt;Primeiro, desinstale o driver atual completamente. No Gerenciador de Dispositivos, clique com o botão direito sobre a placa AX200 e selecione &quot;Desinstalar dispositivo&quot;. Na janela de confirmação, marque a opção &quot;Excluir o software driver deste dispositivo&quot;. Isso garante que todos os arquivos relacionados sejam removidos.&lt;/p&gt;
&lt;p&gt;Reinicie o computador após a desinstalação. Quando o sistema reiniciar, baixe o driver oficial mais recente diretamente do site da Intel. Procure por &quot;Intel PROSet/Wireless Software&quot; na área de downloads do fabricante. A versão 22.250.1 é conhecida por oferecer excelente estabilidade.&lt;/p&gt;
&lt;p&gt;Instale o driver baixado seguindo as instruções do instalador. Após a conclusão, reinicie novamente o computador para garantir que todas as configurações sejam aplicadas corretamente.&lt;/p&gt;
&lt;h2&gt;Resolva Conflitos com Bluetooth&lt;/h2&gt;
&lt;p&gt;A Intel AX200 possui uma característica que muitos usuários desconhecem: a placa compartilha a mesma antena física para Wi-Fi e Bluetooth. Quando ambos estão ativos simultaneamente, podem ocorrer conflitos de radiofrequência que resultam em quedas de conexão.&lt;/p&gt;
&lt;p&gt;Se você utiliza dispositivos Bluetooth regularmente, como fones de ouvido, teclado, mouse ou controles de videogame, faça um teste simples. Desative temporariamente o Bluetooth nas configurações do Windows e observe se as quedas de conexão Wi-Fi cessam.&lt;/p&gt;
&lt;p&gt;Caso o problema seja resolvido com o Bluetooth desativado, o conflito está confirmado. A solução é garantir que tanto o driver Wi-Fi quanto o driver Bluetooth estejam nas versões mais recentes fornecidas pela Intel. Baixe o pacote completo &quot;Intel Wireless Bluetooth&quot; junto com o driver Wi-Fi.&lt;/p&gt;
&lt;h2&gt;Otimize as Configurações do Roteador&lt;/h2&gt;
&lt;p&gt;Muitas vezes, o problema não está no computador, mas nas configurações do roteador. A AX200 é conhecida por apresentar incompatibilidades com determinadas configurações de roteadores, especialmente relacionadas aos novos recursos do Wi-Fi 6.&lt;/p&gt;
&lt;p&gt;Acesse a interface de administração do seu roteador através do navegador. As configurações mais problemáticas incluem DFS (Dynamic Frequency Selection), canais 5GHz acima de 120, WPA3 implementado de forma inadequada, OFDMA e TWT.&lt;/p&gt;
&lt;p&gt;Para máxima estabilidade, configure sua rede 5GHz para utilizar os canais 36, 40, 44 ou 48. Evite canais superiores a 120, pois muitas placas AX200 apresentam instabilidade nesses canais. Configure a largura do canal para 80 MHz em vez de 160 MHz, mesmo que isso reduza um pouco a velocidade máxima teórica.&lt;/p&gt;
&lt;p&gt;Temporariamente, mude a segurança para WPA2-Personal em vez de WPA3. Embora o WPA3 seja mais seguro, muitas implementações em roteadores ainda apresentam bugs que afetam a estabilidade da conexão.&lt;/p&gt;
&lt;p&gt;Se seu roteador oferece opções avançadas de Wi-Fi 6, como OFDMA e TWT (Target Wake Time), desative-as temporariamente para testar. Essas tecnologias prometem melhor eficiência, mas nem todos os roteadores as implementam corretamente.&lt;/p&gt;
&lt;h2&gt;Remova Software de Terceiros&lt;/h2&gt;
&lt;p&gt;Alguns fabricantes de notebooks, especialmente modelos voltados para games, instalam softwares adicionais como o &quot;Intel Killer Control Center&quot; ou suítes similares de otimização de rede. Esses programas frequentemente causam conflitos com os drivers padrão da Intel.&lt;/p&gt;
&lt;p&gt;Verifique na lista de programas instalados se existe algum software relacionado a &quot;Killer&quot;, &quot;Network Manager&quot; ou &quot;Gaming Center&quot; que controle a rede. Se encontrar, desinstale completamente e reinicie o computador. Na maioria dos casos, o driver padrão da Intel oferece desempenho igual ou superior sem os problemas de estabilidade.&lt;/p&gt;
&lt;h2&gt;Resultados Esperados&lt;/h2&gt;
&lt;p&gt;Ao seguir todos esses passos, a grande maioria dos usuários consegue eliminar completamente as quedas de conexão na Intel AX200. As configurações de economia de energia são, isoladamente, responsáveis pela maioria dos problemas, mas a combinação de todas as otimizações garante uma experiência consistente e confiável.&lt;/p&gt;
&lt;p&gt;Lembre-se de que cada caso pode ter particularidades. Se após aplicar todas as soluções o problema persistir, pode haver um defeito de hardware na placa ou incompatibilidades específicas com seu modelo de roteador. Nesses casos, considere entrar em contato com o suporte técnico da Intel ou do fabricante do seu computador.&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2025/11/wifi6-ax200-dropfix.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQcC8OfmtSgDlAj4qAkIRjZA_LOmgepJHgcPUekYyzva5Xh21XIFiNNn_aWk_pnseuuXVKo_6HKWhAJUwTR2mh1F5maFh_GwPiOcQpGLsr1OjoiXiIjPcClwcV_PAnArVV7sKWagU_jL2l4RZ5MJ679mCih4OA2ZSOPBCD-Jf0BaGfoB5laptDlpncNWU/s72-c/wifi-killer-ataque-rede.webp" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-1697834034060274885</guid><pubDate>Wed, 19 Nov 2025 03:54:00 +0000</pubDate><atom:updated>2025-11-22T23:21:51.750-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Windows</category><title>Como Ajustar o Brilho do Windows Usando PowerShell (2025)</title><description>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD9NvDRFD9OwI_BbcLLxmBCcRF3BmIgJtjNmfF_1ZnGK97_vF9FLb5nJUREv5IFgapo41ETIE-xOWouzE8WDiegkVAgIgUHQou9SJOFROB35EvEberpa0aX8Z-4_4IilnGnfTutl0cwUFD2RsxJfFkleoNz6tVHjI0Dnk4ijTZ8jt7LKThTco1eCqqa5U/s1536/A_flat-style_digital_illustration_depicts_a_laptop.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD9NvDRFD9OwI_BbcLLxmBCcRF3BmIgJtjNmfF_1ZnGK97_vF9FLb5nJUREv5IFgapo41ETIE-xOWouzE8WDiegkVAgIgUHQou9SJOFROB35EvEberpa0aX8Z-4_4IilnGnfTutl0cwUFD2RsxJfFkleoNz6tVHjI0Dnk4ijTZ8jt7LKThTco1eCqqa5U/w320-h213/A_flat-style_digital_illustration_depicts_a_laptop.png&quot; title=&quot;ajustar-brilho-windows-powershell-batch-ilustracao&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;
&lt;p data-end=&quot;705&quot; data-start=&quot;383&quot;&gt;Manter o brilho ideal da tela pode parecer simples, mas no &lt;br /&gt;Windows 10 e 11 isso às vezes fica escondido entre menus confusos. Para quem busca &lt;strong data-end=&quot;550&quot; data-start=&quot;525&quot;&gt;praticidade e rapidez&lt;/strong&gt;, existe uma solução excelente: &lt;strong data-end=&quot;626&quot; data-start=&quot;582&quot;&gt;ajustar o brilho diretamente por scripts&lt;/strong&gt;, usando PowerShell e um menu interativo que você mesmo pode criar em segundos.&lt;/p&gt;
&lt;p data-end=&quot;986&quot; data-start=&quot;707&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DWindows%252011&amp;amp;ved=1t%3A269313&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1697834034060274885&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;Neste guia, você aprende passo a passo como controlar o brilho da sua tela de forma prática, rápida e altamente eficiente — ideal para o dia a dia, para gamers, para quem trabalha à noite ou simplesmente para quem não aguenta mais procurar a opção de brilho nos menus do Windows.&lt;p&gt;&lt;/p&gt;
&lt;hr data-end=&quot;991&quot; data-start=&quot;988&quot; /&gt;
&lt;h2 data-end=&quot;1039&quot; data-start=&quot;993&quot;&gt;🔥 &lt;strong data-end=&quot;1039&quot; data-start=&quot;999&quot;&gt;Por que ajustar o brilho via script?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1106&quot; data-start=&quot;1041&quot;&gt;Fazer isso pelo Windows é lento e nada prático. Já com um script:&lt;/p&gt;
&lt;ul data-end=&quot;1269&quot; data-start=&quot;1108&quot;&gt;
&lt;li data-end=&quot;1149&quot; data-start=&quot;1108&quot;&gt;
&lt;p data-end=&quot;1149&quot; data-start=&quot;1110&quot;&gt;Você ajusta o brilho &lt;strong data-end=&quot;1148&quot; data-start=&quot;1131&quot;&gt;com um clique&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1191&quot; data-start=&quot;1150&quot;&gt;
&lt;p data-end=&quot;1191&quot; data-start=&quot;1152&quot;&gt;Pode criar atalhos na área de trabalho.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1237&quot; data-start=&quot;1192&quot;&gt;
&lt;p data-end=&quot;1237&quot; data-start=&quot;1194&quot;&gt;Não precisa abrir configurações escondidas.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1269&quot; data-start=&quot;1238&quot;&gt;
&lt;p data-end=&quot;1269&quot; data-start=&quot;1240&quot;&gt;É extremamente leve e rápido.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1359&quot; data-start=&quot;1271&quot;&gt;Se você gosta de produtividade, prepare-se: este tutorial vai virar parte da sua rotina.&lt;/p&gt;
&lt;hr data-end=&quot;1364&quot; data-start=&quot;1361&quot; /&gt;
&lt;h2 data-end=&quot;1422&quot; data-start=&quot;1366&quot;&gt;🟦 &lt;strong data-end=&quot;1422&quot; data-start=&quot;1371&quot;&gt;Como funciona o ajuste de brilho via PowerShell&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1691&quot; data-start=&quot;1424&quot;&gt;O Windows possui uma classe nativa chamada &lt;strong data-end=&quot;1498&quot; data-start=&quot;1467&quot;&gt;WmiMonitorBrightnessMethods&lt;/strong&gt;, que permite enviar comandos diretamente ao controlador de brilho da tela.&lt;br data-end=&quot;1576&quot; data-start=&quot;1573&quot; /&gt;
Ou seja, não mexemos no registro — que raramente funciona — e sim no método &lt;strong data-end=&quot;1663&quot; data-start=&quot;1652&quot;&gt;oficial&lt;/strong&gt; usado pelo próprio sistema.&lt;/p&gt;
&lt;p data-end=&quot;1718&quot; data-start=&quot;1693&quot;&gt;Aqui está o comando base:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1827&quot; data-start=&quot;1720&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;Get&lt;/span&gt;&lt;/span&gt;&lt;span&gt;-WmiObject -&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;span&gt; root/WMI -&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;span&gt; WmiMonitorBrightnessMethods).WmiSetBrightness(&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;, &amp;lt;valor&amp;gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;1921&quot; data-start=&quot;1829&quot;&gt;🔹 &lt;em data-end=&quot;1921&quot; data-start=&quot;1832&quot;&gt;Troque &lt;code data-end=&quot;1849&quot; data-start=&quot;1840&quot;&gt;&amp;lt;valor&amp;gt;&lt;/code&gt; por um número entre &lt;strong data-end=&quot;1881&quot; data-start=&quot;1870&quot;&gt;0 e 100&lt;/strong&gt; — isso define o brilho em porcentagem.&lt;/em&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1926&quot; data-start=&quot;1923&quot; /&gt;
&lt;h2 data-end=&quot;1987&quot; data-start=&quot;1928&quot;&gt;⭐ &lt;strong data-end=&quot;1987&quot; data-start=&quot;1932&quot;&gt;Comando rápido para ajustar brilho instantaneamente&lt;/strong&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;2008&quot; data-start=&quot;1989&quot;&gt;▶ Brilho em 80%&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2138&quot; data-start=&quot;2010&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;powershell&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-selector-class&quot;&gt;.exe&lt;/span&gt;&lt;/span&gt;&lt;span&gt; -Command &quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods)&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-selector-class&quot;&gt;.WmiSetBrightness&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;80&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&quot;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h3 data-end=&quot;2165&quot; data-start=&quot;2140&quot;&gt;▶ Brilho mínimo (10%)&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2295&quot; data-start=&quot;2167&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;powershell&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-selector-class&quot;&gt;.exe&lt;/span&gt;&lt;/span&gt;&lt;span&gt; -Command &quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods)&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-selector-class&quot;&gt;.WmiSetBrightness&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&quot;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h3 data-end=&quot;2323&quot; data-start=&quot;2297&quot;&gt;▶ Brilho máximo (100%)&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2453&quot; data-start=&quot;2325&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;powershell&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-selector-class&quot;&gt;.exe&lt;/span&gt;&lt;/span&gt;&lt;span&gt; -Command &quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods)&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-selector-class&quot;&gt;.WmiSetBrightness&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;100&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&quot;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2486&quot; data-start=&quot;2455&quot;&gt;&lt;strong data-end=&quot;2486&quot; data-start=&quot;2455&quot;&gt;Simples, direto e imediato.&lt;/strong&gt;&lt;/p&gt;
&lt;hr data-end=&quot;2491&quot; data-start=&quot;2488&quot; /&gt;
&lt;h2 data-end=&quot;2558&quot; data-start=&quot;2493&quot;&gt;🟢 &lt;strong data-end=&quot;2558&quot; data-start=&quot;2498&quot;&gt;Crie um arquivo .BAT para ajustar brilho automaticamente&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2627&quot; data-start=&quot;2560&quot;&gt;Quer alterar através dos comandos &lt;a href=&quot;https://www.blogdokdsti.com.br/2024/02/como-criar-um-arquivo-de-lote-bat-para.html&quot; target=&quot;_blank&quot;&gt;batch&lt;/a&gt;, mas não sabe como, veja mais sobre em nosso artigo:&amp;nbsp;&lt;/p&gt;&lt;a href=&quot;https://www.blogdokdsti.com.br/2024/02/como-criar-um-arquivo-de-lote-bat-para.html&quot; target=&quot;_blank&quot;&gt;Como criar um arquivo de lote (bat) para otimizar o Windows&lt;/a&gt;&lt;p data-end=&quot;2627&quot; data-start=&quot;2560&quot;&gt;Se quiser transformar o ajuste em um botão rápido, faça o seguinte:&lt;/p&gt;
&lt;ol data-end=&quot;2764&quot; data-start=&quot;2629&quot;&gt;
&lt;li data-end=&quot;2658&quot; data-start=&quot;2629&quot;&gt;
&lt;p data-end=&quot;2658&quot; data-start=&quot;2632&quot;&gt;Abra o &lt;strong data-end=&quot;2657&quot; data-start=&quot;2639&quot;&gt;Bloco de Notas&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2686&quot; data-start=&quot;2659&quot;&gt;
&lt;p data-end=&quot;2686&quot; data-start=&quot;2662&quot;&gt;Cole o comando desejado.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2728&quot; data-start=&quot;2687&quot;&gt;
&lt;p data-end=&quot;2728&quot; data-start=&quot;2690&quot;&gt;Salve como&lt;br data-end=&quot;2703&quot; data-start=&quot;2700&quot; /&gt;
&lt;strong data-end=&quot;2728&quot; data-start=&quot;2706&quot;&gt;ajustar-brilho.bat&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2764&quot; data-start=&quot;2729&quot;&gt;
&lt;p data-end=&quot;2764&quot; data-start=&quot;2732&quot;&gt;Clique duas vezes para executar.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;2808&quot; data-start=&quot;2766&quot;&gt;Pronto. O brilho da sua tela muda na hora.&lt;/p&gt;
&lt;hr data-end=&quot;2813&quot; data-start=&quot;2810&quot; /&gt;
&lt;h2 data-end=&quot;2870&quot; data-start=&quot;2815&quot;&gt;⚙️ &lt;strong data-end=&quot;2870&quot; data-start=&quot;2820&quot;&gt;Crie um menu interativo para escolher o brilho&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2966&quot; data-start=&quot;2872&quot;&gt;Se você quer uma ferramenta mais completa, com opções pré-configuradas, use este arquivo .BAT:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3801&quot; data-start=&quot;2968&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; off
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; ===============================
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt;     AJUSTE DE BRILHO WINDOWS
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; ===============================
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 1 - Brilho 20
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 2 - Brilho 40
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 3 - Brilho 60
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 4 - Brilho 80
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 5 - Brilho 100
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span&gt; /p op=Escolha: 

&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt; %op%==1 powershell &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,20)&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt; %op%==2 powershell &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,40)&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt; %op%==3 powershell &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,60)&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt; %op%==4 powershell &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,80)&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt; %op%==5 powershell &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,100)&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h3 data-end=&quot;3833&quot; data-start=&quot;3803&quot;&gt;✔ O que esse menu oferece?&lt;/h3&gt;
&lt;ul data-end=&quot;3926&quot; data-start=&quot;3835&quot;&gt;
&lt;li data-end=&quot;3850&quot; data-start=&quot;3835&quot;&gt;
&lt;p data-end=&quot;3850&quot; data-start=&quot;3837&quot;&gt;Ajuste rápido&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3868&quot; data-start=&quot;3851&quot;&gt;
&lt;p data-end=&quot;3868&quot; data-start=&quot;3853&quot;&gt;Interface limpa&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3886&quot; data-start=&quot;3869&quot;&gt;
&lt;p data-end=&quot;3886&quot; data-start=&quot;3871&quot;&gt;Opções práticas&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3926&quot; data-start=&quot;3887&quot;&gt;
&lt;p data-end=&quot;3926&quot; data-start=&quot;3889&quot;&gt;Fácil de distribuir para equipe de TI&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4010&quot; data-start=&quot;3928&quot;&gt;Perfeito para notebooks corporativos, call centers, técnicos e usuários avançados.&lt;/p&gt;
&lt;hr data-end=&quot;4015&quot; data-start=&quot;4012&quot; /&gt;
&lt;h2 data-end=&quot;4057&quot; data-start=&quot;4017&quot;&gt;💡 &lt;strong data-end=&quot;4057&quot; data-start=&quot;4022&quot;&gt;Dicas extras para produtividade&lt;/strong&gt;&lt;/h2&gt;
&lt;ul data-end=&quot;4290&quot; data-start=&quot;4059&quot;&gt;
&lt;li data-end=&quot;4134&quot; data-start=&quot;4059&quot;&gt;
&lt;p data-end=&quot;4134&quot; data-start=&quot;4061&quot;&gt;Crie atalhos diferentes para &lt;strong data-end=&quot;4111&quot; data-start=&quot;4090&quot;&gt;20, 50, 80 e 100%&lt;/strong&gt; na área de trabalho.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4197&quot; data-start=&quot;4135&quot;&gt;
&lt;p data-end=&quot;4197&quot; data-start=&quot;4137&quot;&gt;Transforme o script em &lt;strong data-end=&quot;4194&quot; data-start=&quot;4160&quot;&gt;atalho com ícone personalizado&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4290&quot; data-start=&quot;4198&quot;&gt;
&lt;p data-end=&quot;4290&quot; data-start=&quot;4200&quot;&gt;Use ferramentas como o &lt;strong data-end=&quot;4241&quot; data-start=&quot;4223&quot;&gt;Task Scheduler&lt;/strong&gt; para ajustar o brilho automaticamente à noite.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4363&quot; data-start=&quot;4292&quot;&gt;Se quiser, posso gerar &lt;strong data-end=&quot;4344&quot; data-start=&quot;4315&quot;&gt;ícones PNG personalizados&lt;/strong&gt; para seus atalhos.&lt;/p&gt;
&lt;hr data-end=&quot;4368&quot; data-start=&quot;4365&quot; /&gt;
&lt;h2 data-end=&quot;4452&quot; data-start=&quot;4370&quot;&gt;🎯 &lt;strong data-end=&quot;4452&quot; data-start=&quot;4375&quot;&gt;Conclusão: a forma mais rápida e inteligente de ajustar brilho no Windows&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;4593&quot; data-start=&quot;4454&quot;&gt;Ajustar brilho diretamente pelo Windows é lento e pouco intuitivo — mas com scripts você torna essa ação &lt;strong data-end=&quot;4592&quot; data-start=&quot;4559&quot;&gt;rápida, eficiente e acessível&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;4652&quot; data-start=&quot;4595&quot;&gt;Usando PowerShell e o menu em batch deste tutorial, você:&lt;/p&gt;
&lt;ul data-end=&quot;4762&quot; data-start=&quot;4654&quot;&gt;
&lt;li data-end=&quot;4668&quot; data-start=&quot;4654&quot;&gt;
&lt;p data-end=&quot;4668&quot; data-start=&quot;4656&quot;&gt;ganha tempo,&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4693&quot; data-start=&quot;4669&quot;&gt;
&lt;p data-end=&quot;4693&quot; data-start=&quot;4671&quot;&gt;aumenta produtividade,&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4729&quot; data-start=&quot;4694&quot;&gt;
&lt;p data-end=&quot;4729&quot; data-start=&quot;4696&quot;&gt;evita navegar por menus confusos,&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4762&quot; data-start=&quot;4730&quot;&gt;
&lt;p data-end=&quot;4762&quot; data-start=&quot;4732&quot;&gt;cria controles personalizados.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4822&quot; data-start=&quot;4764&quot;&gt;Se o objetivo é praticidade, esses métodos são imbatíveis.&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2025/11/como-ajustar-brilho-windows-powershell-batch.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD9NvDRFD9OwI_BbcLLxmBCcRF3BmIgJtjNmfF_1ZnGK97_vF9FLb5nJUREv5IFgapo41ETIE-xOWouzE8WDiegkVAgIgUHQou9SJOFROB35EvEberpa0aX8Z-4_4IilnGnfTutl0cwUFD2RsxJfFkleoNz6tVHjI0Dnk4ijTZ8jt7LKThTco1eCqqa5U/s72-w320-h213-c/A_flat-style_digital_illustration_depicts_a_laptop.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-5224528122369165487</guid><pubDate>Tue, 11 Nov 2025 01:05:00 +0000</pubDate><atom:updated>2025-11-21T23:35:45.367-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Java</category><title>Como Evitar que Números Grandes Virem Notação Científica no Java: Guia Completo para Desenvolvedores</title><description>&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Entenda o Problema que Afeta Milhares de Aplicações Java&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Você já se deparou com uma situação frustrante onde um número perfeitamente legível como &lt;strong&gt;1234567890123456789&lt;/strong&gt; simplesmente se transforma em algo como &lt;strong&gt;1.2345678901234568E18&lt;/strong&gt; quando sua aplicação Java interage com o banco de dados?&lt;/p&gt;
&lt;p&gt;Se você respondeu sim, saiba que não está sozinho. Esse é um dos erros mais comuns enfrentados por desenvolvedores que trabalham com valores extensos, sejam eles códigos de identificação, documentos fiscais, números de conta ou valores monetários de alta precisão.&lt;/p&gt;
&lt;p&gt;A boa notícia? Esse problema tem solução, e você vai dominar todas as técnicas necessárias ao final deste artigo.&lt;/p&gt;
&lt;h2&gt;O Que É Notação Científica e Por Que Ela Aparece?&lt;/h2&gt;
&lt;p&gt;Antes de mergulharmos nas soluções, é fundamental entender a raiz do problema.&lt;/p&gt;
&lt;p&gt;A notação científica é uma forma matemática de representar números muito grandes ou muito pequenos de maneira compacta. Por exemplo, &lt;strong&gt;1.5E6&lt;/strong&gt; significa 1.500.000 (1,5 multiplicado por 10 elevado à sexta potência).&lt;/p&gt;
&lt;p&gt;Embora seja útil em contextos científicos e matemáticos, essa notação se torna uma verdadeira dor de cabeça quando você precisa de números exatos em aplicações comerciais.&lt;/p&gt;
&lt;h3&gt;A Limitação dos Tipos Primitivos do &lt;br /&gt;Java&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DJava&amp;amp;ved=1t%3A269313&amp;amp;bbid=3704563907057270487&amp;amp;bpid=5224528122369165487&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/h3&gt;
&lt;p&gt;O Java utiliza os tipos &lt;strong&gt;float&lt;/strong&gt; e &lt;strong&gt;double&lt;/strong&gt; para trabalhar com números decimais. Esses tipos seguem o padrão internacional IEEE 754, que define como números de ponto flutuante são armazenados na memória.&lt;/p&gt;
&lt;p&gt;O problema central está na capacidade limitada de armazenamento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;float&lt;/strong&gt;: consegue armazenar aproximadamente 7 dígitos significativos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;double&lt;/strong&gt;: consegue armazenar aproximadamente 15-16 dígitos significativos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quando você tenta armazenar um número com mais dígitos do que o tipo suporta, o Java automaticamente faz uma conversão para notação científica, perdendo precisão no processo.&lt;/p&gt;
&lt;p&gt;Veja este exemplo prático:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;double numeroGrande = 1234567890123456789d;
System.out.println(&quot;Valor armazenado: &quot; + numeroGrande);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado no console:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Valor armazenado: 1.2345678901234568E18
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perceba que os últimos dígitos foram alterados. Isso não é apenas uma questão de formatação visual – os dados realmente foram modificados na memória!&lt;/p&gt;
&lt;h2&gt;Quando Esse Problema Realmente Importa?&lt;/h2&gt;
&lt;p&gt;Você pode estar pensando: &quot;Ok, mas isso realmente faz diferença na prática?&quot; A resposta é: &lt;strong&gt;depende muito do contexto&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Situações Críticas Onde a Precisão É Essencial&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Sistemas Financeiros&lt;/strong&gt;
Imagine uma aplicação bancária que processa valores monetários. Se você está lidando com transações internacionais ou cálculos de juros compostos em investimentos de longo prazo, perder até mesmo uma fração de centavo pode gerar inconsistências graves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Identificadores Únicos&lt;/strong&gt;
CNPJs, CPFs, códigos de barras, números de protocolo – todos esses são tratados como números, mas não podem sofrer nenhuma alteração. Um dígito errado invalida completamente a informação.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Integrações com Sistemas Legados&lt;/strong&gt;
Muitos bancos de dados antigos armazenam identificadores como números. Ao migrar ou integrar esses sistemas, a conversão inadequada pode corromper registros inteiros.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Relatórios e Auditoria&lt;/strong&gt;
Se seus relatórios mostram valores diferentes dos registrados no banco de dados, você terá sérios problemas em auditorias e conformidade regulatória.&lt;/p&gt;
&lt;h2&gt;Exemplo Real: O Desastre Silencioso na Extração de Dados&lt;/h2&gt;
&lt;p&gt;Considere este cenário comum em aplicações empresariais:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;Connection conexao = DriverManager.getConnection(urlBanco, usuario, senha);
Statement comando = conexao.createStatement();
ResultSet resultado = comando.executeQuery(&quot;SELECT codigo_produto FROM produtos&quot;);

while (resultado.next()) {
    double codigo = resultado.getDouble(&quot;codigo_produto&quot;);
    System.out.println(&quot;Código extraído: &quot; + codigo);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;O que você esperava:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Código extraído: 7891234567890
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;O que você obtém:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Código extraído: 7.89123456789E12
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O impacto? Validações falham, buscas não encontram os registros, e relatórios ficam incompreensíveis para os usuários finais.&lt;/p&gt;
&lt;h2&gt;Solução 1: Tratando Identificadores Como Texto&lt;/h2&gt;
&lt;p&gt;A primeira e mais simples solução é reconhecer que nem todo número precisa ser tratado como tipo numérico.&lt;/p&gt;
&lt;h3&gt;Quando Usar String ao Invés de Tipos Numéricos&lt;/h3&gt;
&lt;p&gt;Se o valor não será usado em operações matemáticas (soma, subtração, multiplicação), trate-o como texto:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;ResultSet resultado = comando.executeQuery(&quot;SELECT codigo_produto FROM produtos&quot;);

while (resultado.next()) {
    String codigo = resultado.getString(&quot;codigo_produto&quot;);
    System.out.println(&quot;Código preservado: &quot; + codigo);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Vantagens desta abordagem:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preservação total dos dígitos originais&lt;/li&gt;
&lt;li&gt;Sem risco de conversão automática&lt;/li&gt;
&lt;li&gt;Performance excelente para leitura&lt;/li&gt;
&lt;li&gt;Ideal para chaves primárias, documentos e identificadores&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cuidado importante:&lt;/strong&gt; Certifique-se de que a coluna no banco de dados também está definida como VARCHAR ou CHAR, não como NUMBER ou BIGINT.&lt;/p&gt;
&lt;h2&gt;Solução 2: BigDecimal Para Precisão Absoluta em Cálculos&lt;/h2&gt;
&lt;p&gt;Quando você realmente precisa fazer operações matemáticas com números grandes, a classe &lt;strong&gt;BigDecimal&lt;/strong&gt; é sua melhor aliada.&lt;/p&gt;
&lt;h3&gt;Por Que BigDecimal É Superior&lt;/h3&gt;
&lt;p&gt;Diferente de float e double, o BigDecimal armazena números como objetos, sem limitação de precisão. Ele é especialmente projetado para cálculos financeiros e situações onde cada dígito conta.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;ResultSet resultado = comando.executeQuery(&quot;SELECT valor_transacao FROM financeiro&quot;);

while (resultado.next()) {
    BigDecimal valor = resultado.getBigDecimal(&quot;valor_transacao&quot;);
    System.out.println(&quot;Valor exato: &quot; + valor.toPlainString());
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;O Método toPlainString() É Crucial&lt;/h3&gt;
&lt;p&gt;Nunca use apenas &lt;code&gt;toString()&lt;/code&gt; com BigDecimal, pois ele ainda pode retornar notação científica em alguns casos. Sempre utilize:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;valor.toPlainString() // Retorna o número completo, sem notação científica
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Exemplo Prático com Cálculos Financeiros&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;BigDecimal saldo = new BigDecimal(&quot;125678.50&quot;);
BigDecimal juros = new BigDecimal(&quot;0.0075&quot;); // 0,75%
BigDecimal rendimento = saldo.multiply(juros);

System.out.println(&quot;Saldo inicial: R$ &quot; + saldo.toPlainString());
System.out.println(&quot;Rendimento: R$ &quot; + rendimento.toPlainString());
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado garantido:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Saldo inicial: R$ 125678.50
Rendimento: R$ 942.58875
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Solução 3: Gravação Segura com PreparedStatement&lt;/h2&gt;
&lt;p&gt;A prevenção começa no momento da gravação. O PreparedStatement é sua ferramenta essencial para inserir dados no banco sem perda de precisão.&lt;/p&gt;
&lt;h3&gt;O Jeito Errado (Que Causa o Problema)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;PreparedStatement ps = conexao.prepareStatement(
    &quot;INSERT INTO contas (numero_conta, saldo) VALUES (?, ?)&quot;
);

double numeroConta = 9876543210123456d;
double saldo = 50000.75;

ps.setDouble(1, numeroConta); // ERRO: vai virar notação científica
ps.setDouble(2, saldo);
ps.executeUpdate();
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;O Jeito Correto (Que Preserva os Dados)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;PreparedStatement ps = conexao.prepareStatement(
    &quot;INSERT INTO contas (numero_conta, saldo) VALUES (?, ?)&quot;
);

String numeroConta = &quot;9876543210123456&quot;;
BigDecimal saldo = new BigDecimal(&quot;50000.75&quot;);

ps.setString(1, numeroConta); // Preserva todos os dígitos
ps.setBigDecimal(2, saldo);   // Mantém precisão decimal exata
ps.executeUpdate();
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conversão de Valores Já Afetados: Ainda Há Esperança&lt;/h2&gt;
&lt;p&gt;E se você já tem dados armazenados em notação científica? É possível recuperá-los em muitos casos.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;String valorCientifico = &quot;1.23E10&quot;;
BigDecimal valorRecuperado = new BigDecimal(valorCientifico);
String valorLegivel = valorRecuperado.toPlainString();

System.out.println(&quot;Valor original (científico): &quot; + valorCientifico);
System.out.println(&quot;Valor convertido: &quot; + valorLegivel);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Saída:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Valor original (científico): 1.23E10
Valor convertido: 12300000000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Atenção:&lt;/strong&gt; Essa conversão só funciona se a notação científica ainda contém todos os dígitos significativos. Se houve truncamento severo, pode haver perda de dados irreversível.&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;Comparativo: Escolhendo o Tipo Certo para Cada Situação&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhhGZUOsZNS_WTo-lkdCWbqhEznijWiDDoyTm9qpp_D8eVyWsAfZriC-YSNve8TZugFKT4oUazaBhhKJEbW2_7-YVF5pc3CnBws4E_p_eEFbYWscfZIUqdpwhKYOrkapf-JP_w4Ljdz-U7WZORQjCdipeiSUHuVmuQpX2nmJlK9nXSc0zwgjpNs4yfhpfQ&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Comparação entre BigDecimal e Double mostrando como o Java converte números grandes em notação científica.&quot; data-original-height=&quot;502&quot; data-original-width=&quot;786&quot; height=&quot;408&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhhGZUOsZNS_WTo-lkdCWbqhEznijWiDDoyTm9qpp_D8eVyWsAfZriC-YSNve8TZugFKT4oUazaBhhKJEbW2_7-YVF5pc3CnBws4E_p_eEFbYWscfZIUqdpwhKYOrkapf-JP_w4Ljdz-U7WZORQjCdipeiSUHuVmuQpX2nmJlK9nXSc0zwgjpNs4yfhpfQ=w640-h408&quot; title=&quot;bigdecimal-vs-double-java-precisao&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Configuração Adequada no Banco de Dados&lt;/h2&gt;
&lt;p&gt;O problema não está apenas no código Java – o esquema do banco de dados também desempenha papel fundamental.&lt;/p&gt;
&lt;h3&gt;Mapeamento Recomendado por Tipo de Dado&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Para identificadores longos (CNPJ, códigos, protocolos):&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sql&quot;&gt;-- Oracle
CREATE TABLE produtos (
    codigo VARCHAR2(50) PRIMARY KEY
);

-- PostgreSQL
CREATE TABLE produtos (
    codigo VARCHAR(50) PRIMARY KEY
);

-- SQL Server
CREATE TABLE produtos (
    codigo VARCHAR(50) PRIMARY KEY
);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Para valores monetários:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sql&quot;&gt;-- Oracle
CREATE TABLE transacoes (
    valor NUMBER(15,2)
);

-- PostgreSQL
CREATE TABLE transacoes (
    valor NUMERIC(15,2)
);

-- SQL Server
CREATE TABLE transacoes (
    valor DECIMAL(15,2)
);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Para números muito grandes que precisam de precisão total:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sql&quot;&gt;-- Use NUMERIC ou DECIMAL com precisão alta
CREATE TABLE registros (
    valor_exato NUMERIC(38,0)
);
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Implementação Completa: Exemplo do Mundo Real&lt;/h2&gt;
&lt;p&gt;Vamos consolidar tudo em um exemplo completo de uma classe de serviço que gerencia transações financeiras:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;import java.math.BigDecimal;
import java.sql.*;

public class ServicoTransacao {
    
    public void registrarTransacao(String codigoTransacao, 
                                   BigDecimal valor, 
                                   String documentoCliente) {
        
        String sql = &quot;INSERT INTO transacoes (codigo, valor, documento_cliente, data_registro) &quot; +
                     &quot;VALUES (?, ?, ?, CURRENT_TIMESTAMP)&quot;;
        
        try (Connection conn = obterConexao();
             PreparedStatement ps = conn.prepareStatement(sql)) {
            
            // Usando tipos apropriados para cada campo
            ps.setString(1, codigoTransacao);      // Identificador como texto
            ps.setBigDecimal(2, valor);             // Valor monetário com precisão
            ps.setString(3, documentoCliente);      // Documento como texto
            
            int linhasAfetadas = ps.executeUpdate();
            
            if (linhasAfetadas &amp;gt; 0) {
                System.out.println(&quot;Transação registrada com sucesso!&quot;);
                System.out.println(&quot;Código: &quot; + codigoTransacao);
                System.out.println(&quot;Valor: R$ &quot; + valor.toPlainString());
            }
            
        } catch (SQLException e) {
            System.err.println(&quot;Erro ao registrar transação: &quot; + e.getMessage());
            throw new RuntimeException(&quot;Falha na gravação dos dados&quot;, e);
        }
    }
    
    public void consultarTransacoes() {
        String sql = &quot;SELECT codigo, valor, documento_cliente FROM transacoes&quot;;
        
        try (Connection conn = obterConexao();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(sql)) {
            
            while (rs.next()) {
                String codigo = rs.getString(&quot;codigo&quot;);
                BigDecimal valor = rs.getBigDecimal(&quot;valor&quot;);
                String documento = rs.getString(&quot;documento_cliente&quot;);
                
                System.out.println(&quot;────────────────────────&quot;);
                System.out.println(&quot;Código: &quot; + codigo);
                System.out.println(&quot;Valor: R$ &quot; + valor.toPlainString());
                System.out.println(&quot;Cliente: &quot; + documento);
            }
            
        } catch (SQLException e) {
            System.err.println(&quot;Erro ao consultar transações: &quot; + e.getMessage());
        }
    }
    
    private Connection obterConexao() throws SQLException {
        String url = &quot;jdbc:postgresql://localhost:5432/financeiro&quot;;
        String usuario = &quot;app_user&quot;;
        String senha = &quot;senha_segura&quot;;
        return DriverManager.getConnection(url, usuario, senha);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Checklist de Boas Práticas para Evitar Problemas&lt;/h2&gt;
&lt;p&gt;Antes de colocar seu código em produção, verifique:&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Identificadores numéricos estão sendo tratados como String?&lt;/strong&gt;
✅ &lt;strong&gt;Valores monetários utilizam BigDecimal em vez de double?&lt;/strong&gt;
✅ &lt;strong&gt;PreparedStatement está configurado com setBigDecimal() e setString()?&lt;/strong&gt;
✅ &lt;strong&gt;Colunas do banco estão com tipos apropriados (VARCHAR para IDs, DECIMAL para valores)?&lt;/strong&gt;
✅ &lt;strong&gt;Você está usando toPlainString() ao exibir BigDecimal?&lt;/strong&gt;
✅ &lt;strong&gt;Há tratamento de exceções adequado para capturar erros de conversão?&lt;/strong&gt;
✅ &lt;strong&gt;Testes automatizados verificam a integridade dos dados gravados?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Conclusão: Precisão É Fundamental em Aplicações Profissionais&lt;/h2&gt;
&lt;p&gt;O problema da notação científica no Java não é apenas uma curiosidade técnica – é uma questão crítica que pode comprometer a integridade de dados empresariais e financeiros.&lt;/p&gt;
&lt;p&gt;Ao entender as limitações dos tipos primitivos e utilizar as ferramentas corretas (&lt;strong&gt;BigDecimal&lt;/strong&gt; para valores monetários e &lt;strong&gt;String&lt;/strong&gt; para identificadores), você garante que seus dados sejam armazenados e recuperados com precisão absoluta.&lt;/p&gt;
&lt;p&gt;Lembre-se: um único dígito errado pode invalidar uma transação inteira, causar falhas em integrações ou gerar inconsistências em relatórios. Invista tempo na escolha dos tipos corretos desde o início do desenvolvimento.&lt;/p&gt;
&lt;p&gt;Sua aplicação – e seus usuários – agradecem pela atenção aos detalhes!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Gostou deste conteúdo?&lt;/strong&gt; Implemente essas práticas em seus projetos Java e compartilhe sua experiência nos comentários. Se você tem dúvidas específicas sobre casos mais complexos, deixe sua pergunta que terei prazer em ajudar!&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2025/11/como-resolver-numeros-grandes-em-notacao-cientifica-no-java.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhhGZUOsZNS_WTo-lkdCWbqhEznijWiDDoyTm9qpp_D8eVyWsAfZriC-YSNve8TZugFKT4oUazaBhhKJEbW2_7-YVF5pc3CnBws4E_p_eEFbYWscfZIUqdpwhKYOrkapf-JP_w4Ljdz-U7WZORQjCdipeiSUHuVmuQpX2nmJlK9nXSc0zwgjpNs4yfhpfQ=s72-w640-h408-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-4829399223723802562</guid><pubDate>Sat, 01 Nov 2025 01:14:00 +0000</pubDate><atom:updated>2025-11-01T13:42:34.951-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">BD</category><title>LEFT JOIN com filtro WHERE vs ON: entenda de uma vez por todas com exemplos práticos em SQL</title><description>&lt;h4 style=&quot;text-align: left;&quot;&gt;&amp;nbsp;🧱 Introdução&lt;/h4&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjKWyq0w--5gcGLpec6Jj_uPYr0SiTtmR-Q8c7vwN8-DP50KVTG-wahopqSdXldKcLH19VQbkQX-9o79S-zz5KDz2N5PwPqq1whD6uYs8c6jp4xfDODMsXOAvVOS4veBxL-IwmkubaGCJkJ88Iyyq3jKt7YeP1A0mcVmS_cNsl3yNq_fiOCxYB5TIfdmNo&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;LEFT JOIN com filtro WHERE vs ON: entenda de uma vez por todas com exemplos práticos em SQL&quot; data-original-height=&quot;463&quot; data-original-width=&quot;694&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjKWyq0w--5gcGLpec6Jj_uPYr0SiTtmR-Q8c7vwN8-DP50KVTG-wahopqSdXldKcLH19VQbkQX-9o79S-zz5KDz2N5PwPqq1whD6uYs8c6jp4xfDODMsXOAvVOS4veBxL-IwmkubaGCJkJ88Iyyq3jKt7YeP1A0mcVmS_cNsl3yNq_fiOCxYB5TIfdmNo=w320-h213&quot; title=&quot;LEFT JOIN com filtro WHERE vs ON: entenda de uma vez por todas com exemplos práticos em SQL&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p data-end=&quot;672&quot; data-start=&quot;463&quot;&gt;Um dos temas mais confusos em SQL é o comportamento do &lt;strong data-end=&quot;531&quot; data-start=&quot;518&quot;&gt;LEFT JOIN&lt;/strong&gt; quando usamos filtros.&lt;br data-end=&quot;557&quot; data-start=&quot;554&quot; /&gt;
Muita gente não percebe que &lt;strong data-end=&quot;610&quot; data-start=&quot;585&quot;&gt;a posição da condição&lt;/strong&gt; (WHERE ou ON)&amp;nbsp;muda completamente o resultado da consulta.&lt;/p&gt;
&lt;p data-end=&quot;706&quot; data-start=&quot;674&quot;&gt;Neste artigo, você vai aprender:&lt;/p&gt;
&lt;ul data-end=&quot;901&quot; data-start=&quot;708&quot;&gt;
&lt;li data-end=&quot;765&quot; data-start=&quot;708&quot;&gt;
&lt;p data-end=&quot;765&quot; data-start=&quot;710&quot;&gt;A diferença entre aplicar o filtro no WHERE e no ON&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;815&quot; data-start=&quot;766&quot;&gt;
&lt;p data-end=&quot;815&quot; data-start=&quot;768&quot;&gt;Como preservar os registros da tabela principal&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;856&quot; data-start=&quot;816&quot;&gt;
&lt;p data-end=&quot;856&quot; data-start=&quot;818&quot;&gt;Exemplos práticos com tabelas de teste&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;901&quot; data-start=&quot;857&quot;&gt;
&lt;p data-end=&quot;901&quot; data-start=&quot;859&quot;&gt;Explicação visual com imagens do resultado&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;906&quot; data-start=&quot;903&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;⚙️ Cenário de teste — criando o ambiente&lt;/h4&gt;
&lt;p data-end=&quot;1068&quot; data-start=&quot;953&quot;&gt;Você pode rodar este script em &lt;strong data-end=&quot;998&quot; data-start=&quot;984&quot;&gt;SQL Server&lt;/strong&gt;, &lt;strong data-end=&quot;1014&quot; data-start=&quot;1000&quot;&gt;PostgreSQL&lt;/strong&gt; ou &lt;strong data-end=&quot;1028&quot; data-start=&quot;1018&quot;&gt;Oracle&lt;/strong&gt; (ajusta só o &lt;code data-end=&quot;1056&quot; data-start=&quot;1042&quot;&gt;CREATE TABLE&lt;/code&gt; se quiser):&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1583&quot; data-start=&quot;1070&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-sql&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;-- Criando tabelas&lt;/span&gt;
&lt;span class=&quot;hljs-keyword&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;TABLE&lt;/span&gt; TABELA_PRINCIPAL (
    id_produto &lt;span class=&quot;hljs-type&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;PRIMARY&lt;/span&gt; KEY,
    nome_produto &lt;span class=&quot;hljs-type&quot;&gt;VARCHAR&lt;/span&gt;(&lt;span class=&quot;hljs-number&quot;&gt;50&lt;/span&gt;)
);

&lt;span class=&quot;hljs-keyword&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;TABLE&lt;/span&gt; TABELA_SECUNDARIA (
    id_produto &lt;span class=&quot;hljs-type&quot;&gt;INT&lt;/span&gt;,
    preco &lt;span class=&quot;hljs-type&quot;&gt;DECIMAL&lt;/span&gt;(&lt;span class=&quot;hljs-number&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;)
);

&lt;span class=&quot;hljs-comment&quot;&gt;-- Inserindo dados na tabela principal&lt;/span&gt;
&lt;span class=&quot;hljs-keyword&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;INTO&lt;/span&gt; TABELA_PRINCIPAL (id_produto, nome_produto) &lt;span class=&quot;hljs-keyword&quot;&gt;VALUES&lt;/span&gt;
(&lt;span class=&quot;hljs-number&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&#39;Teclado&#39;&lt;/span&gt;),
(&lt;span class=&quot;hljs-number&quot;&gt;11&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&#39;Mouse&#39;&lt;/span&gt;),
(&lt;span class=&quot;hljs-number&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&#39;Monitor&#39;&lt;/span&gt;),
(&lt;span class=&quot;hljs-number&quot;&gt;13&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&#39;Webcam&#39;&lt;/span&gt;);

&lt;span class=&quot;hljs-comment&quot;&gt;-- Inserindo dados na tabela secundária&lt;/span&gt;
&lt;span class=&quot;hljs-keyword&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;INTO&lt;/span&gt; TABELA_SECUNDARIA (id_produto, preco) &lt;span class=&quot;hljs-keyword&quot;&gt;VALUES&lt;/span&gt;
(&lt;span class=&quot;hljs-number&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;150.00&lt;/span&gt;),
(&lt;span class=&quot;hljs-number&quot;&gt;11&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;80.00&lt;/span&gt;),
(&lt;span class=&quot;hljs-number&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;900.00&lt;/span&gt;);
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;1658&quot; data-start=&quot;1585&quot;&gt;📘 Perceba que o produto &lt;strong data-end=&quot;1625&quot; data-start=&quot;1610&quot;&gt;13 (Webcam)&lt;/strong&gt; não existe na tabela secundária.&lt;/p&gt;
&lt;hr data-end=&quot;1663&quot; data-start=&quot;1660&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;🧩 Consulta 1 — LEFT JOIN normal&lt;/h4&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1850&quot; data-start=&quot;1702&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-sql&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;SELECT&lt;/span&gt; p.id_produto, p.nome_produto, s.preco
&lt;span class=&quot;hljs-keyword&quot;&gt;FROM&lt;/span&gt; TABELA_PRINCIPAL p
&lt;span class=&quot;hljs-keyword&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;JOIN&lt;/span&gt; TABELA_SECUNDARIA s
       &lt;span class=&quot;hljs-keyword&quot;&gt;ON&lt;/span&gt; p.id_produto &lt;span class=&quot;hljs-operator&quot;&gt;=&lt;/span&gt; s.id_produto;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;1878&quot; data-start=&quot;1852&quot;&gt;🟢 &lt;strong data-end=&quot;1878&quot; data-start=&quot;1855&quot;&gt;Resultado esperado:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;2057&quot; data-start=&quot;1880&quot;&gt;&lt;thead data-end=&quot;1918&quot; data-start=&quot;1880&quot;&gt;&lt;tr data-end=&quot;1918&quot; data-start=&quot;1880&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;1893&quot; data-start=&quot;1880&quot;&gt;id_produto&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;1908&quot; data-start=&quot;1893&quot;&gt;nome_produto&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;1918&quot; data-start=&quot;1908&quot;&gt;preco&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;2057&quot; data-start=&quot;1960&quot;&gt;&lt;tr data-end=&quot;1985&quot; data-start=&quot;1960&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1965&quot; data-start=&quot;1960&quot;&gt;10&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1975&quot; data-start=&quot;1965&quot;&gt;Teclado&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1985&quot; data-start=&quot;1975&quot;&gt;150.00&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2008&quot; data-start=&quot;1986&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1991&quot; data-start=&quot;1986&quot;&gt;11&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1999&quot; data-start=&quot;1991&quot;&gt;Mouse&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2008&quot; data-start=&quot;1999&quot;&gt;80.00&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2034&quot; data-start=&quot;2009&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2014&quot; data-start=&quot;2009&quot;&gt;12&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2024&quot; data-start=&quot;2014&quot;&gt;Monitor&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2034&quot; data-start=&quot;2024&quot;&gt;900.00&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2057&quot; data-start=&quot;2035&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2040&quot; data-start=&quot;2035&quot;&gt;13&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2049&quot; data-start=&quot;2040&quot;&gt;Webcam&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2057&quot; data-start=&quot;2049&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p data-end=&quot;2168&quot; data-start=&quot;2059&quot;&gt;✅ Todos os registros da tabela principal aparecem,&lt;br data-end=&quot;2112&quot; data-start=&quot;2109&quot; /&gt;
mesmo sem correspondência na secundária (Webcam → NULL).&lt;/p&gt;
&lt;hr data-end=&quot;2173&quot; data-start=&quot;2170&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;🚫 Consulta 2 — Filtro no WHERE (perde o comportamento do LEFT JOIN)&lt;/h4&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2420&quot; data-start=&quot;2248&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-sql&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;SELECT&lt;/span&gt; p.id_produto, p.nome_produto, s.preco
&lt;span class=&quot;hljs-keyword&quot;&gt;FROM&lt;/span&gt; TABELA_PRINCIPAL p
&lt;span class=&quot;hljs-keyword&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;JOIN&lt;/span&gt; TABELA_SECUNDARIA s
       &lt;span class=&quot;hljs-keyword&quot;&gt;ON&lt;/span&gt; p.id_produto &lt;span class=&quot;hljs-operator&quot;&gt;=&lt;/span&gt; s.id_produto
&lt;span class=&quot;hljs-keyword&quot;&gt;WHERE&lt;/span&gt; s.id_produto &lt;span class=&quot;hljs-operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;hljs-number&quot;&gt;12&lt;/span&gt;;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2439&quot; data-start=&quot;2422&quot;&gt;🟡 &lt;strong data-end=&quot;2439&quot; data-start=&quot;2425&quot;&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;2546&quot; data-start=&quot;2441&quot;&gt;&lt;thead data-end=&quot;2479&quot; data-start=&quot;2441&quot;&gt;&lt;tr data-end=&quot;2479&quot; data-start=&quot;2441&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2454&quot; data-start=&quot;2441&quot;&gt;id_produto&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2469&quot; data-start=&quot;2454&quot;&gt;nome_produto&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2479&quot; data-start=&quot;2469&quot;&gt;preco&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;2546&quot; data-start=&quot;2521&quot;&gt;&lt;tr data-end=&quot;2546&quot; data-start=&quot;2521&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2526&quot; data-start=&quot;2521&quot;&gt;12&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2536&quot; data-start=&quot;2526&quot;&gt;Monitor&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2546&quot; data-start=&quot;2536&quot;&gt;900.00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p data-end=&quot;2740&quot; data-start=&quot;2548&quot;&gt;💬 &lt;strong data-end=&quot;2566&quot; data-start=&quot;2551&quot;&gt;Explicação:&lt;/strong&gt;&lt;br data-end=&quot;2569&quot; data-start=&quot;2566&quot; /&gt;
Ao colocar &lt;code data-end=&quot;2599&quot; data-start=&quot;2580&quot;&gt;s.id_produto = 12&lt;/code&gt; no &lt;strong data-end=&quot;2612&quot; data-start=&quot;2603&quot;&gt;WHERE&lt;/strong&gt;, o SQL ignora as linhas onde &lt;code data-end=&quot;2645&quot; data-start=&quot;2642&quot;&gt;s&lt;/code&gt; é &lt;code data-end=&quot;2654&quot; data-start=&quot;2648&quot;&gt;NULL&lt;/code&gt;.&lt;br data-end=&quot;2658&quot; data-start=&quot;2655&quot; /&gt;
O &lt;code data-end=&quot;2671&quot; data-start=&quot;2660&quot;&gt;LEFT JOIN&lt;/code&gt; perde o sentido e o resultado fica igual a um &lt;code data-end=&quot;2730&quot; data-start=&quot;2718&quot;&gt;INNER JOIN&lt;/code&gt; filtrado.&lt;/p&gt;
&lt;hr data-end=&quot;2745&quot; data-start=&quot;2742&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;✅ Consulta 3 — Filtro dentro do ON (mantém o comportamento do LEFT JOIN)&lt;/h4&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3000&quot; data-start=&quot;2824&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-sql&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;SELECT&lt;/span&gt; p.id_produto, p.nome_produto, s.preco
&lt;span class=&quot;hljs-keyword&quot;&gt;FROM&lt;/span&gt; TABELA_PRINCIPAL p
&lt;span class=&quot;hljs-keyword&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;JOIN&lt;/span&gt; TABELA_SECUNDARIA s
       &lt;span class=&quot;hljs-keyword&quot;&gt;ON&lt;/span&gt; p.id_produto &lt;span class=&quot;hljs-operator&quot;&gt;=&lt;/span&gt; s.id_produto
      &lt;span class=&quot;hljs-keyword&quot;&gt;AND&lt;/span&gt; s.id_produto &lt;span class=&quot;hljs-operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;hljs-number&quot;&gt;12&lt;/span&gt;;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3019&quot; data-start=&quot;3002&quot;&gt;🟢 &lt;strong data-end=&quot;3019&quot; data-start=&quot;3005&quot;&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;3195&quot; data-start=&quot;3021&quot;&gt;&lt;thead data-end=&quot;3059&quot; data-start=&quot;3021&quot;&gt;&lt;tr data-end=&quot;3059&quot; data-start=&quot;3021&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;3034&quot; data-start=&quot;3021&quot;&gt;id_produto&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;3049&quot; data-start=&quot;3034&quot;&gt;nome_produto&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;3059&quot; data-start=&quot;3049&quot;&gt;preco&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;3195&quot; data-start=&quot;3101&quot;&gt;&lt;tr data-end=&quot;3124&quot; data-start=&quot;3101&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3106&quot; data-start=&quot;3101&quot;&gt;10&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3116&quot; data-start=&quot;3106&quot;&gt;Teclado&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3124&quot; data-start=&quot;3116&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3146&quot; data-start=&quot;3125&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3130&quot; data-start=&quot;3125&quot;&gt;11&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3138&quot; data-start=&quot;3130&quot;&gt;Mouse&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3146&quot; data-start=&quot;3138&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3172&quot; data-start=&quot;3147&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3152&quot; data-start=&quot;3147&quot;&gt;12&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3162&quot; data-start=&quot;3152&quot;&gt;Monitor&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3172&quot; data-start=&quot;3162&quot;&gt;900.00&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3195&quot; data-start=&quot;3173&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3178&quot; data-start=&quot;3173&quot;&gt;13&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3187&quot; data-start=&quot;3178&quot;&gt;Webcam&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3195&quot; data-start=&quot;3187&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p data-end=&quot;3366&quot; data-start=&quot;3197&quot;&gt;💬 &lt;strong data-end=&quot;3215&quot; data-start=&quot;3200&quot;&gt;Explicação:&lt;/strong&gt;&lt;br data-end=&quot;3218&quot; data-start=&quot;3215&quot; /&gt;
Agora sim!&lt;br data-end=&quot;3231&quot; data-start=&quot;3228&quot; /&gt;
Todos os produtos da tabela principal aparecem.&lt;br data-end=&quot;3281&quot; data-start=&quot;3278&quot; /&gt;
Apenas o produto 12 traz dados da tabela secundária; os outros permanecem com &lt;code data-end=&quot;3365&quot; data-start=&quot;3359&quot;&gt;NULL&lt;/code&gt;&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2025/10/sql-left-join-on-vs-where-diferenca-explicada-com-exemplos.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjKWyq0w--5gcGLpec6Jj_uPYr0SiTtmR-Q8c7vwN8-DP50KVTG-wahopqSdXldKcLH19VQbkQX-9o79S-zz5KDz2N5PwPqq1whD6uYs8c6jp4xfDODMsXOAvVOS4veBxL-IwmkubaGCJkJ88Iyyq3jKt7YeP1A0mcVmS_cNsl3yNq_fiOCxYB5TIfdmNo=s72-w320-h213-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-8484357157713350365</guid><pubDate>Fri, 31 Oct 2025 03:37:00 +0000</pubDate><atom:updated>2025-11-04T23:30:35.009-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ferramentas Online</category><title>Drawly Studio – Crie, desenhe e salve suas ideias online (Em desenvolvimento)</title><description>&lt;!doctype html&gt;
&lt;html lang=&quot;pt-BR&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot; /&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot; /&gt;
&lt;title&gt;SketchBoard Free — desenhe e salve (sem login)&lt;/title&gt;
&lt;style&gt;
  :root{
    --bg:#f6f8fb; 
    --panel:#ffffff; 
    --accent:#0a74ff; 
    --muted:#556; 
    --btn:#0f1724;
  }

  /* Tema escuro */
  :root.dark {
    --bg:#0f1724; 
    --panel:#1b2430; 
    --accent:#4c9aff; 
    --muted:#b5b5b5; 
    --btn:#ffffff;
  }

  *{box-sizing:border-box;font-family:Inter,system-ui,Segoe UI,Roboto,&quot;Helvetica Neue&quot;,Arial}
  body{margin:0;background:var(--bg);color:var(--btn);display:flex;flex-direction:column;height:100vh;transition:background .3s,color .3s}
  header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:linear-gradient(90deg,#fff,#f0f6ff);border-bottom:1px solid rgba(10,10,10,0.04);transition:background .3s}
  :root.dark header{background:linear-gradient(90deg,#1b2430,#0f1724);border-bottom:1px solid rgba(255,255,255,0.08)}
  header h1{font-size:16px;margin:0;color:var(--btn)}
  .toolbar{display:flex;gap:8px;align-items:center;margin-left:12px}
  .tool{background:transparent;border:1px solid rgba(10,10,10,0.06);padding:8px;border-radius:6px;cursor:pointer;color:var(--muted);transition:all .2s}
  :root.dark .tool{border:1px solid rgba(255,255,255,0.1);color:#ccc}
  .tool.active{border-color:var(--accent);color:var(--btn);box-shadow:0 4px 10px rgba(10,116,255,0.08)}
  .right{margin-left:auto;display:flex;gap:8px;align-items:center}
  .small{font-size:13px;color:var(--muted)}
  main{flex:1;display:flex;gap:12px;padding:12px;align-items:stretch}
  .canvas-wrap{flex:1;background:var(--panel);border-radius:8px;box-shadow:0 6px 20px rgba(20,30,50,0.06);display:flex;align-items:center;justify-content:center;padding:12px;transition:background .3s}
  canvas{background:#ffffff;border-radius:6px;border:1px solid rgba(10,10,10,0.04);max-width:100%;height:auto;touch-action:none}
  :root.dark canvas{background:#1b2430;border:1px solid rgba(255,255,255,0.1)}
  .controls{width:320px;background:var(--panel);border-radius:8px;padding:12px;box-shadow:0 6px 20px rgba(20,30,50,0.04);transition:background .3s}
  .row{display:flex;gap:8px;align-items:center;margin-bottom:10px}
  label{font-size:13px;color:var(--muted);display:block;margin-bottom:6px}
  input[type=color]{width:44px;height:36px;border-radius:6px;border:1px solid rgba(10,10,10,0.06);cursor:pointer}
  input[type=range]{width:100%}
  button.primary{background:var(--accent);color:#fff;border:none;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background .2s}
  button.ghost{background:transparent;border:1px solid rgba(10,10,10,0.06);padding:8px 10px;border-radius:6px;cursor:pointer}
  :root.dark button.ghost{border:1px solid rgba(255,255,255,0.1);color:#ccc}
  footer{padding:10px;text-align:center;color:var(--muted);font-size:13px;transition:color .3s}
  @media(max-width:900px){
    main{flex-direction:column}
    .controls{width:100%}
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;img 
  src=&quot;https://i.imgur.com/gWj1Byz.jpeg&quot; 
  alt=&quot;SketchBoard Free — desenhe e salve&quot; 
  width=&quot;800&quot; 
  height=&quot;450&quot; 
  style=&quot;display: none;&quot;&gt;
&lt;header&gt;
  &lt;h1&gt;SketchBoard Free&lt;/h1&gt;
  &lt;div class=&quot;toolbar&quot; role=&quot;toolbar&quot; aria-label=&quot;Ferramentas&quot;&gt;
    &lt;button class=&quot;tool active&quot; data-tool=&quot;pencil&quot; title=&quot;Lápis (C)&quot;&gt;✏️&lt;/button&gt;
    &lt;button class=&quot;tool&quot; data-tool=&quot;eraser&quot; title=&quot;Borracha (E)&quot;&gt;🧽&lt;/button&gt;
    &lt;button class=&quot;tool&quot; data-tool=&quot;rect&quot; title=&quot;Retângulo (R)&quot;&gt;⬛&lt;/button&gt;
    &lt;button class=&quot;tool&quot; data-tool=&quot;circle&quot; title=&quot;Círculo (O)&quot;&gt;⚪&lt;/button&gt;
    &lt;button class=&quot;tool&quot; data-tool=&quot;diamond&quot; title=&quot;Losango (D)&quot;&gt;🔷&lt;/button&gt;
    &lt;button class=&quot;tool&quot; data-tool=&quot;arrow&quot; title=&quot;Seta (A)&quot;&gt;➡️&lt;/button&gt;
    &lt;div style=&quot;width:1px;height:28px;background:rgba(0,0,0,0.06);margin:0 6px&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;small&quot;&gt;Cor&lt;/div&gt;
    &lt;input type=&quot;color&quot; id=&quot;color&quot; value=&quot;#0a74ff&quot; aria-label=&quot;Escolher cor&quot;/&gt;
    &lt;div style=&quot;width:12px&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;small&quot;&gt;Tamanho&lt;/div&gt;
    &lt;input type=&quot;range&quot; id=&quot;size&quot; min=&quot;1&quot; max=&quot;50&quot; value=&quot;4&quot; aria-label=&quot;Tamanho do traço&quot; /&gt;
    &lt;div style=&quot;width:8px&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;right&quot;&gt;
    &lt;button class=&quot;tool&quot; id=&quot;undoBtn&quot; title=&quot;Desfazer (Ctrl+Z)&quot;&gt;↶&lt;/button&gt;
    &lt;button class=&quot;tool&quot; id=&quot;clearBtn&quot; title=&quot;Limpar tela&quot;&gt;🗑️&lt;/button&gt;
    &lt;button class=&quot;primary&quot; id=&quot;saveBtn&quot; title=&quot;Salvar imagem&quot;&gt;💾 Salvar PNG&lt;/button&gt;
    &lt;button class=&quot;tool&quot; id=&quot;themeToggle&quot; title=&quot;Alternar tema&quot;&gt;🌙&lt;/button&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;main&gt;
  &lt;div class=&quot;canvas-wrap&quot;&gt;
    &lt;canvas id=&quot;canvas&quot; width=&quot;1280&quot; height=&quot;720&quot; aria-label=&quot;Área de desenho&quot;&gt;&lt;/canvas&gt;
  &lt;/div&gt;

  &lt;aside class=&quot;controls&quot; aria-label=&quot;Configurações&quot;&gt;
    &lt;div&gt;
      &lt;label&gt;Ferramenta ativa: &lt;span id=&quot;activeTool&quot;&gt;Lápis&lt;/span&gt;&lt;/label&gt;
      &lt;div style=&quot;font-size:13px;color:var(--muted)&quot;&gt;Atalhos: C=Lápis • E=Borracha • R=Retângulo • O=Círculo • D=Losango • A=Seta • Ctrl+Z=Desfazer&lt;/div&gt;
    &lt;/div&gt;

    &lt;hr style=&quot;margin:12px 0;border:none;border-top:1px solid rgba(0,0,0,0.04)&quot;&gt;

    &lt;div class=&quot;row&quot;&gt;
      &lt;div style=&quot;flex:1&quot;&gt;
        &lt;label&gt;Cor atual&lt;/label&gt;
        &lt;input type=&quot;color&quot; id=&quot;sideColor&quot; value=&quot;#0a74ff&quot; /&gt;
      &lt;/div&gt;
      &lt;div style=&quot;width:12px&quot;&gt;&lt;/div&gt;
      &lt;div style=&quot;flex:1&quot;&gt;
        &lt;label&gt;Tamanho (px)&lt;/label&gt;
        &lt;input type=&quot;range&quot; id=&quot;sideSize&quot; min=&quot;1&quot; max=&quot;50&quot; value=&quot;4&quot; /&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div style=&quot;margin-top:10px&quot;&gt;
      &lt;label&gt;Opções&lt;/label&gt;
      &lt;div class=&quot;row&quot;&gt;
        &lt;button class=&quot;ghost&quot; id=&quot;fillToggle&quot;&gt;Preenchimento: Off&lt;/button&gt;
        &lt;button class=&quot;ghost&quot; id=&quot;exportSVG&quot;&gt;Exportar SVG&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div style=&quot;margin-top:14px;color:var(--muted);font-size:13px&quot;&gt;
      &lt;strong&gt;Dicas:&lt;/strong&gt; use o lápis para rascunhos; shapes ficam nítidos e editáveis antes de desenhar outro elemento.
    &lt;/div&gt;
  &lt;/aside&gt;
&lt;/main&gt;

&lt;footer&gt;SketchBoard Free — desenhe e salve no seu computador • sem login&lt;/footer&gt;

&lt;script&gt;
(() =&gt; {
  const canvas = document.getElementById(&#39;canvas&#39;);
  const ctx = canvas.getContext(&#39;2d&#39;, {alpha: true});
  const themeToggle = document.getElementById(&#39;themeToggle&#39;);
  const root = document.documentElement;
  let darkMode = false;

  themeToggle.addEventListener(&#39;click&#39;, () =&gt; {
    darkMode = !darkMode;
    root.classList.toggle(&#39;dark&#39;, darkMode);
    themeToggle.textContent = darkMode ? &#39;☀️&#39; : &#39;🌙&#39;;
  });

  // --- resto do código original ---
  let W = canvas.width, H = canvas.height;
  const state = {tool:&#39;pencil&#39;,color:&#39;#0a74ff&#39;,size:4,fill:false,drawing:false,start:null,actions:[]};

  const tools = Array.from(document.querySelectorAll(&#39;.tool[data-tool]&#39;));
  const activeToolLabel = document.getElementById(&#39;activeTool&#39;);
  const colorInput = document.getElementById(&#39;color&#39;);
  const sizeInput = document.getElementById(&#39;size&#39;);
  const sideColor = document.getElementById(&#39;sideColor&#39;);
  const sideSize = document.getElementById(&#39;sideSize&#39;);
  const fillToggle = document.getElementById(&#39;fillToggle&#39;);
  const undoBtn = document.getElementById(&#39;undoBtn&#39;);
  const clearBtn = document.getElementById(&#39;clearBtn&#39;);
  const saveBtn = document.getElementById(&#39;saveBtn&#39;);
  const exportSVGBtn = document.getElementById(&#39;exportSVG&#39;);

  colorInput.addEventListener(&#39;input&#39;, e =&gt; { state.color = e.target.value; sideColor.value = state.color; });
  sideColor.addEventListener(&#39;input&#39;, e =&gt; { state.color = e.target.value; colorInput.value = state.color; });
  sizeInput.addEventListener(&#39;input&#39;, e =&gt; { state.size = parseInt(e.target.value,10); sideSize.value = state.size; });
  sideSize.addEventListener(&#39;input&#39;, e =&gt; { state.size = parseInt(e.target.value,10); sizeInput.value = state.size; });
  fillToggle.addEventListener(&#39;click&#39;, () =&gt; { state.fill=!state.fill; fillToggle.textContent=&#39;Preenchimento: &#39;+(state.fill?&#39;On&#39;:&#39;Off&#39;); });

  function setTool(name){
    state.tool = name;
    tools.forEach(t=&gt;t.classList.toggle(&#39;active&#39;, t.dataset.tool === name));
    activeToolLabel.textContent = name.charAt(0).toUpperCase()+name.slice(1);
  }

  tools.forEach(btn =&gt; btn.addEventListener(&#39;click&#39;,()=&gt;setTool(btn.dataset.tool)));

  function posFromEvent(e){
    const rect=canvas.getBoundingClientRect();
    const clientX=e.touches?e.touches[0].clientX:e.clientX;
    const clientY=e.touches?e.touches[0].clientY:e.clientY;
    return {x:Math.round((clientX-rect.left)*(canvas.width/rect.width)),y:Math.round((clientY-rect.top)*(canvas.height/rect.height))};
  }

  canvas.addEventListener(&#39;pointerdown&#39;,e=&gt;{
    e.preventDefault();const p=posFromEvent(e);state.drawing=true;state.start=p;
    if(state.tool===&#39;pencil&#39;||state.tool===&#39;eraser&#39;){
      state.actions.push({type:state.tool,color:state.tool===&#39;eraser&#39;?&#39;#ffffff&#39;:state.color,size:state.size,points:[p]});
    }else{
      state.actions.push({type:state.tool,color:state.color,size:state.size,x:p.x,y:p.y,x2:p.x,y2:p.y,fill:state.fill});
    }
    redraw();
  });

  canvas.addEventListener(&#39;pointermove&#39;,e=&gt;{
    if(!state.drawing)return;
    const p=posFromEvent(e);
    const cur=state.actions[state.actions.length-1];
    if(cur.type===&#39;pencil&#39;||cur.type===&#39;eraser&#39;)cur.points.push(p);
    else{cur.x2=p.x;cur.y2=p.y;}
    redraw();
  });

  canvas.addEventListener(&#39;pointerup&#39;,()=&gt;{state.drawing=false;state.start=null;});

  function redraw(){
    ctx.clearRect(0,0,W,H);
    ctx.fillStyle=&#39;#ffffff&#39;;ctx.fillRect(0,0,W,H);
    for(const a of state.actions) drawAction(a);
  }

  function drawAction(a){
    ctx.save();ctx.lineCap=&#39;round&#39;;ctx.lineJoin=&#39;round&#39;;
    if(a.type===&#39;pencil&#39;||a.type===&#39;eraser&#39;){
      ctx.strokeStyle=a.color;ctx.lineWidth=a.size;ctx.beginPath();
      const pts=a.points;if(pts&amp;&amp;pts.length){ctx.moveTo(pts[0].x,pts[0].y);for(let i=1;i&lt;pts.length;i++)ctx.lineTo(pts[i].x,pts[i].y);ctx.stroke();}
    }else if(a.type===&#39;rect&#39;){
      ctx.strokeStyle=a.color;ctx.lineWidth=a.size;
      const x=Math.min(a.x,a.x2),y=Math.min(a.y,a.y2),w=Math.abs(a.x2-a.x),h=Math.abs(a.y2-a.y);
      if(a.fill){ctx.fillStyle=a.color;ctx.fillRect(x,y,w,h);}else ctx.strokeRect(x,y,w,h);
    }else if(a.type===&#39;circle&#39;){
      ctx.strokeStyle=a.color;ctx.lineWidth=a.size;
      const cx=(a.x+a.x2)/2,cy=(a.y+a.y2)/2,rx=Math.abs(a.x2-a.x)/2,ry=Math.abs(a.y2-a.y)/2,r=Math.max(1,Math.min(rx,ry));
      ctx.beginPath();ctx.ellipse(cx,cy,r,r,0,0,Math.PI*2);
      if(a.fill){ctx.fillStyle=a.color;ctx.fill();}else ctx.stroke();
    }else if(a.type===&#39;diamond&#39;){
      ctx.strokeStyle=a.color;ctx.lineWidth=a.size;
      const cx=(a.x+a.x2)/2,cy=(a.y+a.y2)/2,rx=Math.abs(a.x2-a.x)/2,ry=Math.abs(a.y2-a.y)/2;
      ctx.beginPath();ctx.moveTo(cx,cy-ry);ctx.lineTo(cx+rx,cy);ctx.lineTo(cx,cy+ry);ctx.lineTo(cx-rx,cy);ctx.closePath();
      if(a.fill){ctx.fillStyle=a.color;ctx.fill();}else ctx.stroke();
    }else if(a.type===&#39;arrow&#39;){
      ctx.strokeStyle=a.color;ctx.lineWidth=a.size;
      const x1=a.x,y1=a.y,x2=a.x2,y2=a.y2;
      ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.stroke();
      const ang=Math.atan2(y2-y1,x2-x1),hl=Math.max(8,a.size*2);
      ctx.beginPath();ctx.moveTo(x2,y2);
      ctx.lineTo(x2-hl*Math.cos(ang-Math.PI/6),y2-hl*Math.sin(ang-Math.PI/6));
      ctx.lineTo(x2-hl*Math.cos(ang+Math.PI/6),y2-hl*Math.sin(ang+Math.PI/6));
      ctx.closePath();ctx.fillStyle=a.color;ctx.fill();
    }
    ctx.restore();
  }

  undoBtn.addEventListener(&#39;click&#39;,()=&gt;{if(state.actions.length)state.actions.pop();redraw();});
  clearBtn.addEventListener(&#39;click&#39;,()=&gt;{if(confirm(&#39;Limpar a tela?&#39;)){state.actions=[];redraw();}});
  saveBtn.addEventListener(&#39;click&#39;,()=&gt;{const a=document.createElement(&#39;a&#39;);a.href=canvas.toDataURL(&#39;image/png&#39;);a.download=&#39;sketchboard.png&#39;;a.click();});
})();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</description><link>http://www.blogdokdsti.com.br/2025/10/drawly-studio.html</link><author>noreply@blogger.com (Klebes Santos)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-6634348389521865040</guid><pubDate>Thu, 30 Oct 2025 04:12:00 +0000</pubDate><atom:updated>2025-11-21T23:02:24.252-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Segurança Digital</category><title>🛡️ Como Recuperar e Proteger Sua Conta do WhatsApp Roubada — 10 Passos Urgentes</title><description>&lt;h3 style=&quot;text-align: left;&quot;&gt;&amp;nbsp;Introdução rápida&lt;/h3&gt;
&lt;p data-end=&quot;994&quot; data-start=&quot;783&quot;&gt;Se sua conta do WhatsApp foi comprometida (mensagens estranhas, perda de acesso ou sessão desconhecida), siga &lt;strong data-end=&quot;910&quot; data-start=&quot;893&quot;&gt;imediatamente&lt;/strong&gt; os 10 passos abaixo. Isso maximiza chances de recuperar o número e reduzir danos.&lt;/p&gt;
&lt;hr data-end=&quot;999&quot; data-start=&quot;996&quot; /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;10 passos urgentes&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;1) Tente reativar sua conta IMEDIATAMENTE&lt;/h3&gt;
&lt;p data-end=&quot;1221&quot; data-start=&quot;1072&quot;&gt;Abra o WhatsApp no seu celular, solicite o código de verificação por SMS e &lt;strong data-end=&quot;1159&quot; data-start=&quot;1147&quot;&gt;insira-o&lt;/strong&gt;. Se você ainda controla o chip, isso pode derrubar o invasor.&lt;/p&gt;
&lt;h3 data-end=&quot;1301&quot; data-start=&quot;1223&quot; style=&quot;text-align: left;&quot;&gt;2) Ative a verificação em duas etapas (PIN) assim que recuperar o acesso&lt;/h3&gt;
&lt;p data-end=&quot;1421&quot; data-start=&quot;1302&quot;&gt;Vá em &lt;strong data-end=&quot;1371&quot; data-start=&quot;1308&quot;&gt;Configurações → Conta → Verificação em duas etapas → Ativar&lt;/strong&gt;. Escolha um PIN forte e um e-mail de recuperação.&lt;/p&gt;
&lt;h3 data-end=&quot;1487&quot; data-start=&quot;1423&quot; style=&quot;text-align: left;&quot;&gt;3) Encerre sessões desconhecidas do WhatsApp Web / Desktop&lt;/h3&gt;
&lt;p data-end=&quot;1581&quot; data-start=&quot;1488&quot;&gt;No app, toque em &lt;strong data-end=&quot;1529&quot; data-start=&quot;1505&quot;&gt;Aparelhos conectados&lt;/strong&gt; e finalize todas as sessões que você não reconhece.&lt;/p&gt;
&lt;h3 data-end=&quot;1650&quot; data-start=&quot;1583&quot;&gt;4) Contate sua operadora imediatamente (suspeita de SIM swap)&lt;/h3&gt;
&lt;p data-end=&quot;1763&quot; data-start=&quot;1651&quot;&gt;Peça &lt;strong data-end=&quot;1689&quot; data-start=&quot;1656&quot;&gt;bloqueio temporário do número&lt;/strong&gt; e registre solicitação de investigação por fraude/portabilidade indevida.&lt;/p&gt;
&lt;h3 data-end=&quot;1841&quot; data-start=&quot;1765&quot; style=&quot;text-align: left;&quot;&gt;5) Altere senhas dos serviços vinculados (email, banco, redes sociais)&lt;/h3&gt;
&lt;p data-end=&quot;1956&quot; data-start=&quot;1842&quot;&gt;Se o invasor teve acesso, troque senhas e ative 2FA (autenticação de dois fatores) em e-mail e contas financeiras.&lt;/p&gt;
&lt;h3 data-end=&quot;2029&quot; data-start=&quot;1958&quot; style=&quot;text-align: left;&quot;&gt;6) Denuncie ao suporte do WhatsApp e registre ocorrência policial&lt;/h3&gt;
&lt;p data-end=&quot;2170&quot; data-start=&quot;2030&quot;&gt;Use o formulário do WhatsApp (“Meu número foi roubado”) e registre &lt;strong data-end=&quot;2122&quot; data-start=&quot;2097&quot;&gt;Boletim de Ocorrência&lt;/strong&gt; na delegacia (importante para operadora/banco).&lt;/p&gt;
&lt;h3 data-end=&quot;2235&quot; data-start=&quot;2172&quot; style=&quot;text-align: left;&quot;&gt;7) Informe e oriente seus contatos (modelo pronto abaixo)&lt;/h3&gt;
&lt;p data-end=&quot;2384&quot; data-start=&quot;2236&quot;&gt;Envie SMS ou outra via confiável: &lt;strong data-end=&quot;2384&quot; data-start=&quot;2270&quot;&gt;“Minha conta do WhatsApp foi comprometida. Ignore pedidos de dinheiro e códigos. Vou avisar quando recuperar.”&lt;/strong&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;2449&quot; data-start=&quot;2386&quot; style=&quot;text-align: left;&quot;&gt;8) Faça scan por malware e avalie restauração do aparelho&lt;/h3&gt;
&lt;p data-end=&quot;2573&quot; data-start=&quot;2450&quot;&gt;Rode antivírus confiável; se houver suspeita forte, faça backup e &lt;strong data-end=&quot;2536&quot; data-start=&quot;2516&quot;&gt;reset de fábrica&lt;/strong&gt; do celular para eliminar app espião.&lt;/p&gt;
&lt;h3 data-end=&quot;2647&quot; data-start=&quot;2575&quot; style=&quot;text-align: left;&quot;&gt;9) Monitore transações e tentativas de fraude vinculadas ao número&lt;/h3&gt;
&lt;p data-end=&quot;2738&quot; data-start=&quot;2648&quot;&gt;Verifique movimentos bancários, cadastros e notifique bancos caso veja atividade suspeita.&lt;/p&gt;
&lt;h3 data-end=&quot;2787&quot; data-start=&quot;2740&quot; style=&quot;text-align: left;&quot;&gt;10) Adote medidas permanentes de proteção&lt;/h3&gt;
&lt;ul data-end=&quot;2985&quot; data-start=&quot;2788&quot;&gt;
&lt;li data-end=&quot;2838&quot; data-start=&quot;2788&quot;&gt;
&lt;p data-end=&quot;2838&quot; data-start=&quot;2790&quot;&gt;Use PIN para operadora (senha de atendimento).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2877&quot; data-start=&quot;2839&quot;&gt;
&lt;p data-end=&quot;2877&quot; data-start=&quot;2841&quot;&gt;Nunca compartilhe códigos SMS/OTP.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2951&quot; data-start=&quot;2878&quot;&gt;
&lt;p data-end=&quot;2951&quot; data-start=&quot;2880&quot;&gt;Revise rotineiramente &lt;strong data-end=&quot;2926&quot; data-start=&quot;2902&quot;&gt;Aparelhos conectados&lt;/strong&gt; e backups do WhatsApp.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2985&quot; data-start=&quot;2952&quot;&gt;
&lt;p data-end=&quot;2985&quot; data-start=&quot;2954&quot;&gt;Atualize sistema e apps sempre.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2990&quot; data-start=&quot;2987&quot; /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Modelo de mensagem para avisar contatos (copiar e enviar)&lt;/h3&gt;
&lt;blockquote data-end=&quot;3220&quot; data-start=&quot;3053&quot;&gt;
&lt;p data-end=&quot;3220&quot; data-start=&quot;3055&quot;&gt;&lt;strong data-end=&quot;3066&quot; data-start=&quot;3055&quot;&gt;Alerta:&lt;/strong&gt; minha conta do WhatsApp foi comprometida. Ignore mensagens pedindo dinheiro ou códigos. Estou tomando providências e avisarei quando estiver normalizado.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;3225&quot; data-start=&quot;3222&quot; /&gt;
&lt;h2 data-end=&quot;3261&quot; data-start=&quot;3227&quot;&gt;Checklist rápido (imprima/cole)&lt;/h2&gt;
&lt;ul class=&quot;contains-task-list&quot; data-end=&quot;3632&quot; data-start=&quot;3262&quot;&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3293&quot; data-start=&quot;3262&quot;&gt;
&lt;p data-end=&quot;3293&quot; data-start=&quot;3268&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Tentei reativar com SMS&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3335&quot; data-start=&quot;3294&quot;&gt;
&lt;p data-end=&quot;3335&quot; data-start=&quot;3300&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Ativei verificação em duas etapas&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3376&quot; data-start=&quot;3336&quot;&gt;
&lt;p data-end=&quot;3376&quot; data-start=&quot;3342&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Encerrei sessões do WhatsApp Web&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3416&quot; data-start=&quot;3377&quot;&gt;
&lt;p data-end=&quot;3416&quot; data-start=&quot;3383&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Contatei a operadora (SIM swap)&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3451&quot; data-start=&quot;3417&quot;&gt;
&lt;p data-end=&quot;3451&quot; data-start=&quot;3423&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Troquei senhas importantes&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3486&quot; data-start=&quot;3452&quot;&gt;
&lt;p data-end=&quot;3486&quot; data-start=&quot;3458&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Denunciei ao WhatsApp + BO&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3515&quot; data-start=&quot;3487&quot;&gt;
&lt;p data-end=&quot;3515&quot; data-start=&quot;3493&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Avisei meus contatos&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3559&quot; data-start=&quot;3516&quot;&gt;
&lt;p data-end=&quot;3559&quot; data-start=&quot;3522&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Rodei antivírus/reset se necessário&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3595&quot; data-start=&quot;3560&quot;&gt;
&lt;p data-end=&quot;3595&quot; data-start=&quot;3566&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Verifiquei contas bancárias&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot; data-end=&quot;3632&quot; data-start=&quot;3596&quot;&gt;
&lt;p data-end=&quot;3632&quot; data-start=&quot;3602&quot;&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Configurei proteção permanente&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3637&quot; data-start=&quot;3634&quot; /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Observações importantes (segurança &amp;amp; legal)&lt;/h3&gt;
&lt;ul data-end=&quot;3926&quot; data-start=&quot;3686&quot;&gt;
&lt;li data-end=&quot;3765&quot; data-start=&quot;3686&quot;&gt;
&lt;p data-end=&quot;3765&quot; data-start=&quot;3688&quot;&gt;&lt;strong data-end=&quot;3715&quot; data-start=&quot;3688&quot;&gt;Não compartilhe códigos&lt;/strong&gt; de verificação com ninguém — nem com “suporte”.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3866&quot; data-start=&quot;3766&quot;&gt;
&lt;p data-end=&quot;3866&quot; data-start=&quot;3768&quot;&gt;Em casos de SIM swap, a operadora pode reverter o número, mas é essencial o BO para fins legais.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3926&quot; data-start=&quot;3867&quot;&gt;
&lt;p data-end=&quot;3926&quot; data-start=&quot;3869&quot;&gt;Preserve prints e horários; serão úteis em investigações.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><link>http://www.blogdokdsti.com.br/2025/10/recuperar-whatsapp-roubado-como-recuperar.html</link><author>noreply@blogger.com (Klebes Santos)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-5446761428070709420</guid><pubDate>Fri, 24 Oct 2025 22:58:00 +0000</pubDate><atom:updated>2025-10-24T19:58:29.346-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">API</category><category domain="http://www.blogger.com/atom/ns#">Web</category><title>🌍 Criando um servidor WEB local no Windows 11 com JBoss WildFly (Guia Completo)</title><description>&lt;h1 data-end=&quot;714&quot; data-start=&quot;632&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh6L1_cPKX71s6u_cS_ICiCvgZ3GQfQWlD8q0VUET_mlRnRqTRdla9eDIQJq0IxSj3EOe4LIVXfJA4gyZWZZVs1KDpIurX7zo81crDfDZyttBtYM1dACaLJqAt-zrR7m7smizACUuOLbbPtXxlaVIlduvGCEZgpRdv-TIQN7LFPT7Tp_pCqTAdmiM1JonM&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;servidor web local, JBoss WildFly, Windows 11, servidor Java&quot; data-original-height=&quot;584&quot; data-original-width=&quot;584&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh6L1_cPKX71s6u_cS_ICiCvgZ3GQfQWlD8q0VUET_mlRnRqTRdla9eDIQJq0IxSj3EOe4LIVXfJA4gyZWZZVs1KDpIurX7zo81crDfDZyttBtYM1dACaLJqAt-zrR7m7smizACUuOLbbPtXxlaVIlduvGCEZgpRdv-TIQN7LFPT7Tp_pCqTAdmiM1JonM=w400-h400&quot; title=&quot;deploy Java, servidor local, WildFly Windows, instalar JBoss, aplicação web Java&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/h1&gt;
&lt;p data-end=&quot;1155&quot; data-start=&quot;716&quot;&gt;Você pode estar em qualquer lugar do mundo — Brasil, Portugal, Estados Unidos, Angola, Japão ou Índia — e ainda assim precisará, em algum momento, criar um ambiente local confiável para rodar uma aplicação web em Java. Ter um &lt;strong data-end=&quot;999&quot; data-start=&quot;942&quot;&gt;servidor web local no Windows 11 usando JBoss WildFly&lt;/strong&gt; é uma das formas mais profissionais de desenvolver e testar APIs, sistemas corporativos e aplicações Java EE / Jakarta EE com segurança e alta performance.&lt;/p&gt;&lt;h2 data-end=&quot;1871&quot; data-start=&quot;1838&quot;&gt;🔧 1. O que é o JBoss WildFly?&lt;/h2&gt;&lt;p data-end=&quot;2087&quot; data-start=&quot;1873&quot;&gt;O &lt;strong data-end=&quot;1886&quot; data-start=&quot;1875&quot;&gt;WildFly&lt;/strong&gt; (antigo JBoss AS) é um servidor de aplicações Java open-source focado em alto desempenho, modularidade e fácil administração. Ele é muito usado em empresas, principalmente em projetos que precisam de:&lt;/p&gt;&lt;ul data-end=&quot;2314&quot; data-start=&quot;2089&quot;&gt;
&lt;li data-end=&quot;2108&quot; data-start=&quot;2089&quot;&gt;
&lt;p data-end=&quot;2108&quot; data-start=&quot;2091&quot;&gt;APIs REST ou SOAP&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2176&quot; data-start=&quot;2109&quot;&gt;
&lt;p data-end=&quot;2176&quot; data-start=&quot;2111&quot;&gt;Aplicações Web Java rodando com Servlets, JSP, JSF, EJB ou Spring&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2237&quot; data-start=&quot;2177&quot;&gt;
&lt;p data-end=&quot;2237&quot; data-start=&quot;2179&quot;&gt;Conexão com bancos Oracle, PostgreSQL, SQL Server ou MySQL&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2314&quot; data-start=&quot;2238&quot;&gt;
&lt;p data-end=&quot;2314&quot; data-start=&quot;2240&quot;&gt;Deploy corporativo em ambientes de desenvolvimento, homologação e produção&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr data-end=&quot;2319&quot; data-start=&quot;2316&quot; /&gt;&lt;h2 data-end=&quot;2356&quot; data-start=&quot;2321&quot;&gt;🧰 2. Requisitos para o ambiente&lt;/h2&gt;&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;2607&quot; data-start=&quot;2358&quot;&gt;&lt;thead data-end=&quot;2387&quot; data-start=&quot;2358&quot;&gt;&lt;tr data-end=&quot;2387&quot; data-start=&quot;2358&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2365&quot; data-start=&quot;2358&quot;&gt;Item&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2387&quot; data-start=&quot;2365&quot;&gt;Versão Recomendada&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;2607&quot; data-start=&quot;2419&quot;&gt;&lt;tr data-end=&quot;2453&quot; data-start=&quot;2419&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2433&quot; data-start=&quot;2419&quot;&gt;&lt;strong data-end=&quot;2432&quot; data-start=&quot;2421&quot;&gt;Windows&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2453&quot; data-start=&quot;2433&quot;&gt;Windows 10 ou 11&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2491&quot; data-start=&quot;2454&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2469&quot; data-start=&quot;2454&quot;&gt;&lt;strong data-end=&quot;2468&quot; data-start=&quot;2456&quot;&gt;Java JDK&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2491&quot; data-start=&quot;2469&quot;&gt;11, 17 ou superior&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2538&quot; data-start=&quot;2492&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2506&quot; data-start=&quot;2492&quot;&gt;&lt;strong data-end=&quot;2505&quot; data-start=&quot;2494&quot;&gt;WildFly&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2538&quot; data-start=&quot;2506&quot;&gt;24+ ou última versão estável&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2607&quot; data-start=&quot;2539&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2575&quot; data-start=&quot;2539&quot;&gt;&lt;strong data-end=&quot;2574&quot; data-start=&quot;2541&quot;&gt;Ferramentas extras (opcional)&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2607&quot; data-start=&quot;2575&quot;&gt;IntelliJ, Eclipse ou VS Code&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote data-end=&quot;2702&quot; data-start=&quot;2609&quot;&gt;
&lt;p data-end=&quot;2702&quot; data-start=&quot;2611&quot;&gt;📌 Dica: Em qualquer sistema operacional, o essencial é que o Java esteja instalado e configurado no PATH.&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr data-end=&quot;2707&quot; data-start=&quot;2704&quot; /&gt;&lt;h2 data-end=&quot;2749&quot; data-start=&quot;2709&quot;&gt;💻 3. Baixando e instalando o WildFly&lt;/h2&gt;&lt;ol data-end=&quot;2885&quot; data-start=&quot;2751&quot;&gt;
&lt;li data-end=&quot;2788&quot; data-start=&quot;2751&quot;&gt;
&lt;p data-end=&quot;2788&quot; data-start=&quot;2754&quot;&gt;Acesse o site oficial do WildFly&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2820&quot; data-start=&quot;2789&quot;&gt;
&lt;p data-end=&quot;2820&quot; data-start=&quot;2792&quot;&gt;Baixe a versão &lt;code data-end=&quot;2814&quot; data-start=&quot;2807&quot;&gt;Final&lt;/code&gt; (ZIP)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2885&quot; data-start=&quot;2821&quot;&gt;
&lt;p data-end=&quot;2857&quot; data-start=&quot;2824&quot;&gt;Extraia para um diretório, ex.:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2885&quot; data-start=&quot;2861&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span class=&quot;hljs-section&quot;&gt;C:\wildfly&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr data-end=&quot;2890&quot; data-start=&quot;2887&quot; /&gt;&lt;h2 data-end=&quot;2952&quot; data-start=&quot;2892&quot;&gt;🔧 4. Configurando as variáveis de ambiente no Windows 11&lt;/h2&gt;&lt;p data-end=&quot;3008&quot; data-start=&quot;2954&quot;&gt;Abra o &lt;strong data-end=&quot;2988&quot; data-start=&quot;2961&quot;&gt;Prompt de Comando (CMD)&lt;/strong&gt; e verifique o Java:&lt;/p&gt;&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3031&quot; data-start=&quot;3010&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span class=&quot;hljs-attribute&quot;&gt;java&lt;/span&gt; -version
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;3088&quot; data-start=&quot;3033&quot;&gt;Depois configure o &lt;strong data-end=&quot;3065&quot; data-start=&quot;3052&quot;&gt;JAVA_HOME&lt;/strong&gt; e &lt;strong data-end=&quot;3076&quot; data-start=&quot;3068&quot;&gt;PATH&lt;/strong&gt; no Windows.&lt;/p&gt;&lt;hr data-end=&quot;3093&quot; data-start=&quot;3090&quot; /&gt;&lt;h2 data-end=&quot;3128&quot; data-start=&quot;3095&quot;&gt;🚀 5. Subindo o servidor local&lt;/h2&gt;&lt;p data-end=&quot;3146&quot; data-start=&quot;3130&quot;&gt;No CMD, execute:&lt;/p&gt;&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3188&quot; data-start=&quot;3148&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;cd&lt;/span&gt; C:\wildfly\bin
standalone.bat
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;3215&quot; data-start=&quot;3190&quot;&gt;Depois abra no navegador:&lt;/p&gt;&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3246&quot; data-start=&quot;3217&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;http:&lt;span class=&quot;hljs-comment&quot;&gt;//localhost:8080&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;3301&quot; data-start=&quot;3248&quot;&gt;Se aparecer a tela do WildFly, o servidor está ativo.&lt;/p&gt;&lt;hr data-end=&quot;3306&quot; data-start=&quot;3303&quot; /&gt;&lt;h2 data-end=&quot;3346&quot; data-start=&quot;3308&quot;&gt;🔐 6. Criando usuário administrador&lt;/h2&gt;&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3368&quot; data-start=&quot;3348&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;add&lt;/span&gt;-&lt;span class=&quot;hljs-keyword&quot;&gt;user&lt;/span&gt;.bat
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;3429&quot; data-start=&quot;3370&quot;&gt;Crie usuário &lt;strong data-end=&quot;3402&quot; data-start=&quot;3383&quot;&gt;Management User&lt;/strong&gt; e depois acesse o console:&lt;/p&gt;&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3460&quot; data-start=&quot;3431&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;http:&lt;span class=&quot;hljs-comment&quot;&gt;//localhost:9990&lt;/span&gt;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;hr data-end=&quot;3465&quot; data-start=&quot;3462&quot; /&gt;&lt;p data-end=&quot;1155&quot; data-start=&quot;716&quot;&gt;



























&lt;/p&gt;&lt;h2 data-end=&quot;3532&quot; data-start=&quot;3467&quot;&gt;🌎 7. Como adaptar o servidor para diferentes regiões do mundo&amp;nbsp;&lt;/h2&gt;(Locale, Timezone e Encoding)&lt;div&gt;&lt;strong data-end=&quot;780&quot; data-start=&quot;687&quot;&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
&lt;p data-end=&quot;903&quot; data-start=&quot;782&quot;&gt;Quando um servidor WildFly atende usuários em diferentes países, ele precisa estar preparado para lidar corretamente com:&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;1258&quot; data-start=&quot;905&quot;&gt;&lt;thead data-end=&quot;949&quot; data-start=&quot;905&quot;&gt;&lt;tr data-end=&quot;949&quot; data-start=&quot;905&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;915&quot; data-start=&quot;905&quot;&gt;Recurso&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;925&quot; data-start=&quot;915&quot;&gt;Exemplo&lt;/th&gt;&lt;th data-col-size=&quot;md&quot; data-end=&quot;949&quot; data-start=&quot;925&quot;&gt;Evita problemas como&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;1258&quot; data-start=&quot;995&quot;&gt;&lt;tr data-end=&quot;1107&quot; data-start=&quot;995&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1010&quot; data-start=&quot;995&quot;&gt;&lt;strong data-end=&quot;1009&quot; data-start=&quot;997&quot;&gt;Timezone&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1050&quot; data-start=&quot;1010&quot;&gt;America/Sao_Paulo, UTC, Europe/Lisbon&lt;/td&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;1107&quot; data-start=&quot;1050&quot;&gt;horários incorretos em logs, agendamentos e auditoria&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;1189&quot; data-start=&quot;1108&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1121&quot; data-start=&quot;1108&quot;&gt;&lt;strong data-end=&quot;1120&quot; data-start=&quot;1110&quot;&gt;Locale&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1143&quot; data-start=&quot;1121&quot;&gt;pt-BR, en-US, es-ES&lt;/td&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;1189&quot; data-start=&quot;1143&quot;&gt;datas e números exibidos em formato errado&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;1258&quot; data-start=&quot;1190&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1205&quot; data-start=&quot;1190&quot;&gt;&lt;strong data-end=&quot;1204&quot; data-start=&quot;1192&quot;&gt;Encoding&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1213&quot; data-start=&quot;1205&quot;&gt;UTF-8&lt;/td&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;1258&quot; data-start=&quot;1213&quot;&gt;caracteres quebrados (ç, ã, á, ñ, ü etc.)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 data-end=&quot;1317&quot; data-start=&quot;1260&quot;&gt;&lt;strong data-end=&quot;1317&quot; data-start=&quot;1265&quot;&gt;7.1 Configurando o Timezone no Windows + WildFly&lt;/strong&gt;&lt;/h4&gt;
&lt;ol data-end=&quot;1371&quot; data-start=&quot;1319&quot;&gt;
&lt;li data-end=&quot;1371&quot; data-start=&quot;1319&quot;&gt;
&lt;p data-end=&quot;1371&quot; data-start=&quot;1322&quot;&gt;&lt;strong data-end=&quot;1371&quot; data-start=&quot;1322&quot;&gt;Configure o timezone no Windows (PowerShell):&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1432&quot; data-start=&quot;1372&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-powershell&quot;&gt;tzutil /s &quot;E. South America Standard Time&quot;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;ol data-end=&quot;1523&quot; data-start=&quot;1434&quot; start=&quot;2&quot;&gt;
&lt;li data-end=&quot;1523&quot; data-start=&quot;1434&quot;&gt;
&lt;p data-end=&quot;1523&quot; data-start=&quot;1437&quot;&gt;&lt;strong data-end=&quot;1484&quot; data-start=&quot;1437&quot;&gt;Garanta que o WildFly siga o mesmo timezone&lt;/strong&gt;, adicionando no &lt;code data-end=&quot;1522&quot; data-start=&quot;1501&quot;&gt;standalone.conf.bat&lt;/code&gt;:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1597&quot; data-start=&quot;1525&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bat&quot;&gt;set &quot;JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=America/Sao_Paulo&quot;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;blockquote data-end=&quot;1652&quot; data-start=&quot;1599&quot;&gt;
&lt;p data-end=&quot;1652&quot; data-start=&quot;1601&quot;&gt;Dica: para servidores globais, use sempre &lt;strong data-end=&quot;1650&quot; data-start=&quot;1643&quot;&gt;UTC&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1711&quot; data-start=&quot;1653&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bat&quot;&gt;set &quot;JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=UTC&quot;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;hr data-end=&quot;1716&quot; data-start=&quot;1713&quot; /&gt;
&lt;h4 data-end=&quot;1786&quot; data-start=&quot;1718&quot;&gt;&lt;strong data-end=&quot;1786&quot; data-start=&quot;1723&quot;&gt;7.2 Configurando o Locale (Idioma/Formato de Data e Número)&lt;/strong&gt;&lt;/h4&gt;
&lt;p data-end=&quot;1836&quot; data-start=&quot;1788&quot;&gt;Edite também o &lt;code data-end=&quot;1824&quot; data-start=&quot;1803&quot;&gt;standalone.conf.bat&lt;/code&gt; e adicione:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1913&quot; data-start=&quot;1838&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bat&quot;&gt;set &quot;JAVA_OPTS=%JAVA_OPTS% -Duser.language=pt -Duser.country=BR&quot;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2021&quot; data-start=&quot;1915&quot;&gt;Para servidores multilíngues, o mais recomendado é &lt;strong data-end=&quot;1987&quot; data-start=&quot;1966&quot;&gt;en-US como padrão&lt;/strong&gt;, decidindo o idioma na aplicação.&lt;/p&gt;
&lt;hr data-end=&quot;2026&quot; data-start=&quot;2023&quot; /&gt;
&lt;h4 data-end=&quot;2091&quot; data-start=&quot;2028&quot;&gt;&lt;strong data-end=&quot;2091&quot; data-start=&quot;2033&quot;&gt;7.3 Garantindo UTF-8 em toda a aplicação (fundamental)&lt;/strong&gt;&lt;/h4&gt;
&lt;p data-end=&quot;2110&quot; data-start=&quot;2093&quot;&gt;No mesmo arquivo:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2197&quot; data-start=&quot;2112&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bat&quot;&gt;set &quot;JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8&quot;
&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2210&quot; data-start=&quot;2199&quot;&gt;Isso evita:&lt;/p&gt;
&lt;p data-end=&quot;2299&quot; data-start=&quot;2212&quot;&gt;✅ caracteres estranhos&lt;br data-end=&quot;2237&quot; data-start=&quot;2234&quot; /&gt;
✅ � trocando acentos&lt;br data-end=&quot;2260&quot; data-start=&quot;2257&quot; /&gt;
✅ erro em XML/JSON retornado pela API&lt;/p&gt;
&lt;hr data-end=&quot;2304&quot; data-start=&quot;2301&quot; /&gt;
&lt;p data-end=&quot;2357&quot; data-start=&quot;2306&quot;&gt;Se estiver tudo certo até aqui, me responda apenas:&lt;/p&gt;
&lt;p data-end=&quot;2393&quot; data-start=&quot;2359&quot;&gt;👉 &lt;strong data-end=&quot;2393&quot; data-start=&quot;2362&quot;&gt;&quot;Continuar para o tópico 8&quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;2436&quot; data-start=&quot;2395&quot;&gt;Assim eu já continuo com a próxima seção:&lt;/p&gt;
&lt;h2 data-end=&quot;242&quot; data-start=&quot;177&quot;&gt;&lt;strong data-end=&quot;242&quot; data-start=&quot;180&quot;&gt;🔐8. Segurança e Hardening do Servidor WildFly no Windows 11&lt;/strong&gt;&lt;/h2&gt;&lt;br /&gt;Quando você transforma o WildFly em um servidor web — mesmo que local ou em rede interna — segurança precisa ser prioridade. Um servidor mal configurado pode expor dados, credenciais e aplicações, além de ser um alvo para ataques comuns como:&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Brute Force&lt;/li&gt;&lt;li&gt;Port Scanning&lt;/li&gt;&lt;li&gt;Ataques via HTTP (XSS, Request Flood, Path Traversal, etc.)&lt;/li&gt;&lt;li&gt;Sequestro de sessão&lt;/li&gt;&lt;li&gt;Interceptação de tráfego (quando não há HTTPS)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;A meta do hardening é simples: reduzir a superfície de ataque e proteger as portas críticas do servidor.&lt;h3 data-end=&quot;835&quot; data-start=&quot;791&quot;&gt;&lt;strong data-end=&quot;835&quot; data-start=&quot;795&quot;&gt;8.1 Use HTTPS (TLS) ao invés de HTTP&lt;/strong&gt;&lt;/h3&gt;&lt;br /&gt;Mesmo em ambiente local, é boa prática habilitar HTTPS. &lt;br /&gt;Opções para gerar certificados&lt;br /&gt;&lt;br /&gt;CenárioCertificadoRede local Certificado self-signed&lt;br /&gt;Produção global Let&#39;s Encrypt ou autoridade confiável (DigiCert, GlobalSign etc.)&lt;br /&gt;Empresa Certificado interno fornecido pela TI&lt;br /&gt; &lt;br /&gt;Gerando um certificado self-signed (PowerShell)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;keytool -genkeypair -alias wildfly https \ -keyalg RSA -keystore wildfly.keystore \ -storepass changeit -keypass changeit \ -validity 365 -dname &quot;CN=localhost&quot; &lt;/blockquote&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Depois, edite o standalone.xml e configure o listener HTTPS: &lt;br /&gt;&lt;blockquote&gt;&amp;lt;https-listener name=&quot;https&quot; socket-binding=&quot;https&quot; security-realm=&quot;ApplicationRealm&quot; enable-http2=&quot;true&quot;/&amp;gt; &lt;/blockquote&gt;&lt;br /&gt;Benefícios imediatos: criptografia, integridade dos dados e compatibilidade com HTTP/2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;strong data-end=&quot;1746&quot; data-start=&quot;1696&quot;&gt;8.2 Bloqueie o acesso externo ao Console Admin&lt;/strong&gt;&lt;/h3&gt;Por padrão, a console de administração fica acessível na porta 9990. Em um ambiente seguro, apenas a máquina local ou a rede restrita deve acessá-la. &lt;br /&gt;&lt;br /&gt;Edite o standalone.xml e altere o binding para localhost: &lt;br /&gt;&lt;blockquote&gt;&amp;lt;interface name=&quot;management&quot;&amp;gt;
 &amp;lt;inet-address value=&quot;127.0.0.1&quot;/&amp;gt;
&amp;lt;/interface&amp;gt;&lt;/blockquote&gt;Resultado: ninguém de fora consegue gerenciar o WildFly.&lt;h3 data-end=&quot;2191&quot; data-start=&quot;2128&quot;&gt;&lt;strong data-end=&quot;2191&quot; data-start=&quot;2132&quot;&gt;8.3 Crie usuários e funções com o mínimo de privilégios&lt;/strong&gt;&lt;/h3&gt;Nunca use usuário admin para tudo. &lt;br /&gt;&lt;br /&gt;Categorias recomendadas: &lt;br /&gt;&lt;br /&gt;FunçãoIndicado paraManagement Administradores do servidor&lt;br /&gt;Application User Apps, sistemas e serviços&lt;br /&gt;Read-Only Admin Auditoria ou monitoramento&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Crie usuários com: &lt;br /&gt;&lt;blockquote&gt;add-user.bat
&lt;/blockquote&gt;&lt;br /&gt;Seguindo a política:&lt;br /&gt; ✅ Menor privilégio possível&lt;br /&gt; ✅ Senhas fortes com expiração periódica&lt;h3 data-end=&quot;2647&quot; data-start=&quot;2607&quot;&gt;&lt;strong data-end=&quot;2647&quot; data-start=&quot;2611&quot;&gt;8.4 Firewall e portas do WildFly&lt;/strong&gt;&lt;/h3&gt;Portas mais comuns do WildFly: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;PortaFunção8080 HTTP&lt;br /&gt;8443 HTTPS&lt;br /&gt;9990 Admin Console&lt;br /&gt;9999 CLI remota&lt;/blockquote&gt;&lt;br /&gt;No Windows, ative regras no Firewall do Windows Defender, liberando apenas o que for necessário. &lt;br /&gt;&lt;br /&gt;Boa prática global: &lt;br /&gt;&lt;br /&gt;✅ Liberar 8080/8443 somente para acesso interno ou VPN&lt;br /&gt; ✅ Bloquear 9990 e 9999 para acesso público&lt;br /&gt; ✅ Preferir HTTPS sempre 8.5 Remova serviços e módulos que não usa&lt;br /&gt; &lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Quanto mais módulos ativos, maior o risco. No standalone.xml, desative subsystems que não usa, como:&lt;/li&gt;&lt;li&gt;WebSockets (se não houver necessidade)&lt;/li&gt;&lt;li&gt;Messaging&lt;/li&gt;&lt;li&gt;EJB Remoting&lt;/li&gt;&lt;li&gt;Deploy Scanner externo&lt;/li&gt;&lt;/ul&gt;    &lt;br /&gt;Com isso você: &lt;br /&gt;&lt;br /&gt;✅ reduz memória&lt;br /&gt; ✅ aumenta segurança&lt;br /&gt; ✅ melhora desempenho&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 data-end=&quot;3115&quot; data-start=&quot;3066&quot;&gt;&lt;strong data-end=&quot;3115&quot; data-start=&quot;3070&quot;&gt;8.5 Remova serviços e módulos que não usa&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3219&quot; data-start=&quot;3117&quot;&gt;Quanto mais módulos ativos, maior o risco. No&amp;nbsp;standalone.xml, desative subsystems que não usa, como:&lt;/p&gt;
&lt;ul data-end=&quot;3313&quot; data-start=&quot;3221&quot;&gt;
&lt;li data-end=&quot;3261&quot; data-start=&quot;3221&quot;&gt;
&lt;p data-end=&quot;3261&quot; data-start=&quot;3223&quot;&gt;WebSockets (se não houver necessidade)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3273&quot; data-start=&quot;3262&quot;&gt;
&lt;p data-end=&quot;3273&quot; data-start=&quot;3264&quot;&gt;Messaging&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3288&quot; data-start=&quot;3274&quot;&gt;
&lt;p data-end=&quot;3288&quot; data-start=&quot;3276&quot;&gt;EJB Remoting&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3313&quot; data-start=&quot;3289&quot;&gt;
&lt;p data-end=&quot;3313&quot; data-start=&quot;3291&quot;&gt;Deploy Scanner externo&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3329&quot; data-start=&quot;3315&quot;&gt;Com isso você:&lt;/p&gt;
&lt;p data-end=&quot;3391&quot; data-start=&quot;3331&quot;&gt;✅ reduz memória&lt;br data-end=&quot;3349&quot; data-start=&quot;3346&quot; /&gt;
✅ aumenta segurança&lt;br data-end=&quot;3371&quot; data-start=&quot;3368&quot; /&gt;
✅ melhora desempenho&lt;/p&gt;&lt;h3 data-end=&quot;2572&quot; data-start=&quot;2438&quot;&gt;
&lt;hr data-end=&quot;3396&quot; data-start=&quot;3393&quot; /&gt;
&lt;/h3&gt;&lt;h3 data-end=&quot;3454&quot; data-start=&quot;3398&quot;&gt;&lt;strong data-end=&quot;3454&quot; data-start=&quot;3402&quot;&gt;8.6 Proteções adicionais (blindagem de servidor)&lt;/strong&gt;&lt;/h3&gt;&lt;br /&gt;ProteçãoResultadoRate Limit (no proxy ou firewall) Ajuda contra DoS simples&lt;br /&gt;Desativar TRACE e OPTIONS Evita fingerprint HTTP&lt;br /&gt;HSTS e CSP (via headers) Protege front-end e cookies&lt;br /&gt;Logar falhas de login Detecção precoce de ataque&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 data-end=&quot;305&quot; data-start=&quot;218&quot;&gt;&lt;strong data-end=&quot;305&quot; data-start=&quot;221&quot;&gt;9. Monitoramento e Logs no WildFly — Mantendo seu Servidor Saudável e Observável&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;614&quot; data-start=&quot;307&quot;&gt;Após ter seu servidor WildFly rodando no Windows 11, com segurança aplicada e aplicações no ar, o próximo passo é garantir &lt;strong data-end=&quot;464&quot; data-start=&quot;430&quot;&gt;visibilidade total do ambiente&lt;/strong&gt;. Monitorar o servidor não é opcional — é o que permite identificar gargalos, prever falhas e agir antes que o usuário perceba qualquer instabilidade.&lt;/p&gt;
&lt;p data-end=&quot;824&quot; data-start=&quot;616&quot;&gt;Uma aplicação sem monitoramento é como dirigir à noite com os faróis apagados.&lt;br data-end=&quot;697&quot; data-start=&quot;694&quot; /&gt;
Então, nesta seção, você vai aprender &lt;strong data-end=&quot;823&quot; data-start=&quot;735&quot;&gt;como monitorar, analisar métricas, gerenciar logs e implementar observabilidade real&lt;/strong&gt;.&lt;/p&gt;
&lt;hr data-end=&quot;829&quot; data-start=&quot;826&quot; /&gt;
&lt;h3 data-end=&quot;880&quot; data-start=&quot;831&quot;&gt;&lt;strong data-end=&quot;880&quot; data-start=&quot;835&quot;&gt;9.1 Logs principais do WildFly no Windows&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;921&quot; data-start=&quot;882&quot;&gt;No modo&amp;nbsp;standalone, os logs ficam em:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;959&quot; data-start=&quot;923&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;WILDFLY_HOME\standalone\&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;log&lt;/span&gt;&lt;/span&gt;&lt;span&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;994&quot; data-start=&quot;961&quot;&gt;Os arquivos mais importantes são:&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;1202&quot; data-start=&quot;996&quot;&gt;&lt;thead data-end=&quot;1012&quot; data-start=&quot;996&quot;&gt;&lt;tr data-end=&quot;1012&quot; data-start=&quot;996&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;1002&quot; data-start=&quot;996&quot;&gt;Log&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;1012&quot; data-start=&quot;1002&quot;&gt;Função&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;1202&quot; data-start=&quot;1035&quot;&gt;&lt;tr data-end=&quot;1094&quot; data-start=&quot;1035&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1050&quot; data-start=&quot;1035&quot;&gt;&lt;code data-end=&quot;1049&quot; data-start=&quot;1037&quot;&gt;server.log&lt;/code&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1094&quot; data-start=&quot;1050&quot;&gt;Log principal do servidor e da aplicação&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;1145&quot; data-start=&quot;1095&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1108&quot; data-start=&quot;1095&quot;&gt;&lt;code data-end=&quot;1107&quot; data-start=&quot;1097&quot;&gt;boot.log&lt;/code&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1145&quot; data-start=&quot;1108&quot;&gt;Logs da inicialização do servidor&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;1202&quot; data-start=&quot;1146&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1160&quot; data-start=&quot;1146&quot;&gt;&lt;code data-end=&quot;1159&quot; data-start=&quot;1148&quot;&gt;audit.log&lt;/code&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1202&quot; data-start=&quot;1160&quot;&gt;Eventos administrativos e de segurança&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p data-end=&quot;1245&quot; data-start=&quot;1204&quot;&gt;&lt;strong data-end=&quot;1245&quot; data-start=&quot;1204&quot;&gt;Dicas práticas ao trabalhar com logs:&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;1385&quot; data-start=&quot;1247&quot;&gt;✅ Sempre usar &lt;em data-end=&quot;1275&quot; data-start=&quot;1261&quot;&gt;log rotation&lt;/em&gt;&lt;br data-end=&quot;1278&quot; data-start=&quot;1275&quot; /&gt;
✅ Arquivar logs antigos automaticamente&lt;br data-end=&quot;1320&quot; data-start=&quot;1317&quot; /&gt;
✅ Ajustar nível de log (INFO → WARN → DEBUG conforme necessidade)&lt;/p&gt;
&lt;p data-end=&quot;1452&quot; data-start=&quot;1387&quot;&gt;No &lt;code data-end=&quot;1406&quot; data-start=&quot;1390&quot;&gt;standalone.xml&lt;/code&gt;, você pode alterar o nível de log facilmente:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;1518&quot; data-start=&quot;1454&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-xml&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;&lt;span class=&quot;hljs-name&quot;&gt;root-logger&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;
    &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;&lt;span class=&quot;hljs-name&quot;&gt;level&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;INFO&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&amp;gt;
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;/&lt;span class=&quot;hljs-name&quot;&gt;root-logger&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
Em produção, evite DEBUG ou TRACE, pois geram muito volume e impactam desempenho.
&lt;hr data-end=&quot;1612&quot; data-start=&quot;1609&quot; /&gt;
&lt;h3 data-end=&quot;1664&quot; data-start=&quot;1614&quot;&gt;&lt;strong data-end=&quot;1664&quot; data-start=&quot;1618&quot;&gt;9.2 Monitorando via Console Web (modo GUI)&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1738&quot; data-start=&quot;1666&quot;&gt;O WildFly já oferece, nativamente, um painel de monitoramento.&lt;br data-end=&quot;1731&quot; data-start=&quot;1728&quot; /&gt;
Acesse: http://localhost:9990&lt;/p&gt;&lt;p data-end=&quot;1797&quot; data-start=&quot;1771&quot;&gt;Na console você acompanha:&lt;/p&gt;
&lt;ul data-end=&quot;1940&quot; data-start=&quot;1799&quot;&gt;
&lt;li data-end=&quot;1819&quot; data-start=&quot;1799&quot;&gt;
&lt;p data-end=&quot;1819&quot; data-start=&quot;1801&quot;&gt;Consumo de memória&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1829&quot; data-start=&quot;1820&quot;&gt;
&lt;p data-end=&quot;1829&quot; data-start=&quot;1822&quot;&gt;Threads&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1853&quot; data-start=&quot;1830&quot;&gt;
&lt;p data-end=&quot;1853&quot; data-start=&quot;1832&quot;&gt;Pools de conexão JDBC&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1878&quot; data-start=&quot;1854&quot;&gt;
&lt;p data-end=&quot;1878&quot; data-start=&quot;1856&quot;&gt;Estado dos deployments&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1899&quot; data-start=&quot;1879&quot;&gt;
&lt;p data-end=&quot;1899&quot; data-start=&quot;1881&quot;&gt;Subsistemas ativos&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1940&quot; data-start=&quot;1900&quot;&gt;
&lt;p data-end=&quot;1940&quot; data-start=&quot;1902&quot;&gt;Tempo de resposta e status do servidor&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1985&quot; data-start=&quot;1942&quot;&gt;É ideal para monitoramento rápido e visual.&lt;/p&gt;
&lt;hr data-end=&quot;1990&quot; data-start=&quot;1987&quot; /&gt;
&lt;h3 data-end=&quot;2053&quot; data-start=&quot;1992&quot;&gt;&lt;strong data-end=&quot;2053&quot; data-start=&quot;1996&quot;&gt;9.3 Monitoramento via CLI (administradores avançados)&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2088&quot; data-start=&quot;2055&quot;&gt;Para automação, o CLI é poderoso:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;2124&quot; data-start=&quot;2090&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bat&quot;&gt;&lt;span&gt;jboss-cli.bat --connect
&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2126&quot;&gt;Comandos úteis:&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;2401&quot; data-start=&quot;2143&quot;&gt;&lt;thead data-end=&quot;2166&quot; data-start=&quot;2143&quot;&gt;&lt;tr data-end=&quot;2166&quot; data-start=&quot;2143&quot;&gt;&lt;th data-col-size=&quot;md&quot; data-end=&quot;2153&quot; data-start=&quot;2143&quot;&gt;Comando&lt;/th&gt;&lt;th data-col-size=&quot;md&quot; data-end=&quot;2166&quot; data-start=&quot;2153&quot;&gt;O que faz&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;2401&quot; data-start=&quot;2191&quot;&gt;&lt;tr data-end=&quot;2275&quot; data-start=&quot;2191&quot;&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;2252&quot; data-start=&quot;2191&quot;&gt;&lt;code data-end=&quot;2251&quot; data-start=&quot;2193&quot;&gt;/core-service=platform-mbean/type=memory:read-resource()&lt;/code&gt;&lt;/td&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;2275&quot; data-start=&quot;2252&quot;&gt;Métricas de memória&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2343&quot; data-start=&quot;2276&quot;&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;2319&quot; data-start=&quot;2276&quot;&gt;&lt;code data-end=&quot;2318&quot; data-start=&quot;2278&quot;&gt;/subsystem=datasources:read-resource()&lt;/code&gt;&lt;/td&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;2343&quot; data-start=&quot;2319&quot;&gt;Monitora datasources&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2401&quot; data-start=&quot;2344&quot;&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;2356&quot; data-start=&quot;2344&quot;&gt;&lt;code data-end=&quot;2355&quot; data-start=&quot;2346&quot;&gt;:reload&lt;/code&gt;&lt;/td&gt;&lt;td data-col-size=&quot;md&quot; data-end=&quot;2401&quot; data-start=&quot;2356&quot;&gt;Reinicia serviços sem desligar o servidor&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr data-end=&quot;2406&quot; data-start=&quot;2403&quot; /&gt;
&lt;h3 data-end=&quot;2477&quot; data-start=&quot;2408&quot;&gt;&lt;strong data-end=&quot;2477&quot; data-start=&quot;2412&quot;&gt;9.4 Observabilidade real — integração com ferramentas globais&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2599&quot; data-start=&quot;2479&quot;&gt;Para ambientes distribuídos ou quando o servidor atende usuários em diferentes países, você pode integrar o WildFly com:&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;2948&quot; data-start=&quot;2601&quot;&gt;&lt;thead data-end=&quot;2637&quot; data-start=&quot;2601&quot;&gt;&lt;tr data-end=&quot;2637&quot; data-start=&quot;2601&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2614&quot; data-start=&quot;2601&quot;&gt;Ferramenta&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2627&quot; data-start=&quot;2614&quot;&gt;Finalidade&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;2637&quot; data-start=&quot;2627&quot;&gt;Escala&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;2948&quot; data-start=&quot;2675&quot;&gt;&lt;tr data-end=&quot;2730&quot; data-start=&quot;2675&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2692&quot; data-start=&quot;2675&quot;&gt;&lt;strong data-end=&quot;2691&quot; data-start=&quot;2677&quot;&gt;Prometheus&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2720&quot; data-start=&quot;2692&quot;&gt;Coleta de métricas (pull)&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2730&quot; data-start=&quot;2720&quot;&gt;Global&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2778&quot; data-start=&quot;2731&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2745&quot; data-start=&quot;2731&quot;&gt;&lt;strong data-end=&quot;2744&quot; data-start=&quot;2733&quot;&gt;Grafana&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2768&quot; data-start=&quot;2745&quot;&gt;Dashboards avançados&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2778&quot; data-start=&quot;2768&quot;&gt;Global&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2838&quot; data-start=&quot;2779&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2805&quot; data-start=&quot;2779&quot;&gt;&lt;strong data-end=&quot;2804&quot; data-start=&quot;2781&quot;&gt;Elastic Stack (ELK)&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2823&quot; data-start=&quot;2805&quot;&gt;Análise de logs&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2838&quot; data-start=&quot;2823&quot;&gt;Corporativo&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2894&quot; data-start=&quot;2839&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2852&quot; data-start=&quot;2839&quot;&gt;&lt;strong data-end=&quot;2851&quot; data-start=&quot;2841&quot;&gt;Zabbix&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2880&quot; data-start=&quot;2852&quot;&gt;Monitoramento tradicional&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2894&quot; data-start=&quot;2880&quot;&gt;Enterprise&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;2948&quot; data-start=&quot;2895&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2908&quot; data-start=&quot;2895&quot;&gt;&lt;strong data-end=&quot;2907&quot; data-start=&quot;2897&quot;&gt;Jaeger&lt;/strong&gt;&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2930&quot; data-start=&quot;2908&quot;&gt;&lt;em data-end=&quot;2917&quot; data-start=&quot;2910&quot;&gt;Trace&lt;/em&gt; distribuído&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2948&quot; data-start=&quot;2930&quot;&gt;Microsserviços&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p data-end=&quot;3016&quot; data-start=&quot;2950&quot;&gt;Com isso, você transforma o WildFly em um ambiente observável com:&lt;/p&gt;
&lt;p data-end=&quot;3161&quot; data-start=&quot;3018&quot;&gt;✅ Monitoramento em tempo real&lt;br data-end=&quot;3050&quot; data-start=&quot;3047&quot; /&gt;
✅ Alertas automáticos&lt;br data-end=&quot;3074&quot; data-start=&quot;3071&quot; /&gt;
✅ Dashboards acessíveis internacionalmente&lt;br data-end=&quot;3119&quot; data-start=&quot;3116&quot; /&gt;
✅ Tracing de requisições (ótimo para APIs)&lt;/p&gt;
&lt;hr data-end=&quot;3166&quot; data-start=&quot;3163&quot; /&gt;
&lt;h3 data-end=&quot;3208&quot; data-start=&quot;3168&quot;&gt;&lt;strong data-end=&quot;3208&quot; data-start=&quot;3172&quot;&gt;9.5 Log Rotation e boas práticas&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3315&quot; data-start=&quot;3210&quot;&gt;Para não encher disco em servidores Windows, configure &lt;em data-end=&quot;3275&quot; data-start=&quot;3265&quot;&gt;rotation&lt;/em&gt;, por tamanho (recomendado) ou por data:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;3574&quot; data-start=&quot;3317&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-xml&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;&lt;span class=&quot;hljs-name&quot;&gt;periodic-rotating-file-handler&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;FILE&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;autoflush&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;
    &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;&lt;span class=&quot;hljs-name&quot;&gt;level&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;INFO&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&amp;gt;
    &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;&lt;span class=&quot;hljs-name&quot;&gt;file&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;relative-to&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;jboss.server.log.dir&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;path&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;server.log&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&amp;gt;
    &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;&lt;span class=&quot;hljs-name&quot;&gt;suffix&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;.yyyy-MM-dd&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&amp;gt;
    &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;&lt;span class=&quot;hljs-name&quot;&gt;append&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-attr&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&amp;gt;
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-tag&quot;&gt;&amp;lt;/&lt;span class=&quot;hljs-name&quot;&gt;periodic-rotating-file-handler&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3625&quot; data-start=&quot;3576&quot;&gt;&lt;strong data-end=&quot;3625&quot; data-start=&quot;3576&quot;&gt;Checklist final de monitoramento inteligente:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;3831&quot; data-start=&quot;3627&quot;&gt;&lt;thead data-end=&quot;3652&quot; data-start=&quot;3627&quot;&gt;&lt;tr data-end=&quot;3652&quot; data-start=&quot;3627&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;3634&quot; data-start=&quot;3627&quot;&gt;Item&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;3652&quot; data-start=&quot;3634&quot;&gt;Situação ideal&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;3831&quot; data-start=&quot;3681&quot;&gt;&lt;tr data-end=&quot;3706&quot; data-start=&quot;3681&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3701&quot; data-start=&quot;3681&quot;&gt;Logs rotacionando&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3706&quot; data-start=&quot;3701&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3735&quot; data-start=&quot;3707&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3730&quot; data-start=&quot;3707&quot;&gt;Alertas configurados&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3735&quot; data-start=&quot;3730&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3762&quot; data-start=&quot;3736&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3757&quot; data-start=&quot;3736&quot;&gt;Painel de métricas&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3762&quot; data-start=&quot;3757&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3795&quot; data-start=&quot;3763&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3790&quot; data-start=&quot;3763&quot;&gt;Console e CLI acessíveis&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3795&quot; data-start=&quot;3790&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;3831&quot; data-start=&quot;3796&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3826&quot; data-start=&quot;3796&quot;&gt;Tracing ativado em produção&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3831&quot; data-start=&quot;3826&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr data-end=&quot;3836&quot; data-start=&quot;3833&quot; /&gt;
&lt;h2 data-end=&quot;3910&quot; data-start=&quot;3838&quot;&gt;&lt;strong data-end=&quot;3910&quot; data-start=&quot;3841&quot;&gt;10. Otimização de Desempenho (HTTP, Thread, Datasource e Windows)&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;3981&quot; data-start=&quot;3912&quot;&gt;&lt;em data-end=&quot;3981&quot; data-start=&quot;3912&quot;&gt;(Resumo — porque este é um tópico grande e sensível, mas essencial)&lt;/em&gt;&lt;/p&gt;
&lt;p data-end=&quot;3991&quot; data-start=&quot;3983&quot;&gt;Otimize:&lt;/p&gt;
&lt;div class=&quot;_tableContainer_1rjym_1&quot;&gt;&lt;div class=&quot;group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;4257&quot; data-start=&quot;3993&quot;&gt;&lt;thead data-end=&quot;4016&quot; data-start=&quot;3993&quot;&gt;&lt;tr data-end=&quot;4016&quot; data-start=&quot;3993&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;4006&quot; data-start=&quot;3993&quot;&gt;Componente&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;4016&quot; data-start=&quot;4006&quot;&gt;Ajuste&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;4257&quot; data-start=&quot;4042&quot;&gt;&lt;tr data-end=&quot;4085&quot; data-start=&quot;4042&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4059&quot; data-start=&quot;4042&quot;&gt;HTTP/2 + HTTPS&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4085&quot; data-start=&quot;4059&quot;&gt;Respostas mais rápidas&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;4131&quot; data-start=&quot;4086&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4104&quot; data-start=&quot;4086&quot;&gt;Connection Pool&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4131&quot; data-start=&quot;4104&quot;&gt;Pool adequado ao volume&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;4168&quot; data-start=&quot;4132&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4139&quot; data-start=&quot;4132&quot;&gt;GZIP&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4168&quot; data-start=&quot;4139&quot;&gt;Reduz tamanho da resposta&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;4207&quot; data-start=&quot;4169&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4177&quot; data-start=&quot;4169&quot;&gt;Cache&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4207&quot; data-start=&quot;4177&quot;&gt;Acelera recursos estáticos&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;4257&quot; data-start=&quot;4208&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4227&quot; data-start=&quot;4208&quot;&gt;Windows Services&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4257&quot; data-start=&quot;4227&quot;&gt;Desativar serviços inúteis&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr data-end=&quot;4262&quot; data-start=&quot;4259&quot; /&gt;
&lt;h2 data-end=&quot;4325&quot; data-start=&quot;4264&quot;&gt;&lt;strong data-end=&quot;4325&quot; data-start=&quot;4267&quot;&gt;11. Conclusão — Seu Servidor WildFly Local Está Pronto&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;4345&quot; data-start=&quot;4327&quot;&gt;Agora você possui:&lt;/p&gt;
&lt;p data-end=&quot;4624&quot; data-start=&quot;4347&quot;&gt;✅ WildFly instalado e executando localmente no Windows 11&lt;br data-end=&quot;4407&quot; data-start=&quot;4404&quot; /&gt;
✅ Deploy de aplicações (WAR) funcionando&lt;br data-end=&quot;4450&quot; data-start=&quot;4447&quot; /&gt;
✅ Datasource configurado&lt;br data-end=&quot;4477&quot; data-start=&quot;4474&quot; /&gt;
✅ Segurança com HTTPS, firewall e usuários corretos&lt;br data-end=&quot;4531&quot; data-start=&quot;4528&quot; /&gt;
✅ Monitoramento, logs e observabilidade&lt;br data-end=&quot;4573&quot; data-start=&quot;4570&quot; /&gt;
✅ Um ambiente preparado para desenvolvimento global&lt;/p&gt;
&lt;p data-end=&quot;4658&quot; data-start=&quot;4626&quot;&gt;Este servidor agora pode servir:&lt;/p&gt;
&lt;p data-end=&quot;4747&quot; data-start=&quot;4660&quot;&gt;🌍 APIs&lt;br data-end=&quot;4670&quot; data-start=&quot;4667&quot; /&gt;
🌍 Aplicações corporativas&lt;br data-end=&quot;4699&quot; data-start=&quot;4696&quot; /&gt;
🌍 Portais Java&lt;br data-end=&quot;4717&quot; data-start=&quot;4714&quot; /&gt;
🌍 Microservices (com ajustes)&lt;/p&gt;
&lt;p data-end=&quot;4773&quot; data-start=&quot;4749&quot;&gt;&lt;strong data-end=&quot;4773&quot; data-start=&quot;4749&quot;&gt;Chamada final (CTA):&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;4927&quot; data-start=&quot;4775&quot;&gt;
&lt;p data-end=&quot;4927&quot; data-start=&quot;4777&quot;&gt;Se este guia ajudou você, compartilhe, salve nos favoritos e visite nosso blog para mais conteúdos sobre servidores, segurança e desenvolvimento Java.&lt;/p&gt;
&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://www.blogdokdsti.com.br/2025/10/servidor-web-local-windows11-jboss-wildfly.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEh6L1_cPKX71s6u_cS_ICiCvgZ3GQfQWlD8q0VUET_mlRnRqTRdla9eDIQJq0IxSj3EOe4LIVXfJA4gyZWZZVs1KDpIurX7zo81crDfDZyttBtYM1dACaLJqAt-zrR7m7smizACUuOLbbPtXxlaVIlduvGCEZgpRdv-TIQN7LFPT7Tp_pCqTAdmiM1JonM=s72-w400-h400-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-6594096193084803507</guid><pubDate>Fri, 17 Oct 2025 02:55:00 +0000</pubDate><atom:updated>2025-10-19T02:15:29.471-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">API</category><title>🔐 Construindo 3 Micro-APIs em Python com FastAPI (Auth, Product, Sales) — Arquitetura, JWT e SQLite</title><description>&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjKv2JCWuafX1AEZ1-OOvAKPqI6ZstCNqrFJgsY2pmml1HhsC3nSCHu-3e0vvgBdVyKaBhxwYFYb00B41B0HrCdovdzuckDlZ6sxljykLh-xRccV4GByaBXBS6vXPj3nPpf89WkjIaMA18A7slOHYdG8K7iIvjo8dRkLlu32e3jFypsEIksZNgCWpi4l6s&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Diagrama de arquitetura microserviços FastAPI: Auth, Product, Sales com SQLite e chamadas HTTP entre serviços&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjKv2JCWuafX1AEZ1-OOvAKPqI6ZstCNqrFJgsY2pmml1HhsC3nSCHu-3e0vvgBdVyKaBhxwYFYb00B41B0HrCdovdzuckDlZ6sxljykLh-xRccV4GByaBXBS6vXPj3nPpf89WkjIaMA18A7slOHYdG8K7iIvjo8dRkLlu32e3jFypsEIksZNgCWpi4l6s=w400-h400&quot; title=&quot;Diagrama de arquitetura microserviços FastAPI: Auth, Product, Sales com SQLite e chamadas HTTP entre serviços&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Diagrama de arquitetura microserviços FastAPI: Auth, Product, Sales com SQLite e chamadas HTTP entre serviços&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 data-end=&quot;768&quot; data-start=&quot;755&quot;&gt;Introdução&lt;/h2&gt;
&lt;p data-end=&quot;871&quot; data-start=&quot;770&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/grs4eOM2dkA&quot; width=&quot;320&quot; youtube-src-id=&quot;grs4eOM2dkA&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;Neste tutorial você vai aprender a &lt;strong data-end=&quot;848&quot; data-start=&quot;805&quot;&gt;construir uma arquitetura de micro-APIs&lt;/strong&gt; similar ao diagrama:&lt;p&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1069&quot; data-start=&quot;872&quot;&gt;
&lt;li data-end=&quot;915&quot; data-start=&quot;872&quot;&gt;
&lt;p data-end=&quot;915&quot; data-start=&quot;874&quot;&gt;&lt;strong data-end=&quot;886&quot; data-start=&quot;874&quot;&gt;Auth API&lt;/strong&gt;: gera e valida tokens JWT;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;965&quot; data-start=&quot;916&quot;&gt;
&lt;p data-end=&quot;965&quot; data-start=&quot;918&quot;&gt;&lt;strong data-end=&quot;933&quot; data-start=&quot;918&quot;&gt;Product API&lt;/strong&gt;: CRUD de produtos com SQLite;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1069&quot; data-start=&quot;966&quot;&gt;
&lt;p data-end=&quot;1069&quot; data-start=&quot;968&quot;&gt;&lt;strong data-end=&quot;981&quot; data-start=&quot;968&quot;&gt;Sales API&lt;/strong&gt;: registra vendas (SQLite) e faz chamadas para outras APIs (ex: validação de produto);&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1221&quot; data-start=&quot;1071&quot;&gt;Tudo &lt;strong data-end=&quot;1094&quot; data-start=&quot;1076&quot;&gt;sem containers&lt;/strong&gt;, ideal para desenvolvimento local e testes rápidos. Tudo em &lt;strong data-end=&quot;1166&quot; data-start=&quot;1155&quot;&gt;FastAPI&lt;/strong&gt;, com exemplos prontos para rodar em portas diferentes.&lt;/p&gt;&lt;h2 data-end=&quot;1256&quot; data-start=&quot;1228&quot;&gt;Por que essa arquitetura?&lt;/h2&gt;&lt;p data-end=&quot;1221&quot; data-start=&quot;1071&quot;&gt;
&lt;/p&gt;&lt;ul data-end=&quot;1496&quot; data-start=&quot;1258&quot;&gt;
&lt;li data-end=&quot;1329&quot; data-start=&quot;1258&quot;&gt;
&lt;p data-end=&quot;1329&quot; data-start=&quot;1260&quot;&gt;Permite separar responsabilidades (autenticação, catálogo, vendas).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1392&quot; data-start=&quot;1330&quot;&gt;
&lt;p data-end=&quot;1392&quot; data-start=&quot;1332&quot;&gt;Cada serviço pode escalar de forma independente no futuro.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1496&quot; data-start=&quot;1393&quot;&gt;
&lt;p data-end=&quot;1496&quot; data-start=&quot;1395&quot;&gt;Fácil evolução para filas assíncronas (RabbitMQ) ou bancos separados (Postgres/Mongo) quando desejar.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;h2 data-end=&quot;1536&quot; data-start=&quot;1503&quot;&gt;Requisitos (instalação rápida)&lt;/h2&gt;
&lt;p data-end=&quot;1587&quot; data-start=&quot;1538&quot;&gt;No seu ambiente Python (recomendo criar um venv):&lt;/p&gt;&lt;p data-end=&quot;1587&quot; data-start=&quot;1538&quot;&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p data-end=&quot;1587&quot; data-start=&quot;1538&quot;&gt;python -m venv venv&lt;/p&gt;&lt;p data-end=&quot;1587&quot; data-start=&quot;1538&quot;&gt;source venv/bin/activate&amp;nbsp; &amp;nbsp;# macOS / Linux&lt;/p&gt;&lt;p data-end=&quot;1587&quot; data-start=&quot;1538&quot;&gt;venv\Scripts\activate&amp;nbsp; &amp;nbsp; &amp;nbsp; # Windows&lt;/p&gt;&lt;p data-end=&quot;1587&quot; data-start=&quot;1538&quot;&gt;pip install fastapi uvicorn sqlalchemy pydantic jwt passlib[bcrypt] requests&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Arquivo &lt;code data-end=&quot;1807&quot; data-start=&quot;1789&quot;&gt;requirements.txt&lt;/code&gt; sugerido:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;fastapi&lt;/p&gt;&lt;p&gt;uvicorn[standard]&lt;/p&gt;&lt;p&gt;sqlalchemy&lt;/p&gt;&lt;p&gt;pydantic&lt;/p&gt;&lt;p&gt;PyJWT&lt;/p&gt;&lt;p&gt;passlib[bcrypt]&lt;/p&gt;&lt;p&gt;requests&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;Estrutura de pastas (sugestão)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;microservices-fastapi/&lt;/div&gt;&lt;div&gt;├── auth_api/&lt;/div&gt;&lt;div&gt;│&amp;nbsp; &amp;nbsp;└── main.py&lt;/div&gt;&lt;div&gt;├── product_api/&lt;/div&gt;&lt;div&gt;│&amp;nbsp; &amp;nbsp;└── main.py&lt;/div&gt;&lt;div&gt;├── sales_api/&lt;/div&gt;&lt;div&gt;│&amp;nbsp; &amp;nbsp;└── main.py&lt;/div&gt;&lt;div&gt;└── README.md&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 data-end=&quot;2127&quot; data-start=&quot;2091&quot;&gt;1) Auth API — gerar e validar JWT&lt;/h2&gt;
&lt;p data-end=&quot;2237&quot; data-start=&quot;2129&quot;&gt;&lt;strong data-end=&quot;2142&quot; data-start=&quot;2129&quot;&gt;Objetivo:&lt;/strong&gt; emitir token JWT ao autenticar usuário (aqui exemplo simples com usuário hardcoded para demo).&lt;/p&gt;
&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;strong data-end=&quot;2251&quot; data-start=&quot;2239&quot;&gt;Arquivo:&lt;/strong&gt; &lt;code data-end=&quot;2270&quot; data-start=&quot;2252&quot;&gt;auth_api/main.py&lt;/code&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;# auth_api/main.py&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from fastapi import FastAPI, HTTPException&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from pydantic import BaseModel&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;import jwt, datetime&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from passlib.context import CryptContext&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;app = FastAPI(title=&quot;Auth API&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;SECRET_KEY = &quot;troque_isto_por_um_segredo_forte&quot;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;ALGORITHM = &quot;HS256&quot;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;ACCESS_TOKEN_EXPIRE_MINUTES = 60&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;pwd_context = CryptContext(schemes=[&quot;bcrypt&quot;], deprecated=&quot;auto&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;# Exemplo simples: usuário fixo (em produção, use DB)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;fake_user = {&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;username&quot;: &quot;admin&quot;,&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;hashed_password&quot;: pwd_context.hash(&quot;123&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;class LoginIn(BaseModel):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; username: str&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; password: str&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;@app.post(&quot;/login&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;def login(payload: LoginIn):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if payload.username != fake_user[&quot;username&quot;] or not pwd_context.verify(payload.password, fake_user[&quot;hashed_password&quot;]):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; raise HTTPException(status_code=401, detail=&quot;Usuário ou senha incorretos&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; expire = datetime.datetime.utcnow() + datetime.timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; token = jwt.encode({&quot;sub&quot;: payload.username, &quot;exp&quot;: expire}, SECRET_KEY, algorithm=ALGORITHM)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;code data-end=&quot;2270&quot; data-start=&quot;2252&quot;&gt;&lt;/code&gt;&lt;/p&gt;&lt;p data-end=&quot;2270&quot; data-start=&quot;2239&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; return {&quot;access_token&quot;: token, &quot;token_type&quot;: &quot;bearer&quot;}&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Executar:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;uvicorn auth_api.main:app --host 0.0.0.0 --port 8000 --reload&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Teste:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;curl -X POST &quot;http://localhost:8000/login&quot; -H &quot;Content-Type: application/json&quot; -d &#39;{&quot;username&quot;:&quot;admin&quot;,&quot;password&quot;:&quot;123&quot;}&#39;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 data-end=&quot;3636&quot; data-start=&quot;3601&quot;&gt;2) Product API — CRUD com SQLite&lt;/h2&gt;
&lt;p data-end=&quot;3717&quot; data-start=&quot;3638&quot;&gt;&lt;strong data-end=&quot;3651&quot; data-start=&quot;3638&quot;&gt;Objetivo:&lt;/strong&gt; fornecer endpoints para criar/listar produtos; protegido por JWT.&lt;/p&gt;
&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;strong data-end=&quot;3731&quot; data-start=&quot;3719&quot;&gt;Arquivo:&lt;/strong&gt; &lt;code data-end=&quot;3753&quot; data-start=&quot;3732&quot;&gt;product_api/main.py&lt;/code&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;# product_api/main.py&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from fastapi import FastAPI, Depends, HTTPException&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from pydantic import BaseModel&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from sqlalchemy import create_engine, Column, Integer, String, Float&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from sqlalchemy.orm import sessionmaker, declarative_base&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;import jwt&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;import requests&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;DATABASE_URL = &quot;sqlite:///./product.db&quot;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;SECRET_KEY = &quot;troque_isto_por_um_segredo_forte&quot;&amp;nbsp; # o mesmo do Auth em demo&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;engine = create_engine(DATABASE_URL, connect_args={&quot;check_same_thread&quot;: False})&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;SessionLocal = sessionmaker(bind=engine)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;Base = declarative_base()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;class Product(Base):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; __tablename__ = &quot;products&quot;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; id = Column(Integer, primary_key=True, index=True)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; name = Column(String, index=True)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; price = Column(Float)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;Base.metadata.create_all(bind=engine)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;app = FastAPI(title=&quot;Product API&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;security = HTTPBearer()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;class ProductIn(BaseModel):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; name: str&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; price: float&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;def verify_token(creds: HTTPAuthorizationCredentials = Depends(security)):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; token = creds.credentials&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; try:&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; payload = jwt.decode(token, SECRET_KEY, algorithms=[&quot;HS256&quot;])&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; except jwt.PyJWTError:&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; raise HTTPException(status_code=401, detail=&quot;Token inválido&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; return payload&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;@app.post(&quot;/products&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;def create_product(prod: ProductIn, payload=Depends(verify_token)):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db = SessionLocal()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; p = Product(name=prod.name, price=prod.price)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.add(p)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.commit()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.refresh(p)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.close()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; return {&quot;id&quot;: p.id, &quot;name&quot;: p.name, &quot;price&quot;: p.price}&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;@app.get(&quot;/products&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;def list_products(skip: int = 0, limit: int = 100, payload=Depends(verify_token)):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db = SessionLocal()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; items = db.query(Product).offset(skip).limit(limit).all()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.close()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;code data-end=&quot;3753&quot; data-start=&quot;3732&quot;&gt;&lt;/code&gt;&lt;/p&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; return items&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p data-end=&quot;3753&quot; data-start=&quot;3719&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;Executar:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;uvicorn product_api.main:app --host 0.0.0.0 --port 8001 --reload&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p data-end=&quot;5638&quot; data-start=&quot;5598&quot;&gt;&lt;strong data-end=&quot;5638&quot; data-start=&quot;5598&quot;&gt;Fluxo de teste (usar token do Auth):&lt;/strong&gt;&lt;/p&gt;
&lt;ol data-end=&quot;5693&quot; data-start=&quot;5639&quot;&gt;
&lt;li data-end=&quot;5675&quot; data-start=&quot;5639&quot;&gt;
&lt;p data-end=&quot;5675&quot; data-start=&quot;5642&quot;&gt;Obter token no Auth (&lt;code data-end=&quot;5671&quot; data-start=&quot;5663&quot;&gt;/login&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;5693&quot; data-start=&quot;5676&quot;&gt;
&lt;p data-end=&quot;5693&quot; data-start=&quot;5679&quot;&gt;Criar produto:&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;curl -X POST &quot;http://localhost:8001/products&quot; \&lt;/div&gt;&lt;div&gt;&amp;nbsp;-H &quot;Authorization: Bearer &amp;lt;TOKEN&amp;gt;&quot; \&lt;/div&gt;&lt;div&gt;&amp;nbsp;-H &quot;Content-Type: application/json&quot; \&lt;/div&gt;&lt;div&gt;&amp;nbsp;-d &#39;{&quot;name&quot;:&quot;Mouse&quot;,&quot;price&quot;:29.9}&#39;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Listar:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;curl -H &quot;Authorization: Bearer &amp;lt;TOKEN&amp;gt;&quot; &quot;http://localhost:8001/products&quot;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 data-end=&quot;6036&quot; data-start=&quot;5969&quot;&gt;3) Sales API — registrar venda e validar produto via Product API&lt;/h2&gt;
&lt;p data-end=&quot;6139&quot; data-start=&quot;6038&quot;&gt;&lt;strong data-end=&quot;6051&quot; data-start=&quot;6038&quot;&gt;Objetivo:&lt;/strong&gt; registrar vendas localmente em SQLite e validar produto consultando Product API (HTTP).&lt;/p&gt;
&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;strong data-end=&quot;6153&quot; data-start=&quot;6141&quot;&gt;Arquivo:&lt;/strong&gt; &lt;code data-end=&quot;6173&quot; data-start=&quot;6154&quot;&gt;sales_api/main.py&lt;/code&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;# sales_api/main.py&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from fastapi import FastAPI, HTTPException, Depends&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from pydantic import BaseModel&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from sqlalchemy import create_engine, Column, Integer, String, Float, DateTime&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;from sqlalchemy.orm import sessionmaker, declarative_base&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;import datetime&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;import requests&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;DATABASE_URL = &quot;sqlite:///./sales.db&quot;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;engine = create_engine(DATABASE_URL, connect_args={&quot;check_same_thread&quot;: False})&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;SessionLocal = sessionmaker(bind=engine)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;Base = declarative_base()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;class Sale(Base):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; __tablename__ = &quot;sales&quot;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; id = Column(Integer, primary_key=True, index=True)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; product_id = Column(Integer)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; product_name = Column(String)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; quantity = Column(Integer)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; total = Column(Float)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; created_at = Column(DateTime, default=datetime.datetime.utcnow)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;Base.metadata.create_all(bind=engine)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;app = FastAPI(title=&quot;Sales API&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;class SaleIn(BaseModel):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; product_id: int&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; quantity: int&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;PRODUCT_API_URL = &quot;http://localhost:8001/products&quot;&amp;nbsp; # endpoint base&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;@app.post(&quot;/sales&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;def create_sale(sale: SaleIn):&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; # Consulta Product API para validar produto (simples: buscar lista e filtrar)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; resp = requests.get(PRODUCT_API_URL)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if resp.status_code != 200:&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; raise HTTPException(status_code=502, detail=&quot;Product API indisponível&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; products = resp.json()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; product = next((p for p in products if p[&quot;id&quot;] == sale.product_id), None)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if not product:&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; raise HTTPException(status_code=404, detail=&quot;Produto não encontrado&quot;)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; total = product[&quot;price&quot;] * sale.quantity&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db = SessionLocal()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; s = Sale(product_id=product[&quot;id&quot;], product_name=product[&quot;name&quot;], quantity=sale.quantity, total=total)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.add(s)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.commit()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.refresh(s)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; db.close()&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; # Aqui você poderia publicar uma mensagem na fila RabbitMQ (opcional)&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;code data-end=&quot;6173&quot; data-start=&quot;6154&quot;&gt;&lt;/code&gt;&lt;/p&gt;&lt;p data-end=&quot;6173&quot; data-start=&quot;6141&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; return {&quot;sale_id&quot;: s.id, &quot;product&quot;: s.product_name, &quot;total&quot;: s.total}&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Executar:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;uvicorn sales_api.main:app --host 0.0.0.0 --port 8002 --reload&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p data-end=&quot;8139&quot; data-start=&quot;8116&quot;&gt;&lt;strong data-end=&quot;8139&quot; data-start=&quot;8116&quot;&gt;Testando (exemplo):&lt;/strong&gt;&lt;/p&gt;
&lt;ol data-end=&quot;8204&quot; data-start=&quot;8140&quot;&gt;
&lt;li data-end=&quot;8188&quot; data-start=&quot;8140&quot;&gt;
&lt;p data-end=&quot;8188&quot; data-start=&quot;8143&quot;&gt;Criar produto via Product API (veja acima).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;8204&quot; data-start=&quot;8189&quot;&gt;
&lt;p data-end=&quot;8204&quot; data-start=&quot;8192&quot;&gt;Criar venda:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;curl -X POST &quot;http://localhost:8002/sales&quot; -H &quot;Content-Type: application/json&quot; -d &#39;{&quot;product_id&quot;:1,&quot;quantity&quot;:2}&#39;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 data-end=&quot;8379&quot; data-start=&quot;8337&quot;&gt;Comunicação entre serviços (HTTP calls)&lt;/h2&gt;
&lt;p data-end=&quot;8516&quot; data-start=&quot;8381&quot;&gt;No exemplo da &lt;strong data-end=&quot;8408&quot; data-start=&quot;8395&quot;&gt;Sales API&lt;/strong&gt; usamos &lt;code data-end=&quot;8430&quot; data-start=&quot;8416&quot;&gt;requests.get&lt;/code&gt; para consultar &lt;code data-end=&quot;8461&quot; data-start=&quot;8446&quot;&gt;GET /products&lt;/code&gt; e validar o produto. Em arquiteturas reais, você pode:&lt;/p&gt;
&lt;ul data-end=&quot;8798&quot; data-start=&quot;8518&quot;&gt;
&lt;li data-end=&quot;8605&quot; data-start=&quot;8518&quot;&gt;
&lt;p data-end=&quot;8605&quot; data-start=&quot;8520&quot;&gt;Usar chamadas HTTP síncronas (como no exemplo) — simples, mas acoplamento temporal.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;8709&quot; data-start=&quot;8606&quot;&gt;
&lt;p data-end=&quot;8709&quot; data-start=&quot;8608&quot;&gt;Mudar para &lt;strong data-end=&quot;8644&quot; data-start=&quot;8619&quot;&gt;mensageria (RabbitMQ)&lt;/strong&gt; para eventos assíncronos (venda registrada → event published).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;8798&quot; data-start=&quot;8710&quot;&gt;
&lt;p data-end=&quot;8798&quot; data-start=&quot;8712&quot;&gt;Implementar retries, circuit breaker e timeouts (ex.: &lt;code data-end=&quot;8796&quot; data-start=&quot;8766&quot;&gt;requests.get(url, timeout=3)&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;8803&quot; data-start=&quot;8800&quot; /&gt;
&lt;h2 data-end=&quot;8846&quot; data-start=&quot;8805&quot;&gt;Boas práticas e melhorias recomendadas&lt;/h2&gt;
&lt;ul data-end=&quot;9355&quot; data-start=&quot;8848&quot;&gt;
&lt;li data-end=&quot;8975&quot; data-start=&quot;8848&quot;&gt;
&lt;p data-end=&quot;8975&quot; data-start=&quot;8850&quot;&gt;&lt;strong data-end=&quot;8875&quot; data-start=&quot;8850&quot;&gt;Variáveis de ambiente&lt;/strong&gt;: mova segredos (SECRET_KEY) e URLs para variáveis (use &lt;code data-end=&quot;8948&quot; data-start=&quot;8931&quot;&gt;python-decouple&lt;/code&gt; ou &lt;code data-end=&quot;8971&quot; data-start=&quot;8952&quot;&gt;pydantic.Settings&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;9056&quot; data-start=&quot;8976&quot;&gt;
&lt;p data-end=&quot;9056&quot; data-start=&quot;8978&quot;&gt;&lt;strong data-end=&quot;8992&quot; data-start=&quot;8978&quot;&gt;Migrations&lt;/strong&gt;: use Alembic para gerenciar schema do SQLAlchemy em produção.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;9157&quot; data-start=&quot;9057&quot;&gt;
&lt;p data-end=&quot;9157&quot; data-start=&quot;9059&quot;&gt;&lt;strong data-end=&quot;9080&quot; data-start=&quot;9059&quot;&gt;Autenticação real&lt;/strong&gt;: troque usuário hardcoded por tabela &lt;code data-end=&quot;9125&quot; data-start=&quot;9118&quot;&gt;users&lt;/code&gt; no DB e endpoint de registro.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;9214&quot; data-start=&quot;9158&quot;&gt;
&lt;p data-end=&quot;9214&quot; data-start=&quot;9160&quot;&gt;&lt;strong data-end=&quot;9169&quot; data-start=&quot;9160&quot;&gt;HTTPS&lt;/strong&gt; em produção (Nginx/Traefik + certificado).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;9278&quot; data-start=&quot;9215&quot;&gt;
&lt;p data-end=&quot;9278&quot; data-start=&quot;9217&quot;&gt;&lt;strong data-end=&quot;9238&quot; data-start=&quot;9217&quot;&gt;Logs estruturados&lt;/strong&gt; e monitoramento (Prometheus/Grafana).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;9355&quot; data-start=&quot;9279&quot;&gt;
&lt;p data-end=&quot;9355&quot; data-start=&quot;9281&quot;&gt;&lt;strong data-end=&quot;9305&quot; data-start=&quot;9281&quot;&gt;Testes automatizados&lt;/strong&gt;: unit + integration tests com &lt;code data-end=&quot;9344&quot; data-start=&quot;9336&quot;&gt;pytest&lt;/code&gt; e &lt;code data-end=&quot;9354&quot; data-start=&quot;9347&quot;&gt;httpx&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;9360&quot; data-start=&quot;9357&quot; /&gt;
&lt;h2 data-end=&quot;9390&quot; data-start=&quot;9362&quot;&gt;Erros comuns e tratamento&lt;/h2&gt;
&lt;ul data-end=&quot;9649&quot; data-start=&quot;9392&quot;&gt;
&lt;li data-end=&quot;9459&quot; data-start=&quot;9392&quot;&gt;
&lt;p data-end=&quot;9459&quot; data-start=&quot;9394&quot;&gt;&lt;strong data-end=&quot;9412&quot; data-start=&quot;9394&quot;&gt;Token expirado&lt;/strong&gt;: implemente refresh token (rota &lt;code data-end=&quot;9455&quot; data-start=&quot;9445&quot;&gt;/refresh&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;9550&quot; data-start=&quot;9460&quot;&gt;
&lt;p data-end=&quot;9550&quot; data-start=&quot;9462&quot;&gt;&lt;strong data-end=&quot;9490&quot; data-start=&quot;9462&quot;&gt;Product API indisponível&lt;/strong&gt;: adicione fallback ou fila para processar vendas offline.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;9649&quot; data-start=&quot;9551&quot;&gt;
&lt;p data-end=&quot;9649&quot; data-start=&quot;9553&quot;&gt;&lt;strong data-end=&quot;9583&quot; data-start=&quot;9553&quot;&gt;SQLite limita concorrência&lt;/strong&gt;: para produção use PostgreSQL (mais robusto para multi-conexões).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;9654&quot; data-start=&quot;9651&quot; /&gt;
&lt;h2 data-end=&quot;9685&quot; data-start=&quot;9656&quot;&gt;Conclusão (call to action)&lt;/h2&gt;
&lt;p data-end=&quot;9920&quot; data-start=&quot;9687&quot;&gt;Com esse guia você tem uma &lt;strong data-end=&quot;9732&quot; data-start=&quot;9714&quot;&gt;base funcional&lt;/strong&gt; para montar as três APIs em FastAPI com SQLite, imitando a arquitetura do seu diagrama. É um ponto de partida rápido para testes locais e evolução para um ambiente em containers ou nuvem.&lt;/p&gt;
&lt;p data-end=&quot;9957&quot; data-start=&quot;9922&quot;&gt;👉 &lt;strong data-end=&quot;9955&quot; data-start=&quot;9925&quot;&gt;Próximos passos sugeridos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-end=&quot;10101&quot; data-start=&quot;9958&quot;&gt;
&lt;li data-end=&quot;10007&quot; data-start=&quot;9958&quot;&gt;
&lt;p data-end=&quot;10007&quot; data-start=&quot;9960&quot;&gt;Migrar Product e Sales para PostgreSQL/Mongo;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;10059&quot; data-start=&quot;10008&quot;&gt;
&lt;p data-end=&quot;10059&quot; data-start=&quot;10010&quot;&gt;Adicionar RabbitMQ para comunicação assíncrona;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;10101&quot; data-start=&quot;10060&quot;&gt;
&lt;p data-end=&quot;10101&quot; data-start=&quot;10062&quot;&gt;Implementar testes automáticos e CI/CD.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;h3 data-end=&quot;10427&quot; data-start=&quot;10390&quot;&gt;Recursos adicionais e links úteis&lt;/h3&gt;
&lt;ul data-end=&quot;10591&quot; data-start=&quot;10428&quot;&gt;
&lt;li data-end=&quot;10470&quot; data-start=&quot;10428&quot;&gt;
&lt;p data-end=&quot;10470&quot; data-start=&quot;10430&quot;&gt;FastAPI — &lt;a class=&quot;decorated-link cursor-pointer&quot; data-end=&quot;10468&quot; data-start=&quot;10440&quot; rel=&quot;noopener&quot; target=&quot;_new&quot;&gt;https://fastapi.tiangolo.com&lt;span aria-hidden=&quot;true&quot; class=&quot;ms-0.5 inline-block align-middle leading-none&quot;&gt;&lt;svg class=&quot;block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]&quot; data-rtl-flip=&quot;&quot; fill=&quot;currentColor&quot; height=&quot;20&quot; viewbox=&quot;0 0 20 20&quot; width=&quot;20&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;10514&quot; data-start=&quot;10471&quot;&gt;
&lt;p data-end=&quot;10514&quot; data-start=&quot;10473&quot;&gt;SQLAlchemy — &lt;a class=&quot;decorated-link cursor-pointer&quot; data-end=&quot;10512&quot; data-start=&quot;10486&quot; rel=&quot;noopener&quot; target=&quot;_new&quot;&gt;https://www.sqlalchemy.org&lt;span aria-hidden=&quot;true&quot; class=&quot;ms-0.5 inline-block align-middle leading-none&quot;&gt;&lt;svg class=&quot;block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]&quot; data-rtl-flip=&quot;&quot; fill=&quot;currentColor&quot; height=&quot;20&quot; viewbox=&quot;0 0 20 20&quot; width=&quot;20&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;10555&quot; data-start=&quot;10515&quot;&gt;
&lt;p data-end=&quot;10555&quot; data-start=&quot;10517&quot;&gt;PyJWT — &lt;a class=&quot;decorated-link cursor-pointer&quot; data-end=&quot;10553&quot; data-start=&quot;10525&quot; rel=&quot;noopener&quot; target=&quot;_new&quot;&gt;https://pyjwt.readthedocs.io&lt;span aria-hidden=&quot;true&quot; class=&quot;ms-0.5 inline-block align-middle leading-none&quot;&gt;&lt;svg class=&quot;block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]&quot; data-rtl-flip=&quot;&quot; fill=&quot;currentColor&quot; height=&quot;20&quot; viewbox=&quot;0 0 20 20&quot; width=&quot;20&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;10591&quot; data-start=&quot;10556&quot;&gt;
&lt;p data-end=&quot;10591&quot; data-start=&quot;10558&quot;&gt;uvicorn — &lt;a class=&quot;decorated-link cursor-pointer&quot; data-end=&quot;10591&quot; data-start=&quot;10568&quot; rel=&quot;noopener&quot; target=&quot;_new&quot;&gt;https://www.uvicorn.org&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;pre class=&quot;overflow-visible!&quot; data-end=&quot;8330&quot; data-start=&quot;8205&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p data-end=&quot;1587&quot; data-start=&quot;1538&quot;&gt;&lt;/p&gt;&lt;/div&gt;</description><link>http://www.blogdokdsti.com.br/2025/10/como-criar-api-web-python-fastapi-sqlite.html</link><author>noreply@blogger.com (Klebes Santos)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjKv2JCWuafX1AEZ1-OOvAKPqI6ZstCNqrFJgsY2pmml1HhsC3nSCHu-3e0vvgBdVyKaBhxwYFYb00B41B0HrCdovdzuckDlZ6sxljykLh-xRccV4GByaBXBS6vXPj3nPpf89WkjIaMA18A7slOHYdG8K7iIvjo8dRkLlu32e3jFypsEIksZNgCWpi4l6s=s72-w400-h400-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-1832996505683363065</guid><pubDate>Sat, 04 Oct 2025 16:48:00 +0000</pubDate><atom:updated>2025-10-05T22:11:05.834-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">BD</category><title>Como Otimizar Queries Pesadas no Oracle com Cardinalidade Alta: Guia Completo de EXPLAIN PLAN e Melhores Práticas</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://i.imgur.com/cbB9tq6.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;250&quot; data-original-width=&quot;700&quot; height=&quot;250&quot; src=&quot;https://i.imgur.com/cbB9tq6.jpeg&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Quando trabalhamos com &lt;strong data-end=&quot;416&quot; data-start=&quot;382&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Oracle+millions+of+records+performance&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;milhões de registros no Oracle&lt;/a&gt;&lt;/strong&gt;, é comum enfrentar queries com &lt;strong data-end=&quot;470&quot; data-start=&quot;448&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+alta+cardinalidade+Oracle&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;alta cardinalidade&lt;/a&gt;&lt;/strong&gt;, resultando em lentidão, consumo excessivo de CPU/memória e até &lt;strong data-end=&quot;566&quot; data-start=&quot;535&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=ORA-01555+snapshot+too+old&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;ORA-01555: snapshot too old&lt;/a&gt;&lt;/strong&gt; em joins ou subqueries.&lt;/p&gt;&lt;p data-end=&quot;729&quot; data-start=&quot;359&quot;&gt;
O segredo está em &lt;strong data-end=&quot;651&quot; data-start=&quot;611&quot;&gt;analisar corretamente o &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Oracle+EXPLAIN+PLAN+tutorial&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;EXPLAIN PLAN&lt;/a&gt;&lt;/strong&gt; e aplicar técnicas de otimização que reduzam o custo e melhorem o desempenho.&lt;/p&gt;
&lt;p data-end=&quot;860&quot; data-start=&quot;731&quot;&gt;Neste guia, vou mostrar &lt;strong data-end=&quot;801&quot; data-start=&quot;755&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=como+avaliar+o+plano+de+execu%C3%A7%C3%A3o+no+Oracle&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;como avaliar o plano de execução no Oracle&lt;/a&gt;&lt;/strong&gt; e quais estratégias aplicar para otimizar queries pesadas.&lt;/p&gt;&lt;p data-end=&quot;860&quot; data-start=&quot;731&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 data-end=&quot;907&quot; data-start=&quot;867&quot;&gt;1. O que é Cardinalidade no Oracle?&lt;/h2&gt;&lt;p data-end=&quot;1017&quot; data-start=&quot;908&quot;&gt;Cardinalidade indica a &lt;strong data-end=&quot;993&quot; data-start=&quot;931&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+cardinality+database+query+optimization&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;estimativa do número de linhas retornadas por uma operação&lt;/a&gt;&lt;/strong&gt; no plano de execução.&lt;/p&gt;&lt;ul data-end=&quot;1185&quot; data-start=&quot;1018&quot;&gt;
&lt;li data-end=&quot;1104&quot; data-start=&quot;1018&quot;&gt;
&lt;p data-end=&quot;1104&quot; data-start=&quot;1020&quot;&gt;&lt;strong data-end=&quot;1042&quot; data-start=&quot;1020&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Alta+cardinalidade+Oracle&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;Alta cardinalidade&lt;/a&gt;&lt;/strong&gt;: muitos registros retornados → mais custo de processamento.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1185&quot; data-start=&quot;1105&quot;&gt;
&lt;p data-end=&quot;1185&quot; data-start=&quot;1107&quot;&gt;&lt;strong data-end=&quot;1130&quot; data-start=&quot;1107&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Baixa+cardinalidade+Oracle&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;Baixa cardinalidade&lt;/a&gt;&lt;/strong&gt;: poucos registros retornados → processamento rápido.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p data-end=&quot;1353&quot; data-start=&quot;1187&quot;&gt;🔎 Problema: quando o otimizador estima errado a cardinalidade, ele pode escolher um &lt;strong data-end=&quot;1292&quot; data-start=&quot;1272&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=improve+JOIN+performance&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;JOIN ineficiente&lt;/a&gt;&lt;/strong&gt; (ex:), gerando lentidão.&lt;/p&gt;&lt;p data-end=&quot;1353&quot; data-start=&quot;1187&quot;&gt;&amp;nbsp; &lt;code data-end=&quot;1311&quot; data-start=&quot;1298&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Oracle+NESTED+LOOP+JOIN&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;NESTED LOOP&lt;/a&gt;&lt;/code&gt; em vez de &lt;code data-end=&quot;1333&quot; data-start=&quot;1322&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Oracle+HASH+JOIN&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;HASH JOIN&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;&lt;hr data-end=&quot;1358&quot; data-start=&quot;1355&quot; /&gt;&lt;h2 data-end=&quot;1410&quot; data-start=&quot;1360&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 data-end=&quot;1410&quot; data-start=&quot;1360&quot;&gt;2. Avaliando Queries Pesadas com EXPLAIN PLAN&lt;/h2&gt;&lt;p data-end=&quot;860&quot; data-start=&quot;731&quot;&gt;





&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;Para analisar:&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;EXPLAIN PLAN FOR&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;SELECT o.order_id, c.customer_name, p.product_name&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;FROM orders o&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;JOIN customers c ON o.customer_id = c.customer_id&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;JOIN products p ON o.product_id = p.product_id&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;WHERE o.order_date BETWEEN DATE &#39;2023-01-01&#39; AND DATE &#39;2023-12-31&#39;;&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;Saída típica:&lt;/p&gt;&lt;p data-end=&quot;1428&quot; data-start=&quot;1412&quot;&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;div&gt;| Id&amp;nbsp; | Operation&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | Name&amp;nbsp; &amp;nbsp; &amp;nbsp; | Rows&amp;nbsp; &amp;nbsp;| Bytes | Cost (%CPU)| Time |&lt;/div&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;div&gt;|&amp;nbsp; &amp;nbsp;0 | SELECT STATEMENT&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 10M&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;... | 500000 (20)| 00:02:30 |&lt;/div&gt;&lt;div&gt;|&amp;nbsp; &amp;nbsp;1 |&amp;nbsp; HASH JOIN&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 10M&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;... | 400000 (15)| 00:02:10 |&lt;/div&gt;&lt;div&gt;|&amp;nbsp; &amp;nbsp;2 |&amp;nbsp; &amp;nbsp;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Oracle+TABLE+ACCESS+FULL&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;TABLE ACCESS FULL&lt;/a&gt;&amp;nbsp; | ORDERS&amp;nbsp; &amp;nbsp; |&amp;nbsp; 10M&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;... | 200000 (10)| 00:01:00 |&lt;/div&gt;&lt;div&gt;|&amp;nbsp; &amp;nbsp;3 |&amp;nbsp; &amp;nbsp;TABLE ACCESS FULL&amp;nbsp; | CUSTOMERS |&amp;nbsp; 1M&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;... |&amp;nbsp; 50000 (5) | 00:00:30 |&lt;/div&gt;&lt;div&gt;|&amp;nbsp; &amp;nbsp;4 |&amp;nbsp; &amp;nbsp;TABLE ACCESS FULL&amp;nbsp; | PRODUCTS&amp;nbsp; |&amp;nbsp; 5M&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;... | 150000 (8) | 00:00:40 |&lt;/div&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;p data-end=&quot;2515&quot; data-start=&quot;2501&quot;&gt;Aqui vemos:&lt;/p&gt;
&lt;ul data-end=&quot;2728&quot; data-start=&quot;2516&quot;&gt;
&lt;li data-end=&quot;2556&quot; data-start=&quot;2516&quot;&gt;
&lt;p data-end=&quot;2556&quot; data-start=&quot;2518&quot;&gt;&lt;strong data-end=&quot;2542&quot; data-start=&quot;2518&quot;&gt;10 milhões de linhas&lt;/strong&gt; retornadas.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2629&quot; data-start=&quot;2557&quot;&gt;
&lt;p data-end=&quot;2629&quot; data-start=&quot;2559&quot;&gt;O otimizador escolheu &lt;strong data-end=&quot;2594&quot; data-start=&quot;2581&quot;&gt;HASH JOIN&lt;/strong&gt; (adequado para grandes volumes).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2728&quot; data-start=&quot;2630&quot;&gt;
&lt;p data-end=&quot;2728&quot; data-start=&quot;2632&quot;&gt;Mas o &lt;strong data-end=&quot;2659&quot; data-start=&quot;2638&quot;&gt;TABLE ACCESS FULL&lt;/strong&gt; em&amp;nbsp;ORDERS CUSTOMERS  PRODUCTS,&amp;nbsp;mostra que &lt;strong data-end=&quot;2727&quot; data-start=&quot;2709&quot;&gt;faltam índices&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2 data-end=&quot;2768&quot; data-start=&quot;2735&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 data-end=&quot;2768&quot; data-start=&quot;2735&quot;&gt;3. Estratégias de Otimização&lt;/h2&gt;&lt;h2 data-end=&quot;2768&quot; data-start=&quot;2735&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 data-end=&quot;2768&quot; data-start=&quot;2735&quot;&gt;&lt;a href=&quot;https://i.imgur.com/aGo6BPL.jpeg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1024&quot; height=&quot;335&quot; src=&quot;https://i.imgur.com/aGo6BPL.jpeg&quot; width=&quot;333&quot; /&gt;&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;h3 data-end=&quot;2804&quot; data-start=&quot;2770&quot;&gt;a) Criar Índices Apropriados&lt;/h3&gt;
&lt;p data-end=&quot;2862&quot; data-start=&quot;2805&quot;&gt;Se o filtro principal é &lt;code data-end=&quot;2843&quot; data-start=&quot;2829&quot;&gt;o.order_date&lt;/code&gt;, crie um índice:&lt;/p&gt;&lt;p data-end=&quot;2862&quot; data-start=&quot;2805&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=CREATE+INDEX+Oracle+usage&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;CREATE INDEX&lt;/a&gt; idx_orders_date ON orders(order_date);&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;Se usamos &lt;strong data-end=&quot;2956&quot; data-start=&quot;2937&quot;&gt;JOIN frequentes&lt;/strong&gt;, considere índices compostos:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;CREATE INDEX idx_orders_cust_prod ON orders(customer_id, product_id);&lt;/blockquote&gt;&lt;p&gt;b) Estatísticas Atualizadas&lt;/p&gt;&lt;p&gt;&amp;nbsp;Se o Oracle tem estatísticas desatualizadas, a cardinalidade estimada será incorreta.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;EXEC DBMS_STATS.GATHER_TABLE_STATS(&#39;SCHEMA&#39;, &#39;ORDERS&#39;);&lt;/div&gt;&lt;div&gt;EXEC DBMS_STATS.GATHER_TABLE_STATS(&#39;SCHEMA&#39;, &#39;CUSTOMERS&#39;);&lt;/div&gt;&lt;div&gt;EXEC DBMS_STATS.GATHER_TABLE_STATS(&#39;SCHEMA&#39;, &#39;PRODUCTS&#39;);&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 data-end=&quot;3415&quot; data-start=&quot;3388&quot;&gt;c) Reescrita de Query&lt;/h3&gt;
&lt;p data-end=&quot;3541&quot; data-start=&quot;3416&quot;&gt;Muitas vezes, &lt;strong data-end=&quot;3444&quot; data-start=&quot;3430&quot;&gt;subqueries&lt;/strong&gt; ou &lt;strong data-end=&quot;3467&quot; data-start=&quot;3448&quot;&gt;views complexas&lt;/strong&gt; aumentam o custo.&lt;br data-end=&quot;3488&quot; data-start=&quot;3485&quot; /&gt;
✅ Prefira &lt;strong data-end=&quot;3521&quot; data-start=&quot;3498&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Materialized+Common+Table+Expressions&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;CTEs materializadas&lt;/a&gt;&lt;/strong&gt; (no Oracle 12c+):&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;WITH orders_filtered AS (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;SELECT /*+ MATERIALIZE */ *&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;FROM orders&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;WHERE order_date BETWEEN DATE &#39;2023-01-01&#39; AND DATE &#39;2023-12-31&#39;&lt;/div&gt;&lt;div&gt;)&lt;/div&gt;&lt;div&gt;SELECT o.order_id, c.customer_name, p.product_name&lt;/div&gt;&lt;div&gt;FROM orders_filtered o&lt;/div&gt;&lt;div&gt;JOIN customers c ON o.customer_id = c.customer_id&lt;/div&gt;&lt;div&gt;JOIN products p ON o.product_id = p.product_id;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 data-end=&quot;3913&quot; data-start=&quot;3874&quot;&gt;d) Hints para Forçar Melhor Plano&lt;/h3&gt;
&lt;p data-end=&quot;3983&quot; data-start=&quot;3914&quot;&gt;Se mesmo após índices o otimizador insistir em usar o plano errado:&lt;/p&gt;&lt;p data-end=&quot;3983&quot; data-start=&quot;3914&quot;&gt;&lt;/p&gt;&lt;blockquote&gt;SELECT /*+ USE_HASH(o c p) PARALLEL(o 4) */ ...&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&amp;nbsp;&lt;code data-end=&quot;4055&quot; data-start=&quot;4045&quot;&gt;USE_HASH&lt;/code&gt; força Hash Join.&lt;/li&gt;&lt;li&gt;&lt;code data-end=&quot;4087&quot; data-start=&quot;4077&quot;&gt;PARALLEL&lt;/code&gt; paraleliza a leitura da tabela.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 data-end=&quot;4176&quot; data-start=&quot;4128&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 data-end=&quot;4176&quot; data-start=&quot;4128&quot;&gt;4. Checklist para Queries Pesadas no Oracle&lt;/h2&gt;
&lt;p data-end=&quot;4532&quot; data-start=&quot;4177&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Use &lt;strong data-end=&quot;4200&quot; data-start=&quot;4184&quot;&gt;EXPLAIN PLAN&lt;/strong&gt; e &lt;code data-end=&quot;4230&quot; data-start=&quot;4203&quot;&gt;DBMS_XPLAN.DISPLAY_CURSOR&lt;/code&gt; para checar custos reais.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Crie &lt;strong data-end=&quot;4307&quot; data-start=&quot;4267&quot;&gt;índices nos campos de filtro e joins&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Mantenha &lt;strong data-end=&quot;4358&quot; data-start=&quot;4323&quot;&gt;estatísticas sempre atualizadas&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Reescreva queries complexas em &lt;strong data-end=&quot;4412&quot; data-start=&quot;4396&quot;&gt;CTEs menores&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Use &lt;strong data-end=&quot;4432&quot; data-start=&quot;4423&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=hints+database&amp;amp;bbid=3704563907057270487&amp;amp;bpid=1832996505683363065&quot; target=&quot;_blank&quot;&gt;hints&lt;/a&gt;&lt;/strong&gt; apenas quando necessário.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Teste em ambientes com &lt;strong data-end=&quot;4511&quot; data-start=&quot;4487&quot;&gt;milhões de registros&lt;/strong&gt; antes de produção.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;4532&quot; data-start=&quot;4177&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p data-end=&quot;4854&quot; data-start=&quot;4554&quot;&gt;O &lt;strong data-end=&quot;4582&quot; data-start=&quot;4556&quot;&gt;EXPLAIN PLAN no Oracle&lt;/strong&gt; é a principal ferramenta para entender gargalos em queries com &lt;strong data-end=&quot;4668&quot; data-start=&quot;4646&quot;&gt;alta cardinalidade&lt;/strong&gt;.&lt;br data-end=&quot;4672&quot; data-start=&quot;4669&quot; /&gt;
Seguindo boas práticas como criação de índices, atualização de estatísticas e reescrita de queries, você pode reduzir o &lt;strong data-end=&quot;4824&quot; data-start=&quot;4792&quot;&gt;custo de execução em até 80%&lt;/strong&gt; e evitar sobrecarga no banco.&lt;/p&gt;
&lt;p data-end=&quot;4925&quot; data-start=&quot;4856&quot;&gt;Lembre-se: &lt;strong data-end=&quot;4922&quot; data-start=&quot;4867&quot;&gt;otimizar queries é medir, ajustar e medir novamente&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;4925&quot; data-start=&quot;4856&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</description><link>http://www.blogdokdsti.com.br/2025/10/oracle-explain-plan-query-optimization.html</link><author>noreply@blogger.com (Klebes Santos)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-8202472954139950586</guid><pubDate>Mon, 21 Jul 2025 02:15:00 +0000</pubDate><atom:updated>2025-07-20T23:15:11.069-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Banco de dados</category><title>Guia Completo: Resolvendo Problemas de Driver ODBC para SQL Server</title><description>&lt;p&gt;&lt;img alt=&quot;Como resolver erro de driver ODBC SQL Server em Python: guia completo para instalar e configurar drivers atualizados no Windows 2025&quot; src=&quot;https://i.imgur.com/AeviyvL.gif&quot; title=&quot;Tutorial completo: corrigir erro driver ODBC SQL Server não encontrado - Python Windows - instalar ODBC Driver 17 passo a passo 2025&quot; /&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;Introdução&lt;/h2&gt;&lt;div&gt;&lt;div class=&quot;grid-cols-1 grid gap-2.5 [&amp;amp;_&amp;gt;_*]:min-w-0 !gap-3.5&quot;&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Um dos erros mais comuns ao trabalhar com conexões de banco de dados SQL Server em aplicações Python é a ausência ou incompatibilidade de drivers ODBC. Este guia apresenta soluções práticas para identificar, instalar e configurar os drivers necessários, garantindo que suas aplicações funcionem corretamente em diferentes ambientes.&lt;/p&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;O Problema dos Drivers ODBC&lt;/h2&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Quando você desenvolve uma aplicação que se conecta ao SQL Server e a distribui para outras máquinas, é comum encontrar o erro indicando que o driver ODBC especificado não está disponível no sistema de destino. Isso acontece porque os drivers ODBC não são instalados por padrão em todas as máquinas Windows.&lt;/p&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Verificando se o Driver Está Instalado&lt;/h2&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Antes de instalar novos drivers, é fundamental verificar quais já estão disponíveis no sistema:&lt;/p&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;Método 1: Interface Gráfica&lt;/h3&gt;
&lt;ol class=&quot;[&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal space-y-1.5 pl-7&quot;&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Abra o menu Iniciar e digite &lt;code class=&quot;bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]&quot;&gt;odbcad32&lt;/code&gt;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Execute o programa &quot;Fontes de Dados ODBC&quot;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Navegue até a aba &quot;Drivers&quot;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Procure por drivers como:
&lt;ul class=&quot;[&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-disc space-y-1.5 pl-7&quot;&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;&lt;code class=&quot;bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]&quot;&gt;SQL Server Native Client 11.0&lt;/code&gt;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;&lt;code class=&quot;bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]&quot;&gt;ODBC Driver 17 for SQL Server&lt;/code&gt;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;&lt;code class=&quot;bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]&quot;&gt;ODBC Driver 18 for SQL Server&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;Método 2: Verificação via Python&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Você pode verificar programaticamente quais drivers estão disponíveis:&lt;/p&gt;&lt;p class=&quot;whitespace-normal break-words&quot;&gt;&lt;b&gt;python&lt;/b&gt;&lt;/p&gt;&lt;pre class=&quot;code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; color: #383a42; direction: ltr; font-family: &amp;quot;Times New Roman&amp;quot;; hyphens: none; line-height: 1.5; margin: 0.5em 0px; overflow: auto; padding: 1em; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;code class=&quot;language-python&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; direction: ltr; font-family: &amp;quot;Times New Roman&amp;quot;; hyphens: none; line-height: 1.5; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;import&lt;/span&gt; pyodbc

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Lista todos os drivers ODBC disponíveis&lt;/span&gt;
drivers &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;drivers&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;Drivers ODBC disponíveis:&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;for&lt;/span&gt; driver &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;in&lt;/span&gt; drivers&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;- &lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;driver&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Verifica se um driver específico está presente&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;ODBC Driver 17 for SQL Server&quot;&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;in&lt;/span&gt; drivers&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;✅ Driver recomendado encontrado!&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;❌ Driver recomendado não encontrado.&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;token&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Instalando o Driver Correto&lt;/h2&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;Opção 1: SQL Server Native Client 11.0 (Legado)&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Este é um driver mais antigo, mas ainda amplamente usado. Para instalá-lo:&lt;/p&gt;
&lt;ul class=&quot;[&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-disc space-y-1.5 pl-7&quot;&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;&lt;/li&gt;&lt;blockquote&gt;&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Acesse o site oficial da Microsoft&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Procure por &quot;SQL Server Native Client 11.0&quot;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Baixe e instale a versão apropriada (x86 ou x64)&lt;/li&gt;&lt;/blockquote&gt;&lt;li class=&quot;whitespace-normal break-words&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;Opção 2: ODBC Driver 17 for SQL Server (Recomendado)&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Este é o driver atualmente recomendado pela Microsoft:&lt;/p&gt;
&lt;ul class=&quot;[&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-disc space-y-1.5 pl-7&quot;&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Oferece melhor compatibilidade&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Suporte a recursos mais recentes&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Maior estabilidade e performance&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Disponível para Windows, Linux e macOS&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Para instalação:&lt;/p&gt;
&lt;ol class=&quot;[&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal space-y-1.5 pl-7&quot;&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;&lt;/li&gt;&lt;blockquote&gt;&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Acesse o site oficial da Microsoft&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Procure por &quot;Microsoft ODBC Driver 17 for SQL Server&quot;&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Baixe o instalador apropriado para seu sistema&lt;/li&gt;
&lt;li class=&quot;whitespace-normal break-words&quot;&gt;Execute a instalação com privilégios administrativos&lt;/li&gt;&lt;/blockquote&gt;&lt;li class=&quot;whitespace-normal break-words&quot;&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;Opção 3: ODBC Driver 18 for SQL Server (Mais Recente)&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;A versão mais atual, com suporte aprimorado para autenticação e criptografia.&lt;/p&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Configurando sua Aplicação&lt;/h2&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;Atualizando o Arquivo de Configuração&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Se você usa um arquivo de configuração JSON para armazenar as configurações de conexão:&lt;/p&gt;&lt;p class=&quot;whitespace-normal break-words&quot;&gt;json&lt;/p&gt;&lt;div class=&quot;relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg&quot;&gt;&lt;div&gt;&lt;pre class=&quot;code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; color: #383a42; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; margin: 0.5em 0px; overflow: auto; padding: 1em; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;code class=&quot;language-json&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;span class=&quot;token&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class=&quot;token&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #e45649;&quot;&gt;&quot;server&quot;&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;seu-servidor&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #e45649;&quot;&gt;&quot;database&quot;&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;sua-database&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #e45649;&quot;&gt;&quot;driver&quot;&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;ODBC Driver 17 for SQL Server&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #e45649;&quot;&gt;&quot;trusted_connection&quot;&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;yes&quot;&lt;/span&gt;
&lt;span class=&quot;token&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;token&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;String de Conexão Atualizada&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Exemplo de como usar o driver moderno em sua string de conexão:&lt;/p&gt;&lt;p class=&quot;whitespace-normal break-words&quot;&gt;python&lt;/p&gt;&lt;div class=&quot;relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg&quot;&gt;&lt;div&gt;&lt;pre class=&quot;code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; color: #383a42; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; margin: 0.5em 0px; overflow: auto; padding: 1em; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;code class=&quot;language-python&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;import&lt;/span&gt; pyodbc
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;import&lt;/span&gt; json

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Carrega configurações&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;sqlserver.json&#39;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;as&lt;/span&gt; f&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    config &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; json&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;load&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Monta a string de conexão&lt;/span&gt;
connection_string &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;DRIVER={{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;driver&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;}};&quot;&lt;/span&gt;
    &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;SERVER=&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;server&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;;&quot;&lt;/span&gt;
    &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;DATABASE=&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;database&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;;&quot;&lt;/span&gt;
    &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;Trusted_Connection=&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;trusted_connection&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;;&quot;&lt;/span&gt;
&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Estabelece conexão&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    connection &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;connect&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;connection_string&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;✅ Conexão estabelecida com sucesso!&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;except&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;Error &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;as&lt;/span&gt; e&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;❌ Erro na conexão: &lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;token&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Implementando Verificação Automática&lt;/h2&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Para tornar sua aplicação mais robusta, implemente uma verificação automática de driver:&lt;/p&gt;&lt;p class=&quot;whitespace-normal break-words&quot;&gt;python&lt;/p&gt;&lt;div class=&quot;relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg&quot;&gt;&lt;div&gt;&lt;pre class=&quot;code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; color: #383a42; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; margin: 0.5em 0px; overflow: auto; padding: 1em; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;code class=&quot;language-python&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;import&lt;/span&gt; pyodbc
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;import&lt;/span&gt; sys

&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;verificar_driver_odbc&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;driver_nome&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;ODBC Driver 17 for SQL Server&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token triple-quoted-string&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&quot;&quot;
&lt;/span&gt;    Verifica se o driver ODBC especificado está disponível no sistema
&lt;span class=&quot;token triple-quoted-string&quot; style=&quot;color: #50a14f;&quot;&gt;    &quot;&quot;&quot;&lt;/span&gt;
    drivers_disponiveis &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;drivers&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;if&lt;/span&gt; driver_nome &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;in&lt;/span&gt; drivers_disponiveis&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;❌ Driver &#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;driver_nome&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39; não encontrado.&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;Drivers disponíveis:&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;for&lt;/span&gt; driver &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;in&lt;/span&gt; drivers_disponiveis&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;  - &lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;driver&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;\nPara resolver este problema:&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;1. Instale o &#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;driver_nome&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39; do site da Microsoft&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;2. Ou modifique sua configuração para usar um driver disponível&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;False&lt;/span&gt;
    
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;✅ Driver &#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;driver_nome&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39; encontrado e pronto para uso!&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;True&lt;/span&gt;

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Verificação antes de tentar conectar&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;not&lt;/span&gt; verificar_driver_odbc&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    sys&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;exit&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Continua com a lógica da aplicação...&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Script de Instalação Automática&lt;/h2&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Para facilitar a distribuição de sua aplicação, você pode criar um script que automatiza a instalação do driver:&lt;/p&gt;&lt;p class=&quot;whitespace-normal break-words&quot;&gt;batch&lt;/p&gt;&lt;div class=&quot;relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg&quot;&gt;&lt;div&gt;&lt;pre class=&quot;code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; color: #383a42; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; margin: 0.5em 0px; overflow: auto; padding: 1em; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;code class=&quot;language-batch&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; off&lt;/span&gt;
&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; Verificando driver ODBC para SQL Server...&lt;/span&gt;

&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;:: Verifica se o driver já está instalado&lt;/span&gt;
&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;reg&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; query &lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Driver 17 for SQL Server&quot;&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; &amp;gt;nul &lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #b76b01;&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #4078f2;&quot;&gt;%errorlevel%&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; == &lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #b76b01;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; (&lt;/span&gt;
    &lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; Driver ODBC &lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #b76b01;&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; já está instalado.&lt;/span&gt;
    &lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;goto&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token command label&quot; style=&quot;color: #e45649;&quot;&gt;:end&lt;/span&gt;
&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; Driver não encontrado. Iniciando download...&lt;/span&gt;
&lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;:: Baixa e instala o driver (exemplo para x64)&lt;/span&gt;
&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;powershell&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; -Command &lt;/span&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;Invoke-WebRequest -Uri &#39;https://go.microsoft.com/fwlink/?linkid=2249006&#39; -OutFile &#39;msodbcsql.msi&#39;&quot;&lt;/span&gt;
&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;msiexec&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token command parameter&quot; style=&quot;color: #b76b01;&quot;&gt;/i&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; msodbcsql.msi &lt;/span&gt;&lt;span class=&quot;token command parameter&quot; style=&quot;color: #b76b01;&quot;&gt;/quiet&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token command parameter&quot; style=&quot;color: #b76b01;&quot;&gt;/norestart&lt;/span&gt;

&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt; Instalação concluída!&lt;/span&gt;
&lt;span class=&quot;token label&quot; style=&quot;color: #e45649;&quot;&gt;:end&lt;/span&gt;
&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;pause&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;token command&quot; style=&quot;color: #a626a4;&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Tratamento de Erros Comum&lt;/h2&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Implemente tratamento robusto de erros para diferentes cenários:&lt;/p&gt;&lt;p class=&quot;whitespace-normal break-words&quot;&gt;python&lt;/p&gt;&lt;div class=&quot;relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg&quot;&gt;&lt;div&gt;&lt;pre class=&quot;code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; color: #383a42; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; margin: 0.5em 0px; overflow: auto; padding: 1em; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;code class=&quot;language-python&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; direction: ltr; font-family: var(--font-mono); hyphens: none; line-height: 1.5; tab-size: 2; word-break: normal; word-spacing: normal;&quot;&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;import&lt;/span&gt; pyodbc
&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;from&lt;/span&gt; typing &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;import&lt;/span&gt; Optional

&lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;ConexaoSQLServer&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;self&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt; config_file&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
        self&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;config &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; self&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;_carregar_config&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;config_file&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        self&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;connection&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt; Optional&lt;span class=&quot;token&quot;&gt;[&lt;/span&gt;pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;Connection&lt;span class=&quot;token&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;None&lt;/span&gt;
    
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;_carregar_config&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;self&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt; config_file&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token triple-quoted-string&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&quot;&quot;Carrega configurações do arquivo JSON&quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;config_file&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;as&lt;/span&gt; f&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;load&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;except&lt;/span&gt; FileNotFoundError&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;raise&lt;/span&gt; FileNotFoundError&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;Arquivo de configuração &#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config_file&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39; não encontrado.&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;except&lt;/span&gt; json&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;JSONDecodeError&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;raise&lt;/span&gt; ValueError&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;Arquivo de configuração &#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config_file&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39; contém JSON inválido.&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;conectar&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;self&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token triple-quoted-string&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&quot;&quot;Estabelece conexão com o banco de dados&quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Verifica se o driver está disponível&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;if&lt;/span&gt; self&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;config&lt;span class=&quot;token&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;driver&#39;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;in&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;drivers&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;❌ Driver &#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;driver&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39; não disponível.&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;False&lt;/span&gt;
            
            &lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Monta string de conexão&lt;/span&gt;
            connection_string &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; self&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;_montar_string_conexao&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
            
            &lt;span class=&quot;token&quot; style=&quot;color: #a0a1a7; font-style: italic;&quot;&gt;# Estabelece conexão&lt;/span&gt;
            self&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;connection &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;connect&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;connection_string&lt;span class=&quot;token&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;✅ Conexão estabelecida com sucesso!&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;True&lt;/span&gt;
            
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;except&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;InterfaceError &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;as&lt;/span&gt; e&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;❌ Erro de interface ODBC: &lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;False&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;except&lt;/span&gt; pyodbc&lt;span class=&quot;token&quot;&gt;.&lt;/span&gt;DatabaseError &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;as&lt;/span&gt; e&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;❌ Erro de banco de dados: &lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;False&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;except&lt;/span&gt; Exception &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;as&lt;/span&gt; e&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;❌ Erro inesperado: &lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #b76b01;&quot;&gt;False&lt;/span&gt;
    
    &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;_montar_string_conexao&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;self&lt;span class=&quot;token&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token&quot; style=&quot;color: #4078f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;token&quot; style=&quot;color: #50a14f;&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token triple-quoted-string&quot; style=&quot;color: #50a14f;&quot;&gt;&quot;&quot;&quot;Monta a string de conexão baseada na configuração&quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;token&quot; style=&quot;color: #a626a4;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;DRIVER={{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;driver&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;}};&quot;&lt;/span&gt;
            &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;SERVER=&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;server&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;;&quot;&lt;/span&gt;
            &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;DATABASE=&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;database&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;;&quot;&lt;/span&gt;
            &lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;f&quot;Trusted_Connection=&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;trusted_connection&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;&#39;yes&#39;&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token string-interpolation interpolation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot; style=&quot;color: #50a14f;&quot;&gt;;&quot;&lt;/span&gt;
        &lt;span class=&quot;token&quot;&gt;)&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;token&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Melhores Práticas&lt;/h2&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;1. Sempre Use o Driver Mais Recente&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Prefira o &quot;ODBC Driver 17 for SQL Server&quot; ou &quot;ODBC Driver 18 for SQL Server&quot; em vez de versões mais antigas como o Native Client 11.0.&lt;/p&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;2. Documente os Requisitos&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Inclua em sua documentação quais drivers são necessários e como instalá-los.&lt;/p&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;3. Implemente Verificações Robustas&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Sempre verifique a disponibilidade do driver antes de tentar estabelecer conexões.&lt;/p&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;4. Considere Ambientes Diferentes&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Teste sua aplicação em diferentes versões do Windows e considere as diferenças entre arquiteturas x86 e x64.&lt;/p&gt;
&lt;h3 class=&quot;text-lg font-bold text-text-100 mt-1 -mb-1.5&quot;&gt;5. Forneça Alternativas&lt;/h3&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Permita que o usuário configure drivers alternativos caso o preferencial não esteja disponível.&lt;/p&gt;
&lt;h2 class=&quot;text-xl font-bold text-text-100 mt-1 -mb-0.5&quot;&gt;Conclusão&lt;/h2&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;A gestão adequada de drivers ODBC é fundamental para garantir que aplicações Python que se conectam ao SQL Server funcionem corretamente em diferentes ambientes. Seguindo as práticas apresentadas neste guia, você pode criar aplicações mais robustas e facilitar a experiência do usuário final.&lt;/p&gt;
&lt;p class=&quot;whitespace-normal break-words&quot;&gt;Lembre-se sempre de manter os drivers atualizados e documentar claramente os requisitos de sistema para sua aplicação. Com essas medidas, você minimizará problemas relacionados à conectividade e proporcionará uma experiência mais estável para os usuários.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;h-8&quot;&gt;&lt;/div&gt;</description><link>http://www.blogdokdsti.com.br/2025/07/como-resolver-erro-driver-odbc-sql-server-python-2025.html</link><author>noreply@blogger.com (Klebes Santos)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-1354033369686111074</guid><pubDate>Tue, 15 Jul 2025 01:07:00 +0000</pubDate><atom:updated>2025-07-14T22:12:13.863-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Article in English</category><title>Bluetooth Audio Codecs Explained: SBC, AAC, aptX, LDAC, and LHDC – What Really Matters for Sound Quality?</title><description>&lt;p&gt;&amp;nbsp;Listening to your favorite music on Bluetooth headphones, have you ever wondered what those mysterious acronyms—like SBC, AAC, aptX, LDAC, and LHDC—actually mean? You might assume those letters decide whether your music sounds amazing or just “meh.” In this post, you&#39;ll learn exactly what Bluetooth codecs do, how they impact your audio, and whether you &lt;em data-end=&quot;629&quot; data-start=&quot;621&quot;&gt;really&lt;/em&gt; need to stress about them when buying new headphones.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;📌&lt;/strong&gt;Gráfico explicativo com comparação entre os principais codecs Bluetooth e seu impacto na qualidade de som em dispositivos Android e iOS&lt;strong&gt;:&lt;/strong&gt;&lt;br /&gt;
&lt;img alt=&quot;Gráfico explicativo com comparação entre os principais codecs Bluetooth e seu impacto na qualidade de som em dispositivos Android e iOS&quot; src=&quot;https://i.imgur.com/jdSUiHT.png&quot; title=&quot;Tabela comparativa de codecs Bluetooth SBC, AAC, aptX, LDAC e LHDC mostrando desempenho de áudio, bitrate e latência nos fones de ouvido sem fio&quot; /&gt;
&lt;/p&gt;

&lt;hr data-end=&quot;688&quot; data-start=&quot;685&quot; /&gt;
&lt;h2 data-end=&quot;754&quot; data-start=&quot;690&quot;&gt;🎧 &lt;strong data-end=&quot;754&quot; data-start=&quot;696&quot;&gt;How Bluetooth Audio Actually Works — Why Codecs Matter&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1029&quot; data-start=&quot;756&quot;&gt;Wireless headphones are everywhere. Almost every model promises &quot;studio-quality&quot; or &quot;crystal-clear&quot; audio. But here&#39;s the raw truth: Bluetooth can&#39;t transmit uncompressed, ultra-high-quality audio. It has limitations. So how does your music go from your phone to your ears?&lt;/p&gt;
&lt;p data-end=&quot;1301&quot; data-start=&quot;1031&quot;&gt;Imagine a water pipe connecting a tank (your phone) to a glass (your headphones). The size, shape, and cleanliness of the pipe affect how the water flows. The Bluetooth codec is that pipe—it moves your music from one device to another, and its design affects the result.&lt;/p&gt;
&lt;hr data-end=&quot;1306&quot; data-start=&quot;1303&quot; /&gt;
&lt;h2 data-end=&quot;1342&quot; data-start=&quot;1308&quot;&gt;📦 &lt;strong data-end=&quot;1342&quot; data-start=&quot;1314&quot;&gt;What Is a Codec, Really?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1644&quot; data-start=&quot;1344&quot;&gt;A &lt;em data-end=&quot;1353&quot; data-start=&quot;1346&quot;&gt;codec&lt;/em&gt; stands for &lt;strong data-end=&quot;1382&quot; data-start=&quot;1365&quot;&gt;coder-decoder&lt;/strong&gt;. It prepares music for Bluetooth transmission on one end and reconstructs it on the other. Most Bluetooth codecs are &lt;strong data-end=&quot;1509&quot; data-start=&quot;1500&quot;&gt;lossy&lt;/strong&gt;, meaning they discard some of the original audio data to make the file smaller—think MP3s: more compact, with a touch of quality loss.&lt;/p&gt;
&lt;p data-end=&quot;1859&quot; data-start=&quot;1646&quot;&gt;So even if you start with a lossless file (like FLAC or WAV), Bluetooth compresses it again. No matter how you slice it, your wireless headphones are hearing a remixed and repackaged version of the original sound.&lt;/p&gt;
&lt;p data-end=&quot;2034&quot; data-start=&quot;1861&quot;&gt;Lossy compression can shave off stereo detail, soften sharp moments (transients), remove &quot;air&quot; between instruments, and sometimes introduce weird digital noises (artifacts).&lt;/p&gt;
&lt;hr data-end=&quot;2039&quot; data-start=&quot;2036&quot; /&gt;
&lt;h2 data-end=&quot;2099&quot; data-start=&quot;2041&quot;&gt;🎯 &lt;strong data-end=&quot;2099&quot; data-start=&quot;2047&quot;&gt;4 Key Factors That Shape Bluetooth Audio Quality&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2101&quot;&gt;How a codec affects sound comes down to:&lt;/p&gt;
&lt;ol data-end=&quot;2480&quot; data-start=&quot;2143&quot;&gt;
&lt;li data-end=&quot;2236&quot; data-start=&quot;2143&quot;&gt;
&lt;p data-end=&quot;2236&quot; data-start=&quot;2146&quot;&gt;&lt;strong data-end=&quot;2157&quot; data-start=&quot;2146&quot;&gt;Bitrate&lt;/strong&gt; – How many data bits are sent per second. Higher usually means better quality.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2309&quot; data-start=&quot;2237&quot;&gt;
&lt;p data-end=&quot;2309&quot; data-start=&quot;2240&quot;&gt;&lt;strong data-end=&quot;2251&quot; data-start=&quot;2240&quot;&gt;Latency&lt;/strong&gt; – The delay between a sound happening and you hearing it.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2402&quot; data-start=&quot;2310&quot;&gt;
&lt;p data-end=&quot;2402&quot; data-start=&quot;2313&quot;&gt;&lt;strong data-end=&quot;2338&quot; data-start=&quot;2313&quot;&gt;Processing Complexity&lt;/strong&gt; – How hard your phone and headphones need to work to decode it.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2480&quot; data-start=&quot;2403&quot;&gt;
&lt;p data-end=&quot;2480&quot; data-start=&quot;2406&quot;&gt;&lt;strong data-end=&quot;2420&quot; data-start=&quot;2406&quot;&gt;Robustness&lt;/strong&gt; – How well the codec handles interference and signal drops.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;2547&quot; data-start=&quot;2482&quot;&gt;Let’s break down how each common codec performs—in plain English.&lt;/p&gt;
&lt;hr data-end=&quot;2552&quot; data-start=&quot;2549&quot; /&gt;
&lt;h2 data-end=&quot;2613&quot; data-start=&quot;2554&quot;&gt;🔍 &lt;strong data-end=&quot;2613&quot; data-start=&quot;2560&quot;&gt;Common Bluetooth Codecs: Strengths and Weaknesses&lt;/strong&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;2653&quot; data-start=&quot;2615&quot;&gt;&lt;strong data-end=&quot;2653&quot; data-start=&quot;2619&quot;&gt;🔹 SBC – The Universal Default&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;2867&quot; data-start=&quot;2654&quot;&gt;
&lt;li data-end=&quot;2743&quot; data-start=&quot;2654&quot;&gt;
&lt;p data-end=&quot;2743&quot; data-start=&quot;2656&quot;&gt;Bitrate: Up to 345 kbps (mono), 328 kbps (stereo); typically 220–240 kbps in real use&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2774&quot; data-start=&quot;2744&quot;&gt;
&lt;p data-end=&quot;2774&quot; data-start=&quot;2746&quot;&gt;Latency: High, ~200–300 ms&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2867&quot; data-start=&quot;2775&quot;&gt;
&lt;p data-end=&quot;2867&quot; data-start=&quot;2777&quot;&gt;Sound: Basic quality, often misses finer details, smooths out highs and ambient textures&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2939&quot; data-start=&quot;2869&quot;&gt;📌 &lt;em data-end=&quot;2939&quot; data-start=&quot;2872&quot;&gt;If your headphones don’t list a codec, you’re likely getting SBC.&lt;/em&gt;&lt;/p&gt;
&lt;hr data-end=&quot;2944&quot; data-start=&quot;2941&quot; /&gt;
&lt;h3 data-end=&quot;2979&quot; data-start=&quot;2946&quot;&gt;&lt;strong data-end=&quot;2979&quot; data-start=&quot;2950&quot;&gt;🔸 AAC – Apple’s Favorite&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;3216&quot; data-start=&quot;2980&quot;&gt;
&lt;li data-end=&quot;3005&quot; data-start=&quot;2980&quot;&gt;
&lt;p data-end=&quot;3005&quot; data-start=&quot;2982&quot;&gt;Bitrate: 128–256 kbps&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3078&quot; data-start=&quot;3006&quot;&gt;
&lt;p data-end=&quot;3078&quot; data-start=&quot;3008&quot;&gt;Audio: More detailed than SBC, preserves transients and balance well&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3216&quot; data-start=&quot;3079&quot;&gt;
&lt;p data-end=&quot;3216&quot; data-start=&quot;3081&quot;&gt;Latency: ~120 ms on iPhones (hardware-accelerated); &lt;strong data-end=&quot;3144&quot; data-start=&quot;3133&quot;&gt;Android&lt;/strong&gt; performance varies—sometimes great, sometimes muddy depending on device&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3221&quot; data-start=&quot;3218&quot; /&gt;
&lt;h3 data-end=&quot;3266&quot; data-start=&quot;3223&quot;&gt;&lt;strong data-end=&quot;3266&quot; data-start=&quot;3227&quot;&gt;🔷 aptX Family – Qualcomm’s Toolbox&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3288&quot; data-start=&quot;3268&quot;&gt;&lt;strong data-end=&quot;3286&quot; data-start=&quot;3268&quot;&gt;aptX (Classic)&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-end=&quot;3372&quot; data-start=&quot;3289&quot;&gt;
&lt;li data-end=&quot;3310&quot; data-start=&quot;3289&quot;&gt;
&lt;p data-end=&quot;3310&quot; data-start=&quot;3291&quot;&gt;Bitrate: 352 kbps&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3331&quot; data-start=&quot;3311&quot;&gt;
&lt;p data-end=&quot;3331&quot; data-start=&quot;3313&quot;&gt;Latency: ~150 ms&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3372&quot; data-start=&quot;3332&quot;&gt;
&lt;p data-end=&quot;3372&quot; data-start=&quot;3334&quot;&gt;Sound: Better than SBC, but outdated&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3387&quot; data-start=&quot;3374&quot;&gt;&lt;strong data-end=&quot;3385&quot; data-start=&quot;3374&quot;&gt;aptX HD&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-end=&quot;3501&quot; data-start=&quot;3388&quot;&gt;
&lt;li data-end=&quot;3425&quot; data-start=&quot;3388&quot;&gt;
&lt;p data-end=&quot;3425&quot; data-start=&quot;3390&quot;&gt;Bitrate: 576 kbps (48kHz, 24-bit)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3449&quot; data-start=&quot;3426&quot;&gt;
&lt;p data-end=&quot;3449&quot; data-start=&quot;3428&quot;&gt;Latency: 180–200 ms&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3501&quot; data-start=&quot;3450&quot;&gt;
&lt;p data-end=&quot;3501&quot; data-start=&quot;3452&quot;&gt;Audio: Richer detail if both devices support it&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3522&quot; data-start=&quot;3503&quot;&gt;&lt;strong data-end=&quot;3520&quot; data-start=&quot;3503&quot;&gt;aptX Adaptive&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-end=&quot;3661&quot; data-start=&quot;3523&quot;&gt;
&lt;li data-end=&quot;3558&quot; data-start=&quot;3523&quot;&gt;
&lt;p data-end=&quot;3558&quot; data-start=&quot;3525&quot;&gt;Bitrate: 276–420 kbps (dynamic)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3607&quot; data-start=&quot;3559&quot;&gt;
&lt;p data-end=&quot;3607&quot; data-start=&quot;3561&quot;&gt;Latency: Can drop to 50–80 ms in gaming mode&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3661&quot; data-start=&quot;3608&quot;&gt;
&lt;p data-end=&quot;3661&quot; data-start=&quot;3610&quot;&gt;Note: Both devices must support it for full benefit&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3666&quot; data-start=&quot;3663&quot; /&gt;
&lt;h3 data-end=&quot;3713&quot; data-start=&quot;3668&quot;&gt;&lt;strong data-end=&quot;3713&quot; data-start=&quot;3672&quot;&gt;🔵 LDAC – Sony’s High-Resolution Push&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;3929&quot; data-start=&quot;3714&quot;&gt;
&lt;li data-end=&quot;3748&quot; data-start=&quot;3714&quot;&gt;
&lt;p data-end=&quot;3748&quot; data-start=&quot;3716&quot;&gt;Bitrates: 330 / 660 / 990 kbps&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3800&quot; data-start=&quot;3749&quot;&gt;
&lt;p data-end=&quot;3800&quot; data-start=&quot;3751&quot;&gt;Compression: Prioritizes soundstage and clarity&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3870&quot; data-start=&quot;3801&quot;&gt;
&lt;p data-end=&quot;3870&quot; data-start=&quot;3803&quot;&gt;Latency: High (180–240 ms), drops further on unstable connections&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;3929&quot; data-start=&quot;3871&quot;&gt;
&lt;p data-end=&quot;3929&quot; data-start=&quot;3873&quot;&gt;Trade-off: Quality can tank if Bluetooth strength dips&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3934&quot; data-start=&quot;3931&quot; /&gt;
&lt;h3 data-end=&quot;3976&quot; data-start=&quot;3936&quot;&gt;&lt;strong data-end=&quot;3976&quot; data-start=&quot;3940&quot;&gt;🟡 LHDC – The Chinese Challenger&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;4168&quot; data-start=&quot;3977&quot;&gt;
&lt;li data-end=&quot;4027&quot; data-start=&quot;3977&quot;&gt;
&lt;p data-end=&quot;4027&quot; data-start=&quot;3979&quot;&gt;Bitrate: 400–900 kbps (up to 1200 theoretical)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4051&quot; data-start=&quot;4028&quot;&gt;
&lt;p data-end=&quot;4051&quot; data-start=&quot;4030&quot;&gt;Latency: 120–150 ms&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4108&quot; data-start=&quot;4052&quot;&gt;
&lt;p data-end=&quot;4108&quot; data-start=&quot;4054&quot;&gt;Pros: More stable than LDAC, lighter processing load&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4168&quot; data-start=&quot;4109&quot;&gt;
&lt;p data-end=&quot;4168&quot; data-start=&quot;4111&quot;&gt;Cons: Hard to find support; inconsistent across devices&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;4173&quot; data-start=&quot;4170&quot; /&gt;
&lt;h3 data-end=&quot;4216&quot; data-start=&quot;4175&quot;&gt;&lt;strong data-end=&quot;4214&quot; data-start=&quot;4179&quot;&gt;🟠 SSC (Samsung Scalable Codec)&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;4388&quot; data-start=&quot;4217&quot;&gt;
&lt;li data-end=&quot;4252&quot; data-start=&quot;4217&quot;&gt;
&lt;p data-end=&quot;4252&quot; data-start=&quot;4219&quot;&gt;Bitrate: 88–512 kbps (adaptive)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4284&quot; data-start=&quot;4253&quot;&gt;
&lt;p data-end=&quot;4284&quot; data-start=&quot;4255&quot;&gt;Latency: Consistent ~100 ms&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4326&quot; data-start=&quot;4285&quot;&gt;
&lt;p data-end=&quot;4326&quot; data-start=&quot;4287&quot;&gt;Drawback: Low bitrate = softer detail&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;4388&quot; data-start=&quot;4327&quot;&gt;
&lt;p data-end=&quot;4388&quot; data-start=&quot;4329&quot;&gt;Availability: Only on Samsung Galaxy phones + Galaxy Buds&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;4393&quot; data-start=&quot;4390&quot; /&gt;
&lt;h2 data-end=&quot;4454&quot; data-start=&quot;4395&quot;&gt;🎧 &lt;strong data-end=&quot;4454&quot; data-start=&quot;4401&quot;&gt;Do Bluetooth Codecs Really Make a Big Difference?&lt;/strong&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;4506&quot; data-start=&quot;4456&quot;&gt;🔬 &lt;strong data-end=&quot;4506&quot; data-start=&quot;4463&quot;&gt;What Lab Tests and Blind Listening Show&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-end=&quot;4762&quot; data-start=&quot;4508&quot;&gt;In controlled tests, most people can&#39;t reliably tell the difference between AAC, LDAC, and aptX—especially on regular headphones. The most noticeable difference is between &lt;strong data-end=&quot;4687&quot; data-start=&quot;4680&quot;&gt;SBC&lt;/strong&gt; and higher-end codecs. Even then, the margin is smaller than you&#39;d expect.&lt;/p&gt;
&lt;p data-end=&quot;4880&quot; data-start=&quot;4764&quot;&gt;🎵 &lt;em data-end=&quot;4880&quot; data-start=&quot;4767&quot;&gt;Audiophiles, musicians, and sound engineers might pick up subtle differences—but even they admit it’s marginal.&lt;/em&gt;&lt;/p&gt;
&lt;hr data-end=&quot;4885&quot; data-start=&quot;4882&quot; /&gt;
&lt;h2 data-end=&quot;4928&quot; data-start=&quot;4887&quot;&gt;📌 &lt;strong data-end=&quot;4928&quot; data-start=&quot;4893&quot;&gt;When Codec Choice Truly Matters&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;5168&quot; data-start=&quot;4930&quot;&gt;There &lt;em data-end=&quot;4941&quot; data-start=&quot;4936&quot;&gt;are&lt;/em&gt; rare cases where a bad codec pairing ruins sound. Example: using cheap QCY headphones on an iPhone (which uses AAC) can sound way worse than on Android. Incompatibility or bad implementation, not just the codec, causes issues.&lt;/p&gt;
&lt;p data-end=&quot;5275&quot; data-start=&quot;5170&quot;&gt;🎧 Overall: &lt;strong data-end=&quot;5275&quot; data-start=&quot;5182&quot;&gt;The quality of your headphones, music source, and environment matter more than the codec.&lt;/strong&gt;&lt;/p&gt;
&lt;hr data-end=&quot;5280&quot; data-start=&quot;5277&quot; /&gt;
&lt;h2 data-end=&quot;5337&quot; data-start=&quot;5282&quot;&gt;🧩 &lt;strong data-end=&quot;5337&quot; data-start=&quot;5288&quot;&gt;Codecs Are Only One Piece of the Audio Puzzle&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;5492&quot; data-start=&quot;5339&quot;&gt;Think of codecs like fuel types. Premium fuel helps, but it won’t turn a weak car into a sports car. The &lt;strong data-end=&quot;5473&quot; data-start=&quot;5444&quot;&gt;driver, engine, and tires&lt;/strong&gt; still matter more.&lt;/p&gt;
&lt;p data-end=&quot;5541&quot; data-start=&quot;5494&quot;&gt;🛠️ Your audio experience depends much more on:&lt;/p&gt;
&lt;ul data-end=&quot;5645&quot; data-start=&quot;5543&quot;&gt;
&lt;li data-end=&quot;5560&quot; data-start=&quot;5543&quot;&gt;
&lt;p data-end=&quot;5560&quot; data-start=&quot;5545&quot;&gt;Music quality&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;5596&quot; data-start=&quot;5561&quot;&gt;
&lt;p data-end=&quot;5596&quot; data-start=&quot;5563&quot;&gt;Headphone build and driver tech&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;5616&quot; data-start=&quot;5597&quot;&gt;
&lt;p data-end=&quot;5616&quot; data-start=&quot;5599&quot;&gt;Fit and comfort&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;5645&quot; data-start=&quot;5617&quot;&gt;
&lt;p data-end=&quot;5645&quot; data-start=&quot;5619&quot;&gt;Your listening environment&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;5650&quot; data-start=&quot;5647&quot; /&gt;
&lt;h2 data-end=&quot;5703&quot; data-start=&quot;5652&quot;&gt;✅ &lt;strong data-end=&quot;5703&quot; data-start=&quot;5657&quot;&gt;Practical Advice: Don’t Obsess Over Codecs&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;5790&quot; data-start=&quot;5705&quot;&gt;Unless you&#39;re chasing perfection, &lt;strong data-end=&quot;5759&quot; data-start=&quot;5739&quot;&gt;don&#39;t lose sleep&lt;/strong&gt; over codec settings. Focus on:&lt;/p&gt;
&lt;ul data-end=&quot;5930&quot; data-start=&quot;5792&quot;&gt;
&lt;li data-end=&quot;5821&quot; data-start=&quot;5792&quot;&gt;
&lt;p data-end=&quot;5821&quot; data-start=&quot;5794&quot;&gt;Comfort and sound quality&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;5863&quot; data-start=&quot;5822&quot;&gt;
&lt;p data-end=&quot;5863&quot; data-start=&quot;5824&quot;&gt;Battery life and connection stability&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;5930&quot; data-start=&quot;5864&quot;&gt;
&lt;p data-end=&quot;5930&quot; data-start=&quot;5866&quot;&gt;Whether your device supports the same codec as your headphones&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;6006&quot; data-start=&quot;5932&quot;&gt;📱 iPhones mostly offer &lt;strong data-end=&quot;5971&quot; data-start=&quot;5956&quot;&gt;AAC and SBC&lt;/strong&gt;, and that’s plenty for most users.&lt;/p&gt;
&lt;hr data-end=&quot;6011&quot; data-start=&quot;6008&quot; /&gt;
&lt;h2 data-end=&quot;6064&quot; data-start=&quot;6013&quot;&gt;👁️‍🗨️ &lt;strong data-end=&quot;6064&quot; data-start=&quot;6024&quot;&gt;How to Check What Codec You&#39;re Using&lt;/strong&gt;&lt;/h2&gt;
&lt;ul data-end=&quot;6241&quot; data-start=&quot;6066&quot;&gt;
&lt;li data-end=&quot;6131&quot; data-start=&quot;6066&quot;&gt;
&lt;p data-end=&quot;6131&quot; data-start=&quot;6068&quot;&gt;&lt;strong data-end=&quot;6080&quot; data-start=&quot;6068&quot;&gt;Android:&lt;/strong&gt; Enable Developer Options &amp;gt; Bluetooth Audio Codec&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;6186&quot; data-start=&quot;6132&quot;&gt;
&lt;p data-end=&quot;6186&quot; data-start=&quot;6134&quot;&gt;&lt;strong data-end=&quot;6146&quot; data-start=&quot;6134&quot;&gt;Windows:&lt;/strong&gt; Some music apps show the active codec&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;6241&quot; data-start=&quot;6187&quot;&gt;
&lt;p data-end=&quot;6241&quot; data-start=&quot;6189&quot;&gt;&lt;strong data-end=&quot;6200&quot; data-start=&quot;6189&quot;&gt;iPhone:&lt;/strong&gt; Defaults to AAC or SBC—no user control&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;6356&quot; data-start=&quot;6243&quot;&gt;Want to experiment? Switch codecs or devices and play the same track. Listen for clarity, stage width, and delay.&lt;/p&gt;
&lt;p data-end=&quot;6450&quot; data-start=&quot;6358&quot;&gt;🎯 &lt;em data-end=&quot;6450&quot; data-start=&quot;6361&quot;&gt;If you hear a difference—great! If not, even better: you can relax and enjoy the music.&lt;/em&gt;&lt;/p&gt;
&lt;hr data-end=&quot;6455&quot; data-start=&quot;6452&quot; /&gt;
&lt;h2 data-end=&quot;6523&quot; data-start=&quot;6457&quot;&gt;💬 &lt;strong data-end=&quot;6523&quot; data-start=&quot;6463&quot;&gt;Your Turn: What’s Your Experience with Bluetooth Codecs?&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;6697&quot; data-start=&quot;6525&quot;&gt;Have you checked what codec your headphones use? Try a blind test and see if you notice a difference. Share your thoughts in the comments and help others figure it out too!&lt;/p&gt;
&lt;hr data-end=&quot;6702&quot; data-start=&quot;6699&quot; /&gt;
&lt;h2 data-end=&quot;6751&quot; data-start=&quot;6704&quot;&gt;📚 &lt;strong data-end=&quot;6751&quot; data-start=&quot;6710&quot;&gt;Explore More: Tips, Tools &amp;amp; Playlists&lt;/strong&gt;&lt;/h2&gt;
&lt;ul data-end=&quot;6971&quot; data-start=&quot;6753&quot;&gt;
&lt;li data-end=&quot;6820&quot; data-start=&quot;6753&quot;&gt;
&lt;p data-end=&quot;6820&quot; data-start=&quot;6755&quot;&gt;🎧 &lt;strong data-end=&quot;6790&quot; data-start=&quot;6758&quot;&gt;My headphone recommendations&lt;/strong&gt;, including some hidden gems&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;6884&quot; data-start=&quot;6821&quot;&gt;
&lt;p data-end=&quot;6884&quot; data-start=&quot;6823&quot;&gt;📜 Full list of &lt;strong data-end=&quot;6865&quot; data-start=&quot;6839&quot;&gt;audio gear suggestions&lt;/strong&gt; for every budget&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;6971&quot; data-start=&quot;6885&quot;&gt;
&lt;p data-end=&quot;6971&quot; data-start=&quot;6887&quot;&gt;🎶 A curated &lt;strong data-end=&quot;6912&quot; data-start=&quot;6900&quot;&gt;playlist&lt;/strong&gt; to test headphones and spot real vs. placebo differences&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;6976&quot; data-start=&quot;6973&quot; /&gt;
&lt;h2 data-end=&quot;7002&quot; data-start=&quot;6978&quot;&gt;🧠 &lt;strong data-end=&quot;7002&quot; data-start=&quot;6984&quot;&gt;Quick Glossary&lt;/strong&gt;&lt;/h2&gt;
&lt;ul data-end=&quot;7308&quot; data-start=&quot;7004&quot;&gt;
&lt;li data-end=&quot;7062&quot; data-start=&quot;7004&quot;&gt;
&lt;p data-end=&quot;7062&quot; data-start=&quot;7006&quot;&gt;&lt;strong data-end=&quot;7015&quot; data-start=&quot;7006&quot;&gt;Codec&lt;/strong&gt;: Software that compresses/decompresses audio&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;7125&quot; data-start=&quot;7063&quot;&gt;
&lt;p data-end=&quot;7125&quot; data-start=&quot;7065&quot;&gt;&lt;strong data-end=&quot;7076&quot; data-start=&quot;7065&quot;&gt;Bitrate&lt;/strong&gt;: Data per second (kbps). More = better quality&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;7182&quot; data-start=&quot;7126&quot;&gt;
&lt;p data-end=&quot;7182&quot; data-start=&quot;7128&quot;&gt;&lt;strong data-end=&quot;7139&quot; data-start=&quot;7128&quot;&gt;Latency&lt;/strong&gt;: Delay between source audio and playback&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;7239&quot; data-start=&quot;7183&quot;&gt;
&lt;p data-end=&quot;7239&quot; data-start=&quot;7185&quot;&gt;&lt;strong data-end=&quot;7194&quot; data-start=&quot;7185&quot;&gt;Lossy&lt;/strong&gt;: Compression that permanently removes data&lt;/p&gt;
&lt;/li&gt;
&lt;li data-end=&quot;7308&quot; data-start=&quot;7240&quot;&gt;
&lt;p data-end=&quot;7308&quot; data-start=&quot;7242&quot;&gt;&lt;strong data-end=&quot;7255&quot; data-start=&quot;7242&quot;&gt;Artifacts&lt;/strong&gt;: Strange digital noises caused by over-compression&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;7313&quot; data-start=&quot;7310&quot; /&gt;
&lt;h2 data-end=&quot;7334&quot; data-start=&quot;7315&quot;&gt;✅ &lt;strong data-end=&quot;7334&quot; data-start=&quot;7320&quot;&gt;Conclusion&lt;/strong&gt;&lt;/h2&gt;
&lt;p data-end=&quot;7585&quot; data-start=&quot;7336&quot;&gt;Bluetooth audio codecs can seem complex, but once you understand them, they’re just one part of the sound chain. For most listeners, codecs like AAC, aptX, and LDAC perform similarly in real life. Instead of chasing specs, &lt;strong data-end=&quot;7584&quot; data-start=&quot;7559&quot;&gt;listen with your ears&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;7693&quot; data-start=&quot;7587&quot;&gt;Still curious? Try a test, compare notes with friends, and enjoy your journey through wireless sound. 🎧🔊&lt;/p&gt;
&lt;hr data-end=&quot;7698&quot; data-start=&quot;7695&quot; /&gt;
&lt;p data-end=&quot;7849&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot; data-start=&quot;7700&quot;&gt;Se quiser, posso formatar essa versão para Blogger com imagem destacada, palavras-chave, link amigável e outros elementos de SEO. Deseja isso também?&lt;/p&gt;</description><link>http://www.blogdokdsti.com.br/2025/07/codecs-bluetooth-explicados-sbc-aac-aptx-ldac-lhdc.html</link><author>noreply@blogger.com (Klebes Santos)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3704563907057270487.post-3374569949037871285</guid><pubDate>Fri, 11 Jul 2025 03:56:00 +0000</pubDate><atom:updated>2025-07-11T01:00:43.871-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Eletrônica</category><category domain="http://www.blogger.com/atom/ns#">Hardware</category><title>   🛠️ Como Simular o Sensor de Temperatura em Placas Carregadoras com um Resistor de 10kΩ</title><description>&lt;p&gt;Você já desmontou uma plaquinha de carregamento e se deparou com três fios — vermelho, preto e azul — e percebeu que, &lt;strong&gt;sem o fio azul conectado corretamente, a placa simplesmente não funciona&lt;/strong&gt;? Então este artigo é para você.&lt;/p&gt;

&lt;h3&gt;✅ O que é essa plaquinha?&lt;/h3&gt;
&lt;p&gt;A placa analisada é a &lt;strong&gt;SX-W25-Charger-V1.4&lt;/strong&gt;, comum em dispositivos como fones de ouvido TWS, powerbanks ou caixas de som. Ela possui:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Conector USB-C para entrada de energia;&lt;/li&gt;
  &lt;li&gt;LEDs indicadores;&lt;/li&gt;
  &lt;li&gt;Botão de acionamento;&lt;/li&gt;
  &lt;li&gt;E três fios: vermelho (VCC), preto (GND) e azul (sensor).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;📌 Função do fio azul&lt;/h3&gt;
&lt;p&gt;O fio azul está conectado a um &lt;strong&gt;sensor de temperatura (termistor NTC)&lt;/strong&gt; que fica na bateria. A placa &lt;strong&gt;verifica a resistência desse sensor&lt;/strong&gt; antes de liberar a carga, como uma &lt;strong&gt;proteção contra superaquecimento&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Se o fio azul não estiver com a resistência esperada, a placa &lt;strong&gt;não ativa a saída&lt;/strong&gt; de energia.&lt;/p&gt;

&lt;h3&gt;🎯 Como simular esse sensor?&lt;/h3&gt;
&lt;p&gt;A forma mais simples e segura de &lt;strong&gt;“burlar”&lt;/strong&gt; ou simular o sensor é utilizando um &lt;strong&gt;resistor de 10kΩ&lt;/strong&gt; entre os fios &lt;strong&gt;azul e preto&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;Passo a passo:&lt;/h4&gt;
&lt;ol&gt;
  &lt;li&gt;Identifique os fios:&lt;br /&gt;
    🔴 Vermelho: VCC&lt;br /&gt;
    ⚫ Preto: GND&lt;br /&gt;
    🔵 Azul: Sensor
  &lt;/li&gt;
  &lt;li&gt;Solde um resistor de &lt;strong&gt;10kΩ (1/4W ou menor)&lt;/strong&gt; entre o fio azul e o fio preto.&lt;/li&gt;
  &lt;li&gt;Conecte a alimentação na entrada USB-C da placa.&lt;/li&gt;
  &lt;li&gt;O LED da placa deve acender, indicando que a simulação funcionou.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;💡 Posso usar um LED ou lâmpada no lugar do resistor?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Não é recomendado.&lt;/strong&gt; O sensor espera uma &lt;strong&gt;resistência fixa&lt;/strong&gt;, e componentes como LEDs ou lâmpadas &lt;strong&gt;não têm esse comportamento&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
⚠️ Isso pode impedir o funcionamento do carregador ou até danificar a placa.
&lt;/blockquote&gt;

&lt;h3&gt;🔌 Quer um indicador visual? Use um LED externo!&lt;/h3&gt;
&lt;p&gt;Você pode adicionar um &lt;strong&gt;LED indicador externo&lt;/strong&gt; da seguinte forma:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Ligue o LED entre o fio vermelho (VCC) e o fio preto (GND), com um resistor de 220Ω para limitar a corrente.&lt;/li&gt;
  &lt;li&gt;Assim, você terá o sistema &lt;strong&gt;funcionando com o resistor de 10kΩ&lt;/strong&gt; e um &lt;strong&gt;LED acendendo quando a placa receber energia&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;📷 Imagens do projeto:&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Ligação do resistor na prática:&lt;/strong&gt;&lt;br /&gt;
&lt;img alt=&quot;Ligação do resistor entre fio azul e preto&quot; src=&quot;https://i.imgur.com/8UAkZim.png&quot; width=&quot;100%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📌 Diagrama ilustrado:&lt;/strong&gt;&lt;br /&gt;
&lt;img alt=&quot;Diagrama de ligação do resistor de 10kΩ&quot; src=&quot;https://i.imgur.com/NlFCGEC.png&quot; width=&quot;100%&quot; /&gt;
&lt;/p&gt;

&lt;h3&gt;✅ Conclusão&lt;/h3&gt;
&lt;p&gt;Ao simular corretamente o sensor com um resistor de 10kΩ, você pode reaproveitar placas de carregamento que normalmente exigiriam sensores originais. É uma solução simples, funcional e segura para projetos de eletrônica e reaproveitamento de hardware.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
</description><link>http://www.blogdokdsti.com.br/2025/07/ligacao-resistor-10k-placa-sxw25.html</link><author>noreply@blogger.com (Klebes Santos)</author></item></channel></rss>