<?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>Vinicius Ebersol &#187; Javascript</title>
	<atom:link href="http://vebersol.net/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://vebersol.net</link>
	<description>Blog on Rails</description>
	<lastBuildDate>Wed, 28 Dec 2011 15:22:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Callback para CSS3 transitions</title>
		<link>http://vebersol.net/2011/01/05/callback-para-css3-transitions/</link>
		<comments>http://vebersol.net/2011/01/05/callback-para-css3-transitions/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 12:22:42 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://vebersol.net/?p=188</guid>
		<description><![CDATA[Para pessoas que estão acostumadas com o método animate do jQuery, que tem um callback, trabalhar com CSS3 pode ser um pouco complicado. Aqui vai uma dica rápida pra adicionar callbacks às suas transições. Existe um método que tem nomes &#8230; <a href="http://vebersol.net/2011/01/05/callback-para-css3-transitions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para pessoas que estão acostumadas com o método <strong>animate</strong> do <strong>jQuery</strong>,  que tem um <strong>callback</strong>, trabalhar com <strong>CSS3</strong> pode ser um pouco complicado.  Aqui vai uma dica rápida pra adicionar callbacks às suas transições.</p>
<p>Existe um método que tem nomes diferentes para <strong>Mozilla</strong>, <strong>webkit</strong> e <strong>Opera</strong>, respectivamente:</p>
<ul>
<li>transitionend</li>
<li>webKitTransitionEnd</li>
<li>oTransitionEnd</li>
</ul>
<pre>element.addEventListener(
    'transitionend', //depende do browser (listado acima)
    function( event ) {
        alert( "Finished transition!" );
    },
    false
);</pre>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2011/01/05/callback-para-css3-transitions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bug com a tag video no iPad</title>
		<link>http://vebersol.net/2010/12/30/bug-com-a-tag-video-no-ipad/</link>
		<comments>http://vebersol.net/2010/12/30/bug-com-a-tag-video-no-ipad/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 13:46:28 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://vebersol.net/?p=173</guid>
		<description><![CDATA[Como muitos que trabalham com web, tenho trabalhado bastante em desenvolvimento para dispositivos móveis, a maioria dos projetos para iPad e iPhone. Nesse projeto em especial, estamos desenvolvendo uma versão HTML5 de um site de um cliente famoso. A geração &#8230; <a href="http://vebersol.net/2010/12/30/bug-com-a-tag-video-no-ipad/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Como muitos que trabalham com web, tenho trabalhado bastante em desenvolvimento para <strong>dispositivos móveis</strong>, a maioria dos projetos para <strong>iPad</strong> e <strong>iPhone</strong>. Nesse projeto em especial, estamos desenvolvendo uma versão <strong>HTML5</strong> de um site de um cliente famoso. A geração do conteúdo é toda feita através de uma biblioteca estruturada em componentes e um desses componentes é um player de video em HTML cujo controle do video é todo feito através de outra biblioteca <strong>javascript</strong> que eu desenvolvi.</p>
<p>Durante o desenvolvimento, encontrei um <strong>bug</strong> muito estranho que ocorria somente no iPad. A princípio pensei que era um problema na geração dos HTML&#8217;s da biblioteca e fiquei alguns dias procurando o tal do problema, e nada&#8230;</p>
<p>A solução veio de um lampejo ao ver o <strong>XML</strong> que utilizamos para carregar o conteúdo. O XML tem todos os dados do vídeo, inclusive as duas versões de vídeo nos formatos suportados (ogg e mp4) pelos diferentes browsers que suportam a <strong>tag &lt;video&gt;</strong>. Ele montava o vídeo da seguinte forma:</p>
<p><code>&lt;video width="650" height="250" data-quality="normal" poster="../_img/poster.jpg" preload="nopreload"&gt;<br />
    &lt;source src="../_media/demo.ogg"&gt;&lt;/source&gt;<br />
    &lt;source src="../_media/demo.mp4"&gt;&lt;/source&gt;<br />
    Your browser doesn't support this video.<br />
&lt;/video&gt;<br />
</code></p>
<p>No entanto, todos os dispositivos da <strong>Apple</strong>, vêm com um <strong>codec de vídeo</strong> diferente dos demais browsers, <strong>MPEG 4</strong>. Na tabela abaixo é mais fácil de entender a compatibilidade:</p>
<p><img class="aligncenter size-full wp-image-174" title="video_formats" src="http://vebersol.net/wp-content/uploads/2010/12/video_formats.png" alt="" width="636" height="72" /></p>
<p><small>Fonte: <a href="http://vebersol.net/wp-content/uploads/2010/12/video_formats.png">http://www.w3schools.com/html5/html5_video.asp</a></small></p>
<p>No hora que eu vi o XML me dei conta que o video no formato ogg estava antes do video mp4 no código, simplesmente troquei de posição e funcionou, como você pode ver abaixo:</p>
<p><code>&lt;video width="650" height="250" data-quality="normal" poster="../_img/poster.jpg" preload="nopreload"&gt;<br />
    <span style="color: #ff0000;">&lt;source src="../_media/demo.mp4"&gt;&lt;/source&gt;</span><br />
    &lt;source src="../_media/demo.ogg"&gt;&lt;/source&gt;<br />
    Your browser doesn't support this video.<br />
&lt;/video&gt;<br />
</code></p>
<p>E essa foi a solução pra todos os meus problemas&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2010/12/30/bug-com-a-tag-video-no-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery TOOLS</title>
		<link>http://vebersol.net/2010/01/21/jquery-tools/</link>
		<comments>http://vebersol.net/2010/01/21/jquery-tools/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:42:26 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://vebersol.net/?p=132</guid>
		<description><![CDATA[jQuery TOOLS é uma biblioteca super completa que facilita muito a criação de tarefas hoje comuns, veja as demos dos recursos dessa biblioteca: Tabs; Tooltips; Overlay &#8211; Screenlocker para popups; Expose &#8211; Serve para destacar elementos da página; Scrollable &#8211; &#8230; <a href="http://vebersol.net/2010/01/21/jquery-tools/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img title="jquery-tools" src="http://vebersol.net/wp-content/uploads/2010/01/jquery-tools.jpg" alt="" width="400" height="192" /></p>
<p><strong><a href="http://flowplayer.org/tools/index.html">jQuery TOOLS</a></strong> é uma biblioteca super completa que facilita muito a criação de tarefas hoje comuns, veja as demos dos recursos dessa biblioteca:</p>
<ul>
<li><a href="http://flowplayer.org/tools/demos/tabs/index.html">Tabs</a>;</li>
<li><a href="http://flowplayer.org/tools/demos/tooltip/index.html">Tooltips</a>;</li>
<li><a href="http://flowplayer.org/tools/demos/overlay/index.html">Overlay</a> &#8211; Screenlocker para popups;</li>
<li><a href="http://flowplayer.org/tools/demos/expose/index.html">Expose</a> &#8211; Serve para destacar elementos da página;</li>
<li><a href="http://flowplayer.org/tools/demos/scrollable/index.html">Scrollable</a> &#8211; entre outras coisas serve para fazer galerias de imagens bem legais;</li>
<li><a href="http://flowplayer.org/tools/demos/flashembed/index.html">Flash embed</a> &#8211; uma espécide de SWF Object que já vem inclusa e funciona muito bem com o player de vídeo dos mesmos autores dessa biblioteca;</li>
</ul>
<p>É possível combinar esses recursos como você pode ver <a href="http://flowplayer.org/tools/demos/combine/scrollable-gallery-with-tooltips.html">aqui</a>. Ou ainda existe uma demonstração de <a href="http://flowplayer.org/demos/tools/overlay.html"><strong>como integrar o player de vídeo em flash deles com o jQuery TOOLS</strong></a>.</p>
<h3>Flowplayer</h3>
<p>O <strong><a href="http://flowplayer.org/index.html">Flowplayer</a></strong> é um player de vídeo em flash desenvolvido pelos mesmos autores do jQuery TOOLS. Veja <a href="http://flowplayer.org/demos/index.html">aqui</a> algumas demos do player em ação.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2010/01/21/jquery-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>drails &#8211; Dojo + Rails</title>
		<link>http://vebersol.net/2009/09/15/drails-dojo-rails/</link>
		<comments>http://vebersol.net/2009/09/15/drails-dojo-rails/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 13:04:54 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://vebersol.net/?p=125</guid>
		<description><![CDATA[Dica rápida para quem se interessou no post anterior sobre Dojo. Eu pesquisei e encontrei um plugin que substitui os helpers do Rails para utilizar Dojo ao invés de Prototype. É o drails. A instalação é simples: # drails relies &#8230; <a href="http://vebersol.net/2009/09/15/drails-dojo-rails/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-129 aligncenter" title="drails" src="http://vebersol.net/wp-content/uploads/2009/09/drails.png" alt="drails" width="273" height="123" /></p>
<p>Dica rápida para quem se interessou no post anterior sobre <a href="http://dojotoolkit.org/">Dojo</a>. Eu pesquisei e encontrei um plugin que substitui os helpers do <a href="http://rubyonrails.com">Rails</a> para utilizar Dojo ao invés de <a href="http://prototypejs.org/">Prototype</a>. É o <a href="http://d-rails.org/">drails</a>.</p>
<h3>A instalação é simples:</h3>
<pre># drails relies on the dojo-pkg gem.  Installing this gem can sometimes take a while
gem install dojo-pkg

cd my_rails_app
script/plugin install git://github.com/foobarfighter/drails.git</pre>
<p>Para maiores informações acesse o <a href="http://github.com/foobarfighter/drails/tree/v1.0.0">README</a> do plugin no github.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2009/09/15/drails-dojo-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Abra sua caixa de ferramentas com Dojo</title>
		<link>http://vebersol.net/2009/09/10/abra-sua-caixa-de-ferramentas-com-dojo/</link>
		<comments>http://vebersol.net/2009/09/10/abra-sua-caixa-de-ferramentas-com-dojo/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 16:46:28 +0000</pubDate>
		<dc:creator>Vinicius Ebersol</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://vebersol.net/?p=108</guid>
		<description><![CDATA[Antes de tudo, Dojo não é só mais um framework Javascript como jQuery, Prototype e Mootols. Em muitos casos esses facilitam o desenvolvimento, no entanto, quando a questão é desempenho, somente agilidade no processo de desenvolvimento não é uma boa &#8230; <a href="http://vebersol.net/2009/09/10/abra-sua-caixa-de-ferramentas-com-dojo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-110 alignleft" style="border: 0pt none; margin: 10px;" title="dojo" src="http://vebersol.net/wp-content/uploads/2009/09/dojo.png" alt="dojo toolkit logo" width="223" height="163" /></p>
<p>Antes de tudo, <a href="http://www.dojotoolkit.org/" target="_self">Dojo</a> não é só mais um framework Javascript como <a href="http://jquery.com">jQuery</a>, <a href="http://www.prototypejs.org/">Prototype</a> e <a href="http://mootools.net/">Mootols</a>. Em muitos casos esses facilitam o desenvolvimento, no entanto, quando a questão é desempenho, somente agilidade no processo de desenvolvimento não é uma boa escolha.</p>
<p>Desenvolver aplicações web de grande porte significa preocupar-se com desempenho não só do lado do servidor, o cliente (alvo principal) deve ser peça fundamental. Incluir dezenas de arquivos javascript com funções que muitas vezes sequer serão usadas, causa um aumento de tráfego pouco significante se analisarmos as coisas de forma isolada, mas imagine um excesso de 10kb a cada request feita por milhões de usuários, isso pode gerar um excesso de gigabytes por mês dependendo do número de acessos mensais, causando uma lentidão nas respostas do servidor.</p>
<h3>Acerca do desempenho no lado do cliente</h3>
<p>Um teste realizado <a href="http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised">neste blog</a> mostrou resultados surpreendentes relacionando frameworks e browsers. Na média, o Dojo é o mais rápido de todos os frameworks.</p>
<p style="text-align: center;"><img class="size-full wp-image-118 aligncenter" title="speed-compersion-graph" src="http://vebersol.net/wp-content/uploads/2009/09/speed-compersion-graph.jpg" alt="speed-compersion-graph" width="550" height="508" /></p>
<h3>Sobre o tráfego</h3>
<p>Muitos desenvolvedores usam jQuery e Prototype, inclusive eu. O jQuery tem todo o seu core em um único arquivo, já o prototype tem arquivos separados que você inclui dependendo de suas necessidades. Para esse segundo caso, creio que você não fará um header diferente para cada página que criar, portanto, na maioria das vezes inluímos todos os arquivos que irão usar em toda aplicação.</p>
<p>A facilidade do Dojo nesse aspecto está no seu maior segredinho: ele é dividido em dezenas de partes que você inclui somente de acordo com a sua necessidade utilizando um médoto próprio do dojo.</p>
<pre id="line31">dojo.require("dojo.NodeList-fx");</pre>
<p>A primeira vista pode parecer semelhante ao prototype, porém, se você analizar o código que está contido em cada arquivo vai entender. São em média 50 a 100 linhas incluíndo comentários e quebras de linha por arquivo (na versão não reduzida do dojo). Comparando com o arquivo <em>effects.js</em> do Prototype (que contém aproximadamente 1200 linhas) é algo realmente significativo.</p>
<h3>Dijit: O diferencial do Dojo</h3>
<p>O melhor do Dojo com certeza é a sua biblioteca de widgets, chamada <a href="http://dojotoolkit.org/projects/dijit">Dijit</a>. Com ela você pode adicionar elementos à sua aplicação tornando a experiência do usuário muito satisfatória. Existem soluções semelhantes para jQuery e Prototype, porém, você terá que ir em busca das soluções que necessita e contar com a sorte para que o desenvolvedor do plugin tenha desenvolvido algo que irá funcionar corretamente e suprir as suas necessidades.</p>
<p>O mais importante de tudo é que o Dijit é internacionalizado e em muitos casos, acessível. Veja aqui algumas <a href="http://dojocampus.org/explorer/#Dijit">features do Dijit</a>.</p>
<h3>DojoX</h3>
<p>O <a href="http://dojocampus.org/explorer/#Dojox">DojoX</a> é uma área de desenvolvimento de extensões, uma espécie de incubadora de novas idéias que mais tarde podem estar disponíveis na ferramenta principal ou serem removidas se não obtiverem o sucesso esperado. Podem não ser internacionalizadas e não ter a mesma qualidade dos widgets do Dijit, porém, são sempre coisas novas que podem ser úteis na hora do aperto.</p>
<h3>Conclusão</h3>
<p>Utilizar Dojo é uma revisão de conceitos, mas como todo bom desenvolvedor dedicar um pouco de tempo ao aprendendizado da &#8220;filosofia&#8221; do Dojo pode torná-lo um desenvolvedor versátil e independente de tecnologias, pois pode ocorrer de uma oportunidade de emprego solicitar experiências com esta e(ou) aquela ferramenta de acordo com a aplicação ou ainda as determinações do cliente.</p>
]]></content:encoded>
			<wfw:commentRss>http://vebersol.net/2009/09/10/abra-sua-caixa-de-ferramentas-com-dojo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

