quinta-feira, 30 de dezembro de 2010

Retrospectiva 2010

Além dos treinamentos de AS3 com Flash e Adobe Flex (3 e 4) na Alfamídia e Adobe Flex (3 e 4) na TargetTrust este ano de 2010 trouxe inúmeras oportunidades e desafios profissionais.

Alguns treinamentos in company:

Também fiz alguns treinamentos:
  • AIR 2.0 Essencial pela RIACycle ministrado pelo Igor Costa.
  • Planejamento, Prototipação e Execução de um projeto Flex/Swiz Framework e PHP/MySQL online pela e-Genial ministrado pelo Fábio Vedovelli.
  • PHP 5 e Produtividade em Java com JPA e Hibernate na TargetTrust.

Entre outros:
  • Lançamento do Flex 4 e o seu uso na Sadig na nova geração de produtos.
  • Convite da Gabriela para substituí-la em algumas cadeiras de AS3 para jogos que ela ministra na faculdade Feevale.

E neste mês de dezembro aceitei um novo desafio, o de prestar consultoria e desenvolvimento (PHP e Flex) na Ouro Moderno, empresa desenvolvedora de treinamentos interativos e também de software para empresas de treinamento para controlar alunos e treinamentos realizados.

A todos os envolvidos meus sinceros agradecimentos.

E deixo também aqui o meu desejo de um Feliz e Próspero 2011 para todos.

Que venha novos desafios.

terça-feira, 28 de dezembro de 2010

Criação dinâmica de objetos com RSL

No meu post Criação dinâmica de objetos mostrei os passos para este tipo de criação.

Naquele post digo que é necessário o registro das classes dos objetos a serem criados dinamicamente para o compilador "saber" quais classes compilar. Isto é válido quando a opção Project > Properties > Flex Build Path > Library Path > Framework Linkage está marcado como Merged into code.

Quando a opção Framework Linkage está marcada como Runtime shared library (RSL) o registro não é necessário porque todo o framework estará junto (normalmente) com o swf da aplicação. Com isso podemos criar objetos dinamicamente da seguinte forma:

Flex 3
import mx.core.UIComponent;
import flash.utils.getDefinitionByName;

private function createButton():void {
var clazz:Class = getDefinitionByName("mx.controls.Button") as Class;
var instance:UIComponent = new clazz() as UIComponent;
addChild(instance);
}

Flex 4
import mx.core.UIComponent;
import spark.skins.spark.ButtonSkin;
import flash.utils.getDefinitionByName;

private function createButton():void {
var clazz:Class = getDefinitionByName("spark.components.Button") as Class;
var instance:UIComponent = new clazz() as UIComponent;
instance.setStyle("skinClass", spark.skins.spark.ButtonSkin);
addElement(instance);
}

A diferença entre o Flex 3 e 4 é que no 4 se não for definido o skinClass dará um erro no addElement informando que não foi possível encontrar o skin, o que vejo como um bug o qual reportei aqui (mais votos mais fácil o Flex Team dar uma olhada).

quarta-feira, 8 de dezembro de 2010

MVC para Flex

Arrisco a dizer que hoje os três frameworks MVC mais conhecidos são: Cairngorm, Mate e Swiz.

O
Cairngorm é um dos primeiros e foi desenvolvido pela Adobe, e ao meu ver muito burocrático, muitas classes para criar uma funcionalidade. Se encontra na terceira versão.

O
Mate anda desatualizado por não ser o foco principal da equipe que o desenvolveu.

O
Swiz pelo que vejo é o mais atualizado e tem uma comunidade maior, este seria minha escolha neste momento.

Existem outros:
CafxFramework (Brasileiro), Parsley, PureMVC e RobotLegs.

Entre as vantagens de usar um framework MVC estão:
  • Componentização e reaproveitamento de serviços, diminuindo a quantidade de código.
  • Organização do projeto.
  • Padronização, agilizando assim a integração de um novo desenvolvedor na equipe que conheça o framework.

terça-feira, 7 de dezembro de 2010

Android 2.3 disponível

Nem chegou direito os smartphones com Android 2.2 e já saiu o 2.3, mas isso é bom, isso demonstra que a plataforma está evoluindo de olho nas necessidades do mercado.

Saiba mais:
Android 2.3 Platform and Updated SDK Tools

O que o Android 2.3 tem que o 2.2 não tem?

quarta-feira, 1 de dezembro de 2010

Flash Player 10.2 Beta

Versão disponível com recursos muito interessantes.

Saiba mais: Launching Flash Player 10.2 Beta

sábado, 20 de novembro de 2010

Spark Button com Imagem

Baseado no fonte do controle IconButton do Chris Callendar peguei o fonte e inclui o style disabledIcon e a propriedade showAsImage.

Neste link você pode ter acesso a uma aplicação exemplo com o botão direito opção View Source habilitada.

terça-feira, 9 de novembro de 2010

Flash Camp Rio

Nos dias 13 e 14 próximos irá ocorrer o Flash Camp Rio.

A inscrição é somente R$ 70,00.

Saiba mais no site.

segunda-feira, 11 de outubro de 2010

Flex 4 em um dia

Para quem está aprendendo Flex 4 uma boa pedida é o mini-book Flex 4 in a day liberado pelo Mihai Corlan.

Ele "destilou" tudo que ele achava interessante de Flex 4 nesse material, sendo assim recomendado como material para referência rápida.

Para baixar o mini-book acesse este link.

