Arian Pasquali

making it run

Posts Tagged ‘flex

Flex For Kids

with 2 comments

Flex for Kids

Flex for Kids

Comece 2010 fazendo uma boa ação e participando do primeiro evento Flex do ano. Assista a 10 palestras sobre Adobe Flex ao vivo com feras da comunidade brasileira e ainda ajude uma instituição carente.

A maratona de palestras on-line será realizada no dia 06/02/2010 e contará com palestras de nomes conhecidos como Beck Novaes, Mario Junior e compania.

Qualquer pessoa, empresa ou faculdade poderá participar do Flex for Kids, para isto basta fazer uma doação de um valor simbólico de R$ 30,00 para ter acesso as 10 palestras on-line e suas gravações que serão disponibilizadas 15 dias após o evento.

Todo dinheiro arrecadado será doado ao Cotolengo de Mato Grosso do Sul. Para conhecer a instituição Cotolengo clique aqui.

Quer oportunidade melhor que essa pra aprender e ainda ajudar quem precisa?

Site oficial: http://www.flexforkids.com

Written by arianpasquali

dezembro 28, 2009 at 8:26 pm

Publicado em flex

Tagged with , , ,

Descobrindo código que cheira mal no seu projeto Flex

leave a comment »


Baseado no PMD, ferramenta de auditoria de código bem conhecida dos javeiros,
FlexPMD é uma ferramenta de auditoria de código capaz de detectar más práticas comuns em código Flex (MXML/AS3) e ajudar a melhorar o nível da qualidade do código produzido pelo time. Exemplo:

Código não usado (functions, variáveis, etc)
Código duplicado
Código muito longo (classes, metodos, etc.)
Uso inapropriado do ciclo de vida de componentes Flex (ex. commitProperties, etc.)

O FlexPMD faz a auditoria automática do código baseado em regras escolhidas por você. Um relatório XML é gerado relacionado as violações de acordo com as regras configuradas. Existem várias regras prontas para serem usadas, mas é possível criar suas próprias regras para atender as necessidades de cada projeto. Você pode criar uma regra para forçar uma convenção de código ou para verificar se todos os métodos estão documentados por exemplo.

Esse é o FlexPMD Ruleset Creator, uma aplicação em Flex que facilita a criação dessas regras customizadas.

FlexPMD pode ser chamado via linha de comando, Ant, Maven ou até Automator do Mac OS. O relatório gerado pela ferramenta pode ser visualizado pelo viewer da Adobe, mas o ideal mesmo é integrar a alguma ferramenta de integração contínua como o Hudson.

Fica aí a dica pra quem, assim como eu, estava a tempos procurando um auditor de código automatizado para implantar no serviço de integração contínua.

Espero poder utilizar no meu próximo projeto Flex.

Written by arianpasquali

novembro 16, 2009 at 5:26 pm

Publicado em flex

Tagged with ,

AdvancedDataGrid with contained DataGrid

with one comment

Essa semana nos deparamos com a necessidade de apresentar uma entidade hierarquica em forma de tabela.
Até aí tudo bem, o problema é que os itens filhos deveriam mostrar colunas diferentes do pai.

advanceddatagrid_with_contained_datagrid3

Eu sabia que era possível fazer com AdvancedDatagrid no Flex 3 sem apelar para gambiarras. Foi quando descobri os rendererProviders e  do AdvancedDatagrid.
Os rendererProviders do AdvancedDatagrid permitem customizações bem avançadas.
No meu caso eu precisava renderizar um outro Datagrid no nível filho.
A documentação do AdvancedDatagrid não detalha bem esse recurso ficando apenas nos exemplos de gráficos dentro dos grids.

Encontrei um post no Flex Cookbook com um exemplo prático do Dean Pittsinger.
http://www.riamaven.com/FlexSolutions/ADGwithContainedDGDemo.html

O código é realmente muito simples, mais do que eu esperava encontrar.  No AdvancedDatagrid principal define-se um AdvancedDataGridRendererProvider em rendererProviders.

 <mx:rendererProviders>
    <mx:AdvancedDataGridRendererProvider depth="2" columnIndex="1"
                                         renderer="SubDataGrid"
                                         columnSpan="0" />

 </mx:rendererProviders>

No atributo renderer define-se a classe a ser renderizada, nesse exemplo a classe criada se chama  SubDataGrid e extende de AdvancedDatagrid. O único segredo está em fazer override do método “set data”.

   <mx:Script>
     <![CDATA[
         import mx.controls.Alert;            

        override public function set data(value:Object):void
        {
           // set dataProvider
           dataProvider = value.service;

           // If using the array data source, use this instead:
           // dataProvider = value;

           // adjust rowCount
           this.rowCount = dataProvider.length + 1;
        }

     ]]>
   </mx:Script>

Normalmente não é algo que eu aconselharia, deve ser usado com moderação e como última alternativa pra não prejudicar demais a usabilidade e a focalidade das informações.

Flex Cookbook: http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&postId=12326&productId=2

