logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Abr 14

Quando o Design é contra o Design

Escrito por DClick Team em 1, 2.0, 4, AR, Artigo, C#, Design, Diversos, O, on, Ria’s Geral, S+S, UI, user experience @ 04 14th, 2012 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? 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 »

Sei que o título do artigo é no mínimo curioso, mas a idéia dele é exatamente essa, tratar de como e quando o Design pode ser contra o Design. Eu atuo na área de Design há muito, muito tempo, digamos, desde os meus 15 anos, em diversos segmentos do Design até chegar ao Design…

Continue Lendo
Abr 12

Teoria das cores – Abordagem para UI

Escrito por DClick Team em 1, 2.0, 4, AR, Artigo, C#, Design, designer, O, on, RIA, Ria’s Geral, S+S, Sun, Tema, UI, user experience @ 04 12th, 2012 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? 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 »

Para nós designers esse é um tema um tanto quanto saturado não? Teorias das Cores, todos já ouvimos falar, já estudamos, já cansamos de entender o que são cores análogas, cores frias, quentes, etc etc. Pois é pelo motivo de estarmos já saturados desse assunto que quero tratar dele. Vamos falar aqui nesse artigo…

Continue Lendo
Mar 18

UX – Modelos Mentais, Design Intuitivo?

Escrito por DClick Team em 1, 2.0, AR, Arquitetura, Artigo, BI, C#, Design, for, Formação, int, O, on, Ria’s Geral, S+S, Tema, UI, usabilidade, user experience, UX @ 03 18th, 2012 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? 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 »

É praticamente impossível tratar o tema de Usabilidade, Arquitetura de Informação e por fim UX, sem tratarmos dos aspectos psicológicos do ser humano. Mas, não quero vir aqui com terminologias e mais terminologias, o que procuro fazer é tentar “humanizar” o artigo para facilitar o seu entendimento e trazer a idéia para ser discutida….

Continue Lendo
Fev 9

UROI – Usability Return on Investment (Retorno sobre o Investimento na Usabilidade)

Escrito por DClick Team em 1, 2.0, Air, AR, Artigo, C#, O, on, Ria’s Geral, RoR, S+S, usabilidade, user experience @ 02 9th, 2012 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? 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 »

O ROI, Retorno de Investimento, do termo inglês Return on Investiment, ou ainda, ROR, Rate of Return, mede obviamente o ganho ou a perda em pequeno, médio ou longo prazo dentro de um projeto, em relação ao que foi investido. Resolvi dar o título desse artigo de UROI, para não atrair a ele investidores de…

Continue Lendo
Dez 27

Flex com PHP usando ZendAMF – Zend_Db

Escrito por Leonardo França em .NET, 1, 2.0, 2009, 4, abas, action, Actionscript, Actionscript 3.0, Actionscript3, Adobe, Adobe Flex, AMF, amfphp, AR, Artigo, Banco de Dados, C#, catch, class, classe, classes, dados, email, exemplo, filter, Flex, framework, function, Google, handle, html, if, image, int, Java, lista, live, mg, mysql, O, on, Password, PHP, pt, Ria’s Geral, S+S, server, site, TAT, Tema, try, UI, uint, update, Ved, zend, Zend Amf, zendAMF, zendFramework @ 12 27th, 2011 | via http://www.leonardofranca.com.br | Sem comentários
Leonardo França
? 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 »

O artigo Adobe Flex com PHP usando ZendAMF – primeiros passos teve como objetivo exemplificar a integração do Flex com PHP para quem já tinha sistemas desenvolvidos usando o AMFPHP, por isso não usei as classes para acesso a banco de dados do ZendFramework. Neste artigo mostrarei o mesmo exemplo mas usando exclusivamente ZendFramework.

Pegarei o mesmo exemplo utilizado no artigo anterior, só modificando a classe PHP para usar as classes de abstração de banco de dados do ZendFramework. Começaremos com nosso gateway.php

PLAIN TEXT
PHP:

  1. require_once ‘Zend/Config.php’;
  2. require_once ‘Zend/Db.php’;
  3. require_once ‘Zend/Amf/Server.php’;
  4. require_once ‘Zend/Amf/Exception.php’;
  5. require_once ‘Zend/Amf/Server.php’;
  6. $server = new Zend_Amf_Server();
  7. $server->setProduction(false);
  8. $server->setClass(‘Contato’);
  9. echo($server->handle());
  10. ?>

Executando o link no seu navegador, deve aparecer a seguinte mensagem:

Zend Amf Endpoint

