<?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: Eduwxyz</title>
    <description>The latest articles on DEV Community by Eduwxyz (@eduwxyz).</description>
    <link>https://dev.to/eduwxyz</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%2F630383%2F58ee0940-155c-4cb9-9c1d-f3347ac8d051.png</url>
      <title>DEV Community: Eduwxyz</title>
      <link>https://dev.to/eduwxyz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eduwxyz"/>
    <language>en</language>
    <item>
      <title>Programação orientada a testes?!</title>
      <dc:creator>Eduwxyz</dc:creator>
      <pubDate>Sun, 16 Oct 2022 22:24:34 +0000</pubDate>
      <link>https://dev.to/devs-jequie/programacao-orientada-a-testes-58dd</link>
      <guid>https://dev.to/devs-jequie/programacao-orientada-a-testes-58dd</guid>
      <description>&lt;h2&gt;
  
  
  Para começar
&lt;/h2&gt;

&lt;p&gt;Ao construir um projeto, um sistema ou até mesmo um simples código, nos bate aquela dúvida: &lt;em&gt;&lt;strong&gt;&lt;code&gt;será que o que eu construi está funcionando corretamente?&lt;/code&gt;&lt;/strong&gt;&lt;/em&gt; É ai que surge a necessidade de implementar testes em seu código, como o próprio nome diz, testar se o que você escreveu está retornando o esperado. &lt;/p&gt;

&lt;h2&gt;
  
  
  Testes unitários e TDD
&lt;/h2&gt;

&lt;p&gt;Agora que já vimos um pouco sobre a importância de termos teste em código, vamos ver a diferença entre &lt;code&gt;Testes unitários e TDD&lt;/code&gt;. Testes unitários são trechos de código que vão "exercitar" a entrada, saída e comportamento do seu código, já o Desenvolvimento Orientado a Testes (TDD) é uma forma de pensamento, que consiste em escrever testes primeiro do que o código. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/OwrBi1r1XWP00loE3I/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/OwrBi1r1XWP00loE3I/giphy.gif" width="480" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É isso mesmo que vocês leram. Testar antes mesmo de escrever o código. &lt;/p&gt;

&lt;p&gt;O grande motivo desse pensamento é que quando criamos os testes para código que até mesmo nem existem ainda, o processo de criação desse código se torna muito mais fácil, pois você já sabe "onde quer chegar" com ele. &lt;/p&gt;

&lt;h2&gt;
  
  
  O ciclo do TDD
&lt;/h2&gt;

&lt;p&gt;Mesmo sendo mais fácil construir o código tendo seu teste criado, não significa que acertaremos de primeira. Aqui falarei talvez da coisa mais importante da metodologia do TDD, o ciclo de funcionamento dele. O ciclo é formado por três etapas: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Escrever um teste e fazer ele falhar (se estamos escrevendo o teste primeiro é claro que ele irá falhar)&lt;/li&gt;
&lt;li&gt;Escrever o código que será testado pelo seu teste&lt;/li&gt;
&lt;li&gt;Refatorar o código para algo mais otimizado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essa imagem representa bem o que quero dizer: &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.amazonaws.com%2Fuploads%2Farticles%2F7iv2x9pnnim84md4mwjr.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.amazonaws.com%2Fuploads%2Farticles%2F7iv2x9pnnim84md4mwjr.png" alt="Image description" width="529" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Para finalizar
&lt;/h2&gt;

&lt;p&gt;E estamos chegando ao fim desse artigo pessoal, ele foi bem curtinho com o intuito de dar apenas novas visões sobre a importância de se fazer teste em nosso código, independentemente da linguagem utilizada. Utilizando o TDD seu código fica mais confiável e legível, pode ser difícil aplicar essa metodologia no começo mas com o tempo fica mais fácil! &lt;/p&gt;

&lt;h2&gt;
  
  
  Materiais de referência
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://code.likeagirl.io/in-tests-we-trust-tdd-with-python-af69f47e6932" rel="noopener noreferrer"&gt;In-tests-we-trust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com.br/Test-Driven-Development-Kent-Beck/dp/0321146530" rel="noopener noreferrer"&gt;Desenvolvimento Orientado a Testes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>test</category>
      <category>python</category>
      <category>tdd</category>
    </item>
    <item>
      <title>Poetry — Gerenciamento de dependências em Python!!</title>
      <dc:creator>Eduwxyz</dc:creator>
      <pubDate>Mon, 12 Sep 2022 14:59:18 +0000</pubDate>
      <link>https://dev.to/devs-jequie/poetry-gerenciamento-de-dependencias-em-python-4djf</link>
      <guid>https://dev.to/devs-jequie/poetry-gerenciamento-de-dependencias-em-python-4djf</guid>
      <description>&lt;p&gt;Quando se trata de gerenciamento de dependências de software a conversa costuma ser curta e bem direta. Isso é o normal na maioria das linguagens de programação existentes atualmente, porém com python, é diferente. Existem hoje diversas opções que podemos utilizar para fazer este gerenciamento de dependências para a linguagem python. Conda, Pip, Virtualenv, Pipenv são gerenciadores bem conhecidos para fazer esse controle de dependências. Contudo, não é sobre nenhuma dessas que abordaremos hoje, mas sim sobre o Poetry.&lt;/p&gt;

&lt;p&gt;Criado por Sébastien Eustace em 2018, o Poetry surge para tentar trazer soluções que foram deixadas de lado por gerenciadores antigos. Ele permite que você declare as bibliotecas das quais seu projeto depende e assim tudo será gerenciado para você.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalação do Poetry
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Linux
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -sSL https://install.python-poetry.org | python3 -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Windows
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Principais comandos
&lt;/h2&gt;

