logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Ago 7

Encontro de AUGs Brasileiros

Escrito por Stefan Horochovec em 1, 2.0, 4, 6, Adobe, AR, AUG, C#, Diversos, email, encontro, event, Evento, Google, gratuito, IE, int, map, maps, Negócios, O, on, Outros, Palestra, Palestras, Pessoal, pt, rest, Ria’s Geral, S+S, Software, UI, utf8, web @ 08 7th, 2011 | via http://www.horochovec.com.br/blog | Sem comentários
Stefan Horochovec
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá pessoal

No dia 20 de agosto, um sabadão, em Niterói, irá rolar o AUG DAY. Primeiro encontro de Adobe Users Groups Brasileiros.

Será um encontro imperdível, teremos algumas palestras e uma mesa de discussão sobre o uso de softwares para produção interativa para Web, Tablets e outros meios.

Eu estarei presente como palestrante e integrante da mesa de discussão. Faço meu convite para que venham prestigiar o evento, que será gratuito e contará com diversos sorteios!

Não perca a chance de participar das palestras, conhecer pessoalmente muita gente que você só conhece por email, quem sabe fazer negócios, etc. Será um grande evento!

Contamos com sua presença

Jun 30

Windows Phone SDK 7.1 Beta 2 disponível para download

Escrito por Kelps Sousa em .NET, 1, 2.0, 4, 6, app, AR, Beta, blog, C#, Desenvolvedor, desenvolvedores, Desenvolvimento, development, Download, email, err, Excel, Ferramenta, for, Google, html, if, int, map, mg, Microsoft, News, O, on, Ria’s Geral, S+S, SDK, Tema, tool, Ved, web, window, windows @ 06 30th, 2011 | via http://kelps-sousa.blogspot.com/ | Sem comentários
Kelps Sousa
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Se você está interessado no desenvolvimento para Windows Phone 7, ficará feliz em saber que está disponível para download o beta2 das ferramentas de desenvolvimento para Windows Phone 7.1 (mango).

Uma das coisas que mudou foi que agora o download se chama Windows Phone SDK, não mais Windows Phone Development Tools.

Para instalar esta versão é necessário primeiro remover a versão beta anterior.

Em conjunto com essa nova versão, a Microsoft também anunciou que TODOS os desenvolvedores cadastrados no AppHub receberão um convite por email para participar do beta do Windows Phone 7.1 no Connect. Em outras palavras, isso significa que todos os desenvolvedores cadastrados poderão atualizar os seus telefones com uma versão beta do sistema operacional que será lançado no segundo semestre. Essa é uma excelente notícia para quem já está desenvolvendo aplicações utilizando as ferramentas beta que foram lançadas pouco mais de 1 mês atrás.

Você já tem um Windows Phone? Vai instalar este beta nele? Eu vou Winking smile



Jun 20

PHP + BDD

Escrito por Fábio Batista da Silva em 1, 2.0, 4, 6, Air, app, AR, arte, BI, C#, Componente, Componentes, dados, demo, Desenvolvedor, desenvolvedores, Desenvolvimento, Design Patterns, development, Documentação, email, err, Ferramenta, Flex, for, framework, function, git, gmail, html, IE, if, instalação, int, LOB, Mate, mg, O, on, PHP, pt, quick, rails, rest, RIA, Ria’s Geral, S+S, Software, Sun, TAT, Tema, Teste, UI, Ved, zend @ 06 20th, 2011 | via http://www.flexria.com.br/home | Sem comentários
Fábio Batista da Silva
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá,

Nesse Post vou mostrar um pouco de desenvolvimento PHP usando BDD (Behaviour-Driven Development).
O BDD é uma prática ágil que tem como objetivo facilitar o desenvolvimento orientado a testes,
onde o software é direcionados por comportamentos, trazendo para o contexto de destes os casos de uso ou historias da aplicação.

Enquanto em TDD (Test Driven Development) testamos a aplicação de forma granular em um ambiente micro
no BDD os testes são globais voltados para a Funcionalidade, Casos de uso, Comportamentos, etc..

Como se em TDD testamos a aplicação de dentro para fora e já em BDD a aplicação é testada de fora para dentro.
Existe muito material sobre esse assunto p ai e muita gente mais preparada que eu para abordar esse assunto de forma teorica,
Então nesse Post vou mostrar na pratica um pouco de desenvolvimento PHP usando o Behat

Behat

Behat é um framework BDD em PHP 5.3 construindo sobre de componentes do Symfony2.
Behat foi inspirado no Cucumber do Rails e especialmente a parte da sintaxe das features.

A instalação do Behat pode ser feita baixando diretalente pelo git diretamente pelo do git: http://github.com/Behat/Behat
Ou instalando através do pear :

$ pear channel-discover pear.behat.org
$ pear install behat/behat

Se tudo der certo o Behat esta instalado
A versão atualmente disponível no pear é a 1.1.9
Para verificar se esta correto e ver a versão instalada execute :

$ behat -V
Behat version 1.1.9

Depois de concluir a instalação o Behat esta pronto para ser usado.
para isso vamos inicializar o projeto de testes com o Behat

$ cd path-to-my-app
$ behat --init

O comando behat –init vai criara a estruturar de diretórios usada p organizar os teste do Behat

|-- features
   |-- steps            ##Diretório dos arquivos que contem os cenários de testes
       |-- steps.php
   |-- support          ##Configurações, requires e configs de ambiente
       |-- bootstrap.php
       |-- env.php

A definição de um historias e cenários de teste é bem simples.
Utilizando algumas palavras chaves : Feature, Scenario, Given, When, Then, But or And
Os cenários são escritos em arquivos .feature que serão interpretados pelo Behat

features/contacts.feature

Feature: Contacts Registration
    In order to demonstrate the framework
    As a SouDev using BDD
    I want to register contacts

  Scenario: Add new contact
    Given a contact named "Fabio B. Silva" using the email "fabio.bat.silva@gmail.com"
      And the phone "xx xxxx-xxxx"
     When press save
     Then everything will be saved

Com a historia escrita podemos executar o Behat dentro da aplicação
O Behat vai interpretar os arquivos .feature
e mostrar quais funções vc tem que implementar para poder rodas o teste

$ cd path-to-my-app
$ behat
1 scenario (1 undefined)
4 steps (4 undefined)
0m0.03s

