Aprendendo por Exemplo

Aprender a programar envolve também leitura. Leitura de código-fonte. É muito útil quando sabemos exatamente o que querermos, mas enfrentamos dificuldades, podermos consultar códigos de terceiros para coisas similares. Foi o que aconteceu hoje com o código para fazer a barra de progresso do Redutor funcionar corretamente.

Felizmente existem sistemas de busca próprios para código-fonte, que podem ser bem úteis. Atenção, hein! A utilidade que estou propondo é aprendizado e tira-dúvidas, não é copiar e colar para entregar como trabalho de faculdade...

Conheço duas ferramentas desse tipo, mas devem haver outras espalhadas por aí...

bc: Calculadora Shell ou Linguagem?

De acordo com o arquivo README do GNU bc, em tradução livre, GNU bc é uma linguagem de processamento numérico de precisão arbitrária. Sua sintaxe é similar ao C, mas difere em muitas áreas substanciais. Ela suporta execução interativa de comandos. O bc é um utilitário incluído no padrão POSIX P1003.2/D11.

Até hoje eu conhecia o bc como "aquela ferramentazinha legal que quebra galho na hora de fazer contas simples". Por exemplo, quanto dá em bytes 3G? Claro, 3*1024*1024*1024! Mas como calcular isso dá trabalho, eu simplesmente chamava o bc pelo shell, escrevia essas contas simples, mas trabalhosas e ele mostrava prontamente o resultado: "3221225472" (3.221.225.472, pra quem, como eu, prefere ler números com pontos :-P).

Mas a novidade (ao menos para mim) é que o bc não é só uma "calculadora no shell", ele permite fazer muito mais coisas!

De posse dessas informações, escrevi para bc aquele velho algoritmo de achar raízes de equações de segundo grau. Fiz em 16 linhas sem me preocupar com nenhum possível recorde nem nada. O arquivo está em anexo para servir como exemplo para mais pessoas que não conheçam o bc.

É claro que o bc não vai resolver todos os problemas de programação. Mesmo sendo uma linguagem, é uma linguagem muito restrita, mas dá pra brincar, principalmente se você curte Matemática...

Special: 

Trem 0.4.0

Para quem não viu o início, Trem é uma aplicação web para facilitar coleta de trabalhos/provas em laboratório. Seu nome vem de uma metáfora: cada sessão de prova é tratada como um vagão e cada trabalho enviado é tratado como um pacote sendo depositado dentro do vagão.

Esta deve ser a primeira liberação do Trem que já pode ser utilizada, embora eu ainda não tenha testado com um conjunto de usuários. Tipo, todos os recursos realmente essenciais já estão implementados. A saber:

  • Controle de usuários
    • Cadastro de novo usuário feito pelo próprio usuário, sem intervenção
    • Dois tipos de usuário cadastrados: gestor e usuário normal, sendo que gestor pode lidar com vagões enquanto usuários normais podem enviar pacotes para vagões sob certas condições;
    • Um super-usuário. A única coisa que pode fazer no sistema é gerenciar outros usuários.
  • Controle de vagões
    • Usuários gestores podem criar vagões, definindo extensão dos arquivos a receber (pacotes);
    • Usuários gestores podem abrir ou fechar vagões (vagão aberto aceita pacotes, enquanto vagão fechado não) , bem como ter acesso a todos os pacotes depositados no vagão, em suas versões mais recentes;
  • Controle de pacotes
    • Usuários não-gestores podem depositar pacotes em vagões que estejam abertos;
    • Cada usuário comum pode enviar apenas um pacote por vagão;
    • Cada usuário pode substituir um pacote enviado por ele próprio para um vagão que ainda esteja aberto. O sistema diz quantas revisões foram feitas pelo usuário.

Embora a arquitetura da aplicação esteja realmente sofrível (depois de tentar usar horas vagas pra fazer aplicações simples de maneira complexa sem obter bons resultados - nestes casos as pausas atrapalham e o projeto anda muito devagar a ponto de desmotivar sua continuação -, resolvi mudar a estratégia), o sistema está funcional e cheio de validações para evitar sql injection ou coisas do tipo.

Sua instalação envolve criar um banco de dados e usuário em um MySQL, configurar o arquivo config.inc.php; criar uma pasta chamada files e dar permissão para que o usuário do Apache possa criar arquivos na pasta. Daí, crie o primeiro usuário usando a própria interface do Trem e coloque o seu e-mail (enquanto administrador) como o "root" no config.inc.php.

Detalhe: matrícula aqui segue padrão da UFAL no interior para alunos (4 dígitos + G + 4 dígitos) ou a matrícula SIAPE do Governo Federal.

Características desejadas para versões seguintes:

  • Opção para o gestor recolher um arquivo zip contendo todos os pacotes de um vagão;
  • Renovação de senha utilizando e-mail para quem esquecer a própria senha;
  • Escrever a ajuda de todas as páginas (painel lateral);
  • Melhorar o gerenciamento de usuários, já que o número de usuários tende a crescer muito no sistema.
Special: 

PortablePython

PortablePython

Outra vantagem do Python em relação a outras linguagens de scripts é a existência do Portable Python.

