logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Fev 2

Visualização de Dados – Many Eyes – Parte 3

Escrito por DClick Team em 1, 2.0, AR, arte, C#, dados, for, O, on, RIA, Ria’s Geral, S+S, Sun, visualizacao, XP @ 02 2nd, 2012 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Comentei já no meu primeiro post sobre o assunto a respeito do projeto da IBM chamado Many Eyes. O Many Eyes é uma plataforma pública, é um projeto para que todos possam usar e explorar os benefícios da Visualização de Dados, porém é claro, milhares de dados entram diariamente e estes ficam a disposição da…

Continue Lendo
Jan 30

Visualização de Dados – Uma abordagem sobre UI – Parte 2

Escrito por DClick Team em 1, 2.0, AR, arte, C#, dados, Gráfico, if, int, interface, O, on, Ria’s Geral, S+S, Sun, Tema, UI, user experience, visualizacao @ 01 30th, 2012 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Ainda continua o assunto sobre Visualização de Dados voltado a User Interface que comecei aqui, vamos agora abordar o tema de uma maneira mais simplificada e interessante. É muito comum algumas pessoas ficarem perdidas nesse assunto e ainda por cima não conseguirem avançar no tema sem pensar nos gráficos tradicionais, pizza e bastões. Quero lembrar…

Continue Lendo
Dez 18

Recomendação de Produtos em eCommerce

Escrito por Igor Musardo em .NET, 1, 2.0, 4, 6, action, analytics, AR, arte, Behavior, BI, blog, C#, carregar, class, cliente, consultoria, Destaque, Dica, Dicas, DRE, e-commerce, filter, filtra, fonte, for, Google, ide, IE, if, image, int, internet, layout, lista, Livro, Livros, Mercado, mg, NaN, O, on, procura, produto, pt, RIA, Ria’s Geral, S+S, site, Software, tag, TAT, Tema, Teste, UI, Vídeo, Vídeos, web, XP, zend @ 12 18th, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Sistemas de Recomenda??o procuram recomendar informa??o e produtos (como computadores, m?quinas fotogr?ficas, filmes, videos, m?sicas, livros, p?ginas de internet, etc.) que possam ser de interesse do usu?rio, esses sistemas procuram e identificam padr?es de interesse, perfil e consumo. A partir desses padr?es os sistemas de intelig?ncia artificial geram associa??es entre produtos e consumidores aplicando t?cnicas de filtragem colaborativa.

Com a ajuda dos sistemas de recomenda??o as vendas pela internet podem se aproximar do conceito criado por Jeff Bezos, presidente da Amazon, de “uma loja por cliente”. Pensar no usu?rio ? fundamental para manter-se num mercado t?o competitivo como a internet. N?o ? ? toa que a Amazon ? um dos e-commerce mais bem sucedidas da hist?ria.

Sistemas de Recomenda??o processam as informa??es que o usu?rio d? ao site durante a navega??o e entregam dicas de produtos relacionados aos gostos e interesses do consumidor, fazendo parte dos sistemas de Behavioral Targeting, ou Marketing Comportamental.

Por?m s? a utiliza??o de Intelig?ncia Artificial, Filtragem Colaborativa e outras t?cnicas computacionais n?o garantem o aumento de convers?o, pois o consumidor precisa impactado de maneira positiva pelas recomenda??es, a seguir voc? encontrar? dicas e melhores pr?ticas de como direcionar o usu?rio-consumidor para uma melhor compra.

Elementos de uma vitrine

T?tulo

  1. Utilize cores diferenciadas do layout do site;
  2. Utilize n?meros: “60% das pessoas” constroi um fator de confian?a na cabe?a do consumidor.

Cores

  1. Utilize cores contrastantes que d?em destaque para a se??o de recomenda??o. Cuidado para n?o sobrecarregar, a se??o deve parecer como um an?ncio.

Produtos

  1. Oferece sempre poucas op??es. Apenas 3 ou 4 recomenda??es s?o suficientes.

Chamada para a??o (Call-to-action)

  1. Se voc? utilizar mais de uma chamada pra a??o, tenha uma como principal com maior destaque dentro da se??o de recomenda??o.

Melhores pr?ticas

Confira as melhores pr?ticas para conseguir um maior ?ndice de convers?o de suas vitrines de recomenda??o.

Menos sempre ? mais

Mostrando poucas recomenda??es, torna a decis?o do consumidor mais f?cil. Um bom n?mero de produtos na lista ? 3 ou 4, n?o fa?a uma lista grande. Tornar? a escolha muito mais dif?cil pelo internauta.

Tente o UpSell, pelo menos o Cross Sell

O prop?sito de fazer recomenda??es ? para aumentar o valor do pedido e/ou fazer a venda mostrando melhores op??es por um pre?o pr?ximo do produto visualizado.

Exclua Recomenda??es

Voc? n?o deve recomendar produtos antigos quando algu?m est? tentando comprar a ?ltima vers?o do mesmo produto. Seja mais criativo e venda mais.

Descontos funcionam

Ofere?a pacotes de produtos com descontes. Seus consumidores prezam pelo dinheiro. Com um lucro menor em alguns produtos, mas o valor de pedido maior garante uma boa margem.

