iMasters - iMasters - Comunidade de profissionais, estudantes e mestres em tecnlogias e ferramentas voltadas para o desenvolvimento web http://imasters.com.br/ Wed, 22 Feb 2012 19:10:17 -0200 iMasters tGenerator RSS 0.0 <![CDATA[ Hackers conseguem descobrir localização física de um celular]]> http://imasters.com.br/noticia/23650/seguranca/hackers-conseguem-descobrir-localizacao-fisica-de-um-celular Através de um telefone barato e de um equipamento disponível no comércio, e sem ajuda das companhias telefônicas, é possível rastrear a posição física de um usuário da telefonia celular. De acordo com pesquisadores da Universidade de Minnesota, nos Estados Unidos, as operadoras de telefonia celular deixam vazar a localização física dos usuários de telefones celulares ao usar a difusão de mensagens não criptografadas.

A equipe também demonstrou que é possível capturar as mensagens trocadas entre a torre da empresa de telefonia e o celular do usuário e desligar a chamada antes mesmo que o celular do usuário toque.

As torres de telefonia celular precisam rastrear a posição física dos usuários para operar de forma eficiente. Dessa forma, qualquer mensagem para aquele usuário será dirigida para a torre que estiver mais próxima dele.

Isso é feito disparando pacotes de informações temporizadamente e esperando que o telefone responda. Quando o usuário se movimenta, a informação é atualizada na rede de telefonia.

O que os pesquisadores demonstraram é que essa informação está largamente acessível, através de programas de código aberto e equipamentos disponíveis no comércio.

O método de ataque funcionou nas redes GSM, as mais usadas em todo o mundo.

No teste de campo, os pesquisadores rastrearam a posição de um usuário dentro de uma área de 10 quarteirões, conforme ele caminhava a pé. Segundo os pesquisadores “agentes de um regime opressor não vão mais precisar da cooperação das empresas de telefonia para determinar se os dissidentes estão no local de um protesto". Além disso, eles afirmaram que outro exemplo do uso da fragilidade é o de ladrões testando se o telefone celular de um usuário está fora de uma área específica, deduzindo o nível de risco associado com a invasão de sua residência.

Com informações de Inovação Tecnológica

]]>
Redação iMasters (redacao@imasters.com.br) Qua, 22 Feb 2012 17:40:00 -0200 http://imasters.com.br/noticia/23650/seguranca/hackers-conseguem-descobrir-localizacao-fisica-de-um-celular
<![CDATA[ Player de vídeo VLC chega à versão 2.0]]> http://imasters.com.br/noticia/23649/tecnologia/player-de-video-vlc-chega-a-versao-20 O player de vídeo VLC chegou à sua versão 2.0, depois de 11 anos de existência.

A nova versão traz várias mudanças, entre elas está o visual do programa, que abandonou o design do Windows 95 e adotou algo mais minimalista, com interface em uma janela única. Para assistir a um vídeo, basta arrastá-lo para a janela que ele começa a tocar. Outros destaques são a capacidade de exibir legendas em qualquer lugar na tela e redimensioná-las, e a adição de novos filtros para a remoção de faixas.


Além disso, há aceleração de GPU e de CPUs com múltiplos processadores, novos formatos HD, processamento de áudio ainda maior, filtros de vídeo melhorados e suporte a discos Blu-ray “experimental”.

O VLC 2.0 está disponível para download para Windows, Mac OS X e Linux neste link.

Com informações de Gizmodo

]]>
Redação iMasters (redacao@imasters.com.br) Qua, 22 Feb 2012 16:35:00 -0200 http://imasters.com.br/noticia/23649/tecnologia/player-de-video-vlc-chega-a-versao-20
<![CDATA[ openSUSE 12.2 apresenta primeiro milestone]]> http://imasters.com.br/noticia/23647/software-livre/opensuse-122-apresenta-primeiro-milestone A equipe de desenvolvimento do openSUSE publicou o primeiro milestone da versão 12.2 da sua distribuição Linux. Esse "marco" de desenvolvimento é o primeiro de quatro previstos para serem liberados - virão ainda uma versão beta e dois Release Candidates.

Segundo esta página do projeto, a versão final do openSUSE 12.2 está programada para chegar em meados de julho deste ano de 2012.

Voltado para desenvolvedores e testadores, o primeiro milestone do openSUSE 12.2 contém poucas mudanças, já que o principal objetivo do lançamento era encontrar todos os pontos que precisariam ser modificados a partir do 12.1 até o desenvolvimento do ramo 12.2.

As mudanças incluem uma nova versão do navegador Firefox e melhorias do ambiente desktop KDE para a mais recente versão 4.8.

O primeiro milestone do openSUSE 12.2 pode ser baixado aqui.

Com informações de Under-Linux

]]>
Redação iMasters (redacao@imasters.com.br) Qua, 22 Feb 2012 15:40:00 -0200 http://imasters.com.br/noticia/23647/software-livre/opensuse-122-apresenta-primeiro-milestone
<![CDATA[ Google vai implementar gerador de senhas seguras no Chrome]]> http://imasters.com.br/noticia/23646/seguranca/google-vai-implementar-gerador-de-senhas-seguras-no-chrome Em um documento interno do projeto Chromium, o Google confirmou que está trabalhando em um gerador de senhas seguras para o Chrome, que deve ser implementado em uma futura versão do navegador.


Quando usuários chegarem a páginas de cadastro de sites, terão a opção de usar uma senha aleatória gerada pelo Chrome, combinando letras maiúsculas e minúsculas, números e caracteres/símbolos especiais. Depois do cadastro, a senha seria automaticamente armazenada no navegador e sincronizada com a conta da pessoa, na nuvem.

Esse tipo de senha dificilmente consegue ser memorizada, e o Google quer matar chaves de acesso simples/óbvias demais, que normalmente são causas constantes de acessos indevidos a contas de usuários - data de nascimento, nome do bicho de estimação e placa do carro devem estar entre as mais comuns, sem falar em opções como “123456”.

Quanto maior e mais diversificada for a senha, mais difícil é alguém obter acesso por ataque de força bruta.

Com informações de MacMagazine

]]>
Redação iMasters (redacao@imasters.com.br) Qua, 22 Feb 2012 14:30:00 -0200 http://imasters.com.br/noticia/23646/seguranca/google-vai-implementar-gerador-de-senhas-seguras-no-chrome
<![CDATA[ Canonical lança versão 10.04.4 do Ubuntu]]> http://imasters.com.br/noticia/23645/software-livre/canonical-lanca-versao-10044-do-ubuntu A Canonical e os desenvolvedores do Ubuntu liberaram o Ubuntu 10.04.4, a quarta versão de manutenção da mídia de instalação atualizada para a versão de longo prazo (LTS). Esta é a última atualização planejada para a mídia de instalação e atualizações dos CDs de servidor, desktop e DVDs, disponíveis para arquiteturas i386 e amd64. Futuramente, as atualizações de segurança serão liberadas individualmente para download de arquivos do Ubuntu.

Entre as principais mudanças está a atualização do Firefox para a versão 9.0, e o navegador vai acompanhar as atualizações rápidas de lançamento da Mozilla. Essa mudança foi planejada e aplicada em atualizações de software em janeiro deste ano.

A lista completa de correções e os pacotes atualizados estão disponíveis neste link.

Com informações de Under-Linux

]]>
Redação iMasters (redacao@imasters.com.br) Qua, 22 Feb 2012 13:20:00 -0200 http://imasters.com.br/noticia/23645/software-livre/canonical-lanca-versao-10044-do-ubuntu
<![CDATA[ Estudo da HP prevê a popularidade de notícias no Twitter antes da publicação]]> http://imasters.com.br/noticia/23638/redes-sociais/estudo-da-hp-preve-a-popularidade-de-noticias-no-twitter-antes-da-publicacao Cientistas do HP Labs, braço de pesquisa e desenvolvimento da empresa, criaram uma técnica capaz de prever, com até 84% de precisão, a popularidade de uma matéria jornalística no Twitter antes mesmo que seja publicada. 

De acordo com estudos prévios do HP Labs, é possível prever o fluxo e refluxo dos trending topics do microblog. O objetivo da pesquisa foi reforçar a teoria de que a fonte da notícia é fator determinante na popularidade de uma matéria, além de entender questões fundamentais sobre como os usuários são influenciados a agir, retuitando uma notícia.

Os pesquisadores levaram em consideração quatro fatores para determinar a popularidade de uma matéria:

  • A fonte da notícia – quem cria e publica
  • A categoria da notícias (por exemplo, negócios, saúde, tecnologia ou esporte)
  • Se a linguagem do texto foi emocional ou objetiva
  • Se celebridades, marcas famosas ou outras instituições notáveis são mencionadas

A partir daí, a equipe atribuiu a cada notícia uma pontuação para todos os quatro fatores, criando, assim, uma nota final. Em seguida, foi feita uma previsão para o número de “tuítes” que a notícia pode receber é calculada utilizando modelos estatísticos.

O estudo confirmou a sabedoria editorial comum: histórias de fontes críveis, que mencionam celebridades e pertencem às categorias mais populares de notícias, são mais propensas a gerar comentários no Twitter.

Por outro lado, a análise mostrou que o tom da notícia, emocial ou objetivo, influenciou muito menos sobre a sua distribuição no microblog, sugerindo que manchetes sensacionalistas não são capazes de gerar maior propagação que relatos simples.

