<?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>Cauan Cabral - Geek &#187; Desenvolvimento Web</title>
	<atom:link href="http://cauancabral.net/category/desenvolvimento-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://cauancabral.net</link>
	<description>Geek, nerd e apaixonado por tecnologia</description>
	<lastBuildDate>Fri, 25 Jun 2010 23:31:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Joomla! 1.6 &#8211; O que está para chegar&#8230;</title>
		<link>http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/</link>
		<comments>http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 23:06:53 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Joomla!]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[joomla 1.6]]></category>

		<guid isPermaLink="false">http://cauancabral.net/?p=190</guid>
		<description><![CDATA[Em 21 de Janeiro de 2008 foi lançado a versão 1.5 deste excelente CMS, e desde então foram lançados 15 subversões (atualizações), envolvendo pequenas melhorias e correções de segurança. Desde meados de 2009 quem utiliza o Joomla! só pensa na &#8230; <a href="http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Em 21 de Janeiro de 2008 foi lançado a versão 1.5 deste excelente CMS, e desde então foram lançados 15 subversões (atualizações), envolvendo pequenas melhorias e correções de segurança.</p>
<p>Desde meados de 2009 quem utiliza o Joomla! só pensa na próxima grande atualização do CMS, a versão 1.6. Ela deve incluir alguns dos itens mais requisitados pela comunidade como:</p>
<ul>
<li>Sistema de permissões, com possibilidade de se criar novos grupos e definir o que cada grupo pode fazer;</li>
<li>União das Seções e Categorias, ao mesmo tempo que agora pode-se ter infinitas subcategorias;</li>
<li>Suporte a outros sistemas de banco de dados;</li>
<li>Assistente para adicionar link para um artigo enquanto estamos escrevendo outro artigo;<span id="more-190"></span></li>
</ul>
<p>Agora parece que estamos perto do lançamento da próxima grande atualização do Joomla!, e pensando nisso baixei a versão atual em desenvolvimento do SVN e tirei alguns screenshot da área administrativa dessa nova versão, mostrando alguns dos recursos novos:</p>

<a href='http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/joomla16_dashboard/' title='joomla16_dashboard'><img width="150" height="150" src="http://cauancabral.net/wp-content/uploads/2010/01/joomla16_dashboard-150x150.png" class="attachment-thumbnail" alt="joomla16_dashboard" title="joomla16_dashboard" /></a>
<a href='http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/joomla16_administracao_menu/' title='joomla16_administracao_menu'><img width="150" height="150" src="http://cauancabral.net/wp-content/uploads/2010/01/joomla16_administracao_menu-150x150.png" class="attachment-thumbnail" alt="joomla16_administracao_menu" title="joomla16_administracao_menu" /></a>
<a href='http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/joomla16_grupos/' title='joomla16_grupos'><img width="150" height="150" src="http://cauancabral.net/wp-content/uploads/2010/01/joomla16_grupos-150x150.png" class="attachment-thumbnail" alt="joomla16_grupos" title="joomla16_grupos" /></a>
<a href='http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/joomla16_nivel-de-acesso/' title='joomla16_nivel-de-acesso'><img width="150" height="150" src="http://cauancabral.net/wp-content/uploads/2010/01/joomla16_nivel-de-acesso-150x150.png" class="attachment-thumbnail" alt="joomla16_nivel-de-acesso" title="joomla16_nivel-de-acesso" /></a>
<a href='http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/joomla16_categorias-conteudo/' title='joomla16_categorias-conteudo'><img width="150" height="150" src="http://cauancabral.net/wp-content/uploads/2010/01/joomla16_categorias-conteudo-150x150.png" class="attachment-thumbnail" alt="joomla16_categorias-conteudo" title="joomla16_categorias-conteudo" /></a>
<a href='http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/joomla16_administracao-conteudo/' title='joomla16_administracao-conteudo'><img width="150" height="150" src="http://cauancabral.net/wp-content/uploads/2010/01/joomla16_administracao-conteudo-150x150.png" class="attachment-thumbnail" alt="joomla16_administracao-conteudo" title="joomla16_administracao-conteudo" /></a>
<a href='http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/joomla16_edicao-artigo/' title='joomla16_edicao-artigo'><img width="150" height="150" src="http://cauancabral.net/wp-content/uploads/2010/01/joomla16_edicao-artigo-150x150.png" class="attachment-thumbnail" alt="joomla16_edicao-artigo" title="joomla16_edicao-artigo" /></a>

<p>As últimas informações sobre o planejamento (incluindo o que deve ser feito e o que já foi feito) podem ser vistas <a title="Feature Patches for Joomla! 1.6" href="http://developer.joomla.org/coordinator-blog/292-feature-patches-for-16.html" onclick="pageTracker._trackPageview('/outgoing/developer.joomla.org/coordinator-blog/292-feature-patches-for-16.html?referer=');">nesta notícia</a> e nesta <a title="Joomla! 1.6 status" href="http://www.joomla.org/component/content/article/5252.html" onclick="pageTracker._trackPageview('/outgoing/www.joomla.org/component/content/article/5252.html?referer=');">página de status</a>.</p>
<p>Podemos aguardar, na melhor das hipóteses, um release final do Joomla! 1.6 para março de 2010, o que não está muito longe, felizmente =]</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/06/13/ultimas-novidades-2/" rel="bookmark" class="crp_title">Últimas Novidades #2</a></li><li><a href="http://cauancabral.net/2008/01/17/sentiram-falta/" rel="bookmark" class="crp_title">Sentiram falta?</a></li><li><a href="http://cauancabral.net/2008/01/06/sem-assunto-parte-3/" rel="bookmark" class="crp_title">Sem assunto &#8211; parte 3</a></li><li><a href="http://cauancabral.net/2010/01/17/trabalhando-com-php-5-2-no-opensuse-11-2-downgrade-do-php-5-3-para-5-2/" rel="bookmark" class="crp_title">Trabalhando com PHP 5.2 no OpenSUSE 11.2 (Downgrade do PHP 5.3 para 5.2)</a></li><li><a href="http://cauancabral.net/2010/01/26/cakephp-1-3-quase-assad/" rel="bookmark" class="crp_title">CakePHP 1.3 quase assado</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Latinoware 2009 &#8211; COLAPHP &#8211; Evento fantástico</title>
		<link>http://cauancabral.net/2010/01/16/latinoware-2009-colaphp-evento-fantastico/</link>
		<comments>http://cauancabral.net/2010/01/16/latinoware-2009-colaphp-evento-fantastico/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 14:56:24 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[latinoware]]></category>
		<category><![CDATA[mini-curso]]></category>
		<category><![CDATA[palestra]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=155</guid>
		<description><![CDATA[Eae pessoal, tudo tranquilo? Tenho andado bem corrido ultimamente e não tenho conseguido dar a atenção que queria ao blog. De agora em diante as coisas não devem melhorar muito, mas farei o possível para trazer coisas interessantes pra cá. &#8230; <a href="http://cauancabral.net/2010/01/16/latinoware-2009-colaphp-evento-fantastico/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Eae pessoal, tudo tranquilo?</p>
<p>Tenho andado bem corrido ultimamente e não tenho conseguido dar a atenção que queria ao blog. De agora em diante as coisas não devem melhorar muito, mas farei o possível para trazer coisas interessantes pra cá.</p>
<p>Desde o dia 21/10/2009 estou em Foz do Iguaçu &#8211; PR, para participar do Latinoware 2009, um dos maiores eventos de software livre das Américas.<br />
Estou tendo a oportunidade de ministrar um minicurso e apresentar uma palestra no &#8220;subevento&#8221; COLAPHP &#8211; Congresso Latinoamericano de PHP, que possui uma trilha dedicada a linguagem dentro do  Latinoware.</p>
<p>A experiência não poderia estar sendo melhor. Pude conhecer excelentes profissionais e fazer muitas amizades.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; fim do rascunho 1 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Nos dias 23 e 24 de outubro tive a oportunidade de ministrar um minicurso e uma palestra dentro da trilha COLAPHP do Latinoware.</p>
<p>Ambos tratavam do CakePHP, no caso do minicurso fizemos uma introdução no framework, falando um pouco de seu funcionamento, suas convenções e criamos rapidamente uma aplicação simples utilizando o terminal com o Bake.</p>
<p>O slides utilizado no minicurso foi este:</p>
<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=id=2474507&amp;doc=cakephp-091111083152-phpapp01" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent" /><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=id=2474507&amp;doc=cakephp-091111083152-phpapp01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355" wmode="transparent"></embed></object></p>
<p>No caso da palestra, falei novamente sobre a integração de aplicações escritas em CakePHP e Flex, dando uma revisada na apresentação. Ela ficou assim:</p>
<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=id=2928697&amp;doc=flexphp-100116083159-phpapp02" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent" /><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=id=2928697&amp;doc=flexphp-100116083159-phpapp02" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355" wmode="transparent"></embed></object></p>
<p>Aproveito o espaço (e a disponibilidade de tempo) para agradecer todos que participaram do evento como um todo, seja na organização, apoio ou assistindo, perguntando, corrigindo e ajudando a gente durante as apresentações. Obrigado a todos.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;- fim do rascunho 2 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>O texto do rascunho 1 foi escrito em 23/10/2009, o do rascunho 2 logo após o evento, hoje é 16/01/2010 e o textos ainda estevam como rascunho para ser publicado no blog. Pois é, esse final de ano foi realmente muito corrido, mas valeu a pena.</p>
<p>Agora é hora de se organizar para poder ter um 2010 ainda mais proveitoso (de começo ele já está sendo muito melhor).</p>
<p>Até breve.</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/07/11/1%c2%ba-workshop-phpms-php-extremo-sucesso/" rel="bookmark" class="crp_title">1º Workshop PHPMS &#8211; PHP Extremo, SUCESSO</a></li><li><a href="http://cauancabral.net/2009/09/24/2%c2%ba-workshop-phpms/" rel="bookmark" class="crp_title">2º Workshop PHPMS</a></li><li><a href="http://cauancabral.net/2008/09/21/software-freedom-day-08-sucesso/" rel="bookmark" class="crp_title">Software Freedom Day 08 &#8211; Sucesso!</a></li><li><a href="http://cauancabral.net/2008/05/08/voltando-a-ativa-no-bom-sentido/" rel="bookmark" class="crp_title">Voltando a ativa ( no bom sentido )</a></li><li><a href="http://cauancabral.net/2009/06/14/workshop-php-extremo/" rel="bookmark" class="crp_title">Workshop PHP Extremo</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2010/01/16/latinoware-2009-colaphp-evento-fantastico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workshop PHP Extremo</title>
		<link>http://cauancabral.net/2009/06/14/workshop-php-extremo/</link>
		<comments>http://cauancabral.net/2009/06/14/workshop-php-extremo/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 01:35:44 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[php-extremo]]></category>
		<category><![CDATA[phpms]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=130</guid>
		<description><![CDATA[Como havia comentado no post anterior, o PHPMS realizará seu primeiro worksop: Workshop PHP Extremo. Citando a página do evento: O que é o Workshop PHP Extremo? Trata-se de um evento voltado a profissionais, em especial os que trabalham com &#8230; <a href="http://cauancabral.net/2009/06/14/workshop-php-extremo/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Como havia comentado no post anterior, o PHPMS realizará seu primeiro worksop: Workshop PHP Extremo.</p>
<p>Citando a página do evento:</p>
<blockquote><p><strong>O que é o Workshop PHP Extremo?</strong></p>
<p>Trata-se de um evento voltado a profissionais, em especial os que trabalham com PHP.  O Workshop visa a capacitar os desenvolvedores PHP do estado e permitir a troca de experiências e networking,  elevando o nível dos atuais desenvolvedores PHP e profissionais da área.</p></blockquote>
<p>Como é possível ver pela breve introdução, é um evento voltado para desenvolvedores, como diria Steve Ballmer: &#8220;developers! developers! developers!&#8221;</p>
<p>Se você tem interesse em participar do evento corra, pois as vagas são bem limitadas (30 pessoas) e o valor está muito baixo &#8211; apenas R$ 15,00 antes de evento &#8211; e de quebra você leva uma camiseta. Visite a página do<a title="PHP Extremo" href="http://workshop.phpms.org" onclick="pageTracker._trackPageview('/outgoing/workshop.phpms.org?referer=');"> Workshop PHP Extremo</a> e siga os passos para fazer sua inscrição.</p>
<p>Caso além de querer participar você queira um espaço para compartilhar seu conhecimento, um lugar apresentar algo e discutir com profissionais da área, então é sua chance de apresentar um trabalho no Workshop. Serão 3 apresentações durante o workshop, uma pode ser a sua, basta submeter sua proposta de trabalho <a title="Submissão de trabalho para Workshop PHP Extremo" href="http://spreadsheets.google.com/viewform?formkey=cklxc3A4SWptYjBzRHhERzFUb3JCOFE6MA.." onclick="pageTracker._trackPageview('/outgoing/spreadsheets.google.com/viewform?formkey=cklxc3A4SWptYjBzRHhERzFUb3JCOFE6MA..&amp;referer=');">neste formulário</a>. Mas corra, as submissões tem de ser feitas até o dia 20 de Junho.</p>
<p>Vamos participar para que possamos realizar outros destes no futuro.</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/09/24/2%c2%ba-workshop-phpms/" rel="bookmark" class="crp_title">2º Workshop PHPMS</a></li><li><a href="http://cauancabral.net/2010/03/20/3%c2%ba-workshop-do-phpms/" rel="bookmark" class="crp_title">3º Workshop do PHPMS</a></li><li><a href="http://cauancabral.net/2009/06/13/ultimas-novidades-2/" rel="bookmark" class="crp_title">Últimas Novidades #2</a></li><li><a href="http://cauancabral.net/2010/04/05/comitiva-cuide-bem-do-seu-evento/" rel="bookmark" class="crp_title">Comitiva &#8211; Cuide bem do seu evento</a></li><li><a href="http://cauancabral.net/2009/07/11/1%c2%ba-workshop-phpms-php-extremo-sucesso/" rel="bookmark" class="crp_title">1º Workshop PHPMS &#8211; PHP Extremo, SUCESSO</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2009/06/14/workshop-php-extremo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Últimas Novidades #2</title>
		<link>http://cauancabral.net/2009/06/13/ultimas-novidades-2/</link>
		<comments>http://cauancabral.net/2009/06/13/ultimas-novidades-2/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 16:23:28 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[desrespeito]]></category>
		<category><![CDATA[indignação]]></category>
		<category><![CDATA[novidades]]></category>
		<category><![CDATA[phpmobile]]></category>
		<category><![CDATA[phpms]]></category>
		<category><![CDATA[Radig]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=128</guid>
		<description><![CDATA[Vamos lá a mais notícias que talvez vos interessem ;] O PHPMS realizará no dia 11 de Julho seu primeiro workshop: PHP Extremo. A idéia é realizar um evento voltado a profissionais que trabalham com PHP, dando uma oportunidade para &#8230; <a href="http://cauancabral.net/2009/06/13/ultimas-novidades-2/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vamos lá a mais notícias que talvez vos interessem ;]</p>
<ol>
<li>O PHPMS realizará no dia 11 de Julho seu primeiro workshop: PHP Extremo. A idéia é realizar um evento voltado a profissionais que trabalham com PHP, dando uma oportunidade para reciclar e expandir seus conhecimentos. Os temas ainda não foram decididos e a chamada de trabalhos deve ser iniciado até segunda feira próxima. Para mais informações, acesse: <a title="Workshop PHP Extremo" href="http://workshop.phpms.org" onclick="pageTracker._trackPageview('/outgoing/workshop.phpms.org?referer=');">http://workshop.phpms.org</a>;</li>
<li>O PHP Mobile continua de vento em polpa, acompanhe as notícias sobre o projeto seguindo o twitter ( <a href="http://twitter.com/phpmobile" onclick="pageTracker._trackPageview('/outgoing/twitter.com/phpmobile?referer=');">@phpmobile</a> ) e site: <a title="PHP para dispositivos móveis" href="http://www.phpmobile.com.br" onclick="pageTracker._trackPageview('/outgoing/www.phpmobile.com.br?referer=');">www.phpmobile.com.br</a>;</li>
<li><a title="Radig - Soluções em TI" href="http://www.radig.com.br" onclick="pageTracker._trackPageview('/outgoing/www.radig.com.br?referer=');">Minha empresa</a> está indo muito bem obrigado, pretendo disponibilizar alguns artigos e ferramentas de trabalho do dia-a-dia no site dela em breve. Se estiver precisando de algum serviço relacionado a TI, entre em <a title="Fale com a Radig" href="http://www.radig.com.br/fale-com-a-gente/" onclick="pageTracker._trackPageview('/outgoing/www.radig.com.br/fale-com-a-gente/?referer=');">contato</a>. Será um prazer atende-lo;</li>
<li>Atualizei o WordPress aqui do Blog (WP 2.8), de início a área administrativa ficou bugada, acusando falta de memória, tive de atualizar o php.ini aumentando o limite de memória de 32MiB para 64MiB. Achei um absurdo o sistema usar 64MiB (acho que 40MiB já seriam suficiente, mesmo assim achei muiita coisa);</li>
<li>O Joomla lançou atualização do CMS, <a title="Joomla! 1.5.11, atualização de segurança" href="http://www.joomla.org/announcements/release-news/5235-joomla-1511-security-release-now-available.html" onclick="pageTracker._trackPageview('/outgoing/www.joomla.org/announcements/release-news/5235-joomla-1511-security-release-now-available.html?referer=');">versão 1.5.11</a>, possui 3 correções de segurança que devem ser aplicadas imediatamente (se você ainda não a fez);</li>
<li>Ainda hoje atualizo o tema aqui do blog.</li>
<li>Minha idéia dos scripts para administração está em andamento, infelizmente perdi acidentalmente uma das minhas classes principais e estou tendo de reescreve-la (como já havia comentado antes). Assim que tiver o mínimo de funcionalidade divulgo aqui.</li>
</ol>
<p>Por último, meu notebook chegou (no dia 10 de Junho de 2009) exatos 30 dias após o início da produção por parte da Dell &#8211; apesar de antes de fazer a compra ver estampado no site que notebooks montados no Brasil tinham prazo de 10 dias úteis para entrega (14 dias corridos). Não bastace a grande demora na entrega, o notebook veio faltando uma das peças que pedi e paguei. Entrei imediatamente em contato com a Dell, pediram que enviasse um email para &lt;pessoa&gt;@dell.com.br para que resolvessem o problema. Mais uma vez demora, mandei o email no dia 11 de Junho, hoje, dia 13 não recebi resposta alguma. O notebook possui desempenho satisfatório mas o antedimento da Dell me decepcionou, dúvido que a Dell norte-americana trate seus clientes assim.</p>
<p>Enfim, se for comprar um computador, escolha um HP, Apple, Acer ou Sony, possuem qualidade igual ou melhor a da Dell e respeitam seus clientes.</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/05/24/ultimas-novidades/" rel="bookmark" class="crp_title">Últimas novidades</a></li><li><a href="http://cauancabral.net/2009/06/14/workshop-php-extremo/" rel="bookmark" class="crp_title">Workshop PHP Extremo</a></li><li><a href="http://cauancabral.net/2010/03/20/3%c2%ba-workshop-do-phpms/" rel="bookmark" class="crp_title">3º Workshop do PHPMS</a></li><li><a href="http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/" rel="bookmark" class="crp_title">Joomla! 1.6 &#8211; O que está para chegar&#8230;</a></li><li><a href="http://cauancabral.net/2009/07/11/1%c2%ba-workshop-phpms-php-extremo-sucesso/" rel="bookmark" class="crp_title">1º Workshop PHPMS &#8211; PHP Extremo, SUCESSO</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2009/06/13/ultimas-novidades-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lançado Internet Explorer 8 (IE8) &#8211; Morte ao IE7</title>
		<link>http://cauancabral.net/2009/03/19/lancado-internet-explorer-8-ie8-morte-ao-ie7/</link>
		<comments>http://cauancabral.net/2009/03/19/lancado-internet-explorer-8-ie8-morte-ao-ie7/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 23:32:34 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[padrões]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/2009/03/19/lancado-internet-explorer-8-ie8-morte-ao-ie7/</guid>
		<description><![CDATA[Hoje a Microsoft liberou a versão final do IE8. Dando uma pesquisada na página do lançamento, fico feliz que o suporte a padrões realmente foi aprimorado (mesmo ainda tendo chão para alcançar o Opera/Webkit/Firefox)&#8230; fico apenas com uma coisa em &#8230; <a href="http://cauancabral.net/2009/03/19/lancado-internet-explorer-8-ie8-morte-ao-ie7/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoje a Microsoft liberou a versão final do IE8. Dando uma pesquisada na página do lançamento, fico feliz que o suporte a padrões realmente foi aprimorado (mesmo ainda tendo chão para alcançar o Opera/Webkit/Firefox)&#8230; fico apenas com uma coisa em mente: vamos estender a campanha Morte ao IE6 ao IE7? Por uma web melhor.</p>
<p>Caso queira conferir as novidades no suporte a HTML e CSS, acesse: http://msdn.microsoft.com/pt-br/library/cc817571(en-us).aspx</p>
<p>Para ter detalhes específicos do suporte a CSS a melhor página é: http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/02/06/novidades-de-janeiro/" rel="bookmark" class="crp_title">Novidades de janeiro</a></li><li><a href="http://cauancabral.net/2010/01/30/joomla-1-6-o-que-esta-para-chegar/" rel="bookmark" class="crp_title">Joomla! 1.6 &#8211; O que está para chegar&#8230;</a></li><li><a href="http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/" rel="bookmark" class="crp_title">3F: Férias da Faculdade, Finalmente.</a></li><li><a href="http://cauancabral.net/2008/07/15/jogar-quake-direto-no-browser/" rel="bookmark" class="crp_title">Jogar Quake direto no Browser?</a></li><li><a href="http://cauancabral.net/2009/06/13/ultimas-novidades-2/" rel="bookmark" class="crp_title">Últimas Novidades #2</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2009/03/19/lancado-internet-explorer-8-ie8-morte-ao-ie7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP &#8211; Dúvidas Comuns #2</title>
		<link>http://cauancabral.net/2009/02/25/cakephp-duvidas-comuns-2/</link>
		<comments>http://cauancabral.net/2009/02/25/cakephp-duvidas-comuns-2/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 00:36:54 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[i10n]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[validação]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=111</guid>
		<description><![CDATA[Dúvida: Como usar habilitar a internacionalização &#8211; o famoso I18N &#8211; nos erros de validação de seu modelo? Fácil? Como fazer então no próprio modelo para não repetir frases em várias Views? Habilitar a internacionalização e ter a localização em &#8230; <a href="http://cauancabral.net/2009/02/25/cakephp-duvidas-comuns-2/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dúvida: Como usar habilitar a internacionalização &#8211; o famoso I18N &#8211; nos erros de validação de seu modelo? Fácil? Como fazer então no próprio modelo para não repetir frases em várias Views?</p>
<p>Habilitar a internacionalização e ter a localização em uma aplicação com CakePHP desde a versão 1.2  é relativamente simples: basta uma lida no nosso <a title="Internacionalizando uma aplicação em CakePHP" href="http://book.cakephp.org/pt/view/161/Internacionalizando" onclick="pageTracker._trackPageview('/outgoing/book.cakephp.org/pt/view/161/Internacionalizando?referer=');">Cookbook</a> e pronto.</p>
<p>Outra coisa que é relativamente simples de se fazer é validar os dados, basta termos um atributo em nosso modelo chamado &#8220;validate&#8221; e seguir as dicas do <a title="Validação de dados com CakePHP" href="http://book.cakephp.org/pt/view/125/Valida%C3%A7%C3%A3o-de-dados" onclick="pageTracker._trackPageview('/outgoing/book.cakephp.org/pt/view/125/Valida_C3_A7_C3_A3o-de-dados?referer=');">livro de receitas</a>.</p>
<p>Mas pelo Cookbook somos induzidos a fornecer a mensagem de erro na hora de criar a View, algo que eu particularmente não gosto. É até comum termos um modelo que é usado por Controllers diferentes e consequêntemente por Views diferentes.</p>
<p>Uma maneira de evitar isso, é definir as mensagens de erro já na definição das regras de validação, dentro do atributo &#8220;validate&#8221; do seu modelo. O grande problema é que para traduzir uma determinada expressão utilizamos um método, e a chamada de método na definição estática de um atributo não é permitida no PHP (dúvida? tente fazer o código abaixo)</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Modelo <span style="color: #000000; font-weight: bold;">extends</span> AppModel <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$validate</span> <span style="color: #339933;">=</span> _<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ola mundo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//esse código não devera ser executado</span></pre></div></div>

<p>A solução para isso é a atribuição das regras de validação no momento da instanciação da classe, ou seja, no seu método construtor, da seguinte maneira</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">class</span> Modelo <span style="color: #000000; font-weight: bold;">extends</span> AppModel <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$validate</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">validate</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #666666; font-style: italic;">/* aqui você pode definir as regras e mensagens,mesmo chamando um método */</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Qualquer dúvida não deixem de utilizar os comentários ;]</p>
<p>&#8212;&#8212;&#8211;<br />
Atualizado: havia esquecido da chamada ao construtor da superclasse AppModels ( através do parent::__construct() ) no último código mostrado.</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/02/23/cakephp-duvidas-comuns-1/" rel="bookmark" class="crp_title">CakePHP &#8211; dúvidas comuns #1</a></li><li><a href="http://cauancabral.net/2010/01/28/dica-rapida-cakephp-personalizando-as-paginas-de-erros/" rel="bookmark" class="crp_title">Dica Rápida &#8211; CakePHP &#8211; Personalizando as páginas de erros</a></li><li><a href="http://cauancabral.net/2008/01/02/validacao-de-dados-em-php5-parte-1/" rel="bookmark" class="crp_title">Validação de dados em PHP5 &#8211; Parte 1</a></li><li><a href="http://cauancabral.net/2010/04/05/dica-rapida-cakephp-1-3-link-com-prefixo/" rel="bookmark" class="crp_title">Dica Rápida &#8211; CakePHP 1.3, link com prefixo</a></li><li><a href="http://cauancabral.net/2010/01/27/dica-rapida/" rel="bookmark" class="crp_title">Dica rápida</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2009/02/25/cakephp-duvidas-comuns-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ainda não tem hospedagem? Aproveite</title>
		<link>http://cauancabral.net/2009/02/15/ainda-nao-tem-hospedagem-aproveite/</link>
		<comments>http://cauancabral.net/2009/02/15/ainda-nao-tem-hospedagem-aproveite/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 15:40:02 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[bluehost]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[hospedagem]]></category>
		<category><![CDATA[promoção]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=100</guid>
		<description><![CDATA[Acredito que a maior parte dos visitantes deste blog trabalhem com internet. E neste trabalho, não ter um serviço de hospedagem para colocar seus serviços em produção ou mesmo durante o desenvolvimento é tão complicado quanto um médico clínico-geral não &#8230; <a href="http://cauancabral.net/2009/02/15/ainda-nao-tem-hospedagem-aproveite/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Acredito que a maior parte dos visitantes deste blog trabalhem com internet. E neste trabalho, não ter um serviço de hospedagem para colocar seus serviços em produção ou mesmo durante o desenvolvimento é tão complicado quanto um médico clínico-geral não ter um estetoscópio.</p>
<p>As vezes nos esbarramos em alguns problemas para ter nosso espaço na web: se quiser ter um servidor em casa/escritório este terá de ter um IP fixo ou algum serviço de DNS como o NO-IP.com; se quiser ter um servidor dedicado fora de casa terá de pagar uma boa quantia; caso não disponha de muito dinheiro, terá de se satisfazer com várias limitações de recursos, certo? Não neste caso.</p>
<p>Infelizmente aqui no Brasil ainda é muito caro ter um servidor de hospedagem com bons recursos e preço baixo, mas lá fora isso já é realidade, então o que fazer para aproveitar isso? Primeira coisa é ter um cartão de crédito internacional (já que temos de pagar em moeda estrangeira) e se possível uma conta no PayPal (para aumentar a segurança de nossas &#8220;comprinhas&#8221;), depois disso é só escolher o host.</p>
<p>Atualmente trabalho com a <a title="Serviço de hospedagem com espaço ilimitado e preço promocional" href="http://www.bluehost.com/track/cauancabral/post1" onclick="pageTracker._trackPageview('/outgoing/www.bluehost.com/track/cauancabral/post1?referer=');">Bluehost</a>[en], mas ontem me inscrevi e outro grande serviço: a <a title="Serviço de hospedagem nos EUA" href="http://www.dreamhost.com/r.cgi?503888" onclick="pageTracker._trackPageview('/outgoing/www.dreamhost.com/r.cgi?503888&amp;referer=');">Dreamhost</a>[en].</p>
<p>Ambos possuem ótimas características, dentre elas:</p>
<ul>
<li>Espaço em disco ilimitado;</li>
<li>Trafego de dados ilimitado;</li>
<li>Domínios e subdomínios ilimitados;</li>
<li>Acesso SSH;</li>
</ul>
<p>Além de vários outros. A diferença de preço entre elas não é muito grande, normalmente. Mas de vez em quando aparece uma grande promoção. Hoje é um desses dias.</p>
<p>Na <a title="Hospedagem com ótimo preço" href="http://www.dreamhost.com/r.cgi?503888" onclick="pageTracker._trackPageview('/outgoing/www.dreamhost.com/r.cgi?503888&amp;referer=');">Dreamhost</a>, se você utilizar o código promocional <strong>777</strong> você paga somente $9,24 por um ano de hospedagem e ganha o registro de um domínio internacional na faixa. Mas só pode ser aproveitado até hoje, 15 de fevereiro de 2009. Então se tiver com uma conta PayPal ou um cartão internacional em mãos, não perca tempo.</p>
<p>Na <a title="Hospedagem nos EUA" href="http://www.bluehost.com/track/cauancabral/post1" onclick="pageTracker._trackPageview('/outgoing/www.bluehost.com/track/cauancabral/post1?referer=');">Bluehost</a> você pagará a bagatela de $6,95 por mês no plano de hospedagem (para pagamento anual). Isso dá menos de R$15,00/mês por um plano ilimitado, não é uma pechincha? Então se hoje não é 15 de fevereiro, utilize o banner abaixo e se inscreva na Bluehost para ter um ótimo serviço por um preço absurdamente baixo.</p>
<p>&#8211; Atualizado &#8211;</p>
<p>Caso tenha perdido a promoção do dia 15/02/2009, não perca as esperanças, utilize o código promocional <strong>CAUANCABRAL</strong> para registrar sua conta na <a title="Assine utilizando o PROMOCODE CAUANCABRAL" href="http://www.dreamhost.com" onclick="pageTracker._trackPageview('/outgoing/www.dreamhost.com?referer=');">Dreamhost</a> e ganhe um bom desconto: são $50.00 para assinatura mensal (custo normal $60.90), $75.00(de $119.40) para assinatura anual e $79.00(de $214.80) para assinatura bienal. Aproveite ;P</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/03/29/fisl-10-eu-vou/" rel="bookmark" class="crp_title">FISL 10 &#8211; Eu vou!</a></li><li><a href="http://cauancabral.net/2010/04/11/obrigado-pelos-peixes-svn/" rel="bookmark" class="crp_title">Obrigado pelos peixes SVN</a></li><li><a href="http://cauancabral.net/2010/06/25/delivery-facil-pedir-comida-na-internet-e-muito-facil/" rel="bookmark" class="crp_title">Delivery Fácil &#8211; Pedir comida na internet é muito fácil</a></li><li><a href="http://cauancabral.net/2009/06/14/workshop-php-extremo/" rel="bookmark" class="crp_title">Workshop PHP Extremo</a></li><li><a href="http://cauancabral.net/2010/03/20/3%c2%ba-workshop-do-phpms/" rel="bookmark" class="crp_title">3º Workshop do PHPMS</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2009/02/15/ainda-nao-tem-hospedagem-aproveite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX com Prototype</title>
		<link>http://cauancabral.net/2009/01/14/ajax-com-prototype/</link>
		<comments>http://cauancabral.net/2009/01/14/ajax-com-prototype/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 13:37:56 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[comentários]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[validação]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=91</guid>
		<description><![CDATA[Prototype é uma biblioteca javascript bastante utilizada, mas que pra mim nunca chamou atenção (ao contrário do JQuery), mas como tenho utilizado o CakePHP e em sua estrutura de Helpers ele usa esta biblioteca, tive de &#8220;perder&#8221; um tempinho estudando-a. &#8230; <a href="http://cauancabral.net/2009/01/14/ajax-com-prototype/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Página da biblioteca Prototype" href="http://www.prototypejs.org" onclick="pageTracker._trackPageview('/outgoing/www.prototypejs.org?referer=');">Prototype</a> é uma biblioteca javascript bastante utilizada, mas que pra mim nunca chamou atenção (ao contrário do <a title="A fantástica biblioteca js JQuery" href="http://jquery.com" onclick="pageTracker._trackPageview('/outgoing/jquery.com?referer=');">JQuery</a>), mas como tenho utilizado o <a title="Página do framework CakePHP" href="http://cakephp.org" onclick="pageTracker._trackPageview('/outgoing/cakephp.org?referer=');">CakePHP</a> e em sua estrutura de Helpers ele usa esta biblioteca, tive de &#8220;perder&#8221; um tempinho estudando-a.</p>
<p>Para isso, fiz como meu amigo <a title="PorKaria's blog" href="http://porkaria.wordpress.com" onclick="pageTracker._trackPageview('/outgoing/porkaria.wordpress.com?referer=');">PorKaria</a> e montei um sisteminha simples de comentários (na verdade o dele era o <a title="Livro Livre" href="http://phpbrasil.com/scripts/script.php/id/1661" onclick="pageTracker._trackPageview('/outgoing/phpbrasil.com/scripts/script.php/id/1661?referer=');">guestbook</a>, mas no fim fazem a mesmo coisa, hehehe).</p>
<p>Descrição do sistema:</p>
<p>Sistema usando AJAX (na verdade o X aqui é de XHTML, porque não utilizo XML) Permite a inserção de comentários, salvando-os em um banco de dados (MySQL), tudo de forma assíncrona. A bibliote utilizada para implementação da parte em javascript é a Prototype, a formatação (CSS) foi retirada de um tutorial do <a title="Referência em Web Semântica" href="http://www.tableless.com.br" onclick="pageTracker._trackPageview('/outgoing/www.tableless.com.br?referer=');">Tableless</a> sobre formatação de formulários e o PHP foi escrito por mim. Além do cadastro, fiz o que pode se chamar início de um sistema de busca com sugestão (famoso autocomplete). Digo o início porque ele não avalia bem o momento de se fazer a busca e não é possível clicar nos resultados, apenas vê-los.</p>
<p><span id="more-91"></span><br />
Estrutura:</p>
<ul>
<li>main.php : é a página onde está todo o sistema, apartir dela que é feito a leitura dos comentários e o envio de novos comentários;</li>
<li>adiciona_comentario.php : nesta página fazemos o processamento dos dados vindos do formulário e os salvamos no banco;</li>
<li>le_comentario.php : arquivo que recupera do banco todos os comentarios e retorna os dados em uma lista html;</li>
<li>busca_comentario.php : script que faz a busca dos comentários no banco para o &#8220;autocomplete&#8221; e retorna-os como uma lista;</li>
<li>validation.class.php : velho conhecido que faz a validação dos dados&#8230; a classe ainda está em implementação, mas já está mais completa do que a versão anterior que compartilhei.</li>
</ul>
<p>Irei comentar apenas a parte javascript, qualquer dúvida sobre o restante, deixe nos comentários ou email-me.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Funcao que recupera os dados do banco para apresentar ao usuário</span>
<span style="color: #003366; font-weight: bold;">function</span> recupera<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Updater</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'comentarios'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'adiciona_comentario.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>O trecho acima define uma função que cria uma nova instância de Ajax.Updater, que fará uma chamada ao arquivo adiciona_comentario.php e usará a resposta para substituir o conteúdo da tag XHTML com ID &#8216;comentarios&#8217;. Ou seja, é essa função que ira carregar os comentários feitos na página.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Funcao que envia os dados do formulário para serem salvos no banco</span>
<span style="color: #003366; font-weight: bold;">function</span> envia<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'adiciona_comentario.php'</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#123;</span>
		method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'post'</span><span style="color: #339933;">,</span>
		parameters<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;adiciona&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		onCreate<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'adiciona'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'enviando'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>transport<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'enviando'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'adiciona'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			recupera<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onFailure<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Alguma coisa não deu certo...'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Este outro trecho define a função envia os dados do formulário para o arquivo adiciona_comentario. Aí é utilizado o objeto Ajax.Request, que é a implementação mais genérica do Prototype para Ajax.<br />
O que é passado para o objeto:</p>
<ol>
<li>O arquivo que receberá a requisição</li>
<li> Aqui vem o segundo parâmetro que é composto por vários subparâmetros
<ol>
<li>Método de envio: POST;</li>
<li>Variáveis enviadas: utilizo a função &#8216;serialize()&#8217; no formulário, ela transforma os dados dele em uma lista de variáveis, entendíveis pelo navegador e PHP;</li>
<li>Uma função callback que é disparada quando é criado a requisição. Uso ela para mostrar uma mensagem &#8216;Enviando&#8230;&#8217;;</li>
<li>Uma função callback que é disparada quando é concluído com sucesso a requisição. Ela esconde a mensagem mostrada anteriormente e chama a função &#8216;recupera()&#8217; para recarregar os comentários;</li>
<li>Por última uma função callback que é disparada quando ocorre um erro na requisição.</li>
</ol>
</li>
</ol>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Funcao que faz uma busca em Ajax e retorna os resultados como em um autocompletar</span>
<span style="color: #003366; font-weight: bold;">function</span> fazBusca<span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'busca_comentario.php'</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#123;</span>
		method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'post'</span><span style="color: #339933;">,</span>
		parameters<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'termo'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		onCreate<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'resultados'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>transport<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'resultados'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">update</span><span style="color: #009900;">&#40;</span>transport.<span style="color: #660066;">responseText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'resultados'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onFailure<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Alguma coisa não deu certo...'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Aqui uma função que faz a busca pelos termos digitados. Utiliza o mesmo objeto da função anterior, o Ajax.Request, então não entrarei em detalhes.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Evento que é disparado quando o documento termina de carregar sua estrutura</span>
document.<span style="color: #660066;">observe</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;dom:loaded&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'enviando'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'carregando'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'resultados'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	recupera<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'busca'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">observe</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'keydown'</span><span style="color: #339933;">,</span> fazBusca<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Por ultimo utilizo a função &#8216;observe()&#8217; no elemento &#8216;document&#8217; para que após concluída o carregamento da página (não incluído aí o carregamento de possíveis imagens), execute alguns comandos:<br />
Com a função &#8216;hide()&#8217; escondo os elementos de aviso ao usuário;<br />
Com a última linha, faço com que sempre que uma tecla for pressionada (keydown) no elemento com ID &#8216;busca&#8217;, execute a função &#8216;fazBusca&#8217;.</p>
<p>Um bônus:</p>
<p>Muitas pessoas enfrentam problemas com codificação quando trabalham com AJAX, para poupar dores de cabeça é recomendado o uso de UTF8 tanto no seu editor de texto (na hora de criar os códigos), quanto nos header dos documentos e no banco de dados. Tendo certeza que está tudo em UTF8, você provavelmente não terá problemas. Só não esqueça de um detalhe: o <a title="Página do PHP" href="http://br.php.net/" onclick="pageTracker._trackPageview('/outgoing/br.php.net/?referer=');">PHP</a> não trabalha nativamente com UTF8, então, antes de usar qualquer função que trate uma string, use a função <a title="documentação da função utf8_decode" href="http://br.php.net/manual/pt_BR/function.utf8-decode.php" onclick="pageTracker._trackPageview('/outgoing/br.php.net/manual/pt_BR/function.utf8-decode.php?referer=');">utf8_decode</a> do PHP e depois, mas antes de salvar no banco de dados, utilize a função <a title="Documentação da função utf8_encode" href="http://br.php.net/manual/pt_BR/function.utf8-encode.php" onclick="pageTracker._trackPageview('/outgoing/br.php.net/manual/pt_BR/function.utf8-encode.php?referer=');">utf8_encode</a>. Isso será necessário até o lançamento do <a title="Unicode no PHP" href="http://www.php.net/~derick/meeting-notes.html" onclick="pageTracker._trackPageview('/outgoing/www.php.net/_derick/meeting-notes.html?referer=');">PHP 6</a>.</p>
<p><a title="Arquivos do post" href="http://geek.cauancabral.net/wp-content/uploads/2009/01/comentarios.zip" onclick="pageTracker._trackPageview('/outgoing/geek.cauancabral.net/wp-content/uploads/2009/01/comentarios.zip?referer=');">Download de todos os arquivos do exemplo.</a><br />
obs.: descompacte os arquivos numa mesma pasta, em seguida crie um novo diretório chamado &#8216;lib&#8217; e mova o arquivo validation.class.php para ele.</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2008/02/10/validao-de-dados-em-php5-final/" rel="bookmark" class="crp_title">Valida&#231;&#227;o de dados em PHP5 &#8211; final</a></li><li><a href="http://cauancabral.net/2008/10/22/usar-google-analytics-para-paginas-em-flash-ou-ajax-e-mole/" rel="bookmark" class="crp_title">Usar Google Analytics para páginas em Flash ou Ajax? É mole&#8230;</a></li><li><a href="http://cauancabral.net/2008/01/02/validacao-de-dados-em-php5-parte-1/" rel="bookmark" class="crp_title">Validação de dados em PHP5 &#8211; Parte 1</a></li><li><a href="http://cauancabral.net/2008/01/03/validacao-de-dados-em-php5-parte-2/" rel="bookmark" class="crp_title">Validação de dados em PHP5 &#8211; Parte 2</a></li><li><a href="http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/" rel="bookmark" class="crp_title">3F: Férias da Faculdade, Finalmente.</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2009/01/14/ajax-com-prototype/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>25 erros de programação mais graves</title>
		<link>http://cauancabral.net/2009/01/13/25-erros-mais-graves/</link>
		<comments>http://cauancabral.net/2009/01/13/25-erros-mais-graves/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 18:33:18 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=85</guid>
		<description><![CDATA[Divulgada uma lista com os 25 erros de programação que mais causam prejuízos no mundo. <a href="http://cauancabral.net/2009/01/13/25-erros-mais-graves/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Foi divulgado pelo <a title="SANS Institute - Top 25 [en]" href="http://www.sans.org/top25errors/" onclick="pageTracker._trackPageview('/outgoing/www.sans.org/top25errors/?referer=');">SANS Institute[en]</a> uma lista com os 25 erros de programação que mais causam prejuízos no mundo. Esta lista foi elaborada por especialistas de mais de 30 instituições dos EUA e organizações internacionais de segurança digital.</p>
<div id="attachment_88" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-88" title="BSOD no braço" src="http://geek.cauancabral.net/wp-content/uploads/2009/01/bsod_no_braco-300x244.jpg" alt="tradicional erro de segurança" width="300" height="244" /><p class="wp-caption-text">um erro tradicional</p></div>
<p>A lista foi subdivida em três categorias: &#8220;Interação Insegura entre Componentes&#8221;, &#8220;Risco no Gerenciamento de Recursos&#8221; e &#8220;Defesa Porosa&#8221; &#8211; no original: Insecure Interaction Between Components, Risky Resource Management e Porous Defenses.</p>
<p>Há na lista falhas como possibilidade de injeção de códigos, utilização de algorítmos de criptografia defasado e transferência de dados sensíveis sem criptografia.</p>
<p>No <a title="Top 25 errors [en]" href="http://www.sans.org/top25errors/" onclick="pageTracker._trackPageview('/outgoing/www.sans.org/top25errors/?referer=');">artigo original[en]</a> há várias informações sobre os erros e comentários de renomadas empresas de segurança sobre a importância da lista.</p>
<p>Sem dúvida um texto que vale a pena para todo desenvolvedor.</p>
<p>via: <a title="Fonte da notícia" href="http://idgnow.uol.com.br/seguranca/2009/01/12/governo-e-empresas-dos-eua-listam-os-25-piores-erros-de-programacao/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/idgnow.uol.com.br/seguranca/2009/01/12/governo-e-empresas-dos-eua-listam-os-25-piores-erros-de-programacao/?referer=');">IDG NOW!</a></p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2009/03/29/fisl-10-eu-vou/" rel="bookmark" class="crp_title">FISL 10 &#8211; Eu vou!</a></li><li><a href="http://cauancabral.net/2008/11/02/hoje-tem-final-da-f1-vai-la-massa/" rel="bookmark" class="crp_title">Hoje tem final da F1&#8230; vai lá Massa!</a></li><li><a href="http://cauancabral.net/2010/06/25/delivery-facil-pedir-comida-na-internet-e-muito-facil/" rel="bookmark" class="crp_title">Delivery Fácil &#8211; Pedir comida na internet é muito fácil</a></li><li><a href="http://cauancabral.net/2008/07/16/software-freedom-day-08/" rel="bookmark" class="crp_title">Software Freedom Day 08</a></li><li><a href="http://cauancabral.net/2010/01/28/dica-rapida-cakephp-personalizando-as-paginas-de-erros/" rel="bookmark" class="crp_title">Dica Rápida &#8211; CakePHP &#8211; Personalizando as páginas de erros</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2009/01/13/25-erros-mais-graves/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3F: Férias da Faculdade, Finalmente.</title>
		<link>http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/</link>
		<comments>http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 23:05:28 +0000</pubDate>
		<dc:creator>Cauan Cabral</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[conversão]]></category>
		<category><![CDATA[datas]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[locale]]></category>

		<guid isPermaLink="false">http://geek.cauancabral.net/?p=80</guid>
		<description><![CDATA[Estou de férias, e aproveito para postar três pequenos scripts PHP para conversão de datas entre o padrão brasileiro e o SQL. <a href="http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para quem nunca viu a página &#8220;Mea Culpa&#8221; deste blog, sou acadêmico de Ciência da Computação na UFMS, e após um grande sufoco, consegui progredir de série. Agora posso desfrutar de 2 &#8220;longos&#8221; meses de descanso, da faculdade. O trabalho não para, ainda bem.</p>
<p>Para quebrar o marasmo, segue abaixo três funções em PHP que criei hoje para corrigir um problema na formatação de datas em uma página web.</p>
<p>Os dois primeiros são triviais, conversão de datas do padrão brasileiro para o padrão SQL:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> data_to_sql<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'-'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array_reverse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//converte data do formato SQL para o brasileiro</span>
<span style="color: #000000; font-weight: bold;">function</span> data_from_sql<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'-'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array_reverse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>E o terceiro é um pouco mais interessante, ele pode ser usado quando você quer montar um cabeçalho do tipo: quinta-feira, 12 de dezembro de 2009. O PHP fornece uma função nativa para isso, a função strftime(), mas ela tem como dependência um servidor com suporte a locale, e no meu caso, o locale pt_BR. Para contornar isso, fiz a seguinte função que resolve automáticamente a melhor forma de apresentar o cabeçalho desejado (considerando que strftime tem melhor desempenho do que algumas chamadas a função date(), time() e concatenação de strings):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
 * monta cabeçalho para impressao da data em portugues
 *  
 * @param $sdata time, passa a data desejada
 * @param $week boolean, se irá conter o nome da semana ou não
 * @return $data string, a data formatada para impressao
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> data_header<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sdata</span><span style="color: #339933;">,</span> <span style="color: #000088;">$week</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$months</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Janeiro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Fevereiro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Março'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Abril'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Maio'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Junho'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Julho'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Agosto'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Setembro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Outubro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Novembro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Dezembro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
	<span style="color: #000088;">$weeks</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Domingo'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Segunda-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Terça-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Quarta-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Quinta-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Sexta-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Sábado'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//se possuir suporte a setlocale com a região brasil, utiliza a função nativa</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_TIME<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;pt_BR&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$week</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$strformat</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'%A, %d de %B de %Y'</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">else</span>
			<span style="color: #000088;">$strformat</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'%d de %B de %Y'</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strformat</span><span style="color: #339933;">,</span><span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">else</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$week</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$data</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$weeks</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'w'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">', '</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$data</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'j'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' de '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$months</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'n'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' de '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>São funções simples mas que podem quebrar um galho em um dia apertado.</p>
<div id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a href="http://cauancabral.net/2008/01/23/validao-de-dados-em-php5-parte-3/" rel="bookmark" class="crp_title">Valida&#231;&#227;o de dados em PHP5 &#8211; Parte 3</a></li><li><a href="http://cauancabral.net/2008/02/10/validao-de-dados-em-php5-final/" rel="bookmark" class="crp_title">Valida&#231;&#227;o de dados em PHP5 &#8211; final</a></li><li><a href="http://cauancabral.net/2008/01/02/validacao-de-dados-em-php5-parte-1/" rel="bookmark" class="crp_title">Validação de dados em PHP5 &#8211; Parte 1</a></li><li><a href="http://cauancabral.net/2010/03/20/3%c2%ba-workshop-do-phpms/" rel="bookmark" class="crp_title">3º Workshop do PHPMS</a></li><li><a href="http://cauancabral.net/2008/01/03/validacao-de-dados-em-php5-parte-2/" rel="bookmark" class="crp_title">Validação de dados em PHP5 &#8211; Parte 2</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
