terça-feira, 17 de junho de 2014

Como instalar um ambiente de desenvolvimento Python no Windows

Hoje eu fui desenvolver com Python no meu notebook com Windows 8 e descobri que não tinha nem pip, nem virtualenv, nem mesmo o setuptools instalado... E agora, José? Como é que você prepara uma máquina no Windows para trabalhar com Django, Flask, suds e outras tantas coisas legais que só o Python pode oferecer?

Eu tentei várias coisas, baixei scripts .py para rodar diretamente, instalei programas e mais programas dentro e fora do Cygwin, versões 64-bit e 32-bit de uma infinidade de pacotes e nada parecia dar certo. Então, resolvi começar de novo, explicando para vocês meu procedimento.

Primeiro de tudo, você precisa do Python, lógico. A versão mais atual é a 3.3, mas muita gente ainda usa a 2.7. Eu sou uma dessas pessoas. Estou fazendo um curso de "Introdução à Ciência da Computação e Programação com Python" no site edx.org e eles usam a versão 2.7.

Instalar o Python é fácil. Ele tem um instalador para Windows e tudo mais... Ainda assim, você precisa atentar para as variáveis de ambiente. Você deve ajustar o seu PATH. Algo assim:

PATH=%PATH%;C:\Python27;C:\Python27\Scripts
Agora, sim, você pode instalar o setuptools, que vai te permitir instalar o virtualenv, o pip e os demais utilitários do Python que vão te permitir instalar as bibliotecas e tudo mais.

Para instalar o setuptools, segui as orientações do site oficial, ou seja, usei o PowerShell. Eu nunca tinha usado isso, não sabia nem o que era. Aparentemente, é só mais um console, como o cmd e o cygwin. Apertei o botão do windows, escrevi "PowerShell", cliquei com o botão direito do mouse e pedi para Executar como Administrador. No console que se abriu, rodei o comando a seguir:

(Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -

Parece mágica, mas na verdade o que isso faz é baixar o arquivo ez_setup.py (tipo um wget ou curl) e depois executa ele com o python.

Eu já tinha colocado ali em cima a pasta Python27\Scripts no Path, mas é agora que isso se torna útil. O instalador do setuptools grava ali o arquivo easy_install.exe. Se você não incluiu a pasta no Path, inclua agora. Depois, saia do PowerShell e abra um console com permissões de administrador. Eu fiz assim: (Windows) cmd (botão direito) Executar como Administrador.

Dentro desse console de administrador é que nós vamos executar o easy_install para instalar o pip, assim:

easy_install pip

E agora, com o pip, você pode instalar o virtualenv:

pip install virtualenv

O virtualenv no Windows funciona um pouco diferente do Linux. Para ativar e desativar o ambiente virtual, ele grava arquivos .bat no diretório Scripts. Então para usar um novo ambiente virtualenv você faria:

virtualenv venv
cd venv
Scripts/activate.bat

Em algumas de minhas primeiras tentativas, este ambiente não funcionava e o erro não era claro, mas quando finalmente consegui uma mensagem legível descobri que o problema era de permissões. Bastou executar os comandos em um console como administrador que isso resolveu o problema. Não é a melhor solução, mas deu certo na falta de algo melhor.

Se tiverem outras sugestões de boas práticas, sou todo ouvidos. Sempre trabalhei com Java e sempre com outras pessoas (ou equipes) que cuidavam da infraestrutura, então tudo isso é meio novidade para mim.

ATUALIZAÇÃO (em 18/06/2014): E o git? Pois é, instalar as ferramentas Python sem usar o Cygwin tem essa desvantagem de te deixar fora do ambiente Unix-like e sem essa ferramenta essencial... Mas se você instalar o Git para Windows,  pode optar por utilizá-lo no cmd (console normal do Windows) e por permitir que ele instale também outros comandos Unix nesse ambiente, como o ls, ssh, etc. Aí, sim, você nem vai sentir tanta falta do Cygwin...

Para instalar alguns pacotes, como o pandas, você vai precisar instalar no Windows o Visual C++ 2008 Express Edition. Há algumas perguntas e respostas no StackOverflow sobre isso.

Abs.,
Otávio

segunda-feira, 16 de junho de 2014

Como acessar os Dados Abertos da Câmara dos Deputados usando Python

A Câmara dos Deputados tem um serviço muito interessante chamado Dados Abertos. A ideia é que qualquer cidadão tenha acesso a informações sobre Deputados e sobre a tramitação de propostas de leis. Você não precisa se cadastrar nem nada, basta saber montar suas consultas. E foi para ensinar a fazê-lo que resolvi escrever este post.

O serviço Dados Abertos é um WebService. Um webservice é como se fosse um sistema de informação sem telas. Você pode consultar o que quiser, mas não tem um formulário para preencher o que quer. E o retorno do sistema não é uma planilha bonitinha nem um relatório em PDF, é só um monte de informação que você mesmo tem que tratar.

Eu resolvi usar python para fazer minhas pesquisas. Eu estou usando a biblioteca suds, que é um cliente leve de webservices para python.

Para instalar no linux, usei:
$  sudo pip install suds

Para poder fazer isso, você tem que ter o python e o pip instalados.

Depois você faz o seguinte:

$ python

>>> from suds.client import Client  #importa o cliente


Aí você define a URL:
>>> url = 'http://www.camara.gov.br/SitCamaraWS/Proposicoes.asmx?wsdl'

e acessa:
>>> client = Client(url)


Pronto! Você já tem acesso ao WebService. Agora você pode olhar os métodos disponíveis de forma já tratada pelo suds:

>>> print (client)


Um dos métodos que ele mostra como disponíveis é esse:
     ListarSiglasTipoProposicao()

Para consumí-lo, você faz o seguinte:
>>> resultado = client.service.ListarSiglasTipoProposicao()

O retorno é um xml composto pela tag <siglas> que possui vários objetos <sigla> com atributos "tipoSigla", "descricao" e outros.

Se quiser ver o "tipoSigla" do terceiro item, você pode acessá-lo assim:

>>> resultado['siglas']['sigla'][2]._tipoSigla

E o retorno vai ser: 
ANEXO


Agora digamos que você quer saber quantas medidas provisórias estão em tramitação no Congresso Nacional neste momento...

Você poderia utilizar o método ListarProposicoes. Nossa chamada "print client" mostra este método da seguinte forma:

Methods (11):
            ListarProposicoes(xs:string sigla, xs:string numero, xs:string ano, xs:string datApresentacaoIni, xs:string datApresentacaoFim, xs:string idTipoAutor, xs:string parteNomeAutor, xs:string siglaPartidoAutor, xs:string siglaUFAutor, xs:string generoAutor, xs:string codEstado, xs:string codOrgaoEstado, xs:string emTramitacao, )

Olhando a documentação do método, você vai ver que alguns campos são obrigatórios. Um deles é o ano, infelizmente. Então, para descobrir quantas medidas provisórias (de qualquer ano) estão em tramitação no Congresso, você tem que fazer várias chamadas como esta:

>>> resultado = client.service.ListarProposicoes('MPV', None, 2014, None, None, None, None, None, None, None, None, None, 1)
O 'MPV' no começo significa Medida Provisória e o 1 no final indica que a proposição está tramitando. Para ver quantas deram você usa o seguinte comando:

>>> len(resultado['proposicoes']['proposicao'])

Se quiser ver vários anos, pode executar o seguinte:
>>> for a in range(2005,2015):
...    resultado = client.service.ListarProposicoes('MPV', None, a, None, None, None, None, None, None, None, None, None, 1)
...    print(str(a) + ': ' + str(len(resultado['proposicoes']['proposicao'])))
...

Para minha surpresa, no momento em que fiz a consulta, havia 12 proposições do tipo Medida Provisória de 2014, e dezenas de outras de outros anos. Na verdade, como vocês podem ver em outra consulta, quase todas as situações de proposições são consideradas "Ativas", inclusive "Retirado pelo Autor", "Perdeu a Eficácia", "Enviada ao Arquivo" e "Arquivada"... Acho que terei que montar meu próprio conceito de "Ativa". Conto para vocês depois....

Abs.,Otávio

segunda-feira, 9 de junho de 2014

Bagunça Organizada II - Oficina / Laboratório em Casa, versão 2014

Há cerca de um ano, num dos primeiros posts neste blog, mostrei como eu organizava minhas coisas de brincar com arduino. Basicamente, cabia tudo em um único gaveteiro.

De lá para cá, acumulei um bocado de tralha e as coisas tomaram conta de todo um cômodo da minha casa, que a gente chamava de escritório, mas agora é quase um hackerspace particular.

Como de lá para cá eu também peguei gosto pelos vídeos, gravei um para vocês conhecerem o meu espaço e terem ideias de como organizar um cantinho para seus hobbies também na casa de vocês.


Ver direto no YouTube: http://youtu.be/p9fdkQGMRUk?list=UUgP9UJRSxYe687HhHYsBwYA

Para ver mais dicas como esta, clique no marcador "organização", logo abaixo.

Um abraço!
Otávio


terça-feira, 3 de junho de 2014

Tricarneiro, o drone - Ep. 4 - Fiação e Solda

Vídeo sobre a colocação dos componentes eletrônicos e fios na estrutura do drone.

O vídeo mostra uma primeira montagem provisória e ensina como fazer o cabo que serve de hub para distribuição da energia que sai da bateria para os ESC's.

A placa controladora (KK2.1) é alimentada pelos ESC's e alimenta o servo na cauda do tricóptero.




Para ver todos os posts deste projeto, você pode clicar na tag "tricarneiro" logo abaixo.

Tricarneiro, o drone. Ep. 3 - Estrutura

Neste vídeo, eu queria mais mostrar o processo de montagem da estrutura do drone do que efetivamente falar alguma coisa. Para o vídeo não ficar muito chato, fiz alguns "timelapses", vídeos montados a partir de fotos tiradas a intervalos regulares.

O vídeo mostra a marcação dos buracos do tricóptero, a pintura das peças que formam os "trens de pouso" do drone, a furação e a montagem.



Para ver todos os posts deste projeto, você pode clicar no marcador "tricarneiro".

Como instalar o Manjaro 0.8.9 em um netbook


Quem acompanha meu blog pode ter acompanhado a minha busca pela melhor distribuição Linux para um netbook velho que eu tinha aqui em casa.

Escolher um sistema operacional não é uma coisa muito simples, ainda mais se você tem necessidades específicas.

Eu queria um linux que rodasse bem no meu Asus EeePC Surf 2g. Ele só tem 512MB e veio com um sistema operacional customizado pela ASUS que não tem atualizações disponíveis há muitos anos.

Eu já tinha tentado instalar um Puppy Linux e outras distribuições, sem nenhum sucesso. Aí eu tentei o Arch Linux uma vez, mas não consegui colocar uma interface gráfica. Então tentei uma segunda vez, desta vez em um desktop, mas não fui muito mais longe. Por fim, larguei de mão do Arch Linux puro e instalei o Manjaro no meu netbook, mas não dei muita explicação. No meu post sobre o assunto, falei mais sobre os problemas que encontrei no caminho.

Pois bem, depois de passar mais um tempo com ele encostado, resolvi pegar de novo o netbook para mexer. Fui atualizá-lo e tive alguma dificuldade com o Openbox e problemas de permissões na hora de atualizar via console com o pacman. Achei que era uma boa oportunidade de começar do zero e registrar aqui o passo a passo completo.

Antes de tudo, você deve entrar lá na página do Manjaro e fazer o download da versão que você deseja instalar..

Desta vez escolhi a versão XFCE. Na verdade, da última vez eu acho que não tinha escolhido essa porque o pendrive que eu tinha disponível era de 1GB e o arquivo tinhas uns 70MB mais do que isso... Literalmente, foi por muito pouco que não consegui usá-la... Desta vez apelei e formatei um pendrive de 16GB, apesar de ter um menor em alguma gaveta... Se você tiver um de 2GB, acho que é o tamanho ideal. Se quiser usar um pendrive com mais que isso (como eu fiz), fique à vontade..

Lembre-se de que você vai precisar de duas mídias: um cartão SD de 6GB (ou mais) para instalar o sistema operacional que vai rodar no netbook e um pendrive de 2GB (ou mais) para servir de "disco de instalação". Você pode usar dois pendrives, mas não adianta ter dois cartões SD. O meu netbook só tem um leitor de cartão SD. Então, a não ser que você tenha um leitor de cartões USB, você precisa de um pendrive e um cartão.

Na minha tentativa anterior, eu tinha escolhido a versão Openbox e daquela vez o pendrive de 1GB serviu bem e o cartão de 4GB também. Aparentemente, a edição XFCE é mais "gulosa". Para essa, você vai precisar de um pendrive de 2GB e um cartão de 6GB.

Vamos começar pela preparação do pendrive de instalação. Toda vez que eu mencionar pendrive agora vai ser a mídia onde está a imagem de instalação, que prepararemos agora. Quando eu falar em cartão SD, estou falando da mídia em que o Manjaro ficará instalado em definitivo, que vai ficar morando dentro do netbook. Se você estiver usando mídias diferentes, tenha isso em mente.

Sugiro que a formatação do pendrive seja feita no modo FAT32, que é o padrão de fábrica, normalmente. Este padrão funciona bem em qualquer sistema operacional. É bom também dar um rótulo (label) para o pendrive, vai ajudar a identificá-lo durante a instalação.

Para gravar o disco de instalação no pendrive, você vai precisar do UNetbootin. O que o UNetbootin faz é gravar uma imagem ISO em um pendrive, o que corresponde a queimar um CD, como se dizia antigamente. Uma imagem ISO é um grande arquivo compactado que contém todo o conteúdo de um CD, DVD ou Blu-Ray. Ela guarda os arquivos e alguma configuração do CD original, então não adianta você simplesmente descompactá-la no pendrive, você precisa de um programa que transforme a partição do pendrive numa cópia exata da partição que deu origem a imagem. É isso que o UNetbootin faz.

Escolha com cuidado a letra do drive onde vai gravar a imagem, para evitar apagar alguma coisa.

A primeira vez em que rodei o UNetbootin deu errado, lógico. Fui dar o boot no netbook e ele dizia que a imagem estava inválida ("Invalid or corrupt kernel image"). Aí formatei o pendrive sem usar a opção rápida (levou uma meia hora) e gravei de novo. Aí, sim, deu errado de novo! Então deixei de ser teimoso e fui olhar se o arquivo tinha sido baixado direitinho. Como se faz isso? Conferindo o checksum. Checksum é uma análise de arquivos que gera um código a partir dos dados do arquivo. Dois arquivos idênticos devem gerar exatamente o mesmo código, como no processo de assinatura digital. A maioria dos sites que têm grandes arquivos para baixar disponibiliza o checksum para você conferir. No meu caso, usei o sha1sum.


Mesmo no Windows, eu gosto de usar terminal unix, então uso muito o Cygwin. É como o "cmd" do Windows, mas você usa "ls" ao invés de "dir", por exemplo. Ou seja, os comandos do Linux. Dentro do Cygwin você pode instalar pacotes, como no Linux. Não me lembro se o sha1sum já vem com ele ou instalei, mas rodei de lá. É só dar um "sha1sum arquivo.iso" que ele te mostra o checksum do arquivo. O comando demora um pouquinho para rodar (uns 2 minutos), não se preocupe.

O meu checksum deu bem diferente do que dizia o site do Manjaro, então meu arquivo estava obviamente corrompido. Por isso tive de baixar de novo e conferir. Na segunda vez deu certinho, como vocês podem ver na imagem. O sha1sum que obtive no Cygwin foi exatamente o mesmo do arquivo que baixei do site.

Hora de rodar o UNetbootin de novo. Gravei a imagem no pendrive com ele, ejetei o pendrive e o inseri no netbook. 

Para dar boot pelo pendrive, meu netbook (Asus Eee PC 2G Surf) exige que eu use a porta USB da esquerda. Depois de inserir o pendrive, você liga o netbook e fica apertando ESC várias vezes, até surgir a tela de escolher mídia.

 No meu netbook apareceram três opções de mídia:
  • HDD, que é drive SSD embutido no netbook;
  • USB DISK, que é o pendrive onde gravei a imagem de instalação com o UNetbootin; e
  • CardReader SD0, que é o cartão SD onde pretendemos instalar o sistema operacional.
 Escolha USB Drive e você vai ver a tela de boot do UNetbootin.


Nesta tela, a opção "default" não faz nada... É a opção "start" que dá o boot pela imagem que está no pendrive. Vai entender... O processo de inicialização mostra vários erros (não foi possível montar etc/sda e outros), mas ele inicializa mesmo assim. Levou um tempinho, mas o Manjaro XFCE iniciou...

Uma vez dentro do Manjaro, você será recebido com uma grande tela de boas vindas e terá a opção "Install Manjaro" disponível logo na primeira tela. Você poderá inclusive escolher o idioma em que quer fazer a instalação. E, sim, nosso "Português do Brasil" está entre as opções!




Ao iniciar a instalação, o Manjaro faz três verificações iniciais: se você tem 6GB disponíveis, se você está ligado à rede elétrica e se você está conectado à internet. De início, eu não estava conectado à internet, mas ao clicar no ícone de rede desconectada (dois cabos de rede com um x vermelho), pude escolher a minha rede Wi-Fi e me conectar, sem nem sair da tela de instalação. Depois você escolhe o fuso horário onde está e segue para a parte que exige atenção: Tipo de Instalação.

Eu continuo (anos depois) achando que o Linux que vem de fábrica nesses EeePC é bem feito e merece continuar nele. Além disso, o HD interno (SSD, na verdade) desse bicho só tem 2GB, então não adianta tentar instalar o Manjaro nele. Assim, nossa melhor opção é gerenciar as partições nós mesmos para escolhermos o nosso cartão SD como local de instalação.

Escolhi "Gerenciar as partições da instalação do Manjaro (avançado)".

O instalador vai abrir uma tela de particionamento muito parecida com o GParted e outros programas com a mesma finalidade. Escolha com cuidado o dispositivo que quer particionar. Se estiver usando mídias de diferentes tamanhos (como eu), fica fácil. Escolha a que tem o tamanho mais próximo do cartão SD. Meu cartão é de 8GB e o mais próximo disso é o 7.40GB que ele mostra. Se seu pendrive e cartão tiverem o mesmo tamanho, olhe o rótulo das partições montadas. Lembra que falei para formatar o pendrive com um nome fácil? É por isso.

O Manjaro pode te pedir para escolher um tipo de tabela de partições. Eu escolhi msdos (MBR).

Particione o cartão SD com um espaço inicial de, pelo menos, 3MB. Você pode fazer isso criando uma partição de 3MB inicialmente (de qualquer tipo). Depois você cria uma segunda partição primária com ponto de montagem "/" (root). Aí você apaga a primeira. Você só precisa de uma partição. Há muita discussão sobre a melhor forma de particionar um disco, mas estamos trabalhando com um cartãozinho SD, melhor deixar tudo junto misturado mesmo.

Eu usei o tipo "ext4". Também existem inúmeras possibilidades de escolha de filesystem, mas meu cartão vai morar dentro do netbook, então peguei o tipo que pareceu me dar maior performance, sem me preocupar com compatibilidade com outros sistemas operacionais. Se fosse me preocupar em compartilhar esse cartão com máquinas Windows ou MAC's, eu provavelmente ficaria com o fat32.

A minha partição ficou como na imagem abaixo, 4MB iniciais (acho que já tinha esse espaço lá) e o restante todo como ponto de montagem "/" (root). Esta tela eu já tirei de dentro do Manjaro instalado.


O Manjaro também pergunta onde ele deve instalar o gerenciador de inicialização (GRUB). Eu pedi para ele colocar no mesmo cartão SD. Isso quer dizer que eu vou ter que ficar sempre apertando ESC mil vezes para entrar no meu Manjaro, mas não me importo. Assim, se alguém for fuçar no netbook, vai cair no sistema operacional original (Xandros), enquanto eu e meus leitores saberemos que o Manjaro está ali escondido ; ).

