Pense sobre o seu trabalho - O programador pragmático

Os dias não são fáceis, você acorda cedo e se desloca para o seu trabalho, então você faz algumas coisas e chega o fim do dia, você faz o caminho inverso para sua casa. No fim do mês você é pago por isso, o que é bom, e se for da área de TI, é “mais bom” do que 90% do restante do Brasil. Agora voltemos ao “faz algumas coisas” do paragrafo acima, que coisas são essas? Onde você aprendeu elas? Como lida com elas? Todas essas coisas são a sua profissão, mas o que é profissão? Será que é apenas o seu trabalho? Aquilo que você é pago para fazer? Vamos buscar a definição de profissão: ...

January 6, 2020 · Lucas Polo

Drops: Quicksort em Python

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 from typing import List def quicksort(l: List): """ Recebe uma lista de elementos e devolve eles ordenados """ # Caso base! Nunca se esqueça disso em funções recursivas@ if not len(l): return l # Escolhemos um pivot, removemos ele da lista! # Reduzir a entrada também é essêncial! pivot = l.pop(0) # Separamos os elementos menores lower = [e for e in l if e <= pivot] # Separamos os maiores uppper = [e for e in l if e > pivot] # Os menores ficam na esquerda do pivo # Os maiores ficam na direita # Ai acontece a magia da recursão... # Ordedamos os menores e os maiores com a mesma função. return quicksort(lower) + [pivot] + quicksort(uppper) def main(): elems = [3,2,3,6,7,4,2,-1] print(quicksort(elems)) if __name__ == '__main__': main()

January 3, 2020 · Lucas Polo

O caminho do programador (pragmático) - Um pouco sobre a primeira edição do Programador Pragmático

Disclaimer: Este post é o primeiro de uma série sobre o livro O Programador Pragmático, tratando sobre a primeira edição, caso deseje compra-lo dá uma conferida no último parágrafo (o que já irá acontecer se você ler o post inteiro). Durante nossas carreiras existem alguns momentos enigmáticos que nos fazem refletir sobre o que realmente queremos para o nosso futuro, sobre o profissional que queremos ser e como iremos nos portar pelos próximos anos. Tais momentos são motivados por diversos fatores, como um perrengue no trabalho, um professor que sabe te direcionar, a comunidade, ou como é no caso, um livro. ...

December 31, 2019 · Lucas Polo

Utilzando Celery junto com o SQS

Uma das formas de lidar com processamento assíncrono no Python (e diversas outras linguagens) sem a necessidade de usar threads e afins é utilizando filas e tasks (que são aplicações que rodam conforme demanda, em um processamento similar a batches). Para isso o Python dispõe de uma biblioteca chamada Celery, que de uma maneira bem simples permite realizar o processamento assíncrono. Explicando de uma maneira simples, ao invocar uma função, ao invés de executar seu código, o Celery pega os parâmetros e mais algumas meta-informações da chamada e coloca numa fila, enquanto isso, em outro lugar (processo, computador ou continente), o Celery captura as mensagens desta fila e dispara as tasks. Aqui está uma implementação básica de uma task que soma dois valores: ...

March 17, 2019 · Lucas Polo

Usando terminal e programando em Python no Android

O terminal é uma das ferramentas mais poderosas que temos ao manipular informações no computador, desde o desenvolvimento de software até o hacking, passando por manipulação de texto, administração de sistemas e também para algumas brincadeiras. O acesso ao terminal é simples quando você está dentro de um Linux no computador (e até no Windows agora), porém nem sempre temos um notebook por perto, que por mais que seja portátil, não é simples de carregar por ai. Então, nas pesquisas pela internet, buscando uma alternativa para o tablet e smartphone, eu encontrei o Termux. ...

February 25, 2019 · Lucas Polo

Construindo um interpretador de Lisp em Python

Ultimamente tenho me interessado cada vez mais em como linguagens de programação funcionam e encontrei um material bem legal, simples e prático para ajudar nos estudos. É um artigo do Peter Norvig sobre como criar um interpretador de Scheme em Python, confira: http://norvig.com/lispy.html

January 22, 2019 · Lucas Polo

Git Squash: Agregando seus commits em um só!

Durante o processo de desenvolvimento de software é comum que ao criarmos mais código, possamos enviar ele para o repositório de código, assim os colegas podem acompanhar o que está sendo alterado e também você criar um backup de suas informação. Mas surge uma dúvida na cabeça do programador: qual é o mínimo de código que deve criar antes de realizar um commit? Uma linha? Duas? Cem? Fica complexo definir isso, pois se criarmos muitos commits a nossa funcionalidade nova não fica atômica, mas se demorarmos para commitar e enviar para o repositório, corremos o risco de criar um commit grande demais para review, além é claro do risco de perder o código local. ...

January 11, 2019 · Lucas Polo

Desempacotando parâmetros em Python

Uma das coisas mais interessantes do Python é como ele interage com as suas estruturas de dados padrão, sendo um dos exemplos mais interessantes o desempacotamento de listas e dicionários. A situação é simples, vamos supor que você tenha uma lista de parâmetros e deseja passar para uma função, podemos testar a seguinte situação: 1 2 3 4 5 6 7 def funcao(parametro1, parametro2, parametro3): print(parametro1, parametro2, parametro3) parametros = [1,2,3] funcao(parametros) Mas temos o seguinte erro: ...

January 4, 2019 · Lucas Polo

Um pouco sobre cálculo lambda

October 25, 2018 · Lucas Polo

Rodando automáticamente o Flake8 antes de todos os commits do Git

Quando programamos em Python é importante verificarmos se o nosso código está de acordo com a PEP 8, seguindo seu guia de estilos. Para isto muitas vezes rodamos o Flake8, que é uma aplicação que analisa o nosso código e avalia o que está seguindo e não está seguindo as boas práticas da PEP 8. Para instalar o Flake8 é muito simples, basta rodarmos o comando: pip install flake8 Após instalarmos para podermos avaliar nosso código no diretório atual basta executarmos o comando: ...

July 6, 2018 · Lucas Polo