terça-feira, setembro 25, 2007

Qualquer semelhança...

...é mera coincidência




O do Companheiro não da pra perceber, pois ele sempre esta bêbado... Que mancada!

sexta-feira, setembro 21, 2007

Meu meez

O site diz 'seu avatar 3D'. Eu tinha mandado pro Toda, ele fez primeiro. O site é meio pesado então por isso demorei a fazer e a animação não é completa, pois o engraçado dessa sou eu ficando 'desesperado' quando as coisas no computador não dão certo.

O site é Meez, ficou engraçado o meu. O do Toda, ele está dançando, eu acho que ele não sabe muito não mas o avatar está muito parecido.

quinta-feira, setembro 20, 2007

Caso Prático: Carga de Tabelas

Pois bem, hoje algo técnico. Falarei um pouco sobre banco de dados.


Assunto: carga de tabelas entre sistemas de banco de dados (interfaces). Vamos supor que a tabela pedidos faça parte da modelagem do sistema e por motivos de segurança, não temos acesso direto à ela, ou seja, não podemos inserir, atualizar ou deletar registros. Muitas vezes a tabela não é abastecida diretamente, existe um intermediário e é o que faremos agora. O uso deste é para: se o sistema cair, não ficar a dúvida de "atualizou ou não atualizou?" e para fins de auditoria.

Bom, para isso, mais duas tabelas serão criadas. Primeiro a tabela tmp_pedidos, que é exatamente igual à tabela pedidos. A segunda é a tabela log, que consta alguns campos necessários para que a procedure seja executada. A idéia é simples:
- Alguma operação (inserir, atualizar ou deletar) é executada na tabela tmp_pedidos;
- Uma trigger captura essas informações e guarda na tabela log;
- Uma procedure, lê a tabela log, busca as informações na tabela tmp_pedidos com as informações do log e abastace a tabela pedidos;

Esse tipo de implementação é usada muito, então ao trabalho.

Primeiro, iremos criar as tabelas e suas chaves.


create table tmp_pedidos (num number, data date, num_func varchar2(10));
create table pedidos (num number, data date, num_func varchar2(10));
create table log (id number, chave number, tipo varchar2(1), data date, processado varchar2(1));
Na tabela log, a columa chave recebe o valor de num da tabela tmp_pedidos, tipo é I/A/E (inserir, atualizar ou excluir) e o campo processado S/N (que eu representarei com 0 ou 1).

Agora criaremos as chaves.

alter table tmp_pedidos add constraint pk_tmp_pedidos primary key (num);
alter table pedidos add constraint pk_pedidos primary key (num);
alter table log add constraint pk_log primary key (id);
OK. Agora vamos criar a trigger responsável em abastecer a tabela log a partir dos dados inseridos, atualizados ou deletados da tabela tmp_pedidos.

create or replace trigger trg_evento_pedidos
after insert or update or delete on tmp_pedidos
for each row
begin

if inserting then insert into log values (seq_evento.nextval, :new.num, 'I',sysdate,0);
end if;
if updating then insert into log values (seq_evento.nextval, :new.num, 'A',sysdate,0);
end if;
if deleting then insert into log values (seq_evento.nextval, :old.num, 'D',sysdate,0);
end if;
end;
/
Lembre-se que uma trigger é disparada automaticamente. Aqui é disparada depois de inserir, atualizar ou deletar registro na tabela tmp_pedidos. Feito isso, insira alguns registros na tabela tmp_pedidos.

into tmp_pedidos values (1,sysdate, 2);
into tmp_pedidos values (2,to_date('18/09/07','dd/mm/YY'), 2);
Faça uma busca na tabela log.

select * from log;
Nota-se as chaves que são os num da tabela tmp_pedidos e o tipo I, de inserção. Agora faremos a procedure que lê a tabela log, busca as informações na tabela tmp_pedidos e abastece a tabela pedidos.

create or replace procedure sincroniza is
tmp_num number;
tmp_data date;
tmp_func varchar2(10);
begin
for dados in(select * from log where processado=0 order by (data))loop
if (dados.tipo = 'I') then
begin
select num,data,num_func into tmp_num,tmp_data,tmp_func from tmp_pedidos where num = dados.chave;
insert into pedidos values(tmp_num, tmp_data, tmp_func);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
end;
elsif (dados.tipo = 'A') then
begin
select num,data,num_func into tmp_num, tmp_data, tmp_func from tmp_pedidos where num = dados.chave;
update pedidos set data = tmp_data, num_func = tmp_func, num = tmp_num where num = tmp_num;
end;
elsif (dados.tipo = 'D') then
begin
delete from pedidos where num = dados.chave;
end;
end if;
update log set processado = 1 where id = dados.id;
end loop;
end;
Pois bem. Está pronto. A procedure lê a tabela log buscando pelo o que ainda não foi processado, ou seja, processado = 0. Com a chave dessa busca, a procedure procura pelos dados na tabela tmp_pedidos onde num seja igual a chave. Depois disso, é feita a verificação de qual operação é feita e executada a rotina.

Note o exception. Sua função é para que se ocorra uma inserção e logo depois exclusão, não dê erro. Se não for colocado, assim que a procedure procurar pelos dados de um registro não encontrará, pois o mesmo já foi excluído.

