Air 2.0 Beta, Servidor socket em 5 minutos!

Bom, não era novidade que o AIR já permitia comunicação por sockets, mas a verdadeira novidade na versão 2.0 é que agora permite escutar também uma porta da nossa maquina para comunicações… Mas em que se traduz isto na realidade?? Fácil! A partir de agora podemos criar os nossos pequenos/médios servidores socket, que com algum trabalho até podemos criar um servidor web… claro que é um exagero, mas abre um mundo novo de possibilidades….

Então, a partir de agora as nossas aplicações passam também a poder ser servidores, quer de comunicação de dados ou até mesmo armazenamento… imaginem, podemos criar uma base de dados na nossa maquina, usando SQLLite, e expor os seus dados ao exterior usando funções locais isto através de uma qualquer porta…

Isto não era qualquer novidade nos aplicativos desktop, mas trazendo esta nova funcionalidade os aplicativos AIR passam a poder ser usados para qualquer comunicação de dados permitindo mesmo que duas aplicações AIR em diferentes maquinas possam comunicar entre si sem qualquer necessidade de aplicações/bases de dados/back-ends terceiros… claro que teriam que ter conhecimento do ip de cada uma das maquinas, mas isso com um IP fixo resolve-se rapidamente.

Decidi explorar esta nova funcionalidade, e a primeira prova de fogo foi logo para um projecto de um cliente, que consistia no desenvolvimento de um servidor que recebe-se dados de vários dispositivos através de uma porta, que grava-se esses dados numa base de dados e que envia-se uma resposta a cada dispositivo, dependendo do tipo de dados… Os dispositivos podem ser apenas 2 como 50, pelo que era uma verdadeira prova de fogo para o AIR e sua atípica gestão de memória já que o sistema receberia algumas dezenas de pedidos por minuto. Depois de dar uma vista de olhos às classes socket, percebi que era muito mais fácil  do que eu imaginava, o servidor foi feito com recurso a cerca de 50 linhas de código, tudo ficou a funcionar…. restava o teste em tempo real com os tais dispositivos….

Inicialmente apenas com 2 demonstrou ser rápido e eficaz, mas e com 20/30 dispositivos a enviar dados… foi entregue o projecto ao cliente para testes, depois de 1 semana e de mais de 40.000 ligações (apenas entradas, se contar as saídas serão 80.000) os gasto0s de memória mantiveram-se entre os 20 e 50 mb não ultrapassando este valor, e o sistema não encontrou qualquer falha, erro ou situações desconhecidas… Resumindo, sem muito tempo gasto, o AIR passou a ser o substituto de um sistema existente feito em delphi, e mantêm-se a correr quase à 2 meses 24/24h sem qualquer problema….

Os meus parabéns à adobe que realmente fez um excelente trabalho!! Agora segue a dica, como criar um servidor socket? facil… o mais complicado talvez seja instalar o SDK 2 beta para desenvolvimento, mas isso vocês descobrem facilmente nas release notes…

Segue então uma explicação de como fazer o seu servidor socket em menos de 5 minutos… leia mais »

2 Comentarios |Tags: , , , , , ,

Tutorial Action Script 3 – 015

Em continuação a série de tutoriais sobre AS3…

Hoje vou falar pouco sobre novidades, mas vou apenas apresentar um exemplo pratico de como criar um painel personalizado usando apenas action script  3 e todos os conceitos que aprendemos até agora…

5.4. Classes, Exemplo Painel personalizado

Vamos a um exemplo prático, usando o flex o meu objectivo é fazer o seguinte:

Criar um painel personalizado que permita:

–    ser arrastado (drag & drop) na nossa aplicação
–    ter botões de maximizar, minimizar e restaurar
–    Adicionar efeitos de maximizar, minimizar e restaurar.

Vamos aplicar todos os conhecimentos adquiridos anteriormente bem como a utilização de algumas classes nativas de efeitos disponiveis no flex como efeitos que mais à frente falaremos. Este exemplo apenas funcionará no Flex, visto que o AS3 do flash ainda não suporta alguns pontos e classes de efeitos que foram adicionadas no Flex.

Vejam o seguinte código que foi devidamente comentado para perceberem facilmente toda a sua estrutura. leia mais »

