Conhecendo e usando a jQuery

19/10/08 23h01

Para quem ainda não sabe o que é a jQuery, aí vai. É uma biblioteca escrita em JavaScript que facilita a nossa vida na hora de fazer programações client-side.

Mas porque devemos usar alguma biblioteca como esta? A resposta é simples, para quem já tentou fazer algo um pouco mais complexo em JavaScript na raça, viu que, além de trabalhoso, quando você começa a testar seu script em todos os navegadores, começa a enfrentar mais problemas do que tinha imaginado.

É exatamente aí que entra um biblioteca como essa. Os desenvolvedores já fazem sua implementação para que seu uso funcione na maioria dos navegadores disponíveis no mercado e, tudo de uma forma muito simples. É uma mão na roda para economizarmos nosso precioso tempo.

Entre algumas vantagens da jQuery estão: cross-browser, duas versões para download, uma para desenvolvedores e outra compactada, facilidade para acessar elementos no DOM, fácil manipulação de eventos, implementações AJAX e até animações e transições com poucas linhas e claro, talvez o mais importante, boa documentação.

A versão atual da jQuery é a 1.2.6 e você pode fazer o download diretamente do site. A documentação também está toda lá. Agora, vamos colocar a mão na massa.

Faça o download da biblioteca, crie uma pasta na sua área de trabalho e coloque o arquivo lá dentro. Crie também um arquivo chamado debug.html e coloque o código abaixo dentro dele e faça seus testes. Tenho certeza que isso fará você começar a pesquisar e se divertir.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-BR">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Exemplo 01 - Usando jQuery</title>
<script src="jquery-1.2.6.min.js" type="text/javascript"></script>
<style>
body {
	font-family:verdana;
	color:#fff;
}

div {
	border:1px solid black;
	width:150px;
	height:100px;
	padding:10px;
	background:green;
}

a {
	display:block;
	margin:10px;
}
</style>
</head>
<body>
<div id="floater">
	Este DIV servirá de exemplo para movimentarmos usando a jQuery.
</div>
<a href="" id="some">Some com o DIV</a>
<a href="" id="mostra">Mostra o DIV</a>
<script>
$("div").click(function(event) {
	alert("Você clicou dentro do DIV!");
});

$("#some").click(function (event) {
	$("#floater").fadeOut(5000);
	event.preventDefault();
});

$("#mostra").click(function (event) {
	$("div").fadeIn(5000);
	event.preventDefault();
});

</script>
</body>
</html>

Este é para os nerds

04/10/08 19h23

O que dizem é que se você vê-la rodando para o lado direito, é o lado esquerdo do seu cérebro que está processando a imagem. Se vê-la rodando para esquerda, é o lado direito do seu cérebro.

Se você conseguir vê-la rodando para os dois lados, é nerd.

Mulher rodando

Configure seus servidores Linux para o horário de verão 2008/2009

22/09/08 11h51

O horário de verão de 2008/2009 começa dia 19 de outubro de 2008 e termina no dia 15 de fevereiro de 2009. Veja como fazer a configuração manual no seu servidor para evitar que seu telefone toque no meio da noite. :)

Estas configurações foram feitas usando a distribuição Ubuntu 8.0.4, porém, é possível aplcá-las na maioria das distribuições.

O primeiro passo é criarmos um arquivo que contenha exatamente as linhas abaixo:

Rule Brazil 2008 only - Oct 19 00:00 1 S
Rule Brazil 2009 only - Feb 15 00:00 0 -

Zone Brazil/East -3:00 Brazil BR%sT

Você pode gravar o arquivo em qualquer diretório, porém, recomendo que você grave em:

/usr/share/zoneinfo/Brazil/verao_2008-2009.zic

Agora é hora de compilar esse arquivo. Para fazer isso verifique se você tem o zic instalado. Abra o console e digite na linha de comando como root: zic –help.

Se apareceu a forma de usar o programa, significa que você está pronto para compilar. Para fazer isso, basta digitar no mesmo diretório onde você gravou o seu arquivo .zic o seguinte:

zic verao_2008-2009.zic