Chamado de “A força das notícias na mídia social: previsão de popularidade” (The Pulse of News in Social Media: Forecasting Popularity), o estudo é baseado em dados de mais de 40 mil notícias publicadas ao longo de nove dias em agosto de 2011. O estudo completo está disponível aqui, em inglês.


]]>
Redação iMasters (redacao@imasters.com.br) Qua, 22 Feb 2012 11:30:00 -0200 http://imasters.com.br/noticia/23638/redes-sociais/estudo-da-hp-preve-a-popularidade-de-noticias-no-twitter-antes-da-publicacao
<![CDATA[ Use a API do jQuery Mobile para obter um controle customizado de baixa granularidade]]> http://imasters.com.br/artigo/23610/jquery/use-a-api-do-jquery-mobile-para-obter-um-controle-customizado-de-baixa-granularidade A API do jQuery Mobile fornece um nível extra de controle sobre a customização de seu website remoto. Tudo, desde a configuração personalizada das opções globais até a entrada em eventos de interação e o trabalho com métodos expostos, é possível com a API e é abordado neste artigo. Ao final deste artigo, você saberá como definir granularmente as opções personalizadas que deseja usar em seu website remoto e também como escrever um código customizado que interaja com a estrutura jQuery Mobile.

Este artigo cobre uma seleção de propriedades, eventos e métodos expostos úteis da estrutura jQuery Mobile. Cada seção explica as opções e fornece uma amostra de código para mostrar como se faz. Para executar quaisquer amostras de código, primeiro é necessário fazer o download da versão mais recente do jQuery e da estrutura jQuery Mobile ou acessar os arquivos diretamente da content delivery network (CDN) do jQuery, dentro de seu arquivo HTML (consulte Recursos).

Opções globais

As seguintes opções globais estão disponíveis por meio da API do jQuery Mobile e permitem que você altere o modo como o jQuery Mobile se comporta por padrão:

  • Extensão do evento de inicialização do jQuery Mobile
  • Criação de namespaces customizados
  • Inicialização da página
  • Customização da chave de URL da subpágina
  • Configuração das classes ativas de página e de botão
  • Configuração das transições padrão de página e de caixa de diálogo
  • Customização das mensagens de carregamento e erro


Extensão do evento de inicialização do jQuery Mobile

O jQuery Mobile inclui um evento de inicialização que é carregado antes mesmo do evento document.ready do jQuery carregar. Na verdade, o jQuery Mobile aciona seu evento de inicialização, chamado mobileinit, no próprio objeto do documento. Isso permite que você substitua e amplie as opções globais padrão do jQuery Mobile, o que é o ponto de partida para todo este artigo. Para ampliar o evento mobileinit , você precisa adicionar seu manipulador de evento customizado de JavaScript antes de o jQuery Mobile ser carregado e depois de a estrutura jQuery ter sido carregada (veja a Listagem 1).

Lista 1. Ampliando o evento mobileinit do jQuery Mobile

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="custom-jqm-mobileinit.js"></script>
<script type="text/javascript" src="jquery.mobile.js"></script>

Para ampliar o evento mobileinit ~, primeiro é necessário conectá-lo a uma função customizada. A Listagem 2 mostra um exemplo que usa o método bind para ampliar o evento mobileinit .

Lista 2. Conectando com o evento mobileinit

$(document).bind("mobileinit", function() {
// Override global options here
});

Ao se conectar de forma bem-sucedida ao evento mobileinit, você pode substituir as opções globais. Para substituir as opções globais, use o método extend do jQuery para expandir o objeto $.mobile (veja a Listagem 3) ou simplesmente substitua as propriedades individuais configurando-as diretamente.

Lista 3. Ampliando o objeto $.mobile

$(document).bind("mobileinit", function() {
$.extend( $.mobile , {
property = value
});
});

Se houver diversas propriedades que você deseja atualizar, o método extend é uma opção mais limpa, pois não é necessário escrever o objeto $.mobile diversas vezes. No entanto, se houver apenas uma propriedade para atualização, ocupa menos linhas de código simplesmente definir a propriedade individualmente (veja a Listagem 4).

Lista 4. Substituindo valores da propriedade individual

$(document).bind("mobileinit", function() {
$.mobile.property = value;
});

O objeto $.mobile é o ponto de partida para a configuração de todas as propriedades.


Criando namespaces customizados

É possível customizar os atributos data- de HTML5, como data-role, por meio de namespaces. Um namespace permite que você adicione um nome personalizado que aparecerá entre as partes data- e -role do atributo data-role, por exemplo. A propriedade $.mobile que permite a customização do namespace é ns. A Listagem 5 mostra um exemplo de configuração de um namespace customizado usando a propriedade ns.

Lista 5. Crie um namespace customizado

$(document).bind("mobileinit", function() {
$.mobile.ns = "my-custom-ns";
});

O namespace customizado usado na Listagem 5 produz data-my-custom-ns-role em vez de data-role, o que o permite ter como alvo esses namespaces por meio de seletores CSS. Ter como alvo os namespaces customizados por meio de seletores CSS permite outra maneira de projetar um tema customizado para widgets remotos que usam esses namespaces.

Inicialização da página

O jQuery Mobile inclui uma propriedade chamada autoInitializePage que determina se a página da web deve ser inicializada. Por padrão, o valor dessa propriedade está definido como verdadeiro, portanto, a página é sempre inicializada quando o documento está pronto. No entanto, ao ampliar o objeto $.mobile, você pode definir essa propriedade como falsa e lidar com a inicialização da página posteriormente. A Listagem 6 mostra um exemplo de como é possível atrasar temporariamente a inicialização da página, enquanto outros scripts são executados. Se você tiver uma grande quantidade de JavaScript do lado do cliente em execução na página da web, talvez seja uma boa ideia atrasar a inicialização, até que o carregamento do DOM seja concluído e o JavaScript do lado do cliente tenha a chance de ser executado.

Lista 6. Configurando a inicialização automática para páginas da web remotas

<!DOCTYPE HTML>
<html>
<head>
<title>Understanding the jQuery Mobile API</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).bind("mobileinit", function() {
$.mobile.autoInitializePage = false;
});
</script>
<script type="text/javascript" src="jquery.mobile.js"></script>
</head>

<body>

<div data-role="page">
<div data-role="content">
<ul data-role="listview" id="my-list"></ul>
</div>
</div>

<script type="text/javascript">
$('#my-list').html('<li><a href="page-2.html">Link to another page</a></li>');
$.mobile.autoInitializePage = true;
</script>

</body>
</html>

Customizando a chave de URL da subpágina

Ao fazer referência a subpáginas, o jQuery Mobile usa uma chave de parâmetro de URL de ui-page por padrão. É possível alterar essa chave por meio de uma propriedade do objeto $.mobile chamada subPageUrlKey. Qualquer valor de cadeia de caractere atualizado nessa propriedade é refletido nas URLs de subpágina geradas por widget. Por exemplo, se você usar uma subPageUrlKey customizada de my-page, a URL padrão de web-page.html&ui-page=value se tornará web-page.html&my-page=value.

Além de fornecer uma maneira de criar URLs mais atrativas, as chaves customizadas de URL de subpágina também podem fornecer uma maneira de encurtar as URLs ou definir seus valores como algo mais específico para o website que as está usando.


Configurando as classes ativas de página e de botão

Quando uma página da web inclui a estrutura jQuery Mobile, há uma classe CSS padrão aplicada automaticamente ao elemento ui-page. Para alterar o valor padrão, que é ui-page-active, basta alterar a propriedade activePageClass do objeto $.mobile. Ao atualizar essa classe, o CSS padrão incluído com a estrutura não aplica mais seu estilo à classe ui-page-active, pois não existe mais. Portanto, é importante criar sua própria classe CSS customizada que corresponde ao valor fornecido para essa propriedade.

Configurando as transições padrão de página e de caixa diálogo

Por padrão, as páginas e caixas de diálogo incluem um efeito de transição no jQuery Mobile quando as alterações na página são manipuladas via Ajax. A transição de página padrão é slide, enquanto a transição de caixa de diálogo padrão é pop. Para alterar esses valores, você precisa ter como alvo a propriedade defaultPageTransition ou defaultDialogTransition. A Listagem 7 mostra como é fácil alterar os valores dessas propriedades.

Lista 7. Configurando as transições padrão de página e de caixa de diálogo

$(document).bind("mobileinit", function() {
$.mobile.defaultPageTransition = "fade";
$.mobile.defaultDialogTransition = "fade";
});

Nesse exemplo, a transição para as páginas e para as caixas de diálogo é um efeito de desvanecimento. A estrutura inclui seis efeitos de transição baseados em CSS: slide, slideup, slidedown, pop, fade e flip. É possível aplicar esses efeitos diretamente em hyperlinks incluindo o atributo data-transition.


Customizando as mensagens de carregamento e erro

Outras duas opções globais sobre as quais a estrutura oferece controle são as mensagens de carregamento e de erro. A mensagem de carregamento mostra um valor de cadeia de caractere de loading por padrão. Para atualizar essa propriedade, você simplesmente precisa ter como alvo a propriedade loadingMessage. Na Listagem 8, eu mudei a mensagem de carregamento padrão de loading para Please wait. Como resultado, quando o Ajax é usado para carregar páginas, uma pequena caixa de diálogo é exibida com minha mensagem de carregamento customizada.

Lista 8. Configurando a mensagem de carregamento padrão

$(document).bind("mobileinit", function() {
$.mobile.loadingMessage = "Please wait";
});

O valor padrão de pageLoadErrorMessage é Error Loading Page. Eu atualizei essa mensagem a fim de alterá-la para algo mais simples na Listagem 9.

Lista 9. Configurando a mensagem de erro padrão

$(document).bind("mobileinit", function() {
$.mobile.pageLoadErrorMessage = 'Sorry, something went wrong. Please try again.';
});

Entrando em eventos do jQuery Mobile

É possível ampliar os tipos de evento a seguir usando a API do jQuery Mobile:

  • Eventos de toque
  • Eventos de orientação
  • Eventos de rolagem


Eventos de toque