7 Comentarios |Tags: , , , , ,

Mais um ano, Balanço e Feliz Natal!!

Bom, caros leitores, amigos e familiares…

Depois de mais um ano passado, diz a tradição que se faça um balanço pessoal do que este ano trouxe de novo, dos erros que cometemos e acima de tudo o que poderiamos ter feito melhor…mas não me vou alargar muito.

Tenho andado meio ausente, porque este ano tive um dos meus maiores sonhos cumpridos, nasceu a minha pequena Luana, que foi a melhor coisas que me aconteceu… Apesar de ser uma das melhores coisas que esta vida têm, inevitávelmente alterou a minha rotina diária e noturna também, pelo que me consome muito do meu tempo livre… mas apesar disso ainda fui conseguindo acompanhar os meu leitores e comunidade de amigos, algumas das novidades do mundo Ria, e ainda consegui tempo para fazer alguns projetos que foram bastante interessantes…. Um desses projetos consumiu-me os ultimos meses, mas ficou com um resultado simplesmente fantástico que com certeza será um sucesso no mercado do próximo ano, mas brevemente colocarei mais detalhes sobre este projeto.

Tive ainda tempo para finalmente testar a fundo e desenvolver projetos em outras plataformas como WordPress, mas também em  Adobe Flash e algumas frameworks/tecnologias Ria (Flex), como o WebORB para o PHP, que me surpreeendeu muito positivamente. Dei também uma olhadela no novo AIR 2.0 no qual inclusive elaborei também um projeto (Servidor Socket) que já está em uso e que se revelou muito estável e uma das melhores alternativas quer ao Visual C++, Delphi ou  outras tecnologias de desenvolvimento de aplicações para desktop.

Com o portal RedeRIA a ser um sucesso, tive a oportunidade de acompanhar mais de perto alguns desenvolvedores silverlight e também de outras tecnologias que com certeza também estarão em alta no próximo ano e interiorizei a ideia que terei que levar a sério algumas das tecnologias, frameworks e plataformas que aí foram apresentadas.

Espero que no próximo ano consiga mais tempo livre para me dedicar ao blog um pouco mais, e para finalmente em 2010 lançar um projeto que tenho no forno já à alguns meses… Fica a curiosidade!

Bom, a todos vós, resta-me desejar que o balanço final do ano de 2009 tenha sido muito positivo, e que no próximo ano vos traga muito do que de melhor conseguiram em 2009 e principalmente muito sucesso e saude para vocês e vossas familias! Um feliz Natal, e um fantástico 2010.

Um Abraço e obrigado pela vossa companhia ao longo deste ultimo ano!

Mário Santos.

2 Comentarios |Tags:

Tutorial Action Script 3 – 014

Em continuação a série de tutoriais sobre AS3…

Hoje vou falar sobre um ponto que por vezes me perguntam do que se trata, eis a explicação! Esta é uma dica curta, mas importante!

5.3.1.  Explicação da função super();

Existem alguns truques que podem ser muito úteis em qualquer linguagem OOP, no caso anterior estávamos a usar variáveis e dados da class estendida (fullDef), mas com esta extensão podemos obter ainda mais funcionalidades, como repararam em certos casos foi usado o método super() que na realidade em cima nada faz, e até pode confundir, mas que é importante e muito util em alguns casos principalmente em hierarquias de dados, por isso o deixei presente no exemplo.

O super faz referencia à class que foi estendida, classe “Pai”, pode de entre muitas utilidades ser usado para chamar a função principal da class estendida, no caso em cima chama a função fullDef() da class fullDef… mas pode ser usado para chamar outras funções, ou atribuir valores dentro dessa class como no caso em cima: super.painelInfo() e em casos mais úteis passar dados entre a class e a class estendida, vejam o exemplo:
[coolcode lang="actionscript"]
package  exemplo
{
class turma
{
public function turma(nome:String)
{
trace(nome);
}
}
}
[/coolcode]
e uma class estendida… leia mais »

Sem Comentarios |Tags: , , , ,

Tutorial Action Script 3 – 013

En continuação a série de tutoriais sobre AS3…

