Portando para o Python 3

Em 2008 foi lançada a versão 3 da linguagem Python com diversas funcionalidades novas, mas parcialmente incompatível com os programas feitos para Python 2. Nestes 5 anos, a adoção ainda não é grande exatamente por causa deste fator e porque normalmente as pessoas não querem ter que aprender os detalhes que são necessários para essa mudança.

Hoje em dia existem diversas ferramentas que permitem desenvolver software que seja compatível com as duas versões, mas para isso é preciso entender o que mudou e adaptar. Este é será um guia rápido com dicas para migrar para Python 3 e aproveitar as melhorias que essa nova versão traz.

Parte I – Quando migrar

Por causa da incompatibilidade que existe, muitos desenvolvedores não podem começar a migração pois dependem de diversas bibliotecas que ainda não fizeram sua parte. Hoje em dia, grande parte das bibliotecas mais importantes da linguagem já são compatíveis com Python 3, o que torna bem mais plausível converter seu código.

Para computação númerica NumPy, SciPy, Matplotlib, IPython e Pandas são as ferramentas mais importantes e todas já foram portadas. Em desenvolvimento web, os frameworks mais importantes – Pyramid e Django – também funcionam perfeitamente em Python 3. Para criar GUI’s, PyQT4 e Tkinter podem ser utilizados sem problemas.

– O que falta então?

Normalmente são as pequenas bibliotecas que fazem trabalhos específicos e que já não são atualizadas há anos. Inclusive, este é um bom momento para se livrar delas. Procure no PyPI por algo semelhante que resolva seu problema e que seja compatível com Python 3.

– E se eu não quiser migrar?

Aproximadamente em 2017, o suporte para Python 2 vai terminar e este já não recebe novas funcionalidades desde 2010, com o lançamento do Python 2.7. Atualmente, só atualizações de segurança e outros bugs sérios são lançadas. Além disso, em breve o Python 3 será instalado por padrão na maioria das distribuições Linux, como já o é no Arch Linux e será no Ubuntu 13.04 ou 13.10.

– Mas mexer em código antigo que já funciona há anos é difícil…

Sim, isso é um grande impedimento. O ideal é começar a aprender com código novo e, quando surgir a oportunidade (ou necessidade) modificar os códigos antigos. A dica é, comece pelas suas bibliotecas para depois partir para as aplicações.

– Por onde eu começo?

O meu texto preferido sobre o tema é Dive into Python 3 que traz todos os detalhes sobre a linguagem e mostra o caso de migração de um software real. Aqui só faço uma introdução sobre o tema.

Independente de querer migrar ou não o seu código, é interessante conhecer o Python 3 e passar suportá-lo em código novo. Mesmo que você esteja escrevendo código com bibliotecas obsoletas, existem boas práticas que deixam permitem desenvolver já pensando no futuro.

Continuar lendo Portando para o Python 3

Samsung lança o Galaxy S4

Ontem nos comentários do post sobre a morte do Google Reader eu recebi um comentário do meu camarada de longa data Rafael pedindo um post sobre o Samsung Galaxy S4.

Pô, PPJ, nenhum comentário sobre o Galaxy S4?  Desta vez os caras destroçaram a Apple.  Hardware absurdamente superior, mas além disso muitos recursos bacanas de usabilidade. O Zeletron vai publicar algo?

Escrevo um post, mas como já sabem que eu não curto Android (antes que voltem a falar: eu não tenho nada a ver com o Mobile Analyst que obviamente também detesta o Android) não irei comentar, só relatar os fatos.

A quarta edição da série S de aparelhos da Samsung foi lançada ontem com várias novidades:

  • Processador de 8 núcelos (em alguns países será um processador um pouco mais rápido mais de 4 núcleos)
  • 2GB de RAM
  • Câmera de 13MPx
  • Tela 1920×1080 – 5 polegadas
  • Reconhecimento de rolagem pela movimentação dos olhos
  • Jellybean 4.2.2
  • Espessura: 7.9mm
  • Peso: 130g
  • No Brasil será lançado no dia 26 de Abril por R$ 2499,00 (versão com rede 4G)

O TechTudo tem uma boa revisão detalhada do produto.

A revista Fortune tem uma análise bastante crítica do produto e um resumo do que tem sido dito na mídia com reviews positivas e negativas.

screen-shot-2013-03-15-at-8-30-23-am

Anunciado o fim do Google Reader