Senso de urg?ncia

Quando oferecer um desconto ou valor especial, tire vantagem disso criando urg?ncia, dando um prazo curto para o consumidor efetuar a compra. Isso ir? aumentar os cliques e as convers?es.

Continue testando

Como garantir que essas pr?ticas funcionar?o e continuar?o funcionando em seu neg?cio? Continue testando permanentemente. Teste Chamadas para a??o, T?tulos, Cores, etc. Utilize softwares de testes gratu?tos como o Google Website Optimizer.

Sua loja utiliza sistemas de recomenda??es de produtos?

Sim? Compartilhe nos coment?rios quais as experi?ncias e resultados obtidos com suas vitrines.
Caso seu eCommerce n?o utilize, entre em contato comigo.
Fontes
Webinsider
Wikipedia
LiftSuggest

Dez 15

Atualizações automáticas silenciosas no Internet Explorer a partir de Janeiro/2012

Escrito por Kelps Sousa em .NET, 1, 2.0, 4, 6, AR, arte, auto, blog, browser, C#, chrome, cliente, empresas, Excel, explorer, for, Google, ide, IE, ie6, ie7, IE8, int, internet, map, mg, Microsoft, News, O, on, padrão, pt, Ria’s Geral, S+S, site, team, UI, UX, web, window, windows, windows 7, XP @ 12 15th, 2011 | via http://kelps-sousa.blogspot.com/ | Sem comentários
Kelps Sousa
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Uma excelente notícia para quem desenvolve para Web: Hoje Ryan Gavin anunciou no blog oficial do Internet Explorer (em inglês) os planos para implementação de atualizações automáticas silenciosas no IE, começando já em janeiro de 2012 no Brasil e Austrália (isso mesmo, Brasil fará parte do piloto).

Essas atualizações ocorrerão, como o próprio nome diz, de forma automática e silenciosa, sem necessidade de nenhuma intervenção do usuário e possivelmente (pele menos é o que esperamos) sem reiniciar o computador. Esse tipo de atualização já é comum para usuários do Google Chrome.

Mesmo sendo automáticas e sem intervenção, ainda será possível optar por não atualizar (há casos de empresas que têm aplicações que dependem de versões específicas do browser e não podem simplesmente atualizar), ou mesmo remover a atualização e voltar para a versão anterior, mas o padrão agora será a atualização automática para a última versão.

A atualização será para a última versão disponível na plataforma do usuário, ou seja, usuários do Windows XP receberão o IE8 e usuários do Vista e Windows 7 receberão o IE9 (e IE10, quando for lançado).

Agora é esperar que essa atualização realmente diminua de forma substancial o tamanho da base instalada de IE6 e IE7 (e talvez IE8 também, mas não tanto) para que possamos desenvolver sites e aplicações com mais tranquilidade e menos dores de cabeça, além de ajudar a convencer os clientes de que não será mais tão imprescindível suportar versões tão antigas do browser da Microsoft.

versão traduzida para português do post sobre este anuncio



Dez 15

Injeção de Dependências nos DAOs de Entidades do Framework

Escrito por DClick Team em 1, 2.0, 4, 6, AR, arte, auto, BI, C#, class, err, exemplo, for, framework, git, Google, Hibernate, ide, IE, if, Java, Number, O, on, override, padrão, procura, Ria’s Geral, S+S, Sem categoria, Spring, string, Sun, super(), TAT, Teste, Twitter, UI @ 12 15th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

A última implementação da HibernateDAOFactory do módulo persist do DCF, agora permite que seus DAOs de entidade possuam propriedades injetadas diretamente do container de beans do Spring.

No exemplo que temos nos testes de projeto, temos o MockDAO, que possui uma propriedade String com nome ‘testeString’:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MockDAO extends HibernateEntityDAO

private String testeString;

public MockDAO(SessionFactory sessionFactory)
super(MockEntity.class, sessionFactory);

@Override
protected Order getOrderForList()
return Order.asc(“number”);

public String getTesteString()
return testeString;

@Autowired
@Qualifier(“testeString”)
public void setTesteString(String testeString)
this.testeString = testeString;

}

Note que no setter da propriedade, colocamos a anotação @Autowired, para recuperar esta String do container, e também associamos o Qualifier ‘testeString’.

No arquivo de beans do spring, basta adicionarmos um bean String com o id igual ao do qualifier:

1
2
3
class=“java.lang.String” id=“testeString”>
-arg value=“stringTeste” />
>

Repare que o valor da String é ‘stringTeste’. Vamos ver em nosso teste agora se tal valor chega corretamente no DAO:

1
2
3
4
5
6
7
8
9
10
@Test
public void testRightFactory()
MockDAO dao = this.getDaoFactory().getDAO(MockEntity.class);
Assert.assertNotNull(dao);

Assert.assertEquals(this.getDaoFactory(), dao.getDaoFactory());

Assert.assertNotNull(dao.getTesteString());
Assert.assertEquals(“stringTeste”, dao.getTesteString());

