RSSAmplifier

Blog

Nilo Menezes

Recent content on Nilo Menezes

blog.nilo.pro.brRSS feed ↗116 posts

Latest posts

Python from Scratch

I hadn’t posted anything since the end of 2024. But I have a good reason for this. I was working on translating my book into English. I finally finished it in May, but since then, I have been working to sell and promote the book. Naively, I thought the writing and translating parts were the most difficult. The original version of the book was written in 2010, but I had started writing it…

Advent of code 2024 - Day 15 of 25

The fifteenth day of Advent of Code was yesterday 15/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 , Day 7 , Day 8 , Day 9 , Day 10 , Day 11 , Day 12 , Day 13 and Day 14 . I classified the fifteenth problem as medium (part 1) and medium (part 2). Tips The first part of the problem is to read the maze…

Advent of code 2024 - Dia 15 de 25

O décimo quinto dia do Advent of Code foi ontem 15/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 , Dia 7 , Dia 8 , Dia 9 , Dia 10 , Dia 11 , Dia 12 , Dia 13 e Dia 14 . Classifiquei o décimo quinto problema como médio (parte 1) e médio (parte 2). Dicas A primeira parte do problema é ler o labirinto (armazém) e os…

Advent of code 2024 - Day 14 of 25

The fourteenth day of Advent of Code was yesterday 14/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 , Day 7 , Day 8 , Day 9 , Day 10 , Day 11 , Day 12 and Day 13 . I classified the fourteenth problem as medium (part 1) and medium (part 2). Tips Another maze problem :-D It’s very good to have a…

Advent of code 2024 - Dia 14 de 25

O décimo quarto dia do Advent of Code foi ontem 14/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 , Dia 7 , Dia 8 , Dia 9 , Dia 10 , Dia 11 , Dia 12 e Dia 13 . Classifiquei o décimo quarto problema como médio (parte 1) e médio (parte 2). Dicas Mais um problema com labirinto :-D É muito bom ter uma classe como a…

Advent of Code 2024 - Day 13 of 25

The thirteenth day of Advent of Code was yesterday 12/13/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 , Day 7 , Day 8 , Day 9 , Day 10 , Day 11 and Day 12 . I classified the thirteenth problem as medium (part 1) and medium (part 2). Tips The program has a multi-line input You can use regular…

Advent of code 2024 - Dia 13 de 25

O décimo terceiro dia do Advent of Code foi ontem 13/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 , Dia 7 , Dia 8 , Dia 9 , Dia 10 , Dia 11 e Dia 12 . Classifiquei o décimo terceiro problema como médio (parte 1) e médio (parte 2). Dicas O programa tem um entrada em várias linhas Você pode usar expressões…

Advent of code 2024 - Day 12 of 25

The twelfth day of Advent of Code was yesterday 12/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 , Day 7 , Day 8 , Day 9 , Day 10 and Day 11 . I classified the twelfth problem as easy (part 1) and medium (part 2). Tips Another problem with mazes or character maps. You can build a zone by looking for…

Advent of code 2024 - Dia 12 de 25

O décimo segundo dia do Advent of Code foi ontem 12/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 , Dia 7 , Dia 8 , Dia 9 , Dia 10 e Dia 11 . Classifiquei o décimo segundo problema como fácil (parte 1) e médio (parte 2). Dicas Outro problema com labirintos ou mapas de caracteres. Você pode construir uma zona,…

Advent of code 2024 - Day 11 of 25

The eleventh day of Advent of Code was yesterday 11/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 , Day 7 , Day 8 , Day 9 and Day 10 . I classified the eleventh problem as easy (part 1) and medium (part 2). Tips Both part 1 and part 2 use the same rules to generate stones. A stone 0 becomes a stone 1…

Advent of code 2024 - Dia 11 de 25

O décimo primeiro dia do Advent of Code foi ontem 11/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 , Dia 7 , Dia 8 , Dia 9 e Dia 10 . Classifiquei o décimo primeiro problema como fácil (parte 1) e médio (parte 2). Dicas Tanto a parte 1 quanto a parte 2 usam as mesmas regras para gerar as pedras. Uma pedra 0 vira…