Em seguida, modificaremos em nossa classe principal, que efetuará as operações de listar, inserir, apagar e atualizar os dados do nosso banco:

PLAIN TEXT
PHP:

  1. /*
  2. * author Leonardo França
  3. * site http://www.leonardofranca.com.br
  4. */
  5. class Contatos
  6. private $db;
  7. private $config;
  8. private $select;
  9. private $stmt;
  10. function __construct()
  11. $params['host'] = ‘localhost’;
  12. $params['dbname'] = ‘java’;
  13. $params['username'] = ‘root’;
  14. $params['password'] = ”;
  15. $database['adapter'] = ‘Mysqli’;
  16. $database['params'] = $params;
  17. $data['database'] = $database;
  18. $this->config = new Zend_Config($data);
  19. $this->db = Zend_Db::factory($this->config->database);
  20. public function getData()
  21. try
  22. $this->select = $this->db->select();
  23. $this->select->from(‘tabela’,array(‘id’,‘nome’,‘email’));
  24. $this->stmt = $this->select->query();
  25. $result = $this->stmt->fetchAll();
  26. return $result;
  27. catch (Exception $e)
  28. throw new Exception($e->getMessage());
  29. }
  30. public function insertData($data=array())
  31. try
  32. $dados = array(
  33. ‘nome’ => $data['nome'],
  34. ‘email’ => $data['email']
  35. );
  36. $retorno = $this->db->insert(‘tabela’, $dados);
  37. return $retorno;
  38. catch (Exception $e)
  39. throw new Exception($e->getMessage());
  40. }
  41. public function deleteData($data=array())
  42. try
  43. $retorno = $this->db->delete(‘tabela’, ‘id = ‘.$data['id']);
  44. return $retorno;
  45. catch (Exception $e)
  46. throw new Exception($e->getMessage());
  47. }
  48. public function updateData($data=array())
  49. try
  50. $dados = array(
  51. ‘nome’ => $data['nome'],
  52. ‘email’ => $data['email']
  53. );
  54. $where['id = ?'] = $data['id '];
  55. return $this->db->update(‘tabela’, $dados, $where);
  56. catch (Exception $e)
  57. throw new Exception($e->getMessage());
  58. }
  59. }
  60. ?>

No ActionScript só precisaremos mudar o que será passado para o PHP, ao inves de VOs, mandaremos Arrays:

PLAIN TEXT
ACTIONSCRIPT3:

  1. public function insertData():void
  2. var contatosVO:Array = [];
  3. contatosVO['nome']= input_nome.text;
  4. contatosVO['email'] = input_email.text;
  5. ro.insertData(contatosVO);

Referências:
http://framework.zend.com/manual/en/zend.db.adapter.html

Dez 14

O eCommerce brasileiro em 2011

Escrito por Igor Musardo em 1, 2.0, 4, 6, AR, arte, Artigo, Artigos, BI, C#, class, Curso, Desenvolvimento, Dica, e-commerce, empresas, err, esporte, exemplo, Ferramenta, for, Geral, ide, if, image, imagens, int, Mate, Mercado, mg, O, on, online, Outros, portal, produto, RIA, Ria’s Geral, S+S, Segurança, site, tag, Tema, UI, XP @ 12 14th, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? 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 »

O portal E-commerce Brasil realizou recentemente uma pesquisa com as principais lojas virtuais do pa?s com o objetivo de saber mais sobre as plataformas utilizadas.

Plataforma Pr?pria x Tercerizada

O primeiro aspecto espec?fico analisado foi exatamente se os e-commerces trabalham com plataforma pr?pria, ou terceirizada. Descobriu-se que 53,86% das empresas t?m sua pr?pria plataforma e 46,15% utilizam um servi?o terceirizado.

ERP?

Verificou-se, tamb?m, quantas empresas possuem o Enterprise Resource Planning – ERP integrado o seu sistema. A diferen?a em porcentagem entre as que possuem e as que n?o ? pequena. 57,69% delas afirmaram ter o ERP integrado, e 42,31% alegaram n?o ter. Na ?rea de desenvolvimento, 42,31% das lojas virtuais possuem equipe pr?pria, mas 57,69% prefeririam n?o informar a respeito.

Atendimento Online

Outro fator analisado foi a exist?ncia de atendimento online, em tempo real, aos consumidores durante a realiza??o da compra. Essa ferramenta utilizada pelos e-commerces facilita para os consumidores tirarem suas d?vidas a cerca do produto, da entrega e dos prazos, por exemplo. A grande maioria das lojas virtuais entende a import?ncia desse recurso e 61,54% afirmam utiliz?-lo para facilitar a intera??o com o seu p?blico. 38,46% n?o fazem uso do atendimento via chat.

