sábado, 29 de novembro de 2008

RIP Rich Internet Presentation

thesecret_for_ria

Foi simplesmente a melhor apresentação a respeito de RIA que já tive a oportunidade de assistir, não só no tocante ao conteúdo, que foi de uma riqueza impressionante e muito bem elaborado, mas também pela performance do apresentator, Beck Novaes (DClick), que conseguiu de uma maneira extremamente clara, objetiva e didática, abordar temas “obscuros” (e às vezes até pouco conhecidos/ignorados) da produção de um RIA.

Fico extremamente orgulhoso de saber que um material dessa qualidade tenha sido desenvolvido por um brasileiro e gostaria muito de ve-lo publicado no Adobe Developer Connection como uma referência importante, tanto para quem vai iniciar-se no desenvolvimento de RIAs, quanto para quem quer atingir um nivel superior na realização e redesenho de seus trabalhos atuais.

Por isso, digo que o Beck consegiu inaugurar o termo RIP (Rich Internet Presentation)

Isso porque ele conseguiu colocar na execução da sua apresentação, exatamente tudo o que ele abordou como importante no desenvolvimento de um RIA. Quer saber o quê foi? Como foi? Só assistindo.

http://blog.dclick.com.br/2008/11/29/60-pessoas-ja-sabem-o-segredo/trackback/pt/

quarta-feira, 19 de novembro de 2008

DClick disponibiliza arquivos do MAX2008

DClickLogo

O Rafael Martinelli da DClick que está nos EUA participando do MAX 2008, em uma atitude bastante admirável está disponibilizando alguns arquivos distribuídos/gravados durante o evento.

Dentre os arquivos, o Flex 4 (Gumbo) para Win e Mac e o Catalyst para Mac, além de videos da apresentação do Ely Greenfield.

Passe lá, baixe e deixe o seu comentátio de agradecimento!

Blog do time to Catalyst Thermo

thermo_blog_logo

O blog do time responsável pelo Catalyst (Thermo) está no ar.

Vários tutoriais/screenshots já estão disponíveis para você matar a curiosidade.

Não vejo a hora de pôr as mãos nele!

Alchemy Flash C++

20080330_atoms_and_alchemy

A imagem ao lado não se refere ao logo do projeto que a Adobe anunciou no MAX 2007 e que disponibilizou para testes e avaliação da comunidade no MAX 2008 que ocorre esta semana.

A imagem refere-se a capa de um livro que pode se conhecido neste link. Simplesmente achei o logo do mesmo interessante e resolvi usar a imagem para ilustrar o post.

OK! Justificativas feitas, vamos ao que realmente interessa!

No MAX 2007, este projeto originalmente chamado de FLACC foi apresentado, anunciando a possibilidade de compilação de código escrito em C/C++ em uma biblioteca com bytecode possível de ser consumido e rodado em uma “futura” versão do FlashPlayer.

Pois bem. Essa semana, no MAX 2008 que ocorre em San Francisco/CA/USA, o projeto foi aberto ao público e encontra-se disponível no Adobe Labs afim de que programadores C/C++ possam efetivamente testá-lo, bem como sugerir implementações, ou simplesmente dar a sua opinião. O “futuro” FlashPlayer traduz-se no recém disponibilizado FlashPlayer10 e extende-se ao Adobe AIR 1.5 disponibilizado paralelamente ao anúncio do Alchemy.

A pergunta é: Qual o objetivo prático do Alchemy?