Advent of Code 2024 - Day 10 of 25

The tenth day of Advent of Code was yesterday 12/10/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 , Day 7 , Day 8 and Day 9 . I classified the tenth problem as easy (part 1) and easy (part 2). The problem is very similar to day 4. Tips You can start looking for paths when you find ‘0’ in the…

Advent of code 2024 - Dia 10 de 25

O décimo dia do Advent of Code foi ontem 10/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 , Dia 7 , Dia 8 e Dia 9 . Classifiquei o décimo problema como fácil (parte 1) e fácil (parte 2). O problema é bem parecido com o dia 4. Dicas Você pode começar a procurar os caminhos quando encontrar o ‘0’ no…

Advent of Code 2024 - Day 09 of 25

The ninth day of Advent of Code was yesterday 09/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 , Day 7 and Day 8 . I classified the ninth problem as easy (part 1) and medium (part 2). Tips Remember that strings in Python are immutable If you need to change string characters, you can transform it into…

Advent of code 2024 - Dia 09 de 25

O nono dia do Advent of Code foi ontem 09/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 , Dia 7 e Dia 8 . Classifiquei o nono problema como fácil (parte 1) e médio (parte 2). Dicas Lembre-se que strings em Python são imutáveis Se você precisa alterar os caracteres de uma string, você pode transformá-la em uma…

Advent of Code 2024 - Day 08 of 25

The eighth day of Advent of Code was yesterday 08/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 , Day 6 and Day 7 . I classified the eighth problem as easy (part 1) and easy (part 2). Tips The problem also uses a kind of maze to represent the map. If you consider each pair of antennas as points, you can…

Advent of code 2024 - Dia 08 de 25

O oitavo dia do Advent of Code foi ontem 08/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 , Dia 6 e Dia 7 . Classifiquei o oitavo problema como fácil (parte 1) e fácil (parte 2). Dicas O problema também utiliza uma espécie de labirinto para representar o mapa. Se você considerar cada par de antenas como pontos, pode…

Advent of Code 2024 - Day 07 of 25

The seventh day of Advent of Code was yesterday 07/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , Day 5 and Day 6 . I classified the seventh problem as easy (part 1) and easy (part 2). Tips Part 1 consists of applying a list of operations on a list of operands. You will have more operands than operators. You can…

Advent of code 2024 - Dia 07 de 25

O sétimo dia do Advent of Code foi ontem 07/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , Dia 5 e Dia 6 . Classifiquei o sétimo problema como fácil (parte 1) e fácil (parte 2). Dicas A parte 1 consiste em aplicar uma lista de operações sobre uma lista de operandos. Você vai ter mais operandos que operadores. Você pode usar iter…

Advent of code 2024 - Day 06 of 25

The sixth day of Advent of Code was yesterday 06/12/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , Day 4 , and Day 5 . I classified the sixth problem as medium (part 1) and difficult (part 2). Tips Again, a maze problem where each character can be seen as an element in a matrix. Since you’ll constantly need to check…

Advent of code 2024 - Dia 06 de 25

O sexto dia do Advent of Code foi ontem 06/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , Dia 4 , e Dia 5 . Classifiquei o sexto problema como médio (parte 1) e difícil (parte 2). Dicas Novamente, um problema com labirinto, onde cada caractere pode ser visto como um elemento em uma matriz. Como você vai precisar constantemente verificar…

Advent of Code 2024 - Day 05 of 25

The fifth day of Advent of Code was yesterday 12/05/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 , Day 3 , and Day 4 ! I classified the fifth problem as easy (part 1) and medium (part 2). Tips The problem has two inputs, a list of rules and a list of updates. The pages present in the rules list (X) must be printed before pages (Y).…

Advent of code 2024 - Dia 05 de 25

