Mostrando postagens com marcador mysql. Mostrar todas as postagens
Mostrando postagens com marcador mysql. Mostrar todas as postagens

segunda-feira, 28 de maio de 2007

Resenha: Palesta Apollo na UNIFACS

Em primeiro lugar, muito obrigado à todos que compareceram à minha palestra, realizada no último dia 26 de maio na UNIFACS (Imbuí/Salvador/Bahia). Mesmo em um dia de chuva, muita gente acordou cedo para ouvir o que eu tinha a dizer e pude perceber a atenção com a qual o conteúdo foi recebido. Meus sinceros agradecimentos!

Segue aqui, conforme prometido, uma resenha sobre o conteúdo abordado.

1 - Recapitulando o que foi discutido na palestra anterior (21/abr/07).

Na oportunidade anterior, apresentamos o Apollo e seus principais conceitos apresentando-os através dos seguintes tópicos:

  • O que é o Apollo?
  • Qual o objetivo do Apollo?
  • O que se pode fazer com o Apollo?
  • A nova realidade para designers e developers
Foi realizado uma revisão desses itens, aproveitando para nos comunicarmos em uma lingaugem mais direta e desta vez com a utilização de diagramas para explicar o que é o Apollo e como o mesmo apresenta sua funcionalidade em comparação ao FlashPlayer instalado na forma de um controle ActiveX ou Plugin sobre o Sistema Operacional. Desta forma pudemos explicar a diferença das aplicações desenvolvidas utilizando-se a tecnologia Flash-Platform para o modelo anterior ao Apollo e após a sua introdução. Isso ajudou a deixar claro para os participantes, qual o objetivo do Apollo.

Diversos exemplos de aplicações foram apresentados para os participantes presentes, demonstrando o poder do Apollo e principalmente os recursos diferenciais que este disponibiliza aos desenvolvedores. Para uma fácil referência, utilizei os exemplos citados pela própria equipe da Adobe no site http://labs.adobe.com . Dentre os principais:

- Finetune. Discutindo inclusive sobre a importância do Apollo em uma análise particular do modelo de comércio possibilitado a partir de sua introdução.
- Fresh. Demonstrando a riqueza de interação já conhecida possibilitada pelo Flash/Actionscript em Rich Internet Applications, e adicionalmente um uso importante do recurso de renderização de HTML/CSS/Javascript possibilitado pelo controle HTML presente para esta finalidade.
- DryerFox. Demonstrando um uso divertido do controle HTML.
entre outros...
- Tweetr. Mais uma implementação de integração com o site Twitter.com. Para quem ainda não sabe, trata-se de um site estilo Blog Instantâneo onde as pessoas publicam simplesmente o que estão fazendo a cada momento. Curiosamente, aconselho conhecer o projeto TwitterVision 3D que não foi apresentado na palestra. Trata-se de mais uma interessante aplicação de integração com o Twitter, desta vez desenvolvido em Flex, integrando uma API 3D.

Finalizando esta primeira parte da agenda, discutimos sobre um novo cenário de oportunidades para designers e developers, debatendo principalmente sobre o baixo impacto de investimento intelectual (portanto, consequentemente financeiro) para aproveitamento destas oportunidades, uma vez que todo o conhecimento necessário por parte dos desenvolvedores de soluções web, são simplesmente reutilizados para a abordagem de soluções desktop adicionais, complementares ou isoladas de conteúdos e/ou soluções já desenvolvidas utilizando as tradicionais ferramentas Adobe para este propósito (Flash, Actionscript, Flex, Dreamweaver, Fireworks e uma linguagem server-side semelhante em funcionalidade ao Coldfusion).

2 - Últimos acontecimentos:

Nesta segunda parte, apresentei aos participantes do evento, notícias a respeito dos principais acontecimentos que influenciaram o meio relacionado ao Apollo. Os principais temas foram:
Apresentamos a notícia do Flex open-source abordando inclusive assuntos relacionados à mudança de estratégia e importância da aquisição da Macromedia por parte da Adobe no que diz respeito principalmente à influência deste acontecimento na estratégia de comercialização e abordagem comercial sobre os produtos herdados desta aquisição. Foi possível avaliar as boas consequencias disto para a comunidade desenvolvedora e tentar arriscar inclusive apostas em notícias semelhantes quanto à outros produtos da Adobe, inclusive o Apollo, consequencia que parece ser até mesmo óbvia.

Anunciei aos que ainda não sabiam da notícia, a API disponibilizada publicamente por Matt MacLean em seu site, ainda sem um modelo de licença definido por tratar-se de um experimento, que permite o acesso direto (sem o uso de um middleware) ao banco de dados mySQL.
Para exemplificar o seu uso de maneira rápida, apresentei o seguinte código fonte, disponível aqui de forma completa (com comentários inclusive) pois nos slides ele encontrava-se particionado por razões claras aos presentes (resolução de vídeo, melhor apresentação, etc.):

