sexta-feira, 20 de maio de 2011

Uma viagem por tiling WMs (gerenciadores de janelas de tijolinhos)


Post rápido!

Essas últimas semanas decidi dar uma renovada no meu laptop/desktop. A culpa foi da atualização do Ubuntu, que passou a usar o unity como ambiente gráfico padrão. Nesse ponto eu disse chega e decidi instalar o Archlinux.

Com o Archlinux instalado, me lembrei do tempo que usava o Debian Sid e instalava do zero. Colocava enlightenment pra sofrer um pouco mais e aprender Linux e essas coisas que todo mundo podia fazer.

Logo depois decidi encarar a tarefa de utilizar gerenciadores de janelas "tiling" (tem tradução?), bueno, chamemos de gerenciador de janelas de tijolinhos.

Pra começar o wiki do ArchLinux ajudou muito na tarefa de escolha, tem até um quadro comparativo de gerenciadores de janelas de tijolinhos aqui.

Eu não gosto muito de perder muuuuuuuuuuuito tempo configurando gerenciador de janelas. Por isso, fiquei um tempão usando o bendito GNOME. Mas pensei que usar tijolos seria mais construtivo. E foi.

Comecei usando o musca. Zero configuração. Até tem, mas o que vem nele já está ótimo. O problema é que quando fui ver Big Bang Theory com a Maria, minha namorada (programa clássico, quem nunca fez?), o tal do musca me envergonhou, o gerenciamento de qualquer aplicativo de visualização de vídeos não funciona e abrir mão da dupla vlc, mplayer. Acabamos vendo o vídeo no terminal (ALT+CTRL+F1 salvou).

Fui buscar mais no wiki do Archlinux e achei o xmonad. É legal ter que aprender Haskell pra configurar um gerenciador de janelas (?). Mas mesmo assim não fiquei muito satisfeito porque sempre acabava com a 9 telas divididas com um + no meio. Estou brincando bastante.

Agora, estou usando paralelamente o subtle, parece bem legal e eu gerencio as janelas do teclado numérico. E para os moderninhos do ruby, o arquivo de configuração dele é um simples script em ruby. Bem bom.

Bueno, deixa eu ir lá, porque a saga ainda não acabou.

domingo, 3 de abril de 2011

Criando um ambiente com testes em CLisp (clisp + quicklisp + lisp-unit)

Opa.


Cheguei em um dojo na Cinelândia em uma semana dessas aí às 20:30. Bueno, o dojo começava às 19:00, mas ninguém tinha começado a programar. O pessoal estava discutindo o editor de text Emacs (um clássico). Essa discussão vinha de uma outra sobre Lisp e outras coisas.  Entre um papo e outro o pessoal até tentou inciar o dojo com Lisp, mas faltava tudo: gerenciador de pacotes, ferramenta de teste, e afinal, qual Lisp íamos usar? Elisp, Clisp, Scheme, etc...


Na verdade a cabeça da galera estava um turbilhão de idéias [1].


Daí veio a idéia de escrever sobre as ferramentas que para testarmos o nosso código em Clisp. Não que eu domine Lisp, longe disso, mas nada que uma boa pesquisa não faça já que Clisp tem uma quieta porém ativíssima comunidade [2] .


Então, vamos ao resultado...



  • O Gerenciador de pacotes

Bueno, o pessoal do Dojo está bastante acostumado com as linguagens modernosas como Python, Ruby, Perl ou até Lua, onde se tem um gerenciador de pacotes que a gente roda direto da linha de comando do sistema (Linux : shell, Windows : cmd).


Em Clisp não achei nada parecido. Só achei sistemas (são vários) que rodam  dentro do prompt do Clisp. São eles o lispy, quicklisp e ASDF. Cada um tem suas peculiaridades, o ASDF é como um setuptools do Python e já está embutido no Clisp, enquanto os outros fazem todo o trabalho de baixar a biblioteca e instalar, mas não estão embutidos no prompt do 'siminino'. Porém, eles têm algo em comum, aliás com todas as ferramentas do Clisp: fazem questão de se apresentar claramente como bibliotecas de funções da linguagem e simplesmente são isso. Bati um pouco de cabeça com o lispy, nem lembro a razão de ter batido tanta cabeça. Fui logo para o quicklisp que tem uma interface melhor [3].


Vamos ao caso, instalá-lo e configurá-lo: Primeiro baixa o menino:

curl -O http://beta.quicklisp.org/quicklisp.lisp

Pode baixar apontando o navegador para o endereço acima, mas eu preferi o curl por uma questão de já baixá-lo e carregá-lo direto na chamada do interpretador Clisp, com:

clisp -i quicklisp.lisp

Depois disso haverão instruções para instalar o quicklisp. Divirta-se.


O quicklisp irá instalar todos os pacotes na sua pasta de trabalho. O melhor caso seria criar uma pasta para trabalhar ou até mesmo um usuário para brincar com o clisp. O projeto GNU deu seu tempo inclusive pra ensiná-lo a usar o clisp como seu prompt de comando padrão em sistemas UNIX[4] .




  • A ferramenta de testes


A ferramenta de testes que decidi usar foi o lisp-unit, é baseado no junit e todas as ferramentas de teste unitário comuns das linguagens mais usadas nas sessões de dojo. Existem diversas formas de chamar a ferramenta de testes e essas formas seriam bem legais de ser testadas em uma sessão de dojo. Eu fiz de vários jeitos, mas não cheguei a uma conclusão de qual é a melhor maneira de rodar os testes.

Para rodar os testes usamos a função define-test e os nomes utilizados para as funções são aquelas de asserção: assert-equals, assert-error, etc... Fácil não?!




Agora podemos começar a brincar com o Clisp nos dojos e colocar em prática o que aprendermos nessa aula aqui ó[5].


[1] Conversamos sobre tudo nesse dia. Até chegarmos à conclusão de que precisamos de um espaço com mais tempo para fazermos o que quisermos como katas, e alguns hackings.  Rumo ao hackerspace no Rio.
[2] http://www.cliki.net
[3] Vamos entender interface como algo para interagir. Aos novos, interface não é só interface gráfica.
[4] http://www.gnu.org/software/clisp/clash.html
[5] http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/