sexta-feira, 1 de outubro de 2010

8 dicas para se tornar excelente

Li este post e achei muito bom.

quinta-feira, 23 de setembro de 2010

Flash Builder Linux descontinuado

Informação oficial.

Não utilizo Linux mas vejo como uma má notícia para o mercado descontinuarem o Flash Builder para este sistema operacional.

Veja mais: Flex Builder for Linux project ending

segunda-feira, 6 de setembro de 2010

Carregando CSS em run time

Carregar CSS em run time consiste de três passos:
  1. Criar um arquivo CSS.
  2. Compilar o CSS em um arquivo SWF.
  3. Carregar o CSS compilado para sua aplicação.
Para compilar você usa o comando mxmlc em linha de comando ou o Flash Builder. Exemplo por linha comando: mxmlc MyStyles.css
Para compilar com o Flash Builder, clique com o botão direito sobre o arquivo CSS e marque a opção Compile CSS to SWF.

Para carregar o css compilado você utiliza o método loadStyleDeclarations de StyleManager. Você pode acessar StyleManager via StyleManager.getStyleManager() ou via propriedade styleManager encontrada nos objetos derivados de UIComponent.
Este método é assíncrono, ele retorna uma instância de IEventDispatcher na qual você pode monitorar os eventos: StyleEvent.PROGRESS, StyleEvent.COMPLETE e StyleEvent.ERROR.

Para descarregar utiliza-se o método unloadStyleDeclarations de StyleManager.

quinta-feira, 2 de setembro de 2010

Palestra: Produção de jogos e aplicativos para celular usando a plataforma Flash: Flash e Flex Builder

Pessoal do RS, dia 22/09 irá ocorrer a palestra Produção de jogos e aplicativos para celular usando a plataforma Flash: Flash e Flex Builder na TargetTrust. A palestra será ministrada pela Gabriela Trindade Perry das 19h às 21h e a entrada é só um agasalho para doação.

Para se inscrever e saber mais é só acessar este link.

Pretendo ir e você?

sexta-feira, 27 de agosto de 2010

SDK Hero Disponível

Pessoal, foi liberado pelo Flex Team o SDK Hero ou 4.5.

Veja mais: Update on Flex SDK “Hero”

quinta-feira, 26 de agosto de 2010

Bug em XMLDocument.ignoreWhite

Se você estiver usando HTTPService com resultFormat default (object) para receber um xml, poderá ter surpresas com tags com espaços em branco a esquerda do valor.

Documentei com detelhes este bug no Adobe Bug System.

Este bug ocorre em sdks anteriores ao 4.

Um workaround para quem estiver usando sdk 3.x é fazer um sombreamento da classe mx.rpc.http.AbstractOperation e colocar false na linha XMLDocument(tmp).ignoreWhite.

segunda-feira, 9 de agosto de 2010

Produção de jogos e aplicativos para celular usando a plataforma Flash: Flash e Flex Builder

Pessoal do RS, amanhã irá ocorrer a palestra Produção de jogos e aplicativos para celular usando a plataforma Flash: Flash e Flex Builder na TargetTrust. A palestra será ministrada pela Gabriela Trindade Perry das 19h às 21h e a entrada é só um agasalho para doação.

Para se inscrever e saber mais é só acessar este link.

Pretendo ir e você?

domingo, 8 de agosto de 2010

Mudança de servidor de hospedagem - Concluído

Pessoal, como comentei em post anterior que estava mudando de servidor de hospedagem, por isso, alguns links poderiam aparecer como quebrados.

A migração para o novo servidor já foi concluída, se encontrarem qualquer coisa estranha, por favor, comuniquem.

Obrigado.

Dia dos Pais

Dia 04/06/2008 nascia minha filhinha, Ana Clara da Silva.

Posso dizer sem sombra de dúvidas que o aparecimento desta criaturinha foi a melhor coisa que me aconteceu, ela se tornou um marco na minha vida, a.a.c. (Antes de Ana Clara) e d.a.c. (Depois de Ana Clara).

É ótimo vê-la brincando, sorrindo, falando uma nova palavra, me chamando de pai. Confesso que a vida de pai também não é fácil, é preocupação para não ficarem doentes, não se machucarem, com o que serão no futuro ...

Sempre tive medo de não ser um bom pai, mas acredito que estou me saindo bem. Até o momento só tenho o que agradecer, pois Ana Clara tem muita saúde, é carinhosa e espoleta, às vezes nos dá um cansaço, pois não sossega um instante.

Não sei o que o futuro me guarda, mas rezo para que eu consiga ser o melhor pai possível e que minha filha seja a melhor filha possível.

Deixo aqui então, um parabéns a todos os pais.

sexta-feira, 6 de agosto de 2010

Mudança de servidor de hospedagem

Pessoal, estou migrando de servidor de hospedagem.
Alguns arquivos nos posts podem aparecer como links quebrados até a conclusão desta migração.
Quando concluir esta migração irei comunicar por este canal.

Quanto com a paciência de vocês. Obrigado.

Qualquer coisa estamos aí.

quarta-feira, 4 de agosto de 2010

Client.Message.Encoding

A metatag RemoteClass é usada no topo de uma classe AS para indicar a sua classe espelho Java (ou outra linguagem server) quando se usa RemoteObject.

Para facilitar, normalmente se cria a classe AS com mesmo nome e no mesmo pacote da sua correspondente java. Para usar remoteobject as classes AS e Java precisam ter um método construtor sem parâmetros e os atributos precisam ter o mesmo nome e precisam ser públicos ou com métodos get / set públicos.