Há diversos eventos de toque que podem ser customizados no jQuery Mobile. No entanto, esses eventos ficam disponíveis somente quando o usuário que está interagindo com um dispositivo habilitado para toque acessa seu website do jQuery Mobile. Quando esses eventos estão disponíveis, é possível acionar qualquer JavaScript customizado como resposta a cinco eventos diferentes: tap, taphold, swipe, swipeleft e swiperight. Cada um deles é autoexplicativo, como você pode ver na Tabela 1.

Tablela 1. Eventos de toque customizáveis para jQuery Mobile

EventoDescrição
tapÉ acionado quando alguém toca rapidamente na tela.
tapholdÉ acionado quando alguém toca na tela e mantém o toque durante cerca de um segundo.
swipeÉ acionado quando a página da web é arrastada horizontal ou verticalmente. Na verdade, esse é o único evento com propriedades associadas. Essas propriedades são scrollSupressionThreshold, durationThreshold, horizontalDistanceThreshold e verticalDistanceThreshold.
swipeleftÉ acionado quando a página da web é arrastada para a esquerda.
swiperightÉ acionado quando a página da web é arrastada para a direita.

Para conectar qualquer um desses eventos de toque, talvez seja necessário usar o evento document.ready. Quando o documento estiver pronto, você poderá acessar um elemento e conectar seu evento de toque selecionado (veja a Listagem 10).

Lista 10. Conectando-se a eventos de toque

<!DOCTYPE HTML>
<html>
<head>
<title>Understanding the jQuery Mobile API</title>
<link rel="stylesheet" href="jquery.mobile.css" />
<script src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".tap-hold-test").bind("taphold", function(event) {
$(this).html("Tapped and held");
});
});
</script>
<script src="jquery.mobile.js"></script>
</head>

<body>
<div data-role="page" id="my-page">
<div data-role="header">
<h1>Header</h1>
</div>
<div data-role="content">
<ul data-role="listview" id="my-list">
<li class="tap-hold-test">Tap and hold test</li>
</ul>
</div>
</div>
</body>
</html>

Como você pode ver, o código conecta um evento de toque taphold a um item da lista. Quando o documento estiver pronto, o item da lista nesse exemplo estará disponível para como alvo via jQuery. Portanto, ele é alvo e está conectado ao evento taphold, que muda o HTML dentro do item da lista.


Eventos de orientação

Em smartphones e tablets, há apenas um evento de orientação chamado orientationchange. Esse evento é acionado quando o dispositivo é girado vertical ou horizontalmente. Para determinar para qual direção o dispositivo será girado, acesse a propriedade de orientação, que fornece um valor somente para leitura de portrait ou landscape. A conexão com o evento orientationchange exige ter como alvo o elemento body e usar o método bind para conectar o evento (veja a Listagem 11).

Lista 11. Conectando o evento orientationchange ao elemento body

$(document).ready(function(){
$('body').bind('orientationchange', function(event) {
alert('orientationchange: '+ event.orientation);
});
});

Também é importante conectar o evento após o documento estar pronto. Caso contrário, você receberá resultados inconsistentes devido ao fato de o elemento body não estar disponível no momento da conexão. Também é possível levar esse código um nível acima acionando o evento orientationchange quando o documento estiver pronto (veja a Listagem 12).

Lista 12. Acionando o evento orientationchange quando o documento estiver pronto

$(document).ready(function(){
$('body').bind('orientationchange', function(event) {
alert('orientationchange: '+ event.orientation);
});

$('body').trigger('orientationchange');
});

O acionamento do evento quando o documento está pronto permite que você determine a orientação quando a página da web é carregada inicialmente. Isso é útil principalmente em situações nas quais você está exibindo conteúdo com base na orientação atual do dispositivo em uso. Os valores de orientação também podem ser acessados via CSS, pois são adicionados ao elemento HTML em sua página da web. Esses recursos avançados permitem que você modifique o layout de seu conteúdo com base na orientação do dispositivo.

Eventos de rolagem

O jQuery Mobile inclui eventos de rolagem que são acionados quando o usuário rola a página da web. O primeiro evento é o evento scrollstart, que é acionado ao começar uma rolagem de página. A Listagem 13 mostra como é possível conectar-se a esse evento e adicionar código JavaScript customizado que é executado quando a rolagem começa.

Lista 13. Conectando com o evento scrollstart

$(document).ready(function(){

$('body').bind('scrollstart', function(event) {
// Add scroll start code here
});

});

Outro evento, chamado scrollstop, é aplicado quando a rolagem da página é interrompida. Como você pode ver na Listagem 14, a conexão com o evento scrollstop funciona da mesma maneira que a conexão com scrollstart.

Lista 14. Conectando com o evento scrollstop

$(document).ready(function(){

$('body').bind('scrollstop', function(event) {
// Add scroll stop code here
});

});

A conexão de ambos os eventos precisa ser realizada quando o documento estiver oficialmente pronto. Isso garante que o elemento body existe e pode ser conectado com êxito aos eventos. Como exemplo, ambos os eventos podem ser úteis para a execução de um código JavaScript que revela opções nas partes mais baixas da página da web, à medida que a página é rolada - isso é chamado de carregamento lento, em que as imagens não são carregadas quando a página da web é originalmente carregada. Isso mantém o tempo de carregamento da página curto, ainda fornecendo o mesmo apelo visual de quando o conteúdo é acessado.

Trabalhando com memórias expostas

As seguintes funcionalidades são possíveis pelo uso dos métodos expostos disponíveis por meio da API do jQuery Mobile:

  • Alteração de páginas programaticamente
  • Carregamento silencioso das páginas
  • Trabalho com métodos de utilitário


Alterando as páginas programaticamente

Um dos diversos métodos expostos na estrutura jQuery Mobile permite que você altere as páginas programaticamente, além do uso padrão de hyperlinks e envios de formulário. Todos os efeitos visuais que ocorrem, desde o carregamento da página até a transição da página, são incluídos quando você altera as páginas programaticamente. A Listagem 15 mostra como alterar a página usando o método do objeto $.mobile, changePage.

Lista 15. Alterando a página usando o método changePage

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="jquery.mobile.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$("#my-page").live('pagecreate', function(event) {
$("#alt-link").bind("click", function(event) {
$.mobile.changePage("page-2.html");
});
});
</script>
<script type="text/javascript" src="jquery.mobile.js"></script>
</head>

<body>

<div data-role="page" id="my-page">
<div data-role="content">
<ul data-role="listview" id="my-list"></ul>
</div>
</div>

<script type="text/javascript">
$('#my-list').append('<li><a href="page-2.html">Link to another page</a></li>');
$('#my-list').append('<li><a href="#" id="alt-link">Link to another
page programmatically</a></li>');
</script>

</body>
</html>

Há um argumento exigido, chamado to. Esse argumento pode ser uma cadeia de caractere ou um objeto. O argumento to pode ser uma URL absoluta ou relativa. O argumento do objeto precisa ser um objeto da coleção jQuery - em outras palavras, um elemento sequencial que está sendo usado como uma página adicional. Há também diversas propriedades opcionais que podem ser passadas como um objeto:

  • transition
  • reverse
  • changeHash
  • role
  • pageContainer
  • type
  • data
  • reloadPage


A Listagem 15 não usa nenhum dos argumentos opcionais. Em vez disso, ela simplesmente passa o nome de outro arquivo HTML.

Para usar o método changePage, é necessário adicionar algumas coisas. Primeiro você precisa criar um elemento div com um valor de data-role de page e adicione um ID a ele. Com esse ID, é necessário adicionar o evento pagecreate em vez do evento de jQuery, document.ready. Agora você pode adicionar seus eventos de clique. O jQuery Mobile recomenda que você conecte um link em vez de chamar o evento click diretamente. E, finalmente, é possível alterar a página usando o método changePage.

Carregando silenciosamente as páginas

Outro ótimo método do objeto $.mobile é loadPage. É possível usar o método loadPage para carregar páginas externas sem exibi-las. Essa é uma maneira útil de pré-carregar as páginas de modo que elas sejam exibidas com mais rapidez quando o usuário clicar em um link. Para usar este método, é necessário escrever um código de uma maneira bem parecida quando você usa o método changePage. Primeiro você precisa de um elemento page com um ID, de modo que possa acessá-lo para conectar o evento pagecreate. Em seguida, quando o evento pagecreate for acionado, você poderá chamar o evento loadPage (veja a Listagem 16).

Lista 16. Pré-carregando as páginas usando o método loadPage

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="jquery.mobile.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$("#my-page").live('pagecreate', function(event) {
$.mobile.loadPage("page-2.html");
});
</script>
<script type="text/javascript" src="jquery.mobile.js"></script>
</head>

<body>

<div data-role="page" id="my-page">
<div data-role="content">
<ul data-role="listview" id="my-list">
<li><a href="page-2.html">Link to another page</a></li>
</ul>
</div>
</div>

</body>
</html>

O método loadPage inclui um argumento de URL exigido que pode ser uma cadeia de caractere representando uma URL relativa ou absoluta ou você pode passar um objeto. Há também um argumento opcional que aceita um objeto com uma ou mais das propriedades a seguir:

  • role
  • pageContainer
  • type
  • data
  • reloadPage
  • loadMsgDelay


Trabalhando com métodos de utilitário

Há diversos métodos utilitários integrados que fornecem funcionalidades úteis ao desenvolver um website usando a estrutura jQuery Mobile (veja a Tabela 2).

Tablela 2. Métodos de utilitários integrados atuais para o jQuery Mobile

MétodoDescrição
$.mobile.path.parseUrlAnalisa uma URL em um objeto com 16 propriedades
$.mobile.path.makePathAbsoluteConverte o arquivo ou diretório relativo em um caminho absoluto
$.mobile.path.makeUrlAbsoluteConverte uma URL relativa em uma URL absoluta
$.mobile.path.isSameDomainCompara duas URLs
$.mobile.path.isRelativeUrlDetermina se uma URL é relativa
$.mobile.path.isAbsoluteUrlDetermina se uma URL é absoluta
$.mobile.path.baseTrabalha com o elemento base gerado