Uma coisa importante a se perceber, é que a chamada da DAOFactory permanece exatamente a mesma, mantendo assim a retro-compatibilidade com as outras versões, e apenas as injeções baseadas em anotações do Spring vão ser consideradas.
NÃO é necessário apontar o component-scan do Spring para o pacote de DAOs de sua aplicação. A injeção de beans adicionais é feita completamente a parte, seguindo o mesmo padrão de nome e de instanciação dos DAOs.

Qualquer dúvida, basta me procurar.

O projeto está no github, dentro do módulo persist do dclick-framework, ou diretamente no nexus da DClick.

Dez 14

O eCommerce brasileiro em 2011

Escrito por Igor Musardo em 1, 2.0, 4, 6, AR, arte, Artigo, Artigos, BI, C#, class, Curso, Desenvolvimento, Dica, e-commerce, empresas, err, esporte, exemplo, Ferramenta, for, Geral, ide, if, image, imagens, int, Mate, Mercado, mg, O, on, online, Outros, portal, produto, RIA, Ria’s Geral, S+S, Segurança, site, tag, Tema, UI, XP @ 12 14th, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

O portal E-commerce Brasil realizou recentemente uma pesquisa com as principais lojas virtuais do pa?s com o objetivo de saber mais sobre as plataformas utilizadas.

Plataforma Pr?pria x Tercerizada

O primeiro aspecto espec?fico analisado foi exatamente se os e-commerces trabalham com plataforma pr?pria, ou terceirizada. Descobriu-se que 53,86% das empresas t?m sua pr?pria plataforma e 46,15% utilizam um servi?o terceirizado.

ERP?

Verificou-se, tamb?m, quantas empresas possuem o Enterprise Resource Planning – ERP integrado o seu sistema. A diferen?a em porcentagem entre as que possuem e as que n?o ? pequena. 57,69% delas afirmaram ter o ERP integrado, e 42,31% alegaram n?o ter. Na ?rea de desenvolvimento, 42,31% das lojas virtuais possuem equipe pr?pria, mas 57,69% prefeririam n?o informar a respeito.

Atendimento Online

Outro fator analisado foi a exist?ncia de atendimento online, em tempo real, aos consumidores durante a realiza??o da compra. Essa ferramenta utilizada pelos e-commerces facilita para os consumidores tirarem suas d?vidas a cerca do produto, da entrega e dos prazos, por exemplo. A grande maioria das lojas virtuais entende a import?ncia desse recurso e 61,54% afirmam utiliz?-lo para facilitar a intera??o com o seu p?blico. 38,46% n?o fazem uso do atendimento via chat.

Selos de Seguran?a

A grande maioria dos sites utiliza com algum selo de seguran?a, o que visa trabalhar, ainda mais, a confian?a do p?blico alvo na empresa. Esse n?mero chega ao 73,08% dos sites pesquisados. E apenas 26,92% deles ainda n?o possuem algum selo.

Como expor os produtos no e-commerce

Uma parte da pesquisa trata dos produtos disponibilizados nas lojas virtuais: como eles s?o divididos no site, suas categorias, se possuem fotos para ilustra??o e se possuem um est?dio pr?prio para cadastro do produto.

Categorias

Ao catalogar em quantas categorias os produtos normalmente s?o divididos no site, obtevese uma gama de resultados que variam entre uma e nove categorias diferentes. Pouco mais da metade das empresas, cerca de 57,69%, fazem essa divis?o em nove categorias diferentes. Uma parcela de 11,54% trabalha apenas com duas categorias e 7,69% das lojas virtuais pesquisadas trabalham com duas divis?es: tr?s e cinco categorias diferentes. Apenas 3,85% das empresas trabalham com uma categoria. A mesma porcentagem trabalha com quatro, seis e oito categorias diferentes.

Fotos

As fotos que ilustram os produtos servem para que o consumidor possa conhec?-lo, observar seus aspectos materiais e ter uma ideia do tamanho e do peso, por exemplo.
88,46% das empresas participantes da pesquisa alegaram utilizar imagem para identificar o produto em mais de 90% das suas ofertas. 3,85% das lojas fazem uso das imagens em 70% dos seus produtos e a mesma parcela alegou o faz em at? 90% dos casos.
Sobre os est?dios pr?prios para o cadastramento de seus produtos, a pesquisa revelou que 73,08% das lojas o possuem e 26,92% n?o.

Uma vis?o geral sobre os e-commerces analisados

A pesquisa observou o setor em que essas lojas virtuais trabalham. Em primeiro lugar est?o as voltadas para a moda masculina, com 23,08% do mercado. Em seguida, com 19,23%, est?o as lojas voltadas para eletr?nicos e inform?tica. O setor de alimentos ocupa cerca de 5,38% do mercado e o de animais de estima??o, 11,54%. O ramo de esportes tem uma parcela de 7,69% e o de marketing e embalagens, 3,85% cada.
O tempo de exist?ncia do e-commerce na rede ? um fator significante, que pode influenciar no n?mero de vendas realizadas. Quanto maior esse tempo, maiores as chances do p?blico estar familiarizado com a empresa, criar uma rela??o com a mesma e gerar, afinal, credibilidade e confian?a nos seus servi?os. A pesquisa revelou que 34,62% das lojas virtuais existem h?, no m?ximo, tr?s anos. Outros 30,77% est?o no mercado h? menos de um ano e uma parcela de 23,08% tem de tr?s a cinco anos. Apenas 11,54% dessas empresas existem h? mais de cinco anos.