Selos de Seguran?a

A grande maioria dos sites utiliza com algum selo de seguran?a, o que visa trabalhar, ainda mais, a confian?a do p?blico alvo na empresa. Esse n?mero chega ao 73,08% dos sites pesquisados. E apenas 26,92% deles ainda n?o possuem algum selo.

Como expor os produtos no e-commerce

Uma parte da pesquisa trata dos produtos disponibilizados nas lojas virtuais: como eles s?o divididos no site, suas categorias, se possuem fotos para ilustra??o e se possuem um est?dio pr?prio para cadastro do produto.

Categorias

Ao catalogar em quantas categorias os produtos normalmente s?o divididos no site, obtevese uma gama de resultados que variam entre uma e nove categorias diferentes. Pouco mais da metade das empresas, cerca de 57,69%, fazem essa divis?o em nove categorias diferentes. Uma parcela de 11,54% trabalha apenas com duas categorias e 7,69% das lojas virtuais pesquisadas trabalham com duas divis?es: tr?s e cinco categorias diferentes. Apenas 3,85% das empresas trabalham com uma categoria. A mesma porcentagem trabalha com quatro, seis e oito categorias diferentes.

Fotos

As fotos que ilustram os produtos servem para que o consumidor possa conhec?-lo, observar seus aspectos materiais e ter uma ideia do tamanho e do peso, por exemplo.
88,46% das empresas participantes da pesquisa alegaram utilizar imagem para identificar o produto em mais de 90% das suas ofertas. 3,85% das lojas fazem uso das imagens em 70% dos seus produtos e a mesma parcela alegou o faz em at? 90% dos casos.
Sobre os est?dios pr?prios para o cadastramento de seus produtos, a pesquisa revelou que 73,08% das lojas o possuem e 26,92% n?o.

Uma vis?o geral sobre os e-commerces analisados

A pesquisa observou o setor em que essas lojas virtuais trabalham. Em primeiro lugar est?o as voltadas para a moda masculina, com 23,08% do mercado. Em seguida, com 19,23%, est?o as lojas voltadas para eletr?nicos e inform?tica. O setor de alimentos ocupa cerca de 5,38% do mercado e o de animais de estima??o, 11,54%. O ramo de esportes tem uma parcela de 7,69% e o de marketing e embalagens, 3,85% cada.
O tempo de exist?ncia do e-commerce na rede ? um fator significante, que pode influenciar no n?mero de vendas realizadas. Quanto maior esse tempo, maiores as chances do p?blico estar familiarizado com a empresa, criar uma rela??o com a mesma e gerar, afinal, credibilidade e confian?a nos seus servi?os. A pesquisa revelou que 34,62% das lojas virtuais existem h?, no m?ximo, tr?s anos. Outros 30,77% est?o no mercado h? menos de um ano e uma parcela de 23,08% tem de tr?s a cinco anos. Apenas 11,54% dessas empresas existem h? mais de cinco anos.

Dez 14

Dicas para ser levado a sério

Escrito por Igor Musardo em .NET, 1, 2.0, 4, api, app, AR, arte, Artigo, auto, BI, C#, Censo, class, cliente, Curso, Dica, Emprego, err, fonte, for, Geral, html, ide, IE, if, image, int, Liderança, lista, Mercado de Trabalho, mg, Motivação, O, on, Outros, Pessoal, problema, pt, RIA, Ria’s Geral, S+S, UI, VOZ, XP @ 12 14th, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? 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 »

Voc? j? percebeu que, em qualquer grupo, algumas pessoas s?o naturalmente levadas a s?rio, e outras n?o? E isso raramente tem rela??o com ser ou n?o sisudo – o indiv?duo de gravata com mais cara de brabo e sem gra?a numa equipe pode n?o ser levado a s?rio por ningu?m, e o colega que est? sempre de bom humor pode ser visto com respeito por todos.

O que h? em comum entre as pessoas que s?o levadas a s?rio? ? dif?cil fazer uma lista completa, mas no caso das pessoas em posi??o de lideran?a (formalizada ou n?o), eu gosto de uma defini??o de W. E. B. Griffin: o que elas dizem tem um tom especial, que indica “eu serei levado a s?rio” – ou “eu serei obedecido”, no caso da lideran?a aliada a chefia formal. Mas esse tom n?o ? produzido pela voz, e sim pelas atitudes, que aos poucos conquistam o respeito dos que est?o ao seu redor.