Hoje vamos tomar especial atenção à possibilidade de alterar uma classe “pai” para que possamos controlar, modificar ou até substituir os dados de determinada função dessa mesma class. No action script este tipo de operação pode ser feito usando a palavra override, é dela que vamos falar hoje.

5.4. Re-Escrever métodos em classes.

Outro ponto muito util é no caso de já termos uma class totalmente feita, mas necessitamos de outra igual mas que substitua ou invalide uma ou outra função da class pai. Este método chama-se override, quem em português será parecido com re-escrever, ou seja, escrever por cima / substituir determinados pontos. De notar que só é possivel utilizar este método override em funções que tenham sido declaradas como public, por exemplo:
[coolcode lang="actionscript"]
public function info():void{

}
[/coolcode]
Para demonstrar este método, teremos que fazer algumas alterações na nossa classe que criamos anteriormente, já que é esse exemplo que será usado.

Vamos inicar com o exemplo da nossa ultima class criada e vamos escrever o simples código:
[coolcode lang="actionscript"]
public  function painelInfo():String {
return PANEL_DATE + ” – ” + PANEL_H + “-” + PANEL_W + “-” + PANEL_TITLE;
}
[/coolcode]

Adicionando esta função a nossa class devolveria uma suposta string de informação do nosso painel.

Ficando a class assim: leia mais »

2 Comentarios |Tags: , , , , , , ,

ZendAMF Service Browser

zendBrowserEsta noticia já conta com alguns dias, mas não deixa de ser uma ótima noticia….

Uma das coisas que pouca gente gostou foi o facto de no Zend AMF não existir um browser de serviços que nos permitisse testar as nossas classes, mas eis que finalmente surge a solução, o ZamfBrowser permite isso mesmo, embora eu o tenha testado com algumas classes houve algum trabalho para testar as mesmas, inclusive algumas nas quais simplesmente não funcionou, mas talvez por não seguir a linha de orientação das mesmas…. enfim, assim que tiver um pouco tenciono efetuar alguns testes mais sérios para verdadeiramente saber o potencial deste browser. Pelo menos já é uma ótima noticia.

Já na sua versão 1.11, conta com um grande utilitário, um simples botão que permite gerar todas as classes em as3 necessárias para trabalhar com o Remote Object no f lex ou flash, embora muitos trabalhem com o mx:RemoteObject via MXML no Flex, no flash as coisas são bem piores e esta opção é sem duvida das mais uteis.

Bom, resta-me informar que o site oficial encontra-se em http://www.zamfbrowser.org onde podem encontrar mais informações e o link para download…

Bom, venham  essas primeiras impressões.

Abraço.

Sem Comentarios |Tags: , , , ,

Tutorial Action Script 3 – 012

Bom, chegou a hora de que bastantes dos meus leitores esperaram… a continuação da minha serie de tutoriais sobre o AS3. Para aqueles que não acompanharam as primeiras 11 partes e para os que pretendem relembrar um pouco do que foi falado, segue uma categoria especifica aqui do blog com apenas esses tutoriais, exclusivamente dedicada à iniciação do Action Script 3. Aqui está o link onde podem encontrar todos os tutoriais.

Para os mais atentos foi lançada a compilação de todos estes tutoriais à um tempo atrás, basta procurarem no blog, que teve algum sucesso o que me levou a escrever uma segunda parte apenas em pdf que distribui inicialmente consoante uma doação, e que mais tarde também foi distribuída num pequeno “giveaway” e que agora finalmente será distribuída publicamente para o publico. Esta segunda parte do tutorial será dividida em vários post’s durante algumas semanas, e no final será colocado o pdf para download… se necessita urgentemente desta segunda parte (conta com 60 novas paginas) então entre em contacto comigo no twitter ou por email justificando essa necessidade que talvez sejam dos primeiros a receber esta segunda parte gratuitamente, embora haja alguns desses contactos que possam não ter resposta não desesperem… vai ser rápido para estar completamente publicado.

Este tutorial foca o Action Script 3 Orientado para o Flex, mas na sua base a estrutura é exactamente a mesma para o flash, por isso será com certeza útil também para os amantes do flash.