Numa aplicação uma classe AS estava num pacote diferente da sua correspondente Java. Quando acesso um método remoto que retorna um objeto desta classe do Java para o Flex vem tipada corretamente, mas quanto tento enviar de Flex para Java dá um fault onde faultCode = Client.Message.Encoding e faultString = Cannot create class of type 'packageAS.classeAS'.

Este erro me chamou a atenção porque sempre imaginei que era só usar o atributo alias de RemoteClass [RemoteClass(alias="pacoteServer.classeServer")] apontando para a classe sever corretamente que iria funcionar, mas no fim o pacote e nome da classe precisam ser iguais.

Procurando na documentação algo que explicasse este fato não encontrei nada, mas achei algo interessante: "In the ActionScript class, you use the [RemoteClass(alias=" ")] metadata tag to create an ActionScript object that maps directly to the Java object." Isto é, usar alias com um espaço em branco vincula com sua classe server com mesmo pacote e mesmo nome de classe.

sexta-feira, 16 de julho de 2010

Azul Tecnologia - Treinamento

Na semana do dia 19 estarei ministrando um treinamento de Flex 3 e 4 na Azul Tecnologia em Fortaleza - CE, sobre indicação da Gabriela para qual contabilizo mais um churrasco :-)

Será um treinamento para 8 a 10 pessoas, onde será visto o básico, MVC, Módulos, BlazeDS, FlexUnit, migração de Flex 3 para 4 entre outros assuntos.


Estou com um certo frio na barriga, não devido ao frio de lascar que está aqui no sul, mas sim porque será a minha primeira viagem de av
ião sendo que o mais longe que fui, foi para Santa Catarina.


Dia 26 estarei de volta.


[]s

terça-feira, 13 de julho de 2010

FlexMania 2010 - Gravações

Já está disponível as gravações das palestras do FlexMania 2010 para serem assistidas on-line.
A previsão da versão para download está prevista para 30 dias.

Parabéns ao Igor Costa e a todos os palestrantes.

quarta-feira, 7 de julho de 2010

Flex Mania 2010 - Amanhã

Não percam, amanhã começa o Flex Mania.

Mais um evento de qualidade com várias palestras on-line somente com feras da comunidade Flash / Flex / RIA e o melhor, totalmente free.

Este é o segundo evento, você também pode assistir as palestras do ano passado aqui.

Eu vou participar, e você?

quinta-feira, 1 de julho de 2010

terça-feira, 29 de junho de 2010

Autorun - Vírus

Uma dica para evitar vírus, além de manter o antivírus atualizado e sempre atualizar os softwares evitando brechas de segurança é desativar a opção de autorun de cds e pendrives.

Este link informa como desativar a opção de autorun.

quarta-feira, 16 de junho de 2010

Serialização incorreta de objetos Map no BlazeDS

Estou utilizando na minha aplicação o BlazeDS e alguns métodos retornam para o Flex objetos Map onde o key é um Integer ou uma classe minha. Para minha supresa quando chega no lado client (Flex) o key do Map chega correto mas o value chega null. Se eu colocar o key como String e o value como Integer ou uma classe minha aí funciona tudo corretamente.

Pesquisando no Adobe Bug System verifiquei que esta situação já está corrigida e provavelmente será liberada no BlazeDS 4.

Veja mais (Adobe Bug System):
AMF Serialization from Java to AS not working corectly for Map Types
Fetch parameterized java hashmap back to Flex correctly
Strong type support in Collection and Map

quarta-feira, 9 de junho de 2010

Locale pt_BR

O Flex utiliza fortemente internacionalização (i18n). Os componentes Alert, DateChooser, DateField, validadores, formatadores, entre outros permitem que suas propriedades que estão vinculadas ao idioma / locale sejam alteradas via código, alguns exemplos:
  • Alert: cancelLabel, noLabel, okLabel e yesLabel.
  • DateChooser e DateField: dayNames e monthNames.
  • Formatadores e Validadores (classes Formatter e Validator e suas classes filhas): possuem propriedades terminadas em error que são as mensagens que irão ser mostradas de acordo com a situação.
  • Os formatadores possuem a propriedade formatString (com exceção de CurrencyFormatter e NumberFormatter) e outras propriedades específicas de cada formatador, tais como: decimalSeparatorFrom, decimalSeparatorTo, thousandsSeparatorFrom, thousandsSeparatorTo para CurrencyFormatter e NumberFormatter e currencySymbol para CurrencyFormatter.
  • Os validadores CurrencyValidator e NumberValidator possuem as propriedades: decimalSeparator e thousandsSeparator e currencySymbol para CurrencyValidator.
Mas o melhor é poder informar o idioma / locale e o Flex configurar "automagicamente" estas propriedades. Para informar os locales, você precisa na hora da compilação indicar qual ou quais locales irá utilizar, para isso você precisa ir em Project > Properties > Flex Compiler e na linha Additional compiler arguments colocar:
-locale pt_BR // Para usar somente pt_BR
ou
-locale=pt_BR,en_US // Para usar pt_BR e en_US

E para trocar de idioma em runtime usa-se:
resourceManager.localeChain = ['pt_BR'];

