<?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>SamuraiDio &#187; javascript</title>
	<atom:link href="http://blog.diovani.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.diovani.com</link>
	<description>GNU/Linux &#124; PHP &#124; JavaScript</description>
	<lastBuildDate>Fri, 28 May 2010 00:11:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jQuery.canvasmetter plugin</title>
		<link>http://blog.diovani.com/2010/01/24/jquery-canvasmetter-plugin/</link>
		<comments>http://blog.diovani.com/2010/01/24/jquery-canvasmetter-plugin/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 15:22:25 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/?p=324</guid>
		<description><![CDATA[Há alguns dias criei um plugin para jQuery, para desenhar medidores no estilo barômetros ou marcadores de velocidade, utilizando o elemento &#60;canvas&#62;.

Como um plugin requer uma atenção especial e atualizações periódicas, dediquei para ele uma página deste blog. E também o wave jQuery.canvasmetter, para o pessoal poder participar. Mais informações podem ser encontrados nestes.
Links:
página jQuery.canvasmetter
página [...]]]></description>
			<content:encoded><![CDATA[<p>Há alguns dias criei um plugin para jQuery, para desenhar medidores no estilo barômetros ou marcadores de velocidade, utilizando o elemento &lt;canvas&gt;.</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2010/01/CanvasMetter_1263859483929.png"><img class="alignnone size-thumbnail wp-image-302" title="screenshot" src="http://blog.diovani.com/wp-content/uploads/2010/01/CanvasMetter_1263859483929-150x150.png" alt="screenshot" width="150" height="150" /></a></p>
<p>Como um plugin requer uma atenção especial e atualizações periódicas, dediquei para ele uma <a href="http://blog.diovani.com/jquery-canvasmetter/">página deste blog</a>. E também o <a href="https://wave.google.com/wave/#restored:wave:googlewave.com!w%252BPOJ7yqi9A">wave jQuery.canvasmetter</a>, para o pessoal poder participar. Mais informações podem ser encontrados nestes.</p>
<p><em>Links:<a href="http://blog.diovani.com/jquery-canvasmetter/"><br />
página jQuery.canvasmetter</a><br />
<a href="http://blog.diovani.com/jquery-canvasmetter/download/">página de download do plugin jQuery.canvasmetter</a><br />
<a href="https://wave.google.com/wave/#restored:wave:googlewave.com!w%252BPOJ7yqi9A">wave jQuery.canvasmetter</a></em></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">página jQuery.canvasmette</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2010/01/24/jquery-canvasmetter-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.4 lançado</title>
		<link>http://blog.diovani.com/2010/01/17/jquery-1-4-lancado/</link>
		<comments>http://blog.diovani.com/2010/01/17/jquery-1-4-lancado/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 22:30:00 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[notícias]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/?p=294</guid>
		<description><![CDATA[Nesta última quinta-feira, dia 14, foi lançada a nova versão do jQuery, a biblioteca Javascript que promete (e cumpre) simplificar o desenvolvimento de scripts escrevendo-se muito menos linhas de código. A versão 1.4, foi lançada, intencionalmente, no dia 14 de Janeiro, por ser este o dia do aniversário da biblioteca.
Como comemoração pelo dia de lançamento, [...]]]></description>
			<content:encoded><![CDATA[<p>Nesta última quinta-feira, dia 14, foi lançada a nova versão do <a href="http://jquery.com/">jQuery</a>, a biblioteca Javascript que promete (e cumpre) simplificar o desenvolvimento de scripts escrevendo-se muito menos linhas de código. A versão 1.4, foi lançada, intencionalmente, no dia 14 de Janeiro, por ser este o dia do aniversário da biblioteca.</p>
<p>Como comemoração pelo dia de lançamento, o time do jQuery colocou no ar um <em>hot-site</em>, <a href="http://jquery14.com/">14 dias de jQuery</a>, que divulgará a cada dia, uma das novas melhorias da versão 1.4, e ainda terá promoções para os desenvolvedores que usam e apoiam a biblioteca. Visite o site <a href="http://jquery14.com/">http://jquery14.com/</a> para maiores informações. O download da nova versão pode ser feito no site oficial: <a href="http://jquery.com">http://jquery.com</a>.</p>
<p>Não vou me estender muito neste post, visto que estou alguns dias atrasado, e outros blogueiros já o fizeram. Então vou apenas adicionar alguns links blogs de alguns amigos que falaram sobre o lançamento. Não deixem de ler os posts, e baixarem a nova versão.</p>
<p>Links:<a href="http://ruancarlos.com.br/Blog/jquery-1-4-e-lancado/"></p>
<p>http://ruancarlos.com.br/Blog/jquery-1-4-e-lancado/</a></p>
<p><a href="http://net.tutsplus.com/tutorials/javascript-ajax/jquery-1-4-released-the-15-new-features-you-must-know/">http://net.tutsplus.com/tutorials/javascript-ajax/jquery-1-4-released-the-15-new-features-you-must-know/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2010/01/17/jquery-1-4-lancado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype vs jQuery &#8211; combo estado/cidade</title>
		<link>http://blog.diovani.com/2008/07/31/prototype-vs-jquery-combo-estadocidade/</link>
		<comments>http://blog.diovani.com/2008/07/31/prototype-vs-jquery-combo-estadocidade/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 17:59:49 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/07/31/prototype-vs-jquery-combo-estadocidade/</guid>
		<description><![CDATA[A algum tempo eu vinha utilizando o Prototype JavaScript Framework para criar efeitos de animações simples e, principalmente, fazer requisições AJAX, em meus projetos. Mas após as constantes indicações de um amigo de que o jQuery JavaScript Framework tornava o desenvolvimento de aplicações web com JavaScript bem mais fácil, e as promessas deste de fazer [...]]]></description>
			<content:encoded><![CDATA[<p>A algum tempo eu vinha utilizando o <a href="http://prototypejs.org/">Prototype JavaScript Framework</a> para criar efeitos de animações simples e, principalmente, fazer requisições AJAX, em meus projetos. Mas após as constantes indicações de um <a href="http://eric.dingdong.com.br">amigo</a> de que o <a href="http://jquery.com/">jQuery JavaScript Framework</a> tornava o desenvolvimento de aplicações web com JavaScript bem mais fácil, e as promessas deste de fazer grandes diferenças com poucas linhas de código, resolvi começar a utilizá-lo em meus novos projetos.</p>
<p>Acontece que o jQuery realmente cumpre o que promete, facilitando trabalhos como alteração de objetos em tempo de execução, requisições ajax e também conta com ótimas animações, tudo com poucas linhas de código muito fáceis de entender. Por isso resolvi fazer uma pequena comparação entre o uso de Prototype, jQuery, ou apenas JavaScript sem se utilizar nenhum framework.</p>
<p>Algumas vantagens do jQuery:</p>
<ul>
<li><strong>Tamanho:</strong> O <a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.6.js">jQuery.js</a> (versão 1.2.6) tem apenas 97KB, contando com toda sua API, Ajax e algumas animações básicas (Fade, Slide e o Animate, que pode ser utilizado para se fazeranimações customizadas). Já o <a href="http://prototypejs.org/download">prototype.js</a> (versão 1.6.0.2), sem o <a href="http://script.aculo.us/">Script.aculo.us</a>, que provê as animações e efeitos, tem 123KB;</li>
<li><strong>Seletores: </strong>Enquanto com JavaScript é necessário linhas como <em>elemento = getElementById(&#8216;myDiv&#8217;); </em>com o jQuery vc pode selecionar qualquer elemento com seletores CSS, utilizando a função $(). Ex: <em>elemento = $(&#8216;#myDiv&#8217;); </em>Note que, como ele utiliza seletores CSS, é possivel selecionar facilmente quaisquer elementos, como todas as âncoras de uma página, ou todas as ancoras com a classe <em>link</em>, por exemplo: <em>anchor = $(&#8216;a&#8217;)</em>; <em>anchorLink = $(&#8216;a.link&#8217;)</em>;</li>
<li><strong>Eventos: </strong>O Prototype possui uma função para observar determinado evento em um elemento. Para disparar funções no Evento <em>Click</em> de meu link de id &#8216;<em>myLink&#8217;</em>, por exemplo, é necessário: <em>Event.observe(&#8216;myLink&#8217;, &#8216;click&#8217;, function(e) { [...] } );</em>. Com jQuery basta fazer: <em>$(&#8216;myLink&#8217;).click( function() { [...] });</em></li>
</ul>
<p>Vou um exemplo de código para uma aplicação bem comum, dois <em>&lt;select&gt;</em>s relativos de estado e cidade. Não vou postar HTML ou código PHP desnecessário, apenas o código Javascript.</p>
<p>Considere dois <em>&lt;select&gt;</em>, um com id <em>&#8216;StateId</em>&#8216; que exibirá os estados para selecionar, e irá atualizar com AJAX as opções do segundo <em>&lt;select&gt;</em>, que terá o id <em>&#8216;CityId&#8217;</em>, contendo as Cidades do estado selecionado previamente.</p>
<p>A url enviada, é uma típica url segmentada, comum em Frameworks <a href="http://pt.wikipedia.org/wiki/Mvc">MVC</a>, e corresponde ao controle <em>cities</em>, a ação <em>update</em>, e deve receber o <em>id</em> do estado como parâmetro. Seria equivalente a seguinte url: <em>&#8216;/cities/update.php?state_id=&#8217;</em>.</p>
<p>Primeiramente, eis como o código para atualização seria, utilizando-se apenas JavaScript, e nenhum Framework:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Apenas JavaScript, Nenhum framework</span>
<span style="color: #003366; font-weight: bold;">function</span> updateCities<span style="color: #009900;">&#40;</span>stateId<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> httpRequest<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">XMLHttpRequest</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">// Mozilla, Safari, ...</span>
        httpRequest <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">ActiveXObject</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">// IE</span>
        httpRequest <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> ActiveXObject<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Microsoft.XMLHTTP&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    httpRequest.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;GET&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'/cities/update/'</span> <span style="color: #339933;">+</span> stateId<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    httpRequest.<span style="color: #660066;">onreadystatechange</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;CityId&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> httpRequest.<span style="color: #660066;">responseText</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    httpRequest.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ainda, como o JavaScript por padrão não possui métodos para observar eventos em elementos diversos, será necessário adicionar explicitamenteuma chamada para a função <em>updateCities()</em> no evento <em>onChange</em> do <em>&lt;select&gt;</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">select</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;StateId&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;StateId&quot;</span> <span style="color: #000066;">onchange</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;updateCities(this.value)&quot;</span>&gt;</span></pre></div></div>

<p>Utilizando-se Prototype, o trabalho torna-se bem mas fácil:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Prototype</span>
Event.<span style="color: #660066;">observe</span> <span style="color: #009900;">&#40;</span>
    <span style="color: #3366CC;">'StateId'</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">'change'</span><span style="color: #339933;">,</span>
    <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Updater</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'CityId'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'/cities/update/'</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Já com jQuery, o código é reduzido significativamente, além de ficar bem mais legível e fácil de entender a uma primeira olhada:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//jQuery</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#StateId'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">change</span><span style="color: #009900;">&#40;</span>
    <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#CityId'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/cities/update/'</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Este é um exemplo simples de como fica fácil reduzir código e torná-lo mais legível com uso do <a href="http://jquery.com/">framework Js jQuery</a>.<br />
Veja a <a href="http://docs.jquery.com/">documentação do jQuery</a> para mais métodos e exemplos de uso.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/07/31/prototype-vs-jquery-combo-estadocidade/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gráficos dinâmicos com JavaScript e &lt;canvas&gt;</title>
		<link>http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/</link>
		<comments>http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 19:20:14 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[gráficos]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/</guid>
		<description><![CDATA[É comum encontrarmos scripts para gerar gráficos dinamicamente como imagens, utilizando PHP, ou em Flash, porém também é extremamente fácil gerar gráficos utilizando apenas padrões web, com JavaScript e &#60;canvas&#62; ou SVG.
Recebi hoje um e-mail de um estudante de engenharia elétrica solicitando ajuda para gerar gráficos dinamicamente em um microcontrolador utilizando apenas HTML, CSS, XML [...]]]></description>
			<content:encoded><![CDATA[<p>É comum encontrarmos scripts para gerar gráficos dinamicamente como imagens, utilizando PHP, ou em Flash, porém também é extremamente fácil gerar gráficos utilizando apenas padrões web, com JavaScript e &lt;canvas&gt; ou SVG.</p>
<p>Recebi hoje um e-mail de um estudante de engenharia elétrica solicitando ajuda para gerar gráficos dinamicamente em um microcontrolador utilizando apenas HTML, CSS, XML e JavaScript. Embora sempre tenha utilizado PHP para gerar gráficos em imagens, já sabia que isto seria perfeitamente possível apenas com linguagens client-based, mas nunca me preocupei em desenvolver algo do tipo.</p>
<p>Pesquisando um pouco sobre o assunto, pude encontrar vários plugins e scripts para gerar gráficos utilizando JavaScript, como por exemplo, existem pugins para gerar gráficos utilizando <a href="http://jquery.com/">jQuery</a> ou <a href="http://dojotoolkit.org/">Dojo</a>, mas um que me chamou a atenção é um extremamente simples e fácil de usar, o Javascript <a href="http://webfx.eae.net/dhtml/chart/chart.html" title="Javascript para gerar gráficos dinamicos">Chart Widget</a>.</p>
<p>O script pode desenhar gráficos utilizando &lt;canvas&gt;, SVG ou mesmo &lt;div&gt;. O padrão é que seja utilizado &lt;canvas&gt;, por ser mais rápido e proporcionando um visual mais bonito que os demais, podendo inclusive ser visualizado no MSIE, com a adição do <a href="http://excanvas.sourceforge.net/">JavaScript ExplorerCanvas</a>.</p>
<p>Para utilizar o <em>Chart Widget</em> em uma página, primeiro é necessário adicionar os scripts <em>chart.js</em>,<em> canvaspainter.js </em>e o CSS <em>canvaschart.css</em>, adicionalmente, o <em>excanvas.js</em> deve ser incluído para suporte ao MSIE.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/excanvas.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/chart.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/canvaschartpainter.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/canvaschart.css&quot;</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Após os scripts estarem incluídos corretamente, basta adicionar um elemento &lt;div&gt; ao corpo do documento HTML, com a largura e altura desejadas para exibir o gráfico:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;chart&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;chart&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;width: 400px; height: 200px;&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>Então baste adicionar o código Javascript para criar o gráfico. É importante verificar que este código deve ser executado no evendo <em>load</em> da página, ou então ser adicionado logo após o elemento &lt;div&gt; que exibirá o gráfico.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">ieCanvasInit<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'includes/iecanvas.htc'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> c <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Chart<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'chart'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setDefaultType</span><span style="color: #009900;">&#40;</span>CHART_AREA <span style="color: #339933;">|</span> CHART_STACKED<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setGridDensity</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setVerticalRange</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setHorizontalLabels</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'mon'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'tue'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'wed'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'thu'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'fri'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Spam'</span><span style="color: #339933;">,</span>            <span style="color: #3366CC;">'#4040FF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">5</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">40</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">52</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">68</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">70</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">70</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">60</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Innocent'</span><span style="color: #339933;">,</span>        <span style="color: #3366CC;">'#8080FF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">7</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">24</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">16</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">36</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">28</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">28</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">45</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Missed Spam'</span><span style="color: #339933;">,</span>     <span style="color: #3366CC;">'#A5A5FF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">7</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">24</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">16</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">36</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">36</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">18</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">5</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'False Positives'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#DEDEFF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">3</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">4</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">18</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">7</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
c.<span style="color: #660066;">draw</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>A primeira linha do script carrega os <em>ExplorerCanvas</em>, sendo necessária para compatibilidade com MSIE, as cinco linhas subseqüentes criam o objeto canvas (importante especificar o id utilizado no div), definem o tipo de gráfico, a densidade da grade do gráfico, a distância vertical, e os rótulos horizontais do gráfico, respectivamente. As linhas a seguir definem as cores e valores de cada linha do gráfico, e a legenda, e o método draw(), finalmente exibe o gráfico.</p>
<p>O resultado, é como exibido na imagem abaixo (lembrando que o resultado real não é uma imagem &lt;img&gt;, mas um elemento &lt;canvas&gt;:</p>
<p style="text-align: center"><img src="http://blog.diovani.com/wp-content/uploads/2008/06/chartwidget.jpg" alt="Exemplo de gráfico gerado com o Chart Widget" /></p>
<p><em>Fonte: <a href="http://webfx.eae.net/dhtml/chart/usage.html">http://webfx.eae.net/dhtml/chart/usage.html</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RPG online com Javascript</title>
		<link>http://blog.diovani.com/2008/05/06/rpg-online-com-javascript/</link>
		<comments>http://blog.diovani.com/2008/05/06/rpg-online-com-javascript/#comments</comments>
		<pubDate>Tue, 06 May 2008 14:53:19 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jogos]]></category>
		<category><![CDATA[webapps]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/05/06/rpg-online-com-javascript/</guid>
		<description><![CDATA[Recentemente, Enéas Gesing postou sobre o ProtoRPG (link aqui), um RPG feito com o framework Javascript Prototype, e que pode ser jogado via browser.
O conceito é bem interessante, e lembra bastante antigos jogos de Nintendinho ou Game Boy Color visualmente. As ações (abrir portas, atacar, falar com NPCs) são feitas através de hotkeys, ou seja, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.diovani.com/wp-content/uploads/2008/05/protorpg.jpg" title="protorpg.jpg"><img src="http://blog.diovani.com/wp-content/uploads/2008/05/protorpg.thumbnail.jpg" alt="Proto RPG" align="right" /></a>Recentemente, <a href="http://the.blog.br">Enéas Gesing</a> postou sobre o <a href="http://www.protorpg.com/">ProtoRPG</a> (<a href="http://the.blog.br/2008/05/01/protorpg-rpg-com-prototype/">link aqui</a>), um RPG feito com o framework Javascript Prototype, e que pode ser jogado via browser.</p>
<p>O conceito é bem interessante, e lembra bastante antigos jogos de Nintendinho ou Game Boy Color visualmente. As ações (abrir portas, atacar, falar com NPCs) são feitas através de <em>hotkeys</em>, ou seja, basta segurar uma tecla do teclado + a direção onde executar a ação (<em>exemplo: A+Direita = Atacar inimigo a direita</em>), o que aumenta a velocidade do jogo. O único ponto fraco que achei são as conversas com NPCs, que abrem uma janela de conversa que impede a ação.</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/05/triglav.jpg" title="Triglav"><img src="http://blog.diovani.com/wp-content/uploads/2008/05/triglav.thumbnail.jpg" alt="Triglav" align="left" /></a>Apesar de interessante, o jogo não chega a ser inovador. Um outro RPG online chamado <a href="http://www.smokymonkeys.com/triglav/">Triglav</a>, produzido pela empresa <a href="http://www.smokymonkeys.com/">SmokyMonkey</a>, existe desde 2002 e, posso dizer, tem ótimos gráficos e animações, além de uma jogabilidade a lá Diablo, onde controla-se o personagem com o movimento do mouse.</p>
<p>Apesar da boa qualidade, por ser tão antigo, o jogo foi feito com técnicas JS ultrapassadas e, por isso, só funciona no MS Internet Explorer (Ugh!). A esta altura de produção deve ser extremamente difícil tornar o jogo multiplataforma, mas se você tiverum Internet Explorer 6 rodando no Wine já é suficiente.</p>
<p>O interessante desses jogos é que, como têm apenas Javascript como requerimento, podem ser jogados de qualquer lugar, e mesmo com poucos recursos, pois o jogo não fica tão pesado e tem suas imagens carregadas apenas quando necessário. Se um multiplayer for feito deste modo certamente fará sucesso.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/05/06/rpg-online-com-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML Canvas &#8211; Desenhando gráficos com HTML e Javascript</title>
		<link>http://blog.diovani.com/2008/04/14/html-canvas-desenhando-graficos-com-html-e-javascript/</link>
		<comments>http://blog.diovani.com/2008/04/14/html-canvas-desenhando-graficos-com-html-e-javascript/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 17:12:38 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/04/14/html-canvas-desenhando-graficos-com-html-e-javascript/</guid>
		<description><![CDATA[A web e seus navegadores já evoluíram muito desde sua concepção em tratando-se de recursos mas ainda há gente que acredita que sobrecarregar páginas com imagens *.GIF e Flash são os únicos métodos de exibir animações na web.
Eu, particularmente, desgosto muito de GIFs animados, acho algo irritante e ultrapassado, e Flash, apesar de seus excelentes [...]]]></description>
			<content:encoded><![CDATA[<p>A web e seus navegadores já evoluíram muito desde sua concepção em tratando-se de recursos mas ainda há gente que acredita que sobrecarregar páginas com imagens *.GIF e Flash são os únicos métodos de exibir animações na web.</p>
<p>Eu, particularmente, desgosto muito de GIFs animados, acho algo irritante e ultrapassado, e Flash, apesar de seus excelentes recursos, tem três pontos negativos: os arquivos costumam ser demasiado grandes, é necessário um plugin proprietário para exibí-los e os usuários não tem acesso aos fontes.</p>
<p>Mas diferente do que muitos acham, a linguagem HTML também evoluiu muito e, sendo integrada com outras linguagens como XML e Javascript, dispõe de outras alternativas.</p>
<p>Imagens <a href="http://pt.wikipedia.org/wiki/SVG">SVG</a> são hoje um padrão que deve ser exibido por qualquer navegador web recente, e estas também aceitam <a href="http://www.w3.org/TR/SVG11/animate.html">animações</a>. Como SVGs são basicamente arquivos XML, elas tendem a ser, desde que usem traços simples, extremamente menores que imagens binárias, e suas animações são implementadas alterando as coordenadas das imagens, e não duplicando-as, como acontece com GIFs.</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_tut_examples.jpg" title="canvas_tut_examples.jpg"><img src="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_tut_examples.thumbnail.jpg" alt="canvas_tut_examples.jpg" align="right" /></a>E existe também o elemento <a href="http://developer.mozilla.org/en/docs/Drawing_Graphics_with_Canvas">&lt;canvas&gt;</a> (que é onde quero chegar), que pode exibir gráficos criados em tempo real e até mesmo animações interativas no navegador. Atualmente compatível com Firefox 1.5+ e Safari.</p>
<p>&lt;canvas&gt; é um novo elemento HTML especificado na documentação do que deverá ser o <a href="http://en.wikipedia.org/wiki/HTML_5">HTML 5</a>, e pode ser usado para desenhar imagens usando linguagens de scripts (geralmente Javascript). Podendo criar composições de fotos e animações simples e até interativas. Veja um exemplo simples a seguir e seu respectivo código:</p>
<p><img src="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_ex1.png" alt="canvas_ex1.png" /></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
 <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;application/x-javascript&quot;</span>&gt;</span>
    function draw() {
      var canvas = document.getElementById(&quot;canvas&quot;);
      if (canvas.getContext) {
        var ctx = canvas.getContext(&quot;2d&quot;);
&nbsp;
        ctx.fillStyle = &quot;rgb(200,0,0)&quot;;
        ctx.fillRect (10, 10, 55, 50);
&nbsp;
        ctx.fillStyle = &quot;rgba(0, 0, 200, 0.5)&quot;;
        ctx.fillRect (30, 30, 55, 50);
      }
    }
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
 <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
 <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span> <span style="color: #000066;">onload</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;draw();&quot;</span>&gt;</span>
   <span style="color: #009900;">&lt;canvas <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;canvas&quot;</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;150&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;150&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span>canvas&gt;</span>
 <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p>Desenvolvido originalmente pela Apple para seu Dashboard (os widgets de desktop do Mac OS X) e posteriormente implementado no Safari. Navegadores baseados na engine Gecko 1.8 e posterior também suportam o elemento &lt;canvas&gt;.</p>
<p>Executar Javascript constantemente em uma página deixa a navegação extremamente lenta, estão, o simples relógio exibido na imagem a direita prejudica bastante a navegação, quando em execução. Assim vale lembrar que apesar da praticidade, utilizar o elemento &lt;canvas&gt; pode não ser a melhor opção em alguns casos, mas de qualquer modo é impressionante o que pode-se fazer com ele. Veja alguns exemplos nos links abaixo:</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_raycaster.jpg" title="Raycaster"><img src="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_raycaster.thumbnail.jpg" alt="Raycaster" /></a> Um <a href="http://developer.mozilla.org/en/docs/A_Basic_RayCaster">labirinto interativo</a> feito em &lt;canvas&gt;</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_reflect.jpg" title="Reflect"><img src="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_reflect.thumbnail.jpg" alt="Reflect" /></a> Um efeito de <a href="http://timelessname.com/canvas/experiment01/">reflexão tipo água</a> de imagens</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_paint.jpg" title="Canvas Paint"><img src="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_paint.thumbnail.jpg" alt="Canvas Paint" /></a> Um <a href="http://caimansys.com/painter/">editor de imagens</a> como o Ms Paint</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_mario.jpg" title="Mario Game"><img src="http://blog.diovani.com/wp-content/uploads/2008/04/canvas_mario.thumbnail.jpg" alt="Mario Game" /></a> O melhor. Um <a href="http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html">clone do jogo Mario</a>, do Nintendinho, que um amigo divulgou <a href="http://the.blog.br/2008/04/09/super-mario-em-javascript-apenas-14-kb/">aqui</a>, feito inteiramente com &lt;canvas&gt; (ele também tem uma versão usando DIVs, para funcionar no IE), e sem nenhuma imagem.</p>
<p>Vale lembrar que estes demos só funcionam no Firefox e Safari.</p>
<p><em>Fonte: <a href="http://developer.mozilla.org/en/docs/Canvas_tutorial">MDC: Canvas Tutorial</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/04/14/html-canvas-desenhando-graficos-com-html-e-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SpiderMonkey JavaScript Shell &#8211; Programando JavaScript em linha de comando</title>
		<link>http://blog.diovani.com/2008/03/14/spidermonkey-javascript-shell-programando-javascript-em-linha-de-comando/</link>
		<comments>http://blog.diovani.com/2008/03/14/spidermonkey-javascript-shell-programando-javascript-em-linha-de-comando/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 22:10:26 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/03/14/spidermonkey-javascript-shell-programando-javascript-em-linha-de-comando/</guid>
		<description><![CDATA[Desenvolvedores Web costumam ter grandes problemas para debugar JavaScript. Enquanto programas como a extensão FireBug do Firefox fazem milagres para debugar, o programador ainda precisa colocar sucessivos alert()s para descobrir os valores que suas variáveis assumem em determinados pontos. Certo?
Errado!
Estava pesquisando agora a pouco algumas funções de js no MDC quando fiquei meio curioso com [...]]]></description>
			<content:encoded><![CDATA[<p>Desenvolvedores Web costumam ter grandes problemas para debugar JavaScript. Enquanto programas como a extensão <a href="https://addons.mozilla.org/pt-PT/firefox/addon/1843">FireBug</a> do Firefox fazem milagres para debugar, o programador ainda precisa colocar sucessivos <a href="http://developer.mozilla.org/en/docs/DOM:window.alert">alert()</a>s para descobrir os valores que suas variáveis assumem em determinados pontos. Certo?</p>
<p><strong><em>Errado!</em></strong></p>
<p>Estava pesquisando agora a pouco algumas funções de js no <a href="http://developer.mozilla.org/">MDC</a> quando fiquei meio curioso com o modo como os exemplos de código eram mostrados e, em especial, de uma função <a href="http://developer.mozilla.org/en/docs/Introduction_to_the_JavaScript_shell#print.28.5Bexpression_....5D.29">print()</a>. Como no fragmento a seguir:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> names <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Harry Trump ;Fred Barney; Helen Rigby ;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span>names<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> re <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/\s*;\s*/</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> nameList <span style="color: #339933;">=</span> names.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span>re<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span>nameList<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<blockquote><p><em>Ora, bolas! Javascript não pode imprimir nada em stdout, então, como pode existir uma função print()?</em></p></blockquote>
<p>Então que, pesquisando mais um pouquinho, cheguei ao SpiderMonkey Javascript Shell.</p>
<p>O <a href="http://developer.mozilla.org/en/docs/SpiderMonkey">SpiderMonkey</a> é o mecanismo interpretador de Javascript do Gecko, escrito em C, e utilizado em vários produtos Mozilla, como o Firefox, por exemplo e a boa notícia é que ele provê também um Shell para executar js em linha de comando.</p>
<p>Com isso fica extremamente fácil criar e testar scripts para usar posteriormente. Veja o exemplo a seguir:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">diovani<span style="color: #339933;">@</span>debian<span style="color: #339933;">-</span>websul<span style="color: #339933;">:</span>~$ js
js<span style="color: #339933;">&gt;</span> <span style="color: #003366; font-weight: bold;">var</span> frase <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Hello World!'</span><span style="color: #339933;">;</span>
js<span style="color: #339933;">&gt;</span> <span style="color: #003366; font-weight: bold;">var</span> tamanho <span style="color: #339933;">=</span> frase.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
js<span style="color: #339933;">&gt;</span> <span style="color: #003366; font-weight: bold;">var</span> teste <span style="color: #339933;">=</span> frase <span style="color: #339933;">+</span> <span style="color: #3366CC;">' tem '</span> <span style="color: #339933;">+</span> tamanho <span style="color: #339933;">+</span> <span style="color: #3366CC;">' caracteres.'</span><span style="color: #339933;">;</span>
js<span style="color: #339933;">&gt;</span> <span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span>teste<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Hello World<span style="color: #339933;">!</span> tem <span style="color: #CC0000;">12</span> caracteres.
<span style="color: #660066;">js</span><span style="color: #339933;">&gt;</span></pre></div></div>

<p>Para instalar o SpiderMonkey JS Shell no Debian GNU/Linux basta executar o comando:</p>
<blockquote><p># aptitude update &amp;&amp; aptitude install spidermonkey-bin</p></blockquote>
<p>Após a instalação, basta executar em um terminal o comando <strong>$ js</strong> para entrar no Shell interativo:</p>
<blockquote><p>Para entrar no shell interativo use o comando:<br />
$ js</p>
<p>Para executar os scripts de um arquivo (foo.js) use:<br />
$ js -f foo.js</p>
<p>Para executar os scripts de um arquivo (foo.js) e entrar no shell interativo (muito útil para carregar funções ou bibliotecas) em seguida use:<br />
$ js -f foo.js -f -</p></blockquote>
<p>Mas mesmo para outras distribuições, e até mesmo Windows, deve ser extremamente fácil instalá-lo. Veja o link abaixo para a Documentação do Javascript Shell e exemplos de uso:</p>
<p><em>Link: <a href="http://developer.mozilla.org/en/docs/Introduction_to_the_JavaScript_shell#Using_the_JavaScript_shell">Introdução ao Shell Javascript</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/03/14/spidermonkey-javascript-shell-programando-javascript-em-linha-de-comando/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Acid Test &#8211; Testando a eficiência dos Web Browsers</title>
		<link>http://blog.diovani.com/2008/03/11/acid-test-testando-a-eficiencia-dos-web-browsers/</link>
		<comments>http://blog.diovani.com/2008/03/11/acid-test-testando-a-eficiencia-dos-web-browsers/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 19:48:30 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/03/11/acid-test-testando-a-eficiencia-dos-web-browsers/</guid>
		<description><![CDATA[Nós, desenvolvedores e designers web, muitas vezes praguejamos contra certos navegadores web (alguém aí disse ie6?) por não exibirem corretamente nossas páginas, mas dificilmente pensamos no outro lado. A vida também não é muito fácil para quem desenvolve esses navegadores.
O AcidTests trata-se de um projeto do webstandards.org para testar o comportamento e eficiência dos navegadores [...]]]></description>
			<content:encoded><![CDATA[<p>Nós, desenvolvedores e designers web, muitas vezes praguejamos contra certos navegadores web (alguém aí disse ie6?) por não exibirem corretamente nossas páginas, mas dificilmente pensamos no outro lado. A vida também não é muito fácil para quem desenvolve esses navegadores.</p>
<p>O <a href="http://www.acidtests.org/">AcidTests</a> trata-se de um projeto do <a href="http://www.webstandards.org">webstandards.org</a> para testar o comportamento e eficiência dos navegadores frente aos padrões web.</p>
<p>O primeiro Acid (<a href="http://acid1.acidtests.org/">Acid1</a>) testava os navegadores quanto a apresentação e exibição de páginas HTML 4.0 e CSS 1, o <a href="http://acid2.acidtests.org/">Acid2</a>, criado em 2005, queria fazer os navegadores &#8220;sorrirem&#8221; testando as capacidades deste de exibirem imagens PNG e CSS2.</p>
<p><a href="http://acid3.acidtests.org/reference.html"><img src="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/reference-rendering.png" align="right" height="117" width="165" /></a>Agora, o <a href="http://acid3.acidtests.org/">Acid3</a> vai além, exigindo dos navegadores renderização de imagens SVG animadas e Javascript.</p>
<p>Eis a lista de especificações testadas:</p>
<ul>
<li>DOM2 Core</li>
<li>DOM2 Events</li>
<li>DOM2 HTML</li>
<li>DOM2 Range</li>
<li>DOM2 Style (getComputedStyle, …)</li>
<li>DOM2 Traversal (NodeIterator, TreeWalker)</li>
<li>DOM2 Views (defaultView)</li>
<li>ECMAScript</li>
<li>HTML4 (&lt;object&gt;, &lt;iframe&gt;, …)</li>
<li>HTTP (Content-Type, 404, …)</li>
<li>Media Queries</li>
<li>Selectors (:lang, :nth-child(), combinators, dynamic changes, …)</li>
<li>XHTML 1.0</li>
<li>CSS2 (@font-face)</li>
<li>CSS2.1 (’inline-block’, ‘pre-wrap’, parsing…)</li>
<li>CSS3 Color (rgba(), hsla(), …)</li>
<li>CSS3 UI (’cursor’)</li>
<li>data: URIs</li>
<li>SVG (SVG Animation, SVG Fonts, …)</li>
</ul>
<p>Segundo o desenvolvedor Ian Hickson, a internet não se resume mais a apenas designs HTML/CSS, assim é importante testar também as capacidades dos navegadores de DOM e Javascript.</p>
<p>O autor do Site <a href="http://www.drunkenfist.com/">DrunkenFist.Com</a> fez uma série de teste e divulgou os resultados. Vou postá-los aqui tb:</p>
<ul>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/camino-151-mac.png">Camino 1.51 Mac OS 10.5 [49/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/firefox-2-mac-105.png">Firefox 2 Mac OS 10.5 [50/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/firefox-3-mac.png">Firefox 3 Mac OS 10.5 [53/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/ie-6-xp.png">Internet Explorer 6 Windows XP [11/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/ie-7-vista.png">Internet Explorer 7 Windows Vista [12/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/ie-7-xp.png">Internet Explorer 7 Windows XP [12/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/firefox-2-xp.png">Firefox  2 Windows XP [50/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/firefox-3-xp.png">Firefox  3 Windows XP [59/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/safari-3-105.png">Safari 3 Mac OS 10.5 [39/100]</a></li>
<li><a href="http://www.6photo.org/images/webkit_acid3.png">Safari 3 Mac OS 10.5 Latest [87/100]</a> (incrível!)<a href="http://www.6photo.org/gallery.php?entry=images/webkit_acid3.png"><br />
</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/opera-924-vista.png">Opera 9.24 Windows Vista [46/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/acid3_konqueror_20080306.png">Konqueror built from SVN 2008.03.06 [63/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/ie8-acid3.png">IE8 Beta [17/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/acid3-opera-95.jpg">Opera 9.5 [61/100]</a></li>
<li><a href="http://media.drunkenfist.com/304/wp-content/uploads/2008/03/firefox-3-beta-4-acid3.thumbnail.jpg">Firefox 3 Beta 4 on Windows XP [67/100]</a></li>
</ul>
<p><em>Fontes: <a href="http://info.abril.com.br/blog/juliano/20080306_listar.shtml">http://info.abril.com.br/blog/juliano/20080306_listar.shtml</a>, <a href="http://www.drunkenfist.com/304/2008/03/04/acid3-test-released-i-took-some-screen-captures-lots-of-fail/">http://www.drunkenfist.com/304/2008/03/04/acid3-test-released-<br />
i-took-some-screen-captures-lots-of-fail/</a>, <a href="http://www.webstandards.org/action/acid3/">http://www.webstandards.org/action/acid3/</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/03/11/acid-test-testando-a-eficiencia-dos-web-browsers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Highslide no Wordpress</title>
		<link>http://blog.diovani.com/2007/08/06/highslide-no-wordpress/</link>
		<comments>http://blog.diovani.com/2007/08/06/highslide-no-wordpress/#comments</comments>
		<pubDate>Mon, 06 Aug 2007 14:02:31 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[highslide]]></category>
		<category><![CDATA[imagem]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[multimídia]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/?p=68</guid>
		<description><![CDATA[O highslide é um visualizador de miniaturas feito em JavaScript. Ele exibe as imagens em pop-ups sobre sua página (em html, nao novas janelas), podendo ser movidos ou abertos em sequencia. O efeito visual é melhor que qualquer visualizador de imagens já visto, mesmo em sistemas operacionais. Veja minhas imagens e screenshots para ter uma [...]]]></description>
			<content:encoded><![CDATA[<p>O highslide é um visualizador de miniaturas feito em JavaScript. Ele exibe as imagens em pop-ups sobre sua página (em html, nao novas janelas), podendo ser movidos ou abertos em sequencia. O efeito visual é melhor que qualquer visualizador de imagens já visto, mesmo em sistemas operacionais. Veja minhas imagens e screenshots para ter uma idéia.  Vou mostrar aqui como intalar o plugin para Wordpress e como adicionar automaticamente o highslide a TODAS as imagens do blog, sem precisar editar os posts antigos.</p>
<blockquote><p><em>O visualizador de miniaturas Highslide é free para uso não-comercial, e custa  $29, dólares para cada domínio deu8m website comercial, então, caso você possua um blog comercial (?) você deverá pagar pelo Highslide.js. Veja a <a href="http://vikjavev.no/highslide/#licence">licença</a>. </em></p></blockquote>
<p>Primeiramente, baixe e instale o plugin <a href="http://wordpress.org/extend/plugins/wp-highslide-image-viewer/">wp-highslide</a> (descompacte-o dentro de uma pasta &#8216;highslide&#8217; em wp-content/plugins/) e também baixe a biblioteca <a href="http://vikjavev.no/highslide/">highslide</a> (copie apenas o arquivo highslide.js para dentro de wp-content/plugins/highslide). Após isso vá em &#8216;Plugins&#8217; (ou &#8216;Extenções&#8217;, em português), na administração de seu blog e ative o wp-highslide.  Com isso você terá o plugins instalado, podendo usar a tag &lt;highslide&gt;&lt;/highslide&gt; para adicionar miniaturas usando a biblioteca, o que é um saco. Então, para facilitar as coisas, vá em &#8216;Opções&#8217; e clique em &#8216;wp-highslide&#8217;, ajuste as opções como deseja e em &#8216;JAVASCRIPT settings&#8217; adicione o seguinte:</p>
<p>Caso seu tema não utilize &#8216;<a href="http://prototypejs.org/">prototype</a>&#8216; (um framework JavaScript), adicione no início do textarea o seguinte código:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;script&gt;
src=&quot;http://prototypejs.org/assets/2007/6/20/prototype.js&quot;
 type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre></div></div>

<p>E abaixo da linha: <strong>&#8216;hs.preloadImages();&#8217;</strong></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> elements <span style="color: #339933;">=</span> $A<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
elements.<span style="color: #660066;">each</span>
<span style="color: #009900;">&#40;</span>
    <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>element<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>element.<span style="color: #660066;">href</span>.<span style="color: #660066;">endsWith</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'jpg'</span><span style="color: #009900;">&#41;</span>
            <span style="color: #339933;">||</span> element.<span style="color: #660066;">href</span>.<span style="color: #660066;">endsWith</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'png'</span><span style="color: #009900;">&#41;</span>
            <span style="color: #339933;">||</span> element.<span style="color: #660066;">href</span>.<span style="color: #660066;">endsWith</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'gif'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            element.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'highslide'</span><span style="color: #339933;">;</span>
&nbsp;
            Event.<span style="color: #660066;">observe</span>
            <span style="color: #009900;">&#40;</span>
                element<span style="color: #339933;">,</span>
                <span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span>
                <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                    Event.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #003366; font-weight: bold;">var</span> element <span style="color: #339933;">=</span> Event.<span style="color: #660066;">element</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000066; font-weight: bold;">return</span> hs.<span style="color: #660066;">expand</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span></pre></div></div>

<p>Isso vai adicionar automaticamente o Highslide a todos os links para imagens da página, inclusive dos posts antigos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2007/08/06/highslide-no-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