E o que os outros v?em em n?s, por interm?dio das nossas atitudes, come?a nas nossas escolhas e no modo como n?s mesmos nos vemos – em outras palavras, o caminho come?a quando n?s mesmos come?amos a nos levar suficientemente a s?rio. O artigo “5 Reasons People Don’t Take You Seriously and How to Fix It” apresenta uma s?rie de raz?es pelas quais as pessoas podem n?o estar levando voc? a s?rio, e convido voc? a pass?-las rapidamente em revista neste meu resumo.

Vamos a elas:

N?o manter a palavra

Isso n?o significa exatamente a mesma coisa que “ser mentiroso”, neste contexto. Significa anunciar freq?entemente planos e inten??es que na pr?tica voc? acaba n?o realizando, fazer promessas que n?o poder? cumprir, ou mesmo que n?o pretende cumprir. A cada m?s voc? anuncia que vai fazer uma dieta, que vai melhorar as condi??es de trabalho da equipe, e que no s?bado que vem vai levar a fam?lia toda para a praia – e nunca cumpre? Ent?o pare de anunciar que vai fazer as coisas que dependem apenas de voc?, e adote a pol?tica de faz?-las primeiro, e anunciar seu sucesso depois.

N?o dar continuidade

Voc? come?a e n?o prossegue? Paga a academia e s? vai na primeira semana? Come?a o curso de ingl?s e deixa de ir j? no segundo m?s? Ningu?m vai lev?-lo a s?rio assim. Comece a compor planos de metas sucessivas, em degraus, e persiga cada uma das metas com aten??o. E comece menos coisas. E… veja novamente o item 1.

N?o separar trabalho e vida pessoal

N?o h? problema nenhum em ir para a happy hour com os colegas de trabalho, ser pr?ximo dos clientes, ou ter amizades reais no ambiente de trabalho. Mas – a n?o ser em casos espec?ficos – colegas de equipe e clientes n?o deveriam ser todos os seus *melhores* amigos, e deve haver um limite a partir do qual a sua vida pessoal fica reservada em rela??o ao conjunto geral deles. Todo mundo tem seus desafios, e uma parte deles precisa transparecer; a outra parte deve ficar acess?vel apenas a quem tem interesse positivo e genu?no nela – n?o necessariamente seus colegas, clientes ou fornecedores.

Dar mais desculpas do que resultados

Releia o item 1, e depois fa?a mentalmente uma lista das pessoas que voc? conhece e que t?m sempre uma desculpa na ponta da l?ngua para explicar por que n?o cumpriram aquilo que disseram que fariam, ou por que a culpa n?o ? dela. Dar desculpas ? um h?bito companheiro da procrastina??o, e leva as pessoas a n?o levarem voc? a s?rio. Fa?a acontecer, ou n?o se proponha.

Andar com a turma errada

Esta tem v?rias alternativas – se as pessoas com quem voc? se associa s?o exatamente as que voc? deseja se associar, francamente, permane?a com elas e se concentre em outras formas de ser visto com seriedade pelos demais. Mas se voc? est? associado sem raz?o, e freq?entemente questiona a atitude e as decis?es destas pessoas, pare para pensar se quem olha de fora n?o faz os mesmos questionamentos em rela??o a voc?. Mas seja aut?ntico – nada de abandonar amizades genu?nas ou virar a casaca pensando apenas na sua imagem – isso s? far? com que ainda mais pessoas deixem de levar voc? a s?rio.
Agora, fa?a voc? um r?pido censo mental das pessoas em posi??o de lideran?a com quem convive no trabalho ou em outro lugar, e que n?o s?o levadas a s?rio pelos seus p?blicos, e em seguida fa?a tamb?m uma auto-an?lise – talvez voc? reveja algum conceito! Depois compartilhe conosco nos coment?rios quais as caracter?sticas mais freq?entes que impedem os seus colegas de levarem a s?rio os l?deres das suas equipes!
Fonte: Efetividade

Dez 6

Comprimir arquivos Javascript

Escrito por Stefan Horochovec em Adobe, Adobe Flex, app, AR, Artigo, BI, C#, css, Dica, Dicas, Flex, IE, int, Java, Javascript, O, Otimização, Pessoal, pt, Ria’s Geral, S+S, site, UI @ 12 6th, 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, Depois de alguns anos trabalhando com Adobe Flex, estou de volta ao Javascript e CSS. Interessante voltar a esse ambiente, bastante desafiador, diga-se de passagem. Nesse artigo, quero comentar com vocês algumas dicas sobre como comprimir seus arquivos Javascript para uma otimização na hora de distribuir sua app ou seu site. O artigo [...]

