quinta-feira, 31 de dezembro de 2009

Matriz Lógica

Os projetos são impulsionados por uma lógica relativamente linear: os insumos levam a atividades, que levam a produtos que levam a resultados a qual leva a avaliação (metas).

Insumos -> Atividades -> Produtos -> Resultados -> Metas

Fonte: Evaluación organizacional: marco para mejorar el desempeño Por Charles Lusthaus

quarta-feira, 18 de novembro de 2009

Configuração do teclado SUSE

setxkbmap -model abnt2 -layout br,br

terça-feira, 10 de novembro de 2009

Verificar se o conteúdo de um campo postgresql é numérico

O meu problema é verificar se o conteúdo de um campo texto (resposta) é numérico.

select pergunta, resposta
from dados.itemquest
where (resposta ~ '^[0-9.-]+$');

A expressão:

where (resposta ~ '^[0-9.-]+$');

retorna true para conteúdo numérico.

quarta-feira, 4 de novembro de 2009

Backup banco postgres

O script abaixo serve para fazer o backup de um banco Postgres inserindo a data e hora da tarefa no nome do arquivo

# Determinado da data e hora e ano
ano=`date +%Y`;

mes=`date +%m`;
hora=`date +%H`;
min=`date +%M`;

let dia=10\#`date +%d`;
#hora = 'date +%h';
if ($dia<10) then
j=0$dia;
else
j=$dia;
fi
dia=$j;
j="";

D=$dia
M=$mes
A=$ano
# Definindo o usuario e senha do banco de dados
export PGUSER="USUARIO DO BANCO";
export PGPASSWORD="SENHA DO BANCO";

#Fazendo o backup
pg_dump -i -h SERVIDOR -p 5432 -U "USUARIO DO BANCO" -F c -b -v -f /dados/backup/MI_SOCIAL/CONVENIO_DB$ano$mes$dia$hora$min.backup "CONVENIO_DB"

terça-feira, 20 de outubro de 2009

Leitura XML em PHP


$filename ="/windows/discog/wwwroot/xml/questionario.xml";

$xml = simplexml_load_file($filename );

if (!$xml) {
$errors = libxml_get_errors();
foreach ($errors as $error) {
echo display_xml_error($error, $xml);
}
libxml_clear_errors();
}

var_dump($xml);
var_dump(get_object_vars($xml));

?>

terça-feira, 6 de outubro de 2009

Administrar o tempo é planejar a vida


Eduardo O C Chaves


Geralmente quem escreve sobre administração do tempo não o faz porque seja especialista na questão, mas, sim, porque quer aprender mais sobre o assunto. Pelo menos foi esse o meu caso. Vou relatar aqui algumas de minhas descobertas, como roteiro para a leitura do quarto texto.

1) Administrar o tempo não é uma questão de ficar contando os minutos dedicados a cada atividade: é uma questão de saber definir prioridades. Provavelmente (numa sociedade complexa como a nossa), NUNCA vamos ter tempo para fazer tudo o que precisamos e desejamos fazer. Saber administrar o tempo é ter clareza cristalina sobre o que, para nós, é mais prioritário, dentre as várias coisas que precisamos e desejamos fazer - e tomar providências para que essas coisas mais prioritárias sejam feitas, sabendo que as outras provavelmente nunca vão ser feitas (mas tudo bem: elas não são prioritárias).

2) Dentre as coisas que vamos listar como prioritárias, algumas estarão ali porque nos são importantes, outras porque são urgentes. Imagino que algo que não é NEM importante NEM urgente não estará na lista de ninguém. E também sei que na lista de todo mundo haverá coisas que são IMPORTANTES E URGENTES. Não resta a menor dúvida de que estas coisas devem ser feitas imediatamente, ou, pelo menos, na primeira oportunidade. Poucas pessoas questionarão isso. O problema surge com coisas que consideramos importantes, mas não urgentes, e com coisas que são urgentes, mas às quais não damos muita importância.

