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

AS 3.0/ Flex/ Flex 3/ Flex 3 Open-Source/ Flex 3 SDK/ Flex Componentes/ Flex Hacks

Como posicionar o Alert nos valores x e y que eu queira?

Com as mesmas palavras recebidas no título do e-mail enviado pelo Carlos Brandão sobre suas dificuldades em posicionar o componente Alert, escrevemos o título deste post.
Sem dúvidas é um problema simples, antigo e de fácil resolução. Porém muitos desenvolvedores acabam no final achando mais cômodo colocar o Alert em sua posição original, no centro da tela.

Em via das dúvidas, o mais correto seria imitar o Delphi, C#, Swing. Em deixar o desenvolvedor alertar alguma mensagem na posição que ele queira; Já que nativamente se você colocar o parent ele posiciona no container desejado o alerta na posição central referente ao tamanho e posição daquele container. No ambito de melhor experiência é bem mais agradável mostrar a mensagem de alerta onde o usuário esta usando naquele momento.

O Alert é um componente baseado em Panel, uma vez que ele possui apenas 1 método estático chamado show, ele cria 1 popUp por vez usando o PopUpManager direto no global do Application , comportamento esse que é padrão. Se você já é um usuário avançado do Flex com toda certeza você já deve ter implementado isso, analisando o código fonte do SDK.
Como ele é baseado em um Panel e por sua vez é herdado do UIComponent, ele possui tamanho, posição, cor, propriedades do Panel como a propriedade status, em fim uma gama de novas propriedades que podem ser usadas.

Para ajudar o Carlos, segue uma classe simples que faz todo esse trabalho, é definida por uma propriedade booleanada chamada posicionar que por padrão é false para deixar o mesmo comportamento original do Alert, e caso ela venha a ser alterada para true e suas posições x e y forem alteradas, ela fará um novo posicionamento do Alert para o local que você precisa. Veja como isso pode ser feito.

Classe utilitária para criação do Alerta costumizado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package org.igorcosta.alert
{
	import flash.display.Sprite;
 
	import mx.controls.Alert;
	import mx.managers.PopUpManager;
 
	public class Alerta
	{
		/**
		 * @Author www.igorcosta.org
		 * */
		public function Alerta()
		{
			super();
		}
		/**
		 * @public
		 *
		 * Método estático que cria um Alert na posição desejada pelo usuário.
		 *
		 * Por padrão é desabilitado o posicionamento, caso você queira usar o posicionamento você
		 * deve passar o parametro posicionar como true e definir os pontos x e y para se Alert.
		 * vale resaltar que os valores para o posicionamento de x e y são por padrão iguais a 0.
		 * Caso você defina apenas os valores de x e y e deixar o valor original de posicionar como false
		 * não ocorrerá as mudanças.
		 * @return Alert
		 * */
		public static function show(mensagem:String,titulo:String,posicionar:Boolean=false,xPos:Number=0,yPos:Number=0,flags:uint=4,parent:Sprite=null,closehandler:Function =null,icon:Class = null,defaultbuttonFlag:uint =4):Alert{
			var alerta:Alert = Alert.show(mensagem,titulo,flags,parent,closehandler,icon,defaultbuttonFlag);
			Alert.yesLabel = 'Sim';
			Alert.noLabel = 'Não';
			Alert.cancelLabel = 'Cancelar';
			Alert.okLabel = 'OK';
			if(posicionar ==true){
			PopUpManager.centerPopUp (alerta);
			var internalX:Number = xPos;
			var internalY:Number = yPos;
			alerta.move(internalX,internalY);
			}else{
				PopUpManager.centerPopUp (alerta);
			}
 
		return alerta;
		}
	}
}

Aplicação da classe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< ?xml version="1.0" encoding="utf-8"?>
<mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 
	</mx><mx :Script>
		< ![CDATA[
			import org.igorcosta.alert.Alerta;
 
			public function alertar(e:MouseEvent):void{
				Alerta.show('mensagem de boas vindas','teste',true,e.currentTarget.x,e.currentTarget.y);
			}
		]]>
	</mx>
	<mx :Button id="btn" click="alertar(event)" x="31" y="23" width="61" height="32" label="Click"/>
	<mx :Button id="btn0" click="alertar(event)" x="538" y="23" width="61" height="32" label="Click"/>
	<mx :Button id="btn1" click="alertar(event)" x="538" y="338" width="61" height="32" label="Click"/>
	<mx :Button id="btn2" click="alertar(event)" x="31" y="338" width="61" height="32" label="Click"/>