Inicialmente, e confesso que eu fui uma dessas pessoas, me pareceu que esta sería a declaração de liberdade de recursos do FlashPlayer, abrindo ai a possibilidade de valer-se de bibliotecas C/C++ destinadas até mesmo co controle de hardware (impressoras fiscais, equipamentos de biometria, joysticks, etc.), mas infelizmente não é do que se trata.
O principal objetivo do Alchemy é expandir a capacidade do FlashPlayer no que se refere a processamento de dados. Ou seja, algoritimos de criptografia; leitura, análise e processamento de áudio e vídeo; leitura, escrita de renderização dos mais diversos tipos de formatos de arquivos e coisas do tipo. Ao invés de portar/reescrever um código originalmente escrito em C/C++, o mesmo pode ser simplesmente  compilado em um SWF/SWC e consumido por um código AS3 (Flash/Flex/AIR).
Ou seja, os recursos capazes de serem explorados em C/C++ no FlashPlayer10/AIR 1.5, são limitados exatamente aos recursos presentes nos respectivos players, o que acaba soando óbvio mas que não precisaria ser necessariamente assim. Porém, de qualquer maneira é um avanço impressionante nas capacidades que o Adobe Flash Platform passa a oferecer. Aliás, gostei deste termo ter sido resgatado pela Adobe para referenciar toda a linha de produtos relacionados à produção ou a execução/controle de conteúdo utilizando ActionScript.

Então o que muda? O que poderá surgir a partir disso?

Mais uma vez as possibilidades estão apenas limitadas à critividade, mas com ainda mais opções. Pense numa formula tipo “infinito² - direct_hardware_access”.
Primeiro a gente tem que pensar que a maioria das possibilidades de uso desses recursos que serão implementados daqui por diante já estavam disponíveis e eram possíveis por causa do recurso de “ByteArray” (Classe ByteArray) introduzida no FlashPlayer9/AIR 1.0, porém sendo necessário um esforço muito maior do que será necessário agora, vez que para alcança-los era necessário reinventar a roda reescrevendo tudo o que já existia antes para tal. Hoje, com o Alchemy, bastará compilar um código pré-existente que tenha a base da funcionalidade deseja e implementá-la com AS3. Alguns recursos, como os relacionados diretamente a som (Dynamic Sound Sampplig) e alguns em relação a formato de vídeo (H.264 por exemplo) só serão possíveis pela disponibilidade do recurso internamente no FlashPlayer10/AIR 1.5, assim como também a aceleração de vídeo por software e por hardware.
Dentre as possibilidades práticas que podemos imaginar estão desde as já apresentadas como exemplo pela própria Adobe no MAX 2007/2008 como jogos famosos sendo disponibilizados para rodar com o FlashPlayer/AIR onde o jogo Quake I foi utilizando como exemplo, players de vários formatos de audio/video (não apenas MP3/FLV), conversores de arquivos, serviços de criptografia/descriptografia de dados, implementação de protocolos de comunicação cliente-servidor e até mesmo um maior avanço no uso desses players de maneira mais abrangente em dispositivos como celulares, set-top-boxes (tv-digital), pocketPCs, console de games, etc.

E você? O que você acha que pode ser possível a partir do Alchemy?

Lembre-se, se você quiser começar a portar um eventual código C/C++, na página dedicada ao Alchemy no Adobe Labs, você encontra além dos binaries do projeto, exemplos e instruções de como preparar o ambiente e usar o compilador no Windows, MacOS e Linux.

ColdFusion IDE codename Bolt

BOLT1

Seguindo a série de novidades que estão sendo anunciadas no Adobe MAX 2008, surgiu a notícia de uma IDE específica para ColdFusion, baseada no Eclipse (assim como ocorre com o FlexBuilder) chamada por enquanto de BOLT.

Confesso que tinha até mesmo esquecido, que à não muito tempo a Adobe havia feito uma pesquisa em massa, questionando seus usuários/parceiros quanto a aceitação/necessidade de uma solução do tipo.

Hoje utilizo o CFEclipse e algumas vezes recorro ao Dreamweaver, que adicionei novamente ao “cinto de utilidades” depois das novidades presentes na versão CS4.

Cenário atual em relação ao CFEclipse

O CFEclipse justifica-se para mim por me permitir unificar minhas ferramentas de programação em uma única plataforma, o Eclipse, e ser gratuíto. Seus recursos, na minha opinião, não são assim tão fantásticos e pecam bastante em coisas simples como sintax highlight, code completition, document templates e code templates que são recursos extraordinários presentes e disponibilizados pela plataforma Eclipse e muitas vezes ignorados. O FlexBuilder também comete alguns desses pecados, porém recursos como package/inheritance recognition, structure recognition, refactoring e outras caracteristicas ofuscam esses pontos negativos enquanto o CFEclipse não trata nem o básico de uma maneira plenamente satisfatória. Mas tudo bem. É gratuíto, é uma opção, já permite alguma agilidade de longe muito melhor do que um Notepad Plus.

