logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
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

Out 29

SIGCOND, Gestão de forma inteligente. (Flex)

Escrito por Mário Santos em Action Script & MXML, as3, Flash Builder 4, Flex, gestão, Java, Red5, Ria’s Geral, Tecnologia @ 10 29th, 2011 | via http://msdevstudio.com/blog | Sem comentários
Mário Santos
? 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á caros leitores, infelizmente tenho andado meio afastado do blog devido a algumas mudanças na vida profissional, mas também por falta de tempo. Mas bom, hoje venho falar de um projecto que elaborei antes desta mudança profissional, e que foi bem interessante não só a nivel tecnológico, mas também a nivel funcional.

O seu nome é SIGCOND, um sistema de gestão de condomínios muito completo. Todo o sistema foi elaborado em Adobe Flex 4, com recurso ao ZendFramework, MySql e PHP mas não se limitou a estas tecnologias, já que também conta com um sistema interno de chat / conferencia feito com recurso ao Red5 Media Server / Java. Conta com variadas áreas, 4 niveis de utilização: Super Administrador, Administrador de Condomínio Master, Administrador de condomínio e Condómino. Cada um deles apenas pode aceder a algumas funções e menus da aplicação devido a um sistema de UAC implementado.

Foram também integradas algumas API’s que tornam a aplicação muito funcional, de entre as quais:

  • Google Charts API, permitindo assim criar relatórios de consultas com gráficos tornando os relatórios bem mais agradaveis.
  • Clickatell SMS API, permite que o sistema possa enviar notificações por SMS para os telefones dos condóminios e administradores, tornando a troca de informação mais directa entre os administradores e o sistema. Esta API é implementada de uma forma totalmente automática, já que as notificações sao apenas configuradas (activas/inactivas) e o sistema encarrega-se de enviar as devidas notificações consoante várias operações iniciadas por parte do utilizador, ou automaticamente por parte do sistema. Estas notificações incluem falta de pagamentos, agendamentos, notas, reuniões de condomínios, lançamento de quotas / facturas, etc.
  • EasyPay – Gateway MB. Esta API torna o sistema ainda mais funcional, permitindo o lançamento em tempo real de Facturas com uma referencia MB / Home-banking que imediatamente fica disponível para pagamento. Sendo que os administradores podem pagar o aluguer da plataforma e os condóminos as suas quotas / facturas sem sair de casa. Assim que o cliente/condómino paga a factura numa caixa electrónica, ponto de pagamento ou home-banking o sistema é de imediato notificado e efectua o fecho do registo a pagamento.
O sistema conta com vários recursos automatizados que são efectuados diariamente para criar e lançar quotas, criar relatórios, notificar faltas de pagamento e prazos, bloquear contas, lançar facturas, etc…
Internamente também poderá encontrar um sistema de agendas, troca de mensagens privadas, chat de texto, video e audio em tempo real em várias salas, além do chat privado entre a administração e um condómino ou com o proprio suporte da aplicação. Existe ainda um fórum interno para dúvidas, centro de documentos onde podem encontrar documentos pessoais, ou administrativos, calculadora, calendario / agenda, etc.. Bom, convido-vos a lerem um pouco mais sobre a parte comercial do sistema escrita pelo próprio proprietário do sistema, Fernando Mendes, aqui em baixo. De notar que ao fundo do artigo pode encontrar dados para acederem ao sistema em modo de teste.

Uma aposta na tecnologia

O presente projecto tem como principal objectivo a disponibilização na Internet de uma plataforma que contém um conjunto de recursos necessários para a gestão de condomínios. O público-alvo reporta-se a administradores de condomínio, condóminos e empresas de administração de condomínios.

O SIGCOND diferencia-se pelo facto de ser totalmente online, e desenvolvido de forma a dinamizar a relação entre condóminos / administrador. Com esta plataforma, procuram-se colmatar eventuais dificuldades de comunicação, transparência e rigor que, na maior parte das vezes, se manifestam entre a administração e os condóminos, proporcionando, simultaneamente, uma gestão simples, automatizada e integrada de todo o processo.

O SIGCOND permite realizar a contabilidade, controlo, suporte e automatização das tarefas inerentes ? actividade referida, bem como motivar a uma maior participação entre os agentes envolvidos.

