/blog

  • NGINX vs Apache: qual escolher?

    Se você já precisou configurar um servidor web, com certeza esbarrou nesses dois: Apache e NGINX.

    O Apache é o veterano. Está aí desde 1995, tem uma penca de módulos, roda bem com PHP, Python, Ruby… e permite configurar regras direto em cada pasta com o arquivo .htaccess. Porém, por muito tempo, ele criava um processo ou thread para cada requisição, o que complicava a escalabilidade, especialmente em ambientes de alta carga. Isso melhorou com o módulo mpm_event, que permite uma gestão mais eficiente das conexões, principalmente quando combinado com PHP-FPM. Porém, essa configuração precisa ser feita manualmente para tirar o máximo de proveito…

    Já o NGINX (lê-se “engine-x”) nasceu em 2004 com uma missão clara: lidar com milhares de conexões simultâneas. Ele usa uma arquitetura assíncrona, é leve, rápido e excelente pra servir arquivos estáticos, fazer proxy reverso ou balancear carga.

    Na prática, o NGINX costuma ser mais performático. O Apache ganha em flexibilidade e compatibilidade com sistemas legados. Muitos projetos usam os dois juntos, num modelo hibrido com NGINX na frente, como proxy reverso, para o Apache, que processa a aplicação.

    No fim, a melhor escolha depende do seu cenário, do projeto… e do que você já domina.

  • A minha jornada com o NetView: de um script PHP a um sistema Node.js

    Todo dev tem aquele projeto que cresce junto com ele. O meu é o NetView, um sistema de monitoramento de rede que nasceu no início de 2023 pra resolver uma dor bem prática onde eu trabalho, e hoje virou um projeto completo com dashboard em tempo real, CLI, integração com WhatsApp e uma arquitetura modular em Node.js.

    Esse texto é um relato técnico (e pessoal) dessa jornada: de um script PHP direto ao ponto até uma aplicação extensível e em produção real. O que aprendi no caminho, os erros que corrigi e as soluções que construí estão aqui.

    💡 Todo o código, de todas as versões, está disponível no GitHub

    O começo de tudo: Vigianet

    O NetView começou em 2023 com outro nome: VigiaNet. A ideia era simples: ter uma página que mostrasse, de forma visual, o status dos principais equipamentos de rede do hospital: servidores, impressoras, dvr’s, roteadores, etc.

    A stack era bem direta:

    • index.html com Vue.js
    • Um setInterval que fazia requisição com Axios a cada 20 segundos
    • Um devices.php que fazia ping nos dispositivos e devolvia um JSON

    Mas o detalhe está na lógica. O backend PHP:

    • Mantinha uma lista de dispositivos, com nome, IP e se deveria ser monitorado 24h ou só em horário comercial.
    • Avaliava a regra de horário antes de tentar o ping.
    • Executava ping -n 1 -w 1 (Windows) via exec(), interpretava o retorno e montava um JSON com os status.
    • Dispositivos fora de horário eram marcados como tal, sem tentar ping.

    O frontend Vue.js fazia polling, processava o JSON e criava cards coloridos (verde, vermelho, cinza). Tinha até animação blink pro status offline.

    Limitações? Várias:

    • Latência de até 20s entre a queda e o aviso visual.
    • Nenhum alerta proativo.
    • Tráfego constante, mesmo sem mudanças.

    Mas, pra um projeto que nasceu como um quebra galho, era mais do que funcional. E foi minha porta de entrada pra entender monitoramento de rede.

    A primeira virada: Node.js + WebSocket

    Com o tempo, surgiu a necessidade de alertas automáticos, via WhatsApp, quando um dispositivo caía. Isso motivou a primeira grande reescrita: sai PHP, entra Node.js, WebSocket e alertas proativos.

    Nascia o NetView v2.

    A arquitetura ainda era monolítica:

    • netview_server.js era o único arquivo responsável por:
      • Iniciar servidor WebSocket
      • Ler config/devices.json
      • Executar pings periodicamente
      • Detectar mudanças de status
      • Enviar mensagens via WhatsApp (usando whatsapp-web.js)

    O frontend se conectava via WebSocket e recebia atualizações em tempo real, nada mais de polling. O dashboard era dinâmico e imediato. E foi completamente reformulado.

    Mas a v2 ainda tinha limitações:

    • Tudo centralizado num único arquivo.
    • Configurações sensíveis hardcoded.
    • Script auxiliar (achagrupo.js) pra descobrir o ID do grupo do WhatsApp.

    Funcionava. Mas adicionar um dispositivo significava editar código manualmente.

    Arquitetura de verdade: v3

    A partir da versão v3, veio a grande virada arquitetural. O código ficou mais limpo, testável, modular e o NetView virou um sistema de verdade.

    Organização por responsabilidades

    A lógica foi quebrada em módulos:

    NetViewServer: orquestrador de tudo

    PingService: cuida dos pings com backoff exponencial

    DeviceStateManager: gerencia o status e histórico

    NotificationManager: decide quando notificar

    WhatsAppClient: integra com o WhatsApp

    ConfigManager: observa e carrega a config

    Essa separação facilita testes, debugging e extensões futuras.

    Ping mais inteligente

    O ping agora tem:

    • Tentativas com backoff exponencial
    • Timeout configurável
    • Compatibilidade com Windows e Linux
    • Análise de perda de pacotes
    • Concorrência com Promise.all

    CLI Interativo

    Criei um CLI interativo com readline e chalk que permite configurar tudo sem abrir o código:

    $ node server.js --cli

    device-add → adicionar novo dispositivo

    wa-groups → listar grupos do WhatsApp

    wa-set → selecionar o grupo para notificações

    logs → ver as ultimas 20 linhas do arquivo de log

    Por que não usar o Zabbix?

    Desde que criei o NetView, vez ou outra me perguntam: “Mas o Zabbix já não faz tudo isso?”

    Sim, o Zabbix faz muito mais do que o NetView jamais pretendeu fazer. E tá tudo bem! O NetView nunca foi pensado para competir com ferramentas estabelecidas, ele nasceu para resolver uma dor específica de forma rápida e simples.

    CaracterísticaZabbixNetView
    ComplexidadeAltaBaixa
    Setup inicialHorasMinutos
    InterfaceCompleta, mas densaSimples e direta
    AlertasConfiguráveis, múltiplos canaisWhatsApp integrado, basta conectar
    ExtensibilidadeTemplates, plugins, APIsNo código
    Ideal paraAmbientes que precisam de monitoramento robusto, relatórios, SLAQuem quer algo funcionando rápido, com alertas diretos

    O NetView é mais como um “canivete suíço” para quem precisa de algo funcionando hoje, sem treinamento da equipe ou semanas de configuração. É o projeto que você monta numa tarde e deixa rodando.

    Se sua infraestrutura é crítica e você tem tempo para fazer direito, use Zabbix. Se você só quer parar de ficar perguntando “a impressora da recepção tá funcionando?”, o NetView resolve.

    Mais que um projeto, uma trilha de aprendizado

    O NetView é um reflexo da minha trajetória como dev. Começou resolvendo um problema com um script PHP. Depois virou playground com Node.js. Hoje é um sistema estável, modular, fácil de manter, e cheio de lições no meio do caminho.

    É por isso que eu gosto tanto dele. Porque ele cresceu comigo.

    O que realmente aprendi

    Esse projeto me ensinou muita coisa na prática, não só sobre código, mas sobre evolução de software:

    ✅ Como organizar sistemas em módulos coesos
    ✅ CLI com readline e UX de terminal
    ✅ Lógica de retry com backoff exponencial
    ✅ WebSocket bidirecional
    ✅ Integração com APIs não convencionais (WhatsApp Web)
    ✅ Logs com Winston, histórico com JSONL
    ✅ Hot reload de arquivos de config
    ✅ Controle de concorrência com Promises

    Mas principalmente: que software bom é software que resolve problemas reais. O NetView não é revolucionário. Não vai mudar o mundo. Mas toda vez que chego e vejo os vários cards no dashboard, sei que aquele script PHP simples de 2023 virou algo útil de verdade.

    E talvez seja isso que faz a diferença: não a complexidade do código, mas o problema que ele resolve.

  • Imagens contemplativas por Noah Kalina

    Noah Kalina tá subindo vídeos no estilo long photograph no YouTube — cenas calmas de natureza, contemplativas. 4K. Sem IA. “Dá o play e vai viver.”

  • MoodFilme v2: mais ligeiro e certeiro

    O MoodFilme continua simples — e é assim que eu prefiro. Mas por trás, mudei tudo. Refiz a estrutura, refatorei o código, deixei mais leve e fácil de manter.

    A interface é a mesma. Fiz só pequenos ajustes. O foco foi deixar a base sólida o suficiente pra poder continuar evoluindo o projeto sem tropeçar em código velho.

    O que mudou

    • Recomendações: o algoritmo agora pensa como aquele amigo que manja de cinema. Vai dos bem avaliados aos populares e, se precisar, desenterra umas pérolas escondidas.
    • Backend: o backend é em Node.js, hospedado na Vercel. Mais velocidade e menos travas.
    • Frontend: reorganizei tudo em módulos: interface, requisições, estado. O código ficou mais limpo e modular, sem acúmulo de gambiarra.
    • Novos moods: Misterioso, Aventureiro, Relax, Contemplativo e Inspirador.
    • Outras pequenas melhorias: Agora dá pra acessar um humor direto pela URL (/sombrio, por exemplo), e o site dá um alô diferente dependendo do horário — só pra deixar mais pessoal.

    E o que vem por aí

    Com essa base nova, algumas ideias que já estão no radar:

    • Mais moods (manda sua sugestão!)
    • Salvar recomendações que você gostou
    • Compartilhar recomendações por link direto

    Pra fechar

    O MoodFilme é um projeto pessoal. Não tem anúncio, não rastreia ninguém. Só existe pra te ajudar a achar um filme que combine com o seu momento.

    Testou e curtiu? Fala comigo no @vitor.fcp. Leio tudo.

  • Oracle Always Free: VMs gratuitas e estáveis 24/7

    Descobri há um tempo o Always Free da Oracle e, olha… é difícil ignorar. Eles oferecem recursos de nuvem de graça e por tempo ilimitado.

    São dois tipos de instâncias:

    • ARM (Ampere A1): você tem 4 OCPUs e 24 GB de RAM no total. Pode usar tudo em uma única VM ou dividir em até 4 menores.
    • AMD (E2.1.Micro): dá pra criar até 2 VMs AMD, cada uma com 1 OCPU e 1 GB de RAM.

    Além disso, você ainda tem 200 GB de armazenamento disponíveis.
    Um detalhe importante: todos esses recursos só podem ser criados na home region que você escolhe quando cria sua conta. E essa escolha não dá pra mudar depois, então vale pensar bem antes de confirmar.

    No meu caso, nunca consegui criar instâncias ARM, porque vivem esgotadas na região que escolhi. Mas tudo bem: meu foco sempre foi na AMD mesmo, e têm dado conta do recado. Já rodei uns projetinhos meus por lá, sisteminhas web, bot de zap, etc. Tudo funcionando 24/7, sem pagar um centavo.

    O painel da Oracle é meio chatinho no começo, tem uma curva de aprendizado, mas nada que alguns tutoriais e tentativa-e-erro não resolvam. Depois que pega o jeito, vira uma baita opção pra manter serviços no ar de forma estável e gratuita.

    Se você curte brincar com infra ou quer subir algo leve sem gastar nada, vale a pena testar.

  • Nostálgico 😅

  • Chega de pessimismo

    “Sempre foi assim, não vai mudar” essa frase tem um quê de conformismo que me incomoda. Hoje, por acaso, estava pensando nisso e, coincidentemente, acabei encontrando um vídeo do Luíde (tá aí embaixo) em que ele fala justamente sobre por que se recusa a ser pessimista. Me identifiquei bastante com o que ele disse.

    O pessimismo/cinismo parece ter dominado as redes sociais, e isso, entre outros fatores, fez meu interesse por Instagram e afins diminuir. Não que minha saída vá fazer diferença no mundo, mas ando preferindo focar mais na minha vida. Tentar estar presente. Lutar contra os devaneios que sempre aparecem.

    Enfim, assiste ao vídeo. Vale a pena a reflexão. Além desse novo canal, o Luíde também tem um projeto mais antigo, um podcast chamado Rebobinado, onde já abordou vários temas parecidos com os que tem explorado agora.

  • Flow

    Flow (Gints Zilbalodis, 2024)

  • Oi, tudo bem?

  • Quero caminhar com vocês pelo caminho da misericórdia e da ternura de Deus.
    – Papa Francisco
    17/12/36 – 21/04/25