segunda-feira, 27 de abril de 2009

Livro sobre usabilidade na web

Acabei de ler um livro sobre usabilidade na web escrito por um dos maiores papas da usabilidade atual. Jakob Nielsen e Hoa Loranger conseguiram reunir em um ótimo livro, grandes pecados da usabilidade em sites hoje. Com certeza um ótimo livro e extremamente importante para quem que montar um site ou sistema hoje em dia.

clip_image002

Usabilidade na Web - Projetando Websites com Qualidade

A tradução do livro é ótima e a grande quantidade de exemplos facilita a identificação das falhas nos sites. Terei de montar uma apresentação sobre o livro e postarei ao longo das próximas semanas, alguns tópicos, abordados no livro.

É isto aí pessoal...

quarta-feira, 15 de abril de 2009

Resultado da enquete sobre IDEs Java

Pela resposta dos visitantes vimos que a IDE Eclipse continua sendo a mais utilizada para o desenvolvimento Java. Em segundo lugar na pesquisa vemos que a utilização do Netbeans. Em terceiro lugar vieram empatados o WSAD e o MyEclipseIDE.

image

Nesta última votação tivemos uma participação mais ativa dos visitantes. Em breve teremos novas enquetes e continuem votando.

É isto aí pessoal.

image

domingo, 5 de abril de 2009

Interceptadores em EJB3

Acabamos de passar dos 6.000 acessos ao site desde que começamos a monitorar os acessos com o analytics e não poderia deixar de agradecer enviando um post que talvez ajude a quem quer monitorar e realizar log das operações realizadas pelas chamadas ao EJB. Neste post de hoje vamos falar sobre interceptadores em EJB3.

A especificação de EJB3 define o que seriam interceptadores que adicionam a abilidade de interceptar métodos de negócio de Session Beans e de Message Drive Beans.
Segue abaixo um exemplo de um interceptador que foi implementado com o intuito de realizar um log dos métodos de negócio chamados:

/**
* Classe interceptadora que imprime os métodos de negócio
* que estão sendo chamandos durante a execução do programa.
*
* @author samuelmd
*
*/
public class LogJPAInterceptor {

@AroundInvoke
public Object logInterceptor(InvocationContext invocation)

throws Exception {
Logger logger = Logger.getLogger(LogJPAInterceptor.class);

logger.debug(" ---------------------------- ");
logger.debug("Chamando método " + invocation.getMethod()
+ " da classe " + invocation.getTarget());

Object[] objetos = invocation.getParameters();

if (objetos != null) {
logger.debug("Métodos com os parâmetros :");
for (Object objeto : objetos) {
if (objeto != null) {
logger.debug(objeto.getClass().getName() + " : "
+ objeto.toString());
}
}
}

logger.debug(" ---------------------------- ");
return invocation.proceed();
}
}

A anotação @AroundInvoke indica para o sistema qual o método realizará a interceptação dos métodos de negócio.

Interceptadores podem ser adicionados de 3 maneiras diferentes assim como mostrados abaixo:

  • Default. Só podem ser adicionados através do descritor de implantação assim como definido abaixo:
    <assembly-descriptor>
    <!—Interceptadores default -->
    <interceptor-binding>
    <ejb-name>*</ejb-name>
    <interceptor-class>
    com.thinkworks.interceptor.LogJPAInterceptor
    </interceptor-class>
    </interceptor-binding>
    </assembly-descriptor&gt
  • Classe. Podem ser adicionados tando pelo descritor de implantação quanto pela anotação @Interceptors ({LogJPAInterceptor.class}) em cima da classe.
  • Método. Definido pela anotação @Interceptors ({LogJPAInterceptor.class}) em cima da classe.

É isto aí pessoal. Mais informações podem ser encontradas em http://docs.jboss.org/ejb3/app-server/tutorial/interceptor/interceptor.html.

Qualquer problema avisem…

image

quinta-feira, 19 de março de 2009

Implementando conversor de moeda com JSF

Algumas pessoas já devem ter passado pelo problema de criar um conversor de moedas em JSF que funcione bem para diferentes países. Segue abaixo uma sugestão de como implementar um conversor legal.

O primeiro passo é implementar a classe de conversor. Segue abaixo a classe:

public class MoedaConverter implements Converter {

@Override
public Object getAsObject(FacesContext facesContext,
UIComponent uiComponent, String value) {

FacesContext fc = FacesContext.getCurrentInstance();
Locale l = fc.getViewRoot().getLocale();

if (value != null) {
value = value.trim();
if (value.length() > 0) {
try {
return new BigDecimal(NumberFormat.
getNumberInstance(l).parse(
value).doubleValue());
} catch (ParseException e) {
e.printStackTrace();
}
}
}
return null;
}

@Override
public String getAsString(FacesContext facesContext,
UIComponent uiComponent, Object value) {

if (value == null) {
return "";
}
if (value instanceof String) {
return (String) value;
}
try {
FacesContext fc = FacesContext.getCurrentInstance();
Locale l = fc.getViewRoot().getLocale();
NumberFormat formatador = NumberFormat.getNumberInstance(l);
formatador.setGroupingUsed(true);
return formatador.format(value);

} catch (Exception e) {
throw new ConverterException("Formato não é número.");
}
}
}

Depois deve-se adicionar o seguinte trecho no arquivo faces-config.xml:

<converter>
<converter-id>MoedaConverter</converter-id>
<converter-class>
com.converter.DoubleConverter
</converter-class>
</converter>


Para utilizá-lo agora basta utilizar da seguinte maneira:
   <h:inputText id="moeda"
label="#{msgs.campo_geral_volume_compra}"
value="#{enderecoBean.valor}">
<f:converter converterId="MoedaConverter" />
</h:inputText>
Não se esqueça que este conversor não é também máscara de javascript. Então é importante criar a máscara e adicionar no componente para facilitar a vida do usuário.

É isto aí pessoal. Qualquer problema avisem.

[]s,

quarta-feira, 11 de março de 2009

Artigos sobre gerênciamento de Processos de Negócio

Dois artigos que são bem interessantes sobre processos de negócio são “As empresas são grandes coleções de processos”  que se encontra disponível em http://www.fgvsp.br/rae/artigos/006-019.pdf e outro é “Processo, que processo?” que se encontra disponível em http://www.fgvsp.br/rae/artigos/008-019.pdf. Ambos os artigos são escritos pelo Professor do Departamento de Administração Geral e Recursos Humanos da EAESP/FGV, José Ernesto Lima Gonçalves.

O primeiro artigo (“As empresas são grandes coleções de processos”) é um texto que mostra como a idéia de processos está enraizada nas empresas e organizações atuais. O artigo tem como objetivo facilitar a compreensão do assunto e aplicações para o conceito de processos empresariais.

O artigo se mostra bem útil, pois representa uma introdução bem prática sobre alguns dos principais processos nas empresas, além de ressaltar a importância de se organizar também os processos não fabris nas empresas e descreve além disto as características dos processos empresariais e também mostra a importância dos processos na organização e como a tecnologia se liga a eles de forma a facilitar seu mapeamento e gerenciamento.

Em sua conclusão o autor cita que as empresas tem sido cada vez mais centradas em processos, apesar de várias das empresas brasileiras ainda não conhecerem e nem mapearem seus processos.

O texto é muito bem ilustrado com quadros que mostram exemplos de processos, classificações, processos característicos e categorias. O artigo é bem abrangente nos conceitos de processos, mas peca um pouco em não enfatizar nenhum dos pontos de maneira mais profunda.

O segundo artigo (“Processo, que processo?”) é uma continuação do artigo citado anteriormente e resume as diferenças entre as organizações tradicionais e as empresas estruturadas por processos.

O artigo começa enfatizando o fato das empresas em geral não saberem como se organizarem por processos e identifica algumas empresas que já possuem esforços nesta direção como a IBM, HP, entre outras e então fala sobre como a empresa pode verificar e desenhar seus processos e como em alguns casos isto pode ser bem difícil em áreas não fabris da empresa, além de mostrar que para que a empresa se organize em processos o foco da empresa deixa de ser a estrutura da empresa e passa a ser o cliente.

É mostrado então algumas comparações entre organogramas e processos, estrutura organizacional versus estrutura organizacional por processos e estruturação por processos e também uma maneira de realizar a classificação de empresas com relação à organização por processos.

Uma parte mais prática do artigo se refere a como materializar os princípios de organização por processos que passa uma visão ampla, mas bem simplista dos passos a serem seguidos para que uma empresa mude sua estrutura para se aproximar de uma organização por processos.

Numa parte final o texto mostra em um quadro muito bem feito o quanto é recomendado para a empresa se orientar a processos de acordo com alguns fatores definidos pelo autor, tais como necessidade de flexibilidade e agilidade.

O autor então conclui que o futuro vai pertencer às empresas que consigam explorar seus processos tanto fabris quanto não fabris e que consigam centrar seus esforços em seus clientes, o que para mim faz muito sentido. O texto é muito bem escrito e possui exemplos claros e quadros e ilustrações que facilitam a leitura.

Ambos os textos cumprem muito bem os objetivos propostos e passam uma visão bem abrangente dos processos atuais nas empresas e de como orientar as empresas a processos.

É isto aí pessoal. Espero que ajude e que incentive vocês a ler os artigos que são bem interessantes. Qualquer problema me avisem…

image