<?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; DOM</title>
	<atom:link href="http://blog.klaus.pro.br/tags/dom/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>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>
		<item>
		<title>Firefox, Chrome, Internet Explorer, Opera&#8230; Ótimo!</title>
		<link>http://blog.klaus.pro.br/2008/ler/firefox-chrome-internet-explorer-opera-otimo/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/firefox-chrome-internet-explorer-opera-otimo/index.html#comments</comments>
		<pubDate>Wed, 10 Sep 2008 13:56:08 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=118</guid>
		<description><![CDATA[Claro, depende do ponto de vista. =) Mas em termos gerais eu acredito que essa nova edição da &#8220;guerra dos browsers&#8221; é muito bem-vinda e benéfica. Como interfaces do sistema operacional do futuro, penso que quanto mais os navegadores evoluírem, melhor. E nada melhor que concorrência para estimular o desenvolvimento e a inovação desse tipo [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.klaus.pro.br/wp-content/uploads/2008/09/browsers-firefox-ie-opera-chrome.jpg" alt="Montagem com os logos do Firefox, Internet Explorer, Opera e Chrome - Todos os direitos reservados aos seus devidos autores" /></p>
<p>Claro, depende do ponto de vista. =) Mas em termos gerais eu acredito que essa nova edição da &#8220;<a href="http://en.wikipedia.org/wiki/Browser_wars">guerra dos <em>browsers</em></a>&#8221; é muito bem-vinda e benéfica.</p>
<p>Como interfaces do sistema operacional do futuro, penso que quanto mais os navegadores evoluírem, melhor. E nada melhor que concorrência para estimular o desenvolvimento e a inovação desse tipo de aplicativo.</p>
<p>Com o lançamento do <a href="http://www.google.com/chrome">Google Chrome</a>, uma tema bastante interessante (ao menos pra mim) passou a ser mais discutido: <a href="http://ejohn.org/blog/javascript-performance-rundown/">performance de Javascript</a>. Quem desenvolve interfaces <em>web </em>hoje sabe que não raro são as vezes em que você acaba com o navegador bastante lento quando faz operações com os elementos (DOM) existentes na tela, isso pra citar apenas um dos casos.</p>
<p>E o que mais me deixa positivo sobre esse fato é: até a Microsoft está preocupada em melhorar o <a href="http://www.microsoft.com/windows/internet-explorer/beta/default.aspx">Internet Explorer 8</a> para não ficar em desvantagem nessa guerra dos <em>browsers</em>.</p>
<p>Com <em>browsers</em> melhores, mais rápidos e mais ricos em termos de recursos, haverá toda uma nova gama de possibilidades para desenvolvimento <em>web</em>. E vale dizer que isso não é bom só para nós, desenvolvedores, mas também para os usuários de Internet como um todo, que terão aplicações mais ricas, mais rápidas e mais úteis, tudo &#8220;independente&#8221; da plataforma do sistema operacional.</p>
<p>E enquanto a guerra dos <em>browsers</em> se mantiver dentro dos moldes atuais, pode ter certeza, só temos a ganhar. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/firefox-chrome-internet-explorer-opera-otimo/index.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Último dia da oficina de Javascript e Ajax</title>
		<link>http://blog.klaus.pro.br/2008/ler/ultimo-dia-da-oficina-de-javascript-e-ajax/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/ultimo-dia-da-oficina-de-javascript-e-ajax/index.html#comments</comments>
		<pubDate>Thu, 17 Jul 2008 18:47:55 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Cursos]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Senac]]></category>
		<category><![CDATA[Vida Social]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=89</guid>
		<description><![CDATA[A oficina de Ajax que começou no dia 1 deste mês acabou hoje, dia 17. Nestes vários dias de curso/oficina deu pra abordar vários temas, desde os fundamentais para o bom entendimento da linguagem até o uso prático e produtivo do Javascript. Durante esse período mostrei desde a sintaxe base da linguagem, passando por manipulação [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://blog.klaus.pro.br/2008/ler/apresentacao-para-a-oficina-sobre-javascript-e-ajax/index.html">oficina de Ajax</a> que começou no dia 1 deste mês acabou hoje, dia 17. Nestes vários dias de curso/oficina deu pra abordar vários temas, desde os fundamentais para o bom entendimento da linguagem até o uso prático e produtivo do Javascript.</p>
<p>Durante esse período mostrei desde a sintaxe base da linguagem, passando por manipulação de <a href="http://www.w3.org/Style/CSS/">CSS</a> e <a href="http://developer.mozilla.org/en/docs/Category:Gecko_DOM_Reference">DOM</a>, eventos e <em>listeners</em>, até chegar no tão falado Ajax. E no último dia ainda deu tempo de apresentar a ótima biblioteca <a href="http://jquery.com/">jQuery</a> sob o tópico <strong>produtividade</strong>.</p>
<p>Ah, tirei uma foto com o pessoal que participou da oficina:</p>
<dl class="images">
<dt> <a class="thickbox" title="Na foto estão os alunos da oficina e eu, quase no centro, de camisa azul." href="http://blog.klaus.pro.br/wp-content/uploads/2008/07/oficina-de-javascript-ajax-ultimo-dia.jpg"><img src="http://blog.klaus.pro.br/wp-content/uploads/2008/07/oficina-de-javascript-ajax-ultimo-dia-thumb.jpg" alt="" /> </a></dt>
<dd>Na foto estão os alunos da oficina e eu, quase no centro, de camisa azul.</dd>
</dl>
<p>Espero que todos possam ter aprendido pelo menos algo de novo e interessante. Aproveito para agradecer a presença de todos, que se esforçaram pra acordar cedo mesmo durante as férias letivas. Bom, agora deixa eu mostrar a foto para minha mãe&#8230; =)</p>
<p>Gostei de ministrar essas oficinas, e já estou até pensando qual pode ser o tema da oficina de verão, no final do ano? <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)">LAMP</a>? <a href="http://rubyonrails.com/">Ruby on Rails</a>? Só o tempo dirá&#8230; <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/ultimo-dia-da-oficina-de-javascript-e-ajax/index.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