&lt;p&gt;Agora que já temos o Poetry instalado, vamos iniciar criando um novo projeto para desenvolvermos. Para isto, basta fazer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;poetry new project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E este comando gera o seguinte arquivo para a gente. Todas as pastas já criadas inclusive de testes e o pyproject.toml, que é o arquivo que orquestra todo o seu projeto e todas as suas dependências.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project
├── pyproject.toml
├── README.md
├── project
│   └── __init__.py
└── tests
    └── __init__.py 
    └── test_project.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para instalar todos as bibliotecas presentes no seu pacote, basta escrever o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;poetry install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando além de instalar todas as dependências também criará um arquivo chamado &lt;strong&gt;&lt;em&gt;poetry.lock&lt;/em&gt;&lt;/strong&gt; que irá listar todas as dependências do seu projeto e as versões que elas estão.&lt;/p&gt;

&lt;p&gt;E por fim, vamos ver como podemos adicionar uma nova dependência. Para isso, é bastante simples, basta escrevermos no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;poetry add nome_da_dependência
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;E isso é tudo pessoal. No artigo de hoje vimos um pouco sobre o Poetry e seus principais comandos para podermos gerenciar dependências com python. Como mostrado é tudo muito simples e muito “intuitivo”. Para saber um pouco mais afundo sobre o Poetry e diversos outros comandos que ele possui, basta acessar a &lt;a href="https://python-poetry.org/docs/" rel="noopener noreferrer"&gt;documentação&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Até a proxima!!!&lt;/p&gt;

</description>
      <category>python</category>
      <category>poetry</category>
      <category>env</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Reconhecimento de imagens com twitter e azure</title>
      <dc:creator>Eduwxyz</dc:creator>
      <pubDate>Wed, 30 Jun 2021 18:35:36 +0000</pubDate>
      <link>https://dev.to/eduwxyz/reconhecimento-de-imagens-com-twitter-e-azure-589p</link>
      <guid>https://dev.to/eduwxyz/reconhecimento-de-imagens-com-twitter-e-azure-589p</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
 Introdução
&lt;/li&gt;
&lt;li&gt;
 Twitter
&lt;/li&gt;
&lt;li&gt;
 Utilizando a API
&lt;/li&gt;
&lt;li&gt;
 Azure
&lt;/li&gt;
&lt;li&gt;
 Vamo codar!
&lt;/li&gt;
&lt;li&gt;
 Bot rodando
&lt;/li&gt;
&lt;li&gt;
 Conclusão &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Neste artigo, será mostrado como você leitor, pode pegar uma imagem de algum famoso ou qualquer pessoa no twitter automaticamente e analisar quem está nessa imagem e os principais elementos que a compõe. Para isso, será preciso apenas de três coisas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uma conta de desenvolvedor no twitter;&lt;/li&gt;
&lt;li&gt;Uma conta na azure da microsoft; &lt;/li&gt;
&lt;li&gt;Muita vontade de aprender. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Três requisitos fáceis e gratuitos, assim fica fácil. E então, prontos para adquirir mais um conhecimento? &lt;br&gt;
Vamos lá!!!&lt;/p&gt;
&lt;h2&gt;
  
  
  Twitter
&lt;/h2&gt;

&lt;p&gt;Como já mencionado, neste artigo precisaremos de uma developer account pois precisaremos minerar o twitter, isto é, recolher informações específicas dele, como por exemplo: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Userid do usuário que desejamos obter a imagem; &lt;/li&gt;
&lt;li&gt;Descrição do post utilizado por ele; &lt;/li&gt;
&lt;li&gt;A imagem que ele postou e entre outras coisas. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;para o artigo não ficar muito grande, basta clickar &lt;a href="https://developer.twitter.com/en/docs" rel="noopener noreferrer"&gt;aqui&lt;/a&gt; e você será direcionado para a documentação, basta seguir o tutorial para obter a conta de desenvolvedor. Caso não consigam, ou tenham alguma dúvida, podem deixar nos comentários e posteriormente eu crio um artigo somente para explicar isto. &lt;/p&gt;

&lt;p&gt;O que precisaremos do twitter são as chaves para usarmos a API deles. Após a criação da conta, basta acessar o campo dashboard e você irá de deparar com uma página parecida com esta: &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.amazonaws.com%2Fuploads%2Farticles%2Fp4yef0xhgvz6uszie1y4.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.amazonaws.com%2Fuploads%2Farticles%2Fp4yef0xhgvz6uszie1y4.png" alt="image" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, o primeiro passo está feito, vamos para o próximo! &lt;/p&gt;
&lt;h2&gt;
  
  
  Utilizando a API
&lt;/h2&gt;

&lt;p&gt;Para nos auxiliar na nossa tarefa, utilizaremos uma &lt;em&gt;biblioteca&lt;/em&gt; &lt;br&gt;
do python criada especificamente para utilizarmos a API do twitter, chamamos ela de &lt;a href="https://docs.tweepy.org/en/stable/" rel="noopener noreferrer"&gt;tweepy&lt;/a&gt;. Vamos fazer então a importação desta &lt;em&gt;lib&lt;/em&gt;&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tweepy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;tw&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora precisamos definir nossa autenticação para podermos acessar a API do twitter, para isso, irei criar algumas variáveis obrigatórias neste processo:&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="n"&gt;consumer_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt;
&lt;span class="n"&gt;consumer_secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt;
&lt;span class="n"&gt;access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt;
&lt;span class="n"&gt;access_token_secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt;


&lt;span class="n"&gt;auth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OAuthHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;consumer_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;consumer_secret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_access_token&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;access_token_secret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;API&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como cada chave é secreta, neste artigo não passarei a string das minhas. Para o código de vocês, basta substituir o x por sua própria chave. &lt;/p&gt;

