<?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: Léo Herte de Moraes</title>
    <description>The latest articles on DEV Community by Léo Herte de Moraes (@leomoraes).</description>
    <link>https://dev.to/leomoraes</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%2F689751%2F9af2e975-e155-4392-a615-7dccb1e7e7a9.jpeg</url>
      <title>DEV Community: Léo Herte de Moraes</title>
      <link>https://dev.to/leomoraes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leomoraes"/>
    <language>en</language>
    <item>
      <title>Versões do Wordle - Descompressão DEV</title>
      <dc:creator>Léo Herte de Moraes</dc:creator>
      <pubDate>Tue, 25 Jan 2022 19:32:57 +0000</pubDate>
      <link>https://dev.to/leomoraes/descompressao-dev-1ng6</link>
      <guid>https://dev.to/leomoraes/descompressao-dev-1ng6</guid>
      <description>&lt;h2&gt;
  
  
  Saiba mais sobre a febre do jogo de palavras
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://g1.globo.com/pop-arte/games/noticia/2022/01/19/wordle-e-termo-historia-de-amor-se-transformou-em-jogo-de-palavras-que-e-sensacao-em-2022.ghtml"&gt;Pulo de 90 a 2 Mi de jogadores&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Uma palavra por dia (nem todos!)
&lt;/h2&gt;

&lt;p&gt;Múltiplo idiomas&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wordle.wekele.com/"&gt;https://wordle.wekele.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inglês&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.powerlanguage.co.uk/wordle/"&gt;https://www.powerlanguage.co.uk/wordle/&lt;/a&gt; (OFFICIAL!!!)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mywordle.me/"&gt;https://mywordle.me/&lt;/a&gt; (informe a sua palavra e compartilhe)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.lewdlegame.com/"&gt;https://www.lewdlegame.com/&lt;/a&gt; (com palavrões)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sweardle.glitch.me"&gt;https://sweardle.glitch.me&lt;/a&gt; (4 letras, só palavrão)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://octokatherine.github.io/word-master/"&gt;https://octokatherine.github.io/word-master/&lt;/a&gt; (pode repetir)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://edjefferson.com/letterle/"&gt;https://edjefferson.com/letterle/&lt;/a&gt; (uma letra, sim)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://qntm.org/files/wordle/"&gt;https://qntm.org/files/wordle/&lt;/a&gt; (a palavra muda a cada tentativa)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://queerdle.com"&gt;http://queerdle.com&lt;/a&gt; (pras gay, pras gay!)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://foldr.moe/hello-wordl/"&gt;http://foldr.moe/hello-wordl/&lt;/a&gt; (ilimitado e você escolhe o tamanho)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hellowordl.net/"&gt;https://hellowordl.net/&lt;/a&gt; (configure o tamanho)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rbrignall.github.io/byrdle/"&gt;https://rbrignall.github.io/byrdle/&lt;/a&gt; (música Coral Byrdle?)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.wordleunlimited.com/"&gt;https://www.wordleunlimited.com/&lt;/a&gt; (sem limites)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.nsfwordle.com/"&gt;https://www.nsfwordle.com/&lt;/a&gt; (&lt;a href="https://github.com/hannahcode/wordle"&gt;código-fonte&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Português - Brasil&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.gabtoschi.com/letreco/"&gt;https://www.gabtoschi.com/letreco/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://term.ooo/"&gt;https://term.ooo/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Português - Portugal&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://alcidesfonseca.com/wordlept/"&gt;https://alcidesfonseca.com/wordlept/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Espanhol&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://wordle.danielfrg.com"&gt;https://wordle.danielfrg.com&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://wordlegalego.appspot.com/"&gt;https://wordlegalego.appspot.com/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Francês&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://wordle.louan.me"&gt;https://wordle.louan.me&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alemão&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wordle.at/"&gt;https://wordle.at/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wordle-spielen.de"&gt;https://wordle-spielen.de&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wordle.uber.space/"&gt;https://wordle.uber.space/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Italiano&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sebastianomorando.github.io/wordle-it/"&gt;https://sebastianomorando.github.io/wordle-it/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Japonês&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://taximanli.github.io/kotobaasobou/"&gt;https://taximanli.github.io/kotobaasobou/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Russo&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wordle.belousov.one/"&gt;https://wordle.belousov.one/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tâmil&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tamilwordle-maleycpqdq-el.a.run.app/"&gt;https://tamilwordle-maleycpqdq-el.a.run.app/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Turco&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://f.github.io/wordle-tr/"&gt;https://f.github.io/wordle-tr/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sueco&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ordlig.se/"&gt;https://ordlig.se/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Islandês&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ordla.us/"&gt;https://ordla.us/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dinamarquês&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://w%C3%B8rdle.dk/"&gt;https://wørdle.dk/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Húngaro&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jealousmarkup.xyz/szofejto/"&gt;https://jealousmarkup.xyz/szofejto/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Urdu&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://urdle.chaoticity.com/"&gt;https://urdle.chaoticity.com/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ladino&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://f.github.io/wordle-ladino/"&gt;https://f.github.io/wordle-ladino/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kurdi&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://f.github.io/wordle-kurdi/"&gt;https://f.github.io/wordle-kurdi/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Matemática
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nerdlegame.com/"&gt;https://nerdlegame.com/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g4K3TR7k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcjhjlyc178vtns088zx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g4K3TR7k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcjhjlyc178vtns088zx.png" alt="Exemplo" width="494" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Outro tipo de jogo para montar palavras em inglês
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.nytimes.com/puzzles/spelling-bee"&gt;https://www.nytimes.com/puzzles/spelling-bee&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>wordle</category>
      <category>relax</category>
    </item>
    <item>
      <title>Bancos de Dados: MySQL PDO</title>
      <dc:creator>Léo Herte de Moraes</dc:creator>
      <pubDate>Tue, 25 Jan 2022 18:31:28 +0000</pubDate>
      <link>https://dev.to/leomoraes/bancos-de-dados-mysql-pdo-34i6</link>
      <guid>https://dev.to/leomoraes/bancos-de-dados-mysql-pdo-34i6</guid>
      <description>&lt;h2&gt;
  
  
  Extensão PDO
