<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: gabrielacarvalho</title>
    <description>The latest articles on DEV Community by gabrielacarvalho (@gabrielacarvalho).</description>
    <link>https://dev.to/gabrielacarvalho</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889938%2F654fdea5-64ec-4e63-94b6-f03fa70e9117.png</url>
      <title>DEV Community: gabrielacarvalho</title>
      <link>https://dev.to/gabrielacarvalho</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gabrielacarvalho"/>
    <language>en</language>
    <item>
      <title>Java 27 e a criptografia pós-quântica: o que muda para quem programa (e onde a AWS entra nisso)</title>
      <dc:creator>gabrielacarvalho</dc:creator>
      <pubDate>Mon, 28 Sep 2026 18:55:39 +0000</pubDate>
      <link>https://dev.to/gabrielacarvalho/java-27-e-a-criptografia-pos-quantica-o-que-muda-para-quem-programa-e-onde-a-aws-entra-nisso-bmi</link>
      <guid>https://dev.to/gabrielacarvalho/java-27-e-a-criptografia-pos-quantica-o-que-muda-para-quem-programa-e-onde-a-aws-entra-nisso-bmi</guid>
      <description>&lt;p&gt;Um lançamento que olha para daqui a dez anos&lt;br&gt;
No dia 15 de setembro a Oracle lançou o Java 27, e dessa vez a estrela da festa não foi uma sintaxe nova nem um atalho bonito para escrever menos código. O destaque foi segurança, mais especificamente a criptografia pós-quântica.&lt;/p&gt;

&lt;p&gt;Ninguém precisa de um computador quântico hoje para se preocupar com ele. Basta alguém capturar o tráfego criptografado da sua aplicação agora e guardar numa gaveta. Quando a máquina certa existir, é só abrir a gaveta. Esse golpe tem nome, "harvest now, decrypt later", e é justamente ele que o Java 27 começa a dificultar.&lt;/p&gt;

&lt;p&gt;A boa notícia para quem vive de Java é que a proteção chega pela própria plataforma, sem obrigar ninguém a reescrever sistema. E quem roda na AWS encontra um ecossistema que já vem caminhando na mesma direção há algum tempo.&lt;/p&gt;

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

&lt;p&gt;O que chegou de novo&lt;br&gt;
A atração é a JEP 527. Com ela, o Java passa a suportar troca de chaves híbrida direto no TLS 1.3, o protocolo que protege praticamente toda conexão HTTPS. "Híbrida" quer dizer que o handshake combina um algoritmo clássico, que a gente já conhece e confia, com um algoritmo resistente a ataques quânticos. Se um dos dois cair um dia, o outro continua segurando a porta.&lt;/p&gt;

&lt;p&gt;Em volta disso vieram melhorias que todo mundo que já brigou com certificado vai gostar. O suporte a arquivos PEM, aqueles onde moram certificados e chaves privadas, ficou melhor. E o Java Flight Recorder agora consegue esconder dados sensíveis antes que eles saiam da JVM, o que evita aquele susto de descobrir um token dentro de uma gravação de diagnóstico.&lt;/p&gt;

&lt;p&gt;No desempenho, a JEP 534 liga por padrão os cabeçalhos compactos de objetos, o que reduz o consumo de memória sem você mexer em nada. A JEP 537 dá mais um passo na Vector API, que executa a mesma instrução sobre vários dados ao mesmo tempo e ajuda bastante em cargas pesadas como as de inteligência artificial. O G1 vira o coletor de lixo padrão em todos os ambientes, as lazy constants ficaram melhores e a concorrência estruturada chegou à sétima prévia.&lt;/p&gt;

&lt;p&gt;Vale um lembrete honesto: o Java 27 não é uma versão LTS. Ele segue o ciclo semestral e chega seis meses depois do Java 26. A própria Oracle diz que a ideia é levar recursos equivalentes para as versões de suporte longo ao longo do tempo.&lt;/p&gt;