&lt;p&gt;Após declarar as 4 chaves necessários, é preciso criar a variável auth, com ela, atribuiremos o método &lt;em&gt;OAuthHandler&lt;/em&gt;, e passaremos como parâmetro a consumer_key e a consumer_secret. Logo em seguida, precisamos liberar o nosso acesso com o token de acesso, para isso, chamo a variável auth, e passo o método &lt;em&gt;set_acess_token&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Para finalizar esta parte, crio uma variável api, e atribuo a ela o método &lt;em&gt;API&lt;/em&gt; passando a variável auth como parâmetro. &lt;/p&gt;

&lt;p&gt;Pronto, inicializamos nossas variáveis principais para que possamos ter acesso a todos os dados postados no twitter! &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.amazonaws.com%2Fuploads%2Farticles%2Fgpqtrzdmrmhqn0gfbxiy.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.amazonaws.com%2Fuploads%2Farticles%2Fgpqtrzdmrmhqn0gfbxiy.png" alt="image" width="356" height="200"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Azure
&lt;/h2&gt;

&lt;p&gt;Já criamos nossa conta no twitter, e agora tudo que falta para irmos pro nosso código é nossa conta na Azure. Apesar de ser um serviço pago, a microsoft libera um acesso a todas as ferramentas de graça por 7 dias! Neste artigo, utilizaremos isto para obtermos acesso! &lt;/p&gt;

&lt;p&gt;Assim como feito como a developer account do twitter, para não ficar extenso, deixarei aqui um &lt;a href="https://docs.microsoft.com/en-us/" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; que levará a vocês a documentação da própria microsoft, resumindo, é  necessário a criação de uma conta microsoft, acesso ao dashboard da plataforma e precisaremos assim como no twitter, pegar nossa chave gratuita de 7 dias que nos dará acesso a API da azure. &lt;/p&gt;

&lt;p&gt;Após essa etapa, vamos continuar nosso código! Agora é preciso importar a biblioteca da azure, para isso, faremos o seguinte:&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;azure.cognitiveservices.vision.computervision&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ComputerVisionClient&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;msrest.authentication&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CognitiveServicesCredentials&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E logo em seguida, criaremos outra variáveis de acesso e uma variável que será nosso client.&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="n"&gt;credenciais&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CognitiveServicesCredentials&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;xxx&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ComputerVisionClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://eduardoteste.cognitiveservices.azure.com/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;credenciais&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, com todas as contas criadas e chaves de acesso liberadas, podemos partir finalmente para nosso código. E ai, bora lá? &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.amazonaws.com%2Fuploads%2Farticles%2Ffpd18q3892clajho6c6h.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.amazonaws.com%2Fuploads%2Farticles%2Ffpd18q3892clajho6c6h.png" alt="image" width="280" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vamo codar!
&lt;/h2&gt;

&lt;p&gt;Aqui daremos início a todo lógica por trás do nosso programa. Tudo será feito em python e é necessário conhecimento básico prévio da linguagem de programação para que vocês entendam 100% do que será feito aqui. &lt;/p&gt;

&lt;p&gt;Bom, vamos pensar primeiro no que será feito aqui. O nosso código se resume em acessarmos o twitter, passar alguns usernamers para ele, e ele nos retornará a url da imagem que usaremos para fazer a análise. Após receber esta url, enviaremos ela para a azure, e lá será feito todo o processamento e obtenção das informações que está imagem contêm.  &lt;/p&gt;

&lt;p&gt;Tudo explicado, então vamos lá! Primeiro irei criar uma lista com alguns usernames de famosos aleatórios.&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="n"&gt;famosos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cauareymond&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;otaviano&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;bernardipaloma&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;IngridGuimaraes&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;olazaroramos&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;baianolol1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;debranascimento&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;FioMattheis&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;moalfradique&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Nandacostareal&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;brttOficial&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;revoltalol&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isto é completamente editável, se quiser passar o seu perfil aqui, ou o de um amigo, pode modificar sem problema. &lt;br&gt;
Após isso, irei criar uma lista vazia chamada famosos_id, esta lista irá armazenar todos os ids da nossa lista de famosos. Após criarmos esta variável, farei um for para acessarmos todos os usernames contidos na lista famosos, e farei um append na lista famosos_id buscando apenas o ID de cada username.&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="n"&gt;famosos_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;famoso&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;famosos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;famoso_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_user&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;famoso&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;id_str&lt;/span&gt;
  &lt;span class="n"&gt;famosos_id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;famoso_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se printarmos o que contêm a lista famosos_id agora, isso será mostrado:&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="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;246591347&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;24209365&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;75082334&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;59932653&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;219112689&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2567508709&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;163972875&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;163601846&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;68839460&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;764565242&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;292013793&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2334322310&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, para que nosso código seja completamente automático, irei criar uma &lt;em&gt;Streaming&lt;/em&gt;. Esta Streaming será responsável por buscar as nossas informações desejadas em tempo real, ou seja, se qualquer famoso daquela lista postar algum tweet 5 segundos, 10, 15, ou até mesmo 5 dias depois que o meu código estar rodando, conseguiremos ainda sim obter acesso as informações. &lt;/p&gt;

&lt;p&gt;Assim sendo, criarei então uma classe que será responsável por rodar nossa Streaming, a ela darei o nome de MyStreamListener, e passei como parâmetro o método StreamListener da biblioteca tweepy. &lt;/p&gt;

&lt;p&gt;Agora, criei o método &lt;em&gt;on_status&lt;/em&gt;, passando como parâmetro (self, status). &lt;/p&gt;

