<?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: Kaique de Miranda</title>
    <description>The latest articles on DEV Community by Kaique de Miranda (@kbdemiranda).</description>
    <link>https://dev.to/kbdemiranda</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%2F554171%2Fd6586d62-3a00-4d51-b93c-c520f5a6085c.png</url>
      <title>DEV Community: Kaique de Miranda</title>
      <link>https://dev.to/kbdemiranda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kbdemiranda"/>
    <language>en</language>
    <item>
      <title>Usando o Oh My Zsh!</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Tue, 28 Oct 2025 12:16:52 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/usando-o-oh-my-zsh-489l</link>
      <guid>https://dev.to/kbdemiranda/usando-o-oh-my-zsh-489l</guid>
      <description>&lt;h2&gt;
  
  
  O que é o Oh My Zsh?
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;Oh My Zsh&lt;/strong&gt; é um framework open source para o shell &lt;strong&gt;Zsh&lt;/strong&gt;, uma alternativa poderosa ao tradicional &lt;strong&gt;Bash&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Ele facilita a personalização do seu terminal, oferecendo &lt;strong&gt;temas&lt;/strong&gt;, &lt;strong&gt;plugins&lt;/strong&gt; e várias melhorias que tornam o uso da linha de comando mais produtivo e agradável.&lt;/p&gt;

&lt;p&gt;Se você é desenvolvedor e passa boa parte do tempo no terminal, o Oh My Zsh pode turbinar sua rotina e deixar o ambiente com a sua cara. ⚡&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Aviso importante:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ao final deste guia, você encontrará um &lt;strong&gt;script de automação&lt;/strong&gt; que instala e configura o &lt;strong&gt;Oh My Zsh&lt;/strong&gt;, junto com plugins e tema, de forma totalmente automática.&lt;br&gt;&lt;br&gt;
Se preferir seguir o passo a passo manual, pode continuar normalmente — o script é opcional e serve apenas para facilitar a configuração.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Pré-requisitos
&lt;/h2&gt;

&lt;p&gt;Antes de instalar o Oh My Zsh, garanta que você tem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zsh&lt;/strong&gt; instalado
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt; instalado (usado para gerenciar temas e plugins)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verifique se o Git está instalado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se o comando retornar a versão do Git, está tudo certo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalando o Zsh
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Ubuntu / Debian
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;zsh &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Fedora
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;zsh &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  macOS (via Homebrew)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Windows (via WSL)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Instale o &lt;strong&gt;WSL&lt;/strong&gt; se ainda não tiver — veja as &lt;a href="https://learn.microsoft.com/pt-br/windows/wsl/install" rel="noopener noreferrer"&gt;instruções oficiais&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Abra sua distro (ex: Ubuntu).&lt;/li&gt;
&lt;li&gt;Siga o mesmo comando de instalação do Linux acima.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Definindo o Zsh como padrão
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;chsh &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;which zsh&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feche e reabra o terminal — ele agora usará o Zsh por padrão.&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalando o Oh My Zsh
&lt;/h2&gt;

&lt;p&gt;A forma mais simples é via script oficial:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou, se preferir usar &lt;code&gt;wget&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh &lt;span class="nt"&gt;-O&lt;/span&gt; -&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após isso, o Zsh já estará com o Oh My Zsh ativado. 🎉&lt;/p&gt;




&lt;h2&gt;
  
  
  Configurando plugins no Oh My Zsh
&lt;/h2&gt;

&lt;p&gt;Os &lt;strong&gt;plugins&lt;/strong&gt; adicionam funcionalidades extras ao Zsh — como autocompletar, destaque de sintaxe e busca rápida de histórico.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Encontrando plugins
&lt;/h3&gt;

&lt;p&gt;Lista completa de plugins oficiais:&lt;br&gt;
👉 &lt;a href="https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins" rel="noopener noreferrer"&gt;https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Instalando e ativando um plugin
&lt;/h3&gt;