Na sua limpeza de primavera o Google anunciou que entre os produtos que serão exterminados está o Google Reader. Data da morte: Junho. Motivo, diminuiu a base de usuários. Até aí é o que você pode já ter lido em outros lugares.

Vamos tentar analisar um pouco mais a fundo as implicações disto.

Matar um produto como o Google Reader que muita gente usa, e muitos apps usam: Reeder, Flipboard, Pulse, etc, sinaliza para o usuário que a menos do buscador todos os produtos do Google são descartáveis. Basta um declínio na base de usuários que algo de sucesso como o Google Reader é rapado sem dó nem piedade.

O Reader vai para o céu dos serviços Google junto ao Buzz que ia destronar o Twitter, com o Wave que ia mudar o e-mail e muitos outros menos conhecidos.

Vendo esta forma de atuar do Google eu me pergunto: será que você vai migrar do Facebook para o Google+? Do Skype para o Google Voice? Do iOS para o Android? Que garantia o Google me dá que na próxima primavera a guilhotina não vai descer sobre Google+, Google Voice ou Android?

rip-google-reader-630x630

Dica para atualizar o seu Lumia para Windows Phone 7.8

Ontem tentei atualizar o meu Lumia 710 do Mango (Windows Phone 7.5) para o Windows Phone 7.8 e o Windows Phone Connector do Mac não achava nenhuma atualização.

Procurei em vários lugares e todos diziam que para forçar a atualização precisava fazer isso no Zune (Windows).

O blog que ensinava com mais detalhes o processo dizia que era preciso ser paciente porque o método nem sempre funcionava de primeira e precisava tentar até funcionar. Tentei umas 5 ou 6 vezes até o primeiro sucesso e tive que fazer tudo no Windows mesmo.

Depois tive que repetir o processo mais 2 vezes porque na primeira atualização e na segunda ele ainda foi para versões do Windows Phone 7.5. Na terceira e última ele subiu para o 7.8. Nenhuma das vezes funcionou de primeira, por isso repito o conselho do blog que eu li, tenha paciência e persistência.

lumia_710_7_8

Vamos aos passos. Se não funcionar, continue tentando que uma hora funciona. Acredite.

0. Se você está num Mac, arrume um Windows (sem choro!).
1. Abra o Zune
2. Antes de conectar o celular, desative a rede de dados celular e o wifi.
3. Conecte o celular na porta USB do computador.
4. Clique em configurações (lá em cima) e depois atualizar
5. Deixe o programa dizer que não há atualização para seu celular. Se ele disser que tem atualização, sorte sua!
6. Clique na opção de menu que fica abaixo de atualizar (ou qualquer outra), para sair daquela tela.

Agora vem o pulo do gato:

7. Clique novamente em atualizar e, o mais rápido que puder, desligue a conexão do seu computador (tirando o cabo de rede ou desativando o wifi).
8. Se tudo der certo, vai aparecer um botão dizendo que há atualização. Ligue novamente a internet do computador, siga os passos e atualize seu celular.
9. Caso apareça uma mensagem dizendo que não foi possível encontrar um servidor ou não foi possível atualizar, volte para o passo 4 e repita o processo até funcionar.

Depois de atualizar o celular, se ele ainda não tiver subido para o 7.8 (7.10.8858), desconecte o celular da USB e repita o processo.

Lumia_710_7_8_2

Coreia do Norte ameaça atacar os EUA com armas nucleares. E daí?

Eu nasci nos últimos anos da Guerra Fria e enquanto passava as férias em Angra dos Reis, meu tio e minha tia, que trabalhavam com energia nuclear, gostavam de nos explicar como funcionava uma bomba atômica, como era o processo de fusão e fissão nuclear. Naqueles anos, um pouco antes de Mikhail Sergeyevich Gorbachev, vivíamos ainda sob a constante ameaça de uma guerra nuclear.

Quem nasceu depois da guerra fria pode achar esquisito o medo que tínhamos da guerra atômica e do espanto que hoje tive ao ler a notícia de que a Coreia do Norte afirmou estar pronta para atacar os EUA com armas nucleares. Durante a guerra fria falar algo assim era declarar guerra. Hoje os EUA nem deram muita importância ao assunto.

Um amigo de infância que enveredou por carreira de humanas ligou e perguntou: Você acha que isto pode acontecer? Eu respondi a ele e agora detalho um pouco mais.

Pode, mas é altamente improvável pelas razões que vão a seguir.