Nov 16

LCCS e PHP com ZendAMF

Escrito por Leonardo França em .NET, 1, 2.0, 4, Adobe, AMF, amfphp, AR, Artigo, Artigos, C#, catch, class, classe, classes, developer, Documentação, exemplo, Exemplos, flash, Flex, Flex 4, for, framework, function, handle, image, int, Java, Javascript, live, LiveCycle, Mercado, mg, O, on, Password, PHP, player, portal, programação, pt, rest, RIA, Ria’s Geral, S+S, SDK, server, swf, Teste, try, UI, web, zend, zendAMF, zendFramework @ 11 16th, 2011 | via http://www.leonardofranca.com.br | Sem comentários
Leonardo França
? 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 »

O Adobe LiveCycle Collaboration Service possui em seu SDK, exemplos de integração com as principais linguagens de programação web do mercado como PHP, Java, Python, etc.
Na documentação da Adobe, é recomendado o uso do AMFPHP ou o PHP puro mesmo, mas nada impede de usar tranquilamente em conjunto com o ZendFramework (usando ZendAMF)
Ryan Stewart escreveu dois artigos mostrando a implementação com PHP e REST.

  • http://ria.dzone.com/articles/integrating-php-flash
  • http://ria.dzone.com/articles/php-flash-rest

Uma observação sobre o artigo de Ryan, no Flex 4, Adobe passou a usar o swfobject, então o modo de pegar os parâmetros via URL e passar para o SWF fica desse modo:

PLAIN TEXT
JAVASCRIPT:

  1. var xiSwfUrlStr = “playerProductInstall.swf”;
  2. var flashvars = ;
  3. flashvars.roomURL = swfobject.getQueryParamValue(“roomURL”);
  4. flashvars.authToken = swfobject.getQueryParamValue(“authToken”);
  5. var params = ;

No SDK do LCCS, existe um arquivo chamado lccs.php, basta copiar para o mesmo diretório em que você já usa suas classes. Em seguida, adicionar o include no arquivo gateway.php

PLAIN TEXT
PHP:

  1. require_once ‘Zend/Amf/Server.php’;
  2. require_once ‘lccs.php’;
  3. require_once ‘Test.php’;
  4. /** Bootstrap */
  5. // Instantiate server
  6. $server = new Zend_Amf_Server();
  7. $server->setProduction(false);
  8. $server->setClass(‘Test’);
  9. // Handle request
  10. echo($server->handle());
  11. ?>

E está é uma simples classe para teste chamando o método que retorna o token para autenticação.

PLAIN TEXT
PHP:

  1. class Test
  2. private $account;
  3. private $room;
  4. private $devUsername;
  5. private $devPassword;
  6. private $secret;
  7. //$accountURL = “https://collaboration.adobelivecycle.com/$account”;
  8. private $accountURL;
  9. private $roomURL;
  10. function __construct()
  11. //for LCCS
  12. $this->account = “Your SDK account username from LCCS developer portal”;
  13. $this->room = “The room you want to connect to”;
  14. $this->devUsername = “Your LCCS developer account username”;
  15. $this->devPassword = “Your LCCS developer account password”;
  16. $this->secret = “The shared secret from the LCCS developer portal”;
  17. //$accountURL = “https://collaboration.adobelivecycle.com/$account”;
  18. $this->accountURL = “http://connectnow.acrobat.com/$this->account“;
  19. $this->roomURL = “$this->accountURL/$this->room“;
  20. public function getToken($data=array())
  21. try
  22. $this->account = new RTCAccount($this->accountURL);
  23. $this->account->login($this->devUsername,$this->devPassword);
  24. $session = $this->account->getSession($data['room']);
  25. $displayName = $data['displayName'];
  26. $username = $data['username'];
  27. $role = $data['role'];
  28. $token = $session->getAuthenticationToken($this->secret, $displayName, $username, $role);
  29. return $token;
  30. catch (Exception $e)
  31. throw new Exception($e->getMessage());
  32. }
  33. }
  34. ?>
Out 30

Windows Phone Mango – Local Database

Escrito por Alexandre Tadashi em .NET, 1, 2.0, 4, 6, abas, AMF, Aplicativos, app, AR, Arquitetura, arte, Artigo, auto, BI, blog, Blogs, botão, C#, camp, class, classe, classes, cliente, código, collection, cultura, Curso, Cursos, dados, demo, desempenho, Desenvolvedor, Design, designer, Documentação, dotnet, DRE, err, event, Evento, exemplo, Ferramenta, for, Formação, handle, html, ide, IE, if, int, interface, layout, library, Links, linq, Linq to Sql, map, mg, Microsoft, monitor, MSDN, mudanças, O, on, Otimização, Outros, Partilha, processo, pt, rest, RIA, Ria’s Geral, S+S, SDK, server, serviço, silverlight, SQL Server, state, string, TAT, Tecnologia, Tema, template, Treinamento, UI, UX, Ved, vs, window, windows, XAML @ 10 30th, 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 »