Agora estamos com o arquivo East (foi gerado na compilação) dentro do diretório /usr/share/zoneinfo/Brazil pronto para ser usado. Algumas pessoas simplesmente copiam este arquivo para /etc/localtime. Eu prefiro criar um link simbólico que aponta o /etc/localtime para o arquivo East. Para fazer isso, digite o seguinte:

ln -s /usr/share/zoneinfo/Brazil/East /etc/localtime

Se tudo deu certo, sua distribuição está configurada para, no dia 19 de outubro às 00h00, adiantar o relógio para 01h00 e, no dia 15 de fevereiro de 2009 às 00h00, retornar o relógio para o dia 14 de fevereiro às 23h00 e você, pronto para mais uma noite de sono. :)

Depois do Twitter, o Blip também começa a ficar famoso por aqui

31/08/08 23h09

Twittar tá quase virando verbo e, enquanto isso não acontece, apareceu mais uma ferramenta que também tem tudo pra ficar famosa por aqui. Agora o negócio é Blipar!

O Blip.fm começou a ficar bem famoso nessas últimas semanas sendo muito comentado na blogosfera. A ferramenta, que lembra bastante o funcionamento do Twitter, tem como foco o compatilhamento de músicas.

Cada usuário se transforma em um DJ que pode adicionar suas próprias músicas e compartilhá-las com seus seguidores ( Listeners). O site é mais uma ferramenta de “social networking” e, o elo entre os participantes é o gosto musical.

Você segue DJs (Favorite DJs) e, na sua página principal aparecerá, além dos seus, os Blips (comentários de até 150 caracteres sobre determinada música) de todos os seus DJs favoritos.

Para Blipar, você tem algumas opções. Pode procurar uma música no mecanismo de busca da ferramenta, fazer o upload de alguma que você tenha no seu micro ou ainda, colocar a URL de algum mp3 que esteja publicado na internet.

Imagino que em breve teremos alguma intervenção da justiça, pois, apesar do sistema jogar a responsabilidade sobre o conteúdo lá publicado para o usuário, a coisa que mais tem é música que certamente não poderia estar lá.

Enquanto isso não acontece, vamos aproveitar bastante mais uma ferramenta sensacional. Abaixo coloco um resumo dos termos mais usados por lá para facilitar a vida dos DJs de primeira viagem.

Blip: texto de até 150 caracteres associado com uma música.

Favorites DJs: lista dos usuários que você está seguindo. Os Blips deles irão aparecer na sua página principal.

Listeners: seus fãs, ou seja, a lista dos usuários que te seguem, pois provavelmente gostam dos seus Blips.

Props: cada usuário, quando cria seu cadastro, ganha 10 props que ele pode dar para os DJs que realmente merecem. Quanto maior o seu número de props, maior o reconhecimento da comunidade pelo seu gosto musical.

Dicas para melhorar o posicionamento do seu site nos mecanismos de busca

29/06/08 20h32

1. Escolha um bom e não muito extenso conjunto de palavras-chave que descreva o conteúdo do seu site e coloque-as na meta-tag keywords;

2. Escreva um resumo sobre o seu site e coloque na meta-tag description;

3. Faça uso das meta-tags específicas para mecanismos de busca;

4. Dê títulos (<title></title>) diferentes para cada página do seu site;

5. Ter bom conteúdo é fundamental, de preferência com poucos erros gramaticais;

6. O layout do site também é fundamental. Tem que ser claro, de fácil navegação e acessível;

7. Evite usar Flash para tudo;

8. Tome cuidado com menus de navegação animados (DHTML), pois, têm que ser muito bem construídos para que os BOTS indexadores consigam navegar através dele;

9. Ofereça sempre conteúdos novos. Sites que ficam muito tempo sem atualização costumam ter pouca visitação;

10. Coloque links externos e internos no seu conteúdo. Quanto mais referências (pertinentes) seu texto tiver, melhor;

11. Evite repetir a mesma palavra várias vezes no texto;

12. Use nos títulos e no conteúdo palavras que são conhecidas por serem muito buscadas, claro, desde que não fique forçado. Acredite, os Web Crawlers também conseguem identificar algumas tentativas de fraudes;

