<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/feed/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
                        <id>https://eu.gabrielsv.com/atom.xml</id>
                                <link href="https://eu.gabrielsv.com/atom.xml" rel="self"></link>
                                <title><![CDATA[Gabriel Silva — Blog]]></title>
                    
                                <subtitle>Ensaios, notas e craft sobre desenvolvimento web por Gabriel Henrique da Silva.</subtitle>
                                                    <updated>2026-05-23T02:17:53+00:00</updated>
                        <entry>
            <title><![CDATA[PHP sem framework em 2026: arquitetura, código e o que você assume quando dispensa o Laravel]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/php-sem-framework-em-2026" />
            <id>https://eu.gabrielsv.com/17</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Framework não é resposta automática pra todo projeto. Veja quando PHP sem framework ainda é a melhor escolha técnica em 2026, com quatro cenários completos: webhook do Mercado Pago, API REST com PostgreSQL, importação de CSV via CLI e formulário de contato com proteção CSRF e envio via SMTP.]]>
            </summary>
                                    <updated>2026-05-23T02:17:53+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Observabilidade em Node e NestJS na prática: logs, métricas e traces sem encheção de linguiça]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/observabilidade-node-nestjs-logs-metricas-traces" />
            <id>https://eu.gabrielsv.com/16</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Rodar código em produção é uma coisa; entender o que ele está fazendo é outra. Veja como montar observabilidade real em Node/NestJS: logs estruturados com Pino, métricas com Prometheus e tracing com OpenTelemetry, do zero ao painel que importa.]]>
            </summary>
                                    <updated>2026-05-20T01:28:36+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Guia Completo de Filas e Jobs Assíncronos com BullMQ e Redis no NestJS ]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/filas-bullmq-redis-nestjs" />
            <id>https://eu.gabrielsv.com/15</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Tirar trabalho pesado do caminho da requisição é só o começo. Veja como usar filas com BullMQ e Redis no NestJS de verdade: ciclo de vida do job, retry inteligente, idempotência, concorrência com rate limit e desligamento seguro.]]>
            </summary>
                                    <updated>2026-05-19T02:58:08+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Node.js em 2026: novas APIs nativas, ESM e Test Runner integrado]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/nodejs-2026-novidades-fetch-test-runner-esm" />
            <id>https://eu.gabrielsv.com/13</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[
Se você acompanha o mundo do JavaScript, sabe que o Node.js está em constante evolução. Lá atrás, ele trouxe o poder do JavaScript para o servidor. Agora, em 2026, está cada vez mais próximo do naveg...]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Next.js: Server ou Client? Acabou a confusão]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/next-js-server-client-components" />
            <id>https://eu.gabrielsv.com/12</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Se você ainda se confunde entre Server e Client Components no Next.js, esse guia é pra você. Entenda de forma prática quando usar cada um, os erros mais comuns, como evitar enviar JavaScript desnecessário e como extrair o máximo de performance do framework.]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Socket.io no NestJS: Tempo real sem código espaguete]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/socket-io-no-nestjs-tempo-real-sem-codigo-espaguete" />
            <id>https://eu.gabrielsv.com/10</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Implementar WebSockets no Node.js puro quase sempre resulta em código espaguete difícil de manter. Veja como o NestJS resolve isso usando Gateways para organizar a comunicação em tempo real (como chats e notificações), mantendo seu backend limpo, testável e escalável, exatamente como uma boa arquitetura deve ser.]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Refatoração que vale a pena vs refatoração que é perda de tempo]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/refatoracao-que-vale-a-pena-vs-refatoracao-que-e-perda-de-tempo" />
            <id>https://eu.gabrielsv.com/9</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Nem toda refatoração vale a pena e nem todo código feio precisa ser reescrito. Descubra quando gastar tempo refatorando e quando focar em entregar valor, sem checklist complicada ou teoria acadêmica.]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Clean Code na prática: O que realmente faz diferença no dia a dia]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/clean-code-na-pratica-o-que-realmente-faz-diferenca-no-dia-a-dia" />
            <id>https://eu.gabrielsv.com/8</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Chega de teoria acadêmica. Aprenda como o Clean Code melhora a manutenibilidade e sua produtividade com nomes honestos, Early Return e refatoração na prática]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Stateless vs Stateful: Qual a melhor arquitetura de autenticação para o seu backend?]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/stateless-vs-stateful-qual-a-melhor-arquitetura-de-autenticacao-para-o-seu-backend" />
            <id>https://eu.gabrielsv.com/7</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Uma comparação técnica entre autenticação Stateful (Sessions) e Stateless (JWT), explicando fluxo, trade-offs, escalabilidade, segurança e exemplos práticos em Express para ajudar na decisão arquitetural]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Por que o PHP não morreu (e o Laravel é a prova disso)]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/por-que-o-php-nao-morreu" />
            <id>https://eu.gabrielsv.com/6</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Todo ano decretam a morte do PHP, mas a realidade é outra. Neste artigo, você entende por que o PHP moderno (8+) é rápido, tipado, seguro e como o Laravel elevou a produtividade e a experiência de desenvolvimento a outro nível em 2025]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[TypeScript: O mínimo que você precisa saber]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/typescript-basico-para-comecar" />
            <id>https://eu.gabrielsv.com/5</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[O TypeScript não precisa ser complicado. Com apenas o básico, você já pode evitar os erros comuns do JavaScript e escrever código mais seguro e fácil de manter. Aprenda tipos básicos, inferência, arrays, objetos, funções e como usar o TypeScript no seu dia a dia]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Spring Boot: O básico que você esqueceu (ou nunca aprendeu direito)]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/spring-boot-guia-simples-api-rest" />
            <id>https://eu.gabrielsv.com/4</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Um guia direto e prático para quem está começando ou voltando ao Spring Boot. Veja como criar uma API REST funcional usando Java, Maven, H2 e o básico de controller, service, repository e entity sem enrolação, com exemplos reais.]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[CSS Grid vs Flexbox: Quando usar cada um (guia honesto)]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/grid-ou-flexbox-quando-usar" />
            <id>https://eu.gabrielsv.com/3</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Flexbox ou Grid? Nesta explicação direta e sem enrolação, você aprende exatamente quando usar cada um, com exemplos reais, regras simples e comparações que facilitam seu dia a dia no CSS]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Adeus XAMPP: Subindo um WordPress local com Docker em 5 minutos]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/wordpress-docker-compose" />
            <id>https://eu.gabrielsv.com/2</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Um guia prático (e real) mostrando como rodar um ambiente WordPress completo usando Docker em segundos, sem depender de XAMPP, WampServer ou qualquer gambiarra local]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[HTML para E-mail: Por que ainda usamos &lt;table> em 2025?]]></title>
            <link rel="alternate" href="https://eu.gabrielsv.com/blog/html-email-table-2025" />
            <id>https://eu.gabrielsv.com/1</id>
            <author>
                <name><![CDATA[Gabriel]]></name>
                <email><![CDATA[gabriel04gh1.gh@gmail.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[HTML pra e-mail é um universo paralelo onde nada evoluiu. Aqui eu conto por que table ainda manda em 2025 e mostro exemplos de como realmente montar layouts que não quebram.]]>
            </summary>
                                    <updated>2026-05-18T18:02:41+00:00</updated>
        </entry>
    </feed>