Na versão Mango do Windows Phone, você pode manipular uma base de dados localmente, chamada de local database na documentação oficial, o recurso permite que o desenvolvedor crie aplicativos com registros de dados em tabelas, além de manipular seus registros utilizando o LINQ to SQL.

Uma base de dados local no WP7 fica localizada no Isolated Storage, um local acessível somente pela aplicação corrente, a arquitetura fica conforme a figura abaixo, onde temos a aplicação que contém um DataContext e através de LINQ to SQL, fazemos o acesso a base de dados local no Isolated Storage

Arquitetura Local Database

Arquitetura Local Database

Para saber mais sobre Isolated Storage acessem os links:

http://msdn.microsoft.com/en-us/library/ff402541(v=vs.92).aspx

http://www.windowsphonebrasil.net/windowsphonebrasil/post/2010/10/08/Salvando-e-restaurando-o-Application-State-no-Windows-Phone-7.aspx

No WP7 as aplicações ficam eram áreas isoladas uma das outras, ou seja, uma aplicação não tem acesso ao Isolated Storage de outra aplicação, portanto até o momento não é possível compartilhar uma base de dados local com diversas aplicações. Diferente de uma base de dados SQL Server, um local database não pode rodar como um serviço continuo, visto que ele é executado somente durante o processo da aplicação.

Você pode criar um local database para manipular uma quantidade de dados razoável utilizando as facilidades de consultas do LINQ to SQL juntamente com o relacionamento de tabelas, similar a uma base de dados comum, o local database é uma implementação do SQL CE para o WP7, permitindo realizar facilmente tarefas com incluir, alterar , excluir e realizar consultas com LINQ.

Até o momento não existe uma ferramenta de designer visual e oficial para criar as tabelas, relacionamentos, etc, com a base de dados local, o que poderia facilitar muito, neste artigo faremos um exemplo simples, somente com uma tabela, porém, em um projeto mais complexo, essa tarefa poderia ser um pouco trabalhosa, uma forma não oficial de criar o modelo seria utilizar o SQL Metal, para mais informação, acessem o Centro de Treinamento Oficial do Windows Phone no MSDN ou através do link : http://windowsphonegeek.com/articles/Using-SqlMetal-to-generate-Windows-Phone-Mango-Local-Database-classes .

Com o SQL Metal podemos criar o Data Context através de um comando e com poucas modificações deixá-lo compatível com o Mango e poupar a codificação manual da criação de tabelas e relacionamentos.

Exemplo de comando do SQL Metal:

%ProgramFiles(x86)%Microsoft SDKsWindowsv7.0ABin>SqlMetal.exe
/code:”C:CaminhoClienteDC.cs” “C:CaminhoClienteDB.sdf”

Outras formas:

http://claudiufarcas.blogspot.com/2011/10/windows-phone-mango-sql-ce-tips-and.html

http://blogs.ugidotnet.org/corrado/archive/2011/06/05/using-local-database-in-wp7-mango.aspx

Nesta primeira parte do artigo vou criar uma base de dados muito simples, com uma tabela somente e um único campo, dessa forma podemos focar em como criar e entender os conceitos envolvidos Vou criar uma base de dados Cliente.sdf, com uma tabela chamada Cliente e um campo chamado Nome.

A primeira classe que vamos criar é a entidade Cliente e decorar com alguns atributos utilizados para a manipulação da base de dados, a classe servirá de apoio para a criação da tabela cliente. Para que você possa inserir os atributos nas propriedades da classe, é necessário adicionar o using System.Data.Linq.Mapping, em seguida adicione o atributo [Table] logo acima da criação da classe e adicione o atributo [Column()] em cada propriedade, na primary key da tabela, personalize com :

[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]

Dessa forma a coluna será criada na tabela como sendo Primary Key, não permitindo registros duplicados e gerando automaticamente um número a cada inclusão. Com a adição do atributo Column() nas outras propriedades, cada coluna correspondente será criado na tabela.

Com os atributos de colunas você pode definir uma série de recursos, para saber quais são os atributos de colunas que você pode utilizar no LINQ to SQL para WP7 acesse o link http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.columnattribute(VS.95).aspx