Nota: Não sendo um profissional, as técnicas adoptadas podem não ser as mais correctas, podendo mesmo existir alguns erros, mas bom… se detectarem algo “anormal” me informem.

Bom, vamos então à parte 12.

Não utilizem o sistema de comentários em baixo para tirar duvidas, elas não serão respondidas aqui! Usem antes o fórum do blog disponivel em: http://forum.msdevstudio.com

Continuando… Falaremos agora de (notem que os pontos podem nao estar seguidos, a versão final sofreu pequenas alterações):

5.3. Relacionamento entre classes.

Neste momento a nossa class passa a pertencer ao grupo de classes pessoais que podemos adicionar ao nosso projecto.
Um dos pontos muito úteis é o reaproveitamento do código para as mais variadas coisas, e de entre as quais podemos usar um relacionamento entre varias classes pessoais.

Um exemplo pode ser a definição de certas constantes numa class. Vamos supor que necessitamos de ter definidos tamanhos e um titulo para vários painéis feitos pela class em cima, poderemos efectuar 2 tipos de classes para este efeito, embora para este tipo de definições possamos usar uma class sem “inicializador” (apenas servirá para definir constantes / variáveis)
[coolcode lang="actionscript"]
package teste
{
public class def
{
public const PANEL_W:int = 400;
public const PANEL_H:int = 300;
public const PANEL_TITLE:String = “Painel personalizado”;
}
}
[/coolcode]
Esta class  não necessita de ser inicializada porque apenas apresenta parâmetros fixos da nossa aplicação e não têm um constructor.

leia mais »

2 Comentarios |Tags: , , , , , , , ,

#Silverlight? Estou um pouco desapontado…

silverlightSou um amante do flex, é verdade… Mas no entanto tenho estado bem atento à evolução do Silverlight, (Gosto bastante dos ambiente de desenvolvimento como o Expression Blend) e é bem verdade que ele está a evoluir até porque ainda à pouco tempo foi lançada a versão 3 e foi esta semana divulgada a nova versão 4. Isto demonstra uma grande preocupação em melhorar o seu produto e tornar cada vez mais forte a sustentabilidade e estabilidade do seu produto, principalmente com o objetivo de poder concorrer com o Adobe Flex.

Acho isto muito agradavel porque demonstra que todos terão que estar atentos ao mercado e quem irá lucrar com isto são os desenvolvedores… mas bom, como em todas as betas existem problemas, bom… não sei se é só comigo, mas vou relatar um problema que me aconteceu também com o silverlight 3 e que me deixa doido principalmente por falta de explicações.

Vou demonstrar uma desilusão com o silverlight, enfim, não com o silverlight em si, mas com as betas e devido suporte da runtime/plugin web que foram lançadas, tanto a 3 como a 4. Assim que entro por exemplo num post da RedeRia que, e muito bem, fala sobre uma das novas possibilidades do silverlight, a captura de imagens da webcam, nesta mesma pagina é-me pedido para instalar a ultima versão do silverlight (4), Ora… clico que sim, sou enviado para uma pagina da microsoft onde me aparece a mensagem:

The version of Silverlight installed is:
Silverlight 3 (3.0.40818.0)

You are ready to use Microsoft Silverlight

Mas então? Estou pronto pra usar o silverlight e nao consigo?? Parece que esta pagina no foi atualizada para disponibilizar a versão 4 da plugin, ainda que seja apenas uma beta…  Mesmo quando…. leia mais »

5 Comentarios |Tags: , , , , , , , , ,

Adobe Air 2 Beta Disponivel…

nouveau_logo_adobe_air

