Arquivo

Arquivo da Categoria ‘Comunidade’

Conteúdo Localizado em AS3

11, Abril, 2009 yarcub Nenhum comentário

O título deste post pode não ser o mais feliz, mas à falta de melhor tradução é que se pode arranjar. :)

O que quero eu dizer com localizar o conteúdo? Disponibilizar ao utilizador da aplicação/site informação no idioma que melhor se adeque, trocando por miúdos… multilíngua.

O Flash IDE de algumas versões para cá que incorpora uma ferramenta para o fazer, Strings Panel, mas nunca me predispus a perceber até que ponto era flexível para colocar a funcionar fora do ambiente Flash IDE.
Posto isto, há cerca de 6 meses resolvi tentar criar uma pequena livraria que simplifica o processo mas até há pouco tempo nunca tinha tido a oportunidade de a testar num ambiente de produção. Como fiquei satisfeito com o resultados resolvi abrir este projecto ao público para ter um maior feedback e conseguir evolui-lo.

A estrutura é a seguinte:

Estrutura de classes
  • A classe LocaleManager (Singleton) gere o carregamento dos diferentes ficheiros de linguagem, em xml, consoante a necessidade e informa todos as instâncias que estejam registadas.
  • A classe LocaleContainer é a base dos elementos visuais que contenham elementos que necessitem de localização. Classes que a estendam apenas estão registadas no manager enquanto pertencem à Display List, e apenas assim recebem notificação quando é mudado o idioma. Sempre que uma classe que implemente o interface ILocaleComponent é adicionada à Display List o LocaleContainer guarda a sua referência para notificar quando for notificado pelo manager, uma espécie de notificações em cadeia.
  • As classes que queiram ser notificadas quando ocorre uma mudança de idioma têm necessariamente de implementar o interface ILocaleComponent, garantido assim que dispõem de um método público através do qual podem ser notificadas e actualizarem o que necessitem.

Isto é a base e algo que é efectuado “under the hood“, o exemplo seguinte mostra a simplicidade em utilizar esta solução.

O plugin de syntax highlight da minha instalação do wordpress tirou o dia para me por fora do sério e parece-me mais saudável para o meu teclado que disponibilize o exemplo juntamente com a source e documentação. ;)

Gostava de receber algum feedback se experimentarem com exemplos/sugestões/correcções que ajudem a melhorar o projecto.

DOWNLOAD AS3LOCALELIBRARY

Wordpress Update

6, Abril, 2009 yarcub Nenhum comentário

Após 8 meses e 2 dias volta a existir “vida” por aqui, tanto tempo que a primeira tarefa foi a actualização do Wordpress para a release 2.7.1 (ainda tinha a 2.5).

Agora que voltei a ter um contacto diário com a plataforma, não prometo… mas espero colocar conteúdo mais regularmente.

Até já.

Categories: Comunidade Tags: ,

O Google realmente indexa conteúdo em aplicações Flex?

19, Julho, 2008 yarcub Nenhum comentário

O desafio foi lançado (no início do mês), criar uma aplicação simples em Flex que carregue um texto dinamicamente contendo uma frase específica e esperar que o Google a indexe.

A ideia de um concurso veio do Platform Evangelist, Ryan Stewart, e todas as participações têm de seguir as seguintes regras:

  • Utilizar a Flex Framework
  • A frase tem de ser carregada dinamicamente, ou seja, não pode existir aquando da compilação.
  • O carregamento tem de ser feito apenas se ocorrer interacção (e.g. click num botão).
  • O resultado dado pelo Google (se tal acontecer) deverá apontar directamente para o estado onde essa frase é carregada (deeplinking).
  • Código fonte disponível
  • Várias participações permitidas

(+Detalhes)

O que realmente interessa aqui é saber se o Google está a indexar conteúdos percorrendo uma aplicação como pseudo-utilizador e o que se nota é que ao colocar a variável concurso se desvirtua o concurso.
Eu percebo que o Ryan apenas tenha colocado a hipótese de prémios para tentar que o máximo de programadores tentassem as mais variadas maneiras de contruir a aplicação mas o que se viu é que sem regras que foquem o objectivo final isso é difícl. Por exemplo:

  • Apenas permitir a frase no conteúdo carregado para o Flash Player.
    O que se nota é que a maior parte do conteúdo indexado é a sobre as aplicações e não as aplicações em si.
  • Outro caso, um dos participantes comprou o domínio e nomeou o swf com a mesma palavra e é isso que faz aparecer a sua entrada em 1º, mesmo que o conteúdo não esteja a ser indexado (até hoje,19Julho, não estava).

