Se você já usou o TurboGears para criar aplicações, mesmo as mais simples, já se deparou com exceções levantadas por pequenos problemas como não enviar um dicionário de retorno para uma função. A resolução desses problemas na maioria das vezes é bem simples, você lê o erro reportado pelo tracebak, procura o arquivo, depois a linha, que gerou a exceção e conserta.
Mas você que tem uma aplicação um pouco mais crescida já deve ter tido problemas em que só olhar o traceback não resolveu, você teve que implantar vários trechos de código para verificar o que estava ocorrendo e provavelmente perdeu horas do seu dia tentando corrigir um erro que era simplesmente um espaço a mais em uma string.
Já faz um tempo que para tentar resolver esse problema eu sobrescrevi o método _cp_on_error do CherryPy fazendo com que toda exceção gerada pelo TurboGears que não fosse tratada, dispararia um email me informando do problema e o estado de algumas variáveis, por exemplor a sessão do CherryPy, naquele momento. Esse método de automatização de reportagem de erro ajudou a resolver muitos bugs, mas não ajudava em nada enquanto em desenvolvimento.
Hoje enquanto lia sobre profile do CherryPy descobri uma simples configuração, tg.fancy_exception, que faz milagres e com toda a certeza vai me ajuda na hora de “debugar” problemas durante o desenvolvimento, para habilitar:
Com essa configuração habilitada quando houver qualquer exceção não tratada, mesmo que você tenha sobrescrito o _cp_on_error, ao invés de um traceback em texto puro, será mostrado um traceback em HTML com algumas opções a mais:
A opção mais importante e interessante, ao meu ver, é uma shell do python que pode ser ativada clicando no “+” ao lado do contexto que você quer debugar:
Logo abaixo do traceback você ainda tem o botão “extra data” que mostra dados recebidos pelo CherryPy e mais abaixo em “text version” uma versão em texto puro do traceback e dados extras.
Eu recomendo a utilização do tg.fancy_exception somente em desenvolvimento pois dar um acesso a shell do Python para qualquer um pode ser perigoso, na verdade não sei se esta opção funciona em produção.
Ontem eu estava vendo o pequeno post do Gustavo sobre como os rorbôs estão cada vez mais “galados” e lembrei da vontade que sempre tive e ainda está guardada de estudar a tal da robótica.
O engraçado é que sempre quando falo que sou apaixonado por robótica a primeira coisa que me dizem é para fazer um curso de Eletrônica ou Engenharia da Computação, mas eu não estou nem um pouco afim de passar dois anos da minha vida, no mínimo, estudando cálculo e depois mais dois anos tentando fazer um braço pegar um copo de alumínio sem amassá-lo.
Eu gosto do pensamento de controlar um robô mesmo que não diretamente, adicionar inteligência, tornar uma junção de motores e sensores em algo útil, o que eu gosto mesmo é de programar! Eu fico horas imaginando algorítimos para um pequeno robô que ficaria, por exemplo, rodeano minha casa em busca de pessoas estranhas.
O que resolveria facilmente o meu problema é o Minsdstorm, um kit de robôs com componentes “plug and play” da LEGO, depois de meses entrei novamente no site e mais uma vez me apaxoinei por ele. Quando eu tiver muito dinheiro pra gastar ainda vou comprar um bichinho desse.
Para quem tem um pouco de simpatia por robótica aí estão alguns vídeos interessantes que vino YouTube:
Primeiro curta metragem dos produtores Jonatas Oliveira e Aninha D’Aguiar. O curta retrata uma pacata caneta, encenada pela Compactor 07, que em um dia qualquer se vê em apuros sendo perseguida por uma mão, mão do Jonatas Oliveira, que quer acabar com a pobre esferográfica.
Esta foi uma das minhas primeiras filmagem de curta estilo stop motion no computador, já tinha feito alguns testes anteriores com câmeras filmadoras analógicas, mas era muito complicado deixar a câmera parada enquanto pressionava o botão de gravar.
Usando o iStopMotion tudo se torna simples. É só enquandrar e pressionar a barra de espaço, assim você terá o seu primeiro frame, mude a posição do seu personagem ou até mesmo a câmera e pressione mais uma vez barra de espaço, assim você terá gravado o seu segundo frame e assim continua até você terminar o vídeo.
Outro ponto positivo é a facilidade de editar um frame, você pode apagar, mover ou substituir, tudo isso na linha do tempo no parte inferior da janela.
E por ele ser realmente simples, não precisar de configurações complicadas, é muito mais fácil se concentrar no que você está fazendo e deixar a criatividade te levar.