Agora, o Manjaro vai perguntar "Quem é você?". Ele quer que você defina seu usuário. Aparece uma caixinha "Utilize a senha do usuário root". Não entendi bem. Deve ser algum problema de tradução... Eu marquei e defini a senha do root também. É melhor você escolher do que ele definir algo que todo mundo sabe, menos você. Deixei o Logon automático, para facilitar a vida. Se você tiver alguma preocupação de acesso indevido, peça para ele exigir senha no log in.

Depois de todas essas configurações, o Manjaro vai ficar um tempo trabalhando... Ao final, ele avisa: "Instalação finalizada! Deseja reiniciar o sistema?". Você pode dizer que sim e correr para o abraço, seu Linux está instalado!




O Manjaro já vem com o Firefox, LibreOffice e uma boa seleção de outros programas. Ainda não precisei instalar outras coisas, mas vi que ele tem uma opção "Adicionar / remover programas".

Depois de instalar, ele ficou acusando atualizações a fazer, mas a janela não cabia na tela para eu aceitar. Se isso acontecer com vocês, vocês podem segurar a tecla Alt e arrastar um ponto qualquer da janela. Não precisa pegar a janela por cima, não. Assim você consegue achar os botões abaixo.

Aqui, a atualização não funcionou de cara. Aparentemente, uma das coisas a atualizar era o gerenciador de janelas, então tive que ir para o terminal em modo texto. Os comandos a rodar eu peguei numa resposta ao fórum Manjaro Brasil. Apertei Ctrl+Alt+F1, fiz o login e rodei os seguintes comandos:


sudo pacman -Syy
sudo pacman -S manjaro-keyring
sudo pacman -Suu

sudo pacman -Suu

Demorou um bocado! Aparentemente tinha muita coisa para ser atualizada. Se a tela ficar preta, não se assuste, é só uma proteção de tela. Aperte "Ctrl" ou outra tecla "inofensiva", que ele volta.

O último comando eu rodei mais  de uma vez mesmo. Ele atualiza uma parte e depois atualiza o resto.

Estou há alguns dias com o sistema rodando e estou gostando. Ele demora um pouquinho para iniciar no meu netbook, mas depois fica espertinho. Minha ideia é ficar com ele por perto para usar principalmente o terminal. Às vezes dou uma desconfigurada no meu Ubuntu e é legal ter uma outra máquina para dar um "ssh" nele e ver o que está acontecendo.

Se você tem um netbook como o meu e expectativas muito altas, devo dizer logo: mesmo rodando o Manjaro o meu netbook não dá conta de ver vídeos do YouTube. Os vídeos até abrem e você consegue ouvir o áudio e tal, mas é só para alguma emergência audiovisual. Para dar uma navegadinha na internet ele serve bem.

Se quiserem saber sobre algum programa específico, por favor indiquem nos comentários. Eu escolho os temas do blog com base na popularidade dos posts existentes, então há boas chances de suas sugestões aparecerem numa próxima atualização.

Para ver outros posts similares, clique nas tags manjaro, linux ou netbook, abaixo.

Abs.,
Otávio