Janela de confirmação em Javascript

25 Fev 2008

Para se adicionar confirmação em um link que executa uma rotina de exclusão, por exemplo, uma boa dica é a utilização do javascript abaixo que abre uma janela de confirmação. Se o usuário clicar em sim, a página do link (href) é chamada, caso contrário, desconsidera o clique efetuado no link e não exclui o registro.

O código para essa funcionalidade é algo do tipo:

<a href="exclui.php?cod_registro=100" onclick=“return confirm(’Confirma exclusão do registro XPTO?’)”>Exclui registro</a>

Simples e prático!


Velox sem provedor

14 Fev 2008

Se você usa banda larga Velox em sua casa e paga, em média, R$30,00 por mês para um provedor, saiba que está pagando por nada.

Para ter certeza de que seu provedor não faz absolutamente nada (além de te cobrar o valor mensal) faça o seguinte teste:

Ao se conectar à internet no Velox, vá para a linha de comando do DOS (iniciar/executar/cmd) e digite:
tracert google.com.br

Esse comando irá traçar toda a rota entre sua máquina e o endereço desejado (google.com.br no exemplo).
Você verá que o caminho é do seu computador para a rede da Telemar e depois pra fora do país e NADA de passar pelo seu “provedor”.

Se não quiser mais pagar desnecessariamente, simplesmente substitua, no lugar do seu usuário e senha, por um dos números de telefone abaixo, da seguinte forma:
usuário = número do telefone + @telemar.com.br
senha = número do telefone

Se o telefone é 2134518623, o usuário será 2134518623@telemar.com.br e a senha será 2134518623

Obs.1: Isso só serve para quem tem Velox. Não vá fazer igual a um cabeçudo que vi chorando em um forum de discussão porque a conta dele veio um absurdo. Certamente o infeliz tinha linha discada e fez interurbano para um desses números durante mais de um mês e depois ficou reclamando por ter ficado mais caro do que se tivesse pago ao provedor….

Obs.2: Se, um dia sua conexão parar de funcionar por causa de usuário e/ou senha, troque por outro número que voltará a funcionar perfeitamete.

Obs.3: Depois que tudo estiver funcionando, não se esqueça de cancelar o serviço com seu provedor, senão ele vai continuar te cobrando do mesmo jeito, tá? hehe

Lista de números mágicos (Não importa em qual região você está: pode usar qualquer um)

3132258000 3134914226 3134214024
3132252333 3132841800 3132846065
3132223351 3132128177 3132128178
2134518623 2126881007 2134135960
2124949300 2133411654 2122925964
2125711253 2125501139 8132217707
2122540625 2125970259 2125717389
2122680119 2125970259 2139752000
8132317417 8133254523 8132230015
8134216056 8132678585 2122540625
3132223351 2122540625 3132223351
2122540625 8132217707 2134518623
2126881007 2134135960 2124949300
2133411654 2122925964 2125711253

Se gostou da economia mensal, comente e recomende! ;)

Maiores informações: http://www.abusar.org/velox/index.html

Abraço!


Criptografia de dados no MySQL

14 Fev 2008

AES_ENCRYPT(string,string_chave), AES_DECRYPT(string,string_chave)

Estas funções permitem criptografia/descriptografia de dados usando o algoritmo oficial AES (Padrão Avançado de Criptografia), antes conhecido como Rijndael.

Os argumentos de entrada podem ser de qualquer tamanho. Se ambos argumentos são NULL, o resultado desta função tam bém será NULL.

A string resultante pode ser calculada como 16*(trunc(tamanho_string/16)+1).

Se AES_DECRYPT() detectar dados inválidos ou padding incorreto, ela retorna NULL.
No entanto, é possível para o AES_DECRYPT() retornar um valor não-NULL (possivelmente lixo) se os dados de entrada ou a chave eram inválidos

Você pode usar as funções AES para armazenar dados de forma criptografada modificando as suas consultas:

INSERT INTO t VALUES (1,AES_ENCRYPT(’text’,'password’));

Você pode obter mais segurança não transferindo a chave em suas conexões a cada consulta, o que pode ser conseguido armazenando-o em varáveis do lado do servidor na hora da conexão.

SELECT @password:=’my password’;
INSERT INTO t VALUES (1,AES_ENCRYPT(’text’,@password));

AES_ENCRYPT() e AES_DECRYPT() foram adicionados na versão 4.0.2, e podem ser considerados a função de criptografia mais segura atualmente disponível no MySQL.


Rotina de criptografia e decriptografia

12 Fev 2008

Exemplo de rotina simples para criptografia/descriptografia em PL/SQL.
Observe que a rotina pode ser facilmente convertida para outra linguagem.
Essa rotina pode ser usada, por exemplo, para criptografar um campo que contenha
a senha em um banco.

A mesma rotina que criptografa, serve para descriptografar.

O funcionamento é bem simples: a rotina recebe uma string e retorna outra string,
de mesmo tamanho com cada um dos seus caracteres com valor ASCII invertido,
isto é, se o caractere tiever o valor 0 (zero), o caractere criptografado será 255.
Se o caractere tiver o valor 10, o caractere criptografado será 245.

create or replace function fun_cripto(
  p_valor in varchar2 )
  return varchar2
is
  sCripto varchar2(100) := '';
  cChar   char(1);
  nAsc    number;
begin

  for i in 1..length(p_valor) loop       -- percorre toda a string recebida
    cChar   := substr( p_valor, i, 1 );  -- valor ASCII de cada caractere
    nAsc    := 255 - ascii( cChar );     -- valor ASCII invertido do caractere
    sCripto := sCripto || chr( nAsc );   -- adiciona caractere invertido à string de saída
  end loop;

  return( sCripto );

end fun_cripto;

Conversão decimal para qualquer base

09 Fev 2008

Resumo
Função que converte um número decimal para qualquer outra base.

Uso
A função recebe 3 parâmetros:
p_decimal: número a ser convertido
p_base: base desejada
p_tamanho: tamanho da string de retorno

Exemplo:

select dec_to( 255, 16 ) from dual; — converte 255 para base hexadecimal
select dec_to( 255, 2, 8 ) from dual; — converte 255 para base binária, com 8 caracteres na saída

Codificação

create or replace function dec_to( p_decimal number,
p_base pls_integer,
p_tamanho pls_integer default 2 ) return varchar2 is –
– conversao de bases: decimal para qualquer base

– Claudio A. Coelho - 12.09.2001


sRetorno varchar2(50);
sRESTO varchar2(50);
nQUOC number;
nRESTO pls_integer;
nTam pls_integer;

begin
nQUOC := p_decimal;
sRESTO := ”;

if nQUOC = 0 then
sRetorno := ‘0′;
goto fim;
end if;

while nQUOC > 0 loop
if nQUOC > 1 then
nRESTO := MOD( nQUOC, p_base );
nQUOC := TRUNC( nQUOC/p_base );
else
nRESTO := 1;
nQUOC := 0;
end if;
if nResto < 10 then
sRESTO := sRESTO || to_char(nRESTO);
else
sRESTO := sRESTO || chr(65+nResto-10);
end if;
end loop;

sRetorno := ”;
nTam := LENGTH( sRESTO );
for i in 0..nTam-1 loop
sRetorno := sRetorno || substr( sRESTO, nTam-i, 1 );
end loop;

<<fim>>
return ( LPAD( sRetorno, p_tamanho, ‘0′ ) );

end dec_to;


Configuração roteador D-LINK 2640-T

02 Fev 2008

O objetivo deste artigo não é explicar em detalhes como se configura o roteador d-link 2640-t uma vez que isso está contido no manual e em vários sites na web. O que não se acha é como entrar no administrador para configurar.
No manual explica que o endereço para acessar o adminstador é 192.168.0.1, o usuário é admin e não tem senha. Isso é verdade para o d-link 524 mas não para 2640-t.

Esse roteador vem, de fábrica, com configurações da telemar (e não a configuração padrão que está contida no manual). Mesmo se você “resetar” o roteador ele ficará com essas configurações:

usuário: TMAR#DLKT20060313
senha: DLKT20060313
Gateway padrão: 192.168.254.254
Faixa de IP atribuído pelo DHCP: 192.168.254.1 até 192.168.254.253

Sendo assim, para acessar o administrador, entre com o endereço 192.168.254.254 no seu browser, usuário e senha acima. A faixa de IP’s que será atribuído às máquinas da rede também difere do que está no manual, conforme parágrafo acima (gateway padrão).

É altamente recomendável que a senha do administrador seja alterada (principalmente se utilizar o recurso de administração remota).

Algumas configurações permanecem após desligar o aparelho, outras são perdidas (como atribuição de IP estático, por exemplo).

Obs.: não testei uma possível atualização de firmware do produto. Talvez com a atualização as configurações voltem a ser como deveriam ter vindo de fábrica.

Espero que tenha sido útil.

Qualquer dúvida ou sugestão é só comentar!

Abraço.


Limitações do Oracle XE

02 Fev 2008

Pela documentação no site da oracle, essas são as limitações do seu banco Free, entretanto, há também a limitação de 20 sessões (conexões) simultâneas na instância, o que pode ser resolvido seguindo os passos descritos do artigo Número máximo de 20 sessões no Oracle XE postado nesse blog.

Any use of the Oracle Database Express Edition is subject to the following limitations;
1. Express Edition is limited to a single instance on any server;
2. Express Edition may be installed on a multiple CPU server, but may only be executed on one processor in any server;
3. Express Edition may only be used to support up to 4GB of user data (not including Express Edition system data);
4. Express Edition may use up to 1 GB RAM of available memory.


Número máximo de 20 sessões no Oracle XE

02 Fev 2008

No exemplo abaixo, passaremos a limitação de 20 sessões do oracle XE para 100 sessões:

a. Conecte do banco como administrador

connect / as sysdba

b. Altere o número de processos para 100

alter system set processes=100 scope=spfile

c. Remova o limite de 20 sessões

alter system reset sessions scope=spfile sid=’*’

d. Pare o banco

shutdown immediate

e. Inicie o banco

startup

Para verificar se as alterações fizeram efeito:

show parameter sessions

show parameter processes


SQL - Introdução

01 Fev 2008

Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM desenvolveu a linguagem SQL como forma de interface para o sistema de BD relacional denominado SYSTEM R, início dos anos 70. Em 1986 o American National Standard Institute (ANSI), publicou um padrão SQL.

A sigla SQL significa Structured Query Language, ou Linguagem de Consulta Estruturada.

A linguagem SQL estabeleceu-se como linguagem padrão de Banco de Dados Relacional.

SQL apresenta uma série de comandos que permitem a definição dos dados (chamada DDL - Data Definition Language) que é composta, entre outros, pelos comandos CREATE, que é destinado a criação do Banco de Dados, das Tabelas que o compõe, além das relações existentes entre as tabelas. Como exemplo de comandos da classe DDL temos os comandos CREATE, ALTER e DROP.

Os comandos da série DML (Data Manipulation Language), destinados a consultas, inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas de maneira simultânea. Como exemplo de comandos da classe DML temos os comandos SELECT, INSERT, UPDATE e DELETE.

Uma subclasse de comandos DML, a DCL (Data Control Language), dispõe de comandos de controle de permissões como GRANT e REVOKE.

A Linguagem SQL tem como grandes virtudes sua capacidade de gerenciar índices, sem a necessidade de controle individualizado de índice corrente, algo muito comum nas linguagens de manipulação de dados do tipo registro a registro. Outra característica muito importante disponível em SQL é sua capacidade de construção de visões, que são formas de visualizarmos os dados na forma de listagens independente das tabelas e organização lógica dos dados.

Outra característica interessante na linguagem SQL é a capacidade que dispomos de cancelar uma série de atualizações ou de as gravarmos, depois de iniciarmos uma seqüência de atualizações. Os comandos COMMIT e ROLLBACK são responsáveis por estas facilidades.

Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo fato de estar baseada em Banco de Dados, que garantem por si mesmo a integridade das relações existentes entre as tabelas e seus índices.

SQL é uma linguagem declarativa: o usuário somente especifica QUAL resultado desejado, deixando o trabalho de COMO obter e as otimizações para o SGBD.