Cenário atual em relação ao Dreamweaver

O Dreamweaver é excelente e de qualidade inquestionável e imbatível quando se trata de trabalhar layout e programação ao mesmo tempo. Peca por não ter recursos ágeis de codificação e nesse ponto meu grau de comparação sempre será os recursos presentes no Eclipse. Na versão CS4 melhorou muito. A questão de integrar-se com Subversion foi para mim o ponto mais alto, seguido pelos recursos de desenvolvimento JavaScript/AJAX e pelas incríveis melhorias de interface e funcionalidade relacionadas a WebStandards.

A proposta do Bolt

Tomando como base o conteúdo da seção no Adobe Labs dedicado ao Bolt, onde aliás os interessados podem inscrever-se ao Beta do mesmo, relaciono os principais recursos e meus comentários a respeito dos mesmos.

  • Auto-configuração de Mapeamento de Objetos Relacionais (ORM): Sendo lançado juntamente com o ColdFusion 9 Centaur, era de se esperar que o Bolt trouxesse um recurso do tipo, senão seria uma falta grave. No post que fiz a respeito do ColdFusion 9 Centaur, há detalhes a respeito desta nova funcionalidade. Ainda não tenho o Bolt em mãos, mas creio eu que a funcionalidade baseie-se indicação do DSN com o qual a aplicação à ser desenvolvida irá trabalhar e a partir disso o Bolt seja capaz de gerar os arquivos de configuração necessários à implementação do recurso no framework do ColdFusion 9
  • Geração de Código: Acredito eu, trata-se de wizards para a criação de objetos, suas propriedades, e métodos, incluindo os getter/setters seguindo as novas especificações do CFML/CFScript também abordadas no post que fiz sobre as novidades do ColdFusion 9
  • Gerenciamento do Servidor: Este recurso deve expor o painel administrativo do ColdFusion diretamente na IDE, eliminando a necessidade de se abrir um navegador para interagir com a mesma.
  • Facilidade de extensibilidade usando recursos exportos pela arquitetura do Eclipse. Sinceramente isso é natural de qualquer recurso baseado no Eclipse, à não ser que a Adobe decida, a exemplo do que ocorre com o Flash, Dreamweaver e etc, definir um framework próprio (API) para promover tal extensibilidade com Javascript por exemplo.
  • Sintax highlight para CFML/CFScript, HTML, Javascript e CSS. É o mínimo #1 que se espera de uma IDE para ColdFusion ou qualquer outra tecnologia semelhante.
  • Code Completition para CFML/CFSCript (tags/palavras-chave), funções, variáveis e componentes. É o mínimo #2.
  • Expansão/Retração de bloco de código. Útil para códigos muito extensos. É um dos recursos básicos da plataforma Eclipse no que se refere à edição de código. Particularmente, eu não sentiria tanta falta disso, mas sei que existem desenvolvedores que não dispensam este recurso simples.
  • Criação e Gerenciamento de blocos de código (snippets). Neste teor, eu só espero que a Adobe não queira reinventar a roda, como ocorreu com o CFEclipse e faça uso dos recursos de Code Templating que o Eclipse oferece e é na minha opinião um dos pontos mais altos no que diz respeito de agilidade de desenvolvimento/produção de código. Espero também que a Adobe preocupe-se em permitir que os templates de novos arquivos sejam editáveis.
  • Visualização estrutural. Janela que apresenta o componente/arquivo de código em questão como uma estrutura, identificando métodos, variáveis, etc. Está aí algo também bem básico para qualquer IDE.
  • RDS Explorer. OK! Obrigado! Mais um básico! Espero só que seja mais útil do que encontrado por exemplo em outros recursos já disponibilizados no Eclipse, um pouco mais próximo do Data Explorer que existe no Dreamweaver.
  • Debugger com recursos de verificação linha-a-linha. Muito útil, bem vindo, já disponibilizado como plugin para o eclipse anteriormente (mas que ainda não utilizei). Acho que não utilizei justamente por ser algo que eu teria que configurar manter de forma independente e que para mim não se justifica muito em uma IDE.