3) Digamos que você considere importante ficar mais tempo com sua família. Por outro lado, você tem que trabalhar x horas por dia. Se o seu trabalho é mais importante do que ficar com a sua família, o problema está resolvido: você trabalha, mesmo que isso prejudique a convivência familiar. Mas e se o trabalho não é mais importante para você do que a convivência familiar? Neste caso, provavelmente o trabalho é urgente, no sentido de que tem que ser feito, pois doutra forma você vai ser despedido (ou perder clientes, se for autônomo ou empresário) e vai ter dificuldades para manter sua família (embora, sem trabalho, provavelmente vai poder passar mais tempo com ela…). Aqui o conflito é entre o importante e o urgente - e é aí que a maior parte de nós se perde, e por uma razão muito simples: algumas das tarefas que temos que realizar não são selecionadas por nós, mas nos são impostas. Isto é: não somos donos de todo o nosso tempo. Não temos, em relação ao nosso tempo, toda a autonomia que gostaríamos de ter. Quando aceitamos um emprego, estamos, na realidade, nos comprometendo a ceder a outrem o nosso tempo (e, também, o nosso esforço, a nossa capacidade, o nosso conhecimento, etc.). Este é um problema real e de solução difícil: não somos donos de boa parte de nosso tempo.

4) Acontece, porém, que geralmente usamos mal o tempo que dedicamos ao trabalho (e, por isso, temos que fazer hora extra ou trazemos trabalho para casa), ou mesmo o tempo que passamos em casa. Usar mal QUER DIZER que muitas vezes usamos o nosso tempo para fazer o que não é nem importante nem urgente, mas apenas algo que sempre fizemos, pela força do hábito. Alguém me disse, quando eu era criança, que a gente nunca deveria abandonar a leitura de um livro, por pior que ele fosse. Que bobagem! Mas quanto tempo desperdicei terminando de ler coisa que de nada me serviu por causa desse conselho! Uma vez me peguei dizendo à minha família que não poderia fazer algo (não me lembro o quê) domingo de manhã porque precisava ler os jornais. Eu lia, religiosamente, a Folha e o Estado aos domingos de manhã (sinto muito, folks: há tempo que não freqüento escola dominical). Lia por hábito. Achava que um professor tem que se manter informado. Mas quando disse que "precisava" ler os jornais me dei conta de que realmente não precisava lê-los. O que é de pior que poderia me acontecer se eu não lesse os jornais, me perguntei. NADA, foi a resposta que tive honestamente que dar. Se houver algo importante nos jornais provavelmente fico sabendo no noticiário da TV, ou na VEJA. Mas daí me perguntei: e preciso ler a VEJA todas as semanas? Resposta: não. Existe algo que eu prefiro ler/fazer naquelas manhãs de domingo que ganhei? Claro, muitas coisas - PARA AS QUAIS EU ANTES NÃO TINHA TEMPO. Ganhei as horas dos jornais, ganhei as horas da VEJA, fui ganhando uma horinha aqui outra ali, para as coisas que eu realmente queria fazer há muito tempo e não achava tempo…

5) Administrar o tempo é ganhar autonomia sobre a sua vida, não é ficar escravo do relógio. É uma batalha constante, que tem que ser ganha todo dia. Se você quer ter a autonomia de decidir passar mais tempo com a família, ou sem fazer nada, você tem que ganhar esse tempo deixando de fazer outras coisas que são menos importantes para você. Em última instância pode ser que você até tenha que, eventualmente, arrumar um outro emprego ou uma outra ocupação.

6) O tempo é distribuído entre as pessoas de forma bem mais democrática que muitos dos outros recursos de que nós dependemos (como, por exemplo, a inteligência). Todos os dias cada um de nós recebe exatamente 24 horas (a menos que seja o último dia de nossas vidas): nem mais, nem menos. Rico não recebe mais do que pobre, professor universitário não recebe mais do que analfabeto, executivo não recebe mais do que operário. Entretanto, apesar desse igualitarismo, uns conseguem realizar uma grande quantidade de coisas num dia - outros, ao final do dia, têm o sentimento de que o dia acabou e não fizeram nada. A diferença é que os primeiros percebem que o tempo, apesar de democraticamente distribuído, é um recurso altamente perecível. Um dia perdido hoje (perdido no sentido de que não realizei nele o que precisaria ou desejaria realizar) não é recuperado depois: é perdido para sempre.

