<?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: Antonio Silva</title>
    <description>The latest articles on DEV Community by Antonio Silva (@tonybsilvadev).</description>
    <link>https://dev.to/tonybsilvadev</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%2F668269%2Fe26b2e71-4893-48ea-9de2-b189d73f0d02.jpeg</url>
      <title>DEV Community: Antonio Silva</title>
      <link>https://dev.to/tonybsilvadev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tonybsilvadev"/>
    <language>en</language>
    <item>
      <title>Desvendando os Git Aliases: Otimize seu fluxo de trabalho com simplicidade e estilo</title>
      <dc:creator>Antonio Silva</dc:creator>
      <pubDate>Fri, 15 Nov 2024 21:45:11 +0000</pubDate>
      <link>https://dev.to/tonybsilvadev/desvendando-os-git-aliases-otimize-seu-fluxo-de-trabalho-com-simplicidade-e-estilo-1oka</link>
      <guid>https://dev.to/tonybsilvadev/desvendando-os-git-aliases-otimize-seu-fluxo-de-trabalho-com-simplicidade-e-estilo-1oka</guid>
      <description>&lt;h2&gt;
  
  
  Afinal, oque são "aliases"
&lt;/h2&gt;

&lt;p&gt;Os “aliases” do Git são atalhos poderosos que transformam comandos repetitivos em ações rápidas e estilizadas. Imagine simplificar tarefas comuns, como revisar o histórico de commits ou criar commits, com comandos personalizados que economizam tempo e esforço. Vamos explorar como configurar esses atalhos e elevar sua produtividade como desenvolvedor!&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 Exemplo prático: O git log!
&lt;/h2&gt;

&lt;p&gt;Quando queremos ver o log de commit feitos anteriormente usamos o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git log
&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%2Fhcbrgp7xwtb8l01wn01f.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%2Fhcbrgp7xwtb8l01wn01f.png" alt="git log common" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Temos então o nosso retorno padrão, porém o alias pode nos ajudar a personalizar, automatizar, mesclar e montar nossos próprios comandos personalizados expandindo além da CLI que o git nos entrega, personalizei meu git log para resumir algumas informações e deixar tudo mais compacto e com cores onde eu queria olhar de imediato e o resultado foi esse:&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%2Fb8u7i23ng11xwxej4k1l.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%2Fb8u7i23ng11xwxej4k1l.png" alt="custom git log" width="800" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A propósito o comando que usei aqui para isso foi também personalizado:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  🛠️ Como criar seu próprio Alias no Git
&lt;/h2&gt;

&lt;p&gt;Primeiro voce deve permitir que um editor de código de sua preferencia possa abrir as configurações do git, usamos o seguinte comando:&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 core.editor code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse exemplo utilizamos o Visual Studio Code.&lt;br&gt;
Agora devemos abrir o arquivo de configurações global do git, usamos o seguinte comando:&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 --edit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você verá um arquivo de configurações incluindo seu nome de usuário, email e agora o editor escolhido para alterar as configurações do git (caso os tenha configurado corretamente).&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ Adicionando Alias ao arquivo de configuração
&lt;/h2&gt;

&lt;p&gt;Hora de adicionar nosso alias, provavelmente seu arquivo estará parecido com isso:&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%2Fi1067fo71kttrsp4kiyv.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%2Fi1067fo71kttrsp4kiyv.png" alt="git config example" width="740" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Da mesma forma que vemos o core ser adicionado, faremos com o alias.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[alias]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e logo abaixo iremos personalizar algumas comandos, sendo o primeiro deles a visualização do status:&lt;/p&gt;

&lt;p&gt;comando padrão tras o seguinte retorno:&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%2F0k6ax3lwa7keaclg39v5.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%2F0k6ax3lwa7keaclg39v5.png" alt="common git status" width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nosso novo alias para status trará o seguinte retorno:&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%2Fld8mumbbfb7v5fhxq6kl.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%2Fld8mumbbfb7v5fhxq6kl.png" alt="custom git status" width="800" height="98"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aliás o utilizamos o seguinte alias para esse retorno enxuto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[alias]
s = !git status - short
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sendo o "s" o comando que você irá utilizar.&lt;br&gt;
O segundo alias que vamos adicionar é a fusão de dois comandos importantes que muitos de nós usamos constantemente&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
git commit -m " "
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seu alias completo ficará assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[alias]
s = !git status - short
c = !git add - all &amp;amp;&amp;amp; git commit -m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando quiser adicionar todos os arquivos e realizar o commit basta digitar agora:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git c "feat: add authentication with OAuth"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora vamos resumir um pouco nosso git log como apresentado na introdução desse artigo.&lt;br&gt;
O alias para ele é um pouco diferente e vou explicar o porque para que consigam personalizar todos os alias que decidirem criar, vamos lá:&lt;br&gt;
Seu alias completo ficará assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[alias]
# Status compacto
s = !git status - short

