<?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>Forem: Devs Norte</title>
    <description>The latest articles on Forem by Devs Norte (@devsnorte).</description>
    <link>https://forem.com/devsnorte</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%2Forganization%2Fprofile_image%2F8641%2F96f45e9a-ded6-415a-94d5-7f1488bd6e65.png</url>
      <title>Forem: Devs Norte</title>
      <link>https://forem.com/devsnorte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devsnorte"/>
    <language>en</language>
    <item>
      <title>SOLID explicado com exemplos em Java — do jeito simples que todo dev gostaria de ter aprendido</title>
      <dc:creator>Edson Costa</dc:creator>
      <pubDate>Mon, 01 Dec 2025 05:05:50 +0000</pubDate>
      <link>https://forem.com/devsnorte/solid-explicado-com-exemplos-em-java-do-jeito-simples-que-todo-dev-gostaria-de-ter-aprendido-36g1</link>
      <guid>https://forem.com/devsnorte/solid-explicado-com-exemplos-em-java-do-jeito-simples-que-todo-dev-gostaria-de-ter-aprendido-36g1</guid>
      <description>&lt;p&gt;Ao longo da minha jornada como desenvolvedor — principalmente vindo do desenvolvimento web — sempre ouvi falar sobre SOLID. Mas foi entrando de vez no desenvolvimento mobile que esses princípios começaram a fazer um sentido muito maior no meu dia a dia.&lt;/p&gt;

&lt;p&gt;SOLID não é um conjunto de regras rígidas, e sim um &lt;strong&gt;guia de boas práticas para construir sistemas mais limpos, flexíveis e fáceis de manter&lt;/strong&gt;.&lt;br&gt;
E, para explicar isso, vou usar analogias simples e exemplos reais em Java, mostrando como cada princípio se aplica no código.&lt;/p&gt;

&lt;p&gt;Vamos direto ao ponto.&lt;/p&gt;


&lt;h1&gt;
  
  
  🧱 O que é SOLID?
&lt;/h1&gt;

&lt;p&gt;SOLID é um acrônimo formado por cinco princípios fundamentais da programação orientada a objetos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;S&lt;/strong&gt; — Single Responsibility Principle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O&lt;/strong&gt; — Open/Closed Principle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;L&lt;/strong&gt; — Liskov Substitution Principle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I&lt;/strong&gt; — Interface Segregation Principle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D&lt;/strong&gt; — Dependency Inversion Principle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A ideia central é simples: &lt;strong&gt;projetar software que seja fácil de entender, evoluir, testar e manter&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agora, vamos ver cada princípio na prática.&lt;/p&gt;


&lt;h1&gt;
  
  
  1️⃣ Single Responsibility Principle (Responsabilidade Única)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Uma classe deve ter apenas um motivo para mudar.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Imagine uma classe que salva usuários e também envia e-mails.&lt;br&gt;
Ela faz &lt;strong&gt;duas coisas&lt;/strong&gt; — e isso é um problema.&lt;/p&gt;
&lt;h3&gt;
  
  
  ❌ Exemplo que viola o SRP
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;saveUser&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// salva no banco&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sendWelcomeEmail&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// envia e-mail&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Se qualquer parte falhar (e-mail, banco, regra de negócio), a classe inteira é afetada.&lt;/p&gt;
&lt;h3&gt;
  
  
  ✔️ Exemplo seguindo o SRP
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserRepository&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// salva no banco&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;EmailService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sendWelcomeEmail&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// envia e-mail&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Cada classe tem sua responsabilidade, e o código fica muito mais claro e testável.&lt;/p&gt;


&lt;h1&gt;
  
  
  2️⃣ Open/Closed Principle (Aberto para Extensão, Fechado para Modificação)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Você deve poder adicionar novos comportamentos sem alterar código existente.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  ✔️ Exemplo com descontos
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Discount&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="nf"&gt;apply&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;NoDiscount&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Discount&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="nf"&gt;apply&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BlackFridayDiscount&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Discount&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="nf"&gt;apply&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Precisa de um novo tipo de desconto?&lt;/p&gt;

&lt;p&gt;Crie uma nova classe.&lt;br&gt;
Nenhuma linha das anteriores precisa mudar.&lt;/p&gt;

&lt;p&gt;Isso é &lt;strong&gt;Open/Closed&lt;/strong&gt; na prática.&lt;/p&gt;


&lt;h1&gt;
  
  
  3️⃣ Liskov Substitution Principle (Substituição de Liskov)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Subclasses devem poder substituir suas classes base sem quebrar o comportamento esperado.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  ❌ Exemplo que quebra o princípio
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Bird&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;fly&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Voando..."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Penguin&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Bird&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;fly&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;UnsupportedOperationException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Pinguins não voam!"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;O contrato promete que &lt;strong&gt;todo pássaro voa&lt;/strong&gt;, mas o pinguim não.&lt;br&gt;
Isso quebra o comportamento esperado.&lt;/p&gt;
&lt;h3&gt;
  
  
  ✔️ Exemplo correto
&lt;/h3&gt;

&lt;p&gt;Separando o que pode voar do que não pode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Bird&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;FlyingBird&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Bird&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;fly&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Eagle&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;FlyingBird&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;fly&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Penguin&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Bird&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, tudo faz sentido.&lt;/p&gt;




&lt;h1&gt;
  
  
  4️⃣ Interface Segregation Principle (Segregação de Interfaces)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Nenhuma classe deve ser forçada a implementar métodos que não usa.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  ❌ Exemplo errado
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Worker&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;work&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Robot&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Worker&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;work&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// robô não come...&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O robô é obrigado a implementar algo que não faz sentido para ele.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✔️ Exemplo correto
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Workable&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;work&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Eatable&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Robot&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Workable&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;work&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Human&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Workable&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Eatable&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;work&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Interfaces menores = classes mais limpas.&lt;/p&gt;




&lt;h1&gt;
  
  
  5️⃣ Dependency Inversion Principle (Inversão de Dependência)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Dependa de abstrações, não de implementações concretas.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  ❌ Exemplo errado
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MySQLDatabase&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;MySQLDatabase&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MySQLDatabase&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;connect&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O serviço está &lt;strong&gt;acoplado&lt;/strong&gt; ao MySQL.&lt;br&gt;
Se quiser trocar para Postgres, precisa alterar o código.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✔️ Exemplo correto
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Database&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MySQLDatabase&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Database&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PostgresDatabase&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Database&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;Database&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;UserService&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Database&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;database&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;connect&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, trocar o banco é só configurar outra implementação.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎯 Conclusão
&lt;/h1&gt;

&lt;p&gt;SOLID não é sobre “seguir regras”, e sim sobre &lt;strong&gt;facilitar sua vida como desenvolvedor&lt;/strong&gt;.&lt;br&gt;
Quanto mais seu sistema cresce, mais esses princípios fazem diferença.&lt;/p&gt;

&lt;p&gt;Eles ajudam a criar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;código mais limpo,&lt;/li&gt;
&lt;li&gt;classes mais coesas,&lt;/li&gt;
&lt;li&gt;responsabilidades claras,&lt;/li&gt;
&lt;li&gt;menos bugs,&lt;/li&gt;
&lt;li&gt;mais testes,&lt;/li&gt;
&lt;li&gt;e mais flexibilidade para evoluir o projeto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você está trabalhando com Android, KMP ou qualquer arquitetura moderna (como MVVM), SOLID é um aliado poderoso.&lt;/p&gt;

</description>
      <category>solidprinciples</category>
      <category>java</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Descubra e Baixe os Melhores Apps do Pará: Conecte-se com a Região!</title>
      <dc:creator>Project Spider</dc:creator>
      <pubDate>Fri, 07 Feb 2025 02:49:47 +0000</pubDate>
      <link>https://forem.com/devsnorte/descubra-e-baixe-os-melhores-apps-do-para-conecte-se-com-a-regiao-4l6a</link>
      <guid>https://forem.com/devsnorte/descubra-e-baixe-os-melhores-apps-do-para-conecte-se-com-a-regiao-4l6a</guid>
      <description>&lt;p&gt;Com a COP 30 chegando à região de Belém do Pará, resolvi mostrar soluções de aplicativos que impactam de diversas formas, às vezes não só o local, como também a nível nacional.&lt;/p&gt;

&lt;p&gt;Então, vamos dar início à lista com temas variados com relação ao mercado e seu público para plataformas Android e iOS.&lt;/p&gt;

&lt;h2&gt;
  
  
  AbaetéFest
&lt;/h2&gt;

&lt;p&gt;Já imaginou precisar localizar pontos turísticos, shows e eventos na cidade de Abaetetuba? Visite a cidade com esse aplicativo e acompanhe o que aproveitar de culinária, cultura e muito mais!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
  &lt;a href="https://ankitkamboj18.medium.com/pwa-web-app-as-twa-and-publish-on-google-play-store-c4e6431b9405" rel="noopener noreferrer"&gt;https://ankitkamboj18.medium.com/pwa-web-app-as-twa-and-publish-on-google-play-store-c4e6431b9405&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para Dispositivos iOS (Apple): &lt;br&gt;
&lt;a href="https://app.abaetefest.com.b%5D(url)r/" rel="noopener noreferrer"&gt;https://app.abaetefest.com.b](url)r/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Belém em Dobro
&lt;/h2&gt;

&lt;p&gt;Que tal conhecer os espaços gastronômicos da cidade de Belém e ainda conhecer restaurantes com descontos? Esse é o aplicativo ideal para quem quer ver locais novos ou ainda não tinha visitado como morador. Baixe agora!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android: &lt;a href="https://play.google.com/store/apps/developer?id=PlayEmber+Sp.+z+o.o.&amp;amp;hl=en_GB" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/developer?id=PlayEmber+Sp.+z+o.o.&amp;amp;hl=en_GB&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Para Dispositivos iOS (Apple): &lt;a href="https://apps.apple.com/br/app/bel%C3%A9m-em-dobro/id6529556759" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rock Doido
&lt;/h2&gt;

&lt;p&gt;Já quer experimentar o estilo musical único do norte? Conheça um streaming próprio dedicado às músicas de tecnomelody do Pará. Esse é o aplicativo Rock Doido, que oferece a rádio.&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android: &lt;a href="https://play.google.com/store/apps/details?)id=com.rockdoidoapp&amp;amp;hl=pt_BR" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?)id=com.rockdoidoapp&amp;amp;hl=pt_BR&lt;/a&gt;&lt;br&gt;
Para Dispositivos iOS (Apple): &lt;a href="https://apps.apple.com/br/app/rockdoido/id1479712940" rel="noopener noreferrer"&gt;https://apps.apple.com/br/app/rockdoido/id1479712940&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rádio AD
&lt;/h2&gt;

&lt;p&gt;O mundo gospel paraense em formato de rádio também disponível. Com o slogan “Você ouve e adora!” e uma programação musical de qualidade, a AD Belém.&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android: &lt;a href="https://play.google.com/store/apps/details?id=project.android.radioadbelem" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=project.android.radioadbelem&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Palco Belém (Site)
&lt;/h2&gt;

&lt;p&gt;Quer saber quais eventos no teatro estão acontecendo? Descubra um catálogo cultural de carimbó, orquestras e produções musicais incríveis. Acesse o site abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://palcobelem.com.br/index_app" rel="noopener noreferrer"&gt;https://palcobelem.com.br/index_app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lava Aqui
&lt;/h2&gt;

&lt;p&gt;Precisa lavar seu carro? Com esse aplicativo, você agenda e um profissional vai até você e limpa seu carro, economizando seu tempo de sair. E o melhor? Totalmente de modo ecológico. Aproveite!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android: &lt;a href="https://play.google.com/store/apps/details?id=br.com.cassebtecnologia.lavaqui_app" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=br.com.cassebtecnologia.lavaqui_app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Aluguel Direto
&lt;/h2&gt;

&lt;p&gt;Como corretor, precisa de gestão imobiliária? Com o Aluguel Direto, você organiza contratos tudo em um só lugar e ainda garante facilidade para seus clientes no dia a dia. Baixe agora!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android: &lt;a href="https://play.google.com/store/apps/details?id=br.com.cassebtecnologia.lavaqui_app" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=br.com.cassebtecnologia.lavaqui_app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Amazônia em Belém
&lt;/h2&gt;

&lt;p&gt;Explore a riqueza natural e cultural de sua cidade de uma forma totalmente nova. Com ele, os usuários podem escanear QR codes colocados em monumentos, locais de interesse, plantas e animais, desbloqueando informações detalhadas sobre cada elemento. Baixe agora!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android: &lt;a href="https://play.google.com/store/apps/details?id=br.pa.semma&amp;amp;hl=pt_BR" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=br.pa.semma&amp;amp;hl=pt_BR&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Alaga-Info
&lt;/h2&gt;

&lt;p&gt;Focado no alerta colaborativo dos usuários, o aplicativo oferece um modo de evitar alagamentos na cidade através do público que compartilha e, com isso, por meio de notificações e compartilhamento do endereço do local, você visualiza pontos alagados, além do nível de alagamento e seu trânsito local, não só na região como em todas as cidades do Brasil. Baixe e cuidado a locais alagados!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.alagainfo.alagainfo" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.alagainfo.alagainfo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para Dispositivos iOS(Apple):&lt;br&gt;
&lt;a href="https://apps.apple.com/us/app/alaga-info/id6593661838" rel="noopener noreferrer"&gt;https://apps.apple.com/us/app/alaga-info/id6593661838&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Second Chance
&lt;/h2&gt;

&lt;p&gt;E se pudesse reencontrar o seu amor ou então a oportunidade de reencontrar o amor de uma forma que ressoa com as experiências e expectativas acumuladas ao longo da vida. Voltado para aqueles que já estiveram em relacionamentos sérios e buscam uma nova conexão, o aplicativo apresenta uma experiência personalizada, pensada para quem valoriza a profundidade em um relacionamento. Baixe agora!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
 &lt;a href="https://play.google.com/store/apps/details?id=com.secondchancebr" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.secondchancebr&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Zarpar
&lt;/h2&gt;

&lt;p&gt;Precisa pegar uma lancha para conhecer outras regiões de Belém? Experimente o Zarpar! Chegaram com a missão de evoluir essa experiência de viagem dos povos ribeirinhos, turistas e empresas e trazer o porto para mais perto de você. Baixe e encontre o seu destino!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
 &lt;a href="https://play.google.com/store/apps/details?id=br.com.zarpar&amp;amp;hl=pt_BR" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=br.com.zarpar&amp;amp;hl=pt_BR&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Curte futebol? Então saiba os jogos paraenses através do aplicativo Parazão, onde você acompanha os times paraenses em todos os campeonatos que eles disputarem (Série B, Série C, Campeonato Paraense, Copa Verde, Copa do Brasil). Todos os jogos em tempo real e com cobertura completa. Além de notícias diárias de seus clubes preferidos!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.br.parazao" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.br.parazao&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Paysandu Sport Club Oficial
&lt;/h2&gt;

&lt;p&gt;Aproveitando ainda sobre futebol, o oficial do Maior Campeão da Amazônia: Paysandu Sport Club. Nele, você terá acesso às últimas notícias do clube, tabela de jogos, receberá push dos jogos em tempo real e acesso ao Sócio Bicolor.&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.bredi.paysandu" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.bredi.paysandu&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Círio de Nazaré
&lt;/h2&gt;

&lt;p&gt;Época de outubro é celebrado o Círio de Nossa Senhora de Nazaré, evento que envolve, além da população paraense, devotos e turistas de várias cidades e países. Baixe e conheça sobre!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.bredi.app_cirio" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.bredi.app_cirio&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Kd a Berlinda?
&lt;/h2&gt;

&lt;p&gt;Ainda no tema Círio de Nazaré, tenha o aplicativo Kd a Berlinda, feito para que o usuário possa acompanhar as 13 procissões oficiais do Círio de Nazaré em tempo real. Em 2019, a ferramenta recebeu uma série de atualizações, incluindo design e melhorias na aplicação. Baixe no link!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=br.pa.prodepa.kdaberlinda" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=br.pa.prodepa.kdaberlinda&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pega o Beco
&lt;/h2&gt;

&lt;p&gt;Em tempo livre, que tal jogar e se divertir com jogo focado em elementos da cidade de Belém, que pode experimentar locais e bairros conhecidos do povo? Baixe agora!&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.pandergames.PegaoBeco" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.pandergames.PegaoBeco&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Flash Pará
&lt;/h2&gt;

&lt;p&gt;Mobilidade? Temos também! Conheça o aplicativo e nos diga sua experiência com transporte executivo presente no próprio bairro e que garante que você e sua família serão atendidos por um motorista conhecido com segurança.&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=br.com.flashpara.passenger.drivermachine" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=br.com.flashpara.passenger.drivermachine&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Meu Bolso
&lt;/h2&gt;