&lt;p&gt;Abra o arquivo de configuração:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Encontre a linha que começa com &lt;code&gt;plugins=(&lt;/code&gt; e adicione o nome do plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;git zsh-autosuggestions&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Salve e recarregue o arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Plugin: zsh-syntax-highlighting
&lt;/h2&gt;

&lt;p&gt;Esse plugin &lt;strong&gt;destaca a sintaxe dos comandos&lt;/strong&gt; enquanto você digita — ótimo pra evitar erros.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="se"&gt;\&lt;/span&gt;
~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicione ao &lt;code&gt;.zshrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;zsh-syntax-highlighting&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Recarregue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡 &lt;strong&gt;Dica:&lt;/strong&gt; mantenha o &lt;code&gt;zsh-syntax-highlighting&lt;/code&gt; como o &lt;strong&gt;último plugin&lt;/strong&gt; da lista — isso evita conflitos.&lt;/p&gt;




&lt;h2&gt;
  
  
  Plugin: zsh-autosuggestions
&lt;/h2&gt;

&lt;p&gt;Esse plugin &lt;strong&gt;sugere comandos automaticamente&lt;/strong&gt; com base no seu histórico.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-autosuggestions.git &lt;span class="se"&gt;\&lt;/span&gt;
~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicione ao &lt;code&gt;.zshrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;zsh-autosuggestions&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Recarregue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As sugestões aparecerão em &lt;strong&gt;cinza claro&lt;/strong&gt; — pressione &lt;strong&gt;→ (seta direita)&lt;/strong&gt; para aceitar.&lt;/p&gt;




&lt;h2&gt;
  
  
  Plugin: fzf
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;fzf&lt;/strong&gt; é um buscador interativo super útil para navegar em arquivos, diretórios e histórico de comandos.&lt;/p&gt;

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

&lt;p&gt;No macOS e Ubuntu (via gerenciador de pacotes):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;fzf

&lt;span class="c"&gt;# Ubuntu/Debian&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;fzf &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou, manualmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois, adicione ao &lt;code&gt;.zshrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;fzf&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Recarregue o shell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Atalhos úteis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Ctrl + T&lt;/code&gt;: buscar e selecionar arquivos&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl + R&lt;/code&gt;: buscar no histórico de comandos&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Alt + C&lt;/code&gt;: navegar entre diretórios&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Personalizando o visual com temas
&lt;/h2&gt;

&lt;p&gt;O Oh My Zsh vem com &lt;strong&gt;diversos temas prontos&lt;/strong&gt;.&lt;br&gt;
Confira a lista:&lt;br&gt;
👉 &lt;a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Themes" rel="noopener noreferrer"&gt;https://github.com/ohmyzsh/ohmyzsh/wiki/Themes&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Mudando o tema
&lt;/h3&gt;

&lt;p&gt;Abra o arquivo &lt;code&gt;.zshrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Procure a linha:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"robbyrussell"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Troque o valor, por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"agnoster"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Recarregue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡 &lt;strong&gt;Dica:&lt;/strong&gt; se usar o tema &lt;em&gt;Powerlevel10k&lt;/em&gt;, instale a fonte “MesloLGS NF” para exibir ícones corretamente.&lt;/p&gt;




&lt;h2&gt;
  
  
  Automatizando a instalação com script 💡
&lt;/h2&gt;

&lt;p&gt;Quer economizar tempo?&lt;br&gt;
Você pode automatizar todo o processo com um script que instala o &lt;strong&gt;Oh My Zsh&lt;/strong&gt;, os &lt;strong&gt;plugins&lt;/strong&gt; e ajusta o &lt;code&gt;.zshrc&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Crie um arquivo &lt;code&gt;setup-zsh.sh&lt;/code&gt; e cole:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/zsh&lt;/span&gt;

&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="p"&gt;~/.oh-my-zsh/custom&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Instala o Oh My Zsh se não existir&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.oh-my-zsh"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"🚀 Instalando Oh My Zsh..."&lt;/span&gt;
  sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;else
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✅ Oh My Zsh já está instalado"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Define o Zsh como shell padrão&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$SHELL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;which zsh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"🔄 Alterando shell padrão para Zsh"&lt;/span&gt;
  chsh &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;which zsh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Função para instalar plugins&lt;/span&gt;
install_plugin&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;repo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$target&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"📦 Instalando plugin: &lt;/span&gt;&lt;span class="nv"&gt;$repo&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    git clone &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$repo&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$target&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✅ Plugin já existe: &lt;/span&gt;&lt;span class="nv"&gt;$repo&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Plugins&lt;/span&gt;
install_plugin https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="nv"&gt;$ZSH_CUSTOM&lt;/span&gt;/plugins/zsh-syntax-highlighting
install_plugin https://github.com/zsh-users/zsh-autosuggestions.git &lt;span class="nv"&gt;$ZSH_CUSTOM&lt;/span&gt;/plugins/zsh-autosuggestions

&lt;span class="c"&gt;# Instala o fzf&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.fzf"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"📦 Instalando fzf..."&lt;/span&gt;
  git clone &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 https://github.com/junegunn/fzf.git ~/.fzf
  ~/.fzf/install &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;span class="k"&gt;else
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✅ fzf já está instalado"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Atualiza plugins no .zshrc&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s2"&gt;"zsh-syntax-highlighting"&lt;/span&gt; ~/.zshrc&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"🔧 Adicionando plugins no ~/.zshrc"&lt;/span&gt;
  &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="s1"&gt;'/^plugins=/ s/)/ zsh-syntax-highlighting zsh-autosuggestions fzf)/'&lt;/span&gt; ~/.zshrc
&lt;span class="k"&gt;else
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✅ Plugins já configurados"&lt;/span&gt;
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✨ Configuração concluída! Reinicie o terminal."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois, execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x setup-zsh.sh
./setup-zsh.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse script:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instala o &lt;strong&gt;Oh My Zsh&lt;/strong&gt; e define o &lt;strong&gt;Zsh como padrão&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configura os plugins &lt;code&gt;zsh-syntax-highlighting&lt;/code&gt;, &lt;code&gt;zsh-autosuggestions&lt;/code&gt; e &lt;code&gt;fzf&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Evita duplicações no &lt;code&gt;.zshrc&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perfeito pra setups novos ou máquinas recém-formatadas. 🚀&lt;/p&gt;




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

&lt;p&gt;O Oh My Zsh é uma das formas mais simples e poderosas de transformar o terminal em uma ferramenta de produtividade.&lt;br&gt;
Combinando &lt;strong&gt;plugins úteis&lt;/strong&gt; e um &lt;strong&gt;tema visual personalizado&lt;/strong&gt;, seu ambiente fica mais rápido, bonito e eficiente.&lt;/p&gt;

&lt;p&gt;Experimente diferentes combinações e encontre o setup ideal pro seu fluxo de trabalho.&lt;br&gt;
E se quiser ir além, crie seus próprios scripts e automatize ainda mais seu ambiente. ⚙️&lt;/p&gt;

</description>
      <category>zsh</category>
      <category>terminal</category>
      <category>ohmyzsh</category>
      <category>produtividade</category>
    </item>
    <item>
      <title>Alternando navegadores padrão no macOS via terminal</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Tue, 29 Jul 2025 01:55:05 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/alternando-navegadores-padrao-no-macos-via-terminal-3ccg</link>
      <guid>https://dev.to/kbdemiranda/alternando-navegadores-padrao-no-macos-via-terminal-3ccg</guid>
      <description>&lt;p&gt;Mudar o navegador padrão no macOS geralmente envolve abrir as configurações do sistema e selecionar manualmente o browser desejado. Mas e se você quiser alternar entre navegadores rapidamente via terminal? Foi exatamente essa necessidade que me levou a buscar uma solução simples e eficiente — especialmente alternando entre &lt;strong&gt;Opera GX&lt;/strong&gt; e &lt;strong&gt;Opera Air&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Neste artigo, vou te mostrar como fazer isso usando uma ferramenta leve chamada &lt;code&gt;defaultbrowser&lt;/code&gt;, além de explicar uma limitação importante do macOS e como contorná-la (com um toque de automação, se necessário).&lt;/p&gt;




&lt;h2&gt;
  
  
  Por que automatizar a troca do navegador padrão?
&lt;/h2&gt;

&lt;p&gt;No meu fluxo de trabalho, uso navegadores diferentes para contextos distintos. O Opera GX, por exemplo, uso para tarefas mais intensas ou perfis específicos de trabalho, enquanto o Opera Air serve como um navegador limpo para testes ou navegação casual. Trocar manualmente várias vezes ao dia é... chato. Daí veio a ideia de automatizar isso.&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalando o &lt;code&gt;defaultbrowser&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Primeiro, você vai precisar instalar a ferramenta &lt;code&gt;defaultbrowser&lt;/code&gt; via Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;defaultbrowser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa ferramenta permite listar os navegadores registrados no sistema e alternar entre eles via terminal.&lt;/p&gt;




&lt;h2&gt;
  
  
  Listando navegadores disponíveis
&lt;/h2&gt;

&lt;p&gt;Após a instalação, rode o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;defaultbrowser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você verá algo assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  safari
  edgemac
  browser
  chrome
  operagx
  operaair
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esses nomes são os identificadores usados pela ferramenta para cada navegador.&lt;/p&gt;




&lt;h2&gt;
  
  
  Alternando entre navegadores
&lt;/h2&gt;

&lt;p&gt;Agora, para alternar, basta usar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;defaultbrowser operagx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;defaultbrowser operaair
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso muda o navegador padrão do sistema para o escolhido.&lt;/p&gt;




&lt;h2&gt;
  
  
  A janela de confirmação do macOS
&lt;/h2&gt;

&lt;p&gt;Mesmo usando &lt;code&gt;defaultbrowser&lt;/code&gt;, o macOS pode exibir uma janela como esta:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Do you want to change your default browser to ‘Opera Air’ or keep using ‘Opera GX’?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Essa confirmação foi introduzida em versões recentes do macOS como medida de segurança contra alterações silenciosas feitas por apps maliciosos.&lt;/p&gt;

&lt;p&gt;Infelizmente, &lt;strong&gt;não existe uma forma oficial de desativar essa janela&lt;/strong&gt; via terminal ou flag. A Apple força essa validação como proteção ao usuário.&lt;/p&gt;




&lt;h2&gt;
  
  
  Contornando com automação (AppleScript)
&lt;/h2&gt;

&lt;p&gt;Se você realmente quiser automatizar esse clique, é possível usar AppleScript + permissões de acessibilidade para simular o clique no botão "Use".&lt;/p&gt;

&lt;p&gt;Exemplo de script (experimental):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight applescript"&gt;&lt;code&gt;&lt;span class="k"&gt;tell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;application&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"System Events"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="k"&gt;tell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CoreServicesUIAgent"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nv"&gt;click&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Use \"Opera Air\""&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;window&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;tell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;tell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Salve como &lt;code&gt;.scpt&lt;/code&gt; e execute com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;osascript caminho/script.scpt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso requer que você habilite permissões de acessibilidade para o Terminal em:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Preferências do Sistema &amp;gt; Segurança e Privacidade &amp;gt; Acessibilidade&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;Mesmo com a confirmação do sistema, é possível ganhar produtividade alternando navegadores via terminal. Com &lt;code&gt;defaultbrowser&lt;/code&gt;, você tem um atalho poderoso para lidar com múltiplos navegadores — seja para testar aplicações, manter perfis separados ou simplesmente otimizar seu uso diário.&lt;/p&gt;

</description>
      <category>macos</category>
      <category>terminal</category>
      <category>browser</category>
    </item>
    <item>
      <title>Instalação e Configuração do DeepSeek com Open WebUI</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Fri, 07 Feb 2025 13:43:51 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/instalacao-e-configuracao-do-deepseek-com-open-webui-5284</link>
      <guid>https://dev.to/kbdemiranda/instalacao-e-configuracao-do-deepseek-com-open-webui-5284</guid>
      <description>&lt;p&gt;Este guia explica como instalar o &lt;strong&gt;Ollama&lt;/strong&gt;, baixar o modelo &lt;strong&gt;DeepSeek&lt;/strong&gt;, e configurar o &lt;strong&gt;Open WebUI&lt;/strong&gt; para rodar na porta &lt;strong&gt;3000&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Instalação do Ollama
&lt;/h2&gt;

&lt;p&gt;O Ollama é um runtime para executar modelos de IA localmente.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1.1 Baixar e Instalar&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Acesse o site oficial e baixe a versão apropriada para seu sistema operacional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama - Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depois de instalado, verifique se o Ollama está funcionando corretamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se o comando retornar a versão do Ollama, a instalação foi bem-sucedida.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Baixar o Modelo DeepSeek
&lt;/h2&gt;

&lt;p&gt;Agora, baixe o modelo DeepSeek diretamente pelo Ollama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull deepseek-r1:1.5b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso precise de um modelo maior, substitua &lt;code&gt;1.5b&lt;/code&gt; por &lt;code&gt;8b&lt;/code&gt;, &lt;code&gt;14b&lt;/code&gt; ou &lt;code&gt;32b&lt;/code&gt;, conforme a capacidade do seu hardware.&lt;/p&gt;

&lt;p&gt;Para testar se o modelo funciona, execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run deepseek-r1:1.5b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Instalação do Open WebUI via Docker
&lt;/h2&gt;

&lt;p&gt;Para facilitar o uso do DeepSeek, utilizamos o &lt;strong&gt;Open WebUI&lt;/strong&gt;, uma interface amigável para modelos de IA.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3.1 Instalar o Docker&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Se ainda não tiver o Docker instalado, baixe e instale-o aqui:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.docker.com/get-started" rel="noopener noreferrer"&gt;Docker - Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verifique se o Docker está rodando corretamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;3.2 Baixar e Executar o Open WebUI&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Agora, baixe e inicie o container do Open WebUI na porta &lt;strong&gt;3000&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; open-webui &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3000 &lt;span class="nt"&gt;-v&lt;/span&gt; open-webui-data:/app/data &lt;span class="nt"&gt;--pull&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;always ghcr.io/open-webui/open-webui:main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se precisar parar e remover o container, utilize:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; open-webui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E depois recrie com o comando acima.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Teste e Configuração do Open WebUI
&lt;/h2&gt;

&lt;p&gt;Após iniciar o Open WebUI, acesse no navegador:&lt;/p&gt;

&lt;p&gt;➡️ &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se a página não carregar, verifique se o container está rodando corretamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps | &lt;span class="nb"&gt;grep &lt;/span&gt;open-webui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se precisar ver os logs para encontrar erros:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs open-webui &lt;span class="nt"&gt;--follow&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Conectar o DeepSeek ao Open WebUI
&lt;/h2&gt;

&lt;p&gt;Dentro do Open WebUI, configure uma nova conexão para o modelo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Acesse &lt;strong&gt;Administração&lt;/strong&gt; dentro do Open WebUI.&lt;/li&gt;
&lt;li&gt;Adicione uma nova conexão OpenAI com as seguintes configurações:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;URL:&lt;/strong&gt; &lt;code&gt;http://127.0.0.1:11434/v1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chave API:&lt;/strong&gt; &lt;code&gt;none&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Isso permitirá que você utilize o DeepSeek via WebUI.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Testando o Modelo no Open WebUI
&lt;/h2&gt;

&lt;p&gt;Agora, teste enviando uma pergunta no chat. Se tudo estiver configurado corretamente, o DeepSeek deve responder!&lt;/p&gt;

&lt;p&gt;Se houver problemas, verifique:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs open-webui &lt;span class="nt"&gt;--follow&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou teste o DeepSeek diretamente no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run deepseek-r1:1.5b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;Agora você tem o &lt;strong&gt;DeepSeek&lt;/strong&gt; rodando localmente com uma interface web amigável no &lt;strong&gt;Open WebUI&lt;/strong&gt;! Se precisar trocar de modelo, basta rodar novamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull deepseek-r1:14b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E ajustar o Open WebUI para usá-lo.&lt;/p&gt;

&lt;p&gt;Para mais detalhes, acesse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama - Documentação&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/open-webui/open-webui" rel="noopener noreferrer"&gt;Open WebUI - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>deepseek</category>
      <category>ia</category>
      <category>ollama</category>
    </item>
    <item>
      <title>Como Instalar o Node.js LTS Usando o NVM</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Mon, 05 Aug 2024 02:28:52 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/como-instalar-o-nodejs-lts-usando-o-nvm-54ac</link>
      <guid>https://dev.to/kbdemiranda/como-instalar-o-nodejs-lts-usando-o-nvm-54ac</guid>
      <description>&lt;p&gt;Se você é um desenvolvedor JavaScript ou está entrando no mundo do desenvolvimento Node.js, provavelmente já ouviu falar sobre diferentes versões do Node.js e como a compatibilidade pode ser um problema em projetos diferentes. O &lt;strong&gt;Node Version Manager (NVM)&lt;/strong&gt; é uma ferramenta essencial para quem precisa gerenciar múltiplas versões do Node.js com facilidade.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é o NVM?
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;Node Version Manager (NVM)&lt;/strong&gt; é uma ferramenta que permite instalar, gerenciar e alternar entre diferentes versões do Node.js em seu ambiente de desenvolvimento. Isso é especialmente útil quando você trabalha em projetos que requerem versões específicas do Node.js ou quando você quer testar seu código em versões mais recentes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vantagens de usar o NVM:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Gerenciamento Fácil de Versões&lt;/strong&gt;: O NVM facilita o processo de instalação e troca entre diferentes versões do Node.js, permitindo que você se adapte rapidamente às necessidades do projeto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolamento de Ambiente&lt;/strong&gt;: Cada projeto pode ter sua própria versão do Node.js, evitando conflitos entre projetos que exigem diferentes versões do Node.js.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teste de Compatibilidade&lt;/strong&gt;: Com o NVM, você pode facilmente testar seu código em várias versões do Node.js para garantir compatibilidade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuração Simples&lt;/strong&gt;: O NVM é fácil de instalar e configurar, tornando-se uma ferramenta indispensável para desenvolvedores de todos os níveis de experiência.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Instalando o NVM
&lt;/h2&gt;

&lt;p&gt;Antes de instalar o Node.js usando o NVM, você precisa instalar o próprio NVM. Siga as etapas abaixo para configurar o NVM no seu sistema.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passo 1: Instalar o NVM
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Baixe o script de instalação&lt;/strong&gt; do NVM usando cURL ou wget.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Usando cURL&lt;/span&gt;
curl &lt;span class="nt"&gt;-o-&lt;/span&gt; &amp;lt;https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh&amp;gt; | bash

&lt;span class="c"&gt;# Usando wget&lt;/span&gt;
wget &lt;span class="nt"&gt;-qO-&lt;/span&gt; &amp;lt;https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh&amp;gt; | bash

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Recarregue seu shell&lt;/strong&gt; (ou reinicie seu terminal) para que as alterações façam efeito:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc   &lt;span class="c"&gt;# Para bash&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc    &lt;span class="c"&gt;# Para zsh&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.profile  &lt;span class="c"&gt;# Para outros&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Verifique se o NVM foi instalado corretamente&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nt"&gt;--version&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Você deverá ver a versão do NVM instalada.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Instalando o Node.js LTS com o NVM
&lt;/h2&gt;

&lt;p&gt;Agora que você tem o NVM instalado, pode usá-lo para instalar as versões LTS do Node.js.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalar a versão LTS 16
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instale o Node.js versão 16&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nb"&gt;install &lt;/span&gt;16

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Defina a versão 16 como a padrão&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nb"&gt;alias &lt;/span&gt;default 16

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Instalar a versão LTS 18
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instale o Node.js versão 18&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nb"&gt;install &lt;/span&gt;18

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Defina a versão 18 como a padrão&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nb"&gt;alias &lt;/span&gt;default 18

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Instalar a versão LTS 20
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instale o Node.js versão 20&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nb"&gt;install &lt;/span&gt;20

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Defina a versão 20 como a padrão&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nb"&gt;alias &lt;/span&gt;default 20

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Alternando Entre Versões do Node.js
&lt;/h2&gt;

&lt;p&gt;Com o NVM, alternar entre diferentes versões do Node.js é fácil. Você pode usar o comando &lt;code&gt;nvm use&lt;/code&gt; para especificar a versão que deseja usar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm use 16   &lt;span class="c"&gt;# Usar a versão 16&lt;/span&gt;
nvm use 18   &lt;span class="c"&gt;# Usar a versão 18&lt;/span&gt;
nvm use 20   &lt;span class="c"&gt;# Usar a versão 20&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;E aí, curtiu o NVM? Ele é um verdadeiro salvador para quem lida com várias versões do Node.js. Com ele, você gerencia suas versões de Node.js como um chef controlando sua cozinha: tudo na ponta do dedo e sem bagunça!&lt;/p&gt;

&lt;p&gt;Se você ainda não usa o NVM, tá esperando o quê? Vale muito a pena experimentar e ver como ele pode tornar sua vida de desenvolvedor muito mais tranquila. Com o NVM, você nunca mais vai precisar se preocupar com problemas de compatibilidade entre versões. É só escolher a versão certa para cada projeto e seguir o baile!&lt;/p&gt;

&lt;p&gt;Espero que este artigo tenha te ajudado a instalar e entender melhor como usar o NVM. Se tiver dúvidas ou quiser trocar uma ideia sobre como está usando o NVM nos seus projetos, deixa um comentário aí embaixo. Vamos aprender juntos!&lt;/p&gt;

&lt;p&gt;Boa codificação e até a próxima! 🚀&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>nvm</category>
    </item>
    <item>
      <title>Configurando o Spring com JPA e Microsoft SQL Server</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Tue, 02 Jul 2024 02:46:24 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/configurando-o-spring-com-jpa-e-microsoft-sql-server-4igm</link>
      <guid>https://dev.to/kbdemiranda/configurando-o-spring-com-jpa-e-microsoft-sql-server-4igm</guid>
      <description>&lt;p&gt;Configurar o banco de dados em um ambiente de desenvolvimento Java pode ser uma tarefa desafiadora, especialmente quando se trata de escolher o driver correto e configurar adequadamente as dependências. Aqui, vou compartilhar como configurar um ambiente Spring MVC utilizando JPA e o SQL Server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 1: Adicionando Dependências
&lt;/h2&gt;

&lt;p&gt;O primeiro passo é adicionar as dependências necessárias ao seu arquivo &lt;code&gt;pom.xml&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Dependência do MSSQL --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.microsoft.sqlserver&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;mssql-jdbc&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;7.2.2.jre8&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- Dependência do Spring Data JPA --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.springframework.boot&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;spring-boot-starter-data-jpa&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- Dependência do Spring Boot Starter Web --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.springframework.boot&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;spring-boot-starter-web&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Passo 2: Configurando o JPA
&lt;/h2&gt;

&lt;p&gt;Agora vamos criar a classe de configuração do JPA. Vou usar a nomenclatura &lt;code&gt;JPAConfiguration.java&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;br.com.meuprojeto.config&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.context.annotation.Bean&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.context.annotation.Configuration&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.context.annotation.Profile&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.jdbc.datasource.DriverManagerDataSource&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.orm.jpa.JpaTransactionManager&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.transaction.annotation.EnableTransactionManagement&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javax.persistence.EntityManagerFactory&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javax.sql.DataSource&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.Properties&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nd"&gt;@Configuration&lt;/span&gt;
&lt;span class="nd"&gt;@EnableTransactionManagement&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;JPAConfiguration&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Bean&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;LocalContainerEntityManagerFactoryBean&lt;/span&gt; &lt;span class="nf"&gt;entityManagerFactory&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;DataSource&lt;/span&gt; &lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Properties&lt;/span&gt; &lt;span class="n"&gt;additionalProperties&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;LocalContainerEntityManagerFactoryBean&lt;/span&gt; &lt;span class="n"&gt;factoryBean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;LocalContainerEntityManagerFactoryBean&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="nc"&gt;HibernateJpaVendorAdapter&lt;/span&gt; &lt;span class="n"&gt;vendorAdapter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;HibernateJpaVendorAdapter&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;factoryBean&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setJpaVendorAdapter&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vendorAdapter&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;factoryBean&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPackagesToScan&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"br.com.meuprojeto.loja.models"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;factoryBean&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDataSource&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;factoryBean&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setJpaProperties&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;additionalProperties&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;factoryBean&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@Bean&lt;/span&gt;
    &lt;span class="nd"&gt;@Profile&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"dev"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Properties&lt;/span&gt; &lt;span class="nf"&gt;additionalProperties&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;Properties&lt;/span&gt; &lt;span class="n"&gt;properties&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Properties&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;properties&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hibernate.dialect"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"org.hibernate.dialect.SQLServerDialect"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;properties&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hibernate.show_sql"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;properties&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hibernate.hbm2ddl.auto"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"create"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;properties&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"javax.persistence.schema-generation.scripts.create-target"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"db-schema.jpa.ddl"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;properties&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@Bean&lt;/span&gt;
    &lt;span class="nd"&gt;@Profile&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"dev"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;DriverManagerDataSource&lt;/span&gt; &lt;span class="nf"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;DriverManagerDataSource&lt;/span&gt; &lt;span class="n"&gt;dataSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DriverManagerDataSource&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setUsername&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"sa"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPassword&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Adicione sua senha aqui&lt;/span&gt;
        &lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setUrl&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"jdbc:sqlserver://127.0.0.1;databaseName=MeuProjeto;"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDriverClassName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"com.microsoft.sqlserver.jdbc.SQLServerDriver"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@Bean&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;JpaTransactionManager&lt;/span&gt; &lt;span class="nf"&gt;transactionManager&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;EntityManagerFactory&lt;/span&gt; &lt;span class="n"&gt;emf&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;JpaTransactionManager&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emf&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Destaques da Configuração
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;EntityManagerFactory Bean&lt;/strong&gt;: Configura o &lt;code&gt;EntityManagerFactory&lt;/code&gt; com o adaptador do Hibernate e define o pacote onde as entidades JPA estão localizadas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Propriedades Adicionais&lt;/strong&gt;: Configurações específicas do Hibernate, como o dialeto SQL, exibição de SQL no console e geração de esquema de banco de dados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DataSource Bean&lt;/strong&gt;: Configura a conexão com o banco de dados, incluindo URL, usuário, senha e driver.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TransactionManager Bean&lt;/strong&gt;: Gerencia as transações JPA.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Considerações Finais
&lt;/h2&gt;

&lt;p&gt;Ao configurar o banco de dados para um ambiente de desenvolvimento, é essencial garantir que as versões do driver e do SQL Server sejam compatíveis. No exemplo acima, a versão do driver &lt;code&gt;7.2.2.jre8&lt;/code&gt; foi utilizada com sucesso com as versões mais recentes do SQL Server Developer e Express.&lt;/p&gt;

&lt;p&gt;Essa configuração deve proporcionar uma base sólida para iniciar o desenvolvimento de aplicações Spring MVC com JPA utilizando o SQL Server. Experimente e adapte conforme necessário para atender às suas necessidades específicas.&lt;/p&gt;

</description>
      <category>sqlserver</category>
      <category>java</category>
      <category>jpa</category>
      <category>sql</category>
    </item>
    <item>
      <title>Como usar o comando oobe ypassnro no Windows</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Sun, 23 Jun 2024 14:24:09 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/como-usar-o-comando-oobeypassnro-no-windows-5c35</link>
      <guid>https://dev.to/kbdemiranda/como-usar-o-comando-oobeypassnro-no-windows-5c35</guid>
      <description>&lt;p&gt;Você já encontrou a necessidade de configurar um computador novo, mas foi bloqueado pelo processo de OOBE (Out-of-Box Experience)? Pode ser frustrante quando você está tentando preparar uma máquina e não pode avançar sem uma conexão de rede. Felizmente, há uma solução para contornar isso com o comando &lt;code&gt;oobe\bypassnro&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  O que é OOBE?
&lt;/h4&gt;

&lt;p&gt;OOBE, ou Out-of-Box Experience, é a série de etapas iniciais que o Windows utiliza para configurar um novo dispositivo ou após uma instalação limpa do sistema operacional. Esse processo inclui a aceitação dos termos de licença, a criação de contas de usuário, configurações de privacidade e, muitas vezes, a exigência de uma conexão com a internet.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bypass NRO: o que significa?
&lt;/h4&gt;

&lt;p&gt;NRO significa Network Requirement Override, ou seja, a desativação da exigência de conexão de rede. Em determinadas situações, como quando você não tem acesso imediato a uma rede, é útil poder pular essa exigência e continuar a configuração do sistema.&lt;/p&gt;

&lt;h4&gt;
  
  
  Como usar &lt;code&gt;oobe\bypassnro&lt;/code&gt;
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inicie o OOBE&lt;/strong&gt;: Quando você está no meio do processo de configuração do OOBE e encontra a tela pedindo para se conectar a uma rede, pressione &lt;code&gt;Shift + F10&lt;/code&gt;. Isso abrirá o Prompt de Comando.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Digite o comando&lt;/strong&gt;: No Prompt de Comando, digite &lt;code&gt;oobe\bypassnro&lt;/code&gt; e pressione Enter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reinicialização&lt;/strong&gt;: O sistema vai reiniciar e o OOBE será relançado. Desta vez, ele permitirá que você pule a etapa de conexão de rede, permitindo configurar o sistema sem precisar estar online.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Por que isso é útil?
&lt;/h4&gt;

&lt;p&gt;Este comando é particularmente útil para administradores de sistema e técnicos que precisam configurar múltiplos dispositivos de maneira eficiente, sem depender de uma conexão de internet imediata. Também é útil para situações em que a rede está temporariamente indisponível.&lt;/p&gt;

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

&lt;p&gt;O comando &lt;code&gt;oobe\bypassnro&lt;/code&gt; é uma ferramenta simples, mas poderosa para contornar a exigência de rede durante a configuração inicial do Windows. Da próxima vez que você estiver configurando um novo dispositivo e encontrar a barreira da conexão de rede, lembre-se desse truque para economizar tempo e evitar frustrações.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@windows?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Windows&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/person-using-windows-11-computer-on-lap-AigsWJmvoEo?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>windows</category>
      <category>oobe</category>
      <category>configuração</category>
      <category>tecnologia</category>
    </item>
    <item>
      <title>Como usar o npm sem sudo no MacOS</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Mon, 04 Mar 2024 23:58:31 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/como-usar-o-npm-sem-sudo-no-macos-577g</link>
      <guid>https://dev.to/kbdemiranda/como-usar-o-npm-sem-sudo-no-macos-577g</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;Como Usar o npm Sem sudo no macOS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Se você acabou de formatar seu macOS e tentou instalar o Angular CLI globalmente com &lt;code&gt;npm install -g @angular/cli&lt;/code&gt;, é possível que tenha se deparado com um erro de permissão. Isso acontece porque o npm está tentando acessar um diretório que requer privilégios de administrador. Uma solução comum seria usar &lt;code&gt;sudo&lt;/code&gt;, mas isso não é ideal por questões de segurança e conveniência.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solução Alternativa: configurar o &lt;code&gt;npm&lt;/code&gt; para usar um diretório diferente&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uma ótima alternativa é configurar o npm para usar um diretório para instalações globais onde você tenha permissão de escrita, eliminando a necessidade de &lt;code&gt;sudo&lt;/code&gt;. Aqui está um guia passo a passo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Crie um Novo Diretório para Instalações Globais:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/.npm-global
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Configure o npm para Usar o Novo Diretório:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm config &lt;span class="nb"&gt;set &lt;/span&gt;prefix &lt;span class="s1"&gt;'~/.npm-global'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Atualize seu Arquivo de Perfil (.zshrc):&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Adicione o seguinte ao seu &lt;code&gt;.zshrc&lt;/code&gt; para que os pacotes instalados globalmente estejam disponíveis no PATH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PATH=~/.npm-global/bin:$PATH'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Recarregue o arquivo de perfil:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instale Pacotes Globalmente Sem Usar sudo:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora, você pode instalar qualquer pacote globalmente sem sudo. Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @angular/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Script Shell para Automatizar a Configuração&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para facilitar, você pode criar um script shell com os comandos acima. Salve o seguinte em um arquivo &lt;code&gt;.sh&lt;/code&gt; e execute no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/zsh&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.npm-global
npm config &lt;span class="nb"&gt;set &lt;/span&gt;prefix &lt;span class="s1"&gt;'~/.npm-global'&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PATH=~/.npm-global/bin:$PATH'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"npm global setup complete. You can now install global packages without sudo."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lembre-se de dar permissão de execução ao script com &lt;code&gt;chmod +x nome_do_script.sh&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusão&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configurar o npm dessa forma não só resolve o problema de permissão, mas também torna seu sistema mais seguro, evitando o uso desnecessário de privilégios de superusuário. Além disso, você ganha mais flexibilidade com suas instalações globais do npm.&lt;/p&gt;

</description>
      <category>node</category>
      <category>macos</category>
    </item>
    <item>
      <title>Configurando o Visual Studio Code como Aplicativo Padrão para Arquivos JSON no macOS - Um Guia com duti e Homebrew</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Fri, 12 Jan 2024 20:40:00 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/configurando-o-visual-studio-code-como-aplicativo-padrao-para-arquivos-json-no-macos-um-guia-com-duti-e-homebrew-bgp</link>
      <guid>https://dev.to/kbdemiranda/configurando-o-visual-studio-code-como-aplicativo-padrao-para-arquivos-json-no-macos-um-guia-com-duti-e-homebrew-bgp</guid>
      <description>&lt;p&gt;No mundo do desenvolvimento de software, a eficiência é chave. Uma maneira de aumentar a eficiência é otimizar como interagimos com os arquivos no nosso sistema. Para desenvolvedores macOS que frequentemente trabalham com arquivos JSON, configurar o Visual Studio Code como o aplicativo padrão para abri-los pode poupar tempo e melhorar o fluxo de trabalho. Neste artigo, exploraremos como fazer isso utilizando duas poderosas ferramentas: o &lt;code&gt;duti&lt;/code&gt; e o Homebrew.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é o &lt;em&gt;duti&lt;/em&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;duti&lt;/code&gt; é um utilitário de linha de comando para macOS que permite aos usuários definir aplicativos padrões para diversos tipos de arquivos. Sua simplicidade e eficiência tornam o &lt;code&gt;duti&lt;/code&gt; uma ferramenta indispensável para personalizar a forma como diferentes arquivos são manipulados no sistema.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é o &lt;em&gt;Homebrew&lt;/em&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Homebrew é um gerenciador de pacotes para macOS. Ele simplifica a instalação de software no sistema operacional da Apple. Com o Homebrew, você pode instalar, atualizar e gerenciar ferramentas de software de forma eficiente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como Configurar o Visual Studio Code como Aplicativo Padrão para JSON com *duti&lt;/strong&gt;*&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Instale o Homebrew (se ainda não estiver instalado)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Antes de podermos instalar o &lt;code&gt;duti&lt;/code&gt;, precisamos ter o Homebrew no nosso sistema. Abra o Terminal e execute o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   /bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este comando baixa e executa o script de instalação do Homebrew.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Instale o &lt;code&gt;duti&lt;/code&gt; usando o Homebrew&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Com o Homebrew instalado, agora podemos instalar facilmente o &lt;code&gt;duti&lt;/code&gt;. No Terminal, execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   brew &lt;span class="nb"&gt;install &lt;/span&gt;duti
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Defina o Visual Studio Code como Aplicativo Padrão para JSON&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Após instalar o &lt;code&gt;duti&lt;/code&gt;, podemos usá-lo para definir o Visual Studio Code como o aplicativo padrão para arquivos JSON. Execute o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   duti &lt;span class="nt"&gt;-s&lt;/span&gt; com.microsoft.VSCode json all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Certifique-se de que o Visual Studio Code está instalado no seu macOS e que você está usando o identificador correto do pacote (com.microsoft.VSCode).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusão&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configurar o Visual Studio Code como o aplicativo padrão para abrir arquivos JSON com &lt;code&gt;duti&lt;/code&gt; é um processo simples, mas que pode trazer grandes benefícios para o seu dia a dia de desenvolvimento. Com essas ferramentas, você tem mais controle sobre como interage com diferentes tipos de arquivos no seu macOS, tornando seu trabalho mais ágil e eficiente.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>vscode</category>
      <category>macos</category>
      <category>homebrew</category>
    </item>
    <item>
      <title>Iniciando com Github Desktop no Windows e MacOS</title>
      <dc:creator>Kaique de Miranda</dc:creator>
      <pubDate>Sat, 24 Apr 2021 21:43:53 +0000</pubDate>
      <link>https://dev.to/kbdemiranda/iniciando-com-github-desktop-no-windows-e-macos-16k7</link>
      <guid>https://dev.to/kbdemiranda/iniciando-com-github-desktop-no-windows-e-macos-16k7</guid>
      <description>&lt;p&gt;Sabe o que eu mais encontro? Pessoas querendo utilizar o Github ou qualquer outra plataforma de &lt;strong&gt;VCS&lt;/strong&gt; (Version Control System ou Sistema Controle de Versão) mas com medo de utilizar principalmente por causa do terminal e suas temidas linhas de comando, além de exigir um pouco de paciência, também é preciso de um pouco de domínio dessa poderosa ferramenta que são as linhas de comando, mais cedo ou mais tarde você desenvolvedor ou desenvolvedora irá dominar as linhas de comando, mas que tal agora nos concentrarmos em produtividade? Digo, claro que quem utiliza linha de comando há anos vai dizer que é produtivo com elas e não tenho sombra de dúvida, tenho um amigo que programa utilizando VIM no MacBook dele! Mas para pessoas como você ou eu, que não somos tão avançadas (e doidas) ainda, que tal utilizamos uma ferramenta que o Github disponibiliza de graça para gente?&lt;/p&gt;

&lt;h2&gt;
  
  
  Conhecendo o Github Desktop
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://desktop.github.com" rel="noopener noreferrer"&gt;Github Desktop&lt;/a&gt; é uma ferramenta gratuita criada pelo pessoal da Github com o objetivo de ajudar os usuários a terem ganho de produtividade e focarem no que realmente importa, a frase de apresentação da ferramenta diz exatamente isso:&lt;/p&gt;

&lt;p&gt;“Concentre-se no que importa ao invés de lutar contra o Git. Seja você um iniciante ou usuário experiente do Git, o GitHub Desktop simplifica o desenvolvimento do seu fluxo de trabalho”&lt;br&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%2Fly1joph6zaszti386pv2.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%2Fly1joph6zaszti386pv2.png" alt="Landing Page do Github com o logo do Github, alguns links e o texto de chamada, além do botão Download" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para iniciar nosso tutorial, vamos baixar o Github Desktop, você pode baixar pelo site ou clicando nos links ao lado, caso use &lt;a href="https://central.github.com/deployments/desktop/desktop/latest/win32" rel="noopener noreferrer"&gt;Windows&lt;/a&gt; ou caso use &lt;a href="https://central.github.com/deployments/desktop/desktop/latest/darwin" rel="noopener noreferrer"&gt;MacOS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A instalação do Github Desktop é a mais simples possível, basta dar dois cliques no arquivo e esperar, ele fará tudo sozinho!&lt;br&gt;
(Caso esteja utilizando Mac, basta descompactar o zip e jogar o arquivo descompactado para dentro da pasta Aplicativos (Applications)&lt;/p&gt;

&lt;p&gt;Caso esteja utilizando Windows, aparecerá essa tela, basta esperar até que finalize.&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%2F7z3f7mfsll0ozxzwpw53.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%2F7z3f7mfsll0ozxzwpw53.png" alt="Alt Text" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Voltando para a configuração
&lt;/h3&gt;

&lt;p&gt;Após a instalação concluir, será aberta a tela de login (concluo que nesse momento você já tem uma conta criada, caso não tenha &lt;a href="https://github.com/join" rel="noopener noreferrer"&gt;clique aqui&lt;/a&gt;)&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%2Fpiooa339xo4v8rhzwpnz.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%2Fpiooa339xo4v8rhzwpnz.png" alt="Alt Text" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nessa tela também existe a opção de criar uma conta, mas o mais importante é que existe duas formas de Login, uma utilizando uma conta &lt;strong&gt;Github.com&lt;/strong&gt; e uma &lt;strong&gt;Github Entreprise Server&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Essa segunda opção se aplica quando a sua empresa ou organização utiliza os servidores do Github para gerenciar o código dela.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agora clique em &lt;strong&gt;Sign in to GitHub.com&lt;/strong&gt;, pode ser que aconteça um desses dois cenários, o primeiro é que ele abra seu navegador padrão e solicite que faça login por lá, caso não aconteça isso, a segunda opção é que irá abrir a tela de login no proprio App do Github Desktop.&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%2Fe67qs80grqw7vp5celhr.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%2Fe67qs80grqw7vp5celhr.png" alt="Alt Text" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois que você efetuar o login, será aberta a tela de configuração básica do Git, essa tela serve basicamente para configurar dois itens muito importantes para o Git, o primeiro é o nome do usuário que estará fazendo os commits o segundo é o email do usuário.&lt;br&gt;
Também é possível fazer essa configuração através dos comandos &lt;code&gt;git config — global user.name “Kaique de Miranda”&lt;/code&gt; e &lt;code&gt;git config — global user.email email@email.com&lt;/code&gt; via terminal ou Powershell/CMD&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%2F6ey3c4r0oake22k1y1qp.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%2F6ey3c4r0oake22k1y1qp.png" alt="Alt Text" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Você pode ou não se perguntando, porque devo informar meu e-mail novamente se já fiz isso antes no login, certo? Bem, de certa forma você tem razão, mas seu e-mail de commit pode ser diferente do seu e-mail de login, por exemplo, no meu trabalho para logar na ferramenta uso o e-mail corporativo, para enviar os commits uso meu e-mail pessoa, por que? Porque o seu quando você faz um commit você tem uma "foto" da sua escolha anexada, essa foto esta diretamente ligada a plataforma do &lt;a href="https://br.gravatar.com" rel="noopener noreferrer"&gt;Gravatar&lt;/a&gt;, então o que as ferramentas fazem é utilizar esse e-mail para pegar sua fotinha e colocar no Github no commit.&lt;br&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%2Fg2otivfdapea2ghqyzmk.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%2Fg2otivfdapea2ghqyzmk.png" alt="Alt Text" width="169" height="55"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Próxima tela será de coleta de dados, você pode deixar marcado ou não&lt;br&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%2Fxl1j7mrk17si0bnsqmfh.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%2Fxl1j7mrk17si0bnsqmfh.png" alt="Alt Text" width="800" height="549"&gt;&lt;/a&gt;&lt;br&gt;
Essa opção não é obrigatório a coleta de dados serve para validar o seu uso, claro que ativar a coleta de dados tem vantagens e desvantagens, existe quem ame existe quem odeia, mas caso deseje manter ativado, o software irá coletar uso da ferramenta como um todo (crash de software, uso de funções e afins) com o objetivo de melhorar o uso do software no futuro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tela Inicial Github Desktop 😍
&lt;/h3&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%2Fwbxte3e0xij7oztjzsmg.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%2Fwbxte3e0xij7oztjzsmg.png" alt="Alt Text" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chegamos finalmente a tela de abertura do Github Desktop, agora vou dedicar um tempinho para explicar os menus que estão vamos, vamos começar pela caixa da esquerda.&lt;/p&gt;

&lt;p&gt;Create Tutorial Repository → Como o próprio titulo diz, ele irá te ensinar basicamente a fazer o que estou ensinando nesse tutorial, só que em inglês :)&lt;/p&gt;

&lt;p&gt;Clone Repository → Aqui ele irá pegar um repositório que você informar via URL para clonar e disponibilizar na sua maquina.&lt;/p&gt;

&lt;p&gt;Create a new Repository on your hard driver… → Aqui ele irá criar um novo repositório a partir das suas informações, vamos ver com mais detalhes esse carinha em breve.&lt;/p&gt;

&lt;p&gt;Add an Existing Repository from your hard drive… → Esse carinha é bem utilizado, é o que eu mais utilizo na verdade, porque muitas vezes já é um projeto que tenho na minha maquina e quero administra-lo com o Github Desktop.&lt;/p&gt;

&lt;p&gt;Agora, vamos para a caixa da direita, essa caixa exibira todos os repositórios que você tem na sua conta, sejam pessoais, forks ou colaborativos, selecionando qualquer um deles ele irá fazer o “git clone” desses projetos disponibilizando para você na sua maquina.&lt;/p&gt;

&lt;p&gt;Próximos passos:&lt;/p&gt;

&lt;p&gt;→ Criando um repositório do zero com Github Desktop (Em breve)&lt;br&gt;
→ Clonando Projetos com Github Desktop (Em breve)&lt;br&gt;
→ Trabalhando com seus arquivos e repositório com Github Desktop (Em breve)&lt;br&gt;
→ Trabalhando em um projeto colaborativo com Github Desktop (Em breve)&lt;br&gt;
→ Configurações extras com Github Desktop (Em breve)&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>portuguese</category>
    </item>
  </channel>
</rss>