Written by arianpasquali

maio 7, 2009 at 12:34 am

Publicado em flex

Tagged with ,

Impressões sobre Certificação Flex 3 with AIR

with 7 comments

ACE Na última sexta-feira dia 27/fev/2009 tive a oportunidade de realizar a prova de certificação Adobe Flex 3 with AIR.
Quando comecei a me preparar para a prova logo percebi que estudar para uma certificação da Adobe não é como se preparar para fazer uma prova da Sun que possui toneladas de simulados pela internet e livros especializados no assunto.

O material para estudo é basicamente a documentação oficial do produto. Complete Flex 3 documentation (69 MB)

Encontrei talvez o único simulado de Flex disponível hoje. Attest é pago e por enquanto só conta com simulado da antiga certificação Flex 2.  Vem com um teste trial de 35 questões que já dá pra ter uma noção da prova.

A prova foi remodelada e está um pouco diferente da Flex 2 especialmente por não contar mais com a sessão integração com Cold Fusion, mas em compensação questões sobre AIR foram incluídas. Os tópicos que caem na prova são os seguintes:

Topic Area % of Exam # of Questions
Creating a User Interface (UI) 22 11
Flex system architecture and design 18 9
Programming Flex applications with ActionScript 24 12
Interacting with data sources and servers 16 8
Using Flex in the Adobe Integrated Runtime (AIR) 20 10

Mais detalhes em Adobe Flex 3 with AIR Exam Preparation Guide (PDF, 56K)

Para meu azar 20% da prova é específica sobre AIR. Pelo fato de não trabalhar diretamente com AIR as perguntas mais complicadas pra mim foram justamente sobre essa sessão,  Em uma prova de 50 questões e tendo que atingir 67% para passar 20% é muita coisa para arriscar sem estudar, tive que dar uma lida na documentação.

Para minha supresa não caiu pra mim nenhuma pergunta sobre o compilador do AIR, debugger etc, a pergunta mais estranha foi do tipo como desinstalar uma aplicação AIR no Mac OS.

Essa foi a minha preparação para o exame.

Resultado : SCORE 80%, GRADE: PASS

O voucher da Adobe custa 100 dolares e conta apenas com a versão em inglês por enquanto.

Written by arianpasquali

março 2, 2009 at 4:34 pm

Publicado em certificações, Uncategorized

Tagged with , ,

Marshall Plan – Sub-applications, não modules

with 2 comments

Como já comentado anteriormente, eventualmente, pode ser que não seja possível manter todos os SWF sob a mesma versão do Flex.

Para resolver esse problema a Adobe entendeu que apenas Modules não resolveria o problema. Para isso criou o projeto Marshall Plan, que resultou em mudanças significativas no Flex 3.2.
A última versão do SDK do Flex 3.2 possui permitirá uma Application utilizar Sub-Applications compiladas em diferentes versões do Flex.

Atualmente o Flex 3.2 é o ponto de partida, esse recurso por enquanto ainda não suporta as versões anteriores 3.1, 3.0, ou 2.x, portanto você vai precisar migrar para 3.2 para usar esses recursos hoje.
Se sua aplicação já é compilada em Flex 3.2, aplicações compiladas em Flex 4, 5, etc poderão utilizar sua aplicação.

Refatorar o seu código vai dar trabalho, isso você pode ter certeza. Separar módulos e sub-applications em diferentes domínios de aplicação e ainda permitir comunicação entre eles dá trabalho. Esse refactoring para permitir que os SWFs de diferentes domínios continuem conversando entre si foi cunhado como ‘marshalling’.

Lição de história: o Plano Marshal original foi uma forma que os paises europeus encontraram para se reerguer em paz. O Marshall Plan da Adobe é uma maneira de fazer com que diferentes versões do Flex conversem em paz.

Como isso funciona?

Cada sub-application é carregada em um ApplicationDomain independente, possue seu próprio StyleManager por exemplo, o que significa que Application e Sub-Applications não compartilham nem estilos.
Todos os singletons do Flex Framework precisaram seu refatorados para suportar o Marshall Plan, portanto provavelmente você terá retrabalhos no seu código que usa Flex Managers como DragDrop, PopUps, ToolTips e Cursors.

Singletons não são mais tão “Singletons” assim

sub-applications

Exemplo:

MySubApp.mxml
ToolTipManager.toolTipDelay = 1000;

MyApp.mxml
trace(ToolTipManager.toolTipDelay); // 500 (default) not 1000

MySubApp’s ToolTipManager não é o mesmo objeto que MyApp’s ToolTipManager

Limitações do Marshall Plan

  • Styles não são compartilhados. Cada aplicação tem seu próprio estilo, nem ao mesmo herda estilos da Application principal. Estilo de uma sub-application não interfere no estilo da application principal e vice-versa.
  • ResourcesBundles também não são compartilhados da mesma forma que Styles. Cada sub-application deve carregar seu próprio ResourcesBundle.
  • HistoryManager apenas para a Application principal.
  • Use systemManager.getSandboxRoot() no lugar de systemManager para listening de eventos do Mouse e do Keyboard.

