<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    
    
    
    <id>https://thekassboy.com.br/tech</id>
    <title>The Kass Boy - Tech</title>
    <link href="https://thekassboy.com.br/tech" />
    <updated>2024-04-05T14:39:42.000Z</updated>
    <entry>

        <id>https://thekassboy.com.br/tech/2024/04/este-blog-agora-funciona-sem-javascript/</id>
        <title>Este blog agora funciona sem JavaScript</title>
        <link rel="alternate" href="https://thekassboy.com.br/tech/2024/04/este-blog-agora-funciona-sem-javascript/"/>
        <content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;No leiaute deste blog existiam 3 arquivos JavaScript que eram carregados basicamente para deixar o menu colapsado em telas pequenas. Eu removi esses arquivos e adotei uma solução muito mais simples e inteligente que é a de nunca esconder o menu. Agora, em telas pequenas, ele é exibido por completo abaixo do título do blog.&lt;/p&gt;
&lt;p&gt;Porém, existem duas exceções. A primeira é para as publicações da série de &lt;a href=&#34;/sexta&#34;&gt;Músicas Aleatórias de #sexta&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:1&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;Série “Músicas Aleatórias de #sexta”.
&#34;&gt;1&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;, pois elas possuem vídeos incorporados de outros sites que podem carregar scripts externos. Mas o link para os vídeos sempre está disponível na publicação, portanto é possível assistir diretamente no site original. A segunda é que para navegadores antigos (mais especificamente Internet Explorer 8 ou inferior), onde o JavaScript ainda é necessário por conta da incompatibilidade com funcionalidades do HTML5 e CSS3.&lt;/p&gt;
&lt;p&gt;Outra semiexceção é que duas fontes personalizadas que são usadas no leiaute, e estas podem ser bloqueadas caso exista alguma extensão como o &lt;a href=&#34;https://noscript.net/&#34;&gt;NoScript&lt;/a&gt;&lt;sup id=&#34;fnref:2&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:2&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;Link: https://noscript.net (em inglês).
&#34;&gt;2&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; instalada no navegador. Caso isso aconteça, são carregadas fontes padrão do sistema, então, novamente, sem muitos problemas.&lt;/p&gt;
&lt;p&gt;Eu também troquei o Bootstrap para uma versão hospedada no próprio domínio, assim não é necessário acessar CDNs externos. Em algum momento vou tentar remover este também e criar estilos totalmente personalizados, mas esse dia não será hoje.&lt;/p&gt;
&lt;div id=&#34;footnotes&#34;&gt;&lt;hr&gt;&lt;div id=&#34;footnotelist&#34;&gt;&lt;ol style=&#34;list-style: none; padding-left: 0; margin-left: 40px&#34;&gt;&lt;li id=&#34;fn:1&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;1.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;Série &lt;a href=&#34;/sexta&#34;&gt;“Músicas Aleatórias de #sexta”&lt;/a&gt;.&lt;a href=&#34;#fnref:1&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li id=&#34;fn:2&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;2.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;Link: &lt;a href=&#34;https://noscript.net/&#34;&gt;https://noscript.net&lt;/a&gt; (em inglês).&lt;a href=&#34;#fnref:2&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</content>
        <updated>2024-04-05T14:39:42.000Z</updated>
    </entry>
    <entry>

        <id>https://thekassboy.com.br/tech/2023/09/lista-de-dados-c-c-com-x-macros/</id>
        <title>Lista de dados em C/C++ com X macros</title>
        <link rel="alternate" href="https://thekassboy.com.br/tech/2023/09/lista-de-dados-c-c-com-x-macros/"/>
        <content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;Recentemente enquanto assistia a um vídeo do &lt;a href=&#34;https://www.youtube.com/watch?v=PgDqBZFir1A&#34;&gt;Tsoding&lt;/a&gt;(em inglês) fui apresentado a uma técnica extremamente útil e relativamente simples para geração código a partir de uma lista de dados. A técnica chamada de “X macro” utiliza o pré-processador do C e C++ para criar uma lista de macros a ser definida no momento da utilização. Por exemplo, suponha-se que seja necessária uma lista fixa de arquivos que precisam ser utilizados pela aplicação. Inicialmente cria-se uma macro que define uma lista de utilizações de uma outra macro &lt;code&gt;X&lt;/code&gt; que ainda não foi definida:&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; LISTA_ARQUIVOS                                        \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo1.txt&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo2.txt&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo3.txt&#34;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;Esta macro não pode ser utilizada enquanto a macro &lt;code&gt;X&lt;/code&gt; não for definida. A definição fica a cargo da utilização em um contexto específico. O nome &lt;code&gt;X&lt;/code&gt; é só uma convenção, pode ser qualquer coisa desde que seja o mesmo nome para todos os valores definidos.&lt;/p&gt;
