<?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>Fabio Brandão - Blog &#187; Uncategorized</title>
	<atom:link href="http://www.fnbrandao.com.br/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fnbrandao.com.br/blog</link>
	<description></description>
	<lastBuildDate>Tue, 24 Aug 2010 01:33:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP + Zend + PDO + MySQL</title>
		<link>http://www.fnbrandao.com.br/blog/2010/01/php-zend-pdo-mysql/</link>
		<comments>http://www.fnbrandao.com.br/blog/2010/01/php-zend-pdo-mysql/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 17:07:18 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[access denied for user]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[unknown mysql server host]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=48</guid>
		<description><![CDATA[Hoje eu estava fazendo um site utilizando php, Zend Framework, PDO e MySQL.
Quando fui fazer uma tela que se conectava com o banco de dados, ocorria o seguinte erro:
SQLSTATE[HY000] [2005] Unknown MySQL server host ''localhost'' (1)
Removi do arquivo de configuração a linha que informava o host onde estava o banco de dados e o erro [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje eu estava fazendo um site utilizando php, Zend Framework, PDO e MySQL.</p>
<p>Quando fui fazer uma tela que se conectava com o banco de dados, ocorria o seguinte erro:</p>
<p><code>SQLSTATE[HY000] [2005] Unknown MySQL server host ''localhost'' (1)</code></p>
<p>Removi do arquivo de configuração a linha que informava o host onde estava o banco de dados e o erro passou a ser:</p>
<p><code>SQLSTATE[28000] [1045] Access denied for user 'user'@'localhost' (using password: YES)</code></p>
<p>Não, as permissões não estavam erradas. O problema todo era o arquivo de configuração do zend (application.ini), que estava assim:</p>
<p><code>resources.db.params.host = 'localhost'<br />
resources.db.params.username = 'user'<br />
resources.db.params.password = 'pass'<br />
resources.db.params.dbname = 'db'</code></p>
<p>O problema todo era as aspas simples, deveriam ser aspas duplas:</p>
<p><code>resources.db.params.host = "localhost"<br />
resources.db.params.username = "user"<br />
resources.db.params.password = "pass"<br />
resources.db.params.dbname = "db"</code></p>
<p>Acabei perdendo a manhã toda até achar este pequeno problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2010/01/php-zend-pdo-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>As coisas estúpidas feitas quando se trabalha com programação</title>
		<link>http://www.fnbrandao.com.br/blog/2009/09/as-coisas-estupidas-feitas-quando-se-trabalha-com-programacao/</link>
		<comments>http://www.fnbrandao.com.br/blog/2009/09/as-coisas-estupidas-feitas-quando-se-trabalha-com-programacao/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 13:35:04 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[erros]]></category>
		<category><![CDATA[estupidez]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=37</guid>
		<description><![CDATA[Este post foi traduzido e alterado deste link:
http://blog.cherouvim.com/the-stupidest-things-ive-done-in-my-programming-job/
Observação: Não fui eu quem escreveu este post. Apenas fiz a tradução e alteração pois achei muito interessante.
As coisas estúpidas feitas quando se trabalho com programação

ORM

Estupidez
Construir um framework próprio de ORM.
Consequências
O projeto vira uma bagunça depois de 2 anos de manutenção com gambiarras para passar pelo meu framework [...]]]></description>
			<content:encoded><![CDATA[<p>Este post foi traduzido e alterado deste link:<br />
<a href="http://blog.cherouvim.com/the-stupidest-things-ive-done-in-my-programming-job/" target="_blank">http://blog.cherouvim.com/the-stupidest-things-ive-done-in-my-programming-job/</a></p>
<p>Observação: Não fui eu quem escreveu este post. Apenas fiz a tradução e alteração pois achei muito interessante.</p>
<p>As coisas estúpidas feitas quando se trabalho com programação</p>
<ol>
<li><a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORM</a>
<ul>
<li>Estupidez<br />
Construir um framework próprio de ORM.</li>
<li>Consequências<br />
O projeto vira uma bagunça depois de 2 anos de manutenção com gambiarras para passar pelo meu framework ORM desenvolvido e chamar comandos SQL&#8217;s customizados.</li>
<li>O que deveria ter sido feito?<br />
Usar <a href="https://www.hibernate.org/" target="_blank">hibernate</a>, <a href="http://ibatis.apache.org/" target="_blank">iBATIS</a>, <a href="http://cayenne.apache.org/" target="_blank">Cayenne</a> ou outros parecidos.</li>
</ul>
</li>
<li><a href="http://en.wikipedia.org/wiki/Entity-attribute-value_model" target="_blank">EAV</a>
<ul>
<li>Estupidez<br />
Usar uma modelagem de banco de dados do tipo Entity-Attribute-Value model.</li>
<li>Consequências<br />
Solução não escalável e impossibilidade de rodar queries úteis no banco de dados.</li>
<li>O que deveria ter sido feito?<br />
Usar uma modelagem de banco de dados normalizada.</li>
</ul>
</li>
<li>Acesso ao Banco de dados
<ul>
<li>Estupidez<br />
Sincronizar o acesso ao banco de dados com uma conexão compartilhada.</li>
<li>Consequências<br />
Escalabilidade zero. Tempos de respostas muito lentos quando mais de 10 usuários estavam utilizando a aplicação.</li>
<li>O que deveria ter sido feito?<br />
Não fazer isto e utilizar um <a href="http://en.wikipedia.org/wiki/Connection_pool" target="_blank">pool de conexões</a> como <a href="http://sourceforge.net/projects/c3p0/" target="_blank">c3p0</a> e usar uma &#8220;nova&#8221; (reutilizada) conexão retornada do pool para cada ciclo de request / response.</li>
</ul>
</li>
<li><a href="http://en.wikipedia.org/wiki/Integrated_development_environment" target="_blank">IDE</a>
<ul>
<li>Estupidez<br />
Evitar aprender e utilizar uma IDE.</li>
<li>Consequências<br />
Falta de habilidade de compilar, testar e fazer o deploy da aplicação rapidamente e / ou geralmente fazer qualquer coisa útil.</li>
<li>O que deveria ter sido feito?<br />
Familiarizar-me com uma IDE. Ex.: <a href="http://www.netbeans.org/" target="_blank">NetBeans</a>, <a href="http://www.eclipse.org/" target="_blank">eclipse</a>, etc.</li>
</ul>
</li>
<li><a href="http://en.wikipedia.org/wiki/Database_transaction" target="_blank">Transações</a>
<ul>
<li>Estupidez<br />
Não usá-las.</li>
<li>Consequências<br />
Corromper os dados da aplicação.</li>
<li>O que deveria ter sido feito?<br />
Usar transações do banco de dados. No <a href="http://www.mysql.com/" target="_blank">MySQL</a> usar <a href="http://en.wikipedia.org/wiki/Innodb" target="_blank">InnoDB</a>.</li>
</ul>
</li>
<li><a href="http://en.wikipedia.org/wiki/Prepared_statements#Parameterized_statements" target="_blank">Prepared Statements</a>
<ul>
<li>Estupidez<br />
Usar Statements, concatenação de strings e escapar caracteres para montar queries &#8220;seguras&#8221;.</li>
<li>Consequências<br />
Possibilidade de <a href="http://en.wikipedia.org/wiki/Sql_injection" target="_blank">SQL Injections</a> na aplicação. É possível logar utilizando por exemplo &#8220;or 1=1;delete from users;&#8221; e alterar o estado do banco de dados de uma forma muito desagradável.</li>
<li>O que deveria ter sido feito?<br />
Usar Prepared Statements que montam e escapam corretamente as queries dependendo do driver JDBC utilizado.</li>
</ul>
</li>
<li>Lógica de Negócios
<ul>
<li>Estupidez<br />
Fazer isto nos templates (<a href="http://en.wikipedia.org/wiki/JavaServer_Pages" target="_blank">JSP</a>).</li>
<li>Consequências<br />
Aplicação de manutenção difícil.</li>
<li>O que deveria ter sido feito?<br />
Fazer isto utilizando o padrão <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a> com servlets ou com um Front Controller. Melhor se utilizar um framework MVC open source como <a href="http://struts.apache.org/" target="_blank">Struts</a>, <a href="http://www.springsource.org/" target="_blank">Spring MVC</a>, etc.</li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2009/09/as-coisas-estupidas-feitas-quando-se-trabalha-com-programacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORA-12519, TNS:no appropriate service handler found</title>
		<link>http://www.fnbrandao.com.br/blog/2008/11/ora-12519-tnsno-appropriate-service-handler-found/</link>
		<comments>http://www.fnbrandao.com.br/blog/2008/11/ora-12519-tnsno-appropriate-service-handler-found/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 13:04:20 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ORA-12519]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=24</guid>
		<description><![CDATA[Tenho o oracle xe instalado no computador do trabalho. Após algumas horas trabalhando a aplicação não consegue mais se conectar com o banco de dados dando o erro &#8220;ORA-12519, TNS:no appropriate service handler found&#8221;.
Neste blog: http://en.newinstance.it/2007/06/01/ora-12519-tnsno-appropriate-service-handler-found/ a solução dada foi executar o seguinte comando como system:
ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE;
Executei o comando e até agora [...]]]></description>
			<content:encoded><![CDATA[<p>Tenho o oracle xe instalado no computador do trabalho. Após algumas horas trabalhando a aplicação não consegue mais se conectar com o banco de dados dando o erro <em>&#8220;ORA-12519, TNS:no appropriate service handler found&#8221;</em>.</p>
<p>Neste blog: <a href="http://en.newinstance.it/2007/06/01/ora-12519-tnsno-appropriate-service-handler-found/">http://en.newinstance.it/2007/06/01/ora-12519-tnsno-appropriate-service-handler-found/</a> a solução dada foi executar o seguinte comando como <em>system</em>:</p>
<p><code>ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE;</code></p>
<p>Executei o comando e até agora não tive mais este erro!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2008/11/ora-12519-tnsno-appropriate-service-handler-found/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Archlinux HP Pavilion dv9000 &#8211; Suspend e Hibernate</title>
		<link>http://www.fnbrandao.com.br/blog/2008/07/archlinux-hp-pavilion-dv9000-suspend-e-hibernate/</link>
		<comments>http://www.fnbrandao.com.br/blog/2008/07/archlinux-hp-pavilion-dv9000-suspend-e-hibernate/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 02:58:01 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[ArchLinux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Megadeth]]></category>
		<category><![CDATA[Programas]]></category>
		<category><![CDATA[Shows]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dv9000]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[Suspend]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=21</guid>
		<description><![CDATA[Como mencionado no último post, não estava conseguindo fazer meu notebook hibernar ou suspender no modo gráfico no Archlinux. Após uma simples pesquisa no google encontrei a solução: bastou colocar o meu usuário no grupo &#8220;power&#8221;.
]]></description>
			<content:encoded><![CDATA[<p>Como mencionado no último post, não estava conseguindo fazer meu notebook hibernar ou suspender no modo gráfico no Archlinux. Após uma simples pesquisa no google encontrei a solução: bastou colocar o meu usuário no grupo <em><strong>&#8220;power&#8221;</strong></em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2008/07/archlinux-hp-pavilion-dv9000-suspend-e-hibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O primeiro post</title>
		<link>http://www.fnbrandao.com.br/blog/2008/05/o-primeiro-post/</link>
		<comments>http://www.fnbrandao.com.br/blog/2008/05/o-primeiro-post/#comments</comments>
		<pubDate>Fri, 02 May 2008 23:58:39 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=1</guid>
		<description><![CDATA[Talvez esta seja uma tarefa difícil, escolher o que escrever no seu primeiro post, ainda mais se este for o seu primeiro blog. Nesta hora surgem diversas dúvidas: o que escrever, como escrever, pra que criar um blog, onde iremos chegar, etc&#8230;
Acho que devo dividir este post em algumas partes:

Por que criei o blog
Quais assuntos [...]]]></description>
			<content:encoded><![CDATA[<p>Talvez esta seja uma tarefa difícil, escolher o que escrever no seu primeiro post, ainda mais se este for o seu primeiro blog. Nesta hora surgem diversas dúvidas: o que escrever, como escrever, pra que criar um blog, onde iremos chegar, etc&#8230;<br />
Acho que devo dividir este post em algumas partes:</p>
<ul>
<li>Por que criei o blog</li>
<li>Quais assuntos serão escritos neste blog</li>
<li>O que quero com este blog</li>
</ul>
<p>Vamos então definir cada uma destas partes:</p>
<p><strong><em>Por que criei o blog?</em><br />
</strong>Criei o blog simplesmente porque surgiu a oportunidade de possuir um domínio <em>.com.br</em> com um <em>CPF</em> e não mais com o <em>CNPJ</em>. Mas este não é o único motivo, um outro seria a possibilidade de repassar conhecimentos adquiridos no trabalho / faculdade / pós-graduação / vida. Outro motivo seria postar dúvidas e, de preferência, que alguém me ajuda-se a solucioná-las.</p>
<p><em><strong>Quais assuntos serão escritos neste blog?</strong></em><br />
Com certeza, a maior parte dos posts escritos neste blog terão referência direta à área de informática, na qual trabalho há pelo menos 5 anos e estou envolvido com programação desde os 12 anos de idade (12 anos atrás!!!).<br />
Outros assuntos poderão ser abordados neste blog também, como por exemplo shows que irei, discussões sobre assuntos diversos, etc&#8230;</p>
<p><strong><em>O que quero com este blog?</em><br />
</strong>Pergunta muito difícil de responder, mas com certeza a melhor resposta é adquirir conhecimentos com os post aqui discutidos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2008/05/o-primeiro-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