<?xml version="1.0" encoding="utf-8"?>
<mx:ApolloApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="400" height="320" resizable="false">
<mx:Script>
<![CDATA[
//importação das classes referentes à API disponibilizada em http://maclema.com/asql
//desenvolvida por Matt MacLean
import pl.mooska.asql.*;
import pl.mooska.asql.events.*;

//declaração da variável que irá manter os dados recebidos.
//a metatag [Bindable] permite que a mesma seja utilizada como valor de
//parametro em tags MXML que necessitem ter acesso à mesma.
//no exemplo atual, vamos defini-la como a fonte de dados do data-grid
//de nome de instância "grid", através do parâmetro "dataProvider" que
//o controle do tipo grid disponibiliza
[Bindable]
public var recordset:Array;

//instancia da conexão com o banco de dados mySQL
private var connector:Asql;

//uma variável para manter as mensagens à serem apresentadas no
//controle tipo label que temos na interface
//o "bind" desta variável será utilizado no parametro "text" do
//controle "label" instanciado como "lblMessage" na porção MXML
//deste código
[Bindable]
public var connectorStatus:String;

public function startApp():void{

connector = new Asql();

connector.addEventListener(SQLEvent.CONNECT, onConnect);
connector.addEventListener(SQLEvent.SQL_OK, onProcessed);
connector.addEventListener(SQLEvent.SQL_DATA, onData);
connector.addEventListener(SQLError.SQL_ERROR, onError);

connector.connect("ip_ou_dominio", "usuario", "s3nh4", "nome_do_banco");
connectorStatus = "Tentando conectar...";

}

private function onConnect(e:SQLEvent):void{
connector.query("SELECT * FROM tabela");
connectorStatus = "Conexão OK! Solicitando dados...";
}

private function onProcessed(e:SQLEvent):void{
//actions for an ok update or insert action result
connectorStatus = "Dados processados!";
}

private function onData(e:SQLEvent):void{
recordset = e.data;
connectorStatus = "Dados recebidos!";
}

private function onError(e:SQLError):void{
connectorStatus = "Erro na conexão!";
}

]]>
</mx:Script>
<mx:Label text="Apollo x MySQL access sample" fontFamily="Verdana" fontWeight="bold" fontSize="16"/>
<mx:DataGrid id="grid" dataProvider="{recordset}" width="298"/>
<mx:Button label="Connect and get data" width="159" id="btn" click="startApp()"/>
<mx:Label text="{connectorStatus}" width="301" textAlign="center" fontWeight="bold" color="#ff0000" id="lblMessage"/>
</mx:ApolloApplication>




ATENÇÃO:
No código acima onde temos:

connector.connect("ip_ou_dominio", "usuario", "s3nh4", "nome_do_banco");


Deve-se alterar o seguinte:
ip_ou_dominio: o IP do servidor onde encontra-se a instância do seu banco de dados mySQL ou o seu nome de domínio. Exemplo: 192.168.0.1 ou localhost
usuario: o usuário no servidor mySQL que possui acesso ao banco de dados que irá ser consultado.
s3nh4: a senha respectiva ao usuário especificado.
nome_do_banco: nome do banco de dados no servidor mySQL contra o qual será feita a consulta.

O seguinte esquema pode ser utilizado para criar a tabela de exemplo no seu servidor mySQL caso você queira testar o código acima:

CREATE TABLE `users` (
`username` varchar(15) default NULL,
`id` int(10) unsigned NOT NULL auto_increment,
`fullname` varchar(45) default NULL,
PRIMARY KEY (`id`)
) TYPE=InnoDB;

INSERT INTO `users` (`username`, `id`, `fullname`) VALUES
('vpmjr', 1, 'Vicente Junior'),
('commander', 2, 'Neil Armstrong'),
('moonPilot', 3, 'Edwin Aldrin'),
('commandPilot', 4, 'Michael Collins');

Você deverá ter instalado e configurado devidamente os seguintes softwares para proceder com o teste e saiba operá-los:
Caso você ainda não tenha instalado e configurado os softwares acima, aguarde pois estarei publicando tutoriais a respeito destes procedimentos em breve.

Adiante, discutimos a respeito dos seguintes temas:

Sería o Silverlight finalmente o tal do FlashKiller? Uma ameaça? (sub-tema: Já não ouvimos esta história antes?) Definitivamente não existe esta comparação e isso ficou muito claro ao final da discussão. O posicionamento de ambos é totalmente diferente. Farei mais posts a respeito deste assunto aqui no Blog.

Após isso, introduzí à questão apenas por intenção de adicionar informação aos presentes, o JavaFX e também discutimos quanto ao seu posicionamento. Ficou evidente que o Silverlight e o JavaFX são concorrentes diretos mas que o Apollo possui algusn diferenciais importantes a começar por seus fundamentos e objetivos que são divergentes a estes dois. Como no tópico do Silverlight, mais posts serão colocados aqui abordando o tema mais profundamente.

Finalizando

Tratamos a respeito de conhecimentos necessários para começar a desenvolver com o framework do Apollo, treinamentos que estou ministrado para implementar ou complementar tais pré-conhecimentos, bem como os treinamentos voltados exclusivamente para o Apollo que já estou ministrando (extra-oficialmente) para os usuários interessados.

Caso você esteja interessado em algum treinamento, leia os detalhes disponíveis neste post e entre em contato a partir do meu email.

Os treinamentos são ministrados individual e particularmente, bem como para grupos/empresas.

Até a próxima! Mais posts a respeito dos assuntos aqui abordados estarão disponíveis nos próximos dias.