&lt;p&gt;Vamos preencher nossa classe agora, primeiro, sempre que o meu bot achar as informações que eu quero, vou pedir pra ele mostrar o nome do usuário e o texto digitado no post, para isso, usarei os métodos &lt;em&gt;user.screen_name&lt;/em&gt; e o &lt;em&gt;text&lt;/em&gt; da biblioteca tweepy.&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Nome de usuário: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;screen_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Texto digitado: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, vou verificar se no post foi postado alguma imagem além apenas do texto. Para isso, utilizaremos o if buscando a chave "media" do json retornado através do parâmetro status. A media fica localizada no atributo entities, então passarei ele como local de busca.&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;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;media&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;entities&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;entities&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;media&lt;/span&gt;&lt;span class="sh"&gt;'&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="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;media_url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;URL da imagem: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro do if, crio uma variável url para receber justamente a url desta imagem, e mando printar na tela logo em seguida. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ainda dentro do if&lt;/strong&gt;, agora vamos acessar a variável client para enviarmos nossa url para a Azure. Para isto, chamaremos o método &lt;em&gt;describe_imagem&lt;/em&gt;, e como parâmetro passaremos nossa url, a quantidade de elementos que queremos que volte e a linguagem. Como a linguagem padrão desta lib é o inglês, passei o inglês como linguagem mesmo.&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="n"&gt;descricao&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;describe_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&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="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;en&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;texto_descricao&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;descricao&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;captions&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="n"&gt;text&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Descrição: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;texto_descricao&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois de chamar o método &lt;em&gt;describe_imagem&lt;/em&gt;, criei uma variável chamada texto_descrição que ficará responsável por armazenar a  descrição que será retornada da azure. Pois para isso precisamos acessar o atributo &lt;em&gt;captions&lt;/em&gt; e passar posteriormente o atribulo &lt;em&gt;text&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Uma coisa muito interessante contida nas análises da Azure, é que ela através das análises, nos diz o suposto nome do famoso que estamos analisando, como isto é muito interessante, traremos para nosso código também. &lt;br&gt;
Para isto, chamarei o método &lt;em&gt;analyze_image_by_domain&lt;/em&gt; contido na nossa variável Client, e passarei como parâmetro o que pode estar contigo naquela imagem que iremos passar, que no nosso caso, são celebridades/famosos, a url da imagem e novamente a linguagem desejada.&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="n"&gt;analise_celebridades&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;analyze_image_by_domain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;celebrities&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;en&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;lista_celebridades&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;celebridade&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;celebridade&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;analise_celebridades&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;celebrities&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lista_celebridades&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como o que nos é retornado são vários valores e não exclusivamente 1, utilizei o for para armazenar todos os valores em uma lista. &lt;/p&gt;

&lt;p&gt;Estamos no finalzinho do nosso código, e um outro recurso dos serviços da azure, é que ele nos retornas tags que se assemelham com a imagem que estamos analisando. Vamos por essas tags no nosso código? &lt;/p&gt;

&lt;p&gt;Para isso, é muito fácil, basta eu acessar o atributo &lt;em&gt;tag&lt;/em&gt;, dentro da nossa variável descrição e fazer um for printando todos os valores contidos nesta variável.&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;for&lt;/span&gt; &lt;span class="n"&gt;tag&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;descricao&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Principais palavras chaves: &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E com isso finalizamos nossa classe, se você quiser armazenar os resultados obtidos em documento de texto, basta criar um json no final da classe e você obterá acesso a tudo. &lt;br&gt;
Pode ser feito assim&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="n"&gt;resultados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;usuario&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;screen_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;texto_usuario&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;url_imagem&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;celebridades&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;lista_celebridades&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;descricao&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;texto_descricao&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;tweets.txt&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;arquivo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
     &lt;span class="n"&gt;arquivo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt; &lt;span class="n"&gt;sultados&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
     &lt;span class="n"&gt;arquivo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utilizamos o with open para criarmos nosso arquivo txt e armazenar nosso documento de texto contigo no json resultados. &lt;/p&gt;

&lt;p&gt;Agora, para executar a classe, vamos criar uma variável chamada MyStream, atribuindo a ela o método Stream e passando como  parâmetro a variável auth, criada no começo do artigo, e nossa classe. Feito isso, aplicaremos o método &lt;em&gt;filter&lt;/em&gt; a variável &lt;br&gt;
MyStream, e passaremos como parâmetro nossa lista famosos_id, contendo todos os ids dos famosos que iremos atualizar. E fim!!!&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="n"&gt;MyStream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;listener&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;MyStreamListener&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="n"&gt;MyStream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;follow&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;famosos_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Bot rodando
&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.amazonaws.com%2Fuploads%2Farticles%2Fxdoy87348rdtdun47ess.gif" 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.amazonaws.com%2Fuploads%2Farticles%2Fxdoy87348rdtdun47ess.gif" alt="Alt Text" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;E foi isso pessoal, neste artigo foi ensinado como utilizar a API do twitter, com a API da Azure para fazermos reconhecimento de imagens através de python. Quaisquer dúvidas, deixem nos comentários e/ou acessem a documentação que estará no decorrer do artigo. Para ter acesso ao código completo, acesse o repositório do projeto no meu &lt;a href="https://github.com/DevShy" rel="noopener noreferrer"&gt;github&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Até a próxima!! &lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>datascience</category>
      <category>python</category>
      <category>azure</category>
    </item>
    <item>
      <title>Machine Learning Descomplicado</title>
      <dc:creator>Eduwxyz</dc:creator>
      <pubDate>Wed, 23 Jun 2021 18:16:21 +0000</pubDate>
      <link>https://dev.to/eduwxyz/machine-learning-descomplicado-h1e</link>
      <guid>https://dev.to/eduwxyz/machine-learning-descomplicado-h1e</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
 O que é Machine Learning?