You can implement step definitions for undefined steps with these snippets:

$steps->Given('/^a contact named "([^"]*)" using the email "([^"]*)"$/', function($world, $arg1, $arg2) 
    throw new BehatBehatExceptionPending();
);
$steps->And('/^the phone "([^"]*)"$/', function($world, $arg1) 
    throw new BehatBehatExceptionPending();
);
$steps->When('/^press save$/', function($world) 
    throw new BehatBehatExceptionPending();
);
$steps->Then('/^everything will be saved$/', function($world) 
    throw new BehatBehatExceptionPending();
);

Essa definição dos steps que o Behat lançou pode ser copiada para um arquivo de steps.php o que facilita bastante a implementação dos teste..
Porem escrever historias em inglês pode ser meio confuso, mais o tem suporte a i18n oq nos permite escrever as historias em português.
para isso basta adicionar # language: pt_BR no inicio do arquivo .feature
com isso ganhamos as palavras chaves em português : Funcionalidade,Cenario, Scenario, Quando, Então, Entao, Dado, Mas, E

features/contacts.feature

# language: pt_BR
Funcionalidade: Cadastro de contatos
    Para demostrar o funcionamento do framework
    Como SouDev que usa BDD
    Desejo cadastrar contatos

  Cenario: Adicionar um novo contato
    Dado um usuário chamado "Fabio B. Silva" usando o email "fabio.bat.silva@gmail.com"
      E com o telefone "xx xxxx-xxxx"
     Quando pressionar salvar
     Entao os dados serão salvos

E ao executar novamente o Behat a implementação dos teste agora também vem em português :

$ cd path-to-my-app
$ behat
1 scenario (1 undefined)
4 steps (4 undefined)
0m0.03s

You can implement step definitions for undefined steps with these snippets:

$steps->Dado('/^um usuário chamado "([^"]*)" usando o email "([^"]*)"$/', function($world, $arg1, $arg2) 
    throw new BehatBehatExceptionPending();
);
$steps->E('/^com o telefone "([^"]*)"$/', function($world, $arg1) 
    throw new BehatBehatExceptionPending();
);
$steps->Quando('/^pressionar salvar$/', function($world) 
    throw new BehatBehatExceptionPending();
);
$steps->Entao('/^todos os dados serão salvos$/', function($world) 
    throw new BehatBehatExceptionPending();
);

Com essa definição a implementação dos testes para essa feature pode ser feita
features/contacts_steps.php

use AppEntitiesContact, AppEntitiesPhone, AppServicesContactService;

$steps->Dado('/^um usuário chamado "([^"]*)" usando o email "([^"]*)"$/', function($world, $arg1, $arg2) 
    $contact = new Contact();
    $contact->setName($arg1);
    $contact->setEmail($arg2);

    $world->contact = $contact;
);

$steps->E('/^com o telefone "([^"]*)"$/', function($world, $arg1) 
    $world->contact->addPhone(new Phone($arg1));
);

$steps->Quando('/^pressionar salvar$/', function($world) 
    $world->saveReturn = ContactService::getInstance()->save($world->contact);
);

$steps->Entao('/^todos os dados serão salvos$/', function($world) 
     assertTrue($world->saveReturn);
);

O BDD e TDD são ferramentas essenciais para um software bem feito,
Infeliz mente muitos “desenvolvedores” ainda tem resistência a aderir ao teste e por achar perda de tempo, tedioso, etc..
O fato é que uma suite de testes bem feita vai tornar sua aplicação muito mais estável e vai lhe economizar tempo e cabelos ao longo do projeto. rsrs

Gostei bastante do Behat é um projeto muito bem estruturado e em constante evolução a versão 2.0 esta prestes a sair
Vale apena dar uma conferida na Documentação do Behat

E Para quem tiver o interesse deixei a app no git
https://github.com/FabioBatSilva/bdd-php-behat

Abraço e até a próxima….

Jun 20

PHP com BDD

Escrito por Ebercom em 1, 2.0, 2009, 4, 6, Air, app, AR, arte, BI, C#, Componente, Componentes, dados, demo, Desenvolvedor, desenvolvedores, Desenvolvimento, development, Diversos, Documentação, email, err, Ferramenta, Flex, for, framework, function, git, gmail, html, IE, if, instalação, int, LOB, Mate, mg, O, on, PHP, pt, quick, rails, rest, RIA, Ria’s Geral, S+S, Software, Sun, TAT, Tema, Teste, UI, Ved, zend @ 06 20th, 2011 | via http://www.flexdev.com.br/home | Sem comentários
Ebercom
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá,

Nesse Post vou mostrar um pouco de desenvolvimento PHP usando BDD (Behaviour-Driven Development).
O BDD é uma prática ágil que tem como objetivo facilitar o desenvolvimento orientado a testes,
onde o software é direcionados por comportamentos, trazendo para o contexto de destes os casos de uso ou historias da aplicação.

Enquanto em TDD (Test Driven Development) testamos a aplicação de forma granular em um ambiente micro
no BDD os testes são globais voltados para a Funcionalidade, Casos de uso, Comportamentos, etc..

Como se em TDD testamos a aplicação de dentro para fora e já em BDD a aplicação é testada de fora para dentro.
Existe muito material sobre esse assunto p ai e muita gente mais preparada que eu para abordar esse assunto de forma teorica,
Então nesse Post vou mostrar na pratica um pouco de desenvolvimento PHP usando o Behat

Behat

Behat é um framework BDD em PHP 5.3 construindo sobre de componentes do Symfony2.
Behat foi inspirado no Cucumber do Rails e especialmente a parte da sintaxe das features.

A instalação do Behat pode ser feita baixando diretalente pelo git diretamente pelo do git: http://github.com/Behat/Behat
Ou instalando através do pear :

$ pear channel-discover pear.behat.org
$ pear install behat/behat

Se tudo der certo o Behat esta instalado
A versão atualmente disponível no pear é a 1.1.9
Para verificar se esta correto e ver a versão instalada execute :

$ behat -V
Behat version 1.1.9

Depois de concluir a instalação o Behat esta pronto para ser usado.
para isso vamos inicializar o projeto de testes com o Behat

$ cd path-to-my-app
$ behat --init

O comando behat –init vai criara a estruturar de diretórios usada p organizar os teste do Behat

