terça-feira, 28 de dezembro de 2010

Slides JavaOne 2010 USA, Brasil e TDC2010

Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces foi o tema apresentado no JavaOne nos Estados Unidos (San Francisco) e aqui no Brasil este ano. Contudo, o título que melhor descreveria a apresentação seria Dicas e Truques sobre performance em aplicações Web com JSF, JPA e AJAX.

Junto com o Danival Taffarel Calegari, fiz uma prévia deste tema no evento TDC2010 (The Developers Conference 2010 - Globalcode) em português. Depois fizemos vários ajustes e a tradução para inglês antes do JavaOne 2010 USA. Quando soubemos que o evento seria trazido para o Brasil, encaminhamos o mesmo tema como proposta de palestra. Foi aprovada e, após uma nova tradução para o português e algumas melhorias, realizamos a palestra duas vezes aqui no Brasil.

A primeira apresentação aqui no Brasil, no JavaOne, foi realizada no dia 08/12 (quarta-feira) às 16h. Para nossa surpresa, a lotação da sala foi máxima e infelizmente muitas pessoas ficaram de fora por falta de lugar. Mas, uma surpresa maior ainda foi sermos convidados para uma segunda apresentação no dia 09/12 (quinta-feira) às 14h. Esta segunda apresentação foi sugerida para atender aquelas pessoas que ficaram na fila e não conseguiram entrar na sala. Tivemos uma grande fila novamente, mas desta vez, todos puderam entrar na sala, mesmo alguns ficando em pé e outros sentados no chão, resultado numa nova lotação. Assim, fechamos 4 apresentações sobre o tema proposto.

O feedback da nossa apresentação nos USA foi muito bom. Mas, o resultado das apresentações aqui no JavaOne do Brasil foi muito melhor ainda.


Agora compartilho os slides usados nestas quatro apresentações em três versões.



Esta última versão contem um vídeo (screencast) da aplicação de demonstração (implementação de referência) desenvolvida para demonstrar as dicas e truques apresentadas nos slides.

O projeto criado como implementação de referência das dicas e truques apresentadas está disponível como um projeto open source no SourceForge através do link: JavaOne Catalog Prototype.

Enjoy it!

By Spock
Twiiter: @drspockbr
http://linkedin.spock.com.br/
http://facebook.spock.com.br/
http://www.springbrasil.com.br/

sábado, 25 de dezembro de 2010

Instalando ffmpeg no Mac OS X Snow Leopard

Hoje me deparei com a necessidade de converter um arquivo de áudio do formato aac para mp3 e tinha disponível apenas o meu MacBookPro 13" com o Mac OS X Snow Leopard.

Infelizmente, este sistema não disponibiliza um conversor já previamente instalado. Várias opções que achei na rede eram shareware ou pagas. Até quando encontrei o ffmpegX, mas também não é free. Foi quando resolvi baixar o ffmpeg puro e recompilar no Mac.

Quando fiz isso, pude notar o quanto você precisa ser nerd para fazer coisas um pouquinho mais avançadas no Mac OS. As vezes até precisa ser mais nerd do que um nerd de Linux/Ubuntu/etc.

Contudo, encontrei as seguintes referências na rede:
Então, após o download do LAME, FAAC, FAAD2 e descompactar os respectivos arquivos num diretorio, segui os passos indicados no roteiro indicado na primeira referência. Para isso, usei as seguintes instruções num terminal aberto:
cd lame-3.98.4
./configure
make
sudo make install

cd ../faac-1.28
./configure
make
sudo make install

cd ../faad2-2.7
./configure
make
sudo make install

cd ..
svn checkout \
    svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-libmp3lame \
            --enable-shared --disable-mmx \
            --arch=x86_64
make
sudo make install
Todo o processo de configuração, compilação e instalação de cada ferramenta ocorreu com sucesso. Então, para converter o arquivo desejado para "mp3", usei a seguinte linha de comando no terminal:
ffmpeg -i origem.aac \
       -acodec 'libmp3lame' destino.mp3
Pronto ... simples assim! :)

Para ser um usuário PRO num Mac OS X as vezes precisamos ser mais nerd do que num Ubuntu que facilita a vida com o synaptic.

By spock
http://linkedin.spock.com.br/
http://facebook.spock.com.br/
http://www.springbrasil.com.br/

sábado, 13 de novembro de 2010

Vídeo Tutorial sobre Spring Roo + GWT + GAE

Baseado na apresentação realizada no TDC 2010 em Florianópolis preparei um vídeo tutorial com narração desmonstrando o uso do Spring Roo gerando uma aplicação Web baseada no GWT (Google Web Toolkit) e deploy no GAE (Google App Engine).