1) A Coréia do Norte não tem provavelmente como atingir os EUA. É fato que a Coreia do Norte conseguiu colocar um objeto em órbita. Mas daí a ter um ICBM (intercontinental balistic missile) funcionando vai uma distância razoável. O que pode acontecer é que eles joguem a bugiganga nuclear deles para cima e acertem em algum lugar dos EUA, mas daí a dizer que vai acertar em Washington vai uma boa distância.

2) A Coréia do Norte consegue acertar talvez o Havaí com o míssil Musudan-1, mas convenhamos que não é uma coisa que vá lhes ajudar em nada a não ser fazer um novo Pearl Harbor.

3) A Coréia do Norte é louca mas não é burra. Uma das consequências de um ataque nuclear é que o contra-ataque é garantido. É um dos pilares do Mutual Assured Destruction que garantiu a paz durante a guerra fria.

4) É importante notar que China e Rússia, que tem armas atômicas que funcionam, não vão curtir muito um míssil norte coreano que pode estar desgovernado com armas atômicas. Também não vão gostar muito do contra-ataque dos americanos que transformaria Pyongyang e redondezas num grande deserto.

E o que o Kim Jong-un ganha com a bravata? Por enquanto ele ganhou mais sanções e corte de comida que os americanos forneciam como ajuda humanitária. Talvez seja um jogo de cena para manter o poder, talvez seja uma maluquice que lhe custe o poder.

Imagem do Dailymail

É possível alguém “hackear” a eleição do Papa?

Com a gentil permissão do autor, reproduzimos aqui, traduzido para o português o texto do famoso especialista em segurança Bruce Schneier.  Uma versão anterior deste ensaio foi publicada na CNN e é uma expansão do ensaio que Bruce Schneier escreveu no conclave de 2005. O original deste artigo pode ser encontrado no site do autor. Caso você queira saber mais sobre o conclave indicamos este outro site com um resumo.

Conclave 2013

Enquanto o Colégio de Cardeais se prepara para eleger um novo papa, as pessoas que trabalham com segurança tem me perguntado sobre o mecanismo de eleição. Como funciona, e quão difícil seria hackear a votação?

As regras para as eleições papais estão imersas na tradição. João Paulo II modificou-as em 1996, e Bento XVI deixou as regras praticamente intocadas. A “Universi Dominici Gregis sobre a vacância da Sé Apostólica e a eleição do Romano Pontífice” é surpreendentemente detalhada.

Todos os cardeais com menos de 80 são sujeitos ativos para votar. Esperamos, neste conclave, 117 para votar (Nota do Tradutor: a estimativa no dia de hoje é de 115). A eleição tem lugar na Capela Sistina, dirigida pelo Cardeal Camerlengo da Igreja. A cédula é inteiramente baseada em papel, e toda a contagem dos votos é feita à mão. Os votos são secretos, mas todo o resto do procedimento é aberto aos presentes.

Primeiro, há a fase de pré-escrutínio

“Pelo menos duas ou três” cédulas de papel são dadas a cada cardeal, presumivelmente para que um cardeal tenha uma ou outra sobressalente caso de ele cometa um erro. Em seguida, nove gerentes do processo são selecionados aleatoriamente dentre os cardeais: três “escrutinadores” que contam os votos; três “revisores” que verificar os resultados dos escrutinadores, e três “Infirmarii” que recolhem os votos daqueles que estão doentes demais para estar na capela. Diferentes conjuntos de gerentes são escolhidos aleatoriamente para cada votação.

Cada cardeal, incluindo os nove gerentes do processo daquela eleição, escrevem seu escolhido para Papa em uma cédula retangular “na medida do possível com uma letra de que não possa ser identificada como o sua.” Ele, então, dobra o papel longitudinalmente e o segura no ar para que todos vejam.

Quando todos tiverem escrito o seu voto, a fase de escrutínio da eleição começa. Os cardeais se dirigem ao altar um por um. No altar há um cálice grande, com uma patena – uma rodela de metal rasa usada para guardar hóstias durante a Missa – cobrindo o cálice. Cada cardeal coloca sua ficha dobrada sobre a patena. Então ele pega a patena e desliza seu voto dentro do cálice.

Se um cardeal não pode caminhar até o altar, um dos escrutinadores – à vista de todos – faz isso por ele.

Se algum cardeal está demasiado doente para ir à capela, os escrutinadores dão aos Infirmarii uma caixa lacrada com uma ranhura, e os três Infirmarii juntos vão recolher os votos. Se, ainda assim, um cardeal está doente demais para escrever, ele pede a um dos Infirmarii para fazer isso por ele. Na volta a caixa é aberta, e as cédulas são colocados na patena e no cálice, uma de cada vez.