Utilizar esse recurso pode dar trabalho. Existem várias questões de segurança envolvidas nesse processo. Pretendo comentar sobre elas nos próximos posts.

Written by arianpasquali

novembro 18, 2008 at 5:18 pm

Publicado em max2008

Tagged with ,

How Large is a Large Application?

leave a comment »

“Se você pode me dizer o quão grande é sua aplicação, então ela não é tão grande assim.”
Alex Hurair

Em tom de piada Alex começou sua palestra com assim. Pode parecer pragmático demais, mas se você pensar cuidadosamente você acaba concordando com ele. Problemas de performance todos nós enfrentamos, mas escalabilidade é um assunto muito mais delicado do que apenas performance.

Quando se trata de aplicações desse tipo em Flex, ela deve sofrer de pelos menos um dos dois seguintes problemas

  • Tempo de download demorado
  • Out of memory no navegador enquanto executa a aplicação

A primeira solução para download demorado de uma aplicação é quebrar a aplicação em vários SWFs. No Flex conseguimos fazer isso graças a Modules.

Modules para aplicações pesadas

Para entender exatamente a razão de usar módulos precisamos ter em mente que um swf Flex possui dois frames:

  1. Preloader frame
  2. Application frame

A aplicação toda precisa ser baixada antes que ela seja iniciada. Logicamente, quanto menos código no frame 2 significa que a aplicação vai iniciar mais rápido e vai consumir menos memória.

lição número um:

  1. Pegue todo o código que não é necessário no startup e coloque dentro de um  Module.

Limitações dos Modules

  • Você não pode referenciar diretamente uma classe de um módulo a partir de sua Application, você deve usar interfaces compartilhadas.
  • Modules e Application devem ser compiladas com a mesma versão do Flex

Novidades sobre Modules no Flash Player 10

  • Modules agora podem ser removidos da memória.

Ok, temos Modules para diminuir o tempo de download da aplicação. Porém, nem tudo são flores na vida de Joseph Climber, a partir daí a coisa pode complicar ainda mais. Alguns SWFs podem possuir dependência de alguma versão do Flex e por alguma razão não podem ser atualizadas ou ainda para piorar os Modules podem ser criados por diferentes equipes que possuem prazos diferentes entre si.

Continuarei nesse assunto nos próximos posts.

Written by arianpasquali

novembro 18, 2008 at 4:51 pm

Publicado em max2008

Tagged with , ,

Marshall Plan

with one comment

Em 1947 o secretário de estado americano George C. Marshall anunciou um plano para ajudar a reconstruir a Europa devastada pela Segunda Guerra Mundial. Hoje o problema não é tão trágico, mas a Adobe também está diante de um belo desafio com o Flex.

Com os anos o Flex foi amadurecendo e ganhando popularidade, foi sendo adotado em grandes corporações e já é peça fundamental em várias aplicações de larga escala pelo mundo todo. Naturalmente o tempo traz novos desafios para solucionar. Como lidar com tantas versões do SDK? Como manter uma aplicação que hoje possui centenas de módulos, sendo que cada um pode ter sido desenvolvido em uma fase diferente da maturidade do Flex, com versões do diferentes do SDK?

Sabemos que não é viável em algumas situações migrar tudo para a nova versão de uma plataforma, mas nem por isso queremos nos privar de usar os últimos recursos que as versões mais atualizadas oferecem.

Situação similar a essa é o desafio de ter dentro de um mesmo Flash Player várias máquinas virtuais que permitem interpretar diferentes versões de ActionScript. Temos ActionScript 1.0, 2.0 e 3.0. Tudo deve funcionar perfeitamente para não quebrar aplicações desenvolvidas ao longo de todos esses anos. Caso contrário pararia a internet, pois todo o conteúdo baseado em Flash existente hoje não surgiu da noite para o dia, são anos e anos de desenvolvimento de conteúdo e evolução da plataforma.

O Marshall Plan da Adobe é um projeto que de certa forma propôs uma reforma no framework flex para tornar possível que em uma mesma aplicação Flex rode mini-aplicações construídas sob qualquer versão do Flex SDK a partir da versão 3.2 (lançada dia 19 nov durante o MAX 2008, clique aqui para baixar).

Esse foi um dos assuntos da palestra do engenheiro Alex Harui no MAX deste ano. O foco da palestra foi discutir os problemas enfrentados em grandes aplicações Flex, as questões abordadas foram tamanho elevado dos arquivos swf, uso de memória e versionamento. Alex apresenta as soluções e as melhores práticas indicadas pela Adobe pra resolver essas questões.

Nos próximos posts vou detalhar melhor cada um desses problemas e o que fazer para enfrentá-los com as armas que o Flex oferece.

Written by arianpasquali

novembro 18, 2008 at 4:01 pm

Publicado em max2008

Tagged with ,