Finalmente a minha participação:
Esta tentativa baseia-se em 3 pressupostos que penso serem os que garantem melhores hipóteses de o Google realmente indexar o conteúdo, lembro que são apenas palpites e que aparte do Google/Adobe ninguém sabe o que se passa.

  • Display List: Cada vez que o Flash Player faz o render o playerbot percorre a display list e quanto encontra objectos de descendam/contenham do/o TextField, indexa o texto. Se isto acontecer, a probabilidade de os objectos serem encontrados aumenta com a proximidade à raiz (Stage) da display list.
  • HTTP: O playerbot deve monotorizar todos os requests feitos pelo Flash Player, se o pedido feito for um ficheiro ASCII (XML) é mais fácil ser indexado do que um formato binário (AMF Remoting).
  • Formatação: É provável que o Google de relevância à formatação do texto, como em HTML, por isso a palavra chave está formatada com uma tag H1 definida em CSS.

Sem mais demoras e com código fonte disponível (Right-Click > View Source):
http://blog.nunorosa.com/wp-content/uploads/exemplos/Flex/SEO/

PS:Estou a fazer o tracking dos clicks através do Google Analytics mas penso que este não regista a passagem de bots. Alguém tem uma dica de como fazer isso?

gotoAndLearnForum de volta!

18, Junho, 2008 yarcub Nenhum comentário

Após 3 semanas offline, o fórum que começou como suporte aos tutoriais do Lee Brimelow em 2006 (já é uma comunidade por si só) voltou hoje ao activo.
Mudanças mais significativas:

  • Upgrade para phpBB™ 3.0 “Olympus”
  • Estrutura alterada, sendo a mais significativa uma secção de emprego/freelance.

Obrigado ao Lawrence Job, Ludvig Jernqvist e Erik Hallander pelo tempo dispendido a trazer de volta um dos melhores locais para discutir/ajudar descontraidamente sobre Flash Development.

Videos RIAPT

10, Junho, 2008 yarcub Nenhum comentário

Todos os videos que foram até hoje filmados pelo RiaPT foram agora migrados para um canal próprio no Blip.TV. Todos os futuros videos passarão a estar disponíveis neste novo canal e poderão ser observados dentro do Adobe Media Player caso pretendam visualiza-los em modo offline.“(Ler post no blog RIAPT).

Como podem ver na imagem acima já adicionei a feed do Blip.TV ao Adobe Media Player (AMP) o que torna muito mais cómodo visualizar/descarregar os vídeos e saber quando existem novos conteúdos.
Para quem ainda não está convencido a experimentar o AMP fiquem a saber que é também possível visualizar conteúdos distribuídos por cadeias como MTV, CBS e Comedy Central. ;)

Para adicionar a feed dos videos RIAPT basta:

  1. Abrir o Adobe Media Player
  2. Seleccionar ‘MY Favorites’
  3. Na nova janela seleccionar ‘Add RSS Feed’ e introduzir http://riapt.blip.tv/rss

AS3 Workshop slides, Grant Skinner

5, Junho, 2008 admin Nenhum comentário

Muitos dos oradores em conferências/eventos têm o excelente hábito de disponibilizar o seu material de apoio após as mesmas.

O  Grant Skinner disponibilizou hoje os slides (167!!) utilizados num workshop dado por ele ao longo do último ano que consistia num dia intensivo sobre as novidades em AS3, migração de AS2 e dicas.
Apesar de normalmente os slides apenas terem alguma informação para apoiar a audiência a seguir o orador “in-loco” posso dizer que estes slides são +/- fáceis de seguir e contêm exemplos que permitem ver em funcionamento o assunto que abordam.

Isto conjugado com um bom livro de referência em AS3, acho que se pode tirar um bom proveito. Boas experiências.

PS: Nos próximos dias vou postar um exemplo de como fazer o parse de um ficheiro wav local e injectar os dados no buffer de som.

Astro – FileReference + Sound API

24, Maio, 2008 yarcub Nenhum comentário

Sound API

Mais um post sobre as novas funcionalidades do Flash Player 10.

