Semana Complicada

Já tiveram uma semana complicada, de bug atrás de bug? Os meus últimos dias da semana passada foram assim.

Eu e o Ricardo pegamos a missão de passar um certo trecho de código de Delphi para PHP. Como nem eu nem ele lembramos muito de Delphi, e o código estava bem esquisito, ficamos empacados. O Diogo, que acabou de entrar aqui, ficou com a missão de entender o código. E saiu-se bem.

E lá vamos, o Ricardo e eu implementar o código em PHP.

Porém, devido às conversões automáticas do PHP, travamos aqui:

$parte = 138147;
$resultado = pow($parte,3);
$modulo = $resultado % 777777;  
echo($modulo);
 

A váriavel $modulo, que deveria ser 228957 se transformou em 418495.

Poderíamos fazer em python, e apesar deu ter feito um esboço de código em python, esbarramos no fato de não termos um servidor apache com mod_python, e também com o fato as outras pessoas da equipe (ainda) não conhecem muito python.

O código em python:

parte = 138147;
resultado = pow(parte,3)
modulo = resultado % 777777
print(modulo)
 

Ficamos num impasse – nossa intenção de fazer em PHP tinha ido por água abaixo. Em python, ainda não era viável. Como o sistema roda em Delphi + SQL Server, optamos por fazer uma função no SQL Server.

Porém, precisávamos de usar um array(na verdade, uma hash) na função. E, pra nossa alegria, o SQL Server não suporta arrays!

O Diogo já estava instalando o Tomcat para fazer em Java(!), quando eu finalmente reparei: um hash é uma tabela de duas colunas.. E lá vamos nós de novo…

Para quem acha que a novela acabou por aqui, ledo engano: ao usar o DbVisualizer, usando o driver jTDS para SQL Server, aparecia uma mensagem de erro maluca ao tentar criar a função no banco, dizendo que tal arquivo não existia (mas quem estava mexendo, com arquivos? Eu só queria criar uma função no banco!).

Mas, ao tentar fazer a implementação em python, eu havia baixado o pymssql (extensão do Python para conectar ao SQLServer). E foi assim, executando na mão dois arquivos, um que apagava a função no banco e outro que a criava, que conseguimos fazer a função.

Não que os nossos problemas tivessem acabado. Na verdade, eu não conheço nada de Transact-SQL (a variante SQL do SQL Server). Conheço um pouco mais as variantes do MySQL e do Postgres (PL/PgSQL). Mas que diferença! Transact-SQL, não tem loop for, todas as atribuições de variáveis tem de ter a palavra SET antes, é uma linguagem muito feia mesmo. Resultado: uma função que levou um pouco mais de uma hora para ser feita em php (e em python) levou um dia inteiro para ser feita em Transact-SQL.

This entry was posted in PHP, PostgreSQL, SQL Server and tagged , , , , , . Bookmark the permalink.

One Response to Semana Complicada

  1. Pois é Walter, trabalhar com produtos MS é isso aí mesmo…

    E PHP é uma colcha de retalhos, não dá pra esperar muito.

    Quanto a seu código Python, dá pra compactar ele de duas foras.

    Primeira:

    parte = 138147
    modulo = pow(parte, 3, 777777)
    print modulo

    Segunda (acho esta mais clara):

    parte = 138147
    modulo = (parte ** 3) % 777777
    print modulo

    []‘s

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>