&lt;p&gt;Precisa gerenciar suas contas ? &lt;br&gt;
Simplifique o controle das suas finanças com o aplicativo MeuBolso&lt;br&gt;
Baixe agora e comece a economizar.&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.negoplay.Meu_Bolso" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.negoplay.Meu_Bolso&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para Dispositivos iOS(Apple):&lt;br&gt;
&lt;a href="https://apps.apple.com/us/app/app-meu-bolso/id6740345533" rel="noopener noreferrer"&gt;https://apps.apple.com/us/app/app-meu-bolso/id6740345533&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vou de Moovapp
&lt;/h2&gt;

&lt;p&gt;Sua alternativa de mobilidade para uso familiar ou para empresas,&lt;br&gt;
Experimente carros selecionados para suas viagens.&lt;/p&gt;

&lt;p&gt;Para Dispositivos Android:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.brediweb.voudemoovapp" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.brediweb.voudemoovapp&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Faltou Algum na lista? avise para colocarmos um proximo com mais apps paraenses e crescer na região!&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>android</category>
      <category>ios</category>
    </item>
    <item>
      <title>Padronizando Commits com Commitizen e Husky</title>
      <dc:creator>Edson Costa</dc:creator>
      <pubDate>Tue, 01 Oct 2024 00:03:02 +0000</pubDate>
      <link>https://forem.com/devsnorte/padronizando-commits-com-commitizen-e-husky-12pl</link>
      <guid>https://forem.com/devsnorte/padronizando-commits-com-commitizen-e-husky-12pl</guid>
      <description>&lt;p&gt;Os commits bem estruturados são essenciais para manter a clareza e organização em projetos de desenvolvimento de software. Quando várias pessoas colaboram em um projeto, é crucial manter um padrão para mensagens de commit, facilitando a compreensão das alterações realizadas em um determinado momento. Neste artigo, exploraremos como padronizar commits usando as ferramentas Commitizen e Husky.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que padronizar commits?
&lt;/h2&gt;

&lt;p&gt;Padronizar commits traz uma série de benefícios para equipes de desenvolvimento:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clareza:&lt;/strong&gt; Mensagens de commit bem estruturadas tornam mais fácil entender o propósito das alterações.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rastreabilidade:&lt;/strong&gt; Com commits padronizados, é mais simples rastrear a evolução do código ao longo do tempo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Facilidade de Reversão:&lt;/strong&gt; Commits bem documentados facilitam a identificação de alterações específicas, tornando mais fácil reverter mudanças indesejadas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Colaboração:&lt;/strong&gt; Padronizar commits promove uma melhor colaboração entre membros da equipe, pois todos seguem as mesmas convenções.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Introdução ao Commitizen e Husky
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Commitizen&lt;/strong&gt; é uma ferramenta que visa facilitar a criação de commits padronizados seguindo as convenções do &lt;a href="https://www.conventionalcommits.org/" rel="noopener noreferrer"&gt;Conventional Commits&lt;/a&gt;. Ele fornece uma interface interativa para guiar os desenvolvedores na criação de mensagens de commit consistentes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Husky&lt;/strong&gt;, por outro lado, é uma biblioteca que nos permite configurar ganchos (hooks) Git facilmente. Podemos usá-lo para executar scripts automatizados antes de certos eventos do Git, como &lt;code&gt;commit&lt;/code&gt;, &lt;code&gt;push&lt;/code&gt; e outros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passos para padronizar commits com Commitizen e Husky
&lt;/h2&gt;

&lt;p&gt;Aqui estão os passos necessários para padronizar commits em seu projeto:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Instalação do Commitizen e Husky
&lt;/h3&gt;

&lt;p&gt;Certifique-se de que o Node.js esteja instalado em seu sistema. Em seguida, instale o Commitizen e Husky como dependências de desenvolvimento em seu projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; commitizen husky
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Configuração do Commitizen
&lt;/h3&gt;

&lt;p&gt;Depois de instalar o Commitizen, você pode configurá-lo para seu projeto executando o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx commitizen init cz-conventional-changelog &lt;span class="nt"&gt;--save-dev&lt;/span&gt; &lt;span class="nt"&gt;--save-exact&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso instalará o adaptador &lt;code&gt;cz-conventional-changelog&lt;/code&gt; e configurará o Commitizen para usar o Conventional Commits.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Configuração do Husky
&lt;/h3&gt;

&lt;p&gt;Com o Husky, podemos configurar ganchos Git para executar scripts antes de certos eventos. Para configurar o Husky, adicione o seguinte script ao seu &lt;code&gt;package.json&lt;/code&gt;:&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;"husky"&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;"hooks"&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;"commit-msg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"commitlint -E HUSKY_GIT_PARAMS"&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;Este script usa o &lt;code&gt;commitlint&lt;/code&gt; para verificar se a mensagem de commit está em conformidade com as convenções especificadas.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Adicionar Configurações de Commitlint
&lt;/h3&gt;

&lt;p&gt;O &lt;code&gt;commitlint&lt;/code&gt; é uma ferramenta de validação de mensagens de commit baseada em regras. É comumente usado para garantir que as mensagens de commit sigam um formato específico. Você pode instalar o &lt;code&gt;commitlint&lt;/code&gt; e as configurações do Conventional Commits usando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @commitlint/&lt;span class="o"&gt;{&lt;/span&gt;config-conventional,cli&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em seguida, crie um arquivo &lt;code&gt;commitlint.config.js&lt;/code&gt; na raiz do seu projeto e adicione o seguinte conteúdo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@commitlint/config-conventional&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Usando Commitizen para commits
&lt;/h3&gt;

&lt;p&gt;Agora que tudo está configurado, ao executar &lt;code&gt;git commit&lt;/code&gt;, você será levado a uma interface interativa fornecida pelo Commitizen para criar mensagens de commit.&lt;/p&gt;

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

&lt;p&gt;Padronizar commits é uma prática recomendada que promove clareza, rastreabilidade e colaboração em projetos de desenv&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automatizando Notificações via Telegram com GitHub Actions</title>
      <dc:creator>Edson Costa</dc:creator>
      <pubDate>Tue, 01 Oct 2024 00:01:42 +0000</pubDate>
      <link>https://forem.com/devsnorte/automatizando-notificacoes-via-telegram-com-github-actions-2cdo</link>
      <guid>https://forem.com/devsnorte/automatizando-notificacoes-via-telegram-com-github-actions-2cdo</guid>
      <description>&lt;p&gt;O GitHub Actions é uma ferramenta poderosa que permite automatizar tarefas dentro do fluxo de trabalho de desenvolvimento. Uma aplicação útil disso é a capacidade de enviar notificações para diferentes plataformas, como o Telegram, sempre que ocorrerem eventos específicos em seus repositórios do GitHub. Neste artigo, vamos explorar como configurar e utilizar o GitHub Actions para enviar notificações via Telegram.&lt;/p&gt;

&lt;h3&gt;
  
  
  O que é o GitHub Actions?
&lt;/h3&gt;

&lt;p&gt;O GitHub Actions é um serviço de automação integrado diretamente no GitHub, permitindo que você crie fluxos de trabalho personalizados para automatizar processos de desenvolvimento, desde a construção e teste até a implantação e notificação.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configurando o Telegram Bot
&lt;/h3&gt;

&lt;p&gt;Antes de começarmos com o GitHub Actions, é necessário criar um bot no Telegram e obter seu token de acesso. Siga os passos abaixo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Abra o Telegram e pesquise por &lt;code&gt;BotFather&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inicie uma conversa com o &lt;code&gt;BotFather&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use o comando &lt;code&gt;/newbot&lt;/code&gt; para criar um novo bot.&lt;/li&gt;
&lt;li&gt;Siga as instruções do &lt;code&gt;BotFather&lt;/code&gt;, fornecendo um nome e um nome de usuário para o seu bot.&lt;/li&gt;
&lt;li&gt;Após a criação, o &lt;code&gt;BotFather&lt;/code&gt; irá fornecer um token de acesso para o seu bot. Mantenha esse token seguro, pois será usado posteriormente.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Configurando o GitHub Actions
&lt;/h3&gt;

&lt;p&gt;Agora que temos o token do nosso bot, vamos configurar o GitHub Actions para enviar notificações para o Telegram sempre que ocorrerem eventos específicos em nosso repositório.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No seu repositório do GitHub, crie um diretório chamado &lt;code&gt;.github/workflows&lt;/code&gt; se ainda não existir.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dentro deste diretório, crie um arquivo YAML com o nome que desejar, por exemplo, &lt;code&gt;telegram-notification.yml&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adicione o seguinte conteúdo ao arquivo YAML:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Telegram Notification&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;telegram-notification&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Send Telegram Notification&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;appleboy/telegram-action@master&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.TELEGRAM_TO }}&lt;/span&gt;
          &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.TELEGRAM_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;New&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;commit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;pushed&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;repository."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, configuramos o fluxo de trabalho para enviar uma notificação para o Telegram sempre que houver um push para a branch principal (&lt;code&gt;main&lt;/code&gt;). Você pode personalizar os eventos e as branches conforme necessário.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agora, precisamos adicionar as variáveis de ambiente &lt;code&gt;TELEGRAM_TO&lt;/code&gt; e &lt;code&gt;TELEGRAM_TOKEN&lt;/code&gt; como segredos em nosso repositório.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;TELEGRAM_TO&lt;/code&gt;: Este é o ID do chat para o qual a mensagem será enviada. Você pode obter isso iniciando uma conversa com seu bot no Telegram e usando a API do Telegram para recuperar o ID do chat.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;TELEGRAM_TOKEN&lt;/code&gt;: Este é o token de acesso que obtivemos anteriormente do &lt;code&gt;BotFather&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para adicionar esses segredos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navegue até as configurações do seu repositório no GitHub.&lt;/li&gt;
