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.
Posts for: #Python
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).
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.
A caixa é bem pequena, como um cartão de crédito. Na realidade, eu
encontrei o computador no meio de outras cartas
!
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:
E também cartas SD:
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.
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:
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:
- Codificação a usar em programas Python: por que UTF-8 é altamente recomendável
- Codificações em geral e problemas causados e resolvidos por ela
- 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.
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!
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:
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.
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:
-
Fazer um dump do repositório (até para backup) usando o svnadmin
svnadmin dump REPO_PATH > dump1
-
Utilizando o svndumptool.py:
svndumptool.py transform-revprop svn:author
NOME_ANTIGO NOME_NOVO dump1 dump2
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.
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.