|-- features
   |-- steps            ##Diretório dos arquivos que contem os cenários de testes
       |-- steps.php
   |-- support          ##Configurações, requires e configs de ambiente
       |-- bootstrap.php
       |-- env.php

A definição de um historias e cenários de teste é bem simples.
Utilizando algumas palavras chaves : Feature, Scenario, Given, When, Then, But or And
Os cenários são escritos em arquivos .feature que serão interpretados pelo Behat

features/contacts.feature

Feature: Contacts Registration
    In order to demonstrate the framework
    As a SouDev using BDD
    I want to register contacts

  Scenario: Add new contact
    Given a contact named "Fabio B. Silva" using the email "fabio.bat.silva@gmail.com"
      And the phone "xx xxxx-xxxx"
     When press save
     Then everything will be saved

Com a historia escrita podemos executar o Behat dentro da aplicação
O Behat vai interpretar os arquivos .feature
e mostrar quais funções vc tem que implementar para poder rodas o teste

$ cd path-to-my-app
$ behat
1 scenario (1 undefined)
4 steps (4 undefined)
0m0.03s

You can implement step definitions for undefined steps with these snippets:

$steps->Given('/^a contact named "([^"]*)" using the email "([^"]*)"$/', function($world, $arg1, $arg2) 
    throw new BehatBehatExceptionPending();
);
$steps->And('/^the phone "([^"]*)"$/', function($world, $arg1) 
    throw new BehatBehatExceptionPending();
);
$steps->When('/^press save$/', function($world) 
    throw new BehatBehatExceptionPending();
);
$steps->Then('/^everything will be saved$/', function($world) 
    throw new BehatBehatExceptionPending();
);

Essa definição dos steps que o Behat lançou pode ser copiada para um arquivo de steps.php o que facilita bastante a implementação dos teste..
Porem escrever historias em inglês pode ser meio confuso, mais o tem suporte a i18n oq nos permite escrever as historias em português.
para isso basta adicionar # language: pt_BR no inicio do arquivo .feature
com isso ganhamos as palavras chaves em português : Funcionalidade,Cenario, Scenario, Quando, Então, Entao, Dado, Mas, E

features/contacts.feature

# language: pt_BR
Funcionalidade: Cadastro de contatos
    Para demostrar o funcionamento do framework
    Como SouDev que usa BDD
    Desejo cadastrar contatos

  Cenario: Adicionar um novo contato
    Dado um usuário chamado "Fabio B. Silva" usando o email "fabio.bat.silva@gmail.com"
      E com o telefone "xx xxxx-xxxx"
     Quando pressionar salvar
     Entao os dados serão salvos

E ao executar novamente o Behat a implementação dos teste agora também vem em português :

$ cd path-to-my-app
$ behat
1 scenario (1 undefined)
4 steps (4 undefined)
0m0.03s

You can implement step definitions for undefined steps with these snippets:

$steps->Dado('/^um usuário chamado "([^"]*)" usando o email "([^"]*)"$/', function($world, $arg1, $arg2) 
    throw new BehatBehatExceptionPending();
);
$steps->E('/^com o telefone "([^"]*)"$/', function($world, $arg1) 
    throw new BehatBehatExceptionPending();
);
$steps->Quando('/^pressionar salvar$/', function($world) 
    throw new BehatBehatExceptionPending();
);
$steps->Entao('/^todos os dados serão salvos$/', function($world) 
    throw new BehatBehatExceptionPending();
);

Com essa definição a implementação dos testes para essa feature pode ser feita
features/contacts_steps.php

use AppEntitiesContact, AppEntitiesPhone, AppServicesContactService;

$steps->Dado('/^um usuário chamado "([^"]*)" usando o email "([^"]*)"$/', function($world, $arg1, $arg2) 
    $contact = new Contact();
    $contact->setName($arg1);
    $contact->setEmail($arg2);

    $world->contact = $contact;
);

$steps->E('/^com o telefone "([^"]*)"$/', function($world, $arg1) 
    $world->contact->addPhone(new Phone($arg1));
);

$steps->Quando('/^pressionar salvar$/', function($world) 
    $world->saveReturn = ContactService::getInstance()->save($world->contact);
);

$steps->Entao('/^todos os dados serão salvos$/', function($world) 
     assertTrue($world->saveReturn);
);

O BDD e TDD são ferramentas essenciais para um software bem feito,
Infeliz mente muitos “desenvolvedores” ainda tem resistência a aderir ao teste e por achar perda de tempo, tedioso, etc..
O fato é que uma suite de testes bem feita vai tornar sua aplicação muito mais estável e vai lhe economizar tempo e cabelos ao longo do projeto. rsrs

Gostei bastante do Behat é um projeto muito bem estruturado e em constante evolução a versão 2.0 esta prestes a sair
Vale apena dar uma conferida na Documentação do Behat

E Para quem tiver o interesse deixei a app no git
https://github.com/FabioBatSilva/bdd-php-behat

Abraço e até a próxima….

Click aqui para ver o post Original
Fábio B. Silva
Fabio B. Silva
http://www.flexria.com.br

Jun 17

Novidades da versão Mango – Parte 2

Escrito por Alexandre Tadashi em .NET, 1, 2.0, 3.5, 4, 6, abas, análise, Análises, api, Aplicativos, app, AR, auto, back, bar, Beta, BI, bing, botão, bug, busca, C#, carregar, class, classe, cliente, código, collection, control, Controles, Curso, Cursos, dados, Debug, demo, Desenvolvedor, desenvolvedores, Desenvolvimento, Dica, Diversos, Documentação, DRE, email, err, event, Evento, Eventos, exemplo, Ferramenta, flash, Flex, fonte, for, Formação, fundo, game, garbage, geo, Geral, Gráfico, Gravação, ide, IE, if, image, imagens, int, jogo, Jogos, linq, Linq to Sql, lista, live, map, maps, Melhores Práticas, menu, mg, Microsoft, mobile, monitor, Monitoramento, NaN, O, on, online, Outros, player, processo, produtividade, prova, pt, RIA, Ria’s Geral, S+S, serviço, Serviços, silverlight, Silverlight 4, SmartPhone, socket, Storyboard, Sun, tag, TAT, Tema, UI, Ved, Vídeo, Videobrush, Vídeos, Visual Studio, web, WebCam, window, windows, XAML, XP, zend @ 06 17th, 2011 | via http://alexandretadashi.net/ | Sem comentários
Alexandre Tadashi
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Sockets