# Adicionar e commitar arquivos rapidamente
c = !git add - all &amp;amp;&amp;amp; git commit -m

# Histórico estilizado
l = !git log --pretty=format:'%C(green)%h%C(white)%d %s - %C(green)%cn, %cr'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A flag pretty diz que queremos adicionar uma "estilização", em seguida nos passaremos o formato dela.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%C(color) - Representa uma função onde colocaremos a cor de tudo oque ficará a direita dessa função.
%h - Exibe o hash curto do commit (ex.: 3fa1b6).
%H - Representa o hash completo
%d - Mostra informações sobre a branch ou tag associada.
%s - Exibe o assunto do commit (a mensagem).
%cn - Nome do autor.
%cr - Data relativa (ex.: “2 dias atrás”).
&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%2Fu60ot0vw4a8dtff23c8s.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%2Fu60ot0vw4a8dtff23c8s.png" alt="custom git log" width="800" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como apresentado anteriormente, esse é o resultado da estilização do meu git log resumido no alias "l".&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Resumão:&lt;/p&gt;

&lt;p&gt;1 - Apresentação de git aliases&lt;br&gt;
2 - Alias de status&lt;br&gt;
3 - Alias de commit&lt;br&gt;
4 - Alias de logs&lt;/p&gt;

&lt;p&gt;Se este artigo te ajudou, compartilhe com outros desenvolvedores ou me encontre no &lt;a href="https://www.linkedin.com/in/tony-silva/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. Vamos trocar ideias e otimizar juntos!&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🐧 Linux - Porque usar?</title>
      <dc:creator>Antonio Silva</dc:creator>
      <pubDate>Fri, 29 Oct 2021 11:24:44 +0000</pubDate>
      <link>https://dev.to/tonybsilvadev/linux-porque-usar-1mc3</link>
      <guid>https://dev.to/tonybsilvadev/linux-porque-usar-1mc3</guid>
      <description>&lt;p&gt;O Linux é um dos avanços tecnológicos mais importantes do século 21.&lt;/p&gt;

&lt;p&gt;O Google roda milhares de servidores Linux para fornecer sua tecnologia de busca.&lt;br&gt;
Os telefones Android são baseados em Linux.&lt;br&gt;
O Facebook tem seu site como uma pilha LAMP ( Linux, Apache, MySql, PHP )&lt;/p&gt;

&lt;p&gt;A adoção do Linux em todo o mundo criou uma demanda enorme pelo seu conhecimento, quase mandatório!&lt;/p&gt;

&lt;h2&gt;
  
  
  Ok, mas oque é Linux?
&lt;/h2&gt;

&lt;p&gt;Basicamente, o Linux é um sistema operacional de um computador. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Um sistema operacional é um software que gerencia o computador e permite que você execute aplicativos nele.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Então, oque caracteriza um "Linux" e similares?
&lt;/h2&gt;

&lt;p&gt;Eles devem ser capazes de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. Detectar e preparar o Hardware&lt;/li&gt;
&lt;li&gt;2. Gerenciar processos&lt;/li&gt;
&lt;li&gt;3. Gerenciar memória&lt;/li&gt;
&lt;li&gt;4. Fornecer interfaces de usuário (nem sempre necessário)&lt;/li&gt;
&lt;li&gt;5. Controlar sistema de arquivos&lt;/li&gt;
&lt;li&gt;6. Acesso e autenticação de usuário&lt;/li&gt;
&lt;li&gt;7. Oferecer utilitários administrativos&lt;/li&gt;
&lt;li&gt;8. Iniciar serviços&lt;/li&gt;
&lt;li&gt;9. Ferramentas de programação&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recursos avançados de Linux, frequentemente usados em grandes empresas incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10. Clustering&lt;/li&gt;
&lt;li&gt;11. Virtualização&lt;/li&gt;
&lt;li&gt;12. Computação em tempo real&lt;/li&gt;
&lt;li&gt;13. Armazenamento especializado&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  No que ele difere dos outros sistemas?
&lt;/h2&gt;

