Ultimas Entradas »
Ultimos Comentários »
Entradas Populares »

Silverlight, 1 ano depois, será um falhanço??

Escrito por Mário Santos em Maio 31, 2008 – 11:08 am

Li um artigo bem interessante no http://visualrinse.com em que no post explica porquê que o silverlight será um falhanço. Embora eu até tenha ficado bem impressionado com o silverlight, tenho que admitir que realmente o silverlight não se está a ver tanto como isso na net….e ainda são poucos os desenvolvedores.

Este artigo fala de alguns pontos bem interessantes que vou passar a comentar/traduzir/enumerar:

 

Sem IDE:

No momento, ainda só existe uma maneira de compilar conteúdo Silverlight: Windows. Se comparar-mos com o seu mais recente competidor, o Flex, pode ser compilado em qualquer plataforma.

Sem Plugin no Linux:

Mais uma vez, a microsoft está a fazer-se de "grande", e discriminando literalmente os utilizadores linux, que ainda não dispõem de um plugin para linux. Tirando esta não proprietária e que ainda não suporta mp3 ou video.

Penetração no mercado:

Actualmente nem sequer existem dados, e os que existem são muito dúbios, sobre a penetração do plugin no "mercado".

Crescimento do mercado de conteúdos para telemóvel/PDA’s:

Eu, tal como o autor, ainda não estou muito familiarizado com o desenvolvimento para dispositivos portáteis/pda’s. Parece que a Microsoft anunciou o silverlight mobile, mas um ano depois ainda nada se sabe….

Maturidade:

Como é uma tecnologia nova, ainda pouco madura, logo poucos desenvolvedores e poucos adeptos, ainda por cima é código fechado e pouco suporte por parte da comunidade de programadores.

Concorrência:

CS3, apenas 3 letras que marcam toda a diferença, a Microsoft ainda não possui qualquer concorrente à altura, nem parece estar a pensar nisso. O seu principal concorrente é a Adobe, sem duvida alguma que o anuncio do Silverlight veio abanar a maneira de pensar da adobe, que lança releases atrás de releases e que acabam por abafar um pouco a Divulgação do Silverlight, será esse o objectivo?

 

Vamos esperar, porque esta concorrência será sempre saudável, e esperar que a Microsoft muda a sua politica, mas ainda não vejo bons mares para o lado do silverlight, ainda mais agora com o novo anuncio do Flash Player 10 e as suas estrondosas características.

Algum programador microsoft silverlight por estes lados?

Alguns sites de suporte?

Venham essas respostas.

Abraço.


Escrito em Análises, Duvidas, Notícias | 5 Comentários »

Flash Player 10. Tutorial: File Ref., 3D e DSG.

Escrito por Mário Santos em Maio 20, 2008 – 7:24 am

Ainda à poucos dias saiu para p publico a primeira beta do flash player 10, e logo de seguida a primeira build do SDK do flex para compilar aplicações com “target” exclusivo para o flash 10.

E como era de esperar, esta versão traz bastantes melhorias que meio mundo de programadores estava à espera e como feedback desses mesmos programadores começam já a surgir os primeiros tutoriais e exemplos, e nada melhor do que screencast’s.

Mais uma vez, alguém teve a brilhante ideia de os colocar no gotoandlearn.com, e pelo que vi estão mesmo muito bons.

Estão disponiveis 3 videos para visualização online, bem como o seu download e o download dos seus ficheiros source.

- Um sobre DSG (Dinamyc Sound Generation); Criação de som dinâmico. Que nos explica como trabalhar com os métodos desta nova melhoria que permite criação e manipulação “on-the-fly” de ficheiros áudio.

- Outro sobre as novas características 3D nativas disponíveis no flash player 10, com um

- E por final, (o que eu mais aguardava), um vídeo a explicar como funciona o fileReference, com um exemplo de como abrir, editar e guardar um ficheiro de texto directamente no flash sem recorrer a qualquer componente externo.

Para poderem executar estes exemplos devem ter o flash player 10 (devem desinstalar as versões anteriores).

Aqui vão os links:

Dinamyc Sound Generation - online - download - ficheiros fonte

3D - Operações - online - download - ficheiros fonte

File Reference - online - download - ficheiros fonte

Flash Player 10 “astro” - download - notas da versão

Flex SDK, Flash 10 Support - download (build 3.0.1.1728)

E Então?

Um primeiro feedback a esta nova versão?

Abraço!


Tags: , , , , , , , , , , ,
Escrito em Action Script & MXML, Air, Duvidas, Flash, Flex, Uncategorized | Sem Comentários »