&lt;p&gt;O que muda para quem programa ?&lt;br&gt;
A primeira coisa é que segurança pós-quântica deixa de ser um projeto paralelo. Até pouco tempo, quem queria esse tipo de proteção em Java precisava recorrer a bibliotecas externas, configurar provedores e torcer para tudo conversar bem. Agora o suporte mora na própria plataforma, dentro do TLS que sua aplicação já usa para falar com bancos, APIs e outros serviços.&lt;/p&gt;

&lt;p&gt;Isso pesa muito para quem trabalha com dados de vida longa. Prontuário médico, contrato, dado bancário, segredo industrial: tudo isso precisa continuar protegido daqui a dez ou quinze anos.&lt;/p&gt;

&lt;p&gt;Também tem ganho de rotina. Quem cuida de observabilidade passa a ter um jeito oficial de limpar dados sensíveis das gravações do JFR, o que facilita a vida com LGPD e auditoria. Quem mexe com certificados escreve menos código de cola para ler e gravar PEM.&lt;/p&gt;

&lt;p&gt;E tem o lado do bolso. Cabeçalhos compactos por padrão significam objetos menores, e objetos menores significam mais aplicação cabendo no mesmo pedaço de memória. Em contêiner ou em função serverless, onde memória vira fatura, isso aparece no fim do mês. Quem roda modelos ou processa grandes volumes de números ainda ganha fôlego com a Vector API.&lt;/p&gt;

&lt;p&gt;Onde a AWS entra nessa história ?&lt;br&gt;
O primeiro ponto é o mais simples: você nem precisa sair do ecossistema para usar o Java 27. O Amazon Corretto 27, a distribuição gratuita do OpenJDK mantida pela Amazon, já está disponível para Linux, Windows e macOS, com suporte até abril de 2027. No resumo semanal da AWS, a empresa destaca justamente o TLS híbrido da JEP 527, os cabeçalhos compactos e a limpeza de dados do JFR entre as novidades.&lt;/p&gt;

&lt;p&gt;O segundo ponto é que a AWS está fazendo a mesma migração do lado dela. Segundo a página de criptografia pós-quântica da AWS, serviços como CloudFront, IAM, KMS e S3 já usam troca de chaves híbrida combinando curvas elípticas com ML-KEM. O plano de migração inclui ainda os serviços que terminam TLS para as suas aplicações, como Elastic Load Balancing, API Gateway e CloudFront. Resultado: uma aplicação em Java 27 conversando com esses endpoints tem os dois lados da conversa falando a mesma língua pós-quântica.&lt;/p&gt;

&lt;p&gt;Para quem guarda credenciais, o Secrets Manager estendeu o TLS híbrido para todos os seus clientes, e quem já atualizou para as versões mais recentes não precisa mudar código nem configuração. É um bom exemplo de como a proteção pode chegar quase de graça quando a plataforma e a nuvem andam juntas.&lt;/p&gt;

&lt;p&gt;E a conversa não para no transporte. O AWS KMS já permite criar chaves ML-DSA, o padrão pós-quântico de assinatura digital, usando as mesmas APIs de sempre, como CreateKey, Sign e Verify. Para um time Java, isso abre caminho para assinar documentos, tokens ou artefatos de build com algoritmos resistentes a ataques quânticos, sem montar infraestrutura própria de chaves.&lt;/p&gt;

&lt;p&gt;Tem também o argumento do desempenho, que costuma ser o primeiro medo de quem ouve falar em pós-quântico. A AWS relata na sua página de migração que CloudFront, S3 e KMS não tiveram impacto relevante em latência ou vazão, e que a implementação otimizada de ML-KEM ficou até 2,7 vezes mais rápida em processadores Graviton e 1,8 vez em x86 em relação às versões anteriores. Somando isso aos cabeçalhos compactos do Java 27, rodar em Graviton fica ainda mais interessante para quem quer economizar.&lt;/p&gt;