&lt;/li&gt;
&lt;li&gt;
 Primeiros passos
&lt;/li&gt;
&lt;li&gt;
 Leitura da Base
&lt;/li&gt;
&lt;li&gt;
 Exploração dos dados - início
&lt;/li&gt;
&lt;li&gt;
 Resumo &lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  generated with &lt;a href="https://summaryze-forem.vercel.app/" rel="noopener noreferrer"&gt;Summaryze Forem 🌱&lt;/a&gt;
&lt;/h6&gt;

&lt;h2&gt;
  
  
  O que é Machine Learning?
&lt;/h2&gt;

&lt;p&gt;Quando se fala em tecnologia, um termo que está na boca do povo é aprendizado de máquina (machine learning em inglês). Mas o que exatamente é isso? Uma busca simples no Google, retorna uma multitude de artigos, fóruns, documentos, fontes. &lt;/p&gt;

&lt;p&gt;Existem inúmeras definições sobre o que é o aprendizado de máquina, mas uma que nos serve bastante por agora é: “A pesquisa em aprendizado de máquina é um campo de estudo dentro da pesquisa em inteligência artificial, que busca fornecer conhecimento aos computadores através de dados, observações e interações com o mundo. Esse conhecimento adquirido permite que computadores generalizem corretamente novos eventos e configurações”.&lt;/p&gt;

&lt;p&gt;Sendo assim, o intuito deste post é introduzir você que está lendo, a esse mundo maravilhoso que será nosso futuro. Hoje, você aprenderá como abrir um dado e visualizar as principais informações dele. &lt;/p&gt;

&lt;h2&gt;
  
  
  Primeiros passos
&lt;/h2&gt;

&lt;p&gt;Agora que você está introduzido neste mundo, vamos nos preparar para começarmos nossa exploração. Primeiro, precisamos definir qual será nossa base de dados, para este projeto, fiz uma adaptação na base de dados chamada de credit data, hospedada no site &lt;a href="https://www.kaggle.com/" rel="noopener noreferrer"&gt;Kaggle&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Após baixar a base, vamos importar as bibliotecas que utilizaremos durante todo o processo. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;  &lt;a href="https://pandas.pydata.org/docs/" rel="noopener noreferrer"&gt;Pandas&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://numpy.org/doc/stable/" rel="noopener noreferrer"&gt;Numpy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://seaborn.pydata.org/" rel="noopener noreferrer"&gt;Seaborn&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://matplotlib.org/" rel="noopener noreferrer"&gt;Matplotlib.pyplot&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://dash.plotly.com/" rel="noopener noreferrer"&gt;ploty.express&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Usaremos a biblioteca &lt;em&gt;pandas&lt;/em&gt; e &lt;em&gt;numpy&lt;/em&gt; para o processamento dos dados e cálculos estatísticos. A &lt;em&gt;seaborn&lt;/em&gt;, &lt;em&gt;matplotlib&lt;/em&gt; e a &lt;em&gt;ploty&lt;/em&gt;, usamos na parte da visualização dos dados. Tudo explicado, agora vamos importar as bibliotecas no nosso código:&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;seaborn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;plotly.express&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;px&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sempre que importamos uma biblioteca, passamos um apelido para ela, para que fique mais fácil nossa utilização, e é isso que o &lt;em&gt;as&lt;/em&gt; pd, &lt;em&gt;as&lt;/em&gt; np, e os demais significam. &lt;/p&gt;

&lt;h2&gt;
  
  
  Leitura da Base
&lt;/h2&gt;

&lt;p&gt;Após importado as bibliotecas, vamos finalmente abrir nossa base pela primeira vez. Para isso, utilizaremos a biblioteca &lt;em&gt;pandas&lt;/em&gt; e seu método &lt;em&gt;read_csv&lt;/em&gt;.&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="n"&gt;base_credit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;credit_data.csv&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicionamos esse método em uma variável, e passamos o &lt;em&gt;path&lt;/em&gt; do arquivo como parâmetro. &lt;br&gt;
Agora vamos fazer nossa primeira visualização, para isso, utilizaremos o comando .head() do próprio pandas. Ele nos retornará as 5 primeiras linhas do arquivo.&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="n"&gt;base_credit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saída: &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.amazonaws.com%2Fuploads%2Farticles%2F3j3iu97tnehvxxg3gqww.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.amazonaws.com%2Fuploads%2Farticles%2F3j3iu97tnehvxxg3gqww.png" alt="image" width="507" height="197"&gt;&lt;/a&gt;&lt;br&gt;
Podemos ver que temos uma tabela, com 6 colunas. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A primeira coluna corresponde ao índice da nossa tabela, qual o tamanho dela; &lt;/li&gt;
&lt;li&gt;A segunda coluna (clientid) corresponde ao id do cliente; &lt;/li&gt;
&lt;li&gt;A terceira coluna (income) corresponde ao salário do respectivo cliente ao ano. &lt;/li&gt;
&lt;li&gt;A quarta coluna (age), mostra a idade do cliente; &lt;/li&gt;
&lt;li&gt;A quinta coluna (loan), representa o valor da dívida que o cliente está devendo; &lt;/li&gt;
&lt;li&gt;E por ultimo, a sexta coluna, representa se o cliente quitou, ou não, a dívida. Esses valores são representados por 1 e 0, respectivamente.
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Exploração dos dados - início
&lt;/h2&gt;