&lt;p&gt;Bem, se você esta vindo do Windows ou do MacOs saiba que eles são considerados sistemas operacinais proprietários mesmo que o MacOs tenha suas raizes em um sistema operacional livre.&lt;/p&gt;

&lt;p&gt;Sistemas operacionais prioritários. Isso significa que:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Você não pode ver o código usado para criar o sistema operacional.&lt;/li&gt;
&lt;li&gt;Logo, você não pode alterar o sistema nos seus níveis mais básicos caso ele não atenda sua necessidade, também não poderá construir seu proprio sistema a partir do código-fonte.&lt;/li&gt;
&lt;li&gt;Não poderá verificar o código para encontrar erros, explorar vunerabilidades de segurança, ou só saber oque ele esta fazendo mesmo.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;No Linux você pode 🐧&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Qual distro usar?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Sólida, maior estabilidade e maior número de pacotes e software de código aberto?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Debian&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Popular entre desenvolvedores web, recomendado para iniciantes e muito utilizado para desenvolvimento python?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ubuntu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Você é minimalista e quer realmente aprender sobre sistemas operacionais? ( instalação não simplificada para iniciantes )&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Arch Linux&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Um queridinho entre os programadores, um híbrido entre Debian e Ubuntu e um sistema muito leve e conciso?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Linux Mint&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Um sistema que se propõe a substituir de fato o Windows e o Mac, que busca trazer muita simplicidade em vários ambientes de trabalho ( mesmo sendo baseado em Arch Linux )&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Manjaro&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Uma das mais completas e avançadas em várias edições, tendo ótimos pontos de uso específico ( recomendado para quem quer estudar e se tornar um profissional Linux ), seu uso não é tão simples com o Ubuntu mas também não é tão difícil quanto o Arch Linux.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fedora &lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se você quer entrar no mundo PenTest, segurança de redes e redes de computadores ( Famoso Hackerman ). Ja conta com muitos pacotes para a área de segurança, e também o carro chefe para facilitar o estudo da arte hacking.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Kali Linux&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Uma distribuição construida sobre o código da Red Hat Enterprise Linux porém de forma gratuita, amplamente utilizado para gerenciamento de servidores.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CentOS&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Bônus
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Uma distro com muitos pacotes voltados para desenvolvimento e que promete para estudantes de engenharia/ciência da computação sendo um ambiente praticamente pronto para estudos e baseado em Ubuntu.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;PopOs!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Docker - Como instalar?</title>
      <dc:creator>Antonio Silva</dc:creator>
      <pubDate>Tue, 27 Jul 2021 14:56:13 +0000</pubDate>
      <link>https://dev.to/tonybsilvadev/docker-como-instalar-noh</link>
      <guid>https://dev.to/tonybsilvadev/docker-como-instalar-noh</guid>
      <description>&lt;h2&gt;
  
  
  Instalação
&lt;/h2&gt;

&lt;p&gt;Para iniciar a instalação do Docker vamos prosseguir para a seção "Get Started" presente no site da ferramenta: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.docker.com/get-started" rel="noopener noreferrer"&gt;Get Started with Docker | Docker&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows (PRO/Enterprise)
&lt;/h3&gt;

&lt;p&gt;O Docker no Windows possui alguns requisitos: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Windows 10 Professional ou Enterprise 64-bit&lt;/li&gt;
&lt;li&gt;Virtualização habilitada na BIOS (geralmente já vem por padrão)&lt;/li&gt;
&lt;li&gt;Hyper-V instalado e configurado (geralmente já vem por padrão)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Caso você tenha uma versão do Windows anterior a apresentada acima, como, por exemplo, o Windows Home, você deve prosseguir para a seção desse guia: Windows (Home).&lt;/p&gt;

&lt;p&gt;Caso tenha todos requisitos, então faça a instalação do Docker para Windows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hub.docker.com/editions/community/docker-ce-desktop-windows" rel="noopener noreferrer"&gt;Docker Desktop for Windows - Docker Hub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de instalar o Docker e abrir o software você já está pronto para continuar. Lembrando que essa versão do Docker para Windows tem uma interface visual muito bacana, ou seja, você pode usar a interface para visualizar os serviços sendo executados, logs, imagens e muito mais.&lt;/p&gt;