O desenvolvimento desta nova solução incorpora as questões político legais nacionais em vigor, referentes a este âmbito, e as que são possíveis de enquadrar na aplicação.

No sentido de uma melhor compreensão dos conteúdos contabilísticos, para além dos dados numéricos disponíveis, existem também painéis de bordo com a disponibilização gráfica dos valores mais pertinentes, o que permite uma consulta mais intuitiva da informação por parte dos condóminos.

Como referido, e para dinamizar a relação condóminos / administrador, foi criado um módulo de comunicação (um fórum e um chat interno ao condomínio), facilitando desta forma a interacção entre aqueles, o que representa uma mais-valia neste projecto.

O acesso é realizado através de um portal desenvolvido para o efeito e que permite ainda a colocação de publicidade de empresas relacionadas com esta actividade.

Com a utilização do SIGCOND, o público-alvo pode usufruir de benefícios relativamente ? concorrência, em particular:

  • ? Disponibilização da solução totalmente online, sem necessidade de instalação de software adicional.
  • Pagamentos disponíveis por MB.
  • Notificações por SMS.
  • Possibilidade de escriturar toda a contabilidade do condomínio, permitindo ainda uma visão da variação de despesas ou receitas, através de painéis de bordo, sendo que os condóminos podem ter uma perspectiva dos dados “24 horas por dia”, o que se reflecte numa total transparência de processos.
  • Optimização de tarefas inerentes ? actividade do administrador.
  • Envio automático de notificações de eventos (ex.: pagamentos de mensalidade em falta, convocatórias, entre outros).
  • Promoção da comunicação através de um conjunto de facilidades, nomeadamente, de um fórum de discussão para cada condomínio e da integração de chat / conferência em reuniões de condomínios.
  • Possibilidade de colocação de legislação referente aos condomínios num espaço partilhado online.
  • Custo reduzido de licenciamento.

Neste sentido, espera-se uma receptividade significativa da aplicação, dado que se oferece aos utilizadores uma alternativa que lhes possibilita uma redução de custos e de tempo na escrituração dos dados do seu condomínio com total transparência, o que se traduz, por outro lado, na possibilidade de retorno financeiro decorrente da exploração da solução.

WebSite: www.sigcond.pt ? ? Telf:? +351 93 922 3808? ? Informações: info@sigcond.pt

Para acederem ao site em modo de demonstração, usem as seguintes informações:

http://gestao.sigcond.pt

User Condómino:
USER: userdemo
PASSWORD: demo

User administrador de condomínio:
USER: demoadmin
PASSWORD: demo

De notar que na versão demonstração muitas das opções estão bloqueadas, ou simplesmente nao estão visiveis. Para mais informações ou testar o sistema com dados reais e sem limitações entre em contacto com o email de informações: ? info@sigcond.pt

Como o sistema ainda se encontra em fase inicial de testes podem encontrar alguns erros ou bugs, pelo que se encontrarem algum deixem os vossos comentarios.

Cumps.


© msdevweb for TSW – That Should Work Blog, 2011. | Permalink |No comment | Add to del.icio.us

Post tags: as3, condominios, condominos, Flex, gestão, java, red5, sigcond



Out 28

Adobe Tutorial Builder – Plugin para Photoshop

Escrito por DClick Team em 1, 2.0, 3.5, 3d, 4, 6, action, Adobe, AR, arte, blog, C#, class, comparação, Design, designer, Dica, Gravação, html, IE, if, image, int, labs, Links, mg, O, on, Partilha, photoshop, Plugin, problema, pt, RIA, Ria’s Geral, S+S, site, social, super(), TAT, Tech, Tutorial, Twitter, UI, uint, Vídeo, window, XML, XP @ 10 28th, 2011 | 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 »

Twitter!

Você designer, que ama Photoshop e já está em um nível bacana, já deve ter feito algum tutorial e postado em algum Blog, site, ou em alguma rede social… é a nossa natureza, querer compartilhar algumas técnicas, mas o grande problema é que isso é trabalhoso, e logo as pessoas param de faze-lo.

Agora, imagine você poder compartilhar o passo a passo de uma atividade sua no Photoshop sem dor de cabeça, sem ter que fazer nada, somente alguns cliques. Isso mesmo, poder ter algo escrito mostrando tudo que você fez no Photoshop sem ter que se matar em descrever todos os ? passos.