Ajax vs Flex - 15 factores de decisão.

Escrito por Mário Santos em Maio 14, 2008 – 10:09 am

Na hora de desenvolver uma Ria, muitos se questionam qual a tecnologia a usar. Para os amantes de HTML, efeitos simples e cumprimento de padrões SEO, sem duvida o Ajax se torna uma opção viável, mas para os amantes de fiabilidade, rapidez, suporte e uma interface bem agradável, o flex é a opção.

 

Não vou defender nenhuma destas tecnologias (ou talvez vá!) mas vou colocar algumas características bem interessantes dos 2, retiradas de alguns sites, comentários e artigos.

Vou mostrar alguns pontos, em ambas as tecnologias conforme a necessidade e deixarei a minha analise no final:

 

1. Animação

Em muitas das ria’s os efeitos são na realidade uma mais valia.

AJAX: Pouco suporte limitado apenas a efeitos lineares.

FLEX: Um grande suporte nativo, bem como possibilidade de personalização.

2. Manipulação de imagens

Possibilidade de manipulação, alteração, edição e efeitos

AJAX: Algum suporte, dependendo do browser e de bastante código server-side

FLEX: Suporte nativo.

 

3. Suporte a HTML.

AJAX: Suporte nativo.

FLEX: Suporte muito limitado, não permitindo tabelas, css, frames ou javascript

 

4. Video e audio streaming

AJAX: Sem suporte nativo, dependendo de plugins de terceiros

FLEX: Suportado, embora pouco usado. Suporta também captura de câmaras ou microfones do utilizador.

 

5. Desenvolvimento, programas e custos.

AJAX: Bastantes aplicativos livres como Google Toolkit, Echo2, jsLINB ou Rico. Existem alguns pagos, mas como são tantas as opções livres não vou nomear.

FLEX: Flex Builder Eclipse Plugin ($500 US ~ 325 €), Flash CS3 ($700 US ~ 450 €) ou um qualquer editor de texto que requer grandes conhecimentos do seu método de programação.

 

6. Runtime, Execução.

AJAX: Alguns pontos têm que ser programados para os diferentes browsers (alguns problemas de cross-browsers)

FLEX: Uma plugin única (flash player, que se estima que esteja instalada em cerca de 85/90% dos computadores pessoais) que permite cross-browsing e cross-plataform sem problemas.

 

7. Código e desenvolvimento em equipa. Linguagem orientada a objectos.

AJAX: Suporta linguagem OO em algumas frameworks, mas é sempre compilada a uma estrutura base. A maior parte de librarias não são compatíveis com outras o que causa muitos problemas.

FLEX: Compatibilidade ECMAScript, altamente suportado em aplicações WEB. O seu código é facilmente organizado e partilhado, compilado sobre a base de Action Script 3.

 

8. Suporte a graficos vectorizados.

AJAX: Já suportado via VML nas recentes versões do IE e apenas suportado em alguns browsers via SVG.

FLEX: Suportado nativamente (AS3).

 

9. Segurança e seu código.

AJAX: & FLEX: Ambos utilizam (e estão dependentes) da segurança da sandBox dos browsers.

AJAX: O seu código pode sofrer violações de terceiros visto existirem alguns reticências quanto à sua segurança.

FLEX: O código dificilmente será violado, pelo menos nas partes criticas, graças à (já por defeito) distorção do código fonte na compilação, bem como a possibilidade de encriptação.

 

10. Controlo DOM.

AJAX: Suportado nativamente.

FLEX: Não suportado, dependendo sempre de chamadas externas  a objectos javascript.

 

11. SEO (Optimização para motores de busca).

AJAX: Suporte amigável aos browsers, embora alguns browsers não sejam capazes de seguir links em javascript. Se parâmetros SEO tiverem que ser cumpridos, o AJAX deve ser cuidadosamente programado.

FLEX: Suporte limitado. As “normas” SEO podem ser cumpridas recorrendo a META TAGS e publicação separada do conteúdo.

 

12. Acessibilidade.

AJAX: Muito pouca, bem como poucas frameworks anunciam boas praticas de acessibilidade.

FLEX: Acessibilidade compatível com as normas 508

 

13. Open Source / Código Aberto.

AJAX: Existem muitas lincenças, desde livres a comerciais, variando de framework para framework.

FLEX: O flex e action script são código aberto, e até à pouco tempo a maquina virtual do flash (FVM) era fechada. Recentemente aberta como indica no projecto Adobe Open Screen.

 

