Que tal trabalhar em um dos escritórios do Google (GooglePlex) ?
Mountain View California, US


New York, US


Santa Monica Arizona, US



Moscow, Russia

Zurich, Switzerland



Será que é bom trabalhar lá? hehehhe Nada é de graça .. mas entre tomar chicotada aqui e lá … chicotada com xbox-360, bilhar e cochilos soa bemmm melhor
Agosto 31, 2008
Em breve devo fazer um post dedicado ao iReport e ao JasperServer. Um excelente solução para desenvolver relatórios para web com ferramentas open sources … masssss, pra quem já usa e teve ou está tendo dor de cabeça com o driver jdbc para postgresql e transações, vai ai minha dica
.
Meu Cenário
Tenho uma view que recebe os dados vindo de uma função que faz inserts em lote numa tabela (temporária) e no final da transação esses dados são excluídos.
Problema
Como a transação está definida como somente leitura (em algum lugar das profundezas dos milhares de arquivos de configuração do Java) a operação de insert/delete não é permitida e você ganha uma exception
Nas configurações do JasperServer, num dos inumeros arquivos de configuração e pastas do Java, deve existir um lugar onde você pode definir que a transação não é somente leitura. Bom, eu não “falo” java fluente e tive muita dificuldade em resolver o problema. Cansei de tentar achar a tal propriedade na sopa de letrinhas (JNDI, JDBC, BEAN, JSF, J2EE, etc) e resolver procurar a solução do outro lado … no banco. E não é que funcionou????
Basta na sua função/procedure colocar:
SET TRANSACTION READ WRITE;
Mais infos: http://www.postgresql.org/docs/8.1/interactive/sql-set-transaction.html
Agosto 26, 2008
Saudações phpzeiros! Depois de um tempo sem postar graças ao trabalho, estou de volta
. E vamos voltar a série de posts de aplicações desktop com php-gtk. Hoje vamos falar um pouco de containers.
Containers são componentes (widgets) que encapsulam outros componentes. Janelas, painés, frames são exemplos de containers.
Os dois tipos básicos mais usados de containers são GtkBin e GtkBox. O primeiro só permite um componente filho, enquanto o segundo permite que vários widgets sejam acoplados ao container. Essas duas classes são abstratas e como tal não podem ser instânciadas diretamente.
Vamos então falar dos containers mais usados:
- GtkHBox, GtkVBox
Organiza os componentes filhos em uma única linha horizontal (GtkHBox) da esquerda para a direita ou vertical (GtkVBox) do topo para a base. Os métodos usado para adicionar os componentes são pack_start e pack_end.
Estrutura do GtkHBox
| Componente 1 |
Componente 2 |
Componente n |
Estrutura do GtkVBox
| Componente 1 |
| Componente 2 |
| Componente n |
$vbox = new GtkVBox();
$vbox->pack_start( new GtkEntry() );
$vbox->pack_start( new GtkEntry() );
$wnd->add($vbox);
- GtkTable
Organiza os componentes no formato de uma tabela usando linhas e colunas. Os componentes podem ocupar mais de uma linha/coluna.
Os componentes são adicionados usando o método attach do GtkTable. Nele você deve dizer em que linha/coluna o componente deve iniciar e terminar.
$table->attach($label, 0, 2, 0, 1);
No exemplo acima, o label vai iniciar na coluna 0 e terminar na coluna 2 (ocupando duas colunas), iniciar na linha 0 e terminar na linha 1 (ocupando 1 linha apenas).
- GtkFixed
O mais flexivel na minha opinião. O desenvolvedor informa as coordenadas x e y em que o componente deve ficar posicionado na tela. O método usado para adicionar os componentes é o put ou move. Para tal, basta indicar a posição (x,y) de onde o componente deve ser colocado no formulário.
$fixed->put( new GtkEntry(), 8, 24);
- GtkWindow
Esse é o container mais usado. Como se trata de um GtkBin, só permite apenas um componente filho. O método usado para adicionar os componentes é o add.
$win = new GtkWindow();
$win->set_title("Exemplo GtkWindow");
$fixed = new GtkFixed();
$fixed->put( new GtkEntry(), 8, 24);
$win->add($fixed);
É isso ai galera. Até o próximo post.
Agosto 25, 2008