Luz, Câmera, Ação!


Enjoy it!
By spock
http://linkedin.spock.com.br/
http://facebook.spock.com.br/
http://www.springbrasil.com.br/

terça-feira, 9 de novembro de 2010

TDC2010 em Floripa foi sensacional!

Neste último final de semana aconteceu em Florianópolis a terceira edição do "The Developers Conference" promovido pela Globalcode e V.Office. O evento contou com mais de 500 inscrições, 6 trilhas de assuntos e 42 palestras. Eu tive a oportunidade ímpar de contribuir com 3 palestras de assuntos que gosto muito. Foi sensacional!

Agora resolvi publicar aqui os slides que utilizei durante as palestras. A primeira palestra foi sobre computação física com Arduino, Program-ME e a plataforma Java. Apresentei nesta palestra o conceito de computação física, hardware open source, além de mostrar o Arduino e o Program-ME (exemplos de hardware open source) como excelentes meios de realizar/experimentar/aprender computação física.
Na segunda palestra falei sobre a plataforma Spring através do tema "Spring 3: Uma plataforma além do framework". O objetivo era apresentar os vários frameworks, linguagens, ferramentas e portes do Spring que começam a estabelecer uma nova plataforma de desenvolvimento de aplicações Java. Na segunda parte desta palestra tratei das funcionalidades e características presentes na versão 3.0 do Spring Framework.
A terceira e última palestra foi para mostrar a ferramenta de geração de códigos chamada de Spring Roo. O objetivo desta palestra, além de definir e apresentar o Spring Roo, era de mostrar como gerar uma aplicação Web baseada em GWT (Google Web Toolkit) e o deploy no GAE (Google App Engine). A aplicação gerada e demonstrada durante a palestra está disponível no GAE: Scrum ROO Toys. Disponibilizei também o script para criação da aplicação demo através do ROO shell: ScroomToys.
Outras apresentação estão disponíveis no site oficial do evento: The Developers Conference 2010.

Como sempre, não pude deixar de visitar um pub local para beber uma cervejinha artezanal da região. Daí, o happy hour para network etílico aconteceu no Chopp do Gus (sábado) e na Academia da Cerveja (domingo).

By spock
http://linkedin.spock.com.br/
http://facebook.spock.com.br/
http://www.springbrasil.com.br/

terça-feira, 15 de junho de 2010

Arquitetura do ScrumToys influencia livro sobre JSF 2.0

Recentemente participei do desenvolvimento da aplicação exemplo chamada de ScrumToys para demonstrar o maior número possível de funcionalidades do JSF 2.0. Boa parte do refactoring da arquitetura de componentes na camada de controle e modelo foi realizado por mim.

Alguns detalhes sobre as classes implementadas para suporte aos Managed Beans da aplicação ScrumToys estão disponíveis no blog da Globalcode: Um pouco sobre a arquitetura do ScrumToys.

As simplificações propostas nas classes implementadas na camada de controle serviram de referência para o desenvolvimento dos exemplos contidos no livro JavaServer Faces 2.0, The Complete Reference, escrito pelo Ed Burns, líder da especificação do JSF 2.0 no JCP, e pelo Chris Schalk, Developer Advocate no Google. Este livro implementa uma aplicação chamada Virtual Trainer ao usar a modelagem para gerenciamento do contexto de persistência e demarcação da transação via JTA através de classes base abstratas para os Managed Beans do JSF 2.0 no ScrumToys.

Um trecho do livro está disponível no Google Books e indica uma referência indireta à arquitetura proposta pelo ScrumToys.


O projeto ScrumToys foi incorporado à versão final do NetBeans 6.8 como uma demonstração de aplicação Web. O vídeo a seguir ilustra o uso do NetBeans para criar este projeto a partir de um wizard da ferramenta e permitir o acesso aos códigos de demonstração do JSF 2.0:


Em reconhecimento ao trabalho realizado, o Ed Burn faz referência à alguns desenvolvedores deste projeto no tópico Acknowledgments do livro.

Ed, muito obrigado!

By Spock
http://twitter.spock.com.br/
http://www.springbrasil.com.br/

sexta-feira, 4 de junho de 2010

Motorola Milestone vesus Apple iPhone 3GS

Qual escolher? Qual o melhor? Êita decisão difícil!

Num comparativo realizado pela Info, o iPhone 3GS levou a melhor em alguns quesitos, mas o Motorola Milestone, além do Android 2.0, ganha em alguns pontos no hardware. Apesar da Motorola já oferecer um outro celular com Android (o Motorola Dext), no momento o Milestone é a nossa única opção com a versão mais nova do Android.