O quinto dia do Advent of Code foi ontem 05/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 , Dia 3 , e Dia 4 ! Classifiquei o quinto problema como fácil (parte 1) e médio (parte 2). Dicas O problema tem duas entradas, uma lista de regras e uma lista de atualizações. As páginas presentes na lista de regras (X) devem ser impressas antes das páginas…

Advent of Code 2024 - Day 04 of 25

The fourth day of Advent of Code was yesterday 12/04/2024! If you’re here for the first time today, don’t forget to read the posts about Day 1 , Day 2 and Day 3 ! I classified the fourth problem as medium (part 1) and hard (part 2). Tips If you visualize the inputs as a matrix, the solution becomes more natural. Consider that each character occupies a position y, x in the matrix, where…

Advent of code 2024 - Dia 04 de 25

O quarto dia do Advent of Code foi ontem 04/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 , Dia 2 e Dia 3 ! Classifiquei o quarto problema como médio (parte 1) e difícil (parte 2). Dicas Se você visualizar as entradas como uma matriz, a solução fica mais natural. Considere que cada caractere ocupa uma posição y, x na matriz, onde y é a linha e x a…

Advent of Code 2024 - Day 03 of 25

The third day of Advent of Code was yesterday 12/03/2024! If you’re here for the first time today, don’t forget to read the post about Day 1 and Day 2 ! I classified the third problem as easy (part 1) and medium (part 2). Tips You can use regular expressions to detect mul and extract numbers. In the second part, you can use a simple state machine to enable or disable multiplications.…

Advent of code 2024 - Dia 03 de 25

O terceiro dia do Advent of Code foi ontem 03/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler os posts sobre o Dia 1 e o Dia 2 ! Classifiquei o terceiro problema como fácil (parte 1) e médio (parte 2). Dicas Você pode utilizar expressões regulares para detectar mul e extrair os números. Na segunda parte, você pode utilizar uma máquina de estados simples para ativar ou desativar…

Advent of Code 2024 - Day 02 of 25

Second day of Advent of Code was yesterday 12/02/2024! If you’re here for the first time today, don’t forget to read the post about Day 1 ! I classified the second problem as easy (part 1) and medium (part 2). Tips You need to transform each input line into a list of integers. To determine if the list is increasing or decreasing, calculate the difference between the second and first…

Advent of code 2024 - Dia 02 de 25

Segundo dia do Advent of Code foi ontem 02/12/2024! Se você caiu aqui hoje pela primeira vez, não deixe de ler o post sobre o Dia 1 ! Classifiquei o segundo problema como fácil (parte 1) e médio (parte 2). Dicas Você precisa transformar cada linha de entrada em uma lista de inteiros. Para saber se a lista é crescente ou decrescente, calcule a diferença entre o segundo e o primeiro elemento. O…

Advent of Code 2024 - Day 01 of 25

The Advent of Code is a programming challenge that takes place between December 1st and 25th each year. The 2024 edition is the tenth event that is programming language independent - you can use any tools you want. Every day, starting from December first, a new problem is released. Although the name is Advent of Code ( Advent is a Christian event that precedes Christmas), the problems don’t…

Advent of code 2024 - Dia 01 de 25