Através do namespace System.Net.Sockets, o Windows Phone provê suporte a uma implementação gerenciada de sockets, permitindo que desenvolvedores possam ter um controle rigoroso ao acesso a redes, com esse recurso temos disponível um conjunto de API’s de alto nível, permitindo que o desenvolvedor crie aplicativos que interagem com um cliente utilizando de serviços existentes de TCP.

Existem muitas funcionalidades onde esse recurso pode ser utilizado, como pode exemplo, para criar aplicativos de FTP, e-mail e Chat, com sockets é possível criar aplicativos mais sofisticados e ricos, podendo utilizar de TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol).

Câmera e fotos

Existem duas formas de acessar a câmera no Windows Phone, através das API´s do próprio sistema operacional ou através dos recursos já existentes do Silverlight 4, com as APIs do Windows Phone você tem imagens de alta resolução, além de controle do auto foco, acesso ao modo do flash, entre outros recursos, já com os recursos do Silverlight 4 webcam API, você tem facilidade de gravar vídeos e áudios em arquivos, se você já possui códigos em alguma aplicação Silverlight, você poderá aproveita-los com poucas ou nenhuma modificação quanto ao acesso a webcam.

É possível ter um controle bem flexível da câmera fotográfica do smartphone, através do Windows Phone podemos ter um controle do auto foco da câmera, gerenciar o flash utilizado, acionar a captura da imagem, além de uma série de eventos que podemos utilizar através do Microsoft.Devices.PhotoCamera, no código XAML a representação da câmera pode ser feito através do recurso VideoBrush do Silverlight.

Push Notitications e Live Tiles

Notifications é um poderoso recurso que o Windows Phone implementou de maneira bem interessante, com ele podemos enviar e receber informações para o Windows Phone 7, essas mensagens são enviadas para um serviço da Microsoft, e o serviço online envia para o smartphone, podendo receber a mensagem em seu projeto. Você poderá obter a mensagem recebida e manipular as informações, existem três tipos de Notifications, o tipo RAW, Toast e Tile, resumidamente o primeiro permite receber informações diretamente em sua aplicação, o segundo permite receber um aviso no topo da tela do Windows Phone, a aplicação receberá a notificação mesmo que a sua aplicação não esteja em execução no momento. Já o tipo Tile, é uma notificação nos Tiles que ficam na tela principal do Windows Phone e pode ser acionado quando apertamos o botão Start do aparelho. Na versão Mango, temos mais recursos disponíveis para essas notificações, a notificação do tipo Toast agora pode receber um determinado link que vai para determinado local em sua aplicação e ainda pode passar parâmetros que você pode utilizar para ler e realizar alguma tarefa, dando mais poder para as notificações no Windows Phone, as notificações do tipo Tile também foram incrementadas, agora é possível utilizar um Tile com dois lados e que mude periodicamente ou ainda ter tiles secundários para a mesma aplicação.

img27763

Figura 1. Fundo do Tile

Profiler

Performance é um dos assuntos mais importantes quando estamos criando aplicativos em geral, principalmente quando a aplicação vai ser executada em dispositivos com recursos limitados, como é o caso de smartphones, com a versão Mango temos agora uma ferramenta que analisa o perfil da sua aplicação, possibilitando analisar e medir através de gráficos , diversos recursos utilizados.

A ferramenta é totalmente integrada com o Visual Studio, para iniciar o uso do recurso , basta carregar a sua aplicação e no menu Debug, localizar e clicar na opção “Start Windows Phone Performance Analysis”, Figura 2, e clicar em Launch Application, em seguida você executa a rotina que deseja monitorar em seu aplicativo e clica em Stop Profiling, um arquivo com extensão SAP será criado, a cada processo de analise, um arquivo é criado, e você poderá manter um histórico para futuras analises de melhorias. Dentre as informações que a ferramenta apresenta, estão os frame rates, que são os números de renderização da tela do telefone, expressada em frames por segundo (fps), a porcentagem de uso da CPU do telefone, o uso da memória do aplicativo medido em megabytes, a utilização de Storyboards e imagens carregadas, por fim temos um indicativo de quando os eventos do garbage collections foram acionados durante o monitoramento. Se você selecionar um determinado período, o Visual Studio apresentará informações detalhadas sobre diversos pontos do aplicativo.

img24163

Figura 2. Performance Analysis

img26173

Figura 3. Analise detalhada da aplicação

Emulador

O emulador também sofreu algumas melhorias, duas delas são muito interessantes , como a possibilidade de testar no emulador os sensores de acelerômetro, Figura 4, e localização. Agora podemos simular através do emulador a leitura desses sensores, não precisando ter um equipamento físico para poder criar uma aplicação, basta você utilizar o mouse que o emulador vai responder conforme a ação esperada pelo aparelho real. No caso da utilização de recursos de localização, você ainda conta com uma barra de ferramentas com controles de busca, inclusão de indicativos de localização e gravação da localização, o emulador ainda contém alguns outros recursos que talvez sejam disponibilizados na versão final, como a possibilidade de adicionar gravações referente as simulações.

img10650

Figura 4. Emulador

Device Status

O namespace Microsoft.Phone.Info fornece informações sobre o equipamento, na versão anterior, era utilizado a classe DeviceExtendedProperties para obter alguns dados sobre o equipamento, na versão Mango essa tarefa passa a ser realizada por DeviceStatus, você pode obter informações como o total de memória, a versão do hardware e o nome do fabricante do equipamento. Através do PowerSource, podemos verificar se o dispositivo está funcionando com bateria ou conectado a uma fonte de alimentação externa. Outro recurso disponível é a possibilidade de verificar se existe ou não um teclado físico no smartphone através da propriedade IsKeyboardPresent.

Local Database

Existem dois tipos de persistências no Windows Phone 7, o Transient Data e o Persistent Data, você pode manipular informações através de Isolated Storage, um recurso que permite registrar e recuperar informações no próprio aparelho, essa forma de persistência de dados é chamada de “Persistent Data”, ou armazenar informações na memória, Transient Data, sua aplicação pode manipular esses dados conforme o seu ciclo de vida, porém na versão mango uma nova forma de Persistent Data foi adicionada, o local Database.

