quinta-feira, 29 de agosto de 2013

Problemas com SVN

Bom dia esse é um post técnico.

Se você está com problemas com autorização do SVN depois de uma mudança de senha do seu login no windows e estiver usando eclipse com o plugin do Subclipse é só ir em:

Preferences->Team -> SVN -> SVN Interface

E mudar de JavaHL para SVNKit.

Tente usar de novo e ele pedirá a senha.

Fim.

quinta-feira, 8 de agosto de 2013

Perl - Debugando erros de DB

Bom dia pessoal,

Este é um post técnico.

Esse é mais um post sobre perl, dessa vez para quem precisa debugar erros no banco de dados. Usando o DBI , uma api bastante utilizada para fazer chamadas em bancos mysql, oracle etc, vocês podem precisar fazer processos em batch. Quer dizer, fazer várias chamadas no bd fazendo um commit só. O problema é que se der um erro no meio dessas chamadas, o erro padrão que é lançado é bem preciso sobre "como errou" e não sobre "o que errou". Para o programador poder verificar isso mais facilmente é bem simples. Só basta usar o método TRACE da API. Exemplo abaixo:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
use DBI;
 
### Remove any old trace files
unlink 'dbitrace.log' if -e 'dbitrace.log';
 
### Connect to a database
my $dbh = DBI->connect( "dbi:Oracle:archaeo", "username", "password" );
 
### Set the tracing level to 1 and prepare()
DBI->trace( 1 );
doPrepare();
 
### Set trace output to a file at level 2 and prepare()
DBI->trace( 2, 'dbitrace.log' );
doPrepare();
 
### Set the trace output back to STDERR at level 2 and prepare()
DBI->trace( 2, undef );
doPrepare();
 
exit;
 
### prepare a statement (invalid to demonstrate tracing)
sub doPrepare {
    print "Preparing and executing statement\n";
    my $sth = $dbh->prepare( "
        SELECT * FROM megalith
    " );
    $sth->execute();
    return;
}~

### font : http://oreilly.com/catalog/perldbi/chapter/ch04.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

O trace só será invocado para cada método que for realizado e acontecer algo de anormal, AKA erros. Legal é que você pode enviar para uma saída esse trace com o segundo argumento do método. Melhor do que do que isso, para cada erro você pode manipula-lo com um :

$statement->trace_msg ( " SUA STRING AQUI"); 

Quer dizer que para cada erro, você pode personalizar o que você estava mandando, e isso resolve o problema da falta de verbosidade do nosso amigo "erro padrão do database". ( link )

FIM.