13. Sempre identifique suas imagens com o atributo alt da tag img;

14. Use o hífen para nomear suas páginas e nomes de arquivos. Algo como mulher-na-sala-com-notebook.jpg;

15. Ter links quebrados é um péssimo negócio;

16. Faça o mapa do site para os visitantes e para os mecanismos de busca (sitemap.xml);

17. Configure corretamente o arquivo robots.txt;

18. Não tenha imagens para exibir texto. O HTML/XHTML é feito para isso. De nada adianta ter um site bonito, com fontes maravilhosas, mas difícil de achar;

19. Quanto mais redirecionamentos você usar, pior será;

20. Ter o conteúdo do site site linkado de outros sites é um ótimo negócio;

21. Cadastre seu site em diretórios de blogs e sites e também em social bookmarks managers como o del.icio.us;

22. Ter umm domínio fácil de digitar e de lembrar é uma ótima idéia, não para os mecanismos de busca, mas, para os sers humanos;

23. Tenha endereços (URLs) bem formatados, seguindo a mesma regra da dica 14.

Resolvendo desafios

18/05/08 21h49

O site Tableless tem “dado” ingressos para o décimo encontro Locaweb de profissionais de Internet. Disse dado entre aspas, pois, o site vem lançando desafios e, premia com ingressos a primeira pessoa que posta a resposta correta.

A estratégia é ótima, pois, os desafios geralmente envolvem lógica e programação e acabam atingindo em cheio o público certo para o evento.

Resolvi colocar abaixo a solução para um dos desafios que achei interessante. Eu resolvi usando Python, porém, você poderá usar a mesma lógica com outra linguagem. Se tiver usando o SO da MS, use o instalador do Python para Windows. Se estiver usando Linux, provavelmente você já terá o Python instalado. É só abrir o console e digitar python.

O desafio era:

67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00

Onde fica isso?

Bem, a primeira coisa é olharmos para a sequência acima e identificarmos que é algo “escrito” em hexadecimal, afinal, tudo está entre 0 e F. Pra quem não tem a menor idéia do que significa isso, recomendo dar uma olhada aqui.

O próximo passo é convertermos esse hexadecimal para algo legível. Como a pergunta nos leva a pensar que o código representa um texto, a primeira coisa que pensei foi, converto para base 10 e vejo o valor correspondente da tabela ascii. Para isso fiz o seguinte:

# Jogo a sequência em uma string s
s = “67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00″

# Dou um split sem argumentos na string s e coloco o resultado
# em uma variável chamada lista_hexa.
# Obs: o método split sem argumento usa o espaço como separador
lista_hexa = s.split()

# Crio uma função chamada hex2dec que recebe um parâmetro
# e converte para base 10
def hex2dec(hx): return int(hx, 16)

# Aplico a função criada acima em cada item da lista_hexa
# e coloco o resultado em outra lista chamada lista_decimais.
lista_decimais = map(hex2dec, lista_hexa)

# Agora aplico a função chr em cada número da lista_decimais
# A função chr recebe como parêmtro um número inteiro e retorna
# uma string de um caractere correspondente ao seu valor na tabela ascii.
lista_chars = map(chr, lista_decimais)

Se visualizarmos o conteúdo da variável lista_chars, será o seguinte:
['g', 'z', 'i', 'p', ':', '\x1f', '\x8b', '\x08', '\x08', '\xd0', '\x11', '\x1b', 'H', '\x02', '\xff', 'e', '\x00', '\xcb', '(', ')', ')', '\xb0', '\xd2', '\xd7', '\xcf', 'M', ',', '(', '\xd6', 'K', '\xcf', '\xcf', 'O', '\xcf', 'I', '\xd5', 'K', '\xce', '\xcf', '\xd5', 'K', '*', '\x02', '\x0b', '\xd9', '\xe7', '\xe4', '\xd8', '\xea', '\x1a', '\x19', '\xe9', 'Y', '\x1a', '\x1a', '\x99', '\x9b', '\x98', '\xea', '\xe8', '\x9a', '\x18', '\xeb', '\x19', '\x19', '\x98', '\x19', '\x1b', '\x02', '\x00', ')', '"', '>', '4', '6', '\x00', '\x00', '\x00']