Você conhece PortableApps? É uma forma de rodar programas no Windows a partir do pendrive, sem precisar instalar nada. Muito útil se você, por exemplo, é cliente freqüente de lan house. Você pode ter o Firefox, o Thunderbird, o VLC e até mesmo o OpenOffice.org rodando a partir do seu pendrive, sem precisar de acesso como administrador às máquinas e sem incomodar ninguém.

A lista de programas que funcionam dessa forma é enorme. Dentre eles, está o Portable Python. Todo o ambiente Python: o interpretador e até mesmo o editor Scite. Vale a pena, viu? (ainda não sou usuário freqüente de lanhouses, mas gostei de saber desse projeto)

Claro que você pode utilizar o Portable Python sozinho, mas se você instalar o PortableApps, fica mais interessante, já que ganha um menu. Neste caso, descompacte o Portable Python para a pasta PortableApps no dispositivo com PortablApps já instalado.

Pense como um cientista da computação, usando Python

Livro em PDF

O livro "How to Think Like a Computer Scientist: Learning with Python", de Allen Downey, Jeffrey Elkner e Chris Meyers, trata de conceitos básicos de Programação, com o intuito de ser utilizado como material didático de cursos de Ciência da Computação.

Este livro foi traduzido para português (o trabalho ainda está sendo refinado, mas está quase pronto), trabalho que iniciou com Cláudio Berrondo e contou até o momento com a colaboração de mais dezesseis pessoas.

Não participei da equipe de tradução, mas como o projeto é muito bom e eu gostaria de ter o material em formato PDF, em duas colunas, resolvi "diagramar" o livro. É esta versão diagramada do livro que disponibilizo aqui a partir de agora.

O projeto de tradução tem um site, onde você pode tanto acompanhar o progresso como discutir e colaborar ativamente com o que falta.

A Famosa Nikki

Meu bandolim se chama Nikki e foi trazido de Salvador há quase três anos. É um bandolim-menina e é minha companheira de muitas viagens. Já foi comigo pra Maceió, Palmeira, Salvador (de volta), João Pessoa, Porto Alegre...

Fabricada pela Shelter, em estilo de bandolim country, é semi-acústica e tem a mania de quebrar cordas em mi (já me mordeu uma vez num caso lendário. Pedro, Quebrangulo e Aline estavam presentes e podem testemunhar).

Tem já um bocado de fans ela! Também fazem parte da família hoje: a Nicole (violão), a Nina (rabeca), a Brigit (contra-baixo) e as gaitas diatônicas Mel (de Melpômene, em Dó), Mila (em Dó), Urânia (em Sol) e Terpsícore (em Mi). E a mais nova, a Celina, uma viola de 12 cordas. (a Nikki já teve crise de ciúmes da Celina e da Nicole mas hoje está tudo bem :-P)

Este post foi publicado antes no meu blog, no site da Infinnita, minha banda de Folk Rock. Atualizado para a realidade da nova data de publicação.

Minha sanfona verde

Quando era criança eu tinha um acordeão, acho que por volta dos dez anos. Era um acordeão pra criança. Um verde. Já tive flauta doce, violão de mentira, mas esse acordeão acho que foi o primeiro instrumento musical "sério" que tive. Era infantil, mas era de verdade. Hoje encontrei a relíquia lá na casa dos meus pais. Algumas teclas estão emperrando, mas se tiver concerto seria muito bom, eu guardo pra quando tiver filhos. :-) Minha mãe disse que foi presente da minha avó materna na época. Ou seja, se acharem ruim eu gostar de instrumentos musicais, a culpa talvez seja dela. :-P

Com esse acordeão infantil verde, eu ia pra área pra acordar minha vizinha de frente. Coisa de criança. Acho que desde criança eu era besta romântico. Não, não fomos namorados, nem no conceito infantil. :-P

Espero encontrar ainda alguma foto minha com a sanfoninha naqueles tempos... Como meus pais tiravam muitas fotos minhas, esperança não falta. A foto minúscula achei no mercado livre e o modelo era exatamente este, só que verde.

Não lembro de ter dado um nome à pobre da sanfona...

Um pouco sobre mangás e animes

Acompanhei alguns animes já de muito tempo e é interessante. Geralmente gosto de animes menos conhecidos. Não falei quando comecei a comprar os mangás Nana e Hellsing, que por aqui vão na décima edição. Nana é uma história ótima sobre dramas, romance e música. Recomendo tanto o anime como o mangá. Já quanto a Hellsing, sinceramente não sei. Continuo comprando mais pra ter a história completa. Os personagens são interessantes, mas o traço é um tanto estranho e, principalmente, o roteiro é torto! Tem momentos em que fica a clara impressão de que o roteirista não faz a menor idéia do que está fazendo. Tudo vira uma bagunça e sinceramente ainda não descobri o que justifica sua fama...

Recentemente (ao menos aqui no interior de Alagoas) chegou às bancas a primeira edição de Claymore, que considero um dos melhores animes que já vi (junto de Nana, Black Cat, Elfen Lied e alguns outros). Claymores são mulheres que têm seu corpo modificado, combinados com sangue e sei lá o que mais de yumas (um tipo de demônio). Elas são a força da humanidade para o combate justamente dos yumas. Fica a dica pra quem quiser acompanhar uma boa história em quadrinhos orientais.

Páginas

Subscribe to O Bardo RSS

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll: cannot open shared object file: No such file or directory in Unknown on line 0