<?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>Juliano 777</title>
	<atom:link href="http://juliano777.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://juliano777.wordpress.com</link>
	<description>Dicas e pequenos artigos sobre Software Livre</description>
	<lastBuildDate>Mon, 19 Dec 2011 12:59:35 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='juliano777.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/0d9117af12f80200b428fc7b6ab8ed42?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Juliano 777</title>
		<link>http://juliano777.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://juliano777.wordpress.com/osd.xml" title="Juliano 777" />
	<atom:link rel='hub' href='http://juliano777.wordpress.com/?pushpress=hub'/>
		<item>
		<title>nextsysid.sh: Shell Script para Determinar o Próximo ID de Sistema</title>
		<link>http://juliano777.wordpress.com/2011/04/17/nextsysid-sh-shell-script-para-determinar-o-proximo-id-de-sistema/</link>
		<comments>http://juliano777.wordpress.com/2011/04/17/nextsysid-sh-shell-script-para-determinar-o-proximo-id-de-sistema/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 16:26:55 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[Shell Script]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=110</guid>
		<description><![CDATA[Algumas vezes precisamos criar usuários e/ou grupos de sistema, os quais geralmente são IDs abaixo de 1000 para serem usuários de serviços. Abaixo vai o código fonte e exemplos de uso. Salve o arquivo com o nome nextsysid.sh e dê a permissão de execução: chmod +x nextsysid.sh Exemplos de Uso Próximo ID disponível para usuário [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=110&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre><span style="color:#000000;">Algumas vezes precisamos criar usuários e/ou grupos de sistema, os quais geralmente são IDs abaixo de 1000 para serem usuários de serviços. Abaixo vai o código fonte e exemplos de uso.</span>
<pre class="brush: powershell;">
#!/bin/bash 

# nextsysid.sh 

# Script para gerar o próximo ID de sistema vago 

# Elaborado por Juliano Atanazio
# 17/04/2011 

if [ -f /etc/adduser.conf ]; then
    source /etc/adduser.conf 

# Faz a leitura do arquivo onde contém variáveis sobre
# quais devem ser os últimos IDs de usuários e grupos
# Obs.: Debian e derivados

else

# Para Red Hat e derivados

    FIRST_SYSTEM_UID='1'
    LAST_SYSTEM_UID='499'    
    FIRST_SYSTEM_GID='1'
    LAST_SYSTEM_GID='499'
fi

case $1 in
# Opção para o próximo ID de usuário de sistema
     'user')                    
# Primeiro ID de usuário de sistema
        ID_MIN=$FIRST_SYSTEM_UID    
# Último ID de usuário de sistema
        ID_MAX=$LAST_SYSTEM_UID; 
# Arquivo de IDs para usuários  
        FILE='/etc/passwd';        
        ;;

# Opção para o próximo ID de grupo de sistema 
    'group')                

# Primeiro ID de grupo de sistema
        ID_MIN=$FIRST_SYSTEM_GID    
# Último ID de grupo de sistema
         ID_MAX=$LAST_SYSTEM_GID; 

# Arquivo de IDs para grupos   
        FILE='/etc/group';        
        ;;
    *)
# Exibe mensagem sobre parâmetros corretos
         echo -e &quot;$0 {user|group}&quot;;    
        exit 1;
        ;;
esac 

# ----- Extrai todos IDs de sistema do arquivo -----

IDs=$(cat $FILE | cut -f3 -d: | sort -n )            

SYS_IDs=&quot;&quot;

for ID in $IDs; do
    if [ $ID -ge $ID_MIN ] &amp;&amp; [ $ID -le $ID_MAX ]; then
        SYS_IDs=&quot;$SYS_IDs $ID&quot;
    fi
done

# ----- Extrai o próximo ID vago de sistema -----

i=$ID_MIN
NEXT_ID=$(($ID_MIN+1))

for SYS_ID in $SYS_IDs; do

    if [ $SYS_ID -ne $i ]; then
        break;    
    fi

    let i++;

    NEXT_ID=$i

done

# Imprime na tela o próximo ID
echo $NEXT_ID
</pre>

Salve o arquivo com o nome nextsysid.sh e dê a permissão de
execução:

chmod +x nextsysid.sh

<span style="color:#000000;"><strong>Exemplos de Uso</strong> Próximo ID disponível para usuário de sistema</span>

<span style="color:#808080;">./nextsysid.sh user</span>

<span style="color:#c0c0c0;"><em>114</em></span>

<span style="color:#000000;">Próximo ID disponível para grupo de sistema</span>

<span style="color:#808080;">./nextsysid.sh group <em><span style="color:#c0c0c0;">126 </span></em><span style="color:#000000;">Até a próxima dica!!! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </span></span></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=110&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2011/04/17/nextsysid-sh-shell-script-para-determinar-o-proximo-id-de-sistema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>AUTO INCREMENTO E PREENCHIMENTO COM ZEROS À ESQUERDA NO ORACLE</title>
		<link>http://juliano777.wordpress.com/2010/10/30/auto-incremento-e-preenchimento-com-zeros-a-esquerda-no-oracle/</link>
		<comments>http://juliano777.wordpress.com/2010/10/30/auto-incremento-e-preenchimento-com-zeros-a-esquerda-no-oracle/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 13:16:32 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=102</guid>
		<description><![CDATA[A Idéia No MySQL há dois recursos muito interessantes que são o AUTO_INCREMENT e o ZEROFILL. O AUTO_INCREMENT que como o próprio nome sugere, incrementa automaticamente a cada INSERT. Esse recurso também está disponível no PostgreSQL (serial) e no MS SQL Server (identity). Já o ZEROFILL, preenche com zeros à esquerda. Algo do tipo: 27 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=102&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong></strong><strong>A Idéia</strong></p>
<p>No MySQL há dois recursos muito interessantes que são o AUTO_INCREMENT e o ZEROFILL.<br />
O AUTO_INCREMENT que como o  próprio nome sugere, incrementa automaticamente a cada INSERT. Esse  recurso também está disponível no PostgreSQL (serial) e no MS SQL Server  (identity).<br />
Já o ZEROFILL, preenche com zeros à esquerda. Algo do tipo: 27 -&gt; 00027.<br />
<strong><br />
No Oracle</strong></p>
<p>No Oracle essas coisas, lógico, também são possíveis. Mas darão um pouco mais de trabalho.<br />
Vamos construir um exemplo em que, numa tabela de funcionarios há um  campo chamado id_funcionario, o qual é a matrícula de um colaborador  contendo 5 dígitos, e, em casos que o número de dígitos seja inferior a  5, será preenchido com zeros, por exemplo: 00352. E também esse número  será incrementado a cada<br />
INSERT para fazermos o &#8220;AUTO_INCREMENT&#8221;.<br />
<strong><br />
Criação da tabela</strong></p>
<p>CREATE TABLE tb_funcionarios(<br />
id_funcionario CHAR(5),<br />
nome_funcionario VARCHAR(30),<br />
CONSTRAINT pk_funcionario PRIMARY KEY (id_funcionario)<br />
);</p>
<p>Até então nada de muito especial, talvez o fato do campo de  identificação ser CHAR e não INT&#8230; A resposta pra isso é muito simples;  ninguém soma matrículas <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>SEQUENCES &#8211; Criando uma sequência</strong></p>
<p>São Objetos que armazenam sequências numéricas:</p>
<p>CREATE SEQUENCE sq_funcionario START WITH 1 INCREMENT BY 1 NOMAXVALUE;</p>
<p><strong>Relacionando a Sequência com a Tabela através de um Gatilho</strong></p>
<p>CREATE OR REPLACE TRIGGER tg_id_funcionario BEFORE INSERT ON tb_funcionarios<br />
FOR EACH ROW<br />
BEGIN<br />
SELECT lpad(sq_funcionario.nextval,5,&#8217;0&#8242;) INTO :NEW.id_funcionario FROM DUAL;<br />
END;</p>
<p><strong>A Função lpad</strong></p>
<p>No Oracle,  qualquer consulta necessita de um &#8220;FROM&#8221; para poder funcionar, então  foi usada a tabela DUAL (para maiores informações procure no SQL  Reference por &#8220;Selecting from the DUAL Table&#8221;).<br />
A função &#8220;lpad&#8221; no caso teve  três parâmetros respectivamente: o número, quantidade de dígitos e  caractere para preencher à esquerda. Veja um exemplo prático:</p>
<p>SELECT lpad(352,5,&#8217;0&#8242;) FROM DUAL;</p>
<p>Retornou: 00352</p>
<p><strong>E por fim, vamos inserir algumas coisas na tabela para testar</strong></p>
<p>INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Chiquinho da Silva&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Astrogilda Santos&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Estroncio Veiga&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Wolframia Costa&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Teobaldo Castro&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Equinocia Tavares&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Gisevalda Almeida&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Gioconda Ramires&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Berília Rocha&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Adergildo Sales&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Criptonio Dias&#8217;);<br />
INSERT INTO tb_funcionarios (nome_funcionario) VALUES (&#8216;Rubidio Jose&#8217;);</p>
<p>Obs.: Nomes fictícios, qualquer semelhança com a realidade é mera coincidência <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>O resultado</strong></p>
<p>SELECT * FROM tb_funcionarios;</p>
<p>Conclusão</p>
<p>O resultado final foi obtido através de relacionamento entre objetos,  no qual um gatilho (TRIGGER) é acionado quando um INSERT é feito na  tabela e<br />
faz com que o valor inserido para o  campo &#8220;id_funcionario&#8221; seja automaticamente incrementado, pegando o  próximo número da sequência e o preenchendo com zeros à esquerda.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=102&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2010/10/30/auto-incremento-e-preenchimento-com-zeros-a-esquerda-no-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>Configuração Manual do Ambiente JDK no Ubuntu + Plugin Java para Mozilla</title>
		<link>http://juliano777.wordpress.com/2010/07/16/configuracao-manual-do-ambiente-jdk-no-ubuntu-plugin-java-para-mozilla/</link>
		<comments>http://juliano777.wordpress.com/2010/07/16/configuracao-manual-do-ambiente-jdk-no-ubuntu-plugin-java-para-mozilla/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 14:52:52 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=80</guid>
		<description><![CDATA[Um pequeno tutorial para ajudar a configurar o ambiente Java para programação de forma mais flexível, sem depender do apt-get. Além de configurar o plugin Java para navegadores como Firefox, Google Chrome, Opera, Konqueror, etc&#8230; De início, temos que baixar o JDK no site: http://java.sun.com/products/archive/index.html Passos do site: JDK/JRE &#8211; 6 -&#62; [ Escolha a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=80&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Um pequeno tutorial para ajudar a configurar o ambiente Java para programação de forma mais flexível, sem depender do apt-get. Além de configurar o plugin Java para navegadores como Firefox, Google Chrome, Opera, Konqueror, etc&#8230;</p>
<p>De início, temos que baixar o JDK no site:</p>
<p><a href="http://java.sun.com/products/archive/index.html" target="_blank">http://java.sun.com/products/archive/index.html</a></p>
<p>Passos do site:</p>
<p>JDK/JRE &#8211; 6 -&gt; [ Escolha a última versão ] -&gt; Go</p>
<p>Download JDK -&gt; Plataform: [ "Linux x64" para sistemas de 64 bits e "Linux" para 32 ] -&gt; Continue<br />
jdk-[versão].bin (não pode ser rpm.bin!) -&gt; Salve em /tmp</p>
<p>Configurações e comandos</p>
<p>Abra um terminal e dê os comandos:</p>
<p><span style="color:#003300;">cd /tmp</span></p>
<p><span style="color:#003300;">chmod +x jdk-*.bin # Torna o arquivo executavel<br />
</span></p>
<p><span style="color:#003300;">./jdk-[versão].bin # Roda o executável<br />
</span></p>
<p>[ Pressione "q" a não ser que queira ler todo o texto <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ] -&gt; [ Escreva "yes" (sem as aspas) ] -&gt; &lt;Enter&gt;</p>
<p><span style="color:#003300;">mv jdk1* jdk # Deixa um nome mais amigavel<br />
</span></p>
<p><span style="color:#003300;">sudo mv jdk /opt/ # Move o diretorio jdk para /opt</span></p>
<p><span style="color:#003300;"><span style="color:#000000;">Para sistemas de 64 bits:</span></span></p>
<p><span style="color:#003300;"># Cria um link para o plugin Java para Mozilla<br />
</span></p>
<p><span style="color:#008000;">sudo ln -s /opt/jdk/jre/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/<br />
</span></p>
<p>Para sistemas de 32 bits:</p>
<p><span style="color:#339966;"># Cria um link para o plugin Java para Mozilla</span></p>
<p><span style="color:#339966;">sudo ln -s /opt/jdk/jre/lib/i386/libnpjp2.so /usr/lib/mozilla/plugins/<br />
</span></p>
<p>Edite o arquivo /etc/bash.bashrc e adicione as seguintes linhas:</p>
<p><span style="color:#000080;">export JAVA_HOME=</span>&#8216;<span style="color:#000080;">/opt/jdk</span>&#8216;<br />
<span style="color:#000080;"> export JRE_HOME=</span>&#8216;<span style="color:#000080;">/opt/jdk/jre</span>&#8216;<br />
<span style="color:#000080;"> export CLASSPATH=</span>&#8216;<span style="color:#000080;">.:/opt/jdk/jre/lib</span>&#8216;<br />
<span style="color:#000080;"> export PATH=</span>&#8220;<span style="color:#000080;">$PATH:$JAVA_HOME/bin:$JRE_HOME/bin</span>&#8220;</p>
<p>Se for programar apenas em modo texto, no shell (haja coragem!!!), basta executar:</p>
<p><span style="color:#003300;">source /etc/bash.bashrc</span></p>
<p>Ou então para poder usufruir plenamente, simplesmente encerre a sessão na qual seu usuário está logado e entre novamente.</p>
<p>Pode ser que ao instalar via apt-get algum programa que necessite do jdk ele venha instalar automaticamente coisas como openjdk, icedtea que mais atrapalham do que ajudam. Então será preciso remover esses pacotes (indesejados) com o comando <span style="color:#003300;">apt-get &#8211;purge remove nome_do_pacote</span>. Uma boa maneira para se verificar se existem tais pacotes é fazendo uma busca com o comando:</p>
<p><span style="color:#003300;">dpkg -l | egrep &#8220;(jdk|java|icedtea)&#8221;</span></p>
<p>Se for o caso, desinstale o que não interessar para evitar conflitos com a instalação manual.</p>
<p>Agora o ambiente está pronto! É só começar a programar!</p>
<p> <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=80&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2010/07/16/configuracao-manual-do-ambiente-jdk-no-ubuntu-plugin-java-para-mozilla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>PostgreSQL com &#8220;ZEROFILL&#8221; e &#8220;AUTO_INCREMENT&#8221;</title>
		<link>http://juliano777.wordpress.com/2010/03/20/postgresql-com-zerofill-e-auto_increment/</link>
		<comments>http://juliano777.wordpress.com/2010/03/20/postgresql-com-zerofill-e-auto_increment/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 00:32:14 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[AUTO_INCREMENT]]></category>
		<category><![CDATA[lpad]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SEQUENCE]]></category>
		<category><![CDATA[SERIAL]]></category>
		<category><![CDATA[ZEROFILL]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=72</guid>
		<description><![CDATA[Este artigo é dirigido especialmente àqueles que vêm do MySQL para o Postgres. Dois recursos interessantes que existem no MySQL, o ZEROFILL (preenchimento com zeros à esquerda) e o  AUTO_INCREMENT (incremento automático). Como fazer o AUTO_INCREMENT no PostgreSQL O recurso de auto incremento no Postgres é feito através de SEQUENCES (sequências), que é um tipo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=72&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Este artigo é dirigido especialmente àqueles que vêm do MySQL para o Postgres.<br />
Dois recursos interessantes que existem no MySQL, o ZEROFILL (preenchimento com zeros à esquerda) e o  AUTO_INCREMENT (incremento automático).</p>
<p><strong>Como fazer o AUTO_INCREMENT no PostgreSQL</strong></p>
<p>O recurso de auto incremento no Postgres é feito através de SEQUENCES (sequências), que é um tipo de objeto que armazena sequências.<br />
Em um exemplo mais simples criamos a tabela sem criar a SEQUENCE explicitamente. A palavra chave SERIAL, na verdade é o tipo INTEGER e faz com que uma sequência seja criada implicitamente para o campo:</p>
<p><span style="color:#339966;">CREATE TABLE tb_teste(<br />
id SERIAL PRIMARY KEY<br />
);</span></p>
<p>Dentre as mensagens exibidas após o comando acima, destaca-se:</p>
<p><span style="color:#999999;">NOTICE:  CREATE TABLE will create implicit sequence &#8220;tb_teste_id_seq&#8221; for serial column &#8220;tb_teste.id&#8221;</span></p>
<p>Vejamos a descrição da tabela:</p>
<p><span style="color:#339966;">\d tb_teste</span></p>
<p><span style="color:#999999;">Table &#8220;public.tb_teste&#8221;<br />
column |  Type     |                       Modifiers<br />
&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
id              | integer  | not null default nextval(&#8216;tb_teste_id_seq&#8217;::regclass)<br />
Indexes:<br />
&#8220;tb_teste_pkey&#8221; PRIMARY KEY, btree (id)</span></p>
<p>Como podemos ver, não existe &#8220;mágica&#8221; e sim LÓGICA! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  -&gt; Se quiser um auto incremento, tem que ter uma sequência, a qual é o valor padrão do campo ao qual está associada, nem que seja criada implicitamente.</p>
<p><strong>Criação de uma Sequência</strong></p>
<p>Incrementa com  razão = 1 (lembre-se das aulas de progressão aritimética <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), valor mínimo = 0, valor máximo = 99999:</p>
<p><span style="color:#339966;">CREATE SEQUENCE sq_exemplo INCREMENT 1 MINVALUE 0 MAXVALUE 99999;</span></p>
<p><strong>Enfim, o ZEROFILL </strong></p>
<p>Criação da Tabela</p>
<p><span style="color:#339966;">CREATE TABLE tb_exemplo(</span></p>
<p><span style="color:#339966;"> id CHAR(5) DEFAULT lpad(nextval(&#8216;sq_exemplo&#8217;)::CHAR(5),5,&#8217;0&#8242;) PRIMARY KEY<br />
);</span></p>
<p>Repare que desta vez houve a mensagem de criação de sequência implícita. Isso porque a mesma foi criada explicitamente.</p>
<p>E onde está o EFEITO ESPECIAL?</p>
<p>1 &#8211; A restrição DEFAULT, que atribui um valor padrão ao campo;<br />
2 &#8211; A função nextval que retorna o próximo valor da sequência, sua sintaxe é: nextval(&#8216;nome_da_sequence&#8217;);<br />
3 &#8211; A função lpad que recebe aqui três parâmetros: text, integer e text.<br />
No primeiro parâmetro, nextval(&#8216;sq_exemplo&#8217;)::CHAR(5), como a função nextval retorna um integer,  foi preciso converter para um formato texto, que no caso foi CHAR(5).<br />
No segundo parâmetro, 5 é o tamanho máximo da string que será preenchida com zeros à esquerda.<br />
E no terceiro parâmetro, &#8217;0&#8242;, é o caractere que será usado para preencher à esquerda caso de a string (primeiro parâmetro) for menor que o tamanho máximo (segundo parâmetro).</p>
<p><strong>Teste e Conclusão</strong></p>
<p><span style="color:#339966;">INSERT INTO tb_exemplo VALUES (DEFAULT),(DEFAULT),(DEFAULT),(DEFAULT),(DEFAULT);</span></p>
<p>O comando acima é um INSERT múltiplo na tabela que só tem um campo e que o mesmo possui um valor padrão (DEFAULT) e esse valor é o próximo numero da sequência, com preenchimento de zeros à esquerda.</p>
<p>Agora vejamos o resultado:</p>
<p><span style="color:#339966;">SELECT * from tb_exemplo ;</span></p>
<p><span style="color:#999999;">id<br />
&#8212;&#8212;-<br />
00000<br />
00001<br />
00002<br />
00003<br />
00004<br />
00005<br />
(6 rows)</span></p>
<p>Vale a pena repetir os testes para ver  os valores inseridos.</p>
<p>Enfim, confie no poder do grande elefante e tome suas rédeas para dominá-lo XD.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=72&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2010/03/20/postgresql-com-zerofill-e-auto_increment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>Concedendo ou Revogando Privilégios em Colunas</title>
		<link>http://juliano777.wordpress.com/2009/12/15/concedendo-ou-revogando-privilegios-em-colunas/</link>
		<comments>http://juliano777.wordpress.com/2009/12/15/concedendo-ou-revogando-privilegios-em-colunas/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 22:35:24 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[8.4]]></category>
		<category><![CDATA[COLUMN]]></category>
		<category><![CDATA[coluna]]></category>
		<category><![CDATA[Conceder]]></category>
		<category><![CDATA[GRANT]]></category>
		<category><![CDATA[granular]]></category>
		<category><![CDATA[Privilégios]]></category>
		<category><![CDATA[Revogar]]></category>
		<category><![CDATA[REVOKE]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=65</guid>
		<description><![CDATA[Antes da versão 8.4 só era possível fazer o controle de acesso de forma mais granular a uma tabela criando uma view especificando as colunas permitidas. Agora pode dar ou tirar privilégios da seguinte forma: GRANT SELECT (coluna1,coluna2,&#8230;) ON tabela TO role; Para o exemplo prático a criação de role: CREATE ROLE limitado LOGIN NOSUPERUSER; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=65&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">Antes da versão 8.4 só era possível fazer o controle de acesso de forma mais granular a uma tabela criando uma view especificando as colunas permitidas.</span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> Agora pode dar ou tirar privilégios da seguinte forma:</span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> <span style="color:#008000;">GRANT SELECT (coluna1,coluna2,&#8230;) ON tabela TO role;</span></span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> Para o exemplo prático a criação de role:</span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> <span style="color:#008000;">CREATE ROLE limitado LOGIN NOSUPERUSER;</span></span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> Só terá acesso às colunas <em>campoX</em> e <em>campoY</em>, sendo de somente leitura da tabela <em>tb_exemplo</em>:</span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> <span style="color:#008000;">GRANT SELECT (campoX,campoY) ON tb_exemplo TO limitado;</span></span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">De forma análoga será revogado (retirado) o acesso à coluna “campoX”:</span></span></p>
<p><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> <span style="color:#008000;">REVOKE SELECT (campoX) ON tb_exemplo FROM limitado;</span></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=65&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2009/12/15/concedendo-ou-revogando-privilegios-em-colunas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>PostgreSQL &#8211; Função Replace: Corrigindo Inserções Equivocadas</title>
		<link>http://juliano777.wordpress.com/2009/12/04/postgresql-funcao-replace-corrigindo-insercoes-equivocadas/</link>
		<comments>http://juliano777.wordpress.com/2009/12/04/postgresql-funcao-replace-corrigindo-insercoes-equivocadas/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 16:54:55 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[função]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=53</guid>
		<description><![CDATA[Imaginemos uma situação em que uma pessoa encarregada de cadastrar nomes de pessoas em um banco de dados. E que essa pessoa por algum motivo acabava confundindo os sobrenomes &#8220;dos Santos&#8221; e &#8220;da Silva&#8221;. No exemplo, o cadastro das pessoas que constam como &#8220;da Silva&#8221;, na verdade o sobrenome é &#8220;dos Santos&#8221;. Como corrigir isso??? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=53&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Imaginemos uma situação em que uma pessoa encarregada de cadastrar nomes de pessoas em um banco de dados. E que essa pessoa por algum motivo acabava confundindo os sobrenomes &#8220;dos Santos&#8221; e &#8220;da Silva&#8221;.</p>
<p>No exemplo, o cadastro das pessoas que constam como &#8220;da Silva&#8221;, na verdade o sobrenome é &#8220;dos Santos&#8221;. Como corrigir isso??? Fazer um UPDATE em cada linha? Há uma maneira simples, rápida e eficiente para isso:</p>
<p><span style="color:#808080;">&#8211;Criação da Tabela de exemplo:</span></p>
<p><span style="color:#008000;">CREATE TEMP TABLE tb1(</span></p>
<p><span style="color:#008000;">nome varchar(25)</span></p>
<p><span style="color:#008000;">);</span></p>
<p><span style="color:#808080;">&#8211;Inserção dos valores (equivocadamente):</span></p>
<p><span style="color:#008000;">INSERT INTO tb1 VALUES (&#8216;Genésio Silva&#8217;),</span></p>
<p><span style="color:#008000;">(&#8216;Estrobaldo da Silva&#8217;),</span></p>
<p><span style="color:#008000;">(&#8216;Aventina Silva&#8217;),</span></p>
<p><span style="color:#008000;">(&#8216;Eloécio da Silva&#8217;);</span></p>
<p><span style="color:#808080;">&#8211;Arrumando o erro:</span></p>
<p><span style="color:#008000;">UPDATE tb1 SET nome = replace(nome,&#8217;da Silva&#8217;,'dos Santos&#8217;);</span></p>
<p><span style="color:#808080;">&#8211;Verificando o resultado:</span></p>
<p><span style="color:#008000;">SELECT * from tb1 ;</span></p>
<p><span style="color:#333399;"> nome</span></p>
<p><span style="color:#808080;"><span><span style="color:#333399;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></span></span></p>
<p><span style="color:#333399;">Genésio Silva</span></p>
<p><span style="color:#333399;">Estrobaldo dos Santos</span></p>
<p><span style="color:#333399;">Aventina Silva</span></p>
<p><span style="color:#333399;">Eloécio dos Santos</span></p>
<p><span style="color:#333399;">(4 rows)</span></p>
<p>Como pode se constatar apenas as ocorrências da string &#8220;da Silva&#8221; e não &#8220;Silva&#8221; foram alteradas para o novo valor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=53&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2009/12/04/postgresql-funcao-replace-corrigindo-insercoes-equivocadas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>Consulta aleatória com PostgreSQL</title>
		<link>http://juliano777.wordpress.com/2009/08/13/consulta-aleatoria-com-postgresql/</link>
		<comments>http://juliano777.wordpress.com/2009/08/13/consulta-aleatoria-com-postgresql/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 21:25:23 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[random()]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=50</guid>
		<description><![CDATA[Ao invés de apresentarmos resultados de uma consulta de forma ordenada, pode ser interessante apresentá-los sem uma ordem específica. Uma forma aleatória. No PostgreSQL temos a função random() que nos ajudará para isso. Exemplo: SELECT campo1,campo2,campoN FROM tabela WHERE campo1=&#8217;valor&#8217; ORDER BY random() LIMIT 5; De acordo com o exemplo, conforme a condição de filtragem, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=50&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ao invés de apresentarmos resultados de uma consulta de forma ordenada, pode ser interessante apresentá-los sem uma ordem específica. Uma forma aleatória.<br />
No PostgreSQL temos a função random() que nos ajudará para isso.<br />
Exemplo:</p>
<blockquote><p>SELECT campo1,campo2,campoN FROM tabela WHERE campo1=&#8217;valor&#8217; ORDER BY random() LIMIT 5;</p></blockquote>
<p>De acordo com o exemplo, conforme a condição de filtragem, os resultados serão apresentados em 5 (cinco) por vez e de forma aleatória.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=50&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2009/08/13/consulta-aleatoria-com-postgresql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>Atualizando a hora do Windows por um Servidor Linux NTP</title>
		<link>http://juliano777.wordpress.com/2009/06/24/atualizando-a-hora-do-windows-por-um-servidor-linux-ntp/</link>
		<comments>http://juliano777.wordpress.com/2009/06/24/atualizando-a-hora-do-windows-por-um-servidor-linux-ntp/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 14:17:40 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidor NTP]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=45</guid>
		<description><![CDATA[Com as devidas permissões de usuário, no prompt DOS digite os comandos: net time /setsntp:ip_do_serrvidor_NTP net stop w32time net start w32time Aguarde alguns segundos e terá o horário atualizdo!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=45&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Com as devidas permissões de usuário, no prompt DOS digite os comandos:</p>
<p>net time /setsntp:ip_do_serrvidor_NTP<br />
net stop w32time<br />
net start w32time</p>
<p>Aguarde alguns segundos e terá o horário atualizdo! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=45&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2009/06/24/atualizando-a-hora-do-windows-por-um-servidor-linux-ntp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>Gerando senhas com o pwgen</title>
		<link>http://juliano777.wordpress.com/2008/12/27/gerando-senhas-com-o-pwgen/</link>
		<comments>http://juliano777.wordpress.com/2008/12/27/gerando-senhas-com-o-pwgen/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 12:34:12 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[generate passwords]]></category>
		<category><![CDATA[gerador de senhas]]></category>
		<category><![CDATA[gerar senhas]]></category>
		<category><![CDATA[password generator]]></category>
		<category><![CDATA[pwgen]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=28</guid>
		<description><![CDATA[Política de senhas é algo que todo administrador de redes deve se preocupar, mas, muitas vezes se deparam num pequeno problema: o de elaborá-las&#8230; Como fazer isso? De cabeça? Data de aniversário, casamento ou uma outra qualquer? Para um cracker que possui a habilidade de engenharia social descobrir uma senha dessas é razoavelmente fácil. Até [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=28&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Política de senhas é algo que todo administrador de redes deve se preocupar, mas, muitas vezes se deparam num pequeno problema:<br />
o de elaborá-las&#8230; Como fazer isso? De cabeça? Data de aniversário, casamento ou uma outra qualquer? Para um cracker que possui a habilidade de engenharia social descobrir uma senha dessas é razoavelmente fácil.<br />
Até conhecer o pwgen, eu mesmo pra elaborar minhas senhas queimava alguns neurônios pensando em seqüências de caracteres &#8220;doidas&#8221;, como diziam aqueles para quem as entregava (risos).<br />
No entanto, a partir do momento que conheci o pequeno utilitário pwgen as coisas mudaram e facilitaram pra mim nesse assunto.<br />
Vamos primeiro instalar o utilitário:</p>
<p><code><b>sudo apt-get install pwgen</b></code></p>
<p>Fiz uma tradução de seu help (pwgen &#8211;help):<br />
<code><br />
Opções suportadas pelo pwgen:</p>
<p>-c ou --capitalize<br />
Inclui no mínimo uma letra maiúscula na senha<br />
-A ou --no-capitalize<br />
Não inclui letras maiúsculas na senha<br />
-n ou --numerals<br />
Inclui no mínimo um número na senha<br />
-0 ou --no-numerals<br />
Não inclui números na senha<br />
-y ou --symbols<br />
Inclui no mímino um carácter especial na senha<br />
-s ou --secure<br />
Gera senhas completamente aleatórias<br />
-B ou --ambiguous<br />
Não inclui caracteres ambíguos na senha<br />
-h ou --help<br />
Exibe ajuda do comando<br />
-H ou --sha1=path/to/file[#seed]<br />
Use hash sha1 de um dado arquivo como gerador aleatório<br />
-C<br />
Exibe as senhas geradas em colunas<br />
-1<br />
Não exibe as senhas geradas em colunas<br />
-v ou --no-vowels<br />
Não utiliza vogais nas senhas<br />
</code><br />
Se for simplesmnete digitado o nome do executável teremos um resultado como o que segue abaixo:<br />
<code><br />
<font size="-2"><br />
Thietho3 lahC7yoV oox3Asah fohch4Ej ooChoi7e ileeCae3 oMai8ui7 feV2cahk<br />
ew1Quomu teshou1U FaoNo9oh irooMei1 SheiGh5h chu7Chee eiDei0oh Ojie7eik<br />
Keegieb5 pu7aiGae Poh8quae Ti0poo5v Ahkoo0Ee uCh4thie deiCh2aC chax6Hoh<br />
omaid8aP eeTh6oob Ooch4iwe Ur2ochai Ahgh2Chu thae4Nei ahPha9oo Xiaraiy8<br />
iePh5mi4 Sexoh1Ge faequ9Oh HeN3aNg3 eew8EiYo zohVoh5p foo2DiiV ouKen0ma<br />
shiec0Re haenohW4 aetha4eP Gai1aiTh iwie2Kai ga0gaeH8 Uih3mahs oqu8Iaha<br />
neiF0eir xaoXui7X Doha6iGh jui2eeKu vaRohr6t eL1uhazu aijoh1Ee AiX9eeba<br />
Ahgh1Jee loozu8Ev ThauTil1 Gai6aePo vee5Gee9 ahSh6Nur Zohk1ubi ieX1tigu<br />
Ii5eiToh DahDeev1 foiDoh1W aiH4Iu7W Eech7dae xoe8aQuo quuiT2ae ohVie8ib<br />
baePhu9O ahNgee8Z Fui9gohb Thea8soo Shee0fie Ma0choem ohco7aKa ieng2ohH<br />
ECeel2Io saer8Vei Cho7thah aGh3aite AhXoof7i pig5Sho3 Fa8Wiah1 deW0raiz<br />
Ephia2de Eemah7ai eeX5ohti ve5Xiezo texu5IGh ReiGh7Mo aeCh3shu ool8Diul<br />
ooCh5umi kuKaup7b iet4Xa9l Achangi5 Gahxeix9 eech5AhV aThahsi0 Raik3nae<br />
ahGu0Oof uiNgoh6i aGae9kaf eewe2Tha Tai9oPhe ve3Uphoo JaeQuai2 SohF2wai<br />
jom8ooTh KeyeeZ0X cee0FaeN Xait1soo EiSoo1ae leeCaej8 fuf0Pafu iPhie7wi<br />
faeGith4 Phaf0duy oGu5ifuy uRae1Zai Wiet7EeC eem9Viep Deepoo6i Pug8aing<br />
Thae4ahb Gaiqu3Ga aixi2Uwa The6aepa hom8Iexe oozaGu5n quohg1Ie Jieyae5b<br />
Tu2Ietho Pai9zeSh yeeShae7 chew8Gah Ohr0eefo ookoBe8w eol1yaK9 achuoS1x<br />
nai8Aith ang6Oozi Touy1ail Opha7phu Ri7Eepha oSi3Oora ahpee3Eh Heehi8ee<br />
Quoh8tha Ohshae6h eeNg7Ies ooV9Eich OCe2rooc bie6Liez eeReiy9h Ovus6iej<br />
</font></code><br />
Vale lembrar que as senhas são aleatórias, a probabilidade de elas se repetirem são realmente ínfimas.<br />
Para não ficar uma demonstração poluída, que exibe várias senhas geradas em colunas, usarei a opção &#8220;-1&#8243;<br />
para exibir apenas uma senha. Então vejamos:</p>
<p><code><b>pwgen -1</b></p>
<p>toej3ahL</code></p>
<p>Por padrão mistura letras (maiúsculas e minúsculas) e números, mas não inclui caracteres especiais.<br />
Para fazermos uma senha mais segura, vamos acrescentar um &#8220;y&#8221; como parâmetro para gerar uma senha mais difícil ainda de ser adivinhada:</p>
<p><code><b>pwgen -1y</b></p>
<p>Sie)th7U<code></p>
<p>Agora temos uma senha q possui letras (maíusculas e minúsculas), números e caracteres especiais.</p>
<p>O uso do pwgen é bem simples, as opções são auto explicativas por si só e vale lembrar que cada senha que o aplicativo gera tem 8 (oito) caracteres, determinados sistemas exigem mais que isso. A solução é bem simples, complemente o que falta gerando outra senha e junte-as.</p>
<p>O pwgen é a ferramenta ideal para gerar senhas, simples, prático e agilizador. Eu recomendo!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=28&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2008/12/27/gerando-senhas-com-o-pwgen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
		<item>
		<title>Impressão lpr e Adobe Reader (problema resolvido!)</title>
		<link>http://juliano777.wordpress.com/2008/12/18/cups_bsd/</link>
		<comments>http://juliano777.wordpress.com/2008/12/18/cups_bsd/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 00:48:56 +0000</pubDate>
		<dc:creator>juliano777</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[can't print]]></category>
		<category><![CDATA[cups]]></category>
		<category><![CDATA[cups-bsd]]></category>
		<category><![CDATA[doesn't print]]></category>
		<category><![CDATA[lpr]]></category>
		<category><![CDATA[não imprime]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[problema]]></category>
		<category><![CDATA[Reader]]></category>

		<guid isPermaLink="false">http://juliano777.wordpress.com/?p=23</guid>
		<description><![CDATA[Durante muito tempo fazia as coisas tudo na mão no Linux, pois eu usava o Slackware&#8230; Mas com o passar do tempo fui ficando cada vez mais atarefado e por questão de comodidade troquei o Slackware pelo Ubuntu. Recentemente resolvi reinstalar o sistema em minha máquina, mas não usei o CD de instalação do Ubuntu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=23&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Durante muito tempo fazia as coisas tudo na mão no Linux, pois eu usava o Slackware&#8230;<br />
Mas com o passar do tempo fui ficando cada vez mais atarefado e por questão de comodidade troquei o Slackware pelo Ubuntu.<br />
Recentemente resolvi reinstalar o sistema em minha máquina, mas não usei o CD de instalação do Ubuntu Desktop e sim do Ubuntu Server.<br />
Queria algo mais enxuto e mais personalizável para poder tirar mais desempenho da máquina. Para isso fiz a instalação mínima. Muita coisa refiz na raça mesmo. Porém, acabei me deparando com alguns problemas que me vi obrigado a resolver, alguns irritantes&#8230; O que acho q merece um destaque é esse do título. Eu simplesmente não consegui imprimir um arquivo PDF no acroread (Adobe Reader).</p>
<p>A mensagem exibida após a ordem de impressão de arquivo:</p>
<p><code>the following error occured while printing...<br />
`usage: lpr [-cdfghlmnpqrst][-#num][-1234 font][ -C class][-i [numcols]]<br />
[-j job][-Pprinter][-T title][-U user][-wnum][-name...]'</code></p>
<p>Solução encontrada depois de uma boa &#8220;googleada&#8221;: Instalar um pacote chamado <strong>cups-bsd</strong></p>
<p>Dê o comando:</p>
<p><strong>sudo apt-get install cups-bsd</strong></p>
<p>O pacote <em>lpr</em> original será excluído e os executáveis do <em>cups-bsd</em> terão os mesmos nomes, e então os trabalhos de impressão serão enviados pelo CUPS.</p>
<p>Pronto!<br />
Problema resolvido!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/juliano777.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/juliano777.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/juliano777.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/juliano777.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/juliano777.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/juliano777.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/juliano777.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/juliano777.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/juliano777.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/juliano777.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/juliano777.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/juliano777.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/juliano777.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/juliano777.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=juliano777.wordpress.com&amp;blog=5108693&amp;post=23&amp;subd=juliano777&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://juliano777.wordpress.com/2008/12/18/cups_bsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96cd6ae19963ef08f7d62c49e0e8d15d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">juliano777</media:title>
		</media:content>
	</item>
	</channel>
</rss>
