<?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>Rogério Lino &#187; Javascript</title>
	<atom:link href="http://rogeriolino.com/categorias/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://rogeriolino.com</link>
	<description>Desenvolvimento Web, tecnologia, jogos e etcetera</description>
	<lastBuildDate>Wed, 01 Feb 2012 19:22:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Quickpost: Instant documentation search</title>
		<link>http://rogeriolino.com/2011/12/07/quickpost-instant-documentation-search/</link>
		<comments>http://rogeriolino.com/2011/12/07/quickpost-instant-documentation-search/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 14:47:27 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Quickpost]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[dochub]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[instant]]></category>
		<category><![CDATA[mdn]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[quickpost]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=397</guid>
		<description><![CDATA[<p><a href="http://dochub.io/"></a></p> <p><a title="dochub" href="http://dochub.io/">dochub</a> concentra de maneira fácil e rápida as documentações de CSS, HTML, Javascript e DOM. No qual tem o seu conteúdo retirado da <a title="MDN" href="https://developer.mozilla.org/en-US/">Mozilla Developer Network</a>.</p> <p>Excelente ferramente para tirar aquela dúvida ou refrescar a memória.</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://dochub.io/"><img class="size-full wp-image-407" title="dochub" src="http://rogeriolino.com/wp-content/uploads/2011/12/dochub.png" alt="" width="840" height="450" /></a></p>
<p><a title="dochub" href="http://dochub.io/">dochub</a> concentra de maneira fácil e rápida as documentações de CSS, HTML, Javascript e DOM. No qual tem o seu conteúdo retirado da <a title="MDN" href="https://developer.mozilla.org/en-US/">Mozilla Developer Network</a>.</p>
<p>Excelente ferramente para tirar aquela dúvida ou refrescar a memória.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2011/12/07/quickpost-instant-documentation-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quickpost: Javascript Resource Loader</title>
		<link>http://rogeriolino.com/2011/12/05/quickpost-javascript-resource-loader/</link>
		<comments>http://rogeriolino.com/2011/12/05/quickpost-javascript-resource-loader/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 19:55:32 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Quickpost]]></category>
		<category><![CDATA[loader]]></category>
		<category><![CDATA[modernizr]]></category>
		<category><![CDATA[quickpost]]></category>
		<category><![CDATA[resource]]></category>
		<category><![CDATA[yepnope]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=390</guid>
		<description><![CDATA[<p><a href="http://yepnopejs.com/" title="yepnope.js">yepnope</a> is an asynchronous conditional resource loader that&#8217;s super-fast, and allows you to load only the scripts that your users need.</p> <p>Good Things</p> yepnope.js is only 1.6kb &#8211; smaller than most and certainly a good size for its functionality set. yepnope.js is called a &#8220;resource loader&#8221; because it can work with both JavaScript [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://yepnopejs.com/" title="yepnope.js">yepnope</a> is an asynchronous conditional resource loader that&#8217;s super-fast, and allows you to load only the scripts that your users need.</p>
<p><strong>Good Things</strong></p>
<ul>
<li>yepnope.js is only 1.6kb &#8211; smaller than most and certainly a good size for its functionality set.</li>
<li>yepnope.js is called a &#8220;resource loader&#8221; because it can work with both JavaScript and CSS.</li>
<li>yepnope.js has a full test suite in QUnit that you can run in your set of supported browsers to make sure it works. (We run it via TestSwarm in every browser we can get our hands on)</li>
<li>yepnope.js fully decouples preloading from execution. This means that you have ultimate control of when your resource is executed and you can change that order on the fly.</li>
<li>The yepnope.js api is friendly and encourages logical grouping of resources.</li>
<li>yepnope.js is modular. It has a whole system for adding your own functionality and a couple examples of how you might do that. (Prefixes and filters).</li>
<li>The yepnope.js api encourages you to only load the resources that you need. This means that even when it&#8217;s slower than another script loader, it still can come out on top, because you could avoid an entire resource.</li>
<li>yepnope.js is integrated into <a href="http://www.modernizr.com/" title="Modernizr">Modernizr</a>.</li>
<li>yepnope.js always executes things in the order they are listed. This is a pro for some, and a con for others. We think it&#8217;s a friendly default.</li>
<li>yepnope.js has the capability to do resource fallbacks and still download dependent scripts in parallel with the first.</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2011/12/05/quickpost-javascript-resource-loader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript Game Engine for HTML5 Canvas</title>
		<link>http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/</link>
		<comments>http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/#comments</comments>
		<pubDate>Thu, 06 May 2010 19:04:35 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[scenegraph]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=292</guid>
		<description><![CDATA[<p>Comecei escrever um pequeno projeto para facilitar a criação de jogos em Javascript utilizando HTML5 Canvas para isso. Baseado em <a href="http://en.wikipedia.org/wiki/Scene_graph">scenegraph</a> podendo criar nós dependentes, relativos ao nó pai. Por enquanto a estrutura da engine é composta por:</p> <p> Canvas: para encapsular a tag canvas, pegando automaticamente o context e fornecendo algumas funções a [...]]]></description>
			<content:encoded><![CDATA[<p>Comecei escrever um pequeno projeto para facilitar a criação de jogos em Javascript utilizando HTML5 Canvas para isso. Baseado em <a href="http://en.wikipedia.org/wiki/Scene_graph">scenegraph</a> podendo criar nós dependentes, relativos ao nó pai. Por enquanto a estrutura da engine é composta por:</p>
<blockquote><p>
<strong>Canvas:</strong> para encapsular a tag canvas, pegando automaticamente o context e fornecendo algumas funções a mais.</p>
<p><strong>Game:</strong> o jogo em sí, possui uma ou muitas cenas (Scene). Contém o loop principal para atualizações do canvas. Necessita de uma instância do Canvas.</p>
<p><strong>Scene:</strong> deve ser estendida para criar cenas customizadas, deve implementar o método update(interval).</p>
<p><strong>CanvasNode:</strong> um nó do grafo, possui as coordenadas e ângulo de rotação do elemento no canvas.</p>
<p><strong>CanvasNodeGroup:</strong> um grupo de nós. Estende CanvasNode.</p>
<p><strong>Graphics:</strong> um nó &#8220;printável&#8221;, quem for estendê-lo deve implementar o método draw(). Possui como subclasses: Rectangle, Triangle, Circle, Text, Image2d e Line.</p>
<p><strong>GraphicsGroup:</strong> estende CanvasNodeGroup, possui um grupo de graphics. Scene é um GraphicsGroup.</p>
</blockquote>
<p>Os próximos passos serão a implementação de TileMap, Scene Intro, Menu e botões. Agora é só aguardar até o próximo exemplo.</p>
<p><strong>[update 2010-05-06]</strong><br />
Added mouse and button support.<br />
See example above.<br />
<strong>[/update]</strong></p>
<p><strong>[update 2010-05-06]</strong><br />
Examples in <a href="http://mangame.rogeriolino.com/">http://mangame.rogeriolino.com/</a><br />
<strong>[/update]</strong></p>
<p><strong>[update 2011-11-11]</strong><br />
Source now available in <a href="https://github.com/rogeriolino/mangame" title="Mangame in Github">GitHub</a>!<br />
<strong>[/update]</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/05/06/javascript-game-engine-for-html5-canvas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flash: SWFAddress + ReWrite = SEO</title>
		<link>http://rogeriolino.com/2010/04/01/flash-swfaddress-rewrite-seo/</link>
		<comments>http://rogeriolino.com/2010/04/01/flash-swfaddress-rewrite-seo/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 14:44:53 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[ancora]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[asual]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[opensouce]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[swfaddress]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=262</guid>
		<description><![CDATA[<p><a href="http://www.asual.com/swfaddress"></a></p> <p><a href="http://www.asual.com/swfaddress">SWFAddress</a> é uma pequena mas poderosa biblioteca que provê <a href="http://en.wikipedia.org/wiki/Deep_linking">deep linking</a> para Flash e Ajax. É uma ferramenta de desenvolvimento, permitindo a criação de URLs unicas e virtuais que podem apontar para uma seção do site ou aplicação. SWFAddress habilita algumas de importantes capacidades que faltam hoje em dia nas tecnologias [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.asual.com/swfaddress"><img class="aligncenter size-full wp-image-263" title="Asual SWFAddress" src="http://rogeriolino.com/wp-content/uploads/2010/03/asual-swfaddress.jpg" alt="" width="451" height="39" /></a></p>
<blockquote><p><a href="http://www.asual.com/swfaddress">SWFAddress</a> é uma pequena mas poderosa biblioteca que provê <a href="http://en.wikipedia.org/wiki/Deep_linking">deep linking</a> para Flash e Ajax. É uma ferramenta de desenvolvimento, permitindo a criação de URLs unicas e virtuais que podem apontar para uma seção do site ou aplicação. SWFAddress habilita algumas de importantes capacidades que faltam hoje em dia nas tecnologias <a href="http://pt.wikipedia.org/wiki/RIA">RIA</a>, incluindo:</p>
<ul>
<li>Adicionar ao Favoritos de um navegador ou site social</li>
<li>Enviar links via email ou mensageiros instantâneos</li>
<li>Procurar por um conteúdo específico através dos sites de buscas</li>
<li>Utilizar o histórico do navegador e o botão de recarregar</li>
</ul>
</blockquote>
<p>O <a href="http://www.adobe.com/br/products/flash/">Flash</a> está para o <a href="http://en.wikipedia.org/wiki/Search_engine_optimization">SEO</a> assim como o <a href="http://cinemaeafins.com/files/2008/11/batmancoringa.jpg">Coringa está para o Batman</a>. Mas nem tudo está perdido quando se trata de otimizar a indexação do site em SWF nos mecanismos de busca. Com SWFAddress você pode interagir com a página via javascript alterando a URL e o próprio conteúdo do filme, possibilidade do o uso dos botões voltar e avançar do browser, adicionar ao Favoritos e alterar a animação do seu filme de acordo com a URL que está sendo requisitada.</p>
<p>Caso sua página seja acessada através da URL <strong>http://siteemflash.com/#contato</strong>, você poderá pular na timeline indo direto para o frame do contato. Para evitar o reload da página toda interação é feita através de âncoras html (#). E as alterações da URL utilizando âncoras são desprezadas pelos buscadores, uma vez que a âncora só serve para movimentar o foco na mesma página, logo o seu conteúdo permanece inalterado.</p>
<p>É aí que entra o <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">módulo ReWrite do Apache</a>, com o mod_rewrite podemos escrever condições para tratar as requisições, redirecionando-as ou não. Então voltando ao exemplo anterior, teríamos uma condição que quando for requisitada a página <strong>http://siteemflash.com/contato</strong> (ou qualquer outra URL) redireciona para a página inicial (index) adicionando a âncora para contato (#contato) e imprime na página o conteúdo referente à mesma. Esse conteúdo impresso não será visível, apenas para indexação. O <a href="http://pt.wikipedia.org/wiki/Sitemap">sitemap</a> ou a estrutura básica do site, também deve estar contido no bloco de código html invisível, juntamente com todas outras informações relevantes.</p>
<p>Resumindo, você acaba tendo um trabalho dobrado ao desenvolver o site, mas evita transtornos de indexação. É muito útil para quem não abre mão do site feito com o uso da ferramenta da Adobe.</p>
<p>No próprio site da Asual tem um <a href="http://www.asual.com/swfaddress/samples/seo/">exemplo de uso do SWFAddress para SEO</a> (o exemplo pode ser baixado pelo site). Abaixo segue alguns sites que fizeram uso da biblioteca, no qual o primeiro eu participei do desenvolvimento:</p>
<ul>
<li><a href="http://www.oticasparis.com.br/">Óticas Paris</a></li>
<li><a href="http://www.salinas-rio.com.br/inverno2010/">Salinas Rio -inverno2010</a></li>
<li><a href="http://www.umbro.com/">Umbro</a></li>
<li><a href="http://www.mis-architecture.co.uk/">Mis Architecture</a></li>
<li><a href="http://www.kraftfoods.com/foodandfamily">Kraftfoods &#8211; Food and Family</a></li>
<li><a href="http://www.bartleboglehegarty.com/">BBH</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/04/01/flash-swfaddress-rewrite-seo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SGA Livre</title>
		<link>http://rogeriolino.com/2010/03/18/sga-livre/</link>
		<comments>http://rogeriolino.com/2010/03/18/sga-livre/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 12:51:13 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programas]]></category>
		<category><![CDATA[dataprev]]></category>
		<category><![CDATA[libjsx]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[publico]]></category>
		<category><![CDATA[sga]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=236</guid>
		<description><![CDATA[<p></p> <p>SGA LIVRE significa Sistema de Gerenciamento do Atendimento, versão Livre. É desenvolvido pela DATAPREV, totalmente baseado em tecnologias de software livre e de código aberto.</p> <p>Através do SGA é possível gerenciar filas e fluxo de atendimento em quaisquer tipos de empresas ou organizações que prestam serviço de atendimento presencial à pessoas.</p> <p>O SGA oferece [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-239" title="SGA" src="http://rogeriolino.com/wp-content/uploads/2010/03/sga_logo.jpg" alt="" width="382" height="229" /></p>
<blockquote><p><strong>SGA LIVRE</strong> significa Sistema de Gerenciamento do Atendimento, versão Livre. É desenvolvido pela DATAPREV, totalmente baseado em tecnologias de software livre e de código aberto.</p>
<p>Através do SGA é possível gerenciar filas e fluxo de atendimento em quaisquer tipos de empresas ou organizações que prestam serviço de atendimento presencial à pessoas.</p>
<p>O SGA oferece o controle de filas de atendimento através de emissão de senhas e chamada das mesmas através de painéis. As filas de atendimento podem conter um único serviço ou um grupo de serviços. Os painéis podem chamar um, vários ou todos os serviços. Uma unidade de atendimento pode ter vários painéis.</p>
<p>O SGA é mais do que um sistema de controle de filas. Ao gerenciar o fluxo de atendimento, o sistema apresenta uma série de recursos que auxiliam na gerência e administração das unidades de atendimento.</p>
<p>Fornece uma diversidade de informações gerenciais preciosas, através de relatórios, estatísticas e gráficos avançados sobre atendimentos de uma unidade, de um grupo de unidades ou de todas elas. É possível obter estatísticas e tempos médios de atendimento por atendente, por período e por unidade, entre outras. Pode-se obter dados detalhados ou agregados.</p>
<p>As informações gerenciais fornecidas pelo SGA possibilitam aos gestores planejar, acompanhar, monitorar, otimizar e agilizar o atendimento aos clientes.</p>
<p>fonte: <a href="http://www.softwarepublico.gov.br/ver-comunidade?community_id=15719494">http://www.softwarepublico.gov.br/ver-comunidade?community_id=15719494</a></p></blockquote>
<p>Não é novidade o lançamento da versão livre do SGA, porém é com muito orgulho que hoje vejo este software ganhando força no cenário nacional, e também por ter participado do seu desenvolvimento. O software foi desenvolvido em <a href="http://php.net">PHP</a> fornecendo uma camada para abstração do <a href="http://en.wikipedia.org/wiki/Relational_database_management_system">RDMS</a>, utilizando como interface de acesso o <a href="http://php.net/manual/en/book.pdo.php">PDO</a> (suporte padrão ao <a href="http://www.postgresql.org">PostgreSQL</a>). Tal contribuição foi desde definir a estrutura do sistema, passando por diagramação, HTML, CSS, até a programação PHP e Javascript.</p>
<div id="attachment_238" class="wp-caption aligncenter" style="width: 304px"><a href="http://rogeriolino.com/wp-content/uploads/2010/03/sga_instalacao.jpg"><img class="size-medium wp-image-238" title="SGA: Instalação" src="http://rogeriolino.com/wp-content/uploads/2010/03/sga_instalacao-294x300.jpg" alt="" width="294" height="300" /></a><p class="wp-caption-text">Tela de instalação do SGA</p></div>
<p>Dividido em módulos é fácil customizar a ferramenta para atender as  necessidades específicas de qualquer centro de atendimento. Para facilitar o uso de requisições assíncronas no sistema foi  utilizada o código <a href="http://pt.wikipedia.org/wiki/AJAX_(programação)">Ajax</a> da lib escrita por mim e já comentada nesse blog (<a href="http://rogeriolino.com/2009/03/11/javascript-libjsx/">libjsx</a>, <a href="http://code.google.com/p/libjsx/source/browse/trunk/org/libjsx/ajax/Ajax.js">Ajax.js</a>).</p>
<p><a href="http://rogeriolino.com/wp-content/uploads/2010/03/sga_atendimento.jpg"></a></p>
<div id="attachment_237" class="wp-caption aligncenter" style="width: 310px"><a href="http://rogeriolino.com/wp-content/uploads/2010/03/sga_atendimento.jpg"><img class="size-medium wp-image-237" title="SGA: Atendimento" src="http://rogeriolino.com/wp-content/uploads/2010/03/sga_atendimento-300x239.jpg" alt="" width="300" height="239" /></a><p class="wp-caption-text">Tela de atendimento do SGA</p></div>
<p>Quem quiser utilizar ou contribuir com o projeto basta se cadastrar no site <a title="Portal do Software Público Brasileiro" href="http://www.softwarepublico.gov.br/">http://www.softwarepublico.gov.br/</a> e acessar a página da <a href="http://www.softwarepublico.gov.br/ver-comunidade?community_id=15719494">comunidade</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/03/18/sga-livre/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5: Database</title>
		<link>http://rogeriolino.com/2010/03/11/html5-database/</link>
		<comments>http://rogeriolino.com/2010/03/11/html5-database/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 19:17:36 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=207</guid>
		<description><![CDATA[<p>Uma das funcionalidades mais robustas presentes nessa nova versão do HTML é exatamente o suporte ao armazenamento local, sem ser por <a href="http://pt.wikipedia.org/wiki/Cookie">Cookie</a> mas sim pelo banco de dados presente no browser. Tal funcionalidade já está presente no <a href="http://webkit.org">Webkit</a> que fornece uma aplicação de exemplo: <a href="http://webkit.org/demos/sticky-notes/">http://webkit.org/demos/sticky-notes/</a>.</p> <p>No Webkit as informações são armazenadas utilizando [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das funcionalidades mais robustas presentes nessa nova versão do HTML é exatamente o suporte ao armazenamento local, sem ser por <a href="http://pt.wikipedia.org/wiki/Cookie">Cookie</a> mas sim pelo banco de dados presente no browser. Tal funcionalidade já está presente no <a href="http://webkit.org">Webkit</a> que fornece uma aplicação de exemplo: <a href="http://webkit.org/demos/sticky-notes/">http://webkit.org/demos/sticky-notes/</a>.</p>
<p>No Webkit as informações são armazenadas utilizando <a href="http://www.sqlite.org/">SQLite</a>, e acredito que o Firefox irá pelo mesmo caminho, já que ele também utiliza o SQLite para armazenar os &#8220;Favoritos&#8221;.</p>
<p>Para abrir a conexão com a banco de dados (<strong>openDatabase</strong>) deve-se informar o nome do banco (<em>database name</em>), a versão (<em>database version</em>), o nome de exibição (<em>display name</em>) e o tamanho estimado em bytes (<em>estimated size</em>) que será armazenado.</p>
<pre name="code" class="javascript">
var db;
try {
    if (window.openDatabase) {
        db = openDatabase("MyDB", "1.0", "HTML5 Database Example", 200000);
        if (!db) {
            alert("Failed to open the database.");
        }
    } else {
        alert("Couldn't open the database.");
    }
} catch(err) { }
</pre>
<p>Uma vez estabelecida a conexão a interação passa ser efetuada através de comandos <a href="http://pt.wikipedia.org/wiki/SQL">SQL</a>.</p>
<pre name="code" class="javascript">
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE myTable (id REAL UNIQUE, name TEXT, description TEXT, timestamp REAL");
});

db.transaction(function (tx) {
tx.executeSql("INSERT INTO myTable (id, name, description, timestamp) VALUES (?, ?, ?, ?)", [id, name, description, timestamp]);
});

db.transaction(function(tx) {
tx.executeSql("DELETE FROM myTable WHERE id = ?", [id]);
});

db.transaction(function(tx) {
    tx.executeSql(
        "SELECT * FROM myTable WHERE id = ?",
         [id],
         function(tx, result) {
             // success
             if (result.rows.length > 0) {
                   alert("My name is: " + result.rows.item(0)['name']);
             } else {
                  alert("Sorry, no result for this id");
              }
         },
         function(tx, error) {
             // error
             alert("Error when try retrieve data: " + error.message);
         }
    );
});
</pre>
<p>O método <strong>executeSql</strong> pode receber 4 parâmetros, sendo eles:</p>
<ul>
<li>O SQL a ser executado</li>
<li>Os valores parametrizados para serem utilizados na consulta (array)</li>
<li>Função callback para ser executada caso haja sucesso (onSuccess)</li>
<li>Função callback para ser executada caso haja falha (onError)</li>
</ul>
<p>Sinceramente eu achei muito legal conceder mais esse poder ao Javascript no HTML5, porém <em>&#8220;com grandes poderes vêm grandes responsabilidades&#8221;</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/03/11/html5-database/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>HTML5: Video Player</title>
		<link>http://rogeriolino.com/2010/02/19/html5-video-player/</link>
		<comments>http://rogeriolino.com/2010/02/19/html5-video-player/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 17:23:46 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[dailymotion]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[h.264]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[theora]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[vimeo]]></category>
		<category><![CDATA[vorbis]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://rogeriolino.com/?p=183</guid>
		<description><![CDATA[<p>Para todos aqueles que odeiam o <a href="http://get.adobe.com/flashplayer">flash player</a> e adoram assistir vídeos pela Internet, alguns portais de vídeos possuem uma alternativa ao plugin da Adobe para que os usuários possam assistir seus vídeos sem precisar de um plugin externo que pode deixar o browser mais lento e ocasionar travamentos. Isso se dá com a [...]]]></description>
			<content:encoded><![CDATA[<p>Para todos aqueles que odeiam o <a href="http://get.adobe.com/flashplayer">flash player</a> e adoram assistir vídeos pela Internet, alguns portais de vídeos possuem uma alternativa ao plugin da Adobe para que os usuários possam assistir seus vídeos sem precisar de um plugin externo que pode deixar o browser mais lento e ocasionar travamentos. Isso se dá com a utilização da <a href="http://www.w3schools.com/html5/html5_reference.asp">tag video do HTML5</a> que por sua vez varia dependendo da implementação de cada navegador.</p>
<p>No <a href="http://www.youtube.com/html5">Youtube por exemplo há uma página para sua versão experimental</a>. Ao acessar esta página destinada a habilitar o player em HTML5, eis que surgem algumas considerações e uma lista de browsers que o suportam:</p>
<ul>
<li><a href="http://www.google.com/chrome">Google Chrome</a></li>
<li><a href="http://www.apple.com/safari/download/">Apple Safari</a> (versão 4+)</li>
<li>Internet Explorer com o Google Chrome Frame</li>
</ul>
<p>Não incluindo o <a href="http://www.getfirefox.com/">Firefox</a>, um dos browsers mais utilizados no mundo e que suporta o HTML5. Mas para isso há uma explicação: O padrão de compressão adotado pelo Youtube é o <a href="http://pt.wikipedia.org/wiki/H.264">H.264</a> que não é suportado pelo Firefox devido ao fato deste formato ser proprietário e o pessoal da Mozilla utilizar <a href="http://en.wikipedia.org/wiki/Theora">Ogg Theora</a> como padrão. Motivo que <em>sem querer querendo</em> acaba ajudando o browser do Google, curiosamente, mesmo dono do Youtube.</p>
<p>Outros pontos ruins nessa versão do Youtube são a nítida perda de qualidade entre os players em Flash e em HTML5, e o fato de não suportar fullscreen (limitação do HTML5 e não do player). Além do Youtube o <a href="http://vimeo.com/blog:268">Vimeo</a> também possui uma versão em HTML5, seguindo as mesmas restrições do Youtube, porém, com uma perda de qualidade menor. Já o <a href="http://blog.dailymotion.com/2009/05/27/watch-videowithout-flash/">Dailymotion</a> utiliza os formatos Ogg, Theora + Vorbis, funcionando em todos os navegadores decentes e com algumas travadas irritantes.</p>
<p>Mas nem tudo está perdido para os players feitos em HTML5, um grupo de desenvolvedores e designers denominado <a title="Jilion" href="http://jilion.com/">Jilion</a> desenvolveu um excelente player (bonito e funcional) chamado <a title="SublimeVideo" href="http://jilion.com/sublime/video">SublimeVideo</a>. Suportando todos os browsers listados na página do Youtube/Vimeo incluindo o Firefox.</p>
<div id="attachment_184" class="wp-caption aligncenter" style="width: 614px"><a href="http://rogeriolino.com/wp-content/uploads/2010/02/sublimevideo.jpg"><img class="size-full wp-image-184 " title="SublimeVideo" src="http://rogeriolino.com/wp-content/uploads/2010/02/sublimevideo.jpg" alt="SublimeVideo" width="604" height="260" /></a><p class="wp-caption-text">SublimeVideo - HTML5 Video Player</p></div>
<p>Mais sobre <a href="http://shaver.off.net/diary/2010/01/23/html5-video-and-codecs/">HTML5 video e codecs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/02/19/html5-video-player/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Javascript: Games</title>
		<link>http://rogeriolino.com/2010/02/02/javascript-games/</link>
		<comments>http://rogeriolino.com/2010/02/02/javascript-games/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 14:03:47 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[akihabara]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[applet]]></category>
		<category><![CDATA[battleship]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[capman]]></category>
		<category><![CDATA[effectgames]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[flashplayer]]></category>
		<category><![CDATA[gamequery]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mario kart]]></category>
		<category><![CDATA[solitaire]]></category>
		<category><![CDATA[tetris]]></category>

		<guid isPermaLink="false">http://blog.rogeriolino.com/?p=158</guid>
		<description><![CDATA[<p>Conforme a evolução dos browsers e consequentemente das suas engines de javascript, hoje é possível encontrarmos diversas API/Engines dessa linguagem de script. E um tipo de engine que vem crescendo nessa linguagem é a de jogos.</p> <p>O que antes precisariámos de um plugin adicional &#8211; <a title="Flash Player" href="http://get.adobe.com/br/flashplayer/">Flash Player</a> e/ou <a title="Java Applet" href="http://java.sun.com/applets/">Java [...]]]></description>
			<content:encoded><![CDATA[<p>Conforme a evolução dos browsers e consequentemente das suas engines de javascript, hoje é possível encontrarmos diversas API/Engines dessa linguagem de script. E um tipo de engine que vem crescendo nessa linguagem é a de jogos.</p>
<p>O que antes precisariámos de um plugin adicional &#8211; <a title="Flash Player" href="http://get.adobe.com/br/flashplayer/">Flash Player</a> e/ou <a title="Java Applet" href="http://java.sun.com/applets/">Java Applet</a> &#8211; consumindo mais memória e processamento, podemos agora nos divertir com jogos rodando nativamente no browser.</p>
<p>É possível encontrar na web jogos desde os simples e clássicos <strong>Paciência</strong> (Solitaire), <strong>Tetris</strong>, <strong>Resta Um</strong> (Peg), passando por clássicos não tão simples como <strong>Mario Kart</strong>, até jogos mais complexos como <strong>Shadow of Time 4</strong> e <strong>Crystal Galaxy</strong>.</p>
<h2>Segue abaixo alguns jogos:</h2>
<ul>
<li><a title="Solitaire" href="http://www.freejavascriptgames.info/games/solitaire/solitaire1.0.html">Solitaire</a></li>
<li><a title="Tetris" href="http://www.freejavascriptgames.info/games/jsTetris/tetris1.html">Tetris</a></li>
<li><a title="Peg (Resta Um)" href="http://www.freejavascriptgames.info/games/peg/peg.html">Peg</a></li>
<li><a title="Battleship (Batalha Naval)" href="http://www.tammyyee.com/keiki_page/javascript_games/battle/battleship.html">Battleship</a></li>
<li><a title="Panic Run" href="http://www.def-logic.com/panic/panic.html">Panic Run</a></li>
<li><a title="Bubble Trouble" href="http://xwuz.com/bubble/">Bubble Trouble</a></li>
<li><a title="Super Mario Kart" href="http://www.nihilogic.dk/labs/mariokart/">Super Mario Kart</a></li>
<li><a title="Pudracer" href="http://www.xs4all.nl/~peterned/games.html#pudracer">Pudracer</a></li>
<li><a title="Bunny Hunt" href="http://www.themaninblue.com/experiment/BunnyHunt/">Bunny Hunt</a></li>
<li><a title="Shadow of Time 4" href="http://sot4.aerosphere-studios.com/">Shadow of Time 4</a></li>
<li><a title="Crystal Galaxy" href="http://www.effectgames.com/effect/games/crystalgalaxy/">Crystal Galaxy</a></li>
<li><a title="Capman" href="http://www.kesiev.com/akihabara/demo/game-capman.html">Capman</a></li>
</ul>
<h2>Javascript Game Engines:</h2>
<p><a title="gameQuery" href="http://gamequery.onaluf.org/">gameQuery</a>: é um plugin do famoso jQuery, que fornece animação de sprites multi camadas, hierarquia de sprite (agrupamentos), detecção de colisões, dentre outras funcionalidades. Para visualizar alguns demos de jogos desenvolvidos por essa engine é só <a title="gameQuery: Demos" href="http://gamequery.onaluf.org/demos.php">clicar aqui</a>.</p>
<p><a title="GameJS" href="http://tommysmind.com/gamejs/">GameJS</a>: inspirado nos códigos javascript da <a title="ExtJS - JavaScript Library and RIA Framework" href="http://www.extjs.com/">ExtJS</a> e com a ideia de portar a facilidade de criar jogos da XNA <a href="http://www.xna.com/">Game Framework da Microsoft</a>. No site do projeto possui um jogo demo chamado <a href="http://www.tommysmind.com/jetris/">Jetris</a>.</p>
<p><a title="EffectGames.com" href="http://www.effectgames.com/effect/">EffectGames</a>: consiste na verdade em um site que provê ferramentas online e gratuitas para desenvolvimento, hospedagem e compartilhamento de jogos. Há uma wiki contendo o passo-a-passo de como utilizar as ferramentas através do <a title="Getting Started Guide" href="http://www.effectgames.com/effect/#Article/docs/Getting_Started_Guide">Getting Started Guide</a>. E também há a <a title="API Reference Guide" href="http://www.effectgames.com/effect/#Article/docs/API_Reference_Guide|1">documentação da API fornecida</a> pelo site. Na própria página principal você irá encontrar os demos.</p>
<p><a title="The Render Engine" href="http://www.renderengine.com/index.php">Render Engine</a>: engine cross-browser, opensource, tem como principal característica facilidade de uso. Veja seus <a title="Render Engine - Demos" href="http://www.renderengine.com/demos.php">demos aqui</a>.</p>
<p><a title="Akihabara Home Page" href="http://www.kesiev.com/akihabara/">Akihabara</a>: engine para jogos arcade, estilo 8-bit. Na mesma página da engine se encontram os demos.</p>
<h2>Mais sobre jogos em javascript:</h2>
<p><a title="def-logic" href="http://www.def-logic.com/">http://www.def-logic.com/</a></p>
<p><a title="Javascript Gaming" href="http://www.javascriptgaming.com/">http://www.javascriptgaming.com/</a></p>
<p><a title="Webresources" href="http://www.webresourcesdepot.com/25-amazing-javascript-games-some-fun-and-inspiration/">http://www.webresourcesdepot.com/25-amazing-javascript-games-some-fun-and-inspiration/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2010/02/02/javascript-games/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Javascript: libjsx</title>
		<link>http://rogeriolino.com/2009/03/11/javascript-libjsx/</link>
		<comments>http://rogeriolino.com/2009/03/11/javascript-libjsx/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 14:38:15 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[biblioteca]]></category>
		<category><![CDATA[googlecode]]></category>
		<category><![CDATA[libjsx]]></category>
		<category><![CDATA[library]]></category>

		<guid isPermaLink="false">http://blog.rogeriolino.com/?p=136</guid>
		<description><![CDATA[<p><a title="libjsx - Google Code" href="http://code.google.com/p/libjsx"></a></p> <p>Há algum tempo eu reuni alguns exemplos meus de javascript no <a title="Google Code" href="http://code.google.com/">Google Code</a> com o nome de libjsx, aonde adicionei outras funcionalidades também como por exemplos métodos para Ajax. Separei em componentes visuais (colorpicker, datagrid, etc.), eventos de mouse e teclado, html elements, próprio ajax, e [...]]]></description>
			<content:encoded><![CDATA[<p><a title="libjsx - Google Code" href="http://code.google.com/p/libjsx"><img class="size-full wp-image-134" title="jsx" src="http://rogeriolino.files.wordpress.com/2009/01/jsx.png" alt="jsx" width="480" height="226" /></a></p>
<p>Há algum tempo eu reuni alguns <strong>exemplos</strong> meus de <strong>javascript</strong> no <a title="Google Code" href="http://code.google.com/">Google Code</a> com o nome de <strong>libjsx</strong>, aonde adicionei outras funcionalidades também como por exemplos métodos para <strong>Ajax</strong>. Separei em componentes visuais (<strong>colorpicker</strong>, <strong>datagrid</strong>, etc.), <strong>eventos</strong> de <strong>mouse</strong> e <strong>teclado</strong>, <strong>html elements</strong>, próprio ajax, e core com algumas funcionalidades básicas.</p>
<p>Mas devido um outro projeto várias funcionalidades novas que fiz não estão presentes, espero que após concluir o projeto eu possa mesclar as modificações e tornar essa bibilioteca realmente usável. Por enquanto vale a pena dar uma lida por curiosidade.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2009/03/11/javascript-libjsx/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Javascript Benchmark: replaceAll</title>
		<link>http://rogeriolino.com/2009/01/07/javascript-benchmark-replaceall/</link>
		<comments>http://rogeriolino.com/2009/01/07/javascript-benchmark-replaceall/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 17:06:39 +0000</pubDate>
		<dc:creator>Rogério Alencar Lino Filho</dc:creator>
				<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[replaceAll]]></category>
		<category><![CDATA[split]]></category>

		<guid isPermaLink="false">http://rogeriolino.wordpress.com/?p=127</guid>
		<description><![CDATA[<p>Há algum tempo <a title="replaceAll()" href="http://rogeriolino.wordpress.com/2007/07/23/javascript-replaceall/">escrevi um post contendo</a> um exemplo de método para fazer replace em toda String. No caso o método que escrevi usava while e realmente é muito menos eficiente do que as alternativas apresentadas nos comentários, a primeira usando Expressão Regular (sugerida pelo <a title="Blog do Almir" href="http://www.almirmendes.net/">Almir Mendes</a>) e a [...]]]></description>
			<content:encoded><![CDATA[<p>Há algum tempo <a title="replaceAll()" href="http://rogeriolino.wordpress.com/2007/07/23/javascript-replaceall/">escrevi um post contendo</a> um exemplo de método para fazer replace em toda String. No caso o método que escrevi usava <strong>while</strong> e realmente é muito menos eficiente do que as alternativas apresentadas nos comentários, a primeira usando <strong>Expressão Regular</strong> (sugerida pelo <a title="Blog do Almir" href="http://www.almirmendes.net/">Almir Mendes</a>) e a segunda utilizando <strong>split</strong> e <strong>join</strong> (sugerida pelo <a title="Blog do Lucas Ferreira" href="http://blog.lucasferreira.com/">Lucas Ferreira</a>).  Então resolvi (depois de muito tempo) fazer um benchmark utilizando os três métodos para poder chegar a uma conclusão sobre qual seria melhor.</p>
<p>Fiquei muito surpreso com os testes, não porque o método utilizando while foi de longe o pior entre os três, mas sim pelo fato do método que consiste em dividir a String em um vetor e depois junta-la novamente (<strong>split+join</strong>) ter sido mais rápido do que o próprio método de replace do javascript utilizando Expressão Regular (já que o split também utiliza ER).</p>
<p>Outro fato interessante é que tanto utilizando <strong>ER</strong> quanto <strong>split-join</strong> os métodos se mostraram bastante escaláveis, enquanto o com <strong>while</strong> piora consideravelmente conforme o número de ocorrência aumenta.</p>
<p>Lembrando que fiz os testes através <a title="replaceAll" href="http://www17.brinkster.com/chivalrous/exemplos/benchmark/javascript/replace_all.html">desta página</a> que criei utilizando como browser o <a title="Get Firefox" href="http://pt-br.www.mozilla.com/pt-BR/firefox/">Firefox 3.0.5</a>. Caso alguém faça os testes e obtenha resultados diferente gostaria de receber feedbacks.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogeriolino.com/2009/01/07/javascript-benchmark-replaceall/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