Conclusão

A estrutura jQuery Mobile é simples de usar, mas não deixe essa simplicidade enganar você. Há muita coisa acontecendo nos bastidores e há muitas formas de adicionar funcionalidades customizadas a fim de fornecer websites e aplicativos remotos avançados. Ao utilizar API, é possível dizer à estrutura como ela deve se comportar por padrão, acelerar o carregamento da página trabalhando com métodos expostos e até mesmo vincular cada interação que ocorre no lado do cliente.

Download

DescriçãoNomeTamanhoMétodo de download
Sample jQuery Mobile web page with API codejquery-mobile-api.zip115KBHTTP

Recursos

Aprender


Obter produtos e tecnologias

  • Faça o download e consulte os arquivos JavaScript e CSS do jQuery Mobile.
  • Faça o download e experimente o IBM Mobile Technology Preview, um conjunto de amostras de código e serviços para ajudá-lo a começar a desenvolver aplicativos remotos que ampliam e se integram à sua empresa. A visualização inclui um serviço de notificação RESTful; PhoneGap, uma estrutura de software livre para o desenvolvimento de aplicativos híbridos remotos; um tempo de execução WebSphere Application Server leve; e amostras de código para que você possa ver como tudo funciona.
  • O IBM WebSphere Application Server Feature Pack para web 2.0 e Dispositivo móvel inclui o IBM Dojo 1.7 Toolkit, novos blocos de construção rich Internet application (RIA) e remoto e um componente de diagrama com base em Dojo. Com as ferramentas acompanhantes do Rational, o Feature Pack o ajuda e adaptar e implantar aplicativos WebSphere desenvolvidos originalmente para navegadores desktop em dispositivos móveis.
  • Avalie os produtos IBM da maneira que for melhor para você: faça download da versão de teste de um produto, avalie um produto on-line, use-o em um ambiente de nuvem ou passe algumas horas na SOA Sandbox aprendendo a implementar Arquitetura Orientada a Serviços de modo eficiente.


Discutir

  • Participe da comunidade do developerWorks. Entre em contato com outros usuários do developerWorks e explore os blogs, fóruns, grupos e wikis voltados para desenvolvedores.

Sobre o autor: Kris Hadlock é desenvolvedor da web e designer por contrato desde 1996. Ele trabalhou em projetos para empresas como SPIN Magazine, IKEA, United Airlines, JP Morgan Chase, GoDaddy Software e Fire Mountain Gems. Ele é autor de Ajax for Web Application Developers (Sams) e The ActionScript Migration Guide (New Riders), bem como um colunista de destaque e escritor de vários websites e revistas de design, incluindo Peachpit.com, InformIT.com e a revista Practical Web Design . Kris também é o fundador do www.studiosedition.com, um estúdio de desenvolvimento de software e design da web especializado na fusão de forma e função.

]]>
developerWorks Brasil (dwbr@br.ibm.com) Qua, 22 Feb 2012 11:00:00 -0200 http://imasters.com.br/artigo/23610/jquery/use-a-api-do-jquery-mobile-para-obter-um-controle-customizado-de-baixa-granularidade
<![CDATA[ Dicas e ferramentas de monitoramento de SEO ]]> http://imasters.com.br/artigo/23626/metricas/dicas-e-ferramentas-de-monitoramento-de-seo No mundo real, as coisas dão errado. E apesar de desejarmos que tudo que já consertamos uma vez, fique consertado para sempre, isso raramente acontece.

As coisas que antes não eram um problema, podem se tornar um rapidamente e por vários motivos:

  • Alguém muda alguma coisa que não tem nada a ver diretamente com você, ou sem perceber que isso o atingiria, ou apenas faz besteira (por exemplo, implementa uma versão de teste do robots.txt ou uma versão antiga de uma configuração do servidor);
  • O mundo muda ao seu redor (uma atualização do Google foi nomeada em homenagem a um animal preto e branco pouco tempo atrás);
  • Os gremlins técnicos se juntam contra você (downtime do servidor, DDoS etc).

Em todos esses casos, é melhor saber do problema mais cedo, do que mais tarde; porque normalmente, sua capacidade de minimizar os efeitos diminuem rapidamente com o passar do tempo (e para os outros casos, você ainda quer saber o que está acontecendo antes do seu chefe/ cliente).

Apesar de sabermos que deveríamos fazer recomendações nessas áreas, ainda estamos criando conselhos inúteis, como: "certifique-se de que você tenha um ótimo uptime", ou "certifique-se que seu site seja rápido".

Hoje, quero dar três conselhos práticos e que você pode começar a executar em seu próprio site, ou com seus clientes.  Eles ta ajudarão a encontrar os problemas o mais rápido possível, a evitar sérios problemas de indexação e a ser rapidamente alertado sobre implementações ruins, que podem prejudicar o seu desempenho de busca. 

1. Quedas de tráfego

O Google Analytics tem um recurso que mostra mudanças significativas no tráfego, ou em seu perfil. Ele também pode te alertar. O primeiro desses recursos é chamado "intelligence" e o segundo "intelligence alerts".

Ao invés de recriar um conselho antigo, irei apenas linkar para dois dos melhores posts que li sobre o assunto:

Esta é a mais simples de todas as recomendações e também a mais holística - no sentido de que pode te alertar para qualquer tipo de queda no tráfego. O lado negativo, é claro, é que você está medindo sintomas e não causas. Dessa forma, vai ter que analisar as causas, para poder descobrir o problema e tentar resolvê-lo, ao invés de preveni-lo.

2. Monitoramento de uptime

Não precisamos de um super cientista para perceber que o SEO depende do seu site. E não só em como você otimiza seu site, mas também na sua disponibilidade.

Se não é seu trabalho alertar os maiores clientes que o site está fora do ar, não faz mal fazê-lo. E para os clientes menores, existe uma chance de você agregar um valor significante, ao manter o foco nessas coisas.

Tenho dois motivos bons e ruins para saber muito sobre monitoramento de servidor:

  • O bom: fizemos um pequeno investimento no Server Density em maio do ano passado (e conseguimos nosso único link da Techcrunch no processo);
  • O ruim: estamos mais entusiasmados com o portfólio de serviços da nossa empresa do que esperávamos – alguns problemas chatos de servidores resultaram em mais atraso para o distilled.net do que eu gostaria. Para piorar, sofremos um ataque DDoS na semana passada (veja o gráfico de velocidade abaixo);

Existem três principais elementos que você deve monitorar:

  1. Disponibilidade (incluindo o código de resposta);
  2. Carregamento e desempenho de servidor;
  3. Velocidade de resposta / tempo de carregamento da página.

Disponibilidade do website

Existem dois serviços que recomendo aqui:

  • Pingdom é um serviço gratuito que monitora a disponibilidade e o tempo de resposta do seu site;
  • Server Density é um serviço pago que fornece alertas e gráficos mais granulares e os alinham com o monitoramento de desempenho do seu servidor.

É assim que o painel da Server Density é:


E aqui está o gráfico de tempo de resposta do Pingdom: 

Você pode ver o aumento no tempo de reposta durante o ataque DDoS e o tempo médio de tempo de resposta nos últimos dias, depois que implementamos o cloudflare.

A propósito, você pode não ter notado (eu não tinha percebido, até que um amigo me mostrou no outro dia) que o Google transferiu a velocidade do site para todas as contas do analytics sem a mudança anteriormente necessária no fragmento do GA, então você pode conseguir alguns desses dados diretamente da sua conta do GA. Aqui está a parte técnica de algumas páginas do Distilled:

3. Protocolos de exclusão de robôs, status de códigos

Esta foi uma das minhas ideias mais ambiciosas para monitoramento de SEO. Ela surgiu a partir de um problema real de um cliente. Um grande cliente estava lançando um novo site e fez a implementação de uma versão antiga do robots.txt em uma manhã de sábado (integração contínua FTW). Por sorte, o SEO responsável pelo projeto viu isso rapidamente. Ele ligou para o contato chave e reverteu a intalação antes que causasse algum dano. Tivemos uma reunião semana passada onde discutimos como poderíamos nos alertar sobre esse tipo de coisa automaticamente.

Fui até David Mytton, o fundador do Server Density e perguntei se ele poderia construir alguns recursos para te alertar quando este tipo de coisa acontecer – se nós acidentalmente ativarmos a tag noindex para nenhum bot ver nosso site,ou bloqueá-lo no robots.txt. Ele criou essa solução engenhosa que usa a funcionalidade já presente no cerne de sua plataforma:

Monitorando qualquer mudança no robots.txt

Primeiro, crie um serviço para monitorar o robots.txt – aqui está o nosso:

Então, crie um alerta que irá te dizer se a hash MD5 dos conteúdos do robots.txt mudar (veja a definição de MD5 aqui):

Se você copiar e colocar os conteúdos do seu robots.txt em um gerador de MD5 você tem um texto sem sentido (o nosso é "15403cbc6e028c0ec46a5dd9fffb9196"). O que este alerta está fazendo é monitorar qualquer mudança no nosso robots.txt, então se fizermos a implementação de uma nova versão, eu receberei um alerta por email e uma notificação push no meu telefone. Não seria bom receber esse tipo de alerta se um cliente ou time de desenvolvedores fizesse uma atualização no robots.txt sem te avisar?

Localizando a inclusão de no-index meta tags

Da mesma maneira, você pode criar alertas para strings específicas de textos encontrados em páginas específicas – eu escolhi receber um alerta se a string "noindex" for encontrada no HTML da homepage da Distilled. Se acontecer de atualizarem a versão do sistema, ou alterarem uma configuração em um plug do Wordpress, eu receberei uma notificação push no meu telefone.