Depois de ter visto uma entrada no Coisas Interactivas sobre uma aplicação de scratching numa Nintendo DS, lembrei-me de procurar o que já havia sido feito pela comunidade com as potencialidades da nova Sound API que permite um acesso de baixo nível às amostras de áudio. Ainda não existe nada de tão elaborado, mas é expectável que assim que saia a release final do plugin aparecam frameworks à semelhança com o que aconteceu com o 3D.

As novidades são o evento flash.events.SamplesCallbackEvent que é disparado quando as amostras no buffer estão a acabar para que se possa injectar novas amostras. É por exemplo o ideal para ter um loop limpo, i.e., contínuo e sem atraso.
Associado a este evento existe uma propriedade da classe Sound que permite injectar amostras directamente no buffer, samplesCallbackData do tipo ByteArray.

Isto pode ser visto em acção:

A novidade mais interessante é quando conjugamos a funcionalidade anterior com um novo método da classe Sound que permite extrair informação do áudio, por exemplo um ficheiro carregado do servidor ou até mesmo um ficheiro carregado localmente (mais adiante). Como é fácil de imaginar as potencialidades são enormes: equalização, efeitos, edição, etc.

(…).extract(target:ByteArray, length:Number, startPosition:Number =-1):Number

O protótipo do método é intuitivo mas o que faz é copiar n amostras (length) para um instância ByteArray e como parâmetro adicional é possível definir a posição da primeira amostra (startPosition), por defeito o ponteiro não é alterado entre leituras. Ou seja; se lermos 1024Bytes numa primeira leitura, na segunda leitura o ponteiro vai apontar para o 1025º Byte. Por fim o método devolve o número de Bytes lidos.
Nota: O número de amostras tem de estar compreendido entre 512 e 8192.

Antes de injectar as amostras, estas podem ser manipulas. No exemplo de equalização, separar as diversas bandas com um banco de análise -> Amplificar/Atenuar cada banda -> obter as amostras alteradas com um banco de síntese.

Alguns exemplos em acção:

FileReference

Esta API já existia em versões anteriores do Flash Player e é utilizada para controlar a transferência de um ficheiro entre cliente e servidor. Até agora para manipular um ficheiro presente no cliente era necessário fazer o upload para o servidor e carregar de volta para o Flash Player presente no cliente. Como é fácil de ver se a operação implicar manipular e devolver um ficheiro do cliente o processo pode ser moroso.

No Astro foram introduzidos dois métodos para ler/salvar um ficheiro localmente mas necessitam de interacção com o utilizador prévia, i.e., não é possível antes de o utilizador indicar qual o ficheiro. Mais detalhes sobre estes novos métodos podem consultados na documentação oficial, indicada pelo Lee Brimelow (Platform Evangelist da Adobe) .

Exemplo

Para finalizar fiz um exemplo básico utilizando ambas API’s.
Ler um ficheiro local e mudar a sua velocidade de reprodução apenas à custa de descartar amostras em intervalos regulares.( método pouco robusto)

Existe um problema que é o seguinte: as amostras a ser injectadas no buffer têm de ser em formato PCM mas os dados que temos acesso ao ler o ficheiro correspondem ao ficheiro mp3 que está codificado.
Por isso é necessário usar um workaround que se sustenta na capacidade do Flash Player criar um SWF em bytecode na memoria. O método não paece muito simples (1,2), mas felizmente hoje o (?)Christopher Martin-Sperry (FlexibleFactory) disponibilizou um biblioteca que faz o serviço por nós com a nuance de perder a informação relativa à ID3 tag no processo. No final obtem-se um objecto Sound com o qual já podemos utilizar o método extract() para ter acesso a amostra codificadas em PCM.
Ler mais…

Encontro RiaPT AUG.

20, Maio, 2008 yarcub Nenhum comentário

No próximo dia 31 de Maio realiza-se no Porto o segundo encontro do recém criado RiaPT Adobe User Group.

Oradores:

  • João Saleiro e João Fernandes:
    Rich Internet Applications na plataforma Flash usando Flex e Air
  • Rui Duarte Silva:
    Flash Platform na Alert, passado, presente e futuro.

+Info

Categories: Comunidade Tags:

Revista PROGRAMAR (Maio)

20, Maio, 2008 yarcub Nenhum comentário

Está disponível para download aquela que é já a 14ª edição da revista PROGRAMAR. Apesar de a plataforma Flash não ser um tema recorrente na revista, outros artigos podem interessar ao comum Flash Developer. Destaco:

  • Reflection
  • Engenharia de Software
  • Interacção Python/MySQL

Capa da Revista PROGRAMAR (Maio)