&lt;p&gt;Um cuidado com Lambda: os runtimes gerenciados de Java historicamente acompanham as versões LTS, então para usar o Java 27 em função serverless o caminho natural é empacotar o Corretto 27 numa imagem de contêiner. Em ECS, EKS ou EC2 basta trocar a imagem base.&lt;/p&gt;

&lt;p&gt;Paran mais conteúdos como este, sigam no instagram, @deployada&lt;/p&gt;

&lt;p&gt;Fontes&lt;br&gt;
Tecnoblog: Java 27 é lançado com foco em criptografia pós-quântica&lt;/p&gt;

&lt;p&gt;AWS: Amazon Corretto 27 is now generally available&lt;/p&gt;

&lt;p&gt;AWS Weekly Roundup (setembro de 2026)&lt;/p&gt;

&lt;p&gt;AWS: Post-Quantum Cryptography&lt;/p&gt;

&lt;p&gt;AWS: Migration to Post-Quantum Cryptography&lt;/p&gt;

&lt;p&gt;AWS Security Blog: AWS post-quantum cryptography migration plan&lt;/p&gt;

&lt;p&gt;AWS: Secrets Manager clients now support hybrid post-quantum TLS&lt;/p&gt;

</description>
      <category>aws</category>
      <category>java</category>
      <category>programming</category>
      <category>security</category>
    </item>
    <item>
      <title>Você já usa IA pra codar. Mas será que tá usando do jeito certo?</title>
      <dc:creator>gabrielacarvalho</dc:creator>
      <pubDate>Tue, 21 Apr 2026 03:55:06 +0000</pubDate>
      <link>https://dev.to/gabrielacarvalho/voce-ja-usa-ia-pra-codar-mas-sera-que-ta-usando-do-jeito-certo-1p08</link>
      <guid>https://dev.to/gabrielacarvalho/voce-ja-usa-ia-pra-codar-mas-sera-que-ta-usando-do-jeito-certo-1p08</guid>
      <description>&lt;h2&gt;
  
  
  Você já usa IA pra codar. Mas será que tá usando do jeito certo?
&lt;/h2&gt;

&lt;p&gt;Extensão instalada, atalho configurado... Você abre o painel lateral, descreve o que precisa, a IA responde. Funciona. É sensacional.&lt;/p&gt;

&lt;p&gt;Masvocê já tentou usar o Claude Code direto no terminal?&lt;/p&gt;

&lt;p&gt;A maioria das devs que usa extensões de IA nunca fez essa transição, até porque a extensão já resolve. O conforto vira um teto invisível.&lt;/p&gt;

&lt;p&gt;O problema é que extensão e CLI não são a mesma coisa com visual diferente. São formas de trabalho diferentes, com resultados diferentes.&lt;/p&gt;

&lt;p&gt;E a diferença não é só estética. Na extensão, você tende a trabalhar de forma reativa: abre um arquivo, seleciona um trecho, faz uma pergunta. A IA responde sobre aquilo. Na CLI, a dinâmica muda. Você descreve uma tarefa, e o Claude Code age sobre o projeto: lê os arquivos que precisar, propõe mudanças, cria testes, refatora. Você não dirige cada passo, você revisa o resultado.&lt;/p&gt;

&lt;p&gt;No terminal você consegue rodar &lt;strong&gt;múltiplas sessões paralelas&lt;/strong&gt;. Uma por módulo, uma por feature, sem misturar contexto. E qualquer pessoa que fez essa transição relata a mesma coisa: os prompts ficam mais precisos, porque a interface CLI te força a pensar antes de escrever.&lt;/p&gt;

&lt;p&gt;Não é sobre abandonar sua IDE. É sobre &lt;em&gt;como&lt;/em&gt; você trabalha com a IA dentro dela.&lt;/p&gt;