Eu achei que já teríamos o resultado, porém, pelos caracteres iniciais da nossa lista (gzip:…), dá pra ver que agora o que temos é a representação de um arquivo compactado com o gzip. Vamos então descompactá-lo para ver se chegamos no resultado. Existem várias formas de fazer isso, mas, já que estamos no Python, vamos em frente.

# Importando dois módulos que iremos usar
import gzip, cStringIO

# Transformando a lista_chars em uma string e tirando o gzip:
s_final = ”.join(lista_chars)[5:]

# Agora, pra terminar, uso o método GzipFile que recebe como parêmtro
# um arquivo. Como nós já temos o conteúdo do arquivo na variável s_final,
# uso o módulo StringIO que faz exatamente o que precisamos.
gz = gzip.GzipFile(fileobj = cStringIO.StringIO(s_final))
gz.read()

A pergunta do desafio era: onde fica isso? A resposta é um endereço do Google Maps. :)
http://maps.google.com.br/maps?ll=-22.912745,-43.20631

Espero que tenham gostado. Apenas pra finalizar, Python é tão bacana que resolvi tentar fazer tudo isso em uma linha apenas e acabou ficando bem bacana, veja abaixo. Na verdade duas linhas, pois preciso importar os módulos antes.

import gzip, cStringIO
gzip.GzipFile(fileobj = cStringIO.StringIO(”.join(map(chr, map(lambda value:int(value, 16), “67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00″.split())))[5:])).read()

Será que dá pra fazer tudo isso em uma linha em alguma outra linguagem? :)

AJAX: um simples exemplo pra você começar a pôr a mão na massa

28/04/08 01h10

O princípio básico de funcionamento do AJAX, resumidamente, é: fazer requisições para o servidor Web sem precisar recarregar a página toda. A requisição é feita por trás dos panos, ou seja, enquanto você lê este post, poderia ter alguma programação pegando mais informações no servidor.

O exemplo que vou colocar abaixo faz uma coisa bem simples. É feita uma requisição ou pedido, como alguns falam, para o servidor Web de um arquivo que tem um trecho de HTML. Quando esse trecho de HTML chega, ou seja, o pedido é entregue pelo servidor, transformo todo texto em caixa alta e o disponibilizo na própria página.

Para você fazer o exemplo funcionar, além dos passos abaixo, é fundamental que você tenha um servidor Web configurado na sua máquina ou que possa fazer o upload dos arquivos que serão criados para algum servidor Web que você tenha acesso e que saiba os endereços.

1. Pegue o trecho de código logoo abaixo, coloque no bloco de notas e salve o arquivo com o nome exermplo.html dentro de algum diretório.

<ul>
<li>Os 11 sites mais interessantes da nova internet</li>
<li>Notebooks de 2015</li>
<li>Microsoft confirma softwares vendidos por assinatura</li>
<li>Excesso de downloads punidos por provedores</li>
</ul>

2. Crie um novo arquivo com o bloco de notas, copie o código abaixo e grave no mesmo diretório do arquivo exemplo.html. Dê o nome de ajax.html

<html>
<head>
<title>Exemplo simples do uso de AJAX</title>
<script>
function getRequestObject() {
// Função que retorna o objeto que será usado para fazer requisições.
// Caso o navegador não tenha suporte, a função retorna falso.
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”)
} else {
return false;
}
return xmlhttp;
}

function loadData(url) {
// Função que recebe uma URL e dá um GET nessa URL, ou seja, faz uma requisição.
requestObject = getRequestObject();
if (requestObject) {
requestObject.onreadystatechange = requestObjectStateChanged;
requestObject.open(”GET”, url, true);
requestObject.send(null);
} else {
alert(’Seu navegador não tem suporte para essa tecnologia.’);
}
}