&lt;p&gt;Para verificar que o Docker foi instalado corretamente, em &lt;strong&gt;uma nova janela&lt;/strong&gt; do 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;docker version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Windows (Home)
&lt;/h3&gt;

&lt;p&gt;Nessa versão o Docker precisará ser executado utilizando o Docker Toolbox dentro de uma máquina virtual e por isso você precisará instalar, além dele, o Virtual Box.&lt;/p&gt;

&lt;p&gt;O passo-a-passo para instalar e executar o Docker no Windows Home está &lt;a href="https://docs.docker.com/toolbox/toolbox_install_windows" rel="noopener noreferrer"&gt;nesse guia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Aviso: Ao utilizar o Docker Toolbox, para acessar serviços como o Postgres, Redis, Mongo, etc, criados a partir do Docker, você deve utilizar o endereço &lt;code&gt;192.168.99.100&lt;/code&gt; ao invés de &lt;code&gt;localhost&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Windows (32 bits)
&lt;/h3&gt;

&lt;p&gt;Infelizmente o Docker não possui suporte para sistemas 32bits, nesse caso é recomendável que você instale cada serviço, como o Postgres, por exemplo, manualmente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/download/windows/" rel="noopener noreferrer"&gt;Postgres para Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redislabs.com/blog/redis-on-windows-10/" rel="noopener noreferrer"&gt;Redis para Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/" rel="noopener noreferrer"&gt;MongoDB para Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recomendamos fortemente a utilização de um Dual Boot no caso de possui um sistema windows 32 bits, criando uma partição no seu HD para executar o Linux. Temos um guia com o passo-a-passo e o único requisito é ter no mínimo 50gb de espaço sobrando.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mac OSX
&lt;/h3&gt;

&lt;p&gt;No MacOS o processo de instalação do Docker é extremamente simples, você precisa apenas baixar o app executável e executa-lo na máquina para iniciar o Docker:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hub.docker.com/editions/community/docker-ce-desktop-mac" rel="noopener noreferrer"&gt;Docker Desktop for Mac - Docker Hub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de aberto você pode garantir que o Docker foi instalado corretamente executando o comando abaixo em uma nova janela do terminal:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;






&lt;h3&gt;
  
  
  Linux (Ubuntu/Debian)
&lt;/h3&gt;

&lt;p&gt;No Linux, vamos instalar o Docker utilizando o &lt;code&gt;apt&lt;/code&gt;, para isso, em seu terminal, execute os comandos abaixo:&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;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt remove docker docker-engine docker.io
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;docker.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora com o Docker instalado, vamos habilitar para que seu serviço seja iniciado automaticamente com o sistema:&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;sudo &lt;/span&gt;systemctl start docker
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para garantir que o Docker foi instalado da forma correta, 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;docker version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você precisará executar todos comandos do Docker utilizando o &lt;code&gt;sudo&lt;/code&gt;, mas caso queira executa-los sem o &lt;code&gt;sudo&lt;/code&gt;, utilize &lt;a href="https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user" rel="noopener noreferrer"&gt;esse guia&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Criando container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull mongo
docker run &lt;span class="nt"&gt;--name&lt;/span&gt; yourname &lt;span class="nt"&gt;-p&lt;/span&gt; 27017:27017 &lt;span class="nt"&gt;-d&lt;/span&gt; mongo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>NPM - Atualizando dependências com segurança</title>
      <dc:creator>Antonio Silva</dc:creator>
      <pubDate>Tue, 20 Jul 2021 13:24:53 +0000</pubDate>
      <link>https://dev.to/tonybsilvadev/npm-atualizando-dependencias-com-seguranca-2k9d</link>
      <guid>https://dev.to/tonybsilvadev/npm-atualizando-dependencias-com-seguranca-2k9d</guid>
      <description>&lt;h2&gt;
  
  
  Partes da versão?
&lt;/h2&gt;

&lt;p&gt;Sim!, o controle de versão do NPM (node package manager) segue um controle de versões semânticos, portanto, esse controle de versões tem 3 partes: Major.Minor.Patch&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 - Patch . Isso é incrementado quando é feita uma correção de bug que não quebra o código de consumo.
2 - Minor . Isso é incrementado quando são adicionados recursos que não quebram o código de consumo.
3 - Major . Isso é incrementado quando mudanças significativas são feitas.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Beleza, mas oque significa o &lt;code&gt;^&lt;/code&gt; ou o &lt;code&gt;~&lt;/code&gt; ?
&lt;/h2&gt;