Dez 14

Testes Unitários com JUnit – De volta ao básico

Escrito por DClick Team em 1, 2.0, 4, 6, Air, AR, arte, C#, case, class, classe, classes, cliente, código, comparação, demo, Desenvolvimento, Design, Download, Eclipse, err, erro, exemplo, falha, Ferramenta, Flex, for, framework, Google, ide, IE, if, int, Introdução, Java, NaN, O, on, Opinião, Outros, padrão, Plugin, print, rest, RIA, Ria’s Geral, S+S, Sem categoria, site, string, Sun, super(), TAT, Tema, Teste, Twitter, UI, uint @ 12 14th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Já que ultimamente estamos falando bastante de testes unitários, principalmente aqui na DClick, vamos revisar uma das ferramentas essenciais para executar essa tarefa: JUnit. Mais especificamente, vamos fazer alguns testes com o JUnit 4.8.1, que pode ser encontrado para download no site do projeto, ou até mesmo no repositório do maven.
A proposta desse post é apresentar a ferramenta para quem ainda não conhece, e relembrar ou até mesmo mostrar algumas funcionalidades muito úteis para nosso dia a dia de desenvolvimento.


Um pouco sobre a nova versão

Nas versões anteriores do JUnit, da 3.* pra baixo para ser mais exato, era necessário criar as classes de testes seguindo uma hierarquia pré-definida do JUnit para que os testes fossem executados. Era necessário extender uma das classes de Test Case do JUnit, e seus métodos precisavam seguir um padrão de nome específico definido pelo framework.
Com a versão 4.* e a introdução ao suporte a Java 5, agora todas as configurações de testes unitários em JUnit são feitas via anotações, o que na minha opinião é muito mais rápido e fácil, tornando muito mais agradável e flexível escrever testes unitários. Agora é possível definir umahierarquia específica para os testes do projeto, podendo abstrair muitas inicializações e padrões do sistema, facilitando o reaproveitamento e aumentando a velocidade de desenvolvimento. Afinal a maior parte do tempo gasto em desenvolvimento é com os testes.
Porém, com anotações, perdemos o acesso direto aos métodos de asserção de valores que as super classes definiam. A solução adotada foi tornar todos esses métodos estáticos e públicos, em uma classe específica para guardá-los: org.junit.Assert.
Pode parecer uma solução não muito elegante do ponto de vista de código, e de fato não é quando consideramos código que será distribuído e deploiado, porém é uma solução que faz total sentido no escopo dos testes unitários, tornando fácil o uso e acesso a tais funcionalidades.

Asserções



Para testar nosso código, o JUnit fornece os métodos de assert. O conceito é muito simples, todo método de asserção recebe um valor que é o correto esperado pelo teste, e o outro valor que é o devolvido pelo seu código. A comparação é executada, e o teste falha caso sejam diferentes e passa caso sejam iguais. Apenas com esse conceito é possível testar todo o código, basta saber quais são os valores que devem ser testados para garantir o funcionamento do código.
A chave para escrever um teste unitário que cobre muito bem o seu código, é colocar as asserções nos valores realmente relevantes ao funcionamento do sistema. Algumas vezes por exemplo, não é preciso testar um valor intermediário gerado pelo código, apenas o resultado final, outras vezes esse valor intermediário gerado é crucial para o resultado final, e portanto deve ser verificado também.
Quando eu menciono ‘valores’, entenda que um valor pode ser qualquer objeto Java, portanto é muito importante implementar o equals e hashcode de seus objetos de resposta que serão testados pelo JUnit.

Exemplo Prático



Vamos criar um exemplo de classe de testes com o JUnit 4 para vermos como funciona na prática a execução de testes unitários.
Se você utiliza o Eclipse, você já possui instalado o plugin de execução de testes do JUnit, caso você não tenha tal plugin, recomendo que instale posi facilita muito a execução e depuração dos testes.
Vamos criar uma classe de testes:

1
2
3
public class JUnitTestCase



Repare que apesar do nome parecer que segue algum padrão, não é necessário que a classe tenha nenhuma dessas palavras em seu nome. Porém esta classe ainda não é uma classe de testes do JUnit. Para torná-la um teste, crie um método da seguinte forma:

1
2
3
4
@Test
public void metodoQualquer()



Repare na anotação org.junit.Test. Essa anotação diz que nosso método ‘metodoQualquer’ é um teste do JUnit. Perceba também que seu retorno é ‘void’ e ele não recebe nenhum argumento. Agora nossa classe é um teste propriamente dito. Simples assim. Vamos adicionar uma asserção agora para ver o funcionamento da mesma. Dentro do método que acabamos de criar, adicione a seguinte chamada:

1
Assert.assertEquals(“2 dividido por 2 deveria ser 1.”, 1, 2 / 2);



