segunda-feira, 20 de abril de 2015

Conselhos de um velho programador

Ache um emprego que te faça o mais feliz possível. Que te dê espaço para utilizar sua criatividade. Que te dê tempo para praticar e experimentar novas tecnologias. E que, principalmente, te cerque de pessoas como você. Pessoas que te inspiram, que te motivam e que reclamam de tudo e de todos. Uns totais insatisfeitos.
Ache um emprego no qual não seja tão difícil acordar de manhã (ou qualquer que seja o seu horário) e ir trabalhar.

Fonte:http://gizmodo.uol.com.br/conselhos-de-um-velho-programador-antissocial-e-ranzinza/

terça-feira, 31 de março de 2015

XML formatado

Necessitei criar um arquivo formatado:

select  '<doc>''||E'\n'
                '<field name="cd_email">'|| cd_email ||'</field>'||E'\n'||
                '<field name="ds_remetente_email">'|| ds_remetente_email ||'</field>'||E'\n'||
                '<field name="ds_destinatario_email">'|| ds_destinatario_email ||'</field>'||E'\n'||
                '<field name="ds_copia">'|| ds_copia ||'</field>'||E'\n'||
                '<field name="ds_assunto">'|| ds_assunto ||'</field>'||E'\n'||
                '<field name="ds_mensagem_txt">'|| strip_tags(ds_mensagem_txt) ||'</field>'||E'\n'||
                '<field name="dt_abertura">'|| dt_abertura ||'</field>'||E'\n'||
                '<field name="dt_envio">'|| dt_envio ||'</field>'||E'\n'||
                '<field name="dt_recebimento">'|| dt_recebimento ||'</field>'||E'\n'||
        '<doc>'||E'\n'||E'\n'FROM crm.tb_email;


A solução acima gera um trabalho muito grande para escrever a consulta.

Com a expressão abaixo tem-se:

select  'xmlelement(name field,  xmlattributes(''' || coluna  || ''' as name), ' ||coluna|| '),' from
(select  a.attname as coluna
from pg_catalog.pg_attribute a inner join pg_stat_user_tables c on a.attrelid = c.relid
WHERE a.attnum > 0
and NOT a.attisdropped
and c.relname = 'tb_email') as foo

o seguinte resultado:

 xmlelement(name field,  xmlattributes('cd_email' as name), cd_email),
 xmlelement(name field,  xmlattributes('cd_caixa_email' as name), cd_caixa_email),
 xmlelement(name field,  xmlattributes('cd_usuario_cadastro' as name), cd_usuario_cadastro),
 xmlelement(name field,  xmlattributes('cd_usuario_abertura' as name), cd_usuario_abertura),
 xmlelement(name field,  xmlattributes('cd_usuario_responsavel' as name), cd_usuario_responsavel),
 xmlelement(name field,  xmlattributes('cd_status_documento' as name), cd_status_documento),
 xmlelement(name field,  xmlattributes('cd_status_fluxo' as name), cd_status_fluxo),
 xmlelement(name field,  xmlattributes('ds_remetente_email' as name), ds_remetente_email),
 xmlelement(name field,  xmlattributes('ds_destinatario_email' as name), ds_destinatario_email),
 xmlelement(name field,  xmlattributes('ds_copia' as name), ds_copia),
 xmlelement(name field,  xmlattributes('ds_assunto' as name), ds_assunto),
 xmlelement(name field,  xmlattributes('ds_mensagem' as name), ds_mensagem),
 xmlelement(name field,  xmlattributes('nu_protocolo_email' as name), nu_protocolo_email),
 xmlelement(name field,  xmlattributes('ds_mensagem_txt' as name), ds_mensagem_txt),
 xmlelement(name field,  xmlattributes('ds_mensagem_srch' as name), ds_mensagem_srch),
 xmlelement(name field,  xmlattributes('dt_abertura' as name), dt_abertura),
 xmlelement(name field,  xmlattributes('dt_envio' as name), dt_envio),
 xmlelement(name field,  xmlattributes('dt_recebimento' as name), dt_recebimento),
 xmlelement(name field,  xmlattributes('dt_auditoria' as name), dt_auditoria),


com o resultado pode-se criar uma nova consulta

select '< doc >',
 xmlelement(name field,  xmlattributes('cd_email' as name), cd_email),
 xmlelement(name field,  xmlattributes('cd_caixa_email' as name), cd_caixa_email),
 xmlelement(name field,  xmlattributes('cd_usuario_cadastro' as name), cd_usuario_cadastro),
 xmlelement(name field,  xmlattributes('cd_usuario_abertura' as name), cd_usuario_abertura),
 xmlelement(name field,  xmlattributes('cd_usuario_responsavel' as name), cd_usuario_responsavel),
 xmlelement(name field,  xmlattributes('cd_status_documento' as name), cd_status_documento),
 xmlelement(name field,  xmlattributes('cd_status_fluxo' as name), cd_status_fluxo),
 xmlelement(name field,  xmlattributes('ds_remetente_email' as name), ds_remetente_email),
 xmlelement(name field,  xmlattributes('ds_destinatario_email' as name), ds_destinatario_email),
 xmlelement(name field,  xmlattributes('ds_copia' as name), ds_copia),
 xmlelement(name field,  xmlattributes('ds_assunto' as name), ds_assunto),
 xmlelement(name field,  xmlattributes('ds_mensagem' as name), ds_mensagem),
 xmlelement(name field,  xmlattributes('nu_protocolo_email' as name), nu_protocolo_email),
 xmlelement(name field,  xmlattributes('ds_mensagem_txt' as name), ds_mensagem_txt),
 xmlelement(name field,  xmlattributes('ds_mensagem_srch' as name), ds_mensagem_srch),
 xmlelement(name field,  xmlattributes('dt_abertura' as name), dt_abertura),
 xmlelement(name field,  xmlattributes('dt_envio' as name), dt_envio),
 xmlelement(name field,  xmlattributes('dt_recebimento' as name), dt_recebimento),
 xmlelement(name field,  xmlattributes('dt_auditoria' as name), dt_auditoria),
'< / doc >'
from crm.tb_email


quarta-feira, 25 de fevereiro de 2015

Alterar proprietário de todas as tabelas

Alterar o proprietário de tabelas do postgresql

select 'alter table ' ||relname || ' owner to novo_usuario;'
from pg_stat_user_tables
order by 1

terça-feira, 22 de julho de 2014

Espaço disponível LINUX

Apresenta espaço disponível em pasta

df -Ph /dir/pasta/ | tail -1 | awk '{print $4}'

Dica de Davi Lopes Carvalho

quinta-feira, 12 de junho de 2014

Alterar os locais do INDEX postgresql


select 'ALTER INDEX '||schemaname||'.'||indexname||' SET TABLESPACE fastspace ;'
from pg_catalog.pg_indexes
where schemaname <> 'pg_catalog'
order by tablename;

sexta-feira, 9 de maio de 2014

Posicionamento de Objetos CSS

O meu problema era posicionar o rodapé perto da borda inferior e o cabeçalho perto da borda superior. 

Com o código abaixo foi possível fazer isso.


#rodape-tema {
position: absolute;
bottom: 0;
height: 80px;
line-height: 80px;
text-align: center;
width: 100%;
}
#banner_institucional {
position: absolute;
top: 0;
width: 100%;

}

quinta-feira, 10 de abril de 2014

Instalação POSTGRES/POSTGIS em FEDORA/RED HAT

Para verificar a versão do REDHAT

 cat /etc/redhat-release


Ajustando o YUM para acessar os repositórios através do PROXY


Para permitir todas operações do yum usando um servidor proxy, especifique os detalhes do servidor proxy em /etc/yum.conf. A configuração proxy deve especificar o servidor proxy como uma URL completa, incluindo o número da porta TCP. Se o seu servidor proxy necessita de usuário e senha, especifique adicionando as configurações proxy_username e proxy_password.

# The proxy server - proxy server:port number 
proxy=http://mycache.mydomain.com:3128 
# The account details for yum connections 
proxy_username=yum-user 
proxy_password=qwerty
 
Fonte:http://docs.fedoraproject.org/pt-BR/Fedora_Core/5/html/Software_Management_Guide/sn-yum-proxy-server.html 




Configurando o repositório YUM
Localize em sua distribuição Linux o arquivo com a extensão .repo, localizado em:
  • Fedora: /etc/yum.repos.d/fedora.repo and /etc/yum.repos.d/fedora-updates.repo, seção [fedora] 
  • CentOS: /etc/yum.repos.d/CentOS-Base.repo, seção [base] and [updates] sections
  • Red Hat: /etc/yum/pluginconf.d/rhnplugin.conf seção[main] 
Inserir a linha:
 
exclude=postgresql*


Para listar os pacotes (packages) disponíveis

yum list postgres*


yum remove libaep.so

sudo yum install http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-1.0.1e-
15.el6.x86_64.rpm


Para instalar o servidor POSTGRESQL


yum install postgresql93-server.x86_64
 
ou
 
yum install postgresql93-server 

Para criar e inicializar um database


service postgresql-9.3 initdb

chkconfig postgresql-9.3 on

Para ajustes nas permissões de acesso
vim /var/lib/pgsql/9.3/data/pg_hba.conf

vim /var/lib/pgsql/9.3/data/postgres.conf

Fonte: https://wiki.postgresql.org/wiki/YUM_Installation

Para instalar os compiladores necessários

yum install gcc gcc-c++

Para instalar o LIBXML2

tar vxzf libxml2-2.9.0.tar.gz
cd libxml2-2.9.0
./configure --prefix=/usr --disable-static --with-history && make
make check
make install

Para instalar o GEOS

tar -xvjf geos-3.4.2.tar.bz2
cd geos-3.4.2
./configure
make
make check
make install

Para instalar o PROJ.4

tar -xzvf proj-4.8.0.tar.gz
cd proj-4.8.0
./configure
make
make check
make install

Para instalar o GDAL (a última versão não funcionou - gdal-1.10.1)  

tar -xvzf gdal-1.10.0a.tar.gz
cd gdal-1.10.0
./configure
make

make install

Na pasta postgis-2.1.2


export PATH=$PATH:/usr/pgsql-9.3/bin/


./configure --with-geosconfig=/home/local/MDS/caio.nakashima/postgres/geos-3.4.2/tools/geos-config --with-gdalconfig=/usr/local/bin/gdal-config
make
make install

Testando o Postgis

com usuário postgres, criar um database

createdb mapas
createlang plpgsql mapas

procurar pelo arquivo postgis.sql


find / -name postgis.sql
/usr/pgsql-9.3/share/contrib/postgis-2.1/postgis.sql

Para carregar as definições dos objetos e funções do POSTGIS no banco de dados, executa-se o comando abaixo

 psql -d mapas -f postgis.sql

Para completar ajustar os identificadores do sistema de coordenadas EPSG. Carrega-se o arquivo spatial_ref_sys.sql para popular a tabela spatial_ref_sys.

psql -d mapas -f spatial_ref_sys.sql

Para restaurar cópias antigas de versões anteriores

psql -d mapas -f legacy.sql

Para carga de shape files

/usr/pgsql-9.3/bin/shp2pgsql -c -W LATIN1 53UFE250GC_SIR.shp mapas.shp_uf | psql -d mapas

/usr/pgsql-9.3/bin/shp2pgsql -a -W LATIN1 53MUE250GC_SIR.  mapas.shp_mu | psql -d mapas