O Advent of Code é um desafio de programação que acontece entre os dias 1 e 25 de dezembro de cada ano. O de 2024, é a décima edição do evento que é independente de linguagem de programação, você pode usar as ferramentas que você quiser. Todo dia, a partir do dia primeiro de dezembro, um novo problema é disponibilizado. Embora o nome seja Advent of Code ( Advento é um evento cristão que antecede o…

Acompanhador de Exercícios

Desde que escrevi meu livro tive uma ideia que poderia criar um aplicativo simples, para facilitar ou estimular a realização dos exercícios. Uma aplicação web que poderia ser usada no computador e mesmo a partir de um celular. Muitos anos depois, finalmente consegui colocar em prática uma parte do que havia imaginado. Eu espero, que se você estiver fazendo os exercícios do livro, use este…

Pesquisa Python no Brasil 2024

Resultados 2024 A pesquisa de 2024 ficou aberta entre 18/08/2024 e 27/11/2024. A participação da comunidade, infelizmente foi ainda menor que em 2023. Ano Participações 2024 338 2023 390 2022 897 Este ano o software da pesquisa foi atualizado de forma a possibilitar o preenchimento anônimo. No entanto, tal mudança não acarretou algum aumento na participação. O lado positivo é que as medidas…

Python 3.13

Ontem saiu o Python 3.13, uma das versões mais aguardadas do interpretador. A principal atração para mim sempre foi a possibilidade de rodar código em Python sem o GIL. O GIL, ou Global Interpreter Lock , assombrou o Python por muito tempo e sempre foi motivo de muitas discussões. Há muito tempo vem se tentando remover o GIL do interpretador. Mas o que ele atrapalha? Quando rodamos um código com…

As diferentes carreiras de informática

Como profissional de informática, você tem várias opções de carreira como empregado, freelancer, consultor ou empresário (empreendedor) entre outras. Vamos ver quais são as vantagens e desvantagens de cada uma dessas opções e depois discutir como combiná-las para testar vários caminhos antes de tomar uma decisão tão importante, como qual carreira seguir. Aqui não vamos nem falar entre a carreira…

Batalhas de Linguagem de Programação

Uma história não tão breve sobre a evolução das linguagens de programação Este artigo foi salvo de um longo post que fiz no Telegram, por volta de 2018! Ele foi achado quando eu tentava configurar o Helix no Windows, mas isto já é outra história :-D. Eu fiz algumas correções ao texto original e adicionei alguns links, mas lembre-se que o texto veio de um chat e é mais informal que um texto…

Inteligência Artificial e Carreira

Ainda vale estudar computação na era da inteligência artificial? Quanto tempo até a inteligência artificial geral (AGI) tirar nossos empregos? Eu escuto isso desde o fim dos anos 80 😃 Sistemas especialistas, CASE tools…no-code… AI. Haverá mudanças, isso é certo. Programador vai desaparecer? Duvido muito, o que vai acontecer é uma mudança de foco. Nós seremos provavelmente…

Compilando o gcc 13.2.0 no Ubuntu 22.04 LTS

Se você acompanha meu Twitter , já está sabendo que comecei uma sequência de vídeos no Youtube ( https://auladec.nilo.pro.br/ ) sobre a linguagem C para quem já sabe Python. Se você quer aprender Python, não deixe de visitar o site do meu livro para mais informações ( https://python.nilo.pro.br ). Nestes vídeos, eu peço para todo mundo usar o gcc versão 13.2.0 que está disponível a partir do…

Quarta edição de Introdução à programação com Python

Depois de muito trabalho revisando a terceira edição (mais de seis meses) e adicionando novos capítulos, a quarta edição do meu livro “Introdução à Programação com Python” está disponível. Esta jornada começou há muito tempo, creio ter escrito o capítulo 1 ainda no Brasil, de férias em Fortaleza, por volta de 2003. O livro era um projeto distante, mas que queria realizar há muito…

Pesquisa Python no Brasil 2023

Resultados 2023 A pesquisa de 2023 ficou aberta entre 01/03/2023 e 15/04/2023. Este ano teve como característica uma dificuldade não esperada em obter a participação da comunidade. Em 2023, a participação foi menos da metade das respostas obtidas na pesquisa de 2022 . Tudo começou ano passado, 2022, com o objetivo de conhecer melhor a comunidade e a responder algumas questões relativas a formação…

O Caminho Do Programador Júnior

O início de carreira do desenvolvedor Júnior não é um dos mais fáceis. Como conseguir um primeiro emprego para adquirir experiência, quando a vaga já exige experiência prévia? Como saber quando estamos prontos para começar a trabalhar? Um dos assuntos que tem chamado minha atenção no Twitter e em outras redes são novos profissionais tentando obter a primeira vaga. Eu imagino que o problema tem…

Pesquisa Python no Brasil 2022

Pesquisa Python no Brasil 2022 Mais uma vez no Telegram, fiquei com vontade de obter números para poder conhecer melhor a comunidade Python no Brasil. No grupo Python Brasil, temos mais de 5000 membros (Março/2022), porém muitos não participam das discussões, outros vem e vão. A ideia foi de circular uma pesquisa com Google Forms nos grupos e via Twitter. Qual a faixa etária? Que versão de Python…

Juros e lógica

Um dos problemas de lógica de programação que mais quebram a cabeça de quem está começando são os problemas com cálculo de porcentagens ou juros. Começa assim: Calcule 10% de aumento de um salário de R$2.500,00 Dependendo da base matemática do aluno, porcentagem se aprende na quarta/quinta série… alguns conceitos tem que ser relembrados. Como diz o nome, a 10% significa que a cada 100 do…

Programadores

Hoje é dia do trabalho e resolvi escrever um pouco sobre uma profissão que tem sido descaracterizada nos últimos tempos. Eu programo computadores profissionalmente, sou um desenvolvedor, analista de sistemas, arquiteto de software, mas sempre um programador. Quando estava estudando, o termo programador tinha muito pouco prestígio. Era normalmente usado com a conotação da pessoa com pouca instrução…

Efeitos gráficos com Python, Tkinter, Cython e Numba

Ontem, sábado, fiquei com vontade de criar um efeito de flamas (fogo) em Python. Este efeito era bem popular no início dos anos 90. Eu lembrava que o algoritmo era bem simples, mas tinha uns truques a fazer com a paleta de cores. Achei este artigo com a implementação em C: https://lodev.org/cgtutor/fire.html Do mesmo artigo, podemos ter uma ideia de como fica o efeito: Depois de ler o artigo e ver…

Consultas do Telegram - Questões interessantes

Semana passada tive a oportunidade de ver 3 questões interessantes a discutir nos grupos do Telegram, mas que a explicação seria grande demais para apresentar em um chat. Por que True, True, True == (True, True, True) retorna True, True, False ? Por que -2 * 5 // 3 + 1 retorna -3 ? Como adicionar tempos em Python? Por que True, True, True == (True, True, True) retorna True, True, False ? Esta…

Um bot para Telegram com o Jogo da Velha.

Este post é uma reedição do artigo publicado na Revista Portugal a Programar número 55 de março de 2017, páginas 26 a 34. Eu um mundo com tantos aplicativos de chat instantâneo, o Telegram se destaca pela rica API que disponibiliza para criação de bots. Os bots são pequenos programas que podem interagir com os usuários e prestar serviços, como executar comandos, gerenciar arquivos ou imagens e até…

Automatizando o novo blog

Após muitos anos de serviço, resolvi aposentar o blog antigo feito com [Blogger do Google] . Minha experiência com geradores de site estáticos sempre foi muito boa, desde os primeiros geradores de sites estáticos que escrevi ainda nos anos 90, alguns em Object Pascal (Delphi), outros mesmo em Perl! Nos últimos anos, tive o prazer de criar o site da primeira [PyCon Amazônia] , usando o [Pelican] e…

Migrando o servidor de chat para Python 3.6

Na época do lançamento do Python 3.4, eu estava tão contente com a integração do Asyncio que escrevi um servidor de chat aqui . O tempo passou e novas versões do Python foram lançadas. Resolvi então migrar o servidor para Python 3.6. Uma das grandes mudanças que ocorreram no Python 3.5, foi o suporte a async e await para substituir @asyncio.corroutine e yield from respectivamente. Esta pequena…

Consultas via Telegram

Seria legal se profissionais de informática dessem consultas como médicos ou advogados, mas algo nos impede de cobrar por tudo e esse desejo ou intenção de compartilhar ideias nos consome. Eu participo de vários grupos de Telegram, principalmente sobre Python, um deles é o PyCoding e o outro é o pybr . Normalmente eu leio os grupos quando estou usando meu celular, então nem sempre é possível…