&lt;p&gt;Para fazer a exploração, utilizaremos o comando describe, do pandas. Ele retornará diversas informações estatísticas dos valores números existentes na nossa tabela.&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="n"&gt;base_credit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saída: &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.amazonaws.com%2Fuploads%2Farticles%2Fk3x9ffwmlz7215gq7fja.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.amazonaws.com%2Fuploads%2Farticles%2Fk3x9ffwmlz7215gq7fja.png" alt="image" width="590" height="289"&gt;&lt;/a&gt;&lt;br&gt;
Com esse comando podemos observar a quantidade de linhas contidas na tabela, a média de cada uma das colunas, o desvio padrão, o valor mínimo encontrado, o primeiro quartil de 25%, a mediana, o segundo quartil de 75% e o valor máximo encontrado. &lt;/p&gt;

&lt;h2&gt;
  
  
  Resumo
&lt;/h2&gt;

&lt;p&gt;E aqui finalizamos o post de hoje. Neste post, foi mostrado uma ideia geral sobre machine learning e os primeiros passos para construir um projeto nesta área. Ao longo da semana as demais partes irão sair, espero que acompanhem! Até a próxima!! &lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>datascience</category>
      <category>programming</category>
    </item>
    <item>
      <title>Minerador de bitcoin com PYTHON?!</title>
      <dc:creator>Eduwxyz</dc:creator>
      <pubDate>Mon, 24 May 2021 14:09:25 +0000</pubDate>
      <link>https://dev.to/devs-jequie/minerador-de-bitcoin-com-python-ce2</link>
      <guid>https://dev.to/devs-jequie/minerador-de-bitcoin-com-python-ce2</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
 Primeiramente, o que é bitcoin?
&lt;/li&gt;
&lt;li&gt;
 Como funciona as transações do bitcoin?
&lt;/li&gt;
&lt;li&gt;
 Criptografia/SHA-256
&lt;/li&gt;
&lt;li&gt;
 Qual a aplicação do SHA-256 no bitcoin?
&lt;/li&gt;
&lt;li&gt;
 Vamos para o código?
&lt;/li&gt;
&lt;li&gt;
 Vamos testar como funciona essa função?
&lt;/li&gt;
&lt;li&gt;
 Funções do nosso script!
&lt;/li&gt;
&lt;li&gt;
 Função main!
&lt;/li&gt;
&lt;li&gt;
 Rodando o Código
&lt;/li&gt;
&lt;li&gt;
 Buscar informações reais
&lt;/li&gt;
&lt;li&gt;
 Conclusão &lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  generated with &lt;a href="https://summaryze-forem.vercel.app/" rel="noopener noreferrer"&gt;Summaryze Forem 🌱&lt;/a&gt;
&lt;/h6&gt;

&lt;h2&gt;
  
  
  Primeiramente, o que é bitcoin?
&lt;/h2&gt;

&lt;p&gt;Bitcoin é uma forma de dinheiro, assim como o dólar, real, euro, a única diferença é que o bitcoin é uma moeda puramente digital, e não é emitido por nenhum governo. O seu valor, é definido individualmente pelos próprios indivíduos do mercado. &lt;/p&gt;

&lt;h2&gt;
  
  
  Como funciona as transações do bitcoin?
&lt;/h2&gt;

&lt;p&gt;Todas as transações ficam armazenadas em um "livro", que é o que chamamos de Ledger. Contudo, como existem milhares e milhares de transações, em vez de termos só um Ledger geral, nós temos milhares e milhares de ledgers também, sendo um conectado a seu antecessor. Desta forma fica muito mais fácil para pesquisarmos uma determinada transação. Está cadeia de ledgers são chamadas de blockchain (cadeia de blocos). &lt;/p&gt;

&lt;h2&gt;
  
  
  Criptografia/SHA-256
&lt;/h2&gt;

&lt;p&gt;SHA-256, do inglês “Secure Hash Algorithm”, é uma função criptográfica utilizada como base do sistema de trabalho do Bitcoin. Essa função recebe uma entrada de tamanho aleatório e a converte em uma saída de tamanho fixo de 256 bits. As funções de hash são especiais por serem unidirecionais, ou seja, não podem produzir a entrada a partir da saída, mas sim uma saída quando recebem uma entrada. Além disso, o hash é calculado pelos mineradores para que uma transação possa ser adicionada à blockchain, funcionando como uma espécie de link entre os blocos, como já citado anteriormente. &lt;br&gt;
O SHA-256 recebe códigos de qualquer cumprimento e cria um algoritmo de comprimento fixado em 256 bits ou 64 caracteres. Ele recebe uma entrada particular, que podemos chamar de “mensagem”, e basicamente aplica um conjunto de transformações matemáticas nessa entrada para produzir uma única saída, a qual também não pode ser descriptografada, seguindo uma função unidirecional, como uma via de mão única.&lt;/p&gt;
&lt;h2&gt;
  
  
  Qual a aplicação do SHA-256 no bitcoin?
&lt;/h2&gt;

&lt;p&gt;A função SHA-256 na mineração do Bitcoin se dá quando um indivíduo se torna elegível a fim de colocar novos blocos dentro da blockchain. Para concluir a tarefa, ele deve preencher o que seria um cabeçalho do bloco, que deve atender pelos 6 parâmetros impostos pelo protocolo, são eles:&lt;br&gt;
1°- Versão: número da versão do software Bitcoin&lt;br&gt;
2°- Hash do bloco anterior: referência ao hash do bloco anterior&lt;br&gt;
3°- Raiz de Merkle: um hash representativo das transações incluídas no bloco&lt;br&gt;
4°- Registro de data e hora: o horário em que o bloco foi criado&lt;br&gt;
5°- Target: algoritimo de prova de trabalho para o bloco&lt;br&gt;
6°- Nonce: a variável usada no processo de prova de trabalho&lt;br&gt;
Para que um bloco seja adicionado ao cabeçalho ele deve ser colocado duas vezes no algoritmo SHA-256. &lt;br&gt;
Por exemplo:&lt;br&gt;
Hash do bloco anterior = SHA-256(SHA-256(cabeçalho do bloco)). &lt;/p&gt;
&lt;h2&gt;
  
  
  Vamos para o código?
