<?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>Boaglio.com &#187; www</title>
	<atom:link href="http://www.boaglio.com/index.php/category/www/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.boaglio.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 Nov 2011 00:48:27 +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>O que realmente acontece quando você acessa uma URL</title>
		<link>http://www.boaglio.com/index.php/2011/05/02/o-que-realmente-acontece-quando-voce-acessa-uma-url/</link>
		<comments>http://www.boaglio.com/index.php/2011/05/02/o-que-realmente-acontece-quando-voce-acessa-uma-url/#comments</comments>
		<pubDate>Mon, 02 May 2011 04:00:11 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=350</guid>
		<description><![CDATA[Acontece bastante coisa quando você acessa um site e de tanto fazer isso a gente se esquece de como funciona e deixa de valorizar a enorme infraestrutura que mantém tudo isso funcionando. Eu li um artigo esses dias e resolvi adaptar para uma versão brasileira, boa leitura! Como um desenvolvedor de software, certamente você tem [...]]]></description>
			<content:encoded><![CDATA[<p>Acontece bastante coisa quando você acessa um site e de tanto fazer isso a gente se esquece de como funciona e deixa de valorizar a enorme infraestrutura que mantém tudo isso funcionando. Eu li um <a href="http://www.boaglio.com/go.php?http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/" title="(97 hits)">artigo</a> esses dias e resolvi adaptar para uma versão brasileira, boa leitura!</p>
<p>Como um desenvolvedor de software, certamente você tem uma ideia bem por cima de como funcionam as aplicações web e quais os tipos de tecnologias estão envolvidos: o navegador, HTTP, HTML, o servidor web, gerenciamento de requests e  assim por diante.</p>
<p>Neste artigo, vamos dar uma olhada mais a fundo na seqüência de eventos que acontecem quando você visita um URL.</p>
<p><strong>1.  Você digita o endereço do site (URL) no navegador web:</strong></p>
<p>Tudo começa aqui:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/04/https1.png" title="(1838 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/04/https1.png" alt="" title="https1" width="800"   class="aligncenter size-full wp-image-651" /></a><br />
<script type="text/javascript">google_ad_client = "pub-3816383189082763";google_ad_slot = "0931072200";google_ad_width = 468;google_ad_height = 60;</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></p>
<p><strong><br />
2. O navegador procura o endereço IP para o nome do domínio<br />
</strong></p>
<p> <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/04/https2.png" title="(1378 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/04/https2.png" alt="" title="https2" width="228" height="96" class="aligncenter size-full wp-image-653" /></a></p>
<p>O primeiro passo para a navegação é descobrir o endereço IP do domínio visitado. </p>
<p>O lookup do <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Domain_Name_System" title="(57 hits)">DNS</a> acontece da seguinte forma:</p>
<ul>
<li> <strong> Cache do navegador </strong> – o navegador faz cache dos registros do DNS por algum tempo. Curiosamente o sistema operacional não fala ao navegador o tempo de vida de cada registro do DNS, e portanto o navegador guarda por um tempo fixo que varia entre 2 e 30 minutos dependendo do navegador.</li>
<li>  <strong>Cache do sistema operacional</strong> &#8211; se o cache do browser não contém o registro desejado, o navegador faz uma chamada de sistema (gethostbyname no Windows e Linux). O sistema operacional tem seu próprio cache.</li>
<li>  <strong>  Cache do roteador</strong> &#8211; a requisição continua no seu roteador, que normalmente tem seu cache de DNS próprio.</li>
<li>    <strong>  <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/ISP" title="(58 hits)">ISP</a> DNS cache</strong> – The next place checked is the cache ISP&#8217;s DNS server. </li>
<li>    <strong>  Cache DNS do seu provedor </strong> &#8211; O próximo lugar é o servidor verificar o cache de DNS do seu provedor (Internet Service Provider), que naturalmente também possui um cache.
</li>
<p>   <strong>  <strong>Busca recursiva</strong> &#8211; Seu servidor de DNS do seu provedor começa uma busca recursiva, a partir do servidor de nomes raiz, através do nível maior .com e descendo para o servidor de nomes do Facebook.  Normalmente, o servidor DNS tem os nomes dos servidores .com em cache, e assim que um acesso ao servidor de nomes raiz não será necessário.</strong>
</ul>
<p>Aqui está um diagrama do que uma pesquisa DNS recursivo parece:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/04/https3.png" title="(1650 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/04/https3-1024x360.png" alt="" title="https3" width="1024" height="360" class="aligncenter size-large wp-image-656" /></a></p>
<p>Uma coisa preocupante sobre o DNS é que todo o domínio wikipedia.org ou facebook.com mapeia para um único endereço IP, mas felizmente, existem maneiras de diminuir esse gargalo:</p>
<ul>
<li>      <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Round_robin_DNS" title="(62 hits)">Round-robin DNS</a> é uma solução onde o DNS retorna vários endereços IP, em vez de apenas um.  Por exemplo, o facebook.com realmente mapeia para quatro endereços IP.</li>
<li>      <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Load_balancing_(computing)" title="(60 hits)">Load-balancer</a> (balanceamento de carga) é um hardware que escuta um específico endereço IP e encaminha a requisição para outros servidores. A maioria dos grandes sites usa um balanceamento de carga de alta performance que costuma custar caro.</li>
<li>      Geographic DNS melhora a escalabilidade, mapeando um nome de domínio para diferentes endereços IP , dependendo da localização geográfica do cliente.<br />
Isso é ótimo para a hospedagem de conteúdo estático para que servidores diferentes não tenham que atualizar o estado compartilhado toda hora.
</li>
<li>     <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Anycast#Domain_Name_System" title="(81 hits)">Anycast</a> é uma técnica de roteamento em que um único endereço IP mapeia múltiplos servidores físicos. Infelizmente o anycast não se encaixa bem com TCP e raramente é usado nesse cenário. </li>
<p>A maioria dos servidores de DNS próprios usam anycast para alcançar alta disponibilidade e baixa latência do DNS.</p>
</ul>
<p><strong>3. O navegador envia uma requisição HTTP para o servidor web</strong></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https4.png" title="(1096 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https4.png" alt="" title="https4" width="216" height="95" class="aligncenter size-full wp-image-659" /></a></p>
<p>Você pode ter certeza que a página do Facebook não virá do cache do browser, porque as páginas dinâmicas expiraram muito rápido ou imediatamente (a data de validade vem fixa para o passado).</p>
<p>Assim, o browser vai enviar esta requisição para o servidor Facebook:</p>
<blockquote><p>
GET / HTTP/1.1</p>
<p>Host: facebook.com</p>
<p>User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110407 Firefox/4.0</p>
<p>Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</p>
<p>Accept-Language: pt-br,en-us;q=0.7,en;q=0.3</p>
<p>Accept-Encoding: gzip, deflate</p>
<p>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7</p>
<p>Keep-Alive: 115</p>
<p>Connection: keep-alive</p>
<p>Cookie: datr=1261098066-a8f926188683ac0ea09fcd9f28bba06e82e2304fa1d5ced3f9ffa; lsd=5J8NE; reg_fb_gate=http%3A%2F%2Fwww.facebook.com%2F; reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F; wd=1050&#215;756
</p></blockquote>
<p>A requisição GET chama a URL para buscar: &#8220;http://facebook.com/&#8221;. O navegador se identifica (<em>User-Agent </em>no cabeçalho), e afirma que tipos de respostas vai aceitar (Accept e Accept-Encoding no cabeçalho). O Connection do cabeçalho pede ao servidor para manter a conexão TCP aberta para outros pedidos.</p>
<p>O pedido inclui também os cookies que o navegador tem para este domínio. Como você provavelmente já sabe, os cookies são valores chave do tipo chave=valor , que completam o estado de um site, entre diferentes requisições de páginas.  E assim, os cookies armazenam o nome do usuário logado, um número secreto que foi atribuído ao usuário pelo servidor, algumas das configurações do usuário, etc. Os cookies serão guardados em um arquivo de texto no caso do Internet Explorer e em um banco de dados no caso do Firefox, e enviados para o servidor a cada requisição.</p>
<p>Existe uma grande variedade de ferramentas que permitem visualizar as requisições HTTP e suas respostas correspondentes.<br />
Minha ferramenta favorita para a visualização do tráfego HTTP no IE é o <a href="http://www.boaglio.com/go.php?http://www.fiddler2.com/fiddler2/" title="(76 hits)">fiddler</a>, e no Firefox temos o <a href="http://www.boaglio.com/go.php?http://www.getfirebug.com" title="(276 hits)">Firebug</a> e também o <a href="http://www.boaglio.com/go.php?http://livehttpheaders.mozdev.org/" title="(71 hits)">Live HTTP Headers</a> .</p>
<p>Além das requisições GET, outro tipo de requisições que você pode estar familiarizado com uma requisição POST, tipicamente usado para enviar formulários. </p>
<p>A requisição GET envia os seus parâmetros através do URL (ex.: http://robozzle.com/puzzle.aspx? Id = 85) e a requisição POST envia os parâmetros no corpo da requisição, logo abaixo do cabeçalho.</p>
<p>A barra final da URL &#8220;http://facebook.com/&#8221; é importante. Neste caso, o navegador pode seguramente adicionar a barra. Para URLs com um formulário http://exemplo.com/pastaOuArquivo  o navegador não pode adicionar automaticamente uma barra, porque não está claro se pastaOuArquivo é uma pasta ou um arquivo. Nesses casos, o navegador vai visitar a URL sem a barra, e o servidor responderá com um redirecionamento, resultando em uma ida desnecessária.</p>
<p><strong>4. O servidor responde com um redirecionamento permanente ao Facebook</strong></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https5.png" title="(947 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https5.png" alt="" title="https5" width="214" height="87" class="aligncenter size-full wp-image-663" /></a></p>
<p>Esta é a resposta que o servidor Facebook enviou de volta para a requisição do navegador:</p>
<blockquote><p>
HTTP/1.1 301 Moved Permanently</p>
<p>Location: http://www.facebook.com/</p>
<p>Content-Type: text/html; charset=utf-8</p>
<p>X-FB-Server: 10.27.51.117</p>
<p>X-Cnection: close</p>
<p>Date: Sun, 01 May 2011 04:05:36 GMT</p>
<p>Content-Length: 0
</p></blockquote>
<p>O servidor respondeu com uma resposta de  &#8220;<em>301 Movido Permanentemente</em>&#8221; para dizer ao navegador para ir para &#8220;http://www.facebook.com/&#8221; em vez de &#8220;http://facebook.com/&#8221;.</p>
<p>Há razões interessante porque o servidor insiste no redirecionamento em vez de responder imediatamente com a página web que o usuário quer ver.<br />
Uma das razões tem a ver com o motor de pesquisa de posições (rankings). </p>
<p>Veja, se existirem duas URLs para a mesma página, digamos http://www.igoro.com/ e http://igoro.com/, motor de busca pode considerar dois sites diferentes, cada uma com menos links recebidos e assim, uma classificação mais baixa.<br />
Os motores de busca compreendem o redirecionamento permanente (301), e combinam os links recebidos de ambas as fontes em um ranking único.</p>
<p>Além disso, várias URLs para o mesmo conteúdo não ficam facilmente em cache (cache-friendly) .  Quando uma parte do conteúdo tem vários nomes, ela pode  aparecer várias vezes no mesmo cache.</p>
<p><strong>5. O browser segue o redirecionamento</strong></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https6.png" title="(898 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https6.png" alt="" title="https6" width="216" height="95" class="aligncenter size-full wp-image-665" /></a></p>
<p>O navegador agora sabe que &#8220;http://www.facebook.com/&#8221; é o URL correto para ir, e assim ele envia um pedido GET:</p>
<p>http://www.facebook.com/</p>
<blockquote><p>GET / HTTP/1.1</p>
<p>Host: www.facebook.com</p>
<p>User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110407 Firefox/4.0</p>
<p>Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</p>
<p>Accept-Language: pt-br,en-us;q=0.7,en;q=0.3</p>
<p>Accept-Encoding: gzip, deflate</p>
<p>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7</p>
<p>Keep-Alive: 115</p>
<p>Connection: keep-alive</p>
<p>Cookie: datr=1261098066-a8f926188683ac0ea09fcd9f28bba06e82e2304fa1d5ced3f9ffa; lsd=5J8NE; reg_fb_gate=http%3A%2F%2Fwww.facebook.com%2F; reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F; wd=1050&#215;756</p>
</blockquote>
<p>O significado dos cabeçalhos é o mesmo que para a primeira requisição.</p>
<p><strong>6.O servidor trata a requisição</strong></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https7.png" title="(717 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https7.png" alt="" title="https7" width="93" height="78" class="aligncenter size-full wp-image-666" /></a></p>
<p>O servidor receberá o pedido GET, processará e enviará uma resposta.</p>
<p>Isto pode parecer uma tarefa simples, mas na verdade há um monte de coisas interessantes que acontecem aqui &#8211; mesmo em um site simples como o meu blog, não só em um site altamente escalável como o Facebook.</p>
<p>    * Software do servidor Web</p>
<p>    O software de servidor web (por exemplo, o IIS ou Apache) recebe a requisição HTTP e decide qual gerenciador de requisição (request handler) deve ser executado para processar este pedido.</p>
<p>  Um manipulador de requisição é um programa (em ASP.NET, PHP, Ruby, &#8230;) que lê a requisição e gera o código HTML para a resposta.</p>
<p>No caso mais simples, os gerenciadores de requisição podem ser armazenados em uma hierarquia de arquivo cuja estrutura reflete a estrutura de URL, e assim por exemplo http://example.com/pasta1/pagina1.aspx URL irá mapear para o arquivo /httpdocs/pasta1/pagina1.aspx ou C:\site\pasta1\pagina1.aspx . </p>
<p>O software de servidor web também pode ser configurado para que as URLs sejam mapeadas para os gerenciadores de requisição, e assim a URL público da pagina1.aspx poderia ser http://example.com/pasta1/pagina1.</p>
<p>    * Request handler </p>
<p>     O gerenciador lê a requisição, seus parâmetros e os seus cookies. Ele vai ler e, eventualmente, atualizar alguns dados armazenados no servidor. Em seguida, o gerenciador de requisição gerará uma resposta HTML. </p>
<p> Uma dificuldade interessante que cada site dinâmico enfrenta é a forma de armazenamento de dados. Os sites menores, muitas vezes, ter um único banco de dados SQL para armazenar seus dados, mas sites que armazenam uma grande quantidade de dados e / ou tem muitos visitantes têm de encontrar uma maneira de dividir o banco de dados através de múltiplas máquinas.As soluções incluem sharding (divisão de uma tabela em vários bancos de dados com base na chave primária), replicação e uso de bases de dados simplificada com consistência semântica enfraquecida.</p>
<p>Uma técnica para manter a atualização dos dados mais leve é adiar alguns dos trabalhos para um trabalho em lote. Por exemplo, o Facebook tem que atualizar o newsfeed em tempo hábil, mas os dados de apoio do recurso &#8220;pessoas que você pode conhecer&#8221;  pode apenas ser atualizado de noite . O trabalho em lote resulta em um pouco de lentidão geral nas atualizações com dados menos importantes, mas pode fazer atualizações de dados muito mais rápido e mais simples.</p>
<p><strong>7. O servidor envia de volta uma resposta HTML</strong></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https8.png" title="(773 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https8.png" alt="" title="https8" width="214" height="87" class="aligncenter size-full wp-image-667" /></a></p>
<p>Aqui está a resposta que o servidor gerado e enviado de volta:</p>
<blockquote><p>HTTP/1.1 200 OK</p>
<p>Cache-Control: private, no-cache, no-store, must-revalidate</p>
<p>Expires: Sat, 01 Jan 2000 00:00:00 GMT</p>
<p>P3P: CP=&#8221;Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p&#8221;</p>
<p>Pragma: no-cache</p>
<p>Set-Cookie: reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F; path=/; domain=.facebook.com</p>
<p>Set-Cookie: wd=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly</p>
<p>Content-Encoding: gzip</p>
<p>Content-Type: text/html; charset=utf-8</p>
<p>X-FB-Server: 10.144.145.118</p>
<p>X-Cnection: close</p>
<p>Transfer-Encoding: chunked</p>
<p>Date: Sun, 01 May 2011 04:05:37 GMT
</p></blockquote>
<p>O cabeçalho<em> Content-Encoding</em> informa ao navegador que a resposta do corpo é comprimido utilizando o algoritmo gzip.<br />
Depois de descomprimir o blob, você verá o código HTML que você esperaria:</p>
<p><code><br />
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;<br />
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;<br />
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;pt&quot; lang=&quot;pt&quot; id=&quot;facebook&quot; class=&quot; no_js&quot;&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&quot;Content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;<br />
&lt;meta http-equiv=&quot;Content-language&quot; content=&quot;pt&quot; /&gt;<br />
&lt;script type=&quot;text/javascript&quot;&gt;<br />
//&lt;![CDATA[<br />
CavalryLogger=false;window._script_path = &quot;\/index.php&quot;;window._EagleEyeSeed=&quot;wP2A&quot;;__rm = {};<br />
//]]&gt;<br />
&lt;/script&gt;&lt;noscript&gt; &lt;meta http-equiv=refresh content=&quot;0; URL=/?_fb_noscript=1&quot; /&gt; &lt;/noscript&gt;</p>
<p>&lt;meta name=&quot;robots&quot; content=&quot;noodp,noydir&quot; /&gt;<br />
&lt;meta name=&quot;description&quot; content=&quot; O Facebook &eacute; uma rede social que re&uacute;ne pessoas a seus amigos e &agrave;queles com quem trabalham, estudam e convivem. As pessoas participam do Facebook para manter contato com seus amigos, carregar um n&uacute;mero ilimitado de fotos, compartilhar links e v&iacute;deos e aprender mais sobre as pessoas que conhecem.&lt;br /&gt;&lt;br /&gt;&quot; /&gt;<br />
&lt;link rel=&quot;alternate&quot; media=&quot;handheld&quot; href=&quot;http://www.facebook.com/&quot; /&gt;<br />
&lt;title&gt;Bem-vindo ao Facebook - acesse, cadastre-se ou saiba mais.&lt;/title&gt;&lt;noscript&gt;&lt;meta http-equiv=&quot;X-Frame-Options&quot; content=&quot;deny&quot; /&gt;&lt;/noscript&gt;<br />
 &lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;http://b.static.ak.fbcdn.net/rsrc.php/v1/yZ/r/dBoSKLwxlh0.css&quot; /&gt;</p>
<p> &lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/CkuMXVTz1uq.css&quot; /&gt;<br />
 &lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;http://b.static.ak.fbcdn.net/rsrc.php/v1/y8/r/--vMHqIJi-S.css&quot; /&gt;</p>
<p></code></p>
<p>Além de compressão, os cabeçalhos especificam se e como fazer o cache da página, e se existem cookies para definir (nenhum nesta resposta), informações particulares, etc.</p>
<p>Observe que o cabeçalho define o<em> Content-Type</em> como <em>text/html</em>.  O cabeçalho instrui o navegador para renderizar o conteúdo da resposta como HTML, em vez de dizer como fazer o download de um arquivo.  O navegador usará o cabeçalho para decidir como interpretar a resposta, mas no caso do IE pode considerar também a extensão da URL.</p>
<p><strong>8.  O navegador começa a renderização da página HTML</strong></p>
<p>Antes mesmo do navegador  receber todo o documento HTML, ela começa a tornar o renderizar o site:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https9.png" title="(1013 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https9-1024x520.png" alt="" title="https9" width="500" height="253" class="aligncenter size-large wp-image-668" /></a></p>
<p><strong>9. O navegador envia requisições para os objetos dentro do HTML</strong></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https10.png" title="(855 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https10.png" alt="" title="https10" width="214" height="126" class="aligncenter size-full wp-image-669" /></a></p>
<p>Como o navegador processa o HTML, ele vai notar as tags que exigem busca de outras URLs. </p>
<p>O browser enviará uma requisição GET para recuperar cada um desses arquivos.</p>
<p>Aqui estão algumas URLs que a minha visita a facebook.com baixou:</p>
<p>    * Imagens</p>
<p>http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/kk8dc2UJYJ4.png</p>
<p>      … &#8230;<br />
    * Folhas de estilo (CSS)</p>
<p>http://b.static.ak.fbcdn.net/rsrc.php/v1/yZ/r/dBoSKLwxlh0.css</p>
<p>http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/CkuMXVTz1uq.css</p>
<p>      … &#8230;<br />
    * Arquivos JavaScript</p>
<p>http://static.ak.fbcdn.net/rsrc.php/v1/yg/r/vnWtCAcBiXn.js</p>
<p>      … &#8230; </p>
<p>Cada um desses URLs vai passar por um processo semelhante ao que a página HTML passou.<br />
Assim, o browser irá procurar o nome de domínio no DNS, enviar uma requisição para o URL, siga redirecionamentos, etc.</p>
<p>No entanto, arquivos estáticos &#8211; ao contrário de páginas dinâmicas &#8211; permitem que o navegador faça o cache deles. </p>
<p>Alguns dos arquivos podem ser acessados a partir do cache, sem contato com o servidor.<br />
O navegador sabe quanto tempo demora para colocar um arquivo em cache,  porque a resposta que retornou o arquivo continha um cabeçalho expirado.<br />
Além disso, cada resposta pode também conter um cabeçalho <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/HTTP_ETag" title="(52 hits)">ETag</a> que funciona como um número de versão &#8211; se o navegador vê um ETag para uma versão do arquivo que já possui, ele pode parar a transferência imediatamente.</p>
<p>Você consegue adivinhar o que fbcdn.net na URLs significa?  Um bom palpite seria que ela significa &#8220;Facebook content delivery network (rede de distribuição de conteúdo do Facebook)&#8221;. O Facebook usa uma rede de distribuição de conteúdo (CDN) para distribuir o conteúdo estático &#8211; imagens, folhas de estilo, e os arquivos JavaScript.  Assim, os arquivos serão copiados para muitas máquinas ao redor do mundo.</p>
<p>O conteúdo estático, muitas vezes representa a maior parte da largura de banda de um site, e pode ser facilmente replicado em um CDN. Muitas vezes, os sites usam um fornecedor de conteúdo terceirizado ao invés deles cuidarem disso. Por exemplo, arquivos estáticos do Facebook são hospedados por Akamai, o maior fornecedor de CDN.</p>
<p>Como teste, quando você tenta fazer ping static.ak.fbcdn.net, você receberá uma resposta de um servidor akamai.net.<br />
Além disso, curiosamente, se você executar ping o URL de um par de vezes, pode obter respostas de servidores diferentes, o que demonstra o balanceamento de carga, que acontece nos bastidores.</p>
<p><strong> 10. O navegador envia mais requisições assíncronas (AJAX) </strong></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/05/https11.png" title="(850 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/05/https11.png" alt="" title="https11" width="214" height="120" class="aligncenter size-full wp-image-670" /></a></p>
<p>No espírito da Web 2.0, o cliente continua a comunicar com o servidor, mesmo após a página ser processada.</p>
<p>Por exemplo, o chat do Facebook  continuará a atualizar a lista de seus amigos registrados logo que eles entram e saem.<br />
Para atualizar a lista de seus amigos registrados, a execução de JavaScript no seu navegador tem que enviar uma requisição assíncrona para o servidor.<br />
O pedido assíncrono é uma programação construída GET ou requisição POST que vai para um endereço especial.<br />
No exemplo do Facebook, o cliente envia uma requisição POST para http://www.facebook.com/ajax/chat/buddy_list.php para buscar a lista de seus amigos que estão online.</p>
<p>Este padrão é muitas vezes referida como &#8220;AJAX&#8221;, que significa &#8220;Asynchronous Javascript And XML&#8221;, ainda que não exista nenhuma razão específica para que o servidor tenha que formatar a resposta como XML. </p>
<p>Por exemplo, as rotinas do Facebook retornam de código JavaScript em resposta às requisições assíncronas.</p>
<p>Entre outras coisas, a ferramenta Fiddler permite visualizar os pedidos assíncronos enviados pelo seu navegador.<br />
Na verdade, não só você pode observar os pedidos de forma passiva, mas você também pode modificar e reenviá-los.<br />
O fato de que é tão fácil de &#8220;espiar&#8221; pedidos AJAX causa muita tristeza para os desenvolvedores de jogos on-line com painéis de avaliação.</p>
<p>O chat do Facebook  fornece um exemplo de um problema interessante com AJAX: empurrando dados do servidor para o cliente.  Uma vez que o HTTP é um protocolo de pedido-resposta, o servidor de chat não pode empurrar as novas mensagens para o cliente. Em vez disso, o cliente tem de consultar o servidor a cada poucos segundos para ver se alguma nova mensagem chegou.</p>
<p>O <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Long_polling#Long_polling" title="(61 hits)">Long polling</a> é uma técnica interessante para diminuir a carga no servidor nesses tipos de cenários. Se o servidor não tem nenhuma mensagem nova, quando em polling, ele simplesmente não envia uma resposta de volta.  E, se uma mensagem para este cliente é recebida dentro do tempo limite, o servidor encontra-se a requisição pendente e retornar a mensagem com a resposta.</p>
<p><strong>Conclusão</strong></p>
<p>Esperemos que esse artigo esclareça um pouco mais de como as diferentes partes web trabalham juntas. </p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_350_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/350?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_350_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=350&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2011%2F05%2F02%2Fo-que-realmente-acontece-quando-voce-acessa-uma-url%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2011/05/02/o-que-realmente-acontece-quando-voce-acessa-uma-url/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2011/05/02/o-que-realmente-acontece-quando-voce-acessa-uma-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave, o email de primeiro mundo!</title>
		<link>http://www.boaglio.com/index.php/2009/07/05/google-wave-o-email-de-primeiro-mundo/</link>
		<comments>http://www.boaglio.com/index.php/2009/07/05/google-wave-o-email-de-primeiro-mundo/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 06:41:28 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Goggle]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=270</guid>
		<description><![CDATA[Se você acompanhou a evolução tecnológica nesses últimos meses, com certeza deve ter ouvido falar do novo produto do Google, que tem o seu lançamento previsto para o final do ano: o Google Wave, pois desde maio já tem gente blogando sobre o assunto. Segundo a definição do próprio site, o &#8220;Google Wave é uma [...]]]></description>
			<content:encoded><![CDATA[<p>Se você acompanhou a evolução tecnológica nesses últimos meses, com certeza deve ter ouvido falar do novo produto do Google, que tem o seu lançamento previsto para o final do ano: o <strong>Google Wave</strong>, pois <a href="http://www.boaglio.com/go.php?http://mashable.com/2009/05/28/google-wave-guide/" title="(147 hits)">desde maio já tem gente blogando sobre o assunto</a>.</p>
<p><img src="http://sites.google.com/a/pressatgoogle.com/googlewave/_/rsrc/1243470959526/home/Google_Wave_logo.png" alt="Google Wave Logo" /></p>
<p>Segundo a <a href="http://www.boaglio.com/go.php?http://wave.google.com/help/wave/privacy.html" title="(136 hits)">definição do próprio site</a>, o &#8220;Google Wave é uma aplicação web que permite que você facilmente comunique e colabore com outras pessoas&#8221;.</p>
<p>Para ter uma idéia geral , veja algumas <a href="http://www.boaglio.com/go.php?http://sites.google.com/a/pressatgoogle.com/googlewave/home/screenshots-and-media-5" title="(224 hits)">fotos e vídeos no site improvisado do Google Wave</a>.</p>
<p>A idéia básica é a seguinte: o<a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Email" title="(98 hits)"> email que usamos hoje tem mais de quarenta anos</a> e porque é tão famoso? Porque ele é extremamente fácil de usar, por isso se tornou tão popular. </p>
<p>Se o email fosse inventado hoje ele teria que levar muito mais coisa em conta ao invés de um simples sequencia de caracteres: imagens, vídeos, chats, twitters, jogos, etc. </p>
<p>Para a web conseguir esse nível de comunicação tão complexo, foi criado o <a href="http://www.boaglio.com/go.php?http://www.waveprotocol.org/" title="(130 hits)">protocolo Wave</a> , que é uma camada de abstração para interagir com os componentes da &#8220;onda&#8221;. Existe um <a href="http://www.boaglio.com/go.php?http://www.waveprotocol.org/draft-protocol-spec" title="(119 hits)">rascunho desse protocolo</a> que está em constante atualização. </p>
<p><a href="http://sites.google.com/a/pressatgoogle.com/googlewave/_/rsrc/1243492538964/home/googlegram-1/Google_Wave_snapshots_inbox.png"><br />
<img src="http://sites.google.com/a/pressatgoogle.com/googlewave/_/rsrc/1243492538964/home/googlegram-1/Google_Wave_snapshots_inbox.png" alt="Google Wave"  width="400"/></a><br />
<script type="text/javascript">google_ad_client = "pub-3816383189082763";google_ad_slot = "0931072200";google_ad_width = 468;google_ad_height = 60;</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></p>
<p>Recentemente, uma integrante da <a href="http://www.boaglio.com/go.php?http://sites.google.com/a/pressatgoogle.com/googlewave/home/meet-the-google-wave-team" title="(135 hits)">equipe do Google Wave</a> veio ao Brasil para o <a href="http://www.boaglio.com/go.php?http://code.google.com/events/developerday/2009/" title="(64 hits)">Google Developer Day</a> mostrar um pouco pra gente.</p>
<p>Apesar da simpatia dos palestrantes, <strong>foi impossível esconder a lentidão do novo site</strong>. Muitos recursos, muita coisa interessante, mas com certeza nós sabemos que por baixo disso tinha muito JavaScript e muito XML trafegando,  pois o Google Wave roda em cima do <a href="http://www.boaglio.com/go.php?http://code.google.com/webtoolkit/" title="(100 hits)">Google Web Toolkit</a>.</p>
<p><img src="http://code.google.com/webtoolkit/images/gwt-logo.png" alt="GWT" /></p>
<p>Além de trocar mensagens, existem vários aplicativos integrados ao <em>Google Wave</em> que processam alguma tarefa no servidor e vão mandando as mensagens. Esses aplicativos são chamados de robos, como o linky (que analisa o texto que você digita e identifica se o link é válido e existe), o spelly ( um sensacional dicionário que analisa a frase conforme o contexto e corrige automaticamente).</p>
<p>Outros recursos interessantes são os de poder facilmente montar uma enquete, jogar xadrez, editar um documento, tudo de maneira colaborativa, com a opção de &#8220;replay&#8221; onde se consegue ver na ordem exata quem fez o que antes. Eu poderia ver, portanto, quem escreveu ou modificou um documento ou quem fez as jogadas no tabuleiro de xadrez.</p>
<p>Existe uma API para <a href="http://www.boaglio.com/go.php?http://code.google.com/apis/wave/extensions/gadgets/guide.html" title="(100 hits)">criarmos os nossos próprios componentes</a>. </p>
<p>Como o <em>Goggle Wave</em> por enquanto está mais para <em>Google Wait</em> de tão lento, não consegui implementar nada, apenas li um pouco de código fonte dos robôs, que podem ser feitos em <em>Python</em> e <em>Java</em>.</p>
<p>Eu sei que tá no começo e não tem muito padrão fechado ainda, mas fiquei meio surpreso em olhar <a href="http://www.boaglio.com/go.php?http://google-wave-resources.googlecode.com/svn/trunk/samples/extensions/robots/java/polly/src/com/google/wave/extensions/polly/" title="(137 hits)">o fonte dessas classes do robô de enquetes</a> e não encontrar uma única interface. Espero que a performance melhore e que eu possa em breve publicar aqui um breve artigo de como fazer um robô.</p>
<p>Curioso dessa novidade? <a href="http://www.boaglio.com/go.php?https://services.google.com/fb/forms/wavesignup/" title="(230 hits)">Vai lá no site e peça o seu usuário</a>!</p>
<p>Infelizmente o Google Wave funciona em internet rápida, coisa só de <em>primeiro mundo</em>, aqui <a href="http://www.boaglio.com/go.php?http://info.abril.com.br/blog/baixadefinicao/20090630_listar.shtml" title="(130 hits)">não temos muita esperança que a nossa situação melhore</a>. </p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_270_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/270?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_270_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=270&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2009%2F07%2F05%2Fgoogle-wave-o-email-de-primeiro-mundo%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2009/07/05/google-wave-o-email-de-primeiro-mundo/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2009/07/05/google-wave-o-email-de-primeiro-mundo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>delinquencia premiada</title>
		<link>http://www.boaglio.com/index.php/2009/04/12/delinquencia-premiada/</link>
		<comments>http://www.boaglio.com/index.php/2009/04/12/delinquencia-premiada/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 03:50:43 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=237</guid>
		<description><![CDATA[Provavelmente um dos locais mais seguros do Brasil é o Banco Central localizado em Brasília, que desde que foi inaugurado nos anos 60 não sofreu nenhum assalto. Provavelmente não existe só uma pessoa responsável pelo controle de toda a segurança, mas com certeza basta um assalto que essas 4 décadas de dedicação serão esquecidas e [...]]]></description>
			<content:encoded><![CDATA[<p> Provavelmente um dos locais mais seguros do Brasil é o Banco Central localizado em Brasília, que desde que foi inaugurado nos anos 60 não sofreu nenhum assalto. Provavelmente não existe só uma pessoa responsável pelo controle de toda a segurança, mas com certeza basta um assalto que essas 4 décadas de dedicação serão esquecidas e um bandido ganha destaque na mídia.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/BSB-BancoDoBrasil.JPG/240px-BSB-BancoDoBrasil.JPG" alt="BCB" /><br />
<!--adsense#bannertextomeio--></p>
<p>E por que isso acontece? Simplesmente porque a maioria da sociedade se encaixa no perfil de trabalho sobre uma administração taylorista, pagando uma tonelada de impostos, e ao baixar todo dia a cabeça para os problemas sonha ou inveja dos raros bons momentos desses bandidos vida mansa.</p>
<p>Vejam o brutal contraste do bandido <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Frank_Abagnale" title="(99 hits)">Frank William Abagnale Junior</a> com o oficial do FBI <em>Joe Shaye</em> (nem página da Wikipedia ele tem) . O primeiro hoje é um consultor de segurança milionário, e o segundo é um policial aposentado. Para entender melhor essa história, assista ao filme <a href="http://www.boaglio.com/go.php?http://www.imdb.com/title/tt0264464/" title="(59 hits)">Catch Me If You Can</a>.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/en/thumb/4/4d/Catch_Me_If_You_Can_2002_movie.jpg/200px-Catch_Me_If_You_Can_2002_movie.jpg" alt="Catch me if you can" /></p>
<p>E vejam na área de TI não é diferente, tudo começou com a disputa semelhante do bandido <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Kevin_mitnick" title="(79 hits)">Kevin Mitnick</a> e do <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Tsutomu_Shimomura" title="(75 hits)">Tsutomu Shimomura</a>, que ajudou a capturá-lo. Essa história foi para um livro e também para as telonas com o mesmo nome: <a href="http://www.boaglio.com/go.php?http://www.imdb.com/title/tt0159784/" title="(74 hits)">Takedown</a>, também conhecido como <em>Track down</em>.</p>
<p><img src="http://image.allmusic.com/00/adg/cov200/drt400/t479/t47999ja70v.jpg" alt="Track Down" /></p>
<p>Percebem que <strong>até hoje a delinquência é premiada</strong>, os desenvolvedores de software proprietário e livre fazem um enorme esforço para ter um software bom, rápido, livre de bugs e sem falhas de segurança, mas mesmo assim a comunidade cria concursos para premiar o vandalismo, como esse que <a href="http://www.boaglio.com/go.php?http://computerworld.uol.com.br/seguranca/2009/03/20/em-concurso-ie-8-e-hackeado-em-minutos-por-pesquisador-alemao/" title="(153 hits)">um pesquisador alemão crackeou o Internet Explorer 8 em poucos minutos</a>.</p>
<p>Imagine se ao invés de um concurso desse fosse criado outro para a criação de um software livre que ajudasse a sociedade de alguma maneira. Isso não funcionaria por dois motivos: <em>primeiro</em>, porque não dá lucro, <em>segundo</em>, por que é muito mais fácil destruir do que construir.</p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_237_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/237?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_237_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=237&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2009%2F04%2F12%2Fdelinquencia-premiada%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2009/04/12/delinquencia-premiada/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2009/04/12/delinquencia-premiada/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>o que ainda falta pra ser criado na web?</title>
		<link>http://www.boaglio.com/index.php/2009/01/01/o-que-ainda-falta-pra-ser-criado-na-web/</link>
		<comments>http://www.boaglio.com/index.php/2009/01/01/o-que-ainda-falta-pra-ser-criado-na-web/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 01:59:59 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=164</guid>
		<description><![CDATA[Dezembro de 2004, uma data que não é há tanto tempo assim, e naquela época todo mundo achava que já tinham feito de tudo na Internet. Nessa época as manchetes dos jornais mostravam o trágico Tsunami no oceano índico. Nessa época, três ex-empregados da Paypal olharam para essa situação trágica e para outro episódio bizarro [...]]]></description>
			<content:encoded><![CDATA[<p>Dezembro de 2004, uma data que não é há tanto tempo assim, e naquela época todo mundo achava que <strong>já tinham feito de tudo na Internet</strong>. Nessa época as manchetes dos jornais mostravam o trágico Tsunami no oceano índico.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/2004-tsunami.jpg/240px-2004-tsunami.jpg" alt="Tsunami de 2004" /></p>
<p>Nessa época, <a href="http://www.boaglio.com/go.php?http://www.usatoday.com/tech/news/2006-10-11-youtube-karim_x.htm" title="(144 hits)">três ex-empregados da Paypal</a> olharam para essa situação trágica e para outro episódio bizarro que aconteceu no intervalo de um jogo de futebol americano (o <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Super_Bowl_XXXVIII_halftime_show_controversy" title="(125 hits)">Nippleshieldgate</a>)  e  imaginaram: &#8220;<em>hoje com tanta gente que pode filmar com celular, como que não existe nenhum lugar na Internet para se compartilhar vídeos amadores?</em>&#8220;. </p>
<p>Mais tarde os três dividiram as tarefas: um deles cuidou do front-end e os outros dois do back-end. Conseguiram um investimento inicial de 11 milhões e depois a empresa foi vendida para o Google por 150 vezes esse valor. Bom negócio, não?</p>
<p> <img src="http://images.usatoday.com/tech/_photos/2006/10/12/karim.jpg" alt="Fundadores do Youtube" /><br />
<!--adsense#bannertextomeio--></p>
<p>Muito antes disso Pierre, <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Pierre_Omidyar" title="(118 hits)">um francês filho de iranianos que mora nos EUA</a> desde pequeno, gastou um feriado para escrever um programa para compra/venda/troca de mercadorias pela Internet. Ele simplesmente viu que não existia nada parecido, foi lá e fez. Parabéns para ele. </p>
<p>E, finalmente, <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Jack_Dorsey" title="(112 hits)">Jack Dorsey</a> desde 2006 sempre quiz criar algo que fosse mais online que um status no seu MSN/gTalk, que de onde você estivesse poderia se expressar, falar o que estava fazendo. </p>
<p> Disso ele <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/index.php/2008/05/20/o-papel-do-papel/" title="(183 hits)">escreveu num papel o rascunho</a> o protótipo do que seria um sucesso hoje:</p>
<p><img src="http://blog.wired.com/photos/uncategorized/2007/04/20/twtrpg.jpg" alt="rascunho do twitter" /></p>
<p>Veja a foto original com comentários <a href="http://www.boaglio.com/go.php?http://flickr.com/photos/jackdorsey/182613360/" title="(233 hits)">aqui</a>.</p>
<p>E então,<strong> o que ainda falta para ser criado? </strong></p>
<p>A resposta é bem simples: <strong>eu não sei!</strong></p>
<p>Eu tive <a href="http://www.boaglio.com/go.php?http://delicious.com" title="(162 hits)">boas</a> <a href="http://www.boaglio.com/go.php?http://www.buscape.com.br/" title="(147 hits)">idéias</a> no passado mas não implementei nenhuma, alguém bem mais esperto que eu, teve a mesma idéia e fez na minha frente, sorte a dele e lição aprendida para mim. </p>
<p>Comece 2009 pensando nisso, <strong>implemente sua boa idéia  que mais cedo ou mais tarde você será recompensado</strong>!  </p>
<p><img width="50%" src="http://www.solarnavigator.net/sponsorship/sponsorship_images/bill_gates_time_magazine_cover_april_1984.jpg" alt="Bill Gates em 1984" /></p>
<p><strong>Deixe isso para depois que alguém passa na sua frente! </strong></p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_164_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/164?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_164_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=164&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2009%2F01%2F01%2Fo-que-ainda-falta-pra-ser-criado-na-web%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2009/01/01/o-que-ainda-falta-pra-ser-criado-na-web/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2009/01/01/o-que-ainda-falta-pra-ser-criado-na-web/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