A Adobe maravilhosamente criou o Tutorial Builder (Adobe Labs), um plugin simples para Photoshop mas no mínimo, muito, mas muito poderoso.

A idéia consiste no seguinte, você baixa o plugin, instala e ele abre como Panel do Photoshop.

Após instalar, basta ir em Window > Extensions > Tutorial Builder.
Vai abrir essa janelinha bacana que você pode ver na imagem abaixo:

Uma vez aberto você clicando em Start vai (obviamente) iniciar a gravação, que no final, pasmem, vai gerar um arquivo html com o XML prontinho mostrando todos os passos do que você fez dentro do Photoshop, e não só isso, em alguns casos com links onde vai abrir no Photoshop a ação utilizada… #sensacional

Ele também pode guardar a imagem original e fazer uma comparação com a imagem final, você pode optar se quer ou não essa função e então começar a atividade.

Vamos supor, fiz um button… perceba que no panel do Tutorial Builder fica escrito: CAPTURING… Ele está gravando as ações (Não, não é como um Action).

Terminou? Basta clicar em Done, ele vai perguntar se você quer salvar o Tutorial gerado.

Você vai então salvar o seu PSD

E agora a parte interessante, vai configurar o título e os detalhes que deseja que apareça no seu Tutorial.

Aí é só alegria, o seu tutorial está criado.

“Espera aí Eduardo, onde está o link para baixar essa maravilha? E como vai ficar o resultado final?”

Você pode ver aqui em:
http://labs.adobe.com/technologies/tutorialbuilder

Caso tenha sobra alguma dúvida, assista ao vídeo da Adobe no link indicado, ele explica visualmente como proceder.
Mas acredito que não terá dificuldades, é muito simples de usar, super intuitivo, e uma verdadeira maravilha para nós que queremos compartilhar técnicas de PS.

Espero que tenham gostado, e vamos usar, pois é usando que fará com que a Adobe aprimore mais e mais esse plugin.

Out 28

AndroidConf Brasil

Escrito por Fabio da Silva em 1, 4, 6, Android, BI, blog, Blogs, C#, conferência, Evento, Google, mg, O, on, Ria’s Geral @ 10 28th, 2011 | via http://fabiophx.blogspot.com | Sem comentários
Fabio 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 »

Ocorrerá no dia 26/11 no Rio de Janeiro a conferência AndroidConf Brasil.

Corra e faça sua inscrição.

Out 28

Html5 – Edição de conteúdo e Web Storage (Exemplo)

Escrito por DClick Team em 1, 2.0, 6, api, AR, blog, browser, C#, carregar, cliente, configuração, Cookie, Design, exemplo, Exemplos, Flex, for, Formação, html, html 5, html5, IE, if, int, novidade, Novidades, O, offline, on, Pessoal, RIA, Ria’s Geral, S+S, Sem categoria, Sun, TAT, Twitter, UI, uint, web @ 10 28th, 2011 | 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 »

Twitter!

Como Html 5 é algo novo para mim e acredito que para muita gente que visita o blog, os meus exemplos irão se limitar a coisas simples, mostrando novidades básicas. No exemplo do post de hoje vou falar sobre duas novidades, a edição de conteúdo e o Web Storage.

Your browser does not support iframes.

Edição de conteúdo nada mais é do que colocar o Html da sua aplicação em modo de design, deixando que o usuário final possa editá-lo como um simples editor de texto, porém sem conhecer nada sobre Html. Essa funcionalidade parece ser algo inútil a primeira vista, porém ela pode se tornar poderosa se formos discutir sobre aplicações html5 offline.

Web Storage tem a função de persistir uma informação dentro de um escopo definido, com um espaço de armazenamento maior do que um cookie (bem maior), e que pudesse ser acessível em qualquer página a qualquer momento sem a necessidade de carregar essa informação de página por página. Essa API é dividida em 2 itens, sessionStorage e localStorage.

sessionStorage
Esse item da API serve para armazenar informação na sessão do cliente que está acessando sua aplicação. É interessante utilizar esse tipo de storage quando o usuário tem informações específicas para a sessão como por exemplo, você deseja abrir 2 janelas da sua aplicação e em uma janela fazer a configuração A e na segunda janela, fazer a configuração B sem que elas tenham interferência uma na outra. Esse tipo de storage também não é persistido, ou seja, quando a sessão fechar, todas as informações são perdidas