14. Extensibilidade (componentes terceiros).

AJAX: Como o ajax é uma extensão do HTML e Javascript, a framework é por norma extensível.

FLEX: Os seus componentes são facilmente extensíveis, bem como a possibilidade de criação de novos. A plugin para o eclipse é facilmente extensível através de um grande número de extensões.

 

15. Suporte.

AJAX: O ajax é médiamente suportado, bem como as suas frameworks, com alguns artigos e tutoriais, embora muito ambíguos devido à variedade de frameworks.

FLEX: Grande suporte por parte da adobe, bem como pela crescente comunidade de programadores. A framework está altamente documentada com exemplos na própria pagina da adobe bem como os seus exploradores (Effects, Components e Styles)

 

Resumo final, como li num artigo bem interessante de onde retirei grande parte destes comparativos, depende muito do objectivo da RIA, embora concorde bastante com a seguinte frase:

“Use AJAX for tactical improvements and Adobe Flex for strategic implementations”

Onde se pode entender que o AJAX deve ser usado quando a nossa RIA necessita de updates constantes e a Ria em si é leve e pequena. Pode ser usado para acrescentar alguns “pontos de RIA” a pequenas aplicações/páginas. Mas deve ter em atenção um possível futuro de abandono de suporte de algumas frameworks, bem como uma possível reformulação dos browsers e seu suporte.

O Flex deve ser opção quando o “cross-browsing” deve ser um factor decisivo, bem como em aplicações medias-grandes. Como existe uma grande marca por detrás (Adobe), é de esperar uma elevada e crescente continuidade do suporte, muito graças à grande capacidade do Action Script e da penetração do Flash Player no mercado, ainda mais agora com a estratégia Open Screen da adobe. A possibilidade de modo offline, graças ao AIR, torna o flex muito versátil.

Nota final e opinião:

Com tudo isto que li, traduzi e aqui escrevi…volto-me mesmo para o desenvolvimento em flex, porque afinal de contas é uma paixão minha.

Espero que estas informações sejam úteis na hora critica de decidirem a linguagem/framework da vossa RIA.

 

image    Este artigo está disponivél em pdf  para download.


Tags: , , , , , , , ,
Escrito em Action Script & MXML, Air, Ajax, Duvidas, Flex, Notícias | 4 Comentários »

Flex Sistema Imobiliário - Detalhes do Código

Escrito por Mário Santos em Abril 2, 2008 – 7:42 am

A pedido do José Carlos Fonseca, aqui ficam algumas explicações e detalhes de partes de código usadas no meu sistema imobiliário, assim ajudo-o e posso ajudar mais gente interessada.

P: 1.Na primeira página surge uma imagem “loading” com efeito como fazes?

R: 1. O efeito loading é conseguido atravéz da substituição do “loader” normal do flex por uma imagem, podes ver aqui http://www.onflex.org/ted/2006/07/flex-2-preloaders-swf-png-gif-examples.php onde encontras gif, png, swf e exemplos com código fonte. Basta copiares para a pasta da tua aplicação e no <mx:Application …> colocares preloader=”preload.CustomPreloader”. Eu fiz umas pequenas implementações baseadas nesse exemplo, mas se se usar assim funciona na mesma.

P:2.Pagina de login: efeito de erro, “checking login” e a barra azul

R: 2.A barra azul é uma progressBar:

1: <mx:ProgressBar visible=”false” x=”112″ y=”175″

2: labelPlacement=”left” label=” “ width=”187″

3: indeterminate=”true” showEffect=”{Fade}” hideEffect=”{Fade}”

4: id=”progressStatus”/>

que é activada (progressStatus.visible=true;) quando inicias o pedido para verificar o login no remoteObject (send) e desactivada quando recebes a resposta do remoteObject (result). (progressStatus.visible=false;)

quando recebe o resultado (negativo, o user e pass não condizem) faz o seguinte:

blurRed.target=panelLogin;

blurRed.play();

onde o panelLogin é o nosso panel de login e o blurRed é o seguinte efeito :

1: <mx:Glow id=”blurRed” duration=”700″

2: alphaFrom=”1.0″ alphaTo=”0.0″

3: blurXFrom=”0.0″ blurXTo=”20.0″

4: blurYFrom=”0.0″ blurYTo=”20.0″

5: color=”0×990000″ />

Quanto ao checking login é o mesmo sistema que em cima, activar ou desactivar a progressStatus já que o Flex ainda não implementa o remoteObject com um event progress.

P:3.Pagina principal: efeito nos botões no lado esquerdo

