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

sábado, 30 de junho de 2007

Apresentação genero Powerpoint...

algo realmente complicado, quando no deparamos com a situação de ter que montar uma apresentação, normalmente cometemos alguns erros..., mas segue ae umas dicas de o que NÂO fazer em uma apresentação ( genero powerpoint ) [em inglês]



o interessante é o jeito que o cara narra o que não deve ser feito =]

Struts : exemplo de projeto

algo útil em geral, pelo menos eu tenho maior facilidade de assimilar conhecimento pegando um projeto funcionando, ver os fontes e debugar =]

baseado nisso estou disponibilizando 5 projetos simples de uso do Struts:

- struts1_tiles_crud
uso do Struts 1 em conjunto do Tiles( gerenciador de templates ) em um caso de CRUD simples

- struts2_action_annotations
exemplo de como utilizar actions através de anotações no Struts 2

- struts2_blank
exemplo de um projeto simples em branco do Struts 2, também nesse projeto tem um exemplo de como definir saída de stream de dados dinamicamente

- struts2_crud_example
exemplo de crud simples utilizando o Struts 2

- struts2_tiles2_example
exemplo de uso do Tiles 2 em conjunto do Struts 2

Obs.: em todos os projetos possuem um arquito NOTA.txt, com mais informações

ambiente no qual foi montado esses projetos:
- Eclipse 3.2
- WTP 1.5.3
- Java SDK 1.5.x
- Java SDK 1.4.x
- Apache Tomcat 5.5.20
- Apache Tomcat 5.0.28

Eclipse : Web Tools Platform 2.0

ontem foi disponibilizado para download a nova versão da plataforma de ferramentas web para o Eclipse...

essa nova versão possui algumas atualizações interessantes
com um suporte inicial para o Java EE 5...

noticiado também no JavaLobby [link: Eclipse Web Tools Platform 2.0 has arrived]
Eclipse WTP 2.0 [link]

sexta-feira, 29 de junho de 2007

PortalJavaSupport : Mail : v 1.0

relembrando o post no qual falei sobre o suporte de envio de email que o Mentawai possui, resolvi portar ele para dentro do projeto de suporte PortalJavaSupport, para que fosse possível utiliza-lo em qualquer outra aplicação web utilizando qualquer outro framework MVC java de sua preferência...

nota: Reutilização de classes para envio de email, também utilizada no Mentawai Framework MVC

obs.: o jar disponível foi compilado com o java 5

download: [projeto|código] [jar]

definição do pacote: com.portaljava.support.mail

dependências: ( estão dentro do diretório lib do projeto )
- activation.jar
- mail.jar
- velocity-dep-1.4.jar
- servlet-api.jar ( aponte para ${tomcat}/common/lib )

configuração do servlet:
<servlet>
    <servlet-name>
EmailServletConfig</servlet-name>
    <servlet-class>
com.portaljava.support.mail.config.servlet.EmailSenderConfig</servlet-class>
    <!-- caso o nome do properties for diferente deste [ o diretório inicial considerado é /WEB-INF/classes ]
    <init-param>
        <param-name>config</param-name>
        <param-value>email.properties</param-value>
    </init-param> -->

    <load-on-startup>1</load-on-startup>
</servlet>


chaves de configuração do arquivo properties: ( default: email.properties, em /WEB-INF/classes )
# definição das informações referentes ao servidor em si
smtp.server=
smtp.port=  # caso não informado assume que é a porta padrão
smtp.ssl=   # caso não informado assume que é uma conexão não criptografada
# usuário e senha para autentificação no servidor
smtp.authentication=    # caso seja um SMTP que seja autentificado
smtp.user=
smtp.password=
# definição do email que será definido como default sender
smtp.sender.mail=
smtp.sender.label=


exemplo de configuração para utilizar o SMTP do Gmail:
# definição das informações referentes ao servidor em si
smtp.server=smtp.gmail.com
smtp.port=465 
smtp.ssl=true  
# usuário e senha para autentificação no servidor
smtp.authentication=true  
smtp.user=login@gmail.com
smtp.password=login.password
# definição do email que será definido como default sender
smtp.sender.mail=login@gmail.com
smtp.sender.label=Login


para enviar um email simples
try {
  SimpleEmail email = new SimpleEmail();
  email.addTo("login@gmail.com""Login");
  email.setSubject("Testing...");
  email.setMsg("Hi,\n\nBye!");
  email.send();            
catch(Exception e) {
  e.printStackTrace();
}   


para enviar um email utilizando um template:
try {
  Letter letter = new VelocityLetter("Template.html");
  letter.setAttribute("name""Nome");
  letter.setAttribute("age""22");
  String msg = letter.getText();
  
  HtmlEmail email = new HtmlEmail();
  email.addTo("login@host.dom""Login");
  email.setSubject("Testing...");
  email.setHtmlMsg(msg);
  email.send()
catch(Exception e) {
  e.printStackTrace();


download: [projeto|código] [jar]

Google : Docs and Spreadsheets : novo visual

ontem ao acessar, percebi que realizaram uma alteração na interface, a qual agora ficou muito boa, também é possível a organização dos documentos e planilhas em pastas =]

link: Google Docs | Novos Recustos

ps.: também agora possue tradução para português, basta acessar as configurações e alterar para o idioma =]

ps.2: é possível também a partir do Google Docs publicar um documento no blog, fiz um teste rápido e funciona muito bem, acho que vou mudar a forma de postagem no meu blog =]

o pessoal do Meio Bit também postou sobre a nova interface do Google Docs [link]

quinta-feira, 28 de junho de 2007

Mentawai: usando o SMTP do Gmail