localStorage
Esse item da API serve para manter uma informação guardada por tempo indeterminado, ou seja, se o usuário fechar o browser e desligar a máquina e no dia seguinte acessar sua aplicação, ela poderá recuperar qualquer informação que tenha sido armazenada no storage. Para o pessoal que conhece Flex, essa função é idêntica ao SharedObject, pelo pouco que pude testar.

Utilização
A api é bem simples, todo armazenamento é baseado em CHAVE=VALOR e agora vou comentar sobre 3 métodos básicos para sua utilização:

1. setItem(key, value)
Utilizado para adicionar um item ao storage.
localStorage.setItem(‘nome’, ‘DClick’);

2. getItem(key)
Utilizado para recuperar o valor de uma key.
alert(localStorage.getItem(‘nome’)); //resultado ‘DClick’

3. removeItem(key)
Utilizado para deletar o registro referente a key.
localStorage.remoteItem(‘nome’);

Gostaria de ressaltar que os conceitos mostrados aqui são bem simples, apenas como algo introdutório ao assunto. Espero que estejam gostando!

Out 27

User Interface para Apps iOS – Dicas para Designers.

Escrito por DClick Team em 1, 2.0, 4, 6, Android, Aplicativos, app, apple, AR, blog, C#, class, control, demo, Desenvolvimento, Design, designer, Dica, Dicas, Experiências, for, free, IE, if, image, imagens, int, interface, iphone, iTunes, live, Mac, mg, O, on, Partilha, photoshop, problema, problemas, processo, procura, pt, RIA, Ria’s Geral, S+S, Segurança, Sun, tag, TAT, Tema, Teste, Twitter, UI, uint, XP @ 10 27th, 2011 | 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 »

Twitter!

A algum tempo venho me aventurando no estudo de Design para apps, tanto Android quanto iOS. No entando, depois de vastas pesquisas e claro, da prática, nada melhor que ela para nos dar experiência sobre o assunto, resolvi corrigir meu último post sobre o tema.

Nele eu comento sobre a melhor técnica para criar a skin, indicando a resolução de 320 x 480px como a melhor forma. Recordemos:
“Portanto a melhor técnica é criar, obviamente tudo em vetor, na resolução de 320 x 480px, ver se está tudo harmonico, e então só depois redimensionar para o dobro, 640 x 960px. Confie, ficará muito melhor que desenhar diretamente para 640 x 960px, já tive algumas experiências ruins criando diretamente nessa resolução. Deixe para aplicar texturas caso queira faze-lo na resolução de 640, já as bases tem que ser vetorial.”

Acontece que apesar de ser uma técnica boa, utilizada muito lá fora, nada melhor que desenvolvermos o nosso próprio método, que melhor se adapta a nossa realidade.

Um dos grandes problemas que encontrei na criação de interfaces para iOS é a diferença de cores vista no meu Macbook em relação ao meu iPhone4. (o tal retina).
As cores realmente mudam, e o verde ou azul que eu estava vendo no meu Macbook e que achei que estava agradável, misteriosamente mudava de maneira drástica ao abrir a app no iPhone. Confesso que aquilo me irritava a tal ponto que ? a solução empregada por mim era senão exportar imagens de teste para então abri-las no meu iPhone a fim de comparar as cores.

Ok Eduardo, mas não estavamos tratando de resolução? Sim, mas foi procurando a solução de um problema que cheguei na solução de dois…

Pensei naqueles aplicativos para controlar o Mac remotando através do iPhone, mas que fosse por tela compartilhada, fato, iria resolver a questão das cores, mas nada a ver com a questão da resolução.
Porém depois de testar alguns aplicativos cheguei ao Live View, ele não só resolvia esse meu problema pois compartilha a tela, como sua função é exclusivamente ajudar Designers no desenvolvimento das apps, e nem acreditei quando vi que era FREE, e acreditem, pagaria facilmente 5 dólares por ele hoje devido a sua utilidade.

E porque ele resolveu meu problema de resolução? Porque me senti mais tranquilo em desenvolver já no tamanho do retina a fim de poder ver diretamente no iPhone as proporções dos elementos no meu stage.

Resultado, muito mais praticidade e com isso muito mais qualidade no visual da app…

