<?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>Cleber Dantas</title>
	<atom:link href="http://www.cleberdantas.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cleberdantas.com</link>
	<description>Web, Etc e Tal</description>
	<lastBuildDate>Thu, 16 May 2013 18:45:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Latência, largura de banda e a velocidade da luz</title>
		<link>http://www.cleberdantas.com/2013/04/latencia-largura-de-banda-e-a-velocidade-da-luz/</link>
		<comments>http://www.cleberdantas.com/2013/04/latencia-largura-de-banda-e-a-velocidade-da-luz/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 17:53:30 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[WPO]]></category>
		<category><![CDATA[latência]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webperf]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=307</guid>
		<description><![CDATA[Será que se aumentarmos a banda da nossa internet de 5Mbps para 10Mbps teremos o dobro de velocidade na navegação de páginas na Web? Comecei esse post com uma pergunta de propósito e espero que você possa responder essa questão ao final da leitura. Hoje enfrentamos um grande problema em todos os sistemas de rede <a href="http://www.cleberdantas.com/2013/04/latencia-largura-de-banda-e-a-velocidade-da-luz/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Será que se aumentarmos a banda da nossa internet de 5Mbps para 10Mbps teremos o dobro de velocidade na navegação de páginas na Web?</p>
<p>Comecei esse post com uma pergunta de propósito e espero que você possa responder essa questão ao final da leitura.</p>
<p>Hoje enfrentamos um grande problema em todos os sistemas de rede que basicamente é a velocidade de uma informação sair de um ponto e chegar a outro, esse tempo de viagem da tal informação entre dois pontos é o que chamamos de <strong>latência</strong>.</p>
<p>O tempo de latência normalmente é medido em <em>ms</em> (milissegundos) para a maioria dos sistemas/situações, como não estamos habituados a pensar em milissegundos veja abaixo uma tabela de percepção dos usuários em relação a algumas &#8220;esperas&#8221;:</p>
<table class="delay" width="100%" border="1">
<tbody>
<tr>
<td class="header">Delay</td>
<td class="header">User Reaction</td>
</tr>
<tr>
<td class="green">0 &#8211; 100ms</td>
<td>Instant</td>
</tr>
<tr>
<td>100 &#8211; 300ms</td>
<td>Small perceptible delay</td>
</tr>
<tr>
<td>300 &#8211; 1000ms</td>
<td>Machine is working</td>
</tr>
<tr>
<td class="red">1s+</td>
<td>Mental context switch</td>
</tr>
<tr>
<td class="red">10s+</td>
<td>I&#8217;ll come back later&#8230;</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Claramente se quisermos ter a atenção total de nossos usuários teremos que manter a velocidade de resposta de nossas aplicações em até <strong>300ms</strong> (complicadíssimo!).</p>
<p>Ok, já sabemos o que é latência, mas outro conceito importante de aprendermos é o <strong>RTT</strong> (round trip time) que basicamente é o tempo de ida e volta de um sinal/informação entre dois pontos (latência de um meio de transmissão vezes 2).</p>
<p>O grande problema com a latência na realidade é que hoje já estamos transmitindo os dados/sinais/informações de maneira <strong>muito </strong>rápida e estamos amarrados a um limite de velocidade também conhecido como <strong>velocidade da luz.</strong></p>
<p>A <a title="velocidade da luz" href="http://pt.wikipedia.org/wiki/Velocidade_da_luz" target="_blank">velocidade da luz</a> por definição é igual a 299 792 458 metros por segundo ou mais ou menos 300 000 quilomêtros por hora (bastante não?), só que (sempre tem um but) essa velocidade toda só é atingida no <a title="vácuo" href="http://pt.wikipedia.org/wiki/V%C3%A1cuo" target="_blank">vácuo</a>.</p>
<p>Bom como o vácuo perfeito não é possível na natureza e o não perfeito hoje não é utilizado em grande escala (somente alguns centros de pesquisa possuem câmaras de vácuo) teremos que utilizar outro meio para a transmissão da luz certo? Sim perfeito!</p>
<p>Que a <a title="fibra óptica" href="http://pt.wikipedia.org/wiki/Fibra_%C3%B3ptica" target="_blank">fibra óptica</a> é realidade não temos duvida =D e é nela que basicamente transmitimos a luz/sinais/informações entre os continentes hoje em dia (normalmente debaixo dos oceanos).</p>
<p>A fibra é um meio muito competente para a transmissão da luz, mas é um meio de transmissão e não a ausência dele (vácuo). Todo <strong>meio </strong>de transmissão possui um <a title="índice de refração" href="http://pt.wikipedia.org/wiki/%C3%8Dndice_de_refra%C3%A7%C3%A3o" target="_blank">índice de refração</a> associado ao mesmo e no caso da fibra esse valor é de ~1.5.</p>
<p>Veja abaixo algumas distâncias e tempos de latência entre algumas cidades famosas do nosso querido planeta terra:</p>
<table style="width: 100%; border-collapse: collapse;">
<colgroup>
<col class="col_1" />
<col class="col_2" />
<col class="col_3" />
<col class="col_4" />
<col class="col_5" /> </colgroup>
<thead>
<tr>
<td style="border-bottom: 0.5pt solid;">Rota</td>
<td style="border-bottom: 0.5pt solid;">Distância</td>
<td style="border-bottom: 0.5pt solid;">Tempo &#8211; Luz no vácuo</td>
<td style="border-bottom: 0.5pt solid;">Tempo &#8211; Luz na fibra</td>
<td style="border-bottom: 0.5pt solid;">Round Trip Time (RTT) na fibra</td>
</tr>
</thead>
<tbody>
<tr>
<td style="border-bottom: 0.5pt solid;">
<p id="new_york_to_san">New York to San Francisco</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="km_id1">4,148 km</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id1">14 ms</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id2"><span class="strong"><strong>21 ms</strong></span></p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id3">42 ms</p>
</td>
</tr>
<tr>
<td style="border-bottom: 0.5pt solid;">
<p id="new_york_to_lon">New York to London</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="km_id2">5,585 km</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id4">19 ms</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id5"><span class="strong"><strong>28 ms</strong></span></p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id6">56 ms</p>
</td>
</tr>
<tr>
<td style="border-bottom: 0.5pt solid;">
<p id="new_york_to_syd">New York to Sydney</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="km_id3">15,993 km</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id7">53 ms</p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id8"><span class="strong"><strong>80 ms</strong></span></p>
</td>
<td style="border-bottom: 0.5pt solid;">
<p id="ms_id9">160 ms</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>O desafio hoje é tentar reduzir cada vez mais o índice de refração dos meios de transmissão e chegar cada vez mais perto do &#8220;limite&#8221; da velocidade da luz (complicadíssimo de novo!).</p>
<p>Perceba que uma resolução de DNS (que acontece em todas as páginas web do mundo) requer um RTT, estabelecer uma conexão TCP (que é por onde uma requisição HTTP é trafegada, leia: <a title="Anatomia de uma requisição HTTP" href="http://www.cleberdantas.com/2011/12/anatomia-de-uma-requisicao-http/" target="_blank">Anatomia de uma requisição HTTP</a>) requer outro RTT, mas sabemos que acontece mais de uma resolução DNS por página e também que são estabelecidas mais de uma conexão TCP para trafegar as diversas requisições HTTP de uma página.</p>
<p>Mesmo sabendo disso ainda queremos ter aplicações rodando abaixo de 300ms (Are you fucking kidding me?).</p>
<p>Ok, sabemos que da para reaproveitar conexões TCP (keep-alive), usar <a title="CND" href="http://www.cleberdantas.com/2011/11/content-delivery-network-cdn-voce-ainda-vai-usar-uma/" target="_blank">CDN</a> e trazer para mais perto dos usuários nossos assets, assim diminuindo o percurso o que diminui a latência.</p>
<p>Agora você pode estar pensando que foi justamente por isso que você contratou aquela internet super veloz de 10/20Mbps do seu fornecedor de internet, para poder navegar muito mais rápido na Web certo? Errado!</p>
<p>Veja bem a largura de banda (bandwidth) se compararmos com um cano de água quer dizer simplesmente que quanto mais largo o cano mais água eu posso colocar dentro dele, mas se o cano estiver vazio demorará um tempo para o conteúdo do cano ir de um lado ao outro, entende?</p>
<p>Ai você deve estar se perguntando, pois é eu comprei mais banda para ter um cano mais largo e portanto transferir mais dados de um lado a outro, se eu tivesse uma banda menor (um cano mais fino) certamente demoraria mais para todos os dados viajar de um canto a outro. Perfeito! Você tem razão.</p>
<p>Mas perceba que a minha pergunta no começo do post foi se aumentar a banda quer dizer aumentar a velocidade de <strong>navegação na web.</strong> Eu não me referi por exemplo em assistir um vídeo, música, streaming e outras coisas porque para esse tipo de atividade uma banda maior faz TOTAL diferença, quanto mais melhor.</p>
<p>E por quê? Por quê para ver vídeo a banda faz diferença e para navegar na Web nem tanto?</p>
<p>Bom a resposta é na verdade simples, ouvir uma música ou ver um vídeo significa dizer que estamos utilizando o protocolo TCP (transporte) para fazer algo que ele foi desenhado para.</p>
<p>O protocolo TCP foi desenhado para transmitir dados em <em>long lived connections </em>(conexões duradouras) e também para <em>bulk data transfer</em> (grandes quantidades de dados).</p>
<p>Navegar na Web é justamente o oposto, utilizamos conexões curtas e que trafegam poucas quantidades de dados.</p>
<p>O Google fez dois experimentos visando ver a diferença de se aumentar a largura de banda e também de diminuir a latência e ver o que acontece com a navegação na Web (não vídeos, músicas e etc), veja o que acontece quando aumentamos a largura de banda ou então diminuimos a latência:</p>
<p><img src="http://www.cleberdantas.com/wp-content/uploads/2013/04/bandwidth-vs-latency.png" alt="Page Load Time vs. Bandwidth and Latency" /></p>
<p>&nbsp;</p>
<p>Quando fixamos a latência e aumentamos Mbps, depois de 5Mbps a diferença até 10Mbps é de apenas 15% (ajuda, mas nem tanto), primeiro gráfico.</p>
<p>Por outro lado quando fixamos a banda (nesse caso em 5Mbps) e vamos diminuindo de 20ms em 20ms (segundo gráfico) o ganho se mostra linear! Quanto menos latência maior é a velocidade de carregamento de nossas páginas! (sweet!)</p>
<p>O estudo do Google pode ser visto aqui: https://docs.google.com/a/chromium.org/viewer?a=v&amp;pid=sites&amp;srcid=Y2hyb21pdW0ub3JnfGRldnxneDoxMzcyOWI1N2I4YzI3NzE2</p>
<p>Ou seja, se seu objetivo é apenas aumentar a velocidade de navegação nas páginas Web aumentar a banda (para mais de 5Mbps) não vai te ajudar muito, mas se você conseguir derrubar as leis da física e fazer algo que ultrapasse a velocidade da luz ou diminua o índice de refração dos meios de transmissão será algo muito melhor =D.</p>
<p><strong>Oh wait!</strong></p>
<p>Você esta em uma rede WIFI? 3G? Bom ai o negócio é ainda pior, mas isso é assunto para outro post <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Good news </strong></p>
<p>HTTP 2.0 esta sendo desenvolvido e ele esta sendo baseado no protocolo <a title="SPDY" href="http://pt.wikipedia.org/wiki/SPDY" target="_blank">SPDY</a> que entre outras coisas faz um uso MUITOO melhor das conexões TCP (teremos melhoria de performance só de migrar \o/), mas ainda estamos numa fase inicial do projeto, vamos aguardar.</p>
<p><strong>Conclusão</strong></p>
<p>Navegar na Web é &#8220;latency bound&#8221;, aumentar a banda depois de um certo nível não faz sentido.</p>
<p>Diminuir a latência é muito difícil (leis da física caem sobre nossas cabeças)</p>
<p>HTTP 2.0 nos ajudará bastante</p>
<p>PS: Se gostou do post compartilhe com seus amigos, principalmente se forem Devs Web</p>
<p>Obrigado e vamos falar mais nos comentários?</p>
<p>Abs</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2013/04/latencia-largura-de-banda-e-a-velocidade-da-luz/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Banco de dados tabular</title>
		<link>http://www.cleberdantas.com/2013/03/banco-de-dados-tabular/</link>
		<comments>http://www.cleberdantas.com/2013/03/banco-de-dados-tabular/#comments</comments>
		<pubDate>Sat, 30 Mar 2013 15:50:47 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[NOSQL]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=300</guid>
		<description><![CDATA[Hoje muito se fala de NOSQL (Not Only SQL) com um claro objetivo (pelo menos pra mim) que basicamente diz que nós não deveríamos colocar *TODO* o nosso dado em um banco de dados relacional (afinal como a galera anda dizendo, não existe bala de prata certo?), ou seja, é pensar mais na característica do <a href="http://www.cleberdantas.com/2013/03/banco-de-dados-tabular/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoje muito se fala de <a title="NOSQL" href="http://pt.wikipedia.org/wiki/NoSQL" target="_blank">NOSQL</a> (Not Only SQL) com um claro objetivo (pelo menos pra mim) que basicamente diz que nós não deveríamos colocar *TODO* o nosso dado em um banco de dados relacional (afinal como a galera anda dizendo, não existe bala de prata certo?), ou seja, é pensar mais na característica do nosso dado e tentar armazená-lo em um data store, digamos, mais apropriado. (<a title="Persistência poliglota?" href="http://martinfowler.com/bliki/PolyglotPersistence.html" target="_blank">Persistência poliglota?</a>).</p>
<p>O que percebo na realidade é que as pessoas não entendem isso muito bem, não entendem o &#8220;NOSQL&#8221; (eu mesmo não entendia). Já fui a diversos eventos de tecnologia onde o tema foi abordado e sempre saia confuso, tentando encaixar o que alí tinha sido dito com a minha realidade, e de fato percebia o mesmo na cara dos demais e confirmava quando conversava com essas pessoas.</p>
<p>O problema é que sempre conseguimos encaixar tudo (qualquer tipo de dado) em um modelo relacional (em um banco de dados relacional) e sendo assím ficamos no mínimo ressabiados com qualquer abordagem &#8220;não relacional&#8221;, afinal foi o modelo relacional que aprendemos na escola e que sempre nos foi passado como &#8220;o cara&#8221;, são 40 anos utilizando este modelo ele realmente deve ser infalível (só que não).</p>
<p>Acredito que um ponto importante para toda essa dificuldade em entender ou aceitar modelos diferentes de dados esteja de fato no magnifico nome &#8220;<strong>banco de dados relacional</strong>&#8220;, embora não seja um nome errado isso gera confusão e um forte apego.</p>
<p>Os bancos de dados relacionais são baseados na <a title="teoria de conjuntos" href="http://pt.wikipedia.org/wiki/Teoria_dos_conjuntos" target="_blank">teoria de conjuntos</a>, lembram disso? Quem na faculdade não teve aquela famosa disciplina chamada <a title="álgebra relacional" href="http://pt.wikipedia.org/wiki/%C3%81lgebra_relacional" target="_blank">álgebra relacional</a> (forma de cálculo sobre conjuntos ou <strong>relações</strong>)? Tuplas, atributos, relacões&#8230; lembram??</p>
<p>Pois é o &#8220;relacional&#8221; dos bancos de dados relacionais não vem de <strong>relacionamentos</strong> e sim das relações, dos conjuntos ou como chamamos de maneira mais &#8220;moderna&#8221; das <strong>tabelas</strong>, é um banco de dados de tabelas onde aplicamos operações como: união, intersecção, diferença, produto cartesiano etc etc etc.</p>
<p>E se pensarmos como tal, deveríamos então deixar como responsabilidade para estes bancos de dados apenas dados com esta característica, dados tabulares.</p>
<p>Você já tentou modelar um domínio altamente conectado (tipo uma comunidade de pessoas) em um banco de dados relacional? Eu já e sofri com isso, modelar a gente modela certo? Tira as redundancias de dados (<a title="formas normais" href="http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados" target="_blank">formas normais</a>) e vai embora, mas e para tirar o dado de lá de dentro? Pois é, só sofrimento não é?.</p>
<p>Então vamos deixar a cargo dos bancos de dados relacionais o que eles são bons em tratar, dados tabulares, e vamos buscar outras alternativas para dados com outras características, beleza? Bora estudar meu povo! =D</p>
<p>Ahhh se tivessem me ensinando como <strong>banco de dados tabular </strong>eu não teria sofrido tanto&#8230; certamente não.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2013/03/banco-de-dados-tabular/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IIS para desenvolvedores</title>
		<link>http://www.cleberdantas.com/2012/02/iis-para-desenvolvedores/</link>
		<comments>http://www.cleberdantas.com/2012/02/iis-para-desenvolvedores/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 20:11:22 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[IIS]]></category>
		<category><![CDATA[Palestras]]></category>
		<category><![CDATA[apppool]]></category>
		<category><![CDATA[aspnetcore]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[iis]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=297</guid>
		<description><![CDATA[Abaixo os slides da minha palestra de hoje (03/02/2012) no Codificando Night Week Nessa palestra falarei bastante sobre IIS, mas voltado para o desenvolvedor. Vou tentar mostrar algumas coisas que aprendi depois de apanhar muito. IIS para desenvolvedores View more presentations from Cleber Dantas]]></description>
			<content:encoded><![CDATA[<p>Abaixo os slides da minha palestra de hoje (03/02/2012) no <a title="Codificando Night Week" href="http://comunidade.codificando.net/page/codificando-night-week" target="_blank">Codificando Night Week</a></p>
<p>Nessa palestra falarei bastante sobre <a href="http://www.iis.net/" title="IIS" target="_blank">IIS</a>, mas voltado para o desenvolvedor. Vou tentar mostrar algumas coisas que aprendi depois de apanhar muito.</p>
<div style="width:425px" id="__ss_11408334"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/cleberdantas/iis-para-desenvolvedores" title="IIS para desenvolvedores" target="_blank">IIS para desenvolvedores</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/11408334" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/cleberdantas" target="_blank">Cleber Dantas</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2012/02/iis-para-desenvolvedores/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>LABjs e JQuery Templates</title>
		<link>http://www.cleberdantas.com/2012/02/labjs-e-jquery-templates/</link>
		<comments>http://www.cleberdantas.com/2012/02/labjs-e-jquery-templates/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 23:34:39 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[Palestras]]></category>
		<category><![CDATA[WPO]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JQUERY Templates]]></category>
		<category><![CDATA[LABjs]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=288</guid>
		<description><![CDATA[Abaixo os slides da minha palestra de hoje (02/02/2012) no Codificando Night Week Nessa palestra falei bastante sobre Front-end e expliquei a motivação e o uso das bibliotecas javascript LABjs e JQuery Templates LABjs e JQuery Templates View more presentations from Cleber Dantas]]></description>
			<content:encoded><![CDATA[<p>Abaixo os slides da minha palestra de hoje (02/02/2012) no <a title="Codificando Night Week" href="http://comunidade.codificando.net/page/codificando-night-week" target="_blank">Codificando Night Week</a></p>
<p>Nessa palestra falei bastante sobre Front-end e expliquei a motivação e o uso das bibliotecas javascript <a title="LABjs" href="http://labjs.com/" target="_blank">LABjs</a> e <a title="JQuery Templates" href="http://api.jquery.com/category/plugins/templates/" target="_blank">JQuery Templates</a></p>
<div id="__ss_11393783" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="LABjs e JQuery Templates" href="http://www.slideshare.net/cleberdantas/labjs-e-jquery-templates" target="_blank">LABjs e JQuery Templates</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/11393783" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/cleberdantas" target="_blank">Cleber Dantas</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2012/02/labjs-e-jquery-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novidades do ASP.NET MVC 4</title>
		<link>http://www.cleberdantas.com/2012/02/novidades-do-asp-net-mvc-4/</link>
		<comments>http://www.cleberdantas.com/2012/02/novidades-do-asp-net-mvc-4/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 16:02:10 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Palestras]]></category>
		<category><![CDATA[bundles]]></category>
		<category><![CDATA[JQuery Mobile]]></category>
		<category><![CDATA[minification]]></category>
		<category><![CDATA[recipes]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=281</guid>
		<description><![CDATA[Abaixo os slides da minha palestra de ontem (01/02/2012) no Codificando Night Week Nessa palestra falei sobre as novidades do ASP.NET MVC 4, a galera gostou bastante. Novidades asp.net mvc 4 View more presentations from Cleber Dantas]]></description>
			<content:encoded><![CDATA[<p>Abaixo os slides da minha palestra de ontem (01/02/2012) no <a title="Codificando Night Week" href="http://comunidade.codificando.net/page/codificando-night-week" target="_blank">Codificando Night Week</a></p>
<p>Nessa palestra falei sobre as novidades do ASP.NET MVC 4, a galera gostou bastante.</p>
<div id="__ss_11387300" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Novidades asp.net mvc 4" href="http://www.slideshare.net/cleberdantas/novidades-aspnet-mvc-4" target="_blank">Novidades asp.net mvc 4</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/11387300" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/cleberdantas" target="_blank">Cleber Dantas</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2012/02/novidades-do-asp-net-mvc-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Anatomia de uma requisição HTTP</title>
		<link>http://www.cleberdantas.com/2011/12/anatomia-de-uma-requisicao-http/</link>
		<comments>http://www.cleberdantas.com/2011/12/anatomia-de-uma-requisicao-http/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 02:23:25 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[WPO]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[handshake]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[ttfb]]></category>
		<category><![CDATA[waterfall]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=228</guid>
		<description><![CDATA[Precisamos conhecer exatamente como as coisas acontecem por debaixo dos panos, só assim conseguiremos otimizar nossas páginas e deixar nossos usuários felizes . Muitos fatores podem afetar a performance de uma página, largura de banda, distância entre o cliente e o servidor, tamanho e quantidade de elementos em uma página, como esses elementos são carregados <a href="http://www.cleberdantas.com/2011/12/anatomia-de-uma-requisicao-http/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Precisamos conhecer exatamente como as coisas acontecem por debaixo dos panos, só assim conseguiremos otimizar nossas páginas e deixar nossos usuários felizes <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Muitos fatores podem afetar a performance de uma página, largura de banda, distância entre o cliente e o servidor, tamanho e quantidade de elementos em uma página, como esses elementos são carregados e etc.</p>
<p>Devemos começar por algum lugar a procura por gargalos, existem muitas ferramentas que podem nos ajudar com isso. O que todas elas possuem em comum é o que chamamos de <strong>Waterfall chart, </strong>um gráfico em cascata que mostra como os elementos da página estão sendo carregados.</p>
<div id="attachment_229" class="wp-caption aligncenter" style="width: 631px"><a href="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura1.png"><img class="size-full wp-image-229     " title="Figura 1: Aba Net do FireBug" src="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura1.png" alt="" width="621" height="125" /></a><p class="wp-caption-text">Figura 1: Aba Net do FireBug</p></div>
<div id="attachment_230" class="wp-caption aligncenter" style="width: 570px"><a href="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura2.png"><img class="size-full wp-image-230  " title="Figura 2: Waterfall View da ferramenta WebPageTest.org" src="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura2.png" alt="" width="560" height="146" /></a><p class="wp-caption-text">Figura 2: Waterfall View da ferramenta WebPageTest.org</p></div>
<p>As duas figuras acima mostram o Waterfall view da página inicial do site do Google.</p>
<p>Cada linha da cascata representa um componente de página sendo baixado para o browser do usuário.</p>
<p>Perceba que primeiramente o HTML é baixado e depois todos os componentes associados a ele (Imagens, arquivos CSS, arquivos JS e etc).</p>
<p>No caso da visualização do WebPageTest.org cada componente (linha) tem uma barra com pedaços coloridos que representam diferentes atividades para aquela requisição HTTP, vejamos:</p>
<div id="attachment_231" class="wp-caption aligncenter" style="width: 437px"><a href="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura3.png"><img class="size-full wp-image-231" title="Figura 3: Requisição HTTP" src="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura3.png" alt="" width="427" height="20" /></a><p class="wp-caption-text">Figura 3: Requisição HTTP</p></div>
<div id="attachment_232" class="wp-caption aligncenter" style="width: 546px"><a href="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura4.png"><img class="size-full wp-image-232  " title="Figura 4: Legenda" src="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura4.png" alt="" width="536" height="21" /></a><p class="wp-caption-text">Figura 4: Legenda</p></div>
<h2>DNS Lookup</h2>
<p>DNS (Domain Name System) Lookup é o processo de resolução de nome (de domínio) em IP, ou seja, é achar através de uma url como <a href="http://www.google.com.br/">http://www.google.com.br</a> o IP associado a mesma, que é o que o browser precisa para fazer a conexão com o servidor remoto.</p>
<p>Um ponto importantissímo é que um DNS Lookup irá acontecer para cada domínio diferente que sua página possa ter associado a ela, por exemplo: <a href="http://images.seusite.com.br/">http://images.seusite.com.br</a> , <a href="http://static1.seusite.com.br/">http://static1.seusite.com.br</a> . Cada um desses subdomínios gerará um novo DNS Lookup já que diferentes subdomínios podem estar associados a difentes IP’s.</p>
<h2>Initial Connection</h2>
<p>Todos as requisições HTTP que um browser faz para o servidor são trafegadas através de conexões TCP (Transmission Control Protocol), portanto toda requisição precisa de uma conexão TCP ativa para que se possa baixar os componentes da página.</p>
<p>Para se estabelecer uma conexão TCP um <em>three-way handshake</em> é feito entre o cliente e o servidor através de metadados                enviados nos pacotes. Os pacotes do handshake são muito pequenos e depois de enviados e reconhecidos pelas duas pontas a conexão é estabelecida e a transferência do arquivo pode ser iniciada.</p>
<div id="attachment_233" class="wp-caption aligncenter" style="width: 587px"><a href="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura5.png"><img class="size-full wp-image-233 " title="Figura 5: Handshake" src="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura5.png" alt="" width="577" height="180" /></a><p class="wp-caption-text">Figura 5: Handshake</p></div>
<ol>
<li>Browser envia um pacote com o metadado SYN (Sequence Number) para o servidor</li>
<li>Servidor responde com ACK (Acknowledged) e um outro SYN</li>
<li>Browser finaliza o cumprimente (handshake) com mais um ACK</li>
<li>Conexão estabelecida!</li>
</ol>
<h3>Keep-Alive Header</h3>
<p>Um novo header foi introduzido no HTTP 1.1 com o intuito de reaproveitar conexões TCP para difentes requisições. Quando utilizamos o header <strong>Connection: keep-alive </strong>uma conexão TCP aberta e que nao tenha dado timeout ainda será reaproveitada para trafegar outras requisições HTTP, evitando assim o overhead de se estabelecer conexões TCP (handshake).</p>
<div id="attachment_234" class="wp-caption aligncenter" style="width: 532px"><a href="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura6.png"><img class="size-full wp-image-234  " title="Figura 6: Visualização de conexões" src="http://www.cleberdantas.com/wp-content/uploads/2011/12/figura6.png" alt="" width="522" height="144" /></a><p class="wp-caption-text">Figura 6: Visualização de conexões</p></div>
<p>Perceba que em uma mesma linha diferentes tipos de componentes são trafegados em momentos diferentes, uma mesma conexão TCP é reaproveitada.</p>
<h2>Time to First Byte</h2>
<p>Time to First Byte também conhecido como TTFB é o tempo que o browser espera para receber o primeiro byte de informação da requisição, em páginas dinâmicas podemos considerar esse tempo a demora do processamento server side por exemplo. Se o TTFB de uma request esta muito alto, investigue pois pode ser um ponto importante para otimizações (índice de bancos de dados, melhorias de algoritmos na aplicação e etc).</p>
<h2>Content Download</h2>
<p>Depois de receber o primeiro byte, o “resto” em azul é o tempo de download do componente em sí.</p>
<p>Perceba na figura 3 que só de bater o olho percebemos que mais da metade do tempo gasto nessa requisição foi gasto com REDE!, DNS Lookup, estabelecimento de conexão TCP e TTFB (resumidamente consideramos esse tempo como simplesmente LATÊNCIA).</p>
<h2>Conclusão</h2>
<p>Digo novamente, nós desenvolvedores web precisamos conhecer muito tudo isso, esse tipo de conhecimento esta escondido e poucas pessoas tem ou tentam aprender, mas com certeza saber isso e muito mais faz de você um melhor desenvolvedor.</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2011/12/anatomia-de-uma-requisicao-http/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Content Delivery Network – CDN, Você ainda vai usar uma</title>
		<link>http://www.cleberdantas.com/2011/11/content-delivery-network-cdn-voce-ainda-vai-usar-uma/</link>
		<comments>http://www.cleberdantas.com/2011/11/content-delivery-network-cdn-voce-ainda-vai-usar-uma/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 23:00:03 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[HTTP]]></category>
		<category><![CDATA[WPO]]></category>
		<category><![CDATA[conceitos]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=212</guid>
		<description><![CDATA[Uma CDN (Content Delivery Network) é uma rede de computadores distribuídos geograficamente com cópias de conteúdos a serem acessados. A CDN tem dois grandes objetivos o primeiro é tornar mais próximo o conteúdo que esta sendo distribuído e solicitado (Imagens, Stylesheets, Scripts, Flashs, Músicas, PDF’s e etc) dos usuários assim diminuindo o tempo de resposta e <a href="http://www.cleberdantas.com/2011/11/content-delivery-network-cdn-voce-ainda-vai-usar-uma/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Uma <strong>CDN </strong>(<strong>Content Delivery Network</strong>) é uma rede de computadores distribuídos geograficamente com cópias de conteúdos a serem acessados.</p>
<p>A CDN tem dois grandes objetivos o primeiro é tornar mais próximo o conteúdo que esta sendo distribuído e solicitado (Imagens, Stylesheets, Scripts, Flashs, Músicas, PDF’s e etc) dos usuários assim diminuindo o tempo de resposta e latência destes componentes, o segundo é diminuir custos com banda/tráfego de dados (do site que esta utilizando a CDN) e por conseqüência diminuir a quantidade de requisições diretas ao servidor real do site desafogando e muito a infra “local”.</p>
<p>É normal um site sendo acessado de uma país ter grandes diferenças no tempo de resposta das páginas quando acessado de um país vizinho, até mesmo diferenças entre cidades ou bairros. Isto ocorre devido ao roteamento entre as requisições e os servidores que estão sendo solicitados que dependendo do link ou região que o usuário se encontra os saltos são maiores ou menores e com velocidades diferentes também.</p>
<p>Uma solução interessante seria entregar para cada usuário ou região o conteúdo que esteja mais próximo da requisição que esta sendo feita e é justamente ai que uma CDN faz a diferença melhorando incrivelmente a experiência do usuário e o tempo de resposta dos componentes que estão sendo solicitados pelo usuário.</p>
<p>Existem CDN’s comerciais ou pagas e CDN’s gratuitas abaixo listo algumas bem famosas e recomendadas pela indústria.</p>
<p>CDN’s Comerciais:<br />
<a href="http://www.akamai.com/" target="_blank">Akamai</a><br />
<a href="http://www.edgecast.com/" target="_blank">EdgeCast Networks</a><br />
<a href="http://www.limelightnetworks.com/" target="_blank">Limelight Networks</a></p>
<h2>Curiosidade</h2>
<p>Daniel M. Lewin um dos fundadores da Akamai estava em um dos vôos do 11 de setembro de 2001 e faleceu.</p>
<h2>Conclusão</h2>
<p>Aumente a performance do tempo de resposta dos componentes de suas páginas, faça os usuários mais felizes e ainda diminua alguns gastos com o alto tráfego que você tem hoje sem uma CDN pra te dar uma força.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2011/11/content-delivery-network-cdn-voce-ainda-vai-usar-uma/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Web Performance Optimization – WPO</title>
		<link>http://www.cleberdantas.com/2011/11/web-performance-optimization-wpo/</link>
		<comments>http://www.cleberdantas.com/2011/11/web-performance-optimization-wpo/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 22:52:08 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[Mercado]]></category>
		<category><![CDATA[WPO]]></category>
		<category><![CDATA[conceitos]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=209</guid>
		<description><![CDATA[A cada dia novas startups surgem com idéias inovadoras em ramos diferentes, mas o que todas elas têm em comum é que normalmente praticamente toda sua operação e infraestrutura vivem na Web, a “lojinha”, o “ganha pão” está e somente é acessível através de uma URL. Isto requer um investimento menor já que é mais <a href="http://www.cleberdantas.com/2011/11/web-performance-optimization-wpo/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A cada dia novas startups surgem com idéias inovadoras em ramos diferentes, mas o que todas elas têm em comum é que normalmente praticamente toda sua operação e infraestrutura vivem na Web, a “lojinha”, o “ganha pão” está e somente é acessível através de uma URL.</p>
<p>Isto requer um investimento menor já que é mais barato no começo criar um site do que montar por exemplo uma loja física (comparando a outros negócios).</p>
<p>Uma vez que a empresa vive através da World Wide Web é fundamental que o tal site esteja otimizado afim de garantir entre outras coisas um rápido atendimento (e a qualquer momento, afinal acho que essa é uma vantagem da Web), satisfação do cliente, um baixo (ou o mais baixo possível) custo para manter a “lojinha” aberta (o site do ar), fidelização da clientela, aumento da taxa de conversão, uma fácil descoberta de seus produtos ou serviços por potenciais interessados (SEO), etc etc etc.</p>
<p><strong>WPO – Web Performance Optimization</strong> é uma recente área de estudo e otimização pra Web Sites e deve ser observada e utilizada cada dia mais por todos aqueles que pretendem trabalhar ou até viver de internet (no caso dos empreendedores). WPO é parecido com SEO do ponto de vista que também traz mais trafego para o site, mas não para por aí, de acordo com alguns cases que veremos abaixo também melhora a experiência do usuário, aumenta receita e diminui custos operacionais.</p>
<p>Parece ridículo, mas apenas 1 segundo a mais ou a menos no tempo de carregamento de uma página faz muita diferença dependendo de qual site estamos falando, veja alguns exemplos:</p>
<p><strong>Bing</strong> – 2 segundos a mais no tempo de resposta de suas páginas é igual a 4,3% de receita a menos por usuário.</p>
<p><strong>Google</strong> – 400 milisegundos de delay é equivalente a 0,59% de buscas a menos por usuário.</p>
<p><strong>AOL</strong> – Atestou que usuários que carregam páginas rápidas navegam 50% mais que usuários com páginas com carregamentos mais demorados (50% de páginas a mais por usuário)</p>
<p><strong>ShopZilla</strong> – Diminuiu o tempo de carregamento das páginas de 7 segundos para 2 segundos e conseguiu aumentar de 7% para 12% em receita e diminuir em 50% os custos com hardware e banda.</p>
<p>Fonte: <em>Gomez Inc</em></p>
<p>Empresas sérias que tem milhares ou milhões de acessos diariamente devem sem sombra de dúvidas melhorar a performance de suas páginas, simplesmente você ganha mais e gasta menos! veja que maravilha!</p>
<p>Há varias formas e técnicas para aumentar a performance das páginas de nossos sites, mas isso é assunto para um outro post. (em breve postarei algumas coisas.)</p>
<p><strong>Importante</strong>: Não poderia deixar de dizer que o Google já há algum tempo vem utilizando o fator “velocidade/performance” como critério para o resultado de suas buscas, ou seja, agora páginas rápidas ou performáticas são melhor indexadas pelo maior mecanismo de buscas do planeta.</p>
<h2>Conclusão</h2>
<p>Melhorar a performance de nossas páginas diminui custos de operação com hardware e banda (pois se trafega menos dados e diminui em manutenção dos servidores, por exemplo), aumenta tempo de navegação e pageview por usuário (logo da pra vender mais, aumentando a receita), fortifica a marca afinal sites rápidos são adorados pelos usuários e eles recomendarão com certeza, etc e tal!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2011/11/web-performance-optimization-wpo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cuidado com os Cookies, use cookie-free domains</title>
		<link>http://www.cleberdantas.com/2011/11/cuidado-com-os-cookies-cookie-free-domains/</link>
		<comments>http://www.cleberdantas.com/2011/11/cuidado-com-os-cookies-cookie-free-domains/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 23:16:14 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=177</guid>
		<description><![CDATA[Post rápido prometo. Piadinhas de cookie a parte a coisa é bem séria. É muito comum nós Web Developers guardarmos informações em cookie(s) no(s) browser(s) do(s) usuário(s), certo? Sim certo! As vezes até “sem querer” fazemos isso (até sem saber), por exemplo, vários frameworks web (inclusive o ASP.NET) armazena no cookie informações para fazer a <a href="http://www.cleberdantas.com/2011/11/cuidado-com-os-cookies-cookie-free-domains/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Post rápido prometo. Piadinhas de cookie a parte <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  a coisa é bem séria.</p>
<p>É muito comum nós Web Developers guardarmos informações em cookie(s) no(s) browser(s) do(s) usuário(s), certo? Sim certo!</p>
<p>As vezes até “sem querer” fazemos isso (até sem saber), por exemplo, vários frameworks web (inclusive o <a title="ASP.NET" href="http://www.cleberdantas.com/categoria/aspnet/" target="_blank">ASP.NET</a>) armazena no cookie informações para fazer a autenticação dos usuários na aplicação.</p>
<h2>Ok, mas e daí!?</h2>
<p>Bom, e daí que não é através de mágica que nós conseguimos acessar lá no SERVER os dados do cookie que fica no BROWSER do usuário.</p>
<p>A toda request feita para o servidor pelo browser o cookie do usuário (sem piadinhas aqui ok? <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) vai junto, é trafegado na request. Sério? Sim, sério.</p>
<p>A grande questão aqui é que o cookie é baseado em subdomínio, ou seja, se eu gero um cookie qualquer para <a href="http://www.meusite.com.br/">www.meusite.com.br</a>, toda request feita para o “www” levará o cookie junto (sem piadas novamente), inclusive requisições para imagens, arquivos css e javascript e tudo que estiver apontando para o subdomínio “www”.</p>
<p>Agora cá pra gente, por que raios a gente precisa trafegar os cookies para imagens e arquivos estáticos em geral? Não precisamos! Não serve pra nada, nem pra gente e nem para o servidor, é um grande desperdício!</p>
<h2>O que eu faço então?</h2>
<p>Use <em>cookie-free domains</em>, se nós criarmos um novo subdomínio, por exemplo, static.meusite.com.br e fizermos com que todos os arquivos estáticos apontem para este subdomínio bingo! Os cookies não serão trafegados porque eles foram gerados para o “www” e não para o “static”, dessa forma conseguimos economizar alguns Kilobytes no final do mês no tráfego geral do site <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , chique não?</p>
<p>Qualquer dúvida ou sugestão, deixe-me saber nos comentários</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2011/11/cuidado-com-os-cookies-cookie-free-domains/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DOMContentLoaded vs load</title>
		<link>http://www.cleberdantas.com/2011/11/domcontentloaded-vs-load/</link>
		<comments>http://www.cleberdantas.com/2011/11/domcontentloaded-vs-load/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 00:51:03 +0000</pubDate>
		<dc:creator>cleberdantas</dc:creator>
				<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://www.cleberdantas.com/?p=159</guid>
		<description><![CDATA[Olá pessoal, Resolvi escrever este pequeno post para explicar a diferença entre dois (famosos) eventos que são disparados quando uma página é carregada, são eles: DOMContentLoaded; load Estes eventos são muito importantes e devemos saber a real diferença entre eles, assim usaremos cada um deles de maneira apropriada DOMContentLoaded Também conhecido em JQuery como: $(document).ready <a href="http://www.cleberdantas.com/2011/11/domcontentloaded-vs-load/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal,</p>
<p>Resolvi escrever este pequeno post para explicar a diferença entre dois (famosos) eventos que são disparados quando uma página é carregada, são eles:</p>
<ul>
<li><strong>DOMContentLoaded;</strong></li>
<li><strong>load</strong></li>
</ul>
<p>Estes eventos são muito importantes e devemos saber a real diferença entre eles, assim usaremos cada um deles de maneira apropriada <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>DOMContentLoaded</h2>
<p>Também conhecido em JQuery como: $(document).ready</p>
<p>Este evento é disparado quando o documento HTML é carregado e parseado (analisado), neste momento o DOM (<a title="Document Object Model" href="http://www.w3.org/TR/DOM-Level-2-Core/introduction.html" target="_blank">Document Object Model</a>) é construído e esta pronto para ser acessado.</p>
<p>Não há a necessidade de esperarmos todo o resto da página ser carregado para acessarmos a estrutura de objetos e fazermos manipulações <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<h2>Load</h2>
<p>Também conhecido em JQuery como: $(window).load</p>
<p>Este evento por sua vez é disparado quando TODOS os componentes da página são carregados: Imagens, CSSs, JavaScripts, Frames, Flashs e etc.</p>
<p>Devemos usar este evento somente quando quisermos fazer algo depois do carregamento COMPLETO da tal página.</p>
<h2>Exemplo de DOMContentLoaded vs load</h2>
<p><a href="http://www.cleberdantas.com/wp-content/uploads/2011/11/DOM_LOAD.jpg"><img class="aligncenter size-full wp-image-158" title="DOM_LOAD" src="http://www.cleberdantas.com/wp-content/uploads/2011/11/DOM_LOAD.jpg" alt="" width="584" height="393" /></a><br />
Tirei a imagem acima do FireBug uma extensão do Firefox.</p>
<p>Perceba duas linhas verticais uma azul e outra vermelha, que representam os eventos DOMContentLoaded e load respectivamente. No tooltip ainda conseguimos ver a quantidade de tempo que se passou até que esses eventos fossem disparados, interessante não?</p>
<p>Quanto mais perto uma linha da outra mais rápido sua página esta sendo carregada!</p>
<h2>Componentes de terceiros – CUIDADO!</h2>
<p>Sim! Botões do Facebook, coisas do Twitter e etc, tudo que for de terceiro que estiver “pindurado” em sua página vai interferir ou postergar o evento load de sua página, portanto cuidado!</p>
<p>O ideal nesses casos é carregar tais componentes de modo assíncrono, mas isso é assunto para um próximo post <img src='http://www.cleberdantas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Espero ter contribuído de alguma forma</p>
<p>Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cleberdantas.com/2011/11/domcontentloaded-vs-load/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
