Cursos/ Flex/ Flex 4

Novo mini curso – Criando experiências ricas com Flex 4 e Zend Framework

zend_cartaz

Esta no ar, mais um curso que gostariamos de ter à um certo tempo, desde quando a Adobe começou a ser parceira tecnologia da Zend Inc. Fundadora do projeto PHP.
Como estou trabalhando em outros cursos on-line, o que toma quase todo tempo, convidei o José Carlos Fiel,para ser o instrutor do curso. Quem não conhece o José Fiel, ele é o desenvolvedor de novas tecnologias e RIA do ministério da Educação, trabalha com Flex há mais de 2 anos e sempre tem ajudado a comunidade tirando dúvidas, palestrando e apresentando as técnicas que ele usa no MEC para o público de desenvolvedores, além disso é membro da comunidade de autores da O’Reilly a maior publicadora de livros técnicos no mundo.
O conteúdo é bem interessante por ser um curso rápido e de acordo com o que José me prometeu, vai trazer a tona toda sua experiência como desenvolvedor do ministério da Educação para esse curso, mostrando dicas, macetes e as novidades do Flex 4 para desenvolvedores PHP.

Quer garantir sua vaga? Acesse o site do curso, e faça sua matrícula.

O público alvo desse curso é para desenvolvedores PHP que tenham experiências com o Zend Framework e quer dominar a integração com o Flex 4. O curso já integra as novidades do Flex 4 e Flash Builder 4.
Conto com a participação de todos vocês, meus queridos alunos. Ah! quase me esqueço, ex-alunos do Mini AIR que gostariam de participar, tem 20% nesse e em qualquer outro curso no futuro.

Se tiver alguma dúvida, pode entrar em contato conosco pelo formulário de contato do site do curso. Estamos atento a qualquer dúvida que surgir.

Flash Builder/ Flex/ Flex 4/ Flex Builder 4

Flex 4.1 daqui alguns meses

Você ai todo contente com o novos recursos do Flex 4. E não é por menos. Daqui alguns meses o SDK do Flex 4 vai sofrer algumas mudanças devido as seguintes funções:

– Terminar o Flash Catalyst finalizar a produção
– Dar suporte ao desenvolvimento para Mobile ( acho que lá para Outubro).
– Esperar a finalização do AIR 2.0
– Consertar alguns bugs já conhecidos nessa última versão.
– Finalização do Flash Player 10.1 (final) ainda está em beta 3.

Vale a pena investir no Flex 4?
Sim, e como vale, o Flex 4 é o mesmo Flex de sempre, só que com algumas modificações que vai definir o futuro do SDK para os próximos anos. Já que entre multi-toques, mouse, teclado,mobile, é dificil não definir um produto que atenda toda essa demanda.
Que é justamente o proposito do Flex 4.

Não sei se você acompanha de perto o desenvolvimento do SDK como temos acompanhado de perto via SVN, há um grande volume de novas classes, para se ter uma idéia com a Adição do FXG e o spark framework e também dando suporte ao TLF, o Flex 4 SDK ganhou nada menos que 1.146 novas classes. É muita coisa para um framework do tamanho do Flex. Embora ainda há aquela velha necessidade de coisas a serem implementadas. Com toda certeza é o melhor Flex desde então já lançado comparando-se ao redondo e estável Flex 3.5a (meu preferido).

O Flash Builder 4 foi baseado nos seguintes suportes:
Flex 3 SDK 3.5.0.12683
Flex 4 SDK 4.0.0.14159
AIR SDK 1.5.3.9120
Flash Player 10.0.45.2

Prova disso é que já foi iniciado dia 19/03, última sexta-feira os ajustes para o Flex SDK 4.1 para esse update esperado.

De um modo geral, você já pode desfrutar de 90% do que há de novo no Flash Player, Flash Builder, Flex 4 SDK, AIR 2.0. Aproveita que ficou mais fácil ainda de se trabalhar com Flex, e o resultado final ficou mais refinado.

Flash Builder/ Flex 4/ Notícias/ RIA

Flex 4 oficialmente lançado

Se você segiu alguns posts relacionados ao Flex 4 mesmo que timidamente e a palestra sobre “40 grandes novidades do Flex 4 no Flashcamp Brasil”, sinal que você ja vinha acompanhando a evolução do Flex 4 e Flash Builder.

Ontem de madrugada como é de costume, automaticamente foram publicados as atualizações do produto. tanto no Flex.org e Flex.org/showcase quanto no site da Adobe www.adobe.com/devnet/flex e www.adobe.com/go/flex.

Existem diversas novidades, dentre elas:

Suporte a uma nova arquitetura de componentes Spark
Flex Builder agora é chamado de Flash Builder
Componentes legados do Flex 2 e 3.x suportam no Flex 4
Compilador do Flash Builder está 4x mais rápido que o anterior
Novos componentes adicionados ao Spark framework
Nova maneira de trabalhar com States
Novo framework de animação.

Então tudo que você tinha até então no seu Flex 3. Prepare-se por que de uma maneira geral 50% do seu código terá que ser re-escrito para suporta o novo Spark caso você venha utilizar.

Não foi dessa vez que ela já adicionou suporte ao desenvolvimento do framework Slider, aquele que será usado para criar aplicativos ricos para iPhone, Android e Blackberry. A Adobe com toda certeza lançará isso em um suave update para os próximos meses.

Para estudantes universitários e desempregados que queiram ganhar uma licença do Flash Builder 4. Podem pedir diretamente no site flex.org.

AIR 2.0/ Flash Player/ Flex/ Flex 3

Capturando erros no seu aplicativo RIA no FP 10.1 e AIR 2.0

É tão bom quando você tem alguns minutos livres durante a semana para escrever alguma coisa no blog, que ultimamente tem sido tão deixado de lado!
Uma das grandes novidades do Flash Player 10.1 é a possibilidade de capturar todos os erros gerados pela sua aplicação RIA.
Comumente, desenvolvedores e inclusive nós, tinhamos o hábito de capturar os erros apenas comuns em uma aplicação, por exemplo: IOError, Load Errors, Event Erros, Converter Errors, porém querendo ou não acaba escapolindo do nosso controle uns errinhos como 1009,1056,2048 etc. Esses erros é de tirar o fôlego quando se trata de experiência do usuário, e principalmente quando se tem vários deles.

Infelizmente, isso já era para estar pronto desde a versão 9. Como não tinha, faziamos isso como comentei acima. O que, torna uma tarefa repetitiva e acaba virando um saco fazer sempre aquilo, embora você tente ao máximo re-utilizar seu código.

Contudo, para a grande saúde mental de desenvolvedores, a Adobe decidiu criar esse tipo de captura, dando ao desenvolvedor a oportunidade de verificar quais erros estavam ou estão sendo gerados tanto em backgrounds não mostrados no Stacker ou mostrados.

Nem tudo é um mar de rosas, esse tipo de captura de evento só funciona se seu navegador estiver com o Flash Player do tipo debug, inclusive acaba ficando disponivel apenas para usuarios desenvolvedores, impossibilitando assim você de logar automaticamente um erro e captura-lo e adiciona-lo a uma base de análise, que é comumente feito em sistemas enterprise.

Como era feito a captura de erros até então no Flash Player 9 e 10:

Geralmente como nossos requisitos sempre são simples, nada tão complexo, preferimos usar não a classe padrão de Log de erro do SDK do Flex, por que é além do que agente precisa, e como também existem outras ferramentas e frameworks no mercado para log de erros.

A classe LogManager ela adiciona os erros a um arrayCollection:

package com.igorcosta.debug
{
	import mx.collections.ArrayCollection;
 
	public class LogManager
	{
		[Bindable]private static var _arrError:ArrayCollection = new ArrayCollection();
 
 
		public static function get errors():ArrayCollection
		{
			return _arrError;
		}
		public function LogManager()
		{
 
		}
 
		public static function addError(error:LogError):void
		{
				_arrError.addItem(error);
		}
 
	}
}

E a classe que agente costuma chamar de LogError, nada mais é que um VO/DTO, etc:

package com.igorcosta.debug
{
 
	public class LogError
	{
		public function LogError()
		{
		}
		public var stack:String;
		public var name:String;
		public var ID:String;
		public var message:String;
	}
}

Ai para usarmos em um simples teste de erro, veja o aplicativo que fizemos para esse post. Acho que vai ajudar vocês a melhor enxergar como é penoso o trabalho de capturar os eventos.