Agora temos a possibilidade de utilizar uma base de dados local em uma aplicação, antes da disponibilização das ferramentas betas da versão mango para desenvolvedores e da documentação oficial, falava-se que uma versão do SQL CE estaria disponível para ser utilizada, porém em sua documentação oficial a base de dados é citada somente como local database, uma versão própria do Windows Phone, um grande diferencial de produtividade está no suporte ao LINQ to SQL para operações em base de dados.

O local database permite armazenar dados relacionais dentro de um ambiente residente no Isolated Storage, por estar dentro do Isolated Storage, ele somente pode ser acessado pela aplicação correspondente, e roda somente no processo do aplicativo, não sendo executada com um serviço continuo, a manipulação de dados locais são acessados apenas através de LINQ to SQL, não tendo suporte ao Transact-SQL.

Launchers and Choosers

Os Launchers e Choosers são APIs que acessam alguns recursos do sistema operacional, eles disponibilizam recursos complexos deixando transparentes para que o desenvolvedor através de API´s, os Launchers são tarefas que somente são iniciadas pela sua aplicação, teoricamente, você não tem nenhum tipo de retorno da API, somente você pode inicia-los , passando os parâmetros que ela vai utilizar para realizar a tarefa. Já os Chooser também iniciam uma tarefa, mas a principal diferença é que os Choosers retornam algum dado que você poderá trabalhar em sua aplicação, um exemplo seria o EmailAddressChooserTask, com ele podemos apresentar ao usuário a lista de e-mails cadastrados no aparelho, quando um e-mail é selecionado, podemos obter essa informação e utilizar para enviar um e-mail através de um Launcher chamado EmailComposeTask, que não retorna nenhuma informação,dessa forma algumas tarefas que poderiam ser bem complexas são facilitas com os Launchers e Choosers. Na versão Mango temos novos Launchers and Choosers adicionados as API´s são eles:

Address Chooser Task : Inicia a lista de contatos da aplicação e permite a seleção.

Game Invite Task : API utilizada em jogos aprovados no Xbox Live que permite convidar jogadores para uma partida multi-player em um Game.

Save Ringtone Task : Permite gravar um arquivo MP3 ou WMA na lista de ringtones do sistema operacional.

Bing Maps Task : Inicia o Bing Maps, permitindo setar a propriedade center com uma posição geográfica.

Bing Maps Directions Task : Inicia o Bing Maps permitindo informar e receber informações sobre dois pontos.

Conclusão

O Windows Phone 7 chegou trazendo uma nova plataforma de desenvolvimento para dispositivos móveis, a Microsoft utilizou o que existe de mais moderno para criar o seu sistema operacional, dando suporte as melhores práticas de desenvolvimento e integração com aplicativos, a versão Mango contém mais de 500 novos recursos e confirma o investimento da Microsoft em sua plataforma mobile.

Jun 10

AUG FlexDuck – Boas vindas aos novos managers

Escrito por Stefan Horochovec em 1, 2.0, 2009, 4, 6, Adobe, Adobe Flex, AR, AUG, BI, C#, camp, Catalyst, comunidade, Curso, demo, eduardo Kraus, email, empresas, encontro, err, event, Evento, Eventos, Ferramenta, flash, Flash Catalyst, Flex, Flex 4, FlexDuck, for, gratuito, IE, if, Mac, mobile, novidade, Novidades, O, on, online, Outros, Palestra, Palestras, Pessoal, Projetos, RIA, Ria’s Geral, S+S, site, Software, TAT, Tecnologia, UI, UX, XP, zend @ 06 10th, 2011 | via http://www.horochovec.com.br/blog | Sem comentários
Stefan Horochovec
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá pessoal!

Recentemente eu me desliguei da coordenação do AUG FlexDuck e resolvi fazer esse post para comunicar a todos da comunidade, explicar meus motivos e desejar uma boa sorte aos novos coordenadores.

O AUG FlexDuck para quem não se lembra ou não sabe foi fundado no dia 23/03/2009, na época a pessoa de contato foi a querida Rachel Luxemburg. Fiquei muito feliz quando eu abri meu email naquela manhã e vi que tinha um email com o título: “Flex Duck (I love that name!)”. O email continha as informações sobre como configurar o site do groupo no Adobe Groups.

A partir desta data, foram 2 anos e 3 meses a frente do grupo, aonde tivemos cerca de 12 eventos presenciais, aonde visitamos diversas universidades da região sudoeste do Paraná, tivemos encontros realizados em parceria com núcleos de tecnologia da região. Também realizamos um curso gratuito de Adobe Flex 4 para acadêmicos do estado do Paraná, ficamos muito felizes que tivemos mais de 60 alunos no curso, realizados em 4 sábados no período da tarde no final do ano passado. Esse ano, realizamos dois encontros onlines trazendo duas palestras para a comunidade, a primeira com Eduardo Horvarth sobre o Adobe Flash Catalyst, e a segunda com Igor Costa sobre Adobe Flex Mobile.

O FlexDuck iniciou como um grupo regional e hoje vive um misto. Reuniões presenciais nas cidades aonde ele está representado, Pato Branco, Francisco Beltrão e Dois Vizinhos, e reuniões online trazendo palestrantes para demonstrar o uso da tecnologia Flex em conjunto com outras ferramentas.

Com essas iniciativas, chegamos a um número de 150 usuários cadastrados no Adobe Groups e vinculados ao grupo, um número que me deixa muito feliz.

Vocês não sabem como é difícil convencer as pessoas a se cadastrarem no site do grupo, criando um perfil na Adobe, etc, etc, etc. A pessoa não perderá 5 minutos da vida dela com essa atitude, mas mesmo assim, não faz. O FlexDuck chegou a sortear em reuniões do grupo, mais de R$ 5.000,00 em prêmios, entre licenças de softwares (cedidas pela Adobe USA e FDT) e bolsas de estudos (cedidas pela RIACycle e Eduardo Kraus), e inclusive ganhadores de prêmios não fizeram sua vinculação ao grupo, o que me deixou muito chateado (nunca foi obrigatório que alguém se cadastrasse no grupo, mesmo ganhando algum prêmio).

Mas enfim, devido a novos projetos pessoais, estou me afastando da coordenação do AUG. E com isso, duas novas pessoas estarão a frente do grupo. A primeira delas, é o Diego Maehler (Dois Vizinhos), que irá atuar como Manager, e nosso Co-Manager será o professor Roberto Padilha (Francisco Beltrão).