&lt;p&gt;O exemplo seguinte imprime os nomes dos arquivos no console:&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(nome) printf(&lt;span class=&#34;hljs-string&#34;&gt;&#34;- &#34;&lt;/span&gt; nome &lt;span class=&#34;hljs-string&#34;&gt;&#34;\n&#34;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;    LISTA_ARQUIVOS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;Na primeira linha é definida uma macro &lt;code&gt;X&lt;/code&gt; que imprime no console uma linha com valor passado precedido de &lt;code&gt;&#34;- &#34;&lt;/code&gt;. A segunda linha expande a macro original substituindo cada linha pelo que foi definido na macro &lt;code&gt;X&lt;/code&gt;. Por último, a macro &lt;code&gt;X&lt;/code&gt; é “desdefinida” para que possa ser utilizada novamente em outro lugar. O código acima gera a seguinte linha:&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;&lt;span class=&#34;hljs-built_in&#34;&gt;printf&lt;/span&gt;(&lt;span class=&#34;hljs-string&#34;&gt;&#34;- &#34;&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo1.txt&#34;&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&#34;\n&#34;&lt;/span&gt;);&lt;br&gt;&lt;span class=&#34;hljs-built_in&#34;&gt;printf&lt;/span&gt;(&lt;span class=&#34;hljs-string&#34;&gt;&#34;- &#34;&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo2.txt&#34;&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&#34;\n&#34;&lt;/span&gt;);&lt;br&gt;&lt;span class=&#34;hljs-built_in&#34;&gt;printf&lt;/span&gt;(&lt;span class=&#34;hljs-string&#34;&gt;&#34;- &#34;&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo3.txt&#34;&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&#34;\n&#34;&lt;/span&gt;);&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;O código todo é gerado na mesma linha, mas o ponto e vírgula garante que as expressões sejam interpretadas corretamente. Segue o exemplo completo:&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; LISTA_ARQUIVOS                                        \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo1.txt&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo2.txt&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo3.txt&#34;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;hljs-title function_&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;()&lt;/span&gt; {&lt;br&gt;    &lt;span class=&#34;hljs-built_in&#34;&gt;printf&lt;/span&gt;(&lt;span class=&#34;hljs-string&#34;&gt;&#34;Arquivos a serem carregados:\n&#34;&lt;/span&gt;);&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(nome) printf(&lt;span class=&#34;hljs-string&#34;&gt;&#34;- &#34;&lt;/span&gt; nome &lt;span class=&#34;hljs-string&#34;&gt;&#34;\n&#34;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;    LISTA_ARQUIVOS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-keyword&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;hljs-number&#34;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;que imprime isso no console:&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;Arquivos a serem carregados:&lt;br&gt;- C:\\Users\juninho-pimpao\Documents\arquivo1.txt&lt;br&gt;- C:\\Users\juninho-pimpao\Documents\arquivo2.txt&lt;br&gt;- C:\\Users\juninho-pimpao\Documents\arquivo3.txt&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;O que pode ser feito fica a cargo da imaginação do programador e dos limites do pré-processador. O código a seguir complementa o anterior imprimindo também o conteúdo dos arquivos:&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; LISTA_ARQUIVOS                                        \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo1.txt&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo2.txt&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(&lt;span class=&#34;hljs-string&#34;&gt;&#34;C:\\\\Users\\juninho-pimpao\\Documents\\arquivo3.txt&#34;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;hljs-title function_&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;()&lt;/span&gt; {&lt;br&gt;    &lt;span class=&#34;hljs-built_in&#34;&gt;printf&lt;/span&gt;(&lt;span class=&#34;hljs-string&#34;&gt;&#34;Arquivos a serem carregados:\n&#34;&lt;/span&gt;);&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(nome) printf(&lt;span class=&#34;hljs-string&#34;&gt;&#34;- &#34;&lt;/span&gt; nome &lt;span class=&#34;hljs-string&#34;&gt;&#34;\n&#34;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;    LISTA_ARQUIVOS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-built_in&#34;&gt;printf&lt;/span&gt;(&lt;span class=&#34;hljs-string&#34;&gt;&#34;\nConteúdo dos arquivos\n&#34;&lt;/span&gt;);&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(nome)                                                   \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    {                                                             \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;        printf(&lt;span class=&#34;hljs-string&#34;&gt;&#34;***************************\n&#34;&lt;/span&gt;);                  \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;        printf(nome &lt;span class=&#34;hljs-string&#34;&gt;&#34;\n&#34;&lt;/span&gt;);                                        \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;        FILE* arquivo = fopen(nome, &lt;span class=&#34;hljs-string&#34;&gt;&#34;r&#34;&lt;/span&gt;);                         \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;        &lt;span class=&#34;hljs-keyword&#34;&gt;if&lt;/span&gt; (!arquivo) {                                           \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;            printf(&lt;span class=&#34;hljs-string&#34;&gt;&#34;\nArquivo não encontrado!\n&#34;&lt;/span&gt;);                \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;        } &lt;span class=&#34;hljs-keyword&#34;&gt;else&lt;/span&gt; {                                                  \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;            char *conteudo = NULL;                                \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;            size_t tamanho = 0;                                   \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;            while (getline(&amp;amp;conteudo, &amp;amp;tamanho, arquivo) != -1) { \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;                printf(&lt;span class=&#34;hljs-string&#34;&gt;&#34;%s&#34;&lt;/span&gt;, conteudo);                           \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;            }                                                     \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;        }                                                         \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;br&gt;LISTA_ARQUIVOS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-keyword&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;hljs-number&#34;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;Esta técnica é bastante útil para definir recursos (&lt;em&gt;assets&lt;/em&gt;) em um jogo:&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; TEXTURAS                             \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(1, TEXTURA_1, &lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura1.png&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(2, TEXTURA_2, &lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura2.png&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(3, TEXTURA_3, &lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura3.png&#34;&lt;/span&gt;) \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    X(4, TEXTURA_4, &lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura4.png&#34;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(id, nome, caminho) const unsigned int nome##_ID = id;&lt;/span&gt;&lt;br&gt;    TEXTURAS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-class&#34;&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;hljs-title&#34;&gt;Texturas&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(id, nome, caminho) void * nome##_ptr;&lt;/span&gt;&lt;br&gt;    TEXTURAS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;};&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;extern&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * &lt;span class=&#34;hljs-title function_&#34;&gt;carrega_textura&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;(&lt;span class=&#34;hljs-type&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;char&lt;/span&gt; * nome_arquivo)&lt;/span&gt;;&lt;br&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;extern&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;hljs-title function_&#34;&gt;destroi_textura&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;(&lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * textura)&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;hljs-title function_&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;()&lt;/span&gt; {&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(id, nome, caminho) void * nome##_ptr = carrega_textura(caminho);&lt;/span&gt;&lt;br&gt;    TEXTURAS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-class&#34;&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;hljs-title&#34;&gt;Texturas&lt;/span&gt; &lt;span class=&#34;hljs-title&#34;&gt;texturas&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(id, nome, caminho) texturas.nome##_ptr = nome##_ptr;&lt;/span&gt;&lt;br&gt;    TEXTURAS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;define&lt;/span&gt; X(id, nome, caminho)     \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    destroi_textura(nome##_ptr); \&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;    texturas.nome##_ptr = NULL;&lt;/span&gt;&lt;br&gt;&lt;br&gt;    TEXTURAS&lt;br&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;undef&lt;/span&gt; X&lt;/span&gt;&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-keyword&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;hljs-number&#34;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;que vai gerar o seguinte código (que foi formatado para facilitar a leitura):&lt;/p&gt;
&lt;figure class=&#34;highlight c&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;code&#34;&gt;&lt;pre&gt;&lt;code class=&#34;hljs C&#34;&gt;&lt;span class=&#34;hljs-meta&#34;&gt;#&lt;span class=&#34;hljs-keyword&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;hljs-string&#34;&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;unsigned&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; TEXTURA_1_ID = &lt;span class=&#34;hljs-number&#34;&gt;1&lt;/span&gt;;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;unsigned&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; TEXTURA_2_ID = &lt;span class=&#34;hljs-number&#34;&gt;2&lt;/span&gt;;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;unsigned&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; TEXTURA_3_ID = &lt;span class=&#34;hljs-number&#34;&gt;3&lt;/span&gt;;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;unsigned&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; TEXTURA_4_ID = &lt;span class=&#34;hljs-number&#34;&gt;4&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-class&#34;&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;hljs-title&#34;&gt;Texturas&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_1_ptr;&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_2_ptr;&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_3_ptr;&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_4_ptr;&lt;br&gt;};&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;extern&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * &lt;span class=&#34;hljs-title function_&#34;&gt;carrega_textura&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;(&lt;span class=&#34;hljs-type&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;char&lt;/span&gt; * nome_arquivo)&lt;/span&gt;;&lt;br&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;extern&lt;/span&gt; &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;hljs-title function_&#34;&gt;destroi_textura&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;(&lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * textura)&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span class=&#34;hljs-type&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;hljs-title function_&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;hljs-params&#34;&gt;()&lt;/span&gt; {&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_1_ptr = carrega_textura(&lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura1.png&#34;&lt;/span&gt;);&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_2_ptr = carrega_textura(&lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura2.png&#34;&lt;/span&gt;);&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_3_ptr = carrega_textura(&lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura3.png&#34;&lt;/span&gt;);&lt;br&gt;    &lt;span class=&#34;hljs-type&#34;&gt;void&lt;/span&gt; * TEXTURA_4_ptr = carrega_textura(&lt;span class=&#34;hljs-string&#34;&gt;&#34;imagens\\textura4.png&#34;&lt;/span&gt;);&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-class&#34;&gt;&lt;span class=&#34;hljs-keyword&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;hljs-title&#34;&gt;Texturas&lt;/span&gt; &lt;span class=&#34;hljs-title&#34;&gt;texturas&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;    texturas.TEXTURA_1_ptr = TEXTURA_1_ptr;&lt;br&gt;    texturas.TEXTURA_2_ptr = TEXTURA_2_ptr;&lt;br&gt;    texturas.TEXTURA_3_ptr = TEXTURA_3_ptr;&lt;br&gt;    texturas.TEXTURA_4_ptr = TEXTURA_4_ptr;&lt;br&gt;&lt;br&gt;    destroi_textura(TEXTURA_1_ptr);&lt;br&gt;    texturas.TEXTURA_1_ptr = &lt;span class=&#34;hljs-literal&#34;&gt;NULL&lt;/span&gt;;&lt;br&gt;&lt;br&gt;    destroi_textura(TEXTURA_2_ptr);&lt;br&gt;    texturas.TEXTURA_2_ptr = &lt;span class=&#34;hljs-literal&#34;&gt;NULL&lt;/span&gt;;&lt;br&gt;&lt;br&gt;    destroi_textura(TEXTURA_3_ptr);&lt;br&gt;    texturas.TEXTURA_3_ptr = &lt;span class=&#34;hljs-literal&#34;&gt;NULL&lt;/span&gt;;&lt;br&gt;&lt;br&gt;    destroi_textura(TEXTURA_4_ptr);&lt;br&gt;    texturas.TEXTURA_4_ptr = &lt;span class=&#34;hljs-literal&#34;&gt;NULL&lt;/span&gt;;&lt;br&gt;&lt;br&gt;    &lt;span class=&#34;hljs-keyword&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;hljs-number&#34;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;Algumas observações:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;O código acima não vai compilar pois as funções &lt;code&gt;carrega_textura&lt;/code&gt; e &lt;code&gt;destroi_textura&lt;/code&gt; não foram definidas.&lt;/li&gt;
&lt;li&gt;O pré-processador também vai substituir as chamadas as utilizações da macro &lt;code&gt;NULL&lt;/code&gt; e &lt;code&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/code&gt;, porém estas alterações foram omitidas para melhoras a legibilidade.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No exemplo a quantidade código gerado é semelhante que à utilizada na geração, mas é preciso lembrar que em uma aplicação real a quantidade de arquivos a ser carregada provavelmente seria muito maior. Além disso, a quantidade de código duplicado é reduzida, reduzindo também a possibilidade de erros de digitação e de “copia e cola”.&lt;/p&gt;
&lt;/body&gt;&lt;/html&gt;</content>
        <updated>2023-09-18T12:41:34.000Z</updated>
    </entry>
    <entry>

        <id>https://thekassboy.com.br/tech/2023/09/teste/</id>
        <title>Teste</title>
        <link rel="alternate" href="https://thekassboy.com.br/tech/2023/09/teste/"/>
        <content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;A palavra “teste” vem originalmente do latim &lt;em&gt;testum&lt;/em&gt;&lt;sup id=&#34;fnref:1&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:1&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;https://www.etymonline.com/word/test (em inglês)
&#34;&gt;1&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; (&lt;em&gt;-a&lt;/em&gt;, &lt;em&gt;-ae&lt;/em&gt;)&lt;sup id=&#34;fnref:2&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:2&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;https://www.etymonline.com/word/tete (em inglês)
&#34;&gt;2&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; e significa “vaso de terra”, se referindo ao processo para determinar a pureza de metais os derretendo em vasos de barro cozido. Este processo estava relacionado à ideia de “verificar se está adequado”. Curiosamente, a palavra “testa” tem origem no mesmo termo e era utilizada de modo jocoso para descrever o “vaso da cabeça”. O termo em latim, por sua vez, está relacionada ao radical *&lt;em&gt;téks-&lt;/em&gt;&lt;sup id=&#34;fnref:3&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:3&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;https://www.etymonline.com/word/*teks- (em inglês)
&#34;&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; do proto-indo-europeu, que significa “tecer” ou “fabricar” e está presente em palavras como “tecnologia”&lt;sup id=&#34;fnref:4&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:4&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;https://etimologia.com.br/tecnologia
&#34;&gt;4&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;, “arquitetura”&lt;sup id=&#34;fnref:5&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:5&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;https://etimologia.com.br/arquitetura/
&#34;&gt;5&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;, “tecido”&lt;sup id=&#34;fnref:6&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:6&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;https://www.dicionarioetimologico.com.br/tecido/
&#34;&gt;6&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; e “texto”&lt;sup id=&#34;fnref:7&#34; class=&#34;location-target&#34;&gt;&lt;a href=&#34;#fn:7&#34; rel=&#34;footnote&#34;&gt;&lt;span class=&#34;hint--top hint--info hint--medium hint--rounded hint--no-animate&#34; aria-label=&#34;https://www.dicionarioetimologico.com.br/texto/
&#34;&gt;7&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;div id=&#34;footnotes&#34;&gt;&lt;hr&gt;&lt;div id=&#34;footnotelist&#34;&gt;&lt;ol style=&#34;list-style: none; padding-left: 0; margin-left: 40px&#34;&gt;&lt;li id=&#34;fn:1&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;1.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://www.etymonline.com/word/test&#34;&gt;https://www.etymonline.com/word/test&lt;/a&gt; (em inglês)&lt;a href=&#34;#fnref:1&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li id=&#34;fn:2&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;2.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://www.etymonline.com/word/tete&#34;&gt;https://www.etymonline.com/word/tete&lt;/a&gt; (em inglês)&lt;a href=&#34;#fnref:2&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li id=&#34;fn:3&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;3.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://www.etymonline.com/word/*teks-&#34;&gt;https://www.etymonline.com/word/*teks-&lt;/a&gt; (em inglês)&lt;a href=&#34;#fnref:3&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li id=&#34;fn:4&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;4.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://etimologia.com.br/tecnologia&#34;&gt;https://etimologia.com.br/tecnologia&lt;/a&gt;&lt;a href=&#34;#fnref:4&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li id=&#34;fn:5&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;5.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://etimologia.com.br/arquitetura/&#34;&gt;https://etimologia.com.br/arquitetura/&lt;/a&gt;&lt;a href=&#34;#fnref:5&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li id=&#34;fn:6&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;6.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://www.dicionarioetimologico.com.br/tecido/&#34;&gt;https://www.dicionarioetimologico.com.br/tecido/&lt;/a&gt;&lt;a href=&#34;#fnref:6&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li id=&#34;fn:7&#34;&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px&#34;&gt;7.&lt;/span&gt;&lt;span style=&#34;display: inline-block; vertical-align: top; margin-left: 10px;&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://www.dicionarioetimologico.com.br/texto/&#34;&gt;https://www.dicionarioetimologico.com.br/texto/&lt;/a&gt;&lt;a href=&#34;#fnref:7&#34; rev=&#34;footnote&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</content>
        <updated>2023-09-12T13:12:00.000Z</updated>
    </entry>
</feed>
