Arquivo para Outubro, 2009

Jornada Acadêmica UNIPAN

Postado em Geral com as tags , , , , , em 27 27UTC Outubro 27UTC 2009 por alexandrems

Ontem iniciou a primeira jornada acadêmica da UNIPAN, com artigos e mini-cursos para os alunos de Ciências da Computação. Apresentei meu artigo de conclusão da Pós em Tecnologias JAVA, Comparativo sobre XML e JSON como retorno de uma requisição em AJAX.

Depois da apresentação fui correndo para o laboratório, eu e o @battisti fizemos um mini-curso sobre AJAX. Hoje finaliza a jornada, a noite minha parte termina com o mini-curso =)

JSON ou XML, o que retornar para o AJAX?

Postado em Ajax, JavaScript em 23 23UTC Outubro 23UTC 2009 por alexandrems

Para a conclusão da minha pós-graduação, fiz um artigo para comparar as formas de retorno mais utilizadas para aplicações em AJAX, neste post vou resumir a idéia e mostrar minha conclusão, se quiser pode clicar aqui e baixar o artigo completo.

O conceito do AJAX é simples, enviar requisições assíncronas para um servidor que irá processa-las e retornara algum tipo de dados que serão tratados pelo JavaScript na máquina do cliente. Mas e  qual é o melhor formato desses dados que o servidor irá retornar para o cliente?

Bom básicamente ele retorna texto (string) através do protocolo HTTP, sendo possível identificar qual pelo cabeçalho um tipo específico desses dados, como por exemplo, o XML. Se não for especificado ele traz um texto normal. Não vou entrar em detalhes como é feito isso, você ja deve ter trabalhado com AJAX para poder entender o que segue neste post.

XML é muito conhecido e utilizado por inumeras aplicações, com ele é possível organizar com facilidade uma estrutura de dados para serem transmitidos pelo servidor ao cliente. JSON é uma notação de um Objeto JavaScript, mas pode ser utilizado em várias linguagens. Utilizando a função eval() o JavaScript transforma essa string JSON em um objeto para poder ser manipulado.

Tanto XML como JSON podem ser escritos manualmente na forma de uma string, mas existem classes e API´s para várias linguagens que facilitam a manipulação dessas tecnologias. Abaixo vai um exemplo de organização de dados em XML e JSON.

<?xml version="1.0" encoding="iso-8859-1"?>
 <nome> Alexandre </nome>
 </idade> 27 </idade>
</xml>

Exemplo de código XML.

({"nome":"Alexandre"},{"idade":"27"})

Exemplo equivalente para código JSON.

A manipulação do XML necessita utilizar padrões DOM, isso de certa forma dificulta a escrita do código em relação a manipulação com JSON, onde na maioria dos casos basta passar um Objeto ou Vetor com os dados que a classe ou API transforma automáticamente em uma String JSON. A mesma idéia se aplica na parte do cliente, onde o Javascript precisa utilizar o DOM para manipular o retorno em XML. O exemplo disso em JavaScript segue abaixo.

// Para retornar o primeiro nome "Alexandre" vindo de um XML
var nodo = http_request.responseXML;
nodo[0].getElementsByTagName('nome')[0].childNodes[0].nodeValue;

// Para retornar o primeiro nome "Alexandre" vindo de um objeto JSON
var json = eval("("+http_request.responseText+")");
json[0].nome;

Em relação a performance, tamanho e velocidade, tanto XML quanto JSON estão no mesmo nível, ou seja para o cliente é indeferente se a aplicação retorna XML ou JSON. Já para o desenvolvedor é nitida a diferença entre trabalhar com XML e JSON, como o XML segue vários padrões específicos desta linguagem é natural a necessidade de uma outra linguagem utilizar um parser(DOM) que possibilita manipulação dos itens e elmentos do XML. Portanto uma tecnologia que não dependa de linguagens externas  para manipular informações que serão transmitidas entre uma linguagem e outra já teria certa vantagem sobre o XML.

Links
http://www.json.org/
http://battisti.wordpress.com/apostilas/

REPLACE no PostgreSQL

Postado em SQL em 20 20UTC Outubro 20UTC 2009 por alexandrems

Precisei eliminar um caracter (-) que foi utilizado somente para poder passar pela validação do formulário de entrada, esse caracter não poderia sair em um relatório, que deverá retornar em uma única coluna as infromações concatenadas de outras tres colunas. Então foi utilizado a função REPLACE com a concatenação ||.


SELECT REPLACE( coluna_1 | | ' ' || coluna_2 || '' coluna_3 , '-', ' ' ) as retorno FROM tabela