Enfim, se a Adobe conseguir 50% do que se espera, eu acho que já teremos em mãos uma ferramenta extraordinária e sem precedentes quanto ao desenvolvimento ágil com ColdFusion.

Lembre-se que para participar do Beta, você pode candidata-se a partir do link que se encontra na página dedicada ao Bolt no Adobe Labs.

ColdFusion 9 Centaur

Logo ColdFusion 9 - Centaur

Das novidades anunciadas, umas da que eu mais esperava!

O ColdFusion 9, de code-nome Centaur, na minha opinião apresenta-se com um pacote de inovações técnicas na sua infra-estrutura que remetem à força e dedicação da Adobe em torná-lo cada vez mais uma plataforma competitiva em relação a outros servidores de aplicação disponíveis no mercado.

As novidades desta versão, conforme o que já foi publicado oficialmente pela Adobe (há mais, acreditem), deixam isso bem claro. Faço abaixo meus comentários pessoais a respeito de cada recurso:

Mapeamento de Objetos Relacionais (ORM)

A idéia é diminuir a necessidade de implementação personalizada e geralmente repetitiva para que se obtenha consistência e agilidade no desenvolvimento de aplicações no que se refere à dados. Com este recurso, de uma forma bastante simples o ColdFusion irá expor ao desenvolvedor, a partir de uma configuração bastante simples, objetos que representam dados do banco de dados, considerando a relação existente entre os mesmos.
Hoje, para atingir uma situação/ambiente de desenvolvimento semelhante, utilizo o framework Transfer-ORM desenvolvido, mantido e disponibilizado por Mark Mandell.
Infelizmente acho que códigos que exponham tal recurso ainda não podem ser publicados, mas se você deseja ter uma prévia do que será este recurso no ColdFusion 9 Centaur, conhecer o Transfer-ORM é uma boa introdução.

Melhorias na linguagem em sí

Até mesmo para expor o recurso de mapeamento de objetos relacionais (orm) citado acima, a linguagem necessitava de implementações. Haja visto que o próprio Transfer-ORM acaba pecando em alguns dos seus aspectos internos e capacidade de integração com outras camadas da aplicação, justamente por algumas limitações que o CFML/CFScript apresentavam até então. No caso do Transfer-ORM isso é notável principalmente quando implementa-se uma integração com o Flex/AIR por exemplo. Em resumo, é necessário criar algumas soluções alternativas para integrar os objetos gerados pelo Transfer (os TransferObjects) às capacidades AMF (Remoting/LiveCycle) do ColdFusion.

Essas melhorias na linguagem são basicamente:

  • Possibilidade de escrever componentes (CFCs) totalmente utilizando CFScript
  • Palavra chave “new” para simplificar o instanciamento de componentes bem como sua inicialização
  • Palavra chave “import” para definir o acesso a objetos de dependência em um componente
  • Definição explícita de getters e setters (métodos com diretivas get/set)
  • Definição de um escopo para variáveis locais que simplificará até mesmo a estrutura de um componente
  • CFFINALLY e CFCONTINUE que complementam a logica do TRY/CATCH e LOOPs
  • Enfim, a eliminação das diferenças entre CFTAGs e CFSCript

Ao mesmo tempo que temos que avaliar que isso tudo é extremamente positivo em termos de recursos, capacidade e robustez do ColdFusion, acho que foi importante a preocupação em manter a simplicidade do CFML em sí afim de que o ColdFusion não perca a agilidade da programação declarativa.

Outro fator importante é a proximidade de sintaxe, na questão dos scripts, da estrutura de código e da lógica que será possível de se implementar com o CFSCRIPT em relação às tecnologias concorrentes. Creio eu que além de diminuir uma resistência – que é imediata em relação as TAGs – aumenta a capacidade de se compreender o ColdFusion por parte de desenvolvedores PHP, ASP/.Net, Java, etc.

