domingo, 29 de julho de 2007

OC4J 10.1.2.x : Struts 1 : problemas

hoje fazendo alguns ajustes em um projeto eis que surge um problema na hora de fazer o deploy no OC4J 10.1.2.x, simplemente não compilava o jsp...

o mais incrível que a mesma aplicação executava no OC4J 10.1.3.x, mas como o ambiente de produção usa a versão anterior o jeito é corrigir a aplicação para que a mesma funcione...

incrivelmente foi apenas tirar a tag: html:link que a aplicação compilou...
menos mal, bom fica ae a dica, caso alguem passe por apuros no OC4J 10.1.2.x com Struts 1

sábado, 28 de julho de 2007

OpenLaszlo 4.0.3 : disponível

desde ontém dia 27/07/2007, o pessoal da OpenLaszlo.org disponibilizou a nova versão do OL, com algumas correções de problemas da versão anterior, também para melhorar o funcionamento no IE 7

[link] da notícia (inglês)

sexta-feira, 27 de julho de 2007

Firefox : alterando configurações para melhorar um pouco a performance

algo interessate que li hoje, para melhorar um pouco a performance do Firefox para acesso em internet de banda larga:

na barra de URL digite: about:config

procure por:
- network.http.pipelining altere para true
- network.http.pipelining.maxrequest altere para 8

fonte da dica [link: Folha Online]

----

Aproveitando que estou falando do Firefox, para os que não conhecem o Firebug e trabalham com o desenvolvimento de aplicações web como eu, fica a dica ae de uma ferramenta para verificar a execução do código, HTML, Javascript e CSS =]

Obs.: nota de correção [link]

quinta-feira, 26 de julho de 2007

Oracle : executando uma Function via SQL

hoje eis que surgiu uma dúvida...
Como executar uma function em uma SQL sem definir uma tabela?!

simples faça como o exemplo abaixo:
select function_name( att, att, ... ) from dual

e funciona =]

terça-feira, 24 de julho de 2007

Oracle : OC4J : instalando e configurando no Windows


Para quem não conhece o OC4J da Oracle é um servidor de aplicações web java, atualmente nos últimos projetos que tenho participado o servidor utilizado no cliente é este camarada ae, então o jeito é desenvolver no ambiente de desenvolvimento usando ele para evitar qualquer eventual surpresa quanto ao funcionamento...

Obs.: versão que utilizei é o 10.1.3.x, arquivo .zip

no caso como era um arquivo zip, apenas foi necessário descompactar o arquivo em algum local no HD, após feito isso para colocar ele para funcionar foi necessário alterar dentro do diretorio /bin o arquivo utilizado para iniciar e parar o serviço setar 2 variáveis (isso fiz no oc4j.cmd, mas acredito que fazendo isso no oc4j, funcione para o Linux também):

- JAVA_HOME = ${ colocar o caminho de onde está o jsdk }
- ORACLE_HOME = ${ caminho de onde você descompactou o OC4J }

para iniciar o serviço utilizei o comando: oc4j.cmd -start
Nota: para facilitar criei no mesmo diretorio o arquivo oc4j-start.cmd, com o comando acima...

Obs.: Na primeira vez que você for executar o OC4J ele irá solicitar uma senha para o usuário oc4jadmin, defina uma senha que você não vá esquecer depois..., normalmente o pessoal na máquina local de desenvolvimento usa por padrão a senha admin

Nota: a porta padrão do servidor é a 8888

* Eclipse 3.x como WTP
realizei um teste no eclipse 3.2 com wtp 1.5.3 e no eclipse 3.3 com wtp 2.0, setando o servidor OC4J, em ambos ele conseguiu levantar o servidor e parar posteriormente, mas para levantar ele solicitou em uma janela popup na primeira vez, solicitou a senha para o usuário oc4jadmin, aquela que foi definida na primeira vez que o OC4J foi executado na máquina.

segunda-feira, 23 de julho de 2007

Eclipse : Web Tools Platform 2.0 : versão estável

algo interessante, a versão 2.0 do WTP( versão para produção ) está disponível desde o dia 26/06/2007

[link] para área de download

Abaixo assinado : contra CPMF

agora sim parece que é sério e não apenas um boato roalando pela net...

o pessoal da FIEP está recolhendo assinaturas contra a CPMF

participe também desse abaixo assinato contra a CPMF

segue o [link direto]
mais informações [link]

Hibernate : usando SQL

um exemplo simples de uso de SQL no Hibernate

package roseindia.tutorial.hibernate;

import org.hibernate.Session;
import org.hibernate.*;
import org.hibernate.criterion.*;
import org.hibernate.cfg.*;
import java.util.*;
/**
 @author Deepak Kumar
 
 * http://www.roseindia.net Hibernate Native Query Example
 *  
 */
