<?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: André Rodrigues</title>
    <description>The latest articles on DEV Community by André Rodrigues (@andrerodriguesdevweb).</description>
    <link>https://dev.to/andrerodriguesdevweb</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%2F677304%2F32a12a63-bb57-49c6-8c3b-8ce0dcc6f463.jpeg</url>
      <title>DEV Community: André Rodrigues</title>
      <link>https://dev.to/andrerodriguesdevweb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andrerodriguesdevweb"/>
    <language>en</language>
    <item>
      <title>Criando a logo do Instagram com HTML, CSS e analisando código para melhorias</title>
      <dc:creator>André Rodrigues</dc:creator>
      <pubDate>Fri, 01 Dec 2023 03:08:05 +0000</pubDate>
      <link>https://dev.to/andrerodriguesdevweb/criando-a-logo-do-instagram-com-html-css-e-analisando-codigo-para-melhorias-1k72</link>
      <guid>https://dev.to/andrerodriguesdevweb/criando-a-logo-do-instagram-com-html-css-e-analisando-codigo-para-melhorias-1k72</guid>
      <description>&lt;p&gt;Fala galera, tudo bem? Muito tempo que não posto nada por aqui, hoje aproveitando o tempo, decidi publicar esse artigo onde iremos criar a logo do Instagram e analisar o que podemos fazer de melhorias em nosso código, e aí bora começar codar?!&lt;/p&gt;

&lt;h2&gt;
  
  
  Primeiro modelo da logo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Escrevendo nosso HTML
&lt;/h3&gt;

&lt;p&gt;Iremos começar com nosso html, definindo alguns containers para estruturar do html, abaixo nosso código.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="instagram"&amp;gt;
  &amp;lt;div class="container-point"&amp;gt;
    &amp;lt;div class="point"&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acima, podemos observar a estrutura html que desenvolvemos. Inicialmente, criamos uma div principal chamada de "instagram", e dentro dessa div principal, implementamos uma div chamada "container-point", que, por sua vez, possui uma div filha com a classe "point". A div com a classe "instagram" servirá como nosso contêiner com uma estilização de gradiente de cor. Já a div com a classe "container-point" terá uma borda branca mais proeminente, enquanto a div com a classe "point" também terá uma borda branca. Para adicionar um elemento visual adicional, utilizaremos o seletor "after" para criar um pseudo-elemento, que assumirá a forma de um pequeno círculo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Escrevendo nosso CSS
&lt;/h3&gt;

&lt;p&gt;A partir de agora é necessária muita atenção em todo processo, para que ao finalizarmos esse primeiro modelo você possa analisar o código e observar os cenários de melhorias que iremos trabalhar no segundo modelo. Vamos ao nosso código CSS, começando pela estilização de nossa div com a classe instagram.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.instagram{
    background: #d6249f;
    background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%);
    box-shadow: 0px 3px 10px rgba(0,0,0,.25);
    border-radius: 20px;
    display: flex;
    align-items: center;
    height: 80px;
    width: 85px; 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em nossa primeira estilização na div com a classe "instagram", inserimos um plano de fundo gradiente, bordas arredondadas e algumas diretrizes de Flexbox, além de definir as dimensões de nossa caixa. Agora, avançaremos na estrutura do CSS, explorando uma funcionalidade inovadora chamada nesting. Essa técnica, como mencionada, é uma novidade no CSS 3 nível 4. Se você já trabalhou com pré-processadores CSS, como o SASS, perceberá a semelhança na estrutura. A grande vantagem do nesting é a capacidade de reduzir significativamente o número de linhas de código. Abaixo, apresento o código CSS com a próxima personalização.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.instagram{
    background: #d6249f;
    background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%);
    box-shadow: 0px 3px 10px rgba(0,0,0,.25);
    border-radius: 20px;
    display: flex;
    align-items: center;
    height: 80px;
    width: 85px;
    .container-point{
        border: 4px solid #fff;
        border-radius: 12px;
        display: flex;
        align-items: center;
        justify-content: center;
        height: 50px;
        margin: 0 auto;
        width: 50px;
     }
}

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

&lt;/div&gt;



