Posts for: #Python

Asyncio e corotinas

Continuando a série sobre o módulo asyncio do Python 3.4, vou apresentar as corotinas e como elas simplificam a escrita de nossos programas com o loop de eventos. Com a saída do Python 3.4, eu atualizei o livro de Introdução à Programação com Python. Alguns assuntos fogem ao escopo do livro que é destinado a iniciantes. Eu estou continuando uma série de posts curtos sobre alguns tópicos que acho interessantes e quem sabe até podem virar base para um novo livro. Clique aqui para ler o primeiro artigo.

Ler mais

Python asyncio - Métodos assíncronos em Python

Com a saída do Python 3.4, eu atualizei o livro de Introdução à Programação com Python. Alguns assuntos fogem ao escopo do livro que é destinado a iniciantes. Eu vou começar a escrever uma série de posts curtos sobre alguns tópicos que acho interessantes e quem sabe até podem virar base para um novo livro.

Uma das novidades do Python 3.4 é o módulo asyncio que traz várias rotinas para chamada de métodos assíncronos em Python. A programação assíncrona é um pouco diferente do que normalmente estamos habituados a escrever em Python, mas é uma excelente alternativa a utilização de threads e uma boa escolha para resolver problemas com muitas entras ou saídas (I/O).

Ler mais

Python Computer e Raspberry Pi

Preparação

Segunda (30/07/12), recebi meu primeiro Raspberry Pi, comprado na Element 14. Depois de um mês de espera, recebo na caixa do correio, mas um tanto tarde na Bélgica… 21h. Na verdade, chegou perto do meio dia, mas como não estava em casa, o carteiro deixou como carta normal mesmo.
P1060883
A caixa é bem pequena, como um cartão de crédito. Na realidade, eu encontrei o computador no meio de outras cartas Open-mouthed smile!
O problema é que não tinha nenhuma loja aberta para comprar um cabo ou outro, caso precisasse. O jeito era improvisar.
Eu sabia que ia precisar de um Hub USB com alimentação, pois a USB do Pi não fornece muita energia. Sabendo que o computador estava para chegar, eu comprei um Hub USB de 4 portas, ainda no sábado, aproveitando a visita ao supermercado:
P1060882
E também cartas SD:
P1060878
Pois o Pi só dá boot pela carta SD. Comprei uma carta de 4GB e outra de 8GB, pois uma era classe 4 e a outra classe 10. Aparentemente o Pi tem problemas com cartas classe 10, mas a minha funcionou perfeitamente, mas sem ganho de performance notável.
Antes mesmo de conectar o computador, é preciso baixar o Linux e gravá-lo na carta SD. Instruções detalhadas em inglês são encontradas aqui. Se você usa Windows, precisa baixar o Win32DiskImage. Ele não tem setup, é só descompactar e executar direto. Você precisa ser administrador do computador para gravar a imagem. Eu utilizei o Raspbian, mas outras distribuições também estão disponíveis. A imagem do Raspbian tem uns 450MB e ao descompactá-la você terá o arquivo .img, necessário para o Win32DiskImage.
Gravar a imagem é bem fácil. Introduza o cartão SD no leitor do computador. Normalmente o Windows se oferece para abri-lo. Aproveite a chance para verificar se este está vazio, pois a gravação da imagem vai apagar todo o conteúdo do cartão. Com o Win32DiskImage aberto, selecione o arquivo .img com o Raspbian e ao lado verifique se o drive com a carta SD está correto. Se você tem mais de uma carta SD ou caso apareça mais de uma opção, verifique o que está fazendo, evitando assim perder seus dados. Clique no botão Write e espere a gravação ser finalizada.
Com a carta SD pronta, resta a conexão do Raspberry Pi.
P1060886
Como já estava tarde, montei uma mesa de trabalho no chão da sala, usando uma caixa de monitor e uma folha A4 para dar noção do tamanhão do Raspberry Pi. Sem medir muito, eu chuto que numa folha A4 caberiam 9 Raspberry Pis!
Esta placa contém um SoC (System on a Chip) fabricado pela Broadcom, no caso do modelo B, um BCM2835 com:

Ler mais

Por que UTF-8 e não ASCII para o Português? (PARTE II)

Continuação do post, originalmente feita na lista Python-Brasil:

Vou tentar de novo, a thread já falou de 3 coisas diferentes:

  1. Codificação a usar em programas Python: por que UTF-8 é altamente recomendável
  2. Codificações em geral e problemas causados e resolvidos por ela
  3. Um bug do Python no Windows, quando o prompt é configurado para página 65001

Vou tentar explicar para todo mundo, pois é um tópico recorrente.

