<?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: Guilherme Sousa</title>
    <description>The latest articles on DEV Community by Guilherme Sousa (@guilherssousa).</description>
    <link>https://dev.to/guilherssousa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1123576%2Ff52d391c-30bb-4f3f-95e4-066b12f03c8a.jpeg</url>
      <title>DEV Community: Guilherme Sousa</title>
      <link>https://dev.to/guilherssousa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guilherssousa"/>
    <language>en</language>
    <item>
      <title>A melhor Pokédex já desenvolvida: Introdução</title>
      <dc:creator>Guilherme Sousa</dc:creator>
      <pubDate>Thu, 02 Nov 2023 02:59:12 +0000</pubDate>
      <link>https://dev.to/guilherssousa/a-melhor-pokedex-ja-desenvolvida-01-22l3</link>
      <guid>https://dev.to/guilherssousa/a-melhor-pokedex-ja-desenvolvida-01-22l3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL:DR:&lt;br&gt;
Esse é o primeiro de uma série de posts sobre o processo de desenvolvimento de uma Pokédex funcional que interage com os jogos. Você pode ver um preview do &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7099558659986194432/" rel="noopener noreferrer"&gt;app funcionando no meu LinkedIn&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A Pokédex é um ótimo projeto para iniciantes aprenderem sobre componentização, requisições a API e etc., no entanto, esse projeto costuma ser associado com um trabalho mais simples, de caráter apenas introdutório e sem profundidade.&lt;/p&gt;

&lt;p&gt;Eu percebi que em quase 5 anos como programador e 3 atuando profissionalmente na área, eu nunca tinha feito o bendito projeto da Pokédex, mesmo sendo viciado nos monstrinhos japoneses.&lt;/p&gt;

&lt;p&gt;Como fazer esse projeto não fazia mais sentido pra mim nessa altura do jogo, decidi subir a barra do projeto e me desafiei a fazer uma &lt;strong&gt;Pokédex que seja realmente útil&lt;/strong&gt; para quem joga Pokémon.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que será feito
&lt;/h2&gt;

&lt;p&gt;Um dos objetivos pós-jogo em Pokémon é completar a Pokédex. Apesar de parecer bastante intuitivo, capturar todos eles é uma missão &lt;strong&gt;extremamente complicada&lt;/strong&gt; que demanda tempo, planejamento e até dinheiro. Você precisa jogar mais de um jogo da mesma geração pra poder completar uma Dex local.&lt;/p&gt;

&lt;p&gt;Como esse esforço acaba resultando em horas de jogatina e saves diferentes para conseguir os bichinhos, a ideia é que possamos fazer uma aplicação onde conseguiremos centralizar todos os registros de captura em todos os jogos.&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%2Fjd0882zzm03in0px7u2k.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%2Fjd0882zzm03in0px7u2k.png" alt="Screenshot da aplicação real" width="759" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para começar, dois projetos serão desenvolvidos e documentados nesses posts: &lt;strong&gt;Uma biblioteca para ler e interpretar arquivos de progresso dos jogos&lt;/strong&gt; e um Frontend para conseguir exibir e agregar as informações para o usuário.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que você pode aprender
&lt;/h2&gt;

&lt;p&gt;Por se tratar de um projeto bastante diferente do que a maioria das pessoas acaba fazendo por tempo livre, você pode acabar aprendendo muita coisa diferente por aqui, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conceitos de Engenharia Reversa&lt;/li&gt;
&lt;li&gt;Como jogos da década de 90 armazenam dados&lt;/li&gt;
&lt;li&gt;Desenvolvimento de bibliotecas Javascript, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  O próximo passo...
&lt;/h2&gt;

&lt;p&gt;No próximo post, quero começar a dar uma introdução no formato usado para rastrear os Pokémons capturados nos jogos originais de Kanto, Pokémon Red, Blue, lançados originalmente em 1998, entender como o jogo verifica a integridade do progresso e fazer um espelho simples da Pokédex do jogo.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Entendendo Extremidade Computacional (endianness) usando uma Coxinha</title>
      <dc:creator>Guilherme Sousa</dc:creator>
      <pubDate>Thu, 20 Jul 2023 16:06:55 +0000</pubDate>
      <link>https://dev.to/guilherssousa/entendendo-extremidade-computacional-endianness-usando-uma-coxinha-49ba</link>
      <guid>https://dev.to/guilherssousa/entendendo-extremidade-computacional-endianness-usando-uma-coxinha-49ba</guid>
      <description>&lt;p&gt;Se você gosta de usar redes sociais, você provavelmente já se deparou com a questão: Qual é o jeito certo de se comer uma coxinha? Pelo lado de baixo? Pela ponta? Até os &lt;a href="https://www.otempo.com.br/gastro/polemica-existe-jeito-correto-de-comer-coxinha-1.2212210" rel="noopener noreferrer"&gt;candidatos ao Prêmio Bom Gourmet 2018 de Melhor Coxinha de Curitiba&lt;/a&gt; já opinaram sobre esse assunto.&lt;/p&gt;

