<?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>nuxlli &#187; Symfony</title>
	<atom:link href="http://www.nuxlli.com.br/category/symfony/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nuxlli.com.br</link>
	<description>um pluguinho</description>
	<lastBuildDate>Wed, 31 Aug 2011 17:57:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Qual o mais legal?</title>
		<link>http://www.nuxlli.com.br/2008/03/22/qual-o-mais-legal/</link>
		<comments>http://www.nuxlli.com.br/2008/03/22/qual-o-mais-legal/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 11:30:23 +0000</pubDate>
		<dc:creator>Everton Ribeiro</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ruby/Rails]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[comparação]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://euvoupranasa.wordpress.com/?p=42</guid>
		<description><![CDATA[Hoje li sobre o nova versão do Zendo Framework, uma das coisas que me chamou atenção foi a nova cara do site, eu conheci as outras versões do site e sempre gostei do trabalho que eles fazem por lá. Ai me veio uma pergunta: qual dos sites de framework é mais legal? Não que isso&#8230;]]></description>
			<content:encoded><![CDATA[<p>Hoje <a href="http://neshertech.net/adler/2008/03/17/release-da-versao-15-do-zend-framework/">li</a> sobre o nova versão do Zendo Framework, uma das coisas que me chamou atenção foi a nova cara do site, eu conheci as outras versões do site e sempre gostei do trabalho que eles fazem por lá.</p>
<p>Ai me veio uma pergunta: qual dos sites de framework é mais legal? Não que isso faça a menor diferença na qualidade dos frameworks  (sem flamers pessoal), mas mesmo assim a pergunta pairava. Eu listo a baixo os frameworks que já utilizei ou utilizo, existem muitos outros, deixe nos comentários qual o seu site preferido:</p>
<div style="text-align:center;">
<p><a href="http://framework.zend.com/"><img src="http://www.thumbalizr.com/app/thumbs/?src=/thumbs/source/21/2191d8e7fbc65afcbd15add478c1bae1.jpg&amp;w=320" alt="Zend Framework" /></a></p>
<p><a href="http://www.djangoproject.com/"><img src="http://www.thumbalizr.com/app/thumbs/?src=/thumbs/source/a8/a891cb04e0c3eea029dd76bd9cb09ecb.jpg&amp;w=320" alt="Django" /></a></p>
<p><a href="http://www.symfony-project.org/"><img src="http://www.thumbalizr.com/app/thumbs/?src=/thumbs/source/25/250049950f74c8dc56471daea28a0a1d.jpg&amp;w=320" alt="Symfony" /></a></p>
<p><a href="http://www.cakephp.org"><img src="http://www.thumbalizr.com/app/thumbs/?src=/thumbs/source/e3/e321f80aa69651e47b7d67ffb893cadc.jpg&amp;w=320" alt="Cakephp" /></a></p>
<p><a href="http://www.rubyonrails.com"><img src="http://www.thumbalizr.com/app/thumbs/?src=/thumbs/source/3f/3f5cbb42577d54917e540b918ab11641.jpg&amp;w=320" alt="Ruby on Rails" /></a></p>
</div>
<p>Por mais que eu goste de trabalhar com o Ruby on Rails, e de por um tempo ter considerado o site do Rails um dos mais legais que conhecia, hoje o site do Zend me salta aos olhos, verdadeira obra prima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuxlli.com.br/2008/03/22/qual-o-mais-legal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Select complexo? View nele</title>
		<link>http://www.nuxlli.com.br/2007/09/20/select-complexo-view-nele/</link>
		<comments>http://www.nuxlli.com.br/2007/09/20/select-complexo-view-nele/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 01:41:58 +0000</pubDate>
		<dc:creator>Everton Ribeiro</dc:creator>
				<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://euvoupranasa.wordpress.com/2007/09/20/select-complexo-view-nele/</guid>
		<description><![CDATA[No início do projeto que estamos trabalhando, a equipe de desenvolvimento cogitou a utilização do framework Cake, além de tantas outras opções, acabamos por escolher Symfony e PostgreSQL.Mas no período de escolha, acabamos por testar uma solução, digamos atípica, no Cake. O sistema no qual trabalhamos é uma nova versão de um sistema que já&#8230;]]></description>
			<content:encoded><![CDATA[<p>No início do projeto que estamos<span style="background-color:#ffff99;"></span> trabalhando, a equipe de desenvolvimento cogitou a utilização do framework Cake, além de tantas outras opções, acabamos por escolher Symfony e PostgreSQL.Mas no período de escolha, acabamos por testar uma solução, digamos atípica, no Cake. O sistema no qual trabalhamos é uma nova versão de um sistema que já existia anteriormente, e precisávamos reaproveitar sua base de dados, foi ai que encontramos uma série de limitações, principalmente com a nomenclatura de tabelas e campos. Nada que não fosse possível contornar com configurações no Cake, mas isso não era uma boa opção visto que iríamos perder a maiorias das facilidades do Cake.</p>
<p>Uma das tentativas de reutilizar a base de dados, sem perder as vantagens, foi criar uma outra base de dados no mesmo servidor, e algumas views, ligando uma base de dados a outra. Você pode estar se perguntando agora porque simplesmente não refizemos a base? Porque precisávamos manter o sistema antigo funcionando, enquanto criávamos um novo sistema.</p>
<p><span id="more-10"></span>O Cake se comporta bem com uso de views no lugar de tabelas, isso acontece porque o mysql lista views como tabelas, e para o Cake criar models a partir de tabelas ou views não fazia a menor diferença. Mas no fim descobrimos que isso era muito lento (views de um banco para outro), e que as views não iriam suportar a quantidade de informações com que o sistema trabalha.<!-- D(["mb","\u003c/p\&amp;gt;\n\u003cp\&amp;gt;Mais tarde quando estávamos implementando o sistema em Symfony e\nPostgreSQL, esbarramos em uma serie de selects complexas, afinal para\nquem já trabalhou com Symfony sabe com é chato elaborar uma select com\nuso do criteria, se a select for composta de algumas joins e qualquer\noutra condição não convencional é melhor implementar a select\ndiretamente do que tentar implementar usando criteria. Nós enxergamos\ninicialmente duas soluções para este caso.\u003c/p\&amp;gt;\n\u003cp\&amp;gt;A primeira foi a já citada elaboração de selects diretamente no\ncódigo dos models, funciona bem, mas é muito dispendioso o processo de\nanalisar o dados de retorno sem falar no fato que o código do model se\ntorna mais difícil de manter e muito poluído.\u003c/p\&amp;gt;",1] ); D(["mb","\u003cspan class\u003dq\&amp;gt;\n\u003cp\&amp;gt;A segunda opção, foi utilizar store procedures, além de uma melhora\nde performance em relação as selects &quot;diretas&quot;, o código do model fica\nlevemente poluído, mas ainda sim esta solução e dispendiosa no\ntratamento dos retornos.\u003c/p\&amp;gt;\u003c/span\&amp;gt;",1] ); D(["mb","\n\u003cp\&amp;gt;Uma terceira solução partiu dos testes feitos com Cake, o uso de\nviews, elas são mais fáceis de escrever do que uma função, e pode,\ndigamos &quot;enganar&quot; o propel, e fingir se uma tabela, o que tornaria o\ncódigo dos models muito mais limpo e na maioria dos casos sem a necessidade\nde qualquer tipo de alteração.\u003c/p\&amp;gt;",1] );  //--></p>
<p>Mais tarde quando estávamos implementando o novo sistema, esbarramos em uma serie de selects complexas, afinal para quem já trabalhou com Symfony sabe com é cansativo elaborar uma select com uso do criteria, principalmente se a select for composta de algumas joins e qualquer outra condição não convencional é melhor implementar a select diretamente do que tentar implementar utilizando criteria. Nós enxergamos inicialmente duas soluções para este caso.</p>
<p>A primeira foi a já citada elaboração de selects diretamente no código dos models, funciona bem, mas é muito dispendioso o processo de analisar o dados de retorno sem falar no fato que o código do model se torna mais difícil de manter e muito poluído.</p>
<p><span class="q">A segunda opção, foi utilizar store procedures, além de uma melhora de performance em relação as selects “diretas”, o código do model fica levemente poluído, mas ainda sim esta solução e dispendiosa no tratamento dos retornos.</span></p>
<p>Uma terceira solução partiu dos testes feitos com Cake, o uso de views, elas são mais fáceis de escrever do que uma função, e pode, digamos “enganar” o propel, e fingir se uma tabela, o que tornaria o código dos models muito mais limpo e na maioria dos casos sem a necessidade de qualquer tipo de alteração.</p>
<p><!-- D(["mb","\u003cspan class\u003dq\&amp;gt;\n\u003cp\&amp;gt;Tudo bem, até ai, a idéia é boa, mas funciona? A questão é que o\nPostgreSQL trata views como views e tabelas como tabelas, ou seja, são\nobjetos, mas objetos de tipos totalmente diferentes. Isso se torna um\nproblema quando se utiliza o propel-build-schema, o que é o nosso caso.\nDe outra forma para quem prefere atualizar a base com o uso do schema,\nisso não é um problema, basta alterar o seu schema agindo como se a\nview fosse uma tabela como outra qualquer que o resultado vai ser\njoinha :)\u003c/p\&amp;gt;\u003c/span\&amp;gt;",1] ); D(["mb","\n\u003cp\&amp;gt;Para aqueles que como nós, \u003cspan style\u003d\"background-color:rgb(255, 255, 153)\"\&amp;gt;prefere manter o banco através do banco \u003c/span\&amp;gt;ou de uma ferramenta de modelagem há uma solução. Analisando o driver\nde PostgreSQL do propel, encontrei a solução, gastava apenas uma\nalteração no arquivo de informação da base para que a coisa\nfuncionasse. Vamos lá:\u003c/p\&amp;gt;",1] );  //--><span class="q">Tudo bem, até ai, a idéia é boa, mas funciona? A questão é que o PostgreSQL trata views como views e tabelas como tabelas, ou seja, são objetos, mas objetos de tipos totalmente diferentes. Isso se torna um problema quando se utiliza o propel-build-schema, o que é o nosso caso. De outra forma para quem prefere atualizar a base com o uso do schema, isso não é um problema, basta alterar o seu schema agindo como se a view fosse uma tabela como outra qualquer que o resultado vai ser joinha <img src="http://euvoupranasa.wordpress.com/wp-includes/images/smilies/icon_smile.gif" alt=")" class="wp-smiley" /> </span></p>
<p>Para aqueles que como nós, prefere manter o banco de dados através de ferramentas administrativas como phpPgAdmin ou pgAdmin III<span style="background-color:#ffff99;"></span> ou ainda com uso de uma ferramenta de modelagem, há uma solução. Analisando o driver de PostgreSQL do propel, encontrei a solução, gastava apenas uma alteração no arquivo que captura as informação da base, para que a coisa funcionasse. Vamos lá:</p>
<p>Edite o arquivo vendor/creole/drivers/pgsql/metadata/PgSQLDatabaseInfo.php disponível na sua pasta do symfony (ubuntu: /usr/share/php/symfony). E mude a seguinte linha:</p>
<p>$sql = “SELECT oid, relname FROM pg_class WHERE relkind = ‘r’</p>
<p>para:</p>
<p>$sql = “SELECT oid, relname FROM pg_class WHERE ( relkind = ‘r’ OR relkind = ‘v’ )</p>
<p>Esta select é responsável por buscar no catálogo do PostgreSQL<span style="background-color:#ffff99;"></span> pelos objetos da base, mas está definida para buscar apenas objetos do tipo tabela, o que impede o propel de gerar o schema para views.</p>
<p><span class="q">Com esta alteração o propel passa a processar as views disponíveis no banco. Isto parece muito simples, e realmente é simples assim. Existe um pequeno porém neste método: uma view não tem informações sobre relacionamento com outras tabelas, o que dificulta na hora de buscar models relacionados.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuxlli.com.br/2007/09/20/select-complexo-view-nele/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