Quando todas as cédulas estão no cálice, o primeiro escrutinador sacode-o várias vezes para misturá-las. Em seguida, o terceiro escrutinador transfere as cédulas, uma por uma, a partir do primeiro cálice para o outro, contando-as no processo. Se o número total de cédulas não está certo, as cédulas são todas queimadas e os votos começam novamente.

Para contar os votos, cada cédula é aberta, e o voto é visto por cada escrutinador, chegando ao terceiro este lê em voz alta. Cada escrutinador escreve o voto numa folha de registro. Isto tudo é feito à vista de todos os cardeais.

O número total de votos que cada pessoa recebeu é escrito em uma folha de papel separada. Cédulas com mais de um nome (votos múltiplos) serão consideradas nulas, e suponho que o mesmo aconteça com as cédulas com nenhum nome escrito nelas (votos em branco). Cédulas ilegíveis ou ambíguas são muito mais prováveis de acontecer, e suponho que eles serão descartadas também.

Depois, há a fase de “pós-escrutínio” feita a contagem dos votos os escrutinadores determinam se há um vencedor. No entanto nós ainda não terminamos.

Após isto os revisores verificar todo o procedimento: cédulas, folhas de anotação, contagem, soma, tudo. E então, as cédulas são queimadas. É daí que a fumaça vem: branco, se um Papa foi eleito, preto se não – a fumaça preta é criada pela adição de água ou um produto químico especial nas cédulas.

Para ser eleito Papa é necessária uma maioria de dois terços dos votos mais um. Este é o ponto da legislação onde o Papa Bento XVI fez uma mudança. Tradicionalmente, uma maioria de dois terços, sempre foi exigida para a eleição. O Papa João Paulo II mudou as regras para que após cerca de 12 dias de infrutíferas votações, uma maioria simples fosse suficiente para eleger um Papa. Bento XVI reverteu essa regra.

Então agora a pergunta: quão difícil é “hackear” este processo?

Em primeiro lugar o sistema é completamente manual, o que impede qualquer tipo e forma de ataque tecnológico que podem atingir os atuais sistemas de votação mundo afora.

Em segundo lugar, o pequeno número de eleitores – todos se conhecem – isto torna impossível que uma pessoa de fora consiga interferir na votação de qualquer maneira. A capela é esvaziada e trancada antes de cada votação. Ninguém vai se vestir como um cardeal e esgueirar-se na Capela Sistina. Em suma, o processo de verificação dos eleitores é o melhor possível.

Um cardeal não pode colocar múltiplas cédulas quando ele vota. O complicado ritual patena e cálice garante que cada cardeal vote apenas uma vez – seu voto é visível – e também mantém uma mão na haste do cálice que contém os outros votos. Não que eles não tenham pensado sobre isso: Os cardeais estão em “sobrepeliz” durante a votação, a sobrepeliz tem mangas de renda translúcidas sob uma curta capa vermelha, isto faz com que truques manuais sejam muito mais difíceis. Além disso, provavelmente a soma seria errada.

As regras prevêem isto de outra forma: “Se durante a abertura das cédulas os escrutinadores encontrarem duas cédulas dobradas de tal maneira que elas pareçam ter sido feitas por um único eleitor, se esses votos têm o mesmo nome, eles são contados como um voto; se no entanto eles tem dois nomes diferentes, nenhum dos dois votos será computado, no entanto, em nenhum dos dois casos a sessão de votação é anulada “. Isso me surpreendeu, pois parece ser mais provável que isto aconteça apenas por acidente e resulte em que os votos de dois cardeais não sejam contados.

Cédulas de votações anteriores são queimadas, o que torna mais difícil utiliza-las para fraudar a urna. Mas há um detalhe pequeno: “Se, acontece uma segunda votação imediatamente após a primeira, as cédulas da primeira votação serão queimada apenas no final, juntamente com as da segunda votação.” Eu suponho que é assim para que haja apenas uma nuvem de fumaça para as duas votações, mas seria mais seguro queimar cada conjunto de cédulas antes da próxima rodada de votação.