Repare que o primeiro argumento do método, é a mensagem que vai aparecer caso o método falhe. Mude o valor obtido (último argumento) para ver a mensagem de erro.
Esse é o básico de execução de testes. Por mais simples que possa parecer, esse é o ponto de partida. Agora existem outras funcionalidades qua ajudam a escrever testes mais complexos, por exemplo, se precisarmos criar um objeto mais complexo para nossos testes, fazemos o seguinte, adicione o seguinte código em nossa classe de testes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private String stringLocal;

@Before
public void inicializaLocal()
System.out.println(“Inicializou.”);
this.stringLocal = “inicializada”;

@Test
public void testInicializadaLocal1()
Assert.assertEquals(“A String deveria estar inicializada.”, “inicializada”,
this.stringLocal);

@Test
public void testInicializadaLocal2()
Assert.assertEquals(“A String deveria estar inicializada.”, “inicializada”,
this.stringLocal);

@After
public void setaNull()
System.out.println(“Setou nulo.”);
this.stringLocal = null;



Rode o teste e veja o que aparece no console.
Repare que a String é inicializada e setada novamente pra ‘null’ 3 vezes. Isso porque nossa classe possui 3 métodos de testes, e os métodosanotados com @Before rodam sempre antes de todos os métodos de teste. O mesmo vale para os métodos anotados com @After, só que estes rodam depois de executar os métodos de teste.
Só com essas duas anotações é possível criar cenários que estão sempre ‘zerados’ e corretamente incializados para cada teste que será executado em sua classe. Perceba que com isso é possível separa melhor as asserções em suas classes em mais métodos, deixando mais específico e focado cada método de teste.
Porém algumas vezes queremos inicializar algum objeto para o teste todo, sem precisar de algo específico para cada execução. Nesse caso existem duas outras anotações que podem ser úteis. Adicione o seguinte trecho em nossa classe de testes:

1
2
3
4
5
6
7
8
9
@BeforeClass
public static void antesDeTudo()
System.out.println(“Executado Antes.”);

@AfterClass
public static void depoisDeTudo()
System.out.println(“Executado Depois.”);



Só existe um restrição com essa abordagem, e acho que está claro no código qual que é: o escopo dessas chamadas é estático. Repare que os métodos precisam ser estáticos, e portanto as incializações só servirão para propriedades que são estáticas em sua classe de testes.
Essa funcionalidade possui esse comportamento porque o JUnit instancia um novo objeto da sua classe de testes para cada método que será rodado, dessa forma ele garante um melhor isolamento dos testes, tornando-os mais unitários por assim dizer. Dessa forma somente métodos estáticos são garantia de execução antes de todos os outros métodos.
Rode o teste e veja a ordem das mensagens em seu console.

Próximos passos



Essa foi uma introdução muito simples do JUnit e testes unitários. Acho que já passou pela sua cabeça muitas formas de inicializar, integrar e rodar testes em sua aplicação usando JUnit, o que é ótimo, mas ainda existem boas práticas para criar testes assim como existem boas práticas para escrever código, afinal testes são linhas de código também.
O segredo de um bom teste unitário é o quanto ele consegue cobrir do funcionamento do código, sem que seja necessário escrever um teste extremamente detalhado que deixe o código acoplado demais, e não permita muita mudança no código original. Se você investir tempo demais testando TODOS os valores possíveis de suas classes de maneira extremamente detalhada, quando o cliente pedir que um requisito mude, você com certeza vai ter a sensação de trabalho jogado fora, e desânimo por ter que escrever tudo novamente. A idéia é utilizar padrões de design para testes unitários, de forma que se mantenha a cobertura de código no 85%+ e ainda deixe os testes bem flexíveis a mudança. Difícil mas não impossível, e sim, é muito mais difícil e trabalhosos escrever testes realmente bons, do que escrever o código que será testado.

Por @Gust4v0_H4xx0r

Dez 14

Dicas para ser levado a sério

Escrito por Igor Musardo em .NET, 1, 2.0, 4, api, app, AR, arte, Artigo, auto, BI, C#, Censo, class, cliente, Curso, Dica, Emprego, err, fonte, for, Geral, html, ide, IE, if, image, int, Liderança, lista, Mercado de Trabalho, mg, Motivação, O, on, Outros, Pessoal, problema, pt, RIA, Ria’s Geral, S+S, UI, VOZ, XP @ 12 14th, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Voc? j? percebeu que, em qualquer grupo, algumas pessoas s?o naturalmente levadas a s?rio, e outras n?o? E isso raramente tem rela??o com ser ou n?o sisudo – o indiv?duo de gravata com mais cara de brabo e sem gra?a numa equipe pode n?o ser levado a s?rio por ningu?m, e o colega que est? sempre de bom humor pode ser visto com respeito por todos.

O que h? em comum entre as pessoas que s?o levadas a s?rio? ? dif?cil fazer uma lista completa, mas no caso das pessoas em posi??o de lideran?a (formalizada ou n?o), eu gosto de uma defini??o de W. E. B. Griffin: o que elas dizem tem um tom especial, que indica “eu serei levado a s?rio” – ou “eu serei obedecido”, no caso da lideran?a aliada a chefia formal. Mas esse tom n?o ? produzido pela voz, e sim pelas atitudes, que aos poucos conquistam o respeito dos que est?o ao seu redor.

