<?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; Desenvolvimento</title>
	<atom:link href="http://marcelorodrigo.com/categorias/desenvolvimento/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>Fontes suavizadas no NetBeans</title>
		<link>http://marcelorodrigo.com/fontes-suavizadas-no-netbeans.html</link>
		<comments>http://marcelorodrigo.com/fontes-suavizadas-no-netbeans.html#comments</comments>
		<pubDate>Mon, 21 Mar 2011 13:07:48 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ubuntu / Linux]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=722</guid>
		<description><![CDATA[Eu realmente aprecio as boas fontes antialiased disponíveis na maioria das plataformas atualmente. No OSX eu gosto muito de usar o NetBeans com a fonte Monaco, porém quando preciso fazer isso no Windows ou Ubuntu uma perturbação na força sempre &#8230; <a href="http://marcelorodrigo.com/fontes-suavizadas-no-netbeans.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Eu realmente aprecio as boas fontes antialiased disponíveis na maioria das plataformas atualmente. No <strong>OSX </strong>eu gosto muito de usar o <strong>NetBeans</strong> com a fonte <em>Monaco</em>, porém quando preciso fazer isso no Windows ou Ubuntu uma perturbação na força sempre deixa as fontes horríveis e ríspidas na tela.</p>
<p><img class="aligncenter size-full wp-image-723" title="Netbeans" src="http://marcelorodrigo.com/wp-content/uploads/2011/03/netbeans.png" alt="Netbeans" width="472" height="211" /></p>
<p>Este fato parece ser um problema básico que ocorre em todas as aplicações <strong>Java</strong>. De qualquer forma, aqui está a solução para o NetBeans (pra outras aplicações não sei se posso ajudar):</p>
<p>No diretório de instalação do NetBeans há um arquivo netbeans.conf, procure e abra ele pra edição pois nele vamos achar uma linha começando com <code>netbeans_default_options="</code> &#8230;</p>
<p>Dentro das aspas, adicionar estas opções no final da linha:</p>
<blockquote><p><code>-J-Dswing.aatext=TRUE -J-Dawt.useSystemAAFontSettings=on</code></p></blockquote>
<p>Salve o arquivo, reinicie o NetBeans, e você deve ter bom fontes suavizadas. Eu sugiro usar uma fonte monoespaçada agradável como <em>Droid Sans Mono</em> ou mesmo a <em>Monaco</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/fontes-suavizadas-no-netbeans.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trocando mod_php por mod_suphp no Apache</title>
		<link>http://marcelorodrigo.com/trocando-mod_php-por-mod_suphp-no-apache.html</link>
		<comments>http://marcelorodrigo.com/trocando-mod_php-por-mod_suphp-no-apache.html#comments</comments>
		<pubDate>Fri, 31 Dec 2010 09:50:33 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ubuntu / Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_php]]></category>
		<category><![CDATA[mod_suphp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[suphp]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=648</guid>
		<description><![CDATA[Atualmente mod_php e mod_suphp são as ferramentas mais populares para executar scripts PHP em um servidor Apache. Por padrão muitas distribuições usam como padrão em seus repositórios o mod_php e eventualmente você pode querer trocar pelo mod_suphp. Como o suexec &#8230; <a href="http://marcelorodrigo.com/trocando-mod_php-por-mod_suphp-no-apache.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Atualmente <strong>mod_php</strong> e <strong>mod_suphp</strong> são as ferramentas mais populares para executar scripts <em>PHP</em> em um servidor <strong>Apache</strong>. Por padrão muitas distribuições usam como padrão em seus repositórios o mod_php e eventualmente você pode querer trocar pelo mod_suphp.</p>
<p>Como o <em>suexec</em> do Apache, suPHP é uma solução que permite que o PHP seja executado como o usuário e grupo ao qual pertence um determinado site em um servidor de hospedagem compartilhada. Isso garante uma maior segurança pois o suPHP somente executará scripts que o próprio usuário seja owner e que somente ele tenha acesso. Um caso comum são com scripts usando permissões 777 que não serão executados e retornarão erro 500 no processamento.</p>
<p>O suPHP consiste em dois componentes:</p>
<ol>
<li>mod_suphp, um módulo do Apache, que substitui mod_php</li>
<li>suPHP, um binário setuid que substitui Apache suexec</li>
</ol>
<p>A grande dica é que o suPHP somente roda se você estiver usando php-cgi no seu servidor. Isso evitará algumas mensagens de erro quando você estiver instalado o mod_suphp no seu Apache.</p>
<div id="attachment_684" class="wp-caption aligncenter" style="width: 417px"><img class="size-full wp-image-684 " title="suPHP x modPHP" src="http://marcelorodrigo.com/wp-content/uploads/2010/12/advice_suPHP_fail.jpg" alt="suPHP x modPHP" width="407" height="405" /><p class="wp-caption-text">suPHP x modPHP</p></div>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/trocando-mod_php-por-mod_suphp-no-apache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meu ambiente de desenvolvimento em 7 itens</title>
		<link>http://marcelorodrigo.com/meu-ambiente-desenvolvimento-em-7-itens.html</link>
		<comments>http://marcelorodrigo.com/meu-ambiente-desenvolvimento-em-7-itens.html#comments</comments>
		<pubDate>Sun, 26 Dec 2010 16:53:41 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[evernote]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[pomodoro]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=657</guid>
		<description><![CDATA[Algumas semanas pra cá está rolando um meme na internet, onde fui convidado pelo @silasribas a postar no meu blog como é o meu ambiente de desenvolvimento: 1) Mac OSX: Desde a phpSCConf deste ano eu estou utilizando um Macbook &#8230; <a href="http://marcelorodrigo.com/meu-ambiente-desenvolvimento-em-7-itens.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Algumas semanas pra cá está rolando um <em>meme</em> na internet, onde fui convidado pelo <a href="http://silas.theducks.com.br/2010/12/26/meu-ambiente-de-trabalho-em-7-itens/" target="_blank">@silasribas</a> a postar no meu blog como é o <strong>meu ambiente de desenvolvimento</strong>:</p>
<p><strong>1) Mac OSX</strong>: Desde a <strong>phpSCConf</strong> deste ano eu estou utilizando um <em>Macbook Pro 13</em> para desenvolver. Para quem veio do Ubuntu foi uma migração tranquila e suave, e que por mim não precisa ter via de retorno: tenho um Unix por trás, estabilidade, uma interface bonita e nunca mais precisei ficar me preocupando quanto tenho de memória livre ou se a luz do HD estava direto acesa, recomendo!</p>
<div id="attachment_672" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-672" title="Macbook Pro 13" src="http://marcelorodrigo.com/wp-content/uploads/2010/12/macbook_pro_13.jpg" alt="Macbook Pro 13" width="500" height="375" /><p class="wp-caption-text">Macbook Pro 13</p></div>
<p><strong>2) Netbeans e Textmate:</strong> Nunca fui xiita com nenhuma <em>IDE</em> ou editor. Mas sempre que via uma opção melhor passava a utilizar ela. Gosto muito de usar o Netbeans pelo <em>folding</em> que ele faz no código, pelo <em>autocomplete</em> e pela integração com o phpUnit. E o Textmate? Gosto de usar para escrever HTML e Python, afinal quem consegue viver sem seus <em>bundles</em>? Awesome :)</p>
<p><strong>3) </strong><strong>Kohana</strong>: Usei por um ano o Codeigniter e fiquei maravilhado com sua facilidade e agilidade no desenvolvimento. Desde o primeiro fork do <strong>Kohana</strong> (quando era nomeado <em>Blue Flame</em>) venho usando ele e não abro mão da sua estabilidade, leveza e agilidade no desenvolvimento em <strong>PHP</strong>.</p>
<p><strong>4) Git:</strong> Ainda uso <strong>SVN</strong> para projetos que mantenho, mas para novos venho dando preferência ao Git. Adoro o mágica que ele faz no <em>merge</em> mesmo quando membros da equipe trabalham no mesmo arquivo por dias. Como ferramenta GUI uso o smartGit.</p>
<p><strong>5) Terminal</strong>: Alguns amigos gostam de me zoar que sou preguiçoso e prefiro GUI para algumas tarefas chatinhas, mas continuo gostando do Terminal. Nada substitui aquela sensação de que você está no controle do que vai ser executado.</p>
<p><strong>6) Evernote:</strong> Guardo todo meu <em>to do</em> e <em>task list</em> nele. Consigo ter acesso web sem instalar, no Windows, no Mac e no Ubuntu. Se estou navegando e preciso guardar uma URL ou texto, se estou em uma tela e preciso guardar um print screen ele me ajuda, perfeito e gratuito.</p>
<p><strong>7) Pomodoro:</strong> A <em>Pomodoro Technique</em> me devolveu aquela sensação de tarefa concluída em refatorar uma tarefa de 2 dias em várias micro tarefas de 30 minutos. Descanso nos breaks devidamente e nos próximos 25 minutos o trabalho volta a render. No Mac uso uma aplicação chamada Pomodoro mesmo, que se integra perfeitamente ao SO. Em outros ambientes uso o Focus Booster.</p>
<p>A melhor parte vem agora, convidar outras pessoas a participar do meme:</p>
<ul>
<li><a href="http://beto.euqueroserummacaco.com/blog/" target="_blank">Luiz Alberto</a></li>
<li><a href="http://luizclaudiomoreira.com/" target="_blank">Luiz Claudio</a></li>
<li><a href="http://www.xalexandre.com.br/" target="_blank">Alexandre Brodt</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/meu-ambiente-desenvolvimento-em-7-itens.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar PostgreSQL para acesso externo</title>
		<link>http://marcelorodrigo.com/configurar-postgresql-acesso-externo.html</link>
		<comments>http://marcelorodrigo.com/configurar-postgresql-acesso-externo.html#comments</comments>
		<pubDate>Mon, 01 Nov 2010 03:12:09 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ubuntu / Linux]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=624</guid>
		<description><![CDATA[Mini tutorial de como instalar e configurar o PostgreSQL para acesso externo: Instalar o PostgreSQL Definindo senha do usuário Postgres Acesso Externo Para habilitar o acesso externo a todos os bancos de dados da sua instalação do PostgreSQL, insira a &#8230; <a href="http://marcelorodrigo.com/configurar-postgresql-acesso-externo.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mini tutorial de como instalar e configurar o <strong>PostgreSQL</strong> para <strong>acesso externo</strong>:</p>
<h3>Instalar o PostgreSQL</h3>
<pre class="brush: plain; title: ; notranslate">$ sudo apt-get install postgresql</pre>
<h3>Definindo senha do usuário Postgres</h3>
<pre class="brush: plain; title: ; notranslate">$ sudo su
# passwd postgres</pre>
<p><img class="aligncenter size-full wp-image-638" title="PostgreSQL" src="http://marcelorodrigo.com/wp-content/uploads/2010/10/PostgreSQL.jpg" alt="PostgreSQL" width="220" height="170" /></p>
<h3>Acesso Externo</h3>
<p>Para habilitar o <strong>acesso externo</strong> a todos os bancos de dados da sua instalação do <strong>PostgreSQL</strong>, insira a linha abaixo no final do arquivo<br />
<em>/etc/postgresql/8.4/main/pg_hba.conf</em></p>
<pre class="brush: plain; title: ; notranslate">host   all   all   0.0.0.0/0   trust</pre>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/configurar-postgresql-acesso-externo.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configurando o XDebug no MAMP</title>
		<link>http://marcelorodrigo.com/configurando-o-xdebug-no-mamp.html</link>
		<comments>http://marcelorodrigo.com/configurando-o-xdebug-no-mamp.html#comments</comments>
		<pubDate>Sun, 26 Sep 2010 19:47:10 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=607</guid>
		<description><![CDATA[Para quem usa Mac como plataforma de desenvolvimento, o pacote MAMP (Mac + Apache + mySQL + PHP) é uma ferramenta que vale seu preço, além de ter uma versão gratuita disponível. Eventualmente precisei configurar o Xdebug no MAMP e &#8230; <a href="http://marcelorodrigo.com/configurando-o-xdebug-no-mamp.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para quem usa Mac como plataforma de desenvolvimento, o pacote <strong>MAMP</strong> (Mac + Apache + mySQL + PHP) é uma ferramenta que vale seu preço, além de ter uma versão gratuita disponível.</p>
<p>Eventualmente precisei configurar o <strong>Xdebug</strong> no MAMP e apesar de sempre usar o php.ini que fica disponível em <em>Aplicativos/MAMP/conf/php5.3/php.ini</em> toda vez que reiniciava o MAMP ele sobrescrevia meu arquivo de configuração, sem o xdebug ativado.</p>
<div id="attachment_612" class="wp-caption aligncenter" style="width: 310px"><a href="http://marcelorodrigo.com/wp-content/uploads/2010/09/Captura-de-tela-2010-09-26-às-16.40.49.png"><img class="size-medium wp-image-612" title="MAMP Pro" src="http://marcelorodrigo.com/wp-content/uploads/2010/09/Captura-de-tela-2010-09-26-às-16.40.49-300x268.png" alt="MAMP Pro" width="300" height="268" /></a><p class="wp-caption-text">MAMP Pro</p></div>
<p>Tudo ficou mais fácil quando eu abri o MAMP Pro e fui no menu <em>File &gt; Edit Template</em> e localizei o arquivo ini do php 5.3 para descomentar a seguinte linha:</p>
<p><code>zend_extension="/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"</code></p>
<p>Em resumo, o MAMP Pro usa um sistema de templates que permite que você use um template padrão (que usamos para alterar acima) e o restante você altera via GUI.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/configurando-o-xdebug-no-mamp.html/feed</wfw:commentRss>
		<slash:comments>7</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>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>Netbeans + Tema Twilight + Fonte Monaco</title>
		<link>http://marcelorodrigo.com/netbeans-tema-twilight-fonte-monaco-ttf.html</link>
		<comments>http://marcelorodrigo.com/netbeans-tema-twilight-fonte-monaco-ttf.html#comments</comments>
		<pubDate>Sun, 02 May 2010 18:15:40 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ubuntu / Linux]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[ttf]]></category>
		<category><![CDATA[twilight]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=449</guid>
		<description><![CDATA[Programar é uma coisa que exige do programador bom conhecimento na linguagem que ele programa. Chega um momento que as coisas começam a se tornar repetitivas e você adota um framework (ou não!) para deixar que tudo o que for &#8230; <a href="http://marcelorodrigo.com/netbeans-tema-twilight-fonte-monaco-ttf.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Programar é uma coisa que exige do programador bom conhecimento na linguagem que ele programa. Chega um momento que as coisas começam a se tornar repetitivas e você adota um framework (ou não!) para deixar que tudo o que for chato e repetitivo seja feito por ele. Tudo vai bem até que outro momento você pensa em otimizar melhor ainda seu trabalho (ou o seu ambiente de programação) e decide repensar melhor o editor/IDE que usa para programar.</p>
<p>Todo mero mortal programador vai passar por isso, se você está lendo este texto com certeza está ou já esteve próximo esse pensamento. Poupando melhor o seu tempo, ano passado passei por este mesmo período e fiz o dever de casa avaliando inúmeros editores de uso livre/gratuito para minha plataforma de trabalho e &#8230; minha escolha caiu sobre o <strong>NetBeans</strong>.</p>
<p style="text-align: center;"><a title="Rails Code" href="http://www.flickr.com/photos/22290083@N06/2157396025/" target="_blank"><img class="aligncenter" src="http://farm3.static.flickr.com/2375/2157396025_5a492ec362.jpg" border="0" alt="Rails Code" /></a><br />
<small><a title="Attribution-NonCommercial-ShareAlike License" href="http://creativecommons.org/licenses/by-nc-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="davestfu" href="http://www.flickr.com/photos/22290083@N06/2157396025/" target="_blank">davestfu</a></small></p>
<p>Se você esperava um post te convencendo a usar o NetBeans, se deu mal. Sim, ele tem suporte a edição de CSS, geração quase automática de testes unitários, documentação baseada no phpDocumentor, projetos remotos, refatoração de código, trabalho em equipe com SVN/CVS, autocomplete de funções e variáveis e muitos outros inúmeros recursos.</p>
<div id="attachment_462" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-462" title="Netbeans com Tema Twilight e Fonte Monaco" src="http://marcelorodrigo.com/wp-content/uploads/2010/05/netbeans-twilight.png" alt="" width="600" height="199" /><p class="wp-caption-text">Netbeans com Tema Twilight e Fonte Monaco</p></div>
<p style="text-align: center;">
<p>Gosto muito de usar o NetBeans com uma fonte que vem no Mac, chamada Monaco e o tema Twilight. Porém sempre encontro problemas ao habilitar diversas versões desta fonte por ela não ser Unicode e por ai vai. Neste cenário, eu escrevi este post para ter guardado para o futuro meu setup pessoal para o NetBeans:</p>
<ol>
<li>Instalar o <a title="Download NetBeans" href="http://netbeans.org/downloads/" target="_blank">NetBeans</a> (eu instalo somente a versão PHP no meu Ubuntu)</li>
<li>Instalar o tema <a href="http://dl.dropbox.com/u/31531/marcelorodrigo.com/Netbeans_Twilight_Theme.zip" target="_blank">Twilight for NetBeans</a> (inspirado no disponível para textmate)
<ul>
<li><em>Ferramentas » Opções » Importar</em></li>
</ul>
</li>
<li>Instalar a fonte <a href="http://dl.dropbox.com/u/31531/marcelorodrigo.com/Monaco-convertida.ttf" target="_blank">Monaco Unicode em TTF</a> no Ubuntu
<ul>
<li>Copiar para <em>~/.fonts</em></li>
<li>Executar <em>fc-cache -fv</em></li>
</ul>
</li>
<li>Configurar o NetBeans para usar a fonte Monaco
<ul>
<li><em>Ferramentas  Opções » Fontes &amp; Cores  Sintaxe » Categoria » Padrão</em></li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/netbeans-tema-twilight-fonte-monaco-ttf.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Técnica Pomodoro: foco e produtividade sem procrastinação</title>
		<link>http://marcelorodrigo.com/tecnica-pomodoro-foco-e-produtividade-sem-procrastinacao.html</link>
		<comments>http://marcelorodrigo.com/tecnica-pomodoro-foco-e-produtividade-sem-procrastinacao.html#comments</comments>
		<pubDate>Fri, 30 Apr 2010 18:42:43 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[foco]]></category>
		<category><![CDATA[organização]]></category>
		<category><![CDATA[pomodoro]]></category>
		<category><![CDATA[procrastinação]]></category>
		<category><![CDATA[procrastinar]]></category>
		<category><![CDATA[produtividade]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=429</guid>
		<description><![CDATA[Se eu falar que a partir de hoje você vai produzir o dobro que produz, trabalhando com períodos de 25 minutos e descansando 5 minutos entre eles, você acredita? Espere, e se eu acrescentar que a cada 4 períodos completados &#8230; <a href="http://marcelorodrigo.com/tecnica-pomodoro-foco-e-produtividade-sem-procrastinacao.html">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Se eu falar que a partir de hoje você vai produzir o dobro que produz, trabalhando com períodos de 25 minutos e descansando 5 minutos entre eles, você acredita? Espere, e se eu acrescentar que a cada 4 períodos completados você pode descansar um período também de 25 minutos?</p>
<p>Estranho não?<br />
Mas basicamente é isso que a <strong>Pomodoro Technique</strong> ensina.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-446" style="margin-top: 6px; margin-bottom: 6px;" title="pomodoro-marcelorodrigo" src="http://marcelorodrigo.com/wp-content/uploads/2010/04/pomodoro-marcelorodrigo.jpg" alt="Pomodoro" width="580" height="160" /></p>
<h3>Facilidade</h3>
<p>Por tempos todos procuramos soluções eficazes para melhorar nossa produtividade, todas elas muito complexas, difíceis de colocar em prática e que no fim acabavam só virando siglas para a nossa sopa de letrinhas.</p>
<p>Há aproximadamente 45 dias venho usando a técnica Pomodoro diariamente quando estou desenvolvendo, e acabei me surpreendendo com a quantidade de pomodoros que são concluídas x interrupções.</p>
<h3>Como Funciona?</h3>
<ul>
<li>No início do dia, reserve 1 pomodoro (25 minutos, lembra?) para organizar seu dia. Parece bobeira <em><span style="text-decoration: line-through;">eu pensei isso</span></em> mas depois você vê que faz muito sentido.</li>
<li>Trabalhe focado por 25 minutos em uma mesma tarefa sem interrupções. Eu falei sem interrupções?</li>
<li>Finalizando seu pomodoro, vá curtir um intervalo de cinco  minutos (Twitter? Yeah!)</li>
<li>Ao final de 4 pomodoros, faça um intervalo mais longo porque ninguém é de ferro. Eu levo isso a sério e uso 1 pomodoro pra descansar (sem interrupções, yeah!)</li>
</ul>
<p style="text-align: center;"><a title="Tomato sauce" href="http://www.flickr.com/photos/29635150@N00/563603670/" target="_blank"><img class="aligncenter" src="http://farm2.static.flickr.com/1149/563603670_ff35abd4b0.jpg" border="0" alt="Tomato sauce" /></a><br />
<small><a title="Attribution-NonCommercial-ShareAlike License" href="http://creativecommons.org/licenses/by-nc-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="funadium" href="http://www.flickr.com/photos/29635150@N00/563603670/" target="_blank">funadium</a></small></p>
<p>Você precisa de:</p>
<ul>
<li> papel</li>
<li>caneta</li>
<li>algo que marque o tempo</li>
</ul>
<p>A cada pomodoro,<strong> marque um X</strong> ao lado da  tarefa. Muita gente fala em timer de cozinha pra controlar o tempo. Eu gosto de usar o <a href="http://focusboosterapp.com">FocusBooster</a></p>
<h3>Interrupções</h3>
<p>A cada interrupção, anote a tarefa/urgência em questão, e coloque-a numa  lista chamada URGENTES NÃO PLANEJADOS.<br />
Faça um pomodoro com  TODAS estas tarefas, assim que possível, e resolva suas pendências, uma a  uma.</p>
<h3>Vantagens</h3>
<p>Sensação de dever cumprido e um domínio sobre uma coisa difícil de manusear: O SEU TEMPO. Sua percepção sobre o tempo gasto e tempo disponível vai mudar completamente do que você tenha hoje em mente.</p>
<h3>Desvantagens</h3>
<p>Nem todos são adeptos desta técnica, e muitos dias você verá que teve o tripo de interrupções dos pomodoros completados. Invariavelmente você vai trocar o termo &#8220;horas&#8221; por &#8220;pomodoros&#8221; para qualquer atividade que irá calcular tempo necessário.</p>
<h3>Conclusão</h3>
<p>Enfim &#8230; é uma técnica maravilhosa que é fácil de colocar em prática e que no mesmo dia vai te mostrar que é possível ser produtivo em ciclos de 25 minutos, com a sensação de dever cumprido.</p>
<p>No <a href="http://www.pomodorotechnique.com/" target="_blank">site oficial</a> tem materiais disponíveis, como o <a href="http://www.pomodorotechnique.com/resources/cirillo/ThePomodoroTechnique_v1-3.pdf" target="_blank">livro oficial</a>, folha de <a href="http://www.pomodorotechnique.com/downloads/pomodoro_todo.pdf" target="_blank">TODO</a> e o meu preferido <a href="http://www.pomodorotechnique.com/downloads/pomodoro_cheat_sheet.pdf" target="_blank">Cheat Sheet</a>.</p>
<p><em>Ps: Esse post foi escrito num Pomodoro de descanso, agora me dê licença que eu quero completar mais pomodoros :)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/tecnica-pomodoro-foco-e-produtividade-sem-procrastinacao.html/feed</wfw:commentRss>
		<slash:comments>4</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>
	</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 4/43 queries in 0.021 seconds using disk: basic
Object Caching 1005/1163 objects using disk: basic

Served from: marcelorodrigo.com @ 2012-02-05 13:03:45 -->
