<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Achados on (dev) Lucas Polo</title><link>https://blog.lucaspolo.dev/categories/achados/</link><description>Recent content in Achados on (dev) Lucas Polo</description><image><title>(dev) Lucas Polo</title><url>https://blog.lucaspolo.dev/images/og-default.png</url><link>https://blog.lucaspolo.dev/images/og-default.png</link></image><generator>Hugo -- 0.157.0</generator><language>pt-br</language><lastBuildDate>Wed, 14 Jun 2023 23:52:36 +0000</lastBuildDate><atom:link href="https://blog.lucaspolo.dev/categories/achados/index.xml" rel="self" type="application/rss+xml"/><item><title>Coisas grátis para estudantes</title><link>https://blog.lucaspolo.dev/posts/coisas-gratis-para-estudantes/</link><pubDate>Wed, 14 Jun 2023 23:52:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/coisas-gratis-para-estudantes/</guid><description>Descontos e licenças gratuitas de software e serviços para estudantes, e como comprovar o vínculo com a instituição de ensino.</description></item><item><title>Feliz 2022!</title><link>https://blog.lucaspolo.dev/posts/feliz-2022/</link><pubDate>Mon, 03 Jan 2022 12:00:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/feliz-2022/</guid><description>Um recomeço para o blog em 2022 e materiais sobre covariância, contravariância e invariância em Python, C# e Scala.</description></item><item><title>Medindo o tempo de aplicações de linha de comando</title><link>https://blog.lucaspolo.dev/posts/medindo-o-tempo-de-aplicacoes-de-linha-de-comando/</link><pubDate>Thu, 07 Oct 2021 11:30:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/medindo-o-tempo-de-aplicacoes-de-linha-de-comando/</guid><description>&lt;p&gt;Vira e mexe precisamos testar o tempo de algo que roda em linha de comando, seja uma requisição através de cURL ou algum scripts/aplicação que construímos.&lt;/p&gt;
&lt;p&gt;O jeito mais simples e onipresente nas interfaces de linha de comando do Linux é o &lt;strong&gt;time&lt;/strong&gt;. Ele executa o comando passado para ele através de parâmetro e diz qual foi o tempo de execução:&lt;/p&gt;
&lt;p&gt;&lt;img alt="time python fibonacci.py" loading="lazy" src="https://blog.lucaspolo.dev/images/posts/medindo-o-tempo-de-aplicacoes-de-linha-de-comando/Screenshot_from_2021-10-07_00-15-02.png"&gt;
&lt;em&gt;Resultado da execução do time&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;O &lt;strong&gt;time&lt;/strong&gt; pode ajudar muito, principalmente quando queremos comparar escalas de tempo muito diferentes, por exemplo uma mudança de código que mudou o tempo de execução de 1s para 100ms. Porém como a medida pode variar muito de execução devido a diversos fatores (cache, resolução de DNS, etc) testar apenas uma única vez pode não trazer resultados muito acurados, pois não temos tempo médio nem a variância do tempo. Para isso encontrei uma outra aplicação chamada &lt;a href="https://github.com/sharkdp/hyperfine"&gt;&lt;strong&gt;hyperfine&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Fazendo queries SQL em arquivos CSV</title><link>https://blog.lucaspolo.dev/posts/fazendo-queries-sql-em-arquivos-csv/</link><pubDate>Thu, 02 Sep 2021 11:30:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/fazendo-queries-sql-em-arquivos-csv/</guid><description>&lt;p&gt;Vira e mexe eu recebo alguns arquivos CSV que preciso fazer algum filtro ou alguma análise. Eu gosto muito de usar o Python para alguns processamentos, mas não é a coisa mais prática do mundo, ou abrir um script ou abrir um Jupyter Notebook para essa análise. Foi então que descobri que o DBeaver pode nos ajudar com este processo e é muito simples.&lt;/p&gt;
&lt;p&gt;Após abrirmos o DBeaver basta criarmos uma nova conexão e selecionarmos o diretório onde constará o(s) arquivo(s) CSV.&lt;/p&gt;</description></item><item><title>Visualizando diferenças de código de maneira mais simples com o Delta</title><link>https://blog.lucaspolo.dev/posts/visualizando-diferencas-de-codigo-de-maneira-mais-simples-com-o-delta/</link><pubDate>Thu, 19 Aug 2021 14:00:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/visualizando-diferencas-de-codigo-de-maneira-mais-simples-com-o-delta/</guid><description>&lt;p&gt;Eu sempre tive um pouco de dificuldade de assimilar as diferenças de código do jeito padrão do Git, que é feita da forma padrão do diff do GNU/Linux. É algo que vem muito com o hábito e em arquivos pequenos é até mais simples visualizar as diferenças:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Saída do git diff padrão em example.lox, com as linhas removidas em vermelho e as adicionadas em verde, uma abaixo da outra" loading="lazy" src="https://blog.lucaspolo.dev/images/posts/visualizando-diferencas-de-codigo-de-maneira-mais-simples-com-o-delta/Screenshot_from_2021-08-18_11-27-40.png"&gt;
&lt;em&gt;Visualização de diferença com o diff padrão&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Achados: aprendendo Node.js</title><link>https://blog.lucaspolo.dev/posts/achados-aprendendo-node-js/</link><pubDate>Thu, 15 Jul 2021 14:00:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/achados-aprendendo-node-js/</guid><description>&lt;p&gt;Comecei a trabalhar recentemente com Node.js e estou curtindo bastante as particularidades dele. Além do Javascript existe todo um mundo de conceitos por trás do Node.js, na forma como ele foi construido e sua arquitetura.&lt;/p&gt;
&lt;p&gt;A único &amp;ldquo;defeito&amp;rdquo; do Node.js para mim, que na verdade é algo do Javascript, é que se você for iniciante em programação logo de cara terá que lidar com a questão de programação concorrente, eventos e coisas um pouco mais complexas, o que em outras linguagens muitas vezes ficam para um segundo momento serem aprendidas.&lt;/p&gt;</description></item><item><title>Pequeno achado: Por que numeração deve iniciar em zero? De Edsger Dijkstra</title><link>https://blog.lucaspolo.dev/posts/pequeno-achado-por-que-numeracao-deve-iniciar-em-zero-de-edsger-dijkstra/</link><pubDate>Thu, 01 Jul 2021 14:00:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/pequeno-achado-por-que-numeracao-deve-iniciar-em-zero-de-edsger-dijkstra/</guid><description>&lt;p&gt;Talvez você não conheça, mas Edsger W. Dijkstra é um dos nomes mais proeminentes da história da ciência da computação, sendo uma das pessoas que trabalhou na área ainda nos primeiros protótipos de computadores. Caso você tenha estudado algoritmos já deve ter esbarrado no algoritmo de Dijkstra, que é para encontrar o menor caminho em grafos, mas caso ainda não tenha esbarrado em nenhum trabalho dele, vale apena conhecer &lt;a href="https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html"&gt;este artigo&lt;/a&gt; (em inglês) em que ele explica por que a número em sequências numéricas deve iniciar em zero, artigo indicado no excelente livro &lt;a href="https://novatec.com.br/livros/pythonfluente/"&gt;Python Fluente do Luciano Ramalho&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Fira Code: a fonte para programadores</title><link>https://blog.lucaspolo.dev/posts/fira-code-a-fonte-para-programadores/</link><pubDate>Thu, 24 Jun 2021 14:30:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/fira-code-a-fonte-para-programadores/</guid><description>&lt;p&gt;As vezes não nos atentamos aos pequenos detalhes da nosso dia a dia, e após anos programando e lendo código eu esbarrei numa coisa muito interessante: fontes para desenvolvedores.&lt;/p&gt;
&lt;p&gt;Estas fontes específicas para programação ajudam a realçar algumas características específicas do nosso cotidiano, como simbolos e outros detalhes, como também proprorcionam uma leitura agradável do código.&lt;/p&gt;
&lt;p&gt;A que venho usando nos último tempos é a &lt;a href="https://github.com/tonsky/FiraCode"&gt;Fira Code&lt;/a&gt;, uma fonte criada com uma funcionalide muito interessante, as ligaturas, que são conexões entre simbolos que semanticamente significam uma única coisa. Por exemplo, por mais que &amp;gt;= sejam dois simbolos, o significado é únificado, assim a Fira Code faz o seguinte quando utilizamos ele:&lt;/p&gt;</description></item><item><title>O poder do coletivo e o caminho das formigas</title><link>https://blog.lucaspolo.dev/posts/o-poder-do-coletivo-e-o-caminho-das-formigas/</link><pubDate>Mon, 21 Jun 2021 14:00:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/o-poder-do-coletivo-e-o-caminho-das-formigas/</guid><description>&lt;p&gt;Alguns anos atrás esbarrei em um vídeo incrível do Nerdologia sobre &lt;strong&gt;O poder do Coletivo&lt;/strong&gt;, que falava como a inteligência das populações poderiam chegar em resultados excelentes para diversas questões (salvo algumas exceções, como polarizações). Todo esse conceito anda lado a lado com o conceito de Big Data e inteligência artifical, onde analisando dados individuais podemos chegar a resultados ótimos pois o erro da multidão tende a se aproximar de zero:&lt;/p&gt;</description></item><item><title>Minhas ferramentas do dia a dia - Aplicações</title><link>https://blog.lucaspolo.dev/posts/minhas-ferramentas-do-dia-a-dia-aplicacoes/</link><pubDate>Mon, 07 Jun 2021 14:30:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/minhas-ferramentas-do-dia-a-dia-aplicacoes/</guid><description>&lt;p&gt;No dia a dia utilizo muitas aplicações para auxiliar no meu processo de trabalho, as principais são estas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dbeaver.io/"&gt;DBeaver Community&lt;/a&gt;: este aqui é um destaque, aplicativo que permite acesso a diversos bancos de dados para gerenciamento e execução de queries. Já utilizei ele com PostgreSQL, MySQL, SQLite, MS SQL Server, Oracle e até Informix. Não digo que ele é perfeito, mas como permite a utilização com diversos bancos, é muito prático pois mantém tudo concentrado num único app.&lt;/p&gt;</description></item><item><title>Achados - Cheat Sheet fácil e rápido</title><link>https://blog.lucaspolo.dev/posts/achados-cheat-sheet-facil-e-rapido/</link><pubDate>Thu, 03 Jun 2021 12:35:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/achados-cheat-sheet-facil-e-rapido/</guid><description>&lt;p&gt;Por muito tempo fui adepto de usar os guias de consulta rápida, que eram pequenos livros bem leves e pequenos com um conteúdo resumido e direto sobre algum tópico. Hoje em dia estes livrinhos são apenas história, pois com a internet podemos acessar qualquer manual mais rapidamente e leve (num smartphone, por exemplo). Porém as documentações as vezes são extensas e fica dificil acessar um ponto específico que temos dúvida. Para isso existem os cheat sheets, que são como os guias de consultas rápidas, uma página única, com uma exmplicação concisa e um exemplo sobre o tópico apresentando.&lt;/p&gt;</description></item><item><title>Achados - Rust Cheat Sheet</title><link>https://blog.lucaspolo.dev/posts/achados-rust-cheat-sheet/</link><pubDate>Thu, 27 May 2021 14:30:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/achados-rust-cheat-sheet/</guid><description>&lt;p&gt;Gosto muito da praticidade dos cheat sheets, que são pequenas páginas, que podem ser impressas ou não, que contém um resumo sobre algum assunto específico. Desta vez quero compartilhar uma que descobri recentemente sobre a linguagem Rust, que venho aprendendo nos últimos tempos. Clique na imagem para acessar!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cheats.rs/"&gt;&lt;img alt="Página do Rust Language Cheat Sheet com o índice de seções: construções da linguagem, biblioteca padrão, ferramentas e guias" loading="lazy" src="https://blog.lucaspolo.dev/images/posts/achados-rust-cheat-sheet/image.png"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Fazendo upload de arquivos para o Google Cloud Storage com Python (versão de 2020)</title><link>https://blog.lucaspolo.dev/posts/fazendo-upload-de-arquivos-para-o-google-cloud-storage-com-python/</link><pubDate>Fri, 10 Jan 2020 15:52:00 +0000</pubDate><guid>https://blog.lucaspolo.dev/posts/fazendo-upload-de-arquivos-para-o-google-cloud-storage-com-python/</guid><description>&lt;p&gt;O processo é bem simples, porém é necessário antes configurar algumas coisas no Google Cloud e gerar as credenciais necessárias, para este processo pode seguir &lt;a href="https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-python"&gt;este tutorial.&lt;/a&gt; Lembre-se também de criar uma variável de ambiente com o nome &lt;strong&gt;GOOGLE_APPLICATION_CREDENTIALS&lt;/strong&gt; apontando para o caminho do json, no Linux basta fazer:&lt;/p&gt;
&lt;p&gt;export GOOGLE_APPLICATION_CREDENTIALS=/caminho/para/arquivo.json&lt;/p&gt;
&lt;p&gt;Depois disso é possível executar o código abaixo (é claro, o bucket e o  arquivo indicado deve existir):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; datetime &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; timezone, datetime
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; typing &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; BinaryIO
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; google.cloud &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; storage
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;upload_file&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data: BinaryIO,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bucket: &lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; file_path: &lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; link_lifetime: &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;) &lt;span style="color:#ff79c6"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt; Função que realiza o upload do arquivo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; storage_client &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; storage&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Client()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bucket &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; storage_client&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;bucket(bucket)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blob &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; bucket&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;blob(file_path)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; blob&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;upload_from_file(data) &lt;span style="color:#6272a4"&gt;# Faz o upload do arquivo binário e cria um objeto associado ao arquivo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; lifetime &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; datetime&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;now(tz&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;timezone&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;utc)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;timestamp()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; link_lifetime
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# Gera um link para o arquivo com tempo de expiração&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; blob&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;generate_signed_url(lifetime)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;main&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bucket &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;meu-pequeno-bucket&amp;#39;&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# Bucket name in GCS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; file_name &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;arquivo_legal.pdf&amp;#39;&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# Filename&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;open&lt;/span&gt;(file_name, &lt;span style="color:#f1fa8c"&gt;&amp;#39;rb&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; f:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; upload_file(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;f,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bucket&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;bucket,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; file_path&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;file_name,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;URL for file: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>