E o que os outros v?em em n?s, por interm?dio das nossas atitudes, come?a nas nossas escolhas e no modo como n?s mesmos nos vemos – em outras palavras, o caminho come?a quando n?s mesmos come?amos a nos levar suficientemente a s?rio. O artigo “5 Reasons People Don’t Take You Seriously and How to Fix It” apresenta uma s?rie de raz?es pelas quais as pessoas podem n?o estar levando voc? a s?rio, e convido voc? a pass?-las rapidamente em revista neste meu resumo.

Vamos a elas:

N?o manter a palavra

Isso n?o significa exatamente a mesma coisa que “ser mentiroso”, neste contexto. Significa anunciar freq?entemente planos e inten??es que na pr?tica voc? acaba n?o realizando, fazer promessas que n?o poder? cumprir, ou mesmo que n?o pretende cumprir. A cada m?s voc? anuncia que vai fazer uma dieta, que vai melhorar as condi??es de trabalho da equipe, e que no s?bado que vem vai levar a fam?lia toda para a praia – e nunca cumpre? Ent?o pare de anunciar que vai fazer as coisas que dependem apenas de voc?, e adote a pol?tica de faz?-las primeiro, e anunciar seu sucesso depois.

N?o dar continuidade

Voc? come?a e n?o prossegue? Paga a academia e s? vai na primeira semana? Come?a o curso de ingl?s e deixa de ir j? no segundo m?s? Ningu?m vai lev?-lo a s?rio assim. Comece a compor planos de metas sucessivas, em degraus, e persiga cada uma das metas com aten??o. E comece menos coisas. E… veja novamente o item 1.

N?o separar trabalho e vida pessoal

N?o h? problema nenhum em ir para a happy hour com os colegas de trabalho, ser pr?ximo dos clientes, ou ter amizades reais no ambiente de trabalho. Mas – a n?o ser em casos espec?ficos – colegas de equipe e clientes n?o deveriam ser todos os seus *melhores* amigos, e deve haver um limite a partir do qual a sua vida pessoal fica reservada em rela??o ao conjunto geral deles. Todo mundo tem seus desafios, e uma parte deles precisa transparecer; a outra parte deve ficar acess?vel apenas a quem tem interesse positivo e genu?no nela – n?o necessariamente seus colegas, clientes ou fornecedores.

Dar mais desculpas do que resultados

Releia o item 1, e depois fa?a mentalmente uma lista das pessoas que voc? conhece e que t?m sempre uma desculpa na ponta da l?ngua para explicar por que n?o cumpriram aquilo que disseram que fariam, ou por que a culpa n?o ? dela. Dar desculpas ? um h?bito companheiro da procrastina??o, e leva as pessoas a n?o levarem voc? a s?rio. Fa?a acontecer, ou n?o se proponha.

Andar com a turma errada

Esta tem v?rias alternativas – se as pessoas com quem voc? se associa s?o exatamente as que voc? deseja se associar, francamente, permane?a com elas e se concentre em outras formas de ser visto com seriedade pelos demais. Mas se voc? est? associado sem raz?o, e freq?entemente questiona a atitude e as decis?es destas pessoas, pare para pensar se quem olha de fora n?o faz os mesmos questionamentos em rela??o a voc?. Mas seja aut?ntico – nada de abandonar amizades genu?nas ou virar a casaca pensando apenas na sua imagem – isso s? far? com que ainda mais pessoas deixem de levar voc? a s?rio.
Agora, fa?a voc? um r?pido censo mental das pessoas em posi??o de lideran?a com quem convive no trabalho ou em outro lugar, e que n?o s?o levadas a s?rio pelos seus p?blicos, e em seguida fa?a tamb?m uma auto-an?lise – talvez voc? reveja algum conceito! Depois compartilhe conosco nos coment?rios quais as caracter?sticas mais freq?entes que impedem os seus colegas de levarem a s?rio os l?deres das suas equipes!
Fonte: Efetividade

Dez 13

Multiple Views com Spring Web MVC

Escrito por DClick Team em .NET, 1, 2.0, 3.5, 4, 6, action, apache, app, Apresentação, AR, Arquitetura, arte, auto, BI, C#, case, class, classe, cliente, código, control, conversor, dados, Design, development, dispatch, Diversos, Documentação, err, exemplo, Ferramenta, Flex, for, framework, Frameworks, Google, handle, html, ide, IE, if, int, interface, internet, j2ee, Java, JSF, library, map, mvc, NaN, O, on, Outros, padrão, Projetos, pt, rest, RIA, Ria’s Geral, S+S, Sem categoria, servidor, site, Software, Spring, SpringFramework, state, string, strings, Sun, tag, TAT, Tecnologia, Tema, tv, Twitter, UI, uint, web, XML, XP @ 12 13th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Uma das vantagens de utilizar a arquitetura do Spring para implementar projetos Web, é fazer uso do Sprin-WEB-MVC. Quem já usou sabe que isso é uma vantagem a se considerar quando for feita a escolha das tecnologias e frameworks que serão utilizados no projeto.
Spring WEB-MVC é uma abstração poderosa para a camada de apresentação, tornando muito flexível o uso de diferentes tipos de tecnologias no frnt-end da aplicação.
Veremos uma dessas abstrações que ajudam a modularizar e simplificar nosso trabalho do lado do servidor: Views.