Logo, inverti o processo para o desenvolvimento diretamente em Retina Display, e quando vou exportar no Photoshop eu simplesmente exporto para @2x com 100% de resolução e então exporto sem o @2x, ou seja, 1x, mas com o nome puro da imagem com 50% do seu tamanho.

Ah sim, e a app funciona também para iPad.

Você precisa instalar uma app no seu Mac, que irá liberar o acesso da app que está no seu iPhone ou iPad para ter a visualização no Mac.

http://www.zambetti.com/projects/liveview/

Antes de mais nada você precisa de uma rede wifi onde seu Mac e seu iPhone ou iPad estejam conectados, uma vez com a app baixada no iPhone e iPad, abra primeiro a app que está no seu Mac, do contrário vai aparecer essa imagem:

Agora que aprendeu, e abriu primeiro o Live View no seu Mac, irá aparecer a seguinte mensagem:

Basta selecionar o seu Mac e a imagem que está dentro do retângulo optado (iPhone ou iPad, portrait ou landscape) irá aparecer no iPhone ou iPad da forma como escolheu.

O Live View também permite você colocar uma senha de acesso por questões de segurança.

Ele possui várias configurações, mas são bem simples, você pode rotacionar a tela (portrait ou landscape), optar pelo Retina, inclusive escolher a performance dependendo da sua rede Wifi.

Essa app foi de grande valia para mim, espero que ajude também você que está desenvolvendo ou pensando em desenvolver para iOS.

Out 26

Windows Phone CAMP – Vitória

Escrito por Fabriccio Bernardes em Eventos, Ria’s Geral @ 10 26th, 2011 | via http://fabricciocb.wordpress.com | Sem comentários
Fabriccio Bernardes
? 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 »

Pessoal,

Venho compartilhar com vocês mais uma excelente oportunidade para a comunidade capixaba ingressar no mundo móvel da? Microsoft.

Para se inscrever basta enviar um e-mail para windowsphonevitoria@live.com!

Vejo vocês lá?

Out 26

Html5 – Gráfico com range de meses (Exemplo)

Escrito por DClick Team em 1, 2.0, 6, AR, C#, Componente, Componentes, demo, Diversos, exemplo, framework, Frameworks, Gráfico, html, html5, int, Introdução, Java, Javascript, O, on, pt, Ria’s Geral, UI, UX @ 10 26th, 2011 | 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 »

Como todos já devem saber, o Canvas é um elemento muito poderoso do HTML5, com ele podemos desenvolver diversos tipos de componentes e aplicações. Tenho certeza que ainda não descobri 5% de seu potencial, ainda mais que meu estudo hoje está limitado a javascript/html puro, sem a introdução de frameworks auxiliares. Para o exemplo abaixo,…

Continue Lendo
Out 26

Html5 – Gráfico com range de meses

Escrito por DClick Team em .NET, 1, 2.0, AR, browser, C#, Componente, Componentes, demo, Diversos, exemplo, Flex, framework, Frameworks, Gráfico, html, html5, if, int, internet, Introdução, Java, Javascript, O, on, pt, Ria’s Geral, Sem categoria, TAT, Twitter, UI, UX @ 10 26th, 2011 | 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 »

Twitter!

Como todos já devem saber, o Canvas é um elemento muito poderoso do HTML5, com ele podemos desenvolver diversos tipos de componentes e aplicações. Tenho certeza que ainda não descobri 5% de seu potencial, ainda mais que meu estudo hoje está limitado a javascript/html puro, sem a introdução de frameworks auxiliares.

Para o exemplo abaixo, utilizei como base um outro exemplo que encontrei na internet, pois ele tinha as funções de desenho das linhas dos gráficos. Com ele em mãos resolvi desenvolver algo mais próximo do que fazemos em dashboards no Flex, como um range de datas para filtro no gráfico, e não é que ficou legal?

Your browser does not support iframes.

Out 25

Singleton CFML

Escrito por Pedro Claudio em AR, C#, cache, ColdFusion, if, O, RIA, Ria’s Geral, S+S, Tema, Tutoriais @ 10 25th, 2011 | via http://blog.pcsilva.com/index.cfm | Sem comentários
Pedro Claudio
? 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 »

Em alguns sistemas a quantidade de objetos criados é tão grande, que justifica o uso de cache para estes objetos, e para que não seja criada redundância de objetos nesta cache é necessário a verificação da existência de um objeto antes de cria-lo.
…

« 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 2758 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