segunda-feira, setembro 17, 2007

Truco

Domingo, por natureza, já é um dia meio inútil. É o dia da preguiça, que você não quer fazer absolutamente nada. Alguns ficam de mau humor, afinal amanhã já é segunda-feira e a labuta começa cedo.

Eu não reclamo muito, eu tiro o dia pra descansar. Mas hoje rolou um churrasco. Sol, cerveja, carne... uma mistura incrível e como de praxe, o truco. Joguei algumas partidas, com 6 pessoas é bem mais interessante o jogo. Digamos que é um jogo mais aberto, cheio de 3s e manilhas.

É um jogo bacana e por curiosidade fui ao wikipedia (que tem de tudo) e encontrei várias tipos de truco. Mas eu achei uma frescura só. Pra mim ou é ponto acima ou manilha velha. Agora, tem truco paulista, truco mineiro, truco uruguaio ou truco cego. Esse truco cego, nem deu vontade de ler, um monte de coisa.

Bom, quem quiser conferir, segue o link. Wikipedia

sexta-feira, setembro 14, 2007

Layout

Poxa, todos deram um upgrade. Eu tenho quero! Mas o que eu tinha gostado o Guinho, pegou. Escolho um outro depois. Tem bastante theme e templates por aí.

quinta-feira, setembro 13, 2007

McLaren baila!

Em algum lugar a justiça é feita. Saiu hoje o resultado da FIA sobre o caso de espionagem da McLaren que usou os acertos do carro que a Ferrari fez e assim favorecendo e muito seus pilotos.

Ouvindo a CNB de manhã, pararam a programação para noticiar a pena. A McLaren teria sido excluída do campeonato atual e da temporada 2008. Eu pensei. Nessa o Alonso se deu muito bem, pois tem portas mais que abertas na Renault e o Hamilton chupa o dedo. A briga ficaria entre os dois da Ferrari.

Estranho que cheguei em casa, entrei em sites e nenhum tinha divulgado nada. Liguei a TV e só um tempo depois a Bandnews noticiou. Mas a McLaren só perdeu os pontos do campeonato de construtores e uma multinha, uma petequinha... US$100.000.000,00.

Agora... Se o chefe da equipe fosse amigo, compadre do Mosley, a punição seria essa?

Morreu


Pois é, mais um se foi. Eu não era tão fã do Pedro de Lara, mas ele era engraçado e quando eu assistiu Silvio Santos, dei boas risadas. Mas uma hora chega, né? Um dia será eu, outro você e assim vai. Em uma conversa agora mesmo com um amigo meu, ele me relatou que seu professor comentou que com os avanços, o homem viverá até os 150 anos. Imagina? Não tem mais onde enrrugar.

quarta-feira, setembro 12, 2007

Sim, sim... os palhaços

Pois é... É o que os políticos do nosso país acham que nós somos, não é possível. Entrei nos sites de notícia e começou a vergonha. Primeiro, os deputados brigando com os seguranças da Senado. O Gabeira, tadinho, que que ele queria brigar? Era só colocar um cara fardado lá, que ele ficaria quietinho. Mas ele tem o meu respeito, se ele fosse de SP, tinha meu voto na certa, o que o Carlos Sampaio, que é de SP não tem. Usa uma máscara incrível, com aquela fala mansa dele, à mim não engana. Fora que sendo deputado, o folgado ainda queria o salário de promotor. Absurdo. Mas essa discussão fica para outro dia.

A tarde toda e nenhuma notícia. Saí do trabalho, liguei o rádio na CBN. Escutei a bomba. São Renan, foi absolvido, não foi cassado. Eu fiquei indignado demais, ainda pela maneira. 40 votos contra, 35 a favor e 6 que não votaram. Pior, voto secreto, NUNCA alguém será cassado. Os 81 amigos, não se queimam. Se batem na mídia, com suas atuações teatrais, várias podiam ganhar um Oscar e no final da noite tomam whisky juntos.

Agora, tentem imagina o que não rolou nos 'bastidores'. O Lula que fora emparedado, por São Renan e São Sarney por cargos, saiu limpo, com seu céu de brigadeiro e ainda virou credor. Será que rolou cargos? Será que o Suplicy votou mesmo a favor da cassação? Quais foram os 6 covardes? Deviam algo à Renanzinho?

edit: Um covarde>> Aloizio Mercadante, esse já provou muita coisa quando foi candidato ao governo de São Paulo. O pior é a justificativa.
fonte: http://josiasdesouza.folha.blog.uol.com.br/


Acredito que todos as autoridades, os senhores senadores merecem uma salva de palmas, por demoralizar ainda mais o Senado e fortalecer ainda mais o presidente do país. Mas acredito que São Renan, sai bem enfraquecido dessa e renunciará, em alguma oportunidade. Ficam os dedos mas perde-se o anel? É bem assim.

Aos fiéis leitores


Sim, estou sumido e ficará assim até o final do ano pelo menos. Tenho vontade de escrever, mas estou sem tempo, por incrível que pareça. De tempos em tempos, pretendo postar algo, mas voltar à ativa, somente em Janeiro/08.

Por hora é isso... Fiéis leitores, voltem sempre.