Fazer esse tipo de monitoramente é gratuito para mim, porque já utilizamos o Server Density para monitorar os servidores, então não é nenhum esforço extra monitorar as somas de verificação e a presença, ou não, de strings específicas.

4. Bonus – por que parar ali?

Dê uma olhada no que o etsy monitora e para as coisas tem alertas. Se você tiver um time capaz de construir uma plataforma / infraestrutura, então existem coisas ilimitadas que você pode monitorar e alertar. Aqui estão algumas ideias para você começar:

  • status de códigos - 404 vs 301 vs 302 vs 500 etc;
  • mudanças em taxas de conversão / abandono de carrinho;
  • crawlers de sites de pesquisa – dado o quão interessado eu estava na simples visualização de páginas que foram inspecionadas pelos buscadores disponíveis no cloudflare (veja abaixo – quem teria adivinhado que seríamos mais analisados pelo Yandex do que pelo Google?), acredito que existe muito mais que pode ser feito aqui:

***

Este artigo é uma republicação feita com permissão. SEOMoz não tem qualquer afiliação com este site. O original está em: http://www.seomoz.org/blog/seo-monitoring





]]>
Will Critchlow () Qua, 22 Feb 2012 10:15:00 -0200 http://imasters.com.br/artigo/23626/metricas/dicas-e-ferramentas-de-monitoramento-de-seo
<![CDATA[ Como obter uma lista de ofertas por categoria e palavras-chave usando a API do Buscapé]]> http://imasters.com.br/artigo/23625/apis-buscape/como-obter-uma-lista-de-ofertas-por-categoria-e-palavras-chave-usando-a-api-do-buscape Objetivando uma melhoria nos resultados das buscas por ofertas efetuadas na API do Buscapé, o desenvolvedor também pode filtrar ofertas por ID de uma categoria e também por palavras-chave.

Imagine que a sua aplicação, ou usuário, faça uma busca por ofertas com a palavra-chave “Apple”. Dessa forma, serão retornadas todas as ofertas relacionadas, como iPads, iPods, iPhones, entre outros. Se for passado na requisição o ID da categoria “Celulares e Smartphones”, naturalmente só serão retornados iPhones. Isso pode ser muito útil para filtros mais avançados em aplicativos.

Vejamos, então, como efetuar uma requisição REST para obtermos uma lista de ofertas filtrada pela categoria “Celulares e Smartphones” e também pela palavra-chave “Apple”.

http://sandbox.buscape.com/service/findOfferList/564771466d477a4458664d3d/?categoryId=77&keyword=apple

Como podem ver, na URL REST acima, usamos o serviço findOfferList da API do Buscapé, passamos o ID do nosso aplicativo e os parâmetros categoryId e keyword, em que foram informados o ID 77 referente à categoria de “Celulares e Smartphones” e também a palavra-chave “Apple”.

Veja o resultado retornado pela API do Buscapé:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Result xmlns="urn:buscape" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" page="1" totalPages="1" totalResultsSellers="11" totalResultsReturned="15" totalResultsAvailable="15" xsi:schemaLocation="http://developer.buscape.com/admin/buscape.xsd">
<details>
<applicationID>564771466d477a4458664d3d</applicationID>
<applicationVersion>1.0.0.0</applicationVersion>
<applicationPath>http://bws-apps.buscape.com/mobile/update</applicationPath>
<date>2012-01-24T16:27:40.154-02:00</date>
<elapsedTime>28</elapsedTime>
<status>success</status>
<code>0</code>
<message>success</message>
</details>
<category hasOffer="false" isFinal="true" parentCategoryId="6420" id="77">
<thumbnail url="http://imagem.buscape.com.br/bp5/categorias/77.jpg"/>
<links>
<link type="category" url="http://compare.buscape.com.br/celular-e-smartphone.html?mdapp=100&amp;mddtn=69672797"/>
<link type="xml" url="http://sandbox.buscape.com/service/findProductList/564771466d477a4458664d3d/br/?categoryId=77&amp;keyword=apple"/>
</links>
<name>Celular e Smartphone</name>
</category>
<offer productId="275180" id="93447469" categoryId="77">
<offerName>Smartphone iPhone Apple 3GS 8GB Preto Desbloqueado - 3G, Wi - Fi, GPS, Câmera 3.2MP, MP3 Player</offerName>
<links>
<link type="offer" url="http://tracker.buscape.com.br/tr/rd?b=b2UwDjg4ZR0MGzsvGglnMT0bCGg0GjY6OT0xNB9zc2VnbGhsa2pqZW9ubmVoZ2hpbGlnaWU2KiouZHFxPTEzLj8sO3A8Ky09Py47cD0xM3A8LHEuLDE6ASswNz0xYTc6K2NsaWtvZm54Mzo6KjBjaGdoaWxpZ2l4Mzo_Li5jb25uZTYqKi5kcXEpKSlwOTExOTI7cD0xM3ErLDJhL2M2Kioue20fe2wYe2wYLT8wOjwxJnA8Ky09Py47cD0xM3tsGC07LCg3PTt7bBg4NzA6ETg4OywSNy0qe2wYa2hqaWlvamhoOmppaT9qamtmaGhqOm06e2wYe20YPT8qOzkxLCcXOnttGmlpe2xoNTsnKTEsOnttGj8uLjI7eC0_Yxp4LTAqJGNveCstOWMfGA80HRAZcxQvMBsXEjhsaBIQFTcyMhg_CRQUAS8sZW9lHAxlZWVuZW5lbmVlZW5lbmVuZW5lZ21qamlqaGdlbnBuZW5wbmVvZWVuZQ--"/>
</links>
]]>
Buscapé Developer (suporte.developer@buscape-inc.com) Qua, 22 Feb 2012 09:45:00 -0200 http://imasters.com.br/artigo/23625/apis-buscape/como-obter-uma-lista-de-ofertas-por-categoria-e-palavras-chave-usando-a-api-do-buscape
<![CDATA[ Aplicações na nuvem representarão 73% do tráfego de dados móveis]]> http://imasters.com.br/noticia/23637/cloud/aplicacoes-na-nuvem-representarao-73-do-trafego-de-dados-moveis O levantamento “Cisco Visual Networking INdex Global Mobile Data Traffic Forecast for 2011 to 2016” revelou que o crescimento esperado de tráfego de dados móveis, estimado pelo uso de cloud no Brasil, é de 29 vezes entre 2011 a 2016. No final de 2011, a nuvem representava 47% desse tipo de tráfego no país.

De acordo com a pesquisa, também haverá um crescimento considerável do volume de dados por tablets, atingindo a marca de 37.313 terabytes, o que significa um aumento de 362 vezes entre 2011 e 2016, com uma taxa anual de crescimento de 225%. O tráfego por tablets representará 14% do total de dados móveis em 2016.

Além disso, a velocidade média das conexões móveis deve crescer 11 vezes em 2011 e 2016, atingindo 1.997 Kbps em 2016. No ano passado, a velocidade média no país era de 179 Kbps, número 127% maior que o de 2010. O estudo da Cisco projeta ainda que o tráfego mundial de dados móveis aumentará 18 vezes nesse período, chegando a 10,8 exabytes por mês - ou um volume de 130 exabytes por ano - até 2016. No Brasil, é esperado um aumento de 19 vezes, alcançando um total de 0,26 exabytes por mês em 2016.

Esse crescimento acentuado no tráfego móvel acontece devido, em parte, a um aumento projetado no número de dispositivos móveis conectados à Internet, que excederá o número da população do planeta - segundo estimativas das Nações Unidas, ele deve ser de 7,3 bilhões de habitantes até 2016. Entre 2011 e 2016, a Cisco estima que o tráfego global de dados móveis superará em três vezes o tráfego global de dados fixos.

Com informações de Convergência Digital

]]>
Redação iMasters (redacao@imasters.com.br) Qua, 22 Feb 2012 09:30:00 -0200 http://imasters.com.br/noticia/23637/cloud/aplicacoes-na-nuvem-representarao-73-do-trafego-de-dados-moveis
<![CDATA[ Pesquisa aponta que Brasil é o terceiro maior mercado de computadores]]> http://imasters.com.br/noticia/23631/mercado/pesquisa-aponta-que-brasil-e-o-terceiro-maior-mercado-de-computadores De acordo com dados da consultoria IDC Brasil, em 2011, 15,4 milhões de computadores foram vendidos no Brasil, colocando o país como o terceiro maior mercado de computadores, atrás de Estados Unidos e China.

A pesquisa da empresa revelou que, no ano passado, foi vendido um computador a cada dois segundos no país. Do total, 55% eram notebooks e netbooks, enquanto 44% eram desktops. A divisão entre máquinas domésticas e corporativas ficou em 70% para 30%, respectivamente.

Em um comunicado da consultoria, Luciano Crippa, gerente de pesquisa da IDC Brasil, afirmou que “as compras de PCs do segmento doméstico cresceu aproximadamente 20% em relação ao ano de 2010. Já o corporativo teve crescimento de 10%, desconsiderando Governo e educação, que teve queda de 24%”. Ainda de acordo com a IDC, as vendas de netbooks tiveram queda de 18% em 2011, em relação ao ano de 2010.

Além disso, os dados divulgados pela IDV tornaram o Brasil o terceiro maior em número de computadores vendidos por habitantes, ficando atrás de Índia e China.

Com informações de G1

]]>
Redação iMasters (redacao@imasters.com.br) Seg, 20 Feb 2012 16:20:00 -0200 http://imasters.com.br/noticia/23631/mercado/pesquisa-aponta-que-brasil-e-o-terceiro-maior-mercado-de-computadores
<![CDATA[ Norton divulga as 10 cidades mais atacadas no mundo virtual]]> http://imasters.com.br/noticia/23636/seguranca/norton-divulga-as-10-cidades-mais-atacadas-no-mundo-virtual A Norton e a Sperling’s BestPlaces, empresa de pesquisa independente, se uniram para descobrir as 10 cidades da América Latina que possuem o maior número de fatores de risco do cibercrime.

