04.25.08 // programação // 7 Comentários
É isso aí! Depois de um longo tempo sem dar as caras por aqui, venho aqui anunciar minha mais nova contribuição ao mundo do código aberto: a tradução para o Português do Brasil do livro Squeak By Example. O projeto, iniciado pelo Ronaldo Ferraz, servirá para facilitar o acesso ao Squeak (e ao Smalltalk de um modo geral) por parte daqueles que não falam Inglês.
Update: O Ronaldo criou um post com algumas dicas para quem usa Mac OS X e gostaria de contribuir com o projeto.
Leia mais
04.11.08 // programação // 1 Comentário
Como prometido, deixarei aqui algumas dicas sobre como desenvolver uma aplicação Swing de conversão de temperaturas utilizando uma técnica de desenvolvimento de software conhecida como TDD (Test Driven Development). Então, se você nunca ouviu falar em TDD antes, procure dar uma estudada para saber do que se trata antes continuar lendo este texto. Garanto que, por mais esquisito que esse negócio de TDD possa parecer, é um jeito bem interessante de se desenvolver aplicações.
Não escreverei um passo-a-passo por questões de espaço, mas, basicamente, a seqüência que seguiremos no decorrer do texto será a seguinte: primeiramente, criaremos testes de unidade com o JUnit para definir a lógica para conversão de uma temperatura para outras escalas (Celsius, Kelvin e Fahrenheit). Em seguida, iremos programar essa lógica até que todos os testes passem. Depois disso, a interface com o usuário será desenhada e o seu comportamento definido, através da criação de testes JUnit + FEST-Swing, ferramenta esta muito interessante que permite automatizar testes em aplicações Swing. Por fim, programaremos a lógica da View até que todos os testes passem. E qual será o resultado dessa bagunça toda? Uma aplicação funcional.
É, eu sei… na teoria tudo parece muito bonito, mas, e na prática? Será que funciona assim mesmo? Se está curioso, então continue lendo! Leia mais
01.20.08 // off-topic // 36 Comentários
“Learn one language every year“. Não me lembro ao certo onde e quando foi a primeira vez que li isso, mas depois de pensar por alguns instantes, eu mudei aquela idéia que eu tinha — de que é melhor se especializar numa única tecnologia em detrimento das demais. Melhor um peito na mão do que dois no sutiã, concorda?
Voltando aos tempos da faculdade, embora subliminarmente, eu aprendi que Java é o que há, que C só serve para aprender algoritmos (e estruturas de dados) e que depois de trabalhar como programador eu devo virar gerente. Nada mais justo, afinal, o que esperar de um curso de Sistemas de Informação? (droga, eu devia ter feito Ciências da Computação.)
A cada nova descoberta eu me impressionava mais com as vantagens do Java. Não demorou muito para eu decidisse me “especializar” nessa tecnologia; comecei a visitar regularmente sites e fóruns sobre Java, montar pequenos programas, ler livros e estudar para certificações.
Hehehe, pela forma que esse texto vem sendo escrito, você deve estar se perguntando quando é que eu vou parar com essa babação de ovos e começar a contra-argumentar tudo o que disse. O famoso “mas”.
Mas… nada!
Felizmente, não me arrependo de nenhum programa que fiz, de nenhuma certificação que tirei e de nenhum livro que li. O simples uso do Java me ensinou coisas que eu provavelmente nunca aprenderia caso escolhesse outra linguagem. Em outras palavras, Java me ensinou uma coisa que poucos sabem (ou muitos ignoram): é difícil fazer software.
Se eu vou largar o Java? Talvez… daqui uns cinco anos. Entretanto, depois de me dedicar ao Java por todo esse tempo, eu percebi que agora é o melhor momento para desacelerar um pouco e olhar mais atentamente o que acontece ao meu redor. Não com o intuito de migrar para outra coisa, mas de ampliar meus horizontes. Leia mais
01.07.08 // off-topic // Comentar
English readers: please follow this link.
Vocês se lembram da minha não-tão-recente experiência com DSLs em Groovy? Pois é… para variar, eu acho que levei a idéia um pouco longe demais.
Explico. Algum tempo depois de publicar o referido post, eu comecei a procurar na Internet por outras APIs ou aplicações semelhantes à que eu havia criado (por diversão, diga-se de passagem). A não ser por uma ou outra opção, o resto se resume a programas em VB que permitem apenas rolagens de dados triviais. Afinal, são poucos os idiotas que, como eu, perdem tempo com esse tipo de coisa!
Eu aproveitei a oportunidade para tornar aquele meu pequeno protótipo — cujo propósito era mostrar algumas features de meta-programação do Groovy e nada mais — numa API completa. Por isso, eu optei por dar uma melhorada no código e liberá-lo como sendo um projeto de software livre, que batizei de Groovy Dice. Leia mais
12.17.07 // programação // 10 Comentários
Provavelmente, muitos dos que acompanham este blog também acompanharam o evento Rails for Kids, que rolou no último sábado. Eu particularmente achei o evento muito bacana, principalmente agora que já terminei de ler o livro Agile Web Development with Rails e estou começando a levar o Rails mais a sério como opção de framework para criação de aplicações web. Mas não é sobre isso que falarei hoje.
Apesar de já ter lido um punhado de artigos e posts sobre DSLs, a palestra que o Ronaldo Ferraz ministrou nesse evento foi o incentivo de que precisava para tomar vergonha na cara e tentar implementar minha primeira DSL. Eu peguei um dos primeiros exemplos que ele citou em sua palestra — um rolador de dados — e tentei implementar para ver como ficava. O resultado dessa experiência será detalhado ao longo deste post. Leia mais
11.12.07 // off-topic // 9 Comentários
A não ser que você esteja morto — ou vivendo na selva com sua amiga bola-de-vôlei — você provavelmente deve ter visto que ontem foi lançada a SDK do projeto Android, cuja idéia é fornecer a primeira plataforma móvel aberta. O Android é um projeto que, apesar de estar dando os primeiros passos rumo ao seu objetivo, conta com nomes de peso a seu favor; a Open Handset Alliance, grupo de mais de 30 empresas de tecnologia envolvidas no Android, promete inovar o cenário e melhorar a “experiência móvel” dos usuários.
Confesso que a notícia me deixou curioso. Por isso, eu aproveitei para fazer o download da SDK, instalei o ADT no meu Eclipse e segui alguns dos tutoriais apresentados na documentação. Apesar de ter gostado do negócio, posso dizer que não há muitas novidades em termos tecnológicos. A grande sacada se concentra no direcionamento dessa iniciativa. Leia mais
10.11.07 // programação // 14 Comentários
Uma constante no desenvolvimento de qualquer aplicação web é o envio de e-mails. Ah, o usuário se registrou? E-mail nele! O usuário trocou de senha? E-mail nele! O pedido foi recebido com sucesso? Em… chega, vai!
Sem sombra de dúvidas, a API mais usada para resolver essa questão é o JavaMail. Também existem algumas opções, como o Spring Mail e Commons Email, mas, no fim das contas, é o próprio JavaMail quem faz o serviço sujo (tais APIs são feitas sobre o próprio JavaMail).
Apesar de dar conta do recado, a referida API conta com alguns problemas bastante chatos, dentre os quais eu destaco o design de suas classes e interfaces (existem interfaces?),
que parecem fazer o possível para dificultar a testabilidade dos seus “clientes”. Leia mais
10.01.07 // programação // 4 Comentários
É inegável que a não-tão-nova versão 5 da especificação JavaEE veio numa hora mais do que necessária. Todo mundo parecia — e com razão — evitá-la ao máximo, pois seu uso demandava muito tempo e caixas de calmante.
Hoje, criar e manter uma aplicação com EJBs é relativamente simples. E, por este motivo, a adoção da tecnologia passou a ser mais expressiva, mesmo em projetos menores.
Alguns aspectos da especificação, entretanto, ainda deixam a desejar. Um exemplo seria a parte de injeção de dependências, que é limitada apenas a componentes gerenciados pelo container. O que isso quer dizer? Isso quer dizer que, para você poder tirar proveito do esquema de injeção de dependências, todos os seus componentes precisam ser EJBs.
Mas, nesta versão, os EJBs não são POJOs? Sim, mas ter de expor classes simples como EJBs — só para ganhar essa “injetabilidade” de presente — não parece correto. E, da mesma forma, espalhar instanciações de objetos pelos vários componentes da aplicação definitivamente também não parece. Leia mais
09.28.07 // programação // 6 Comentários
É muito comum ver pessoas — em fóruns e listas de discussão — perguntando como fazer para gerar instaladores para suas aplicações. Mesmo no mundo Java, o que não falta são opções.
Se você acompanha este blog, é bem provável que você o esteja lendo agora com o Firefox rodando em um sistema GNU/Linux. E, se você está lendo este texto com o IE no Windows, só está fazendo isso porque é obrigado. Afinal, quem — em sã consciência — usa Windows/IE?
Enfim… o que muita gente ainda não percebeu é que esse procedimento de gerar instaladores é, de certa forma, uma “reinvenção da roda”, pelo menos quando se deseja instalar algo em um sistema GNU/Linux. Vamos supor que eu deseje distribuir uma aplicação minha em sistemas Debian. Por que eu iria querer gerar um instalador se eu posso fazer uso do sistema nativo de gerenciamento de pacotes, que, por sinal, é extremamente poderoso? Leia mais
09.19.07 // off-topic // 8 Comentários
Já fazem quase dois meses desde a primeira release do ObexFTP front-end. Hoje, não sei por qual motivo, resolvi dar uma checada no Google para ter uma idéia melhor sobre como esse projeto está ajudando a galera por aí.
Mesmo sabendo que trata-se de uma solução simples, eu fiquei realmente impressionado com a boa receptividade que o ObexFTP front-end está tendo junto aos usuários. Isso mesmo, aos usuários; não a desenvolvedores nem nada do tipo. Confesso que faltou pouco para lágrimas verterem rosto abaixo… ah, tá bom, não foi tudo isso. Mas, de qualquer forma, fiquei muito contente em saber que essa aplicação está sendo útil para outras pessoas. Leia mais