&lt;/h2&gt;

&lt;p&gt;A PDO é uma biblioteca para abstração de conexões a bancos de dados — embutida no PHP desde a versão 5.1.0 — que fornece uma interface comum para conversar com vários bancos de dados diferentes. Por exemplo, você pode usar basicamente o mesmo código para fazer a interface com o MySQL ou SQLite:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// PDO + MySQL
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo-&amp;gt;query("SELECT some\_field FROM some\_table");
$row = $statement-&amp;gt;fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['some_field']);

// PDO + SQLite
$pdo = new PDO('sqlite:/path/db/foo.sqlite');
$statement = $pdo-&amp;gt;query("SELECT some\_field FROM some\_table");
$row = $statement-&amp;gt;fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['some_field']);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A PDO não irá traduzir suas consultas SQL ou emular funcionalidades que não existem; ela é feita puramente para conectar múltiplos tipos de bancos de dados com a mesma API.&lt;/p&gt;

&lt;p&gt;Mais importante, a PDO permite que você injete de forma segura entradas externas (e.g IDs) em suas consultas SQL sem se preocupar com ataques de SQL injection. Isso é possível usando instruções PDO (PDO statements) e parâmetros restritos (bound parameters).&lt;/p&gt;

&lt;p&gt;Vamos assumir que um script PHP recebe um ID numérico como parâmetro de uma consulta. Este ID deve ser usado para buscar um registro de um usuário no banco de dados. Essa é a forma errada de fazer isso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$pdo = new PDO('sqlite:/path/db/users.db');
$pdo-&amp;gt;query("SELECT name FROM users WHERE id = " . $_GET['id']); // &amp;lt;-- NÃO!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse código é péssimo. Você está inserindo um parâmetro bruto na sua consulta SQL. Isso fará você ser hackeado num piscar de olhos, usando uma prática chamada SQL Injection. Apenas imagine se um hacker passar como parâmetro um id inventivo chamando uma URL como &lt;a href="http://domain.com/?id=1%3BDELETE+FROM+users"&gt;http://domain.com/?id=1%3BDELETE+FROM+users&lt;/a&gt;. Isso irá definir a variável $_GET['id'] como id=1;DELETE FROM users, o que irá excluir todos os seus usuários. Em vez disso, você deveria higienizar (sanitize) a entrada do ID usando parâmetros restritos da PDO.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$pdo = new PDO('sqlite:/path/db/users.db');
$stmt = $pdo-&amp;gt;prepare('SELECT name FROM users WHERE id = :id');
$stmt-&amp;gt;bindParam(':id', $_GET['id'], PDO::PARAM_INT); //&amp;lt;-- Higienizado automaticamente pela PDO
$stmt-&amp;gt;execute();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse é o código correto. Ele usa um parâmetro restrito em uma instrução PDO. Assim a entrada externa do ID é escapada antes de ser introduzida no banco de dados, prevenindo contra potenciais ataques de SQL injection.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="http://php.net/book.pdo"&gt;Leia mais sobre a PDO&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Você também deve estar ciente de que usam recursos do servidor e não é raro ter esses recursos esgotados se essas conexões não forem implicitamente fechadas, entretanto isso é mais comum em outras linguagens. Com PDO você pode implicitamente fechar as conexões pela destruição dos objetos garantindo que todas as referências a ele forem excluídas, ex. atribuindo NULL a elas. Se você não fizer isso explicitamente o PHP irá fechar todas as conexões quando seu script terminar - a não ser é claro que você esteja usando conexões persistentes.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://php.net/pdo.connections"&gt;Leia mais sobre conexões PDO&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Use UTF-8 do jeito certo </title>
      <dc:creator>Léo Herte de Moraes</dc:creator>
      <pubDate>Tue, 25 Jan 2022 18:16:35 +0000</pubDate>
      <link>https://dev.to/leomoraes/use-utf-8-do-jeito-certo-php-50ep</link>
      <guid>https://dev.to/leomoraes/use-utf-8-do-jeito-certo-php-50ep</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php