public class NativeQueryExample {
  public static void main(String[] args) {
    Session session = null;

    try{
      // This step will read hibernate.cfg.xml and prepare hibernate for use
      SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
      session =sessionFactory.openSession();
      /* Hibernate Native Query Average Examle*/
       String sql ="select stddev(ins.invested_amount) as stdErr, "+
         " avg(ins.invested_amount) as mean "+
         " from insurance ins";
       Query query = session.createSQLQuery(sql).addScalar("stdErr",Hibernate.DOUBLE).
         addScalar("mean",Hibernate.DOUBLE);
       //Double [] amount = (Double []) query.uniqueResult(); 
       Object [] amount = (Object []) query.uniqueResult()
       System.out.println("mean amount: " + amount[0]);
       System.out.println("stdErr amount: " + amount[1]);

       /* Example to show Native query to select all the objects from database */
       /* Selecting all the objects from insurance table */
       List insurance = session.createSQLQuery("select  {ins.*}  from insurance ins")
      .addEntity("ins", Insurance.class)
        .list();
      for (Iterator it = insurance.iterator(); it.hasNext();) {
        Insurance insuranceObject = (Insuranceit.next();
        System.out.println("ID: " + insuranceObject.getLngInsuranceId());
        System.out.println("Name: " + insuranceObject.getInsuranceName());
      }
      
          session.close();
    }catch(Exception e){
      System.out.println(e.getMessage());
      e.printStackTrace();
    }
    
  }
}

fonte [link]

terça-feira, 10 de julho de 2007

Oracle : SQL : exclusiva ( sentido de exclusão )

algo útil também é como realizar um SELECT onde tenha a necessidade de excluir da seleção dados que estejam presente em outra tabela...

por exemplo, selecionar todos os dados de uma tabela de produtos disponíveis onde essa lista de produtos não selecione novamente um produto que anteriormente foi adicionado a lista de interesse em outra tabela, tendo um cenário:

- tabela_produto ( COD, DESC )
- tabela_produto_selecionado ( COD_PRODUTO, COD_USUARIO )

SELECT * FROM tabela_produto
WHERE COD NOT IN(
SELECT DISTINCT COD_PRODUTO
FROM tabela_produto_selecionado )

Usando Displaytags

algo que normalmente vejo pelos foruns de programação a galera usando esse tal do Displaytags, atualmente no projeto que estou trabalhando também estou utilizando, enfim vai alguns links que lhe pode ser útil assim como foi para mim ;)

- Manual DisplayTag, por Guilherme Mello, disponível no Portal Java

como realizar configurações gerais:

- displaytag.properties

segunda-feira, 9 de julho de 2007

Oracle : SQL : INNER JOIN : mais de um campo

ainda continuando o tema, refazendo mais alguns testes verifiquei que o formato de SQL para INNER JOIN com mais de um campo como o abaixo:

SELECT
A.COLUNA1,
B.COLUNA2
FROM
TB1 A
INNER JOIN TB2 B ON (
B.CHAVE1 = A.CHAVE1 AND
B.CHAVE2 = A.CHAVE2 AND
B.CHAVE3 = A.CHAVE3
)
WHERE
A.CODIGO = 1


funcinou, anteriormente no teste que havia feito tinha uma clausula errada no WHERE por isso não estava funcionando :P

sábado, 7 de julho de 2007

Oracle : SQL : OUTER JOIN : continuando...

bom sobre o post anterior, resolveu em partes mas ainda sim não acabou sendo muito útil
pois acabei tendo de relacionar no SQL mais outras 3 entidades/tabelas, ai a coisa ficou feia...

por enquanto a solução mais rápida foi fragmentar em 3 consultas separadas...

Oracle : SQL : OUTER JOIN

hoje brigando com as SQL para Oracle tive a necessidade de fazer um JOIN entre 2 tabelas, bom até tudo bem, normalmente os JOINs que faço usam apenas 1 única coluna, mas nesse caso eu precisava realizar um que considerasse 3 colunas, as quais são chave primária de uma entidade na base de dados e utilizadas como chave estrangeira na outra...

e fui eu lá tentar, na primeira tentativa, fui no INNER JOIN padrão:

SELECT
A.COLUNA1,
B.COLUNA2
FROM
TB1 A
INNER JOIN TB2 B ON ( B.CHAVE1 = A.CHAVE1 )
WHERE
A.CODIGO = 1

porém essa SQL não me garantia a precisão dos dados recuperados e fui eu tentar ( tudo bem que está errado, mas as vezes cometemos erros hauhauhau )

