Como desenvolvedores, escrevemos código na firma para resolver algum problema de negócio para que ela consiga se manter atendendo clientes/usuários, idealmente entregando algum valor pra sociedade e ganhando dinheiro com isso. Manter aplicações em produção, que precisam constantemente mudar para acompanhar as necessidades de negócio, ser confiáveis, disponíveis e previsíveis ao longo do tempo de … Continue lendo Pronto pra produção?
Aiologger – Logger assíncrono para Python e asyncio
Acho que todo desenvolvedor e equipe passam por etapas de amadurecimento bem parecidas ao longo da geração de logs de sistemas: Aplicações geram nenhum ou quase nenhum log; Escrevemos aplicações verbosas demais, com logs provavelmente muito extensos e voltados para outros humanos; Passamos a gerar logs estruturados, serializados para algum formato de fácil consumo e … Continue lendo Aiologger – Logger assíncrono para Python e asyncio
Python 3 e Type Hints
O uso de type hints no meu dia-a-dia de desenvolvedor se deu desde que comecei a utilizar Python 3. De lá pra ca, pela falta de divulgação, infelizmente não vi muita coisa mudar com relação a adoção de uma das features que considero mais legais e úteis do Python moderno. Na B2W Digital, onde trabalho … Continue lendo Python 3 e Type Hints
Concorrência e Paralelismo – Threads, múltiplos processos e AsyncIO – Parte 2
No post anterior falei sobre a diferença entre concorrência e paralelismo, classificação de processos e soluções para implementar aplicações com código concorrente. Se você ainda não leu esse post, recomendo que você comece por lá. É muito comum ver programadores escreverem código para executar uma tarefa qualquer, decidirem empiricamente que o desempenho não está adequado e que podem resolver … Continue lendo Concorrência e Paralelismo – Threads, múltiplos processos e AsyncIO – Parte 2
Concorrência e Paralelismo – Threads, múltiplos processos e AsyncIO – Parte 1
Antes de mais nada, gostaria de dizer que esse não é um post para iniciantes em programação, muito menos para iniciantes em Python. Vou abordar alguns assuntos e dar algumas explicações, considerando que você já possui certos conhecimentos prévios - que não vou explicar aqui. Fique a vontade para utilizar os comentários, ou entrar em … Continue lendo Concorrência e Paralelismo – Threads, múltiplos processos e AsyncIO – Parte 1
What color is it? Construindo um “Color Clock” com Objective-C e Swift
Um "Color Clock" nada mais é do que um relógio, cuja imagem de fundo se altera de acordo com a cor. O objetivo é simples e, no post de hoje, usaremos este problema para estruturar nosso código de forma a utilizar o padrão de delegação para reduzir o acoplamento das nossas unidades. Problema De acordo … Continue lendo What color is it? Construindo um “Color Clock” com Objective-C e Swift
Dynamic Fibonacci: Além da recursividade
Se você teve aulas de programação, um dos primeiros algoritmos que você viu nas aulas sobre recursividade com certeza foi o da sequência de fibonacci. Neste post, vamos além da solução recursiva e utilizaremos o problema para dar um início conceitual sobre programação dinâmica. Problema A sequência de fibonacci é uma sequência numérica, onde o … Continue lendo Dynamic Fibonacci: Além da recursividade
Sabe o programador ctrl+c/ctrl+v? Não seja ele!
Códigos como o da imagem são comuns e motivos de muitas dores de cabeça para manutenção de código e refatoração. Se você não consegue sentir o cheiro desse code smell de longe, acha que meta programação e abstração de lógica coisa de outro mundo, ou que esse tipo de construção é totalmente aceitável, nesse post vamos discutir algumas técnicas de refatoração indispensáveis para todos os desenvolvedores!
Como se defender de “ifs hadouken”
O caso de muitos condicionais aninhados é um code smell relativamente comum. Programadores mais experientes não devem ter problema em refatorar esse tipo de código. Para muitos, a história é um pouco diferente e, se você olhou para a imagem deste post e já se viu em uma situação como essa sem saber o que fazer, ou … Continue lendo Como se defender de “ifs hadouken”
Alfabeto Geométrico
O problema de hoje é simples, então não se assuste caso a solução não seja óbvia em um primeiro instante. Vamos construir o Alfabeto Geométrico (AG) passo-a-passo, assim como os subproblemas que devem ser solucionados para chegarmos na saída desejada. Problema: Dado um inteiro n, a tarefa consiste em criar um alfabeto geométrico de tamanho n. Entrada: … Continue lendo Alfabeto Geométrico