<?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: Higor Silva</title>
    <description>The latest articles on DEV Community by Higor Silva (@higorslva).</description>
    <link>https://dev.to/higorslva</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F847127%2F8082a501-a887-47a0-828f-e067b033d723.jpg</url>
      <title>DEV Community: Higor Silva</title>
      <link>https://dev.to/higorslva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/higorslva"/>
    <language>en</language>
    <item>
      <title>Uma Análise Técnica da Arquitetura RAG da "Juci"</title>
      <dc:creator>Higor Silva</dc:creator>
      <pubDate>Sun, 22 Jun 2025 16:08:11 +0000</pubDate>
      <link>https://dev.to/higorslva/uma-analise-tecnica-da-arquitetura-rag-da-juci-52k</link>
      <guid>https://dev.to/higorslva/uma-analise-tecnica-da-arquitetura-rag-da-juci-52k</guid>
      <description>&lt;p&gt;A criação de assistentes de conversação que operam sobre domínios de conhecimento específicos representa um desafio significativo de engenharia. A simples utilização de um Large Language Model (LLM) pré-treinado é insuficiente quando a precisão e a fidelidade a uma base de fatos controlada são requisitos primordiais. Este artigo apresenta um estudo de caso técnico da "Juci", uma assistente virtual desenvolvida pela &lt;a href="https://www.tjap.jus.br/portal/noticias/facilidade-e-eficiencia-digital-tjap-lanca-inteligencia-artificial-chatbot-juci-a-assistente-virtual-do-portal-do-poder-judiciario.html" rel="noopener noreferrer"&gt;equipe de IA&lt;/a&gt; da Residência Tecnológica para o Tribunal de Justiça do Amapá (TJAP), detalhando sua arquitetura baseada no padrão Retrieval-Augmented Generation (RAG). Analisaremos os componentes de seu stack tecnológico, o fluxo de ingestão e gerenciamento de dados e o pipeline de execução em tempo de execução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Componentes da Arquitetura e Stack Tecnológico&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A fundação do sistema reside em um stack de componentes de código aberto, orquestrados em Python. O núcleo generativo é o &lt;strong&gt;Llama 3.1 8B&lt;/strong&gt;, um LLM servido localmente através do &lt;strong&gt;Ollama&lt;/strong&gt;. Essa escolha estratégica garante a soberania dos dados e a total customização do ambiente, eliminando a dependência de APIs de terceiros e mantendo as interações dentro da infraestrutura local. Para a transformação do conhecimento textual em representações numéricas, utilizamos o modelo de embeddings &lt;code&gt;mixedbread-ai/mxbai-embed-2d-large-v1&lt;/code&gt;, acessado via Hugging Face. Este modelo é responsável por gerar os vetores de alta dimensão que capturam a semântica do conteúdo.&lt;/p&gt;

&lt;p&gt;O armazenamento e a recuperação desses vetores são gerenciados pelo &lt;strong&gt;Qdrant&lt;/strong&gt;, um banco de dados vetorial de alta performance. O Qdrant indexa os vetores de embedding para permitir buscas por similaridade de cosseno em latência extremamente baixa, que é a operação central da fase de &lt;em&gt;Retrieval&lt;/em&gt;. Para unir todos esses componentes, o framework &lt;strong&gt;LangChain&lt;/strong&gt; atua como a principal camada de orquestração. Ele abstrai a complexidade do pipeline, gerenciando o carregamento de documentos com &lt;code&gt;DataFrameLoader&lt;/code&gt; e &lt;code&gt;DirectoryLoader&lt;/code&gt;, a fragmentação de texto através do &lt;code&gt;RecursiveCharacterTextSplitter&lt;/code&gt; (configurado com &lt;code&gt;chunk_size&lt;/code&gt; de 500 e &lt;code&gt;chunk_overlap&lt;/code&gt; de 100 caracteres) e a integração entre o cliente Qdrant e o LLM Ollama.&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.amazonaws.com%2Fuploads%2Farticles%2Fpoomgxglohuzyucol5nh.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.amazonaws.com%2Fuploads%2Farticles%2Fpoomgxglohuzyucol5nh.png" alt="Fluxograma completo da Juci" width="800" height="1167"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Ingestão e Manutenção Incremental da Base de Conhecimento&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uma característica crucial de um sistema RAG robusto é sua capacidade de manter a base de conhecimento atualizada de forma eficiente. Na arquitetura da Juci, implementamos uma separação lógica de dados em duas coleções distintas no Qdrant: &lt;code&gt;chatbot&lt;/code&gt;, contendo um dataset de perguntas e respostas comuns (FAQs), e &lt;code&gt;blog&lt;/code&gt;, com notícias e conteúdo institucional do TJAP. O script de inicialização permite, através de argumentos de linha de comando (&lt;code&gt;argparse&lt;/code&gt;), a recriação completa das coleções ou a sua reutilização.&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.amazonaws.com%2Fuploads%2Farticles%2Fy5spmgp99zkilejb0gj9.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.amazonaws.com%2Fuploads%2Farticles%2Fy5spmgp99zkilejb0gj9.png" alt="Fluxograma de inicialização do servidor" width="800" height="1328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O destaque do design é a função &lt;code&gt;inserirNovosArquivos&lt;/code&gt;, projetada para a atualização incremental da coleção &lt;code&gt;blog&lt;/code&gt;. Em vez de reprocessar todo o diretório de documentos a cada atualização, esta função primeiro lista os arquivos de origem e, em seguida, itera sobre eles, consultando o Qdrant para verificar a existência de cada um através de um filtro em seus metadados (&lt;code&gt;metadata.source&lt;/code&gt;). Apenas os documentos não encontrados no banco de dados são carregados, divididos em chunks, vetorizados e, por fim, inseridos na coleção. Essa abordagem reduz drasticamente o custo computacional e o tempo necessário para sincronizar a base de conhecimento com novas informações.&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.amazonaws.com%2Fuploads%2Farticles%2Fynlkjii6t1p9w0gpmowg.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.amazonaws.com%2Fuploads%2Farticles%2Fynlkjii6t1p9w0gpmowg.png" alt="Fluxograma de alimentação da base de dados para uso de RAG" width="800" height="1136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O Pipeline RAG em Execução&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A interação do usuário é gerenciada por um servidor TCP implementado com o módulo &lt;code&gt;socket&lt;/code&gt; do Python. Ao receber uma query, o sistema não a envia diretamente ao LLM. Primeiramente, a fase de &lt;em&gt;Retrieval&lt;/em&gt; é acionada pela função &lt;code&gt;custom_prompt&lt;/code&gt;. Esta função executa duas buscas de similaridade paralelas no Qdrant: uma na coleção &lt;code&gt;chatbot&lt;/code&gt; (com &lt;code&gt;k=5&lt;/code&gt;) e outra na coleção &lt;code&gt;blog&lt;/code&gt; (com &lt;code&gt;k=15&lt;/code&gt;), recuperando os chunks de texto mais relevantes de cada fonte.&lt;/p&gt;