Serviços ColdFusion expostos ao Flex/AIR através de bibliotecas AS3 específicas (SWCs)

Como desenvolvedor Flash/Flex/AIR, este para mim é o principal recurso que fará diferença no meu dia-a-dia a respeito do ColdFusion 9 Centaur. Vários recursos, que não sei se já podem ser citados publicamente ainda por isso não o farei agora, que hoje dependem de uma implementação manual e repetitiva de aplicação para aplicação, já será abstraída pelo ColdFusion, permitindo o consumo direto desses recursos por meio de objetos em uma API definida em AS3 que poderá ser implementada nas aplicações como RSLs (Runtime Shared Libraries) assinadas digitalmente, que farão parte do framework compartilhado de distribuição única, ou seja, que o usuário baixa uma única vez ao primeiro acesso à aplicação Flex (o AIR não necessita desse download adicional).
Este recurso será certamente considerado um grande diferencial na adoção do ColdFusion para integração com Flex em aplicações RIA robustas.

Método “onServerStart” no Application.cfc

Bom, para quem é usuário do CF e já implementa o Application.cfc em suas soluções, a importância já é implícita. Mas enfim, dá ao desenvolvedor a capacidade de executar uma rotina personalizada na inicialização de um servidor.

 

Para ler dados oficiais do anúncio e candidatar-se a Beta Tester, visite a página dedicada ao lançamento no Adobe Labs:
http://labs.adobe.com/wiki/index.php/Centaur

Adicionalmente, eu não poderia deixar de comentar que ainda espero que exista alguma novidade em relação a politica comercial do ColdFusion. Mas como ainda estamos em fase de discutir o produto em sí, o que nos resta é aguardar.

De qualquer forma, repito, na minha opinião a Adobe encontrou várias formas de justificar e reforçar o diferencial do ColdFusion em relação aos seus concorrentes. E digo isso sustentando que eu mesmo me surpreendi.

segunda-feira, 17 de novembro de 2008

Tudo sobre o Flex com exemplos

tourDeFlex

Essa aplicação AIR foi anunciada hoje no MAX2008 e tem como objetivo principal:

- Permitir um overview da arquitetura do Flex a iniciantes

- Servir de referência visual para desenvolvedores experientes

- Permitir que soluções diversas possam ser demonstradas facilmente

Foi uma sacada bem legal. Está disponivel também como plugin para o Eclipse/FlexBuilder.

Faça o download em: http://flex.org/tour

AIR 1.5 disponivel para download

Adobe AIR

Conforme já foi dito aqui no blog com o post sobre as novidades do MAX 2008, o AIR 1.5 já está disponível.

Download AIR Runtime

Download AIR SDK

Confira post sobre update do Flex SDK e FlexBuilder.

FlexBuilder 3.0.2 e Flex SDK 3.2

fx_smallAtualização (release) para o FlexBuilder e o Flex SDK para oferecer suporte ao FlashPlayer10.

Detalhes a respeito deste release (e links) podem ser encontrados no DeveloperConnection:
http://www.adobe.com/devnet/flex/articles/sdk32_fb302.html

Bastidores técnicos do Adobe MAX2008

max2008_behindScenes

Dê uma olhada neste vídeo que o Serge Jespers do webkitchen.be fez, mostrando uma pequena parte da infra estrutura do MAX 2008 para o salão principal onde ocorrerão os SneakPeaks que nos trarão as grandes novidades deste ano no evento.

Site oficial Adobe MAX 2008 USA by 2Advanced

max2008_site_2advanced

O site que a 2Advanced desenvolveu para o MAX 2008 está sensacional. Fiquem atentos aos cenários interativos que são carregados como background (não possui um aviso de carregamento. simplesmente aguarde). Na imagem acima um screenshot do background com um game no estilo “Genius”. Há ainda outros 2 cenários com outros tipos de interatividade. Espero que vocês também consigam ver os FlexBots, os FlashChimps e o AIR-dirigível! Eu ainda só não consegui sacar a mensagem do “BigSpaceship”. O que será? ;)
DICA: Reparem que essa interatividade é também informativa! ;)

