Diogo Santos

É sobre um cara aprendendo a fazer chover :)

Archive for the ‘Desenvolvimento’ Category

Grails in Rio

one comment

Foi com prazer que ontem, eu anunciei a criação do Grails in Rio, a comunidade de usuários de Grails no Rio de Janeiro.

A idéia da comunidade é disseminar o conhecimento de Groovy & Grails através de encontros descontraídos e da lista de discussão. Mais detalhes sobre o Grails in Rio podem ser encontrados no site http://grailsinrio.org.

Sobre Grails, posso dizer que é um framework fantástico e que traz aos desenvolvedores da plataforma Java, através de Groovy, a produtividade que só conhecíamos no Ruby on Rails. Mesmo ainda sendo um projeto relativamente novo, já existem grandes casos de sucesso, que podem ser visto na página de cases do Grails.

Aqui na empresa já existem projetos sendo implementados em Grails. Embora eu não esteja participando de nenhum deles, tenho visto como as pessoas estão empolgadas com desenvolvimento web na plataforma Java novamente. Isto é totalmente empolgante.

Eu tenho desenvolvido projetos pessoais com Grails e tem sido bastante produtivo já que posso me focar no “negócio” das minhas aplicações sem me ocupar com milhões de configurações, como eu fazia na época dos frameworks em Java.

Written by Diogo Santos

julho 17th, 2009 at 11:42 am

Posted in Desenvolvimento

Tagged with , , ,

Upload elegante com Javascript e SWFUpload

one comment

minnelli_logoPara quem vem das antigas do Javascript e HTML, onde os efeitos AJAX eram feitos com frames escondidos, sabe que uma das maiores dificuldades era a formatação do botão de upload num formulário html. Os designers ficavam loucos quando criavam botões estilosos para upload em seus layouts e os programadores nunca conseguiam implementá-los.

Há um tempo atrás, eu até conseguia resolver o problema criando um campo de upload escondido e invocando seu click – o que fazia janela de seleção de arquivos aparecer – via Javascript, mas esta solução foi logo vetada pelos browsers por questões de segurança – até mesmo no IE – e aí ficamos sem uploads elegantes novamente por alguns anos.

Foi então que eu vi pela primeira vez um botão de upload simples e elegante no Flickr e, depois de um tempo, no Orkut e comecei uma caçada por algo similar. Nesta procura, eu encontrei o SWFUpload, um componente Javascript que usa Flash para fazer campos de upload simples, elegantes e customizáveis.

SWFUpload é simples de usar, a documentação é bem explicativa e existe uma página de exemplos que com certeza terá uma implementação parecida com a que você está procurando.

Written by Diogo Santos

janeiro 19th, 2009 at 11:32 am

Schrödinger’s cat

2 comments

Outro dia destes eu estava assistindo um episódio de The Big Bang Theory no qual um dos personagens menciona o experimento de Schrödinger. Isso me fez lembrar do livro The Pragmatic Programmer (PragProg) que eu li recentemente.

O experimento é mais ou menos o seguinte: imagine um gato dentro de uma caixa fechada com alguma substancia radioativa, onde há 50% de chances desta substancia infectar o gato. Se isso acontecer o gato morrerá, se não ele ficará bem. Então, neste momento o gato está vivo ou morto? Segundo Schrödinger, a resposta correta é ambos. As duas possibilidades acontecem em universos paralelos, em um universo o gato morre e no outro ele vive. Apenas precisamos abrir a caixa para descobrirmos em qual universo nós estamos.

No seriado, o personagem mencionou o experimento para persuadir uma garota que estava na duvida ser deveria sair com ele ou não. Bom, ela só saberá se vale a pena se ela abrir a caixa. :)

No PragProg, os autores mencionam o experimento fazendo um comparativo com evolução do código em desenvolvimento de softwares:

Think of code evolution along the same lines as a box full of Schrödinger’s cats: every decision results in a different version of the future. How many possible futures can your code support? Which ones are more likely? How hard will it be to support them when the time comes?

O livro questiona o quão flexível à mudanças é o seu software e ressalta a importância de ser ter arquiteturas que suportem mudanças sem grandes custos.

Certa vez, eu vi um projeto ter que ser praticamente todo reescrito quando chegou a hora de criar o módulo que seria usado no Palm. Muitas decisões que foram tomadas no início do projeto não levaram em conta este futuro. Em conseqüência disso, houve um re-trabalho enorme, gerou um estresse gigantesco e exigiu bastante esforço da equipe que virou noites e finais de semana para que tudo fosse entregue no prazo.

