<?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>the programming ankh</title>
	<atom:link href="http://blog.brunofajardo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.brunofajardo.com</link>
	<description>...and other web histories</description>
	<lastBuildDate>Thu, 06 May 2010 23:49:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Atacando em outras frentes</title>
		<link>http://blog.brunofajardo.com/2010/01/atacando-em-outras-frentes/</link>
		<comments>http://blog.brunofajardo.com/2010/01/atacando-em-outras-frentes/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 13:50:33 +0000</pubDate>
		<dc:creator>Bruno Fajardo</dc:creator>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Bill Gates]]></category>
		<category><![CDATA[Campus Party]]></category>
		<category><![CDATA[CroqueTI]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[TI]]></category>

		<guid isPermaLink="false">http://blog.brunofajardo.com/?p=43</guid>
		<description><![CDATA[Nessa semana, eu e mais dois amigos colocamos em prática uma ideia que estava sendo maturada há algum tempo: manter um podcast sobre temas relacionados ao mundo da TI, notícias, lançamentos, dicas, fofocas, tudo isso com bom-humor e sem nenhum apego à imparcialidade de opinião.
O nome da criança é CroqueTI. O podcast e o blog [...]]]></description>
			<content:encoded><![CDATA[<p>Nessa semana, eu e mais dois amigos colocamos em prática uma ideia que estava sendo maturada há algum tempo: manter um podcast sobre temas relacionados ao mundo da TI, notícias, lançamentos, dicas, fofocas, tudo isso com bom-humor e sem nenhum apego à imparcialidade de opinião.</p>
<div class="wp-caption aligncenter" style="width: 465px"><a href="http://www.croqueti.com.br/"><img title="CroqueTI" src="http://www.croqueti.com.br/wp-content/themes/orange-coffee/images/coffee_logo.png" alt="CroqueTI" width="455" height="194" /></a><p class="wp-caption-text">A verdade sobre as notícias de TI, só que ao contrário</p></div>
<p>O nome da criança é <a title="CroqueTI" href="http://www.croqueti.com.br/" target="_blank">CroqueTI</a>. O podcast e o blog que o divulga ainda estão em processo de criação e sofrendo constantes melhorias, mas já temos um primeiro programa piloto, e estamos abertos a sugestões e críticas! Ah, e se puder, ouça os programas semanalmente, baixem para seus iPods e assemelhados e escutem durante a academia (mentira), ou enquanto fazem aquela faxina na casa sábado de manhã.</p>
<p>O primeiro programa traz o lançamento do iPad, o bafafá com o presidente da Oracle levando o troco da amante, Bill Gates aloprando no Sundance Festival, Campus Party 2010 e algumas coisas sobre blogs no geral. Acesse o programa <a title="CroqueTI - Podcast 001" href="http://www.croqueti.com.br/2010/01/podcast-001/" target="_blank">aqui</a>.</p>
<p>Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brunofajardo.com/2010/01/atacando-em-outras-frentes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>O protocolo HTTP &#8211; Parte 1</title>
		<link>http://blog.brunofajardo.com/2010/01/o-protocolo-http-parte-1/</link>
		<comments>http://blog.brunofajardo.com/2010/01/o-protocolo-http-parte-1/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 10:34:20 +0000</pubDate>
		<dc:creator>Bruno Fajardo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[GET]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[Requests]]></category>
		<category><![CDATA[TCP/IP]]></category>

		<guid isPermaLink="false">http://blog.brunofajardo.com/?p=19</guid>
		<description><![CDATA[Todo profissional web conhece o protocolo mais famoso da Internet, o HTTP, mas muitos não utilizam todos os recursos e features que ele oferece. Nos próximos posts, eu pretendo explorar vários aspectos desse protocolo que está presente em todas as aplicações da web, e fazer os desenvolvedores olharem para seus sistemas com outros olhos.
Breve descrição [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_20" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.brunofajardo.com/wp-content/uploads/2010/01/tim-berners-lee.jpg"><img class="size-medium wp-image-20  " title="Fonte: http://www.gregspringertx.us/miller/css/Photos.html" src="http://blog.brunofajardo.com/wp-content/uploads/2010/01/tim-berners-lee-300x226.jpg" alt="Tim Berners-Lee" width="300" height="226" /></a><p class="wp-caption-text">&quot;Gurizada, o tio aqui inventou o HTTP... E vocês, tão inventando o quê?&quot;</p></div>
<p>Todo profissional web conhece o protocolo mais famoso da Internet, o HTTP, mas muitos não utilizam todos os recursos e features que ele oferece. Nos próximos posts, eu pretendo explorar vários aspectos desse protocolo que está presente em todas as aplicações da web, e fazer os desenvolvedores olharem para seus sistemas com outros olhos.</p>
<h3>Breve descrição do HTTP</h3>
<p>HTTP, ou <a title="Hipertext Transfer Protocol" href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" target="_blank">Hipertext Transfer Protocol</a>, é um protocolo de rede situado na camada de aplicação do <a title="Modelo OSI" href="http://en.wikipedia.org/wiki/OSI_model" target="_blank">Modelo OSI</a>, normalmente implementado sobre <a title="TCP/IP" href="http://en.wikipedia.org/wiki/Internet_Protocol_Suite" target="_blank">TCP/IP</a>, que tem por objetivo permitir a troca de dados em sistemas distribuídos, dados esses geralmente chamados de hiperdocumentos, sendo o <a title="HTML" href="http://en.wikipedia.org/wiki/HTML" target="_blank">HTML</a> o mais conhecido. Os sistemas que utilizam o HTTP geralmente possuem <a title="arquitetura cliente/servidor" href="http://en.wikipedia.org/wiki/Client-server" target="_blank">arquitetura cliente/servidor</a>, ou seja, existe um cliente (browser) que faz a requisição a um servidor (servidor web) que por sua vez fornece os dados requisitados pelo cliente, sem manter informações de estado entre uma requisição e outra. O cliente informa o documento que deseja recuperar através de <a title="URIs" href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier" target="_blank">URIs</a>, ou mais especificamente, de <a title="URLs" href="http://en.wikipedia.org/wiki/Uniform_Resource_Locator" target="_blank">URLs</a>.</p>
<p>A capacidade do protocolo de acessar e interligar hiperdocumentos foi fundamental para o surgimento da <a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web" target="_blank">World Wide Web</a>, por volta de 1990. O criador desse protocolo (e consequentemente, da web) é o mestre <a title="Tim Berners-Lee" href="http://en.wikipedia.org/wiki/Sir_Tim_Berners-Lee" target="_blank">Tim Berners-Lee</a>, aquele tiozinho parecido com o Sting ali em cima. Hoje, dentre outras coisas legais, ele é o diretor do <a title="W3C" href="http://www.w3.org/" target="_blank">W3C</a>.</p>
<p>O protocolo HTTP já passou por algumas revisões, a última resultando na versão HTTP/1.1, publicada na W3C em <a title="HTTP/1.1 em 1997" href="http://www.ietf.org/rfc/rfc2068.txt" target="_blank">1997</a> e revisada em <a title="HTTP/1.1 em 1999" href="http://www.w3.org/Protocols/rfc2616/rfc2616.html" target="_blank">1999</a>, e usada até hoje. Da versão 1.0 para a 1.1 do HTTP, a melhoria mais significativa foi a introdução da capacidade de fazer conexões permanentes entre cliente e servidor, reaproveitando a mesma conexão para transmitir imagens, texto e outros elementos dos hiperdocumentos. Isso tornou a transferência de dados entre cliente e servidor muito mais rápida, pois elimina a sobrecarga de abrir uma conexão TCP para cada requisição do cliente.<br />
Nesse primeiro post, vou abordar uma das principais funções do  protocolo: as requisições e seus diferentes métodos.</p>
<h3>HTTP Requests</h3>
<p>Uma requisição feita por um cliente (browser, por exempl0) no protocolo HTTP, é formada da seguinte maneira:</p>
<p>- A primeira linha da mensagem contém o caminho do recurso solicitado, por exemplo:</p>
<pre>GET /blog/post.html HTTP/1.1</pre>
<p>- A seguir, são especificados os headers (cabeçalhos) da mensagem.</p>
<pre>Host: www.brunofajardo.com</pre>
<p>- Os headers são seguidos por uma linha em branco, que deve ser formada somente pelos caracteres CR (carriage return) e LF (line feed);</p>
<p>- Depois dessa linha, o conteúdo é opcional. O que estiver aqui será interpretado pelo servidor dependendo do método HTTP executado.</p>
<h3>HTTP Methods</h3>
<p>Existem oito métodos diferentes no protocolo HTTP, e eles representam ações que o cliente pode realizar sobre um recurso (hiperdocumento) do servidor.</p>
<h4>GET</h4>
<p>É utilizado para recuperar uma &#8220;cópia&#8221; do endereço especificado no cabeçalho. Esse método é o mais comum do HTTP, executado quando se digita uma URL em um browser. O servidor retorna um cabeçalho contendo informações sobre o documento, além do corpo da mensagem (uma página HTML, por exemplo).</p>
<p>A fim de diminuir o tráfego de dados desnecessários na rede, é possível realizar um &#8220;GET condicional&#8221;, ou seja, somente recuperar o documento solicitado quando algumas condições, especificadas no cabeçalho da requisição, forem satisfeitas. Alguns dos cabeçalhos que podem ser utilizados para isso são <em>If-Modified-Since</em>, <em>If-Unmodified-Since</em>, <em>If-Match</em>, <em>If-None-Match</em>, e <em>If-Range</em>. O cabeçalho <em>Range</em> pode ser utilizado para recuperar somente uma parte do documento, para fins de economia de banda também.</p>
<h4>POST</h4>
<p>Envia dados para serem processados no servidor pelo recurso que foi endereçado. Geralmente, quando você preenche um formulário na web, os seus dados são passados para o servidor através de um POST.</p>
<h4>HEAD</h4>
<p>É similar ao GET, porém somente retorna os cabeçalhos da resposta, sem o corpo do documento requisitado. É útil para obter informações sobre o documento sem precisar baixá-lo.</p>
<h4>PUT</h4>
<p>Cria uma &#8220;cópia&#8221; do documento especificado no servidor. A principal diferença entre o POST e o PUT é que no primeiro, o recurso endereçado (URI) é o responsável pelo processamento dos dados sendo transmitidos na requisição, e no método PUT, a URI representa o documento que será criado ou modificado no servidor, contendo os dados especificados pelo cliente.</p>
<h4>DELETE</h4>
<p>Remove o documento especificado do servidor. O servidor retorna um código de status, informando se a solicitação foi aceita ou não.</p>
<h4>TRACE</h4>
<p>Retorna os cabeçalhos da requisição original, da mesma forma como foram recebidos pelo servidor. O TRACE é útil para o desenvolvedor analisar como a sua requisição está chegando do outro lado, pois diferentes cabeçalhos podem ser adicionados ou editados por servidores intermediários na rede. Pode-se utilizar o cabeçalho <em>Max-Forwards</em> para limitar o número de proxies ou servidores em que a mensagem deve trafegar antes de ser retornada para o cliente.</p>
<h4>OPTIONS</h4>
<p>Esse método permite que um cliente descubra quais as opções e/ou requisitos de um determinado recurso do servidor, sem a necessidade de se obter esse recurso (através do GET, por exemplo). Caso o recurso consultado seja &#8220;*&#8221;, as informações retornadas serão globais do servidor, e não de um documento específico. Dentre outras coisas, o OPTIONS informa quais os métodos HTTP suportados pelo servidor, visto que nem todos os servidores precisam implementar todos esses métodos (os servidores precisam disponibilizar sempre os métodos GET, HEAD e OPTIONS, sendo os restantes opcionais). Exemplo de uso do OPTIONS:</p>
<p>Requisição do cliente:</p>
<pre>OPTIONS * HTTP/1.1
Host: proxy4.example.com
Compliance: *</pre>
<p>Servidor proxy4.example.com responde:</p>
<pre>HTTP/1.1 200 OK
Date: Tue, 22 Jul 1997 20:21:51 GMT
Server: SuperProxy/1.0
Public: OPTIONS, GET, HEAD, PUT, POST, TRACE
Compliance: rfc=1543, rfc=2068, hdr=set-proxy
Compliance: hdr=wonder-bar-http-widget-set
Content-Length: 0</pre>
<h4>CONNECT</h4>
<p>Geralmente, o protocolo HTTP opera sobre a porta 80, e o protocolo seguro <a title="HTTPS" href="http://en.wikipedia.org/wiki/HTTP_Secure" target="_blank">HTTPS</a> sobre a porta 443. Para alguns, a necessidade de duas portas alocadas para essas funções é um desperdício. O HTTP/1.1 introduziu uma maneira de alterar entre modos de transmissão, mesmo sem utilizar a porta 443. Em um determinado momento, tanto o cliente quanto o servidor podem requisitar uma alteração do tipo de transmissão, passando para o protocolo seguro TLS, por exemplo. Essa troca de transmissão é requisitada através dos cabeçalhos <em>Upgrade</em> e <em>Connection: Upgrade</em>. A outra ponta pode aceitar ou não o pedido de mudança. Quando existe um proxy entre o cliente e o servidor final, é preciso criar um túnel que ligue as duas pontas diretamente, e é para isso que serve o método CONNECT: criar uma ponte entre cliente, proxies e o servidor, permitindo que a troca de mensagens ocorra diretamente, através do protocolo TLS.</p>
<h3>Características dos métodos</h3>
<p>Os métodos GET, HEAD, TRACE e OPTIONS são considerados &#8220;seguros&#8221;, ou seja, não afetam em nada o comportamento do servidor. Você pode executá-los quantas vezes quiser que o resultado retornado será sempre o mesmo (a menos que o servidor mude seu comportamento por conta própria), e essas requisições não causarão efeitos colaterais no servidor. Já os demais métodos, como PUT, POST e DELETE, afetam o estado do servidor quando executados. O PUT e o DELETE causam sempre a mesma mudança do servidor, podendo ser executados várias vezes que o resultado será sempre o mesmo. Mas o POST é diferente: requisições consecutivas desse método podem causar efeitos diferentes no servidor. Por exemplo, se você faz dois POSTs seguidos para a URL /blog/cadastra-comentario de um blog fictício, você pode estar cadastrando duas vezes os dados no servidor.</p>
<h3>Como utilizar esses métodos</h3>
<p>A maioria das aplicações na web faz uso somente dos métodos GET e POST, mas você pode utilizar alguns desses métodos do HTTP para tornar sua aplicação mais flexível e inteligente. Com PHP, por exemplo, é possível realizar qualquer tipo de chamada usando um <a title="socket" href="http://www.php.net/manual/en/function.fsockopen.php" target="_blank">socket</a>, ou com a extensão <a title="cURL" href="http://www.php.net/curl" target="_blank">cURL</a>, que suporta HTTP e HTTPS.</p>
<p>Exemplo de HEAD usando socket:</p>
<pre>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fsockopen</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'www.example.com'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">80</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errno</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errstr</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$errstr</span> (<span style="color: #006699; font-weight: bold;">$errno</span>)&lt;br /&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$out</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;HEAD /index.html HTTP/1.1<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$out</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;Host: www.example.com<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$out</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;Connection: Close<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$out</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">feof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
</pre>
<p>A saída desse script é:</p>
<pre>HTTP/1.1 200 OK
Date: Wed, 27 Jan 2010 03:34:47 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT
ETag: "b300b4-1b6-4059a80bfd280"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
</pre>
<p>Note que deve existir uma linha em branco separando os cabeçalhos do corpo da mensagem. Neste caso, o corpo da mensagem de retorno está vazio, já que executamos um HEAD e não um GET.</p>
<h3>E era isso!</h3>
<p>No próximo post sobre HTTP, irei explorar os status codes do protocolo, ou seja, quais os códigos de retorno que um servidor pode responder para uma requisição.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brunofajardo.com/2010/01/o-protocolo-http-parte-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dando início aos trabalhos&#8230;</title>
		<link>http://blog.brunofajardo.com/2010/01/dando-inicio-aos-trabalhos/</link>
		<comments>http://blog.brunofajardo.com/2010/01/dando-inicio-aos-trabalhos/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 02:35:39 +0000</pubDate>
		<dc:creator>Bruno Fajardo</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Gerenciamento de Projetos]]></category>
		<category><![CDATA[Grêmio]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Redes Sociais]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://blog.brunofajardo.com/?p=3</guid>
		<description><![CDATA[
Salve, meus queridos! Sejam bem-vindos ao meu blog.
Antes de mais nada, a minha apresentação de 30 segundos: Meu nome é Bruno Fajardo, trabalho com web desde 2003, quando ingressei na UFRGS em Ciência da Computação. Trabalhei em algumas empresas e em diversos projetos, a maioria deles como desenvolvedor web PHP, mas também tive meus momentos [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/soldon/548766575/" target="_blank"><img class="   " title="Fonte: http://www.flickr.com/photos/soldon/548766575/" src="http://farm2.static.flickr.com/1093/548766575_2fdf2e5692.jpg" alt="&quot;Ô garçom, demora muito os pasteizinhos ainda?&quot;" width="500" height="375" /></a><p class="wp-caption-text">&quot;Ô garçom, demora muito os pasteizinhos ainda?&quot;</p></div>
<p>Salve, meus queridos! Sejam bem-vindos ao meu blog.</p>
<p>Antes de mais nada, a minha apresentação de 30 segundos: Meu nome é Bruno Fajardo, trabalho com web desde 2003, quando ingressei na UFRGS em Ciência da Computação. Trabalhei em algumas empresas e em diversos projetos, a maioria deles como desenvolvedor web PHP, mas também tive meus momentos de Java e de outras tecnologias. Atualmente, já livre da UFRGS (pelo menos da graduação), trabalho como Gerente de Desenvolvimento em uma empresa de tecnologia gaúcha, tentando manter a veia de programador ativa. Nas horas que sobram da semana, costumo tomar uma cervejinha com a galera ali na Goethe, botar a leitura em dia e mentir pra mim mesmo que vou na academia. Em dias de jogos do Grêmio vocês podem me encontrar nos arredores do Olímpico, ou lá dentro, no setor A4 da arquibancada.</p>
<p>Esse é o primeiro post de muitos que virão (assim espero). Esse blog nasceu da minha vontade de escrever sobre os assuntos do meu interesse, sobre as coisas do meu dia-a-dia, que muitas vezes se perdem e são esquecidas. Pretendo falar sobre diversos assuntos que orbitam a vida de um profissional de web, como desenvolvimento server-side e client-side, web standards, banco de dados, gerência de projetos, Linux, PHP, Java, redes sociais e tudo mais que der vontade!</p>
<p>Seria ótimo se vocês pudessem contribuir com suas ideias, xingamentos ou propagandas aqui nos comentários. Colaboração é o futuro, gurizada!</p>
<p>Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brunofajardo.com/2010/01/dando-inicio-aos-trabalhos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