Finalmente!! E a nova versão vem recheada de novidades, algumas à muito esperadas… segue a lista mas mais importantes:

  • É agora permitido abrri documentos com a sua aplicação por defeito, pode agora enviar a ordem para abrir um ficheiro php e este abrirá com o programa por defeito, no meu caso com o Dreamweaver.
  • É possivel agora aceder diretamente aos dados do mricrofone para gravação e outros processamentos.
  • Mass Storage Device Detection; É agora possivel detectar automaticamente quando um dispositivo USB como uma Pen USB ou uma camara digital foi ligada ao sistema.
  • Uma nova e melhorada versão do browser WebKit com suporte a profilling de javascript, css3  e mais alguns melhoramentos…
  • Global Error Handling; Permite capturar todos os erros sincronos e assincronos que nao foram capturados numa unica função.
  • Melhor suporte a funções de rede, todas as novidade vão com certeza agradar a todos; Suporte a sockets TCP/UDP incluindo ligações SSL/TLS, Identificação DNS e enumeração de todo o hardware de rede existente na maquina.
  • Introduzido um nove método na api SQL, o setSavePoint() que permite criar como que um ponto de restauro na base de dados, muito util!!
  • Suporte a Screen Readers no windows, o que introduz uma excelente medida de acessibilidade.
  • Suporte a multi-touch.
  • Alguns melhoramentos a nivel de impressao, propriedades nativas e de texto.
  • Suporte a IPv6 e agora é permitido redeclarar o timeout para URL Requests, o que também é muito util!!

Bom, na pagina oficial encontram mais detalhes, para download basta acederem aqui e para as notas da versão e instalação podem aceder aqui.

Notem que se trata de uma versão beta, como tal podem encontrar erros e as aplicações anteriores feitas com esta versão 2 não correm nas versões anteriores da runtime. As aplicações anteriores para serem executadas na nova runtime devem ser compiladas com o descritor alterado para a versão 2.0.

P.S. Foi também distribuida a nova versão do Flash Player 10, a 10.1 que também conta com bastantes melhorias principalmente para dispositivos móveis, para mais informações vejam aqui.

Abraço.

2 Comentarios |Tags: , , , , ,

Sistema de Geo-localização de Veiculos

PlotmapBom, depois de alguns tempos de ausência começo a ter um pouco mais de tempo livre…

Hoje venho falar de um dos projetos recentes que foi oficialmente terminado o qual fui o responsável pela programação e desenvolvimento de todo o projeto em Adobe Flex 3 + Air.

O projeto trata-se de um sistema de geo-monitoramento de frotas de veiculos, que têm como principal objetivo apresentar ao utilizador / proprietário da empresa onde se encontram os seus veiculos e apresentar os mais diversos pontos sobre a viatura como temperaturas, rotação do motor, aceleração/travagem bruscas, paragems, etc…

O sistema é “Simples”,  foi desenvolvido um módulo eletrónico que foi instalado em cada um dos veiculos que conta com alguns sensores a ele ligados (Sensores de controlo de velocidade, rotação, travoes, pressao do oleo, acelerador, etc…) e que é o principal responsável pela colheita desses dados. Este módulo emite constantemente estes dados juntamente com a sua posição geográfica para um servidor por via de GPRS para que esse servidor se encarregue de analisar e inseri-los numa base de dados.

A partir daqui é que o plotmap entra em jogo, recolhe esses dados da base de dados com recurso ao php e apresenta-os ao utilizador de uma forma visualmente agradavel. Toda a geo-localização foi  feita com recurso à API do google maps para AS3 (flash / flex / air ). Como esta API é uma das mais completas que existem, o trabalho acabou por ser facilitado.

O sistema foi desenvolvido em duas versões bem semelhantes, uma versão WEB que apesar de já ser o produto final ainda se encontra em fase de testes, e uma versão desktop distribuida e executada via Adobe Air. Qualquer uma destas versões pode facilmente ser executada nos mais diferentes browsers (web) e sistemas operativos (web+air). Permitindo multi-utilizadores, pode ser usado em varias instancias para os mais diversos fins.

Bom, este foi um dos projetos que acabei por ter disponibilidade de fazer alguns videos sobre o layout e produto final, e eis que aqui os deixo:

- Layout, do mockup ao flex – veja o video

- Constraint Layout – veja o video

- Versao Adobe Air (beta) – veja o video *

- Versão final Web – veja o video. *

Bom, se tiverem alguma critica, ou sugestão fiquem à vontade!

Abraço.

* Devido à proteção de dados, as duas previsualizações do produto final (videos) quer web e desktop foram retiradas porque apresentavam dados reais dos veiculos e rotas. Em breve tentarei disponibilizar uma pevisualização sem estes detalhes…
20 Comentarios |Tags: , , , , , , , , ,