<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>PHP-Maranhão</title>
	<atom:link href="http://phpmaranhao.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpmaranhao.com</link>
	<description>Desenvolvedores PHP do Maranhão</description>
	<lastBuildDate>Thu, 22 Dec 2011 11:44:49 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='phpmaranhao.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/89ee32fa73b54088da66dff08443ad71?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>PHP-Maranhão</title>
		<link>http://phpmaranhao.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://phpmaranhao.com/osd.xml" title="PHP-Maranhão" />
	<atom:link rel='hub' href='http://phpmaranhao.com/?pushpress=hub'/>
		<item>
		<title>Utilizando Annotations com PHP</title>
		<link>http://phpmaranhao.com/2011/12/17/utilizando-annotations-com-php/</link>
		<comments>http://phpmaranhao.com/2011/12/17/utilizando-annotations-com-php/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 15:46:12 +0000</pubDate>
		<dc:creator>Collapse</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[php annotations]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=365</guid>
		<description><![CDATA[Você sabe o que são anotações? Se você ainda não ouviu falar de annotations não sabe o que está perdendo. Para quem não sabe ainda, anotações são etiquetas com informações relevantes dentro de um bloco de comentário no qual você escreve metadados sobre alguma classe, método ou mesmo atributos de classe para que se possa, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=365&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Você sabe o que são anotações? Se você ainda não ouviu falar de annotations não sabe o que está perdendo.<br />
Para quem não sabe ainda, anotações são etiquetas com informações relevantes dentro de um bloco de comentário no qual você escreve metadados sobre alguma classe, método ou mesmo atributos de classe para que se possa, em tempo de execução resgatar esses metadados e trabalhá-los de acordo com a sua necessidade.<br />
Eu testei o Addendum, uma biblioteca que estende a ReflectionClass e que funciona muito bem, para quem deseja anotar ao estilo dela. Porém, como eu teria que estender a classe Addendum e ainda teria que modificar seu namespace, isso não seria viável para mim.<br />
A solução para isso? Brincar um pouquinho com expressões regulares e a família de classes Reflection do PHP para resolver o meu problema.</p>
<h4>Pensando nas expressões regulares</h4>
<p>Se você já leu uma classe documentada no padrão PHPDoc ou JavaDoc já viu que existe um padrão de criação desses comentários. Eles, na maioria das IDEs, são reconhecidos e para alguns até servem de artifício para que o code insight funcione, buscando essas informações de comentários, negritando nomes ou tipos de variáveis e essas coisas.<br />
Um dos casos mais legais para servir de exemplo seria o caso de um ORM (Object-Relation Mapping). Há pouco tempo, eu e mais dois amigos concordamos em tocar um projeto de um ORM juntos. Esse ORM baseava-se na sintaxe do django e ao documentarmos pareceu um desafio bem legal. Pensamos nas anotações e tudo mais para que pudéssemos dividir as tarefas e uma delas era de criar classes baseadas nos tipos de dados que queríamos para que elas fossem instanciadas nos atributos das classes.<br />
Ao abrir o código de uma classe e vermos a sua documentação, nós podemos ver tags como @author, @since, @version etc. As anotações tem o mesmo padrão, com a diferença que podem ser personalizadas de acordo com a necessidade. No caso de um ORM a primeira que podemos falar seria algo como @table. Essa tag, claramente, nos informaria qual a tabela do banco seria a fonte de dados para essa classe. Veja um pequeno exemplo:</p>
<pre style="font-size:12px;">&lt;?
namespace Teste;

/**
* Classe que manipula a tabela de pessoas
* @author Evaldo Barbosa
* @table=tb_pessoa
*/
class Pessoa {
	private $id;
	private $nome;
}
?&gt;</pre>
<p>Veja, como falado acima, temos tags que são padrão (como @author). Nesse nosso caso escrevemos a tag @table para informar qual a tabela seria a fonte dos dados. Outras sintaxes, principalmente quando formos anotar dados sobre atributos será mostrados, pois podem necessitar de atributos multivalorados.<br />
Veja abaixo como podemos anotar os dois atributos (id e nome) da classe Pessoa mostrada acima:</p>
<pre style="font-size:12px;">&lt;?
namespace Teste;

/**
* Classe que manipula a tabela de pessoas
* @author Evaldo Barbosa
* @table=tb_pessoa
*/
class Pessoa {
	/**
	* @column(type=serial,sequence=tb_pessoa_id_seq);
	*/
	private $id;
	/**
	* @column(type=string,notnull=true,size=80);
	*/
	private $nome;
}
?&gt;</pre>
<p>Veja que a tag @column pode ter seu valor type é diferente para cada atributo. Um type serial é para um campo serial, ou seja, uma sequence. No caso do mysql isso é conhecido como auto_increment. O outro tipo (type), string, tem outros atributos como notnull (campo não nulo) e size (tamanho do campo).<br />
Com esses exemplos já podemos detectar alguns padrões de anotações e a partir dai começarmos a implementar as expressões regulares para apanhar essas anotações.</p>
<h4>Como fazer e onde testar</h4>
<p>Expressões regulares são muito comuns em todas as linguagens e no PHP não é diferente. Nas suas últimas versões aposentamos algumas funções como ereg, eregi, ereg_replace e eregi_replace. Usaremos em nossos exemplos a função <strong>preg_match_all</strong> que serve melhor para esse propósito.<br />
De acordo com o escrito na sua documentação, existente no site php.net sob o endereço &lt;a href=&#8221;http://php.net/manual/en/function.preg-match-all.php&#8221;http://php.net/manual/en/function.preg-match-all.php, vemos o seguinte:<br />
<strong>int preg_match_all ( string $pattern , string $subject [, array &amp;$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )</strong>, onde:<br />
$pattern: é a nossa expressão regular, ou seja, a string que simboliza o padrão a ser reconhecido<br />
$subject: é o texto a ser pesquisado em busca do padrão $pattern. No nosso caso será o comentário da classe ou do atributo;<br />
$matches: é uma variável do tipo array que receberá todas as ocorrências de $pattern em $subject.<br />
Se você usa linux pode baixar o kiki para realizar os testes de expressões regulares. Se não, pode usar sites do <a href="http://regexpal.com/">http://regexpal.com/</a> ou <a href="http://www.solmetra.com/scripts/regex/">http://www.solmetra.com/scripts/regex/</a> (esse último mais alinhado à nossa função preg_math_all, pois você pode escolher usar a mesma função). O kiki é, para o gnome, a sua melhor opção, nem precisa estar conectado.<br />
Sabendo disso, vamos ao próximo passo, que é criar as expressões regulares para os nossos padrões.</p>
<h4>Reconhecendo as suas anotações</h4>
<p>Temos @table e @column, ambas tags que precisaríamos no nosso para mapear essa classe, e cada uma com uma sintaxe diferente. Vejamos cada uma separadamente até encontrar cada padrão.<br />
Para a nossa anotação de tabela, temos @table=tb_pessoa, que tem o seu padrão representado por:<br />
@ + tag + = + valor.<br />
Para esse padrão a nossa expressão regular será a seguinte:<br />
<strong>@[\w]+[ ]{0,1}=[ ]{0,1}[\w]+</strong>, onde:<br />
<strong>[\w]+</strong> é a string que dá nome à tag;<br />
<strong>[ ]{0,1}</strong> é um espaço que pode ou não existir antes do =;<br />
<strong>=</strong> separa os dois termos (tag e valor)<br />
<strong>[ ]{0,1}</strong> é um espaço que pode ou não existir depois do =;<br />
<strong>[\w]+</strong> é a string que atribui valor à anotação;</p>
<p>Já para a tag de coluna nós temos um padrão um pouco diferente:<br />
@tag + ( + valor + ).<br />
E a expressão regular para isso é pode ser:<br />
<strong>@[\w]+[ ]{0,1}\([\w=, \.\-&lt;&gt;:]+</strong>, onde:<br />
<strong>[\w]+</strong> é a string que dá nome à tag;<br />
<strong>[ ]{0,1}</strong> é um espaço que pode ou não existir antes do =;<br />
<strong>\(</strong> escapa a abertura parênteses<br />
<strong>[ ]{0,1}</strong> é um espaço que pode ou não existir depois do =;<br />
<strong>[\w]+</strong> é a string que atribui valor à anotação;<br />
<strong>\(</strong> escapa o fechamento parênteses.<br />
Para separar os valores dentro dos parênteses você pode usar expressões regulares, explode ou outra função que seja necessária. No momento vamos focar somente em encontrar as tags e descobrir seus valores de forma mais bruta.<br />
Para que usemos a expressão regular tanto para @table quanto para @column, vamos uni-las com o caracter “|” que concatena as duas formando um só $pattern.<br />
A implementação em PHP disso ficaria como no bloco abaixo:</p>
<pre style="font-size:12px;">&lt;?
$tags = array();
$pattern = '/@[\w]+[ ]{0,1}=[ ]{0,1}[\w]+|@[\w]+[ ]{0,1}\([\w=, \.\-&lt;&gt;:]+/';
$subject = '/**
* Chave primária
* @type= integer
* @notnull = true
* @size=255
* @meta (atributo1=valor1, atributo2=valor2)
* @meta1 (atributo3=valor3)
*/';
preg_match_all( $pattern, $subject, $tags );
?&gt;</pre>
<h4>Como obter os comentários e extrair as anotações</h4>
<p>Em PHP usamos as classes de Reflection para obter os comentários de classes, métodos e atributos. Para um caso como o nosso devemos usar duas dessas classes: ReflectionClasse e ReflectionProperty.<br />
Extrair os comentários de uma classe é a tarefa de ReflectionClass. Ela é uma classe muito fácil de usar e só precisa de um parâmetro para que possamos começar seu uso. Vejamos:</p>
<pre style="font-size:12px;">&lt;?
$reflection = ReflectionClass('Person');
$doc = $reflection-&gt;getDocComent();
?&gt;</pre>
<p>Agora que já instanciamos ReflectionClass, podemos tranquilamente obter os comentários de seus atributos instanciando ReflectionProperty como a seguir:<br />
&lt;?<br />
$reflection = ReflectionClass(&#8216;Person&#8217;);<br />
$doc = $reflection-&gt;getDocComment();</p>
<p>$prop = ReflectionProperty($reflection,&#8217;id&#8217;);<br />
$comment_id = $prop-&gt;getDocComment();<br />
?&gt;<br />
No código acima instanciamos ReflectionProperty e a partir dai obtemos os comentários do atributo id na variável $comment_id.<br />
Nesse momento já temos a faca e o queijo na mão, ou melhor, as expressões regulares e os comentários que devem ser submetidos à função preg_match_all e nada mais nos falta.</p>
<h4>Conclusão</h4>
<p>Anotações em código são coisas muito legais de se ver. Elas organizam, informam e ainda podem servir de metadados para que possamos reaproveitar melhor nossos códigos, nos propiciando uma maior produtividade.<br />
Os códigos acima foram parte da minha base de testes para reconhecer as expressões regulares das tags mostradas acima, mas não pense que outros padrões não podem surgir. Eles, tanto para mim quanto para qualquer outro programador, podem aparecer diante de uma necessidade específica. Tome a liberdade de testar outros padrões.<br />
Eu pesquisei essa solução porque outra (Addendum) não era exatamente o que eu precisava para o momento. Mais uma vez vemos aquela máxima de que “A necessidade é a mãe da invenção”.<br />
Os códigos aqui dispostos estão em uma classe que estão disponíveis para a comunidade no endereço <a href="http://github.com/evaldobarbosa">http://github.com/evaldobarbosa</a>. Baixe, brinque, modifique, use. Não se esqueça de me informar se tiver algum outro padrão interessante.<br />
Se solução for interessante e você quiser falar mais sobre, estou no <a href="twitter.com/evaldobarbosa">@evaldobarbosa</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/365/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=365&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/12/17/utilizando-annotations-com-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Collapse</media:title>
		</media:content>
	</item>
		<item>
		<title>Débito técnico em TI, ou: O que custa mais caro&#8230;</title>
		<link>http://phpmaranhao.com/2011/12/17/debito-tecnico-em-ti-ou-o-que-custa-mais-caro/</link>
		<comments>http://phpmaranhao.com/2011/12/17/debito-tecnico-em-ti-ou-o-que-custa-mais-caro/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 15:43:08 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[cobol]]></category>
		<category><![CDATA[custo]]></category>
		<category><![CDATA[débito técnico]]></category>
		<category><![CDATA[erros]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=378</guid>
		<description><![CDATA[O que custa mais: corrigir falhas em apliçações Java ou Cobol? Leia direto da fonte: http://computerworld.uol.com.br/gestao/2011/12/12/o-que-custa-mais-corrigir-falhas-em-aplicacoes-java-ou-cobol/ Por PATRICK THIBODEAU, DA COMPUTERWORLD (EUA) Análise global revela número crescente de erros no desenvolvimento de software por causa da metodologia adotada, aumentando o chamado débito técnico da TI. Aumenta a quantidade de software mal projetado no mercado mundial, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=378&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>O que custa mais: corrigir falhas em apliçações Java ou Cobol?</h1>
<p>Leia direto da fonte: <a href="http://computerworld.uol.com.br/gestao/2011/12/12/o-que-custa-mais-corrigir-falhas-em-aplicacoes-java-ou-cobol/">http://computerworld.uol.com.br/gestao/2011/12/12/o-que-custa-mais-corrigir-falhas-em-aplicacoes-java-ou-cobol/</a></p>
<p>Por PATRICK THIBODEAU, DA COMPUTERWORLD (EUA)</p>
<p>Análise global revela número crescente de erros no desenvolvimento de software por causa da metodologia adotada, aumentando o chamado débito técnico da TI.</p>
<p>Aumenta a quantidade de software mal projetado no mercado mundial, criando uma série de riscos para as organizações, revela relatório global que analisou 745 aplicações. Esses produtos apresentam problemas de programação que violam as boas práticas de arquitetura e de codificação, contribuindo para elevar o chamado débito técnico, que vem ganhando ampla atenção no mundo corporativo.</p>
<p>O termo débito técnico está sendo utilizado pelo mercado para definir a dívida que as equipes de desenvolvimento assumem quando escolhem uma metodologia mais fácil e rápida para criação de aplicativos. Esse tipo de abordagem pode comprometer a qualidade do software e trazer impacto para as companhias no longo prazo.</p>
<p>Os especialistas dizem que assim como o saldo negativo em banco exige pagamento com cobrança de juros, a dívida técnica também pode ter custo alto para as corporações. Uma hora ela precisa ser quitada com a correção das linhas dos códigos escritos errados.</p>
<p>A pesquisa das 745 aplicações foi realizada pela Cast Software, desenvolvedora de ferramentas que avalia a solidez de engenharia da arquitetura e codificação de um aplicativo. A empresa analisou programas de 160 companhias de aproximadamente 12 segmentos da economia.</p>
<p>Uma das conclusões do estudo é que o desenvolvimento de programas com códigos de má qualidade é muitas vezes resutado das decisões de negócios de cortar custos. Para reduzir os investimentos dos projetos, as companhias acabam contratando programadores sem muita habilidade.</p>
<p>Outro fator é a pressão em cima da equipe para que as aplicações sejam desenvolvidas rapidamente para cumprir o cronograma dos projetos. O reflexo são programas que causam falhas de sistemas, diminuem o desempenho dos computadores e abrem brecha de <a title="segurança" href="http://www.robertodiasduarte.com.br/category/tecnologia/seguranca/">segurança</a> para ataques, entre outros problemas.</p>
<p>Reparar as linhas de código depois que o software está pronto, além de custar muito causa problemas técnicos. Um exemplo histórico de débito técnico foi o “Bug de 2000”, quando muitas aplicações estavam prontas para interpretar os dígitos “00” na virada daquele ano como 1900.</p>
<p>Organizações em todo o mundo gastaram somas incalculáveis de dinheiro para corrigir os dois dígitos. Muitas das aplicações foram destruídas porque desenvolvedores sabiam que o erro surgiria eventualmente.</p>
<p>Custo da correção</p>
<p>A análise da Cast encontrou 1,8 mil tipos de falhas de desenvolvimento em aplicações escritas em Java EE, Cobol, .Net, C, C + + e outras linguagens de programação. A companhia estima que o custo médio para eliminar os bugs por linha de código é de 3,61 dólares. Esse cálculo se baseia no preço hora de 75 dólares cobrado nos Estados Unidos para correção de erros de software.</p>
<p>Outra constatação da pesquisa da Cast é que corrigir falhas de aplicativos desenvolvidos em Java custa mais. O preço para eliminar bugs desta tecnologia é de 5,42 doláres por linha de código, enquanto o mesmo trabalho na plataforma Cobol sai por 1,26 dólares.</p>
<p>Bill Curtis, cientista-chefe da Cast, explica que corrigir linhas de código de Cobol custa menos porque a linguagem é mais antiga e os programadores são mais experientes. Por estarem atuando há mais de 30 anos com nessa tecnologia, eles conseguem corrigir falhas críticas mais rapidamente.</p>
<p>Sobre Java, Curtis constata que há muitos profissionais iniciando agora o desenvolvimento nesta linguagem sem formação científica em computação. “Tem uma enorme quantidade de pessoas escrevendo código sem ser guru em engenharia de software”, percebe o executivo.</p>
<p>Implicações do débito técnico</p>
<p>O estudo da Cast reforça a necessidade de as companhia entenderem as implicações do débito técnico, informa Carolyn Seaman, professora adjunta de sistemas de informação da Universidade de Maryland, em Baltimore (EUA), e coordenadora de um programa da National Science Foundation sobre esse tema. De acordo com ela, o tema gera preocupação devido ao risco que pode trazer para os negócios.</p>
<p>O instituto de pesquisas Gartner estima que o débito técnico no mercado mundial subirá de 500 bilhões de dólares em 2010 para um trilhão de dólares em poucos anos. Para Carolyn diminuir essa dívida não é tarefa fácil. Ela considera que o maior obstáculo é a incerteza sobre adoção de técnicas de desenvolvimento e abordagens que realmente resultam em maior qualidade de software.</p>
<p>O crescimento do débito técnico está estimulando a criação de um guia de riscos para os negócio informa John Heintz, consultor técnico da Cutter Consortium. Ele diz que esse problema já está sendo tratado como uma questão de due diligence em fusões e aquisições, aumentando a consciência de que o tema está influenciando as práticas de desenvolvimento de software.</p>
<p>Na opinião de Heintz colocar mais atenção sobre o débito técnico não significa que os desenvolvedores não tenham de diminuir gastos para acelerar o desenvolvimento. “Às vezes é apropriado e necessário cortar custos, mas esse fato não pode ser ignorado”, disse ele.</p>
<p>O Software Engineering Institute (SEI) da Universidade Carnegie Mellon, centro de pesquisa financiados pelo pelo Departamento de Defesa dos EUA, está trabalhando a questão do débito técnicos há cerca de dois anos. A instituiçao vem organizando workshops sobre o tema, de acordo com Ipek Ozkaya, membro sênior da equipe técnica.</p>
<p>“Existe interesse crescente neste assunto porque empresas e desenvolvedores querem entender seus fundamentos”, afirma Ozkaya. Ele observa a falta de orientação sobre como fazer o levantamento dessa dívida e como quitá-la para evitar implicações futuras.</p>
<p>Visto em: <a href="http://www.robertodiasduarte.com.br/o-que-custa-mais-corrigir-falhas-em-aplicacoes-java-ou-cobol/">http://www.robertodiasduarte.com.br/o-que-custa-mais-corrigir-falhas-em-aplicacoes-java-ou-cobol/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/378/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=378&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/12/17/debito-tecnico-em-ti-ou-o-que-custa-mais-caro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>
	</item>
		<item>
		<title>Enviando dados JSON usando cURL</title>
		<link>http://phpmaranhao.com/2011/11/22/enviando-dados-json-usando-curl/</link>
		<comments>http://phpmaranhao.com/2011/11/22/enviando-dados-json-usando-curl/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:54:34 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[webservice]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=356</guid>
		<description><![CDATA[Leia direto da fonte: http://www.lornajane.net/posts/2011/posting-json-data-with-php-curl Me perguntaram outro dia: como enviar uma requisição POST usando PHP com dados JSON corretamente formatados? Recorri aos slides do meu tutorial de web services para a resposta, e pensei em colocar aqui com algumas explicações. Afinal, publicar seus slides é algo bom, mas sem o tutorial de fato, acho que eles raramente [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=356&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Leia direto da fonte: <a href="http://www.lornajane.net/posts/2011/posting-json-data-with-php-curl">http://www.lornajane.net/posts/2011/posting-json-data-with-php-curl</a></p>
<p>Me perguntaram outro dia: como enviar uma requisição POST usando PHP com dados JSON corretamente formatados? Recorri aos <a href="http://www.slideshare.net/lornajane/web-services-9591728">slides do meu tutorial de web services</a> para a resposta, e pensei em colocar aqui com algumas explicações. Afinal, publicar seus slides é algo bom, mas sem o tutorial de fato, acho que eles raramente são úteis.</p>
<p>Não podemos enviar campos POST, porque queremos enviar JSON, e não simular um formulário (o mérito de uma API que aceita requisições POST com dados em formato de formulário é um debate interessante). Ao invés disto, nós criamos o JSON, o definimos como corpo da requisição POST e definimos os cabeçalhos corretamente para que o servidor que receba a requisição possa entender o que enviamos.</p>
<div>
<div>
<pre>$data = array("name" =&gt; "Hagrid", "age" =&gt; "36");
$data_string = json_encode($data);                                                                                   

$ch = curl_init('http://api.local/rest/users');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);                                                                                                                   

$result = curl_exec($ch);</pre>
</div>
</div>
<p>Todas estas definições estão bem explicadas na página <a href="http://uk3.php.net/manual/en/function.curl-setopt.php">curl_setopt()</a>, mas basicamente a idéia é definir a requisição para que seja um POST, fazer com que os dados codificados em JSON sejam o corpo da requisição e definir os cabeçalhos corretos para descrever o corpo da requisição. O <code>CURLOPT_RETURNTRANSFER</code> é puramente para que a resposta do servidor remoto seja colocada em <code>$result</code>, ao invés de &#8220;ecoado&#8221;. Se você precisa enviar dados JSON com PHP, espero que isto ajude!</p>
<p>Autoria: lornajane@lornajane.net, @lornajane</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/356/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/356/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=356&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/11/22/enviando-dados-json-usando-curl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>
	</item>
		<item>
		<title>Silex. Um micro-framework PHP apoiado sobre os ombros de gigantes</title>
		<link>http://phpmaranhao.com/2011/11/22/silex-um-micro-framework-php-apoiado-sobre-os-ombros-de-gigantes/</link>
		<comments>http://phpmaranhao.com/2011/11/22/silex-um-micro-framework-php-apoiado-sobre-os-ombros-de-gigantes/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:54:00 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[micro-framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[silex]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=354</guid>
		<description><![CDATA[Leia direto da fonte: http://silex.sensiolabs.org/ Silex é um micro-framework PHP para a versão 5.3. Ele é construído sobre os ombros do Symfony2 e Pimple e também inspirado pelo sinatra. Um micro-framework provê a coragem para construir aplicativos em um arquivo. Silex foca em ser: Conciso: Silex expõe uma API intuitiva e concisa que é divertida de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=354&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<div>
<p>Leia direto da fonte: <a href="http://silex.sensiolabs.org/">http://silex.sensiolabs.org/</a></p>
<p>Silex é um micro-framework PHP para a versão 5.3. Ele é construído sobre os ombros do Symfony2 e Pimple e também inspirado pelo sinatra.</p>
<p>Um micro-framework provê a coragem para construir aplicativos em um arquivo. Silex foca em ser:</p>
<ul>
<li><em>Conciso</em>: Silex expõe uma API intuitiva e concisa que é divertida de usar;</li>
<li><em>Extensível</em>: Silex tem um sistema de extensão baseado em torno do Pimple, micro-contêiner de serviços (<em>n.t. de injeção de dependência</em>), o que torna ainda mais fácil utilizar bibliotecas de terceiros;</li>
<li><em>Testável</em>: Silex usa HttpKernel, do Symfony2, que abstrai requisição (request) e resposta (response). Isto torna muito fácil testar aplicações e o próprio framework. Ele também respeita a especificação HTTP e encoraja seu uso correto.</li>
</ul>
</div>
</div>
<div>
<div>
<p>Em resumo, você define controladores e faz seu mapeamento com as rotas, tudo de uma vez:</p>
<div>
<div>
<pre>require_once __DIR__.'/silex.phar'; 

$app = new Silex\Application(); 

$app-&gt;get('/hello/{name}', function($name) use($app) {
    return 'Hello '.$app-&gt;escape($name);
}); 

$app-&gt;run();</pre>
</div>
</div>
<p>A única coisa necessária para usar o Framework é incluir <a href="http://silex.sensiolabs.org/get/silex.phar">silex.phar</a>. Este arquivo phar (PHP Archive) cuidará do resto.</p>
<p>Depois definimos uma rota para <code>/hello/{name}</code> para requisições <code>GET</code>. Quando uma rota &#8220;casar&#8221; com a requisição,  a função é executada e o seu retorno é enviado de volta para o cliente.</p>
<p>Enfim, a aplicação é executada. É realmente simples assim. Instalar o Silex é o mais fácil possível. Faça o <em>download</em> do arquivo <a href="http://silex.sensiolabs.org/get/silex.phar">silex.phar</a> - e acabou!</p>
<p>Quer saber mais? <a href="http://silex.sensiolabs.org/doc/usage.html">Leia</a> a documentação.</p>
<h2>Quem está por trás do Silex?</h2>
<p>Silex é trazido a você por <a href="http://fabien.potencier.org/">Fabien Potencier</a>, o criador do <a href="http://symfony.com/">Framework Symfony</a> e <a href="http://twitter.com/igorwesome">Igor Wiedler</a>. Silex é disponibilizado sob a licença MIT.</p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=354&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/11/22/silex-um-micro-framework-php-apoiado-sobre-os-ombros-de-gigantes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>
	</item>
		<item>
		<title>E 2011 acabou&#8230;</title>
		<link>http://phpmaranhao.com/2011/11/18/e-2011-acabou/</link>
		<comments>http://phpmaranhao.com/2011/11/18/e-2011-acabou/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:44:05 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[eventos]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=346</guid>
		<description><![CDATA[O ano acabou. Pelo menos o ano da equipe de organização de eventos do PHP-Maranhão. Foi um grande 2011. Tivemos PHPráticas com palestrantes nacionais, tivemos a terceira edição do Fórum Maranhense de Profissionais PHP (3.PHP) com palestrantes internacionais. Ganhamos dois articulistas para o blog (e ainda estamos precisando de mais). O grupo recebeu novos integrantes, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=346&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>O ano acabou. Pelo menos o ano da equipe de organização de eventos do PHP-Maranhão.</p>
<p>Foi um grande 2011. Tivemos PHPráticas com palestrantes nacionais, tivemos a terceira edição do Fórum Maranhense de Profissionais PHP (3.PHP) com palestrantes internacionais. Ganhamos dois articulistas para o blog (e ainda estamos precisando de mais). O grupo recebeu novos integrantes, repensamos algumas &#8220;verdades&#8221; sobre a realização dos eventos locais, dentre outras evoluções profissionais dos envolvidos.</p>
<p>Este não deve ser o último artigo do ano, já que em dezembro ainda participaremos da PHPConference 2011, o principal evento de PHP da América Latina, e devemos trazer algumas novidades.</p>
<p>Para 2012, muitas inovações no radar. Acompanhe o site (assine nosso <a href="http://phpmaranhao.com/feed/">RSS</a>) e se inscreva na <a href="http://br.groups.yahoo.com/group/php-maranhao">lista</a> para não perder nada.</p>
<p>Todos os integrantes da equipe de eventos agradecem a participação de cada estudante e profissional que tem esta vontade de crescer e que esteve presente nas edições. Agradecemos também aos parceiros, apoiadores e patrocinadores. Nenhuma ação que fizemos seria possível sem cada um de vocês.</p>
<p>Até o ano que vem, no PHPrática de fev. 2012, em 11/02/2012.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=346&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/11/18/e-2011-acabou/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>
	</item>
		<item>
		<title>PHPrática nov. 2011</title>
		<link>http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/</link>
		<comments>http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:39:31 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[novembro]]></category>
		<category><![CDATA[PHPrática]]></category>
		<category><![CDATA[uniceuma]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=336</guid>
		<description><![CDATA[Chegou ao fim mais um PHPrática. Desta vez recebemos o especialista em segurança da informação Er Galvão Abbott (@galvao), que abordou os principais problemas de segurança encontrados nas aplicações web, elencados pelo Open Web Application Security Project (OWASP &#8211; http://owasp.org). Ele mostrou exemplos de exploits e quais as soluções mais indicadas para cada caso. Agradecemos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=336&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Chegou ao fim mais um PHPrática. Desta vez recebemos o especialista em segurança da informação Er Galvão Abbott (@galvao), que abordou os principais problemas de segurança encontrados nas aplicações web, elencados pelo Open Web Application Security Project (OWASP &#8211; <a href="http://owasp.org">http://owasp.org</a>). Ele mostrou exemplos de <em>exploits</em> e quais as soluções mais indicadas para cada caso.</p>
<p>Agradecemos ao Er Galvão pelo excelente minicurso. A impressão geral dos participantes foi de que o curso foi realmente focado nos aspectos práticos, mostrando como explorar as vulnerabilidades e principalmente como resolvê-las. Alguns participantes se confessaram preocupados e disseram que, apesar da noção do trabalho que têm pela frente, já sabem por onde começar e como resolver os problemas dos seus sistemas.</p>
<p>Nosso agradecimento especial ao Uniceuma, em especial ao Prof. Sérgio Martins, que viabilizou toda a infra necessária à realização do evento.</p>
<p>Seguem algumas fotos do minicurso:</p>

<a href='http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/galvao1/' title='Er Galvão fala sobre Top 10 OWASP Vulnerabilities'><img data-attachment-id='338' data-orig-size='550,307' data-liked='0'width="150" height="83" src="http://phpmaranhao.files.wordpress.com/2011/11/galvao1.jpg?w=150&#038;h=83" class="attachment-thumbnail" alt="Er Galvão fala sobre Top 10 OWASP Vulnerabilities" title="Er Galvão fala sobre Top 10 OWASP Vulnerabilities" /></a>
<a href='http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/galvao2/' title='Er Galvão Abbott fala sobre vulnerabilidades em aplicações Web'><img data-attachment-id='339' data-orig-size='550,352' data-liked='0'width="150" height="96" src="http://phpmaranhao.files.wordpress.com/2011/11/galvao2.jpg?w=150&#038;h=96" class="attachment-thumbnail" alt="Er Galvão Abbott fala sobre vulnerabilidades em aplicações Web" title="Er Galvão Abbott fala sobre vulnerabilidades em aplicações Web" /></a>
<a href='http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/audiencia2/' title='Alunos do Uniceuma e participantes do PHP-Maranhão'><img data-attachment-id='340' data-orig-size='550,197' data-liked='0'width="150" height="53" src="http://phpmaranhao.files.wordpress.com/2011/11/audiencia2.jpg?w=150&#038;h=53" class="attachment-thumbnail" alt="Alunos do Uniceuma e participantes do PHP-Maranhão" title="Alunos do Uniceuma e participantes do PHP-Maranhão" /></a>
<a href='http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/audiencia1/' title='Alunos do Uniceuma e participantes do PHP-Maranhão'><img data-attachment-id='341' data-orig-size='550,211' data-liked='0'width="150" height="57" src="http://phpmaranhao.files.wordpress.com/2011/11/audiencia1.jpg?w=150&#038;h=57" class="attachment-thumbnail" alt="Alunos do Uniceuma e participantes do PHP-Maranhão" title="Alunos do Uniceuma e participantes do PHP-Maranhão" /></a>
<a href='http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/galvao3/' title='Er Galvão e o Elephpant'><img data-attachment-id='343' data-orig-size='550,358' data-liked='0'width="150" height="97" src="http://phpmaranhao.files.wordpress.com/2011/11/galvao3.jpg?w=150&#038;h=97" class="attachment-thumbnail" alt="Er Galvão e o Elephpant" title="Er Galvão e o Elephpant" /></a>
<a href='http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/uniceuma/' title='Elephpant dá um alô para o pessoal do Uniceuma'><img data-attachment-id='344' data-orig-size='550,424' data-liked='0'width="150" height="115" src="http://phpmaranhao.files.wordpress.com/2011/11/uniceuma.jpg?w=150&#038;h=115" class="attachment-thumbnail" alt="Elephpant dá um alô para o pessoal do Uniceuma" title="Elephpant dá um alô para o pessoal do Uniceuma" /></a>

<p>O material do minicurso está disponível em <a href="http://slideshare.net/ergalvao">http://slideshare.net/ergalvao</a>.</p>
<p>Nossa próxima edição é só no ano que vem. Fique ligado para não perder. Até lá.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/336/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=336&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/11/18/phpratica-nov-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/11/galvao1.jpg?w=150" medium="image">
			<media:title type="html">Er Galvão fala sobre Top 10 OWASP Vulnerabilities</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/11/galvao2.jpg?w=150" medium="image">
			<media:title type="html">Er Galvão Abbott fala sobre vulnerabilidades em aplicações Web</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/11/audiencia2.jpg?w=150" medium="image">
			<media:title type="html">Alunos do Uniceuma e participantes do PHP-Maranhão</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/11/audiencia1.jpg?w=150" medium="image">
			<media:title type="html">Alunos do Uniceuma e participantes do PHP-Maranhão</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/11/galvao3.jpg?w=150" medium="image">
			<media:title type="html">Er Galvão e o Elephpant</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/11/uniceuma.jpg?w=150" medium="image">
			<media:title type="html">Elephpant dá um alô para o pessoal do Uniceuma</media:title>
		</media:content>
	</item>
		<item>
		<title>PHPrática nov/2011</title>
		<link>http://phpmaranhao.com/2011/11/14/phpratica-nov2011/</link>
		<comments>http://phpmaranhao.com/2011/11/14/phpratica-nov2011/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 14:14:18 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[novembro]]></category>
		<category><![CDATA[PHPrática]]></category>
		<category><![CDATA[uniceuma]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=330</guid>
		<description><![CDATA[Prezados, Anunciamos a realização do PHPrática nov/2011. Será no Uniceuma Campus Renascença. Como nas edições anteriores, os participantes devem entregar 1 Kg de alimento não-perecível no local do evento. Os alimentos serão encaminhados para doação. Nesta edição teremos a presença do especialista em segurança da informação Er Galvão Abbott, que virá de Porto Alegre, RS [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=330&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Prezados,</p>
<p>Anunciamos a realização do PHPrática nov/2011. Será no Uniceuma Campus Renascença. Como nas edições anteriores, os participantes devem entregar 1 Kg de alimento não-perecível no local do evento. Os alimentos serão encaminhados para doação.</p>
<p>Nesta edição teremos a presença do especialista em segurança da informação Er Galvão Abbott, que virá de Porto Alegre, RS para ministrar o minicurso &#8220;Top 10 Owasp Vulnerabilities&#8221;, elencando as 10 maiores vulnerabilidades Web e como mitigá-las.</p>
<p>O público-alvo são desenvolvedores Web de qualquer linguagem. As soluções que ele mostrará utilizando PHP são facilmente adaptáveis para quaisquer linguagens, já que tratam-se principalmente de mudanças de abordagem, método ou técnica e não são específicas do código.</p>
<p>Estão todos convidados.</p>
<p><strong>Dia 18/11, sexta-feira, das 14h00 às 18h00.</p>
<p>Uniceuma unidade Renascença. Rua Josué Montello, 1, laboratório 4.</p>
<p>Leve 1 Kg de alimento não-perecível.</strong></p>
<p>Após o evento, participe do PHPinga<sup><small>©</small></sup>, nosso happy-hour pós-evento que acontecerá no Por Acaso da Lagoa, a partir das 19h00.</p>
<p>A hashtag oficial do evento no twitter é #phpratica e a venue no 4sq é &#8220;PHPrática novembro de 2011.&#8221;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/330/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=330&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/11/14/phpratica-nov2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>
	</item>
		<item>
		<title>Módulos, Models e APIs</title>
		<link>http://phpmaranhao.com/2011/10/28/modulos-models-e-apis/</link>
		<comments>http://phpmaranhao.com/2011/10/28/modulos-models-e-apis/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 15:19:32 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[módulo]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=322</guid>
		<description><![CDATA[Estive presente no Latinoware 2011, de 19 a 21/10 para apresentar uma palestra sobre WebAPIs para dispositivos móveis. A idéia era mostrar algumas das melhores práticas para o desenvolvimento da API de serviços para Apps mobiles. Uma das palestras que seguiram foi a do Er Galvão, falando sobre Zend_Acl e de uma implementação bem interessante [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=322&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Estive presente no Latinoware 2011, de 19 a 21/10 para apresentar uma palestra sobre WebAPIs para dispositivos móveis. A idéia era mostrar algumas das melhores práticas para o desenvolvimento da API de serviços para Apps mobiles.</p>
<p>Uma das palestras que seguiram foi a do <a href="http://twitter.com/galvao">Er Galvão</a>, falando sobre Zend_Acl e de uma implementação bem interessante a que ele chegou.</p>
<p>No fim da palestra dele, um dos congressistas fez uma pergunta muito interessante que eu gostaria de compartilhar. Ele informou que tinha enfrentado muitos problemas com o uso de Acl com módulos do Zend e pediu orientações sobre como resolvê-los.</p>
<p>Como este é um dos assuntos que me interessam e porque minha palestra falava exatamente sobre APIs, pedi licença ao Galvão e me meti na conversa. Tenho visto que o principal benefício &#8220;vendido&#8221; por quem usa módulos é o reuso da camada model da aplicação. Você pode implementar &#8220;sub-aplicações&#8221; usando o mesmo conjunto de classes, evitando a reescrita do código de negócios.</p>
<p>Na minha opinião, isto é uma gambiarra para tentar contornar uma limitação clara do modelo MVC, que é o de estar contido em uma aplicação.</p>
<p>Quem acompanhou a evolução dos frameworks, biblioteca de classes e template engines sabe que surgiram diversas tentativas de generalizar controllers e views. A maioria vai bem, obrigado. Mas não faz sentido usar um componente de software para generalizar o model, uma camada que é específica para uma aplicação ou um grupo de aplicações. E esta é a limitação.</p>
<p>A resposta que dei para o congressista e sobre a qual voltei a comentar ontem é sobre um paradigma de desenvolvimento que estamos usando massivamente na Nexy: APIs.</p>
<p>Todos os novos sistemas que estamos desenvolvendo abusam de APIs. Mesmo que sejam apenas para uso interno. O que está lá implementado é a antiga camada model, acrescida de um fino controller apenas para rotear, instanciar, executar e retornar. Existem várias soluções para implementação rápida de APIs. A mais simples que conheço é o GRS, de código aberto e desenvolvido internamente (<a href="http://github.com/ramcoelho/grs">http://github.com/ramcoelho/grs</a>), onde você implementa apenas as classes do model. Outra, muito mais flexível é o Respect/Rest (<a href="http://github.com/respect/rest">http://github.com/respect/rest</a>).</p>
<p>São evidentes as vantagens de usar esta abordagem em todas as aplicações (mesmo as internas). Talvez você não perceba a necessidade de manter o controle de pedido de materiais sob uma API, mas apenas o fato dela existir, torna muito mais fácil a automatização posterior que venha a surgir, além de reforçar o mantra &#8220;programe para uma interface&#8221;, facilitando a vida de outro programador que seja envolvido na solução.</p>
<p>O resultado direto é que, sem a necessidade de compartilhar o model dentro da aplicação, os módulos viram aplicações distintas, todas compartilhando a mesma API.</p>
<p>Esta idéia é suportada por empresas como Twitter, Foursquare, Google, e certamente estão no cerne do grande sucesso do Facebook e seus aplicativos e jogos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/322/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=322&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/10/28/modulos-models-e-apis/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>
	</item>
		<item>
		<title>3.PHP &#8211; Resumo</title>
		<link>http://phpmaranhao.com/2011/10/26/3-php-resumo/</link>
		<comments>http://phpmaranhao.com/2011/10/26/3-php-resumo/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 02:02:10 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Notícias]]></category>
		<category><![CDATA[3php]]></category>
		<category><![CDATA[evento]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=308</guid>
		<description><![CDATA[Chegou ao fim a terceira edição do Fórum Maranhense de Profissionais PHP (3.PHP). Este ano tivemos o apoio inestimável do SEBRAE-MA, com infra-estrutura profissional elogiada por todos os palestrantes e congressistas. A organização e promoção do evento ficaram à cargo da Nexy, como em todas as edições anteriores, custeando o evento como um todo. Nosso [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=308&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Chegou ao fim a terceira edição do Fórum Maranhense de Profissionais PHP (3.PHP).</p>
<p>Este ano tivemos o apoio inestimável do SEBRAE-MA, com infra-estrutura profissional elogiada por todos os palestrantes e congressistas.</p>
<p>A organização e promoção do evento ficaram à cargo da Nexy, como em todas as edições anteriores, custeando o evento como um todo. Nosso muito obrigado a todos os envolvidos.</p>
<p>Nossos agradecimentos especiais também à DBSeller e à PlumWillow, que mesmo tendo atuação maior fora do estado, fizeram questão de patrocinar um evento de comunidade local.</p>
<p>Vamos aos números.</p>
<p>Foram 12 palestras, de 10 palestrantes, 7 de fora do estado. Passaram pela sala cerca de 115 pessoas diferentes, em sessões de até 60 por vez. Alcançamos um total de 231 pessoas via streaming. Todas divulgando o evento nas redes sociais.</p>
<p>Nossa projeção de alcance totalizou 1.300 pessoas. Nada mal para um evento de comunidade regional.</p>
<p>Ano que vem tentaremos uma sala maior para que ninguém fique de fora.</p>
<p>Parabéns aos congressistas, aos palestrantes, à organização e aos patrocinadores. Até a próxima.</p>
<p>Seguem algumas fotos do evento.</p>

<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/cesar/' title='cesar'><img data-attachment-id='309' data-orig-size='500,284' data-liked='0'width="150" height="85" src="http://phpmaranhao.files.wordpress.com/2011/10/cesar.png?w=150&#038;h=85" class="attachment-thumbnail" alt="cesar" title="cesar" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/claudio/' title='claudio'><img data-attachment-id='310' data-orig-size='500,244' data-liked='0'width="150" height="73" src="http://phpmaranhao.files.wordpress.com/2011/10/claudio.jpg?w=150&#038;h=73" class="attachment-thumbnail" alt="claudio" title="claudio" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/rodrigo/' title='rodrigo'><img data-attachment-id='311' data-orig-size='500,347' data-liked='0'width="150" height="104" src="http://phpmaranhao.files.wordpress.com/2011/10/rodrigo.jpg?w=150&#038;h=104" class="attachment-thumbnail" alt="rodrigo" title="rodrigo" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/audiencia/' title='audiencia'><img data-attachment-id='312' data-orig-size='500,245' data-liked='0'width="150" height="73" src="http://phpmaranhao.files.wordpress.com/2011/10/audiencia.jpg?w=150&#038;h=73" class="attachment-thumbnail" alt="audiencia" title="audiencia" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/marroquim/' title='marroquim'><img data-attachment-id='313' data-orig-size='500,270' data-liked='0'width="150" height="81" src="http://phpmaranhao.files.wordpress.com/2011/10/marroquim.jpg?w=150&#038;h=81" class="attachment-thumbnail" alt="marroquim" title="marroquim" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/minetto/' title='minetto'><img data-attachment-id='314' data-orig-size='500,280' data-liked='0'width="150" height="84" src="http://phpmaranhao.files.wordpress.com/2011/10/minetto.jpg?w=150&#038;h=84" class="attachment-thumbnail" alt="minetto" title="minetto" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/gigante/' title='gigante'><img data-attachment-id='315' data-orig-size='500,249' data-liked='0'width="150" height="74" src="http://phpmaranhao.files.wordpress.com/2011/10/gigante.jpg?w=150&#038;h=74" class="attachment-thumbnail" alt="gigante" title="gigante" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/emerson/' title='emerson'><img data-attachment-id='316' data-orig-size='500,234' data-liked='0'width="150" height="70" src="http://phpmaranhao.files.wordpress.com/2011/10/emerson.jpg?w=150&#038;h=70" class="attachment-thumbnail" alt="emerson" title="emerson" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/caio/' title='caio'><img data-attachment-id='317' data-orig-size='500,236' data-liked='0'width="150" height="70" src="http://phpmaranhao.files.wordpress.com/2011/10/caio.jpg?w=150&#038;h=70" class="attachment-thumbnail" alt="caio" title="caio" /></a>
<a href='http://phpmaranhao.com/2011/10/26/3-php-resumo/almir/' title='almir'><img data-attachment-id='318' data-orig-size='500,268' data-liked='0'width="150" height="80" src="http://phpmaranhao.files.wordpress.com/2011/10/almir.jpg?w=150&#038;h=80" class="attachment-thumbnail" alt="almir" title="almir" /></a>

<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/308/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=308&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/10/26/3-php-resumo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/cesar.png?w=150" medium="image">
			<media:title type="html">cesar</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/claudio.jpg?w=150" medium="image">
			<media:title type="html">claudio</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/rodrigo.jpg?w=150" medium="image">
			<media:title type="html">rodrigo</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/audiencia.jpg?w=150" medium="image">
			<media:title type="html">audiencia</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/marroquim.jpg?w=150" medium="image">
			<media:title type="html">marroquim</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/minetto.jpg?w=150" medium="image">
			<media:title type="html">minetto</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/gigante.jpg?w=150" medium="image">
			<media:title type="html">gigante</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/emerson.jpg?w=150" medium="image">
			<media:title type="html">emerson</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/caio.jpg?w=150" medium="image">
			<media:title type="html">caio</media:title>
		</media:content>

		<media:content url="http://phpmaranhao.files.wordpress.com/2011/10/almir.jpg?w=150" medium="image">
			<media:title type="html">almir</media:title>
		</media:content>
	</item>
		<item>
		<title>PHP 5.3 no Debian Lenny (5.0)</title>
		<link>http://phpmaranhao.com/2011/09/14/php-5-3-no-debian-lenny-5-0/</link>
		<comments>http://phpmaranhao.com/2011/09/14/php-5-3-no-debian-lenny-5-0/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 21:31:56 +0000</pubDate>
		<dc:creator>ramcoelho</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[lenny]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://phpmaranhao.com/?p=270</guid>
		<description><![CDATA[Recentemente fui convidado a desenvolver um webapp para um cliente. Como era um projeto relativamente pequeno, optamos por construir usando Grs, um projeto extremamente simples e de entrega rápida para servidor RESTful genérico (http://github.com/ramcoelho/grs). Projeto finalizado e homologado, era hora do deploy. Como o cliente já possuía um servidor configurado e rodando outras aplicações internas, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=270&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recentemente fui convidado a desenvolver um webapp para um cliente. Como era um projeto relativamente pequeno, optamos por construir usando Grs, um projeto extremamente simples e de entrega rápida para servidor RESTful genérico (<a href="http://github.com/ramcoelho/grs">http://github.com/ramcoelho/grs</a>).</p>
<p>Projeto finalizado e homologado, era hora do deploy. Como o cliente já possuía um servidor configurado e rodando outras aplicações internas, solicitou a disponibilização no mesmo ambiente.</p>
<p>Então nos deparamos com o obstáculo que motivou este artigo.</p>
<p>O ambiente era Debian Lenny (5.0), que por padrão usa a versão 5.2 do PHP em seus repositórios.</p>
<p>Grande parte do código do Grs não funciona no PHP 5.2 e é claro que a nossa primeira sugestão foi upgrade do ambiente. Por diversos motivos que não cabem no objetivo deste artigo, o cliente não autorizou o upgrade.</p>
<p>Ao invés de realizar o downgrade do Grs, optamos por investir um pouco mais de tempo fazendo o upgrade específico do PHP 5.3 no Lenny.</p>
<p>Já que todos adoramos a flexibilidade dos pacotes .deb, tentamos evitar recompilar o PHP a partir dos fontes.</p>
<p>Segue o procedimento que resolveu o problema, com nossos agradecimentos a <a href="http://www.dotdeb.org/2009/11/30/php-5-3-1-packages-for-debian-lenny-theyre-here/">http://www.dotdeb.org/2009/11/30/php-5-3-1-packages-for-debian-lenny-theyre-here/</a>. Se você for seguir o texto do artigo, lembre-se de trocar “stable” para “lenny”, já que a versão stable hoje não é mais lenny (na data deste artigo é “squeeze”).</p>
<p>Inclua as linhas abaixo em seu <strong>/etc/apt/sources.list</strong>:</p>
<pre>deb http://php53.dotdeb.org lenny all
deb-src http://php53.dotdeb.org lenny all</pre>
<p>Atualize os repositórios locais: sudo apt-get update</p>
<p>Se o sistema reclamar que a chave não está presente (NO_PUBKEY), tente a solução de <a href="http://en.kioskea.net/faq/809-debian-apt-get-no-pubkey-gpg-error">http://en.kioskea.net/faq/809-debian-apt-get-no-pubkey-gpg-error</a>, lembrando de substituir a chave do artigo pela indicada na mensagem de erro (quando o artigo foi escrito: E9C74FEEA2098A6E)</p>
<pre>gpg --keyserver pgpkeys.mit.edu --recv-key E9C74FEEA2098A6E
gpg -a --export E9C74FEEA2098A6E | sudo apt-key add -
sudo apt-get update</pre>
<p>&nbsp;</p>
<p>E por fim:</p>
<pre>sudo apt-get dist-upgrade</pre>
<p>Lembre-se de fazer backup antes de realizar procedimentos de ampla atualização e, se possível, testar em um box de homologação antes.</p>
<p>Boa sorte.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phpmaranhao.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phpmaranhao.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phpmaranhao.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phpmaranhao.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phpmaranhao.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phpmaranhao.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phpmaranhao.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phpmaranhao.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phpmaranhao.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phpmaranhao.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phpmaranhao.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phpmaranhao.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phpmaranhao.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phpmaranhao.wordpress.com/270/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phpmaranhao.com&amp;blog=6205732&amp;post=270&amp;subd=phpmaranhao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phpmaranhao.com/2011/09/14/php-5-3-no-debian-lenny-5-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">ramcoelho</media:title>
		</media:content>
	</item>
	</channel>
</rss>
