Neyvo

20 Junho 2008

Para encontrar quebra de linha (chr(10)) em um campo CLOB

Arquivado em: Java — neyvo @ 2:19 pm

Para encontrar quebra de linha (chr(10)) em um campo CLOB:

select * from tabela where instr(col_clob,chr(10)) >0;

Cross table no oracle

Arquivado em: Java — neyvo @ 1:57 pm

Imagine você está tentando para criar um jogo de resultados onde os registros precisam ser colunas, ou vice-versa.
A essência, você precisa “girar” os registros em colunas, ou vice-versa.
Muitas vezes há relatorios que exigêm isto e para que não precisarmos de criar functions ou qualquer outra coisa para solucionar isso podemos usar o chamado pivot ou crosstab queries.

Uma questão de pivot simples é realizada fazendo o seguinte:
1. Acrescente algum tipo de conta ou número de fila ao seu questionamento, se necessário para o agrupamento;
2. Então use sua query original como uma sub-query;
3. Use “decode” para se transformar os registros em colunas;
4. Use “MAX ou SUM” para “agrupar” os registros múltiplos em únicas coluna. E não pode ser esquecido de agrupar.

Exemplo prático:

1. Criar uma tabela:

CREATE TABLE pontuacao (
ano NUMBER(4),
time VARCHAR2(16),
pontos NUMBER(3)
);

2. Inserir alguns registros para simular o pivot:

INSERT INTO pontuacao (ano, time, pontos) VALUES (2004, 'Flamengo', 21);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2004, 'Sao Paulo', 28);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2004, 'Palmeiras', 19);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2004, 'Vasco', 10);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2003, 'Flamengo', 18);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2003, 'Sao Paulo', 26);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2003, 'Palmeiras', 2);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2003, 'Vasco', 14);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2002, 'Flamengo', 16);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2002, 'Sao Paulo', 27);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2002, 'Palmeiras', 15);
INSERT INTO pontuacao (ano, time, pontos) VALUES (2002, 'Vasco', 10);

3. Selecionando todos os registros com um subselect e já mostrando no formado de colunas:

SELECT time,
DECODE (ano, 2002, pontos, NULL) Ano2002,
DECODE (ano, 2003, pontos, NULL) Ano2003,
DECODE (ano, 2004, pontos, NULL) Ano2004
FROM (SELECT ano, time, pontos
FROM pontuacao);

TIME                ANO2002    ANO2003    ANO2004
---------------- ---------- ---------- ----------
Flamengo                                       21
Sao Paulo                                      28
Palmeiras                                      19
Vasco                                          10
Flamengo                            18
Sao Paulo                           26
Palmeiras                            2
Vasco                               14
Flamengo                 16
Sao Paulo                27
Palmeiras                15
Vasco                    10

12 rows selected

Obs.: Deve-se notar que neste resultado não irá apresentar agrupado os valores com seu determinado time, isso por causa que há 3 linhas para cada ano e o decode passa 3 vezes por time assim gerando 3 vezes de cada time.

4. Outro exemplo, porem agrupando os valores e mostrando os maiores valores de cada agrupamento no caso “time”:

SELECT time,
MAX (DECODE (ano, 2002, pontos, NULL)) Ano2002,
MAX (DECODE (ano, 2003, pontos, NULL)) Ano2003,
MAX (DECODE (ano, 2004, pontos, NULL)) Ano2004
FROM (SELECT ano, time, pontos
FROM pontuacao)
GROUP BY time;

TIME                ANO2002    ANO2003    ANO2004
---------------- ---------- ---------- ----------
Flamengo                 16         18         21
Palmeiras                15          2         19
Sao Paulo                27         26         28
Vasco                    10         14         10

5. Um exemplo totalizando os times por ano, utilizando agora a função de agrupamento rollup:

SELECT decode(GROUPING(time),1,'Total',time) AS time,
sum (DECODE (ano, 2002, pontos, NULL)) Ano2002,
sum (DECODE (ano, 2003, pontos, NULL)) Ano2003,
sum (DECODE (ano, 2004, pontos, NULL)) Ano2004
FROM (SELECT ano, time, pontos
FROM pontuacao)
GROUP BY rollup(time);

TIME                ANO2002    ANO2003    ANO2004
---------------- ---------- ---------- ----------
Flamengo                 16         18         21
Palmeiras                15          2         19
Sao Paulo                27         26         28
Vasco                    10         14         10
Total                    68         60         78

Obs.: Lembrando que no Oracle11g tem uma função específica para o pivot ou crosstab, mais detalhes otn.oracle.com

17 Junho 2008

Segurança de rede Wi-Fi

Arquivado em: Java — neyvo @ 10:28 am

Cuidados simples reforçam segurança de rede Wi-Fi; aprenda
Ao comprar um roteador, usuário tem de fazer configurações corretamente.
Assim, evita roubo de dados do seu computador e também o uso indevido da rede.

Com freqüência, os usuários de tecnologia compram roteadores Wi-Fi, instalam esse equipamento para ter acesso sem fio à internet e deixam para depois as configurações de segurança. Essa prática, no entanto, não é aconselhada pelos especialistas — além de facilitar o roubo de dados, pode fazer com que o dono da rede responda na Justiça por ações ilícitas de pessoas que desconhece. Isso pode ser evitado com alguns cuidados simples, sugeridos por especialistas em redes Wi-Fi (veja aqui as dicas).

Leia também:

Wi-Fi roubado pode levar dono da rede à Justiça, diz advogado

Roteador desprotegido cria rede de ‘internet sem fio grátis’ em São Paulo