Flex/ Flex 3 Open-Source/ Flex e Python

Flex e Python é possível?

Uma vez que o Flex é dataware, não é necessário um tipo específico de banco de dados ou linguagem back-end tudo naturalmente é possível.
Se tem gente usando Delphi com Flex, até mesmo Progress com Flex, é possível sim usar Flex com Python.

Uma vez que o mecanismo de dataware embutido no Flex é aplicado, a única consideração que você precisa para fazer funcionar é um tradutor de entidades, é bem comum comparar com idiomas. Você fala russo e eu Português, como fluir a conversa entre dois indivíduos?

Com essa chave, fácil, para usar com Flex o Python precisa de um tradutor, existe 2 tradutores no momento para esse tipo de integração. PyAMF e o mais recente lançamento motivo pelo qual saiu esse post. o AMFast.

O PyAMF é rápido, já testamos um Olá Mundo e consumindo um simples datagrid com alguns dados. Mais o AMFast é realmente rápido, mega rápido. Para se ter uma simples idéia, demorou mais tempo de renderizar os dados no Flex do que para transferi-los.

Diferentemente um pouco do PyAMF o AMFast contém um grupo de funcionabilidades interessantes, dignos de um bom teste e até adoção em escala de produção para quem usa sistemas legados, coisa que o python por sí só consegue comunicar.

AMFast suporta AMF0/AMF3 escrito em C como extensão do Python, (línguagem de baixo nível).
Mapeia classes próprias com definição de ClassDef, da-lhe ai o que no GraniteDS tem que facilita o controle sobre serialization e de-serialization.
Além do mais consegue mapear também NetConnection, cabeçalhos do RemoteObject(só existe isso no LCDS,WebOrb for .Net).
Autenticação por NetConnection e RemoteObject, (só funciona quando você mapeia).
Suporta Lay-loaded com persistência de dados com SqlAlchemy.
E ainda por último gera código em Actionscript 3.0, classes, models, essas coisas.

Se empolgou? Faça um teste, o bom dele é que é Open-source.

http://code.google.com/p/amfast/

Bem que alguém da comunidade pudesse escreve um exemplo de como usar no Google App Engine, adoraria-mos linkar aqui o post.

Flex/ Flex 3 Open-Source/ Flex MVC

Aplicações modulares, sim ou não?

Está em andamento um debate bastante maduro na lista Flex-Brasil, sobre o uso de aplicações Flex com o uso de Módulos, e como ela se iniciou com um post antigo meu, gostaria de corrigir algumas coisas e re-passar aqui o que falei na lista.

O post é ultrapassado, não vale mais a pena tê-lo como referência já que me referia ao Flex SDK 3.0.184 que foi o primeiro release do SDK e ao Flash Player 9.0.26 que por questões técnicas visto ao fato de usar Module o time do Flash Player atualizou para a versão 9.0.115 que já elimina o problema.

O fato é que o Flex 3.0.2 em seu último nightly build se mostrou capaz de aguentar e suportar bem o uso de Modulos em aplicações que faz uso da técnica.

O MASAPI não usa muito esse argumento ja que não sofreu muita alteração e torna-se desnecessário para esse uso, ja que a falha em sí era do SDK e da versão do Flash Player 9.0.26

Hoje a Adobe lançou o Flash Player 10, fiz todos os testes nele no que diz a respeito de novidades, e todas funcionaram perfeitamente, só alguns picos de memória no Flash Player para o Firefox mais no sentido de uso do 3D e pixel blender juntos.

Voltando ao assunto dos Modules; Eu tentarei escrever como usar de formar racional tomando todos esses cuidados tanto no Flash Player 9.0.115 quanto no novíssimo Flash Player 10.0

Existe algum tipo de receita para criar algo fenomenal em aplicações de grande porte?

Existe sim, o bom censo. Se você tem o seu time de usabilidade, um arqueteto de plantão, use e abuse deste profissional, porém na realidade brasileira é dificil ter ja que muitos aqui são desenvolvedores autonomos ou pertencem a pequenas empresas.

Para solucionar todos esses aspectos de modularizar uma aplicação é preciso estudar qual o principal objetivo de sua ferramenta, o que ela faz de comum e que tipos de classes são mais usadas na aplicação, tendo só isso você ja anda ai meio caminho para fazer a coisa certa.