&lt;/h2&gt;

&lt;p&gt;Primeiramente vamos importar 2 bibliotecas para que nosso código rode com sucesso! A primeira é a &lt;code&gt;hashlib&lt;/code&gt;, e a segunda é a &lt;code&gt;time&lt;/code&gt;.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sha256&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A &lt;code&gt;hashlib&lt;/code&gt; utilizaremos para pegar a função sha256 tão importante nesta mineração, e a time será apenas para contabilizar o tempo em que nosso código ficará rodando. &lt;/p&gt;

&lt;h2&gt;
  
  
  Vamos testar como funciona essa função?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;efk&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ascii&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Primeiramente, vou colocar tudo dentro de um print. Agora, chamei a função &lt;code&gt;sha256&lt;/code&gt;, e passei os caracteres 'efk' para codificarmos. Contudo, esses caracteres estão no formato unicode, por isso, passamos o método encode, e passamos como parâmetro o 'ascii'. O resultado disso é:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;sha256&lt;/span&gt; &lt;span class="n"&gt;_hashlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HASH&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="mh"&gt;0x0000025F1CFEA990&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ele gerou um objeto no python. Para transformamos esse objeto em uma string python, vamos passar o método &lt;code&gt;hexdigest&lt;/code&gt;. O código fica assim então:&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;efk&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ascii&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gerando a saída:&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="mi"&gt;7&lt;/span&gt;&lt;span class="n"&gt;b450aa131c1b97d9573d30003b55290c1995d1258bb2596048c1c8cba3abd75&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou seja, a string resultante, é o código criptografado para aqueles caracteres que passamos acima, 'efk'. &lt;/p&gt;

&lt;h2&gt;
  
  
  Funções do nosso script!
&lt;/h2&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;apply_sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texto&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ascii&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;mine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_bloco&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transacoes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hash_anterior&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;qtd_zeros&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;nonce&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_bloco&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;transacoes&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;hash_anterior&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nonce&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;apply_sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;qtd_zeros&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;nonce&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nb"&gt;hash&lt;/span&gt;
        &lt;span class="n"&gt;nonce&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Na função mine vamos precisar das informações que já foram mencionadas anteriormente, o número de blocos, as transações, o código do hash anterior, e a quantidade de zeros que é o que diz se aquele código é originado de um bitcoin. Saindo dos parâmetros, vamos definir nosso nonce como 0. Após isso, criamos um laço "infinito", e vamos definir a nossa variável de texto. Esta variável vai receber o número do bloco convertido para string, concatenado com as transações, concatenado com o hash anterior, e concatenado com o nonce convertido para string também. E agora vamos criar nossa variável hash, que vai receber nossa função apply_sha256(). Verificamos agora a quantidade de 0 que tem no nosso hash, para isso vamos utilizar o if, e vamos utilizar o método startswith, que é utilizado para identificar a quantidade de 0 iniciais na nossa string hash. Para que não passássemos inúmeros 0, passamos apenas um, e multiplicamos pela variável quantidade de zeros. Se este if for verdadeiro, entramos nele e retornamos o nonce e o hash, se ele não for, atribuímos +1 no valor do nonce, e o laço se repete até que a condição acima seja verdadeira.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Função main!
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;num_bloco&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;
    &lt;span class="n"&gt;transacoes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Eduardo-&amp;gt;Tulio-&amp;gt;2
    Adriano-&amp;gt;Lucas-&amp;gt;20
    Isabella-&amp;gt;Joao-&amp;gt;10&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;qtde_zeros&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
    &lt;span class="n"&gt;hash_anterior&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;inicio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_bloco&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transacoes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hash_anterior&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;qtde_zeros&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resultado&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;inicio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Primeiro vamos declarar o número de blocos. Após isso, vamos declarar as transações, e logo em seguida vamos declarar a quantidade de zeros. Após isso vamos criar nosso hash anterior, e vou declarar uma variável que vai servir pra cronometrar o tempo que meu algoritmo dará o resultado. Vamos utilizar a função time() para isso. Por fim, criaremos uma variável resultado, e chamaremos a função mine(), passando todos os parâmetros necessários. Após isso, vamos printar o resultado, e o tempo que o algoritmo utilizou pra rodar. &lt;/p&gt;

&lt;h2&gt;
  
  
  Rodando o Código
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sha256&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;apply_sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texto&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ascii&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;mine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_bloco&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transacoes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hash_anterior&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;qtde_zeros&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;nonce&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;texto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_bloco&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;transacoes&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;hash_anterior&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nonce&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;meu_hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;apply_sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;meu_hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;qtde_zeros&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;nonce&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;meu_hash&lt;/span&gt;
        &lt;span class="n"&gt;nonce&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;num_bloco&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;
    &lt;span class="n"&gt;transacoes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Eduardo-&amp;gt;Tulio-&amp;gt;2
    Adriano-&amp;gt;Lucas-&amp;gt;20
    Isabella-&amp;gt;Joao-&amp;gt;10&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;qtde_zeros&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
    &lt;span class="n"&gt;hash_anterior&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;inicio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_bloco&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transacoes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hash_anterior&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;qtde_zeros&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resultado&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;inicio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E nossa saída é:&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="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1523970&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0000001be19bb67966b06b1261f729d0b00e3f557537184537378336f6989313&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mf"&gt;3.2422425746917725&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Primeiro temos o nonce, logo em seguida o hash, e por fim o tempo em segundos que ele demorou para executar este script. &lt;/p&gt;