Mas antes de voltar nestes tópicos, temos que voltar a arquivos.

Ler mais

Por que UTF-8 e não ASCII para o Português? (PARTE I)

Um outro post que fiz na Python-Brasil:

Os colegas já falaram sobre o por quê do UTF-8.

Eu gostaria apenas de lembrar que o assunto é mais complicado do que parece, por exemplo no Python 2.7:

# -*- coding: utf-8 -*-
print "Acentos: áéíóúãõç"
print u"Acentos2: áéíóúãõç"

Execute o programa acima no Windows, pode ser pelo IDLE ou pelo console:

C:\Users\nilo\Desktop>\Python27\python.exe test.py
Acentos: ├í├®├¡├│├║├º├ú├Á
Acentos2: áéíóúçãõ

Você deve ter obtido bons resultados apenas na linha do Acentos2. Se a string não é marcada com unicode, vai ser simplesmente impressa como uma sequência de bytes, sem tradução. Se tiver o u na frente, como em acentos2, o Python saca que precisa traduzir de unicode para cp850, no caso do console aqui de casa. Já no Linux, as duas linhas produzem resultados corretos!

Ler mais

Livro de Introdução Programação com Python já está venda

Nada como uma noite fria e cheia de neve para colocar o blog em dia!
Meu livro de programação foi publicado pela Editora Novatec e já está disponível para venda.
Eu criei uma página sobre o livro, com links para livrarias e emails de contato:

https://python.nilo.pro.br

O livro foi escrito de forma a apresentar novos conceitos gradualmente, com exemplos e exercícios.   Quando comecei a dar aulas, eu ensinava Basic e Pascal. Com o Basic, tinha o problema dos números de linha. Com o Pascal os ponto-e-vírgula… era muita coisa para escrever antes de começar a programar. Nestes casos, o uso de um pseudo-código claro e simples, livre de símbolos em excesso era interessante. Eu evitei usar pseudo-código ou fluxogramas, pois acredito que ao se aprender a programar, o melhor é ir direto ao ponto. Com a linguagem Python, isso tudo fica muito mais simples. Escrever em pseudo-código pode até ser mais complicado que escrever em Python!
O leitor/aluno precisa ver algo acontecer para continuar estudando. O importante é saber ler o programa e entender o que vai acontecer quando o programa for executado. Eu realmente acredito que o aluno deve saber se o programa está correto antes de executá-lo. A execução é apenas uma confirmação. Uma seção sobre rastreamento foi incluída no livro, para preservar esta importante etapa no aprendizado de programação.

Ler mais

Alterar nome de usuários com SVN

Eu precisei mudar o nome do usuário que fez commits no repositório SVN ao migrar de uma máquina para outra. No caso, o repositório havia sido criado para uso local, com usuários locais e depois integrado para uso do departamento.

Para trocar os nomes dos usuários:

  1. Fazer um dump do repositório (até para backup) usando o svnadmin

    svnadmin dump REPO_PATH > dump1

  2. Utilizando o svndumptool.py:

    svndumptool.py transform-revprop svn:author
    NOME_ANTIGO NOME_NOVO dump1 dump2

Ler mais

One Laptop per Child

Eu me tornei professor por acidente. No colégio, como era bom em matemática, sempre ensinava alguém… depois a coisa foi ficando mais séria. Comecei a ensinar matemática particular ainda no primeiro grau… aos 18 anos eu já era instrutor de cursos de programação. Acho que no primeiro curso eu ensinei Clipper :-)

Em 1994, virei professor de lógica e técnica de programação e também de linguagens de programação I e II. Professor de algoritmos, Cobol e C. Desde então passei a me interessar seriamente por educação e a me impressionar com a velocidade que as pessoas aprendem. Confesso que ensinar a programar não é fácil, aprender também não. Com um pouco de prática se melhora, mas nunca fiquei contente… continuo procurando novas formas de ensinar programação. Nos últimos anos, eu ensinei Python. Uma linguagem que gosto muito e uso no meu dia a dia.

Ler mais

Python your life

Eu sou um cara esquecido. Eu realmente não lembro certas coisas, mas outras eu não esqueço. Uma vez, ainda no final dos anos 90, putz esqueci em que ano foi… um amigo de faculdade comentou sobre uma tal linguagem “píton”. Ele disse ser super prática, muito boa, mesmo sendo script.

Na época eu já trabalhava com Linux e qualquer coisa para ajudar era bem vinda. Baixei o tal do Python e fiz o tradicional imprima os primos, usando listas, claro! Depois um aplicativo para procurar arquivos repetidos no HD. Foi o suficiente para me libertar de Perl, até então a melhor coisa do mundo script para mim.

Ler mais