<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marcelo Santino</title>
	<atom:link href="http://www.marcelosantino.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.marcelosantino.com</link>
	<description>Portfólio Digital - Programador Freelancer</description>
	<lastBuildDate>Mon, 08 Feb 2010 01:28:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Liberar conexões remotas ao PostgreSQL</title>
		<link>http://www.marcelosantino.com/artigos/linux-servidores/liberar-conexoes-remotas-ao-postgresql</link>
		<comments>http://www.marcelosantino.com/artigos/linux-servidores/liberar-conexoes-remotas-ao-postgresql#comments</comments>
		<pubDate>Sun, 25 Oct 2009 02:52:11 +0000</pubDate>
		<dc:creator>Marcelo Santino</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Linux / Servidores]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://www.marcelosantino.com/?p=134</guid>
		<description><![CDATA[Um breve exemplo de como liberar conexões externas ao servidor PostgreSQL configurando os arquivos postgresql.conf e o pg_hba.conf.]]></description>
			<content:encoded><![CDATA[<p>Neste tópico vou explicar como liberar conexões remotas pela rede a uma base de dados PostgreSQL.</p>
<p>Por padrão o PostgreSQL vem configurado para receber apenas conexões locais (localhost ou 127.0.0.1). Para conectar de outra máquina na rede é preciso alterar algumas configurações básicas em 2 arquivos.</p>
<p><span id="more-134"></span></p>
<p>São eles: <strong>postgresql.conf</strong> e <strong>pg_hba.conf</strong>.</p>
<p>No <strong>postgresql.conf</strong> vamos editar a seguinte linha:</p>
<blockquote><p><em>#listen_addresses = &#8216;localhost&#8217;</em> # what IP address(es) to listen on</p></blockquote>
<p>Como em todo arquivo de configuração em programas linux, o # na frente da linha significa um comentário e com isso desabilita o parâmetro seguinte, tomando seu valor <em>default</em>, que no caso é <em><strong>localhost</strong></em>. Descomente essa linha e substitua seu valor por *. Assim seu PostgreSQL estará apto a ouvir conexões de qualquer IP.Então essa linha ficará da seguinte forma:</p>
<blockquote><p><span style="color: #0000ff;"><em>listen_addresses = &#8216;<strong>*</strong>&#8216;</em> </span> <span style="color: #888888;"># what IP address(es) to listen on</span></p></blockquote>
<p>Isso não quer dizer que ele estará aberto para qualquer IP da rede. É possível criar políticas de acesso através de outro arquivo que falaremos a seguir.</p>
<p>Liberando as conexões no arquivo <strong>pg_hba.conf</strong>:</p>
<p>Este é o arquivo do Postgre responsável pela liberação de usuários, hosts e bancos de dados. Nele é possível dizer qual usuário de qual ip (ou rede) conectará a qual banco. É possível liberar qualquer usuário para coenctar a qualquer banco, mas esta é uma regra cautelosa a ser seguida pois pode comprometer a segurança do seu servidor de bases de dados.</p>
<p>Por padrão o arquivo vem com a seguinte configuração:</p>
<blockquote><p><span style="color: #888888;"># &#8220;local&#8221; is for Unix domain socket connections only</span><br />
<span style="color: #0000ff;">local   all         all                                              trust</span><br />
<span style="color: #888888;"># IPv4 local connections:</span><br />
<span style="color: #0000ff;"> host    all         all         127.0.0.1/32          trust</span><br />
<span style="color: #888888;"># IPv6 local connections:</span><br />
<span style="color: #0000ff;">host    all         all         ::1/128                      trust</span></p></blockquote>
<p>Pode haver alguma variação das configurações padrões de acordo com a versão utilizada, mas geralmente é algo que represente essas informações. Basicamente elas querem dizer que todas as conexões locais podem ser realizadas por qualquer usuário do banco a qualquer banco de dados.</p>
<p>Para liberar o acesso remoto basta criar uma nova regra seguindo o seguinte padrão:</p>
<blockquote><p><span style="color: #0000ff;">host    all         all        0.0.0.0/0               trust</span></p></blockquote>
<p>Com essa regra qualquer usuário de qualquer IP poderá se conectar a qualquer <em>database</em>.<br />
<span style="color: #ff0000;">Importante:</span> O parâmetro <em>trust </em>quer dizer que não será solicitada qualquer senha para conectar ao banco de dados. Então, qualquer pessoa com acesso à sua rede poderá se conectar ao servidor PostgreSQL sem nenhuma restrição. Se a sua rede for restrita como uma turma de um curso ou um ambiente de desenvolvimento interno de empresa não há riscos, porém, é necessário possuir um ambiente de rede interno isolado.</p>
<p>Este parâmetro é útil quando você ainda não se conectou ao banco para criar uma senha de acesso ao usuário postgres (do banco e não do sistema operacional). Então você se conecta e reseta a senha do usuário. Logo em seguida, altere o parâmetro para md5. Assim, uma senha será solicitada ao tentar conectar-se ao servidor Postgre.</p>
<p>Assim ficará a regra de liberação:</p>
<blockquote><p><span style="color: #0000ff;">host    all </span><span style="color: #0000ff;"> all </span><span style="color: #0000ff;">0.0.0.0/0               <strong>md5</strong></span></p></blockquote>
<p>É possível também liberar o acesso apenas a uma rede específica:</p>
<blockquote><p><span style="color: #0000ff;">host    all </span><span style="color: #0000ff;"> all </span><span style="color: #0000ff;"><strong>192.168.0.0/32</strong> <strong>md5</strong></span></p></blockquote>
<p>Ou também, informar qual usuário poderá conectar:</p>
<blockquote><p><span style="color: #0000ff;">host    all </span><span style="color: #0000ff;">usuariodobanco </span><span style="color: #0000ff;"><strong>192.168.0.0/32</strong> <strong>md5</strong></span></p></blockquote>
<p>Também informar qual o banco de dados a ser conectaro por este usuário:</p>
<blockquote><p><span style="color: #0000ff;">host    bancodedados </span><span style="color: #0000ff;">usuariodobanco </span><span style="color: #0000ff;"><strong>192.168.0.0/32</strong> <strong>md5</strong></span></p></blockquote>
<p>Na regra acima, o usuário <em>usuariodobanco</em> poderá conectar-se apenas ao banco <em>bancodedados</em> apenas se estiver dentro da rede 192.168.0.0.</p>
<p>Em breve escreverei outro post falando um pouco mais sobre as regras do <strong>pg_hba.conf</strong>.</p>
<p>Obrigado e espero que gostem!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcelosantino.com/artigos/linux-servidores/liberar-conexoes-remotas-ao-postgresql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Habilitando a linguagem PGPLSQL no PostgreSQL</title>
		<link>http://www.marcelosantino.com/artigos/habilitando-a-linguagem-pgplsql-no-postgresql</link>
		<comments>http://www.marcelosantino.com/artigos/habilitando-a-linguagem-pgplsql-no-postgresql#comments</comments>
		<pubDate>Sun, 11 Oct 2009 01:54:58 +0000</pubDate>
		<dc:creator>Marcelo Santino</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[configuração]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[Plpgsql]]></category>
		<category><![CDATA[postgre]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.marcelosantino.com/?p=167</guid>
		<description><![CDATA[Criando a linguagem pgplsql no servidor PostgreSQL. ]]></description>
			<content:encoded><![CDATA[<p>Existem diversas linguagens (<em>languages</em>) disponíveis no PostgreSQL para nos auxiliar nas tarefas do dia-a-dia dentro das triggers, funções e queries.</p>
<p>Agora falaremos sobre como habilitar a linguagem <strong>PLPGSQL </strong>em nosso banco de dados.</p>
<p><span id="more-167"></span></p>
<p>Antes de tudo é necessário ser o dono do banco de dados referente ou entrar como <em>postgres </em>para poder mexer em qualquer base do servidor Postgre.</p>
<p>Feito isso, rodamos o seguinte comando para liberar a linguagem:</p>
<blockquote>
<pre>CREATE TRUSTED PROCEDURAL LANGUAGE '<strong>plpgsql</strong>'
 HANDLER plpgsql_call_handler
 VALIDATOR plpgsql_validator;</pre>
</blockquote>
<p>Pronto, nossa linguagem está criada.</p>
<p>É recomendado que este comando seja executado no banco de dados template1 para a linguagem <strong>plpgsql </strong>ser inclúida como <em>default </em>em novos bancos de dados criados no servidor.</p>
<p>Agora é só aproveitar os novos recursos disponíveis e botar a mão na massa!</p>
<p>Aproveitem!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcelosantino.com/artigos/habilitando-a-linguagem-pgplsql-no-postgresql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Habilitando DBLINK no PostgreSQL</title>
		<link>http://www.marcelosantino.com/artigos/linux-servidores/habilitando-dblink-no-postgresql</link>
		<comments>http://www.marcelosantino.com/artigos/linux-servidores/habilitando-dblink-no-postgresql#comments</comments>
		<pubDate>Fri, 09 Oct 2009 01:52:35 +0000</pubDate>
		<dc:creator>Marcelo Santino</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Linux / Servidores]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[configuração]]></category>
		<category><![CDATA[contrib]]></category>
		<category><![CDATA[dblink]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.marcelosantino.com/?p=163</guid>
		<description><![CDATA[Como configurar as funções dblink em seu servidor PostgreSQL. ]]></description>
			<content:encoded><![CDATA[<p>Neste post falarei um pouco sobre como compilar, testar e um exemplo de uso do contrib DBLINK no Postgre.</p>
<p>Quando compilamos um PostgreSQL no servidor, por padrão o DBLINK assim como muitos outros contribs não vem habilitado por padrão. Mas é muito simples liberar essa excelente funcionalidade em nosso banco.</p>
<p><span id="more-163"></span>Na pasta do source do Postgre existe uma psta <em><strong>contrib</strong></em> e dentro dela, a pasta <em><strong>dblink</strong></em>.</p>
<p>É válido lembrar que esse procedimento será possível apenas se você possuir controle do servidor como <em>root </em>ou <em>sudo. </em>Caso não possua ou estiver utilizando um provedor de hospedagem será necessário solicitar a liberação do recurso pelos administradores.</p>
<p>O diretório do dblink será mais ou menos assim:</p>
<div id="attachment_6" class="wp-caption alignnone" style="width: 608px"><img class="size-full wp-image-6" title="Listagem de diretório dblink" src="http://postgresblog.wordpress.com/files/2009/10/dblink_dir.jpg" alt="Listagem de diretório dblink" width="598" height="193" /><p class="wp-caption-text">Listagem de diretório dblink</p></div>
<p>O processo de compilação é simples. Uma vez dentro do diretório, basta rodar os comandos:</p>
<blockquote>
<pre>make</pre>
</blockquote>
<p>e depois</p>
<blockquote>
<pre>make install</pre>
</blockquote>
<p>Após a mensagem de sucesso, o contrib já estará disponível no servidor, porém, ainda não disponível para usar no seu banco de dados. Para isso é preciso adicionar as funções do <em><strong>dblink </strong></em>ao seu banco.</p>
<p>Como root execute o seguinte comando (onde seubancodedados corresponde ao nome da sua base):</p>
<blockquote>
<pre>psql -U postgres <strong>seubancodedados</strong> &lt; dblink.sql</pre>
</blockquote>
<p>Isso criará uma série de <em>functions</em> dentro do seu banco como no exemplo abaixo:</p>
<p><img class="alignnone size-full wp-image-7" title="dblink_functions" src="http://postgresblog.wordpress.com/files/2009/10/dblink_functions.jpg" alt="dblink_functions" width="373" height="625" /></p>
<p>Pronto! O <em><strong>dblink </strong></em>está habilitado em seu banco de dados. É recomendado seguir o último passo apontando para o banco de dados <em>template1</em>. Isso fará com que todos os novos bancos de dados sejam criados já com as funções dblink dentro habilitadas.</p>
<blockquote>
<pre>psql -U postgres <strong>template1</strong> &lt; dblink.sql</pre>
</blockquote>
<p>Em outro post falarei como utilizar as funções do dblink.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcelosantino.com/artigos/linux-servidores/habilitando-dblink-no-postgresql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liberar conexões remotas ao PostgreSQL</title>
		<link>http://www.marcelosantino.com/artigos/liberar-conexoes-remotas-ao-postgresql-2</link>
		<comments>http://www.marcelosantino.com/artigos/liberar-conexoes-remotas-ao-postgresql-2#comments</comments>
		<pubDate>Tue, 06 Oct 2009 01:49:44 +0000</pubDate>
		<dc:creator>Marcelo Santino</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[conexão remota]]></category>
		<category><![CDATA[configuração]]></category>
		<category><![CDATA[pg_hba]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[postgresql.conf]]></category>

		<guid isPermaLink="false">http://www.marcelosantino.com/?p=160</guid>
		<description><![CDATA[Um breve exemplo de como liberar conexões externas ao servidor PostgreSQL configurando os arquivos postgresql.conf e o pg_hba.conf.]]></description>
			<content:encoded><![CDATA[<p>Neste tópico vou explicar como liberar conexões remotas pela rede a uma base de dados PostgreSQL.</p>
<p>Por padrão o PostgreSQL vem configurado para receber apenas conexões locais (localhost ou 127.0.0.1). Para conectar de outra máquina na rede é preciso alterar algumas configurações básicas em 2 arquivos.</p>
<p><span id="more-160"></span></p>
<p>São eles: <strong>postgresql.conf</strong> e <strong>pg_hba.conf</strong>.</p>
<p>No <strong>postgresql.conf</strong> vamos editar a seguinte linha:</p>
<blockquote><p><em>#listen_addresses = &#8216;localhost&#8217;</em> # what IP address(es) to listen on</p></blockquote>
<p>Como em todo arquivo de configuração em programas linux, o # na frente da linha significa um comentário e com isso desabilita o parâmetro seguinte, tomando seu valor <em>default</em>, que no caso é <em><strong>localhost</strong></em>. Descomente essa linha e substitua seu valor por *. Assim seu PostgreSQL estará apto a ouvir conexões de qualquer IP.Então essa linha ficará da seguinte forma:</p>
<blockquote><p><span style="color: #0000ff;"><em>listen_addresses = &#8216;<strong>*</strong>&#8216;</em> </span> <span style="color: #888888;"># what IP address(es) to listen on</span></p></blockquote>
<p>Isso não quer dizer que ele estará aberto para qualquer IP da rede. É possível criar políticas de acesso através de outro arquivo que falaremos a seguir.</p>
<p>Liberando as conexões no arquivo <strong>pg_hba.conf</strong>:</p>
<p>Este é o arquivo do Postgre responsável pela liberação de usuários, hosts e bancos de dados. Nele é possível dizer qual usuário de qual ip (ou rede) conectará a qual banco. É possível liberar qualquer usuário para coenctar a qualquer banco, mas esta é uma regra cautelosa a ser seguida pois pode comprometer a segurança do seu servidor de bases de dados.</p>
<p>Por padrão o arquivo vem com a seguinte configuração:</p>
<blockquote><p><span style="color: #888888;"># &#8220;local&#8221; is for Unix domain socket connections only</span><br />
<span style="color: #0000ff;">local   all         all                                              trust</span><br />
<span style="color: #888888;"># IPv4 local connections:</span><br />
<span style="color: #0000ff;"> host    all         all         127.0.0.1/32          trust</span><br />
<span style="color: #888888;"># IPv6 local connections:</span><br />
<span style="color: #0000ff;">host    all         all         ::1/128                      trust</span></p></blockquote>
<p>Pode haver alguma variação das configurações padrões de acordo com a versão utilizada, mas geralmente é algo que represente essas informações. Basicamente elas querem dizer que todas as conexões locais podem ser realizadas por qualquer usuário do banco a qualquer banco de dados.</p>
<p>Para liberar o acesso remoto basta criar uma nova regra seguindo o seguinte padrão:</p>
<blockquote><p><span style="color: #0000ff;">host    all         all        0.0.0.0/0               trust</span></p></blockquote>
<p>Com essa regra qualquer usuário de qualquer IP poderá se conectar a qualquer <em>database</em>.<br />
<span style="color: #ff0000;">Importante:</span> O parâmetro <em>trust </em>quer dizer que não será solicitada qualquer senha para conectar ao banco de dados. Então, qualquer pessoa com acesso à sua rede poderá se conectar ao servidor PostgreSQL sem nenhuma restrição. Se a sua rede for restrita como uma turma de um curso ou um ambiente de desenvolvimento interno de empresa não há riscos, porém, é necessário possuir um ambiente de rede interno isolado.</p>
<p>Este parâmetro é útil quando você ainda não se conectou ao banco para criar uma senha de acesso ao usuário postgres (do banco e não do sistema operacional). Então você se conecta e reseta a senha do usuário. Logo em seguida, altere o parâmetro para md5. Assim, uma senha será solicitada ao tentar conectar-se ao servidor Postgre.</p>
<p>Assim ficará a regra de liberação:</p>
<blockquote><p><span style="color: #0000ff;">host    all </span><span style="color: #0000ff;"> all </span><span style="color: #0000ff;">0.0.0.0/0               <strong>md5</strong></span></p></blockquote>
<p>É possível também liberar o acesso apenas a uma rede específica:</p>
<blockquote><p><span style="color: #0000ff;">host    all </span><span style="color: #0000ff;"> all </span><span style="color: #0000ff;"><strong>192.168.0.0/32</strong> <strong>md5</strong></span></p></blockquote>
<p>Ou também, informar qual usuário poderá conectar:</p>
<blockquote><p><span style="color: #0000ff;">host    all </span><span style="color: #0000ff;">usuariodobanco </span><span style="color: #0000ff;"><strong>192.168.0.0/32</strong> <strong>md5</strong></span></p></blockquote>
<p>Também informar qual o banco de dados a ser conectaro por este usuário:</p>
<blockquote><p><span style="color: #0000ff;">host    bancodedados </span><span style="color: #0000ff;">usuariodobanco </span><span style="color: #0000ff;"><strong>192.168.0.0/32</strong> <strong>md5</strong></span></p></blockquote>
<p>Na regra acima, o usuário <em>usuariodobanco</em> poderá conectar-se apenas ao banco <em>bancodedados</em> apenas se estiver dentro da rede 192.168.0.0.</p>
<p>Em breve escreverei outro post falando um pouco mais sobre as regras do <strong>pg_hba.conf</strong>.</p>
<p>Obrigado e espero que gostem!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcelosantino.com/artigos/liberar-conexoes-remotas-ao-postgresql-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ignorando case sensitive na consulta SQL</title>
		<link>http://www.marcelosantino.com/artigos/sql/ignorando-case-sensitive-na-consulta-sql</link>
		<comments>http://www.marcelosantino.com/artigos/sql/ignorando-case-sensitive-na-consulta-sql#comments</comments>
		<pubDate>Sun, 04 Oct 2009 16:30:49 +0000</pubDate>
		<dc:creator>Marcelo Santino</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[case-sensitive]]></category>
		<category><![CDATA[consulta]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.marcelosantino.com/?p=112</guid>
		<description><![CDATA[Aprenda a fazer consultas SQL ignorando o CASE SENSITIVE. ]]></description>
			<content:encoded><![CDATA[<p>Vou mostrar aqui uma solução que tenho utilizado frequentemente em alguns trabalhos, substituindo um pouco uma série de tratamentos dentro da query e consequentemente, economizando um tempinho!</p>
<p><span id="more-112"></span><strong>Problema</strong>:<br />
Como fazer buscas em banco de dados ignorando letras maiusculas/minusculas?</p>
<p>Geralmente os SGBDs são case sensitive e é muito comum recorrermos a alternativas para transformar os textos na hora de comparar valores do banco case sensitive em consultas que fazemos.</p>
<p>Exemplo de uma query comum:</p>
<blockquote><p>SELECT * FROM cliente WHERE nome LIKE &#8216;%Marcelo%&#8217;;</p></blockquote>
<p>Nessa query, retornarão apenas clientes que possuam Marcelo (com M maiúsculo) no nome. Se o valor consultado estivesse em letras minúsculas (marcelo), ignoraria todos os nomes em maiúsculos cadastrados no banco.</p>
<p><strong>Alternativa Padrão:</strong></p>
<p>Algumas pessoas passaram a utilizar a função UPPER para eliminar esse problema:</p>
<blockquote><p>SELECT * FROM cliente WHERE UPPER(nome) LIKE &#8216;%&#8217; || UPPER(&#8216;Marcelo&#8217;) || &#8216;%&#8217;;</p></blockquote>
<p>Nesse caso, o valor armazenado na coluna nome será transformado para CAIXA ALTA e o mesmo acontecerá para o valor consultado. No caso, o valor Marcelo será transformado para MARCELO.</p>
<p>Isso funciona até certo ponto, pois essa função não converte letras acentuadas e caracteres especiais. No caso, João seria transformado para JOãO. Creio que esse não é o nosso objetivo, nesse caso.</p>
<p><strong>Eis a solução para o problema:</strong></p>
<p>Sendo assim, a melhor alternativa para esse caso seria usar o termo &#8220;~*&#8221; (til + asterístico). Nesse caso, o Postgre automaticamente procura por qualquer ocorrência do valor pesquisado, ignorando o case sensitive.</p>
<blockquote><p>SELECT * FROM cliente WHERE nome <strong>~*</strong> &#8216;Marcelo&#8217;;</p></blockquote>
<p>Essa técnica funciona em PostgreSQL e MySQL mas nunca testei no Oracle ou MSSQL. Quem experimentar pode compartilhar conosco o resultado com comentários.</p>
<p><a href="http://compare.buscape.com.br/categoria?id=7340&amp;lkout=1&amp;kw=postgresql&amp;site_origem=9000217" target="_blank">Pesquise por hospedagens de sites com MySQL e PostgreSQL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcelosantino.com/artigos/sql/ignorando-case-sensitive-na-consulta-sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
