<?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>THLopes.com &#187; code</title>
	<atom:link href="http://www.thlopes.com/tag/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thlopes.com</link>
	<description>Web, Ciência, Computação e Poesia</description>
	<lastBuildDate>Mon, 02 Jan 2012 20:29:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>zipando arrays javascript como no python</title>
		<link>http://www.thlopes.com/2011/01/zipando-arrays-javascript-como-no-python/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=zipando-arrays-javascript-como-no-python</link>
		<comments>http://www.thlopes.com/2011/01/zipando-arrays-javascript-como-no-python/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 19:00:39 +0000</pubDate>
		<dc:creator>Thomas Lopes</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://www.thlopes.com/?p=964</guid>
		<description><![CDATA[Essa dica rápida é para aqueles que estão procurando uma forma de mesclar (merge) arrays em Javascript como é feito em Python através da função zip. <a href="http://www.thlopes.com/2011/01/zipando-arrays-javascript-como-no-python/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Essa dica rápida é para aqueles que estão procurando uma forma de mesclar (merge) arrays em Javascript como é feito em Python através da função zip():</p>
<pre>function zip() {
    var merged=[],arrays=[],lengths=[];
    for(var i=0; i&lt;arguments.length; i++) {
        arrays.push(arguments[i]);
        lengths.push(arguments[i].length);
    }
    for (var i=0; i &lt; Math.min.apply(null,lengths); i++) {
        merged[i] = arrays.map(function(value) { return value[i]; });
    }
    return merged;
}</pre>
<p>Enjoy!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thlopes.com/2011/01/zipando-arrays-javascript-como-no-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nerdcast sobre programadores</title>
		<link>http://www.thlopes.com/2010/05/nerdcast-sobre-programadores/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nerdcast-sobre-programadores</link>
		<comments>http://www.thlopes.com/2010/05/nerdcast-sobre-programadores/#comments</comments>
		<pubDate>Fri, 28 May 2010 20:10:05 +0000</pubDate>
		<dc:creator>Thomas Lopes</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Fatos]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[profissão]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.thlopes.com/?p=836</guid>
		<description><![CDATA[Quem acompanha o blog sabe que esporadicamente posto links para podcasts de assuntos relacionados a THLopes. E aqui está mais: o Nerdcast de hoje, cujo tema é Profissão: Programador. Como este que vos escreve atua nessa profissão, recomendo ouvir esse excelente podcast para fechar sua sexta-feira. Boas risadas e descobertas! <a href="http://www.thlopes.com/2010/05/nerdcast-sobre-programadores/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Nerdcast #211 Profissão: programador por thlopes, no Flickr" href="http://www.thlopes.com/2010/05/nerdcast-sobre-programadores/"><img src="http://farm5.static.flickr.com/4062/4647820359_286829fea9_o.jpg" alt="Nerdcast #211 Profissão: programador" width="440" height="235" /></a></p>
<p>Quem acompanha o blog sabe que esporadicamente posto links para podcasts de assuntos relacionados a THLopes. E aqui está mais: o Nerdcast de hoje, cujo tema é Profissão: Programador. Como este que vos escreve atua nessa profissão, recomendo <a title="Nerdcast 211 -0 profissão programador" href="http://jovemnerd.ig.com.br/nerdcast/nerdcast-211-profissao-programador/">ouvir esse excelente podcast para fechar sua sexta-feira</a>. Boas risadas e descobertas!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thlopes.com/2010/05/nerdcast-sobre-programadores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Otimizando desempenho</title>
		<link>http://www.thlopes.com/2010/01/otimizando-desempenho/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=otimizando-desempenho</link>
		<comments>http://www.thlopes.com/2010/01/otimizando-desempenho/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 23:20:12 +0000</pubDate>
		<dc:creator>Thomas Lopes</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.thlopes.com/?p=618</guid>
		<description><![CDATA[Com o advento da computação em nuvem, alguns perceberam que realmente deveriam otimizar suas aplicações, pois cada KB gasto vai representar algum valor que será, com certeza, debitado num cartão de crédito futuramente. Enquanto antigamente, bastava planejar a compra de uma máquina muito além das necessidades e ter um custo fixo, agora, a briga é para sempre diminuir a conta no fim do mês, como numa economia doméstica (certa vez, ouvi que toda economia é de migalhas. Concordo). <a href="http://www.thlopes.com/2010/01/otimizando-desempenho/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Cronômetro de Corrida por thlopes, no Flickr" href="http://www.flickr.com/photos/thlopes/4311711754/"><img src="http://farm5.static.flickr.com/4046/4311711754_0b9d33890c_o.jpg" alt="Cronômetro de Corrida" width="570" height="120" /></a></p>
<p>Nos últimos dias, temos brigado muito por coisas muito pequenas, as vezes passageiras. Cada migalha desperdiçada é motivo para um nova discussão que acaba mudando o rumo das coisas&#8230; Calma gente, não estou tendo problemas de relacionamento não, são apenas discussões sadias de trabalho para se melhorar os níveis de performance nos aplicativos.</p>
<p>Quando se atinge um certo número de usuários de uma única aplicação, devemos tomar certos cuidados. Muitas vezes, ignoramos alguns pontos que podemos melhorar, deixando 1KByte, 2KB mais leves, pois afinal, para um usuário parece tão pouco, mas quanto representa 2KB multiplicado por 100 mil usuários? 195 MB. É, assusta, e as cifras só tendem a aumentar.</p>
<p>Com o advento da <a title="Leia mais sobre na Wikipedia" href="http://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_em_nuvem">computação em nuvem</a>, alguns perceberam que realmente deveriam otimizar suas aplicações, pois cada KB gasto vai representar algum valor que será, com certeza, debitado num cartão de crédito futuramente. Enquanto antigamente, bastava planejar a compra de uma máquina muito além das necessidades e ter um custo fixo, agora, a briga é para sempre diminuir a conta no fim do mês, como numa economia doméstica (certa vez, ouvi que toda economia é de migalhas. Concordo).</p>
<p>Mas muitas vezes, desenvolvedores de aplicações esquecem de alguns detalhes como por exemplo, o peso dos arquivos da camada de apresentação de suas aplicações. Na Web, isso também deve entrar na conta: tamanho do HTML, <span class="bbused"><a class="bbli" href="http://sledge.boo-box.com/list/page/Q1NTXyMjX2JveF8jI19ib28tYm94ZnlfIyNfMjM5MzQ=-44">CSS<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a></span>, JS e imagens. E hoje em dia, são relativamente conhecidas técnicas para aprimorar esses estáticos para uma melhor experiência do usuário. Digo relativamente porque ainda me deparo com muitos websites, sistemas e gadgets por aí sem nenhuma otimização nesse sentido. No Brasil ainda temos muitos usuários que não dispõe de banda larga, e eles agradecem cada byte salvo.</p>
<p><span id="more-618"></span></p>
<h3>Primeiro passo: Limpeza</h3>
<p>Um arquivo limpo de tudo que não é necessário é muito melhor, sem dúvida. Elimine dos arquivos aquelas linhas velhas, cheias de comentários inúteis, atributos desnecessários, funções que não são usadas, variáveis zumbis (que estão ali apenas para &#8230; nada). Em minha última façanha do tipo, deu pra economizar cerca de 10KB. Como vamos usar uma ferramenta mais pra frente, não precisa deletar nada do arquivo ainda, a não ser que queira ver o quanto você ganhou com esse processo. Comentários podem ser mantidos, e métodos &#8220;depreciados&#8221; podem ser mantidos comentados também (eu faço isso para armazenar código que venha a ser útil ou que queira manter no histórico para referência rápida).</p>
<h3>Reavaliação</h3>
<p>Depois desse passo, é a hora de fazer uma certa mágica. Esse passo depende de experiência do usuário, e que tenha um bom conhecimento de lógica e da linguagem em si: reavaliar seu código, diminuindo estruturas de código sem aumentar a quantidade de cálculos, quando não diminuindo o custo computacional (<a title="Leia mais sobre análise assintótica" href="http://pt.wikipedia.org/wiki/An%C3%A1lise_assint%C3%B3tica">análise assintótica</a>). Isso pode envolver uma análise mais  matemática do código, estimando o número máximo de comparações e operações que ele pode executar. Por isso demanda um profissional graduado. Mas lembre-se: <em>não sacrifique o processamento em troca de tamanho de código!</em> Diversas vezes um código maior e mais específico pode rodar muitas vezes mais rápido. Também, outras vezes, uma simples instrução a mais pode representar um <a title="Leia mais sobre Estruturas de repetição" href="http://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o">laço </a>a menos.</p>
<h3>Comprimindo o código: YUI Compressor</h3>
<p>Esse compactador transforma seus arquivos JS e CSS em versões <em>minificadas</em>: com sintaxe reduzida, sem quebras e espaços desnecessários, sem comentários, tudo numa única linha. Isso pode reduzir drasticamente o tamanho do arquivo sem alterar seu conteúdo (eu consegui em minha última utilização a marca de reduzir um <em>.js</em> de 135KB para 84KB!!!), o que é o que buscamos (afinal, quem quer codificar duas vezes a mesma coisa? Otimizar tempo também é muito importante! O <a title="Saiba mais sobre o YUI compressor" href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a> é muito prático e rápido para essa tarefa.</p>
<p>Apenas para exemplificar: ele também altera as assinaturas das suas funções/classes:</p>
<pre>function xyz(value_1, value_2) {
    this.param_1 = value_1;
    this.param_2 = value_2;
    ....</pre>
<p>Ficará assim, num primeiro momento, assim:</p>
<pre>function xyz(f, g) {
    this.param_1 = f;
    this.param_2 = g;
    ....</pre>
<p>E depois, assim:</p>
<pre>function xyz(f,g){this.param_1=f;this.param_2=g;....</pre>
<p>Não se preocupe! Tudo vai funcionar normalmente. Mas podemos perceber que esse compressor realmente vai diminuir seus arquivos. Na tabela abaixo, pode ver o que esses três métodos podem fazer com o peso da sua aplicação:</p>
<p style="text-align: center"><a class="flickr-image aligncenter" title="Compressão de Arquivos" rel="flickr-mgr" href="http://www.flickr.com/photos/thlopes/4304960458/"><img class="flickr-original aligncenter" longdesc="http://farm5.static.flickr.com/4032/4304960458_8c18ef0715_o.png" src="http://farm5.static.flickr.com/4032/4304960458_8c18ef0715_o.png" alt="Compressão de Arquivos" /></a></p>
<p style="text-align: left">Um ganho de ~<strong>50%</strong> no peso total da aplicação, apenas na parte de <em>storage </em>e fileserv.</p>
<h3>A União faz a <span style="text-decoration: line-through">Força</span> Velocidade</h3>
<p style="text-align: left">Se possível, junto todos os arquivos num único. Tem vários .js? Faça apenas um. O mesmo para os CSS. No protocolo <a title="Mais sobre a HTTP 1.1" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4">HTTP/1.1</a>, temos uma definição que recomenda não ter maiss de duas requisições sendo processadas ao mesmo tempo para o mesmo servidor. Alguns browsers, como o I.E., seguem isso a risca. Logo, quanto mais arquivos tiver para carregar, pior: mais conexões serão necessárias para atender a demanda, e como o browser só fará duas ao mesmo  tempo, o usuário vai ter que esperar. Aposto que você até teve aquele momento &#8220;lâmpada sobre a cabeça&#8221; agora, imaginando se poderia fazer isso também para as imagens&#8230; e poderá! Veja a seguir no próximo tópico. Uma outra dica para sanar esse problema das conexões simultâneas é manter arquivos em vários servers diferentes.</p>
<p style="text-align: center">
<h3>Sprites</h3>
<p>Essa já é mais complicada (principalmente para os desenvolvedores não designers, pelo skill necessário), mas pode significar um gadget/site muito mais rápido para o usuário final. Assim, imagine você carregando vários arquivos .png, os ícones da sua aplicação, por exemplo. Seguindo esse conceito, eles vão ser carregados apenas 2 a 2, mesmo que o usuário tenha uma banda larga suficiente e seu servidor um canhão para carregar muito mais do que isso (falando em tamanho).</p>
<p>Para sanar essa deficiência indireta, uma técnica utilizada são os sprites: você coloca todas as imagens num único arquivo .png (pode ser outra extensão, se aplicável, mas eu recomendo essa), e com os comandos CSS, você seleciona apenas a parte que deseja. Assim será possível usar todo o potencial da banda disponível para trazer todos seus ícones numa única conexão com o servidor, enquanto a segunda concorrente pode ser uma fonte de dados essencial para seu funcionamento.</p>
<p>Nesse <a title="Tutorial sobre Sprites com CSS, em inglês" href="http://www.alistapart.com/articles/sprites">tutorial do A List Apart</a> você encontra uma extensa referencia sobre a técnica de sprites.</p>
<h3>Concluindo</h3>
<p>Bom, com estas ações simples, aposto que sua aplicação será bem melhor carregada, economizará até alguns $$$ para poder me pagar uma cerveja. Sendo assim, deixe seus comentários e dicas nos comentários, caso eu tenha deixado passar alguma! Em breve, um artigo sobre otimização de banco de dados e de fluxo de aplicações.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thlopes.com/2010/01/otimizando-desempenho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wrapit, um plugin jQuery</title>
		<link>http://www.thlopes.com/2009/09/wrapit-um-plugin-jquery/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wrapit-um-plugin-jquery</link>
		<comments>http://www.thlopes.com/2009/09/wrapit-um-plugin-jquery/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 15:52:52 +0000</pubDate>
		<dc:creator>Thomas Lopes</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://www.thlopes.com/?p=420</guid>
		<description><![CDATA[Há um tempo atrás, precisei de um plugin para limitar o texto em algum elemento html, abreviando o texto. Encontrei um plugin legal, o jqEllipsis, porém, não funciona como eu precisava. Minha necessidade é limitar o texto baseado na quantidade de linhas que ele ocupa, e esse por sua vez trabalha com a largura ocupada pelo objeto, para  limitar o texto em uma única linha ou largura determinada. <a href="http://www.thlopes.com/2009/09/wrapit-um-plugin-jquery/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://plugins.jquery.com/project/wrapit"><img class="alignleft size-full wp-image-421" src="http://www.thlopes.com/files/2009/09/jquery-logo2.png" alt="jquery-logo" width="227" height="61" /></a>Há um tempo atrás, precisei de um plugin para limitar o texto em algum elemento html, abreviando o texto. Encontrei um plugin legal, o <a href="http://code.google.com/p/jqellipsis/" target="_blank">jqEllipsis</a>, porém, não funciona como eu precisava. Minha necessidade é limitar o texto baseado na quantidade de linhas que ele ocupa, e esse por sua vez trabalha com a largura ocupada pelo objeto, para  limitar o texto em uma única linha ou largura determinada.</p>
<p>Assim, concebi esse pequeno plugin, chamado aqui de <strong>WrapIt</strong>, para realizar esse corte de acordo com o número de linhas passado como argumento. O fato de ser um plugin jQuery, é a facilidade de uso. Basta chamar como uma função num objeto jQuery, informando o número máximo de linhas desejado.</p>
<p><a href="http://www.thlopes.com/projetos/jquery-plugins/wrapit/">Confira mais sobre o <strong>WrapIt</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thlopes.com/2009/09/wrapit-um-plugin-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FILE &#8211; Feira Internacional de Linguagem Eletrônica</title>
		<link>http://www.thlopes.com/2009/08/file-feira-internacional-de-linguagem-eletronica/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=file-feira-internacional-de-linguagem-eletronica</link>
		<comments>http://www.thlopes.com/2009/08/file-feira-internacional-de-linguagem-eletronica/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 18:48:20 +0000</pubDate>
		<dc:creator>Thomas Lopes</dc:creator>
				<category><![CDATA[Cultura]]></category>
		<category><![CDATA[Poesia]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linguagem]]></category>
		<category><![CDATA[PLN]]></category>
		<category><![CDATA[Text mining]]></category>

		<guid isPermaLink="false">http://www.thlopes.com/?p=306</guid>
		<description><![CDATA[NURBS PROTO 4KT é a temática do FILE 09, que ocorre em São Paulo de hoje até 30 de agosto. Em sua décima edição, o evento conta novamente com um programação ampla e vanguardista cheia de instalações, performances, exibições, palestras e mesas-redondas para reflexão sobre tecnologia e arte. <a href="http://www.thlopes.com/2009/08/file-feira-internacional-de-linguagem-eletronica/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.file.org.br/"><img class="alignleft" src="http://startupi.com.br/wp-content/uploads/2009/07/scrcav-300x246.jpg" alt="" width="300" height="246" /></a>NURBS PROTO 4KT é a temática do FILE 09, que ocorre em São Paulo de hoje até 30 de agosto. Em sua décima edição, o evento conta novamente com um programação ampla e vanguardista cheia de instalações, performances, exibições, palestras e mesas-redondas para reflexão sobre tecnologia e arte.</p>
<p>Durante este FILE, vai acontecer <span class="textopt">a <a href="http://www.file.org.br/file2009/press_sp/transcontinental.htm">primeira transmissão transcontinental em alta definição de um longa-metragem</a>: “Enquanto a Noite Não Chega”, do cineasta brasileiro Beto Souza, entre as cidades de São Paulo (Brasil), San Diego (Estados Unidos) e Yokohama (Japão); haverá também a <a href="http://www.file.org.br/file2009/press_sp/inovacao.htm">apresentações de 5 incubadoras tecnológicas</a> e palestra e mesa-redonda com </span><span class="txtp10bleft">José Murilo, Gerente de Cultura Digital do Ministério da Cultura, falando sobre o Fórum da Cultura Digital Brasileira (<a href="http://www.culturadigital.br/blog/2009/07/13/arte-e-cultura-digital-brasileira-no-file-2009/">culturadigital.br</a>).</span></p>
<p><span class="txtp10bleft">Não precisa nem perguntar! Eu vou!</span></p>
<p><span class="txtp10bleft">Via <a href="http://startupi.com.br/2009/inicia-o-festival-internacional-de-linguagem-eletronica/comment-page-1/#comment-2302">Startupi</a><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thlopes.com/2009/08/file-feira-internacional-de-linguagem-eletronica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aniversário do PHP</title>
		<link>http://www.thlopes.com/2009/06/aniversario-do-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aniversario-do-php</link>
		<comments>http://www.thlopes.com/2009/06/aniversario-do-php/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 16:32:43 +0000</pubDate>
		<dc:creator>Thomas Lopes</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Fatos]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[linguagem]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.thlopes.com/?p=95</guid>
		<description><![CDATA[Hoje o PHP é parabenizado pelo seu aniversário[bb] de 14 anos. Em 1995, no dia 8/Junho Rasmus Lerdorf lançou a primeira versão do PHP, esta linguagem que hoje todos usamos (e as vezes adoramos). Em homenagem a linguagem preferida dos Web Developers e Designers, e aos meus amigos PHPzeiros Marcelo Honorio, Eric Goes, Marcos Riso, Leonardo Rossetti e Vitor Siqueira, um abraço e bons códigos! <a href="http://www.thlopes.com/2009/06/aniversario-do-php/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://pt.wikipedia.org/wiki/PHP"><img class="alignright" src="http://upload.wikimedia.org/wikipedia/commons/9/9a/Crystal_Clear_mimetype_source_php.png" alt="" width="128" height="128" /></a>Hoje o <em>PHP</em> é parabenizado pelo seu <a class="bbli" href="http://sledge.boo-box.com/list/page/cGVyZnVtZXNfIyNfYm94XyMjX3RhZ2dpbmctdG9vbC13cF8jI18yMzkzNA==-60">aniversário<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> de 14 anos. Em 1995, no dia 8/Junho Rasmus Lerdorf lançou a primeira versão do PHP, esta linguagem que hoje todos usamos (e as vezes adoramos). Em homenagem a linguagem preferida dos Web Developers e Designers, e aos meus amigos PHPzeiros <a title="Blog do Marcelo Honório" href="http://blog.marcelohonorio.com.br">Marcelo Honorio</a>, Eric Goes, Marcos Riso, Leonardo Rossetti e Vitor Siqueira, um abraço e bons códigos!</p>
<p>Links recomendados:</p>
<ul>
<li><a href="http://www.php.net">http://www.php.net</a></li>
<li><a href="http://pt.wikipedia.org/wiki/PHP">http://pt.wikipedia.org/wiki/PHP</a></li>
<li><a href="http://www.phpsp.org.br">http://www.phpsp.org.br</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.thlopes.com/2009/06/aniversario-do-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>O poder da Web 2.0</title>
		<link>http://www.thlopes.com/2009/05/o-poder-da-web-20/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=o-poder-da-web-20</link>
		<comments>http://www.thlopes.com/2009/05/o-poder-da-web-20/#comments</comments>
		<pubDate>Fri, 15 May 2009 14:39:03 +0000</pubDate>
		<dc:creator>Thomas Lopes</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[cerveja]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[futuro]]></category>

		<guid isPermaLink="false">http://blog.thlopes.com/?p=11</guid>
		<description><![CDATA[Uma reflexão sobre a Web 2.0 no dia de um blogueiro <a href="http://www.thlopes.com/2009/05/o-poder-da-web-20/">Continuar lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="flickr-image alignright" title="Super taça" rel="flickr-mgr" href="http://www.flickr.com/photos/thlopes/3237324034/"></a><a class="flickr-image alignright" title="Super taça" rel="flickr-mgr" href="http://www.flickr.com/photos/thlopes/3237324034/"><img class="flickr-medium" src="http://farm4.static.flickr.com/3303/3237324034_3c0fbfc957_m.jpg" alt="Super taça" /></a>Vejam só que maravilha é a <em>Web 2</em>.0: Antes eu tinha que pegar minhas fotos, criar uma cópia para o <em>Thumbnail</em>, salvar as duas versões, subir no <em>FTP</em> do servidor, depois ir no <em>HTML</em> do site, inserir as tags, codifica aqui, codifica lá&#8230; (não que isso seja ruim, muito pelo contrário! Vamos codificar coisas mais interessantes!)</p>
<p>Agora, basta eu plugar minha cam no pc, subir tudo no Flickr, e depois entrar no <em>WordPress</em> e apenas selecionar as fotos que quero postar e pronto. Tudo rápido e prático, sobrando mais tempo para uma bela codificada de verdade <img src='http://www.thlopes.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Aproveitando o gancho, deixe-me falar de algo que vi agora há pouco: Algumas empresas já perceberam o poder dessa nova web, dessa tendência. Umas sentiram na pele o gosto ruim de ver modelos de negócio altamente lucrativos desabarem em questões de algumas semanas, enquanto outras viram suas reservas aumentarem consideravelmente ao adotar arquiteturas 2.0. Pensando nesse aspecto, uma empresa lançou um serviço de aluguel e venda de filmes digitais do país e dá início à era pós-DVD. (Fonte: <a title="Portal Exame sobre Saraiva Filmes Digitais" href="http://portalexame.abril.com.br/revista/exame/edicoes/0943/tecnologia/fantastica-fabrica-downloads-469847.html">Portal Exame</a>). <strong>Infelizmente</strong>, só funciona para quem usa <em>Windows</em>&#8230;</p>
<p>É, assim fica difícil não apoiar os caras do <a title="Pirate Bay Site" href="http://thepiratebay.org/"><em>The Pirate Bay</em></a>, em sua <a title="Julgamento Pirate Bay" href="http://www.oficinadanet.com.br/artigo/1652/seria_o_fim_do_compartilhamento_de_arquivos">saga de julgamento</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thlopes.com/2009/05/o-poder-da-web-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

