sexta-feira, 11 de janeiro de 2013

Django simple captcha no Ubuntu 12.10

Nenhum comentário:
Hoje eu estava desenvolvendo um projeto em Django que precisa de Captcha no cadastro de usuários. Já tenho familiaridade com o Simple Captcha, e resolvi usar novamente.

Esta aplicação Django tem uso bastante simples, mas eu não conseguia fazer a exibição das imagens corretamente. Eu usei a ferramenta virtualenv para montar meu ambiente de desenvolvimento, e as bibliotecas estavam instaladas lá via pip. A biblioteca PIL é uma dependência de Simple Captcha, justamente por permitir a criação de imagens por código. No meu formulário, ficou assim:

captcha = CaptchaField( label = 'Repita os caracteres a seguir')


Mas a exibição do formulário continha apenas o texto alternativo. O comando manage.py runserver mostrava um código 500 para a URL das imagens do captcha. Acessando a imagem da URL em si, pude verificar o seguinte erro:

The _imagingft C module is not installed

Um erro que já tinha me deparado antes, mas nunca registrei a solução. Essencialmente, a instalação via pip compila a bilioteca PIL, e o uso do Simple Captcha requer o suporte a Freetype2 no momento da compilação para poder gerar as imagens corretamente. Para corrigir isso no Ubuntu 12.10, basta colocar as referências certas antes da compilação:

# ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/
# ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/
# ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/

Depois, basta instalar a biblioteca PIL:

pip install pil

A mensagem final da compilação deverá mostrar algo como

    --------------------------------------------------------------------
    PIL 1.1.7 SETUP SUMMARY
    --------------------------------------------------------------------
    version       1.1.7
    platform      linux2 2.7.3 (default, Sep 26 2012, 21:51:14)
                  [GCC 4.7.2]
    --------------------------------------------------------------------
    *** TKINTER support not available
    --- JPEG support available
    --- ZLIB (PNG/ZIP) support available
    --- FREETYPE2 support available
    *** LITTLECMS support not available
    --------------------------------------------------------------------

E deverá funcionar! Encontrei a solução neste link.

domingo, 15 de abril de 2012

Instalando Android 2.3.7 no LG GT540 usando Ubuntu

9 comentários:
Como disse antes, eu estava tentando atualizar meu celular. Depois de algum tempo pesquisando, encontrei uma maneira de instalar uma ROM personalizada usando (quase exclusivamente) Ubuntu. No meu caso, instalei o Android 2.3.7 (Gingerbread), a partir de uma ROM conhecida como SwiftDroid 2.0, que é baseada no CyanogenMod 7.

Meu celular veio com Android 2.1, sem fastboot [1], por isso o processo foi feito em duas etapas: instalação de uma ROM com fastboot e a instalação do SwiftDroid. A primeira parte, não consegui fazer diretamente do Ubuntu, a segunda pode ser feita em Ubuntu sem problema algum. Se você já conseguir ativar o modo fastboot diretamente, pode seguir diretamente para a instalação da ROM Gingerbread.

Instalando uma ROM com fastboot: fiz esta etapa usando Windows. Li relatos de pessoas que teriam feito esta etapa usando Windows no Virtualbox, mas comigo não deu certo; por isso usei o Windows 7 para esta primeira parte. Eis os passos:

  1. Baixar e instalar drivers do celular, e o software de instalação de ROMs da LG o KDZ Updater. O pacote do KDZ contém o arquivo msxml.msi, necessário para rodar o KDZ Updater. Os drivers não são necessários se você já tiver instalado no LG PX Suite.
  2. Baixar a ROM com fastboot, versão Android 2.1.
  3. Rodar KDZ Updater, usando os parâmetros: type = 3GQCT, mode = DIAG, ROM = Android_2.1_Fastboot.kdz (arquivo que acabamos de baixar).

Agora é só clicar em "Launch software update" e esperar (não desligue o telefone).

Instalando ROM Android 2.3.7 (Gingerbread): uma vez que você tenha uma ROM com fastboot no telefone, é possível usar o Ubuntu para instalar uma nova versão de Android a qualquer momento, basta ter os arquivos certos. Os arquivos são: imagens do SwiftDroid 2.0 e os executáveis do ADB e fastboot. Conecte o telefone com Debug USB ativado e digite o seguinte na linha de comando (descompacte os arquivos na mesma pasta):

./adb reboot bootloader

E espere o telefone reiniciar em modo fastboot. Se tudo estiver certo, o telefone apresentará o logo da LG e, depois, uma tela preta, apenas com o backlight ligado. Na sequência:

sudo -s
./fastboot -w #apaga dados de usuário! faça ***BACKUP***
./fastboot flash boot boot.img
./fastboot flash system system.img
./fastboot flash recovery recovery.img
./fastboot reboot

O fastboot vai instalar os arquivos na partição de boot, depois na de sistema e, finalmente, na de recuperação. O processo todo demora em torno de 8 minutos. Vale lembrar que é bom fazer backup, já que configurações e aplicativos serão apagados.

Nota: fiz este procedimento usando Ubuntu 11.10. Além disso, eu já tinha o SDK Android instalado, pode ser necessário para você também.

-----

[1] - o fastboot funciona como um bootloader, ao iniciar o celular em modo fastboot, é possível descarregar uma nova versão do sistema operacional. Tal qual outros sistemas baseados em GNU/Linux, Android tem partições de boot e sistema, e o fastboot permite descarregar uma imagem nestas partições.

