<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pri</title>
    <description>The latest articles on DEV Community by Pri (@pricilaoliveirarocha).</description>
    <link>https://dev.to/pricilaoliveirarocha</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4164963%2F6cd3ab5d-1bbf-4318-a87e-4649a481245d.png</url>
      <title>DEV Community: Pri</title>
      <link>https://dev.to/pricilaoliveirarocha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pricilaoliveirarocha"/>
    <language>en</language>
    <item>
      <title>dev.study #02 - React.js: Fundamentos, Componentes, Props e Hooks ⚛️</title>
      <dc:creator>Pri</dc:creator>
      <pubDate>Sat, 17 Oct 2026 13:34:25 +0000</pubDate>
      <link>https://dev.to/pricilaoliveirarocha/devstudy-02-reactjs-fundamentos-componentes-props-e-hooks-k26</link>
      <guid>https://dev.to/pricilaoliveirarocha/devstudy-02-reactjs-fundamentos-componentes-props-e-hooks-k26</guid>
      <description>&lt;p&gt;React é uma biblioteca JavaScript de código aberto utilizada para construir interfaces de usuário interativas, reutilizáveis e baseadas em componentes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7bpjcjg780gthyafyb6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7bpjcjg780gthyafyb6o.png" alt=" " width="799" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desenvolvido originalmente pelo Facebook (atual Meta), o React introduz uma abordagem declarativa para a criação de interfaces, permitindo que a aplicação atualize sua apresentação conforme os dados e estados são modificados.&lt;/p&gt;

&lt;p&gt;Neste estudo, vamos explorar seus principais fundamentos e entender como aplicá-los na prática.&lt;/p&gt;

&lt;h2&gt;
  
  
  01. O que é React?
&lt;/h2&gt;

&lt;p&gt;O React permite dividir uma interface em partes independentes chamadas &lt;strong&gt;componentes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cada componente representa um elemento da aplicação, como um botão, formulário, menu ou card.&lt;/p&gt;

&lt;p&gt;Essa abordagem oferece algumas vantagens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reutilização:&lt;/strong&gt; o mesmo componente pode ser utilizado em diferentes partes da aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manutenção:&lt;/strong&gt; alterações podem ser realizadas de forma isolada.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organização:&lt;/strong&gt; a interface é dividida em estruturas menores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interatividade:&lt;/strong&gt; componentes podem reagir às ações do usuário e às mudanças de dados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;React é uma biblioteca, não um framework completo. Funcionalidades como roteamento e determinadas estratégias de carregamento de dados dependem da arquitetura e das ferramentas escolhidas.&lt;/p&gt;

&lt;h2&gt;
  
  
  02. JSX — JavaScript XML
&lt;/h2&gt;

&lt;p&gt;JSX é uma extensão de sintaxe que permite escrever marcação semelhante ao HTML dentro do JavaScript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Developer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello, &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;! 👋&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As chaves &lt;code&gt;{}&lt;/code&gt; permitem inserir expressões JavaScript no JSX.&lt;/p&gt;

