[Cascavel-pm] Problemas apenas nas requisições via ajax (caracteres com acentuação)

Nilson Santos Figueiredo Junior acid06 em gmail.com
Quarta Setembro 3 14:26:54 PDT 2008


2008/9/3 Luciano Giordani Bassani <lgbassani em terra.com.br>:
> Eu penso que se Perl foi concebido permitindo ser possível programar de uma
> forma que os monges puritanos consideram errado, então ou Perl não presta e
> é cheio de falhas ou então os puritanos de plantão estão fugindo do objetivo
> inicial da linguagem.

Armas são feitas para matar, mas nem por isso você sai por aí matando
todo mundo caso tenha uma arma, correto?

Ou ainda, desenterrando uma citação famosa, de um tal de Paulo (caso
você tenha alguma tendência pra esses lados):
"Tudo me é lícito, mas nem tudo me convém"

Perl deixa você fazer diversas coisas, mas isso não quer dizer que
seja bom você fazer tais coisas. Não é só porque você tem um martelo
que todos os problemas se transformam em pregos.

Seguindo este seu raciocínio, se você fosse programar em C, também não
veria nenhum problema em ficar alterando diretamente endereços de
ponteiros a torto e à direita (e depois, quem sabe, dar um goto pro
lugar). Tenho até medo do que iria sair.

> Um dos motivos de eu ter escolhido Perl foi por ela ser uma linguagem
> flexível, moldável a mim e não eu moldável a ela. Quem sabe vcs não corrigem
> esta "deficiência" do Perl na versão 6 e dai se livram dos "impuros" como
> eu... Mas enquanto isso, vcs vão ter que aceitar que nem todo mundo pode ser
> "salvo".

A idéia de Perl não é se moldar a ninguém, a idéia de Perl é poder se
moldar a qualquer necessidade que venha a surgir.
Existem casos onde qualquer um dos recursos de Perl são indispensáveis
de verdade. E alguns de nós que já temos bastante experiência
conhecemos muitos desses casos. E alguns casos ainda nem foram
descobertos ainda!

Essa é a beleza de Perl. É similar à cultura humana em geral. O nosso
cérebro é o mesmo de 5 mil anos atrás. Mas nem por isso quer dizer que
hoje seja aceitável fazer coisas que eram feitas há 5 mil anos atrás.
A cultura evoluiu.

O mesmo acontece com Perl. Insistir em más práticas de programação em
Perl é a mesma coisa que defender o totalitarismo islâmico no mundo de
hoje. Não tem nenhuma lei que proíbe, por exemplo, os homens de
abusarem das mulheres naqueles países. Nem por isso quer dizer que
aquilo seja certo.

> Acho válido os puritanos de plantão sugerir a maneira correta de programar,
> mas querer empurrar isso "guela" abaixo é total falta de "noção". Se Perl
> permite usar uma REGEX que converte de UTF8 para ISO-8559-1, mesmo que seja
> errado, então ou a linguagem é flexível ou ela não "presta", pq ela não é
> "puritana".

A regex não convertia UTF-8 pra ISO-8859-1 porque isso é impossível de
ser feito. E se você arrumou um jeito, parabéns, até eu iria te
contratar se fosse o caso. Eu sinceramente não sei como conseguir
representar todos aqueles caracteres asiáticos em apenas 8 bits.

> Se eu quisesse seguir padrões puritanos eu teria escolhido uma linguagem
> diferente. Quem sabe JAVA? :-P

A idéia é que você deve usar Perl não por que ela não te força a
seguir certas práticas, mas porque ela te permite fazer certas coisas
que levam a um código de melhor qualidade que outras linguagens não
deixam. Se você quer usar Perl simplesmente pra poder ficar sem
declarar variáveis e fazer qualquer porcaria que "funciona", talvez
Java seria mais educativo pra você.

> E não adianta ficarem me ameaçando com coisas tipo "teu banco de dados vai
> sofrer sql injection, tua base de dados vai ser comprometida, blábláblá", pq
> isso é muito recorrente aqui. Todos somos inteligentes o suficiente para
> saber dos riscos que adotamos.

Bom, talvez você não trabalhe com nada minimamente sério. Eu não
trabalho com nada *realmente* sério e na minha realidade um SQL
injection seria inaceitável. Até o código velho que tem por aqui, que
não é dos melhores de forma alguma, evita estes problemas.

> Ainda sobre o problema do UTF8 eu fico feliz de ter servido para algo.
> Primeiro em resolver o problema inicial do Fernando e por depois alguém ter
> sugerido o uso do utf8::decode($str) que na minha época eu não achei no
> "Google" e nem na documentação. Também nem sei se funcionaria na época (ou
> até se funciona agora, pq não deu para testar), pq eu tentei algumas
> soluções "corretas", mas elas não funcionaram devido as limitações do
> sistema operacional (isso já fazem alguns bons anos e o servidor não tinha
> todos os charsets instalados, etc).

Perl 5.8.0 foi lançado em 2002 e o módulo utf8 era um core module, ou
seja, nem precisa de instalá-lo em *nenhuma* instalação de Perl 5.8.x.
Se voce for na CPAN e procurar por "utf8" ele é o primeiro resultado.
Eu sinceramente não acredito que você tenha procurado direito.

> Antes de eu entrar nesta lista eu me considerava um ótimo programador,
> baseado na observação dos outros programadores que eu conhecia e trabalhava.
> Mas em pouco tempo de lista deu para perceber que sou um programador
> medíocre em Perl, cheguei até a ficar um pouco deprimido com isso. Contudo
> eu tenho meu emprego, ganho meu salário e atendo satisfatoriamente meus
> clientes, e se não sou um monge, pelo menos posso me considerar um
> programador feliz.

Bom, se você realmente acredita que seja um ótimo programador, tente
aprender estas boas práticas que alguns de nós tentam passar por aqui,
eu te garanto que você iria concordar que aquilo tudo tinha um
propósito, no final das contas.

Se você me conhecesse pessoalmente saberia que eu odeio qualquer coisa
"teórica" de mais. Todo meu conhecimento é prático e eu não gosto de
nada que não tenha um benefício prático comprovado. Eu demorei uns 2
anos pra finalmente perceber os benefícios de se programar orientado à
objetos, por exemplo. Simplesmente me parecia esforço à toa. Aí quando
eu aprendi *de verdade* e realmente entendi eu pude ver o quanto
aquilo facilitava meu trabalho. Eu passei anos sem olhar coisas como
os livros de design patterns por puro preconceito. Quando fui pegar
pra estudar sobre o assunto, eu descobri que eu utilizava vários
deles, só não sabia os nomes (e continuo sem saber). E teria mais
diversos outros casos similares pra poder relatar.

O principal princípio que rege a maioria dos bons programadores Perl é
a preguiça. Vale muito mais à pena ir até a CPAN e procurar um módulo
que faça aquilo que você quer do que tentar fazer uma solução própria.
Muito provavelmente, o código disponível será melhor, mais bem testado
e você vai ter menos esforço.

Tente seguir as boas práticas que você vai ver que no final das contas
vale à pena. E use a CPAN.

É tão simples evitar SQL injection. Simplesmente use placeholders ou a
função $dbh->quote( $valor ). O esforço é mínimo (placeholders
costumam deixar o programa mais simples, na maioria dos casos) e vale
à pena.

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm