<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on joão walter amadeu</title>
    <link>/posts/</link>
    <description>Recent content in Posts on joão walter amadeu</description>
    <generator>Hugo -- 0.144.2</generator>
    <language>pt</language>
    <lastBuildDate>Wed, 09 Apr 2025 14:00:00 -0300</lastBuildDate>
    <atom:link href="/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Subdomínios gratuitos!</title>
      <link>/posts/subdominios/</link>
      <pubDate>Wed, 09 Apr 2025 14:00:00 -0300</pubDate>
      <guid>/posts/subdominios/</guid>
      <description>Construi uma plataforma para obter subdomínios gratuitos.</description>
      <content:encoded><![CDATA[<h3 id="por-quê">Por quê?</h3>
<p>Vi um <a href="https://is-a.dev/">projeto gringo</a> e achei que seria interessante ter uma versão brasileira do mesmo. Também queria testar as functions do Supabase, portanto esse projeto tinha potencial para tomar várias horas do meu tempo livre (o que é muito bom).</p>
<h3 id="como-funciona">Como funciona?</h3>
<p>O front-end em flutter faz chamadas para o supabase, que através das actions, gerencia os domínios que pertencem ao usuário.</p>
<p>Por sua vez, as actions gerenciam segredos e chamam os end-points do cloudflare para adicionar ou remover domínios.</p>
<h3 id="como-obter-um-domínio-grátis">Como obter um domínio grátis?</h3>
<p>É simples:</p>
<ol>
<li>Acesse o <a href="https://e-um.dev.br/">website</a>;</li>
<li>Registre-se com o método que preferir (por enquanto apenas GitHub);</li>
<li>Adicione até 5 subdomínios de tipo A ou CNAME, como demonstrado abaixo:
<img alt="GIF" loading="lazy" src="/posts/images/eum.gif"></li>
</ol>
<h3 id="código">Código</h3>
<p>O projeto pode ser encontrado nesse <a href="https://github.com/fortmea/e-um.dev">repositório</a> (actions e front-end flutter).</p>
<h3 id="agradecimento">Agradecimento</h3>
<p>Quero deixar meus agradecimentos aos responsáveis pelo is-a.dev, o projeto gringo mencionado antes que me serviu de inspiração.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Novo blog</title>
      <link>/posts/newplatform/</link>
      <pubDate>Sun, 23 Feb 2025 18:00:00 -0300</pubDate>
      <guid>/posts/newplatform/</guid>
      <description>Resolvi transferir minha página pessoal para outra plataforma.</description>
      <content:encoded><![CDATA[<h3 id="por-que">Por que?</h3>
<p>Foram vários motivos, entre eles:</p>
<ol>
<li>A plataforma a qual eu utilizava para hospedar meu blog anterior (Fleek) teve
alguns problemas e o website por vezes ficava inacessível;</li>
<li>Era um website customizado e com a codebase toda bagunçada (pois eu montei
durante muitos anos, com mentalidade e approach diferentes a cada
atualização);</li>
<li>Além disso, a tecnologia utilizada (NextJS) <del>ainda mais naquela versão</del> já
não era mais tão interessante, e os build times estavam cada vez maiores;</li>
<li>Sem tempo irmão.</li>
</ol>
<h3 id="qual-o-substituto-e-como-fiz-essa-escolha">Qual o substituto e como fiz essa escolha?</h3>
<p>Escolhi hugo com o tema PaperMod. Além de muito rápido (vide imagem), é
extremamente fácil de configurar, reutilizar, e expandir a página utilizando
essa tecnologia.</p>
<div style="display: flex; flex-direction: column; align-items: center; text-align: center;">
    <img src="/posts/images/iamspeed.png" alt="alt">
    <p><em>Literalmente 118ms para gerar o site!</em></p>
</div>
<h3 id="postagens-anteriores-e-recursos-que-anteriormente-ficavam-hospedados-aqui">Postagens anteriores e recursos que anteriormente ficavam hospedados aqui</h3>
<p>Alguns conteúdos que antes se encontravam nesse website foram restaurados (licenças do meu app e alguns artigos), no entanto parte desses artigos já não condizem com o site.</p>
<p>Não planejo atualizar os artigos antigos, portanto é importante ter a mudança do website em mente ao fazer sua leitura.</p>
<h3 id="planos-futuros">Planos futuros</h3>
<p>Planejo atualizar mais frequentemente sobre outros projetos e sobre mudanças no blog por aqui. Além disso, planejo utilizar como portfólio em algum momento.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Drum Machine feita com arduino.</title>
      <link>/posts/arduinodrums/</link>
      <pubDate>Thu, 31 Oct 2024 00:00:00 +0000</pubDate>
      <guid>/posts/arduinodrums/</guid>
      <description>&lt;p&gt;De volta após muito tempo, apresento a vocês um passatempo recente.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/fortmea/arduino-drums&#34;&gt;Mais detalhes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Por enquanto, as funcionalidades mais básicas estão funcionando corretamente. Exemplo: Posso controlar as 4 vozes inicialmente planejadas (kick, snare, open hat, hi hat), posso salvar e carregar presets, posso controlar BPM e pitch.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Planos futuros para o projeto&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desenvolver uma placa de circuito para criar uma versão portátil do projeto&lt;/li&gt;
&lt;li&gt;Mais armazenamento, e armazenamento de todas as configurações (não apenas presets de batidas)&lt;/li&gt;
&lt;li&gt;Mais opções de sample&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Até a próxima!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>De volta após muito tempo, apresento a vocês um passatempo recente.</p>
<hr>
<p><a href="https://github.com/fortmea/arduino-drums">Mais detalhes</a></p>
<p>Por enquanto, as funcionalidades mais básicas estão funcionando corretamente. Exemplo: Posso controlar as 4 vozes inicialmente planejadas (kick, snare, open hat, hi hat), posso salvar e carregar presets, posso controlar BPM e pitch.</p>
<hr>
<p>Planos futuros para o projeto</p>
<ul>
<li>Desenvolver uma placa de circuito para criar uma versão portátil do projeto</li>
<li>Mais armazenamento, e armazenamento de todas as configurações (não apenas presets de batidas)</li>
<li>Mais opções de sample</li>
</ul>
<p>Até a próxima!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Configurando seu próprio motor de busca privado com o SearxNG</title>
      <link>/posts/searx/</link>
      <pubDate>Sun, 17 Jul 2022 00:00:00 +0000</pubDate>
      <guid>/posts/searx/</guid>
      <description>&lt;h3 id=&#34;o-que-é-o-searxng&#34;&gt;O que é o SearxNG?&lt;/h3&gt;
&lt;p&gt;SearxNG é um Fork do motor de meta-busca Searx, com melhorias na experiência do usuário.
Essa ferramenta permite buscar em diversos outros motores de busca como Google, DuckDuckGo, Bing, qwant, Brave, entre outros, sem sacrificar a privacidade ou qualidade dos resultados. Ele permite que cada usuário personalize suas preferências de busca, armazenando todos esses dados localmente.&lt;/p&gt;
&lt;p&gt;Além das instâncias públicas, também é possível hospedar a sua própria instância do SearxNG, garantindo privacidade máxima. E é esse o tópico a ser abordado nesse artigo.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="o-que-é-o-searxng">O que é o SearxNG?</h3>
<p>SearxNG é um Fork do motor de meta-busca Searx, com melhorias na experiência do usuário.
Essa ferramenta permite buscar em diversos outros motores de busca como Google, DuckDuckGo, Bing, qwant, Brave, entre outros, sem sacrificar a privacidade ou qualidade dos resultados. Ele permite que cada usuário personalize suas preferências de busca, armazenando todos esses dados localmente.</p>
<p>Além das instâncias públicas, também é possível hospedar a sua própria instância do SearxNG, garantindo privacidade máxima. E é esse o tópico a ser abordado nesse artigo.</p>
<h3 id="instalação-via-docker-com-docker-compose">Instalação via Docker, com Docker-compose</h3>
<p>Utilizando o Docker, a instalação dessa ferramenta não passa de uns poucos comandos no terminal, pois a configuração será minima.</p>
<p>Fazendo o download dos arquivos necessários:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>cd /usr/local
</span></span><span style="display:flex;"><span>git clone https://github.com/searxng/searxng-docker.git
</span></span><span style="display:flex;"><span>cd searxng-docker
</span></span></code></pre></div><p>Gerando chave secreta para o searxng:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sed -i <span style="color:#e6db74">&#34;s|ultrasecretkey|</span><span style="color:#66d9ef">$(</span>openssl rand -hex 32<span style="color:#66d9ef">)</span><span style="color:#e6db74">|g&#34;</span> searxng/settings.yml
</span></span></code></pre></div><p>Finalmente, iniciando a instância do searxNG:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker-compose up -d
</span></span></code></pre></div><p>Ou para parar a execução:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker-compose down
</span></span></code></pre></div><h3 id="configuração-de-proxy-reverso">Configuração de proxy reverso</h3>
<p>Por padrão o SearxNG utiliza a porta 443 para conexão HTTPS, podendo causar conflito com outros servidores web na máquina. Podemos resolver isso utilizando proxy reverso, apontando uma rota no servidor (nesse caso apache) para o SearxNG em uma porta alternativa:</p>
<h4 id="primeiro-editamos-o-arquivo-de-configuração-do-searxng-para-alterarmos-a-porta-de-acesso-opcional-caso-a-porta-padrão-8080-não-esteja-sendo-utilizada">Primeiro editamos o arquivo de configuração do searxNG, para alterarmos a porta de acesso. (Opcional caso a porta padrão 8080 não esteja sendo utilizada)</h4>
<ol>
<li>Execute o comando <code>docker-compose down</code> no caminho em que está o repositório do searxNG.</li>
<li>Na pasta searxNG, abra o arquivo <code>settings.yml</code> no seu editor de texto.</li>
<li>Na área <code>server</code> adicione a tag <code>port</code> seguindo o padrão do resto do arquivo e defina a porta que deseja utilizar.</li>
<li>Salve e inicie o serviço novamente.</li>
</ol>
<h4 id="exemplo-de-arquivo-de-configuração-de-rota-para-o-apache">Exemplo de arquivo de configuração de rota para o Apache:</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#a6e22e">&lt;VirtualHost *:80&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ServerName endereco.com #Endereço de acesso do serviço</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ServerAdmin webmaster@localhost</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ProxyPreserveHost On</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ProxyPass / http://0.0.0.0:8080/   #Endereço local do searxNG</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ProxyPassReverse / http://0.0.0.0:8080/ #Endereço local do searxNG</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ErrorLog ${APACHE_LOG_DIR}/error.log</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">CustomLog ${APACHE_LOG_DIR}/access.log combined</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">&lt;/VirtualHost&gt;</span>
</span></span></code></pre></div><p>Ative o arquivo com o comando <code>a2ensite nomedoarquivo.conf</code> e recarregue o serviço.</p>
<h3 id="resultado">Resultado</h3>
<p><img alt="A ferramenta tem uma aparência muito agradável, e outros temas podem ser instalados, além de muitas outras configurações que estão disponíveis" loading="lazy" src="/posts/images/searx.png" title="A ferramenta tem uma aparência muito agradável, e outros temas podem ser instalados, além de muitas outras configurações que estão disponíveis"></p>
<p>Até a próxima!</p>
]]></content:encoded>
    </item>
    <item>
      <title>A viabilidade do uso de protocolos peer-to-peer para hosting de websites</title>
      <link>/posts/ipfs/</link>
      <pubDate>Mon, 20 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/posts/ipfs/</guid>
      <description>&lt;h3 id=&#34;introdução&#34;&gt;Introdução&lt;/h3&gt;
&lt;p&gt;É possível utilizar uma rede p2p para hospedar websites? Essa pergunta pode ser estranha, mas isso é sim possível.&lt;/p&gt;
&lt;p&gt;Por natureza, os servidores de protocolo HTTP servem arquivos e lidam com requisições e tratamento de parâmetros das mesmas, assim como controle de acesso e outras atividades comuns a esse tipo de serviço. Teoricamente, um serviço p2p que permita carregar arquivos separadamente e de forma suficientemente rápida pode ser utilizada para hospedar websites, e muitas soluções implementam esse tipo de serviço.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="introdução">Introdução</h3>
<p>É possível utilizar uma rede p2p para hospedar websites? Essa pergunta pode ser estranha, mas isso é sim possível.</p>
<p>Por natureza, os servidores de protocolo HTTP servem arquivos e lidam com requisições e tratamento de parâmetros das mesmas, assim como controle de acesso e outras atividades comuns a esse tipo de serviço. Teoricamente, um serviço p2p que permita carregar arquivos separadamente e de forma suficientemente rápida pode ser utilizada para hospedar websites, e muitas soluções implementam esse tipo de serviço.</p>
<h3 id="ipfs">IPFS</h3>
<p>A rede IPFS (InterPlanetary File System) é um protocolo peer-to-peer para armazenamento e compartilhamento de dados, que usa endereçamento de conteúdo para identificar cada arquivo globalmente, conectando todos os dispositivos na rede. Essa rede é composta por vários gateways que permitem acesso pela web, assim como um cliente dedicado disponível em todas as plataformas e de código aberto, que permite o acesso a esses arquivos.</p>
<h3 id="interplanetary-name-system">InterPlanetary Name System</h3>
<p>O InterPlanetary Name System (IPNS) permite criar um único endereço para arquivos diferentes, servindo como um diretório único, onde pode existir apenas uma única versão de um arquivo, removendo a necessidade de se compartilhar um código novo sempre que alterar os arquivos que você armazenou na rede.</p>
<h3 id="onde-tudo-isso-se-encontra">Onde tudo isso se encontra</h3>
<p>Utilizando o IPNS podemos acessar um único endereço através de um gateway público, que estaria conectado a seu domínio através do DNS. Assim, podemos hospedar arquivos responsáveis por um website e alterá-los sempre que necessário, como esperado de uma hospedagem normal (apesar de pecar um pouco na velocidade).</p>
<hr>
<h3 id="esse-website-é-desenvolvido-utilizando-nextjs-e-armazenado-gratuitamente-no-ipfs">Esse website é desenvolvido utilizando NextJS e armazenado gratuitamente no IPFS.</h3>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>Api com Flask e a Biblioteca pylocaldatabase para armazenamento de dados</title>
      <link>/posts/apicomflaskepylocaldatabase/</link>
      <pubDate>Mon, 06 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/posts/apicomflaskepylocaldatabase/</guid>
      <description>&lt;p&gt;Seguindo o tópico da minha &lt;a href=&#34;../pylocaldatabase&#34;&gt;publicação anterior&lt;/a&gt;, estou desenvolvendo uma API, e utilizando-a nesse website para gerenciar os comentários das publicações.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;O código da api pode ser encontrado &lt;a href=&#34;https://github.com/fortmea/flaskpylocaldb&#34;&gt;aqui&lt;/a&gt; e tem scripts prontos para compatibilidade com Heroku e Replit.&lt;/p&gt;
&lt;p&gt;Inicialmente, o projeto contém apenas requisições simples de adição e listagem de comentários, pois ainda é necessário progresso em formas de criptografar e ocultar os dados no arquivo de banco de dados através da biblioteca que estou desenvolvendo.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Seguindo o tópico da minha <a href="../pylocaldatabase">publicação anterior</a>, estou desenvolvendo uma API, e utilizando-a nesse website para gerenciar os comentários das publicações.</p>
<hr>
<p>O código da api pode ser encontrado <a href="https://github.com/fortmea/flaskpylocaldb">aqui</a> e tem scripts prontos para compatibilidade com Heroku e Replit.</p>
<p>Inicialmente, o projeto contém apenas requisições simples de adição e listagem de comentários, pois ainda é necessário progresso em formas de criptografar e ocultar os dados no arquivo de banco de dados através da biblioteca que estou desenvolvendo.</p>
<hr>
<p>Plano futuro para a biblioteca:</p>
<ul>
<li>Adicionar criptografia AES-256 ao salvar e ler arquivos, utilizando chave privada;</li>
<li>Melhorar sintaxe;</li>
<li>Adicionar testes unitários para reduzir a quantidade de patches necessários;</li>
<li>Criar um ambiente virtual de desenvolvimento para facilitar a publicação de novas versões.</li>
</ul>
<p>Até a próxima!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Biblioteca para banco de dados local em Python</title>
      <link>/posts/pylocaldatabase/</link>
      <pubDate>Thu, 02 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/posts/pylocaldatabase/</guid>
      <description>&lt;p&gt;Python é uma linguagem muito famosa por sua facilidade de uso, especialmente no aspecto da organização e estruturamento de dados.&lt;/p&gt;
&lt;p&gt;Python também é uma linguagem muito utilizada em desenvolvimento web, no front-end e back-end, além do uso para desenvolvimento de jogos e muitas outras ferramentas que utilizam quantidades enormes de dados que podem se dar em diversas estruturas.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Por isso, tive a ideia de desenvolver uma &lt;a href=&#34;https://github.com/fortmea/python-local-database&#34;&gt;biblioteca&lt;/a&gt; que é capaz de organizar e armazenar dados em todas as formas. A biblioteca está disponível no &lt;a href=&#34;https://pypi.org/project/pylocaldatabase/&#34;&gt;PyPi&lt;/a&gt; e pode ser instalada com o comando abaixo:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Python é uma linguagem muito famosa por sua facilidade de uso, especialmente no aspecto da organização e estruturamento de dados.</p>
<p>Python também é uma linguagem muito utilizada em desenvolvimento web, no front-end e back-end, além do uso para desenvolvimento de jogos e muitas outras ferramentas que utilizam quantidades enormes de dados que podem se dar em diversas estruturas.</p>
<hr>
<p>Por isso, tive a ideia de desenvolver uma <a href="https://github.com/fortmea/python-local-database">biblioteca</a> que é capaz de organizar e armazenar dados em todas as formas. A biblioteca está disponível no <a href="https://pypi.org/project/pylocaldatabase/">PyPi</a> e pode ser instalada com o comando abaixo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pip install pylocaldatabase
</span></span></code></pre></div><hr>
<p>Espero expandir esse projeto no futuro, pois vejo a biblioteca como uma alternativa viável a outros métodos de armazenamento local, além de uma maneira de interagir com dados diretamente, como num projeto que estou trabalhando, que usa essa biblioteca juntamente com Flask para criar uma API.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