// Diz para o PHP que estamos usando strings UTF-8 até o final do script
mb_internal_encoding('UTF-8');

// Diz para o PHP que nós vamos enviar uma saída UTF-8 para o navegador
mb_http_output('UTF-8');

// A nossa string UTF-8 de teste
$string = 'Êl síla erin lû e-govaned vîn.';

// Transformar a seqüência de alguma forma com uma função multibyte
// Observe como cortamos a string em um caractere não-ASCII para fins de demonstração
$string = mb_substr($string, 0, 15);

// Conectar a um banco de dados para armazenar a string transformada
// Veja o exemplo PDO neste documento para obter mais informações
// Observe os comandos `set names utf8mb4`!
$link = new PDO(
    'mysql:host=your-hostname;dbname=your-db;charset=utf8mb4',
    'your-username',
    'your-password',
    array(
        PDO::ATTR_ERRMODE =&amp;gt; PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_PERSISTENT =&amp;gt; false
    )
);

// Armazena a nossa string transformada como UTF-8 em nosso banco de dados
// Seu DB e tabelas estão com character set e collation utf8mb4, certo?
$handle = $link-&amp;gt;prepare('insert into ElvishSentences (Id, Body) values (?, ?)');
$handle-&amp;gt;bindValue(1, 1, PDO::PARAM_INT);
$handle-&amp;gt;bindValue(2, $string);
$handle-&amp;gt;execute();

// Recuperar a string que armazenamos apenas para provar se foi armazenada corretamente
$handle = $link-&amp;gt;prepare('select * from ElvishSentences where Id = ?');
$handle-&amp;gt;bindValue(1, 1, PDO::PARAM_INT);
$handle-&amp;gt;execute();

// Armazena o resultado em um objeto que vamos saída mais tarde em nossa HTML
$result = $handle-&amp;gt;fetchAll(PDO::FETCH_OBJ);

header('Content-Type: text/html; charset=UTF-8');
?&amp;gt;&amp;lt;!doctype html&amp;gt;
&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
        &amp;lt;meta charset="UTF-8"&amp;gt;
        &amp;lt;title&amp;gt;UTF-8 test page&amp;lt;/title&amp;gt;
    &amp;lt;/head&amp;gt;
    &amp;lt;body&amp;gt;
        &amp;lt;?php
        foreach($result as $row){
            print($row-&amp;gt;Body);  // Isto deve emitir corretamente nossa string transformada como UTF-8 para o navegador
         }
        ?&amp;gt;
    &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mais explicações:&lt;br&gt;
&lt;a href="http://br.phptherightway.com/#php_e_utf8"&gt;http://br.phptherightway.com/#php_e_utf8&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
    </item>
  </channel>
</rss>