Espero que todos recebam os novos managers com muito carinho, são pessoas que estão abrindo tempo de sua vida pessoal por acreditar que vale a pena fazer esse trabalho pela comunidade. Eu digo com toda a sinceridade, vale muito a pena sim, é muito legal esse trabalho, e realmente só estou deixando o posto por estar me envolvendo com outros projetos (em breve novidades virão).

Quero agradecer a todos que confiaram em mim a frente do grupo, principalmente a Rachel no primeiro momento, que era a pessoa que acompanhava os grupos aqui no Brasil, depois ao John Koch, que é o atual Community Manager aqui na América Latina, que eu tive um enorme prazer de conhece-lo no Flash Camp Brasil em Macéio.

Também quero agradecer as empresas que acreditaram no trabalho do grupo e nos patrocinaram, são elas: RIACycle, PowerFlasher e ao Eduardo Kraus, pelas bolsas de estudos e licenças de softwares.

Também quero agradecer a todos da comunidade, nesse caso, não irei citar nomes porque senão o post vai ficar muito extenso e não quero correr o risco de esquecer de ninguém que me ajudou nessa jornada. Um muito obrigado a todos que fizeram favores pelo AUG!

Esse é somente um “até breve” meu a comunidade. Não estou me afastando, muito pelo contrário….

Um forte abraço a todos os membros do AUG FlexDuck!

Jun 6

Repositórios Dinâmicos Com Spring JPA

Escrito por Fábio Batista da Silva em .NET, 1, 2.0, action, app, AR, auto, BI, busca, buscas, C#, class, classe, CRUD, dados, Documentação, dynamic, email, Flex, geo, git, gmail, html, IE, if, image, int, interface, Java, JPA, map, mg, O, on, procura, rails, reference, RIA, Ria’s Geral, S+S, Sem categoria, Spring, string, tag, TAT, Tecnologia, UI, XML, XP @ 06 6th, 2011 | via http://www.flexria.com.br/home | Sem comentários
Fábio Batista da Silva
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá.

Escrevendo o post Java + MongoDB + Spring Data descobri o Spring Data JPA
e fiquei surpreso em descobrir algumas features como a criação de repositórios e consultas dinâmicas.
Neste Post vou falar um pouco sobre o Spring Data JPA e como ele pode lhe proporcionar uma maneira rápida e elegante de implementar seus repositórios.

O Spring Data JPA tem como principal objetivo facilitar a implementação das camadas de acesso a dados.
O Spring fica responsável pela implementação dos repositórios e oferece algumas funcionalidades sofisticadas e comuns na maioria dos CRUDs baseado na entidade que esta sendo gerenciada.

Nessa aplicação vou usar as entidades Contact, Phone, e o repositório ContactRepository.

As entidades são bem simples, é anotadas com o mapeamento de seus atributos e relacionamentos.
Contact.java

@Entity
@Table(name="phones")
public class Phone 
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  @ManyToOne
  @JoinColumn(name="id_contact")
  private Contact contact;
  //getter and setter methods 
  ...

Phone.java

@Entity
@Table(name="contacts")
public class Contact 

   @Id
   @Column(name="id_contact")
   @GeneratedValue(strategy = GenerationType.AUTO)
   private Long id;

   @Column(name="name")
   private String name;

   @Column(name="email",unique=true)
   private String email;

   @OneToMany(mappedBy="contact",cascade=CascadeType.ALL, fetch=FetchType.LAZY)
   @Fetch(FetchMode.JOIN)
   @private Set<Phone> phones = new HashSet<Phone>();

  //getter and setter methods 
  ...

ContactRepository.java

public interface ContactRepository extends JpaRepository<Contact, Long> 

    public Contact findByEmail(String email);

Até aqui nada de novo, porem agora como a “mágica” do Spring JPA ..rsrs

A interface do repositório estende JpaRepository, essa interface tem alguns métodos comuns como findAll, findOne, save, delete, etc…
Normalmente teríamos que implementar essa interface criando uma classe ContactRepositoryImpl e registra-la como um bean do spring
para que então possamos utilizar o repositório.

Com o Spring JPA não é necessário escrever essa implementação :) ..
Não é magia meus amigos, é tecnologia !!!…rsrs

O Spring JPA vai procurar por interfaces de repositórios que estendam a interface JpaRepository,
e então criar uma implementação para a interface e registra-la como um bean.

Para isso so é necessário apenas adicionar a tag jpa:repositories no contexto do spring,
com isso o Spring sabe onde procurar os repositórios que ele teve implementar.

applicationContext.xml

// Declaração dos Beans, TransactionManager, DataSource, etc...

 base-package="br.com.flexria.springjpa.repository" />

Com isso a implementação do repositório já esta pronta para ser injetada é utilizada na aplicação.

@Autowired
ContactRepository repository;

repository.save(contact);

repository.delete(contact);

List<Contact> list = contactRepository.findAll();

Isso por si so ja é algo incrível so que o Spring Data JPA vai alem.

Algo que ja é comum no Rails, são os Dynamic attribute-based finders que é a possibilidade de realizar buscas dinâmica baseadas nos atributos do objeto
Em rails temos :

//"SQL : SELECT * FROM contacts WHERE email = 'fabio.bat.silva@gmail.com'"

Contact.where(:email =>"fabio.bat.silva@gmail.com")

//Usando Dynamic attribute-based finders
Contact.find_by_email "fabio.bat.silva@gmail.com"

É exatamente isso que o Spring Data JPA faz,
além de implementar do repositório com ele é possível utilizar buscas dinâmica baseadas nos atributos do objeto.

   // HQL : select c from Contact c where c.email = ?1
    public Contact findByEmail(String email);

   // HQL : select c from Contact c where c.name like ?1
    public List<Contact> findByNameLike(String name);

Com base em algumas palavras chaves varias consultas podem ser feitas :

Leia o resto aqui.

Jun 6

Repositórios Com Spring JPA

