quarta-feira, 1 de junho de 2011

Errando e aprendendo!

Ao tentar abrir a console REPL do Clojure pela primeira vez no novo projeto

crisweber$ lein repl

descobri que o nome 1001-things-to-do foi utilizado dentro dos fontes como namespaces, e Clojure exige que namespaces, funções, variáveis, etc iniciem com letras.

Alterei o conteúdo dos arquivos core.clj existentes em /src e /test, alterei o conteúdo de project.clj na raíz e alterei o nome dos subdiretórios /src/1001_things_to_do e /test/1001_things_to_do para /*/a_thousand_things_to_do.

crisweber$ svn move 1001_things_to_do a_thousand_things_to_do

Commit realizado, problemas corrigidos.

Executei os testes gerados pelo leiningen para confirmar que as mudanças de nomes ocorreram com sucesso:

crisweber$ lein test
Testing a-thousand-things-to-do.test.core
FAIL in (replace-me) (core.clj:6)
No tests have been written.
expected: false
actual: false
Ran 1 tests containing 1 assertions.
1 failures, 0 errors.

Agora parece estar Ok!! =)

Criando o projeto com Leiningen

Hora de fazer algo :-)

Comando simples para criar o projeto:

crisweber$ lein new 1001-things-to-do
Created new project in: /Users/crisweber/Documents/Projects/1001-things-to-do

Adicionar o projeto ao controle de versão:

crisweber$ svn checkout https://1001-things-to-do.googlecode.com/svn/trunk/ 1001-things-to-do --username cris.weber@gmail.com
Checked out revision 1.

Adicionar o conteúdo do projeto ao controle de versão:

crisweber$ svn add *
A README
A project.clj
A src
A src/1001_things_to_do
A src/1001_things_to_do/core.clj
A test
A test/1001_things_to_do
A test/1001_things_to_do/test
A test/1001_things_to_do/test/core.clj

Versionar tudo!

crisweber$ svn commit -m "First commit"
Authentication realm: Google Code Subversion Repository
Password for 'crisweber':
Adding README
Adding project.clj
Adding src
Adding src/1001_things_to_do
Adding src/1001_things_to_do/core.clj
Adding test
Adding test/1001_things_to_do
Adding test/1001_things_to_do/test
Adding test/1001_things_to_do/test/core.clj
Transmitting file data ....
Committed revision 2.

Sobre o password, o Google Code disponibiliza um link para geração de uma senha pessoal para o SVN na aba Source / Checkout.

A formatação dos códigos acima foi feita seguindo este tutorial:

Feito isto, bastou adicionar um diretório /resources na raíz do projeto e lá copiar o arquivo 1001_Albums.csv (link para o arquivo no trunk do projeto)

Compartilhando o trabalho

Pensei um pouco em como compartilhar os arquivos que criei e alguns resultados, e decidi criar um projeto no Google Code. Na página de hosting do Google Code existe um link 'Create a new project' onde toda a mágica acontece.

Por mágica entendam que basta descrever o projeto, selecionar o tipo de sistema de versionamento e a licença a ser utilizada.

Como estou BEM mais acostumado com SVN optei por utilizá-lo, ao menos inicialmente. Já a licença é algo que eu não havia pensado anteriormente :-) então peguei a de nome mais extenso (Mozilla Public License 1.1).

E pronto!

Projeto criado: 1001-things-to-do

Decisões...

Decidi que a primeira coisa a fazer com o conjunto de dados dos 1001 álbuns é ler o conteúdo do arquivo CSV utilizando Clojure.

Meu primeiro contato com Clojure foi através do livro Seven Languages in Seven Weeks

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers) by Bruce A. TateSeven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)

e decidi estudar um pouco mais, adquirindo também o livro Clojure in Action (comprei o ebook no Manning MEAP)

Clojure in Action by Amit RathoreClojure in Action

Para simplificar um pouco a criação de um projeto onde organizar os fontes, bibliotecas e recursos vou utilizar o Leiningen (utilitário para construção de projetos, escrito em Clojure). Utilizei este guia para instalação: Using Leiningen to build Clojure code



Obtendo a relação dos 1001 álbuns para ouvir antes de morrer

Obtive no site 1001 Series a lista dos 1001 álbuns para ouvir antes de morrer. Esta lista é detalhada no livro 1001 Albums you must hear before you die

1001 Albums You Must Hear Before You Die: Revised and Updated Edition by Robert Dimery1001 Albums You Must Hear Before You Die: Revised and Updated Edition

Montei (manualmente) uma planilha com o ano de gravação, nome do álbum e artista, e exportei esta planilha como arquivo CSV. Agora é só começar a brincar =)