function requestObjectStateChanged() {
// Essa função é acionada pela função acima. Na verdade é um evento (onreadystatechange) do
// objeto que faz a requisição que a aciona toda vez que seu estado altera.
// Quando a requisição termina com sucesso, coloco o resultado dentro do div que está no
// body da página.
if (requestObject.readyState==4) {
if (requestObject.status==200) {
document.getElementById(’codigo’).innerHTML = requestObject.responseText.toUpperCase();
} else {
alert(’Erro ao carregar os dados.’);
}
}
}
</script>
</head>
<body>
<input type=”button” value=”Carregar” onclick=”loadData(’exemplo.html’);” />
<div id=”codigo”></div>
</body>
</html>

Agora basta testar. Aqui na minha máquina tenho um servidor Apache rodando. Eu editei o arquivo de configuração (httpd.conf) e mudei o DocumentRoot para o diretório que usei para gravar os arquivos. Depois disso, acessei http://localhost/ajax.html para testar.

Uma outra possibilidade é você fazer o upload desses dois arquivos para algum servidor Web. Depois disso, basta você acessar o arquivo ajax.html e clicar no botão carregar.

Caso encontre problemas ou não tenha entendido o que o código faz, linha por linha, deixe seu comentário para que eu ou outros leitores ajudem.

Como mensurar a audiência de sites feitos em Flash?

30/03/08 22h14

É muito comum o uso de ferramentas gratuitas como o Google Analytics para mensurar a audiência de sites, porém, quando os sites são construidos inteiramente em Flash, as coisas mudam um pouco.

E o que temos que fazer então pra mensurá-la?. Bem, se for usando o Google Analytics, o primeiro passo é fazer o cadastro do site e pegar o “tracking code” gerado por ele. Você vai ter em mãos um código semelhante ao que está colado logo abaixo.

