Jul
31

Adobe disponibiliza a versão final de ColdFusion 8

A Adobe disponibilizou a nova versão do ColdFusion.

Conforme já falado anteriormente, uma vasta gama de funcionalidades foram adicionadas ao produto para além do espantoso aumento de performance.
No Coldfusion 8 todas as funcionalidades da linguagem estão em ambas as versões (Standard e Enterprise) contrariamente à versão anterior onde os Event Gateways só estavam disponíveis na versão enterprise.

As únicas funcionalidades que são exclusivamente para a versão Enterprise são o Server Monitor e o “sandbox security” para uso normalmente em ambientes partilhados.

Foi disponibilizado um PDF sobre o aumento de performance juntamente com a matriz comparativa entre edições.

A press release pode ser consultada aqui.




Jul
16

Exemplo em Flex 2: Utilização de Value Objects com Flash Remoting

Este é o último exemplo desta série, e consiste na utilização de Value Objects em Flash Remoting. É no fundo igual ao exemplo anterior, excepto que neste caso fazemos recurso a Value Objects para trocar informação.

A explicação do que são Value Objects, e quais as suas vantagens e desvantagens pode ser vista nesta pequena apresentação que preparei.

Em resumo, os Value Objects são uma best practice recomendada para projectos grandes e complexos, ajudando-nos a simplificar o desenvolvimento e a manter a nossa sanidade mental.
Em projectos pequenos desaconselho a utilização de Value Objects pois, como se pode ver no código do exemplo que apresento neste post embora do lado do cliente a nossa vida tenha ficado ligeiramente mais simples (código mais intuitivo graças a um typed object), do lado do servidor tivemos que aumentar a quantidade de código necessário (ver o ficheiro GestorDeUtilizadoresService.php) para converter as matrizes (hashmaps) para objectos. Claro que é possível criar algumas funções que automatizam este processo e evitam este código como fazemos na Webfuel, mas isto é uma lição para mais tarde.

O código fonte deste exemplo pode ser descarregado daqui. Para colocá-lo a funcionar, é preciso seguir exactamente os mesmos passos descritos no exemplo anterior (excepto a configuração da base de dados, que será a mesma).




Jul
16

Exemplo em Flex 2: Operações CRUD usando Flash Remoting via AMFPHP 1.9b2

Este exemplo é a versão em Flex 2 deste exemplo em Flash 8. Consiste numa aplicação que executa operações CRUD (create, read, update and delete) a uma lista de utilizadores numa base de dados, utilizando Flash Remoting para comunicar com o servidor.

Comparativamente à versão em Flash 8, o lado do servidor manteve-se igual (removi apenas a Method Table que em AMFPHP 1.9b2 já não é necessária). Utilizei AMFPHP 1.9b2 para tirar partido do suporte a AMF3, o protocolo de Flash Remoting utilizado por defeito pelo Flex 2.

Do lado do cliente, são cerca de 30 linhas de código para definir o interface gráfico, 6 para o RemoteObject que se encarrega do processo de comunicação com o servidor, e as restantes são os handlers de cada pedido feito ao servidor, que se encarregam basicamente de guardar em variáveis os dados que chegam do servidor.

Para colocar este exemplo a funcionar, é preciso ter em conta alguns passos importantes:

1. É preciso criar uma base de dados com o nome paw, e fazer dump deste ficheiro SQL

2. A directoria bin deve ser servida pelo servidor http

3. É preciso mudar o ficheiro GestorDeUtilizadoresService.php na directoria bin\amfphp\services nas linhas 15, 16 e 17, colocando os dados de acesso à base de dados. Este é também o único ficheiro do lado do servidor que interessa analisar (os restantes fazem parte do AMFPHP)

4. Convém testar colocando no browser o endereço do service browser do amfphp (provavelmente algo como http://{localhost}/{dirDoExemplo}/amfphp/browser) e chamando por exemplo o serviço getUtilizadores. Se for obtida resposta, é porque está tudo configurado correctamente.

5. Do lado do cliente, é preciso no Flex 2 adicionar o parâmetro “-services services-config.xml” ao compilador. Para fazer isto, basta clicar com o botão direito sobre o projecto, escolher “Properties | Flex Compiler” e na caixa “Additional compiler arguments” adicionar “-services services-config.xml” (sem as aspas)

6. No ficheiro services-config.xml é preciso alterar a linha 10, substituindo o endereço no argumento “uri” para o vosso endereço da gateway do AMFPHP.

O código pode ser descarregado daqui.




Jul
16

Exemplo em Flex 2: “lista de filmes” usando um TileList

Este exemplo é no fundo a continuação do anterior. Consiste em utilizar um TileList para exibir no ecrân uma lista de filmes com respectivas capas, carregada de um ficheiro XML.

Imagem do exemplo de TileList com HTTP Service

O exemplo pode ser visto aqui, e o código fonte descarregado daqui.

Mais uma vez, é um exemplo muito simples, com menos de 30 linhas de código. A lista de filmes é descarregada de um ficheiro XML usando o HTTPService, tal como no exemplo anterior, e é depois usada como dataProvider de um TileList. O TileList possui um itemRenderer (FilmeRenderer.mxml) que é repetido e exibido para cada linha do dataProvider (ou seja, cada filme). Os dados de cada filme são entregues numa variável com o nome “data” ao FilmeRenderer de uma forma “automática” pelo TileList.




Jul
16

Exemplo em Flex 2: carregar XML usando HTTPService

No workshop que estive a leccionar na semana passada na etic fizemos vários exemplos didácticos em Flex 2. Vou colocar aqui 3 ou 4 dos exemplos que me parecem mais relevantes para quem se está a iniciar no Flex.

O primeiro exemplo consiste numa aplicação que carrega os dados num ficheiro XML através do HTTPService para dentro de uma DataGrid. A aplicação tem somente 32 linhas de código (espaçadas), e pode ser vista aqui. O código fonte e os respectivos ficheiros XML podem ser descarregados daqui.

O exemplo é relativamente simples, e além do carregamento do XML mostra ainda como se formatam colunas de uma DataGrid, e como se utiliza a labelFunction para formatar o texto que aparece nas células de uma coluna.

Se houverem dúvidas, podem colocá-las aqui nos comentários, ou melhor ainda, na mailing list.

top