7) Há os que afirmam, hoje, que o recurso mais escasso na nossa sociedade não é dinheiro, não são matérias primas, não é energia, não é nem mesmo inteligência: é tempo. Mas tempo se ganha, ou se faz, deixando de fazer coisas que não são nem importantes nem urgentes e sabendo priorizar aquelas que são importantes e/ou urgentes.

8) Quem tem tempo não é quem não faz nada: é quem consegue administrar o tempo que tem de modo a poder fazer aquilo que quer.

9) Por outro lado, ser produtivo não é equivalente a estar ocupado. Há muitas pessoas que estão o tempo todo ocupadas exatamente porque são improdutivas - não sabem onde concentrar seus esforços e, por isso, ciscam aqui, ciscam ali, mas nunca produzem nada. Ser produtivo é, em primeiro lugar, saber administrar o tempo, ter sentido de direção, saber aonde se vai.

10) Administrar o tempo, em última instância, é planejar estrategicamente a nossa vida. Para isso, precisamos, em primeiro lugar, saber aonde queremos chegar (definição de objetivos). Onde quero estar, o que quero ser, daqui a 5, 10, 25, 50 anos? O segundo passo é começar a estrategiar: transformar objetivos em metas (com prazos e quantificações) e decidir, em linhas gerais, como as metas serão alcançadas. O terceiro passo é criar planos táticos: explorar as alternativas específicas disponíveis para se chegar aonde queremos chegar, escolher fontes de financiamento (emprego, em geral, é fonte de financiamento), etc. Em quarto lugar, fazer o que tem que ser feito. Durante todo o processo, precisamos estar constantemente avaliando os meios que estamos usando, para verificar se estão nos levando mais perto de onde queremos vamos querer estar ao final do processo. Se não, troquemos de meios (procuremos outro emprego, por exemplo).

11) Mas tudo começa com uma verdade tão simples que parece uma platitude: se você não sabe aonde quer chegar, provavelmente nunca vai chegar lá - por mais tempo que tenha.

12) Quando o nosso tempo termina, acaba a nossa vida. Não há maneira de obter mais. Por isso, tempo é vida. Quem administra o tempo ganha vida, mesmo vivendo o mesmo tempo. Prolongar a duração de nossa vida não é algo sobre o qual tenhamos muito controle. Aumentar a nossa vida ganhando tempo dentro da duração que ela tem é algo, porém, que está ao alcance de todos. Basta um pouco de esforço e determinação.


(*) Este artigo é resumo, feito em 1998, de um livreto, Administração do Tempo, que escrevi em 1992.


© Copyright by Eduardo Chaves


Last revised: 02 May 2004

segunda-feira, 5 de outubro de 2009

10km ObCursos





10 km em 01/03/2009 - Brasília - DF - Incrição 334 - Colocação 618 Geral / 118 40 44 anos
Tempo bruto: 01h00m57s, tempo líquido: 01h00m42s
Taxa: R$ 25,00

domingo, 4 de outubro de 2009

19a Corrida das pontes



No dia 4 de outubro de 2009 fiz a corrida das pontes, inscrição 164.

19ª Corrida das Pontes (Tempo bruto 1h00min 44seg/ Tempo líquido: 58min59seg (987 de 1125 /167 de 192)) R$ 25,00 Inscrição na Free Corner.

terça-feira, 29 de setembro de 2009

Postgres Regular Expression

O problema hoje foi verificar se os valores do campo resposta eram valores numérios:


select resposta
from dados.itemquest
where pergunta = 'sagi_latitude'
and (resposta ~ '[-]{0,1}[0-9]{1,2}.[0-9]*')

