<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Vitor Cavalcante</title>
	<atom:link href="https://vitorcavalcante.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://vitorcavalcante.com</link>
	<description>vitorcavalcante.com</description>
	<lastBuildDate>Fri, 02 Jan 2026 15:18:12 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://vitorcavalcante.com/wp-content/uploads/2025/02/471577054_1637592100513039_2190481651819413568_n-150x150.jpg</url>
	<title>Vitor Cavalcante</title>
	<link>https://vitorcavalcante.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">242007555</site>	<item>
		<title></title>
		<link>https://vitorcavalcante.com/2026/01/371/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=371</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Fri, 02 Jan 2026 15:18:09 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=371</guid>

					<description><![CDATA[<p>[…] deveríamos ter contato com a experiência de estar vivos para além dos aparatos tecnológicos que podemos inventar. A ideia da economia, por exemplo, essa coisa invisível, a não ser por aquele emblema de cifrão. Pode ser uma ficção afirmar que se a economia não estiver funcionando plenamente nós morremos. Nós poderíamos colocar todos os [&#8230;]</p>
<p>The post <a href="https://vitorcavalcante.com/2026/01/371/"></a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>[…] deveríamos ter contato com a experiência de estar vivos para além dos aparatos tecnológicos que podemos inventar. A ideia da economia, por exemplo, essa coisa invisível, a não ser por aquele emblema de cifrão. Pode ser uma ficção afirmar que se a economia não estiver funcionando plenamente nós morremos. Nós poderíamos colocar todos os dirigentes do Banco Central em um cofre gigante e deixá-los vivendo lá, com a economia deles. Ninguém come dinheiro.</p>
</blockquote>



<p>— Ailton Krenak,&nbsp;A vida não é útil.</p>



<p></p><p>The post <a href="https://vitorcavalcante.com/2026/01/371/"></a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">371</post-id>	</item>
		<item>
		<title>Mercado aquecido?</title>
		<link>https://vitorcavalcante.com/2025/08/mercado-aquecido/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mercado-aquecido</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 19:14:37 +0000</pubDate>
				<category><![CDATA[trabalho]]></category>
		<category><![CDATA[JobSearch]]></category>
		<category><![CDATA[MercadoDeTI]]></category>
		<category><![CDATA[OpenToWork]]></category>
		<category><![CDATA[Organização]]></category>
		<category><![CDATA[Resiliencia]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=361</guid>

					<description><![CDATA[<p>Todo mundo diz que o mercado de ti tá aquecido (ondee!?) Hoje chegou mais um daqueles e-mails padrão de processo seletivo: “Agradecemos sua participação… blá blá blá…” Engraçado porque eu nem lembrava de ter me candidatado nessa vaga específica (das tantas que já mandei, normal esquecer uma ou outra, né?) Coincidência que ontem mesmo resolvi [&#8230;]</p>
<p>The post <a href="https://vitorcavalcante.com/2025/08/mercado-aquecido/">Mercado aquecido?</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Todo mundo diz que o mercado de ti tá aquecido (ondee!?)</p>



<p>Hoje chegou mais um daqueles e-mails padrão de processo seletivo:</p>



<p>“Agradecemos sua participação… blá blá blá…”</p>



<p>Engraçado porque eu nem lembrava de ter me candidatado nessa vaga específica (das tantas que já mandei, normal esquecer uma ou outra, né?)</p>



<p>Coincidência que ontem mesmo resolvi criar uma planilha pra organizar tudo: vaga, empresa, data, link… só pra não me perder. E o timing foi perfeito: a negativa chegou e já ganhou seu espacinho na planilha <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f923.png" alt="🤣" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>No fim, até um não virou dado organizado.</p>



<p>Melhor que nada.</p>



<p></p><p>The post <a href="https://vitorcavalcante.com/2025/08/mercado-aquecido/">Mercado aquecido?</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">361</post-id>	</item>
		<item>
		<title>A mulher da casa abandonada</title>
		<link>https://vitorcavalcante.com/2025/08/a-mulher-da-casa-abandonada/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-mulher-da-casa-abandonada</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Sun, 17 Aug 2025 18:37:11 +0000</pubDate>
				<category><![CDATA[documentários]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=349</guid>

					<description><![CDATA[<p>Assisti ao documentário &#8220;A mulher da casa abandonada&#8220;, que estreou na última quarta-feira, 13. Como não havia acompanhado o podcast de 2022 que deu origem ao documentário (de mesmo nome), assisti sem conhecer nada do caso. O caso envolve Margarida Bonetti, uma brasileira acusada de manter uma mulher em situação análoga à escravidão nos Estados [&#8230;]</p>
<p>The post <a href="https://vitorcavalcante.com/2025/08/a-mulher-da-casa-abandonada/">A mulher da casa abandonada</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Assisti ao documentário &#8220;<a href="https://www.primevideo.com/dp/amzn1.dv.gti.1b2129aa-d467-41de-ac97-122cefcad464/ref=atv_nb_lcl_pt_BR?autoplay=0" target="_blank" rel="noopener" title="">A mulher da casa abandonada</a>&#8220;, que estreou na última quarta-feira, 13. Como não havia acompanhado o podcast de 2022 que deu origem ao documentário (de mesmo nome), assisti sem conhecer nada do caso. O caso envolve Margarida Bonetti, uma brasileira acusada de manter uma mulher em situação análoga à escravidão nos Estados Unidos. </p>



<p>Fiquei simplesmente incrédulo com tudo, enojado com a forma como a própria Margarida Bonetti fala sobre o caso, negando tudo e acusando sua vítima de mentirosa. Ela claramente subestima tanto quem entende minimamente do caso quanto a própria vítima. Mas não é de se esperar muito&#8230; esse tipo de comportamento, essa fala altiva, é típico da elite branca.</p>



<p>Estou aqui agora ouvindo o podcast, no episódio 2. Ele conta muito mais do que o documentário inteiro. Ainda assim, o documentário tem seu valor e vale assistir.</p><p>The post <a href="https://vitorcavalcante.com/2025/08/a-mulher-da-casa-abandonada/">A mulher da casa abandonada</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">349</post-id>	</item>
		<item>
		<title></title>
		<link>https://vitorcavalcante.com/2025/08/346/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=346</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Sun, 17 Aug 2025 18:18:42 +0000</pubDate>
				<category><![CDATA[filmes]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=346</guid>

					<description><![CDATA[<p>Sem limites (Neil Burger, 2011)</p>
<p>The post <a href="https://vitorcavalcante.com/2025/08/346/"></a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="427" src="https://vitorcavalcante.com/wp-content/uploads/2025/08/MV5BNDY1ZjI2MjItNGRiYy00NzA1LTg5YTUtMjA0OWFiYTYyOTk4XkEyXkFqcGc@._V1_-1024x427.jpg" alt="" class="wp-image-347" style="aspect-ratio:16/9;object-fit:cover" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/08/MV5BNDY1ZjI2MjItNGRiYy00NzA1LTg5YTUtMjA0OWFiYTYyOTk4XkEyXkFqcGc@._V1_-1024x427.jpg 1024w, https://vitorcavalcante.com/wp-content/uploads/2025/08/MV5BNDY1ZjI2MjItNGRiYy00NzA1LTg5YTUtMjA0OWFiYTYyOTk4XkEyXkFqcGc@._V1_-300x125.jpg 300w, https://vitorcavalcante.com/wp-content/uploads/2025/08/MV5BNDY1ZjI2MjItNGRiYy00NzA1LTg5YTUtMjA0OWFiYTYyOTk4XkEyXkFqcGc@._V1_-768x320.jpg 768w, https://vitorcavalcante.com/wp-content/uploads/2025/08/MV5BNDY1ZjI2MjItNGRiYy00NzA1LTg5YTUtMjA0OWFiYTYyOTk4XkEyXkFqcGc@._V1_.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><em>Sem limites</em> (Neil Burger, 2011)</p>



<p></p><p>The post <a href="https://vitorcavalcante.com/2025/08/346/"></a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">346</post-id>	</item>
		<item>
		<title></title>
		<link>https://vitorcavalcante.com/2025/08/342/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=342</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Mon, 11 Aug 2025 16:09:58 +0000</pubDate>
				<category><![CDATA[filmes]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=342</guid>

					<description><![CDATA[<p>Premonição 6 (Zach Lipovsky, Adam B. Stein, 2025)</p>
<p>The post <a href="https://vitorcavalcante.com/2025/08/342/"></a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-full"><img decoding="async" width="1008" height="567" src="https://vitorcavalcante.com/wp-content/uploads/2025/08/premonicao6-foto1.avif" alt="" class="wp-image-343" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/08/premonicao6-foto1.avif 1008w, https://vitorcavalcante.com/wp-content/uploads/2025/08/premonicao6-foto1-300x169.jpg 300w, https://vitorcavalcante.com/wp-content/uploads/2025/08/premonicao6-foto1-768x432.jpg 768w" sizes="(max-width: 1008px) 100vw, 1008px" /></figure>



<p><em>Premonição 6</em> (Zach Lipovsky, Adam B. Stein, 2025)</p>



<p></p><p>The post <a href="https://vitorcavalcante.com/2025/08/342/"></a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">342</post-id>	</item>
		<item>
		<title>NGINX vs Apache: qual escolher?</title>
		<link>https://vitorcavalcante.com/2025/07/nginx-vs-apache-qual-escolher/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nginx-vs-apache-qual-escolher</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Sat, 26 Jul 2025 17:57:11 +0000</pubDate>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[desenvolvimentoweb]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[webpeformance]]></category>
		<category><![CDATA[webserver]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=337</guid>

					<description><![CDATA[<p>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 [&#8230;]</p>
<p>The post <a href="https://vitorcavalcante.com/2025/07/nginx-vs-apache-qual-escolher/">NGINX vs Apache: qual escolher?</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="576" src="https://vitorcavalcante.com/wp-content/uploads/2025/07/Nginx-vs-Apache-2048x1152-1-1024x576.png" alt="" class="wp-image-339" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/07/Nginx-vs-Apache-2048x1152-1-1024x576.png 1024w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Nginx-vs-Apache-2048x1152-1-300x169.png 300w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Nginx-vs-Apache-2048x1152-1-768x432.png 768w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Nginx-vs-Apache-2048x1152-1-1536x864.png 1536w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Nginx-vs-Apache-2048x1152-1.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Se você já precisou configurar um servidor web, com certeza esbarrou nesses dois: Apache e NGINX.<br><br>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&#8230;<br><br>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.<br><br>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.<br><br>No fim, a melhor escolha depende do seu cenário, do projeto&#8230; e do que você já domina.</p><p>The post <a href="https://vitorcavalcante.com/2025/07/nginx-vs-apache-qual-escolher/">NGINX vs Apache: qual escolher?</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">337</post-id>	</item>
		<item>
		<title>A minha jornada com o NetView: de um script PHP a um sistema Node.js</title>
		<link>https://vitorcavalcante.com/2025/07/a-minha-jornada-com-o-netview-de-um-script-php-a-um-sistema-node-js/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-minha-jornada-com-o-netview-de-um-script-php-a-um-sistema-node-js</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Thu, 24 Jul 2025 03:30:37 +0000</pubDate>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[projetos]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=300</guid>

					<description><![CDATA[<p>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 [&#8230;]</p>
<p>The post <a href="https://vitorcavalcante.com/2025/07/a-minha-jornada-com-o-netview-de-um-script-php-a-um-sistema-node-js/">A minha jornada com o NetView: de um script PHP a um sistema Node.js</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Todo dev tem aquele projeto que cresce junto com ele. O meu é o <strong>NetView</strong>, 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.</p>



<p>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.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Todo o código, de todas as versões, está disponível no <a href="https://github.com/vtrcav/netview" target="_blank" rel="noopener" title="">GitHub</a></p>



<h2 class="wp-block-heading">O começo de tudo: Vigianet</h2>



<p>O NetView começou em 2023 com outro nome: <strong>VigiaNet</strong>. 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&#8217;s, roteadores, etc.</p>



<p>A stack era bem direta:</p>



<ul class="wp-block-list">
<li><code>index.html</code> com Vue.js</li>



<li>Um <code>setInterval</code> que fazia requisição com Axios a cada 20 segundos</li>



<li>Um <code>devices.php</code> que fazia ping nos dispositivos e devolvia um JSON</li>
</ul>



<p>Mas o detalhe está na lógica. O backend PHP:</p>



<ul class="wp-block-list">
<li>Mantinha uma <strong>lista de dispositivos</strong>, com nome, IP e se deveria ser monitorado 24h ou só em horário comercial.</li>



<li>Avaliava a <strong>regra de horário</strong> antes de tentar o ping.</li>



<li>Executava <code>ping -n 1 -w 1</code> (Windows) via <code>exec()</code>, interpretava o retorno e montava um JSON com os status.</li>



<li>Dispositivos fora de horário eram marcados como tal, sem tentar ping.</li>
</ul>



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



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://vitorcavalcante.com/wp-content/uploads/2025/07/C__Users_vitor_OneDrive_81rea20Trabalho_vigianet-main_index.html-1024x576.png" alt="" class="wp-image-308" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/07/C__Users_vitor_OneDrive_81rea20Trabalho_vigianet-main_index.html-1024x576.png 1024w, https://vitorcavalcante.com/wp-content/uploads/2025/07/C__Users_vitor_OneDrive_81rea20Trabalho_vigianet-main_index.html-300x169.png 300w, https://vitorcavalcante.com/wp-content/uploads/2025/07/C__Users_vitor_OneDrive_81rea20Trabalho_vigianet-main_index.html-768x432.png 768w, https://vitorcavalcante.com/wp-content/uploads/2025/07/C__Users_vitor_OneDrive_81rea20Trabalho_vigianet-main_index.html-1536x864.png 1536w, https://vitorcavalcante.com/wp-content/uploads/2025/07/C__Users_vitor_OneDrive_81rea20Trabalho_vigianet-main_index.html-2048x1152.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Limitações? Várias:</p>



<ul class="wp-block-list">
<li>Latência de até 20s entre a queda e o aviso visual.</li>



<li>Nenhum alerta proativo.</li>



<li>Tráfego constante, mesmo sem mudanças.</li>
</ul>



<p>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.</p>



<h2 class="wp-block-heading">A primeira virada: Node.js + WebSocket</h2>



<p>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 <strong>Node.js</strong>, WebSocket e alertas proativos.</p>



<p>Nascia o <strong>NetView v2</strong>.</p>



<p>A arquitetura ainda era monolítica:</p>



<ul class="wp-block-list">
<li><code>netview_server.js</code> era o único arquivo responsável por:
<ul class="wp-block-list">
<li>Iniciar servidor WebSocket</li>



<li>Ler <code>config/devices.json</code></li>



<li>Executar pings periodicamente</li>



<li>Detectar mudanças de status</li>



<li>Enviar mensagens via WhatsApp (usando <code>whatsapp-web.js</code>)</li>
</ul>
</li>
</ul>



<p>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.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="2560" height="1440" src="https://vitorcavalcante.com/wp-content/uploads/2025/04/NetView-dashboard-scaled.png" alt="" class="wp-image-232" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/04/NetView-dashboard-scaled.png 2560w, https://vitorcavalcante.com/wp-content/uploads/2025/04/NetView-dashboard-300x169.png 300w, https://vitorcavalcante.com/wp-content/uploads/2025/04/NetView-dashboard-1024x576.png 1024w, https://vitorcavalcante.com/wp-content/uploads/2025/04/NetView-dashboard-768x432.png 768w, https://vitorcavalcante.com/wp-content/uploads/2025/04/NetView-dashboard-1536x864.png 1536w, https://vitorcavalcante.com/wp-content/uploads/2025/04/NetView-dashboard-2048x1152.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="647" height="1024" src="https://vitorcavalcante.com/wp-content/uploads/2025/07/Screenshot_2025-07-24-00-26-34-920_com.whatsapp-647x1024.jpg" alt="" class="wp-image-327" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/07/Screenshot_2025-07-24-00-26-34-920_com.whatsapp-647x1024.jpg 647w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Screenshot_2025-07-24-00-26-34-920_com.whatsapp-190x300.jpg 190w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Screenshot_2025-07-24-00-26-34-920_com.whatsapp-768x1215.jpg 768w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Screenshot_2025-07-24-00-26-34-920_com.whatsapp-971x1536.jpg 971w, https://vitorcavalcante.com/wp-content/uploads/2025/07/Screenshot_2025-07-24-00-26-34-920_com.whatsapp.jpg 1060w" sizes="auto, (max-width: 647px) 100vw, 647px" /></figure>



<p>Mas a v2 ainda tinha limitações:</p>



<ul class="wp-block-list">
<li>Tudo centralizado num único arquivo.</li>



<li>Configurações sensíveis hardcoded.</li>



<li>Script auxiliar (<code>achagrupo.js</code>) pra descobrir o ID do grupo do WhatsApp.</li>
</ul>



<p>Funcionava. Mas adicionar um dispositivo significava editar código manualmente.</p>



<h2 class="wp-block-heading">Arquitetura de verdade: v3</h2>



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



<h3 class="wp-block-heading">Organização por responsabilidades</h3>



<p>A lógica foi quebrada em módulos:</p>



<p><code>NetViewServer</code>: orquestrador de tudo</p>



<p><code>PingService</code>: cuida dos pings com backoff exponencial</p>



<p><code>DeviceStateManager</code>: gerencia o status e histórico</p>



<p><code>NotificationManager</code>: decide quando notificar</p>



<p><code>WhatsAppClient</code>: integra com o WhatsApp</p>



<p><code>ConfigManager</code>: observa e carrega a config</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="819" src="https://vitorcavalcante.com/wp-content/uploads/2025/07/netview-diagrama-modulos-principais-1024x819.png" alt="" class="wp-image-314" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/07/netview-diagrama-modulos-principais-1024x819.png 1024w, https://vitorcavalcante.com/wp-content/uploads/2025/07/netview-diagrama-modulos-principais-300x240.png 300w, https://vitorcavalcante.com/wp-content/uploads/2025/07/netview-diagrama-modulos-principais-768x614.png 768w, https://vitorcavalcante.com/wp-content/uploads/2025/07/netview-diagrama-modulos-principais-1536x1229.png 1536w, https://vitorcavalcante.com/wp-content/uploads/2025/07/netview-diagrama-modulos-principais-2048x1638.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Essa separação facilita testes, debugging e extensões futuras.</p>



<h3 class="wp-block-heading">Ping mais inteligente</h3>



<p>O ping agora tem:</p>



<ul class="wp-block-list">
<li>Tentativas com backoff exponencial</li>



<li>Timeout configurável</li>



<li>Compatibilidade com Windows e Linux</li>



<li>Análise de perda de pacotes</li>



<li>Concorrência com Promise.all</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="596" src="https://vitorcavalcante.com/wp-content/uploads/2025/07/pingWithAdvancedRetry-1024x596.png" alt="" class="wp-image-315" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/07/pingWithAdvancedRetry-1024x596.png 1024w, https://vitorcavalcante.com/wp-content/uploads/2025/07/pingWithAdvancedRetry-300x175.png 300w, https://vitorcavalcante.com/wp-content/uploads/2025/07/pingWithAdvancedRetry-768x447.png 768w, https://vitorcavalcante.com/wp-content/uploads/2025/07/pingWithAdvancedRetry-1536x894.png 1536w, https://vitorcavalcante.com/wp-content/uploads/2025/07/pingWithAdvancedRetry.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><strong>CLI Interativo</strong></h3>



<p>Criei um CLI interativo com <code>readline</code> e <code>chalk</code> que permite configurar tudo sem abrir o código:</p>



<pre class="wp-block-preformatted">$ node server.js --cli</pre>



<p><code>device-add</code> → adicionar novo dispositivo</p>



<p><code>wa-groups</code> → listar grupos do WhatsApp</p>



<p><code>wa-set</code> → selecionar o grupo para notificações</p>



<p><code>logs</code> → ver as ultimas 20 linhas do arquivo de log</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="988" height="723" src="https://vitorcavalcante.com/wp-content/uploads/2025/07/1751893054992.jpeg" alt="" class="wp-image-307" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/07/1751893054992.jpeg 988w, https://vitorcavalcante.com/wp-content/uploads/2025/07/1751893054992-300x220.jpeg 300w, https://vitorcavalcante.com/wp-content/uploads/2025/07/1751893054992-768x562.jpeg 768w" sizes="auto, (max-width: 988px) 100vw, 988px" /></figure>



<h2 class="wp-block-heading">Por que não usar o Zabbix?</h2>



<p>Desde que criei o NetView, vez ou outra me perguntam: <em>&#8220;Mas o Zabbix já não faz tudo isso?&#8221;</em></p>



<p>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.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Característica</th><th>Zabbix</th><th>NetView</th></tr></thead><tbody><tr><td>Complexidade</td><td>Alta</td><td>Baixa</td></tr><tr><td>Setup inicial</td><td>Horas</td><td>Minutos</td></tr><tr><td>Interface</td><td>Completa, mas densa</td><td>Simples e direta</td></tr><tr><td>Alertas</td><td>Configuráveis, múltiplos canais</td><td>WhatsApp integrado, basta conectar</td></tr><tr><td>Extensibilidade</td><td>Templates, plugins, APIs</td><td>No código</td></tr><tr><td>Ideal para</td><td>Ambientes que precisam de monitoramento robusto, relatórios, SLA</td><td>Quem quer algo funcionando rápido, com alertas diretos</td></tr></tbody></table></figure>



<p><p class="whitespace-normal break-words">O NetView é mais como um &#8220;canivete suíço&#8221; para quem precisa de algo funcionando <strong>hoje</strong>, sem treinamento da equipe ou semanas de configuração. É o projeto que você monta numa tarde e deixa rodando. </p></p>



<p><p class="whitespace-normal break-words">Se sua infraestrutura é crítica e você tem tempo para fazer direito, use Zabbix. Se você só quer parar de ficar perguntando &#8220;a impressora da recepção tá funcionando?&#8221;, o NetView resolve.</p></p>



<h2 class="wp-block-heading">Mais que um projeto, uma trilha de aprendizado</h2>



<p>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.</p>



<p>É por isso que eu gosto tanto dele. Porque ele cresceu comigo.</p>



<p><strong>O que realmente aprendi</strong></p>



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



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Como organizar sistemas em módulos coesos<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> CLI com readline e UX de terminal<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Lógica de retry com backoff exponencial<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> WebSocket bidirecional<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Integração com APIs não convencionais (WhatsApp Web)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Logs com Winston, histórico com JSONL<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hot reload de arquivos de config<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Controle de concorrência com Promises</p>



<p>Mas principalmente: <strong>que software bom é software que resolve problemas reais</strong>. 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.</p>



<p>E talvez seja isso que faz a diferença: não a complexidade do código, mas o problema que ele resolve.</p><p>The post <a href="https://vitorcavalcante.com/2025/07/a-minha-jornada-com-o-netview-de-um-script-php-a-um-sistema-node-js/">A minha jornada com o NetView: de um script PHP a um sistema Node.js</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">300</post-id>	</item>
		<item>
		<title>Imagens contemplativas por Noah Kalina</title>
		<link>https://vitorcavalcante.com/2025/07/imagens-contemplativas-por-noah-kalina/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=imagens-contemplativas-por-noah-kalina</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Fri, 18 Jul 2025 11:31:09 +0000</pubDate>
				<category><![CDATA[dicas]]></category>
		<category><![CDATA[Noah Kalina]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=296</guid>

					<description><![CDATA[<p>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.”</p>
<p>The post <a href="https://vitorcavalcante.com/2025/07/imagens-contemplativas-por-noah-kalina/">Imagens contemplativas por Noah Kalina</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Two Hour Landscape. Moving Wallpaper. Black Walnut Tree. 4K. No AI" width="500" height="281" src="https://www.youtube.com/embed/SlbG0oOZ-io?start=3&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Ten Mile River. Ambient. 4K (No AI. Real Video)" width="500" height="281" src="https://www.youtube.com/embed/qlxPPx1XRpo?start=1&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Noah Kalina tá subindo vídeos no estilo <em>long photograph</em> no YouTube — cenas calmas de natureza, contemplativas. 4K. Sem IA. “Dá o play e vai viver.”</p><p>The post <a href="https://vitorcavalcante.com/2025/07/imagens-contemplativas-por-noah-kalina/">Imagens contemplativas por Noah Kalina</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">296</post-id>	</item>
		<item>
		<title>MoodFilme v2: mais ligeiro e certeiro</title>
		<link>https://vitorcavalcante.com/2025/07/moodfilme-v2-mais-ligeiro-e-certeiro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=moodfilme-v2-mais-ligeiro-e-certeiro</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Sun, 13 Jul 2025 21:01:23 +0000</pubDate>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[filmes]]></category>
		<category><![CDATA[moodfilme]]></category>
		<category><![CDATA[projetos]]></category>
		<category><![CDATA[fullstack]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[refatoração]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=277</guid>

					<description><![CDATA[<p>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 [&#8230;]</p>
<p>The post <a href="https://vitorcavalcante.com/2025/07/moodfilme-v2-mais-ligeiro-e-certeiro/">MoodFilme v2: mais ligeiro e certeiro</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>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.</p>



<p>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.</p>



<p><strong>O que mudou</strong></p>



<ul class="wp-block-list">
<li><strong>Recomendações:</strong> 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.</li>



<li><strong>Backend:</strong> o backend é em Node.js, hospedado na Vercel. Mais velocidade e menos travas.</li>



<li><strong>Frontend:</strong> reorganizei tudo em módulos: interface, requisições, estado. O código ficou mais limpo e modular, sem acúmulo de gambiarra.</li>



<li><strong>Novos moods:</strong> Misterioso, Aventureiro, Relax, Contemplativo e Inspirador. </li>



<li><strong>Outras pequenas melhorias:</strong> Agora dá pra acessar um humor direto pela URL (<code><a href="https://moodfilme.com/sombrio" target="_blank" rel="noopener" title="">/sombrio</a></code>, por exemplo), e o site dá um alô diferente dependendo do horário — só pra deixar mais pessoal.</li>
</ul>



<p><strong>E o que vem por aí</strong></p>



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



<ul class="wp-block-list">
<li>Mais moods (manda sua sugestão!)</li>



<li>Salvar recomendações que você gostou</li>



<li>Compartilhar recomendações por link direto</li>
</ul>



<p><strong>Pra fechar</strong></p>



<p>O <a href="https://moodfilme.com/" target="_blank" rel="noopener" title="">MoodFilme</a> é 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.</p>



<p>Testou e curtiu? Fala comigo no <a href="https://instagram.com/vitor.fcp" target="_blank" rel="noopener" title="">@vitor.fcp</a>. Leio tudo.</p><p>The post <a href="https://vitorcavalcante.com/2025/07/moodfilme-v2-mais-ligeiro-e-certeiro/">MoodFilme v2: mais ligeiro e certeiro</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">277</post-id>	</item>
		<item>
		<title>Oracle Always Free: VMs gratuitas e estáveis 24/7</title>
		<link>https://vitorcavalcante.com/2025/07/oracle-always-free-vms-gratuitas-e-estaveis-24-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle-always-free-vms-gratuitas-e-estaveis-24-7</link>
		
		<dc:creator><![CDATA[Vitor]]></dc:creator>
		<pubDate>Fri, 04 Jul 2025 11:30:00 +0000</pubDate>
				<category><![CDATA[cloud]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[always free]]></category>
		<category><![CDATA[amd]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[ifraestrutura]]></category>
		<category><![CDATA[oracle]]></category>
		<guid isPermaLink="false">https://vitorcavalcante.com/?p=265</guid>

					<description><![CDATA[<p>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: 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 [&#8230;]</p>
<p>The post <a href="https://vitorcavalcante.com/2025/07/oracle-always-free-vms-gratuitas-e-estaveis-24-7/">Oracle Always Free: VMs gratuitas e estáveis 24/7</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://vitorcavalcante.com/wp-content/uploads/2025/07/1751613648045-1024x683.jpg" alt="" class="wp-image-266" srcset="https://vitorcavalcante.com/wp-content/uploads/2025/07/1751613648045-1024x683.jpg 1024w, https://vitorcavalcante.com/wp-content/uploads/2025/07/1751613648045-300x200.jpg 300w, https://vitorcavalcante.com/wp-content/uploads/2025/07/1751613648045-768x512.jpg 768w, https://vitorcavalcante.com/wp-content/uploads/2025/07/1751613648045.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Descobri há um tempo o <a href="https://www.oracle.com/br/cloud/free/" target="_blank" rel="noopener" title="">Always Free da Oracle</a> e, olha… é difícil ignorar. Eles oferecem recursos de nuvem de graça e por tempo ilimitado.</p>



<p><strong>São dois tipos de instâncias:</strong></p>



<ul class="wp-block-list">
<li>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.</li>



<li>AMD (E2.1.Micro): dá pra criar até 2 VMs AMD, cada uma com 1 OCPU e 1 GB de RAM.</li>
</ul>



<p>Além disso, você ainda tem 200 GB de armazenamento disponíveis.<br>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.</p>



<p>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.</p>



<p>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.</p>



<p>Se você curte brincar com infra ou quer subir algo leve sem gastar nada, vale a pena testar.</p><p>The post <a href="https://vitorcavalcante.com/2025/07/oracle-always-free-vms-gratuitas-e-estaveis-24-7/">Oracle Always Free: VMs gratuitas e estáveis 24/7</a> first appeared on <a href="https://vitorcavalcante.com">Vitor Cavalcante</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">265</post-id>	</item>
	</channel>
</rss>