A cidade de Buenos Aires (Argentina) ganhou o 1 º lugar com a pontuação mais alta das regiões em relação aos dados de crimes cibernéticos, o uso da Internet e das redes sociais. San Juan (Porto Rico) ficou com a segunda posição, com pontuação acima da média em todas as categorias e maior uso da região de smartphones.

As 10 cidades mais perigosas no mundo virtual da América Latina são: Buenos Aires (Argentina), San Juan (Porto Rico), Bogotá (Colômbia), São Paulo (Brasil), Rio de Janeiro (Brasil), Lima (Peru), Porto Alegre (Brasil), Cidade do México (México), Monterrey (México) e Guadalajara (México).

Segundo a pesquisa, cidades com os maiores fatores de risco não se correlacionam necessariamente com as maiores taxas de ataques, refletindo o fato de que muitos consumidores estão tomando precauções para se manterem seguros.

"Em nossa análise sobre as cidades online mais perigosas, consideramos uma série de fatores que podem potencialmente afetar a segurança no mundo virtual", disse Bert Sperling, fundador e pesquisador do BestPlaces Sperling. "Ao olhar para os dados de estilo de vida, hábitos de consumo, bem como os dados dos crimes cibernéticos fornecidos pela empresa-mãe da Norton, a Symantec, somos capazes de oferecer uma visão holística dos vários fatores que colocam uma pessoa em risco potencial."

Sperling’s BestPlaces determinou um ranking per capita examinando o comportamento de diversos consumidores – desde os gastos benignos como em PCs e smartphones, para o potencial de risco como o acesso a hotspots Wi-Fi, redes sociais, e as compras online e serviços bancários, entre outros.

Apesar de ter a segunda classificação mais baixa da região em termos de dados de crimes cibernéticos, o Rio de Janeiro foi classificado como uma cidade intermediária no que diz respeito à segurança online por causa da pontuação entre os fatores de comportamento do consumidor, como as redes sociais, uso da Internet e acesso a Wi-Fi hotspots.

Das 10 cidades listadas como as mais virtualmente perigosas na América Latina, Cidade do México, Monterrei e Guadalajara foram classificadas como as com o menor nível de potenciais de risco. Isso se deve ao baixo número de hotspots Wi-Fi, uso de smartphones, velocidade de banda larga, acesso à Internet, posse de computador e uso de redes sociais.
 

]]>
Redação iMasters (redacao@imasters.com.br) Seg, 20 Feb 2012 14:00:00 -0200 http://imasters.com.br/noticia/23636/seguranca/norton-divulga-as-10-cidades-mais-atacadas-no-mundo-virtual
<![CDATA[ HP vai fabricar nova linha de servidores no Brasil]]> http://imasters.com.br/noticia/23635/redes-e-servidores/hp-vai-fabricar-nova-linha-de-servidores-no-brasil A HP informou que a nova linha de servidores ProLiant Gen 8, anunciada semana passada em Las Vegas (EUA), começará a ser fabricada no Brasil nos próximos meses. A informação foi divulgada por Denoel Eller, diretor da HP ESSN (Enterprise Servers, Storage & Network).

Apesar de não ter especificado quando a produção começa, ele afirmou que a comercialização da nova linha no país começa em abril, e os equipamentos já serão fabricados no Brasil. Os novos servidores serão produzidos na fábrica de Campinas (SP), com benefícios do PPB (Processo produtivo Básico).

A princípio, serão fabricadas quatro famílias – DL 360, DL 380, BL 460 e ML 350 – com foco em grandes empresas. “Pelas características dos produtos, imaginamos que ele terá adoção mais rápida em setores que se preocupam com o tempo de parada, como financeiro e telecomunicações”, disse Eller, que acredita que, no futuro, a produção deve chegar a famílias de servidores voltados também para pequenas e médias empresas.

A fabricação virá acompanhada de um forte esforço de treinamento por parte das áreas de vendas e de serviços da HP, já que o equipamento apresenta características novas para o mercado. “Nosso desafio neste momento é provar que o que estamos falando é verdade. Teremos que mudar o mindset das áreas de TI”, disse Eller.

Sendo assim, a área comercial iniciou os treinamentos de vendas já no início de fevereiro, quando foram treinadas 260 pessoas entre profissionais da HP e de parceiros de vendas. Eller lembrou que mais 150 profissionais ainda serão treinados na abordagem de vendas dos novos equipamentos.

Além da área comercial, o treinamento chegará à área de serviços. Luciano Corsini, country manager da HP TS (Technology Services) no Brasil, disse que cerca de 300 profissionais de sua área, entre externos e internos, deverão ser treinados. “Ao todo, acreditamos que cerca de mil pessoas serão treinadas nos próximos meses”, disse o executivo.

Com informações de Convergência Digital

]]>
Redação iMasters (redacao@imasters.com.br) Seg, 20 Feb 2012 11:45:00 -0200 http://imasters.com.br/noticia/23635/redes-e-servidores/hp-vai-fabricar-nova-linha-de-servidores-no-brasil
<![CDATA[ Android 5.0 Jelly Bean pode chegar na metade de 2012]]> http://imasters.com.br/noticia/23644/android/android-50-jelly-bean-pode-chegar-na-metade-de-2012 Segundo rumores do Digitimes, o Google estaria com planos para lançar uma nova versão do Android, conhecido como Jelly Bean (5.0), ainda na metade de 2012.

“A nova versão do Android deve trazer um foco especial para tablet PCs, algo diferente da exclusividade do Honeycomb para os tablets” publicou o 9to5Google. “O Android 5.0 teria uma característica única pois será um sistema operacional duplo”.

Embora o Google não confirme as informações, analistas acreditam que a gigante de Mountain View tenha planos para fundir seus sistemas operacionais, permitindo inicializar o Android e Chrome OS ao mesmo tempo.


Com informações de Google Discovery

]]>
Redação iMasters (redacao@imasters.com.br) Seg, 20 Feb 2012 10:15:00 -0200 http://imasters.com.br/noticia/23644/android/android-50-jelly-bean-pode-chegar-na-metade-de-2012
<![CDATA[ Abordagens ao XML - Parte 03]]> http://imasters.com.br/artigo/23572/xml/abordagens-ao-xml-parte-03 Se você se lembra dos meus últimos artigos, eu estou cobrindo diferentes abordagens para a interpretação de mensagens XML utilizando o cenário absurdamente fora de moda do Pete's Perfect Pizza, a empresa de pizza com grandes ideias. Nessa história, você é um empregado do Pete's e foi requisitado para implementar um sistema para enviar pedidos do balcão de atendimento para a cozinha, e você teve a ideia de utilizar XML.