Escrito por Ebercom em .NET, 1, 2.0, 2009, 4, action, app, AR, auto, BI, busca, buscas, C#, class, classe, CRUD, dados, Diversos, Documentação, dynamic, email, Flex, geo, git, gmail, html, IE, if, image, int, interface, Java, JPA, map, mg, O, on, procura, rails, reference, RIA, Ria’s Geral, S+S, Spring, string, tag, TAT, Tecnologia, UI, XML, XP @ 06 6th, 2011 | via http://www.flexdev.com.br/home | Sem comentários
Ebercom
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá.

Escrevendo o post Java + MongoDB + Spring Data descobri o Spring Data JPA
e fiquei surpreso em descobrir algumas features como a criação de repositórios e consultas dinâmicas.
Neste Post vou falar um pouco sobre o Spring Data JPA e como ele pode lhe proporcionar uma maneira rápida e elegante de implementar seus repositórios.

O Spring Data JPA tem como principal objetivo facilitar a implementação das camadas de acesso a dados.
O Spring fica responsável pela implementação dos repositórios e oferece algumas funcionalidades sofisticadas e comuns na maioria dos CRUDs baseado na entidade que esta sendo gerenciada.

Nessa aplicação vou usar as entidades Contact, Phone, e o repositório ContactRepository.

As entidades são bem simples, é anotadas com o mapeamento de seus atributos e relacionamentos.
Contact.java

@Entity
@Table(name="phones")
public class Phone 
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  @ManyToOne
  @JoinColumn(name="id_contact")
  private Contact contact;
  //getter and setter methods 
  ...

Phone.java

@Entity
@Table(name="contacts")
public class Contact 

   @Id
   @Column(name="id_contact")
   @GeneratedValue(strategy = GenerationType.AUTO)
   private Long id;

   @Column(name="name")
   private String name;

   @Column(name="email",unique=true)
   private String email;

   @OneToMany(mappedBy="contact",cascade=CascadeType.ALL, fetch=FetchType.LAZY)
   @Fetch(FetchMode.JOIN)
   @private Set phones = new HashSet();

  //getter and setter methods 
  ...

ContactRepository.java

public interface ContactRepository extends JpaRepository 

    public Contact findByEmail(String email);

Até aqui nada de novo, porem agora como a “mágica” do Spring JPA ..rsrs

A interface do repositório estende JpaRepository, essa interface tem alguns métodos comuns como findAll, findOne, save, delete, etc…
Normalmente teríamos que implementar essa interface criando uma classe ContactRepositoryImpl e registra-la como um bean do spring
para que então possamos utilizar o repositório.

Com o Spring JPA não é necessário escrever essa implementação :) ..
Não é magia meus amigos, é tecnologia !!!…rsrs

O Spring JPA vai procurar por interfaces de repositórios que estendam a interface JpaRepository,
e então criar uma implementação para a interface e registra-la como um bean.

Para isso so é necessário apenas adicionar a tag jpa:repositories no contexto do spring,
com isso o Spring sabe onde procurar os repositórios que ele teve implementar.

applicationContext.xml

// Declaração dos Beans, TransactionManager, DataSource, etc...

<jpa:repositories base-package="br.com.flexria.springjpa.repository" />

Com isso a implementação do repositório já esta pronta para ser injetada é utilizada na aplicação.

@Autowired
ContactRepository repository;

repository.save(contact);

repository.delete(contact);

List list = contactRepository.findAll();

Isso por si so ja é algo incrível so que o Spring Data JPA vai alem.

Algo que ja é comum no Rails, são os Dynamic attribute-based finders que é a possibilidade de realizar buscas dinâmica baseadas nos atributos do objeto
Em rails temos :

//"SQL : SELECT * FROM contacts WHERE email = 'fabio.bat.silva@gmail.com'"

Contact.where(:email =&gt;"fabio.bat.silva@gmail.com")

//Usando Dynamic attribute-based finders
Contact.find_by_email "fabio.bat.silva@gmail.com"

É exatamente isso que o Spring Data JPA faz,
além de implementar do repositório com ele é possível utilizar buscas dinâmica baseadas nos atributos do objeto.

   // HQL : select c from Contact c where c.email = ?1
    public Contact findByEmail(String email);

   // HQL : select c from Contact c where c.name like ?1
    public List findBynameLike(String email);

Com base em algumas palavras chaves varias consultas podem ser feitas :

Keyword Sample JPQL snippet
1
And
1
findByLastnameAndFirstname
1
2
… where x.lastname = ?1 and<br />
                    x.firstname = ?2
1
Or
1
findByLastnameOrFirstname
1
2
… where x.lastname = ?1 or<br />
                    x.firstname = ?2
1
Between
1
findByStartDateBetween
1
2
… where x.startDate between 1? and<br />
                    ?2
1
LessThan
1
findByAgeLessThan
1
… where x.age < ?1
1
GreaterThan
1
findByAgeGreaterThan
1
… where x.age > ?1
1
IsNull
1
findByAgeIsNull
1
… where x.age is null
1
IsNotNull,NotNull
1
findByAge(Is)NotNull
1
… where x.age not null
1
Like
1
findByFirstnameLike
1
… where x.firstname like ?1
1
NotLike
1
findByFirstnameNotLike
1
… where x.firstname not like ?1
1
OrderBy
1
findByAgeOrderByLastnameDesc
1
2
… where x.age = ?1 order by<br />
                    x.lastname desc
1
Not
1
findByLastnameNot
1
… where x.lastname <> ?1

Repositórios dinâmicos, consultas dinâmicas, Buscas baseadas em NamedQuery ou anotações, etc..
com certeza tem muita coisa a ser explorada no Spring Data JPA, me surpreendi com a facilidade e agilidade.

Vale apena dar uma conferida na documentação do Spring Data JPA

E Para quem tiver o interesse deixei a app no git
https://github.com/FabioBatSilva/spring-data-jpa

Abraço e até a próxima….

Click aqui para ver o post Original
Fábio B. Silva
Fabio B. Silva
http://www.flexria.com.br

Jun 1

Dominando Flex Mobile – Parte 1

Escrito por Daniel Schmitz em 1, 2.0, 4, 6, Air, Android, AR, arte, BI, builder 4, C#, código, código fonte, demo, Diversos, email, flash, flash builder, Flash Builder 4, Flex, fonte, for, Formulário, framework, IE, lista, Livro, Livros, mobile, NaN, News, novidade, Novidades, O, on, problema, problemas, RIA, Ria’s Geral, S+S, Teste, UI, XP @ 06 1st, 2011 | via http://flex.etc.br | 1 comentário
Daniel Schmitz
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Pouco tempo após o lançamento do Flash Builder 4.5, com suporte ao Flex Mobile, estamos com esta ultra novidade para vocês!