Os arquivos de locale do framework são arquivos .properties compactados dentro de arquivos .swc. No Flex / Flash Builder estes arquivos se encontram em builder_dir/sdks/sdk_version/frameworks/locale e quando se estiver usando somente o sdk estará em sdk_dir/frameworks/locale. Se for necessário, você poderá abrir o arquivo .swc com qualquer descompactador e alterar o conteúdo dos arquivos .properties contidos nele.

Estes são exemplos do framework, você também pode criar traduções específicas para sua aplicação.

Veja mais

Introduction to localization
NumericInput (comentários)

Links para o locale pt_BR
No download do Flash Builder 4 e do SDK 4. Links de download aqui.
SVN atualizado (.properties) aqui e aqui.
Deixei disponível para download o do Flex 3 e 4.

segunda-feira, 7 de junho de 2010

Livro: Dominando Adobe Flex 4

Para quem está aprendendo Flex 4, mais um reforço, o livro Dominando Adobe Flex 4 do Daniel Pace Schmitz. Ele está em fase de pré-venda com envio somente a partir de 01/07.

Mais detalhes no site do autor.

segunda-feira, 31 de maio de 2010

Context root II

Tinha comentado em post anterior sobre um bug que está ocorrendo quando se cria um Flex Project utilizando o BlazeDS no Flex Builder 3.

Pensei que no Flash Builder 4 este problema estaria corrigido, mas infelizmente não. Na verdade agora está meio corrigido, na tela Project > Properties > Flex Server até parece o mesmo valor de context root que foi aplicado inicialmente (o campo aparece bloqueado), mas no arquivo .flexProperties o parâmetro serverContextRoot aparece o que foi colocado em Content folder.

Por enquanto a única forma que achei para contornar este problema foi alterar na mão o arquivo
.flexProperties.

quarta-feira, 26 de maio de 2010

BR Conference 2010 - ColdFusion and RIA Connection

Outro grande evento programado para este ano é o BR Conference que será realizado nos dias 19, 20 e 21 de agosto com apoio da Adobe na cidade do Rio de Janeiro.

Este evento será pago, e quanto mais cedo você fizer sua inscrição mais barato será o valor a ser pago.

Assim como a Flex Mania está terá palestrantes brasileiros e estrangeiros, mais informações no site do evento.

Flex Mania 2010

Mais um evento de qualidade, está chegando o Flex Mania 2010.

Evento com várias palestras on-line somente com feras da comunidade Flash / Flex / RIA e o melhor, totalmente free.

Esta é a segunda edição e será realizada nos dias 8, 9 e 10 de julho.

Venha participar você também. Para saber mais entre no site do evento aqui.

Livro: Flex 4 Cookbook

Foi publicado o livro Flex 4 Cookbook.

Neste link você ouve os autores falando do livro.

terça-feira, 25 de maio de 2010

AdvancedDataGrid - Styles backgroundColor and backgroundImage don't work (FLEXDMV-2442)

Um tempo atrás precisei utilizar os styles backgroundColor e backgroundImage num AdvancedDataGrid. Qualquer coisa que eu setava não funcionava, cheguei a conclusão que era um bug no Flex, mas como não era uma urgência deixei de lado.

Ontem tive que retomar esta idéia, tendo os mesmos resultados frustrantes, não conseguindo aplicar os estilos. Depois de muito analisar o código do AdvancedDataGrid vi que era um bug, mas como precisava resolver extendi AdvancedDataGrid chegando no efeito que precisava.

Criei uma entrada no Adobe Bug System relatando esta situação com o código (necessita login para visualizar).
Dica: Quem quiser votem, porque quanto mais votos maior a possibilidade do Flex Team darem uma olhada.

Para quem não tiver acesso ao Adobe Bug System deixei também disponível aqui, com botão direito opção View Source ativo.

Um detalhe, o código fiz no Flash Builder 4 e para rodar será necessário ativar o tema Halo, para isso vá em Project > Properties > Flex Theme, isto é necessário porque estes estilos não estão disponíveis no tema Spark.

segunda-feira, 24 de maio de 2010

Flex 3 e Flex 4 - Algumas diferenças

Com o lançamento do Flex 4, muitos estão se perguntando se deve ou não usar, inclusive eu. Vou colocar minha humilde opinião.

Para quem está começando a estudar ou a desenvolver em Flex a resposta é uma só, Flex 4.

Mas para quem já tem uma aplicação desenvolvida em Flex 3, neste caso, terá que ser analisado caso a caso, isto porque se tem duas situações a avaliar:
  • Código misto, isto é, código Flex 3 (Halo / MX) juntamente com código Flex 4 (Spark). Isto é informado em Project > Properties > Flex Build Path > Library path > Component set = MX + Spark (default). O tema default é o Spark, o que na minha opinião é mais agradável, mais clean.
  • Migração. Aqui o esforço é maior e deve ser bem analisado. O Flex Team fez um grande refactoring para separar os códigos de layout (skin) do core dos objetos.