R:Quanto aos botões do lado esquerdo, o efeito passa pelo mesmo do erro do painel login, os efeitos são:

1: <mx:Glow id=”blurBlueIn” duration=”700″

2: alphaFrom=”1.0″ alphaTo=”0.0″

3: blurXFrom=”0.0″ blurXTo=”20.0″

4: blurYFrom=”0.0″ blurYTo=”20.0″

5: color=”0×900aeef” />

6: <mx:Glow id=”blurBlueOut” duration=”700″

7: alphaFrom=”0.0″ alphaTo=”1.0″

8: blurXFrom=”20.0″ blurXTo=”0.0″

9: blurYFrom=”20.0″ blurYTo=”0.0″

10: color=”0×00aeef” />

e no botão basta chama-los nos events mouseOver mouseOut:

1: <mx:Button width=”85″ height=”73″ label=”button ADD” id=”add”

2: icon=”@Embed(source=’imgs/Home_add.png’)” x=”10″ y=”91″

3: fillColors=”[#000000,#000000]“ fillAlphas=”0″ borderColor=”#525151″

4: color=”#FDFBFB” themeColor=”#535C75″ textRollOverColor=”#2667B0″

5: useHandCursor=”true” mouseOver=”{buttonOver(add)}”

6: mouseOut=”{buttonOut(add)}” click=”{changeTo(’bsf1′)}”

7: buttonMode=”true”/>

onde tens: a função buttonOver(id_do_botão) e buttonOut(id_do_botão):

1: private function buttonOver(a:Button):void{

2: blurBlueOut.target=a;

3: blurBlueOut.play();

4: }

5: private function buttonOut(a:Button):void{

6: blurBlueIn.target=a;

7: blurBlueIn.play();

8: }

e tens os teus efeitos feitos :P

P:4.Como adicionas uma foto na BD?

R:A foto é adicionada através do php via amfphp, no Flex apenas são seleccionadas as fotos e enviadas via post para um script upload.php que trata do envio para o servidor, e devolve as localizações das fotos que ficam guardadas num array, quando termina de enviar todas as fotos, é chamada uma função do remoteObject que guarda os caminhos das fotos na base de dados (optei por usar caminhos relativos em vez de colocar a foto directamente na base de dados, ja que as fotos podem ser de grande tamanho o que ia encher a base de dados).

Quanto ao sistema de upload, podes ver aqui um sistema parecido com o que fiz (com código):

http://weblog.cahlan.com/files/file_uploads/FileUpload.html

onde o upload.php será algo parecido com: http://www.msdevstudio.com/mywork/upload.rar

P:Agora fora da tua aplicação, eu tenho uma tabela com varios itens e quero que apareçam numa pagina cada um como botão, é possível?? E no caso de essa pagina ter um numero predefinido de botões como fazer paginação?

R: Agora o monstro das respostas (nota que escrevi isto sem testar, terás que alterar muitos dos campos, mas o essencial está lá: )

Parte I: Botões em cada elemento da “tabela”

Quanto aos botões, podes colocar em cada linha da datagrid ou qualquer elemento de listagem um qualquer outro componente, sendo o mais comum, checkbox, listbox, button ou radioButton, ve isto:

http://www.returnundefined.com/files/ItemRendererExample/ (codigo fonte)

http://www.adobe.com/devnet/flex/quickstart/using_item_renderers/

mesmo parecido com o que deves querer:

http://axel.cfwebtools.com/…/UsingTheItemRendererWithADataGrid.html

Estes links têm o view source activo.

Parte II: E no caso de essa pagina ter um número predefinindo de botões como fazer paginação?

Qaunto a fazer a paginação, isso depende muito do tipo de sistema que tens, se tens php+mySql podes limitar (LIMIT) a listagem a apenas o que queres, basta criares uma variavel publica para guardares a iniciação da listagem e outra com o número de entradas por pagina:

1: public var inicio:Number = 0;

2: public var porPagina:Number = 10;

3: //ao ser chamado o Remote objecto, tens que dizer ao php para contruir o pedido sql com as limitações.

4: //no flex por exemplo o botão seguinte e o anterior a chamarem a Função goPag(”seguinte”); ou goPag(”anterior”); (consoante o botão.)

5: private function goPag(onde:String):void{

6: if(onde==“seguinte”) {

7: inicio=inicio+10;

8: }

9: if(onde==“anterior”) {

10: inicio=inicio-10;

11: if(inicio<=0) inicio=0;

12: }

13: remoteObjectBusca.funcaoBusca.arguments.inicial=inicio; //redefinimos os valores

14: remoteObjectBusca.funcaoBusca.arguments.porPag=porPagina; //redefinimos os valores

15: remoteObjectBusca.funcaoBusca.send();

16: }

onde o remoteObject será algo como (amfphp):

1: <mx:RemoteObject id=”remoteObjectBusca” destination=”amfphp” source=”servico.class”>

2: <mx:method name=”funcaoBusca” result=”{lidaDados(event)}”>

3: <mx:arguments>

4: <inicial>

5: {”0″}

6: </inicial>

7: <porPag>

8: {”10″}

9: </porPag>

10: </mx:arguments>

11: </mx:method>

12: </mx:RemoteObject>

e onde a função do remote object em php receberá esses parametros e devolverá a matriz de dados (as Object):

1: function funcaoBusca($inicial, $porPag) {

2: if(!inicial || $inicial==NULL) $inicial=0;

3: if(!porPag || $porPag==NULL) $porPag=10;

4:

5: $con=mysql_connect(“host”,“user”,“pass”);

6: $sel=mysql_select_db(“Bdados”);

7: 

8: $sql=“SELECT * FROM `tabelaDados` LIMIT “.$inicial.“, “.$porPag;

9: $res=mysql_query($sql);

10: 

11: if($res) return mysql_fetch_array($res);

12: else return “Error”;

13: }

depois só temos que criar no flex a funçâo para ler os dados:

1: [Bindable]

2: public var dadosBusca:Object;

3: pivate function lidaDados(event:ResultEvent):void {

4: if(event.result==“Error”) {

5: //erro ao buscar os dados

6: }

7: else dadosBusca=event.result as Object;

8: // a partir daqui tens os dados acessiveis na variavel dadosBusca

9: // para acederes a cada elemento usas dadosBusca[linha].campoDaBd;

10: }

Nota: Este código da ultima resposta foi elaborado sem ter sido testado, por isso não sei se contem alguns erros.. mas basta testares, não sei se seria bem isto que querias.

Bom, acho que consegui explicar tudo.. dá para perceber?

Coloquei as respostas num novo post, já que era uma resposta enorme, e assim pode ajudar mais gente.

Abraço.


Escrito em Action Script & MXML, Duvidas, Flex, PHP, RIA's Geral, Source Code, Tutoriais | 39 Comentários »

Adobe Flex - Sistema de estatisticas de visitantes

Escrito por Mário Santos em Abril 1, 2008 – 9:10 am

Sempre achei muito interessante podermos saber o máximo de informações sobre os visitantes do nosso site/aplicativo, além disso com esses dados podemos na realidade perceber de onde vem o visitante, que sistema operativo, resolução de ecrã, versão do flash, país etc….já que com estas informações podemos optimizar o nosso site/aplicação.

Uma possibilidade é usar o google analytics, mas acabáramos por andar um pouco perdidos com a API, interpretação da mesma e além disse em sites com um número elevado de visitas o google analytics será pago… o que decidi fazer, pode ser feito com qualquer outro sistema de estatísticas openSource. No meu sistema de imobiliária ( http://msdevstudio.com/blog/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis/) inicialmente estou a utilizar esse sistema, embora terei que o alterar se a versão for para comercializar devido à licença GPL debaixo da qual foi disponibilizado o sistema que voou falar.

O sistema em si é o Stats Indexer 1.3 disponivel a correr em: http://members.lycos.nl/promajo/statsindexer.php

Tudo o que tem que fazer é o seu download em: http://members.lycos.nl/promajo/dl/StatsIndexerJDL.rar e instalar o sistema normalmente na mesma directoria onde estará a pagina a ser monitorizada (primeiro configurar e criar as tabelas), depois apenas inserir numa pagina comum (Geralmente na que corre o swf, index.html ?, para obterem o máximo partido do script, o vosso ficheiro (.swf) deve ser inserido numa pagina .php e o servidor deve ter suporte a php ) o primeiro código disponível no index-readme.txt.

Depois basta acederem ao vosso index.php 3 ou 4 vezes para “encher” dados na base de dados e ver as estatísticas correndo o ficheiro statsindexer.php

O sistema em si está a funcionar, mas como queria esses dados no Flex, teria obrigatoriamente que o passar por xml ou usando o amfphp. Foi esta segunda opção que usei. Deu algum trabalho mas lá acabei por criar um serviço para o amfphp o qual disponibilizo para download, este serviço está pronto a usar, bastando coloca-lo na pasta services do amfphp e usa-lo para obter os dados armazenados pelo stats Indexer. (Devem alterar no final do stats.php as informações de login da base de dados bem como o nome da mesma).

Basta darem uma vista de olhos nas funções deste meu serviço ou usarem o browser dos services do amfphp e testarem o servico stats para ver como os dados são devolvidos, depois basta criarem o serviço no flex para lidar com esses mesmo dados.

Lá para o final de semana se tiver um pouco de tempo faço um exemplo de como recuperar esses dados e os colocar num gráfico em flex.

Download Stats Indexer: http://members.lycos.nl/promajo/dl/StatsIndexerJDL.rar

Download Service: stats.rar

Download amfPHP: http://sourceforge.net/project/showfiles.php?group_id=72483#files

Espero que ajude “muita” gente :)

Qualquer duvida, critica ou sugestão basta comentarem.

Abraços.


Tags: , , , , , , , , ,
Escrito em Action Script & MXML, Duvidas, Flex, HTML, XHTML, CSS, Java Script, PHP, RIA's Geral, Source Code, Tutoriais | Sem Comentários »

Flex dataGrid - Operações no dataProvider.

Escrito por Mário Santos em Março 25, 2008 – 6:34 pm

Deste feita fiz um exemplo para tentar explicar a quem tem duvidas sobre como efectuar operações (CRUD) numa datagrid. O exemplo começa por mostrar como criar um dataProvider para uma dataGrid, e de seguida fazer variados tipos de operações como:

-Alteração dos dados de determinada linha e coluna.

-Apagar a linha seleccionada

-Recriar automaticamente e aleatoriamente um novo dataProvider

Neste exemplo são usadas funções que podem ser usadas para qualquer outro dataProvider, devido ao reaproveitamento das funções, podem também ser observados certos exemplos de como “encher” uma dataGrid e trabalhar com o seu dataProvider (arrayCollection) acedendo aos seus campos, como o dataProvider é “dinamico/Bindable” quando ele é actualizado os dados são actualizados automaticamente na dataGrid.

É mais um exemplo bastante simples, mas que poupa muitas dores de cabeça, já que bastantes vezes se vê pessoas a tentarem obter determinado campo da dataGrid através dela mesmo e não do seu dataProvider. Neste exemplo foram usadas alguns “truques” menos comuns para lidar com o arrayCollection.

As funções foram optimizadas ao máximo para serem reaproveitadas em qualquer outra dataGrid com o mesmo dataProvider poupando assim código desnecessário numa aplicação media-grande.

Podem ver o exemplo online aqui com o view source activo

Ou ver o código fonte aqui

Foi útil?

Abraço.


Tags: , , , , , , , , , , , ,
Escrito em Air, Duvidas, Flex, RIA's Geral, Source Code, Tutoriais | 3 Comentários »

Manifesto Flex Brasil

Escrito por Mário Santos em Março 19, 2008 – 1:25 pm

Hoje venho promover uma excelente iniciativa do autor do blog dclick que já chegou aqui ao outro lado do atlântico (Portugal). Como achei a iniciativa bastante interessante até porque muita da informação conseguida em português provem mesmo das listas e blogs brasileiros, nada como contribuir também um pouco depois do “passo a bola” do Stefan Horochovec decidi acrescentar a minha constribuição para o manifesto e comunidade em continuação ao seu post em http://www.horochovec.com.br

Antes de mais cliquem para saber o que é o manifesto brasil?

Aqui vai a minha contribuição:

Post: Adobe Flex a partir do zero
Post: Adobe Flex a partir do zero parte II
Post: Adobe Flex a partir do zero parte III

Por que ele é relevante: Visto a comunidade de língua portuguesa estar carente de bons artigos sobre iniciação em flex, com este tutorial pretendo incentivar os leitores a iniciarem-se no mundo do flex. Os documentos explicam passo a passo a instalação, configuração, componentes, visuais e actualmente na parte III já explicado criação e manipulação avançada no Flex. Em desenvolvimentos as partes IV, V, VI e VII.
A quem se destina: A todos os interessados no Flex, principalmente iniciantes mas também a utilizadores mais profissionais e/ou alunos de cursos.

Post: Adobe Flex Skins - Mudando de visual facilmente
Por que ele é relevante: Explica como alterar o visual dos nossos componentes/aplicativos elaboraos em Flex de uma maneira simples com recurso ao pacote CS (Ilustrador, Photoshop, Fireworks) e declarações css.
A quem se destina: Aos interessados em dar um aspecto mais original à sua aplicação.

Post: Personalização do Flex Alert Box em Action Script
Por que ele é relevante: Aborda praticamente todos os parametros “graficos” mais importantes para personalizar o tipico alert box do flex, incluido inserção de icons e modificação do layout totalmente via action script.
A quem se destina: A quem deseja dar um aspecto mais “profissional” aos seus “Alert.show();” e quem desejar saber como atribuir determinadas propriedades via action script quando elas não existem no editor gráfico.

Post: Exemplo de icon em botão
Por que ele é relevante: Aborda diferentes métodos para atribuir/alterar um icon num botão por via de action script com recurso a declarações Class ou CSS.
A quem se destina: Iniciantes que tentem perceber como atribuir determinadas propriedades via action script quando elas não existem no editor gráfico.

Post: Análise adobe Flex Buider 3
Por que ele é relevante: Expõe um problema de instalação do Flex Builder 3 quando já existe uma versão instalada e apresenta a devida causa-efeito-solução. Resume alguns pontos da beta 3.
A quem se destina: A quem tenha problemas de instalação de alguma versão/beta do Flex Builder 3

Post: Ria’s, onde encontrar suporte / tutoriais
Por que ele é relevante: Apresenta variados links que são muito uteis a quem deseja desenvolver em flex incluindo variados links para Flex Explorer’s.
A quem se destina: Iniciantes e não só.

Eu passo a bola para: Francisco Paulino aka Tofinha - www.tofinha.com.br

Abraço.


Tags:
Escrito em Action Script & MXML, Duvidas, Flex, Notícias, RIA's Geral, Tutoriais | 3 Comentários »

Boas práticas de programação em Action Script

Escrito por Mário Santos em Março 12, 2008 – 9:13 am

Como todos sabemos (ou devíamos) a questão de organização e reaproveitamento do código é algo bastante importante para as nossas aplicações, não só em action script mas também em todas as linguagens de programação.

Neste caso falo de action script 3, onde por vezes cometemos bastantes erros desnecessários principalmente ao criar as ligações dos nossos scripts/componentes com outros ou com o “stage” principal.

O João Saleiro do riapt.org escreveu um artigo bastante interessante e muito bem exemplificado sobre como evitar erros de programação e começa por nos indicar um exemplo de “best practices” quanto acedemos a propriedades/funções de/a vários objectos / movie clips.

Alem de indicar os erros mais comuns, indica as causas e soluções muito bem documentadas com código e exemplos.

Aconselho a leitura atenta deste artigo a todos os programadores action script , aqui fica o link para o post original:

www.riapt.org - boas práticas

Abraço.


Tags: , , , , , , , , , , , , ,
Escrito em Action Script & MXML, Duvidas, Flash, Flex, Source Code, Tutoriais | Sem Comentários »

Projecto Flex - Corrector ortográfico / Spell checker

Escrito por Mário Santos em Fevereiro 11, 2008 – 3:25 pm

Estou neste momento a desenvolver um projecto em Flex que consiste na criação de um corrector ortográfico sem recurso a qualquer ficheiro de dicionário (wordlist), mas sim tentando dissecar  o Google Web Toolkit e perceber realmente como funciona o seu sistema que está incorporado na toolbar para o firefox.

 

Inicialmente pensei que seria fácil, visto que pensar que existiria uma API para flash/Flex do Spell Checker do Google, mas enganei-me, e bem!

Andei a vasculhar pelas api’s do Google e seu código (maioritariamente java e/ou js e algum php) e o mais difícil foi encontrar o Script ou ligação que permitia a verificação de texto/palavra nos dicionários do Google, foi então que descobri uma coisa engraçada, o endereço https://www.google.com/tbproxy/ misturado no meio do código, claro que directamente este endereço não está disponível (nem esperava), depois de mais uns minutos encontrei o parâmetro "spell?lang=en" que ao adicionar ao endereço em cima já me "respondia". Tinha descoberto a pólvora!

 

Depois disto seria fácil, pensei eu…mas piorou, já que o endereço não aceitava parâmetros via URL (GET/POST)… Então, se o servidor me retornava XML, talvez se enviasse XML como POST poderia obter resposta.. fui vasculhar de novo no GWT (Google Web Toolkit) e lá encontrei as devidas instruções XML que seriam enviadas..

 

Voltei ao Flex e lá fiz o <mx:HTTPService> para ligar a esse endereço, e não é que funcionou…

Os verdadeiro problemas começaram quando coloquei a minha aplicação online, uma verdadeiro quebra cabeças:

Erro:

[RPC Fault faultString="Security error accessing url" faultCode="Channel.Security.Error" faultDetail="Destination: DefaultHTTP"]

Mas que raio era isto? tentei com o URLRequest,/URLVariables e outro erro, SandBox security error, depois de muito pesquisar percebi que o problema ainda era pior do que simples erros de código ou POST para o servidor.

O grande problema é que na realidade o Flash não deixa aceder a um endereço externo directamente, por exemplo o feed api ou o adwords. Parece que é mesmo o problema do sandbox / browser. Este problema seria facilmente contornável se o Google disponibilizasse  junto do seu servidor um crossdomain.xml que permitisse o acesso directo, mas parece que o Google insiste em tornar a vida difícil aos programadores Flex/action script.

Bom, estava num beco sem saída.. o que fazer??

Comecei a pensar como ultrapassar este problema, varias sugestões apontavam para o uso deste crossdomain.xml, o que acabou por estar fora de contexto, logo que outras opções tinha? talvez usar uma proxy no HTTPService do Flex, como indica em: Adobe Flex - Setting Proxy , mas coloquei essa hipótese fora de questão para já.

 

Arranquei para a possibilidade de fazer um Script php que fizesse a comunicação entre o Google e o Flex, já que era possível assim em alguns exemplos de outras api’s do Google.

 

Depois de alguns minutos dei com outro problema, ao usar o fsockopen(url:porta); reparei que o Google simplesmente não me respondia, mas porque?

Recapitulando:

abre o socket (consegui abrir), enviava os dados:

$dados="<post em XML>";

   $envia = "POST /tbproxy/spell?lang HTTP/1.1\r\n";
   $envia .= "Host: www.google.com \r\n";
   $envia .= "Content-Length: " . strlen($data) . "\r\n";
   $envia .= "Content-type: application/x-www-form-urlencoded\r\n";
   $envia .= "Connection: Close\r\n\r\n";

Simplesmente não me retornava nada.

 

Mais uma hora de volta disto e percebi que o problema estava    $envia = "POST /tbproxy/spell?lang HTTP/1.1\r\n"; deveria enviar HTTP/1.0 em vez de 1.1. A partir daí foi brincadeira de criança :)