&lt;li&gt;Selecione "Secrets" no menu lateral.&lt;/li&gt;
&lt;li&gt;Clique em "New repository secret" e adicione as variáveis &lt;code&gt;TELEGRAM_TO&lt;/code&gt; e &lt;code&gt;TELEGRAM_TOKEN&lt;/code&gt; com seus valores correspondentes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Testando o Fluxo de Trabalho
&lt;/h3&gt;

&lt;p&gt;Com tudo configurado, você pode testar o fluxo de trabalho fazendo um push para a branch principal do seu repositório. Após o push, você deve receber uma notificação no Telegram informando sobre a nova alteração no repositório.&lt;/p&gt;

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

&lt;p&gt;O GitHub Actions oferece uma maneira conveniente de automatizar tarefas repetitivas, como enviar notificações para plataformas externas como o Telegram. Neste artigo, vimos como configurar o GitHub Actions para enviar notificações via Telegram sempre que ocorrerem eventos específicos em um repositório do GitHub. Essa automação pode ajudar a manter equipes informadas sobre o progresso do desenvolvimento e a agilizar o fluxo de trabalho de desenvolvimento de software.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Como fazer deploy no vercel com o seu app web flutter</title>
      <dc:creator>Suami Medeiros</dc:creator>
      <pubDate>Sat, 28 Sep 2024 02:11:59 +0000</pubDate>
      <link>https://forem.com/devsnorte/como-fazer-deploy-no-vercel-com-o-seu-app-web-flutter-3o43</link>
      <guid>https://forem.com/devsnorte/como-fazer-deploy-no-vercel-com-o-seu-app-web-flutter-3o43</guid>
      <description>&lt;h1&gt;
  
  
  Como fazer deploy no vercel com o seu app web flutter
&lt;/h1&gt;

&lt;p&gt;Venho aqui trazer esse "guia" de como publicar sua aplicação web flutter no site muito famosinho chamado &lt;a href="https://vercel.com" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Dei algumas alternativas de como fazer isso e no final vou deixar a referência que me inspirou a digitar esse artigo(passem lá pra dar os claps pro coleguinha, rs).&lt;/p&gt;

&lt;h2&gt;
  
  
  Antes de tudo...
&lt;/h2&gt;

&lt;p&gt;Gostaria de desejar os meus parabéns pelo seu ótimo trabalho. Publicar uma aplicação web é um marco enorme para qualquer desenvolvedor, e se você chegou até aqui, é por estar a um passo de compartilhar o seu trabalho com o mundo.&lt;/p&gt;

&lt;p&gt;Agora vou te mostrar como fazer a publicação do seu app web flutter para a plataforma &lt;a href="https://vercel.com" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Indice&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Preparando a sua aplicação flutter para Web.

&lt;ul&gt;
&lt;li&gt;Habilitar o suporte web no seu projeto Flutter.

&lt;ul&gt;
&lt;li&gt;  Criar a versão web da sua aplicação.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Criando uma conta na Vercel.

&lt;ul&gt;
&lt;li&gt;Acessar o site da Vercel.

&lt;ul&gt;
&lt;li&gt;Criar uma conta.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Subindo sua aplicação para o GitHub.

&lt;ul&gt;
&lt;li&gt;Inicialize o git no seu projeto.

&lt;ul&gt;
&lt;li&gt;Adicionar todos os arquivos e fazer o commit inicial.&lt;/li&gt;
&lt;li&gt;Subir a aplicação para o GitHub.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conectando o seu projeto à Vercel

&lt;ul&gt;
&lt;li&gt;Conectar o repositório.

&lt;ul&gt;
&lt;li&gt;Configurar as opções de build.&lt;/li&gt;
&lt;li&gt;Clicar em deploy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Publicação finalizada e opção de customizar o link.

&lt;ul&gt;
&lt;li&gt;Verificar se está tudo ok.

&lt;ul&gt;
&lt;li&gt;Atualização automática&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fim.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  Preparando a sua aplicação flutter para Web
&lt;/h1&gt;

&lt;p&gt;Vamos garantir que a sua aplicação está configurado corretamente para web.&lt;/p&gt;

&lt;h3&gt;
  
  
  Habilitar o suporte web no seu projeto flutter
&lt;/h3&gt;