&lt;p&gt;Você quer instalar uma nova versão de um pacote e se depara com essa dupla frente as versões, oque elas significam afinal?&lt;/p&gt;

&lt;p&gt;Uma versão geralmente tem um &lt;code&gt;^&lt;/code&gt; na frente dela (por exemplo ^16.8.6). Isso significa que a versão secundária mais recente pode ser instalada com segurança. Portanto, neste exemplo, ^16.12.1 pode ser instalado com segurança se esta for a versão mais recente em 16.x.&lt;/p&gt;

&lt;p&gt;Às vezes, uma versão tem um &lt;code&gt;~&lt;/code&gt; na frente dela (por exemplo ~16.8.6). Isso significa que apenas a última versão do patch pode ser instalada com segurança. Portanto, neste exemplo, ^16.8.12 pode ser instalado com segurança se esta for a versão mais recente em 16.8.x.&lt;/p&gt;

&lt;h2&gt;
  
  
  NPM INSTALL, resolve?
&lt;/h2&gt;

&lt;p&gt;Depende, se os pacotes ja estiverem instalados na node_modules não será atualizado.&lt;/p&gt;

&lt;p&gt;Se não existe a node_modules mas existe o &lt;code&gt;package-lock.json&lt;/code&gt; então será instalado apenas as versões específicas do próprio arquivo.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;npm install&lt;/code&gt; instalará as novas versões apenas se não existir nenhum dos dois arquivos, instalando a versão mais recente dos pacotes existentes no package.json.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ta, mas e com segurança?
&lt;/h2&gt;

&lt;p&gt;Vamos descobrir as dependências que estão desatualizadas rodando o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm outdated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Atualizando todos os pacotes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este comando atualiza todos os pacotes tanto na &lt;code&gt;node_modules&lt;/code&gt; como no &lt;code&gt;package-lock.json&lt;/code&gt;, atualizando a árvore de dependências do projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atualizando um pacote específico
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm update "package_name"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este comando atualiza um módulo específico.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atualizando dependências com grandes mudanças (Major)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install package_name@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Verifique SEMPRE se aplicação não está quebrando por meio de testes.&lt;/p&gt;

&lt;p&gt;Repita o processo para outros pacotes com grandes mudanças&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Caminho mais rápido?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx npm-check-updates -u
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso atualizará as dependências para as versões mais recentes (incluindo alterações de versão principais) no package.json arquivo. Se quisermos continuar com as atualizações, precisamos executar o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso fará com que os pacotes da pasta node_modules e o package-lock.json sejam atualizados.&lt;/p&gt;

&lt;p&gt;Resumão:&lt;/p&gt;

&lt;p&gt;1 - Use &lt;code&gt;npm outdated&lt;/code&gt; para descobrir dependências que estão desatualizadas.&lt;br&gt;
2 - Use &lt;code&gt;npm update&lt;/code&gt; para realizar atualizações de dependências seguras.&lt;br&gt;
3 - Use &lt;code&gt;npm install &amp;lt;packagename&amp;gt;@latest&lt;/code&gt; para atualizar para a versão principal mais recente de um pacote.&lt;br&gt;
4 - Use &lt;code&gt;npx npm-check-updates -u&lt;/code&gt; e &lt;code&gt;npm install&lt;/code&gt; para atualizar todas as dependências para suas versões principais mais recentes.&lt;/p&gt;

&lt;p&gt;Se este artigo te ajudou, compartilhe com outros desenvolvedores ou me encontre no &lt;a href="https://www.linkedin.com/in/tony-silva/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. Vamos trocar ideias e otimizar juntos!&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
    </item>
    <item>
      <title>GraphQl - Introdução</title>
      <dc:creator>Antonio Silva</dc:creator>
      <pubDate>Sat, 17 Jul 2021 01:44:10 +0000</pubDate>
      <link>https://dev.to/tonybsilvadev/introducao-4b94</link>
      <guid>https://dev.to/tonybsilvadev/introducao-4b94</guid>
      <description>&lt;p&gt;A query language for you API&lt;/p&gt;

&lt;h2&gt;
  
  
  Oque é GraphQL?
&lt;/h2&gt;