Conceito de Views



Toda requisição que segue para o WEB-MVC passa pelo DispatcherServlet do spring. A partir daí, o container se responsabiliza por delegar a chamada para o controller correto, baseando-se nas configurações de sua aplicação.
Depois que a chamada é tratada pelo controller, o spring manda a resposta correspondente atrelada a uma View. Uma View é um descritor da forma com que os dados vão ser apresentados na interface, podendo ser JSP, JSF, JSon, XML, etc., ou até mesmo uma forma de encapsular os dados específica da sua aplicação.
O poder das Views está justamente no fato de ser apenas uma descrição de como os dados serão apresentados, portanto desconecta-se completamente da aplicação, e pode ser aproveitada em outras ocasiões por outros sistemas.
Uma View no Spring nada mais é do que uma interface Java que descreve o tipo do conteúdo, e é responsável por renderizar a requisição:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the “License”);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an “AS IS” BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.springframework.web.servlet;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* MVC View for a web interaction. Implementations are responsible for rendering
* content, and exposing the model. A single view exposes multiple model attributes.
*
*

This class and the MVC approach associated with it is discussed in Chapter 12 of
* Expert One-On-One J2EE Design and Development
* by Rod Johnson (Wrox, 2002).
*
*

View implementations may differ widely. An obvious implementation would be
* JSP-based. Other implementations might be XSLT-based, or use an HTML generation library.
* This interface is designed to avoid restricting the range of possible implementations.
*
*

Views should be beans. They are likely to be instantiated as beans by a ViewResolver.
* As this interface is stateless, view implementations should be thread-safe.
*
* @author Rod Johnson
* @author Arjen Poutsma
* @see org.springframework.web.servlet.view.AbstractView
* @see org.springframework.web.servlet.view.InternalResourceView
*/
public interface View

/**
* Name of the @link HttpServletRequest attribute that contains the response status code.
*

Note: This attribute is not required to be supported by all
* View implementations.
*/
String RESPONSE_STATUS_ATTRIBUTE = View.class.getName() + “.responseStatus”;

/**
* Return the content type of the view, if predetermined.
*

Can be used to check the content type upfront,
* before the actual rendering process.
* @return the content type String (optionally including a character set),
* or

1
null

if not predetermined.
*/
String getContentType();

/**
* Render the view given the specified model.
*

The first step will be preparing the request: In the JSP case,
* this would mean setting model objects as request attributes.
* The second step will be the actual rendering of the view,
* for example including the JSP via a RequestDispatcher.
* @param model Map with name Strings as keys and corresponding model
* objects as values (Map can also be

1
null

in case of empty model)
* @param request current HTTP request
* @param response HTTP response we are building
* @throws Exception if rendering failed
*/
void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception;

}



Todo o código e JavaDoc está no projeto do Spring.

JSon e XML



Vamos criar um exemplo de controller com duas views diferentes: JSon e XML. JSon e Xml são os formatos mais comuns na Web, por isso vamos ver uma das maneiras de devolvê-las em nossos contrllers.
Não vou entrar no detalhe de como configurar os controllers da sua aplicação para funcionar com o Spring-WEB-MVC, pois não é o intuito deste post, e existe bastante documentação disponível na internet sobre o assunto.


A maneira que escolhi para o exemplo, foi deixar a resposta padrão da servlet como XML, e criar uma alternativa de view em JSon. Você pode configurar como quiser a ordem e o padrão de view da sua aplicação, essa escolha serve apenas para ilustar como lidar com os dois casos.
Comece criando alguma classe de domínio para servir de resposta do nosso controller:

1
2
3
4
5
6
7
8
9
10
public class Exemplo
private String nome;

public String getNome()
return nome;

public void setNome(String nome)
this.nome = nome;

}



Agora vamos criar um Controller para devolver nosso objeto de domínio:

1
2
3
4
5
6
7
8
9
10
11
12
@Controller
public class ExemploController

@RequestMapping(“/exemplo/xml”)
@ResponseBody
public Exemplo testando()
Exemplo ret = new Exemplo();
ret.setNome(“xml”);
return ret;

}



Agora temos uma servlet que responderá por “//exemplo/xml” devolvendo a instância de exemplo que acabamos de criar no método.
Vamos configurar agora nosso ‘empacotador’ de XML para torná-lo formato padrão da aplicação. No arquivo de beans do Spring crie os seguintes beans:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

class=“org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter”>

name=“messageConverters”>
>

bean=“marshallingHttpMessageConverter” />
>

>

>

class=“org.springframework.oxm.xstream.XStreamMarshaller”
id=“xmlMarshaller”>

name=“aliases”>
>

key=“exemplo”>Exemplo
>