Algumas situações que encontrei em relação a layout:
  • Os containers no Flex 3 estão no pacote mx.containers e herdam de Container, no Flex 4 são provenientes de três classes bases: spark.components.SkinnableContainer, spark.components.SkinnableDataContainer e spark.components.supportClasses.GroupBase e estas possuem a propriedade layout que espera uma classe do tipo LayoutBase que possue os styles de padding (paddingLeft, paddingTop, paddingRight e paddingBottom). O valor default dos styles de padding no MX variava de classe para classe no Spark é sempre 0, o Application no MX, por exemplo é 24.
  • O TitleWindow no Flex 3 tem a propriedade showCloseButton que por default é false, no Flex 4 não tem esta propriedade mas o botão de close aparece por default.
  • O Button no Flex 3 tinha seu tamanho definido principalmente pelo valor atribuído a propriedade label, no Flex 4 o tamanho mínimo é 21. Neste caso, dois botões com as labels OK e Cancel sem definição de width e height terão tamanhos diferentes no Flex 3, mas tamanhos iguais no Flex 4.
  • As propriedades verticalScrollPolicy e horizontalScrollPolicy que antes eram atribuídos diretamente ao Container agora são estilos do objeto Scroller que deve ser adicionado ao objeto ou ao skin da classe.
Bem isso foi algumas coisas que encontrei, acredito que tenha muito mais, por isso, a migração tem quer ser bem analisada, o melhor é fazer misto e depois com tempo e calma ir migrando as telas para Spark.

terça-feira, 18 de maio de 2010

Flash Builder 4 Standard - Download

Quem comprar licenças para o Standard não irá encontrá-lo para download, o site para download só informa o Premium e não faz nenhuma referência ao Standard.

Mas na verdade pode-se aplicar o serial comprado para o Standard no Premium que será válido, a IDE só irá restringir o acesso aos recursos próprios do Premium.

Talvez para alguns isso tenha ficado óbvio, mas para mim e outros isto não tinha ficado.

Veja também:
Flex version comparison chart

sexta-feira, 14 de maio de 2010

Sombreamento de Classe

Conforme meu post anterior fiquei com poucas alternativas para contornar o meu problema:
  • Mudar o HTTPService.resultFormat para e4x.
  • Setar HTTPService.xmlDecode.
  • Alterar a classe SimpleXMLDecoder no SDK e compilar.
  • Esperar o Flex Team alterar SimpleXMLDecoder.simpleType no SDK para poder sobreescrever este método e tratar os dados da forma mais adequada para minha aplicação.
As duas primeiras opções seriam trabalhosas porque teria que fazer o mesmo que a classe SimpleXMLDecoder faz, isto é, transformar o resultado em object e isto seria necessário para evitar um impacto maior na minha aplicação já que esta espera este tipo de retorno. A terceira é delicada porque todo novo SDK teria que aplicar minhas alterações, compilar e distribuir para a equipe. E a última opção é a mais demorada.

Aí me lembrei de um conceito não muito utilizado, o Sombreamento ou Shadowing que também se aplica para Java. O que faria neste caso, criaria na minha aplicação o pacote mx.rpc.xml e nele copiaria a classe SimpleXMLDecoder do SDK e na primeira linha do método simpleType(val:Object) colocaria return val; com isso não seria feito o cast deixando sempre como String o que para minha aplicação atende plenamente. O detalhe aqui é que todo HTTPService que eu usar irá utilizar esta classe do meu projeto e não a sua correspondente no SDK e toda vez que sair um novo SDK terei que aplicar as alterações o que com o uso do SVN fica fácil identificar o que foi alterado e também a equipe ao atualizar o projeto já veria esta classe e suas atualizações.

quinta-feira, 13 de maio de 2010

Instalação Flash Builder

Ao instalar o Flash Builder um dos passos é questionado se desejamos utilizar o Eclipse que vem embutido na instalação ou usar um Eclipse já instalado.

O Eclipse que vem embutido é um Eclipse enxuto sem JEE.

Mesmo que seja escolhido a opção de usar um Eclipse já existente, é instalado no diretório "eclipse-host-distro" abaixo do diretório de instalação, normalmente "C:\Program Files\Adobe\Adobe Flash Builder 4 Plug-in" o Eclipse embutido.

O interessante é que o instalador coloca no menu Programas só o link para o Eclipse embutido o do Eclipse já existente fica no diretório de instalação.

Se você for usar só para programar em Flex isto não irá fazer diferença, mas se for usar juntamente com Java aí será o problema. Isto porque, na primeira tela que aparece depois de escolher File > New > Flex Project não aparece a opção Create combined Java/Flex project using WTP quando é escolhido Application server type J2EE.

quarta-feira, 12 de maio de 2010

HTTPService.resultFormat="object"

O valor default para a propriedade resultFormat é object o que eu acho mais adequado, porque o Flex cria uma "árvore" de objetos com os dados retornados, que é mais fácil de manipular do que se viesse no formato xml.

Só que dependendo dos valores retornados pode aparecer certas distorções, isto porque, o Flex tenta nos dar uma "mãozinha" fazendo cast dos valores retornados, por exemplo, os dados que ele acredita ser números ele irá fazer cast para Number.

Reportei este bug aqui onde coloquei mais detalhes. Quem concordar, por favor vote, quantos mais votos mais fácil chamar a atenção do Flex Team para a correção.

sexta-feira, 30 de abril de 2010

Estudando para a Certificação Flex 3

Estou estudando já algum tempo para a certificação, para isso estou estudando a documentação que está disponível no Adobe Flex Resources, acompanho os sites / blogs que estão na minha seção sites recomendados do meu blog fora acompanhar e tentar ajudar diariamente nas listas Flex-Brasil e FlexDev.

Sem contar o desenvolvimento diário nesta ferramenta e os treinamentos que estou dando.

Meu objetivo é terminar a leitura da documentação o que acredito que aconteça em junho e com isso realizar a prova e aí sim começar a me aprofundar no Flex 4.

Se alguém já fez a certificação ou tiver outra sugestão para se preparar posta aí, certamente será de grande valia para mim.