A dica que foi citada acima sobre fazer o split geral da aplicação rodando-as separadamente é uma alternativa que funciona, porém não aconselho, devido ao fato de tirar o brilho do Flex que é justamente a usabilidade do cliente final, esse tipo de comportamento é tipico de quem veio do Java e criou ou cria muito applets, na atual conjuntura do Flex e Flash Player não é necessario esse tipo de comportamento.

Para facilitar melhor o que eu posso dar como conselho, eu separei uma lista de perguntas que você pode acrescentar a esse tópico, eis que são:

1. Minha aplicação é pequena, eu posso usar Modulos?

R: Não é necessário, ja que ela não depende muito dessa função, porém se ela for pequena e ser usada por até 1mil usuários diários, você precisa usar o Profile do Flex para tentar reduzir o tamanho máximo que puder, Usar Framework cache para eliminar o mal uso de sua banda e por final usar RSL, essa gama de soluções podem trazer um bom censo final à sua aplicação, tendo ela um funcionamento redondo e eliminando ai as arestas de reclamações pelo usuário final.

2. Minha aplicação é de médio porte, O que devo usar?

R: Quando se fala em tamanho de aplicação, tem gente que estufa o peito e diz, minha aplicação tem 200 telas, 500 formulários e faz n operações. Lembre-se que o número de telas não conta na hora de medir o tamanho da aplicação, mais sim o número de operações que essa aplicação se resolve. Por exemplo eu já vi em uma empresa que fomos fazer consultoria usarem 10 telas para fazer 3 operações,isso é uso desnecessário de telas. Sempre que for desenvolver uma app que ela seja de caráter de no mínimo umas 100 operações, ela ja tem esse sobrenome de “médio”, procure enxugar ao máximo o número de telas para resolver essas operações, quanto menos telas, e mais objetividade que elas apresentam, melhor é a experiência do usuário com a sua aplicação.

Procure usar os mesmos recursos da primeira pergunta, e adicione a receita Módulos, LinkReport para reduzir, e enxugue ao máximo o uso de telas, remova as desnecessárias. Com isso você ganha mais.

3. Tenho uma aplicação de médio porte que usa um número N de telas e Módulos, como posso administra-las melhor?

R: Começe a usar um framework MVC, ele será seu melhor amigo nessa situação, embora muita gente se esqueve ao usar MVC, trantando assim ao grosso modo de usar apenas o padrão do flex para desenvolver a aplicação. De fato funciona, mais se alguém da equepe mudar de emprego, ou ter morte, você terá dores fortes de cabeça ao tentar advinhar o código ninja que ele fez para você. É sempre bom você seguir padrões de convenção(http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions) junto com sua equepe, quando falo de equepe eu me refiro no mínimo até 2 pessoas. Procure adotar os novos padrões do Flex, assim é menos prejuízo de tempo. Use as técnicas aplicadas no 1 e 2, elas te ajudaram a decidir melhor, juntamente com um framework MVC.

4. Minha aplicação é de grande porte e missão crítica o que posso fazer para melhora-lá?

R: Toda aplicação seja ela pequena ou grande, deve-se preocupar com questões de segurança, você sabe que o SWF é de formato aberto, então qualquer um pode descompilar seu swf mesmo vindo do Flex. Então nunca coloque algo que vá comprometer sua aplicação final. Sempre pense da seguinte forma:

* Nunca use dados importantes ou tente manipula-los diretamente do lado cliente
* Use uma camada de layer profissional com AMF3, pode ser em Java,C++,PHP,ColdFusion
* Trafegue ao máximo dados de importância encriptando-os em casos de operações bancárias
* Use o protocolo rtmp.
* Use as dicas do 1,2,3 para sua aplicação em adição ao fato de um boa arquetetura
* Procure reduzir o tamanho final do SWF principal ou carrega-lo em cache.
* Grande parte da regra de negócio da sua aplicação é melhor ficar no lado servidor
* Use sempre MVC

Em fim, tem um mar de infinidade de informações que te ajudam à melhorar a maneira como você cria as suas aplicações, sempre tente melhora-las mas nunca tire o foco da ferramenta em sí que é funcionar.
As dicas acima são parte de um documento nosso, então são casos hipotéticos e em alguns casos não é nossa opinião final sobre uma determinada coisa, já que são n fatores que definem essas regras.

Sim, aplicações modulares são aplicáveis, dependendo de cada caso como mostrado acima.

AbsolutoBrasil/ Actionscript Frameworks/ AS 3.0/ Flex/ Flex 3/ Flex 3 Documentação/ Flex 3 Open-Source/ Flex Componentes/ frameworks/ Labs/ Open-source

