Para se medir qualquer coisa, é necessário uma métrica adequada.
Para metrificação de usabilidade, gostaria de apresentar padrão GOMS, e gostei muito dos resultados, principalmente no quesito "mostrar ao cliente".
Na prática, funciona assim:
1) Estabelecer custos para determinadas ações de usabilidade:
Mover o ponteiro do mouse até determinado ponto = 1
Clicar e arrastar um item = 4
Localizar um botão = 2
Tomar uma decisão booleana = 3
Preencher um form aprox 10 campos = 10
...
2) Listar os casos de uso seu sistema
Cadastrar um usuário
Preencher uma nota fiscal
Alterar dados de um usuário
...
3) Para cada caso de uso, pontue o custo de acordo com a primeira tabela
Dessa forma, você terá como identificar e aprimorar a usabilidade de seu sistema, utilizando uma metrificação numérica.
Sexta-feira, 13 de Março de 2009
Terça-feira, 3 de Março de 2009
Criptografia de cookies
Criptografia de cookies é um requisito de segurança quando se armazenam informações críticas nos navegadores dos clientes de seu portal.
Em Java, os algorítimos de criptografia populares (AES, DES3) trabalham com vetores de bytes, o que demanda certa atenção no momento de convertê-los para uma String para se salvar em um cookie, em relação à codificação de caracteres (UNICODE UTF-8 e URLEncode).
Pode-se utilizar Base64 para converter a informação binária para String, porém é possível encarar problemas de padding de bytes.
A melhor solução encontrada foi a codificação dos bytes em Hexadecimal. Fica um pouco maior que o Base64, porém, totalmente bugfree, pois o output só terá caracteres "naturais", de 0 a 9 e A a F. Nada de / = + e outros caras estranhos pra quebrar a codificação de sua string. O pacote Apache Commons Codec implementa ambas as conversões.
http://java.sun.com/javase/technologies/security/
http://pt.wikipedia.org/wiki/Base64
http://commons.apache.org/codec/
Em Java, os algorítimos de criptografia populares (AES, DES3) trabalham com vetores de bytes, o que demanda certa atenção no momento de convertê-los para uma String para se salvar em um cookie, em relação à codificação de caracteres (UNICODE UTF-8 e URLEncode).
Pode-se utilizar Base64 para converter a informação binária para String, porém é possível encarar problemas de padding de bytes.
A melhor solução encontrada foi a codificação dos bytes em Hexadecimal. Fica um pouco maior que o Base64, porém, totalmente bugfree, pois o output só terá caracteres "naturais", de 0 a 9 e A a F. Nada de / = + e outros caras estranhos pra quebrar a codificação de sua string. O pacote Apache Commons Codec implementa ambas as conversões.
http://java.sun.com/javase/technologies/security/
http://pt.wikipedia.org/wiki/Base64
http://commons.apache.org/codec/
Marcadores:
java cookie criptografia hexa base64
Sexta-feira, 21 de Novembro de 2008
Curriculum
MARCIO HENRIQUE GHIRALDELLI
--------------------------------------
Brasileiro, solteiro, 30 anos
Residente em São Paulo-SP Pinheiros
marcio.gh@gmail.com (11) 8473-0200
OBJETIVO: Arquiteto / Programador Sênior
SÍNTESE DE QUALIFICAÇÕES
--------------------------------------
Liderança e iniciativa;
Auto-didata;
Fácil adaptação em diferentes ambientes;
Visão sistêmica e focada em processos;
Inglês fluente;
Java JEE (Struts / Hibernate / Weblogic / NetBeans Tomcat / EJB / BPM / Spring)
SGDBs relacionais (Oracle / MySQL / Firebird)
PHP 5 OO
Flash / ActionScript 3
XML / XHTML / CSS
Linux (Apache / Qmail / Bind / Bash / Perl)
Controle de versão (CVS / SVN)
EXPERIÊNCIA PROFISSIONAL
--------------------------------------
PROGRAMADOR SENIOR - UOL (12/2008 - atual)
- Desenvolvimento e manuteção de sistema de ROI de publicidade para apoio à equipe de negócios.
- JBoss / Jetty / Perl / Oracle / SAP BW
PROGRAMADOR PLENO - ACCURATE SOFTWARE (4/2008 a 12/2008)
- B2W Inc Desenvolvimento de projetos JAVA WebLogic
- Evolução contínua no carrinho de compras da Americanas.com e Shoptime.com (Weblogic)
- Integração das listas de casamento Java da Americanas.com com Submarino.com (Weblogic - ambiente SOA)
- Padrões ITIL (chamados/service desk/SLA) e XP (Extreme Programming)
- Referência: Thiago Buchler thiago.buchler@accurate.com.br
DIRETOR DE TECNOLOGIA - KAÉREA AGÊNCIA DE INTERNET (9/2006 a 3/2008)
- Administração executiva e análise de negócios
- Desenvolvimento de CMS - Sistema de Gerenciamento de Conteúdo (PHP), gerando oportunidades de negócios com agências de publicidade, manutenção de conteúdo
- Desenvolvimento e gestão de ERP e CRM próprios (PHP)
- Integração de conteúdo dinâmico com aplicações em Flash ( XML /ActionScript / PHP)
- Treinamento de programadores (PHP e ActionScript)
- Referência: André Cupini andre.cupini@kaerea.com.br
COORDENADOR DE TECNOLOGIA - NEOBIZ TECNOLOGIA DA INFORMAÇÃO (7/2000 a 9/2006)
- Desenvolvimento de aplicações web
- Coordenação e treinamento de programação JEE (Struts/Hibernate) e PHP
- Implantação e administração de redes VPN e wireless
- Desenvolvimento de aplicativo Java para equipamento portátil para leitura e emissão de cointa água (LIES/Correios) - conexões sockets com backend, interface com usuário e regras de negócio da concessionária de água.
- Integração web para CRM, e desenvolvimento de framework próprio de persistência de dados ORM em PHP
- Membro do comitê de implantação NBR ISO9001:2000
- Referência: Airton Caetano airton.caetano@neobiz.com.br
WEBDESIGNER - NETALFA TECNOLOGIA DA INFORMAÇÃO (1/1999 a 9/2000)
- Desenvolvimento e vendas de websites
- Referência: Mauricio mauricio@netalfa.com.br
FORMAÇÃO ACADÊMICA
--------------------------------------
SUPERIOR COMPLETO (1/2000 a 12/2004)
Ciência da Computação - UNIP Universidade Paulista
CURSOS ADICIONAIS / CERTIFICAÇÕES
--------------------------------------
Curso Oratória e Apresentação
Mantovani 1.o semestre 2006
Curso Programação Java
Mygra Informática 2.o semestre 2005
Curso Gerenciamento da Tecnologia da Informação
Intel / NextG 2.o semestre 2004
Palestra Engenharia de Software
UNESP, 1.o Semestre 2004
--------------------------------------
Brasileiro, solteiro, 30 anos
Residente em São Paulo-SP Pinheiros
marcio.gh@gmail.com (11) 8473-0200
OBJETIVO: Arquiteto / Programador Sênior
SÍNTESE DE QUALIFICAÇÕES
--------------------------------------
Liderança e iniciativa;
Auto-didata;
Fácil adaptação em diferentes ambientes;
Visão sistêmica e focada em processos;
Inglês fluente;
Java JEE (Struts / Hibernate / Weblogic / NetBeans Tomcat / EJB / BPM / Spring)
SGDBs relacionais (Oracle / MySQL / Firebird)
PHP 5 OO
Flash / ActionScript 3
XML / XHTML / CSS
Linux (Apache / Qmail / Bind / Bash / Perl)
Controle de versão (CVS / SVN)
EXPERIÊNCIA PROFISSIONAL
--------------------------------------
PROGRAMADOR SENIOR - UOL (12/2008 - atual)
- Desenvolvimento e manuteção de sistema de ROI de publicidade para apoio à equipe de negócios.
- JBoss / Jetty / Perl / Oracle / SAP BW
PROGRAMADOR PLENO - ACCURATE SOFTWARE (4/2008 a 12/2008)
- B2W Inc Desenvolvimento de projetos JAVA WebLogic
- Evolução contínua no carrinho de compras da Americanas.com e Shoptime.com (Weblogic)
- Integração das listas de casamento Java da Americanas.com com Submarino.com (Weblogic - ambiente SOA)
- Padrões ITIL (chamados/service desk/SLA) e XP (Extreme Programming)
- Referência: Thiago Buchler thiago.buchler@accurate.com.br
DIRETOR DE TECNOLOGIA - KAÉREA AGÊNCIA DE INTERNET (9/2006 a 3/2008)
- Administração executiva e análise de negócios
- Desenvolvimento de CMS - Sistema de Gerenciamento de Conteúdo
- Desenvolvimento e gestão de ERP e CRM próprios (PHP)
- Integração de conteúdo dinâmico com aplicações em Flash (
- Treinamento de programadores (PHP e ActionScript)
- Referência: André Cupini andre.cupini@kaerea.com.br
COORDENADOR DE TECNOLOGIA - NEOBIZ TECNOLOGIA DA INFORMAÇÃO (7/2000 a 9/2006)
- Desenvolvimento de aplicações web
- Coordenação e treinamento de programação JEE (Struts/Hibernate) e PHP
- Implantação e administração de redes VPN e wireless
- Desenvolvimento de aplicativo Java para equipamento portátil para leitura e emissão de cointa água (LIES/Correios) - conexões sockets com backend, interface com usuário e regras de negócio da concessionária de água.
- Integração web para CRM, e desenvolvimento de framework próprio de persistência de dados ORM em PHP
- Membro do comitê de implantação NBR ISO9001:2000
- Referência: Airton Caetano airton.caetano@neobiz.com.br
WEBDESIGNER - NETALFA TECNOLOGIA DA INFORMAÇÃO (1/1999 a 9/2000)
- Desenvolvimento e vendas de websites
- Referência: Mauricio mauricio@netalfa.com.br
FORMAÇÃO ACADÊMICA
--------------------------------------
SUPERIOR COMPLETO (1/2000 a 12/2004)
Ciência da Computação - UNIP Universidade Paulista
CURSOS ADICIONAIS / CERTIFICAÇÕES
--------------------------------------
Curso Oratória e Apresentação
Mantovani 1.o semestre 2006
Curso Programação Java
Mygra Informática 2.o semestre 2005
Curso Gerenciamento da Tecnologia da Informação
Intel / NextG 2.o semestre 2004
Palestra Engenharia de Software
UNESP, 1.o Semestre 2004
Curriculum EN
MARCIO HENRIQUE GHIRALDELLI
--------------------------------------
Brazilian, Single, 29 years
Living at São Paulo-SP, near Congonhas Airport
marcio.gh@gmail.com +55 (11) 8473-0200
OBJECTIVE: IT Architect / Senior Developer
QUALIFICATIONS
--------------------------------------
Leadership and initiative;
Self-learn;
Easy adaptation on differentes enviroments;
Sistematic view and focused in proccess;
English speaking;
Java JEE (Struts / Hibernate / Weblogic / NetBeans Tomcat / EJB / BPM / Spring)
Oracle / MySQL / Firebird
PHP 5 OO
Flash / ActionScript 3
XML / XHTML / CSS
Linux (Apache / Qmail / Bind / Bash / Perl)
Versioning System (CVS / SVN)
PROFESSIONAL EXPERIENCE
--------------------------------------
SENIOR PROGRAMMER - UOL (12/2008 - actual)
- Development and maintenance of ROI publicity system for business staff support.
- JBoss / Jetty / Perl / Oracle / SAP BW
PROGRAMMER - ACCURATE SOFTWARE (4/2008 - 12/2008)
- B2W Inc JAVA WebLogic development - Americanas.com Submarino.com Shoptime.com
- ITIL and XP (Extreme Programming) Standards
- Reference: Thiago Salgado
IT MANAGER - KAÉREA AGÊNCIA DE INTERNET (9/2006 at 3/2008)
- CEO and Business Analyst
- Development of CMS - Content Management System (PHP)
- Development and management of ERP e CRM (PHP)
- XML Integrations (PHP and ActionScript)
- Programmers training (PHP and ActionScript)
- Reference: André Cupini
IT COORDINATIOR - NEOBIZ TECNOLOGIA DA INFORMAÇÃO (7/2000 at 9/2006)
- Development of web applications
- Coordination and training of Java web programming (JEE/Struts/Hibernate) and PHP
- Deployment and administration of VPN and Wireless nets
- Mobile Solution (Java J2ME) for reading and account of residencial water and eletricity consuption (LIES / Correios)
- Development of CRM solutions and persistence ORM (PHP)
- Member of NBR ISO9001:2000 development and deployment
- Reference: Airton Caetano
WEBDESIGNER - NETALFA TECNOLOGIA DA INFORMAÇÃO (1/1999 at 9/2000)
- Websites development
- Reference: Mauricio
ACADEMIC FORMATION
--------------------------
GRADUATED (1/2000 a 12/2004)
Computer Science - UNIP Universidade Paulista
ADITIONALS COURSES / CERTIFICATIONS
-----------------------------------------------
Oratory and Presentations
Mantovani 1.o semestre 2006
Java Programmer
Mygra Informática 2.o semestre 2005
IT Tecnology Management Intel / NextG
2.o semestre 2004
Software Engineering
Palestra Engenharia de Software
UNESP, 1.o Semestre 2004
--------------------------------------
Brazilian, Single, 29 years
Living at São Paulo-SP, near Congonhas Airport
marcio.gh@gmail.com +55 (11) 8473-0200
OBJECTIVE: IT Architect / Senior Developer
QUALIFICATIONS
--------------------------------------
Leadership and initiative;
Self-learn;
Easy adaptation on differentes enviroments;
Sistematic view and focused in proccess;
English speaking;
Java JEE (Struts / Hibernate / Weblogic / NetBeans Tomcat / EJB / BPM / Spring)
Oracle / MySQL / Firebird
PHP 5 OO
Flash / ActionScript 3
XML / XHTML / CSS
Linux (Apache / Qmail / Bind / Bash / Perl)
Versioning System (CVS / SVN)
PROFESSIONAL EXPERIENCE
--------------------------------------
SENIOR PROGRAMMER - UOL (12/2008 - actual)
- Development and maintenance of ROI publicity system for business staff support.
- JBoss / Jetty / Perl / Oracle / SAP BW
PROGRAMMER - ACCURATE SOFTWARE (4/2008 - 12/2008)
- B2W Inc JAVA WebLogic development - Americanas.com Submarino.com Shoptime.com
- ITIL and XP (Extreme Programming) Standards
- Reference: Thiago Salgado
IT MANAGER - KAÉREA AGÊNCIA DE INTERNET (9/2006 at 3/2008)
- CEO and Business Analyst
- Development of CMS - Content Management System (PHP)
- Development and management of ERP e CRM (PHP)
- XML Integrations (PHP and ActionScript)
- Programmers training (PHP and ActionScript)
- Reference: André Cupini
IT COORDINATIOR - NEOBIZ TECNOLOGIA DA INFORMAÇÃO (7/2000 at 9/2006)
- Development of web applications
- Coordination and training of Java web programming (JEE/Struts/Hibernate) and PHP
- Deployment and administration of VPN and Wireless nets
- Mobile Solution (Java J2ME) for reading and account of residencial water and eletricity consuption (LIES / Correios)
- Development of CRM solutions and persistence ORM (PHP)
- Member of NBR ISO9001:2000 development and deployment
- Reference: Airton Caetano
WEBDESIGNER - NETALFA TECNOLOGIA DA INFORMAÇÃO (1/1999 at 9/2000)
- Websites development
- Reference: Mauricio
ACADEMIC FORMATION
--------------------------
GRADUATED (1/2000 a 12/2004)
Computer Science - UNIP Universidade Paulista
ADITIONALS COURSES / CERTIFICATIONS
-----------------------------------------------
Oratory and Presentations
Mantovani 1.o semestre 2006
Java Programmer
Mygra Informática 2.o semestre 2005
IT Tecnology Management Intel / NextG
2.o semestre 2004
Software Engineering
Palestra Engenharia de Software
UNESP, 1.o Semestre 2004
Sexta-feira, 12 de Setembro de 2008
Eclipse TPTP
Através de um plugin do Eclipse é possível coletar dados runtime de uma aplicação Java (um dominio WebLogic por exemplo) e monitorar a utilização de memória por instâncias de objetos, timing de execução de threads entre outras informações, dando a informação precisa do que está acontecendo com uma aplicação, ajudando a localizar vazamentos de memórias e gargalos de processamento.
Eclipse Test & Performance Tools Platform Project
http://www.eclipse.org/tptp/
Tutorial
Baixando pacotes
http://www.eclipse.org/tptp/home/downloads/?ver=4.5.0
TPTP all-in-one package - Eclipse Ganymede + Todos os plugins TPTP ou All TPTP plugins - Somente os plugins para instalar em seu Eclipse (O plugin precisa de um SDK >= 1.5)
Agent Controller - Servidor TCP para coleta de dados de profile - Descompactar o pacote: - copiar os bin/*.dll para o diretório bin/ da JRE da JVM à ser monitorada - executar o bin/RAServer.exe (ficará ouvindo em uma porta TCP)
Configurando o WebLogic
Configurar startWebLogic.cmd para conectar no RAServer.exe no startup: Adicione o argumento -XrunpiAgent:server=enabled na linha de comando do WebLogic
Monitorando dados
Com o RAServer e sua aplicação Java rodando (WebLogic), inicie o Eclipse com o plugin, mude para o Workspace Profiling. Configure um novo profile buscando localhost, e ative os dados à serem coletados.
Eclipse Test & Performance Tools Platform Project
http://www.eclipse.org/tptp/
Tutorial
Baixando pacotes
http://www.eclipse.org/tptp/home/downloads/?ver=4.5.0
TPTP all-in-one package - Eclipse Ganymede + Todos os plugins TPTP ou All TPTP plugins - Somente os plugins para instalar em seu Eclipse (O plugin precisa de um SDK >= 1.5)
Agent Controller - Servidor TCP para coleta de dados de profile - Descompactar o pacote: - copiar os bin/*.dll para o diretório bin/ da JRE da JVM à ser monitorada - executar o bin/RAServer.exe (ficará ouvindo em uma porta TCP)
Configurando o WebLogic
Configurar startWebLogic.cmd para conectar no RAServer.exe no startup: Adicione o argumento -XrunpiAgent:server=enabled na linha de comando do WebLogic
Monitorando dados
Com o RAServer e sua aplicação Java rodando (WebLogic), inicie o Eclipse com o plugin, mude para o Workspace Profiling. Configure um novo profile buscando localhost, e ative os dados à serem coletados.
Sexta-feira, 6 de Junho de 2008
Adicionando e removendo data no Java
A API Java Calendar oferece maneiras práticas para manipulação de datas.
Quando precisamos adicionar meses ou anos em uma determinada data, podemos utilizar o método Calendar.add, que recebe como parâmetros a unidade desejada (dia do mês, ano, semanas, etc) e a quantidade à adicionar.
Segue um exemplo abaixo:
Calendar cal;
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
for (int i = 0; i <>
cal = Calendar.getInstance(); // seta cal na data atual
cal.add(Calendar.MONTH, i); // adiciona meses na data
System.out.println(df.format(cal.getTime()));
}
A saída desse código, supondo que hoje seja 06/06/2008 é:
06/06/2008
...
06/11/2008
06/12/2008
06/01/2009
06/02/2009
...
Note a virada do ano. Sem gambiarras no código.
Quando precisamos adicionar meses ou anos em uma determinada data, podemos utilizar o método Calendar.add, que recebe como parâmetros a unidade desejada (dia do mês, ano, semanas, etc) e a quantidade à adicionar.
Segue um exemplo abaixo:
Calendar cal;
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
for (int i = 0; i <>
cal = Calendar.getInstance(); // seta cal na data atual
cal.add(Calendar.MONTH, i); // adiciona meses na data
System.out.println(df.format(cal.getTime()));
}
A saída desse código, supondo que hoje seja 06/06/2008 é:
06/06/2008
...
06/11/2008
06/12/2008
06/01/2009
06/02/2009
...
Note a virada do ano. Sem gambiarras no código.
Segunda-feira, 19 de Maio de 2008
Hibernate Search com Apache Lucene
O evento Falando em Java 2008 [1] apresentou temas como metotologia SCRUM, Domain Driven Design, efeitos em Ajax.
O ponto alto da apresentação foi a palestra do Emmanuel Bernard, um dos criadores do Hibernate, participante da nova especificação JPA 2.0 e líder do projeto Hibernate Search [2]
O novo Hibernate Search utiliza o motor do Apache Lucene para realizar buscas "full text", escondendo do desenvolvedor a complexidade da atualização de índices. Utiliza eventos JPA (delete, update, insert) enviando mensagens JMS assincronas para atualização do índice agrupadas por blocos de commits, e soluciona o problema da clusterização utilizando um índice master replicados aos slaves utilizando algorítimos de transmissão de arquivos parciais (como o rsync, se não for o próprio)
Para os nerds, como no comercial da Kaiser: "Isso que é tecnologia"
[1] http://www.caelum.com.br/falando-em-java
[2] http://search.hibernate.org
O ponto alto da apresentação foi a palestra do Emmanuel Bernard, um dos criadores do Hibernate, participante da nova especificação JPA 2.0 e líder do projeto Hibernate Search [2]
O novo Hibernate Search utiliza o motor do Apache Lucene para realizar buscas "full text", escondendo do desenvolvedor a complexidade da atualização de índices. Utiliza eventos JPA (delete, update, insert) enviando mensagens JMS assincronas para atualização do índice agrupadas por blocos de commits, e soluciona o problema da clusterização utilizando um índice master replicados aos slaves utilizando algorítimos de transmissão de arquivos parciais (como o rsync, se não for o próprio)
Para os nerds, como no comercial da Kaiser: "Isso que é tecnologia"
[1] http://www.caelum.com.br/falando-em-java
[2] http://search.hibernate.org
Assinar:
Postagens (Atom)
