<?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>Rafael Capucho</title>
	<atom:link href="http://blog.rafaelcapucho.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.rafaelcapucho.com</link>
	<description>Tudo sobre Java, UML, PHP e Boas Práticas de Programação</description>
	<lastBuildDate>Sat, 28 Nov 2009 04:38:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mídias Sociais &#8211; Qualidade do Produto e Pesquisa de Mercado para Empresas</title>
		<link>http://blog.rafaelcapucho.com/midias-sociais/redes-sociais-qualidade-produto-pesquisa-de-mercado-empresas-monitorando-twitter.html</link>
		<comments>http://blog.rafaelcapucho.com/midias-sociais/redes-sociais-qualidade-produto-pesquisa-de-mercado-empresas-monitorando-twitter.html#comments</comments>
		<pubDate>Sat, 28 Nov 2009 04:25:45 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Mídias Sociais]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=229</guid>
		<description><![CDATA[
Os consumidores de hoje, com frequência se afogam num mar de objetos brilhantes. O consumo deveria ser mais fácil e dar mais satisfação, devido a produtos melhores e mais baratos mas ao invés disso, são precisos cada vez mais tempo e incômodo para fazer com que todos os nossos bens e serviços funcionem de forma [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><a title="Mídias Sociais Empresas Produtos e Relacionamentos" href="http://blog.rafaelcapucho.com/midias-sociais/redes-sociais-qualidade-produto-pesquisa-de-mercado-empresas-monitorando-twitter.html" rel="nofollow"><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/post-Midias-Sociais.jpg" alt="Mídias Sociais Empresas Produtos e Relacionamentos" title="Mídias Sociais Empresas Produtos e Relacionamentos" /></a></p>
<p>Os consumidores de hoje, com frequência se afogam num mar de objetos brilhantes. O consumo deveria ser mais fácil e dar mais satisfação, devido a produtos melhores e mais baratos mas ao invés disso, são precisos cada vez mais tempo e incômodo para fazer com que todos os nossos bens e serviços funcionem de forma adequada e em conjunto.</p>
<p>Procurando entender por que algumas empresas estão vencendo a competição global nos deparamos com pesquisas de mercado, sempre houve pesquisa de mercado, porém os meios de comunicação e a maneira como nos comunicamos tem passado por constantes evoluções, antigamente havia a pesquisa boca-a-boca onde as pessoas de um modo geral respondiam questões e opiniões sobre determinado assunto (qualitativo) e pesquisas numéricas como o número de vendas (quantitativo). O problema das pesquisas qualitativas é que elas poderiam não ser representativas, dependendo do público avaliado como por exemplo a técnica de <a href="http://pt.wikipedia.org/wiki/Focus_groups" rel="nofollow" target="_blank">Focus Group</a>.</p>
<p><em>A maneira de comunicação presentes nas mídias sociais permite que qualquer pessoa crie informação e distribua essa informação que pode ser trabalhada a afim de se tornar parte de uma pesquisa de mercado tanto qualitativa quanto quantitativa, mas logicamente, nem sempre representativa.</em></p>
<p><span id="more-229"></span></p>
<p>Não são as brilhantes inovações em produtos, nem a cultura, nem a moeda fraca, nem o forte apoio do governo que fazem com que as empresas se destaquem no mercado global e sim o desenvolvimento de produtos que satisfazem as necessidades dos clientes efetivamente.</p>
<p><img alt="Máquina de Café do Futuro - Inovação" title="Cafeteira Máquina de Café do Futuro - Inovação" src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/maquinaDeCafe2.jpg"/></p>
<p>Uma máquina de café que faça a leitura de todas as noticias na hora em que são publicadas, monitora suas ações na bolsa de valores além de dar dicas para investimentos e se não bastasse cuida da segurança geral da sua residência parece ser a máquina dos sonhos.</p>
<p>Mas, curiosamente, mesmo com uma crescente variedade de produtos melhores, com menos defeitos e a um custo menor, disponíveis numa gama crescente de canais de vendas, as experiências dos consumidores parecem estar se deteriorando. Podemos ver por exemplo a frustração de um cliente perante o SAC (Serviço de Atendimento ao Cliente) e Centros de Suporte que quase nunca te ajudam de maneira eficiente. </p>
<p>O melhor produto nada mais é do que uma série de ações conduzidas de forma correta, na sequência apropriada, no momento certo para criar valor para os clientes. <em>O fato de podermos, a partir das redes sociais, monitorar os clientes em potêncial de maneira direta e qualitativa cria uma grande oportunidade no campo do planejamento estratégico</em>.</p>
<p>Fica fácil ver a situação quando estamos na posição de clientes. Quando compreendemos a importância premente de resolver os problemas da maneira mais simples e objetiva possível.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/midias-sociais/redes-sociais-qualidade-produto-pesquisa-de-mercado-empresas-monitorando-twitter.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vídeo Aula &#8211; Sistema de Cache com PHP no Linux</title>
		<link>http://blog.rafaelcapucho.com/php/video-aula-sistema-de-cache-com-php-performance-no-linux.html</link>
		<comments>http://blog.rafaelcapucho.com/php/video-aula-sistema-de-cache-com-php-performance-no-linux.html#comments</comments>
		<pubDate>Fri, 23 Oct 2009 03:13:51 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Video Aula]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=204</guid>
		<description><![CDATA[
Fala pessoal, nesse vídeo tutorial vamos falar sobre Cache de Página (cacheamento), muito importante para sites de grande porte onde o número de requisições da página é crescente.
Vídeo Aula apresenta de maneira prática como implementar um sistema de cache utilizando PHP em um ambiente Linux (A técnica é a mesma para outros sistemas operacionais como [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><object width="520" height="390" data="http://www.vimeo.com/moogaloop.swf?clip_id=7212614&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" type="application/x-shockwave-flash"><param name="quality" value="best" /><param name="scale" value="showAll" /><param name="allowfullscreen" value="true" /><param name="wmode" value="transparent" /><param name="src" value="http://www.vimeo.com/moogaloop.swf?clip_id=7212614&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" /></object></p>
<p>Fala pessoal, nesse vídeo tutorial vamos falar sobre <em>Cache de Página</em> (<em>cacheamento</em>), muito importante para sites de grande porte onde o número de requisições da página é crescente.</p>
<p>Vídeo Aula apresenta de maneira prática como implementar um sistema de cache utilizando PHP em um ambiente Linux (A técnica é a mesma para outros sistemas operacionais como Windows).</p>
<p>Existem várias boa soluções já integradas em <em>frameworks</em> como Zend, Smarty Template, CakePHP, DJango, entre outros, ou sistemas mais sofisticados como Squid-Cache.</p>
<p>A idéia é criar uma cópia do código-fonte de saída do navegador para um arquivo HTML que possa ser inserido de maneira dinâmica e atualizado em um determinado intervalo de tempo ou quando uma função específica é chamada.</p>
<p>Dessa maneira conseguimos <em>otimizar a performance</em> de um sistema significativamente e permite que seu <em>servidor web</em> respire melhor.</p>
<p><span id="more-204"></span></p>
<p>Vídeo Aula que apresenta uma maneira prática para criar um <em>sistema de cache</em> para páginas em PHP no ambiente Linux (pode ser usado sob Windows e outros Sistemas Operacionais também).</p>
<p>O vídeo explica como criar uma cópia do código-fonte de saída para um arquivo HTML que pode ser atualizado de maneira automática em determinado intervalo de tempo.</p>
<p>Enviem suas dúvidas,<br />
Espero que gostem e não esqueçam de comentar. </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/php/video-aula-sistema-de-cache-com-php-performance-no-linux.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mídias Sociais &#8211; Monitoramento de Marca no Twitter</title>
		<link>http://blog.rafaelcapucho.com/geral/midias-sociais-monitoramento-de-marca-no-twitter.html</link>
		<comments>http://blog.rafaelcapucho.com/geral/midias-sociais-monitoramento-de-marca-no-twitter.html#comments</comments>
		<pubDate>Fri, 25 Sep 2009 23:48:15 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Mídias Sociais]]></category>
		<category><![CDATA[Notícias]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=168</guid>
		<description><![CDATA[
Hoje em dia as empresas sempre buscam a satisfação do cliente (ou deveriam), porém onde encontrar os clientes?
Algumas empresas recebem diariamente diversas reclamações por intermédio do suporte técnico, problemas que muitas vezes não são solucionados efetivamente, porém até pouco tempo atrás, a imagem deteriorada da marca não saía de um circulo muito pequeno de conhecidos [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><a href="http://blog.rafaelcapucho.com/geral/midias-sociais-monitoramento-de-marca-no-twitter.html"><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/midias_net_virtua.jpg" alt="Net Virtua no Twitter" title="Net Virtua no Twitter" /></a></p>
<p>Hoje em dia as empresas sempre buscam a <em>satisfação do cliente</em> (ou deveriam), porém onde encontrar os clientes?</p>
<p>Algumas empresas recebem diariamente diversas reclamações por intermédio do suporte técnico, problemas que muitas vezes não são solucionados efetivamente, porém até pouco tempo atrás, a imagem deteriorada da marca não saía de um circulo muito pequeno de conhecidos em relação a esse cliente, não afetando a imagem da empresa em larga escala.</p>
<p>A resposta para onde encontrar os clientes está nas <em>Mídias Sociais</em>, que consiste basicamente na participação do usuário para geração de conteúdo como: <em>Twitter, Facebook, Meme, Orkut</em> e etc..</p>
<p><span id="more-168"></span></p>
<p>Dessa maneira o usuário consegue espalhar exponencialmente <em>informação na internet</em>.<br />
Exponencialmente? Sim. Quando usuário do sistema solta informações na <em>rede social</em>, pessoas que também estão passando pelos mesmos problemas ou concordam com a informação fornecida conseguem repassar o texto para seus amigos, dessa forma é possível cobrir <em>milhares de usuários</em> em pouco tempo.</p>
<p><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/social-media-graph.jpg" alt="Informação Exponencial - Mídias Sociais" title="Informação Exponencial - Mídias Sociais" />Sendo assim, as empresas devem fazer um <em>monitoramento da marca nas redes sociais</em> pois 1 (um) usuário insatisfeito pode repassar essa informação para várias centenas de pessoas fazendo com que a visão em relação a empresa seja abalada (ou não).</p>
<p>Ou não? Exatamente, as empresas que tem consciência da importância da <em>opinião dos clientes</em> utilizam as redes sociais para se promover e ao mesmo tempo tentar ajudar esses usuários para que eles mudem sua visão em sobre a empresa em questão.</p>
<h2>Net Virtua e o Twitter:</h2>
<p>Recentemente tive problemas com os serviços <em>NET Virtua</em>, meu link de banda larga ficou offline por cerca de 7 horas, tempo considerável e durante horário comercial. Após a conexão ficar estável comentei com amigos utilizando o Twitter, dizendo que eu havia estado sem conexão. Realizando uma busca rápida por #Net e #Virtua pude perceber que várias pessoas passaram pela mesma instabilidade, ou seja, outros usuários <em>lesados pelo serviço e repassando essa informação</em>.</p>
<p>No dia seguinte recebo um e-mail da NET Virtua com o seguinte texto:</p>
<pre>Olá Rafael,

Meu nome é Eduardo e trabalho na área de relacionamento da NET.

Li um post seu no Twitter e, buscando a satisfação de nossos clientes,
gostaria de te ajudar a sanar qualquer dúvida ou problema relacionado
aos serviços NET. Pelos dados informados, não consegui localizar o
contrato. Por favor, envie o código de assinante para que eu possa
lhe ajudar com o seu caso.

Att.

Eduardo Mendes
Relacionamento Net
Quer falar com a Net? Clique aqui e Fale Conosco.

O relacionamento da NET na web solicita apenas o código do assinante.
Outros dados pessoais dos clientes referentes ao contrato só serão
pedidos pela Central de Atendimento NET durante o tratamento de
cada caso. O internauta nunca deve fornecer informações cadastrais
por e-mail, exceto o número do código de assinante.
</pre>
<p><strong>O que pode significar várias coisas como:</strong><br />
A real intenção da NET Virtua em resolver o meu problema (que já estava resolvido).<br />
<em>Mudar minha visão da marca</em> para não promover mais informações negativas.<br />
Esperar que eu poste uma retratação em relação a marca.</p>
<p><strong>Qual foi o efeito sobre mim?</strong><br />
Um efeito positivo, pois demonstraram interesse em resolver meu problema, obviamente por eu ser um formador opiniões naquele momento. Porém acredito que o mais importante para mim, é saber que as empresas no modo geral estão <em>monitorando o feedback de seus clientes</em>, seja para melhoraria dos serviços ou para solucionar problemas.</p>
<p>Obrigado.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/geral/midias-sociais-monitoramento-de-marca-no-twitter.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grande maioria dos usuários do google é brasileira</title>
		<link>http://blog.rafaelcapucho.com/noticias/grande-maioria-dos-usuarios-do-google-e-brasileira.html</link>
		<comments>http://blog.rafaelcapucho.com/noticias/grande-maioria-dos-usuarios-do-google-e-brasileira.html#comments</comments>
		<pubDate>Fri, 18 Sep 2009 05:21:14 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Notícias]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=132</guid>
		<description><![CDATA[
A comScore empresa que mede o mundo digital publicou na segunda-feira (14/09) um estudo com focus no Google que mostra sua força em dois mercados emergentes como Brasil e Índia.
"Serviços como Google Busca, GMail, YouTube, Mapas e Orkut correspondem a 30% de todo o tempo gasto por brasileiros na internet. 3 vezes mais que a [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><a href="http://blog.rafaelcapucho.com/noticias/grande-maioria-dos-usuarios-do-google-e-brasileira.html"><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/google-dominar.jpg" alt="Google Mudar o Mundo - Brasil" title="Google Mudar o Mundo - Brasil" /></a></p>
<p>A <a rel="nofolow" target="_blank" href="http://www.comscore.com">comScore</a> empresa que mede o mundo digital publicou na segunda-feira (14/09) um estudo com focus no Google que mostra sua força em dois <em>mercados emergentes como Brasil e Índia</em>.</p>
<p><em>"Serviços como Google Busca, GMail, YouTube, Mapas e Orkut correspondem a 30% de todo o tempo gasto por brasileiros na internet. 3 vezes mais que a média mundial, diz comScore"</em></p>
<p>Com isso o <em>Brasil chega a primeira posição tornando-se líder entre os países que usam os serviços do Google</em>, logo atrás encontramos a Índia que detêm 28.9% do tempo gasto com serviços Google e posteriormente a Irlanda com 15.9%, quase a metade do percentual alcançado pelo Brasil e Índia. Estima-se que 1 em cada 10 buscas realizadas no Google é brasileira!</p>
<p><span id="more-132"></span></p>
<p>89.5% das buscas realizadas no Brasil são feitas utilizando o Google e o <em>Orkut</em> detêm um expressivo de 96% do tempo gastos com redes sociais no Brasil. O <em>Twitter</em> acaba por ficar uma pequena parcela dos 4% já que sempre presou pela agilidade na integração com os usuários.</p>
<p>O <em>YouTube</em> responde por 91,6% do tempo gasto em sites multimídia no País, enquanto o <em>Google Maps</em> corresponde a 70,9% do mercado brasileiro de mapas.</p>
<p>O Google tenta ser excelência em todas as áreas que ele se proprôe, como podemos ver na tabela abaixo:</p>
<p><img alt="Google Market Share Brasil" title="Google Market Share Brasil" src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/internet-brasileira.jpg" alt="desc" /><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p>Fontes: <a rel="nofollow" target="_blank" href="http://idgnow.uol.com.br/internet/2009/09/14/servicos-do-google-correspondem-a-30-do-tempo-gasto-por-brasileiros-na-web/">idgnow</a> e <a rel="nofollow" target="_blank" href="http://www.comscore.com/Press_Events/Comunicados_de_prensa/2009/9/Google_Shows_Strength_in_Indian_and_Brazilian_Internet_Landscapes">comScore</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/noticias/grande-maioria-dos-usuarios-do-google-e-brasileira.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Falha de segurança &#8211; Vivo contamina usuários com vírus</title>
		<link>http://blog.rafaelcapucho.com/noticias/falha-de-seguranca-vivo-contamina-usuarios-com-virus.html</link>
		<comments>http://blog.rafaelcapucho.com/noticias/falha-de-seguranca-vivo-contamina-usuarios-com-virus.html#comments</comments>
		<pubDate>Sun, 13 Sep 2009 05:51:57 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=118</guid>
		<description><![CDATA[
Na noite do dia 08/09/09 a maior empresa de celular do país (Operadora Vivo) foi surpreendida com ataques no sistema online. 
Os usuários infectados tinham os seus arquivos hosts (C:/WINDOWS/system32/drivers/etc/hosts) modificados.
As alterações criavam bandeiras de redirecionamento da seguinte forma:

...
69.162.114.180 santander.com.br
69.162.114.180 www.santander.com.br
69.162.114.181 itau.com.br
69.162.114.181 www.itau.com.br
...


Assim quando os usuários infectados acessavam sites de bancos como (santander.com.br) eles eram [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><a href="http://blog.rafaelcapucho.com/noticias/falha-de-seguranca-vivo-contamina-usuarios-com-virus.html"><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/falha-vivo.jpg" alt="Operadora Vivo Falha de Segurança - Vírus" title="Operadora Vivo Falha de Segurança - Vírus" /></a><br />
Na noite do dia 08/09/09 a <em>maior empresa de celular do país (Operadora Vivo)</em> foi surpreendida com <em>ataques no sistema online.</em> </p>
<p>Os <em>usuários infectados</em> tinham os seus arquivos <em>hosts</em> (C:/WINDOWS/system32/drivers/etc/hosts) modificados.</p>
<p>As alterações criavam bandeiras de redirecionamento da seguinte forma:</p>
<pre>
...
69.162.114.180 santander.com.br
69.162.114.180 www.santander.com.br
69.162.114.181 itau.com.br
69.162.114.181 www.itau.com.br
...
</pre>
<p><span id="more-118"></span></p>
<p>Assim quando os usuários infectados acessavam sites de bancos como (santander.com.br) eles eram redirecionados localmente para outro IP, que era uma cópia perfeita da interface do <em>sistema bancário</em> original, dessa forma obtendo <em>dados pessoais como senhas de contas bancárias</em>.</p>
<p>O ataque foi possível por uma vulnerabilidade recente do Java que por sua vez serviu para mostrar outras vulnerabilidades do sistema da vivo como <em>Local File Inclusion (LFI)</em>. Com um LFI é possível <em>executar comandos dentro do servidor</em>, além de <em>ler arquivos</em> no mesmo como <em>senhas de acesso ao servidor</em>.</p>
<p>Uma análise detalhada pode ser encontrada no <a rel="nofollow" href="http://www.linuxnewmedia.com.br/blogs/seguranca/analise_vivo/">Linux New Media</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/noticias/falha-de-seguranca-vivo-contamina-usuarios-com-virus.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Minicurso Presencial de PHP e Mysql Gratuito</title>
		<link>http://blog.rafaelcapucho.com/geral/minicurso-presencial-de-php-e-mysql-gratuito.html</link>
		<comments>http://blog.rafaelcapucho.com/geral/minicurso-presencial-de-php-e-mysql-gratuito.html#comments</comments>
		<pubDate>Thu, 10 Sep 2009 22:10:16 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Cursos]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=115</guid>
		<description><![CDATA[
Olá pessoal, estou fazendo essa postagem para divulgar um curso que irei ministrar. A abordagem do minicurso é fazer uma introdução ao PHP, falar sobre todo o funcionamento de linguagens web desde servidor web (Apache) até sua integração com banco de dados, estrutura e técnicas.
Embora seja um curso introdutório é de extrema importância para podermos [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/minicurso-php.jpg" alt="Minicurso de PHP e MySQL Gratuito" title="Minicurso de PHP e MySQL Gratuito" /></p>
<p>Olá pessoal, estou fazendo essa postagem para divulgar um curso que irei ministrar. A abordagem do <em>minicurso</em> é fazer uma <em>introdução ao PHP</em>, falar sobre todo o funcionamento de <em>linguagens web</em> desde <em>servidor web (Apache)</em> até sua integração com banco de dados, estrutura e técnicas.</p>
<p>Embora seja um curso introdutório é de extrema importância para podermos nos aprofundar no assunto que é a <em>programação web</em>.</p>
<p>O curso será dado de maneira intuitiva para um melhor entendimento por parte de todos. Os requisitos mínimos para compreender de maneira significativa é dominar <em>lógica de programação</em> e alguma linguagem como C, Java e etc.</p>
<p>Observação: Não é necessário ser aluno da <em>UNIFESP</em> para assistir o <em>minicurso</em>.</p>
<p>Aguardo vocês!</p>
<div id="nota"><span class="preto">Participações</span>: Gostaria de agradecer os mais de 60 programadores presentes no evento, espero que os próximos sejam tão bons quanto esse!. Obrigado</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/geral/minicurso-presencial-de-php-e-mysql-gratuito.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vídeo Aula &#8211; Apache Mod_Rewrite Avançado</title>
		<link>http://blog.rafaelcapucho.com/expressoes-regulares/video-aula-apache-mod-rewrite-avancado.html</link>
		<comments>http://blog.rafaelcapucho.com/expressoes-regulares/video-aula-apache-mod-rewrite-avancado.html#comments</comments>
		<pubDate>Sat, 22 Aug 2009 23:10:50 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[Video Aula]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=92</guid>
		<description><![CDATA[
Pessoal, como prometido estou adicionando a vídeo aula sobre Apache Mod_Rewrite que eu fiz para dar continuidade ao Artigo Expressões Regulares com PHP e Python. É muito importante a leitura desse artigo antes de assistir o vídeo tutorial para não ficar muito perdido.
O Vídeo Tutorial aborda de uma maneira diferente o apache mod_rewrite que conhecemos [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><object width="520" height="390" data="http://www.vimeo.com/moogaloop.swf?clip_id=6218528&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" type="application/x-shockwave-flash"><param name="quality" value="best" /><param name="scale" value="showAll" /><param name="allowfullscreen" value="true" /><param name="wmode" value="transparent" /><param name="src" value="http://www.vimeo.com/moogaloop.swf?clip_id=6218528&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" /></object></p>
<p>Pessoal, como prometido estou adicionando a <em>vídeo aula</em> sobre <em>Apache Mod_Rewrite</em> que eu fiz para dar continuidade ao <a href="http://blog.rafaelcapucho.com/expressoes-regulares/expressoes-regulares-com-php-e-python-na-pratica.html">Artigo Expressões Regulares com PHP e Python</a>. É muito importante a leitura desse artigo antes de assistir o <em>vídeo tutorial</em> para não ficar muito perdido.</p>
<p>O <em>Vídeo Tutorial</em> aborda de uma maneira diferente o <em>apache mod_rewrite</em> que conhecemos hoje, mostrando que não é apenas para fazer <em>URL Amigáveis</em> (<em>Friendly URL</em>) sendo que existe uma gama de <em>aplicações</em> distintas que podem ser feitas.</p>
<p>Essa <em>vídeo aula</em> não é um (<em>how-to</em>) de como fazer <em>URL Amigáveis</em> e sim uma explicação por completo de tudo que é possível fazer utilizando o arquivo <em>.htaccess</em>.</p>
<p><a href="http://blog.rafaelcapucho.com/download/htaccess.zip"><img src="http://blog.rafaelcapucho.com/wp-content/uploads/2009/06/download-codigo-fonte.jpg" alt="Arquivo .htaccess" title="Arquivo .htaccess" width="190" height="24" style="border:0px;"/></a><br/><br/></p>
<p>Enviem suas dúvidas,<br />
Espero que gostem e não esqueçam de comentar.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/expressoes-regulares/video-aula-apache-mod-rewrite-avancado.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Vídeo Aula &#8211; Padrões de Projeto Strategy UML JAVA e PHP</title>
		<link>http://blog.rafaelcapucho.com/java/video-aula-padroes-de-projeto-strategy-uml-java-php.html</link>
		<comments>http://blog.rafaelcapucho.com/java/video-aula-padroes-de-projeto-strategy-uml-java-php.html#comments</comments>
		<pubDate>Wed, 19 Aug 2009 01:04:55 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Video Aula]]></category>
		<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=78</guid>
		<description><![CDATA[
Dando continuidade a série de padrões de projeto, veremos o Padrão de Projeto Strategy que é mais um dos importantes padrões do Gof (Gang of Four).
Essa vídeo aula uml explica de maneira intuitiva como aplicar esse padrão de projeto desde-se a modelagem UML até a codificação desse padrão utilizando Java e PHP como linguagem.
Qualquer linguagem [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><object width="520" height="390" data="http://www.vimeo.com/moogaloop.swf?clip_id=6137956&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" type="application/x-shockwave-flash"><param name="quality" value="best" /><param name="scale" value="showAll" /><param name="allowfullscreen" value="true" /><param name="wmode" value="transparent" /><param name="src" value="http://www.vimeo.com/moogaloop.swf?clip_id=6137956&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" /></object></p>
<p>Dando continuidade a série de <em>padrões de projeto</em>, veremos o <em>Padrão de Projeto Strategy</em> que é mais um dos importantes padrões do Gof (<em>Gang of Four</em>).</p>
<p>Essa <em>vídeo aula uml</em> explica de maneira intuitiva como aplicar esse padrão de projeto desde-se a modelagem <em>UML</em> até a codificação desse padrão utilizando <em>Java</em> e <em>PHP</em> como linguagem.</p>
<p>Qualquer <em>linguagem orientada a objetos</em> poderá ser usada, desde que você entenda bem como analisar e interpretar um <em>diagrama de classes</em>.</p>
<p>Se você se interessa por <em>Padrão de Projeto veja o artigo <a href="http://blog.rafaelcapucho.com/java/padroes-de-projeto-observer-modelagem-uml.html">Padrão de Projeto Observer</a><br />
</em><br />
Espero que gostem!</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/java/video-aula-padroes-de-projeto-strategy-uml-java-php.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Expressões Regulares com PHP e Python na prática</title>
		<link>http://blog.rafaelcapucho.com/expressoes-regulares/expressoes-regulares-com-php-e-python-na-pratica.html</link>
		<comments>http://blog.rafaelcapucho.com/expressoes-regulares/expressoes-regulares-com-php-e-python-na-pratica.html#comments</comments>
		<pubDate>Fri, 31 Jul 2009 16:59:00 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Benchmarking]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=66</guid>
		<description><![CDATA[
Pessoal, estou pensando em preparar um material bem detalhado sobre apache e mod_rewrite, indispensáveis para um bom trabalho de SEO (Search Engine Optimization) com URL Amigáveis.
Antes de me aprofundar nesse assunto com vocês, é necessário ter uma boa base em expressões regulares para podermos personalizar da maneira que desejarmos nossas URLs.
Edit Atualização: A vídeo aula [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><a href="http://blog.rafaelcapucho.com/expressoes-regulares/expressoes-regulares-com-php-e-python-na-pratica.html"><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/er_na_pratica.jpg" alt="Expressões Regulares com PHP e Python" title="Expressões Regulares com PHP e Python" width="510" height="200" class="size-full wp-image-198" /></a></p>
<p>Pessoal, estou pensando em preparar um material bem detalhado sobre apache e <em>mod_rewrite</em>, indispensáveis para um bom trabalho de <em>SEO</em> (<em>Search Engine Optimization</em>) com <em>URL Amigáveis</em>.</p>
<p>Antes de me aprofundar nesse assunto com vocês, é necessário ter uma boa base em expressões regulares para podermos personalizar da maneira que desejarmos nossas URLs.</p>
<div id="nota"><span class="red">Edit Atualização:</span> A <em>vídeo aula</em> sobre <em>apache mod_rewrite</em> já foi publicada e pode ser assistida clicando no link: <a href="http://blog.rafaelcapucho.com/expressoes-regulares/video-aula-apache-mod_rewrite-avancado.html">Vídeo Aula – Apache Mod_Rewrite Avançado</a></div>
<p>Neste artigo introduziremos as <em>principais expressões regulares</em> que usaremos na próxima abordagem prática. Eu escolhi para esse artigo o PHP pois é bastante interessante usá-lo junto com as "<em>URLs Açucaradas</em>" posteriormente e alguns exemplos em Python (3.0.1) pela facilidade em testar as ERs diretamente no terminal.</p>
<p><strong>Primeiramente o que é uma Expressão Regular?</strong></p>
<p>Expressão Regular não são apenas aqueles pequenos conjuntos de caracteres que geralmente resolvem os maiores e mais difíceis problemas do cotidiano no desenvolvimento de software. Como o próprio nome diz, Regular nos vem algo que não foge a regra, regra no caso definida pelas Expressões. Logo Expressões Regulares podem ser definidas com métodos formais para especificar padrões encontrados nesses textos.</p>
<p><span id="more-66"></span></p>
<p>Algo que é regular só nos retorna dois valores, verdadeiro ou falso, não existe o padrão meio-termo. Sendo assim podemos fazer verificações utilizando ERs para saber se determinado texto condiz (Casar, do inglês Match) com determinado padrão especificado anteriormente.</p>
<p>Com ERs podemos validar todo dado que segue padrões tal como e-mail que tem como padrão (texto arroba texto ponto texto), tomando texto como sendo não necessariamente literal. Dentre os usos de Expressões Regulares podemos destacar também na validação de CPF, RG, diversos protocolos como http e ftp, tags de marcação, cartões de crédito e etc... </p>
<p><strong>Quais as desvantagens das Expressões Regulares?</strong></p>
<p>ERs parece ser a resposta para todos os seus problemas, não? Errado, ela pode ser o seu problema se usada de maneira errada e/ou de maneira demasiada. O grande poder das <em>Expressões Regulares</em> pode custar muito caro na <em>performance</em> da sua solução pois <em>consome bastante tempo e memória, tornando a navegação lenta</em>, o ideal é evitar o seu uso se existirem alternativas disponíveis.</p>
<p>Outra variável no uso de expressões regulares é o tamanho do seu projeto, em um site por exemplo, que contêm poucas visitas diárias, o uso de expressões regulares não custará tanto, porém um site com várias requisições simultâneas seria prejudicado, pois você terá muito processamento agregado em ERs.</p>
<p>Por exemplo, se for necessário verificar se uma variável contêm @ (arroba) ao invés de usarmos ERs podemos fazer uma verificação simples com strpos(), strstr(),..</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;ola@mundo&quot;</span>;
<span style="color: #0000ff;">$existe</span> = <a href="http://www.php.net/strpos"><span style="color: #000066;">strpos</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$texto</span>,<span style="color: #ff0000;">&quot;@&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$existe</span> === <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// não existe arroba no texto</span>
<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// existe arroba no texto, e esta na posição $existe</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<div id="nota"><span class="preto">ApacheBench</span>: Poderiamos usar o programa disponibilizado pelo <em>Apache</em> para fazer <em>benchmarking</em> chamado ab (<em>ApacheBench</em>) encontrado facilmente dentro do diretório bin do seu apache, com ele teríamos uma visão ampla podendo setar centenas de request's com concorrência entre outros atributos interessantes, porém isso vale um outro artigo baseando-se na complexidade do assunto. Vamos fazer o <em>benchmarking</em> com o PHP pois podemos limitar precisamente o local que queremos analisar.</div>
<p>Falando em PHP, uma maneira funcional de calcular a diferença de performance utilizando ERs e uma verificação simples é o uso da <em>função microtime()</em> do PHP, como vemos abaixo.</p>
<p><strong>Calculando o tempo gasto na checagem de padrão manualmente:</strong></p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<a href="http://www.php.net/ob_start"><span style="color: #000066;">ob_start</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// atribui o tempo inicial</span>
<span style="color: #0000ff;">$inicial</span> = <a href="http://www.php.net/microtime"><span style="color: #000066;">microtime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;ola@mundo&quot;</span>;
<a href="http://www.php.net/strpos"><span style="color: #000066;">strpos</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$texto</span>,<span style="color: #ff0000;">&quot;@&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// atribui o tempo final</span>
<span style="color: #0000ff;">$final</span> = <a href="http://www.php.net/microtime"><span style="color: #000066;">microtime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">/* calcula a diferença entre final e inicial
o valor retornado pela função microtime() é em milissegundos
então multiplicamos por 1000 para obter o valor em segundos */</span>
&nbsp;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;Tempo gasto: &quot;</span>.<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$final</span> - <span style="color: #0000ff;">$inicial</span><span style="color: #66cc66;">&#41;</span>*<span style="color: #cc66cc;">1000</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot; segundos.&quot;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>O valor retornado poderá variar cada vez que atualizar a página, pois o processador pode estar processando outras threads, o retorno médio no meu computador foi de (0.058 segundos) para encontrar a primeira ocorrência de arroba na variável "ola@mundo".</p>
<p><strong>Calculando o tempo gasto na checagem de padrão usando Expressões Regulares:</strong></p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<a href="http://www.php.net/ob_start"><span style="color: #000066;">ob_start</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// atribui o tempo inicial</span>
<span style="color: #0000ff;">$inicial</span> = <a href="http://www.php.net/microtime"><span style="color: #000066;">microtime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;ola@mundo&quot;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Expressão Regular utilizada para checar a presença de arroba</span>
<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/(.*)?@(.*)?/'</span>;
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// atribui o tempo final</span>
<span style="color: #0000ff;">$final</span> = <a href="http://www.php.net/microtime"><span style="color: #000066;">microtime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">/* calcula a diferença entre final e inicial
o valor retornado pela função microtime() é em milisegundos
então multiplicamos por 1000 para obter o valor em segundos */</span>
&nbsp;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;Tempo gasto: &quot;</span>.<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$final</span> - <span style="color: #0000ff;">$inicial</span><span style="color: #66cc66;">&#41;</span>*<span style="color: #cc66cc;">1000</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">&quot; segundos.&quot;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>O retorno médio no meu computador foi de (0.090 segundos) para encontrar a primeira ocorrência de arroba na variável "ola@mundo".</p>
<p>Podemos ver que o tempo de processamento é quase o dobro, sendo:</p>
<p><strong>Maneira Alternativa</strong>: 0.058 segundos<br />
<strong>Expressões Regulares</strong>: 0.090 segundos</p>
<p>Essa diferença de tempo aumenta de acordo com a dificuldade da operação realiza, se o nosso texto tivesse 400 linhas, a diferença de tempo seria gritante, fica como exercício para vocês fazerem os <em>testes de performance</em> (<em>benchmarking</em>).</p>
<p>Vamos ao estudo das expressões, eu recomendo para estudo a prática das expressões, pois assim como linguagem de programação ERs só se aprende fazendo.</p>
<p>Essas expressões vistas singularmente também podem ser chamadas de <strong>metacaracteres</strong>.</p>
<p>Como o nosso conhecimento em ERs é bastante limitado até agora, não podemos ainda criar expressões (<em>Composição de Metacatacteres</em>) então iremos nos restringir a exemplos bem simples.</p>
<p>PHP trabalha com dois tipos diferentes de expressão regular sendo POSIX e <em>Perl-Compatible</em>. POSIX é menos poderosa e as vezes mais lenta que as expressões Perl-Compatible porém pode ser mais fácil de utilizar. Nós usaremos Perl-Compatible pois também usaremos esse padrão no artigo de <em>mod_rewrite</em>.</p>
<p>A função para expressões regulares Perl-Compatible no php é <strong>preg_match()</strong> e para POSIX é <strong>ereg()</strong></p>
<p><strong>1) O metacaracter circunflexo ^</strong>:</p>
<p>O circunflexo representa o começo da string. Por exemplo, se quisermos saber se determinado texto começa com 'abc' poderemos prosseguir da seguinte maneira:</p>
<p><span id="bold">^abc em PHP</span>:</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #808080; font-style: italic;">// Texto alvo</span>
<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;abcdefgh&quot;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Ao adicionarmos o modificador i no final dizemos</span>
<span style="color: #808080; font-style: italic;">// que a comparação deve ser case-insensitive  </span>
&nbsp;
<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/^abc/i'</span>;
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;Começa com abc&quot;</span>;
<span style="color: #b1b100;">else</span>
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;Não começa com abc&quot;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p><span id="bold">^abc em Python</span>:</p>
<pre class="python">&nbsp;
// Biblioteca para trabalhar com ERs no Python
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
// Texto alvo
texto = <span style="color: #483d8b;">'abcdefgh'</span>
&nbsp;
// <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span> para comparação <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span>Padrao,String,<span style="color: black;">&#91;</span>bandeiras<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'^abc'</span>,texto,<span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Começa com abc ou ABC'</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Não começa com abc nem ABC'</span><span style="color: black;">&#41;</span>
&nbsp;</pre>
<p><strong>2) O metacaracter ponto . </strong>  :<br />
O ponto implica no fato de aceitar qualquer caracter em determinada posição. Por exemplo, se fossemos brincar com a palavra PHP aceitando como válido o H ser qualquer coisa, P(qualquer caracter)P faremos:</p>
<p><span id="bold">P.P em PHP</span>:</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;PUP&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/P.P/i'</span>;
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;PUP é válido com o padrão estabelecido pela ERs&quot;</span>;
<span style="color: #b1b100;">else</span>
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;PUP não é válido com o padrão estabelecido pela ERs&quot;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p><span id="bold">P.P em Python</span>:</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
texto = <span style="color: #483d8b;">'PUP'</span>
&nbsp;
// <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span> para comparação <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span>Padrao,String,<span style="color: black;">&#91;</span>bandeiras<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'P.P'</span>,texto,<span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'PUP é válido com o padrão estabelecido pela ERs'</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'PUP é não válido com o padrão estabelecido pela ERs'</span><span style="color: black;">&#41;</span>
&nbsp;</pre>
<p><strong>3) O metacaracter Cifrão $</strong>:<br />
Semelhante ao circunflexo, porém atua na verificação no final da string, se quisermos saber se além de começar com 'abc' a string termina com 'xyz' poderemos prosseguir da seguinte maneira:</p>
<p><span id="bold">^(abc)(xyz)$ em PHP</span>:</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;abcxyz&quot;</span>;
&nbsp;
	<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/^(abc)(xyz)$/i'</span>;
&nbsp;
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #ff0000;">'válido'</span> : <span style="color: #ff0000;">'inválido'</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p><span id="bold">^(abc)(xyz)$ em Python</span>:</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
texto = <span style="color: #483d8b;">'abcxyz'</span>
&nbsp;
// <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span> para comparação <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span>Padrao,String,<span style="color: black;">&#91;</span>bandeiras<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'^(abc)(xyz)$'</span>,texto,<span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'válido'</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'inválido'</span><span style="color: black;">&#41;</span>
&nbsp;</pre>
<p><strong>4) Os metacaracteres asterisco, mais, interrogação e chaves * + ? {}</strong>:<br />
Os quatro metacaracteres são multiplicadores de ocorrências.</p>
<p>I) O multiplicador asterisco * indica que o caractere que esta antes dele poderá ocorrer 0 (zero) ou infinitas vezes.</p>
<p>II) O multiplicador + indica que o caractere anterior poderá ocorrer 1 (uma) ou infinitas vezes (porém necessariamente uma vez).</p>
<p>III) O multiplicador binário ? indica que o caractere anterior poderá ocorrer 1 (uma) ou 0 (zero) vezes, ou seja, poderá existir ou não.</p>
<p>IV) O multiplicador {} funciona de maneira explicita, sendo que podemos ou não, definir o número de repetições. Por exemplo:</p>
<div id="nota"><span class="preto">Exemplos</span><br />
a{n} indica que a deve ocorrer exatamente 'n' vezes. Ex: a{3} = aaa<br />
a{n,m} indica que a deve ocorrer pelo menos 'n' vezes e não mais que 'm' vezes. Ex: a{3,6} = aaaaa<br />
a{n,} indica que a deve ocorrer pelo menos n vezes. Ex: a{3,} = aaaaaaa</div>
<p>Sendo assim, agora podemos permitir mais valores entre 'abc' e 'xyz' com a ajuda do metacaracter ponto que aceita qualquer coisa e usando multiplicidade, poderemos prosseguir da seguinte maneira:</p>
<p><span id="bold">^abc(.*)xyz$ em PHP</span>:</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;abcdefghijkmnopqrstuvwxyz&quot;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Indicamos que além de começar com abc e</span>
	<span style="color: #808080; font-style: italic;">// terminar com xyz, poderá existir 0 (zero) ou</span>
	<span style="color: #808080; font-style: italic;">// mais caracteres nesse intervalo</span>
&nbsp;
	<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/^abc(.*)xyz$/i'</span>;
&nbsp;
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #ff0000;">'válido'</span> : <span style="color: #ff0000;">'inválido'</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p><span id="bold">^abc(.*)xyz$ em Python</span>:</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
texto = <span style="color: #483d8b;">'abcdefghijkmnopqrstuvwxyz'</span>
&nbsp;
// <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span> para comparação <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span>Padrao,String,<span style="color: black;">&#91;</span>bandeiras<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'^abc(.*)xyz$'</span>,texto,<span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'válido'</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'inválido'</span><span style="color: black;">&#41;</span>
&nbsp;</pre>
<div id="nota"><span class="red">Nota</span>: Perceba que (.+)? é semelhante a (.*), sendo que o + (mais) obriga que o . (ponto) aconteça pelo menos uma vez, porém o metacatacter ? indica que isso não necessariamente precisará acontecer.</div>
<p><strong>5) A lista [] e Grupos ()</strong>:<br />
As listas e grupos permitem que você defina um espaço amostral. Por exemplo, se quisermos saber se um registro começa com vogais poderemos usar a lista junto com o circunflexo, dessa maneira ^[aeiou] onde irá casar com palavras como "arquitetura","e-mail","inteligência" e etc..</p>
<div id="nota"><strong>Intervalo em Listas</strong>: Utilizando um hífen podemos definir intervalos baseando-se na <em>tabela ASCII</em> como ordem oficial, ou seja, [0-9] indica todos os digitos de 0 até 9 [0123456789] o mesmo com letras [a-z] para todas as minusculas [A-Z] para todas as maiusculas e [a-zA-Z] para os dois simultaneamente.</div>
<p>Com o mesmo circunflexo podemos negar a lista, apenas colocando-o dentro da lista [^aeiou] assim, será válido iniciar com qualquer consoante.</p>
<p>Perceba que a lista só retorna 1 (um) catacter, podemos resolver isso utilizando os Grupos () e utilizando o delimitador "Ou" | (http:|https:|ftp:) Assim poderemos validar esses protocolos da seguinte maneira:</p>
<div id="nota"><span class="red">Nota</span>: Não é possível negar um grupo utilizando o circunflexo. Para fazer a negação utilize ! (exclamação) !^(http:|https:|ftp:)</div>
<p><span id="bold">^(http:|https:|ftp:) em PHP</span>:</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;http://www.rafaelcapucho.com&quot;</span>;
&nbsp;
	<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/^(http:|https:|ftp:)/i'</span>;
&nbsp;
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #ff0000;">'válido'</span> : <span style="color: #ff0000;">'inválido'</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p><span id="bold">^(http:|https:|ftp:) em Python</span>:</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
texto = <span style="color: #483d8b;">'http://www.rafaelcapucho.com'</span>
&nbsp;
// <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span> para comparação <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span>Padrao,String,<span style="color: black;">&#91;</span>bandeiras<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'^(http:|https:|ftp:)'</span>,texto,<span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'válido'</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'inválido'</span><span style="color: black;">&#41;</span>
&nbsp;</pre>
<div id="nota"><span class="red">Nota</span>: Se for preciso utilizar barras nas expressões regulares dentro de funções devemos escapá-las com a contra-barra. \</div>
<p><strong>I) Estudo de Caso - Validando e-mail com Expressão Regulares</strong></p>
<p>Agora que nós já conhecemos os principais metacaracteres podemos começar a brincar com eles, vamos aos estudos de caso, como poderemos proceder para validar um endereço eletrônico? Primeiro devemos analisar, o padrão estabelecido que no caso seria algo como:</p>
<p><span class="preto">texto @ texto ponto texto</span></p>
<p>Como não podemos saber quantos caracteres tem os textos previamente, devemos utilizar multiplicadores, devemos multiplicar o metacaracter . (ponto) pois ele casará com qualquer coisa.</p>
<p>Usaremos o multiplicador + (mais) pois o nosso texto deve ter pelo menos 1 caractere, sendo assim temos algo como (.*).</p>
<p>Aplicando ao padrão temos algo como: (.+)@(.+).(.+) perceba que não podemos utilizar o . (ponto) para representar um ponto literal pois ele será tratado como metacaracter então escapamos ele com uma contra-barra \.  Teremos:</p>
<p>(.+)@(.+)\.(.+)  Estamos esperando o que para testar?</p>
<p><span id="bold">(.+)@(.+)\.(.+) em PHP</span>:</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;palavra@provedor.com&quot;</span>;
&nbsp;
	<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/(.+)@(.+)<span style="color: #000099; font-weight: bold;">\.</span>(.+)/i'</span>;
&nbsp;
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #ff0000;">'válido'</span> : <span style="color: #ff0000;">'inválido'</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p><span id="bold">(.+)@(.+)\.(.+) em Python</span>:</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
texto = <span style="color: #483d8b;">'palavra@provedor.com'</span>
&nbsp;
// <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span> para comparação <span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span>Padrao,String,<span style="color: black;">&#91;</span>bandeiras<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'(.+)@(.+)<span style="color: #000099; font-weight: bold;">\.</span>(.+)'</span>,texto,<span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'email válido'</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'email inválido'</span><span style="color: black;">&#41;</span>
&nbsp;</pre>
<p><strong>II) Estudo de Caso - Removendo Tags com Expressão Regulares</strong></p>
<p>Primeiramente devemos analisar o padrão estabelecido pelas Tags, escolhi para o exemplo <em>Tags HTML</em> pela familiaridade que muitos tem com esse padrão, mapeando teremos algo como:</p>
<pre>texto &lt;tag&gt; texto &lt;/tag&gt; texto</pre>
<p>A idéia é <em>remover as tags</em>, todas as tags independente do texto dentro da tag, ou seja, devemos remover tudo que estiver entre <> seja lá o que estiver escrito. </p>
<p>Se não sabemos previamente o que estará dentro das <em>Tags HTML</em>, podemos representar com a multiplicação indefinida de qualquer catactere .*, que deve estar dentro das Tags, algo como:</p>
<p><span id="preto"><.*?></span></p>
<div id="nota"><span class="red">Observação</span>: Analisando essa expressão chegamos a algumas questão, tal como, porque usar o multiplicador * (asterisco) ao invés do + (mais)? Escolhemos o * (asterisco) porque também queremos remover tags vazias como essa <>, se usássemos  o multiplicador + (mais) só removeríamos tags que contêm pelo menos 1 (um) caractere dentro das tags</div>
<p><strong>Removendo Tags com PHP e Expressões Regulares:</strong></p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #0000ff;">$texto</span> = <span style="color: #ff0000;">&quot;texto1&lt;strong&gt;texto2&lt;/strong&gt;texto3&quot;</span>;
&nbsp;
	<span style="color: #0000ff;">$er</span> = <span style="color: #ff0000;">'/&lt;.+?&gt;/i'</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Função preg_replace(pattern, replacement, subject [, limit ]);</span>
&nbsp;
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$novoTexto</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$er</span>,<span style="color: #ff0000;">&quot;&quot;</span>,<span style="color: #0000ff;">$texto</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>A saída do código acima será: texto1texto2texto3 onde trocamos todas as tags encontradas pelo conteúdo expresso pelo segundo parâmetro da função <em>preg_replace()</em>.</p>
<p><strong>Removendo Tags com Python e Expressões Regulares:</strong></p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
texto = <span style="color: #483d8b;">'texto1&lt;strong&gt;texto2&lt;/strong&gt;texto3'</span>
&nbsp;
// Compila a ER com a flag IGNORECASE
&nbsp;
padrao = <span style="color: #dc143c;">re</span>.<span style="color: #008000;">compile</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;.*?&gt;'</span>,<span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span>
&nbsp;
// Baseando no padrao, substitui o primeiro parametro
// no segundo parametro
&nbsp;
novoTexto = padrao.<span style="color: black;">sub</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span>,texto<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>novoTexto<span style="color: black;">&#41;</span>
&nbsp;</pre>
<div id="nota"><span class="red">Performance</span>: Entretanto como analisamos anteriormente devemos evitar usar ER. Poderíamos criar uma lista de tags e mandar substituí-las utilizando <em>str_replace() ao invés de preg_replace()</em>. Assim ganhamos muito com performance.</div>
<p>Com esse artigo já temos uma visão considerável sobre ER para utilizarmos no artigo sobre mod_rewrite e outras aplicações.</p>
<p>Dessa maneira, termino esse <em>artigo sobre Expressões Regulares</em> em caso de dúvidas, entre em contato! Bom proveito!</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/expressoes-regulares/expressoes-regulares-com-php-e-python-na-pratica.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Refatoração &#8211; Uma abordagem simples e direta</title>
		<link>http://blog.rafaelcapucho.com/metodologias-ageis/refatoracao-uma-abordagem-simples-e-direta.html</link>
		<comments>http://blog.rafaelcapucho.com/metodologias-ageis/refatoracao-uma-abordagem-simples-e-direta.html#comments</comments>
		<pubDate>Mon, 22 Jun 2009 22:39:48 +0000</pubDate>
		<dc:creator>Rafael Capucho</dc:creator>
				<category><![CDATA[Metodologias Ágeis]]></category>
		<category><![CDATA[Refatoração]]></category>
		<category><![CDATA[apostila]]></category>
		<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Extreme Programing]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test-Driven Development]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://blog.rafaelcapucho.com/?p=54</guid>
		<description><![CDATA[
Pessoal, comecei há pouco tempo escrever um material sobre refatoração e estou disponibilizando esse material no meu blog para download gratuito, o documento será atualizado na medida do possível, por isso ao utilizar, certifique-se de que possuí a última versão para obter as novidades do material. 

A temática do material roda em torno de refatorações [...]]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><a href="http://blog.rafaelcapucho.com/refatoracao/refatoracao-uma-abordagem-simples-e-direta.html"><img src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/outdoorRefatoracao.jpg" alt="Refatoração - Uma abordagem simples e direta" title="Refatoração - Uma abordagem simples e direta" width="510" height="200" class="size-full wp-image-198" /></a></p>
<p>Pessoal, comecei há pouco tempo escrever um material sobre refatoração e estou disponibilizando esse material no meu <a rel="nofollow" href="http://blog.rafaelcapucho.com">blog</a> para download gratuito, o documento será atualizado na medida do possível, por isso ao utilizar, certifique-se de que possuí a última versão para obter as novidades do material. </p>
<p><span id="more-54"></span></p>
<p>A temática do material roda em torno de refatorações e suas ligações com outras áreas tais como metodologias ágeis e desenvolvimento orientado a testes. (Se é que podemos chamar de outras áreas, não?).</p>
<p>O conteúdo será abordado da maneira mais direta possível, a linguagem escolhida para os exemplos foi o Java, porém as técnicas de refatoração apresentadas poderão ser aplicadas em qualquer linguagem orientada a objetos.</p>
<p>Versão Atual: 1.1<br />
<a href="http://blog.rafaelcapucho.com/download/refatoracao-simples-e-direta.pdf"><img alt="Download Refatoração - Uma abordagem simples e direta" src="http://blog.rafaelcapucho.com/wp-content/themes/simplicitybright/images/btnDownDocumento.jpg" style="border:0px; padding:0px;" title="Download Refatoração - Uma abordagem simples e direta" width="140" height="20" /></a><br/></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rafaelcapucho.com/metodologias-ageis/refatoracao-uma-abordagem-simples-e-direta.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
