<?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>Marcelo Rodrigo &#187; Kohana</title>
	<atom:link href="http://marcelorodrigo.com/categorias/kohana/feed" rel="self" type="application/rss+xml" />
	<link>http://marcelorodrigo.com</link>
	<description>Programador PHP / Kohana</description>
	<lastBuildDate>Sat, 03 Dec 2011 11:38:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Usando Fragments no Kohana</title>
		<link>http://marcelorodrigo.com/usando-fragments-kohana.html</link>
		<comments>http://marcelorodrigo.com/usando-fragments-kohana.html#comments</comments>
		<pubDate>Mon, 20 Jun 2011 12:30:28 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[Fragments]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=740</guid>
		<description><![CDATA[Fragments é um recurso muito bacana que está disponível no framework Kohana desde a versão 3.0, que permite de forma simples e rápida fazer cache de alguma view ou trecho HTML. Basicamente você pode usar Fragments quando o tempo de &#8230; <a href="http://marcelorodrigo.com/usando-fragments-kohana.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Fragments</strong> é um recurso muito bacana que está disponível no framework <strong>Kohana</strong> desde a versão 3.0, que permite de forma simples e rápida fazer cache de alguma <em>view</em> ou trecho HTML.</p>
<p>Basicamente você pode usar <a title="Documentação do Fragments" href="http://kohanaframework.org/guide/kohana/fragments" target="_blank">Fragments</a> quando o tempo de leitura do fragmento for <strong>menor</strong> do que o tempo de geração do mesmo contéudo. Isso pode ser muito útil naqueles casos onde você tem um menu ou parte do seu layout que pode ser processada uma única vez e sempre ser carregada de um cache em vez de ser processada a view a cada requisição.</p>
<h3>Como usar</h3>
<p>Vamos usar o exemplo do menu:</p>
<pre class="brush: php; title: ; notranslate">// Cache do fragmento por 10 minutos
if (!Fragment::load('viewMenu', Date::MINUTE * 10))
{
	// Tudo até a chamada Fragment::save() será gravado como fragmento
	echo html::anchor('inicio','Início');
	echo html::anchor('kohana','Kohana');
	echo html::anchor('plugins','Plugins');
	echo html::anchor('contato','Contato');

	// Salva o fragmento em cache
	Fragment::save();
}</pre>
<p>O código já comentado fica bem mais fácil do que explicar :)<br />
Simplificando, funciona da seguinte forma:</p>
<ol>
<li><em>Fragment::load()</em> tenta carregar o fragmento do <em>cache</em></li>
<li>Se não encontrar retornará <em>false</em>, e ficará aguardando o trecho a ser guardado neste fragmento até a chamada <em>Fragment::save()</em></li>
<li>O padrão de armazenamento de cada fragmento é 30 segundos, mas você pode especificar um <em>timeout</em> na chamada <em>Fragment::load()</em></li>
<li>Você pode forçar um fragmento ser excluído usando <em>Fragment::delete()</em> ou usando <em>timeout</em> como <em>zero</em></li>
</ol>
<div id="attachment_747" class="wp-caption aligncenter" style="width: 571px"><img src="http://marcelorodrigo.com/wp-content/uploads/2011/06/kohana-fragments.png" alt="Kohana Fragments, exemplo de uso" title="Kohana Fragments" width="561" height="218" class="size-full wp-image-747" /><p class="wp-caption-text">Sem inspiração pra uma imagem, postei o código de exemplo :)</p></div>
<p>Não é interessante usar <strong>Fragments</strong> para guardar variáveis, objetos ou ainda resultados de banco de dados. Para objetos mais complexos o módulo <a title="Documentação do Cache" href="http://kohanaframework.org/guide/cache" target="_blank">Cache</a> é muito mais robusto e eficiente.</p>
<p>É simples, é <strong>Kohana</strong>!<br />
É por isso que eu gosto :)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/usando-fragments-kohana.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Usando hífen em URL&#8217;s no Kohana PHP</title>
		<link>http://marcelorodrigo.com/usando-hifen-urls-kohana-php.html</link>
		<comments>http://marcelorodrigo.com/usando-hifen-urls-kohana-php.html#comments</comments>
		<pubDate>Wed, 15 Jun 2011 01:19:34 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[hífen]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=728</guid>
		<description><![CDATA[Se você prefere usar hífen (ou hífens) nas URL&#8217;s do seu projeto com Kohana, isto é muito simples. Basta extender a classe Request para gerenciar isso. Salve no arquivo application/classes/request.php: A função str_replace elimina todas as ocorrências de hífens em &#8230; <a href="http://marcelorodrigo.com/usando-hifen-urls-kohana-php.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Se você prefere usar hífen (ou hífens) nas URL&#8217;s do seu projeto com <strong>Kohana</strong>, isto é muito simples. Basta extender a classe Request para gerenciar isso.</p>
<p>Salve no arquivo <em>application/classes/request.php</em>:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php defined('SYSPATH') or die('No direct script access.');
class Request extends Kohana_Request
{
	public function execute()
	{
		$this-&gt;action(str_replace('-', '', $this-&gt;action()));
		$this-&gt;controller(str_replace('-', '', $this-&gt;controller()));
		return parent::execute();
	}
}</pre>
<p>A função <a title="str_replace" href="http://php.net/str_replace" target="_blank"><em>str_replace</em></a> elimina todas as ocorrências de hífens em <em>controllers</em> e <em>actions</em> da sua URL. Mas você pode adaptar e usar conforme precisar no seu projeto, substituindo por algum outro caractere, se essa for a necessidade.</p>
<div id="attachment_731" class="wp-caption aligncenter" style="width: 604px"><img class="size-full wp-image-731" title="Kohana: URL's com hífen" src="http://marcelorodrigo.com/wp-content/uploads/2011/06/url-hifen-kohana.png" alt="Kohana: URL's com hífen" width="594" height="92" /><p class="wp-caption-text">Kohana: URL&#39;s com hífen</p></div>
<p>Assim, permite por exemplo você tem uma URL<br />
<em> http://seuprojeto.com/sobre-nos/localize-no-mapa</em><br />
ser redirecionada para o <strong>controller</strong> <em>sobreNos</em> e a <strong>action</strong> <em>localizeNoMapa</em></p>
<p>É simples, é <strong>Kohana</strong>!<br />
É por isso que eu gosto :)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/usando-hifen-urls-kohana-php.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Palestra do Kohana na phpSCConf</title>
		<link>http://marcelorodrigo.com/palestra-kohana-na-phpscconf.html</link>
		<comments>http://marcelorodrigo.com/palestra-kohana-na-phpscconf.html#comments</comments>
		<pubDate>Tue, 07 Sep 2010 17:25:43 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpscconf]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=582</guid>
		<description><![CDATA[Na última semana ocorreu a phpSCConf e estou compartilhando meu material usado na palestra sobre Desenvolvimento Ágil com Kohana Framework. Foi muito interessante ver o número de pessoas presentes que já tiveram contato ou conheciam o Kohana (tanto como o &#8230; <a href="http://marcelorodrigo.com/palestra-kohana-na-phpscconf.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Na última semana ocorreu a <a href="http://www.phpsc.com.br">phpSCConf </a>e estou compartilhando meu material usado na palestra sobre <strong>Desenvolvimento Ágil com Kohana Framework</strong>.</p>
<div id="attachment_590" class="wp-caption aligncenter" style="width: 650px"><a href="http://marcelorodrigo.com/wp-content/uploads/2010/09/phpscconf-2010.jpg"><img class="size-large wp-image-590" title="phpscconf-2010" src="http://marcelorodrigo.com/wp-content/uploads/2010/09/phpscconf-2010-1024x475.jpg" alt="Foto Oficial da #phpSCconf 2010" width="640" height="296" /></a><p class="wp-caption-text">Foto Oficial da #phpSCconf 2010</p></div>
<p>Foi muito interessante ver o número de pessoas presentes que já tiveram contato ou conheciam o <strong>Kohana </strong>(tanto como o <strong>CodeIgniter</strong>). Surpreendeu minhas expectativas sobre quantas pessoas estão usando o <a href="http://marcelorodrigo.com/categorias/kohana">Kohana </a>para facilitar e agilizar o desenvolvimento web.</p>
<p>Confira os slides da palestra</p>
<div id="__ss_5077597" style="width: 425px;"><strong><a title="Desenvolvimento ágil com Kohana framework" href="http://www.slideshare.net/mrodrigow/desenvolvimento-agil-com-kohana-framework">Desenvolvimento ágil com Kohana framework</a></strong><object id="__sse5077597" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=desenvolvimentoagilcomkohanaframeworkphpscconf2010-v3-100828151344-phpapp02&amp;rel=0&amp;stripped_title=desenvolvimento-agil-com-kohana-framework" /><param name="name" value="__sse5077597" /><param name="allowfullscreen" value="true" /><embed id="__sse5077597" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=desenvolvimentoagilcomkohanaframeworkphpscconf2010-v3-100828151344-phpapp02&amp;rel=0&amp;stripped_title=desenvolvimento-agil-com-kohana-framework" name="__sse5077597" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/mrodrigow">Marcelo Rodrigo</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/palestra-kohana-na-phpscconf.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando o framework Kohana</title>
		<link>http://marcelorodrigo.com/instalando-o-framework-kohana.html</link>
		<comments>http://marcelorodrigo.com/instalando-o-framework-kohana.html#comments</comments>
		<pubDate>Mon, 23 Aug 2010 11:30:24 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[instalação]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=563</guid>
		<description><![CDATA[Kohana é um framework HMVC desenvolvido em PHP5 que fornece um rico conjunto de componentes para a construção de aplicações web. Para instalar (e sair usando) o Kohana precisamos fazer poucas configurações, fornecendo muitas das ferramentas que um desenvolvedor precisa &#8230; <a href="http://marcelorodrigo.com/instalando-o-framework-kohana.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Kohana </strong>é um <strong>framework HMVC</strong> desenvolvido em<strong> PHP5</strong> que fornece um rico conjunto de componentes para a construção de aplicações web.</p>
<p>Para instalar (e sair usando) o Kohana precisamos fazer poucas configurações, fornecendo muitas das ferramentas que um desenvolvedor precisa dentro de um sistema altamente flexível. Hoje vamos ver como é a instalação passo a passo do Kohana.</p>
<p style="text-align: center;"><a title="PHP Elephant" href="http://www.flickr.com/photos/27403767@N00/2218075860/" target="_blank"><img class="aligncenter" src="http://farm3.static.flickr.com/2009/2218075860_b78fd33f83.jpg" border="0" alt="PHP Elephant" /></a><br />
<small><a title="Attribution-NonCommercial-NoDerivs License" href="http://creativecommons.org/licenses/by-nc-nd/2.0/" target="_blank"><img src="http://marcelorodrigo.com/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="Laughing Squid" href="http://www.flickr.com/photos/27403767@N00/2218075860/" target="_blank">Laughing Squid</a></small></p>
<p>Neste tutorial vou considerar que você já tem seu servidor Web instalado (Apache, IIS, lighthttd, etc) e seu PHP 5 devidamente configurado.</p>
<ol>
<li>Download da versão estável no site do <a title="Site do Kohana" href="http://kohanaframework.org" target="_blank">Kohana</a></li>
<li>Descompactar o seu download (isso criará uma subpasta chamada <em>kohana</em>)</li>
<li>Copiar o conteúdo da pasta <em>kohana </em>do procedimento anterior dentro do seu <em>webroot </em>(local onde o <em>webserver </em>acessa os arquivos na raiz)</li>
<li>Abrir o arquivo <code>application/bootstrap.php</code> e fazer pequenas alterações:
<ul>
<li>Configurar o <a href="http://php.net/timezones" target="_blank"><em>timezone</em></a> para a sua região (aqui uso <em>America/Sao_Paulo</em>)</li>
<li>Configurar o <a href="http://php.net/setlocale" target="_blank"><em>locale</em></a><em> </em>para o Português Brasil (aqui uso pt_BR.utf-8)</li>
</ul>
</li>
<li>Definir premissões de gravação para:
<ul>
<li><code>application/cache</code></li>
<li><code>application/logs</code></li>
</ul>
</li>
<li>Testar sua instalação abrindo o endereço do seu servidor web no seu browser, você verá a tela abaixo (clique para ampliar):<br />
<a href="http://marcelorodrigo.com/wp-content/uploads/2010/08/kohana-instalacao-v3.png"><img class="size-medium wp-image-570 alignnone" title="Instalação Kohana V3" src="http://marcelorodrigo.com/wp-content/uploads/2010/08/kohana-instalacao-v3-221x300.png" alt="Instalação Kohana V3" width="221" height="300" /></a></li>
<li>Remova renomeie o arquivo install.php e está tudo pronto!</li>
</ol>
<p>O Kohana está instalado e pronto para uso no seu servidor de desenvolvimento.<br />
Veja mais tutoriais sobre o <a href="http://marcelorodrigo.com/categoria/kohana">Kohana</a> para começar o desenvolvimento usando este framework.</p>
<p>Simples não? É <strong>Kohana</strong>!<br />
E é por isso que eu gosto :)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/instalando-o-framework-kohana.html/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>phpSCConf 2010</title>
		<link>http://marcelorodrigo.com/phpscconf-2010.html</link>
		<comments>http://marcelorodrigo.com/phpscconf-2010.html#comments</comments>
		<pubDate>Sun, 22 Aug 2010 03:48:09 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Coisas da Vida]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpscconf]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=565</guid>
		<description><![CDATA[Esta semana acontece a phpSCConf aqui em Joinville e tive o prazer da minha palestra sobre o Kohana ser selecionada para este evento. Minha palestra será no sábado 28/Ago as 17:15h e o título é Desenvolvimento Ágil com Kohana Framework, &#8230; <a href="http://marcelorodrigo.com/phpscconf-2010.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Esta semana acontece a <strong>phpSCConf </strong>aqui em Joinville e tive o prazer da minha palestra sobre o Kohana ser selecionada para este evento.</p>
<p>Minha palestra será no sábado 28/Ago as 17:15h e o título é <strong>Desenvolvimento Ágil com Kohana Framework</strong>, confira toda a <a href="http://www.phpsc.com.br/2010/07/grade-do-phpsc-conf-2010/" target="_blank">grade do evento</a>.</p>
<p>Se você procura tutoriais sobre o <strong>Kohana</strong>, <a href="http://marcelorodrigo.com/categorias/kohana">clique aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/phpscconf-2010.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Controllers no Kohana 3</title>
		<link>http://marcelorodrigo.com/controllers-no-kohana.html</link>
		<comments>http://marcelorodrigo.com/controllers-no-kohana.html#comments</comments>
		<pubDate>Sun, 18 Jul 2010 18:35:05 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[view]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=505</guid>
		<description><![CDATA[Um controller é um arquivo que contém uma classe que vai gerenciar todo o fluxo da aplicação.Se você não conhece MVC, é uma boa hora para estudar porque o Kohana é todo MVC. Os controllers comunicam-se diretamente com os models &#8230; <a href="http://marcelorodrigo.com/controllers-no-kohana.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um <em>controller</em> é um arquivo que contém uma classe que vai gerenciar todo o fluxo da aplicação.Se você não conhece <strong><acronym title="Model View Controller">MVC</acronym></strong>, é uma boa hora para <a title="MVC" rel="nofollow" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">estudar </a>porque o <strong>Kohana</strong> é todo MVC.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/ModelViewControllerDiagram2.svg/500px-ModelViewControllerDiagram2.svg.png" alt="MVC" width="500" height="228" /></p>
<p>Os <em>controllers</em> comunicam-se diretamente com os <em>models</em> enviando e recebendo informações, muitas das informações recebidas são repassadas as <em>views</em> para serem renderizadas no navegador do usuário, e podem também ser recebidas das <em>views</em> dentro dos controllers para serem processadas pelos <em>models</em> novamente.</p>
<p>Enfim, deu pra perceber que o <em>controller</em> é quem controla o fluxo de informações e da aplicação :)<br />
Trabalhar com Controllers no <strong>Kohana</strong> é muito fácil, vamos ver como:</p>
<h3>Convenções para Controllers</h3>
<ul>
<li> O arquivo deve ser gravado em <em>application/controller</em></li>
<li> O nome do arquivo deve ter o mesmo nome da classe, em <span style="text-decoration: underline;">minúsculo</span>.<br />
Exemplo: <em>artigos.php</em></li>
<li> O nome da classe deve conferir com o nome do arquivo, iniciada de Controller_<em> </em>e com a <span style="text-decoration: line-through;">primeira letra em maiúsculas.</span><br />
Exemplo: <em>Controller_Artigos</em></li>
<li>A classe deve ser extendida do Controller base (ou de outro controller).<br />
Exemplo: <em>Controller_Artigos extends Controllers</em></li>
<li>Os métodos que serão acessíveis pela URL devem ser públicos e precedidos por <em>_action.</em><br />
Exemplo: <em>public function action_todos()<br />
</em></li>
</ul>
<h3>Acessando e Requisitando um Controller</h3>
<p>Por padrão, o acesso a um controller é feito da seguinte forma:</p>
<pre>http://dominio.com/index.php/<em>&lt;controller&gt;</em>/<em>&lt;action&gt;</em></pre>
<p>Então para acessarmos o controller <span style="text-decoration: underline;"><em>artigos</em></span> e a action <span style="text-decoration: underline;"><em>todos</em></span>, nosso exemplo ficaria assim:</p>
<pre>http://dominio.com/index.php/<span style="text-decoration: underline;"><em>artigos</em>/<em>todos</em></span><strong><em>
</em></strong></pre>
<h3>Criando um Controller</h3>
<p>Seguindo nosso exemplo, vamos criar um controller <em>artigos</em>:</p>
<pre>application/controller/artigos.php</pre>
<pre class="brush: php; title: ; notranslate">class Controller_Artigos extends Controller
{
  public function action_index()
  {
    $this-&gt;request-&gt;response = &quot;A resposta para a vida, o universo e tudo mais é 42!&quot;;
  }
}</pre>
<p>Acessando <em>http://dominio.com/index.php/artigos/index</em> (ou <em>dominio.com/artigos/</em> porque a action_index é a padrão, por default) teremos o seguinte resultado:</p>
<pre>A resposta para a vida, o universo e tudo mais é 42!</pre>
<h3>Recebendo Parâmetros via URL</h3>
<p>Como o controller é responsável pelo fluxo de informações dentro da aplicação, uma das grandes utilidades é receber informações. Uma das formas mais simples é via URL. Vamos aprimorar nosso exemplo, solicitando artigos pelo seu número:</p>
<pre class="brush: php; title: ; notranslate">class Controller_Artigos extends Controller
{
  public function action_index()
  {
    $this-&gt;request-&gt;response = 'A resposta para a vida, o universo e tudo mais é 42!';
  }

  public function action_ver($numero=0)
  {
    // Rotina para pesquisar artigos
    // {...}
    $this-&gt;request-&gt;response = &quot;Você solicitou o artigo número $numero&quot;;
  }
}</pre>
<p>No exemplo acima, acessando <em>http://dominio.com/index.php/artigos/ver/12</em> teremos o seguinte retorno:</p>
<pre>Você solicitou o artigo número 12</pre>
<h3>Funções Privadas em Controllers</h3>
<p>Em determinadas situações precisamos manter algumas funções disponíveis como public mas não queremos que elas sejam acessadas pela URL, neste caso é só não usar o prefixo action_ no nome da function.</p>
<pre class="brush: php; title: ; notranslate">class Controller_Artigos extends Controller
{
  public function megasena()
  {
    $this-&gt;request-&gt;response = 'Os números da megasena são ...';
  }
}</pre>
<p>E assim se tentarmos acessar <em>http://dominio.com/index.php/artigos/megasena</em> não teremos acesso a esta função dentro do controller, como esperado!</p>
<h3>Conclusão</h3>
<p>Nos próximos <a title="Mais tutoriais do Kohana" href="http://marcelorodrigo.com/tags/kohana">tutoriais do Kohana</a> vamos trabalhar com <strong>Views</strong>, <strong>Models</strong> e depois a troca de informações entre eles.<br />
Qualquer problema ou dúvida, fique a vontade nos comentários.</p>
<p>Simples, não? É <strong>Kohana</strong>!<br />
E é por isso que eu gosto :)</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/controllers-no-kohana.html/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Usando Memcache com Kohana PHP</title>
		<link>http://marcelorodrigo.com/memcache-com-framework-kohana-php.html</link>
		<comments>http://marcelorodrigo.com/memcache-com-framework-kohana-php.html#comments</comments>
		<pubDate>Thu, 01 Apr 2010 16:56:09 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=224</guid>
		<description><![CDATA[O Memcache é um sistema de cache de memória distribuída de alta performance, que permite acesso rápido a objetos que são armazenados em seu cache. A utilização vai da criatividade e necessidade do programador, que pode armazenar resultados de consultas, &#8230; <a href="http://marcelorodrigo.com/memcache-com-framework-kohana-php.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O Memcache é um sistema de cache de memória distribuída de alta performance, que permite acesso rápido a objetos que são armazenados em seu cache. A utilização vai da criatividade e necessidade do programador, que pode armazenar resultados de consultas, imagens, objetos, códigos para rápido acesso posterior.</p>
<p style="text-align: center;"><a title="Servers" href="http://www.flickr.com/photos/69875617@N00/3425464/" target="_blank"><img class="aligncenter" src="http://farm1.static.flickr.com/2/3425464_068a1e6124.jpg" border="0" alt="Servers" /></a><br />
<small><a title="Attribution-ShareAlike License" href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank"><img src="http://marcelorodrigo.com/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="JohnSeb" href="http://www.flickr.com/photos/69875617@N00/3425464/" target="_blank">JohnSeb</a></small></p>
<p>O uso de Memcache normalmente segue um padrão:</p>
<ol>
<li>O aplicativo recebe uma consulta do usuário ou do aplicativo.</li>
<li>O aplicativo verifica se os dados necessários para satisfazer a consulta estão no cache de memória.</li>
<li>Se os dados estiverem no cache de memória, o aplicativo utiliza os dados.</li>
<li>Se os dados não estiverem no cache de memória, o aplicativo consulta o armazenamento de dados e armazena os resultados no cache de memória para solicitações futuras.</li>
</ol>
<h2>Legal, e no Kohana?</h2>
<p>Primeiro passo, vamos copiar o arquivo /system/config/cache.php para /application/config/cache.php<br />
Configure o arquivo para que fique desta forma:</p>
<pre class="brush: php; title: ; notranslate">
$config['default'] = array(
  'driver'   =&gt; 'memcache',
  'params'   =&gt; '',
  'lifetime' =&gt; 3600,
  'requests' =&gt; 1000
);
</pre>
<p>Você pode alterar os parâmetros como precisa, onde sugiro:</p>
<p>lifetime = 3600 segundos (1h de timeout)<br />
requests = 1000 (mil requisições de timeout)</p>
<h2>E se o MemCache estiver em outro servidor?</h2>
<p>Ai está, uma dica importante! Se você não executa o MemCache no mesmo servidor do Kohana, você precisa alterar o arquivo cache_memcache.php  em application/config. Se você tiver mais de um servidor memcached, você pode adicioná-las ao array $config['servers']. Veja um exemplo:</p>
<pre class="brush: php; title: ; notranslate">
$config['servers'] = array(
  array(
    'host' =&gt; '127.0.0.1',
    'port' =&gt; 1234,
    'persistent' =&gt; FALSE
  )
);
</pre>
<h2>Exemplos</h2>
<p>Pronto as configurações, agora é a hora tão esperada em usar o cache, e realmente é a etapa <strong>mais fácil</strong>:</p>
<pre class="brush: php; title: ; notranslate">
// Instancia o cache
$cache = Cache::instance();

// Tentando obter dados do cache
$retorno = $cache-&gt;get('item');

if(!$retorno)
{
  // Dados não retornaram, obtendo dados da origem
  $retorno = ORM::Factory('teste')-&gt;dados();

  // Gravando novo cache
  $cache-&gt;set('item',$retorno);
}
</pre>
<p>Simples, não? É <strong>Kohana</strong> e é por isso que eu gosto!</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/memcache-com-framework-kohana-php.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Conhecendo o framework Kohana PHP</title>
		<link>http://marcelorodrigo.com/conhecendo-o-framework-kohana-php.html</link>
		<comments>http://marcelorodrigo.com/conhecendo-o-framework-kohana-php.html#comments</comments>
		<pubDate>Thu, 28 Jan 2010 21:19:13 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=330</guid>
		<description><![CDATA[Kohana é um framework PHP 5 que utiliza orientada a objeto (OOP) e o modelo de arquitetura MVC (Model View Controller). Ele é um framework que é baseado no CodeIgniter e quando algumas coisas não iam bem na evolução do CodeIgniter &#8230; <a href="http://marcelorodrigo.com/conhecendo-o-framework-kohana-php.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-337" title="Kohana PHP" src="http://marcelorodrigo.com/wp-content/uploads/2010/01/kohana-300x119.png" alt="Kohana PHP" width="300" height="119" /></p>
<p><strong>Kohana</strong> é um framework <strong>PHP 5</strong> que utiliza orientada a objeto (<strong>OOP</strong>) e o modelo de  arquitetura <strong>MVC </strong>(Model View Controller).</p>
<p>Ele é um framework que é baseado no <a href="http://codeigniter.com" target="_blank"><strong>CodeIgniter</strong></a> e quando algumas coisas não iam bem na evolução do CodeIgniter e a comunidade achou que poderia contribuir de forma efetiva no andamento do projeto de forma livre, foi criado o Kohana. No começo ele era chamado de <a href="http://codeigniter.com/forums/viewthread/53347/" target="_blank"><em>Blue Flame</em></a>, e por infringir algumas patentes, posteriormente seu nome foi alterado para Kohana.</p>
<p>Bom, chega de papo e vamos ao que interessa.<br />
<strong>O que o Kohana tem de melhor?</strong></p>
<p><strong><br />
</strong></p>
<p><strong>Liberdade no desenvolvimento</strong></p>
<p>O Kohana é projetado e mantido pela comunidade e não por uma empresa <span style="text-decoration: line-through;">como é o CodeIgniter</span>. O desenvolvimento do Kohana é dirigido por um time de pessoas dedicadas que necessitam de um framework para solucões rápidas e poderosas.<strong> </strong></p>
<p><strong><br />
Praticidade</strong><br />
Nada de precisar ficar configurando bootstraps mirabolosos ou fazendo mil configurações em arquivos XML/YAML/whatever.<br />
Instale, configure pouca coisa e vá trabalhar. O trabalho sujo já foi feito pra você, use o que ele tem de melhor</p>
<p><strong><br />
Strict PHP 5 OOP</strong><br />
PHP4 já era! PHP5 com orientação a objetos oferecem muitos benefícios e maior segurança: visibility protection, carregamento automático de classes, sobrecarregamento, interfaces, classes abstratas e singletons.</p>
<p><strong><br />
Extremamente leve</strong><br />
Kohana não possui dependências de extensões PECL ou bibliotecas da PEAR. Bibliotecas gigantescas e monolíticas são evitadas a favor de otimizar as solucões desenvolvidas.</p>
<p><strong><br />
GET, POST, COOKIE e SESSION funcionam como esperado</strong><br />
Kohana não limita seu acesso aos dados globais, mas oferece filtros e protecão contra XSS (Cross Site Scripting). Ele oferece formas seguras e limpas de acessar estes dados, sem precisar ficar ficar dando voltas no palheiro.</p>
<p><strong><br />
Carregamento automático de classes</strong><br />
Estas são carregadas sob demanda, de acordo com a necessidade da sua aplicação. Sem precisar ficar dando loading em bootstraps, sem precisar ficar declarando em controllers quais classes do framework vá utilizar.</p>
<p><strong><br />
Não existem conflitos de namespace</strong><br />
Todas as classes estão adequadas para permitir componentes com nomes similares, a favor de uma API mais coerente.</p>
<p><strong><br />
Recursos em Cascata / Extensibilidade</strong><br />
Quase todo o Kohana pode ser sobrecarregado por métodos que você mesmo pode escrever sem precisar editar os arquivos do core do framework. Além de permitir qualquer customização, resulta em atualizaçãoes mais seguras e organização de forma transparente no desenvolvimento.</p>
<p><strong><br />
Biblioteca baseada em &#8220;Drivers&#8221; e API consistente</strong><br />
Bibliotecas podem ter diferentes &#8220;drivers&#8221; para manipular diferentes APIs transparentemente. Por exemplo, múltiplas opcões de armazenamento dos dados de sessão estão disponíveis (banco de dados, cookie e nativo), visto que a interface é uniforme. Isso permite que novos &#8220;drivers&#8221; sejam desenvolvidos para bibliotecas de terceiros já existentes, mantendo a API consistente e transparente.</p>
<p><strong><br />
Manipulacão de Eventos</strong><br />
Handlers de Eventos baseados no padrão Observador permitem uma maior customizacão.</p>
<p><strong><br />
Módulos Extras</strong><br />
Com todas as características acima, vários módulos foram escritos por entusiastas e pela comunidade. Hoje o Kohana permite integrações com várias bibliotecas, incluindo qualquer biblioteca do Zend Framework. É o que eu sempre falo: Kohana + Zend Framework = Killer Combo</p>
<p><strong><br />
Simplesmente faça o upload</strong><br />
Kohana não tem necessidade de mil configurações a parte no seu provedor, e executa muito bem em qualquer provedor de hospedagem de respeito que tenha PHP 5, sem paranóias. Desenvolva e faça o upload!</p>
<p><strong><br />
Rápido ciclo de desenvolvimento</strong><br />
Resultados de desenvolvimento rápido em uma resposta mais rápida aos erros do usuário e alterações no software.</p>
<p><strong><br />
Curva de aprendizado pequena</strong><br />
O tempo para aprender a utilizar framework é bem menor do que em relação a outras frameworks. Realmente, isto é incomparável!</p>
<p><strong><br />
E agora?<br />
</strong></p>
<p>Se você gostou do que leu, convido a baixar o <strong>Kohana </strong>e brincar um pouco com ele.<br />
Em poucas horas estará usando ele no seu próximo projeto!<br />
<a title="Site oficial do Kohana" href="http://kohanaframework.org/" target="_blank"> http://kohanaframework.org</a></p>
<p>Gostou? Quer aprender como instalar e configurar?<br />
Veja mais artigos sobre o <a href="http://marcelorodrigo.com/categorias/kohana">Kohana </a></p>
<p>Simples não? É <strong>Kohana</strong>!<br />
E é por isso que eu gosto!</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/conhecendo-o-framework-kohana-php.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Kohana PHP &#8211; ORM Conventions</title>
		<link>http://marcelorodrigo.com/kohana-php-orm-conventions.html</link>
		<comments>http://marcelorodrigo.com/kohana-php-orm-conventions.html#comments</comments>
		<pubDate>Tue, 01 Sep 2009 14:34:21 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=253</guid>
		<description><![CDATA[No Kohana temos a facilidade de trabalhar com convenções em vez de configurações, isto dá agilidade e comodidade ao desenvolvedor que não precisa ficar configurando inúmeros arquivos de mapeamento de banco de dados para que sua aplicação funcione perfeitamente. Porém, &#8230; <a href="http://marcelorodrigo.com/kohana-php-orm-conventions.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No Kohana temos a facilidade de trabalhar com <a href="http://pt.wikipedia.org/wiki/Conven%C3%A7%C3%A3o_sobre_configura%C3%A7%C3%A3o" target="_blank">convenções em vez de configurações</a>, isto dá agilidade e comodidade ao desenvolvedor que não precisa ficar configurando inúmeros arquivos de mapeamento de banco de dados para que sua aplicação funcione perfeitamente.</p>
<p>Porém, quando vamos trabalhar com databases que não seguem estas convenções (o que pra mim é algo muito comum) ou que já atendem a outros sistemas tambéme e não podem ser modificadas, temos de configurar somente as excessões para que tudo continue funcionando perfeitamente.</p>
<p>Algumas destas convenções, e suas excessões:</p>
<h3>Nomes de tabelas no plural</h3>
<p>Nomes de tabelas devem estar no plural. Por padrão o <a href="http://docs.kohanaphp.com/libraries/orm" target="_blank">ORM</a> obtém o nome da tabela e determina seu plural com ajuda do helper <a href="http://docs.kohanaphp.com/helpers/inflector" target="_blank"><em>inflector</em></a>.<br />
Convenção: Ex: <em>users</em>, <em>invoices</em>.<br />
Excessão: Declarar a propriedade <em>table_name</em></p>
<pre class="brush: php; title: ; notranslate">protected $table_name = 'usuarios';</pre>
<h3>Models no singular</h3>
<p>Enquanto pela convenção as tabelas no banco devem ter seu nome no plural, o nome do arquivo e do model deve ser no singular.<br />
Convenção: <em>NomedaTabela</em> seguido de <em>_Model</em></p>
<pre class="brush: php; title: ; notranslate">class User_Model extends ORM {}</pre>
<h3>Autoincrement</h3>
<p>Toda tabela deve ter um campo <em>autoincrement + primary key</em> chamado <strong>id<em><br />
</em></strong> Excessão: No model, declarar a propriedade primary_key</p>
<pre class="brush: php; title: ; notranslate">protected $primary_key = 'meucampoid';</pre>
<h3>Foreign Keys</h3>
<p>Chaves estrangeiras devem ser nomeadas no banco de dados como <strong>nomeDoModel</strong> seguido de <strong>_id<em><br />
</em></strong> Exemplo: <em>invoice_id</em>, <em>user_id</em><br />
Excessão: No exemplo abaixo, a tabela <em>invoices </em>esteja relacionada a <em>users</em>, porém na tabela <em>invoices </em>a chave estrangeira chame-se<em> user_fk</em> (que não segue o padrão sugerido)</p>
<div id="attachment_268" class="wp-caption alignnone" style="width: 336px"><a href="http://marcelorodrigo.com/wp-content/uploads/2009/09/kohana-orm-fk-exemplo.JPG"><img class="size-full wp-image-268 " title="Relacionamento entre Users e Invoices" src="http://marcelorodrigo.com/wp-content/uploads/2009/09/kohana-orm-fk-exemplo.JPG" alt="Relacionamento entre Users e Invoices" width="326" height="191" /></a><p class="wp-caption-text">Relacionamento entre Users e Invoices</p></div>
<p>No model <em>Invoice_Model</em>, declare a propriedade foreign_key</p>
<pre class="brush: php; title: ; notranslate">class Invoice_Model extends ORM {
    protected $foreign_key = array('user' =&gt; 'user_fk');
}</pre>
<h3>Tabelas Pivôs</h3>
<p>Tabelas pivôs devem ser nomeadas pelos nomes das tabelas pais na ordem alfabética (legal e organizado não?), nesta forma<em> tabela1_tabela2</em>. Vamos usar como exemplo o relacionamento de muitos-para-muitos entre a tabela <em>users</em> e as tabelas de <em>functions</em>, tabela de junção deve ser nomeada no banco como <em>functions_users</em></p>
<p>Simples, não? É <strong>Kohana</strong>!<br />
E é por isso que eu gosto.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/kohana-php-orm-conventions.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Kohana3, novidades e mudanças!</title>
		<link>http://marcelorodrigo.com/kohana-3-novidades-e-mudancas.html</link>
		<comments>http://marcelorodrigo.com/kohana-3-novidades-e-mudancas.html#comments</comments>
		<pubDate>Thu, 27 Aug 2009 01:38:35 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[hmvc]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=246</guid>
		<description><![CDATA[Agosto já está no fim e tudo indica que ainda este ano será lançado o Kohana 3, uma nova versão que além de muitas melhorias vem acompanhada de muitas mudanças na sua estrutura. Tenho nos meus rascunhos já alguns artigos &#8230; <a href="http://marcelorodrigo.com/kohana-3-novidades-e-mudancas.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Agosto já está no fim e tudo indica que ainda este ano será lançado o <a href="http://github.com/kohana/" target="_blank">Kohana 3</a>, uma nova versão que além de muitas melhorias vem acompanhada de muitas mudanças na sua estrutura. Tenho nos meus rascunhos já alguns artigos para revisar e publicar sobre utilização do Kohana, porém acredito que terei de atualizar os mesmos para que fiquem 100% compatíveis com esta nova versão.</p>
<p>Para quem tem pressa, a resposta está ai: a migração de aplicações Kohana 2.x para 3.0 não será automática e exigirá revisão em alguns pontos do desenvolvimento, a começar que partimos de <abbr title="Model View Controller">MVC</abbr> para <abbr title="Hierarchical Model View Controller">HMVC</abbr></p>
<h3>Que raios é HMVC?</h3>
<p>Não complique!<br />
<a href="http://en.wikipedia.org/wiki/Presentation-abstraction-control" target="_blank">HMVC</a> (Hierarchical Model View Controller) é um padrão de design novo, porém muito semelhante ao MVC que você já conhece, adicionado de uma hierarquia no design original do MVC. Quando uma requisição URI for solicitada, qualquer parte do MVC pode chamar outro item da hierarquia, o que permite o desenvolvedor uma maior flexibilidade e modularização do sistema que estiver utilizando. A vantagem é que se você quiser continuar com o padrão MVC, nada vai impedir você trabalhar desta forma.</p>
<h3>Bootstrap</h3>
<p>Quem me conhece sabe que eu <span style="text-decoration: line-through;">odeio</span> não gosto muito bootstrap do Zend Framework. O ZF é uma plataforma invejável tanto pela sua estabilidade como pelas suas características, porém montar arquivos de bootstrap decentes no ZF nunca foi sucesso pra mim. Sei lá, acho que fiquei mal acostumado com o Kohana onde eu ligo o carro e saido acelerando, e no ZF eu tinha que toda vez parafusar as 4 rodas e calibrar todos os pneus antes de sair rodando a aplicação :)</p>
<p>Voltando ao assunto, KO3 terá um bootstrap dedicado, porém você não vai precisar sair montando um do zero e sofrer horas para deixar ele funcionando: um <a href="http://github.com/kohana/kohana/blob/f2864c079dfec0268f8d23b00a0b4ad8061d58c5/application/bootstrap.php" target="_blank">bootstrap padrão</a> que atende praticamente todas as aplicações já fará parte do pacote, somente o tunning da aplicação ficará por sua conta, como você já fazia no Kohana 2.x</p>
<h3>Arquivos de Configurações</h3>
<p>Boa parte dos arquivos do diretório a<em>pplication/config</em> e suas diretivas também foram movidas para o arquivo de <em>bootstrap</em>. Quem já teve contato com Zend Framework estará bem familiarizado com esta mudança.</p>
<h3>Controllers viraram Classes</h3>
<p>Os controllers que estavam em <em>/application/controllers</em> vão para <em>/application/<strong>classes/</strong>controllers</em>.<br />
<em>Libraries</em> e <em>Helpers</em> seguem o mesmo padrão e são todos <strong>classes</strong> agora, tudo fica mais organizado e OO.</p>
<p>Estrutura de diretórios e autoloading do KO3 também mudou: Uma nova convenção de arquivos foi desenvolvida de forma que simplifica a identificação e localização de classes. Todas as classes fazem uso do sublinhado (_). A estrutura de nomes é separada, como anteriormente, mas você vai notar uma diferença no formato.</p>
<p><em><span style="color: #808080;"><span style="color: #008080;">Teste</span>_<span style="color: #008000;">Controller</span></span></em><span style="color: #808080;"> <span style="color: #333333;"><strong>agora será</strong></span> </span><em><span style="color: #808080;"><span style="color: #008000;">Controller</span>_<span style="color: #008080;">Teste</span></span></em><span style="color: #808080;"> (</span><em><span style="color: #808080;">/application/classes/<span style="color: #008000;">controller</span>/<span style="color: #008080;">teste</span>.php</span></em><span style="color: #808080;">)</span><br />
<span style="color: #808080;"><span style="color: #808000;">Kohana</span>_<span style="color: #008000;">Session</span>_<span style="color: #008080;">Cookie</span> <span style="color: #333333;"><strong>corresponde a</strong></span> /system/<span style="color: #808000;">kohana</span>/<span style="color: #008000;">session</span>/<span style="color: #008080;">cookie</span>.php</span></p>
<p>Ainda quero fazer alguns testes com o novo driver ORM, porém não me sobrou tempo ainda!<br />
Acho que com o lançamento oficial da nova versão (que hoje está em RC3) posso publicar uma análise mais voltada ao ORM, que será exclusivamente baseado no PDO</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/kohana-3-novidades-e-mudancas.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/37 queries in 0.018 seconds using disk: basic
Object Caching 1042/1118 objects using disk: basic

Served from: marcelorodrigo.com @ 2012-02-05 11:25:59 -->