“As ameaças estão aumentando muito nesse tipo de rede e é preciso saber como se proteger. Os hackers também estão se interessando cada vez mais por esse tipo de ambiente e aumentando suas habilidades nessa área”, afirma Tiago Capoano, da EsyWorld (representante no Brasil da empresa de segurança Kaspersky). Um teste do G1 realizado em São Paulo comprova a falta de cuidados dos usuários de redes Wi-Fi.

Cláudio Smith, gerente de produtos da Siemens Home and Office, afirma que uma rede sem fio vulnerável facilita a captura de dados transmitidos entre o computador e o roteador. Além disso, alerta que, se não configurada adequadamente, esse tipo de conexão facilita a invasão de PCs também desprotegidos — quando consegue esse tipo de acesso, uma pessoa mal-intencionada consegue roubar dados da máquina e instalar nela códigos maliciosos.

Por esses motivos, os especialistas são unânimes: o acesso sem fio à internet deve estar sempre associado a cuidados com a segurança. “O usuário doméstico tem de seguir os passos indicados pelos fabricantes de roteadores e usar ferramentas que garantam a segurança de seus dados”, defende Antônio Mariano, diretor de tecnologia da 3Com. Além do manual, a ajuda na configuração pode vir dos CDs de auto-instalação, suporte das fabricantes de roteadores ou até mesmo daquele conhecido que entende tudo de informática.

Abaixo, o G1 reuniu as principais dicas de segurança em relação aos roteadores. A forma de configurar cada aparelho pode ser diferente, mas as sugestões se aplicam aos mais variados modelos. Confira.

1 – Senha, sempre

É essencial que o acesso à rede Wi-Fi seja liberado mediante uso de senha. Assim, teoricamente só poderão navegar na “sua” internet sem fio as pessoas para quem você passou o nome da rede e também a senha.

2 – Esconda sua rede

Para evitar que o vizinho pegue carona na sua conexão de internet, é possível configurar o roteador para que ele não divulgue o nome de sua rede — ou, usando uma linguagem mais técnica, você deve desabilitar o SSID (Service Set Identifier), tornando-o invisível. É o SSID que permite ao computador identificar uma rede e, se ele não for exibido, o “ladrão de Wi-Fi” não terá como adivinhar a existência daquela rede. Ainda assim, se por acaso ele conseguir visualizá-la, encontrará a barreira da senha de acesso sugerida no item 1.

3 – Criptografe

Os roteadores permitem a criptografia de informações, com o objetivo de dificultar a captura de dados quando eles trafegam entre o computador e o roteador (e vice-versa). Os especialistas recomendam o uso de dois padrões de criptografia: o WPA ou WPA2, pois o padrão WEP já é considerado ultrapassado. O uso da criptografia pode tornar uma rede Wi-Fi até mais segura que uma conexão à internet via cabo, que não tem esse recurso.

4 – Endereço certo

Como medida de segurança “extra”, configure seu roteador para que ele só libere acesso a endereços MAC (Media Access Control) de computadores previamente cadastrados — esse endereço é responsável pela identificação de cada máquina. Essa é a dica mais complexa e, por isso, talvez não seja ideal para os leigos. Você pode aprender a identificar esse endereço em fóruns de internet ou pedindo ajuda para algum conhecido que entenda de informática.

leia mais

16 Junho 2008

Ferramentas para Desenvolvedor Web

Arquivado em: Java — neyvo @ 4:11 pm

Ferramentas Free para desenvolvimento Web:

  • Para nosso amigo Firefox:
  1. Firebug : Ferramenta para debugar, monitorar e editar em tempo real no site, CSS, HTML e Javascript, ferramenta muito poderosa.
  2. YSlow : Ferramenta que analiza o site e traz estatística se o site esta com performace baixa ou alta, baseada nas regras do Yahoo!.
  3. HttpFox : Ferramenta que monitora e analiza entrada e saída do protocolo HTTP do website, muito importante para visualizar controles em Ajax.
  4. Web Developer tool bar :  Ja dito ateriormente neste post, ferramenta com multiplas ferramentas para web.
  • Para nosso inimigo amigo IE:
  1. Developer ToolBar : Igual ao firebug, porém com menos recursos.
  2. MultiplesIEs : Ferramenta para poder testar o site em diversas versões do IE.

http://jf.eti.br/ferramentas-para-desenvolvedor-web/

11 Junho 2008

Impressora de bolso coloca no papel as fotos do celular

Arquivado em: Java — neyvo @ 7:05 pm

A Polaroid apresentou nesta semana a PoGo, uma impressora de bolso que dispensa o uso de computador, colocando diretamente no papel as fotos do telefone celular ou da câmera digital. Segundo o fabricante, a impressão é feita em 60 segundos. A transmissão das imagens para esse equipamento é feita via tecnologia Bluetooth ou com um cabo USB.

Imp

Veja mais

6 Junho 2008

Usando uma sequencia customizada no Hibernate Annotations

Arquivado em: Java — neyvo @ 2:35 pm

Para usar uma sequence para cada classe no hibernate, use o seguinte codigo:

......
@Entity
@Table(name="PESSOA")
@SequenceGenerator(name = "SEQ_PESSOA", sequenceName = "SEQ_PESSOA",allocationSize=0,initialValue=1)
public class Pessoa {

@Id
@GeneratedValue(generator="SEQ_PESSOA",strategy=GenerationType.SEQUENCE)
@Column(name="ID_PESSOA")
private Long Id;
......

Simples!

Blog no WordPress.com.