terça-feira, 30 de março de 2010

Context root

Quando se cria um Flex Project informando que será utilizado o BlazeDS mantendo a maioria das opções com seus valores default ao testar uma chamada de um RemoteObject pode dar erro de envio.
Isto acontece porque em Project > Properties > Flex Server está com a opção Context root igual o conteúdo da opção Content folder que foi informada no wizard de criação do seu Flex Project.
Esta opção deve ser mudada para ficar igual a mesma opção da aba Web Project Settings.

Lembre-se que o services-config.xml normalmente terá a variável {context.root} que é trocada no momento da compilação pelo conteúdo de Context root da aba Flex Server, ocasionando o erro numa chamada de um RemoteObject pois deveria estar o valor da outra aba.

Procurando no Adobe Bug System encontrei este bug relatado nos seguintes links:
FB-26246 Context Root variable set incorrectly
FB-11617 The context root is not set correctly when creating a J2EE + WTP project

Quem quiser votem, lembre-se que quanto mais votos mais irá chamar a atenção do Flex Team.

quarta-feira, 24 de março de 2010

Aprendendo Flex 4

Agora que o Flex 4 foi liberado é hora de aprender o que mudou nesta nova versão, até então não tinha baixado nenhuma versão beta pq o tempo é pouco e sempre pode mudar alguma coisa até a versão final.

Veja abaixo alguns sites que me ajudaram ou que estão me ajudando e espero que ajudem vocês também:
Adobe - Flex Developer Center
As 10 Maiores Mudanças no Flex 4
Novo Flex 4 (Gumbo)
New Features in FlashBuilder 4
Flash Builder 4; Uma análise mais a sério!
What's new in Flash Builder 4
What's new in Flex 4
Differences between Flex 3 and Flex 4
Introducing skinning in Flex 4
A brief overview of the Spark architecture and component set
Spark layouts with Flex 4

segunda-feira, 22 de março de 2010

quinta-feira, 4 de março de 2010

Histórias das Bolsas de Valores

Um assunto que me atrai muito são as histórias das bolsas de valores: catástrofes financeiras, crash de 1929, mania das tulipas, bolhas financeiras, história de operadores de mercado, etc.

Este tipo de leitura ajuda a mostrar alguns aspectos da personalidade humana como o efeito manada e também mostram que crises ou bolhas financeiras sempre existiram e sempre existirão.

Abaixo uma relação de livros nessa linha:

terça-feira, 2 de março de 2010

Modules

Estou estudando sobre módulos (Flex 3 Developer Guide) e fiz um resumo dos tópicos que achei importantes para melhor fixação e abaixo estou disponibilizando este resumo.

About modules

Modules
are SWF files that can be loaded and unloaded by an application. They cannot be run independently of an application, but any number of applications can share the modules.
The main application, can dynamically load other modules that it requires, when it needs them.

Benefits of modules
  • Smaller initial download size of the SWF file.
  • Shorter load time due to smaller SWF file size.
  • Better encapsulation of related aspects of an application.

A module is a special type of dynamically loadable SWF that contains an IFlexModuleFactory class factory. This allows an application to load code at run time and create class instances without requiring that the class implementations be linked into the main application. Modules are similar to Runtime Shared Libraries (RSLs) in that they separate code from an application into separately loaded SWF files. Modules are much more flexible than RSLs because modules can be loaded and unloaded at run time and compiled without the application.

Creating ActionScript-based modules

If your module does not include any framework code, you can create a class that extends ModuleBase. If you use the ModuleBase class, your module will typically be smaller than if you use a module based on the Module class because it does not have any framework class dependencies.

Reducing module size

Module size varies based on the components and classes that are used in the module. By default, a module includes all framework code that its components depend on, which can cause modules to be large by linking classes that overlap with the application’s classes.

To reduce the size of the modules, you can optimize the module by instructing it to externalize classes that are included by the application. The result is that the module includes only the classes it requires, while the framework code and other dependencies are included in the application.

To externalize framework classes with the command-line compiler, you generate a linker report from the application that loads the modules. You then use this report as input to the module’s load-externs compiler option. The compiler externalizes all classes from the module for which the application contains definitions. This process is also necessary if your modules are in a separate project from your main application in Flex Builder.

1. Generate the linker report and compile the application:
mxmlc -link-report=report.xml MyApplication.mxml

2. Compile the module and pass the linker report to the load-externs option:
mxmlc -load-externs=report.xml MyModule.mxml

Note: If you externalize the module’s dependencies by using the load-externs or optimize option, your module might not be compatible with future versions of Adobe Flex.

Note: At Flash Builder this process can be performed in Project > Properties > Flex Modules.

ModuleManager and ModuleLoader

The ModuleManager manages the set of loaded modules, which are treated as a map of Singletons that are indexed by the module URL. The ModuleLoader class is a thin layer on top of the ModuleManager API that is intended to act similarly to the mx.controls.SWFLoader class for modules that only define a single visual UIComponent. The ModuleLoader class is the easiest class to use when implementing a module-based architecture, but the ModuleManager provides greater control over the modules.

When you load a module, Flex ensures that there is only one copy of a module loaded, no matter how many times you call the loadModule() method for that module.

Using the ModuleLoader class to load modules

Setting the target URL of a ModuleLoader object triggers a call to the loadModule() method. This occurs when you first create a ModuleLoader object with the url property set. It also occurs if you change the value of that property.

