<?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: rafaelvieirab</title>
    <description>The latest articles on DEV Community by rafaelvieirab (@rafaelvieirab).</description>
    <link>https://dev.to/rafaelvieirab</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%2F517455%2F2ce354df-b93c-4481-9fd4-ef2e89a67d8a.png</url>
      <title>DEV Community: rafaelvieirab</title>
      <link>https://dev.to/rafaelvieirab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rafaelvieirab"/>
    <language>en</language>
    <item>
      <title>Noções básicas de Python</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Thu, 01 Jul 2021 00:25:03 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/nocoes-basicas-de-python-phn</link>
      <guid>https://dev.to/rafaelvieirab/nocoes-basicas-de-python-phn</guid>
      <description>&lt;h2&gt;
  
  
  Padronização
&lt;/h2&gt;

&lt;p&gt;Nomes de váriaveis e métodos são separados por underscore(&lt;code&gt;_&lt;/code&gt;), em vez de usar o &lt;em&gt;CamelCase&lt;/em&gt;. Ex: &lt;code&gt;my_name&lt;/code&gt;, &lt;code&gt;get_my_name&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Método
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Parâmetros Opcionais
&lt;/h3&gt;

&lt;p&gt;Para um parâmetro de um método ser opcional, basta adicionar um valor padrão. Ex.:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Inferência de Tipos
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Documentação do método (&lt;code&gt;docstring&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Uma &lt;code&gt;docstring&lt;/code&gt; é uma string no início de uma função que explica o método. Por convenção, todas as &lt;code&gt;docstrings&lt;/code&gt; têm aspas triplas (&lt;strong&gt;"""&lt;/strong&gt;).&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="s"&gt;"""Soma dois números, e retorna o resultado."""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Classe
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cont&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="c1"&gt;# class variable shared by all instances
&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="c1"&gt;# instance variable unique to each instance
&lt;/span&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="c1"&gt;# instance variable unique to each instance
&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Oi! Eu sou o ${name}.'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explicações:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O método &lt;code&gt;__init__&lt;/code&gt; é o contrutor da classe;&lt;/li&gt;
&lt;li&gt;Qualquer método da classe que precise utilizar algum atributo da classe deve receber &lt;code&gt;self&lt;/code&gt; na assinatura do método;&lt;/li&gt;
&lt;li&gt;Qualquer variável que apareça fora do método &lt;code&gt;__init__&lt;/code&gt; é compartilhada entre todas as instâncias dessa classe, como é o caso da váriavel &lt;code&gt;cont&lt;/code&gt;. Por exemplo:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Animal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Animal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cont&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cont&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cont&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 5
&lt;/span&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cont&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tipo de Acesso
&lt;/h3&gt;

&lt;p&gt;Segundo a &lt;a href="https://docs.python.org/pt-br/3/tutorial/classes.html"&gt;documentação do python&lt;/a&gt;: Variáveis de instância e metodos &lt;em&gt;“privadas”&lt;/em&gt;, que não podem ser acessadas, exceto em métodos do próprio objeto, &lt;em&gt;não existem&lt;/em&gt; em Python. No entanto, existe uma convenção que é seguida pela maioria dos programas em Python: um nome prefixado com um underscore (por exemplo: &lt;code&gt;_spam&lt;/code&gt; e &lt;code&gt;_set_age(self, new_age)&lt;/code&gt;). Dessa forma, em vez de chama-los de "privados", nomea-se "não-públicos".&lt;/p&gt;

&lt;h3&gt;
  
  
  Getters e Setters
&lt;/h3&gt;

&lt;p&gt;Em muitos casos é necessário adicionar regras de negócio, a alguns dados, isto é, alterar ou obter algum atributo da classe, somente se atender a certas regras da classe.&lt;br&gt;
Com esse objetivo, basta seguir os seguintes passos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Defina o atributo como &lt;em&gt;privado&lt;/em&gt; (adicione o underline na frente do atributo);&lt;/li&gt;
&lt;li&gt;Crie suas funções de getter e setter, com o nome do atributo. Ex.: Para o atributo &lt;code&gt;_name&lt;/code&gt;, tanto o método getter como o setter, terão o nome &lt;code&gt;name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Adicione &lt;code&gt;@property&lt;/code&gt; em cima dos métodos getters, e &lt;code&gt;@nome_do_atributo.setter&lt;/code&gt; em cima dos métodos setters . &lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Enum
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;enum&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Enum&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Enum&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;WHITE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;GRAY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="n"&gt;BLACK&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Herança
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Obs.&lt;/em&gt;: Suporta herança múltipla.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cont&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Duck&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cont&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nb"&gt;super&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Importando Arquivos
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;animal&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;src.routes.index&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Routes&lt;/span&gt; &lt;span class="c1"&gt;# importa Routes da pasta src/routes/index. Obs.:
&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;animal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Animal&lt;/span&gt;
&lt;span class="n"&gt;routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Obs.:&lt;/em&gt; Quando fazemos &lt;code&gt;from src.routes.index import Routes&lt;/code&gt;, estamos importando &lt;code&gt;Routes&lt;/code&gt; da pasta &lt;code&gt;src/routes/index&lt;/code&gt;. Esse é um caminho para encontrar esse arquivo, mas não significa que está em uma subpasta. Pelo contrário, é possível que essa pasta &lt;code&gt;src&lt;/code&gt; pode ser uma pasta anterior, ou do diretório atual.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lista e Dicionário
&lt;/h2&gt;

&lt;h3&gt;
  
  
  List ou Array
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;my_integers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Obs.&lt;/em&gt;: Pode-se criar um array não vazio e iniciado com alguns valores padrão. Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;array_of_ones&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="c1"&gt;# [1,1,1,1]
&lt;/span&gt;&lt;span class="n"&gt;array_of_0_4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="c1"&gt;# [0,1,2,3,4]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sets
&lt;/h3&gt;

&lt;p&gt;Como o próprio nome diz, refere-se a uma lista de elementos (arrodeado por chaves) sem repetição. Para criar um conjunto, passando um conjunto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;my_integers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;, ou através da função &lt;code&gt;set()&lt;/code&gt;. Essa função retorna um conjunto, e pode receber um argumento iterável (ex.: listas), transformando-o em um conjunto. Já se não passarmos nenhum elemento, ele retorna um conjunto vazio.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;my_integers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Dictionary Estrutura de Dados de Chave-Valor
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;dictionary_example&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="s"&gt;"key1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"value1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"key2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"value2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;"key3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"value3"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;dictionary_example&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"key1"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Obs.:&lt;/em&gt; A expressão &lt;code&gt;{}&lt;/code&gt; é considerada um dicionário vazio, e não um conjunto&lt;/p&gt;

&lt;h2&gt;
  
  
  Outros
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Operador ternário
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Retornando um valor dependendo do primeiro
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 32
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 32
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 32
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Referências:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/learning-python-from-zero-to-hero-120ea540b567/"&gt;Learning Python: From Zero to Hero&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.python.org/pt-br/3/tutorial/classes.html"&gt;docs.python: Classes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pense-python.caravela.club/"&gt;Pense em Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>python</category>
    </item>
    <item>
      <title>Como debuggar o NodeJS no Visual Studio Code</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Thu, 20 May 2021 11:55:46 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/como-debuggar-o-nodejs-no-visual-studio-code-3no4</link>
      <guid>https://dev.to/rafaelvieirab/como-debuggar-o-nodejs-no-visual-studio-code-3no4</guid>
      <description>&lt;p&gt;Incontáveis vezes ocorrem erros inesperados, e precisamos analisar o fluxo da nossa aplicação. Uma forma bem mais eficiente que os famosos "&lt;code&gt;console.log('Até aqui deu certo')&lt;/code&gt;", é depurando a aplicação.&lt;/p&gt;

&lt;h3&gt;
  
  
  Abrindo a Ferramenta de Debugger
&lt;/h3&gt;

&lt;p&gt;Primeiramente acesse a perspectiva de Debug, clicando no menu lateral esquerdo de Debug (caracterizada pela formato de inseto). Depois, clicando em "Add Configurations", irá aparecer um arquivo &lt;code&gt;.vscode/launch.json&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ca7jNlqJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gv0d7ed4f5bp4ezx7guq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ca7jNlqJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gv0d7ed4f5bp4ezx7guq.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Porém, somente com esse arquivo criado, não conseguimos depurar a aplicação da forma que queremos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Estratégias de Depuração
&lt;/h3&gt;

&lt;p&gt;Existem duas maneiras de depurar no VSCode:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;"Launch": Inicia o servidor através da ferramenta de debugger.&lt;/li&gt;
&lt;li&gt;"Attach" : A ferramenta de depuração se conecta a um servidor já iniciado. Isto é, mantém a inicialização do servidor da mesma maneira que já acontecia, e ao clicar na opção de depurar (ícone de play) é que inicia a inspeção do código. Dessa forma, a ferramenta de depuração simplesmente se conecta ao servidor ativo, em vez de iniciar uma nova aplicação.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nesse artigo, optaremos pela 2° estratégia.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configurando aplicação
&lt;/h3&gt;

&lt;p&gt;Inicialmente, adicione a flag &lt;code&gt;--inspector&lt;/code&gt; na linha de comando que executa o servidor. Isso significa que desejamos inspecionar a execução com node, e permitindo que o "Attach" consiga se connectar a aplicação que possui &lt;code&gt;--inspector&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;  node &lt;span class="nt"&gt;--inspect&lt;/span&gt; server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se executarmos essa linha de código, perceberemos uma mudança nos logs da execução. Deve aparecer uma mensagem parecida com "Debugger lintening on ws://127.0.0.1:5000/id", onde id é um valor aleatório, e supondo que sua aplicação esteja executando no endereço &lt;code&gt;127.0.0.1:5000&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---5dQs4Np--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j8ogv7mabdvs5e8c4jla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---5dQs4Np--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j8ogv7mabdvs5e8c4jla.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isso significa que a aplicação está pronta ser inspecionada. Agora só falta o VSCode se conectar com esse degub.&lt;br&gt;
Depois, alteramos as configurações no arquivo &lt;code&gt;.vscode/launch.json&lt;/code&gt; da seguinte maneira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"configurations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Attach Program"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"request"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"attach"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"skipFiles"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;node_internals&amp;gt;/**"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"protocol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"inspector"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"restart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"outFiles"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Entendendo cada propriedade:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;type&lt;/code&gt;: é especificada o type de debugger, no caso, é para o node;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt;: é especificada o nome do debugger;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;request&lt;/code&gt;: especifico qual é a forma de debugger. No caso &lt;code&gt;attach&lt;/code&gt; é realizado uma conexão com o servidor que já se encontra em execução, enquanto &lt;code&gt;launch&lt;/code&gt; inicia um novo servidor (primeira estratégia citada);&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;protocol&lt;/code&gt;: Ao configrar &lt;code&gt;"protocol": "inspector"&lt;/code&gt;, informa que utilizará o protocolo de inspeção do VSCode;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;restart&lt;/code&gt;: realizar reconexão automática caso o servidor reinicie, isto é, caso a aplicação seja restartada, a ferramenta de depuração se conecta com a no instância;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;outFiles&lt;/code&gt;: matriz de padrões glob para procurar em arquivos JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;skipFiles&lt;/code&gt; - pula automaticamente os arquivos cobertos por esses padrões glob.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Referências:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=bVAhNaxBEjM"&gt;Debug de aplicações Node.js com VSCode | Code/Drops #11 - Rocketseat&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>node</category>
    </item>
    <item>
      <title>Draw Entity-Relationship Diagrams (ER)</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Wed, 19 May 2021 15:11:56 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/draw-entity-relationship-diagrams-er-fpp</link>
      <guid>https://dev.to/rafaelvieirab/draw-entity-relationship-diagrams-er-fpp</guid>
      <description>&lt;h3&gt;
  
  
  &lt;a href="https://dbdiagram.io/home"&gt;DbDiagram&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A free, simple tool to draw ER diagrams by just writing code.&lt;br&gt;
Designed for developers and data analysts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Online&lt;/li&gt;
&lt;li&gt;It may import from MySQL, PostgreSQL, SQLServer and Rails(schema.rb)&lt;/li&gt;
&lt;li&gt;Enjoy the Efficiency of Writing Code: You type and an ER diagram appears. Your fingers never need to leave your keyboard.&lt;/li&gt;
&lt;li&gt;Generate SQL statements: Directly generate SQL statements to create your database tables.&lt;/li&gt;
&lt;li&gt;Export to Images and PDFs: Create beautiful PDFs of your ER diagram to circulate internally. Who says ERDs are so difficult to create?&lt;/li&gt;
&lt;li&gt;One Click Sharing Share your diagrams online with your colleagues and customers with just one click.&lt;/li&gt;
&lt;li&gt;Integrate with your SQL Databases: Quickly generate your diagrams from SQL dump files.&lt;/li&gt;
&lt;li&gt;Integrate with Popular Web Frameworks: Or if you use popular web frameworks like Rails or Django, simply upload your schema.rb or models.py file!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>database</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Alongamentos para o Corpo</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Wed, 12 May 2021 14:15:33 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/alongamentos-para-o-corpo-1434</link>
      <guid>https://dev.to/rafaelvieirab/alongamentos-para-o-corpo-1434</guid>
      <description>&lt;p&gt;Por causa da quantidade de horas que passo na frente do notebook ou do celular, comecei a sentir alguns problemas de saúde. Por causa disso, pesquise sobre alguns alongamentos fáceis e rápidos para se fazer em casa, por causa da dificuldade em sair de casa com a pandemia.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mãos e punhos
&lt;/h2&gt;

&lt;p&gt;A digitação é uma tarefa que tenciona muito os tendões e articulações das mãos e punhos. Por isso, exercícios simples mas eficazes podem reduzir o desconforto causado por horas lidando com o teclado.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Estique um de seus braços com a palma da mão virada para frente e puxe os dedos para cima.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repita o processo, mas com a palma da mão virada para baixo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Entrelace seus dedos como na figura e gire os punhos para os dois lados.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Ombros
&lt;/h2&gt;

&lt;p&gt;Durante o uso do computador, muitas vezes apoiamos todo o peso do corpo em nossos ombros, em especial quando não adotamos uma postura correta. Para amenizar os efeitos causados sobre eles, faça pausas de hora em hora e siga os seguintes exercícios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Estique seu braço contra o peito e puxe-o utilizando o outro braço, como indicado na figura.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Coloque o braço dobrado por trás da cabeça, puxando para baixo com a outra mão.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gire os ombros normalmente em movimentos circulares para finalizar a série.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Pescoço
&lt;/h2&gt;

&lt;p&gt;O nosso pescoço é uma das partes do corpo mais afetadas pela tensão do dia-a-dia, tornando-o rígido e sem flexibilidade depois de muito tempo sem exercitá-lo. Por este motivo, é importante priorizar alguns exercícios de alongamento para a região.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Puxe seu pescoço com a ajuda da mão para a direita e para a esquerda, permanecendo na posição por alguns segundos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Com as duas mãos na parte de trás da cabeça, leve-a para baixo, alongando a parte de trás da região.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Coloque um de seus braços por trás das costas, puxando-o para o mesmo lado que inclinar a cabeça. Repita o exercício para o outro lado.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gire o pescoço em movimentos circulares para os dois lados.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Costas
&lt;/h2&gt;

&lt;p&gt;Esta é uma das regiões mais afetadas pelo uso do computador, em especial quando não mantemos boa postura em frente ao PC. Alguns exercícios de alongamento para as costas podem prevenir dores e incômodos após muitas horas de uso da máquina.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Cruze as pernas e desça com as mãos esticadas em direção ao chão. Repita o movimento com a outra perna na frente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sentado, abra as pernas e tente encostas as palmas das mãos no chão, como indicado na figura.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Pernas
&lt;/h2&gt;

&lt;p&gt;Outro ponto importante e que muitos desprezam quanto aos alongamentos é em relação às pernas. Elas ficam muito tempo paradas em uma mesma posição enquanto estamos sentados, sendo necessário alongar e exercitar os membros para melhorar a circulação, entre muitos outros aspectos.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Puxe o joelho de encontro ao peito e segure por alguns segundos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Coloque as pernas cruzadas, inclinando o tronco à frente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Em pé, apoie-se em algum objeto fixo e estique uma das pernas para trás, forçando o alongamento da panturrilha.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dobre uma das pernas, puxando-a pela ponta do pé e mantendo a posição durante alguns segundos.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Referências:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.tecmundo.com.br/educacao/2485-dicas-de-alongamento-apos-algumas-horas-na-frente-do-pc-.htm"&gt;Dicas de alongamento após algumas horas na frente do PC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Exercícios para Relaxamento dos Olhos</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Wed, 12 May 2021 13:44:50 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/exercicios-para-relaxamento-dos-olhos-4gpm</link>
      <guid>https://dev.to/rafaelvieirab/exercicios-para-relaxamento-dos-olhos-4gpm</guid>
      <description>&lt;p&gt;Por causa da quantidade de horas que passo na frente do notebook ou do celular, comecei a sentir alguns problemas de saúde. Por causa disso, pesquise sobre alguns exercícios que podem ajudar no relaxamento dos olhos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use as palmas das mãos
&lt;/h3&gt;

&lt;p&gt;Sente-se confortavelmente, descanse os braços sobre uma superfície plana, feche os olhos e coloque as palmas de suas mãos sobre os olhos. Ficará completamente escuro. Agora respire lenta e profundamente por um ou dois minutos. Depois de ter feito isso, lentamente tire as mãos e abra os olhos novamente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exercício das quatro direções
&lt;/h3&gt;

&lt;p&gt;Sente-se confortavelmente em um banco e mantenha a cabeça reta. Em seguida, olhe o mais longe que pode em quatro direções, dois ou três segundos em cada uma: para cima, para baixo, esquerda e direita. Repita três vezes. &lt;em&gt;Importante:&lt;/em&gt; mexa apenas os olhos, não a cabeça.&lt;/p&gt;

&lt;h3&gt;
  
  
  Massagem
&lt;/h3&gt;

&lt;p&gt;Uma massagem suave é muito relaxante para os olhos. Usando as pontas dos polegares, massage a área abaixo do sobrancelhas - a partir da parte superior do nariz até a borda externa da pálpebra - em movimentos circulares.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exercícios para relaxamento dos olhos
&lt;/h3&gt;

&lt;p&gt;Sente-se com a coluna reta e estique um braço à frente do nariz, com o polegar apontando para cima. Agora escolha cinco objetos: a ponta do nariz, o braço estendido, o polegar e mais dois objetos na sala, que estejam mais distantes. Olhe para cada objeto, descansando o olhar sobre cada um deles por alguns instantes. Por fim, deixe seu olhar vagar sobre a ponta do nariz, o braço, o polegar e os dois objetos, olhando à distância para finalizar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exercício de acomodação
&lt;/h3&gt;

&lt;p&gt;Mantenha o dedo indicador direito na altura dos olhos, à cerca de metade do comprimento de um braço do seu olho. Mantenha o dedo indicador esquerdo a cerca de 15 centímetros mais para trás. Em um ritmo constante, mude seu olhar de um dedo e para o outro. Faça isso por um minuto.&lt;/p&gt;

&lt;p&gt;Referências:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zeiss.com.br/vision-care/melhor-visao/saude-e-prevencao/exercicios-para-os-olhos.html"&gt;Zeiss&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Deploying App using Vercel</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Tue, 11 May 2021 14:33:58 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/deploying-app-using-vercel-45f3</link>
      <guid>https://dev.to/rafaelvieirab/deploying-app-using-vercel-45f3</guid>
      <description>&lt;h3&gt;
  
  
  1. Create yout account at &lt;a href="https://vercel.com"&gt;Vercel&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  2. Install &lt;a href="https://vercel.com/cli"&gt;vercel-cli&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Use the package manager &lt;code&gt;node&lt;/code&gt; or &lt;code&gt;yarn&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;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; vercel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn global add vercel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Obs.:&lt;/em&gt; If choose &lt;code&gt;yarn&lt;/code&gt;, add the &lt;a href="https://classic.yarnpkg.com/en/docs/cli/global/"&gt;global path&lt;/a&gt; to your &lt;code&gt;./bashrc&lt;/code&gt; or &lt;code&gt;./zshrc&lt;/code&gt; file.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Log in with your account through the terminal
&lt;/h3&gt;

&lt;p&gt;At the end of the installation of &lt;code&gt;vercel-cli&lt;/code&gt;, you can test it by typing&lt;code&gt;vercel -h&lt;/code&gt; in the terminal.&lt;br&gt;
After that, you must log into your Vercel account through the terminal, typing &lt;code&gt;vercel login&lt;/code&gt; and follow the instructions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BC2GzyR---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uh1jf5cfzhfbchslgld3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BC2GzyR---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uh1jf5cfzhfbchslgld3.png" alt="vercel login example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Deploy
&lt;/h3&gt;

&lt;p&gt;To implement your project, just type &lt;code&gt;vercel&lt;/code&gt; in the terminal, and follow the instructions. At the end, you will be informed of the link to your project hosted at Vercel.&lt;br&gt;
After the first version of your project is deployed, if there are new changes to the project that you want to deploy as well, then you must use &lt;code&gt;vercel --prod&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uD52O3Mp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.deadbearcode.com/wp-content/uploads/2020/05/vercel-deploy-config-1024x262.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uD52O3Mp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.deadbearcode.com/wp-content/uploads/2020/05/vercel-deploy-config-1024x262.png" alt="vercel deploy image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Obs:&lt;/em&gt; After the first deployment, the &lt;code&gt;vercel&lt;/code&gt; command is used for testing and no longer for the actual deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Linking to the Github project
&lt;/h3&gt;

&lt;p&gt;To connect your Github / Gitlab project to the application's deployment, you must copy the link to your project hosted at Vercel (the one that was informed at the time of implementation) and open it in the browser.&lt;br&gt;
Then go to &lt;code&gt;Settings &amp;gt; Git &amp;gt; Connect Git Repository&lt;/code&gt;, and type in the name of your Github project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VuC7tFgI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/50nokselsos3ckcio315.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VuC7tFgI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/50nokselsos3ckcio315.png" alt="vercel github connection"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Inspiration ...</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Tue, 11 May 2021 00:20:25 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/inspiration-53oo</link>
      <guid>https://dev.to/rafaelvieirab/inspiration-53oo</guid>
      <description>&lt;h2&gt;
  
  
  HTML/CSS
&lt;/h2&gt;

&lt;h4&gt;
  
  
  1. &lt;a href="https://dev.to/devlorenzo/50-best-inspiring-form-designs-36k"&gt;50 Best Inspiring Form Designs 🎨&lt;/a&gt;.
&lt;/h4&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>List of Cheat Sheet Compilations</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Mon, 10 May 2021 23:46:04 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/list-of-cheat-sheet-compilations-cn5</link>
      <guid>https://dev.to/rafaelvieirab/list-of-cheat-sheet-compilations-cn5</guid>
      <description>&lt;h3&gt;
  
  
  1. &lt;a href="https://dev.to/worldindev/the-ultimate-compilation-of-cheat-sheets-100-268g#2a"&gt;The ultimate Cheat sheets compilation (200+) - 🔥🎁 / Roadmap to dev 🚀&lt;/a&gt;.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://dev.to/worldindev/the-ultimate-compilation-of-cheat-sheets-2-53he"&gt;The ultimate Cheat sheets compilation (200+) - 🔥Roadmap to dev 🚀 - 2 &lt;/a&gt;.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  3. &lt;a href="https://dev.to/worldindev/the-most-useful-terminal-commands-how-to-work-with-directories-51l8"&gt;Terminal Cheat Sheet 🔥 - The most useful terminal commands 🚀&lt;/a&gt;.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  4. &lt;a href="https://dev.to/kiranrajvjd/the-ultimate-web-developer-resources-list-200-resources-2gf5"&gt;The Ultimate Web Developer Resources List 🔥Awesome 200+ Resources&lt;/a&gt;.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  5. &lt;a href="https://github.com/nicolesaidy/awesome-web-design"&gt;Lista de Recursos para Web Designers&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS Selectors</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Fri, 07 May 2021 00:19:47 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/css-selectors-3pi3</link>
      <guid>https://dev.to/rafaelvieirab/css-selectors-3pi3</guid>
      <description>&lt;h2&gt;
  
  
  Basic Selectors
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;*&lt;/code&gt;
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
* {
 margin: 0;
 padding: 0;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The star symbol will target every single element on the page. Many developers will use this trick to zero out the margins and padding. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. #X
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
#container {
   width: 960px;
   margin: auto;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prefixing the hash symbol to a selector allows us to target by id.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. .X
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
.error {
  color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a class selector.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. X
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a { color: red; }
ul { margin-left: 0; }
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a element selector.&lt;/p&gt;

&lt;h2&gt;
  
  
  Combinator Selectors
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5. X Y
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
li a { text-decoration: none; }
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select the &lt;code&gt;Y&lt;/code&gt; element that is inside&lt;code&gt;X&lt;/code&gt;, but not necessarily the immediate children.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. X + Y
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
ul + p {
   color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is referred to as an adjacent selector. It will select only the element that is immediately preceded by the former element. In this case, only the first paragraph after each ul will have red text.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. X &amp;gt; Y
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
div#container &amp;gt; ul {
  border: 1px solid black;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference between the standard X Y and X &amp;gt; Y is that the latter will only select direct childrenIn the example above, all elements &lt;code&gt;ul&lt;/code&gt; children of &lt;code&gt;div#container&lt;/code&gt; will be selected.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. X ~ Y
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
ul ~ p {
   color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This sibling combinator is similar to X + Y, but it's less strict. While an adjacent selector (ul + p) will only select the first element that is immediately preceded by the former selector, this one is more generalized. It will select, referring to our example above, any p elements, as long as they follow a ul.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attribute Selectors
&lt;/h2&gt;

&lt;h3&gt;
  
  
  9. X[title]
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
.error {
  color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Referred to as an attributes selector, in our example above, this will only select the anchor tags that have a title attribute. Anchor tags which do not will not receive this particular styling. &lt;/p&gt;

&lt;h3&gt;
  
  
  10. X[href="foo"]
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a[href="https://code.tutsplus.com"] {
  color: #83b348; /* Envato green */
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The snippet above will style all anchor tags which link to &lt;a href="https://code.tutsplus.com"&gt;https://code.tutsplus.com&lt;/a&gt;; they'll receive our branded green color. All other anchor tags will remain unaffected.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. X[href*="foo"]
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a[href*="tutsplus"] {
  color: #83b348; /* Envato green */
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There we go; that's what we need. The star designates that the proceeding value must appear somewhere in the attribute's value. That way, this covers tutsplus.com, code.tutsplus.com, and even webdesign.tutsplus.com.&lt;/p&gt;

&lt;h3&gt;
  
  
  12. X[href^="http"]
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a[href^="http"] {
   background: url(path/to/external/icon.png) no-repeat;
   padding-left: 10px;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ever wonder how some websites are able to display a little icon next to the links which are external? I'm sure you've seen these before; they're nice reminders that the link will direct you to an entirely different website.&lt;/p&gt;

&lt;h3&gt;
  
  
  13. X[href$="http"]
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a[href^=".jpg"] {
   color: red
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, we use a regular expressions symbol, &lt;code&gt;$&lt;/code&gt;, to refer to the end of a string. In this case, we're searching for all anchors which link to an image—or at least a URL that ends with .jpg. Keep in mind that this won't capture GIF and PNG images.&lt;/p&gt;

&lt;h3&gt;
  
  
  14. X[data-*="foo"]]
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a[data-filetype="image"] {
   color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Selects all &lt;code&gt;a&lt;/code&gt;'s with &lt;code&gt;data-filetype&lt;/code&gt; equal to "image".&lt;/p&gt;

&lt;h3&gt;
  
  
  X[foo~="bar"]
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a[data-info~="external"] {
   color: red;
}
a[data-info~="image"] {
   border: 1px solid black;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's a special one that'll impress your friends. Not too many people know about this trick. The tilde (~) symbol allows us to target an attribute which has a space-separated list of values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pseudo Selectors
&lt;/h2&gt;

&lt;h3&gt;
  
  
  16. X:visited and X:link
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
a:link { color: red; }
a:visited { color: purple; }
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  17. X:checked
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
input[type=radio]:checked {
    border: 1px solid black;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  18. X:after
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
.clearfix:after {
    content: "";
    display: block;
    clear: both;
    visibility: hidden;
    font-size: 0;
    height: 0;
} 
.clearfix { 
    *display: inline-block; 
    _height: 1%;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This hack uses the :after pseudo class to append a space after the element, and then clear it. It's an excellent trick to have in your tool bag, particularly in the cases when the overflow: hidden; method isn't possible.&lt;/p&gt;

&lt;p&gt;This hack uses the :after pseudo class to append a space after the element, and then clear it. It's an excellent trick to have in your tool bag, particularly in the cases when the overflow: hidden; method isn't possible&lt;/p&gt;

&lt;h3&gt;
  
  
  19. X:hover
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
adiv:hover {
  background: #e3e3e3;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  20. X:not(selector)
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
div:not(#container) {
   color: blue;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The negation pseudo class is particularly helpful. Let's say I want to select all divs, except for the one which has an id of container. The snippet above will handle that task perfectly.&lt;/p&gt;

&lt;p&gt;Or, if I wanted to select every single element (not advised) except for paragraph tags, we could do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  21. X::pseudoElement
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
p::first-line {
   font-weight: bold;
   font-size: 1.2em;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can use pseudo elements (designated by ::) to style fragments of an element, such as the first line or the first letter. Keep in mind that these must be applied to block-level elements in order to take effect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nth Child and Type Selectors
&lt;/h2&gt;

&lt;h3&gt;
  
  
  22. X:nth-child(n)
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
li:nth-child(3) {
   color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please note that nth-child accepts an integer as a parameter, but this is not zero-based. If you wish to target the second list item, use &lt;code&gt;li:nth-child(2)&lt;/code&gt;.&lt;br&gt;
We can even use this to select a variable set of children. For example, we could do &lt;code&gt;li:nth-child(4n)&lt;/code&gt; to select every fourth list item.&lt;/p&gt;
&lt;h3&gt;
  
  
  23. X:nth-last-child(n)
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
li:nth-last-child(2) {
   color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What if you had a huge list of items in a ul, and you only needed to access, say, the third to last item? Rather than doing li:nth-child(397), you could instead use the nth-last-child pseudo class.&lt;/p&gt;

&lt;h3&gt;
  
  
  24. X:nth-of-type(n)
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
ul:nth-of-type(3) {
    border: 1px solid black;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There will be times when, rather than selecting a child, you instead need to select according to the type of element.&lt;br&gt;
Imagine markup that contains five unordered lists. If you wanted to style only the third ul, and didn't have a unique id to hook into, you could use the nth-of-type(n) pseudo class. In the snippet above, only the third ul will have a border around it.&lt;/p&gt;
&lt;h3&gt;
  
  
  25. X:nth-last-of-type(n)
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
ul:nth-last-of-type(3) {
   border: 1px solid black;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And yes, to remain consistent, we can also use nth-last-of-type to begin at the end of the selectors list and work our way back to target the desired element.&lt;/p&gt;

&lt;h3&gt;
  
  
  26. X:first-child
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
ul:nth-of-type(3) {
    border: 1px solid black;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This structural pseudo class allows us to target only the first child of the element's parent. You'll often use this to remove borders from the first and last list items.&lt;br&gt;
For example, let's say you have a list of rows, and each one has a border-top and a &lt;code&gt;border-bottom&lt;/code&gt;. Well, with that arrangement, the first and last item in that set will look a bit odd.&lt;br&gt;
Many designers apply classes of &lt;code&gt;first&lt;/code&gt; and &lt;code&gt;last&lt;/code&gt; to compensate for this. Instead, you can use these pseudo classes.&lt;/p&gt;
&lt;h3&gt;
  
  
  27. X:last-child
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
ul &amp;gt; li:last-child {
   color: green;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The opposite of first-child, last-child will target the last item of the element's parent.&lt;/p&gt;

&lt;h3&gt;
  
  
  28. X:only-child
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
div p:only-child {
    color: red;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Truthfully, you probably won't find yourself using the &lt;code&gt;only-child&lt;/code&gt; pseudo class too often. Nonetheless, it's available, should you need it.&lt;/p&gt;

&lt;p&gt;It allows you to target elements which are the only child of its parent. For example, referencing the snippet above, only the paragraph that is the only child of the &lt;code&gt;div&lt;/code&gt; will be colored red.&lt;/p&gt;

&lt;h3&gt;
  
  
  29. X:only-of-type
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
li:only-of-type {
   font-weight: bold;
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This structural pseudo class can be used in some clever ways. It will target elements that do not have any siblings within its parent container. As an example, let's target all uls which have only a single list item.&lt;/p&gt;

&lt;p&gt;First, ask yourself how you would accomplish this task. You could do ul li, but this would target all list items. The only solution is to use only-of-type.&lt;/p&gt;

&lt;h3&gt;
  
  
  30. X:first-of-type
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```css
ul:first-of-type li:nth-last-child(1) {
    font-weight: bold;   
}
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first-of-type pseudo class allows you to select the first siblings of its type.&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048"&gt;The 30 CSS Selectors You Must Memorize&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Good Practices in HTML</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Thu, 06 May 2021 19:15:00 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/good-practices-in-html-4ka8</link>
      <guid>https://dev.to/rafaelvieirab/good-practices-in-html-4ka8</guid>
      <description>&lt;h3&gt;
  
  
  1. Use Tags Semânticas.
&lt;/h3&gt;

&lt;p&gt;Use Semantic Tags.&lt;br&gt;
Using semantic tags helps in organizing and understanding the page layout. For example, when we see a &lt;code&gt;div '' or&lt;/code&gt; &lt;code&gt;span '' tag, we are unable to infer anything from them. However, if we find tags like&lt;/code&gt;&lt;code&gt;&lt;/code&gt;nav '' or&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;header '', we can see that it is about navigation or the header of a page.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://www.w3schools.com/html/html5_semantic_elements.asp"&gt;W3&lt;/a&gt;, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element"&gt;MDN&lt;/a&gt;, &lt;a href="https://dev.opera.com/articles/new-structural-elements-in-html5/"&gt;Table&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://moz.com/learn/seo/alt-text"&gt;Use Textos Alternativos&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Not only for images, but for buttons and other elements that are deemed necessary. After all, how many times have we asked ourselves what would happen if I pressed a button?&lt;/p&gt;

&lt;p&gt;Links: &lt;a href="https://moz.com/learn/seo/alt-text"&gt;Alt Text&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Use &lt;code&gt;async&lt;/code&gt; e &lt;code&gt;defer&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;In modern websites, scripts are often “heavier” than HTML: their download size is larger, and processing time is also longer. &lt;br&gt;
In short, the &lt;code&gt;defer&lt;/code&gt; attribute blocks the loading of the external script, until the DOM is completely built. The &lt;code&gt;async&lt;/code&gt; attribute, on the other hand, runs in parallel with the construction of the DOM.&lt;/p&gt;

&lt;h4&gt;
  
  
  3.1 The &lt;code&gt;defer&lt;/code&gt; attribute
&lt;/h4&gt;

&lt;p&gt;The &lt;code&gt;defer&lt;/code&gt; attribute tells the browser not to wait for the script (only for external scripts). Instead, the browser will continue to process the HTML, build DOM. The script loads “in the background”, and then runs when the DOM is fully built.&lt;br&gt;
In other words:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scripts with defer never block the page.&lt;/li&gt;
&lt;li&gt;Scripts with defer always execute when the DOM is ready (but before DOMContentLoaded event).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3.2 The &lt;code&gt;defer&lt;/code&gt; attribute
&lt;/h4&gt;

&lt;p&gt;The async attribute is somewhat like &lt;code&gt;defer&lt;/code&gt;. It also makes the script non-blocking. But it has important differences in the behavior.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The browser doesn’t block on async scripts (like defer).&lt;/li&gt;
&lt;li&gt;Other scripts don’t wait for async scripts, and async scripts don’t wait for them.&lt;/li&gt;
&lt;li&gt;DOMContentLoaded and async scripts don’t wait for each other.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Link: &lt;a href="https://javascript.info/script-async-defer"&gt;Js&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use metatags&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Metatags provide additional information about your site. This can help SEO algorithms find your page. &lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://metatags.io/"&gt;Metatags&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Links and Buttons.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  5.1 - Buttons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Put the &lt;code&gt;autofocus&lt;/code&gt; attribute on the buttons.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since buttons are focusable elements, we can automatically focus on them when the page loads using the autofocus attribute. &lt;br&gt;
Perhaps you’d do that inside of a modal dialog where one of the actions is a default action and it helps the UX (e.g. you can press Enter to dismiss the modal). Autofocusing after a user action is perhaps the only good practice here, moving a user’s focus without their permission, as the autofocus attribute is capable of, can be a problem for screen reader and screen magnifier users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disable buttons that should not be used (&lt;code&gt;disabled&lt;/code&gt; attribute).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a forward button can only be clicked after confirming your information, or only send data from a form if they are validated and filled out correctly. &lt;/p&gt;

&lt;h4&gt;
  
  
  5.2 - Links
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Add the attribute rel = "noopener norefferer" to links that will open on another page.
The attribute &lt;code&gt;rel&lt;/code&gt; is for the relationship of the link to the target.
Using &lt;code&gt;rel =" noopener norefferer "&lt;/code&gt; makes your site more &lt;a href="https://mathiasbynens.github.io/rel-noopener/"&gt;secure&lt;/a&gt; and &lt;a href="https://jakearchibald.com/2016/performance-benefits-of-rel-noopener/"&gt;fast&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Link: &lt;a href="https://css-tricks.com/a-complete-guide-to-links-and-buttons/"&gt;A Complete Guide to Links and Buttons&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;References:&lt;/em&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/gedalyakrycer/165-developer-resources-i-discovered-in-2020-2021-6ma"&gt;165+ Developer Resources I Discovered in 2020-2021&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>html</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Awesome CSS tricks every developer should know</title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Thu, 06 May 2021 14:30:23 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/awesome-css-tricks-every-developer-should-know-54ph</link>
      <guid>https://dev.to/rafaelvieirab/awesome-css-tricks-every-developer-should-know-54ph</guid>
      <description>&lt;h3&gt;
  
  
  Smooth scrolling
&lt;/h3&gt;

&lt;p&gt;This technique is super important when you have a button that displays a different part of your web page. Doing it with a simple href="#goToContact" will definitely move quickly but not funny. Having a smooth scroll is funny and professional. Your web visitor deserves the best user experience.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;scroll-behavior&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;smooth&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resize images to fit
&lt;/h3&gt;

&lt;p&gt;Who didn’t have a headache making an image fit to a place on your web page? &lt;/p&gt;

&lt;p&gt;Here is an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Setting an image as cursor
&lt;/h3&gt;

&lt;p&gt;Want to make your cursor special like your web app or website? This can give a unique souvenir to your web visitor, so why not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url("images/cursor.png")&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Center anything in 3 lines of code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.center&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;300px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;300px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Set a limited content in a paragraph
&lt;/h3&gt;

&lt;p&gt;Do you need to display only a few phrases in your paragraph? Again, CSS can do this in one line of code. The -webkit-line-clamp CSS property allows limiting of contents of a block container to a specified number of lines.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;-webkit-line-clamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
css&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://levelup.gitconnected.com/5-awesome-css-tricks-every-developer-should-know-39396d4be992"&gt;5 Awesome CSS tricks every developer should know&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>html</category>
    </item>
    <item>
      <title>Free React dashboard templates and themes </title>
      <dc:creator>rafaelvieirab</dc:creator>
      <pubDate>Thu, 06 May 2021 14:21:48 +0000</pubDate>
      <link>https://dev.to/rafaelvieirab/free-react-dashboard-templates-and-themes-5bl2</link>
      <guid>https://dev.to/rafaelvieirab/free-react-dashboard-templates-and-themes-5bl2</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Mosaic Lite&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Live Demo](&lt;a href="https://mosaic.cruip.com/"&gt;https://mosaic.cruip.com/&lt;/a&gt;) / &lt;a href="https://github.com/cruip/tailwind-dashboard-template"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully functional charts built with Chart.js 3&lt;/li&gt;
&lt;li&gt;Tiles-based user interface&lt;/li&gt;
&lt;li&gt;Desktop and mobile live demos&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://www.bootstrapdash.com/demo/corona-react-free/template/demo_1/preview/dashboard"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/BootstrapDash/corona-react-free-admin-template"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Corona is a sleek and dark admin dashboard from BootstrapDash tha&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple pages and styled-components&lt;/li&gt;
&lt;li&gt;Cross-browser compatibility&lt;/li&gt;
&lt;li&gt;Material Design Icons&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://demo.themesberg.com/volt-react-dashboard/#/dashboard/overview"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/themesberg/volt-react-dashboard"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Over 100 React UI elements included&lt;/li&gt;
&lt;li&gt;Sass preprocessing language&lt;/li&gt;
&lt;li&gt;Tutorials and documentation available&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://www.bootstrapdash.com/demo/azia-react-free/template/preview/dashboard"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/BootstrapDash/azia-admin-react"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provides both compiled and minified variations&lt;/li&gt;
&lt;li&gt;Luxurious directories and files&lt;/li&gt;
&lt;li&gt;Clean and well-commented code&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Connect Plus&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://bootstrapdash.com/demo/connect-plus-react-free/template/demo_1/preview/dashboard"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/BootstrapDash/connect-plus-react-free-admin-template"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple and interactive dashboard views&lt;/li&gt;
&lt;li&gt;Classy and elegant React diagrams&lt;/li&gt;
&lt;li&gt;Data representation tables&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Star Admin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.bootstrapdash.com/demo/star-admin-free/react/template/demo_1/preview/dashboard"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/BootstrapDash/StarAdmin-Free-React-Admin-Template"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexible look for different outcome needs&lt;/li&gt;
&lt;li&gt;Pre-crafted application content&lt;/li&gt;
&lt;li&gt;Advanced and dynamic chart library&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="http://lite.codedthemes.com/materially/dashboard/default"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://codedthemes.com/item/materially-free-reactjs-admin-template/"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Various types of colored tables&lt;/li&gt;
&lt;li&gt;Vertical, light, and dark layouts&lt;/li&gt;
&lt;li&gt;Fast loading speed and page rendering&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Datta Able&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://lite.codedthemes.com/datta-able/react/default/dashboard/default"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/codedthemes/datta-able-bootstrap-dashboard"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully developer-centric code&lt;/li&gt;
&lt;li&gt;UI kit included as part of the &lt;a href=""&gt;download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Fulfills every Dashboard needs&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://tabler-react.com/"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/tabler/tabler-react/tree/version-2"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive and high-quality UI&lt;/li&gt;
&lt;li&gt;Fixes for package updates&lt;/li&gt;
&lt;li&gt;Interactive tiles to display live stats&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10+ layout variations&lt;/li&gt;
&lt;li&gt;Webpack based React app&lt;/li&gt;
&lt;li&gt;Updated on a regular basis&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Material Admin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://dashboards.webkom.co/react/airframe/dashboards/analytics"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/0wczar/airframe-react"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple colored card layouts&lt;/li&gt;
&lt;li&gt;Full support via forum and email&lt;/li&gt;
&lt;li&gt;Notifications bar and Authentication&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://wrappixel.com/demos/free-admin-templates/adminpro-react-lite/main/#/dashboard"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://www.wrappixel.com/templates/adminpro-react-admin-lite/"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ready to use chart options&lt;/li&gt;
&lt;li&gt;Application PSD files&lt;/li&gt;
&lt;li&gt;front-end landing page included&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://matx-react.ui-lib.com/dashboard/inventory-management"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://ui-lib.com/downloads/matx-react-dashboard/"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firebase authentication&lt;/li&gt;
&lt;li&gt;Infinite scroll grid&lt;/li&gt;
&lt;li&gt;Plan and pricing pages&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Devias Kit&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://react-material-dashboard.devias.io/app/dashboard"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/devias-io/material-kit-react"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Available in dark and light mode&lt;/li&gt;
&lt;li&gt;Includes several demo pages&lt;/li&gt;
&lt;li&gt;Can be upgraded to the full version&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://demos.creative-tim.com/argon-dashboard-react/#/admin/index"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/creativetimofficial/argon-dashboard-react"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Several pre-built page examples&lt;/li&gt;
&lt;li&gt;Bright palette with gradient backgrounds&lt;/li&gt;
&lt;li&gt;Chic and streamlined user interface&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://demo.uifort.com/bamburgh-react-admin-dashboard-reactstrap-free-demo/DashboardDefault"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://uifort.com/template/bamburgh-react-admin-dashboard-reactstrap-free/"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Examples pages and starter kits&lt;/li&gt;
&lt;li&gt;Compatible with multiple frameworks&lt;/li&gt;
&lt;li&gt;Modular design architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;OAH-Admin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://gatsby-admin.paljs.com/extra-components/progress/"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/paljs/gatsby-admin-template"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scalable palette scheme&lt;/li&gt;
&lt;li&gt;Multiple background options&lt;/li&gt;
&lt;li&gt;Styled application states&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://coreui.io/react/demo/3.1.0/#/dashboard"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://coreui.io/react/"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SCSS and Javascript source files&lt;/li&gt;
&lt;li&gt;Data-rich responsive charts&lt;/li&gt;
&lt;li&gt;Enterprise-level support&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Shards Lite&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solid and consistent design system&lt;/li&gt;
&lt;li&gt;Highly optimized for performance&lt;/li&gt;
&lt;li&gt;FontAwesome and Material icon packs&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Black Dashboard&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;16 individual components&lt;/li&gt;
&lt;li&gt;Packed with various plugins&lt;/li&gt;
&lt;li&gt;Easily change views and positions&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Boss Lite&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easily manage data collection&lt;/li&gt;
&lt;li&gt;25+ reusable modules&lt;/li&gt;
&lt;li&gt;High performance with SSR&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Material PRO&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Various table examples&lt;/li&gt;
&lt;li&gt;6 Months Free Updates&lt;/li&gt;
&lt;li&gt;Integrated plugins&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ready-made carousels and popovers&lt;/li&gt;
&lt;li&gt;Layouts with project summary&lt;/li&gt;
&lt;li&gt;Demo links with the source code&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Light Blue&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Styled Bootstrap components&lt;/li&gt;
&lt;li&gt;Responsive charts&lt;/li&gt;
&lt;li&gt;Notifications styles&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Flatlogic One&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Widgets integrated with Google Maps&lt;/li&gt;
&lt;li&gt;Datatables developed from scratch&lt;/li&gt;
&lt;li&gt;Static and dynamic sidebars&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free for personal and commercial usage&lt;/li&gt;
&lt;li&gt;Technical support included&lt;/li&gt;
&lt;li&gt;Built with the latest code standards&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://reduction-admin.github.io/react-reduction/"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/reduction-admin/react-reduction"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Different live previews available&lt;/li&gt;
&lt;li&gt;Navigation panel on the left&lt;/li&gt;
&lt;li&gt;Subscription bar integration&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Isomorphic Admin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mobile-friendly layout&lt;/li&gt;
&lt;li&gt;Utility classes for rapid development&lt;/li&gt;
&lt;li&gt;Server-Side Rendering&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href=""&gt;Live Demo&lt;/a&gt; / &lt;a href=""&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designed by industry-leading designers&lt;/li&gt;
&lt;li&gt;Multipurpose backend interface&lt;/li&gt;
&lt;li&gt;Multiple extended use&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;React Admin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://marmelab.com/react-admin-demo/#/"&gt;Live Demo&lt;/a&gt; / &lt;a href="https://github.com/marmelab/react-admin"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Highly customizable interface&lt;/li&gt;
&lt;li&gt;Large library of data types&lt;/li&gt;
&lt;li&gt;Supports any form layout&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/davidepacilio/30-free-react-dashboard-templates-and-themes-49g4"&gt;30 Free React dashboard templates and themes &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>html</category>
    </item>
  </channel>
</rss>
