Archive for the ‘ Reviews ’ Category

5 Motivos para usar o Google App Engine – Lightning Talk QCONSP 2011

Olá pessoal,
esse mês(10 e 11 de Setembro) aconteceu a segunda edição do QCON aqui em São Paulo. Para quem não conhece o evento , é um dos principais eventos de arquitetos e desenvolvedores do mundo, envolvendo várias tecnologias com ótimas palestras.
E além das palestras, foi muito bom poder rever os velhos amigos e fazer novas amizades.
E esse ano tive a feliz oportunidade de apresentar uma Lightning talk, falando um pouco sobre as vantagens de usar google app engine, assunto esse, que não sou nenhum mestre jedi, apenas um padawan :P haha . Mas que apesar de todo nervosismo por ser minha primeira apresentação, e pelo curto tempo,  consegui passar um pouco da minha experiência com essa tecnologia, que venho utilizando na implementação do QuantasHoras .
Foi uma ótima experiência, que com toda pesquisa feita, elaboração dos slides, aprendi bastante.
Confiram os slides:
View more presentations from Jean Donato
E qualquer dica, sugestão, crítica, etc… é bem vinda =)
[]‘ss

RichFaces 4 – Drag and Drop

Quando desenvolvemos sistemas, temos um propósito final, atender a necessidade do nosso cliente. Além de uma boa manutenibilidade e funcionamento eficaz,  nos preocupar com uma boa interface, usabilidade e navegação, é fundamental para agradar nosso cliente e para termos um Software de sucesso.

Gostaria de compartilhar alguns conhecimentos sobre um componente do RichFaces 4, Drag-and-drop,  (o famoso “arraste e solte”, que é usado em diversos softwares) ,  juntamente com nosso bom e velho JavaServer Faces 2.0.

Com ele temos a seguinte árvore de componentes: rich:dragSource, rich:dropTarget e rich:dragIndicator. O mecanismo básico é bem simples, no <rich:dragSource> colocamos os Objetos que podem ser arrastados pelo usuário, indicando seu tipo com o atributo type(que é uma String) . Sendo assim, temos o <rich:dropTarget> que será quem receberá o Objeto de seu dragSource , de acordo com a compatibilidade do seu tipo, definido no atributo acceptedTypes(que é o tipo definido acima(String), podendo ser mais de um, separados por vírgula). Ou seja, só podemos arrastar um objeto para uma área compatível . Temos também a opção de setar @none para não aceitar nada, ou então @all, para aceitar qualquer tipo. Se esse atributo ficar em branco, será assumido o valor “null”, equivalente as ações de @none. Ainda em dropTarget você tem dois atributos importantes, o dropListener: onde via EL poderá chamar seu método que cuidará de “tirar um objeto de um lugar” e “colocar um objeto em outro lugar”; Com o dropValue: você poderá informar uma String para fazer alguma verificação no seu método, ela que será obtida na classe DropEvent. E por último temos o <rich:dragIndicator> , ele que cuidará do que será exibido para o usuário durante o processo de drag-and-drop, podendo informar seu css nos atributos acceptClass, rejectClass, draggingClass.

 

Esse tipo de “navegação/animação”  vem sido bem utilizada e já virá nativamente no HTML5,  sendo bem utilizada também no novo projeto do google(A rede social google +), “arraste e solte”.

 

Para isso fiz um rápido projeto de exemplo, um jogo da velha, veja os fontes em: https://github.com/JeanDonato/JogoDaVelhaRichFaces4

Showcase do RichFaces

[]‘ss

Review HandsOn JSF 2.0

Fala galera, sábado passado(26/02/2011) o JUGMS iniciou suas atividades de 2011 a todo vapor. Com um Hands-On muito da hora, tanto para aqueles que não conheciam JSF, para aqueles que já conheciam e também para aqueles que vinham de outra plataforma, foi muito proveitoso todo conteúdo, o bate papo com a galera, discussões sobre arquitetura, padrões, projetos, enfim…,  e finalizando com um delicioso coffee-break. :-)

Vou tentar passar aqui um pouco do conteúdo do que foi dito pelo Jõao Bosco Monteiro no Hands-On.

Bom, o objetivo do projeto era desenvolver um simples gerenciador de Blog, utilizando as seguintes tecnologias do JavaEE6: JSF2.0, EJB, CDI e Glassfish 3.0.1.

Tinhamos a seguinte estrutura: um pacote com a entity, um jsf com os converter’s e um model com a lógica de negócio .

O projeto estando dividido da seguinte forma:

Imagem retirada de: http://www.hascode.com/2011/02/creating-a-sample-java-ee-6-blog-application-with-jpa-ejb-cdi-jsf-and-primefaces-on-glassfish/

 

Além de JPA, utilizamos um pouco do “framework” Bean Validation do Java EE6, esse cara que ajuda a diminuir o esforço para validações em nossas classes com apenas algumas anotações.

Exemplos simples, que foram utilizados no projeto :

- com um @Size(min=”10″, max=”100″) em um atributo, conseguimos controlar o tamanho do campo, especificando os limites em “min” e “max”. Nesse caso o usuário teria que digitar no mínimo 10 caracteres e no máximo 100 em um inputText.

- com um @Past dizemos que o atributo com essa anotação deve ser uma data no passado.

- com um @Future dizemos que o atributo com essa anotação deve ser uma data no futuro.

Várias outras anotações podem serem utilizadas, recomendo a leitura desteLink para quem quiser saber mais sobre.

Utilizamos na camada de negócios EJB 3.1 com seu Recurso Stateful Session Beans onde é mantido um relacionamento de um-para-um entre o cliente e  o bean, ou seja, podemos ter a instância do bean adormecida até ser solicitada novamente e reativada , tudo isso gerenciado pelo EJB container, fazendo uso também da ferramenta Java Transaction API (JTA), tendo uma aplicação mais portável, reusável e escalável.

Na view, tivemos páginas para listar, inserir um novo post e uma para pré-visualizar o conteúdo. (como o exemplo era de um blog)

Além da utilização das tags básicas do JSF e da E.L(Expression Language) para montar uma tela, usamos a EL passando parâmetros, aonde por exemplo tinhamos um <h:commandLink> em um <h:dataTable>, que por esse link passava um Objeto para meu controller remover assim: action:”#{blogManager.removePost(item)}” . Tivemos a utilização de ajax também com <f:ajax> para renderizar apenas uma table quando fosse efetuado alguma pesquisa, passando em sua propriedade render=”postsTable searchParams” , o nome da tabela  e do input, os campos que eu queria que fosse renderizados quando clicasse no botão. Também usando a <f:setPropertyActionListener> , para fazer associação de um objeto em uma página de listagem com o objeto do meu bean, passando ele em value e no target o cara que estaria no meu controller, ou seja, quando clicasse no link, o objeto do meu bean passaria a valer o objeto que estava no link.

Bom galera, foi isso ae, se esqueci de mencionar alguma coisa, sorry! :-)

As fotos do Hands-On estão disponíveis em:

https://picasaweb.google.com/comunidade.jugms/HandsOnJSF2

E o código fonte do exemplo está no GitHub do JUGMS:

https://github.com/jugms/minicurso-jsf2

Qualquer dúvida, post na lista do grupo, que vai ter sempre alguém para ajudar ! http://groups.google.com/group/jug-ms

Um agradecimento especial ao Edilmar Alves por ceder o espaço e ao Jõao Bosco Monteiro por disponibilizar seu sábado para realizar o mesmo.

see you !

[]‘sss

 
Hire PHP Developer India
  • Twitter
  • Facebook
  • LinkedIn
  • YouTube