&lt;p&gt;Nosso código agora possuí além da parte principal, temos também a div com borda branca que irá ser o container dos nosso círculos, abaixo temos o visual até o momento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Feaxflxpmw93bd97qno2m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Feaxflxpmw93bd97qno2m.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O resultado está ficando legal, né? Mas ainda iremos adicionar os outros detalhes para que de fato vire a tão famosa logo do Instagram, então vamos fechar o primeiro modelo. Vamos adicionar a última classe e o after em nosso código, abaixo o código final com os últimos detalhes do css da primeira parte.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.instagram{
    background: #d6249f;
  background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%);
  box-shadow: 0px 3px 10px rgba(0,0,0,.25);
    border-radius: 20px;
    display: flex;
    align-items: center;
    height: 80px;
    width: 85px;
    .container-point{
        border: 4px solid #fff;
        border-radius: 12px;
        display: flex;
        align-items: center;
        justify-content: center;
        height: 50px;
        margin: 0 auto;
        width: 50px;
        .point{
            border: #fff 4px solid;
            border-radius: 50%;
            height: 20px;
            position: relative;
            width: 20px;
            &amp;amp;:after{
                background-color: #fff;
                border-radius: 50%;
                content: "";
                height: 8px;
                position: absolute;
                right: -8px;
                top: -9px;
                width: 8px;
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Analisando nosso código e refatorando nosso código (segunda estrutura)
&lt;/h2&gt;

&lt;p&gt;Ao observarmos nosso código CSS podemos observar uma janela enorme de melhorias, e garanto que você deve ter observado algumas de grande impacto, como por exemplo trechos de código que estão repetindo várias vezes em nosso código, correto? Vamos melhorar nosso CSS removendo algumas repetições, abaixo nosso código sem repetições.&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="nc"&gt;.instagram&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.container-point&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;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;span class="nc"&gt;.container-point&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.point&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fff&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.conttainer-point&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.point&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.point&lt;/span&gt;&lt;span class="nd"&gt;:after&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.instagram&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#d6249f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;radial-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;circle&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="m"&gt;30%&lt;/span&gt; &lt;span class="m"&gt;107%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#fdf497&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#fdf497&lt;/span&gt; &lt;span class="m"&gt;5%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#fd5949&lt;/span&gt; &lt;span class="m"&gt;45%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;#d6249f&lt;/span&gt; &lt;span class="m"&gt;60%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;#285AEB&lt;/span&gt; &lt;span class="m"&gt;90%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;.25&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&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;80px&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;85px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="err"&gt;.container-point{&lt;/span&gt;
        &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12px&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;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&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;50px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="err"&gt;.point{&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;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&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;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="err"&gt;&amp;amp;:after{&lt;/span&gt;
                &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;""&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;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-9px&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;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="err"&gt;}&lt;/span&gt;
    &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deixando nosso código mais elegante&lt;br&gt;
Iremos aplicar algumas variáveis em nosso código para que ele fique mais charmoso, confira o código abaixo com nossas variáveis.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:root {
  --instagram-bg-start: #fdf497;
  --instagram-bg-end: #285AEB;
  --border-color: #fff;
  --border-radius-large: 20px;
  --border-radius-medium: 12px;
  --border-radius-circle: 50%;
  --box-shadow-color: rgba(0,0,0,.25);
  --point-size: 20px;
  --point-after-size: 8px;
  --container-point-size: 50px;
}


.instagram, .container-point {
  display: flex;
  align-items: center;
}


.container-point, .point { 
  border: var(--border-color) 4px solid; 
}


.container-point, .point, .point:after { 
  border-radius: var(--border-radius-circle); 
}


.instagram {
  background: var(--instagram-bg-start);
  background: radial-gradient(circle at 30% 107%, var(--instagram-bg-start) 0%, var(--instagram-bg-start) 5%, #fd5949 45%, #d6249f 60%, var(--instagram-bg-end) 90%);
  box-shadow: 0px 3px 10px var(--box-shadow-color);
  border-radius: var(--border-radius-large);
  height: 80px;
  width: 85px;

  .container-point {
    border-radius: var(--border-radius-medium);
    justify-content: center;
    height: var(--container-point-size);
    margin: 0 auto;
    width: var(--container-point-size);
    .point {
      height: var(--point-size);
      position: relative;
      width: var(--point-size);

      &amp;amp;:after {
        background-color: var(--border-color);
        content: "";
        height: var(--point-after-size);
        position: absolute;
        right: -8px;
        top: -9px;
        width: var(--point-after-size);
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ao inserirmos as variáveis, otimizamos o tempo de manutenção do código. Isso se torna evidente, especialmente ao considerar que alguns valores dessas variáveis estavam anteriormente duplicados em propriedades como altura e largura. Com esta modificação, finalizamos a primeira fase da nossa refatoração. Agora, passo a responsabilidade para você realizar a próxima análise. Se identificar possibilidades de refatoração, por favor, compartilhe seus comentários neste post. Na segunda parte desse artigo, explorarei como tornar nosso código HTML e CSS ainda mais conciso. Por ora, encerro por aqui. Um caloroso abraço e até o próximo post.&lt;/p&gt;

&lt;p&gt;Link código no Codepen: &lt;a href="https://bit.ly/3uwD8jx" rel="noopener noreferrer"&gt;clique aqui&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Angular para leigos (parte 2)</title>
      <dc:creator>André Rodrigues</dc:creator>
      <pubDate>Sat, 11 Mar 2023 19:58:20 +0000</pubDate>
      <link>https://dev.to/andrerodriguesdevweb/angular-para-leigos-parte-2-3d2f</link>
      <guid>https://dev.to/andrerodriguesdevweb/angular-para-leigos-parte-2-3d2f</guid>
      <description>&lt;p&gt;Angular é um framework muito poderoso para criar aplicações web. Uma de suas características mais marcantes é a capacidade de dividir a aplicação em componentes reutilizáveis. Neste post, vamos dar uma olhada em como criar componentes em Angular e usar boas práticas de HTML e SCSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando um componente
&lt;/h2&gt;

&lt;p&gt;Para criar um componente em Angular, você deve usar o comando ng generate component. Esse comando criará uma pasta com o nome do componente e alguns arquivos dentro dela. O arquivo mais importante é o arquivo .ts, que contém a lógica do componente. O arquivo .html contém o template do componente e o arquivo .scss contém os estilos do componente.&lt;/p&gt;

&lt;p&gt;Aqui está um exemplo de como criar um componente chamado meu-componente:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ng generate component meu-componente&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Depois de executar esse comando, o Angular criará uma pasta chamada meu-componente com vários arquivos dentro, são eles arquivo html, scss e arquivos typescript para lógica e testes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adotando boas práticas para o HTML de nossos componente
&lt;/h2&gt;

&lt;p&gt;Ao criar o template do componente, você deve seguir algumas boas práticas para garantir que ele seja fácil de ler e manter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use tags semânticas
&lt;/h3&gt;

&lt;p&gt;Sempre que possível, use tags semânticas para descrever o conteúdo do seu componente. Por exemplo, em vez de usar uma div genérica, use tags como header, section, article, footer, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use os atributos data-
&lt;/h3&gt;

&lt;p&gt;Use atributos data- para fornecer informações adicionais sobre o seu componente. Esses atributos não afetam a funcionalidade do componente, mas podem ser úteis para fins de estilo ou análise.&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
  &lt;/p&gt;
&lt;h1&gt;Título do meu componente&lt;/h1&gt;
&lt;br&gt;



&lt;p&gt;Conteúdo do meu componente&lt;/p&gt;


&lt;p&gt;Rodapé do meu componente&lt;/p&gt;
&lt;br&gt;
`

&lt;p&gt;Por hoje encerramos a nossa segunda parte, mas em nossa terceira parte iremos conhecer sobre as diretivas do Angular, espero que tenham gostado do post de hoje. Grande abraço e até o próximo.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>html</category>
    </item>
    <item>
      <title>Angular para leigos (Parte 1)</title>
      <dc:creator>André Rodrigues</dc:creator>
      <pubDate>Sun, 05 Mar 2023 18:54:32 +0000</pubDate>
      <link>https://dev.to/andrerodriguesdevweb/angular-para-leigos-parte-1-268h</link>
      <guid>https://dev.to/andrerodriguesdevweb/angular-para-leigos-parte-1-268h</guid>
      <description>&lt;p&gt;A cada vez venho percebendo a grande procura por artigos de Angular com um passo a passo de como criar aplicações, pensando nisso decidi criar uma série de postagens sobre o Angular e como construir uma aplicação com dados vindos de uma API json. Mas antes de começarmos a codar, vamos para alguns pré requisitos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pré requisitos para codar em Angular
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Saber 70% de HTML&lt;/li&gt;
&lt;li&gt;Saber 70% de CSS&lt;/li&gt;
&lt;li&gt;Saber 70% de JavaScript&lt;/li&gt;
&lt;li&gt;Saber 70% de SASS/SCSS&lt;/li&gt;
&lt;li&gt;Saber 50% de TypeScript&lt;/li&gt;
&lt;li&gt;Ter o NodeJS com versão atualizada instalada no computador&lt;/li&gt;
&lt;li&gt;Ter VSCode ou outro editor de código instalado&lt;/li&gt;
&lt;li&gt;Navegador atualizado&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  O que é o Angular
&lt;/h2&gt;

&lt;p&gt;O Angular é um framework open-source criado pela Google para o desenvolvimento de aplicações web dinâmicas e complexas. Ele foi lançado em 2010 e passou por várias atualizações desde então, tornando-se uma das ferramentas mais populares para o desenvolvimento de Single-Page Applications (SPA). O Angular utiliza a arquitetura MVC (Model-View-Controller) para separar a lógica de negócios da interface do usuário, permitindo uma maior modularidade e reutilização de código. Ele também oferece recursos poderosos como injeção de dependência, binding de dados bidirecional e suporte a testes automatizados, tornando o desenvolvimento de aplicações complexas mais eficiente e produtivo. &lt;/p&gt;

&lt;h2&gt;
  
  
  Startando uma aplicação Angular
&lt;/h2&gt;

&lt;p&gt;Antes de colocarmos a mão na massa, precisamos fazer a instalação do modo CLI do Angular em nossa máquina, para isso iremos abrir o terminal e digitar o seguinte comando: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g @angular/cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Após instalado o CLI, podemos então criar então nosso projeto, escolha um lugar fácil de achar seu projeto, ou se preferir crie um novo repositório no Github, clone e dentro do diretório abra um terminal, após aberto o terminal escreva o comando abaixo para criar o projeto angular:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ng new rentcar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;O comando acima irá criar um projeto de nome rentcar, vale destacar que no terminal você irá veral algumas questões como: se você deseja que o projeto seja rastreado pelo Analytics, se deseja que o router seja instalado para você fazer navegações e validações de rotas e o pré processador css que deseja adotar, você também pode adotar em usar apenas o css tradicional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rodando nossa aplicação Angular
&lt;/h2&gt;

&lt;p&gt;Se você fez todas as etapas acima e não apareceu erro em seu terminal, agora podemos abrir o projeto no navegador e ver o resultado. No terminal navegue para dentro da pasta onde está aplicação e mande o seguinte comando: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;ng serve&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;O comando acima irá abrir uma aplicação na porta 4200 (localhost:4200), se você abriu a navegação em uma aba de seu navegador, irá notar uma tela onde tem algumas descrições e uma parte onde tem um comando de como gerar um componente com CLI. Essa view é famosa tela "Hello World". Agora que sabemos que nosso projeto está ok, podemos então partir para a criação de nossos componentes personalizados, mas essa parte deixaremos para a segunda parte. Por hora encerramos aqui, um grande abraço e se tiver alguma dúvida deixe aí nos comentários :)&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>sass</category>
      <category>css</category>
    </item>
    <item>
      <title>ChatGPT vilão ou Mocinho?</title>
      <dc:creator>André Rodrigues</dc:creator>
      <pubDate>Tue, 24 Jan 2023 02:14:07 +0000</pubDate>
      <link>https://dev.to/andrerodriguesdevweb/chatgpt-vilao-ou-mocinho-45an</link>
      <guid>https://dev.to/andrerodriguesdevweb/chatgpt-vilao-ou-mocinho-45an</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bTxnNF9o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwbxa56dpxuava1ioq8n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bTxnNF9o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwbxa56dpxuava1ioq8n.jpg" alt="Image description" width="696" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O uso de modelos de IAs, como o ChatGPT, tem se tornado cada vez mais comum na indústria de tecnologia. Muitos programadores podem sentir uma certa resistência em relação ao uso desses modelos, temendo que eles possam ser substituídos. No entanto, existem boas razões para acreditar que os programadores não devem temer o uso dessa ferramenta.&lt;/p&gt;

&lt;p&gt;Em primeiro lugar, é importante reforçar que o ChatGPT é apenas uma ferramenta. Ele foi projetado para ajudar os programadores a automatizar tarefas repetitivas, como o desenvolvimento de códigos ou uma elaboração de documentação. Isso permite que os programadores possam se concentrar em tarefas mais complexas e criativas, como a construção de novas features ou a solução de problemas complexos. Em vez de substituir os programadores, o ChatGPT os ajuda a ser mais eficientes, produtivos e possibilitando ter uma boa saúde mental.&lt;/p&gt;

&lt;p&gt;Além disso, o ChatGPT faz parte de uma tendência na indústria de tecnologia. A automação e a inteligência artificial estão se tornando cada vez mais importantes em várias áreas, e os programadores que estiverem familiarizados com essas novas tecnologias terão maiores oportunidades de carreira no futuro. Ao invés de temer o uso do ChatGPT, os programadores devem buscar aprender mais sobre ele e se familiarizar com suas capacidades, a fim de se manter atualizado e competitivo no mercado de trabalho.&lt;/p&gt;

&lt;p&gt;Por fim, é importante notar que o ChatGPT é apenas uma das muitas ferramentas disponíveis para os programadores. Ele não é uma solução mágica para todos os problemas que surgirem, e os programadores ainda precisam usar sua experiência, conhecimento e julgamento ao usá-lo. O ChatGPT não é capaz de substituir a inteligência humana, mas sim de auxiliar a mesma.&lt;/p&gt;

&lt;p&gt;Em resumo, os programadores não devem temer o uso do ChatGPT. Em vez disso, eles devem ver essa ferramenta como uma oportunidade para aumentar sua eficiência e tornar-se mais competitivos no mercado de trabalho. A automação e a inteligência artificial estão se tornando cada vez mais importantes no mercado, e os programadores que estiverem familiarizados iram sempre ter sua vaga garantida.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>javascript</category>
      <category>python</category>
      <category>rust</category>
    </item>
    <item>
      <title>Loop com SCSS para sistema de grid</title>
      <dc:creator>André Rodrigues</dc:creator>
      <pubDate>Sat, 11 Jun 2022 20:30:07 +0000</pubDate>
      <link>https://dev.to/andrerodriguesdevweb/loop-com-scss-para-sistema-de-grid-1d2b</link>
      <guid>https://dev.to/andrerodriguesdevweb/loop-com-scss-para-sistema-de-grid-1d2b</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Código em SCSS&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  margin: 0 auto;
  width: 99%;
  @media (min-width: 700px) {
    width: 90%;
  }
}
// Cols
$grid-columns: 12;
[class*="col-"] {
  padding: 0 15px;
}
@media (min-width: 700px) {
  @for $i from 1 through $grid-columns {
    .col-#{$i} {
      width: percentage($i / $grid-columns);
    }
  }
}
// Row
.row {
  display: flex;
  align-items: center;
  flex-direction: column;
  @media (min-width: 700px) {
    flex-direction: row;
    flex-wrap: wrap;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Código no HTML&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="container"&amp;gt;
    &amp;lt;div class="row"&amp;gt;
        &amp;lt;div class="col-12"&amp;gt;Exemplo de grid&amp;lt;/div&amp;gt;
        &amp;lt;div class="col-6"&amp;gt;Exemplo de grid&amp;lt;/div&amp;gt;
        &amp;lt;div class="col-6"&amp;gt;Exemplo de grid&amp;lt;/div&amp;gt;
        &amp;lt;div class="col-4"&amp;gt;Exemplo de grid&amp;lt;/div&amp;gt;
        &amp;lt;div class="col-4"&amp;gt;Exemplo de grid&amp;lt;/div&amp;gt;
        &amp;lt;div class="col-4"&amp;gt;Exemplo de grid&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

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

&lt;/div&gt;



</description>
      <category>css</category>
      <category>scss</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Push Notification com One Signal</title>
      <dc:creator>André Rodrigues</dc:creator>
      <pubDate>Wed, 04 Aug 2021 23:58:31 +0000</pubDate>
      <link>https://dev.to/andrerodriguesdevweb/push-notification-com-one-signal-4iop</link>
      <guid>https://dev.to/andrerodriguesdevweb/push-notification-com-one-signal-4iop</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oRN0TvyP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rknpscl74u0hjghfzc9s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oRN0TvyP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rknpscl74u0hjghfzc9s.jpg" alt="imagem-expo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Resolvi escrever esse breve tutorial após me deparar com um certo problema, onde precisava construir uma aplicação em Expo e que tive o Push Notification do One Signal. Procurei por diversos sites e até li na documentação a forma de implementar o One Signal no Expo, mas não estava claro lá. Após diversas pesquisas, eu achei a solução e com isso decidi compartilhar para ficar claro os passos de configuração do OneSignal. &lt;/p&gt;

&lt;h2&gt;
  
  
  Passos para configuração do OneSignal
&lt;/h2&gt;

&lt;p&gt;1) Inicie um projeto com Expo;&lt;br&gt;
2) Abra a pasta de seu projeto no terminal;&lt;br&gt;
3) Digite o comando "expo eject", esse comando irá criar as pastas para buildar sua aplicação no IOS e Android;&lt;br&gt;
4) Após o procedimento acima, instale o OneSignal em seu projeto, para isso siga as etapas da documentação: &lt;a href="https://documentation.onesignal.com/docs/react-native-sdk-setup"&gt;https://documentation.onesignal.com/docs/react-native-sdk-setup&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Feito todos os procedimentos acima, e também os da documentação, seu projeto irá rodar com sucesso. Espero que tenha gostado do post, um grande abraço e até o próximo. &lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