Trabalho final, chamar o meu script php do Flex, enviar o pedido para correcção e receber os dados no Flex, a partir dai, encontrar as palavras com erros no texto e apresentar as devidas correcções.

 

Isto tudo parece muito simples, mas passei um dia de volta do sistema de comunicação com o Google.

Brevemente coloco aqui o resultado final :)


Escrito em Action Script & MXML, Air, Análises, Duvidas, Flash, Flex, Notícias, PHP, RIA's Geral, Tutoriais | Sem Comentários »

Personalização do Flex Alert Box em Action Script

Escrito por Mário Santos em Fevereiro 5, 2008 – 12:32 pm

Desta vez venho aqui mostrar um exemplo de personalização da típica Alert box do Flex (Alert.show();) mas em Action Script, este exemplo que mostro em baixo, utiliza a declaração de um Alert numa variável e a sua configuração por via de Action Script, antes de este mesmo Alert ser apresentado na aplicação.

Para já apenas disponibilizo alguns controlos de “estilo” que podemos personalizar na aplicação antes a apresentação, dos quais passo a apresentar:

  • Personalização da cor de fundo.
  • Personalização da cor do bordo/titulo.
  • Modificação do “alpha”/ transparência no fundo e titulo.
  • Inserção de um titulo e texto.
  • Controlo de botões a apresentar
  • Inserção e modificação de um ícone no Alert

Podem também ver no código fonte exemplos de utilização de:

-ArrayCollections
-Embed images declaradas como Class
-Utilização da função Switch();
-Utilização do AddChild();
-ComboBox e dataProvider.
-Algumas Propriedades do Alert como:
–setSyle (backgroundColor, borderColor, backgroundAlpha, borderAlpha)
–iconClass
–title
–text

Disponibilizo todo o código, devidamente comentado, para que possam perceber passo a passo o funcionamento da configuração de um Alert em Flex.

Ficaram de fora alguns parâmetros como o tipo de letra e sua cor, bordos, efeitos na apresentação e verificação de qual botão foi pressionado.

Aqui fica o exemplo:

 

Caso não consiga ver o swf clique aqui

Para ver em outra janela clique aqui

Código Fonte

Espero que seja útil.

Aguardo comentários.


Tags: , , , , , , , , , , , , , , , , , , , ,
Escrito em Action Script & MXML, Duvidas, Flex, RIA's Geral, Source Code, Tutoriais | 7 Comentários »