< ?xml version="1.0" encoding="utf-8"?>
<application xmlns="http://www.adobe.com/2006/mxml" layout="vertical">
 
 
	<script>
		< ![CDATA[
			import mx.controls.Label;
			import com.igorcosta.debug.LogManager;
			import mx.utils.ObjectUtil;
			import com.igorcosta.debug.LogError;
 
 
 
			public var err:LogError;
 
			public function provocarErro(tipo:uint):void
			{
				switch(tipo){
 
						case 1:
 
							try{
								throw new IOError("I/O Error, de leitura ou escrita");
							}catch(erro:IOError){
									err = new LogError();
									err.stack = erro.getStackTrace();
									err.message = erro.message;
									err.ID = String(erro.errorID);
									err.name = erro.name;
									LogManager.addError(err);
							}
							break;
					   case 2:
					   		try{
					   			var temp:Label;
					   			temp.text = 'test';
					   		}catch(erro:Error){
					   				err = new LogError();
					   				err.stack = erro.getStackTrace();
									err.message = erro.message;
									err.ID = String(erro.errorID);
									err.name = erro.name;
									LogManager.addError(err);
 
					   		}
					   break;
					   case 3:
					   		try{
					   				stackTest();
					   		}catch(erro:Error){
					   				err = new LogError();
					   				err.stack = erro.getStackTrace();
									err.message = erro.message;
									err.ID = String(erro.errorID);
									err.name = erro.name;
									LogManager.addError(err);
 
					   		}
				}
			}
			private function stackTest():void
			{
					stackTest();//loop de funcao da um erro de StackOverflow
			}
		]]>
	</script>
 
 
	<hbox width="100%">
		<button label="Provocar erro 1009" click="provocarErro(2)"/>
		<button label="Provocar erro IO" click=" provocarErro(1)"/>
		<button label="Provocar erro Stack Overflow" click=" provocarErro(3)"/>
	</hbox>
	<datagrid dataProvider="{LogManager.errors}" x="103" y="160" width="743" height="308">
		<columns>
			<datagridcolumn headerText="Nome do Erro" dataField="stack"/>
			<datagridcolumn headerText="Nome do Erro" dataField="name"/>
			<datagridcolumn headerText="Mensagem de erro" dataField="message"/>
			<datagridcolumn headerText="ID do erro" dataField="ID"/>
		</columns>
	</datagrid>
 
</application>

Capturando erros gerais ou “Global Error handler” no Flash Player 10.1 e AIR 2.0:

Agora usando o mesmo aplicativo, podemos capturar qualquer tipo de erro gerado pelo Flash Player, ou mau uso do código. Um detalhe é que o novo recurso do Flash Player o Uncaught Error e Uncaught Error Event, são passíveis de receber qualquer erro ocorrido no swf compilado. Veja o exemplo abaixo:

< ?xml version="1.0" encoding="utf-8"?>
<mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="completou()" layout="vertical">
 
    </mx><mx :Script>
        < ![CDATA[
        	import mx.controls.Label;
        	import com.igorcosta.debug.LogError;
        	import com.igorcosta.debug.LogManager;
            private function completou():void
            {
                loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, capturarErros);
            }
 
            private function capturarErros(e:UncaughtErrorEvent):void
            {
 
	        	if(e.error is Error){
 
	        		Error(e.error).getStackTrace();
	            	LogManager.addError(e.error as Error);
	         	}
	         	if(e.error is ErrorEvent){
	         		LogManager.addErrorEvent(e.error as ErrorEvent);
	         	}
 
            }
 
             private function identifica(e:MouseEvent):void
            {
 
                var minhaVar:Label;
                try
                {
                   minhaVar.text = " Ola Mundo" ;
                }
                catch (e:Error)
                {
                  // capturou o erro
                  minhaVar as Boolean;
                  trace(minhaVar.text);
                }
            }
        ]]>
    </mx>
     <mx :HBox width="100%" >
     <mx :Button label="Causar erro de  acesso indefinido" click="identifica(event);"/>
    </mx>
 
 
 
 
	<mx :DataGrid width="100%" dataProvider="{LogManager.errors}" x="29" y="182">
		</mx><mx :columns>
			<mx :DataGridColumn headerText="ID do Erro" dataField="errorID"/>
			<mx :DataGridColumn headerText="Nome do erro" dataField="name"/>
			<mx :DataGridColumn headerText="Mensagem de erro" dataField="message"/>
		</mx>

Lembrando que para você usar em seu projeto esse recurso do UncaughtError e UncaughtErrorEvent, você precisa ter o playerglobal.swc do Flash player 10.1, tanto para o Flash Player quanto para o AIR 2.0.

Os códigos fontes de ambos os aplicativos vocês podem baixar diretamente aqui.

Flex/ Flex 3 Charts/ Flex 3 Open-Source/ Flex 3 SDK/ Flex Componentes/ frameworks/ Open-source

DVM ou Pacote de gráficos agora é open-source

Parte da estratégia da Adobe em colocar o DVM em categoria open-source é justamente tentar envolver mais ainda a comunidade em ajuda-la a corrigir bugs e manter o SDK ativo para a próxima geração de aplicativos desenvolvidos com o SDK do Flex.

A parte boa dessa história é que antes você teria que desembolsar cerca de $249 para ter acesso ao código fonte do mesmo.

Ano passado ela já havia liberado o acesso ao código fonte do produto, porém não permitia o uso comercial do mesmo, já que você não tinha a licença. Essa sem dúvida em minha opinião foi o melhor movimento do tão requisitado e usado framework de gráficos da plataforma Flex.

Você pode baixar o SDK de gráficos + Olap Datagrid + Advanced Datagrid diretamente do site Open-source da Adobe. Visite