&lt;p&gt;Algumas regras importantes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retornar um único elemento raiz ou utilizar fragments (&lt;code&gt;&amp;lt;&amp;gt;...&amp;lt;/&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Utilizar &lt;code&gt;className&lt;/code&gt; no lugar de &lt;code&gt;class&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Fechar todas as tags.&lt;/li&gt;
&lt;li&gt;Utilizar camelCase em propriedades como &lt;code&gt;onClick&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O JSX é transformado pelas ferramentas de compilação para que o React possa utilizá-lo.&lt;/p&gt;

&lt;h2&gt;
  
  
  03. Components — Componentes
&lt;/h2&gt;

&lt;p&gt;Componentes são funções JavaScript que retornam elementos React.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"btn"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      Click me
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para utilizar esse componente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./Button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;React Study&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conceito principal:&lt;/strong&gt; componentes devem possuir responsabilidades bem definidas e podem ser combinados para construir interfaces mais complexas.&lt;/p&gt;

&lt;h2&gt;
  
  
  04. Props — Propriedades
&lt;/h2&gt;

&lt;p&gt;Props permitem passar informações de um componente pai para um componente filho.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;UserCard&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utilização:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UserCard&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Pricila"&lt;/span&gt;
  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Software Developer"&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Os valores recebidos são utilizados para personalizar o componente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Importante:&lt;/strong&gt; props são imutáveis do ponto de vista do componente que as recebe. Para modificar informações ao longo do tempo, podemos utilizar estados.&lt;/p&gt;

&lt;h2&gt;
  
  
  05. State — Gerenciamento de estado
&lt;/h2&gt;

&lt;p&gt;O estado representa informações que podem ser alteradas durante a execução da aplicação.&lt;/p&gt;

&lt;p&gt;Para gerenciar um estado local, podemos utilizar o Hook &lt;code&gt;useState&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;previous&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;previous&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Count: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;increment&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        Increment
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;count&lt;/code&gt;: valor atual do estado.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;setCount&lt;/code&gt;: função responsável por solicitar a atualização.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useState(0)&lt;/code&gt;: inicializa o estado com zero.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;onClick&lt;/code&gt;: registra o evento de clique.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quando o estado muda, o React agenda uma nova renderização do componente.&lt;/p&gt;

&lt;h2&gt;
  
  
  06. Conditional Rendering
&lt;/h2&gt;

&lt;p&gt;Renderização condicional significa apresentar elementos diferentes dependendo de determinada condição.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Dashboard&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;isLoggedIn&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isLoggedIn&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Welcome back!&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Please log in.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O operador ternário permite escolher qual conteúdo será renderizado.&lt;/p&gt;

&lt;p&gt;Esse recurso é muito utilizado em autenticação, carregamento de dados, permissões e estados vazios.&lt;/p&gt;

&lt;h2&gt;
  
  
  07. Lists and Keys
&lt;/h2&gt;

&lt;p&gt;O React permite renderizar listas utilizando métodos JavaScript como &lt;code&gt;map()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;technologies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;React&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JavaScript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;TypeScript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;TechnologyList&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;technologies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tech&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A propriedade &lt;code&gt;key&lt;/code&gt; ajuda o React a identificar os elementos de uma lista entre renderizações.&lt;/p&gt;

&lt;p&gt;Prefira identificadores estáveis e únicos entre os elementos irmãos, principalmente quando a lista pode sofrer alterações.&lt;/p&gt;

&lt;h2&gt;
  
  
  08. useEffect — Sincronização com sistemas externos
&lt;/h2&gt;

&lt;p&gt;O Hook &lt;code&gt;useEffect&lt;/code&gt; é utilizado para sincronizar um componente com sistemas externos, como eventos do navegador, conexões e APIs externas.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;WindowWidth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setWidth&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerWidth&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handleResize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setWidth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerWidth&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;resize&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleResize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;resize&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;handleResize&lt;/span&gt;
      &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Width: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;px&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse exemplo, &lt;code&gt;useEffect&lt;/code&gt; registra um listener para acompanhar o redimensionamento da janela.&lt;/p&gt;

&lt;p&gt;A função retornada realiza a limpeza do listener quando necessário.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observação:&lt;/strong&gt; nem toda transformação de dados exige &lt;code&gt;useEffect&lt;/code&gt;. Cálculos que dependem apenas de props e estados geralmente podem ser realizados diretamente durante a renderização.&lt;/p&gt;

&lt;h2&gt;
  
  
  09. Virtual DOM e Renderização
&lt;/h2&gt;

&lt;p&gt;O React utiliza uma representação dos elementos da interface em memória, frequentemente associada ao conceito de &lt;strong&gt;Virtual DOM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Quando ocorre uma atualização:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;O React renderiza novamente os componentes necessários.&lt;/li&gt;
&lt;li&gt;Compara a nova estrutura de elementos com a anterior durante a reconciliação.&lt;/li&gt;
&lt;li&gt;Determina quais mudanças precisam ser aplicadas.&lt;/li&gt;
&lt;li&gt;Realiza as atualizações necessárias no ambiente de renderização.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Esse processo ajuda a organizar as atualizações da interface sem exigir manipulação manual do DOM para cada alteração.&lt;/p&gt;

&lt;p&gt;Entretanto, o Virtual DOM não significa que toda aplicação React será automaticamente mais rápida que uma implementação em JavaScript puro.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Criando um projeto com Vite
&lt;/h2&gt;

&lt;p&gt;O Vite é uma ferramenta que permite criar e executar projetos React com uma configuração inicial simples.&lt;/p&gt;

&lt;p&gt;Para criar um 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 create vite@latest react-study &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--template&lt;/span&gt; react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Entre no diretório:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;react-study
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instale as dependências:&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inicie o servidor de desenvolvimento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A aplicação estará acessível pelo endereço informado no terminal.&lt;/p&gt;

&lt;p&gt;Para executar esse processo, é necessário ter uma versão do Node.js compatível com os requisitos do Vite instalado.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. React x JavaScript Vanilla
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Característica&lt;/th&gt;
&lt;th&gt;JavaScript Vanilla&lt;/th&gt;
&lt;th&gt;React&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Interface&lt;/td&gt;
&lt;td&gt;Manipulação direta do DOM&lt;/td&gt;
&lt;td&gt;Componentes declarativos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reutilização&lt;/td&gt;
&lt;td&gt;Funções e módulos&lt;/td&gt;
&lt;td&gt;Componentes e Hooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estado&lt;/td&gt;
&lt;td&gt;Gerenciamento manual&lt;/td&gt;
&lt;td&gt;Hooks e outras soluções&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Atualização visual&lt;/td&gt;
&lt;td&gt;Controlada pelo desenvolvedor&lt;/td&gt;
&lt;td&gt;Coordenada pelo React&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependências&lt;/td&gt;
&lt;td&gt;Pode funcionar sem bibliotecas&lt;/td&gt;
&lt;td&gt;Requer React&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ambas as abordagens são válidas. A escolha depende da complexidade, dos requisitos e da arquitetura da aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Resumo dos conceitos
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Conceito&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;React&lt;/td&gt;
&lt;td&gt;Biblioteca JavaScript para interfaces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSX&lt;/td&gt;
&lt;td&gt;Sintaxe de marcação utilizada com JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Component&lt;/td&gt;
&lt;td&gt;Unidade reutilizável da interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Props&lt;/td&gt;
&lt;td&gt;Informações recebidas por um componente&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State&lt;/td&gt;
&lt;td&gt;Dados que podem mudar ao longo do tempo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;useState&lt;/td&gt;
&lt;td&gt;Hook para gerenciar estado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;useEffect&lt;/td&gt;
&lt;td&gt;Hook para sincronização externa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conditional Rendering&lt;/td&gt;
&lt;td&gt;Exibição baseada em condições&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keys&lt;/td&gt;
&lt;td&gt;Identificadores de elementos em listas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;Estudar React permite compreender uma abordagem moderna para a construção de interfaces web.&lt;/p&gt;

&lt;p&gt;Os conceitos de componentização, propriedades, gerenciamento de estado e renderização declarativa são fundamentais para desenvolver aplicações organizadas e escaláveis.&lt;/p&gt;

&lt;p&gt;Mais importante do que memorizar a sintaxe é compreender o fluxo de dados, as responsabilidades dos componentes e a maneira como o React reage às mudanças de estado.&lt;/p&gt;

&lt;p&gt;Com esses fundamentos, é possível avançar para assuntos como roteamento, gerenciamento de estado global, custom Hooks, consumo de APIs e otimização de desempenho.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Referências
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://react.dev/" rel="noopener noreferrer"&gt;React — Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://react.dev/learn" rel="noopener noreferrer"&gt;React — Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://react.dev/reference/react/hooks" rel="noopener noreferrer"&gt;React — Built-in Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vite.dev/guide/" rel="noopener noreferrer"&gt;Vite — Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;dev.study — Anotações e estudos sobre desenvolvimento de software. ✨&lt;/em&gt;&lt;/p&gt;

</description>
      <category>study</category>
      <category>react</category>
    </item>
    <item>
      <title>🐧 dev.curiosity #01 - A história por trás do Ubuntu</title>
      <dc:creator>Pri</dc:creator>
      <pubDate>Fri, 16 Oct 2026 22:43:59 +0000</pubDate>
      <link>https://dev.to/pricilaoliveirarocha/devcuriosity-01-a-historia-por-tras-do-ubuntu-eg1</link>
      <guid>https://dev.to/pricilaoliveirarocha/devcuriosity-01-a-historia-por-tras-do-ubuntu-eg1</guid>
      <description>&lt;p&gt;Você já parou para pensar de onde vêm os nomes das tecnologias que usamos todos os dias?&lt;/p&gt;

&lt;p&gt;Sempre gostei de descobrir essas pequenas histórias e foi daí que surgiu o &lt;strong&gt;dev.curiosity&lt;/strong&gt;, uma série para compartilhar curiosidades, origens e detalhes do universo dev que vão além do código. 🌷&lt;/p&gt;

&lt;p&gt;Para a primeira edição, escolhi o Ubuntu. E o mais interessante é que sua história começa muito antes da tecnologia!&lt;/p&gt;

&lt;h2&gt;
  
  
  Muito além de um nome
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft63k81ckcfv4f8utzbhp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft63k81ckcfv4f8utzbhp.png" alt="Logotipo do Ubuntu com o símbolo Circle of Friends em branco sobre fundo laranja, acompanhado do nome Ubuntu" width="728" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A palavra &lt;strong&gt;Ubuntu&lt;/strong&gt; está ligada a uma filosofia africana que valoriza a humanidade, a coletividade e a importância das nossas conexões.&lt;/p&gt;

&lt;p&gt;Uma das formas mais conhecidas de expressar essa ideia é:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Eu sou porque nós somos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Achei interessante como esse conceito se aproxima do universo &lt;em&gt;open source&lt;/em&gt;, onde desenvolvedores compartilham conhecimento e colaboram na construção de software.&lt;/p&gt;

&lt;p&gt;E essa relação não é por acaso: a filosofia também inspirou os valores e a identidade do próprio Ubuntu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mas como surgiu o sistema?
&lt;/h2&gt;

&lt;p&gt;Em 2004, &lt;strong&gt;Mark Shuttleworth&lt;/strong&gt; e uma equipe de desenvolvedores começaram a construir uma distribuição Linux gratuita, acessível e mais simples de utilizar.&lt;/p&gt;

&lt;p&gt;O Ubuntu nasceu a partir do &lt;strong&gt;Debian&lt;/strong&gt;, aproveitando tecnologias como o formato de pacotes &lt;code&gt;.deb&lt;/code&gt; e o &lt;strong&gt;APT (Advanced Package Tool)&lt;/strong&gt;, utilizado para instalar, atualizar e gerenciar softwares por meio de repositórios.&lt;/p&gt;

&lt;p&gt;Sua primeira versão, o &lt;strong&gt;Ubuntu 4.10&lt;/strong&gt;, foi anunciada em outubro de 2004 e recebeu um apelido curioso: &lt;em&gt;Warty Warthog&lt;/em&gt;, algo como "javali verrugoso".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fowbl6chsosl9ji4p89gv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fowbl6chsosl9ji4p89gv.png" alt="Interface antiga do Ubuntu com ambiente gráfico GNOME, papel de parede marrom e menus de configuração do sistema abertos" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desde o início, o projeto também adotou um ciclo de lançamentos aproximadamente a cada seis meses, oferecendo atualizações mais previsíveis.&lt;/p&gt;

&lt;p&gt;Com o passar dos anos, a distribuição evoluiu, incorporando novas tecnologias e mudanças significativas na interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3b4dsf16dvc2dwk9is5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3b4dsf16dvc2dwk9is5.png" alt="Interface moderna do Ubuntu com ambiente GNOME, janelas do gerenciador de arquivos e monitor de recursos sobre fundo roxo" width="743" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas uma coisa permaneceu: a ideia de comunidade presente em sua origem.&lt;/p&gt;

&lt;p&gt;E tem um detalhe que eu não conhecia: até o símbolo do Ubuntu representa essa filosofia!&lt;/p&gt;

&lt;p&gt;Chamado de &lt;strong&gt;Circle of Friends&lt;/strong&gt; (Círculo de Amigos), ele representa três pessoas conectadas, reforçando os valores de colaboração e coletividade que inspiraram seu nome.&lt;/p&gt;




&lt;h3&gt;
  
  
  Fontes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ubuntu.com/about" rel="noopener noreferrer"&gt;https://ubuntu.com/about&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lists.ubuntu.com/archives/ubuntu-users/2004-October/007536.html" rel="noopener noreferrer"&gt;https://lists.ubuntu.com/archives/ubuntu-users/2004-October/007536.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.debian.org/doc/manuals/debian-reference/ch02.en.html" rel="noopener noreferrer"&gt;https://www.debian.org/doc/manuals/debian-reference/ch02.en.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>curiosity</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>dev.study #01 - Learning NumPy, Arrays &amp; Boolean Indexing</title>
      <dc:creator>Pri</dc:creator>
      <pubDate>Fri, 09 Oct 2026 01:18:28 +0000</pubDate>
      <link>https://dev.to/pricilaoliveirarocha/learning-numpy-arrays-boolean-indexing-56ec</link>
      <guid>https://dev.to/pricilaoliveirarocha/learning-numpy-arrays-boolean-indexing-56ec</guid>
      <description>&lt;p&gt;I'm currently participating in &lt;strong&gt;GCI World 2026&lt;/strong&gt;, a Data Science program offered by the University of Tokyo's Matsuo-Iwasawa Laboratory.&lt;/p&gt;

&lt;p&gt;Coming from a PHP development background, exploring Python for Data Science has been a new and exciting experience!&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned this week
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NumPy Arrays&lt;/strong&gt; — Performing mathematical operations efficiently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indexing &amp;amp; Slicing&lt;/strong&gt; — Accessing specific elements and ranges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multidimensional Arrays&lt;/strong&gt; — Working with rows, columns, and matrices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boolean Indexing&lt;/strong&gt; — Filtering arrays using conditions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A little code snippet
&lt;/h3&gt;

&lt;p&gt;One of our homework exercises was to filter an array and return only odd numbers divisible by 5.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;homework&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple, but a great way to understand how Boolean indexing works without writing loops!&lt;/p&gt;

&lt;h3&gt;
  
  
  Learning beyond Python 🌎
&lt;/h3&gt;

&lt;p&gt;Another challenge? &lt;strong&gt;The entire program is taught in English!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a Brazilian developer, I'm not only learning Data Science but also improving my technical English and connecting with people from different countries.&lt;/p&gt;

&lt;p&gt;Sometimes it's challenging, but that's exactly what makes this experience worthwhile.&lt;/p&gt;

&lt;p&gt;Python, Data Science, and English — all at once.&lt;/p&gt;

&lt;p&gt;One lecture at a time. 💗&lt;/p&gt;

&lt;p&gt;Thank you, GCI World, for this opportunity!&lt;/p&gt;

</description>
      <category>python</category>
      <category>study</category>
    </item>
    <item>
      <title>dev.log #01 - Bem vindo(a) 🌸</title>
      <dc:creator>Pri</dc:creator>
      <pubDate>Mon, 05 Oct 2026 22:29:46 +0000</pubDate>
      <link>https://dev.to/pricilaoliveirarocha/welcome-bem-vindoa-13a4</link>
      <guid>https://dev.to/pricilaoliveirarocha/welcome-bem-vindoa-13a4</guid>
      <description>&lt;p&gt;Oi! Sou a Pricila, do Rio de Janeiro. 💖&lt;/p&gt;

&lt;p&gt;Estou tentando melhorar meu inglês e aprofundar meus conhecimentos em programação. Atualmente, trabalho com PHP, mas quero construir uma base sólida em Python para alçar voos maiores, hahaha.&lt;/p&gt;

&lt;p&gt;Não vejo tanto futuro no PHP, mas nunca diga nunca, né? Continuo estudando o coitado em paralelo. 😅&lt;/p&gt;

&lt;p&gt;Com tanta IA fazendo praticamente tudo, confesso que às vezes fico perdida sobre o que estudar e até um pouco desanimada.&lt;/p&gt;

&lt;p&gt;Resolvi documentar meus aprendizados por aqui, misturando português e inglês, porque ainda estou aprendendo. #sad&lt;/p&gt;

&lt;h2&gt;
  
  
  organizando minhas postagens:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.log&lt;/code&gt; — Registros de projetos, experiências práticas, desenvolvimento de funcionalidades e aprendizados do dia a dia como dev.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.study&lt;/code&gt; — Anotações de estudos, resumos de aulas, conceitos técnicos e conteúdos que estou aprendendo ou revisando.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.til&lt;/code&gt; — Pequenas descobertas, comandos úteis, atalhos e coisas que aprendi por acaso. (&lt;em&gt;Today I Learned&lt;/em&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.thoughts&lt;/code&gt; — Reflexões, opiniões e questionamentos sobre programação, tecnologia e carreira.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.unfiltered&lt;/code&gt; — Desabafos sinceros, frustrações e pensamentos sem muito filtro sobre a vida de dev.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.reality&lt;/code&gt; — Desafios reais do desenvolvimento, dificuldades técnicas, mercado de trabalho e situações que nem sempre aparecem nos tutoriais.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.diary&lt;/code&gt; — Relatos mais pessoais sobre minha evolução, conquistas, inseguranças e experiências ao longo da jornada.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.offtopic&lt;/code&gt; — Assuntos aleatórios, interesses pessoais e conversas que não precisam necessariamente envolver programação.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dev.curiosity&lt;/code&gt; — Assuntos intrigantes e curiosidades da área tech.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>log</category>
      <category>pattern</category>
    </item>
  </channel>
</rss>