<script type=”text/javascript”>
var gaJsHost = ((”https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);
document.write(unescape(”%3Cscript src=’” + gaJsHost + “google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E”));
</script>
<script type=”text/javascript”>
var pageTracker = _gat._getTracker(”UA-1783014-1″);
pageTracker._initData();
pageTracker._trackPageview();
</script>

Com este trecho de código em mãos, você deverá colocá-lo na página do seu site que faz a chamada ao seu arquivo .swf, ou seja, onde tem a tag <object>.

Com isso feito, agora é a hora de alterar seu .fla. Você terá que editar todos os eventos que usa para navegação entre as páginas. Disse eventos pois é possível você “mudar de páginas” usando eventos diferentes como: onClipEvent, on (release), entre outros.

Supondo que você tenha um site com uma estrutura simples, algo como: home, contato, quem somos e notícias, e ainda, que você use o evento “on (release)” de um botão para ir da “página” home para quem somos. Nesse evento você tem que colocar o seguinte:

on (release) {
getURL(”javascript:pageTracker._trackPageview(’/quem_somos/index.html’);”);
_root.gotoAndPlay(”quem_somos”);
}

O getURL do código acima é que será responsável em chamar o tracker do Google Analytics que está no código-fonte da sua página e passar o endereço virtual “/quem_somos/index.html” para que ele consiga contabiliar esta visita. Vejam, este endereço não existe, porém, irá aparecer nos relatórios de audiência e você conseguirá identificar facilmente a quantidade de visitas por área.

A linha _root.gotoAndPlay(”quem_somos”) não é obrigatória. Eu coloquei apenas para exemplificar algum tipo de ação possível para “mudar de página”. Depois que você tiver feito isso em todos os eventos do seu .fla, claro, alterando os endereços virtuais, exportá-lo e “subir” o .swf para o servidor Web, será possível acompanhar o movimento do site acessando os relatórios.

É importante lembrar que o Google Analytics demora aproximadamente 48 horas para começar a mostrar os resultados depois que estiver tudo certo.

Tente recuperar seus píxels “mortos”

02/03/08 19h47

A popularização dos monitores LCD, que ocupam menos espaço, consomem menos energia e desgastam menos nossa vista, trouxe problemas que não eram conhecidos pelos donos de monitores CRT (tubo de raios catódicos).

Muitos compradores se decepcionaram ao chegarem em casa e descobrirem que o monitor, mesmo novo, veio com um ou mais píxels defeituosos. Outros, depois de um tempo de uso, também notam o mesmo fato.

O que todo mundo diz por aí é que seu monitor está com píxels mortos ou, mais conhecido em Inglês como “Dead Pixels”. Na verdade, o correto não é dizer píxel morto e sim píxel defeituoso, isso porque o píxel pode realmente estar morto, ou seja, desligado, porém, pode também estar ligado mas não estar se comportando da maneira esperada.

Píxels mortos são os defeituosos que não possuem luminosidade, ou seja, como se estivessem desligados. São vistos normalmente em telas brancas justamente pela falta de luz, acabam aparecendo como pontos pretos na tela.

Existem também os píxels que ficam permanentemente ligados. Estes normalmente se comportam de maneira inversa dos mortos. São brancos e normalmente são notados quando a imagem de fundo é preta. Em Inglês são conhecidos como “hot pixels”.

Além dos dois citados acima, também temos o píxel preso, que é aquele que fica com determinada cor e não alterna. Eles são vistos normalmente em imagens pretas e são mais comuns se prenderem nas cores vermelha, verde ou azul.

Caso no seu monitor LCD você tenha píxels presos, é possível tentar desprendê-los. A principal técnica é ter uma imagem que alterne cores rapidamente. O site killdeadpixel.com tem uma imagem dessas e ensina o que você deve fazer para tentar “ressucitar” seus píxels.

Basta acessar o site, posicionar a imagem no local onde aparece o píxel preso no seu monitor e deixar ligado por 1 hora. Caso não funcione, o site recomenda usar a versão full screen da imagem e deixar ligado por 12 horas. É claro que não tem nenhuma garantia mas acho que vale a tentativa.

Impressione seus amigos com a forma de exibir seus álbuns de fotos

20/02/08 21h04

Desde que as máquinas digitais ficaram populares, dezenas de programas foram desenvolvidos para facilitar a vida dos fotógrafos de plantão para que estes consigam compartilhar a quantidade enorme de fotos que tiram com seus amigos.

Essa tarefa, apesar de parecer simples para muitos, certamente é um pesadelo para a maioria. O marketing, digno de paises capitalistas, faz com que simples mortais tirem fotos com máquinas de 7 Megapíxels sem ter a menor idéia do que estão fazendo. Quando chegam em casa, colocam verdadeiras bigornas no seu micro de casa e, na hora de compartilhar isso com os amigos, começa a luta. Quantas vezes você já não recebeu um arquivo enorme de algum amigo seu que praticamente destruiu sua caixa postal?

Os usuários mais fuçadores começaram a usar programas que “dão um jeito” na problemática acima. Eles reduzem as fotos automaticamente, fazem alguns ajustes padrão nos níveis de saturação, contraste e cor e ainda montam um álbum de fotos para ser publicado na Web. Posso citar entre muitos o Picasa e ACD See.

Até aí, nada de novo. Além dos programas que rodam na nossa própria máquina, temos também os sites, ou melhor, as Web Applications, que têm esse propósito. Você cria um usuário e uma senha e faz o upload das suas fotos, normalmente organizando tudo em álbuns. Aqui citaria o Flickr e o Picasa Web, sem falar nas possibilidades de colocar fotos de maneira semelhante nas redes sociais Orkut e Facebook.

A maneira de visualizar essas fotos é bem semelhante em quase todos eles, porém, a Cooliris desenvolveu um plug-in para os principais navegadores do mercado que modifica completamente a maneira de navegar nesses álbuns. O produto é totalmente inovador e certamente irá fazer com que o mercado de desenvolvimento Web siga novos e bons caminhos.

O plug-in, batizado de PicLens, é simplesmente sensacional. Você irá impressionar todo mundo se colocar, por exemplo, seu álbum no Picasa Web e mostrá-lo para seus amigos. As transições entre fotos, a maneira de mostrar os thumbnails, a forma de navegar, a integração com alguns dos principais sites de busca de imagens, entre outras, são características que foram cuidadosamente desenhadas e pensadas por gente que se preocupa e muito com as pessoas que estão do outro lado do balcão.

Eu recomendo fortemente que todos instalem o plug-in em seus browsers pois, no mínimo, estamos diante de outro grande passo em termos de evolução nas aplicações Web. Não ficarei nada surpreso se algum player grande comprar esse produto por algumas dezenas de milhares de dólares.