<?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>Klaus Paiva &#187; Web Workers</title>
	<atom:link href="http://blog.klaus.pro.br/tags/web-workers/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.klaus.pro.br</link>
	<description>Idéias e desventuras de Klaus Paiva</description>
	<lastBuildDate>Mon, 12 Jul 2010 20:26:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>HTML 5</title>
		<link>http://blog.klaus.pro.br/2009/ler/html-5/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/html-5/index.html#comments</comments>
		<pubDate>Wed, 16 Dec 2009 12:16:39 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[Web Workers]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=375</guid>
		<description><![CDATA[Um vídeo bastante interessante que mostra vários recursos provenientes do HTML 5: canvas e SVG, &#60;video&#62;, geolocation, app cache e banco de dados local, e web workers. (aliás, eu já falei sobre web workers aqui no blog ) Introduction to HTML 5 from Brad Neuberg on Vimeo. Have fun! Vi aqui.]]></description>
			<content:encoded><![CDATA[<p>Um vídeo bastante interessante que mostra vários recursos provenientes do HTML 5: <strong>canvas e SVG, &lt;video&gt;, geolocation, app cache e banco de dados local, e web workers</strong>. (aliás, eu já falei sobre <a href="http://blog.klaus.pro.br/2009/ler/web-workers-threads-em-javascript/index.html">web workers</a> aqui no blog <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<div class="videos"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="375" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6691519&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="500" height="375" src="http://vimeo.com/moogaloop.swf?clip_id=6691519&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object>
<p><a href="http://vimeo.com/6691519">Introduction to HTML 5</a> from <a href="http://vimeo.com/user1005914">Brad Neuberg</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>
<p>Have fun! Vi <a href="http://speckyboy.com/2009/12/11/a-collection-of-html5-resources-and-tutorials/">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2009/ler/html-5/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Workers &#8211; Threads em Javascript</title>
		<link>http://blog.klaus.pro.br/2009/ler/web-workers-threads-em-javascript/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/web-workers-threads-em-javascript/index.html#comments</comments>
		<pubDate>Wed, 22 Jul 2009 22:10:48 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web Workers]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=322</guid>
		<description><![CDATA[No final do mês passado eu coloquei aqui no blog uma nota sobre o lançamento do Firefox 3.5 e as novidades trazidas por essa versão. Fiz uma leitura mais aprofundada nos textos e vi um recurso bastante interessante chamado Web Workers. Segundo a descrição do MDC, os Web Workers permitem a execução de códigos de [...]]]></description>
			<content:encoded><![CDATA[<p>No final do mês passado eu coloquei aqui no blog uma <a href="http://blog.klaus.pro.br/2009/ler/firefox-35/index.html">nota sobre o lançamento do Firefox 3.5</a> e as novidades trazidas por essa versão.</p>
<p>Fiz uma leitura mais aprofundada nos textos e vi um recurso bastante interessante chamado <a href="https://developer.mozilla.org/En/Using_web_workers">Web Workers</a>. Segundo a descrição do <a href="https://developer.mozilla.org/">MDC</a>, os Web Workers permitem a execução de códigos de forma <em>multi-thread</em> dentro de aplicações <em>web</em> e sites.</p>
<p>Quem escreve código Javascript hoje em dia sabe que não é raro o navegador &#8220;congelar&#8221; durante um código que exige um pouco mais de processamento. Existem algumas formas de evitar esse &#8220;congelamento&#8221; sim&#8230; mas certamente os Web Workers elevam a resolução deste problema a outro nível de soluções e possibilidades. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Com os Web Workers você pode iniciar um código que será executado em paralelo ao código Javascript da sua página. Esse código executado pelo &#8220;worker&#8221; trabalha num ambiente diferente, sem acesso à página pai e, principalmente, sem acesso ao DOM. A única forma de comunicação entre a página pai e um processo &#8220;worker&#8221; se dá através de mensagens.</p>
<p>Como eu estava interessado em verificar se esses Web Workers realmente trabalham em paralelo <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , fiz uma página que faz esse teste. Nela, há duas versões de um mesmo código que calcula a <a href="http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci">sequência (ou número) de Fibonacci</a>. Além disso, na página há uma <a href="http://docs.jquery.com/Effects">animação com jQuery</a> rodando, o que vai permitir perceber claramente se o navegador vai ou não &#8220;congelar&#8221;.</p>
<p><strong><a href="http://www.klaus.pro.br/projects/web-workers/fibonacci.html">Veja aqui o teste com Web Workers</a></strong>. (para o Firefox só funciona na versão 3.5)</p>
<p>Como você pode ver pelo teste acima, realmente o código roda em <em>background</em>, sem afetar a página renderizada.</p>
<p>Vale ressaltar que nos testes eu exibo também o tempo em milissegundos que a operação levou. Fazendo os testes aqui no meu computador, a versão com Web Workers leva em média 1600 ms, enquanto a versão &#8220;normal&#8221; leva em média 800 ms. O dobro de tempo mas é algo a se ponderar se lembrarmos que a versão &#8220;normal&#8221; trava totalmente o navegador enquanto o cálculo é feito. (<del>interessante&#8230; rodando o teste local, a versão com &#8220;worker&#8221; executa bem mais rápido do que a versão online aqui no blog, talvez pelo tempo de download do &#8220;worker.js&#8221;?</del>)</p>
<p><strong>Update</strong>: na versão do código de testes que eu fiz ontem, ao clicar no botão para calcular o número de Fibonacci, o código do &#8220;worker.js&#8221; era baixado antes do cálculo em si ser executado. Isso causava uma grande diferença entre o teste rodando local e o teste rodando <em>online</em> (óbvio hehe). Fiz uma modificação hoje para deixar o &#8220;worker.js&#8221; já carregado (assim como os demais arquivos &#8220;.js&#8221;).</p>
<p>E como comentário final: tentei deixar os códigos tão similares quanto possível para não afetar significativamente os resultados em favor de uma ou outra forma de cálculo. Sugestões e/ou correções são bem-vindas. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<dl class="references">
<dt>Referências</dt>
<dd>developer.mozilla.org: <a href="https://developer.mozilla.org/En/Using_web_workers">Using web workers</a></dd>
<dd>hacks.mozilla.org: <a href="http://hacks.mozilla.org/2009/07/working-smarter-not-harder/">using web workers: working smarter, not harder</a></dd>
<dd>ejohn.org: <a href="http://ejohn.org/blog/web-workers/">Computing with JavaScript Web Workers</a></dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2009/ler/web-workers-threads-em-javascript/index.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