Adicionando um TabManager ao TabNavigator de seu projeto

Em um dos projetos que estamos desenvolvendo chegadou-se a uma certa necessidade de usar um manager para algumas views. Controlar isso via interface é horrível, quanto maior genérico fique sua view melhor.
Gostaria de compartilhar com vocês esta classe que faz justamente isso, organizar e administrar melhor as abas do TabNavigator. Que inclusive estará fazendo parte dos managers do novo AbsolutoBrasil 1.5 que está vindo por ai. Porém como vai demorar um pouquenho para sair segue a classe bem documentada.

Caso de uso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
< ?xml version="1.0" encoding="utf-8"?>
<mx :Application applicationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 
 
	</mx><mx :Script>
		< ![CDATA[
			import mx.controls.Alert;
			import mx.containers.Canvas;
			import mx.events.ItemClickEvent;
 
			import br.absolutobrasil.managers.TabManager;
 
			private function init():void {
					TabManager.tabNavigator = minhaTabNav;
			}
			public function switchBotoes(event:ItemClickEvent):void {
					switch(btns.selectedIndex) {
						case 0:
								TabManager.createNewTab(Canvas,"Nova Aba","001");
								break;
						case 1:
								TabManager.removeSelectedTabByIndex(minhaTabNav.selectedIndex);
								break;
						case 2:
								Alert.show(TabManager.getUniqueTab("001").toString());
								break;
					}
			}
		]]>
	</mx>
	<mx :Array id="arr">
			<mx :Object label="Criar Aba"/>
			<mx :Object label="Deletar Aba" />
			<mx :Object label="Pegar Id da Aba"/>
	</mx>
	<mx :TabNavigator id="minhaTabNav" width="695" height="375" x="213" y="67">
		</mx><mx :Canvas label="" width="100%" height="100%">
		</mx>
 
 
	<mx :ButtonBar itemClick="switchBotoes(event)" id="btns" dataProvider="{arr}" x="213" y="20">
	</mx>

Classe para adicionar à sua biblioteca

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package br.absolutobrasil.managers
{
    /**
    * 	http://www.mozilla.org/MPL/
        THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT
        ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
        BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
        FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  ALSO, THERE IS NO WARRANTY OF
        NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT.  IN NO EVENT SHALL MACROMEDIA
        OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
        EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
        PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
        OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
        OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF
        ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        *
        * Parte original http://coenraets.org/blog/
        * Modificações - http://www.igorcosta.com
 
	*/
	import mx.containers.TabNavigator;
	import mx.core.Container;
	import mx.events.ChildExistenceChangedEvent;
 
	public class TabManager
	{
		/**
		 * @Constructor
		 *
		 */
		public function TabManager()
		{
		}
 
		private static var _tab:TabNavigator;
 
		private static var uniqueTabs:Object = new Object();
 
		/**
		 * Seta o manager ao valor de um TabNavigator existente na aplicacao para iniciar as operacoes
		 * @param tabNavigator
		 *
		 * @example of uses:
		 * <listing version="3.0">
		 *              import br.absolutobrasil.managers.*;
		 * 				var minhaAba:TabNavigator = new TabNavigator();
		 *              private function init():void {
		 *                  TabManager.tabNavigator = minhaAba;
		 *              }
		 * </listing>
		 *
		 */
		public static function set tabNavigator(tabNavigator:TabNavigator):void
		{
			_tab = tabNavigator;
			_tab.addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE,
				function (event:ChildExistenceChangedEvent):void
				{
					for (var uniqueId:String in uniqueTabs)
					{
						if (uniqueTabs[uniqueId] == event.relatedObject)
						{
							uniqueTabs[uniqueId] = null;
							return;
						}
					}
				});
		}
		/**
		 *  Cria uma nova Aba
		 *
		 * @param tabClass - o alvo ou componente que será criado
		 * @param label - Label que aparecerá na aba;
		 * @param uniqueId - Caso você queira definir um id único para a aba
		 * @return uma nova aba criada ao container posicionado como target
		 *
		 */
		public static function createNewTab(tabClass:Class,label:String='', uniqueId:String=null):Container
		{
			if (uniqueId && uniqueTabs[uniqueId])
			{
				_tab.selectedChild = uniqueTabs[uniqueId];
				return uniqueTabs[uniqueId];
			}
 
			var tab:Container = new tabClass();
 
			if (uniqueId)
			{
				uniqueTabs[uniqueId] = tab;
			}
 
			_tab.addChild(tab);
			_tab.label = label;
			_tab.selectedChild = tab;
			return tab;
		}
		/**
		 *Seta um id Unico para a aba desejada, passando obrigatoriamente o id que você deseja setar e o alvo que receberá.
		 * @param uniqueId
		 * @param tab
		 *
		 */
		public static function setUniqueTab(uniqueId:String, tab:Container):void
		{
			uniqueTabs[uniqueId] = tab;
		}
		/**
		 * Remove a aba desejada.
		 * @param tab
		 *
		 */
		public static function removeTab(tab:Container):void
		{
			_tab.removeChild(tab);
		}
		/**
		 *Remove a aba passando a posicao dela necessária, caso não queria controlar isso por id.
		 * @param index
		 *
		 */
		public static function removeSelectedTabByIndex(index:int):void {
			_tab.removeChildAt(index);
		}
		/**
		 * Remove todas as abas existentes no TabNavigator
		 * @param tabNavigatorTarget
		 *
		 */
		public static function removeAllTabs(tabNavigatorTarget:TabNavigator):void {
				_tab = tabNavigatorTarget;
				_tab.removeAllChildren();
		}
		/**
		 *Pega o Id único da aba desejada, não precisa selecionar.
		 * @param uniqueId
		 * @return
		 *
		 */
		public static function getUniqueTab(uniqueId:String):Container
		{
			return uniqueTabs[uniqueId];
		}
	}
}
Actionscript Frameworks/ AS 3.0/ Flash/ Flash CS 3/ Flex/ Flex 3/ Flex 3 Open-Source/ Flex Componentes/ frameworks/ Labs