Adobe MAX 2008

(Imagem e origem do conteúdo: FlashMagazine.com)

Essa semana começa o evento mais importante do ano (para mim). O MAX 2008, desssa vez realizado em San Francisco/CA promete vir com novidades bombásticas, como sempre.

As primeiras já começaram a rolar em várias fontes, e eu vou tentar o máximo possível transcrevê-las aqui.

Thermo é Flash Catalyst – Detalhes a respeito dele surgirão ao longo da semana.

Flash Media Server 3.5 – Com novidades significativas que definitivamente o colocará muito à frente de soluções alternativas existentes no mercado.

Adobe AIR 1.5 – Já está disponível para download, contendo basicamente suporte à criptografia de dados usando o SQLite, suporte aos recursos do FlashPLayer10 e uma atualização ao byte-code do WebKit par aum aumento significativo de performance de aplições AIR escritas em HTML/Javascript.

Aceleração por Hardware ao renderizamento de conteúdo no FlashPlayer10. Inicialmente suportado por chips baseados na plataforma ARM - que incluem os Chips da nVidia -  mas que possui interesse de outros fabricantes que também virão a oferecer ta recurso.

Um detalhamento dessas notícias pode ser verificado através de um release oficial disponível no site da Adobe.

terça-feira, 11 de novembro de 2008

POG ColdFusion para identificar registros que nao podem ser excluidos de uma tabela

Odeio POGs. Em primeiro lugar porque a exigência comigo mesmo faz com que eu não descanse até encontrar uma solução verdadeiramente elegante.

A situação desta vez foi a seguinte: Se vocês repararem, todos os sistemas que a gente encontra por ai, no CRUD apresentam a possibilidade de excluir qualquer registro, verificando no momento da transação (server-side) se aquela ação é realmente possível ou não. Se possível, simplesmente efetiva, senão retorna uma mensagem para o usuário. A minha intenção é já desabilitar a opção de excluir na interface, prevendo tal condição. Para isso, preciso que no momento de mandar os registros de uma tabela para serem apresentados na interface, eu verifique se estes não são referenciados de alguma forma.

Conversando com meu amigo Jefferson Petilo, primeiro definimos o que era óbvio. Precisaríamos no banco de dados que fosse, utilizar as restrições de operação entre registros das tabelas através de chaves estrangeiras. Considere:

Tabela1 (TiposDeImagens):

Campo Tipo Função
id (uuid, int, etc) Chave Primaria
label (varchar) Descrição do tipo

Tabela2 (Imagens):

Campo Tipo Função
id (uuid, int, etc) Chave Primaria
label (var char) Descrição da imagem
tipo (uuid, int, etc) Chave Estrangeira
OnDelete = restrito


Logo depois, por não encontrar nada universal no SQL ou que pudessemos facilmente replicar para vários banco de dados, decidimos que a melhor maneira de verificar registro por registro (no exemplo, da Tabela1, TiposDeImagens) quanto a possibilidade do mesmo ser excluído, seria:

POG_cf_img0_11nov08_17h53m

Porém isso, claro, na ocasião de ser disparado contra um registro que não possui ligações, ocasionaria na exclusão do registro em sí.

Ai entra o POG:

POG_cf_img1_11nov08_17h54m

O <cftransaction> com o ROLLBACK logo após o teste de deleção do registro, garante que o mesmo não seja efetivamente excluído.

Continuando a conversa com o Jefferson verificamos ainda a implementação desta solução via “trigger/actions” no banco de dados. Qual não foi a nossa surpresa ao reparar que o “POG” acabou sendo uma solução bem mais simples de se implementar.

Outra coisa em relação ao uso de “triggers/actions” é o fato de tornar a solução dependente de banco de dados e implicar em se ter várias versões de um código relativo a um mesmo e único recurso. Mas essa é definitivamente outra discussão de prós e contras.

O que fica para mim agora, é o desejo de estudar alguma solução, que seja ao mesmo tempo “elegante” (antônimo de POG, embora eu e o Jefferson tenhamos considerado este POG como “elegante”) e simples de ser implementada.