sexta-feira, 4 de setembro de 2009

JavaScript e Expressões Regulares

cep
onkeyup=\'javascript:
this.value=this.value.replace(/\D/g,"");
this.value=this.value.replace(/^(\d{5})(\d)/,"$1-$2");\'
onkeypress=\'javascript:
this.value=this.value.replace(/\D/g,"");
this.value=this.value.replace(/^(\d{5})(\d)/,"$1-$2");\'

telefone
onKeyUp=\'javascript:
t=this.value.replace(/\D/g,"");
t=t.replace(/^(\d\d)(\d)/g,"($1) $2");
this.value=t.replace(/(\d{4})(\d)/,"$1-$2");\'

CPF
onkeyup='javascript:this.value=this.value.replace(/\D/g,"");
this.value=this.value.replace(/(\d{3})(\d)/,"$1.$2");
this.value=this.value.replace(/(\d{3})(\d)/,"$1.$2");
this.value=this.value.replace(/(\d{3})(\d{1,2})$/,"$1-$2");'

function validacpf(campo){
var i;
//s = document.getElementById('login').p_cpf.value;
s = campo;
var c = s.substr(0,9);
var dv = s.substr(9,2);
var d1 = 0;
for (i = 0; i < 9; i++){
d1 += c.charAt(i)*(10-i);
}
if (d1 == 0){
alert("CPF Invalido")
return false;
}
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(0) != d1){
alert("CPF Invalido")
return false;
}
d1 *= 2;
for (i = 0; i < 9; i++){
d1 += c.charAt(i)*(11-i);
}
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(1) != d1){
alert("CPF Invalido")
return false;
}
return true;
}

quinta-feira, 27 de agosto de 2009

CRON x SHUTDOWN

Necessitei reinicializar a máquina uma vez por dia, e para fazer funcionar isso:


# crontab -e -u root

0 4 * * * /sbin/shutdown -h now

Desta forma todos os dias, as 4h00 da madrugada o computador se reinicializa automaticamente

segunda-feira, 10 de agosto de 2009

Configuração e erro PHP

As linhas abaixo servem para quem programa em PHP e não tem acesso ao arquivo PHP.INI e deseja visualizar os erros de programação.

error_reporting(E_ALL);
ini_set("display_errors", 1);

quinta-feira, 23 de julho de 2009

Uso do xserver (e aplicações) remotamente, via ssh

Colaboração: irado furioso com tudo

Data de Publicação: 28 de March de 2009

Perambulei muito pela 'net (via google) para achar alguma coisa que me
permitisse, acessando máquina remota via ssh, usar aplicativos gráficos,
tais como o firefox, e-mail (MUAs), editores de texto. Ou sempre faltava
algo ou era mais complicado do que receita de renda de bilros.

Finalmente, juntando partes daqui, dacolá, cheguei a uma receitinha QUE
FUNCIONA. Vejamos:

Na máquina que vai ser o SERVIDOR, altere o /etc/ssh/sshd_config,
como segue:


 X11Forwarding = yes (normalmente comentado)
 AllowTcpForwarding = yes (idem)

Daí é só dar restart no sshd (cada distribuição tem seu "jeito" particular).

No destino (a máquina que vai usar os aplicativos remotos), basta abrir um
terminal qualquer - no ambiente gráfico - estabelecer conexão ssh apropriada
e chamar o aplicativo desejado:


 $ ssh -XYCc blowfish usuario@maquina.destino
 [informações do acesso.. ]

Estando no terminal (agora é no remoto):


 $ firefox &
 $ sylpheed &

Trafegando os dados no tunel ssh é seguro, é tudo criptografado. Além do que
vc pode (por exemplo) navegar em sites nunca dante navegados (proibição ou
bloqueio de proxies NÃO FUNCIONAM mais pra vc)

sexta-feira, 29 de maio de 2009

Criar um shape de um conjunto de outros