>

>
>

id=“marshallingHttpMessageConverter”
class=“org.springframework.http.converter.xml.MarshallingHttpMessageConverter”>

name=“marshaller” ref=“xmlMarshaller” />
name=“unmarshaller” ref=“xmlMarshaller” />
>



O que fizemos foi criar um “marshaller” de XML que usa o XStream para converter ‘de’ e ‘para’ XML. Também mapeamos nossa classe de domínio para o alias “exemplo”. Feito isso basta criar um bean que representa os conversores de mensagens do Spring, nesse caso ‘messageConverters’, e associar o conversor de XML nele.
Pronto! Agora que temos as configurações necessárias para criar XML, e anotamos nosso método do controller com ‘@ResponseBody’, o padrão do Spring será devolver o XML que representa a entidade de domínio criada:

1
2
3
>
>xml>
>



Para criar a view de JSon agora, vamos fazer de maneira diferente. Comece criando um bean em seu arquivo do Spring que representa a View de JSon:

1
2
3
id=“jsonview”
class=“org.springframework.web.servlet.view.json.MappingJacksonJsonView”>

>



Note que precisamos da dependência do ‘Jackson’ no classpath do nosso projeto, que está disponível no site do projeto ou até mesmo no repositório do maven.
Agora em nosso controler, vamos adicionar a dependência da view que acabamos de criar, e adicionar o método que tratará a requisição em JSon:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private View jsonview;

@Autowired
@Qualifier(“jsonview”)
public void setJsonview(View jsonview)
this.jsonview = jsonview;

@RequestMapping(“/exemplo/json”)
public ModelAndView testandoJson()
Exemplo ret = new Exemplo();
ret.setNome(“json”);
return new ModelAndView(this.jsonview, “response”, ret);



Repare que não precisamos da anotação ‘@ResponseBody’, e que ao invés de devolver um ‘Exemplo’ estamos devolvendo o ModelAndView do SpringWEBMVC.
Para que a resposta chegue no formato correto, basta mandar a view de JSon que criamos junto com o ModelAndView, e o objeto de domínio. Dessa forma temos a resposta que esperamos:

1
2
3
4
“response”:
“nome”:”json”

}


Conclusão

Para a moda REST que está tomando força nos últimos tempos, as múltiplas views do Spring é uma ótima ferramenta para fazer parte dessa onda, e ainda prover diferentes maneiras de seu servidor se comunicar com diversos tipos de dispositivos e aplicações clientes, sem comprometer código com regras de negócio.

Espero ter sido útil, e qualquer dúvida, crítica ou comentário são sempre bem vindos.

Por @Gust4v0_H4xx0r

Dez 6

Introdução ao jQuery

Escrito por Elvis Fernandes em 1, 2.0, 2009, 4, Ajax, Android, aplicacao, app, Apresentação, AR, arte, Balsamiq, Balsamiq Mockups, BI, blog, C#, CRUD, Curso, Cursos, dados, Desenvolvimento, DRE, err, erro, falha, firefox, for, git, Google, gratuito, html, ide, IE, if, int, Introdução, Java, Javascript, JQuery, live, Livro, Microsoft, mockup, NaN, novidade, Novidades, O, Office, on, Palestra, Partilha, permalink, Plugin, protótipo, pt, rails, rest, restfulx, RIA, Ria’s Geral, S+S, Sun, swf, tag, Tema, UI, web, window, windows, XP @ 12 6th, 2011 | via http://www.elvis.eti.br | Sem comentários
Elvis Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

O jQuery é uma biblioteca JavaScript poderosa que está quase se tornando quase “sinônimo” do próprio JavaScript.

A apresentação de slides a seguir é de uma palestra introdutória do jQuery, que destaca praticamente todos os seus recursos e que mostra algumas modificações na versão mais recente da biblioteca (1.7).

E para quem quiser se aprofundar no assunto, o último slide aponta para um livro gratuito de jQuery: jqfundamentals.com.

(Registro aqui o agradecimento ao Erko Bridee por compartilhar esse conteúdo)

Posts relacionados

  • Livro: Google Android“>Livro: Google Android (0)
  • Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost“>Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost (2)
  • CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application“>CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application (2)
  • CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve“>CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve (7)
  • Protesto: falha em sistema da Orizon expõe dados sigilosos de pacientes“>Protesto: falha em sistema da Orizon expõe dados sigilosos de pacientes (0)
  • Balsamiq Mockups: solução entre protótipos de alta e baixa fidelidade“>Balsamiq Mockups: solução entre protótipos de alta e baixa fidelidade (8)
  • Erro “bad line length character” no Git“>Erro “bad line length character” no Git (1)
  • Windows e Office: novidades da Microsoft“>Windows e Office: novidades da Microsoft (4)
  • Firefox Plugin – visualizar trace de SWFs“>Firefox Plugin – visualizar trace de SWFs (2)

© Elvis for Elvis Fernandes, 2011. |
Permalink |
Nenhum comentário |
Adicione ao
del.icio.us


Tags: AJAX, Desenvolvimento, JavaScript, jQuery, web

« Entradas anteriores |

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2755 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com