Os escrutinadores são os que estão na melhor posição para modificar votos, mas é muito difícil. A contagem é feita em público, e há várias pessoas verificando cada passo. Seria possível que o primeiro escrutinador, se ele fosse bom em passes de mágica, trocar uma cédula de votação por outra antes de registrá-la. Ou para o terceiro escrutinador trocar as cédulas durante o processo de contagem. Fazer uma cédula grande faria este tipo de ataque mais difícil. Outra opção, seria controlar as cédulas em branco melhor, só distribuir uma para cada cardeal em cada votação. Eu suponho que como um cardeal pode mudar de idéia durante o processo de votação faz sentido a distribuição de mais de uma cédula.

Há tanta checagem e rechecagem que é praticamente impossível que um escrutinador anote errado os votos. E, uma vez que os escrutinadores são sorteados aleatoriamente em cada votação, a probabilidade de haver um conluio é extremamente baixo. Talvez uma forma de ataque fosse burlar o sistema de seleção de escrutinadores, que não está bem definido no documento. Manipular a seleção de escrutinadores e revisores parece um primeiro passo necessário para manipular a eleição.

Se existe alguma fragilidade possível no processo seria na contagem.

Não há nenhuma razão real para fazer uma precontagem, isto dá ao escrutinador que faz a transferência uma chance de trocar cédulas legítimas com outras que ele já havia colocado na manga. Agitar o cálice para randomizar as cédulas é inteligente, mas colocar as cédulas em uma bola de arame giratória seria mais seguro – embora menos reverente.

Eu gostaria também de acrescentar a exigência de usar algum tipo de luva branca para evitar que um escrutinador esconda um lápis ou caneta sob a ponta de suas unhas. No entanto a exigência de escrever por extenso o nome do candidato forneça já algum tipo de resistência contra este ataque.

Provavelmente, o maior risco é a complacência. O que pode parecer bonito na sua tradição e ritual durante a primeira votação, poderia facilmente tornar-se pesado e chato depois da vigésima votação, e há a tentação de pegar um ou outro atalho para economizar tempo. Se os cardeais fizerem isto, o processo eleitoral se torna mais vulnerável.

Na mudança do processo em 1996 se permitiu que os cardeais vão à capela para as votações e voltem para seus dormi voltam da capela para suas salas de dormitório, em vez de ser bloqueado na capela o tempo todo, como foi feito anteriormente. Isso torna o processo um pouco menos seguro, mas muito mais confortável.

É claro que, um dos Infirmarii podia fazer o que quisesse ao transcrever o voto de um dos cardeais doentes. Não há nenhuma maneira de evitar isso. No entanto se o cardeal enfermo estiver mais preocupado com isto, que com a privacidade, ele poderia pedir a todos os três Infirmarii que testemunhassem o que foi escrito na cédula.

Há também enormes empecilhos sociais, religiosos na verdade – para aquele que quiser fraudar o voto. A eleição ocorre em uma capela e em um altar. Os cardeais fazem um juramento ao colocar seus votos – mais um dissuasor. O cálice e patena são os instrumentos utilizados para celebrar a Eucaristia, o mais sagrado ato da Igreja Católica. E os escrutinadores são explicitamente exortados a não formar qualquer tipo de conspiração, ou fazer planos para influenciar a eleição, sob pena de excomunhão.

Outro importante risco de segurança no processo é a espionagem do mundo exterior. A eleição deve ser um processo completamente fechado, sem nenhum tipo de informação para o exterior, exceto o vencedor. No mundo de hoje com alta tecnologia, isto é muito difícil. As regras declaram explicitamente que “a capela deve ser protegida contra dispositivos de gravação e transmissão, com a ajuda de pessoas confiáveis com capacidade técnica comprovada.” Isso foi muito mais fácil em 2005 que vai ser em 2013.

Quais são as lições deste processo?

Primeiro, sistemas abertos conduzidos dentro de um grupo conhecido tornam a fraude eleitoral muito mais difícil. Cada passo do processo eleitoral é observado por todos, e todos se conhecem, isto torna muito difícil que alguém consiga encobrir alguma coisa.

Segundo, as eleições pequenas e restritas são mais fáceis de proteger. Este tipo de processo funciona para eleger um Papa ou um presidente de clube, mas fica rapidamente difícil numa eleição de grande escala. A única maneira de sistemas manuais funcionarem num grupo maior seria através de um mecanismo de pirâmide, com pequenos grupos reportando seus resultados obtidos manualmente para cima até chegar às autoridades centrais de tabulação.

E terceiro: Quando um processo de eleição é deixado para amadurecer ao longo de um par de milhares de anos, você consegue algo surpreendentemente bom.