&lt;p&gt;GraphQL é uma linguagem de Query (bem como SQL) criada pelo Facebook em 2012 e lançada publicamente em 2015. É visto pela comunidade como uma alternativa ao padrão REST, o qual reina sobre o desenvolvimento.&lt;/p&gt;

&lt;p&gt;É &lt;strong&gt;importante&lt;/strong&gt; eliminar logo de cara a ideia de que o GraphQL vai matar o REST. Ambos os estilos de arquitetura possuem suas próprias características e cada uma se encaixa em situações diferentes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Para que serve o GraphQL afinal?
&lt;/h2&gt;

&lt;p&gt;A principal função do GraphQl é evitar o Overfetching, ou seja buscar da requisição apenas o necessário, isso em ambientes como AWS que tem a monetização pay per use (cobra pelo tráfego da informação) é uma mão na roda, ja que você não gasta dinheiro atoa com dados de uma requisição que vocẽ não precisaria.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como faço para usá-lo?
&lt;/h2&gt;

&lt;h6&gt;
  
  
  Inicie o Package.json
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm init -y
yarn init -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Baixe as dependências
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install apollo-server graphql
yarn add apollo-server graphql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Coding
&lt;/h6&gt;

&lt;p&gt;Starter index.js&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%2F311ttl9yfpbw5swyc78r.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%2F311ttl9yfpbw5swyc78r.png" alt="Alt Text" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sem definição de tipos do GraphQl.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observação!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No graphQl toda requisição é post, e toda Request bate no mesmo endpoint que por convenção é /graphql .&lt;/p&gt;

&lt;p&gt;Então, como é que a requisição sabe oque ela precisa fazer ou que rumo ela precisa tomar?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;R: Nós fazemos isso por meio de Query, Mutation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Se nós quisermos listar as informações específicas de um usuário por exemplo nos usamos Query&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Em paralelo com HTTP ela seria o método GET&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Já Mutation ele serve pra quando queremos manipular dados&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Em paralelo com HTTP (POST/PUT/PATCH/DELETE)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h6&gt;
  
  
  Scalar Types
&lt;/h6&gt;

&lt;p&gt;São basicamente os tipos primitivos que temos, são eles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;String&lt;/li&gt;
&lt;li&gt;Int&lt;/li&gt;
&lt;li&gt;Boolean&lt;/li&gt;
&lt;li&gt;Float&lt;/li&gt;
&lt;li&gt;ID&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Beleza, então como escrevemos agora um hello world com GraphQl?&lt;/p&gt;

&lt;h6&gt;
  
  
  Hello World
&lt;/h6&gt;

&lt;p&gt;Dentro das definições de tipos nos diremos oque o usuário poderá pesquisar, assim:&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%2Fvk77c4s0j2s1bb9tzpp9.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%2Fvk77c4s0j2s1bb9tzpp9.png" alt="Alt Text" width="432" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Imagem das definições de tipos&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Logo em seguida, diremos oque o usuário poderá obter com os 'resolvers', ao realizar uma consulta onde tentará trazer o hello por meio de sua requisição do tipo Query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observação!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O GraphQl usa o mapeamento de 1-1 logo a primeira informação a ser consultada na Query, deve ser também a primeira a ser trazida no resolver de sua Query e assim sucessivamente.&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%2F0mtyi2wz9dkxnnpod5kk.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%2F0mtyi2wz9dkxnnpod5kk.png" alt="Alt Text" width="448" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Imagem da Query + Resolver&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h6&gt;
  
  
  Executando o código
&lt;/h6&gt;

&lt;p&gt;Primeiro inicializamos o servidor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node src/index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚀 Server Started at &lt;a href="http://localhost:4000/" rel="noopener noreferrer"&gt;http://localhost:4000/&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  The Playground GraphQl
&lt;/h6&gt;

&lt;p&gt;Aqui nesse exemplo: executaremos uma Query assim como definimos no tipo de requisição, e ele deverá trazer os dados estabelecidos pelo Resolver baseado no mapeamento de 1 por 1. Assim:&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%2Ffgbxc2i9m0vvolm3e9zv.gif" 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%2Ffgbxc2i9m0vvolm3e9zv.gif" alt="Alt Text" width="908" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  It's done!
&lt;/h6&gt;

&lt;p&gt;Agora você acabou de fazer sua primeira chamada API utilizando o graphQL, simples não?&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>node</category>
    </item>
  </channel>
</rss>