Componente Google Maps para Flex 3

Eu só tinha anunciado essa notícia no Blog em inglês. E cometi o erro de não publicar aqui também na versão Brasileira.

O Componente mapas do google para o Flex aka(GoogleFlexMaps). Eu até tinha publicado a tão recém e aguardada obra do Google para plataforma Flash Player, tornando assim usar seus serviços tão htmlzados.
Em fim, Vocês pode usar o componente que torna a sintaxe bem mais fácil, bem mais completa ao ponto de vista de desenvolvimento Flex.

1
2
3
4
5
6
7
8
< ?xml version="1.0" encoding="utf-8"?>
<mx :Application xmlns:google="com.igorcosta.*"  xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 
    <google : GoogleFlexMap
      key="sua chave de desenvolvedor"
      width="100%" height="100%"/>
 
</mx>

E quanto aos desenvolvedores Flash? Eu também pensei neles e fiz uma alteração no componente .swc que pode aceitar dentro do Flash. Basta apenas usar uma instancia nova. Porém não garanto 100% perfeição em todos os recursos que o Google Maps funciona, para isso indico o SDK padrão do Flex.

Baixe aqui o .swc para seus projetos tanto em Flex quanto Flash.

Veja aqui a documentação do Componente* ( em ingles)

Caso você seja curioso ou quer o código fonte por simplesmente por gostar de fazer hacks,

Boa sorte em seus uso.

Actionscript/ AS 3.0/ Dicas/ Flex/ Flex 2 Open-source/ Flex 3/ Flex 3 Open-Source/ Open-source

28 projetos open-source que você deveria explorar na hora de desenvolver

Em minha busca por aperfeiçoar o absolutoBrasil, achei uma quantia bem interessante de projetos não tão conhecidos por alguns desenvolvedores e gostaria de compartilhar com vocês, cada um deles possui uma ótima quantia de código em actionscript 3.0 que vai te ajudar a melhorar ou não perder tempo na hora de desenvolver.

http://code.google.com/p/skovalyov/
http://code.google.com/p/beni-as3-library
http://code.google.com/p/flexforum
http://code.google.com/p/mediacorelib/
http://code.google.com/p/xpath-as3/ ( Love that one)
http://code.google.com/p/flexstuff/
http://code.google.com/p/danielhai/
http://code.google.com/p/nobunaga
http://code.google.com/p/xpresso-flex/
http://code.google.com/p/blindside
http://code.google.com/p/flexundoredo/
http://code.google.com/p/cani-mindmap
http://visgraph.cs.ust.hk/MoXi/
http://code.google.com/p/lafabrick/
http://code.google.com/p/peoples/
http://code.google.com/p/as3libs/
http://code.google.com/p/flex-richtexteditor-html-utils/
http://code.google.com/p/picasa-flex-api/
http://code.google.com/p/nascomaslib
http://code.google.com/p/fxadata
http://code.google.com/p/meebone/
http://code.google.com/p/activepoison
http://code.google.com/p/as3preferenceslib
http://code.google.com/p/coderia
http://code.google.com/p/geronimo-air
http://code.google.com/p/fx-windowbounds/
http://code.google.com/p/masapi/
http://code.google.com/p/asqlib/