&lt;p&gt;Os resultados de ambas as buscas são então concatenados para formar um bloco de contexto unificado. Este contexto é injetado em um prompt template estruturado, que serve a um duplo propósito. Além de fornecer ao LLM os dados factuais para formular a resposta, o template também realiza a engenharia de persona, instruindo o modelo sobre sua identidade, tom de voz e regras de comportamento (guardrails), como a proibição de responder a tópicos fora do escopo do TJAP. Somente após essa fase de &lt;em&gt;Augmentation&lt;/em&gt;, o prompt completo é enviado ao Llama 3.1 para a geração final da resposta, que é então retornada ao usuário. &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.amazonaws.com%2Fuploads%2Farticles%2Fams24fnc75g30muinx86.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.amazonaws.com%2Fuploads%2Farticles%2Fams24fnc75g30muinx86.png" alt="Guardrails e processamento da resposta final" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Concluímos então, que este design modular e eficiente exemplifica como a combinação de LLMs locais, bancos de dados vetoriais e uma lógica de orquestração cuidadosa pode produzir assistentes de IA especializados, seguros e altamente confiáveis.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>langchain</category>
      <category>qdrant</category>
      <category>python</category>
    </item>
    <item>
      <title>Instalando kernel Linux Zen no Arch Linux com systemd-boot 🧑🏽‍💻</title>
      <dc:creator>Higor Silva</dc:creator>
      <pubDate>Mon, 18 Mar 2024 18:19:05 +0000</pubDate>
      <link>https://dev.to/higorslva/instalando-kernel-linux-zen-no-arch-linux-com-systemd-boot-3041</link>
      <guid>https://dev.to/higorslva/instalando-kernel-linux-zen-no-arch-linux-com-systemd-boot-3041</guid>
      <description>&lt;p&gt;O Arch Linux é um sistema altamente modular, pensado para usuários avançados que gostam de customizar ao máximo seu próprio sistema. A liberdade é tamanha que você pode, de maneira oficial e sem muita complicação, alterar qual kernel Linux você quer instalar. Nesse tutorial, ensinarei como instalar e mudar para o kernel para o Linux Zen no seu Arch Linux.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7s8j0uhn0vhi2k6xiy8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7s8j0uhn0vhi2k6xiy8.jpeg" alt="Pinguim meditando sobre um computador" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Primeiro, o que é o Linux Zen?
&lt;/h3&gt;

&lt;p&gt;O kernel Linux Zen é o resultado de um esforço colaborativo entre entusiastas do mundo Linux para entregar o melhor kernel possível para o dia a dia. Aplica alguns patches do kernel Liquorix, priorizando estabilidade e novidades no suporte de novos hardwares, além da mudança de como os processos são priorizados, além de diminuir a latência (ótimo para quem trabalha com áudio no linux).&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalação
&lt;/h3&gt;