Um atributo em especial que adiciona uma coluna de versão pode auxiliar no desempenho de grandes atualizações de dados, apresentando uma significativa melhoria na aplicação, é o IsVersion=true, essa otimização é exclusiva para o LINQ to SQL do WP7 e usado internamente para identificar a versão da coluna modificada:

[Column (IsVersion = true)]
_VERSION Binary privado;

Igualmente importantes são os atributos de associações, que permitem realizar o relacionamento entre as tabelas, para mais informações acesse:

http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.associationattribute(v=VS.95).aspx

Exemplo de Associação:

[Association(Storage = "_cliente", ThisKey = "_clienteId", OtherKey = "Id", IsForeignKey = true)]

Código da Classe Cliente:

? ? ?  [Table]
? ? ?  public class Cliente : INotifyPropertyChanged, INotifyPropertyChanging
? ? ?  
? 
? ? ? ? ? ? ?  #region INotifyPropertyChanged Members
? 
? ? ? ? ? ? ?  public event PropertyChangedEventHandler PropertyChanged;
? 
? ? ? ? ? ? ?  private void NotifyPropertyChanged(string propertyName)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  if (PropertyChanged != null)
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  #endregion
? 
? ? ? ? ? ? ?  #region INotifyPropertyChanging Members
? 
? ? ? ? ? ? ?  public event PropertyChangingEventHandler PropertyChanging;
? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ?  private void NotifyPropertyChanging(string propertyName)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  if (PropertyChanging != null)
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  #endregion
? 
? 
? ? ? ? ? ? ?  [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
? ? ? ? ? ? ?  private string id;
? ? ? ? ? ? ?  public string Id
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  get
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  return id;
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  set
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  if (id != value)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanging("Id");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  id = value;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanged("Id");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? 
? ? ? ? ? ? ?  [Column()]
? ? ? ? ? ? ?  private string nome;
? ? ? ? ? ? ?  public string Nome
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  get
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  ? ? ? ? ? ? ? ? return nome;
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  set
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  if (nome != value)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanging("Nome");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  nome = value;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanged("Nome");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? 
? 
? ? ?  }

Em aplicações Silverlight é comum implementar a interface INotifyPropertyChanged para monitorar mudanças nas propriedades da classe , e tirar um melhor proveito do recursos de databinding da tecnologia, para auxiliar o LINQ to SQL, também vamos implementar a interface INotifyPropertyChanging, com ela é possível monitorar quando uma propriedade será modificada e com isso o DataContext é informado e pode identificar as mudanças e melhorar a performance da aplicação.

O Data Context é o local onde definimos o contexto dos dados que servirão para criar a base de dados local, o LINQ to SQL depende do mapeamento entre o modelo de objetos e o esquema da base de dados. Dependendo da complexidade do modelo, esse arquivo pode ser trabalhoso de ser criado manualmente, mas existem formas de utilizar alguma ferramenta para cria-lo, o SQL Metal é uma delas conforme comentado acima no artigo.

Crie uma classe chamada ClienteDataContext , ela vai herdar de DataContext, o DataContext contém diversas propriedades e métodos que auxiliam na manipulação de base de dados, como por exemplo, verificar se uma base de dados existe, criar e excluir uma base de dados, entre outros, mais adiante vamos utilizar o método CreateDatabase() para criar fisicamente a base de dados local no Windows Phone.

A próxima etapa é criar a string de conexão com a base de dados, utilizaremos a palavra chave “isostore” para informar que o arquivo ficará no Isolated Storage, após isso informaremos o nome da base de dados como Cliente.sdf. É na string de conexão que você pode inserir um senha de acesso a base de dados, informar uma cultura específica ou até mesmo criar uma base de dados somente leitura, para mais informações sobre string de conexões para o WP7 acesse http://msdn.microsoft.com/en-us/library/hh202861(v=vs.92).aspx

Por último vamos definir uma tabela Cliente de acesso público e única no DataContext através de public Table Cliente.

No App.xaml.cs da aplicação , localize o construtor da classe e no final adicione o código abaixo, neste momento vamos criar uma base de dados usando o DataContext criado anteriormente, o código verifica se existe uma base de dados e caso não exista ele já cria uma nova base de dados.

using (ClienteDataContext ctx = new ClienteDataContext(ClienteDataContext.DBConnectionString))

? ? ?  if (ctx.DatabaseExists() == false)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ?  ctx.CreateDatabase();
? ? ? ? ? ? ?  
? 
}