Procurei na internet alguns arquivos presentam mapas (shape files) da américa do sul e encontrei somente arquivos com os países junto com seus departamentos (estados). Para conseguir somente um arquivo (registro) por país executei o seguinte comando.

select cntry_name as pais, fips_cntry as sigla,
GeomUnion(the_geom) as the_geom from mapas.ar
group by cntry_name, fips_cntry

O comando GeomUnion gera uma agregação de geometrias.

Com isso parti para criar uma tabela que represente os países da américa do sul.

create table mapas.southamericacountry as
select cntry_name as pais, fips_cntry as sigla,
GeomUnion(the_geom) as the_geom from mapas.ar
group by cntry_name, fips_cntry
union
select cntry_name as pais, fips_cntry as sigla,
GeomUnion(the_geom) as the_geom from mapas.bl
group by cntry_name, fips_cntry
....

Incluir um arquivo Shape no PostGIS

Após buscar na internet alguns arquivos de mapas no formato (shp - shape files) inseri no banco de dados com o comando.

shp2pgsql ve mapas.ve > ve.sql

onde:
ve - corresponde aos arquivos do mapa (ve.shp, ve.dbf, ve.shx, ve.sbx, ve.sbn).
mapas.ve - é o destino no banco de dados, mapas é o schema PosgtreSQL e ve no nome da tabela.
ve.sql - é o arquivo destino, ou seja, é criado um script sql para inserir no banco de dados.

sexta-feira, 22 de maio de 2009

Código para recuperar o fonte de uma função

Para recuperar a fonte de uma função.

No exemplo abaixo a função chama-se indicador_repasse_por_cisterna

select prosrc
from pg_catalog.pg_proc
where proname= 'indicador_repasse_por_cisterna'

quinta-feira, 14 de maio de 2009

Suse / Oracle / PHP

Para instalar a biblioteca Oracle no sistema operacional SUSE linguagem PHP, utilizei:

oracle-instantclient11.1-basic-11.1.0.7.0-1

e coloquei o caminho da biblioteca Oracle em (/usr/lib/oracle/11.1/client/lib/)

ld.so.conf

Para ativar o ld.so.conf

ldconfig

Caminho para biblioteca

Tive que colocar um conjunto de biblioteca para que o SO pudesse buscar em um diretório.

Para isso inseri esta informação em:

/etc/ld.so.conf


utilizei o comando

ldconfig

para fazer valer as alterações executadas.

rpm

O meu problema hoje foi determinar se uma biblioteca havia sido instalada no sistema.

Utilizei o comando:

rpm -qa | grep oracle

Extrair arquivos de Imagens ISO

Criar o diretório ISO
# mkdir /mnt/iso
# mount -o loop disk1.iso /mnt/iso

Copiando o arquivo file.txt para /tmp
# cd /mnt/iso
# cp file.txt /tmp

Copiando o arquivo foo.rpm da imagem
# cd /mnt/iso/RedHat/RPMS
# cp foo.rpm /tmp

fonte: http://www.cyberciti.biz/tips/extracting-particular-file-from-linux-iso-cd-image-file-after-installation.html
data: 14 de maio de 2009

segunda-feira, 11 de maio de 2009

Procurar um texto em uma lista de arquivos

O meu problema hoje foi tentar encontrar um texto em um conjunto de programas fonte (*.php). Para resolver isso executei o comando abaixo no SUSE/Linux

find . -name '*.php' | cut -c 1-100 | cat | grep version

find - para procurar os arquivos *.php
cut - cortar o texto da posição 1 até 100
cat - apresentar o conteúdo do texto
grep - selecionar o um texto específico

outra forma
find . -name "*.php" | xargs cat | grep close

mais uma forma

find . -name '*.php' | xargs -n2 grep 'banco' >lista
cat lista

quarta-feira, 8 de abril de 2009

Exim

Arquivos do Exim

./var/spool/exim
./var/log/exim
./etc/sysconfig/exim
./etc/init.d/exim
./etc/logrotate.d/exim
./etc/exim
./usr/share/doc/packages/exim
./usr/sbin/exim