O quão flexivel à mudanças é o seu software?

Written by Diogo Santos

agosto 31st, 2008 at 3:04 pm

Janelas Quebradas

one comment

Foi na apresentação do Guilherme Silveira no Falando em Java 2008 que eu ouvi falar a primeira vez sobre Janelas Quebradas. Depois disso, percebi que este assunto não é nada novo na engenharia de softwares e que ele é abordado num livro que eu acabei de comprar e está na fila pra ser lido: The Pragmatic Programmer: From Journeyman to Master. Trata-se de uma teoria baseada num experimento que criminologistas americanos fizeram:

Um automóvel foi deixado em um bairro de classe alta na Califórnia. Na primeira semana, o carro não foi danificado. Os pesquisadores então quebraram uma das janelas. Poucas horas depois, o carro foi completamente destroçado e roubado por grupos vândalos.

Eu já pude acompanhar este fenômeno duas vezes. Na primeira vez foi um ciclo bem parecido com o experimento original, mas não foi proposital: Eu era criança e morava num prédio onde o irmão de um morador deixou seu carro estacionado. O carro estava bem sujo e meio amassado em algumas partes. Em pouco tempo, este carro virou o assento padrão de todas as crianças do prédio, depois já estava sem as janelas e então mais tarde, dois indivíduos – que não eram crianças – roubaram a bateria do carro. O caso foi sério, no final deu uma grande confusão e os caras que roubaram a bateria acabaram levando a culpa de tudo. Posso apostar que se o carro estivesse em, não vou nem dizer perfeitas, mas em condições normais, assim como todos os carros que estavam na garagem do prédio, isso não teria acontecido.

Na segunda vez que eu vi este fenômeno, ele não chegou a causar muitos estragos. E o que nos poupou de estragos maiores foi o fato das pessoas terem enxergado que tínhamos uma “Janela Quebrada”. Eu falei aqui no blog sobre o Mau Copiador, o cara que senta pra desenvolver o sistema sem saber o que está fazendo e vai copiando o código dos sites, dos outros sistemas da empresa, de todo mundo e de qualquer maneira. Pois é, ele era uma janela quebrada e estava lá na empresa para fazer com que todo um sistema, ou até a empresa inteira fosse por água abaixo, ou melhor, por janela abaixo (com trocadilho).

Acontece que esse cara não era mau em se auto promover para as pessoas que não viam o código que ele gerava e com isso ele acabou ganhando a tarefa de treinar os estagiários que entraram no projeto. E aí não foram só janelas quebradas, foram portas, mesas, cadeiras e tudo mais que viam pela frente até que os gerentes foram alertados e medidas foram tomadas.

Não posso dizer que não houve estragos, eu perdi algumas boas horas corrigindo “cópias mal feitas em larga escala” no sistema, mas nada que um bom Refactoring – e eu gosto de refactoring – não resolvesse.

O Guilherme Silveira apontou o cuidado para não deixar janelas quebradas no sistema como um dos hábitos que os arquitetos de softwares altamente eficazes devem ter.

Written by Diogo Santos

maio 26th, 2008 at 10:10 pm

Cadê a linguagem ubíqua?

2 comments

Eu estava escrevendo um comentário para o artigo “Domain-Driven Design é Simples: Basta Chamar DAOs de Repositórios” do Phillip Calçado, mas acabei escrevendo muito e achei melhor comentar por aqui.

Na empresa onde trabalho, uma empresa de três letrinhas, tentamos implantar DDD em um projeto, mas é difícil fazer isso já que quem tem contato com o cliente não somos nós, os desenvolvedores. O que chega para nós já é a “solução de todos os problemas” que o analista de sistemas criou enquanto conversava com o cliente. Na verdade, a nossa linguagem ubíqua não é feita entre o cliente e nós, mas sim entre nós e o analista.

Eu não acho certo dizer que o sistema está usando DDD também, e achei muito interessante o artigo do Phillip, porque eu estava pensando exatemte nisso outro dia deste. Inclusive, na apresentação de DDD que o Sérgio Lopes fez no Falando em Java 2008, foi a primeira coisa que ele demonstrou: a criação de uma línguagem que fosse clara para o cliente e para o desenvolvedor.

Written by Diogo Santos

maio 22nd, 2008 at 10:51 am

Get Adobe Flash playerPlugin by wpburn.com wordpress themes