&lt;h2&gt;
  
  
  CLI ou extensão ? qual a diferença real?
&lt;/h2&gt;

&lt;p&gt;O Claude Code existe em duas formas: &lt;strong&gt;CLI (terminal nativo)&lt;/strong&gt; e &lt;strong&gt;extensão para VS Code&lt;/strong&gt;. E tem um mal-entendido comum sobre as duas.&lt;/p&gt;

&lt;p&gt;A extensão &lt;strong&gt;não é um produto separado&lt;/strong&gt;. Ela funciona como uma ponte que conecta o CLI ao ambiente visual do VS Code. O CLI está embutido dentro dela. Não são concorrentes: &lt;em&gt;a extensão envolve o CLI&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⌨️ CLI —&amp;gt; Terminal nativo
&lt;/h3&gt;

&lt;p&gt;É a forma original e mais poderosa. Você roda &lt;code&gt;claude&lt;/code&gt; direto no terminal (iTerm, Windows Terminal, terminal do IntelliJ) e toda a interação acontece ali.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Controle total do contexto: edita mensagens anteriores e "rebobina" o estado do código com &lt;code&gt;Double-ESC&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Funcionalidades interativas completas que dependem de TTY: checklists de confirmação, prompts de seleção multi-step;&lt;/li&gt;
&lt;li&gt;Mais leve em recursos do sistema;&lt;/li&gt;
&lt;li&gt;Múltiplas sessões paralelas. Cada uma no seu terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🖥️ Extensão VS Code
&lt;/h3&gt;

&lt;p&gt;Interface gráfica nativa integrada ao VS Code é a forma recomendada pela Anthropic pra quem usa VS Code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Diffs inline com accept/reject visual, parecido com o Copilot;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@-mention&lt;/code&gt; em arquivos com intervalos de linha específicos;&lt;/li&gt;
&lt;li&gt;Histórico de conversas e múltiplas abas;&lt;/li&gt;
&lt;li&gt;Revisão e edição dos planos do Claude antes de aceitar;&lt;/li&gt;
&lt;li&gt;Curva de entrada mais suave.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Detalhe técnico:&lt;/strong&gt; quando você roda o Claude Code dentro do terminal &lt;em&gt;integrado&lt;/em&gt; do VS Code, algumas features que dependem de TTY não funcionam igual a um terminal nativo, como checklists de planos multi-step. Quem usa só a extensão pode nunca ver essas features e achar que são bugs.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Por que forçar o uso do terminal vale a pena?
&lt;/h2&gt;

&lt;p&gt;Se você está acostumada com extensões visuais, o terminal pode parecer um retrocesso. Mas quem fez essa transição relata algo consistente:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Me forcei a usar o CLI e isso realmente me fez pensar com mais clareza sobre o que estou pedindo. **Extensão = conforto. Terminal = uso mais deliberado.&lt;/em&gt;&lt;em&gt;"&lt;/em&gt;&lt;br&gt;
— r&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No terminal, você tende a ser mais precisa. Você pensa antes de escrever. E isso muda a qualidade das respostas.&lt;/p&gt;

&lt;p&gt;Outros benefícios que aparecem na comunidade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Só uso CLI porque me permite rodar múltiplas sessões em paralelo para um ou mais projetos."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Tenho 9 instâncias abertas. Nunca mais uso o app desktop. Cansei do inferno de copiar e colar."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Comecei com a extensão, migrei pro CLI no terminal do Cursor e depois passei a rodar no tmux em servidor Linux."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Sua preferência por usar CLI deve estar alinhada com como você usa o Git. Se usa Git no terminal, vai se sentir natural aqui também."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A maioria das pessoas que migrou do visual pro CLI não voltou.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Por onde começar:&lt;/strong&gt; use o terminal integrado da sua própria IDE. O &lt;code&gt;Alt + F12&lt;/code&gt; do IntelliJ. Você mantém o conforto visual do ambiente, mas já desenvolve o hábito do CLI.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Instalação e configuração passo a passo
&lt;/h2&gt;