Arquivo de configuração do Exim
./etc/exim/exim.conf

  • exim -bp
Comando para listar todos os emails na queue
  • exim -Mrm `ls /var/spool/exim/input/ | grep -- -H$ | cut -c 1-16`
Comando para tirar da queue todos os emails.

sexta-feira, 6 de março de 2009

Triggers


O problema enfrentado foi criar registros em uma tabela que contenha a quantidade de página e as páginas. Por exemplo, caso o número de páginas seja 10, necessita-se 10 registros com as páginas de 1 a 10.

Para resolver isso, optou-se de utilizar gatilhos (TRIGGERS) na tabela ufcaio. Para cada operação nesta tabela reflete-se na tabela ufcaio_destino.
Tabela destino igual a tabela origem

CREATE TABLE teste.ufcaio_destino
(
uf character varying,
estado character varying,
paginas integer,
pagina integer
)
WITHOUT OIDS;
ALTER TABLE teste.ufcaio_destino OWNER TO postgres;

Tabela origem.

CREATE TABLE teste.ufcaio
(
uf character varying,
estado character varying,
paginas integer,
pagina integer
)
WITHOUT OIDS;
ALTER TABLE teste.ufcaio OWNER TO postgres;

Associando um Trigger na tabela origem.

CREATE TRIGGER ufcaio_trigger
AFTER INSERT OR UPDATE OR DELETE
ON teste.ufcaio
FOR EACH ROW
EXECUTE PROCEDURE teste.ufcaio();

Função chamada pelo Trigger.

CREATE OR REPLACE FUNCTION teste.ufcaio()

RETURNS trigger AS
$BODY$
BEGIN
--
IF (TG_OP = 'DELETE') THEN
delete from teste.ufcaio_destino where uf=OLD.uf;
return OLD;
ELSIF (TG_OP = 'UPDATE') THEN
delete from teste.ufcaio_destino where uf=NEW.uf;
FOR i IN 1..NEW.paginas LOOP
insert into teste.ufcaio_destino (uf, estado, paginas, pagina) values (NEW.uf, NEW.estado, NEW.paginas, i);
END LOOP;
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
delete from teste.ufcaio_destino where uf=NEW.uf;
FOR i IN 1..NEW.paginas LOOP
insert into teste.ufcaio_destino (uf, estado, paginas, pagina) values (NEW.uf, NEW.estado, NEW.paginas, i);
END LOOP;
RETURN NEW;
END IF;
RETURN NULL; -- result is ignored since this is an AFTER trigger
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION teste.ufcaio() OWNER TO postgres;

quinta-feira, 5 de março de 2009

Criando um Database novo Postgres

Hoje necessitei criar um Database novo no PostgreSQL

Criar uma pasta para acomodar o Database
mkdir /usr/local/pgsql/data

Atribuir a propriedade para o usuário postgres
chown postgres /usr/local/pgsql/data

Mudar para usuário postgres
su - postgres

Criar o Database com a aplicação initbd
/usr/local/pgsql/bin/initdb -D -A /usr/local/pgsql/data --locale='UTF-8'

Atualizar no arquivo postgres.conf as porta e a possibilidade de acesso por clientes remotos.
listen_addresses = '*'
port = 5433

Atualizar o arquivo pg_hba.conf para aceitar conexão por qualquer computador da rede 10.68.0.0
host all all 10.68.0.0/8 md5

Ligar o Banco de Dados
postmaster -i -D /usr/local/pgsql/data >>logfile 2>&1 &

Desligar o Banco de Dados
pg_ctl stop -D /usr/local/pgsql/data -w

Alterar a senha do postgres (comando SQL)
ALTER USER davide WITH PASSWORD 'hu8jmn3';

quarta-feira, 7 de janeiro de 2009

São Silvestre 2008




Site com resultado oficial da corrida: Meu número foi 14781

Passando pela linha de chegada
link


Após a chegada, eu estou me arrastando.