&lt;p&gt;Esse mesmo dilema acontece com outras coisas, como a forma de comer um ovo cozido, organizar datas corretamente e, não menos importante, isso também acontece em Arquitetura de Computadores. Então, vamos hoje entender como computadores registram bits usando esse polêmico questionamento brasileiro!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Esse artigo foi escrito para o meu perfil do site do lado, mas você também pode ler no meu site pessoal: &lt;a href="https://guilherssousa.dev" rel="noopener noreferrer"&gt;guilherssousa.dev&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Origem do termo &lt;em&gt;Endianness&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;O termo &lt;strong&gt;&lt;em&gt;Endianness&lt;/em&gt;&lt;/strong&gt; é inspirado do livro &lt;strong&gt;As Viagens de Gulliver&lt;/strong&gt;, onde em uma das histórias, conta que houve uma guerra civil entre os moradores da vila onde os moradores que preferiam quebrar os ovos cozidos pelo lado maior enfrentaram os que preferiam quebrar pelo lado menor.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fonte: &lt;a href="https://pt.wikipedia.org/wiki/Extremidade_%28ordena%C3%A7%C3%A3o%29" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Peso de Coxinha e Peso Numérico: MSB e LSB
&lt;/h2&gt;

&lt;p&gt;Se eu mostrar uma foto de uma coxinha para alguém e perguntar: "Qual é o lado mais pesado?", quase que certamente a pessoa responderá que o lado mais pesado é a base da coxinha, pois tem mais recheio dentro do que na ponta.&lt;/p&gt;

&lt;p&gt;Isso também acontece com números, por exemplo, se eu mostro o número 3.589, podemos observar que o número mais "pesado" é o 3, pois representa três milhares. Logo, o número mais "leve" ou menos pesado é o 9, pois só representa nove unidades.&lt;/p&gt;

&lt;p&gt;Quando um computador registra os dados a partir do Byte mais pesado (ou mais significativo), então ele funciona na ordem &lt;strong&gt;&lt;em&gt;Big-endian&lt;/em&gt;&lt;/strong&gt;. Quando ele começa pelo mais leve (ou menos significativo), então ele funciona na ordem &lt;strong&gt;&lt;em&gt;Little-endian&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exemplo prático
&lt;/h3&gt;

&lt;p&gt;Vamos agora imaginar dois computadores com boca &lt;em&gt;(sic)&lt;/em&gt;: Um deles vai comer a coxinha pelo lado maior e o outro pela ponta.&lt;/p&gt;

&lt;p&gt;Quando o primeiro computador recebe a coxinha a partir do lado maior, ele é um &lt;strong&gt;&lt;em&gt;Big-endian&lt;/em&gt;&lt;/strong&gt;, porque ele vai registrando a memória (digerindo a coxinha) a partir do MSB (Bit mais significante, ou a parte mais recheada da coxinha).&lt;/p&gt;

&lt;p&gt;Agora quando o segundo computador recebe a coxinha a partir da ponta, ele é um &lt;strong&gt;&lt;em&gt;Little-endian&lt;/em&gt;&lt;/strong&gt;, pois ele vai endereçando os dados a partir do LSB (Bit menos significante, ou a ponta da coxinha).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F2CwaU8P.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F2CwaU8P.png" alt="Tipos de ordenação de bytes. Fonte: Wikipedia"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Outros formas
&lt;/h3&gt;

&lt;p&gt;Existem também outras formas de registrar, usadas por alguns computadores. Por exemplo, existe também o &lt;strong&gt;&lt;em&gt;middle-endian&lt;/em&gt;&lt;/strong&gt;, onde o bit cujo a grandeza é média será escrito primeiro. Uma analogia para essa representação é o formato de datas usado nos Estados Unidos: MM/DD/AAAA. Enquanto no Brasil, usamos o formato &lt;strong&gt;&lt;em&gt;little-endian&lt;/em&gt;&lt;/strong&gt;, onde a ordem é DD/MM/AAAA.&lt;/p&gt;

&lt;h2&gt;
  
  
  E qual é o jeito certo de ordenar?
&lt;/h2&gt;

&lt;p&gt;Na realidade, assim como não existe um jeito certo de se comer uma coxinha, também não existe um jeito certo de ordenar os dados. Cada pessoa vai ter sua forma preferida de coxinha, assim como cada computador vai ter seu formato de ordenar esses dados.&lt;/p&gt;

&lt;p&gt;Por exemplo, os processadores x86 da Intel, AMD e Z80 são os mais famosos que usam o formato &lt;strong&gt;&lt;em&gt;little-endian&lt;/em&gt;&lt;/strong&gt;, ordenando a partir do byte menos expressivo. Já pelo outro lado, os famosos 6800 e 68000 da Motorola usam o formato &lt;strong&gt;&lt;em&gt;big-endian&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Enquanto estudava sobre o tópico, acabei achando vídeos muito explicativos e fáceis de entender sobre o assunto, porém em Inglês. Então decidi compilar o meu entendimento sobre o assunto e escrever um artigo em português, apenas alterando a analogia em prol da adaptação local para melhor entendimento. :)&lt;/p&gt;

&lt;p&gt;Eu percebi que é muito mais fácil entender conceitos de computação quando você faz analogias desses conteúdos com problemas do cotidiano. Isso faz você absorver melhor o aprendizado e as vezes até traz uma solução inesperada para um problema.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>braziliandevs</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