Você poderá baixar, gratuitamente, a primeira parte do livro Dominando Flex Mobile.

Para baixar agora o PDF, clique aqui!

Para baixar o código fonte, clique aqui!

Agora vamos explicar um pouco sobre a dinâmica deste livro. Ele foi dividido em duas partes. A primeira delas contém a teoria básica de uma aplicação flex mobile. É esta parte que você poderá visualizar gratuitamente. A segunda parte conterá a teoria avançada, juntamente com uma aplicação mais robusta, envolvendo aplicações para diversos dispositivos. Esta segunda parte irá demorar um pouco para sair, talvez alguns meses, porque ela depende muito da evolução do framework Flex, além de testes em dispositivos android e iOs que iremos realizar. É óbvio que queríamos lançar o livro completo agora, mas enquanto não pudermos adicionar a qualidade necessária ao mesmo, nós não vamos completá-lo.

Você que gostou da primeira parte do livro, irá adorar a segunda! Cadastre-se no formulário de novidades a seguir e aguarde mais novidades.

Quer receber novidades no seu email? Preencha o email a seguir:

* Adicione o email news@danielschmitz.com.br na sua lista de emails confiáveis, para não ter problemas ao receber a mensagem

Mai 31

Java + MongoDB + Spring Data

Escrito por Ebercom em 1, 2.0, 2009, 4, 6, api, app, AR, auto, back, BI, C#, case, class, collection, configuração, dados, demo, email, exemplo, Flex, for, git, Hibernate, IE, if, int, interface, Java, JPA, lista, map, mg, O, on, Opinião, Outros, PHP, RIA, Ria’s Geral, S+S, Spring, string, super(), tag, TAT, Tecnologia, template, UI, XML @ 05 31st, 2011 | via http://www.flexdev.com.br/home | Sem comentários
Ebercom
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá.

A alguns dias escrevi um post sobre PHP + MongoDB e recebi um feedback muito positivo
então resolvi repetir a dose e mostrar um pouco da integração entre Java e MongoDB.

Na minha opinião essa é uma das principais vantagens do MongoDB em relação a outros bancos de dados NoSQL,
O MongoDB e extremamente fácil de se integrar com a maioria das linguagens.

Neste Post vou falar um pouco sobre o MongoDB e a integração com o java utilizando o Spring Data.
O MongoDB fornece o mongo-java-driver que atualmente esta na versão 2.6.X é uma API completa para acessar o MongoDB.
O Spring Data é um projeto recente, lançado em 2010, ele oferecer suporte a novas tecnologias não relacionais, suporte a extensões específicas a bancos de dados relacionais. Spring Data trabalha como uma camada intermediária entre seus POJOs e o MongoDB.

Nesse exemplo estou usando o maven para gerencias as dependências do projeto
Então alem das dependências habituais do projeto: Spring, JUnit e etc.. vamos precisar adiciona ao pow.xml as dependências do MongoDB e Spring Data

pow.xml

Feito isso as dependências do projeto estão configuradas e podemos partir para a configuração do spring.
A configuração é bem simples, nesse exemplo existem apenas 2 beans que configuram o MongoDB e Spring Data mongoTemplate e mongo

applicationContext.xml

O Spring Data oferece uma serie de anotações que permitem mapear o POJO de forma bem similar ao Hibernate/JPA
Contact.java

@Document(collection="contacts")
public class Contact 
    @Id
    private ObjectId id;
    private String name;
    private String email;

  //getter and setter methods 
  ...

E é através do mongoTemplate que vamos interagir com o MongoDB por exemplo :

@Autowired
MongoTemplate template;

// insere um novo registro		
template.insert("contacts", contact);

// insere/altera um registro
template.save("contacts", contact);

// remove um registro
template.remove(contact);

// lista todos os registros
List list = template.getCollection(collectionName, Contact.class);

Apesar do Spring Data suportar o JPA repository fiz uma implementação genérica para um repositório usando o Spring Data.

GenericRepositoryWithMongo.java – Repositório genérico

public abstract class GenericRepositoryWithMongo 

  @Autowired
  protected MongoTemplate template;
  protected Class targetClass;
  protected String collectionName;

  @SuppressWarnings("unchecked")
  public GenericRepositoryWithMongo() 
     this.targetClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
  

  @PostConstruct
  public void initCollection() 
    if(this.targetClass.isAnnotationPresent(Document.class))
      Document document   = this.targetClass.getAnnotation(Document.class);
      this.collectionName = document.collection();
    
    else
      this.collectionName = this.targetClass.getSimpleName().toLowerCase();
    
  }

  public List getCollection() 
    return template.getCollection(collectionName, targetClass);
  

  public void persist(T entity) 
    template.insert(collectionName, entity);
  

  public void merge(T entity) 
    template.save(collectionName, entity);
  

  public void remove(T entity) 
    template.remove(entity);
  

  public List findAll() 
    return getCollection();
  

  public long count() 
    return getCollection().size();
  
}

E então a interface do repositório e sua implementação

ContactRepository.java – Repositório de contatos

public interface ContactRepository 

    public Contact findByEmail(String email);

    public void persist(Contact entity);

    public void merge(Contact entity);

    public void remove(Contact entity);

    public List findAll();

ContactRepositoryImpl.java – Implementação do repositório de contatos

@Service("contactRepository")
@Repository
public class ContactRepositoryImpl extends GenericRepositoryWithMongo implements ContactRepository

	public Contact findByEmail(String email) 
	   Criteria criteria	 = Criteria.where("email").is(email);
	   Query query 	         = new Query(criteria);
	   return template.findOne(query, targetClass);
	
}

Realmente me surpreendi com a facilidade da integração usando o Spring Data
é um exemplo bem simples da integração porem mais da o caminho das pedras para quem esta se aventurando no mundo NoSQL.
Espero que seja util..

Para quem tiver o interesse deixei app no git
https://github.com/FabioBatSilva/spring-mongodb

Abraço e até a próxima….

Click aqui para ver o post Original
Fábio B. Silva
Fabio B. Silva
http://www.flexria.com.br

« Entradas anteriores | Entradas recentes »

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com