SELECT
A.COLUNA1,
B.COLUNA2
FROM
TB1 A
INNER JOIN TB2 B ON (
B.CHAVE1 = A.CHAVE1 AND
B.CHAVE2 = A.CHAVE2 AND
B.CHAVE3 = A.CHAVE3
)
WHERE
A.CODIGO = 1

e como era de se prever não funcionou...
até que com a ajuda de um colega do trabalho ele me sugeriu algo que chamava de OUTER JOIN o qual é o respectivo formato abaixo:

SELECT
A.COLUNA1,
B.COLUNA2
FROM
TB1 A,
TB2 B
WHERE
B.CHAVE1 (+)= A.CHAVE1 AND
B.CHAVE2 (+)= A.CHAVE2 AND
B.CHAVE3 (+)= A.CHAVE3 AND
A.CODIGO = 1

esse sim funcionou perfeitamente e me recuperou os dados de forma correta.

sexta-feira, 6 de julho de 2007

Importância do uso de uma ferramenta de gerência de projeto

quando ocorre algum problema relacionado ao desenvolvimento onde falha a comunicação entre a equipe é que realmente percebemos a utilidade e necessidade de uma ferramenta de gerência de projeto para acompanhar o desenvolvimento e saber o que ocorre, quais problemas foram encontrados e FUNDAMENTALMENTE o que foi alterado...

pois pode ocorrer que uma alteração feito por outro desenvolvedor da equipe de desenvolvimento afete um outro caso de uso que inicialmente/aparentemente estava "correto", com isso podendo ocorrer que quando em um novo teste for verificar este mesmo caso de uso que estava funcionando, observar que agora está ocorrendo um problema...

e a grande questão nessa hora é: o que foi alterado?

bom caso não conheça nenhuma ferramenta do genero de uma olhada nessa: dotProject

problema com o dotProject em inglês? olhe então: dotProject-BR

quinta-feira, 5 de julho de 2007

quarta-feira, 4 de julho de 2007

Oracle : útil : selecionando próximo código

algo útil que de vez em sempre me esqueço, uma SQL para selecionar um próximo valor, normalmente utilizada para recupara qual o próximo valor de código a ser inserido na entidade/tabela, segue:

SELECT nvl( max( COLUNA ), 0 )+1 COLUNA FROM ENTIDADE_TABELA


bom fica ae a dica ;)

segunda-feira, 2 de julho de 2007

Foz do Iguaçu - PR : WiMax

uma notícia interessante de hoje, que vi no O Globo Online - WiMax: rede sem fio transforma Foz do Iguaçu em cidade digital

bom eu enquanto ainda estava por lá já sabia do desenvolvimento da infra de rede sem fio da prefeitura, relacionado aos postos de saúde e escolas, mas não pensei que estavam planejando uma rede voltada a toda população...

referência WiMax : Wikipedia

Struts 1: utilizando html:select

hoje acabei tento um pouco de problema, com falta de conhecimento disponível momentaneamente ( hehe ), como de costume meu usando Webwork, Struts 2 e a maioria dos outros frameworks MVC web java, utilizo por padrão a interface List, porém a mesma nada de funcionar... bastou apenas mudar de List para um Vector e funcionou =]

o problema em si era na definição dos options:
<html:options collection="customers" property="id" labelProperty="name" />

PostgreSQL : configurando acessos

para habilitar o PostgreSQL que o mesmo seja acessível via rede é necessário realizar uma pequena configuração, no arquivo pg_hba.conf onde deverá ser definido as informações relacionadas ao IP, ou faixa de IP e método de Autenticação e no arquivo, postgresql.conf configurar: listen_addresses="*", isso irá fazer com que o PosgreSQL aceite conexões externas a máquina do servidor.

Curitiba : Peach Café



quando vier a Curitiba - PR, um local legal para ir com os amigos(as)...
mais informações [link]
Rua 15 de Novembro, esquina com Francisco Torres [mapa]

Java: novidades

* JSTL (Javascript template engine in Java)
[Sistema/Motor de template javascript em java]

JSTL é um projeto OpenSource de templates escrito em java
o qual utiliza javascript como template de programação de expansão.

* Ant Commander 1.1

É um gerenciador de arquivos escrito em java. O Ant Commander utiliza o Ant e commons VFS.
- Arquivos de sistema: Local, Zip, FTP, WebDAV, ...
- Forma de arranjo dos paineis como quizer
- Tudo é configurével( menu, toolbar,... )
- e mais funcionalidades [confira]

domingo, 1 de julho de 2007

Dia 2 de Julho

mais um ano e mais um dia que me pergunto, será que algum ano chegará esse dia, em que estarei com um sentimento de alegria...?

João Gilberto - A Felicidade