O Motorola Milestone conta com uma câmera fotográfica de 5M pixels contra a câmera de 3M pixels do iPhone. Além disso, o Milestone oferece flash através de LED e um certo nível de zoom. Contudo, o design quadradão do Milestone desanima qualquer um. Inclusive é chamado de Android de tiozão pela Info.

Tirando a câmera fotográfica e o sistema operacional aberto da Google (o Android) no Motorola Milestone, sem dúvida o iPhone se mostra melhor em vários aspectos, como comentado na avaliação da Info. O design e a usabilidade do iPhone são imbatíveis.

Apesar da velocidade proporcionada pelo Android, pela presença da Google, por ser mais simples de desenvolver aplicativos e disponibilizá-los sem muita burocracia para venda na loja online do Android, acabei optando pelo iPhone pelo design, facilidade de uso e excelente integração com o iTunes via um MacBook Pro que possuo. Contudo, achei muito chato não suportar multi-tarefa, ao sair do Skype para rodar outro aplicativo, o iPhone desconecta a minha conta Skype. Tem uma boa gambi para os programas serem atualizados periodicamente via a tecnologia de "push". Mas nem todo aplicativo suporta o "push".

Como disse o TK, que tem em mãos as duas plataformas, no seu twitter: "O iPhone é realmente um belo trabalho que oferece uma ótima experiência para o usuário. Como este trabalho de criar uma boa UI é valioso." (link) e "Testei o Android: funciona, rápido; muito legal e melhor que muito celular mais caro. Mas a interface com o usuário do iPhone é incomparável" (link).

Mais informações:


Não pude deixar de notar que a operadora aqui na região que comercializa os dois celulares, oferece o iPhone e Milestone por quase o mesmo preço para o meu perfil de consumo de ligações e 3G. Portanto, a escolha foi difícil!

segunda-feira, 24 de maio de 2010

Palestra aceita para o JavaOne 2010

Este ano terei mais uma vez o privilégio de participar como palestrante do JavaOne, o maior evento Java do mundo.

No ano passado, com o tema "Enterprise Web 2.0 Architecture: from pristine Java EE to fully-loaded frameworks" (slides) e junto com o Vinicius Senger (sócio e co-fundador da Globalcode), apresentamos este tema num período de 60 minutos para uma sessão do tipo BoF (Birds of a Feather). Foi uma experiência ímpar apresentar uma palestra neste evento e totalmente em inglês.

Agora, para este ano, o tema será "Performance Tips and Tricks: Java EE, Persistence API and JavaServer Faces". Desta vez, vou apresentar junto com o Danival Calegari (arquiteto de software na Matera Systems e instrutor da unidade Globalcode em Campinas).

Neste evento teremos o objetivo de apresentar algumas técnicas (boas práticas atualizadas de desenvolvimento com JSF+JPA e design patterns) para melhorar a performance de aplicações Web 2.0 implementadas através de JSF com Ajax e acesso a banco de dados relacional via JPA com grande volume de dados. Para ilustrar estas técnicas, apresentaremos um estudo de caso através de uma aplicação usada como "implementação de referência" para ajudar a resolver problemas de performance encontrados em alguns projetos de consultoria realizados ao longo deste último ano.

O vídeo a seguir apresenta uma versão simplificada da aplicação demo que será usada para apresentar as "dicas&truques" sobre performance em aplicações Web 2.0:


O JavaOne 2010 acontecerá dos dias 19 a 23 de setembro em San Francisco, USA.

Segue uma tradução para português do resumo enviado para a organização do evento:

Dicas e Truques sobre performance em Java EE, JPA e JSF
"Desde o lançamento do JavaServer Faces no Java EE, tornou-se possível desenvolver aplicações Web 2.0 usando um modelo efetivo de componentes visuais com a mesma semântica de aplicações desktop baseando em Swing. O modelo de eventos tornou-se efetivo após a popularização do Ajax ao promover RIA. Todavia, performance e escalabilidade são afetadas por velhos padrões de projetos quando são aplicados na arquitetura da aplicação. Novos padrões de projeto devem ser aplicados para atingir os requisitos de performance neste novo cenário.

Esta sessão apresentará algumas dicas e truques para melhoria efetiva da performance de interfaces Web usando Ajax e o gerenciamento do contexto de persistência JPA."

Até a data do evento, vamos melhorar a aplicação de referência, preparar os slides em inglês e refinar o texto do que será dito durante a apresentação.

Será uma aventura e tanto!


Read it in English!