Referências:
http://ericcarneiro.wordpress.com/2012/01/09/overclock-no-lg-gt540/
http://forum.xda-developers.com/showthread.php?t=927379
http://android.stackexchange.com/questions/17499/install-custom-rom-from-linux-on-a-lg-gt540/21263#21263

sábado, 7 de abril de 2012

Acesso root no Android usando Ubuntu

Nenhum comentário:
Como já disse antes, tenho um LG GT540, um celular Android modesto. Como se sabe, a LG disponibiliza a versão 2.1 do Android (codinome Eclair) para este celular.

Uns dias atrás, resolvi que arriscaria atualizar para uma versão mais nova, a 2.3.7 (codinome Gingerbread). Antes de mais nada, tinha de fazer backup dos dados e principais aplicativos. Como tinham me recomendado usar o Titanium Backup para isso, eu precisava de acesso root no meu celular.

Instalar o acesso a root é bem simples, você vai precisar deste arquivo (contém o ADB e arquivos de instalação para o celular). É preciso habilitar USB debugging no celular para funcionar também. Descompacte os arquivos numa pasta e execute os comandos a seguir:

./adb push rageagainstthecage-arm5.bin /data/local/tmp/rageagainstthecage
./adb shell chmod 4755 /data/local/tmp/rageagainstthecage
./adb shell /data/local/tmp/rageagainstthecage
./adb wait-for-device
./adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
./adb push su /system/xbin/su
./adb push su /system/bin/su
./adb shell chmod 4755 /system/xbin/su
./adb shell chmod 4755 /system/bin/su
./adb shell rm /data/local/tmp/rageagainstthecage

Simples, né? Depois disso, recomendo instalar o aplicativo Superuser no celular para controlar quais aplicativos podem ou não ter privilégio de root.

Adaptado daqui.

Notas:
  1. Não desligue o celular antes de concluir o processo.
  2. Testado no Ubuntu 11.10.
  3. Este artigo parte da premissa de que o celular está rodando a versão Android 2.1 instalada de fábrica.
  4. Necessita do pacote ia32-libs instalado no Ubuntu.

quarta-feira, 4 de abril de 2012

Avaliando pessoas

2 comentários:
Eu participo da organização da FEBRACE há algum tempo já, e, entre minhas responsabilidades está avaliar projetos. Em resumo,o processo funciona assim: estudantes submetem seus projetos através de um sistema online, um conjunto de mestres e doutores avaliam e selecionam algo como 240 a 300 projetos.

Agora, como saber quais são os melhores entre todos os que foram submetidos? Sem dúvida, este é o maior desafio conceitual para a avaliação da feira. A abordagem comum para este problema é definir um conjunto de critérios de avaliação e um conjunto de observáveis. A partir disso, chega-se a uma lista ordenada dos projetos. Não acaba aí, mas já dá para captar a ideia. Eu quero falar das dificuldades.

A FEBRACE é uma feira nacional com diversas áreas do conhecimento, e isto implica em alguns filtros para a seleção de finalistas. Seleção esta feita à distância, por sinal.

Os projetos submetidos são frutos de um processo conduzido por meses pelos estudantes. Mas se você não tiver acompanhado o desenvolvimento do projeto em si, como saber se ele cumpre requisitos mínimos de qualidade? É difícil saber, ainda mais pelo fato dos avaliadores terem poucos observáveis disponíveis. São formulários, relatório e eventualmente um vídeo disponíveis.

O que quero dizer é: o processo de seleção nem sequer permite selecionar os melhores projetos de fato. Só é possível capturar os mais bem relatados. Um avaliador não acompanha os estudantes no dia a dia, logo a avaliação tem que se basear no material entregue. É a única coisa disponível.

Dessa forma, projetos mal documentados tem muito mais chance de ser mal avaliados que outros bem relatados. Sempre é bom lembrar, a submissão é o momento no qual o estudante descreve o projeto. Olhando assim, é como contar o projeto para quem nunca ouviu falar dele, portanto o estudante tem de prover elementos observáveis capazes de fazer o avaliador entender o projeto. Sem os observáveis fica mais difícil, e a culpa nem é nossa.

sexta-feira, 30 de março de 2012

Das peripécias de ser tutor

Nenhum comentário:
Há algum tempo atrás, eu disse que tinha começado a implementar um sistema para o Campus Mobile.Embora eu não tenha mencionado, participei, com outras pessoas, também da concepção do programa: formato, regulamento, inscrições, seleção, tutoriais, mini cursos, oficinas e palestras (praticamente tudo, como você pode ver).

Agora, o projeto já está rolando, e sou um dos tutores do programa. Antes do projeto entrar na fase de seleção dos candidatos, era difícil ter ideia de quais seriam as demandas de ser um tutor. Claro que já tínhamos um conjunto de conteúdos para trabalhar, mas ajustes são necessários de acordo com o público. O andamento do projeto, e eu sou responsável por isso, deixa claro: selecionamos cerca de 90 candidatos com projetos diferentes, com formações mais diferentes ainda. E nosso objetivo é dar condições para que cada um se desenvolva.

O grande desafio de ser tutor é o da diversidade. Nós somos responsáveis por orientar vários projetos diferentes dentro de um mesmo cronograma, com participantes de origens e conhecimentos diversos. No caso do Campus Mobile, praticamente tudo isso é feito à distância.

Para mim, estas condições reforçam o papel de orientação dos tutores. Além do fato de não termos nenhuma autoria nos projetos, o compromisso do programa é possibilitar a cada um dos participantes aprimorar seus conhecimentos, é mostrar novas possibilidades, é questionar, é propor alternativas, enfim, é orientar.