If you set the value of the url property to an empty string (""), the ModuleLoader object unloads the current module.

Using the ModuleManager class to load modules

To use the ModuleManager to load a module in ActionScript, you first get a reference to the module’s IModuleInfo interface by using the ModuleManager getModule() method. You then call the interface’s load() method.

Finally, you use the factory property of the interface to call the create() method and cast the return value as the module’s class.

import mx.events.ModuleEvent;
import mx.modules.ModuleManager;
import mx.modules.IModuleInfo;
public var info:IModuleInfo;

private function initApp():void {

info = ModuleManager.getModule("ColumnChartModule.swf");
info.addEventListener(ModuleEvent.READY, modEventHandler);
// Load the module into memory. Calling load() makes the
// IFlexModuleFactory available. You can then get an
// instance of the class using the factory's create() method.
info.load();
}

private function modEventHandler(e:ModuleEvent):void {
// Add an instance of the module's class to the display list.
vb1.addChild(info.factory.create() as ColumnChartModule);

}

You do not need to call the unload() method when adding and removing modules using the IModuleInfo class. You just need to set the IModuleInfo instance to null.

Module domains

By default, a module is loaded into a sibling domain of the current application domain. You can specify a different application domain by using the applicationDomain property of the ModuleLoader class. Because a module is loaded into a child domain, it owns class definitions that are not in the main application’s domain. For example, the first module to load the PopUpManager class becomes the owner of the PopUpManager class for the entire application because it registers the manager with the SingletonManager. If another module later tries to use the PopUpManager, Adobe ® Flash® Player throws an exception. The solution is to ensure that managers such as PopUpManager and DragManager and any other shared services are defined by the main application (This technique also applies to components). Typically, this is done by adding the following to a script block:

import mx.managers.PopUpManager;

import mx.managers.DragManager;

private var popUpManager:PopUpManager;

private var dragManager:DragManager;


Because a Flex module must be in the same security domain as the application (SWF) that loads it, when you’re using modules in an AIR application any module SWF must be located in the same directory as the main application SWF or one of its subdirectories, which ensures that like the main application SWF, the module SWF is in the AIR application security sandbox.

By default, modules do not share the main application’s StyleManager, however. They have their own instances of the IStyleManager2 class. As a result, modules can define their own styles. For example, style properties set on a Button control in one module are not applied to the Button control in another module or to the main application.


See also:
Gerenciamento de memória e tamanho dos arquivos em grandes aplicativos utilizando o Modules do Flex 2.0.1
Module unload doesn't competely unload a module (SDK-12025)

Organizando Favoritos

Estou organizando os meus favoritos no FireFox e como sempre sincronizei os meus favoritos de casa com o trabalho e vice-versa de uma forma braçal perguntei para os meus colegas se não conheciam um add-on que deixasse esse sincronismo mais automático, me recomendaram, então o Xmarks. Para usar ele é criada uma conta free onde é possível consultar seus favoritos pela internet ou em qualquer máquina com este addon através do sincronismo dos favoritos.

Percebi também que possuía muitos favoritos duplicados e "quebrados". Para facilitar o trabalho de identificar estes favoritos criei uma classe java a qual deixo disponível.

segunda-feira, 1 de março de 2010

Freelancer / Remoto - Alerta

Quem não gostaria de fazer um freelancer ou trabalhar full-time de forma remota no conforto de seu lar?
Acredito que a maioria de nós.
Neste mundo globalizado e com as ferramentas atuais isto se tornou possível.

Este post, não é para discutir as vantagens e desvantagens do trabalho remoto, já existem vários sites por aí sobre o assunto, venho aqui somente como alerta para não caírem no conto do vigário. Cada vez mais se houve falar aqui ou ali de pessoas que prestaram serviços para empresas, algumas se dizem dos Estados Unidos, que prometem mundos e fundos e acabaram a ver navios.

Fica aqui o alerta, quando forem se candidatar a uma vaga destas tentem pegar maiores informações, só ter um site bonito não resolve, veja se tem informações na mídia sobre esta empresa, se for no Brasil e perto de vocês tentem marcar uma entrevista local, no escritório da empresa, se for no exterior e tiverem algum conhecido nesta região peça a esta que verifique o endereço (às vezes são fictícios).
Uma outra boa dica é entrar em contato privado com pessoas de confiança da comunidade Flex para ver se elas conhecem a empresa.

Da mesma maneira que a globalização e a internet deixou o mundo menor, fazendo empresas e pessoas más intencionadas chegarem até nós, através das mesmas ferramentas podemos nos proteger destas pessoas.

Investiguem primeiro, da mesma maneira que há emrpesas confiáveis utilizando esta nova forma de contratação também há aquelas que se beneficiam da distância para agirem de má fé.

sexta-feira, 19 de fevereiro de 2010

Flash Mobile para este ano

Uma notícia muito boa que está circulando por aí é que ainda este ano teremos aplicações Flex rodando em Mobile. Isto é muito bom já que aplicações mobile estão em franca expansão, trazendo muitas e boas oportunidades.

Estou muito curioso e cheio de dúvidas, mas se a Adobe conseguir que uma aplicação Flex uma vez compilada rode tanto em web como em mobile será muito produtivo será o Write once, run anywhere da Adobe.

Links recomendados:

Flash e AIR para celular chegam neste ano
Adobe announces Flash Player and AIR for Android
Aplicativos AIR no iPhone (AIR Apps on iPhone) - Blog Mário Júnior

