terça-feira, outubro 09, 2007

Tapa na cara

O que essas crianças têm em comum? São humildes? São de uma periferia, por causa das roupas? Eu te digo. São todas, filhas de prostitutas. Do Brasil? Não, porque estariam de terno e gravata, mas essas são de uns dos bairros mais pobres do mundo, Bairro da Luz Vermelho, Calcutá, Índia. A gente costuma ler, sobre o crescimento da Índia, mas a classe menos favorecida fica pior ainda.

"Nascidos em Bordéis" é uma poesia em movimento, embora triste, sobre crianças sem expectativa alguma de vida. A fotógrafa Zana Briski, a princípio queria ver a rotina das mulheres e fazer fotos com elas. Mas acabou conhecendo as crianças e se apegando. Resolveu ensiná-las a tirar fotos, deu uma máquina para cada uma e pediu que tudo que lhes chamassem atenção fosse registrado.

O documentário é muito tocante, pois a gente reclama aqui, que aqui está difícil, qua ali não sei o que, mas nem desconfia que tem crianças em situações que machuca a gente. Alguns não querem enxergar, mas como aceitar que adultos perguntem à crianças de 10 anos, quando elas vão começar a trabalhar. Com as fotos das crianças, foi possível arrecadar fundos para que elas estudassem... Infelizmente, a cabeça dos pais daquele lugar são as piores possíveis e a miséria pior ainda.

Esse filme e "Ilha das Flores", são dois documentários que TODOS deveriam assistir para verem como pessoas vivem, as condições e comparar com o que vivemos, para assim começar a dar valor nas coisas. Como diz o título da postagem, é um tapa na cara.

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.