AIR 1.0/ Dicas/ Flex 3/ Flex 3 Open-Source/ Flex 3 SDK

Flex 3 e Adobe AIR 1.0 lançados

Provavelmente no inicio dessa manha cerca de 1.400 blogs vão estar dando essa notícia. Como havia feito ontem um mistério. Nada mais era do que o tão aguardado lançamento final do Flex 3.0 com ( SDK, Build, Datavisualization) e o run-time final AIR 1.0.

Procurem desinstalar versões beta das tecnologias. Muita coisa foi renovada e tem um milhares de correções e novidades.

Veja mais aqui sobre o Flex 3.0 que vem com 2 versões a Standard e a Professional.

Veja mais aqui sobre o AIR 1.0 que pode ser usado com AJAX, Flex, HTML e Flash.

Em conjunto a isso, saiu finalmente o resultado do que eles estavam aprontando em relação a tornar o Flex SDK Open-source.

Dicas/ Flex/ Flex 2 e Java 5/ Flex 3/ Flex 3 Open-Source/ Live Cycle/ Notícias/ Open-source

BlazeDS alternativa open-source da Adobe para o LiveCycle DataServices

O BlazeDS é uma alternativa que a Adobe está liberando hoje para criar aplicações com push de dados e remoting itens fundamentais que existem no LiveCycleDS via RMTP.

Porém o BlazeDS não faz uso do RTMP mais sim um protocolo específico foi criado para ele já que o grande segredo de produtos como LiveCycleDS e FMS são vindos do RMTP.

Esta é uma das grandes notícias para a comunidade Flex mundial, já que temos visto outras alternativas open-source não pró Adobe sendo lançadas como é o caso do WebOrb e GraniteDS.

O BlazeDS é licenciado pelo LPGL v3. e terá seu código fonte disponível no primeiro trimestre de 2008.

Quem já tem uma versão developer do LiveCycle vai poder usar o BlazeDS gratuitamente para projetos comerciais usufruindo do poder do Remoting e do DataServices para push de dados de forma que é 10x mais rápido que qualquer SOAP ou XML.

Alguns já até testaram com o EventGateway do ColdFusion 8 standard e funciona bem rápido.

Para quem queser baixar a versão gratuita do BlazeDS, só ir na página do Labs da Adobe.

Christophe Coenraets, publicou sua visão sobre o novo lançamento da Adobe e os futuros planos.

Hoje o BlazeDS é distribuído apenas para a plataforma Java, a Adobe espera que depois que o código fonte estiver disponível, BlazeDS possa suportar outras linguagens.
Atualmente ele tem distribuições que foram testadas e funcionais para o Tomcat.

Caso você achar algum bug use o JIRA bugbase para reportá-lo.

Flex 3/ Flex 3 Open-Source/ Flex 3 SDK/ Flex para Linux

Flex Builder 3 agora também no Linux

Notícia quentíssima, a nova geração da ferramenta Flex Builder 3 codename “moxie” está sendo portada para o Linux, distribuída como versão plug-in ela já vem com inúmeros recursos agregados a ferramenta. Estando em alpha no Labs, essa versão trás vários wizards e parte de todo intelicense (out generete) de código que no Windows é suportado, porém existe uma lista de itens que ainda não é suportado nessa versão. Como por exemplo:

* Design view
* States view
* Refactoring
* AIR support
* Automated testing
* Data Wizards
* ColdFusion Extensions to Flex Builder
* Web Services introspection
* Profiler
* Data Visualization components

Entretanto nada está perdido por que por exemplo o suporte a debug já está habilitado.

O mais importante é que a Adobe ouviu os pedidos tanto aqui no Brasil quanto do resto do mundo para suporta uma versão sem emuladores, sem wine, sem adl sem nada.

Se eu fosse você começava a baixar e testar, eu acabei de baixar a minha versão e irei usar com meu Ubuntu, James Ward também me alertou e em seu blog que o suporte à aplicações AIR podem ser portadas usando e emuladas pelo Wine.(Ótimo não?).

Clique aqui e saiba mais,ou melhor baixe logo e ajude a Adobe criar uma versão redonda para o Linux.