quinta-feira, 18 de fevereiro de 2010

Flex 3 em Ação

Mais um livro sobre Flex no nosso idioma: Flex 3 em Ação.
Não li, mas olhei o sumário e achei o conteúdo muito bom para quem está iniciando.

sexta-feira, 29 de janeiro de 2010

Eventos do Flex ou Customizados

Frequentemente vejo nas listas de discussão a pergunta: como faço para acessar uma função / propriedade da minha janela (TitleWindow) através da application e vice-versa? Resumindo: como faço para trocar mensagens entre objetos?

Bem, para isso podemos usar Application.application ou as propriedades: parent, parentApplication, parentDocument ou owner, variando de acordo com os objetos que vão se comunicar.

Mas, esta não é a forma que eu recomendaria, a forma mais "elegante" é através do uso de eventos.

O Flex tem vários eventos próprios: eventos de ciclo de vida (add, added, preinitialize, initialize, creationComplete, updateComplete), MouseEvent, FocusEvent, KeyBoardEvent, entre outros ...Event e você também pode criar os seus próprios eventos customizando-os conforme sua necessidade.

Os eventos diminuem o acoplamento entre objetos tornando-os mais independentes e facilita o reaproveitamento de código. No evento customizado você pode criar as propriedades necessárias para enviar aos objetos que estiverem escutando, não precisando assim que um objeto saiba quais propriedades ou objetos o objeto que disparou o evento possue, só será necessário conhecer o evento monitorado.

Abaixo uma relação de links que exemplificam o uso de Custom Events:
Using Events - LiveDocs
Custom Events - LiveDocs
Flex/AS3 – Truques e Dicas #7 – Custom Event
Eventos personalizados no Flex
Passando parâmetros entre Pop-Up e Application no Flex
Eventos personalizados interagindo entre telas

sexta-feira, 15 de janeiro de 2010

Debug em Produção

Às vezes pode ser necessário debugar uma aplicação que já se encontra em produção para identificar a origem de um erro ou entender um comportamento não desejado.

Para isso é necessário seguir os seguintes passos:
  1. Coloque trace() e breakpoints onde desejar na sua aplicação.
  2. Compile em modo debug (Project > Build Project).
  3. Publique o swf compilado no seu servidor de produção.
  4. Crie um arquivo .html em branco e informe ao seu projeto onde se encontra este arquivo na hora de rodar em modo debug, para isso, vá em Run > Open Debug Dialog... e faça como na imagem ao lado.
  5. Rode a sua aplicação em modo debug: Run > Debug As. Isto irá abrir no seu navegador o arquivo html em branco criado no passo anterior.
  6. Numa outra aba do navegador abra o swf do servidor de produção. Neste ponto quando passar por um trace o seu conteúdo irá aparecer na console e se tiver um breakpoint o Flex Builder irá parar para você poder debugar mostrando a perspectiva Flex Debugging.

quinta-feira, 14 de janeiro de 2010

Flex For Kids 2010 - Inscrição

Pessoal, já fiz minha inscrição, e você, já fez a sua?

Não perca tempo, além de ter acesso a conteúdo de primeira com profissionais feras vocês ainda estarão ajudando pessoas que precisam de sua colaboração.

Ótimo custo x benefício, somente R$ 30,00 podendo ser pago até via cartão de crédito.

Se não puder assistir no dia, não desista, as palestras poderão ser baixadas para serem vistas a hora que quiser.

Participe e divulgue. Faça sua inscrição aqui.

quarta-feira, 13 de janeiro de 2010

Projeto Engnatv

Como comentei em post anterior esta primeira semana de 2010 iniciei ministrando um treinamento de 40h de Animações com ActionScript 3 no Flash CS4.

Este treinamento foi realizado na faculdade Feevale como parte do projeto Engnatv patrocinado pela Finep.

O treinamento vem com o intuito de dar subsídios para a criação de animações com ou sem interatividade para facilitar ao professor de ensino médio ensinar conceitos das seguintes disciplinas: Biologia, Física, Informática, Matemática e Química, estimulando também os alunos a assimilar mais facilmente estes conteúdos.

Convite: Quem tiver interesse em ser voluntário na criação de animações entre em contato através dos e-mails listados na seção Contatos do site do projeto. As animações serão publicadas no site juntamente com o nome do autor.

O conteúdo programático foi o seguinte:
Diferenças entre Flash, Flex, Flash Player
Noções básicas de ActionScript 3 (AS3)
=> Variáveis e Constantes
=> Tipos de Dados
=> Classe Object
=> Arrays
=> Debug
=> Operadores
=> Condicionais
=> Loops
=> Funções
Orientação a Objeto (OO)
=> Classes
=> Package
=> Métodos
=> Método construtor
=> Variáveis de instância
=> Herança
Objetos Visuais
=> Display List
=> Método addChild
=> Criando um MovieClip e exportando para AS3
=> Desenhando com graphics
Eventos
=> Interceptando e removendo eventos
=> KeyboardEvent
=> MouseEvent
=> FocusEvent
=> Criando eventos customizados
Carregando arquivos
=> Arquivos de texto
=> XML
=> Manipulando informações de um arquivo XML
=> Carregando sons
=> Imagens
=> Vídeos
=> Objeto de vídeo do Flash FLVPlayBack
Animações
=> Timer
=> Evento EnterFrame
=> Tween
=> Transition
=> TimeLine
=> Motion Tween