algo interessante que acabei contribuindo para o projeto do Mentawai, foi uma vez que tive a necessidade de enviar email pela minha aplicação porém eu não possuia nenhum servidor SMTP disponível, o jeito era utilizar o que eu tinha disponível que no caso era utilizar o SMTP do Gmail, mas como fazer para utilizar o SMTP do Gmail, inicialmente o suporte de email do Mentawai( que é excelente ) não me possibilitava, com isso peguei os fontes do Mentawai, fiz uma proposta de alteração que possibilitaria o envio de email usando o SMTP do Gmail, o qual é autentificado via SSL, a proposta de alteração foi aceita e desde a versão 1.8 do Mentawai está disponível para os usuários...

porém no site do Mentawai no exemplo de uso do suporte de email, não tem um exemplo de como usar o SMTP do Gmail, bom eis aqui um exemplinho:

import org.mentawai.core.*;
import org.mentawai.mail.*;

public class ApplicationManager extends org.mentawai.core.ApplicationManager {
    
    public void init() {
        Email.setDefaultHostName("smtp.gmail.com");
        Email.setSSLConnectiontrue );
        Email.setDefaultPort465 );
        Email.setDefaultAuthentication("login@gmail.com""*senha*")
        Email.setDefaultFrom("login@gmail.com""Login");
    }
  
    public void loadActions() {
        // ...
    }
}
   

e dentro da sua classe action para enviar um mail simples, você pode utilizar esse trecho de código:
        try {
            SimpleEmail email = new SimpleEmail();
            email.addTo("login@gmail.com""Login");
            email.setSubject("Testing...");
            email.setMsg("Hi,\n\nBye!");
            email.send();            
        catch(Exception e) {
            e.printStackTrace();
        }  


veja o link:[Mentawai:enviando email]

Computador pessoal paralelo

um artigo muito interessante que li hoje, a respeito de um feito interessante, conseguiram criar um computador genero computador pessoal que possui processamento paralelo, nada menos que 64 processadores paralelos, os quais graças a arquitetura desenvolvida são vistos como se fosse apenas 1, tornando o trabalho de desenvolvimento de software mais fácil e rápido...

veja o artigo completo [link: Inovação Tecnológica]

bom se os processadores são vistos como 1 só, o desenvolvimento de software continuará da mesma forma, sem a necessidade de se preocupar, como tirar o máximo proveito desses n processadores disponíveis...

quarta-feira, 27 de junho de 2007

Frameworks MVC

frameworks que uso/usei em algum projeto/teste:

1 - JSF, implementação da SUN e da Apache( MyFaces )
2 - SpringMVC
3 - Struts 1
4 - Webwork
5 - Struts 2
6 - Mentawai
7 - VRaptor

---

1 - sinceramente não gostei do JSF e ainda não gosto dele, a menos quando utilizei com alguma ferramenta RAD para o JSF em si que me cuidou da parte de configurações ( as configurações necessárias para usar o JSF é o que não me agrada, muito tempo perdido ) [ ainda o considero utópico, se fosse metade do que prega, seria o melhor... ]

2 - outro framework que não gostei nenhum pouco... parece um Struts 1 um pouco mais evoluido, porém chato e pouco produtivo( deixando claro que essa é minha opinião sobre o Spring modulo MVC )

3 - Struts 1, outro framework que você passa mais tempo perdendo tempo com configurações do que programando a camada de negócio da tua aplicação, qualquer manutenção, ou expansão da aplicação é torturante, a estrutura das classes actiom, mapeamento e a obrigatoriedade do FormBean, consomem muito tempo tonando pouco produtivo ao meu ver

4 - Webwork, um framework que esse sim gostei de utilizar e o considerei muito produtivo comparado com os anteriores e sem a dor de cabeça dos formbean do struts 1, framework muito inteligente

5 - Struts 2, usei/uso atualmente, framework um dos que mais gosto, a parte do nucleo dele é o Webwork, muito produtivo, muito facil de usar, configuração minima ou 0, como queira ( você tem opção de escolher ), implementa todas as vantagens do webwork e mais novidades interessantes =]

6 - Mentawai, framework que é um dos outros que gosto muito, muito produtivo, configuração via codigo java, com isso programando no Eclipse da vida você configura como programa java, digita parte incial do que quer, Ctrl + espaço ( auto complete ), rápido, agil, com ótimas características e funcionalidades prontas para uso em conjunto do framework [ Framework Brasileiro ]

7 - VRaptor, esse framework achei muito bom até eu começar a me encrencar com a caracteristica dele ser baseado em CoC ( configuração sobre configuração ) isso é algo bom se tu for fazer nos moldes que ele te proporciona, mas caso queira você mesmo fazer e controlar a saida das action como queira, ae volte aos arquivos de configuração ( o estilo de configurar não me agradou muito ) [ Framework Brasileiro ]

Lambda Probe

um projeto interessante, que fiquei sabendo através de um email enviado por um amigo ( Robson Hermes )

é um administrador para o tomcat / jboss... nada mais é que simplesmente uma aplicação (um .war), o qual tu faz um deploy no seu tomcat e ele mostra várias informações importantes como:

- lista de aplicações (com mais informações que o admin do tomcat)
- lista das sessões de uma aplicação (permite ver os atributos da sessão, número de requests, etc)
- lista de data sources (vc pode ver a utilização do seu pool)
- funcionalidade de deploy (que ja tem no manager do tomcat... através do upload de um war)
- visualização dos logs
- threads
- cluster(não sei o que ele mostra pq soh habilita se o tomcat estiver com clusterização configurada)
- consumo de memória (forçar um System.gc())
- gráficos de requests e número de bytes (tráfego) das últimas horas

ver [link] [link:screenshots]

e o detalhe mais importante hehe... é OpenSource =)