&lt;p&gt;A instalação não tem segredo, visto que o pacote &lt;code&gt;linux-zen&lt;/code&gt; está nos repositórios oficiais do Arch Linux. Para isso, basta abrir o terminal e dar o comando &lt;code&gt;sudo pacman -S linux-zen linux-zen-headers&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy178hipne5u32rmtuth9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy178hipne5u32rmtuth9.png" alt="Terminal Linux com o comando para instalar o kernel Linux Zen" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após a instalação, você ainda precisa seguir mais alguns passos, pois apenas o pacote foi instalado, precisando habilita-lo para dar boot no novo kernel. Para isso, editaremos um arquivo .conf que está no caminho /boot/loader/entries. No meu caso, possuo apenas uma entrada e usarei ela. Você pode criar uma nova entrada caso queira ficar alternando entre os kernels durante o boot.&lt;br&gt;
Digite &lt;code&gt;sudo nano /boot/loader/entries/*nome_do_arquivo*.conf&lt;/code&gt;. Você verá uma janela parecida com essa:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmglwxnn3s483ca0rd4g1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmglwxnn3s483ca0rd4g1.png" alt="Image description" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para que você ative o Linux Zen, basta adicionar o sufixo "-zen" na linha "linux" e "initrd"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;title Arch Linux (linux)
linux /vmlinuz-linux-zen
[...]
initrd /initramfs-linux-zen.img
[...]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flehb9m33r3dakcj5hooa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flehb9m33r3dakcj5hooa.png" alt="Arquivo de entrada atualizado para o kernel-zen" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, agora o arquivo de entries está configurado para o boot ser no Linux Zen invés do kernel Linux convencional. Para aplicar as configurações, salve o arquivo e execute o comando &lt;code&gt;sudo bootctl update&lt;/code&gt; e reinicie seu computador. Agora o kernel Linux Zen é o seu kernel padrão.&lt;/p&gt;

</description>
      <category>archlinux</category>
      <category>kernel</category>
      <category>linuxzen</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Usei o Android sem apps Google por dois meses 📱</title>
      <dc:creator>Higor Silva</dc:creator>
      <pubDate>Wed, 27 Dec 2023 01:21:35 +0000</pubDate>
      <link>https://dev.to/portugues/usei-o-android-sem-apps-google-por-dois-meses-5en0</link>
      <guid>https://dev.to/portugues/usei-o-android-sem-apps-google-por-dois-meses-5en0</guid>
      <description>&lt;p&gt;&lt;em&gt;Texto originalmente escrito em 29 de janeiro de 2022&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No dia 27 de novembro, comecei minha jornada um tanto estranha para quem é de fora do mundo da tecnologia: Comecei a usar o Android (que é um sistema da Google) sem os apps da Google. O quão bizarro ou maravilhoso pode ser usar o sistema do robozinho verde mais privativo? Essas são minhas conclusões:&lt;/p&gt;

&lt;h3&gt;
  
  
  Mas afinal, qual o motivo dessa experiência?
&lt;/h3&gt;

&lt;p&gt;O ponto é simples: abra o “My Activity” da sua conta na Google e veja tudo o que você fez. Reconhece aqueles aplicativos que você abriu? Como o Google sabe de tudo isso? Como ele coleta esses dados e pra quê ele usa isso?&lt;/p&gt;

&lt;p&gt;Existe uma forma para que a Google pare de coletar meus dados? A resposta é sim, mas exige alguns passos mais avançados. Então basta eu trocar meu sistema operacional, certo? Bem…&lt;/p&gt;

&lt;p&gt;Quando o assunto é sistemas operacionais mobile, você deve imaginar em apenas dois nomes: O Android e o iOS (também conhecido como “o do iPhone”). Ambos são muito práticos e são os sistemas que todas as pessoas estão acostumadas a usar no seu dia a dia. Mas existem outros também, embora sejam mais para nichos e usos específicos.A maioria deles são baseados em Linux, como o &lt;a href="https://ubuntu-touch.io/"&gt;Ubuntu Touch&lt;/a&gt;, o &lt;a href="https://pureos.net/"&gt;PureOS&lt;/a&gt; da Librem, &lt;a href="https://sailfishos.org/"&gt;Sailfish OS&lt;/a&gt; e o &lt;a href="https://postmarketos.org/"&gt;postmarketOS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mas uma coisa que esses sistemas alternativos pecam é na comodidade. Vários apps não possuem uma versão para aquele sistema operacional. WhatsApp, Uber, entre outros não existem. Você pode instalar uma camada de compatibilidade do Android, mas envolve processos mais avançados e em casos extremos, é necessário até patchear/recompilar o kernel.&lt;/p&gt;

&lt;p&gt;Agora se você usar Android, nem precisa se preocupar com isso. Basta baixar o app e usar. Mas o Google vai continuar coletando dados. É aqui que temos o pulo do gato.&lt;/p&gt;

&lt;h3&gt;
  
  
  Segundo ponto: Privacidade sem largar a comodidade
&lt;/h3&gt;

&lt;p&gt;Muitos aplicativos necessitam do Google Play Services, um app da Google que funciona como um conjunto de bibliotecas para os apps funcionarem… Ok, vejamos de outro modo.&lt;/p&gt;

&lt;p&gt;Para alguns apps funcionarem, eles necessitam de alguns códigos que só existem no Google Play Services. Acesso a GPS, uso de alguns serviços na nuvem, etc. Sem o Google Play Services, o seu Uber não vai detectar sua localização e seu WhatsApp não vai receber notificação. Você só receberá mensagens quando abrir o app. Bem incoveniente, né?&lt;/p&gt;

&lt;p&gt;Para contornar esse problema, existe um substituto ao Play Services: O Projeto MicroG, mantido pelo desenvolvedor alemão Marvin Wißfeld. Essa implementação é de código aberto e não conta com os rastreadores da Google. Existem algumas formas de instalação, mas…&lt;/p&gt;

&lt;h3&gt;
  
  
  Terceiro ponto: O sistema funcionaria de forma idêntica ao original. Porém…
&lt;/h3&gt;

&lt;p&gt;Entrando em termos mais técnicos, o que fiz foi: Baixar a variante da &lt;a href="https://lineageos.org/"&gt;LineageOS&lt;/a&gt; (sistema operacional baseado no &lt;a href="https://source.android.com/"&gt;Android Open Source Project&lt;/a&gt;) chamada &lt;a href="https://lineage.microg.org/"&gt;LineageOS for MicroG&lt;/a&gt;. Explico mais sobre como fazer isso em um post futuro.&lt;/p&gt;

&lt;p&gt;Baixando o LineageOS for MicroG, tudo já vinha configurado. Bastava “flashear” o sistema e tudo certo. E… Foi exatamente isso que aconteceu. Não foi necessário configurar mais nada, só precisei logar minha conta da Google para o YouTube.&lt;/p&gt;

&lt;p&gt;A loja de aplicativos não é a Play Store, mas por padrão vem o &lt;a href="https://f-droid.org/"&gt;F-Droid&lt;/a&gt;: Uma loja de aplicativos Android com o diferencial de ter apenas aplicativos de código aberto. E não, você não encontrará o WhatsApp, por exemplo. Para isso, é necessário o download de outra loja: &lt;a href="https://auroraoss.com/"&gt;Aurora Store&lt;/a&gt;. Nele, você pode logar em uma conta anônima e usar a Play Store sem rastreio algum. Todos os aplicativos estão lá.&lt;/p&gt;

&lt;p&gt;Inclusive, caso queira substituir aplicativos proprietários para código aberto, você pode conferir esse &lt;a href="https://github.com/higorslva/foss-android"&gt;guia no GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Após algumas semanas usando o Android dessa maneira, algumas coisas curiosas aconteciam. App do Uber simplesmente parou de pegar minha localização. Minha cidade não é lá tão grande mas caso eu estivesse em um local desconhecido, teria que usar métodos neandertais para me localizar: Pedir informação.&lt;/p&gt;

&lt;p&gt;Da mesma maneira que o Uber me deixou na mão, o WhatsApp parou de receber notificação. Algumas mensagens urgentes eu simplesmente não via pois não tenho costume de abrir o WhatsApp a não ser que eu receba notificação ou queira mandar mensagem pra alguém. Mas notificações não chegavam, o que me forçava abrir o app algumas vezes e me deparar com mensagens de uma hora atrás no limbo.&lt;/p&gt;

&lt;p&gt;Como quis me desapegar de aplicativos do Google, usei outros alternativos daquela lista lá. Todos funcionam muito bem e alguns uso até hoje depois da experiência. Mas eu uso bastante meu computador e os serviços da Google funciona tudo pela nuvem. Um texto que escrevi no Google Keep poderá ser acessado depois no meu computador e vice versa. Eu tive que abrir mão disso e foi bem sofrido.&lt;/p&gt;

&lt;p&gt;Outro ponto negativo foi que o app que gerencia o MicroG simplesmente não abria mais. Caso eu quisesse adicionar uma nova conta do Google, não poderia. Ligar/desligar algumas funções? Esquece.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão: Valeu a pena?
&lt;/h3&gt;

&lt;p&gt;Se você quiser mais privacidade e considera o uso das bibliotecas da Google pelo MicroG, esteja ciente que tem altas chances de que nem tudo irá funcionar. Algumas vezes é necessário apenas marcar uma opção nas configurações, outras nem solução você terá. Não tenho nada contra a Google e uso seus serviços sem problema nenhum.&lt;/p&gt;

&lt;p&gt;Na minha experiência houve mais contras do que prós, então não tive problema em voltar a usar meu celular como sempre usei. Inclusive, em um próximo post eu mostro como é meu celular, meus aplicativos e como organizo minha vida digital.&lt;/p&gt;

&lt;p&gt;Abraços e se cuidem.&lt;/p&gt;

</description>
      <category>security</category>
      <category>android</category>
      <category>microg</category>
    </item>
    <item>
      <title>Configurando Docker com MySQL no Arch Linux e conectando ao Workbench 👨🏽‍💻</title>
      <dc:creator>Higor Silva</dc:creator>
      <pubDate>Mon, 25 Dec 2023 17:04:35 +0000</pubDate>
      <link>https://dev.to/higorslva/configurando-docker-com-mysql-no-arch-linux-e-conectando-ao-workbench-420l</link>
      <guid>https://dev.to/higorslva/configurando-docker-com-mysql-no-arch-linux-e-conectando-ao-workbench-420l</guid>
      <description>&lt;p&gt;Enquanto configurava minha máquina com Arch Linux, percebi que o &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fdev.mysql.com%2Fdownloads%2Fmysql%2F"&gt;MySQL Server&lt;/a&gt; não existia mais nos repositórios da distro desde 2013 (e &lt;a href="https://medium.com/r/?url=https%3A%2F%2Farchlinux.org%2Fnews%2Fmariadb-replaces-mysql-in-repositories%2F"&gt;aqui&lt;/a&gt; está o motivo), ficando em seu lugar o &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fmariadb.org%2F"&gt;MariaDB&lt;/a&gt;. Embora o MariaDB seja praticamente 100% compatível com a sintaxe do MySQL, ainda há pequenas coisas que não são. Para quem prefere o MySQL e não deseja ter de compilar o código fonte ou não quer instalar diretamente os binários genéricos, eis como instalar com o Docker.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nota: Esse tutorial foi escrito após algumas pesquisas para o meu caso em particular durante as aulas das matérias Banco de Dados I e II na universidade.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalando o Docker
&lt;/h3&gt;

&lt;p&gt;Caso não possua o Docker instalado, primeiro atualize a lista de pacotes e os pacotes em si:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -Syu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora instale o Docker&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QQQNHn04--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c0x7fz94w2ctcdc73iwf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QQQNHn04--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c0x7fz94w2ctcdc73iwf.png" alt="Docker com status active" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso no lugar de "active" apareça "inactive (dead)", inicialize-o com&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Criando um container com MySQL
&lt;/h3&gt;

&lt;p&gt;Agora que temos o Docker instalado, podemos executar os comandos referente a ele. Primeiramente devemos baixar a imagem do MySQL. Usaremos a versão mais recente com a flag "latest"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker pull mysql:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8ZllnMbQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zl7itk0r3b2y0l8a6nas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8ZllnMbQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zl7itk0r3b2y0l8a6nas.png" alt="Instalação da imagem MySQL" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você pode conferir os detalhes da imagem com o comando&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JtNraG73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k8kclsjxapbd3f3653g4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JtNraG73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k8kclsjxapbd3f3653g4.png" alt="Imagens instaladas" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora vamos criar um novo container com base na imagem que baixamos anteriormente&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker run --name mysqlbd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--72eeBftk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xuirv3zjw7g3t0r44wep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--72eeBftk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xuirv3zjw7g3t0r44wep.png" alt="Inicializando o container MySQL" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lembrando que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;mysqlbd&lt;/code&gt; é o nome do nosso container (você pode escolher qualquer nome que seja fácil para você)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-p&lt;/code&gt; é o parâmetro para definir qual porta utilizaremos (no caso, 3306)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MYSQL_ROOT_PASSWORD=root&lt;/code&gt; define que o usuário e senha sejam 'root'&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mysql&lt;/code&gt; ao final define qual é a imagem base para o nosso container&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você pode conferir se o container esá em execução usando o comando&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z-Rd6T6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pmpwvlfvm39pqfwj5cyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z-Rd6T6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pmpwvlfvm39pqfwj5cyp.png" alt="Container executando" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  MySQL Workbench
&lt;/h3&gt;

&lt;p&gt;Agora a parte mais simples que é conectar no nosso Workbench. O nosso container está sendo executado em localhost, ou seja, no IP 127.0.0.1&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W5yIepJi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/25fisk3hemd4vac9hq1q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W5yIepJi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/25fisk3hemd4vac9hq1q.png" alt="MySQL Workbench" width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao clicar em 'Test connection' iremos receber uma mensagem de sucesso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8H07B7gm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q1u4ztoh1x95hxo7efm5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8H07B7gm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q1u4ztoh1x95hxo7efm5.png" alt="Sucesso" width="458" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora você pode brincar com seu container MySQL para seus estudos e testes :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GaqtRlK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ecbhvvmxqq93yl2bhzof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GaqtRlK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ecbhvvmxqq93yl2bhzof.png" alt="MySQL Workbench" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso queira parar o container, execute&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker stop nome_do_container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No nosso caso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker stop mysqlbd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você escolheu outro nome e não se lembra, basta executar sudo &lt;code&gt;docker ps -a&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Agora você aprendeu a baixar uma imagem MySQL, criar um container e se conectar a ele localhost. O próximo passo é usar esse docker para uma conexão local ou até mesmo via IP pela internet.&lt;/p&gt;

&lt;p&gt;Sucesso e abraço 👋&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>docker</category>
      <category>archlinux</category>
      <category>workbench</category>
    </item>
    <item>
      <title>Nossos dispositivos nunca serão o suficiente</title>
      <dc:creator>Higor Silva</dc:creator>
      <pubDate>Mon, 25 Dec 2023 03:28:04 +0000</pubDate>
      <link>https://dev.to/higorslva/nossos-dispositivos-nunca-serao-o-suficiente-5b0i</link>
      <guid>https://dev.to/higorslva/nossos-dispositivos-nunca-serao-o-suficiente-5b0i</guid>
      <description>&lt;p&gt;Ano após ano, semestre após semestre, somos apresentados a um mundo novo. Apple, Samsung, Xiaomi e outros fazem de seus dispositivos um verdadeiro evento. Um espetáculo, sempre acompanhado de artistas e celebridades para o anúncio de um novo smartphone. Câmeras quíntuplas, sensores de cor, de profundidade e aproximação de altíssima performance, possibilidade de gravação de vídeos em 8K60FPS, quantidade de RAM maior que muitos notebooks e desktops intermediários, processamento beirando 3, 4Ghz. Mas vem uma questão: &lt;strong&gt;Isso realmente é necessário?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ejvDsIGV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zdub4f4zw4n1mqlyfwn7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ejvDsIGV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zdub4f4zw4n1mqlyfwn7.jpg" alt="Evento de lançamento do Samsung Galaxy Note 8" width="705" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa é uma pergunta muito complexa, e se me permite um &lt;a href="https://pt.wikipedia.org/wiki/Spoiler_(m%C3%ADdia)"&gt;spoiler&lt;/a&gt;, aqui vai: Não sei responder. O intuito não é cagar regra sobre suas escolhas, mas apenas fazer você refletir.&lt;/p&gt;

&lt;p&gt;Aqui tomei como exemplo os smartphones pois são algo que nunca sairão de moda, na minha visão. Há uma estimativa de &lt;a href="https://www.bankmycell.com/blog/how-many-phones-are-in-the-world"&gt;6.64 bilhões de smartphones&lt;/a&gt; no mundo em 2021 e a cada ano esse número apenas aumenta. Isso equivale hoje (2022) 83,72% da população mundial, para se ter uma ideia.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aizRcRkt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1iamtw3awqv4fqoowgyx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aizRcRkt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1iamtw3awqv4fqoowgyx.jpeg" alt="Smartphones — ou como ouvi de um professor: “Nossas próteses digitais”." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas, voltando à pergunta principal: Por que você precisa de um processador de última linha, desempenho altíssimo, gigas e gigas de memória RAM se você apenas usa redes sociais? É realmente necessário você ter o último top de linha do ano?&lt;/p&gt;

&lt;p&gt;Em uma estimativa publicada no &lt;a href="https://www.bbc.com/portuguese/geral-59974046"&gt;BBC&lt;/a&gt;, os brasileiros passaram cerca de 1/3 de suas horas acordadas usando o smartphone. Isso equivale a aproximadamente cinco horas e meia, todos os dias, na frente de uma tela pequena. Se me permite ser um pouco &lt;a href="https://pt.wikipedia.org/wiki/OK_Boomer"&gt;boomer&lt;/a&gt;, porquê não passarmos essas horas (ou parte delas) com nossos amigos, familiares ou com outros lazeres?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do ponto de vista comercial e tecnológico, “a tela grande está lentamente morrendo, enquanto o celular continua a quebrar recordes em todas as categorias — tempo gasto, downloads e receita (gerada)”, afirmou o executivo-chefe da App Annie, Theodore Krantz&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O ser humano é um ser competitivo. Se há uma opção melhor, é muito provável que ele irá atrás dela. As empresas sabem disso, por isso o lançamento anual do mesmo smartphone mas com umas melhorias aqui e ali. No fim das contas, usamos nosso dispositivos para os mesmos fins. Gastar R$6k em algo que você usa apenas 10% da capacidade total dele não faz sentido.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lo8_3eCq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/plg13fnuyixznu4gxpgo.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lo8_3eCq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/plg13fnuyixznu4gxpgo.jpeg" alt="Evolução das câmeras do iPhone" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As empresas sabem disso, por isso o motivo de marketing girar em torno de eventos; por que, vamos combinar, você ter um aparelho que foi lançado por um artista que você admira muito é bem diferente (e você se sente melhor) do que apenas ir numa loja e pegar um mais em conta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Um lembrete: Não estou demonizando dispositivos tecnológicos, nem nada do tipo. Se você é fotógrafo, programador, ou editor de vídeo e usa seu smartphone para esses fins profissionalmente, esse artigo não é para você. Devemos separar o que é consumismo de investimento.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;De todo modo, você pode ter uma opinião distinta. O consumismo está dominando nossa mente e nossa vida, fazendo com que gastemos muito mais do que realmente importa nas nossas vidas. Infelizmente muita gente ainda não tem controle financeiro e isso acaba prejudicando sua saúde mental, sempre em estado de comparação e querer sempre o melhor, não importa o quanto isso custe.&lt;/p&gt;

&lt;p&gt;Abraços e se cuidem.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;originalmente escrito em março de 2022&lt;/em&gt;&lt;/p&gt;

</description>
      <category>community</category>
      <category>writing</category>
      <category>smartphones</category>
    </item>
    <item>
      <title>Setup de desenvolvimento + estudos com Arch Linux</title>
      <dc:creator>Higor Silva</dc:creator>
      <pubDate>Mon, 12 Dec 2022 18:54:02 +0000</pubDate>
      <link>https://dev.to/higorslva/setup-de-desenvolvimento-estudos-com-arch-linux-3n95</link>
      <guid>https://dev.to/higorslva/setup-de-desenvolvimento-estudos-com-arch-linux-3n95</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2F3pad9rd3z1f4xr3got4e.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.amazonaws.com%2Fuploads%2Farticles%2F3pad9rd3z1f4xr3got4e.png" alt="Arch Linux com KDE Plasma customizado" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Se você trabalha e ou estuda programação e desenvolvimento, já se deparou com a constante briga pela internet: Qual sistema operacional utilizar? Quais softwares e bibliotecas eu deveria ter? Não direi "Eis aqui a resposta", mas sim "Eis como eu configuro meu ambiente de desenvolvimento".&lt;/p&gt;
&lt;h2&gt;
  
  
  Afinal, sistemas base Linux ou Windows?
&lt;/h2&gt;

&lt;p&gt;Primeiro de tudo, você pode sim usar Windows. Ao contrário do que muitas pessoas falam, é possível desenvolver no sistema da Microsoft sem muitos problemas. Muitos softwares e frameworks rodam tranquilamente por lá. O que você deve levar em consideração é a facilidade para isso.&lt;br&gt;
O Windows, pela minha experiência, é um pouco mais complicado durante as configurações do ambiente, enquanto no Linux posso fazer tudo com algumas poucas linhas de comando. Mas isso é a minha visão, você pode ter a sua e tá tudo bem :)&lt;/p&gt;
&lt;h2&gt;
  
  
  Beleza, mas por quê Arch Linux?
&lt;/h2&gt;

&lt;p&gt;Ubuntu é, sem dúvida, o sistema baseado em Linux mais popular até aqui e é considerado a porta de entrada para muitos iniciantes por ser estável e com uma vasta comunidade caso você tenha algum problema. A minha questão, aqui, está com os pacotes.&lt;br&gt;
Para um usuário comum, pouco importa a versão dos pacotes. Como o Ubuntu prioriza estabilidade, faz sentido você ter pacotes um pouco mais antigos pois foram debugados por mais tempo. E, dependendo do que você desenvolve, já é mais que o suficiente.&lt;br&gt;
Para mim, que gosto sempre de receber as últimas atualizações dos softwares, esperar 6 meses entre versões atacaria a minha ansiedade. Por isso escolhi sistemas do tipo "Rolling Release" e "bleeding edge". Dentre eles, o Arch Linux é o mais popular e portanto, a minha escolha.&lt;/p&gt;
&lt;h2&gt;
  
  
  Ambiente Gráfico
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2F9f1mf75gwsndwi1vr29r.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.amazonaws.com%2Fuploads%2Farticles%2F9f1mf75gwsndwi1vr29r.png" alt="KDE Plasma sem modificações" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Dentre os ambientes gráficos mais populares, a minha escolha foi o KDE Plasma. É um ambiente leve e moderno, além de ser altamente personalizável e ter mais recursos. Eu poderia ter escolhido o Gnome, mas, ao meu gosto, ele é bem padrão e "out of the box". Gosto dele, mas não pra ser meu ambiente gráfico principal.&lt;/p&gt;
&lt;h2&gt;
  
  
  KDE Plasma ou MacOS?
&lt;/h2&gt;

&lt;p&gt;Uma coisa sou obrigado a admitir: O visual do MacOS é o mais bonito dentre todos os sistemas operacionais. A disposição com uma barra de status com menu global, uma dock flutuante e o design minimalista me atrai e muito. Como o KDE Plasma é altamente customizável, inspirei 90% das minhas modificações com o MacOS. Não entrarei em detalhes ainda sobre como modifiquei, fica para um próximo post :)&lt;/p&gt;
&lt;h2&gt;
  
  
  Softwares e bibliotecas
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Terminal: Zsh, oh-my-zsh e plugins
&lt;/h3&gt;

&lt;p&gt;Por padrão, o terminal do Arch Linux é o bash e, embora seja suficiente para muita gente, prefiro o Zsh com os plugins Oh My Zsh e o tema Jovial. Para instalar o Zsh no Arch Linux, basta executar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em seguida, para o Oh My Zsh:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Durante a instalação, o script perguntará se deseja alterar seu shell padrão para o Zsh. Responda que sim e estará feito :)&lt;br&gt;
Para a instalação do Jovial, tudo será feito com um único comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -sSL https://github.com/zthxxx/jovial/raw/master/installer.sh | sudo -E bash -s ${USER:=`whoami`}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.amazonaws.com%2Fuploads%2Farticles%2Fuucrl7wam148of0ugxhz.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.amazonaws.com%2Fuploads%2Farticles%2Fuucrl7wam148of0ugxhz.png" alt="Zsh + oh-my-zsh + Jovial" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Todas as features do Jovial estão na &lt;a href="https://github.com/zthxxx/jovial" rel="noopener noreferrer"&gt;documentação&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Suporte ao AUR (Arch User Repository)
&lt;/h3&gt;

&lt;p&gt;O Arch Linux tem seu repositório próprio, mas um de seus diferenciais é o AUR, onde como o próprio nome diz, é um repositório dos usuários. Caso o software que você procura não esteja nos repositórios oficiais, há grande chance de ele estar no AUR. Lembrem sempre de conferir o aquivo PKGBUILD para garantir que nada de malicioso será instalado (e veja também pelo site os comentários).&lt;br&gt;
Para usá-lo de forma automatizada, eu uso o pacote Yay (Yet Another Yogurt), que possui a mesma sintaxe do 'pacman' e facilita demais seu uso. Para instalá-lo, você deve ter os pacotes 'git' e 'base-devel' instalados:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S --needed git base-devel &amp;amp;&amp;amp; git clone https://aur.archlinux.org/yay.git &amp;amp;&amp;amp; cd yay &amp;amp;&amp;amp; makepkg -si
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Navegador: Firefox e Brave
&lt;/h3&gt;

&lt;p&gt;Sempre alterno entre ambos os navegadores, mas atualmente minha escolha é com o Brave. Como priorizo sincronização entre dispositivos e o Firefox no Android, ao meu ver, ainda é um pouco lento, preferi o Brave nesse quesito. No ArchLinux, o Firefox está disponível nos repositórios oficiais:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S firefox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enquanto o Brave está no AUR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yay -S brave-bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.amazonaws.com%2Fuploads%2Farticles%2F1rf9oe8td64zm5jo3as6.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.amazonaws.com%2Fuploads%2Farticles%2F1rf9oe8td64zm5jo3as6.png" alt="Página inicial do Brave Browser" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Git e chaves SSH
&lt;/h3&gt;

&lt;p&gt;Caso não tenha instalado, iremos instalar a ferramenta 'git'&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E em seguida configuramos com a nossa conta do GitHub&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "Your Name"
git config --global user.email your@email.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso você possua autenticação de dois fatores no GitHub, sabe que é um saco ter que copiar e colar o token pra cada transação (git push principalmente). Para evitar isso (e manter a conta segura), podemos usar chaves SSH. No meu caso, que possuo backups delas em um ssd externo, posso restaurar com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cp -R /media/higorslva/ssd-backup/backups/.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mudo as permissões:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod 700 ~/.ssh
chmod 644 ~/.ssh/id_ed25519.pub #Sua chave pública
chmod 600 ~/.ssh/id_ed25519     #Sua chave privada
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Iniciamos e adicionamos a chave ssh no agente ssh:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos testar a conexão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -T git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.amazonaws.com%2Fuploads%2Farticles%2Ff17rlt5jy4bwzh6hgs75.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.amazonaws.com%2Fuploads%2Farticles%2Ff17rlt5jy4bwzh6hgs75.png" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com isso podemos fazer ações do GitHub sem precisar digitar nossa credencial toda hora. &lt;br&gt;
Caso não possua chaves ssh, dê uma olhada na documentação para adicioná-la na sua conta do GitHub.&lt;/p&gt;
&lt;h3&gt;
  
  
  Editores de texto
&lt;/h3&gt;

&lt;p&gt;Meu editor principal não é o VS Code, embora eu ainda o utilize bastante. Uso atualmente o Helix Editor, um editor de texto em terminal baseado fortemente no Vim, inclusive com os mesmos comandos.&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.amazonaws.com%2Fuploads%2Farticles%2F4bh6m4bjmotd1nmjsz5c.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.amazonaws.com%2Fuploads%2Farticles%2F4bh6m4bjmotd1nmjsz5c.png" alt="Helix Editor ou " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para um desenvolvimento mais "complexo", uso o Visual Studio Code, principalmente para projetos em Java e Python.&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.amazonaws.com%2Fuploads%2Farticles%2F3l5kavukenb62mvbo70x.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.amazonaws.com%2Fuploads%2Farticles%2F3l5kavukenb62mvbo70x.png" alt="VS Code com tema Monokai" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É possível instalar o VSCode direto do repositório oficial do Arch Linux, porém, é a versão "Code - OSS". O que impossibilita a instalação de algumas extensões que são cruciais para meu uso. Por isso vamos usar o AUR para instalar a versão oficial (convertida da versão para Ubuntu/Debian)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yay -S visual-studio-code-bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Java e Python
&lt;/h3&gt;

&lt;p&gt;Costumo usar o Java sempre na versão mais recente (Atualmente a versão 19). Podemos instalar a versão mais recente do Java com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S jdk-openjdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E o Python, caso não esteja instalado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Programas Adicionais
&lt;/h3&gt;

&lt;p&gt;Outros programas que costumo usar são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Oracle VirtualBox&lt;/strong&gt;: Para máquinas virtuais;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GIMP e Inkscape&lt;/strong&gt;: Para edição de imagens e vetorização, respectivamente;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geogebra&lt;/strong&gt;: Para gráficos (útil em aulas de Cálculo);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LibreOffice&lt;/strong&gt;: Alternativa ao MSOffice, para documentos;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guitarix&lt;/strong&gt;: Simulador de amp e efeitos para guitarra;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TexStudio&lt;/strong&gt;: Criação de documentos em LaTeX;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
