segunda-feira, 14 de fevereiro de 2011

Um ambiente para praticar orientação a objetos (ou ActiveRecord sem Rails)

Estava pensando em um modo de fazer alunos praticarem orientação a objetos em projetos não triviais (e nestes, necessariamente haverá persistência) mas sem acabar perdendo o foco por causa de parafernálias de frameworks e ORMs. Como venho utilizando Ruby on Rails em projetos reais há algum tempo, pensei em juntar as duas coisas. Usar Rails em aulas de orientação a objetos, porém, seria excessivo e me faria desviar o foco e perder tempo explicando detalhes do framework (imagine o desastre que seria enfrentar dúvidas sobre roteamento ou view helpers em aulas de OO) e mais tempo ainda seria gasto com gems, setup, dependências nativas e outras coisas que não são de interesse direto de orientação a objetos.

O grande lance é que para o objetivo eu não preciso do Rails inteiro, mas apenas do ActiveRecord. Como reutilização é tudo, antes de meter a mão na massa fui ver se alguém já havia se coçado com isto e encontrei aqui um roteiro. No mesmo blog, suporte a migrations. Assim, foi possível montar rapidamente um nanoframework para implementar domain models em Ruby. Disponibilizei a brincadeira no Github, sob o nome de OORB (muito criativo, não?). Certamente há muito o que ser melhorado e, como era tudo basicamente configuração, não me incomodei em escrever testes. Já que o objetivo era preocupação zero com bancos de dados, o banco configurado é o SQLite3.

A idéia é fazer tudo ser muito simples e rápido. Não há qualquer pretensão de que isto seja uma plataforma para escrever código para software real, mas simplesmente um ambiente simples para a prática de orientação a objetos, para além dos exercícios bobinhos de apenas uma ou duas classes, com acesso a persistência e tudo o mais que um modelo OO real teria. O readme do projeto traz maiores detalhes de configuração e outras informações.

Pretendo começar a utilizá-lo já neste semestre, assim que tiver resultados posto aqui.

terça-feira, 4 de janeiro de 2011

Meu ambiente de trabalho em 7 itens

Lá vou eu participar do meme de descrever o ambiente de trabalho em 7 itens:

Sistema Operacional


Sou um felicíssimo usuário do Ubuntu 10.10, sistema operacional que será trocado em breve, mais precisamente em abril deste ano, pelo Ubuntu 11.04.

Editor


Eclipse Helios para Java. GEdit - devidamente tunado por gedit-plugins, gmate e Batraquio - para todo o resto. Por "todo o resto" entenda-se mais de 95% do meu tempo atual, com Ruby, Python, JavaScript, HTML, HAML, CSS, LaTeX, RST, markdown, plain text e o que mais vier. Este texto, por sinal, está sendo escrito no GEdit. Hoje mesmo foi levantada uma discussão acerca de debugging na lista de discussão do (glorioso) NSI. Bom, não há maneira mais, digamos, técnica de dizer isto, mas a verdade é que debugging simplesmente não me faz falta na imensa maioria das situações. Na minoria, coisas como o pdb do Python atendem muito bem. TDD e passos de bebê também são de grande ajuda para não se necessitar de IDEs superpoderosas.

Terminal


O terminal é onde passo boa parte do tempo, então ele precisa de duas coisas, ser eficiente e bonito. A eficiência do terminal é item de série (Linux rulz!) e a beleza é garantida por um fundo semitransparente, um esquema de cores esperto e a belíssima fonte Monaco (a única coisa que eu tinha inveja do Mac!).

Além disto, uso algumas conveniências no prompt, como: mostrar informações do Git caso o diretório corrente seja um repositório; mostrar a versão e a gemset do RVM sendo utilizadas correntemente, caso exista alguma; e o Python virtual do virtualenvwrapper sendo utilizado, também caso exista.

Browser


Firefox, Chrome, Opera para validar layouts, Seamonkey para a maioria do lixo que "só funciona no IE", Firefox (com Firebug e Web Developer) para todo o resto. Atualmente, eu não preciso validar layouts no IE, portanto não tenho configuração para isto.

Software


TweetDeck, Exaile, K3B, Gimp, Skype, Google Talk, VLC. Por sinal, procuro um bom cliente Twitter que não use Adobe Air, que não exija o Chrome e que não seja o Echofon. Sugestões?

Código-fonte


Git, óbvio. E Subversion para projetos que ainda o utilizam.

Música


Uso o Exaile como player, sempre com fone de ouvido, e - se eu não estiver sozinho - com um dos fones um pouco fora do ouvido para sacar o ambiente e ouvir as conversas. Normalmente escuto música brasileira (rock, indie, regional), metal (grindcore, death metal, crossover, hardcore) e coisas estranhas em geral (experimental, math metal, misturebas e por aí vai). Não ouço música, porém, o tempo inteiro. Ouvir ou não e, quando ouço, o tipo de música, dependem do tipo de trabalho, do meu grau de concentração no momento e do ambiente.


E você, fala um pouco do seu ambiente aí!