&lt;h2&gt;
  
  
  Buscar informações reais
&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.amazonaws.com%2Fuploads%2Farticles%2Fbgy9wcqnxb7ks1r5fqh2.gif" 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.amazonaws.com%2Fuploads%2Farticles%2Fbgy9wcqnxb7ks1r5fqh2.gif" alt="Alt Text" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;O script para minerar bitcoin é relativamente simples, contudo, é preciso uma máquina extremamente potente para que esta mineração seja eficiente. O número de 0 utilizados nestas minerações atualmente iniciam com 20, quanto mais 0, mais tempo de processamento. Para apenas exemplificar, utilizei números menores, mas podem tentar a vontade, só cuidado pra não explodir o computador kkkkkk. &lt;/p&gt;

</description>
      <category>python</category>
      <category>bitcoin</category>
      <category>mine</category>
      <category>script</category>
    </item>
    <item>
      <title>String em Python!!</title>
      <dc:creator>Eduwxyz</dc:creator>
      <pubDate>Fri, 21 May 2021 14:10:05 +0000</pubDate>
      <link>https://dev.to/eduwxyz/string-em-python-47a3</link>
      <guid>https://dev.to/eduwxyz/string-em-python-47a3</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
 O que é uma string?
&lt;/li&gt;
&lt;li&gt;
 Como criar uma string em python?
&lt;/li&gt;
&lt;li&gt;
 Strings são como matrizes!
&lt;/li&gt;
&lt;li&gt;
 Como acessar estes elementos?
&lt;/li&gt;
&lt;li&gt;
 Iterando Strings?!
&lt;/li&gt;
&lt;li&gt;
 Tamanho de uma string!
&lt;/li&gt;
&lt;li&gt;
 Validando caracteres em uma string!
&lt;/li&gt;
&lt;li&gt;
 Conclusão &lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  generated with &lt;a href="https://summaryze-forem.vercel.app/" rel="noopener noreferrer"&gt;Summaryze Forem 🌱&lt;/a&gt;
&lt;/h6&gt;

&lt;h2&gt;
  
  
  O que é uma string?
&lt;/h2&gt;

&lt;p&gt;Em python, uma string são sequências imutáveis de caractere. Ou seja, eles são imutáveis já que para se modificar uma string é necessário que se crie uma nova. &lt;/p&gt;

&lt;h2&gt;
  
  
  Como criar uma string em python?
&lt;/h2&gt;

&lt;p&gt;Para criar uma string, é bastante fácil. Basta criarmos uma variável, e atribuir a ela qualquer caractere entre aspas simples ou duplas. Por exemplo:&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="n"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Python é muito legal&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para imprimir para o usuário o que está dentro da variável, basta utilizarmos o famoso print do python.&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="n"&gt;é&lt;/span&gt; &lt;span class="n"&gt;muito&lt;/span&gt; &lt;span class="n"&gt;legal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Strings são como matrizes!
&lt;/h2&gt;

&lt;p&gt;Como em diversos tipos de linguagem de programação, as strings em python são matrizes de bytes que representam caracteres Unicodes. Contudo, em python não temos um tipo de dados de caractere, um único caractere é simplesmente uma string de comprimento 1. &lt;/p&gt;

&lt;h2&gt;
  
  
  Como acessar estes elementos?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Python é muito legal&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saída:&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="n"&gt;P&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Iterando Strings?!
&lt;/h2&gt;

&lt;p&gt;Outra coisa super interessante que dá pra fazer em uma string é utilizar os famosos laços de repetição nela.&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;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saída:&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="n"&gt;P&lt;/span&gt;
&lt;span class="n"&gt;y&lt;/span&gt;
&lt;span class="n"&gt;t&lt;/span&gt;
&lt;span class="n"&gt;h&lt;/span&gt;
&lt;span class="n"&gt;o&lt;/span&gt;
&lt;span class="n"&gt;n&lt;/span&gt;

&lt;span class="n"&gt;é&lt;/span&gt;

&lt;span class="n"&gt;m&lt;/span&gt;
&lt;span class="n"&gt;u&lt;/span&gt;
&lt;span class="n"&gt;i&lt;/span&gt;
&lt;span class="n"&gt;t&lt;/span&gt;
&lt;span class="n"&gt;o&lt;/span&gt;

&lt;span class="n"&gt;l&lt;/span&gt;
&lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="n"&gt;g&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt;
&lt;span class="n"&gt;l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tamanho de uma string!
&lt;/h2&gt;

&lt;p&gt;Me deparei com uma string super grande, e preciso saber o tamanho dela, como posso fazer isso em python? É simples, basta utilizar a função &lt;code&gt;len()&lt;/code&gt;, desta forma:&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="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Oi pra você que está lendo isso, qual o tamanho desta string?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saída:&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="mi"&gt;61&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Validando caracteres em uma string!
&lt;/h2&gt;

&lt;p&gt;Para verificar se um caractere ou uma palavra está inserida em uma string já declarada, basta usarmos o &lt;code&gt;in {variável string}&lt;/code&gt;. Por exemplo:&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="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Na UESB os professores são ótimos!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ótimos&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;txt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saída:&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="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;E por hoje é só, apenas algumas demonstrações do que podemos fazer com uma string utilizando python! Lembrando que isso é apenas a ponta do iceberg, tem ainda uma diversidade de outras coisas que podem ser usadas. &lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>education</category>
      <category>string</category>
    </item>
  </channel>
</rss>
