Visualizando diferenças de código de maneira mais simples com o Delta

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: Visualização de diferença com o diff padrão A minha sorte foi que olhando algumas ferramentas feitas em Rust na internet eu esbarrei no Delta, que é uma ferramenta de diff que permite visualizar o arquivo de maneira muito mais rica. ...

August 19, 2021 · Lucas Polo

O jeito pythonico das propriedades no Python - Parte 1

Uma constante na orientação a objetos é a presença de propriedades dentro dos objetos quando precisamos armazenar dados para alguma manipulação posterior. É muito comum, principalmente quando viemos de outras linguagens, criarmos os famosos getters and setters para manter também um bom nível de encapsulamento. Vamos ter como exemplo a classe Circulo abaixo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import math class Circulo: def __init__(self, raio): self.raio = raio def area(self): return self.raio ** 2 * math.pi def circunferencia(self): return self.raio * 2 * math.pi c = Circulo(1) print(c.raio) print(c.area()) print(c.circunferencia()) Perceba que para definirmos um círculo temos que passar o seu raio, com isso podemos calcular facilmente a sua área e circunferência. Precisamos também acessar ocasionalmente esse raio, podemos fazer isso através de dos getters que comentamos, mas isso não é o jeito do Python, ou como falaremos, o jeito mais Pythonico. ...

August 16, 2021 · Lucas Polo

Minha aventura com o DNS no Ubuntu - meu primeiro contato com o systemd

Há algum tempo eu precisei mexer com as configurações de DNS no meu computador para conseguir utilizar o excelente projeto Pi Hole. Para quem não conhece, o Pi Hole é um projeto de servidor de DNS que possui uma lista de servidores de propaganda e bloqueia elas. Ele é excelente pois ao contrário dos Ad-Blockers ele não é tão facilmente detectável e como o bloqueio ocorre já na requisição de DNS ele também ajuda a economizar banda. ...

August 9, 2021 · Lucas Polo

Analisando queries no PostgreSQL

O banco de dados é uma das partes mais importantes de qualquer aplicação e da mesma forma que as linguagens de programação que usamos, as vezes é necessário depurar o que está acontecendo dentro dele. Uma das coisas que sempre devemos fazer ao digitar uma query nova que será utilizada pelo nosso programa é analisar o seu custo computacional no banco. Para conseguirmos fazer isso no PostgreSQL basta ativarmos uma diretriz antes da query (usaremos um banco de dados de filmes como exemplos que peguei aqui): ...

August 2, 2021 · Lucas Polo

O problema de Monty Hall e como estatística não é algo intuitivo

Quando estudamos estatística é muito comum esbarrarmos no problema de Monty Hall. Monty Hall era um programa de TV onde o apresentador oferecia três portas para uma pessoa, atrás de uma delas havia um prêmio e das outras duas alguma coisa desagradável para dar o tom de humor do programa. Aqui no Brasil tinhamos o nosso equivalente apresentado pelo Sérgio Malandra, a Porta dos Desesperados. Aqui temos uma explicação do problema com sua solução: ...

July 29, 2021 · Lucas Polo

Melhorando as requisições assíncronas com Python - Parte 3

Este post é uma continuidade dos posts Lendo arquivos CSV em Python e fazendo requisições e do post Fazendo requests concorrentemente (assíncronas) no Python Após fazermos as requests assíncronas no último post obtivemos uma melhoria signifcativa em nosso processamento, conseguindo paralelizar as requests e reduzindo muito o tempo. Porém não estamos fazendo o melhor proveito da API async do Python, percebam que cada função async também é responsável por também imprimir o resultado e o ideal seria retornarmos os resultados para tratar posteriormente. Vamos fazer isso: ...

July 26, 2021 · Lucas Polo

Executando scripts no banco PostgreSQL com o psql

As vezes precisamos executar scripts grandes, como inserir uma massa de dados muito grande ou fazer diversas queries ao mesmo tempo. As ferramentas de bancos de dados ajudam muito nisso, mas as vezes o script pode ser tão grande que a ferramenta não aguenta e pode encher muito a memória (caso que aconteceu comigo recentemente onde o DBeaver tinha onze mil inserts para fazer). Felizmente existe uma ferramenta de linha de comando muito prática chamada psql, ele é mantido também pelas mesmas pessoas do PostgreSQL e é muito eficiente. O psql é um utilitário de linha de comando que permite executar comandos no banco de dados e também executar scripts em lote. Um exemplo de execução poderia ser assim: ...

July 22, 2021 · Lucas Polo

Adicionando alterações em commits antigos com o rebase interativo

Durante o desenvolvimento é muito comum encontrarmos alterações para fazermos em arquivos que já foram alterados e não estão mais no último PR. Para não gerar um grande número commits de ajustes pequenos podemos reorganizar estas alterações utilizando o rebase interativo. Preciso deixar apenas um aviso importante, como alteramos a ordem dos commits isso irá gerar uma reescrita de histórico de commits, assim caso você já tenha feito o push da versão anterior para uma branch remota será necessário refazer o procedimento com o famigerado –force, o que pode trazer perdas de commits caso essa branch esteja sendo usada por outra pessoa, outro ponto, evite fazer reescrita de histórico na branch principal do projeto. ...

July 19, 2021 · Lucas Polo

Achados: aprendendo Node.js

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. A único “defeito” 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. ...

July 15, 2021 · Lucas Polo

Fazendo requests concorrentemente (assíncronas) no Python - Parte 2

Este post é uma continuação direta do post Lendo arquivos CSV em Python e fazendo requisições - Parte 1 Depois de conseguirmos ler o CSV e conseguirmos fazer requisições em lote, podemos agora iniciar uma primeira otimização, realizar as cotações em paralelo. Para isto usaremos a API assíncrona do Python em conjunto com uma nova biblioteca de requests, a HTTPX. A primeira coisa que faremos é alterar a biblioteca Python que utilizamos, adaptar a requisição e nosso programa para começar a trabalhar assíncronamente. As alterações são principalmente na definição das funções e também nas mudanças para as chamadas das funções assíncronas que agora precisam do await antes: ...

July 12, 2021 · Lucas Polo