<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>A fronteira final &#187; Hiro</title>
	<atom:link href="http://afronteirafinal.com/category/webmasters/hiro/feed/" rel="self" type="application/rss+xml" />
	<link>http://afronteirafinal.com</link>
	<description>Audaciosamente indo onde nenhum dev jamais esteve</description>
	<lastBuildDate>Thu, 15 Dec 2011 15:52:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Google Wave &#8211; a onda que não pegou</title>
		<link>http://afronteirafinal.com/google-wave-a-onda-que-nao-pegou/</link>
		<comments>http://afronteirafinal.com/google-wave-a-onda-que-nao-pegou/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 19:28:09 +0000</pubDate>
		<dc:creator>D. Vespa</dc:creator>
				<category><![CDATA[Alex]]></category>
		<category><![CDATA[Hiro]]></category>
		<category><![CDATA[Vespa]]></category>
		<category><![CDATA[aplicações web]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[problemas]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=402</guid>
		<description><![CDATA[Hoje na hora do almoço conversamos a respeito da morte do Google Wave. Como uma coisa que era prometida como a próxima grande revolução da internet pôde dar tão errado? Há uma gama razoável de recursos úteis (aliás, este artigo, como outros do blog, foi escrito usando o Wave como editor), uma empresa forte por [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje na hora do almoço conversamos a respeito da morte do Google Wave. Como uma coisa que era prometida como a próxima grande revolução da internet pôde dar tão errado? Há uma gama razoável de recursos úteis (aliás, este artigo, como outros do blog, foi escrito usando o Wave como editor), uma empresa forte por trás e um grande potencial de expansão. Por que, então, ficou tão abaixo mesmo da pior das expectativas?</p>
<p><span id="more-402"></span>Os pontos que surgiram na conversa foram os seguintes:</p>
<h2>Falta de foco:</h2>
<p>Acreditamos que este seja o principal problema. Em nenhum momento falou-se claramente &#8220;isso serve pra aquilo&#8221; &#8211; só se falou que era um milhão de possibilidades, que as pessoas iam ter orgasmos com os recursos mágicos, só que&#8230; Não se falou como. Os exemplos apresentados do que fazer com a ferramenta foram pífios e, até onde eu sei, ninguém fez algo que fosse digno de nota usando o Wave.</p>
<h2>Interface diferente &#8220;Pero no mucho&#8221;:</h2>
<p>A idéia vendida foi de uma interface revolucionária. A estrutura ousa muito pouco (repare que a diagramação e distribuição, exceto pela caixa de texto, é quase a do Gmail) e, no pouco que ousou, ficou confuso e sem atrativos &#8211; caso do box de texto, que tem um monte de recursos mas nenhum exatamente novo.</p>
<p>Por exemplo pra que diabo fazer uma enquete se pode-se usar um Spreadsheet com o próprio Google Docs com mais recursos e sem todo o ruído visual do Wave ao redor?</p>
<h2>Excesso de expectativa</h2>
<p>Criou-se muita expectativa de revolução para uma ferramenta que foi lançada inacabada. Mesmo que tivesse uma proposta inovadora, a chance de causar uma boa impressão foi totalmente perdida &#8211; muitos usuários não dão segundas chances para ferramentas, especialmente se vierem a se sentir &#8220;burros&#8221; ao usar.</p>
<p>Alguém lembra do vídeo de uma hora e tra-la-lá apresentando o produto e das pessoas em extase assistindo à demonstração? Até a risada gravada do chaves parecia mais sinceras que aquilo.</p>
<h2>Ferramentas tardias</h2>
<p>Vários recursos desejáveis relacionados à usabilidade só surgiram muito depois do lançamento, como uma forma de aviso sobre novos waves ou a possibilidade de excluir-se de uma lista Wave (embora implementado é MUITO ruim a navegação e são vários cliques até conseguir).</p>
<p>Tudo bem que melhorias podem sempre ser feitas posteriormente, mas creio que a idéia deles que as pessoas querem ficar conectadas às outras para sempre em tudo que for compartilhável é bem errada &#8211; até porque, se verdade fosse, divórcio não existiria.</p>
<h2>O Wave não é uma onda, é uma ilha</h2>
<p>Na ânsia de tentar ser a nova ferramenta de comunicação da internet, rede social, messenger, email e chat tudo ao mesmo tempo, não foi criada forma alguma de interface com outras ferramentas já existentes. Sequer um RSS.</p>
<p>Entendemos que, de forma até prepotente, o Google tentou apresentar um novo paradigma e romper com todos os antigos &#8211; mas foi inocência demais acreditar que pessoas largariam ferramentas que usam há anos e começassem a focar tudo no Wave, e que elas não quereriam integração com mais nada. Por que não uma possibilidade de conectar algo ao Facebook? Por que, no começo, sequer com o próprio Gmail tinha conexão? Já foram adquiridos muitos hábitos nos últimos 15 anos, e uma cultura deste tipo não é jogada para o alto de uma hora pra outra.</p>
<p>Para saber da dificuldade de mudar um hábito é só pensar quanto tempo demorou pro e-mail substituir o fax. Para algumas empresas, aliás, isso ainda é uma realidade.</p>
<h2>Documentação ruim / falta de incentivo aos desenvolvedores</h2>
<p>Por conta talvez da já citada falta de foco, a documentação voltada a desenvolvedores (que poderiam ter sido umas das fontes de salvação) foi escrita de maneira péssima, tornando a possibilidade de que boas idéias vindas da comunidade minguasse muito.</p>
<p>Poucos heróis aventuraram-se a fazer algo para o Wave, mas a maioria resolveu esperar para ver no que dava antes de perder precioso tempo estudando algo que pudesse dar em água. E deu.</p>
<h2>Entrada por convite</h2>
<p>Outra coisa que frustrou pessoas: se você já tem Gmail, conta no Orkut, conta no Picasa, Gtalk e etc, por que cargas d&#8217;água precisa ser convidado para usar uma ferramenta que, em tese, já é parte das suas aplicações/contas Google? Convites são feitos para coisas que são extremamente desejáveis e, se feitos ao acaso, gera uma expectativa de &#8220;é bom valer a pena&#8221;. Dá sensação de pagar pra entrar num clube privado e descobrir lá dentro que é só um boteco comum.</p>
<h2>Tudo que se propôs a resolver já tinha solução</h2>
<p>Concordo, muita coisa até pode ser melhor solucionado no Wave, caso por exemplo da função de edição conjunta e compartilhamento de documentos. Mas&#8230; As pessoas já faziam isso no Google Docs há anos. E já eram familiares à estrutura &#8220;word-like&#8221; lá utilizada, afinal, todos já estão bem adestrados desde o win 3.11 a usar aquela estrutura. Não importa o quão mais simples seja a interface, para aquele tipo de solução de editor será, sempre, muito difícil propor algo novo.</p>
<h2>Integração demais = lentidão</h2>
<p>As possibilidade de juntar tudo e todos é tão grande que por vezes é insustentável manter um wave por muito tempo. Tantos são os aplicativos, replys, icones de participantes, referências internas, referências externas, etc, que só com muita memória RAM você consegue usar o Wave de forma decente.</p>
<h2>Puxando a Sardinha para o Chrome</h2>
<p>O Google pedia descaradamente para você usar o Wave no Chrome. Sim, é mais do que verdade que o Chrome é um tremendo de um browser, com o melhor &#8220;motor&#8221; para interpretação de Javascript feito até então, não só o Wave, mas tudo que usa Ajax como base para interface web.</p>
<p>O caso é que o usuário não sabe disso. Se o site está lento, para o usuário a culpa não será do IE6, será do site. Mesmo no Firefox, que é um browser bastante decente, fica insuportável de lento, forçando a usar o Chrome.</p>
<p>Não importa o quão verdadeiro é o fato de que o Chrome lida melhor com Javascript com os outros: a campanha/lavagem cerebral pelo browser da casa sempre vai deixar com aquele fundinho de que foi sabotagem nos outros navegadores (coisa que não foi MESMO). E como tem neurótico a rodo nessa terra, especialmente entre desenvolvedores (isso, aqueles mesmos que poderiam ter salvo aspectos da aplicação), é mais um motivo que afasta os potenciais usuários.</p>
<h2>O nome do produto não é &#8220;iWave&#8221;</h2>
<p>Se o google wave fosse produzido pela Apple ou fosse uma app para iPhone, os geeks <span style="text-decoration: line-through;">moderninhos</span> certamente ajudariam a vendê-lo como uma idéia de outro mundo.</p>
<p>Falando mais sério, essa foi outra falha na estratégia do Google: eles tentaram fazer algo que a Apple faz há anos, que é vender qualquer idéia como se fosse revolucionária (mesmo que seja só um iPod grandão com menos recursos que o original).</p>
<p>O lance é que a Apple assume essa postura e o risco do produto não dar certo. Eles perdem com o que não da certo, mas é um risco menor: a Apple conhece bem seu público e já percebeu qual é a forma que eles tendem a agir, então raramente dá uma bola fora (e quando dá sabe exatamente o que falar para o público continuar sentindo-se querido e feliz com o status de ser um possuidor de um produto deles).</p>
<h2>Conclusão</h2>
<p>De megalomania aos problemas de projeto, é realmente uma pena ver uma ferramenta morrer deste jeito, sem chegar a atingir todo seu potencial. Engraçado, pois uma das coisas que comentamos durante o papo é que, depois de algumas experiências, ela era um bom lugar para juntar material de pesquisa e pequenos Brainstorms (com direito até a descobrir nesse exato momento que há um novo recurso voltado para mind map,  que sempre foi um recurso do qual sentimos muita falta).</p>
<p>Quando finalmente achamos o que fazer com a ferramenta o Google decide enterra-la.</p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/google-wave-a-onda-que-nao-pegou/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Webmonster: Todo carnaval tem seu fim</title>
		<link>http://afronteirafinal.com/webmonster-todo-carnaval-tem-seu-fim/</link>
		<comments>http://afronteirafinal.com/webmonster-todo-carnaval-tem-seu-fim/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 02:11:42 +0000</pubDate>
		<dc:creator>D. Vespa</dc:creator>
				<category><![CDATA[Alex]]></category>
		<category><![CDATA[Hiro]]></category>
		<category><![CDATA[Vespa]]></category>
		<category><![CDATA[Webmonster]]></category>
		<category><![CDATA[carnaval]]></category>
		<category><![CDATA[folga]]></category>
		<category><![CDATA[quadrinhos]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=141</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://afronteirafinal.com/wp-content/uploads/2010/02/webmonster31.png"><img class="aligncenter size-full wp-image-153" title="webmonster - todo carnaval tem seu fim" src="http://afronteirafinal.com/wp-content/uploads/2010/02/webmonster31.png" alt="webmonster - todo carnaval tem seu fim" width="597" height="1081" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/webmonster-todo-carnaval-tem-seu-fim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>O que perdemos com o IE6</title>
		<link>http://afronteirafinal.com/o-que-perdemos-com-o-ie6/</link>
		<comments>http://afronteirafinal.com/o-que-perdemos-com-o-ie6/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 14:44:16 +0000</pubDate>
		<dc:creator>Roberto Hiroshi</dc:creator>
				<category><![CDATA[Alex]]></category>
		<category><![CDATA[Hiro]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=100</guid>
		<description><![CDATA[Há pouco tempo o serviço federal de segurança da informação(BSI) alemão e a agência nacional de segurança de sistemas informação(SGDSN) francês publicaram notas, respectivamente aqui e aqui para que os usuarios de internet não utilizem mais o Internet explorer, o motivo dito por eles é uma falha de segurança que permite injetar código malicioso através de uma [...]]]></description>
			<content:encoded><![CDATA[<p>Há pouco tempo o serviço federal de segurança da informação(BSI) alemão e a agência nacional de segurança de sistemas informação(SGDSN) francês publicaram notas, respectivamente <a title="BSI" href="https://www.bsi.bund.de/cln_183/ContentBSI/presse/Pressemitteilungen/Sicherheitsluecke_IE_150110.html" target="_blank">aqui</a> e <a title="SGDSN contra o IE" href="http://www.certa.ssi.gouv.fr/site/CERTA-2010-ALE-001/CERTA-2010-ALE-001.html" target="_blank">aqui</a> para que os usuarios de internet não utilizem mais o Internet explorer, o motivo dito por eles é uma falha de segurança que permite injetar código malicioso através de uma página web. Esses boletins publicados fizeram com que a Microsoft logo disponibilizasse um <a title="Boletim de segurança da Microsoft" href="http://www.microsoft.com/technet/security/bulletin/ms10-002.mspx" target="_blank">service pack</a> para a correção do problema.</p>
<p><span id="more-100"></span></p>
<h2><strong>Segurança (ou falta de)</strong></h2>
<p>Especialistas em segurança afirmam que da forma como o IE 6 é desenhado é muito difícil garantir sua segurança.</p>
<p>Uma das maiores falhas de segurança Internet Explorer é o fato dele ser executado com o mesmo nível de acesso do usuário logado. Os malwares que exploram as vulnerabilidades do browser se aproveitam desse nível de acesso, já que grande parte dos usuários de Windows (XP por exemplo), se conectam ao sistema com usuário Administrador ou perfil de acesso que o valha. Existem ferramentas para limitar o nível de acesso do Internet Explorer, mas poucos usuários as conhecem ou se preocupam em instalar. E só pelo fato dessa segurança não estar presente por padrão, o pobre usuário do IE ja inicia a navegação vulnerável.</p>
<p>Esse problema de nível de acesso ocorre também com outros navegadores do mercado que rodam em ambiente windows. O problema é que o navegador é tão integrado ao Windows que uma falha de segurança é uma ameaça potencial ao próprio sistema operacional.</p>
<p>Não existe ambiente 100% seguro, nem mesmo navegador 100% a prova de falhas, mas o fato é que o Internet Explorer 6 é campeão em falhas críticas de segurança e, com a descontinuidade do projeto, as atualizações (que nem são tão frequentes quanto precisavam ser) vão deixar de acontecer.</p>
<h2>Compatibilidade com CSS</h2>
<p>O Internet Explorer 6 foi lançado muito tempo depois da especificação do CSS 2. Mesmo assim, o browser não tem compatibilidade completa com itens especificados para o CSS 1.</p>
<p>A grande maioria dos browsers modernos, já dão algum suporte a versão 3 do CSS que ainda em desenvolvimento. Hoje ja é possível criar detalhes de layout de forma muito simples e limpa. A nova especificação do CSS 3 promete resolver muitos problemas visuais encontrados hoje no desenvolvimento dos layouts, mas enquanto uma parcela tão grande de internautas continuar utilizando um navegador antigo e sem padrões, a migração será muito difícil.</p>
<p>Muitas implementações do CSS 3 não estão previstas nem para versões mais novas do IE. Repare como o há falta de suporte a muitas implementações:</p>
<p><a title="Compatibilidade de css com browsers" href="http://www.quirksmode.org/css/contents.html" target="_blank">http://www.quirksmode.org/css/contents.html</a></p>
<h2>A Web está deixando de suportar o IE6</h2>
<p>O IE 6 já está quase no seu 10° ano de vida e alguns sites já não dão mais suporte, conscientes das dificuldades para manter produtos na web que funcionem no navegador, e do número de restrições que este traz para projetos de interface.</p>
<p>O Google, por exemplo, já tem há algum tempo feito campanhas para que os usuários de seus produtos atualizem seus browsers. E agora definitivamente a empresa deixará de dar suporte ao IE6, retirando inicialmente o suporte dos produtos Google Docs e Google Sites.</p>
<h2>Deseja contribuir para a erradicação do IE6?</h2>
<p>Aqui vão algumas iniciativas e campanhas contra o &#8220;grande vilão&#8221; das interfaces modernas:</p>
<p><a title="RIP IE6" href="http://www.ripie6.com/" target="_blank">http://www.ripie6.com/</a></p>
<p><a title="IE6 no more" href="http://www.ie6nomore.com/" target="_blank">http://www.ie6nomore.com/</a></p>
<p><a title="Dear IE6" href="http://dearie6.com/" target="_blank">http://dearie6.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/o-que-perdemos-com-o-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.4 o que há de novo</title>
		<link>http://afronteirafinal.com/jquery-1-4-o-que-ha-de-novo/</link>
		<comments>http://afronteirafinal.com/jquery-1-4-o-que-ha-de-novo/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 11:59:46 +0000</pubDate>
		<dc:creator>Roberto Hiroshi</dc:creator>
				<category><![CDATA[Alex]]></category>
		<category><![CDATA[Hiro]]></category>
		<category><![CDATA[Vespa]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=73</guid>
		<description><![CDATA[Gostaria de demonstrar aqui meu entusiasmo em relação a recém lançada versão do jQuery. A versão 1.4, lançada no dia 14 de Janeiro traz muitas novidades interessantes, além de aperfeiçoamentos que ainda precisavam ser feitos. Uma boa melhorada na performance dos scripts fazem essa versão ainda mais competitiva nos aspectos em que perdia para outros [...]]]></description>
			<content:encoded><![CDATA[<p>Gostaria de demonstrar aqui meu entusiasmo em relação a recém lançada versão do jQuery.</p>
<p>A versão 1.4, lançada no dia 14 de Janeiro traz muitas novidades interessantes, além de aperfeiçoamentos que ainda precisavam ser feitos. Uma boa melhorada na performance dos scripts fazem essa versão ainda mais competitiva nos aspectos em que perdia para outros grandes frameworks do mercado (ver comparativo de performance entre os frameroks js) <a href="http://dante.dojotoolkit.org/taskspeed/report/charts.html?exclude=defaultbrowser0" target="_blank">aqui</a> ou <a href="http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised:" target="_blank">aqui</a>.</p>
<p><span id="more-73"></span></p>
<p>Muitos metodos comuns tiveram melhorias consideráveis de performance nesta nova versão, entre esses estão: css(), attr(), addClass(), removeClass(), hasClass(), html(), remove(), empty() &#8230; e muitos outros.</p>
<p>Em varios casos eles citam aumentos de desempenho que chegam superam em até 4x a implementação da versão anterior, muito dessa melhora se obteve atraves da refatoração do código.</p>
<p>As mudanças de performance dos scripts foram muito consideráveis, alguns métodos ganharam &#8220;poderes&#8221; que antes não tinham, vale a pena dar uma olhada no <a href="http://api.jquery.com/category/version/1.4/" target="_blank">changelog</a> para conferir métodos que ganharam novas possibilidades de assinaturas.</p>
<p>O único aspecto negativo que encontramos até agora foi o peso da nova versão, agora com 23 kb (Minified,GZIP), contra os 19kb(Minified, GZIP) da sua versão antecessora (v 1.3.2). Acreditamos ser até uma mudança razoável se analizarmos o número de implementações e re-escritas que foram feitos para a nova versão.</p>
<p>Vale destacar algumas das muitas novidades dessa versão. Aos poucos vamos listando mais métodos interessantes:</p>
<p><strong>detach()</strong></p>
<p>O método &#8220;detach&#8221; armazena o elemento selecionado em uma variável para uso posterior, e o remove da árvore DOM. Funciona de maneira similar ao já existente método &#8220;remove&#8221;, porém mantendo uma referência para ele sem destruir. Resumidamente ele &#8220;recorta(destaca)&#8221; um fragmento de html para ser utilizado em outro ponto do código.</p>
<p>Ex:</p>
<pre>&lt;span class="origem"&gt;</pre>
<pre>    &lt;p&gt;Item 1&lt;/p&gt;</pre>
<pre>    &lt;p&gt;Item 2&lt;/p&gt;</pre>
<pre>    &lt;p&gt;Item 3&lt;/p&gt;</pre>
<pre>    &lt;p&gt;Item 4&lt;/p&gt;</pre>
<pre>    &lt;p&gt;Item 5&lt;/p&gt;</pre>
<pre>&lt;/span&gt;</pre>
<pre>&lt;span class="destino"&gt;&lt;/span&gt;</pre>
<pre>&lt;input type="button" value="Recortar" class="btnRetirar" /&gt;</pre>
<pre>&lt;input type="button" value="Colar" class="btnAdicionar" /&gt;</pre>
<pre>&lt;script src="jquery-1.4.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<pre>&lt;script type="text/javascript"&gt;</pre>
<pre>    $().ready(function() {</pre>
<pre>        var itens</pre>
<pre>        $(".origem p").click(function() {</pre>
<pre>            $(this).addClass("selecionado")</pre>
<pre>        })</pre>
<pre>        $(".btnRetirar").click(function() {</pre>
<pre>            itens = $(".origem .selecionado").detach();</pre>
<pre>       })</pre>
<pre>       $(".btnAdicionar").click(function() {</pre>
<pre>           itens.appendTo(".destino")</pre>
<pre>           itens = null</pre>
<pre>       })</pre>
<pre>    })</pre>
<pre>&lt;/script&gt;</pre>
<p><strong>isPlainObject()</strong></p>
<p>Verifica se o objeto foi criado utilizando &#8220;{}&#8221; ou &#8220;new Object&#8221;</p>
<p>Ex:</p>
<pre>&lt;div id="isPlainObject"&gt;&lt;/div&gt;</pre>
<pre>&lt;script src="jquery-1.4.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<pre>&lt;script type="text/javascript"&gt;</pre>
<pre>    $().ready(function() {</pre>
<pre>        obj1 = new Object</pre>
<pre>        obj2 = {}</pre>
<pre>        obj3 = {a:"asd", b:"asdfg"}</pre>
<pre>        obj4 = []</pre>
<pre>        obj5 = "asdfg"</pre>
<pre>        obj6 = function () {}</pre>
<pre>        $("#isPlainObject").html(</pre>
<pre>            "&lt;p&gt;jQuery.isPlainObject(new Object) -&gt; " + jQuery.isPlainObject(obj1) + "&lt;/p&gt;" +</pre>
<pre>            "&lt;p&gt;jQuery.isPlainObject({}) -&gt; " + jQuery.isPlainObject(obj2) + "&lt;/p&gt;" +</pre>
<pre>            '&lt;p&gt;jQuery.isPlainObject({a:"asd", b:"asdfg"}) -&gt; ' + jQuery.isPlainObject(obj3) + "&lt;/p&gt;" +</pre>
<pre>            "&lt;p&gt;jQuery.isPlainObject([]) -&gt; " + jQuery.isPlainObject(obj4) + "&lt;/p&gt;" +</pre>
<pre>            '&lt;p&gt;jQuery.isPlainObject("asdfg") -&gt; ' + jQuery.isPlainObject(obj5) + "&lt;/p&gt;" +</pre>
<pre>            "&lt;p&gt;jQuery.isPlainObject(function () {}) -&gt; " + jQuery.isPlainObject(obj6) + "&lt;/p&gt;"</pre>
<pre>        )</pre>
<pre>    })</pre>
<pre>&lt;/script&gt;</pre>
<p><strong>isEmptyObject()</strong></p>
<p>Verifica se o objeto está vazio</p>
<p>Ex:</p>
<pre>&lt;div id="isEmptyObject"&gt;&lt;/div&gt;</pre>
<pre>&lt;script src="jquery-1.4.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<pre>&lt;script type="text/javascript"&gt;</pre>
<pre>    $().ready(function() {</pre>
<pre>        obj1 = new Object</pre>
<pre>        obj2 = {}</pre>
<pre>        obj3 = {a:"asd", b:"asdfg"}</pre>
<pre>        obj4 = []</pre>
<pre>        obj5 = "asdfg"</pre>
<pre>        obj6 = function () {}</pre>
<pre>        $("#isEmptyObject").html(</pre>
<pre>            "&lt;p&gt;jQuery.isEmptyObject(new Object) -&gt; " + jQuery.isEmptyObject(obj1) + "&lt;/p&gt;" +</pre>
<pre>            "&lt;p&gt;jQuery.isEmptyObject({}) -&gt; " + jQuery.isEmptyObject(obj2) + "&lt;/p&gt;" +</pre>
<pre>            '&lt;p&gt;jQuery.isEmptyObject({a:"asd", b:"asdfg"}) -&gt; ' + jQuery.isEmptyObject(obj3) + "&lt;/p&gt;" +</pre>
<pre>            "&lt;p&gt;jQuery.isEmptyObject([]) -&gt; " + jQuery.isEmptyObject(obj4) + "&lt;/p&gt;" +</pre>
<pre>            '&lt;p&gt;jQuery.isEmptyObject("asdfg") -&gt; ' + jQuery.isEmptyObject(obj5) + "&lt;/p&gt;" +</pre>
<pre>            "&lt;p&gt;jQuery.isEmptyObject(function () {}) -&gt; " + jQuery.isEmptyObject(obj6) + "&lt;/p&gt;"</pre>
<pre>        )</pre>
<pre>    })</pre>
<pre>&lt;/script&gt;</pre>
<p>Para ver os exemplos em funcionamento, clique <a href="http://lab.afronteirafinal.com/jquery-lab/" target="_blank">aqui</a></p>
<p>Referencias:</p>
<p><a href="http://api.jquery.com" target="_blank">api.jquery.com</a></p>
<p><a href="http://jquery14.com" target="_blank">jquery14.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/jquery-1-4-o-que-ha-de-novo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microformats</title>
		<link>http://afronteirafinal.com/microformats/</link>
		<comments>http://afronteirafinal.com/microformats/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 17:28:00 +0000</pubDate>
		<dc:creator>Roberto Hiroshi</dc:creator>
				<category><![CDATA[Hiro]]></category>
		<category><![CDATA[Renato]]></category>
		<category><![CDATA[Vespa]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[hcalendar]]></category>
		<category><![CDATA[hcard]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[meta-dados]]></category>
		<category><![CDATA[microformat]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[semântica web]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://afronteirafinal.com/?p=47</guid>
		<description><![CDATA[Microformats é um conceito de padronização para elementos comuns existentes na maioria dos websites (como informações de contato, eventos, tags, resenhas, etc) usando nada mais que a própria sintaxe XHTML para tanto, sem scripts ou arquivos anexos. A idéia central deste conceito é gerar meta-dados a partir da própria formatação tornando os textos mais ricos [...]]]></description>
			<content:encoded><![CDATA[<p>Microformats é um conceito de padronização para elementos comuns existentes na maioria dos websites (como informações de contato, eventos, tags, resenhas, etc) usando nada mais que a própria sintaxe XHTML para tanto, sem scripts ou arquivos anexos. A idéia central deste conceito é gerar <a title="meta-dados" href="http://en.wikipedia.org/wiki/Metadata" target="_blank">meta-dados</a> a partir da própria formatação tornando os textos mais ricos em informação &#8211; sem que isso altere em nada a vida do usuário comum. Basicamente, as informações extras atribuidas são colocadas como classes CSS, na tag REL e na tag TITLE, tendo interferência praticamente nula no resultado visual. Entre muitas,  algumas vantagens dos Microformats são:</p>
<p><span id="more-47"></span></p>
<p><strong>Padronização para elementos comuns em sites</strong></p>
<p>Qual a vantagem real disso? Um desenvolvedor esperto perceberá que, usando ou criando os devidos plugins, a extração e conversão de dados para qualquer formato em uma página é muito mais fácil. Um exemplo interessante disso é o <a title="hCard" href="http://microformats.org/wiki/hCard" target="_blank">hCard</a>, que permite puxar e exportar dados cadastrais ou eventos em um formato reconhecível por qualquer gerenciador de e-mails  (seja online, seja um outlook da vida).  Num futuro pode-se até pensar em browsers que já venham com funções nativas voltadas que use este tipo de recurso, valendo-se de <a title="API" href="http://pt.wikipedia.org/wiki/API" target="_blank">API</a>s como o <a title="Google Maps" href="http://maps.google.com/" target="_blank">Google Maps</a> ou o <a title="Yahoo Maps" href="http://maps.yahoo.com/" target="_blank">Yahoo Maps</a>, por exemplo.</p>
<p>E claro, como toda padronização, ela auxilia na usabilidade,  pois facilita a vida de vários &#8220;interpretadores&#8221; (screen readers, browsers, aplicativo Air, etc) na forma de usar a informação fornecida.</p>
<p><strong>Melhora na qualidade para indexadores de busca</strong></p>
<p>Não encontramos dados do quanto de relevância os buscadores estão a dar para os microformats, embora tanto o <a title="Google" href="http://www.google.com/" target="_blank">Google</a> quanto <a title="Yahoo" href="http://www.yahoo.com/" target="_blank">Yahoo</a> já tenham anunciado suporte. De qualquer forma, o fato dos algorítimos de busca interpretarem qualquer coisa como texto (mesmo que sejam tags), já indica que os microformatos por si só são &#8220;alimentadores de relevância&#8221; por natureza.</p>
<p>Um exemplo que pode ser visto é este:  quando realizamos uma <a title="busca" href="http://www.google.com/search?q=Drooling+Dog+BarBQ" target="_blank">esta busca</a> no Google, um dos resultados apresentados (o terceiro, logo abaixo do título) já possui quantidade total de reviews a respeito do estabelecimento procurado.  Isto é possível graças ao <a href="http://microformats.org/wiki/hreview" target="_blank">hReview</a> que, como o proprio nome sugere, serve para destacar uma opinião sobre um produto, serviço ou quaquer outra coisa.</p>
<p><strong>Humanamente &#8220;entendível&#8221;</strong></p>
<p>Ao contrário de outros formatos de proposta similar, os microformats tem como conceito ser primeiro compreensível por seres humanos e somente depois por máquinas.  A sintaxe é muito mais intuitiva, mais simples de compreender e memorizar. Acredito que essa é de longe sua principal vantagem sobre o <a title="RDFa" href="http://www.w3.org/TR/xhtml-rdfa-primer/" target="_blank">RDFa</a>, por exemplo, que não só é um código mais complexo como ainda por cima possui uma série de padrões diferenciados. Outra vantagem sobre <a title="RDFa" href="http://www.w3.org/TR/xhtml-rdfa-primer/" target="_blank">RDFa</a> é que os microformatos permitem ao desenvolvedor a escrever BEM menos código, mantendo uma sintaxe simples, limpa e totalmente intelígivel para qualquer outra pessoa que mexa no código depois &#8211; mesmo que não familiarizada com estas definições (no futuro pretendemos entrar novamente no assunto <a title="RDFa" href="http://www.w3.org/TR/xhtml-rdfa-primer/" target="_blank">RDFa</a> x microformatos, agora não é o momento).</p>
<p><strong>Aplicável ao HTML 5, XHTML 2</strong></p>
<p>As próximas versões de HTML e XHTML tem, entre outras propostas, aplicar para a web do futuro o conceito de <a title="Web Semântica" href="http://en.wikipedia.org/wiki/Semantic_Web" target="_blank">Web Semântica</a> (aquela história de que toda informação deve ser um &#8216;pacote completo&#8217; de dados e referências, manja?), o que vai suprir parte da necessidades propostas pelos Microformats. Embora muita gente já esteja usando estas definições, a web ainda não está pronta para lidar com eles &#8211; Por que não usar os microformatos, que não impactarão em absolutamente nada na codificação e já são aceitos e usados? Ele não conflitará em absolutamente nada com HTML 5 ou XHTML 2 e, de lambuja, ainda ajudará os buscadores a indexar e classificar seu site de forma bastante precisa.</p>
<p><strong>Problemas com microformats</strong></p>
<p>Em 2008 a <a title="BBC" href="http://www.bbc.co.uk/" target="_blank">BBC</a> renunciou ao uso dos microformatos por conta do formato <a title="hCalendar" href="http://microformats.org/wiki/hcalendar" target="_blank">hCalendar</a>. Este formato cria um problema de acessibilidade por usar a tag <a title="abbr" href="http://www.w3schools.com/TAGS/tag_abbr.asp" target="_blank">abbr</a> como marcador e não como uma abreviação propriamente, o que confunde boa parte dos screen readers. Num contexto normal, ela seria usada assim:</p>
<pre>&lt;abbr title="Organização Mundial de Saúde"&gt;O.M.S&lt;/abbr&gt;</pre>
<p>Um screen reader habilitado para ler siglas por extenso leria este trecho como &#8220;Organização Mundial de Saúde&#8221;.</p>
<p>No caso do <a title="hCalendar" href="http://microformats.org/wiki/hcalendar" target="_blank">hCalendar</a>, a tag é usada da seguinte forma:</p>
<pre>&lt;abbr title="20070312T1700-06"&gt;March 12, 2007 at 5 PM&lt;/abbr&gt;</pre>
<p>O screen reader não leria como data,  mas sim  &#8220;Vinte milhões, sete mil e trezentos e 12 TÊ mil e setecentos traço zero seis&#8221;.  Já existe um fix para isso sugerido pela própria Microformats.org (que são os pais da criança), <a title="usar span no lugar de abbr" href="http://microformats.org/wiki/abbr-design-pattern#Accessibility_issues" target="_blank">usar span no lugar de abbr</a>.</p>
<p>Até onde testamos e pesquisamos este foi a única problema registrado. Usamos o <a title="FANGs" href="https://addons.mozilla.org/pt-BR/firefox/addon/402" target="_blank">FANGs</a> para emular a acessibilidade para deficientes visuais.</p>
<p><strong>Mas é só isso?</strong></p>
<p>Por enquanto sim. O assunto é extenso demais para ser tratado num único post &#8211; num futuro não muito distante voltaremos a ele e nos aprofundaremos em pontos mais específicos. Enquanto isso não ocorre, a lista abaixo fornece uma bela gama de coisas para brincar. Divirta-se!</p>
<p><strong>Microformatos &#8211; Referências</strong></p>
<p><a title="http://microformats.org" href="http://microformats.org" target="_blank">http://microformats.org</a> &#8211; site oficial do projeto. Todas referências, exemplos, geradores automáticos, wiki e lista de discussão estão lá.</p>
<p><a title="http://en.wikipedia.org/wiki/Microformat" href="http://en.wikipedia.org/wiki/Microformat" target="_blank">http://en.wikipedia.org/wiki/Microformat</a> &#8211; tópico na wikipédia, a informação técnica resumida.</p>
<p><a title="https://addons.mozilla.org/pt-BR/firefox/addon/4106" href="https://addons.mozilla.org/pt-BR/firefox/addon/4106" target="_blank">https://addons.mozilla.org/pt-BR/firefox/addon/4106</a> &#8211; Operator, ADD-on do firefox que detecta e importa dados de microformatos. Tem alguns problemas ainda, mas já dá uma bela visão de usos.</p>
<p><a title="https://addons.mozilla.org/pt-BR/firefox/addon/402" href="https://addons.mozilla.org/pt-BR/firefox/addon/402" target="_blank">https://addons.mozilla.org/pt-BR/firefox/addon/402</a> &#8211; FANGS: um emulador de screen reader. Infelizmente, após a atualização do Firefox para a versão 3.5 ele perde a compatibilidade. Espero que resolvam logo este problema, estava usando-o para uma pesquisa de acessibilidade.</p>
<p><a title="http://www.semanticfocus.com/blog/entry/title/microformats-vs-rdf-how-microformats-relate-to-the-semantic-web/" href="http://www.semanticfocus.com/blog/entry/title/microformats-vs-rdf-how-microformats-relate-to-the-semantic-web/" target="_blank">http://www.semanticfocus.com/blog/entry/title/microformats-vs-rdf-how-microformats-relate-to-the-semantic-web/</a> &#8211; Artigo que aprofunda-se um pouco na discussão a respeito do formato <a title="RDFa" href="http://www.w3.org/TR/xhtml-rdfa-primer/" target="_blank">RDFa</a> vs Microformats.</p>
<p><a title="http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html" href="http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html" target="_blank">http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html</a> &#8211; mostra a implementação feita pelo google para o formato hReview</p>
<p><a title="http://www.google.com/search?q=Drooling+Dog+BarBQ" href="http://www.google.com/search?q=Drooling+Dog+BarBQ" target="_blank">http://www.google.com/search?q=Drooling+Dog+BarBQ</a> &#8211; Link para a busca com o resultado do google.</p>
]]></content:encoded>
			<wfw:commentRss>http://afronteirafinal.com/microformats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