Você acabou de fazer seu parser SAX funcionar, mas Pete's está se tornando global, abrindo cozinhas ao redor do mundo e realizando pedidos através da Internet. Ele contratou alguns consultores que criaram um plano para estender suas mensagens XML e as especificaram através de um esquema. Eles também melhoraram suas mensagens combinando com um esquema dos seus próprios consumidores. O resultado é que os seguintes arquivos XSD repousam na sua caixa de entrada e você precisa se ocupar...

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2011 sp1 (http://www.altova.com) by Roger Hughes (Marin Solutions Ltd) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ppp="http://www.petesperfectpizza.com" xmlns:cust="http://customer.dets" targetNamespace="http://www.petesperfectpizza.com" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.00">
<!-- Import the Namespaces required -->
<xs:import namespace="http://customer.dets" schemaLocation="customer.xsd"/>
<!-- The Root Node -->
<xs:element name="PizzaOrder">
<xs:annotation>
<xs:documentation>A wrapper around the customer and the pizza order</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="orderID" type="ppp:CorrelationIdentifierType"/>
<xs:element name="date" type="ppp:DateType"/>
<xs:element name="time" type="ppp:TimeType"/>
<xs:element name="Customer" type="cust:CustomerType"/>
<xs:element ref="ppp:pizzas"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- The Pizza Order-->
<xs:element name="pizzas">
<xs:annotation>
<xs:documentation>This is a list of pizzas ordered by the customer</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="pizza" type="ppp:PizzaType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="PizzaType">
<xs:sequence>
<xs:element name="name" type="ppp:PizzaNameType">
<xs:annotation>
<xs:documentation>The type of pizza on the menu</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="base" type="ppp:BaseType">
<xs:annotation>
<xs:documentation>type of base</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="quantity" type="ppp:QuantityType">
<xs:annotation>
<xs:documentation>quantity of pizzas</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="PizzaNameType">
<xs:restriction base="xs:token">
<xs:enumeration value="Margherita">
<xs:annotation>
<xs:documentation>Plain and Simple</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Marinara">
<xs:annotation>
<xs:documentation>Garlic Pizza...</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Prosciutto e Funghi">
<xs:annotation>
<xs:documentation>Ham and Musheroom</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Capricciosa">
<xs:annotation>
<xs:documentation>with an egg</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BaseType">
<xs:restriction base="xs:token">
<xs:enumeration value="thin">
<xs:annotation>
<xs:documentation>thin base traditional</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="thick">
<xs:annotation>
<xs:documentation>Thick base</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="QuantityType">
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="CorrelationIdentifierType">
<xs:restriction base="xs:token">
<xs:maxLength value="44"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateType">
<xs:annotation>
<xs:documentation>The date is in the Common Era (minus sign in years is not permitted)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="\d{4}-\d{2}-\d{2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TimeType">
<xs:annotation>
<xs:documentation>The time zone although not included UTC is implied</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:time">
<xs:pattern value="\d{2}:\d{2}:\d{2}(\.\d+)?"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2011 sp1 (http://www.altova.com) by Roger Hughes (Marin Solutions Ltd) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cust="http://customer.dets" targetNamespace="http://customer.dets" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Customer" type="cust:CustomerType">
<xs:annotation>
<xs:documentation>Generic Customer Definition</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="CustomerType">
<xs:sequence>
<xs:element name="name" type="cust:NameType"/>
<xs:element name="phone" type="cust:PhoneNumberType"/>
<xs:element name="address" type="cust:AddressType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NameType">
<xs:sequence>
<xs:element name="firstName" type="cust:FirstNameType"/>
<xs:element name="lastName" type="cust:LastNameType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="FirstNameType">
<xs:annotation>
<xs:documentation>The Customer's first name</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:maxLength value="16"/>
<xs:pattern value=".{1,16}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LastNameType">
<xs:annotation>
<xs:documentation>The Customer's surname</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value=".{1,48}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="AddressType">
<xs:sequence>
<xs:element name="houseNumber" type="cust:HouseNumberType"/>
<xs:element name="street" type="cust:AddressLineType"/>
<xs:element name="town" type="cust:AddressLineType" minOccurs="0"/>
<xs:element name="area" type="cust:AddressLineType" minOccurs="0"/>
<xs:element name="postCode" type="cust:PostCodeType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="HouseNumberType">
<xs:annotation>
<xs:documentation>The house number</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="AddressLineType">
<xs:annotation>
<xs:documentation>A line of an address</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value=".{1,100}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PhoneNumberType">
<xs:restriction base="xs:token">
<xs:maxLength value="18"/>
<xs:pattern value=".{1,18}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PostCodeType">
<xs:restriction base="xs:token">
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

Você se dá conta de que, com esse nível de complexidade, ficará brincando com o SAX por um bom tempo e ainda poderá cometer alguns erros. Deve haver algum jeito melhor, certo? Afinal de contas, o XML tem estado na ativa por algum tempo, então devem existir alguns frameworks por aí que podem ser úteis. Depois de um pouco de pesquisa no Google, você se depara com o JAXB e percebe que, sim, existem.

JAXB – Java Architecture for XML Binding – utiliza o compilador JAXB Binding xjc para converter um esquema XML em um conjunto de classes Java relacionadas. Isso define os tipos necessários para acessar os elementos, atributos e outros conteúdos do XML de forma type-safe. Este artigo não é um tutorial cobrindo os prós e contras do JAXB; isso pode ser encontrado aqui, no site da Oracle, e aqui, no site do Glassfish, Projeto Metro, que também inclui este tutorial. Só vale a pena dizer que a ideia principal do parsing, ou desserialização, XML é que você compila suas classes Java utilizando o compilador xjc e então usa essas classes em conjunto com a API JAXB para guardar os elementos e os atributos XML.

Ao utilizar qualquer esquema XML para o compilador de classe Java, a abordagem mais apresentável é colocar todos os seus esquemas e suas classes compiladas dentro de um arquivo JAR separado. Você pode misturá-los com o código-fonte do seu aplicativo, mas isso normalmente ofusca o código base, tornando a manutenção mais difícil. Ao criar um arquivo JAR JAXB, você pode chegar a um arquivo POM que se assemelha com isto:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.captaindebug</groupId>
<artifactId>xml-tips-jaxb</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Jaxb for Pete's Perfect Pizza</name>
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.sun.tools.xjc.maven2</groupId>
<artifactId>maven-jaxb-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generatePackage>com.captaindebug.jaxb</generatePackage>
<includeSchemas>
<includeSchema>**/*.xsd</includeSchema>
</includeSchemas>
<strict>true</strict>
<verbose>true</verbose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

… o que é muito avançado. Então, voltando ao Pete's Perfect Pizza, você já criou seu arquivo JAR JAXB, e tudo que resta fazer é explorar como ele funciona, como é demonstrado nos testes JUnit abaixo:

@Test
public void testLoadPizzaOrderXml() throws JAXBException, IOException {

InputStream is = loadResource("/pizza-order1.xml");

// Load the file
JAXBContext context = JAXBContext.newInstance(PizzaOrder.class);
Unmarshaller um = context.createUnmarshaller();
PizzaOrder pizzaOrder = (PizzaOrder) um.unmarshal(is);

String orderId = pizzaOrder.getOrderID();
assertEquals("123w3454r5", orderId);

// Check the customer details...
CustomerType customerType = pizzaOrder.getCustomer();

NameType nameType = customerType.getName();
String firstName = nameType.getFirstName();
assertEquals("John", firstName);
String lastName = nameType.getLastName();
assertEquals("Miggins", lastName);

AddressType address = customerType.getAddress();
assertEquals(new BigInteger("15"), address.getHouseNumber());
assertEquals("Credability Street", address.getStreet());
assertEquals("Any Town", address.getTown());
assertEquals("Any Where", address.getArea());
assertEquals("AW12 3WS", address.getPostCode());

Pizzas pizzas = pizzaOrder.getPizzas();
List<PizzaType> pizzasOrdered = pizzas.getPizza();

assertEquals(3, pizzasOrdered.size());

// Check the pizza order...
for (PizzaType pizza : pizzasOrdered) {

PizzaNameType pizzaName = pizza.getName();
if ((PizzaNameType.CAPRICCIOSA == pizzaName) || (PizzaNameType.MARINARA == pizzaName)) {
assertEquals(BaseType.THICK, pizza.getBase());
assertEquals(new BigInteger("1"), pizza.getQuantity());
} else if (PizzaNameType.PROSCIUTTO_E_FUNGHI == pizzaName) {
assertEquals(BaseType.THIN, pizza.getBase());
assertEquals(new BigInteger("2"), pizza.getQuantity());
} else {
fail("Whoops, can't find pizza type");
}
}

}

private InputStream loadResource(String filename) throws IOException {

InputStream is = getClass().getResourceAsStream(filename);
if (is == null) {
throw new IOException("Can't find the file: " + filename);
}

return is;
}


O código acima pode parecer grande e complexo, mas ele realmente dispõe de apenas três passos:

  • Transformar o arquivo de teste em um stream de entrada. Isso pode ser processado pela API JAXB.
  • Criar um contexto JAXB e seu desserializador associado. Isso é então utilizado para ler o XML e convertê-lo em objetos de elemento e, se disponível, de atributo.
  • Utilizar a lista de classes retornada para verificar se os conteúdos são o que nós esperaríamos que fossem (este é, de longe, o passo mais longo).

Uma vez que você está satisfeito com o amplo uso padrão do JAXB, você o adiciona no seu código do XML parser e o distribui ao redor do mundo para as muitas cozinhas do Pete's.

Um dos pontos fortes da utilização de um framework como o JAXB é que, a qualquer mudança no esquema, tudo que é necessário para incorporar essas mudanças é recompilar utilizando o xjc e então corrigir o código do cliente de forma apropriada. Isso pode parecer um pouco de dor de cabeça, mas é uma dor de cabeça muito menor do que tentar retrabalhar um parser SAX. Em contrapartida, JAXB tem sido criticado por ser lento, mas eu nunca tive muitos problemas. Ele teoricamente irá utilizar mais memória do que o SAX – isso pode ou não ser verdade. Ele realmente constrói conjuntos de classes, mas mais uma vez faz algumas classes derivadas SAX ContentHandler.

Deve ser lembrado que JAXB não é a única ferramenta que leva a essa abordagem e, para demonstrar isso, meu próximo artigo conta a mesma história, mas utilizando XMLBeans.

Texto original disponível em http://www.captaindebug.com/2012/01/approaches-to-xml-part-3-jaxb.html

]]>
Roger Hughes () Seg, 20 Feb 2012 10:00:00 -0200 http://imasters.com.br/artigo/23572/xml/abordagens-ao-xml-parte-03
<![CDATA[ Até 2015, publicidade na internet brasileira deve superar gastos com anúncios em jornais e revistas]]> http://imasters.com.br/noticia/23633/publicidade-online/ate-2015-publicidade-na-internet-brasileira-deve-superar-gastos-com-anuncios-em-jornais-e-revistas Uma pesquisa da Wark (International Ad Forecast) mostrou que os mercados emergentes vão garantir o crescimento da publicidade em 2012. Entre os 13 países pesquisados, o Brasil deverá apresentar o quarto maior avanço, 8,5%, atrás de Rússia (16,5%), Índia (14%) e China (11,5%).

No ano passado, a publicidade brasileira ocupou a mesma posição, com avanço de 7,1%, em um período marcado por decréscimos em algumas das principais economias.

O aumento da publicidade online no Brasil deverá ser de 23,8%, segundo a pesquisa, enquanto que jornais e revistas devem avançar 3,6% e 6%, respectivamente.

Para Suzy Young, editora de Informação da Wark, "é importante lembrar que, embora tenha apenas 6% dos gastos em publicidade no Brasil, a Internet cresce muito rápido. Todas as outras mídias estão perdendo participação para o online, principalmente impressos e rádio, embora a TV ainda seja dominante. Imagino que a Internet passará os jornais e será a segunda maior mídia em publicidade até 2015".

Ela também observou que, embora afetado pela recessão na Europa, o Brasil manteve o crescimento da publicidade, o que ocorre há dez anos. Os gastos no setor no país passaram de R$ 11 bilhões, em 2003, para R$ 30,1 bilhões, em 2012, já descontado o impacto da inflação nestes números.

A participação do Brasil no total aplicado nos 13 países examinados também vem aumentando: de 3,1%, em 2003, para estimados 4,5%, em 2012. Os Estados Unidos, cuja fatia passou de 50,4% para 41,6% nos últimos dez anos, vem perdendo espaço para emergentes. Já a participação da China terá passado de 6,5%, em 2003, para 12,2% em 2012, segundo as previsões da Wark.

Com informações de WBI Brasil

]]>
Redação iMasters (redacao@imasters.com.br) Seg, 20 Feb 2012 09:30:00 -0200 http://imasters.com.br/noticia/23633/publicidade-online/ate-2015-publicidade-na-internet-brasileira-deve-superar-gastos-com-anuncios-em-jornais-e-revistas
<![CDATA[ Planners são agentes de mudança]]> http://imasters.com.br/artigo/23623/midia-e-marketing-digital/planners-sao-agentes-de-mudanca Planners são agente de mudanças das marcas. Você já deve ter ouvido isso em muitos lugares, pois trata-se de uma grande verdade. Somos responsáveis por analisar a performance da marca como um todo. Se a GM está vendendo menos do que a Volks, cabe não só a GM, mas a sua agência e equipe de planejamento, ir a rua entender o que está acontecendo. Assim, mudamos o rumo das marcas.

O rumo de uma marca é fundamental para o seu sucesso, ou fracasso. Só é possível saber sobre o seu desempenho, se a monitoramos e entendemos, junto aos seus vários pilares de performance. Se está vendendo bem, vamos entender o porquê. Se não está, vamos entender do mesmo jeito! A venda é um, mas não o único, pilar a ser analisado. Confesso ser o mais importante, pois é ele quem paga as contas. Mas não o único.

Outro dia, em uma aula, eu disse que nós, planners, devemos chocar; devemos mostrar uma realidade que ninguém na empresa viu. Esse é o nosso papel! Cheguei a dizer que por mim, trabalharia de bermuda e camiseta todos os dias. Porque é preciso mostrar que regras foram feitas para serem quebradas. Só assim se muda as coisas. Um planner que está de bermuda e camiseta é mais, ou menos, inteligente que um que está de calça social e camisa? Não! Mas o padrão construído limita a isso.

Paradigmas devem, e são, quebrados por pessoas. Há quinze anos, comprar pela Internet era coisa de filme do Spielberg. Se todos pensassem assim, ninguém teria arriscado. Algumas empresas arriscaram, e hoje isso é a coisa mais comum do mundo. O cinema contava histórias bonitinhas e de cotidiano, mas veio um “maluco” e colocou personagens de história em quadrinhos na tela. Sucesso! Disseram aos Beatles que músicas com uso de guitarra nunca seriam um sucesso. Você ri? Tudo bem, mas esses eram os paradigmas vigentes. Foram quebrados porque alguém chocou o mundo com um produto planejado. Com planejamento.

Os planners não podem deixar as marcas na mesmice. As Casas Bahia fazem a mesma coisa sempre porque ela tem um padrão estabelecido. Suas propagandas ajudam a vender (opinião minha) muito mais pela mega exposição na mídia, do que pela criatividade das peças. Mas a Casas Bahia é assim. Veja se no online ela tem o mesmo sucesso que no offline. Não tem.

Sair da mesmice é pensar em outros meios de comunicação e impacto. É mostrar que se a marca não está no Twitter, pode perder vendas e reputação. Apresentar o Mobile a clientes que não acreditam que um mercado de 250 milhões de aparelhos possa ser explorado.

Outro dia, em uma reunião com um cliente, eu ouvi: “mas por quê fazer ações no Facebook? As pessoas que estão ali já são nossos clientes”. Na hora respondi: “porque segundo uma pesquisa, apenas 65% das pessoas que seguem as marcas já são clientes”. Não foi um choque de 220 volts, mas a ação foi aprovada. Apresentar números que comprovam suas ações sempre chocam, pois você mostra conhecimento e potencial de que aquela ação vai gerar resultados.

Lembre-se: é preciso chocar, mostrar novos caminhos e novas formas de impacto, mas sempre com embasamento. Se não entender o mercado, a concorrência, a marca, as tendências e, principalmente, as pessoas, seu choque pode não passar de um simples estalo.

]]>
Felipe Morais () Seg, 20 Feb 2012 09:00:00 -0200 http://imasters.com.br/artigo/23623/midia-e-marketing-digital/planners-sao-agentes-de-mudanca
<![CDATA[ Google anuncia preview técnico do Dartium, Chromium com a máquina virtual Dart]]> http://imasters.com.br/noticia/23642/desenvolvimento/google-anuncia-preview-tecnico-do-dartium-chromium-com-a-maquina-virtual-dart O Google anunciou um preview técnico de uma versão do Chromium com a máquina virtual Dart embutida. O Dart é a linguagem em desenvolvimento do Google que pretende ser uma alternativa ao JavaScript. Ele pode rodar em uma máquina virtual em um browser personalizado ou, como é mais comum, pode ser compilado para o JavaScript e rodar em um moderno navegador popular.

Chamada de Dartium, a novidade está disponível para Mac e Linux, e chegará ao Windows em breve. O preview permite que os programas do Dart rodem no navegador, o que significa que desenvolvedores podem pular separadamente a compilação de programas do Dart para o JavaScript.

Segundo os desenvolvedores do Dart, o Dart VM e o JavaScript são “alvos de primeira classe para Dart”, e ambos serão trabalhados simultaneamente. Para garantir que a tecnologia do preview do Dartium não seja usada como o browser principal, os binários do Dartium expiram em alguns dias.

Ele está disponível para download neste link. Ainda não foram divulgados detalhes do seu código-fonte.

O lançamento faz parte do esforço do Google para impulsionar sua alternativa ao JavaScript. O Dart ainda precisa de alguma indicação de suporte de outros fabricantes de browsers além do Google. A empresa pretende desenvolver a linguagem para “um certo nível de maturidade” e então entregá-la a processos de padrões.

Com informações de The H

]]>
Redação iMasters (redacao@imasters.com.br) Sex, 17 Feb 2012 17:00:00 -0200 http://imasters.com.br/noticia/23642/desenvolvimento/google-anuncia-preview-tecnico-do-dartium-chromium-com-a-maquina-virtual-dart
<![CDATA[ Surgem os primeiros ataques contra redes IPv6]]> http://imasters.com.br/noticia/23643/seguranca/surgem-os-primeiros-ataques-contra-redes-ipv6 De acordo com um relatório publicado pela empresa de segurança Arbor, cibercriminosos começaram a lançar ataques de DDoS e contra as redes que transmitem dados em IPv6 (Internet Protocol versão 6). A primeira vez em que ataques DDoS contra rede IPv6 foram registrado foi no ano passado. "Tais incidentes continuam a ser raros, porque não são economicamente relevantes para os criminosos da Internet", disse Bill Cerveny, engenheiro de software-sênior de garantia da qualidade a Arbor.

Algumas empresas projetam aumento de mais de 100% em seus volumes de tráfego IPv6 ao longo dos próximos 12 meses, mas as mudanças serão insignificantes em comparação com o volume de tráfego em geral. A maioria das organizações continua relutante em mudar para a nova versão do protocolo IP, pois a segurança da rede existente e equipamentos de análise de tráfego não são totalmente compatíveis com ele.

Sessenta e cinco por cento dos entrevistados pela pesquisa da Arbor disseram que sua principal preocupação é a falta de paridade de recursos entre IPv4 e IPv6, enquanto 60% expressaram preocupações de que não podem analisar adequadamente o tráfego IPv6.

Recursos iguais

"Muitas soluções de infra-estrutura atualmente não oferecem os mesmos recursos e funcionalidades para o IPv6 como para IPv4", disse Cerveny. "Isso significa que as equipes de segurança não têm a mesma visibilidade e capacidade de mitigação quando se tenta identificar e bloquear ataques contra alvos baseados em IPv6".

"Nós vemos ataques IPv6 como uma ameaça emergente", disse Neal Quinn, vice-presidente de operações da Prolexic. Quinn acredita que a maioria dos atuais ataques DDoS contra IPv6 são testes realizados por prováveis ​​criadores de malware que querem estar preparados quando grandes provedores começarem a mudar seus assinantes para o IPv6.

A Prolexic está investigando quais problemas poderiam surgir em roteadores que suportam IPv6 e IPv4, porque isso será cada vez mais importante conforme as empresas criem pontes entre redes com padrões distintos.

"A questão de ter equipamentos de infra-estrutura com as mesmas capacidades de se defender contra ataques IPv4 e IPv6 é fundamental", disse Cerveny. "Como o nosso estudo revelou, é fundamental que os operadores de rede resolvam esta discrepância."

Com informações de Computer World

]]>
Redação iMasters (redacao@imasters.com.br) Sex, 17 Feb 2012 15:30:00 -0200 http://imasters.com.br/noticia/23643/seguranca/surgem-os-primeiros-ataques-contra-redes-ipv6
<![CDATA[ Mozilla vai mostrar Boot2Gecko no World Mobile Congress]]> http://imasters.com.br/noticia/23641/software/mozilla-vai-mostrar-boot2gecko-no-world-mobile-congress A Mozilla vai entrar no mercado de sistema operacionais para smartphones, que já conta com iOS, Windows Phone, Android e BlackBerry OS. O sistema próprio da empresa é conhecido como Boot2Gecko (B2G).

Em resposta a uma pergunta feita pelo Twitter, Brendan Eich, CTO da Mozilla, disse que o sistema operacional será apresentado durante o Mobile World Congress, que começará no dia 27 de fevereiro em Barcelona.

O executivo afirmou que a Mozilla está trabalhando duro no Boot2Gecko. Além disso, o roadmap oficial mostra que o sistema operacional deve ser lançado no segundo trimestre deste ano.

Assim como o Firefox, o Boot2Gecko também tem seu código aberto.

Com informações de BABOO

]]>
Redação iMasters (redacao@imasters.com.br) Sex, 17 Feb 2012 14:30:00 -0200 http://imasters.com.br/noticia/23641/software/mozilla-vai-mostrar-boot2gecko-no-world-mobile-congress