Para finalizar o artigo vou criar uma tela simples em Silverlight, sem se preocupar com o layout, a tela tem um botão chamado “add” que vai adicionar um registro na base de dados e logo abaixo um ListBox chamado “lst”, que está ligado através de databinding a propriedade ItemSource com uma ObservableCollection chamada Items, na propriedade Text vamos mostrar o nome do cliente também ligando através de databinding.


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  ? Grid.Row="1" Margin="12,0,12,0">
? ? ? ? ? ? ? ? ? ? ?  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? 

No constructor do MainPage vamos criar uma instância do DataContext chamado clienteDB :

clienteDB = new ClienteDataContext(ClienteDataContext.DBConnectionString);

No evento ? Loaded da MainPage, realizamos um consulta LINQ to SQL e já adicionamos o resultado em uma ObservableCollections chamada Items, que está ligado ao ItemSource da ListBox, veja como é prático ligar as informações na tela, neste exemplo como o foco é o conceito de local database, o projeto foi criado todo no code-behind da MainPage, mas você poderia criar usando o ViewModel e ligando o ObservableCollection com a View.

var result = from Cliente r in clienteDB.Cliente
select r;
Items = new ObservableCollection(result);

Para mais informações sobre LINQ:

http://msdn.microsoft.com/en-us/library/bb397897.aspx

http://msdn.microsoft.com/en-us/library/bb386976.aspx

http://msdn.microsoft.com/en-us/library/bb386913.aspx

Vamos agora para o código do botão “add” que vai adicionar os registros na base de dados, através do InsertOnSubmit() adicionamos o objeto ao DataContext e através do SubmitChanges(), o objeto é registrado na base de dados, por último, inserimos o objeto na coleção para que seja apresentado na tela.

Cliente c = new Cliente();
c.Nome = txtNome.Text;
clienteDB.Cliente.InsertOnSubmit(c);
clienteDB.SubmitChanges();
Items.Add(c);

?

Código completo da MainPage:

? ?  public partial class MainPage : PhoneApplicationPage, INotifyPropertyChanged
? ? ?  
? ? ? ? ? ? ? ?  ClienteDataContext clienteDB;
? ? ? ? ? ? ? ?  #region INotifyPropertyChanged Members
? ? ? ? ? ? ? ?  public event PropertyChangedEventHandler PropertyChanged;
? ? ? ? ? ? ? ?  private void NotifyPropertyChanged(string propertyName)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  if (PropertyChanged != null)
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? ?  #endregion
? ? ? 
? ? ? ? ? ? ?  private ObservableCollection _items;
? ? ? ? ? ? ?  public ObservableCollection Items
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  get
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  return _items;
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  set
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  if (_items != value)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  _items = value;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanged("Items");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  }
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? 
? ? ? ? ? ? ?  // Constructor
? ? ? ? ? ? ?  public MainPage()
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  InitializeComponent();
? ? ? ? ? ? ? ? ? ? ?  clienteDB = new ClienteDataContext(ClienteDataContext.DBConnectionString);
? ? ? ? ? ? ? ? ? ? ?  this.DataContext = this;
? ? ? ? ? ? ? ? ? ? ?  Loaded += new RoutedEventHandler(MainPage_Loaded);
? ? ? ? ? ? ?  
? ? ? ? ? ? ?  void MainPage_Loaded(object sender, RoutedEventArgs e)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  var result = from Cliente r in clienteDB.Cliente
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  select r;
? ? ? ? ? ? ? ? ? ? ?  Items = new ObservableCollection(result);
? ? ? ? ? ? ?  
? ? ? ? ? ? ?  private void add_Click(object sender, RoutedEventArgs e)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  Cliente c = new Cliente();
? ? ? ? ? ? ? ? ? ? ?  c.Nome = txtNome.Text;
? ? ? ? ? ? ? ? ? ? ?  clienteDB.Cliente.InsertOnSubmit(c);
? ? ? ? ? ? ? ? ? ? ?  clienteDB.SubmitChanges();
? ? ? ? ? ? ? ? ? ? ?  Items.Add(c);
? ? ? ? ? ? ?  
? ? ?  }

Links:

Boas Práticas:

http://msdn.microsoft.com/en-us/library/hh286406(v=vs.92).aspx

Mais informações sobre local database no Windows Phone :

http://msdn.microsoft.com/en-us/library/hh202860(v=vs.92).aspx

http://msdn.microsoft.com/en-us/library/hh202876(v=VS.92).aspx

Alterações do esquema da base de dados:

http://msdn.microsoft.com/en-us/library/hh394018(v=VS.92).aspx

« Entradas anteriores |

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 2795 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