&lt;p&gt;Vou mostrar como configurar no IntelliJ IDEA, mas o processo funciona em qualquer IDE com terminal integrado (VSCode, Eclipse, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Node.js 18+ instalado&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Se não tiver, baixe em &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;nodejs.org&lt;/a&gt; ou via &lt;code&gt;nvm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Instale via npm&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirme a instalação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Autenticação&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Na primeira execução, ele abre o navegador pra login com sua conta Anthropic. Após autenticar, a sessão fica salva localmente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Abrindo o terminal no IntelliJ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Alt + F12&lt;/code&gt; (Windows/Linux) ou &lt;code&gt;⌥ F12&lt;/code&gt; (Mac) ou vá em &lt;strong&gt;View → Tool Windows → Terminal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Navegue até o projeto e inicie&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /seu/projeto
claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O Claude Code indexa seu projeto e já está pronto pra receber comandos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;~/projetos/meu-servico-java $&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;claude
&lt;span class="go"&gt;
─────────────────────────────────────
✦ Claude Code v1.x.x
  Analisando projeto... encontrei 47 arquivos Java
  pom.xml detectado → projeto Maven/Spring Boot
─────────────────────────────────────

Como posso ajudar?
&lt;/span&gt;&lt;span class="gp"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;_
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Primeiros comandos na prática
&lt;/h2&gt;

&lt;p&gt;Vou mostrar como uso no dia a dia com Java e Spring Boot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Entendendo um erro de compilação
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Estou&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="nc"&gt;NullPointerException&lt;/span&gt; &lt;span class="n"&gt;na&lt;/span&gt; &lt;span class="n"&gt;linha&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="nc"&gt;PedidoService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nc"&gt;Pode&lt;/span&gt; &lt;span class="n"&gt;analisar&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;

&lt;span class="nl"&gt;Claude:&lt;/span&gt; &lt;span class="nc"&gt;Vou&lt;/span&gt; &lt;span class="n"&gt;verificar&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="nc"&gt;PedidoService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;

&lt;span class="no"&gt;O&lt;/span&gt; &lt;span class="n"&gt;problema&lt;/span&gt; &lt;span class="n"&gt;está&lt;/span&gt; &lt;span class="n"&gt;em&lt;/span&gt; &lt;span class="n"&gt;pedido&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getCliente&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;getNome&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;sem&lt;/span&gt; &lt;span class="n"&gt;verificar&lt;/span&gt; &lt;span class="n"&gt;se&lt;/span&gt; &lt;span class="nf"&gt;getCliente&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="n"&gt;retorna&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;

&lt;span class="nl"&gt;Sugestão:&lt;/span&gt;
&lt;span class="nc"&gt;Optional&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ofNullable&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pedido&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getCliente&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Cliente:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getNome&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;orElse&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Cliente não identificado"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;Quer&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;eu&lt;/span&gt; &lt;span class="n"&gt;aplique&lt;/span&gt; &lt;span class="n"&gt;essa&lt;/span&gt; &lt;span class="n"&gt;correção&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;arquivo&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gerando testes unitários
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Gera&lt;/span&gt; &lt;span class="n"&gt;testes&lt;/span&gt; &lt;span class="nc"&gt;JUnit&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="nc"&gt;Mockito&lt;/span&gt; &lt;span class="n"&gt;pro&lt;/span&gt; &lt;span class="n"&gt;método&lt;/span&gt; &lt;span class="n"&gt;calcularDesconto&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="nc"&gt;DescontoService&lt;/span&gt;

&lt;span class="nl"&gt;Claude:&lt;/span&gt; &lt;span class="nc"&gt;Lendo&lt;/span&gt; &lt;span class="nc"&gt;DescontoService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="n"&gt;suas&lt;/span&gt; &lt;span class="n"&gt;dependências&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="nc"&gt;Criando&lt;/span&gt; &lt;span class="nc"&gt;DescontoServiceTest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nl"&gt;cenários:&lt;/span&gt;

  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;desconto&lt;/span&gt; &lt;span class="n"&gt;aplicado&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;cliente&lt;/span&gt; &lt;span class="no"&gt;VIP&lt;/span&gt;
  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;sem&lt;/span&gt; &lt;span class="n"&gt;desconto&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;cliente&lt;/span&gt; &lt;span class="n"&gt;comum&lt;/span&gt;
  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;lança&lt;/span&gt; &lt;span class="n"&gt;exceção&lt;/span&gt; &lt;span class="n"&gt;quando&lt;/span&gt; &lt;span class="n"&gt;valor&lt;/span&gt; &lt;span class="n"&gt;é&lt;/span&gt; &lt;span class="n"&gt;negativo&lt;/span&gt;
  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;desconto&lt;/span&gt; &lt;span class="n"&gt;máximo&lt;/span&gt; &lt;span class="n"&gt;não&lt;/span&gt; &lt;span class="n"&gt;ultrapassa&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;

&lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="nc"&gt;Arquivo&lt;/span&gt; &lt;span class="nl"&gt;criado:&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;&lt;span class="o"&gt;/.../&lt;/span&gt;&lt;span class="nc"&gt;DescontoServiceTest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Revisando antes de um PR
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gi"&gt;&amp;gt; Revisa as mudanças no branch atual antes de eu abrir o PR.
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="p"&gt;Claude: Analisando diff do branch feature/pagamento-pix...
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;⚠ PagamentoController.java (linha 87):
   Tratamento de exceção muito genérico,pode esconder erros
⚠ PixService.java (linha 134):
   Timeout hardcoded, considera externalizar no application.yml
✓ Cobertura de testes: adequada para os métodos alterados
✓ Nomenclatura: seguindo padrões do projeto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Casos de uso do dia a dia
&lt;/h2&gt;

&lt;p&gt;Esses são os cenários em que o Claude Code realmente brilha numa rotina de backend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧟 &lt;strong&gt;Código legado&lt;/strong&gt; — peça pra Claude explicar um método de 200 linhas sem comentário. Ela lê o arquivo inteiro e resume o que está acontecendo.&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;Geração de testes&lt;/strong&gt; — JUnit + Mockito com happy path e edge cases. Salva muito tempo quando a cobertura está baixa.&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Documentação rápida&lt;/strong&gt; — gera Javadoc em métodos sem documentação. Útil antes de compartilhar código com o time.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Refatoração&lt;/strong&gt; — peça pra extrair um método, aplicar um design pattern ou reduzir duplicação. Ela propõe, você aprova.&lt;/li&gt;
&lt;li&gt;🐛 &lt;strong&gt;Debug assistido&lt;/strong&gt; — cole a stack trace e peça análise. Ela cruza com o código do projeto pra apontar a causa raiz.&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Config e boilerplate&lt;/strong&gt; — beans Spring, DTOs, mappers. As partes chatas que consomem tempo sem agregar raciocínio.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Dica de fluxo:&lt;/strong&gt; mantenha o Claude Code aberto em uma aba do terminal integrado do IntelliJ e o código na outra. Você nunca precisa minimizar nada.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Limitações que ninguém te conta
&lt;/h2&gt;

&lt;p&gt;Seria desonesto não falar das limitações. Saber quando &lt;em&gt;não&lt;/em&gt; usar o Claude Code é tão importante quanto saber quando usar.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📦 Projetos muito grandes:&lt;/strong&gt; o contexto tem limite. Seja específica. Aponte o arquivo ou módulo que quer analisar em vez de pedir uma análise geral.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💰 Custo de tokens:&lt;/strong&gt; Claude Code usa a API da Anthropic, cobrada por token. Acompanhe seu consumo no painel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🌐 Precisa de internet:&lt;/strong&gt; diferente de modelos locais (LM Studio, Ollama), depende da API. Offline não funciona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔒 Código sensível:&lt;/strong&gt; cuidado com dados confidenciais. Cheque a política da sua empresa antes de enviar código pra API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🤔 Quando a extensão ainda ganha:&lt;/strong&gt; pra conversas exploratórias e conceituais, a interface visual ainda é mais confortável.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;✅ Sempre revise o diff:&lt;/strong&gt; Claude propõe mudanças e você aprova. Nunca aceite sem ler. Código correto em isolamento pode não funcionar no contexto do seu sistema.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Muda o onde, muda o como
&lt;/h2&gt;

&lt;p&gt;Usar IA pela extensão funciona. Mas quando você coloca ela dentro do terminal, dentro do seu fluxo, sem atrito, a relação muda. Você deixa de usar IA como ferramenta de consulta e começa a usar como parceira de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Não é sobre substituição. É sobre &lt;strong&gt;reduzir a resistência&lt;/strong&gt; entre a dúvida e a resposta, entre o erro e a solução.&lt;/p&gt;

&lt;p&gt;Experimenta. Abre o terminal do IntelliJ agora e digita &lt;code&gt;claude&lt;/code&gt;. E me conta como foi 💜&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Me segue no Instagram e LinkedIn: *&lt;/em&gt;&lt;a href="https://www.linkedin.com/in/mgcarvalho/" rel="noopener noreferrer"&gt;@deployada&lt;/a&gt;** · Conteúdo de tech pra mulheres que codam 💜*&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>terminal</category>
      <category>ia</category>
      <category>desenvolvimento</category>
    </item>
    <item>
      <title>Vercel Hackeada: A história por trás do ataque</title>
      <dc:creator>gabrielacarvalho</dc:creator>
      <pubDate>Tue, 21 Apr 2026 02:37:45 +0000</pubDate>
      <link>https://dev.to/gabrielacarvalho/vercel-hackeada-a-historia-por-tras-do-ataque-106</link>
      <guid>https://dev.to/gabrielacarvalho/vercel-hackeada-a-historia-por-tras-do-ataque-106</guid>
      <description>&lt;p&gt;🔍 O que aconteceu ?&lt;/p&gt;

&lt;p&gt;Um funcionário da Vercel usava uma ferramenta de IA chamada Context.ai com sua conta corporativa do Google Workspace.&lt;/p&gt;

&lt;p&gt;Em fevereiro de 2026, um funcionário da Context.ai foi infectado por um infostealer chamado Lumma, que foi baixado junto com um script malicioso de jogo. Isso comprometeu as credenciais OAuth da ferramenta.&lt;/p&gt;

&lt;p&gt;O atacante usou esse acesso em três pontos principais:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tomar conta do Google Workspace do funcionário da Vercel;
Escalar privilégios dentro dos sistemas internos;
Acessar variáveis de ambiente não marcadas como sensíveis.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A Vercel confirmou que variáveis marcadas como sensíveis estavam criptografadas e não foram acessadas. Mas as demais estavam expostas, e foi por aí que o atacante escalou ainda mais o acesso.&lt;/p&gt;

&lt;p&gt;A empresa classificou o atacante como altamente sofisticado, com "velocidade operacional e conhecimento detalhado dos sistemas da Vercel". Estão trabalhando com a Mandiant na resposta ao incidente.&lt;/p&gt;

&lt;p&gt;A boa notícia é que a supply chain foi preservada. O CEO Guillermo Rauch confirmou que Next.js, Turbopack e os projetos open source da Vercel não foram comprometidos.&lt;/p&gt;

&lt;p&gt;🧠 Pontos que deveriam ter atenção:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;O vetor foi uma ferramenta de IA com acesso amplo demais&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Um funcionário autorizou o Context.ai com permissões "Allow All" no Google Workspace corporativo. Isso não deveria ser possível, e se for possível no seu ambiente, é um risco real agora.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OAuth mal configurado é uma porta aberta&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Quantas ferramentas têm OAuth ativo no Google Workspace, GitHub ou Slack da sua empresa hoje? Cada uma dessas integrações é uma superfície de ataque em potencial.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;"Não sensível" não significa "sem risco"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A Vercel tem criptografia para variáveis marcadas como sensíveis. O problema foi exatamente as que não estavam marcadas. O atacante usou isso para escalar o acesso progressivamente.&lt;/p&gt;

&lt;p&gt;⚠️ É necessário tratar toda variável de ambiente como sensível por padrão.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A cadeia de ataque começou com um script de jogo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Um funcionário de uma empresa terceira baixou um "auto-farm" de Roblox. Isso infectou a máquina com um infostealer. Que comprometeu credenciais OAuth. Que deu acesso a uma empresa completamente diferente. Esse é o supply chain attack na vida real.&lt;/p&gt;

&lt;p&gt;🛡️ Como se prevenir ?&lt;/p&gt;

&lt;p&gt;→ Audite integrações OAuth: Revogue tudo que não está em uso ativo.&lt;/p&gt;

&lt;p&gt;→ Nunca autorize "Allow All" : Em ferramentas de terceiros no ambiente corporativo. Princípio do menor privilégio sempre.&lt;/p&gt;

&lt;p&gt;→ Classifique ativamente seus secrets: Não deixe o padrão decidir por você.&lt;/p&gt;

&lt;p&gt;→ Treine seu time sobre infostealers: A origem do ataque foi um download malicioso num computador pessoal/corporativo de um funcionário de uma empresa parceira.&lt;/p&gt;

&lt;p&gt;→ Configure alertas de acesso anômalo: No seu stack de observabilidade (Datadog, Splunk, CloudWatch).&lt;/p&gt;

&lt;p&gt;→ Tenha um processo periódico de rotação de secrets — não espere um incidente para criar esse hábito.&lt;/p&gt;

&lt;p&gt;Segurança é sobre os hábitos que você constrói antes.&lt;/p&gt;

&lt;p&gt;📌 Fontes:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Boletim oficial da Vercel (atualizado) → &lt;a href="https://vercel.com/kb/bulletin/vercel-april-2026-security-incident" rel="noopener noreferrer"&gt;https://vercel.com/kb/bulletin/vercel-april-2026-security-incident&lt;/a&gt;&lt;br&gt;
BleepingComputer → &lt;a href="https://www.bleepingcomputer.com/news/security/vercel-confirms-breach-as-hackers-claim-to-be-selling-stolen-data/" rel="noopener noreferrer"&gt;https://www.bleepingcomputer.com/news/security/vercel-confirms-breach-as-hackers-claim-to-be-selling-stolen-data/&lt;/a&gt;&lt;br&gt;
The Hacker News → &lt;a href="https://thehackernews.com/2026/04/vercel-breach-tied-to-context-ai-hack.html" rel="noopener noreferrer"&gt;https://thehackernews.com/2026/04/vercel-breach-tied-to-context-ai-hack.html&lt;/a&gt;&lt;br&gt;
InfoStealers / Hudson Rock → &lt;a href="https://www.infostealers.com/article/breaking-vercel-breach-linked-to-infostealer-infection-at-context-ai/" rel="noopener noreferrer"&gt;https://www.infostealers.com/article/breaking-vercel-breach-linked-to-infostealer-infection-at-context-ai/&lt;/a&gt;&lt;br&gt;
Context.ai security bulletin (via The Hacker News)&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  segurança #devops #backend #cloud #vercel #supplychainattack #oauth #infosec #developers&lt;br&gt;
&lt;/h1&gt;

</description>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>news</category>
      <category>security</category>
    </item>
  </channel>
</rss>