&lt;p&gt;Vá ao terminal (No meu VSCode o atalho é Ctrl + Shift + ') e digite e execute o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter config --enable-web

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Criar a versão web da sua aplicação
&lt;/h3&gt;

&lt;p&gt;Agora precisamos gerar os arquivos necessários para o deploy. Mais uma vez, no terminal, digite e execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter build web

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

&lt;/div&gt;



&lt;p&gt;Será criada uma pasta &lt;code&gt;build\web&lt;/code&gt;, que vai ter os arquivos necessários que comentei anteriormente, após fazer a compilação do seu projeto.&lt;/p&gt;




&lt;h1&gt;
  
  
  Criando uma conta na Vercel
&lt;/h1&gt;

&lt;p&gt;Se você não conhece a Vercel é uma plataforma bem legal pra subir os seus projetos. Para subir seu projeto você vai precisar criar uma conta mas não se preocupe pois não é preciso pagar nada (Só se você quiser um domínio personalizado, vamos falar disso no final, ok?).&lt;/p&gt;

&lt;p&gt;Prosseguindo..&lt;/p&gt;

&lt;h3&gt;
  
  
  Acessar o site da Vercel
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;https://vercel.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Criar uma conta
&lt;/h3&gt;

&lt;p&gt;Você pode se registrar com uma conta do GitHub, GitLab ou BitBucket. Isso poderá ser útil mais tarde.&lt;/p&gt;




&lt;h1&gt;
  
  
  Subindo sua aplicação para o GitHub
&lt;/h1&gt;

&lt;p&gt;Antes de fazer o deploy do seu projeto flutter no Vercel, é preciso que o seu projeto esteja no github ou em alguma plataforma citada anteriormente.&lt;/p&gt;

&lt;p&gt;Vou mostrar como se faz no GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inicializar o Git no seu projeto
&lt;/h3&gt;

&lt;p&gt;Abra o terminal dentro do seu projeto e digite e execute:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adicionar todos os arquivos e fazer o commit inicial
&lt;/h3&gt;

&lt;p&gt;Após execute o git init, digite e execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
git commit -m " sua mensagem de preferencia"

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Subir o projeto para o GitHub
&lt;/h3&gt;

&lt;p&gt;Finalmente a última etapa para subir a sua aplicação para o GitHub.&lt;/p&gt;

&lt;p&gt;Depois de dar o commit inicial, vá no seu repositório e copie o link, você vai precisar para essa etapa.&lt;/p&gt;

&lt;p&gt;Mais uma vez abra o terminal do seu projeto e digite e execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin https://github.com/seu-usuario/seu-repositorio.git
git push -u origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Detalhe importante: se for em outras plataformas o processo é muito semelhante.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conectando o projeto à Vercel
&lt;/h1&gt;

&lt;p&gt;Belezuras, agora podemos finalmente configurar a publicação na Vercel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conectar o repositório
&lt;/h3&gt;

&lt;p&gt;Com a sua conta logada na Vercel, encontre o botão &lt;em&gt;New Project&lt;/em&gt;, após clicar no botão escolha o Github e procure pelo seu projeto, digitando o nome na barra de busca deve encontrar rápido.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configurar as opções de build
&lt;/h3&gt;

&lt;p&gt;Na seção &lt;code&gt;Build &amp;amp; Development Settings&lt;/code&gt;, escolha &lt;code&gt;Other&lt;/code&gt; como a predefinição da estrutura. Flutter infelizmente não é uma opção padrão no Vercel, então você precisará defini-lo manualmente.&lt;/p&gt;

&lt;p&gt;Substitua as configurações padrões:  &lt;/p&gt;

&lt;p&gt;obs: para isso é preciso clicar no toggle que fica do lado de cada configuração para ativar cada campo.&lt;/p&gt;

&lt;p&gt;Build Command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter/bin/flutter build web --release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;build/web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if cd flutter; then git pull &amp;amp;&amp;amp; cd .. ; else git clone https://github.com/flutter/flutter.git; fi &amp;amp;&amp;amp; ls &amp;amp;&amp;amp; flutter/bin/flutter doctor &amp;amp;&amp;amp; flutter/bin/flutter clean &amp;amp;&amp;amp; flutter/bin/flutter config --enable-web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Clicar em deploy
&lt;/h3&gt;

&lt;p&gt;Ao clicar no botão de deploy a Vercel fará todo o trabalho dai em diante. Vai compilar e hospedar o seu app web Flutter automaticamente e é claro que isso pode demorar um pouco.&lt;/p&gt;




&lt;h1&gt;
  
  
  Publicação finalizada e opção de customizar o link
&lt;/h1&gt;

&lt;p&gt;Quando a plataforma concluir a publicação, vai aparecer uma nova janela com o link para o seu projeto deployado (acabei de inventar essa palavra que muitos usam rs).&lt;/p&gt;

&lt;p&gt;Certo, agora você finalmente concluiu sua publicação na Vercel. Meus parabéns!! 🎊&lt;/p&gt;

&lt;h3&gt;
  
  
  Verificar se está tudo ok
&lt;/h3&gt;

&lt;p&gt;Pode ser que algum problema aconteça mas você pode voltar nas outras etapas e verificar o que pode ter acontecido.&lt;/p&gt;

&lt;h3&gt;
  
  
  Atualização automática
&lt;/h3&gt;

&lt;p&gt;E só pra você saber: O maior beneficio de subir pela Vercel é que as suas atualizações são automáticas.&lt;/p&gt;




&lt;h1&gt;
  
  
  Fim
&lt;/h1&gt;

&lt;p&gt;Obrigada por chegar até aqui. Agora seu aplicativo web está ativo, certifique-se de compartilhar com o mundo através das redes sociais, artigos e boca a boca também rs. Networking é o poder!!&lt;/p&gt;

&lt;p&gt;Vou me despedindo por aqui, espero que tenha gostado e até a próxima &amp;lt;3 &lt;/p&gt;

&lt;p&gt;Happy Coding 🚀&lt;/p&gt;




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

&lt;p&gt;&lt;a href="https://blog.leszekkrol.com/how-to-deploy-a-flutter-web-app-to-vercel-887b28c93478" rel="noopener noreferrer"&gt;How to Deploy a Flutter Web App to Vercel - Leszek W. Król&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>programming</category>
      <category>coding</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Sobre a bacia Tocantins-Araguaia</title>
      <dc:creator>Gustavo Ramos</dc:creator>
      <pubDate>Tue, 27 Aug 2024 18:00:16 +0000</pubDate>
      <link>https://forem.com/devsnorte/sobre-a-bacia-tocantis-uruguaia-2md0</link>
      <guid>https://forem.com/devsnorte/sobre-a-bacia-tocantis-uruguaia-2md0</guid>
      <description>&lt;p&gt;Esse artigo vem de um projeto que venho fazendo dos workshosps aos sábado sobre análise dos reservatórios (se quiser saber temos o repositório no &lt;a href="https://github.com/acaicomdados/analise-reservatorios-federais" rel="noopener noreferrer"&gt;Github&lt;/a&gt; onde poderá ter informações sobre todos os processo que estamos fazendo) e nessa parte estamos fazendo a análise de série histórica da bacia do Tocantins, então nada melhor sobre ter conhecimento sobre o que é essa bacia e a sua importância para a gestão de recursos hídricos no Brasil.&lt;/p&gt;

&lt;p&gt;O texto deste artigo está apoiado em um trabalho de conclusão de curso que pode ser encontrado &lt;a href="https://bdm.ufpa.br/jspui/handle/prefix/6518" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Tem como rio principal o Rio Tocantins, sendo o principal curso d’́ água que, possuindo uma extensão de 2.416 km, configurando-se como o segundo maior rio totalmente brasileiro, sendo que a sua nascente é localizada no Estado de Goiás, passando pelos Estados do Tocantins e Maranhão até chegar em sua foz, na Ilha do Marajó.&lt;/p&gt;

&lt;p&gt;Tem como seu afluente principal o Rio Araguaia, com uma extensão de 2.115 km, atravessando os Estados de Mato Grosso, Goiás, Tocantins e Pará, nascendo na Serra dos Caiapós a uma altitude de 850 metros. Seu encontro com o Rio Tocantins ocorre próximo ao Bico do Papagaio. &lt;/p&gt;

&lt;p&gt;O Rio Tocantins tem um potencial muito grande para construção de usinas hidrelétricas, sendo a mais conhecida a usina de Tucuruí, não sendo à toa que há vário usina construídas ao longo de seu percurso, como pode ser visto na imagem abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52vvkge94qw29yei9ebx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52vvkge94qw29yei9ebx.png" alt="Localização doas usina ao longo do rio tocantins" width="395" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dada a sua importância energética e para a população que vive envolta, é muito importante ter a sua conservação e que com os caso de desmatamento e agrotóxicos isso acarreta diminuição e sua superfície, trazendo prejuízos e consequências futuras que pode acabar com toda uma dinâmica social e econômica.&lt;/p&gt;

&lt;p&gt;Como podemos ver nesta reportagem do &lt;a href="https://g1.globo.com/jornal-nacional/noticia/2024/04/29/pesquisadores-alertam-para-situacao-critica-na-bacia-do-araguaia.ghtml" rel="noopener noreferrer"&gt;Jornal Nacional&lt;/a&gt; em que foi feito um estudo conduzido pela UNB, constatando mediante dados sobre a superfície de água e a vazão da correnteza nas 21 estações de monitoramento desde 1980 que o rio nos últimos 40 anos perdeu em média 40% de vazão e entre 40% e 67% da superfície de água, dependendo em que parte do rio, havendo uma correlação forte entre redução da superfície da água com o aumento do desmatamento e da quantidade de áreas irrigadas. Havendo contaminação de agrotóxicos na água nas sub-bacias estudadas&lt;/p&gt;

&lt;p&gt;Nesta reportagem da &lt;a href="https://noticias.uol.com.br/colunas/crise-climatica/2022/05/12/bacia-do-araguaia-tocantins-esta-secando-diz-estudo.htm" rel="noopener noreferrer"&gt;UOL&lt;/a&gt; mostra uma análise que observou os registros históricos de 27 estações de medição até o ano de 2019, e constatou vazões abaixo da média em 19 delas, com especial atenção para os períodos secos. Os resultados são um alerta para os projetos de irrigação, hidrelétricas e hidrovias propostos na região.&lt;/p&gt;

&lt;p&gt;E no &lt;a href="https://afnoticias.com.br/estado/quase-metade-da-bacia-tocantins-araguaia-ja-foi-desmatada-alertam-58-pesquisadores" rel="noopener noreferrer"&gt;Afronoticias&lt;/a&gt; em que quase metade da bacia foi desmatada, a calha do rio Tocantins está muito seriamente impactada por barragens e os afluentes do rio Araguaia têm sofrido com a retirada de água para agricultura irrigada, além da perda de áreas ripárias (as regiões que estão diretamente relacionadas com os cursos d’água e onde ocorre a mata ciliar ou vegetação que influi na dinâmica ambiental relacionada) e o assoreamento do rio.&lt;/p&gt;

&lt;p&gt;Dados os impactos ambientais, medidas precisam ser cuidados, inclusive está em tramitação o projeto de lei &lt;a href="https://www.camara.leg.br/proposicoesWeb/fichadetramitacao?idProposicao=2259292" rel="noopener noreferrer"&gt;PL 4058/20&lt;/a&gt; atribuindo ao poder público medidas de conservação na bacia do Tocantins-Araguaia, dentre as medidas&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;elaboração de zoneamento ecológico-econômico&lt;/li&gt;
&lt;li&gt;sistema de monitoramento e recuperação da cobertura vegetal do Cerrado&lt;/li&gt;
&lt;li&gt;implantação do programa de pagamento por serviços ambientais&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É muito importante organizar para que esta lei seja aprovada para garantir uma melhor conservação da bacia e de sua importância, além de apoiar outros projetos que tenha por objetivo a conservação&lt;/p&gt;

</description>
      <category>baciahidrografica</category>
      <category>recursoshidricos</category>
    </item>
    <item>
      <title>Analisando série histórica bacia tocantins - parte 2</title>
      <dc:creator>Gustavo Ramos</dc:creator>
      <pubDate>Mon, 12 Aug 2024 13:12:35 +0000</pubDate>
      <link>https://forem.com/devsnorte/analisando-serie-historica-bacia-tocantins-parte-2-15pi</link>
      <guid>https://forem.com/devsnorte/analisando-serie-historica-bacia-tocantins-parte-2-15pi</guid>
      <description>&lt;p&gt;Neste encontro, tem-se a continuação da análise que começou do último encontro em que se começou pela bacia hidrográfica de Tocantins, nesse encontro começamos a fazer uma análise de tendência e de sazonalidade em específico a usina de Tucuruí para depois fazer comparação com as outras usinas dessa mesma bacia hidrográfica.&lt;/p&gt;

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

&lt;p&gt;Pode observar um período de cheia, principalmente nos períodos de março e abril, e um período de estiagem de julho a outubro (seria essa a sazonalidade dos períodos de seca e cheia)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;De janeiro a abril tem uma tendência de subida&lt;/li&gt;
&lt;li&gt;De maio até outubro, uma tendência de queda e novembro uma subida&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso pode ser visto aplicando a média móvel de 30 dias no gráfico abaixo&lt;/p&gt;

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

&lt;p&gt;E um comportamento parecido pode observar comparando os anos, temos alguns de exemplo no gráfico abaixo&lt;/p&gt;

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

&lt;p&gt;A partir dessas análises podemos fazer os seguintes questionamentos para as próximas&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Os outros reservatórios desta mesma bacia hidrográfica tem este comportamento?&lt;/li&gt;
&lt;li&gt;tem relação com o volume de chuvas na região durante o ano?&lt;/li&gt;
&lt;li&gt;A vazão que entra no reservatório tem relação com a geração de energia da mesma&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Analisando série histórica bacia tocantins - parte 1</title>
      <dc:creator>Gustavo Ramos</dc:creator>
      <pubDate>Sun, 21 Jul 2024 13:49:40 +0000</pubDate>
      <link>https://forem.com/devsnorte/analisando-serie-historica-bacia-tocantins-parte-1-27mj</link>
      <guid>https://forem.com/devsnorte/analisando-serie-historica-bacia-tocantins-parte-1-27mj</guid>
      <description>&lt;p&gt;Já foi feita uma análise geral das reservas federais, no qual todo o processo pode ser acompanhado no repositório do &lt;a href="https://github.com/acaicomdados/analise-reservatorios-federais" rel="noopener noreferrer"&gt;github&lt;/a&gt;, agora vai ser feito a análise das séries histórica da afluência dos reservatórios federais (Vazão/volume da água que entra no reservatório (m³/s))&lt;/p&gt;

&lt;p&gt;Como são muitos reservatórios, decidiu-se fazer cada análise separado por bacia hidrográfica já que os reservatórios de bacias de uma mesma bacia hidrográfica tem comportamentos semelhantes, e começaremos nesta analise com a bacia Tocantins&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G4Myu_-C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ana.gov.br/sar/sin/b_tocantins/tocantins.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G4Myu_-C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ana.gov.br/sar/sin/b_tocantins/tocantins.jpg" alt="bacia tocantins" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mais informações sobre esta bacia, consulte este link do Governo Federal &lt;a href="https://www.gov.br/ana/pt-br/assuntos/gestao-das-aguas/panorama-das-aguas/regioes-hidrograficas/regiao-hidrografica-tocantins-araguaia" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Analisando a série histórica, como pode ser observado no gráfico abaixo, podemos ver que:&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;O reservatório de Tucuruí é o que mais apresenta vazão, se comparado com outros da mesma bacia hidrográfica, pois além do rio Tocantins, a usina de Tucuruí recebe do afluente do rio Araguaia, como pode ver no esquema abaixo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TIJQs_Xf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ana.gov.br/sar/sin/diagramatocantins.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TIJQs_Xf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ana.gov.br/sar/sin/diagramatocantins.jpg" alt="esquema" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Observação:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reservatório com triângulo: do tipo usina com reservatório(Usina hidrelétrica sem reservatório de acumulação. O barramento foi construído apenas com intuito de ter uma queda d’água e o volume armazenado no reservatório não é capaz de manter o funcionamento da usina por mais do que uma semana)&lt;/li&gt;
&lt;li&gt;Reservatório com círculo: do tio usina fio água (Usinas nas quais o reservatório construído têm um volume armazenado capaz de atender as demandas por longo tempo (meses a anos))&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se olharmos uma média da afluência durante os meses, parece termos um seguinte padrão que pode ser investigado nos próximos encontros em que se observa tendência de subida até abril e começa a decrescer em maio e começa a subir em torno de novembro (a ser analisado)&lt;br&gt;
pico normalmente em março ou abril (a ser analisado a sazonalidade)&lt;/p&gt;

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

&lt;p&gt;A partir disso, nos próximos encontros será analisado melhor os comportamentos dos reservatórios da bacia de Tocantis&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>serietemporal</category>
    </item>
    <item>
      <title>Análise das estações meteorológicas - parte extra 1</title>
      <dc:creator>Gustavo Ramos</dc:creator>
      <pubDate>Sun, 07 Jul 2024 14:34:34 +0000</pubDate>
      <link>https://forem.com/devsnorte/analise-das-estacoes-meteorologicas-parte-extra-1-4734</link>
      <guid>https://forem.com/devsnorte/analise-das-estacoes-meteorologicas-parte-extra-1-4734</guid>
      <description>&lt;p&gt;Neste encontro extra, durante a Jornada de Desenvolvimento de Software (JES) organizada pelos discentes em engenharia de software da Universidade do Estado do Pará, foi feito uma amostra do que vem sendo feito durante os encontros do workshop de python para análise de dados&lt;/p&gt;

&lt;p&gt;Assim foi feito uma análise com base no segundo (você pode ler sobre clicando &lt;a href="https://dev.to/devsnorte/analise-das-reservas-federais-parte-2-1hcc"&gt;aqui&lt;/a&gt;) encontro em que foi levantado os impactos ambientais que os reservatórios causam a sua construção, a partir disso foi levantado se poderia utilizar as estações meteorológicas do Instituto nacional de Meteorologia (INMET) e se seria possível utilizar para fazer essa análise dos impactos ambientais sobre os reservatórios&lt;/p&gt;

&lt;p&gt;Assim foi extraído os dados de todas as estações instaladas verificar elas, em que ano foram fundadas e se estão próximas aos reservatórios&lt;/p&gt;

&lt;p&gt;Quanto ao Estado, temos que a maioria das estações estão localizadas em Minas Gerais, se comparada em outros Estados como Amapá e Roraima, por exemplo, podendo indicar que há uma distribuição desigual das estações em volta do Brasil&lt;/p&gt;

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

&lt;p&gt;Quanto ao ano de fundação, a maioria das estações está principalmente em três anos, 2006, 2007 e 2008, podemos verificar se houve alguma política pública federal que houve para fazer essa construção e qual necessidade houve na época&lt;/p&gt;

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

&lt;p&gt;Inclusive quando olhamos esse ano de construção por Estado, vemos em que nos Estado, maioria foi construída nesse período, comparado a outros Estados em que tem um período maior de construção, como pode ser visto no gráfico abaixo&lt;/p&gt;

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

&lt;p&gt;Agora, quando geramos um mapa com os pontos das estações meteorológicas da INMET, podemos ver que há muito bem distribuídas, principalmente na região Sul e Sudeste, mas quando olhamos para a região Norte, principalmente há muito poucas estações, talvez havendo a necessidade de políticas para instalação de mais estação para coleta de informações e previsões para apoiar os cenários de planejamento nas mais diversas situações&lt;/p&gt;

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

&lt;p&gt;Mas enquanto para poder fazer a comparação dos impactos, talvez não haja essa possibilidade para fazer, porque a maioria dos reservatórios foram construídos na década de 70, enquanto a maioria das estações em 2006, 2007 e 2008, então a maioria não vai poder ser utilizado&lt;/p&gt;

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

&lt;p&gt;Mas há uma proximidade, então outros tipos de análise do que estamos procurando seria possível, e que talvez outros tipos de análise poderiam ser feitas&lt;/p&gt;

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

</description>
    </item>
    <item>
      <title>Análise dos reservatórios federais - parte 2</title>
      <dc:creator>Gustavo Ramos</dc:creator>
      <pubDate>Mon, 24 Jun 2024 11:31:34 +0000</pubDate>
      <link>https://forem.com/devsnorte/analise-das-reservas-federais-parte-2-1hcc</link>
      <guid>https://forem.com/devsnorte/analise-das-reservas-federais-parte-2-1hcc</guid>
      <description>&lt;p&gt;Continuando o que foi feito no último workshop (se ainda não leu, pode ser acessar clicando &lt;a href="https://dev.to/devsnorte/analise-das-reservas-federais-parte-1-2j6f"&gt;aqui&lt;/a&gt;), daremos continuidade para dar análise dos reservatórios, quanto ao tipo de reservatórios, ele pode ser classificar em três, sendo eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Usina a fio d’água&lt;/em&gt;: usina hidrelétrica sem reservatório de acumulação. O barramento foi construído apenas com intuito de ter uma queda d’água e o volume armazenado no reservatório não é capaz de manter o funcionamento da usina por mais do que uma semana.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Usina com reservatório&lt;/em&gt;: usinas nas quais o reservatório construído têm um volume armazenado capaz de atender as demandas por longo período (de meses a anos).&lt;/li&gt;
&lt;li&gt;Usina de bombeamento: usinas construídas para o bombeamento d’água, transposição de rios.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Podemos ver que a maioria é do tipo fio d’água, ou seja, não se tem um reservatório para acumulação, logo quando houver uma estiagem, não se tem água armazenada o suficiente por um tempo para entrar em todas as turbina, mas, comparado as usina com reservatório apresenta menos impactos ambientais&lt;/p&gt;

&lt;p&gt;Inclusive ano passado o Governo pensou em planos para retomar projetos de usinas com reservatório, como pode ser lida na matéria abaixo (a matéria pode ser vista clicando &lt;a href="https://www.camara.leg.br/noticias/996970-pais-deve-retomar-projetos-de-hidreletricas-com-reservatorios-apontam-especialistas/"&gt;aqui&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Mas segundo essa reportagem de 2012, ambientalistas alertam para o perigo de se ter usina com reservatório, pelos impactos ambientais que a mesma pode ocasionar, o melhor, pelo que propõem, é usar as hidrelétricas em conjunto com as energias renováveis, como a elétrica e a solar (que pode ser lida &lt;a href="https://oglobo.globo.com/economia/hidreletricas-polemica-envolve-volta-de-reservatorios-5764763"&gt;aqui&lt;/a&gt;)&lt;/p&gt;

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

&lt;p&gt;Em relação aos reservatórios por Estado, temos que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Temos Estados que só tem fio d’água com Piauí, Maranhão, Alagoas, Sergipe e Amapá&lt;/li&gt;
&lt;li&gt;Amazonas e Paraíba só tem usinas com reservatório&lt;/li&gt;
&lt;li&gt;e todas as usina de bombeamento estão no Rio de Janeiro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Podemos ver que em questão de volume, o tipo de usina com reservatório são as que apresentam ter mais, em relação as outras&lt;/p&gt;

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

&lt;p&gt;Agora se vemos em relação aos Estados isso, podemos ver que o Pará e Bahia tem os maiores volumes em questão de usina com reservatório e Mato Grosso do Sul é o que tem mais em relação ao fio d’água&lt;/p&gt;

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

&lt;p&gt;Se isso for observado por bacia, a bacia do Tocantins apresenta maior volume útil em relação da usina do tipo reservatório e a bacia Paraná apresenta maiores volume do tipo fio d’água&lt;/p&gt;

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

&lt;p&gt;Com isso também foi gerado dois mapas, um separado conforme o tipo de usina, e outro sobre o volume útil, sendo que os três maiores são: Tucuruí, Serra da Mesa e Sobradinho&lt;/p&gt;

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

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

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

&lt;p&gt;Pela análise feita vemos que existe mais usinas do tipo fio d’água e que usina com reservatório tem mais volume útil se comparado a outros, quanto a isso a questão que fica e vale dá uma pesquisa é:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quais impactos ambientais a usina com reservatório pode causar em relação ao fio d’água do que foi mencionado na reportagem acima?&lt;/li&gt;
&lt;li&gt;Qual seria a solução diante disso apontada pelos especialistas?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Também mostra uma possível análise futura seria pegar as estações meteorológicas mais próximas dos reservatórios e verificar se houve alguma alteração climática com a construção da usina e qual tipo de usina fica mais nítido observar essas alterações&lt;/p&gt;

</description>
      <category>reservatórios</category>
      <category>hidreletricas</category>
      <category>datascience</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Percepções sobre análise dos reservatórios parte 1</title>
      <dc:creator>Gustavo Ramos</dc:creator>
      <pubDate>Wed, 12 Jun 2024 09:26:33 +0000</pubDate>
      <link>https://forem.com/devsnorte/percepcoes-sobre-analise-dos-reservatorios-parte-1-3d6h</link>
      <guid>https://forem.com/devsnorte/percepcoes-sobre-analise-dos-reservatorios-parte-1-3d6h</guid>
      <description>&lt;p&gt;A partir da parte 1 da análise de reservatórios federais (se não leu e quiser dá uma lida acesse &lt;a href="https://dev.to/devsnorte/analise-das-reservas-federais-parte-1-2j6f"&gt;aqui&lt;/a&gt;), fiquei curioso com o gráfico abaixo do porquê tem uma concentração dos anos 1970 e anos 2000 e busquei pesquisar o contexto histórico.&lt;/p&gt;

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

&lt;p&gt;Então encontrei esse artigo chamado "A grande aceleração e a construção de barragens hidrelétricas no Brasil" (que pode ser acessado &lt;a href="https://www.scielo.br/j/vh/a/ChCpxyx8Xg6w74xRTmNBRvJ/?format=pdf&amp;amp;lang=pt"&gt;aqui&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Segundo este artigo a construção de hidrelétricas tem relação com o desenvolvimento de indústria aqui no Brasil, assim se deu a necessidade de construção, por volta do início do século XX, em que se consolidou no período da ditadura militar aqui no Brasil, na década de 70, em que o modelo de geração hidrelétrica ocorreu através das esferas institucionais, dados principalmente pela Eletrobras com objetivo do fomentar o desenvolvimento industrial do mundo, coisa que vinha acontecendo desde a década de 30 com Vargas, entretanto foi na década de 70 que isso ganhou mais força e com forte intervenção do Estado.&lt;/p&gt;

&lt;p&gt;Sendo que na década de 80, ocasionado, pela crise do petróleo de 79 e pelos movimentos sociais, o governo entrou em crise política e economicamente, fato que reduziu no número de construção de hidrelétricas e começou a ser considerada variáveis de impactos ambientais começaram a ser consideradas na construção de hidrelétricas &lt;/p&gt;

&lt;p&gt;Agora sobre a época de 2000 (você pode ler melhor nesse documento &lt;a href="https://www.epe.gov.br/sites-pt/publicacoes-dados-abertos/publicacoes/PublicacoesArquivos/publicacao-227/topico-457/Considera%C3%A7%C3%B5es%20sobre%20a%20Expans%C3%A3o%20Hidrel%C3%A9trica%20nos%20Estudos%20de%20Planejamento%20Energ%C3%A9tico%20de%20Longo%20Prazo.pdf"&gt;aqui&lt;/a&gt;) se deu pelo fator de&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Racionamento de energia de 2001 (você pode entender melhor sobre na matéria &lt;a href="https://economia.uol.com.br/faq/o-que-foi-o-apagao-de-2001-risco-racionamento-energia-eletrica.htm"&gt;aqui&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Assim teve uma necessidade construção de mais energia elétrica para que isso não acontecesse e uma universalização de energia elétrica&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para facilitar o entendimento, têm-se a tabela abaixo para entender melhor o pontos importantes do contexto histórico (o material de onde vem a tabela pode ser encontrado &lt;a href="https://www.epe.gov.br/sites-pt/publicacoes-dados-abertos/publicacoes/PublicacoesArquivos/publicacao-227/topico-457/Considera%C3%A7%C3%B5es%20sobre%20a%20Expans%C3%A3o%20Hidrel%C3%A9trica%20nos%20Estudos%20de%20Planejamento%20Energ%C3%A9tico%20de%20Longo%20Prazo.pdf"&gt;aqui&lt;/a&gt;)&lt;/p&gt;

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

&lt;p&gt;Assim, conforme os materiais obtidos, temos que o gráfico acima se deu por:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A construção de hidrelétrica, durante boa parte da história, se deu pelo processo de industrialização do Brasil&lt;/li&gt;
&lt;li&gt;Os pico na década de 70 pelo investimento massivo do governo para a indústria e 2000 para a universalização para não ocorrer o racionamento de 2001&lt;/li&gt;
&lt;li&gt;Explica também porque a maioria do reservatório estão localizados no sul e sudeste do Brasil, como podemos ver no mapa abaixo, devido que, historicamente, a industrialização começo nessas duas regiões, principalmente.&lt;/li&gt;
&lt;/ul&gt;

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

</description>
    </item>
    <item>
      <title>Análise dos reservatórios federais - parte 1</title>
      <dc:creator>Gustavo Ramos</dc:creator>
      <pubDate>Sun, 09 Jun 2024 02:12:16 +0000</pubDate>
      <link>https://forem.com/devsnorte/analise-das-reservas-federais-parte-1-2j6f</link>
      <guid>https://forem.com/devsnorte/analise-das-reservas-federais-parte-1-2j6f</guid>
      <description>&lt;p&gt;Este projeto tem como principal razão fazer uma visão exploratória das reservas federais utilizadas para mover as turbinas das hidrelétricas do país, o ponto também é fazer associações com outras variáveis, como produção de energia elétrica e dados meteorológicas para trazer uma análise mais completa&lt;/p&gt;

&lt;h2&gt;
  
  
  Objetivos e formulação de hipóteses
&lt;/h2&gt;

&lt;p&gt;Nesse primeiro encontro foram definidos os objetivos, formulação de hipóteses e uma análise inicial acerca das variáveis presentes no dataset&lt;/p&gt;

&lt;p&gt;O objetivo desta análise é:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fazer uma análise da vazão dos reservatórios e verificar se houve um aumento ou uma diminuição ao longo do tempo&lt;/li&gt;
&lt;li&gt;Fazer relação com dados de meteorologia e dados de geração de energia elétrica nas hidrelétricas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com base nos objetivos descritos acima, foram formulados as seguintes hipóteses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Houve uma diminuição nos reservatórios brasileiros (com base da notícia abaixo)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.cnnbrasil.com.br/nacional/brasil-perde-15-de-superficie-de-agua-desde-o-comeco-dos-anos-1990/"&gt;Brasil perde 15% de superfície de água desde o começo dos anos 1990&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Há uma relação entre índices meteorológicos e vazão de água&lt;/li&gt;
&lt;li&gt;Há uma relação da vazão de água com a produção de energia nas hidrelétricas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sobre o base de dados a ser utilizada
&lt;/h2&gt;

&lt;p&gt;O objetivo do dataset é usar os dados dos reservatórios federais da ANA (Agência Nacional de Águas e Saneamento Básico) de sua série histórica, mas não tem na base dos dados informações da bacia e geração de energia elétrica, logo, terá que ser utilizada outras bases de dados para fazer o cruzamento das informações.&lt;/p&gt;

&lt;p&gt;Então foi usado outro dataset onde teria esses dados, mas não informações de que Estado estava localizado o reservatório, foi então que se usou a base do dados do pacote R dai cruzando essas informações&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/brunomioto/reservatoriosBR"&gt;GitHub - brunomioto/reservatoriosBR: R package for Brazilian reservoirs data&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://basedosdados.org/dataset/fcb40f26-0d15-463f-b5fe-e69d5f0affe1?table=ab8e842f-af0a-452e-8e35-d5270395dd6c"&gt;Avaliação da Operação do Sistema Interligado Nacional (SIN) e outros subsistemas – Base dos Dados&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com isso agora se tem informações desejáveis sobre os reservatórios federais e usaremos essa base para fazemos a análise antes de usar para cruzar com a série histórica da ANA&lt;/p&gt;

&lt;h2&gt;
  
  
  Análise inicial
&lt;/h2&gt;

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

&lt;p&gt;Em relação entre os Estados, verifica-se que os Estados que tem mais reservatório são Minas Gerais e São Paulo, podemos ver que RS tem quase 15 reservatórios e muitos podem ter sido danificados com a recente tragédia no Estado, podemos verificar a partir disso verificar se por ter mais reservatórios, os Estados de SP e MG tem uma produção de energia elétrica comparado com outros Estados&lt;/p&gt;

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

&lt;p&gt;Em relação ao ano de fundação dos reservatórios, podemos ver que tem dois picos: um durante as décadas de 70 e 80 e outra próxima próximo aos anos 2000, podemos ver qual contexto histórico e econômico da época que pode ter ocasionado isso para entender melhor essa distribuição&lt;/p&gt;

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

&lt;p&gt;Em relação às bacias, a grande parte se localiza na Grande, Paranaiba, Paranapanema, Amazonas, São Francisco e Uruguai, verificar então se tem uma grande vazão por esse reservatório é maior em relação as demais&lt;/p&gt;

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

&lt;p&gt;Em relação ao rio, temos que os rios que possuem mais reservatórios são o Grande, Paranapanema e o São Francisco, sendo necessário, a partir disso, verificar o mesmo que na bacia&lt;/p&gt;

&lt;p&gt;A cota máxima e mínima é sempre próxima de 400, sendo que neste problema dos dados, não será utilizada a média como referência, devido aos valores extremos, e sim a mediana, pois é uma medida que não tão influenciada aos valores extremos, se comparado com a média&lt;/p&gt;

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

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

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj3rwhze8rrciakrf9qs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj3rwhze8rrciakrf9qs.png" alt="Algumas medidas-resumo de algumas das variáveis, vendo pelo desvio padrão que é a última linha, o porquê a média não ser utilizada como referência" width="737" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Algumas medidas-resumo de algumas das variáveis, vendo pelo desvio padrão que é a última linha, o porquê a média não ser utilizada como referência&lt;/p&gt;

&lt;p&gt;Em questão de volume, temos que a maioria está concentrado em valores com menos de 5 mil, vendo a investigar quem são esses reservatórios que tem esses valores extremos&lt;/p&gt;

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

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

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

&lt;p&gt;Em questão de ganhos de MW pela queda temos que a maioria é maior que 0,08, o que nos vai fazer investigar o porquê disso ser importante, se há um número aceitável para isso&lt;/p&gt;

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

&lt;p&gt;Geramos um mapa para ver como estão a maioria concentrado em MG e em SP comparado como outros Estados no Brasil&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Questões para a próxima análise
&lt;/h2&gt;

&lt;p&gt;Feito isso, podemos pensar no que analisar a partir daqui, sendo os seguintes pontos&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Os Estados onde se tem mais reservatório implica em mais produção de energia elétrica (referente as hidrelétricas)?&lt;/li&gt;
&lt;li&gt;O volume do reservatório influência na produção de energia elétrica?&lt;/li&gt;
&lt;li&gt;A altura também influencia na produção de energia elétrica?&lt;/li&gt;
&lt;li&gt;Pode fazer comparação da localização dos reservatórios com as estações meteorológicas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Para saber mais
&lt;/h2&gt;

&lt;p&gt;Se quiser contribuir com o projeto ou é um especialista na área e queria dá uma direção no trabalho, segue os seguintes links&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Repositório github: &lt;a href="https://github.com/acaicomdados/analise-reservatorios-federais"&gt;https://github.com/acaicomdados/analise-reservatorios-federais&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Documentação do projeto: &lt;a href="https://flint-texture-e2f.notion.site/An-lise-de-recursos-h-dricos-6d430a9618054bc1b8cd6f213cad6e3c"&gt;https://flint-texture-e2f.notion.site/An-lise-de-recursos-h-dricos-6d430a9618054bc1b8cd6f213cad6e3c&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Meu linkedin: &lt;a href="https://www.linkedin.com/in/gustavoramos82/"&gt;https://www.linkedin.com/in/gustavoramos82/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>reservatorios</category>
      <category>analyst</category>
      <category>map</category>
    </item>
  </channel>
</rss>
