<?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; Firefox</title>
	<atom:link href="http://www.boaglio.com/index.php/category/ff/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>Tenha sua caixa postal zerada</title>
		<link>http://www.boaglio.com/index.php/2010/01/06/tenha-sua-caixa-postal-zerada/</link>
		<comments>http://www.boaglio.com/index.php/2010/01/06/tenha-sua-caixa-postal-zerada/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 02:01:41 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=341</guid>
		<description><![CDATA[Quando uma coisa é muito boa e dá certo, além de usar eu gosto de avisar as pessoas que isso existe e o que elas estão perdendo por não usar a novidade. Para muitas pessoas parece algo impossível você ter uma caixa postal sem email nenhum, já que existem toneladas de mensagens que você não [...]]]></description>
			<content:encoded><![CDATA[<p>
Quando uma coisa é muito boa e dá certo, além de usar eu gosto de avisar as pessoas que isso existe e o que elas estão perdendo por não usar a novidade.</p>
<p>Para muitas pessoas parece algo impossível você ter uma caixa postal sem email nenhum, já que existem toneladas de mensagens que você não apagou para não esquecer de fazer alguma coisa, e quando foi ver essa mensagem já nem aparece mais na primeira página, ficou para trás esquecida como todas as outras.</p>
<p><img src="http://www.onlinebusinessmanager.com/images/email150.jpg" alt="Muitos emails!" /><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>E além disso, aquela conta para pagar todo dia 10,  aquela consulta no médico que precisa agendar, aquele churrasco ficou para o mês que vem, é tanta coisa que você só tem a certeza que alguma coisa vai deixar passar.</p>
<p>Para mudar essa situação você necessitará de duas coisas: <em>novos conceitos</em> e <em>novas ferramentas</em>.</p>
<p><img src="http://www.micropersuasion.com/.m//inbox_zero_head-box-2.jpg" alt="Inbox 0" /></p>
<p>Portanto tenho o prazer de apresentar o famoso <a href="http://www.boaglio.com/go.php?http://inboxzero.com/inboxzero/" title="(163 hits)">Inbox Zero</a>.</p>
<p>Em uma <a href="http://www.boaglio.com/go.php?http://inboxzero.com/video/" title="(134 hits)">palestra apresentada no Google Tech Talk de 2007</a>,  foi exibida essa nova prática que é extremamente simples e te dá um ótimo resultado. </p>
<p>Essa técnica define que para toda mensagem que você receber, deverá tomar uma das ações abaixo:</p>
<ul>
<li>Remover a mensagem</li>
<li>Delegar  a mensagem para outra pessoa</li>
<li>Responder a mensagem</li>
<li>Agendar a ação da mensagem para alguma data</li>
<li>Fazer a ação da mensagem</li>
</ul>
<p><img src="http://www.luckyspin.org/wp-content/uploads/2008/06/zero-inbox.jpg" alt="inbox zero actions" /></p>
<p>Pois bem, esse conceito é bem interessante, mas como conseguir agendar essas coisas de forma prática e efetiva?</p>
<p><img src="http://tylersticka.com/wp-content/uploads/rtm_128x128.png" alt="RTM" /></p>
<p>A resposta está na vaquinha: <a href="http://www.boaglio.com/go.php?http://www.rememberthemilk.com/" title="(171 hits)">Remember the Milk</a>. </p>
<p>Apesar da <a href="http://www.boaglio.com/go.php?http://mail.google.com/mail/help/tasks/" title="(133 hits)">tentativa do Google de fazer algo parecido</a>, ela é muito inferior ao que o RTM oferece. </p>
<p>Para usar o RTM de maneira eficiente, basta <a href="http://www.boaglio.com/go.php?http://www.rememberthemilk.com/services/gmail/addon/" title="(154 hits)">instalar o plugin que integra sua agenda ao gmail</a> e depois assistir ao <a href="http://www.boaglio.com/go.php?http://www.rememberthemilk.com/help/screencasts/gmail/" title="(159 hits)">tutorial de 2 minutos</a> como usa-lo. </p>
<p>Até aqui temos uma pequena lista do que fazer:</p>
<ol>
<li>Assistir ao video / ver os slides do Inbox Zero</li>
<li>Criar uma conta no Google Gmail </li>
<li>Criar uma conta no Remember The Milk</li>
<li>Instalar no Firefox o plugin do Remember The Milk para o Gmail</li>
<li>Assistir ao video do plugin do Remember The Milk para o Gmail</li>
</ol>
<p>Depois de tudo instalado, abra mensagem por mensagem e vá executando umas das ações citadas anteriormente.</p>
<p>Se necessitar agendar alguma coisa, use o plugin do RTM.</p>
<p>Quando adotei essa prática, eu <em>demorei</em> uns dois dias para conseguir agendar/organizar todas as minhas mensagens e tarefas pendentes. </p>
<p>Foi cansativo, mas o ganho foi <strong>espetacular</strong>, <em>nunca mais perdi nenhuma mensagem</em>, consegui agendar coisas muito importantes que quase ficaram perdidas no esquecimento.</p>
<p>Hoje em dia levo poucos minutos para esvaziar a minha caixa postal. Agendar tarefas no RTM já virou rotina. </p>
<p>Se você acessa bastante o gmail, essa solução é imperdível, muitas pessoas que dei essa dica me agradecem até hoje. </p>
<p>Agora é a sua hora de se organizar, não se desesperar e nunca mais perder uma mensagem. =)</p>
<p>Boa sorte!</p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_341_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/341?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_341_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=341&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2010%2F01%2F06%2Ftenha-sua-caixa-postal-zerada%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/2010/01/06/tenha-sua-caixa-postal-zerada/" 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/2010/01/06/tenha-sua-caixa-postal-zerada/feed/</wfw:commentRss>
		<slash:comments>2</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>Agile bubble</title>
		<link>http://www.boaglio.com/index.php/2008/11/23/agile-bubble/</link>
		<comments>http://www.boaglio.com/index.php/2008/11/23/agile-bubble/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 22:40:36 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=170</guid>
		<description><![CDATA[Se você não sabe do que o título se refere, acesse o blog do Guilherme e leia um bom resumo do que aconteceu nessa última semana. Muito já se falou sobre o polêmico artigo e até 5 minutos atrás eu achava que não havia nada mais a se acrescentar a esse assunto, mas de repente [...]]]></description>
			<content:encoded><![CDATA[<p>Se você não sabe do que o título se refere, acesse o <a href="http://www.boaglio.com/go.php?http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/" title="(189 hits)">blog do Guilherme</a> e leia um bom resumo do que aconteceu nessa última semana.</p>
<p>Muito já se falou sobre o <a href="http://www.boaglio.com/go.php?http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html" title="(142 hits)">polêmico artigo</a> e até 5 minutos atrás eu achava que não havia nada mais a se acrescentar a esse assunto, mas de repente eu lembrei da crise da <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Internet_bubble" title="(85 hits)">bolha da internet</a> em 1999. </p>
<p><img src="http://www.candyjar.co.uk/blog/wp-content/uploads/2007/10/bubble.jpg" alt="bolha da internet" /><br />
<!--adsense#bannertextomeio--></p>
<p>Basicamente o que aconteceu foi num primeiro momento algumas empresas viram uma oportunidade fantástica de um novo mercado e apostaram alto e de forma errada nisso.</p>
<p>Nessa ocasião muitos oportunistas (leia-se picaretas) se aproveitaram da ocasião e ganharam muito dinheiro, orientando de forma enganosa e levando muitas empresas para o buraco. Mas e por que foi tão fácil assim? Por que o conceito de web era novo, então qualquer um que se dizia especialista era pouco provável alguém provar o contrário!</p>
<p>Depois do estouro da bolha, alguns acionistas puderam enxergar o óbvio, que não adiantava ter um site lindo maravilhoso, se a empresa responsável não tiver nome e confiança no mercado. </p>
<p>O caso clássico foi do <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Pets.com" title="(94 hits)">pets.com</a> com 320 funcionários, propaganda na TV e tudo mais, que investiu tantos milhões em marketing, que não teve o retorno necessário para pagar os seus gastos e acabou quebrando. </p>
<p><img src="http://www.dutramaquinas.com.br/upload/produtos/77314533_destaque.jpg" alt="picaretas" /></p>
<p>Vejam agora no caso da metologia ágil, muitas analogias! Quantos auto-intitulados especialistas ágeis temos no mercado? </p>
<p>Quantas empresas apostaram nesses especialistas e foram para o caminho errado?  </p>
<p>E, finalmente, por que tantas empresas caíram nessa? Pelo mesmo motivo, no mundo do desenvolvimento, a metodologia ágil é algo novo, o que facilita a aparição de mais oportunistas! </p>
<p>Com isso as empresas totalmente insatisfeitas com o resultado das outras metodologias, correram para as metologias ágeis de maneira errada, o que fez com que a bolha ágil estourasse. </p>
<p>Pois é, de uma maneira ou de outra, a história sempre se repete. =)</p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_170_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/170?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_170_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=170&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2008%2F11%2F23%2Fagile-bubble%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/2008/11/23/agile-bubble/" 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/2008/11/23/agile-bubble/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>10 plugins divertidos para o Firefox</title>
		<link>http://www.boaglio.com/index.php/2008/08/29/10-plugins-divertidos-para-o-firefox/</link>
		<comments>http://www.boaglio.com/index.php/2008/08/29/10-plugins-divertidos-para-o-firefox/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 04:53:31 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Clube dos 10]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=57</guid>
		<description><![CDATA[Divertidos é uma palavra bonita para inúteis, mas nas horas que você espera um download, um retorno de query do banco de dados ou aquele seu amigo chato que sempre enrola para sair para o almoço, esses plugins são ideais para essas ocasiões! Primeiro, vamos separar alguns plugins relacionados às nossas buscas: Cooliris, conhecido também [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Divertidos</strong> é uma palavra bonita para <strong>inúteis</strong>, mas nas horas que você espera um download, um retorno de query do banco de dados ou aquele seu amigo chato que sempre enrola para sair para o almoço, esses plugins são ideais para essas ocasiões!</p>
<ol>
<p><img src="http://www.cooliris.com/site/images/home-sm-cooliris-screen.png" alt="Cooliris" /></p>
<p><!--adsense#bannertextoinicio--></p>
<p>Primeiro, vamos separar alguns plugins relacionados às <strong>nossas buscas</strong>:</p>
<li><a href="http://www.boaglio.com/go.php?http://www.cooliris.com" title="(173 hits)">Cooliris</a>, conhecido também pelo seu antigo nome piclens, é um plugin que possibilita um jeito inovador de fazer buscas, pois ele faz isso em 3D ! Em alguns sites como Amazon e YouTube, a busca pode ter essa <a href="http://www.boaglio.com/go.php?http://farm3.static.flickr.com/2251/2435087326_fcc01d2cc1.jpg?v=0" title="(173 hits)">aparência</a>, mas infelizmente esse plugin não tem ainda versão para Linux. Esse site oferece outro plugin , o <a href="http://www.boaglio.com/go.php?http://cooliris.com/site/firefox/" title="(168 hits)">Cool Previews</a>, que não é tão cool assim, apenas mostra um pequeno preview de um link de página.</li>
<li><a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/1577" title="(193 hits)">Kaboodle</a> &#8211; achou uma coisa interessante de comprar e gostaria de guardar esse link e indicar para alguém? A rede social <a href="http://www.boaglio.com/go.php?http://www.kaboodle.com/" title="(148 hits)">Kaboodle</a> faz exatamente isso, e com esse plugin facilmente adicionamos a página visitada ao nosso perfil.</li>
<li><a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/5695" title="(221 hits)">FotoMarklet</a> &#8211; a idéia aqui é para mandar um link de uma foto para alguém , não faca um bookmark, faca um fotomark! Basta escolher qualquer imagem de uma página web, clicar com o botão direito do mouse e escolher a opção: &#8220;<em>Fotomark this image</em>&#8220;. Em breve a foto estará <a href="http://www.boaglio.com/go.php?http://nachofoto.com/recent" title="(158 hits)">publicada no site dentro da sua conta ou de maneira anônima</a>. </li>
<p><!--adsense#bannertextomeio--></p>
<p><img src="http://www.coolwizardz.com/wp-content/uploads/2007/12/orkut-face-book.jpg" alt="redes sociais" /></p>
<p>Para ajudar nas <strong>nossas redes sociais</strong>:</p>
<li><a href="http://www.boaglio.com/go.php?http://www.ultimatefacebook.info" title="(183 hits)">UltimateFacebook</a> &#8211; se você tem uma conta no <a href="http://www.boaglio.com/go.php?http://www.facebook.com" title="(131 hits)">Facebook</a>, esse plugin oferece alguns atalhos ao clicar em um amigo com o botão direito do mouse. Mas e para o Orkut?  </li>
<li><a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/516" title="(249 hits)">Orkut Toolbar</a> &#8211; para ajudar nas tarefas mais simples do <a href="http://www.boaglio.com/go.php?http://www.orkut.com" title="(152 hits)">Orkut</a>, use esse plugin que vai te oferecer uma barra de ferramentas bem interessante. Visite também a <a href="http://www.boaglio.com/go.php?http://www.renatorodrigues.com" title="(157 hits)">página do autor</a>, que é brasileiro. </li>
<p><img src="http://www.coolest-gadgets.com/wp-content/uploads/2006/07/arcade-pacman.jpg" alt="Pacman!" /></p>
<p>E, finalmente os plugins com alguns <strong>joguinhos</strong>:</p>
<li><a href="http://www.boaglio.com/go.php?http://www.firenes.com.ar/" title="(306 hits)">Firenes</a> &#8211; parece mentira, mas tendo o Java instalado na sua máquina, o seu Firefox será capaz de jogar mais de 2000 jogos do clássico <a href="http://www.boaglio.com/go.php?http://www.nintendo8.com/" title="(153 hits)">Nintendinho de 8 bits</a>! Qualquer um que já usou algum emulador deve pensar: &#8220;<em>ah tá, mas eu tenho que ter os arquivos ROM para poder jogar&#8230;</em>&#8220;; nada disso! Com apenas um clique o plugin baixa e sobe o jogo para você; tudo isso gracas ao portável emulador <a href="http://www.boaglio.com/go.php?http://www.virtualnes.com/" title="(163 hits)">vNES</a>.</li>
<li><a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/2053" title="(237 hits)">Pacman</a> &#8211; interessante clone do Pacman, com som e opções de velocidade.</li>
<li><a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/554" title="(362 hits)">PONG! Multiplayer </a> &#8211; além da opção de jogar esse arcade clássico, é possível ainda jogar em rede contra outra pessoa, bastando apenas informar o endereço IP (ele usa as portas 10997/10998) !  </li>
<li><a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/3556" title="(273 hits)">GamesRadar.it</a>, <a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/5098" title="(218 hits)">Online Games</a> e <a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/1603" title="(210 hits)">Free Games Menu</a> &#8211; são três opções de barra de ferramentas que oferecem dezenas de jogos online separados por categorias, é uma fonte enorme de diversão! </li>
<li><a href="http://www.boaglio.com/go.php?https://addons.mozilla.org/pt-BR/firefox/addon/1562" title="(202 hits)">Cards</a> &#8211; para jogar clássicos como FreeCell, esse plugin é ideal, com gráficos simples, mas bem completo, tem opção de ajuda (hint) se precisar.  </li>
<ol>
<p>Boa diversão! =)</p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_57_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/57?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_57_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=57&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2008%2F08%2F29%2F10-plugins-divertidos-para-o-firefox%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/2008/08/29/10-plugins-divertidos-para-o-firefox/" 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/2008/08/29/10-plugins-divertidos-para-o-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

