Veja mais neste post.
Ele mostra ainda em outro post que o Tour de Flex agora está disponível para iPad.
Veja mais neste post.
Ele mostra ainda em outro post que o Tour de Flex agora está disponível para iPad.
![]()
Voc? sabia que em m?dia 9 entre cada 10 novas lojas virtuais deixam de existir no primeiro ano de vida? E que em sua grande maioria devido as fraudes on-line.
As grandes causas de fraudes sofridas pelo comercio eletr?nico est?o, de um lado a escassa seguran?a e as limita??es dos meios de pagamento e de outro a grande dificuldade pr?tica em verificar e garantir a identidade do cliente/comprador.
Neste caso o comprador golpistas aproveita os dados de um cart?o de cr?dito que foi clonado ou roubado ou cujos dados estejam dispon?veis por alguma raz?o (muitas vezes basta um xerox frente e verso), se passando pelo titular do mesmo e realizando a compra em nome dele. Alguns golpistas mais sofisticados procuram ter um cadastro completo do verdadeiro titular do cart?o de forma a estar pronto em caso de liga??o.
Existem basicamente duas alternativas para enfrentar o problema das fraudes no com?rcio eletr?nico.
Terceirizar para empresas de meios de pagamento pois est?o estruturadas para garantir a seguran?a nas transa??es.
Alguns exemplos de empresas deste tipo (para o Brasil) s?o os seguintes:
• http://www.pagseguro.com.br
• http://www.moip.com.br
• http://www.braspag.com.br
• http://www.ipagare.com.br
Caso escolha criar uma estrutura de verifica??o interna, vale levar em conta os seguintes fatores e dicas.
O ponto principal ? a valida??o da identidade do cliente, e conseq?entemente de seus meios de pagamento. Para isso voc? pode utilizar usadas ferramentas e fontes de valida??o de cadastro, tal qual Zip Code. Os dados solicitados no cadastro devem ser escolhidos com base nas necessidades do neg?cio. O uso de ferramentas autom?ticas de scoring ou de detec??o de ind?cios de fraudes ? muito recomend?vel.
? ?til, quando poss?vel, utilizar ferramentas de an?lise de risco e preven??o de fraudes ou ainda sistemas de scoring automaticos ou n?o.
Solicitar c?pias de determinados documentos ou comprovantes por fax ou email pode ser uma ?tima alternativa para alguns tipos de neg?cios. Uma longa demora no envio dos documentos ? sinal de suspeita.
Em caso de suspeita de fraude poder?o ser realizadas entre outras, as seguintes verifica??es:
Automatize o processo de verifica??o e preven??o de fraudes em seu ecommerce atrav?s dessas ferramentas:
L?gico que o melhor caminho sem d?vida ? quando sua empresa mescla a utiliza??o de v?rias formas e t?cnicas de verifica??es e valida??es dos compradores e suas compras em tempo real para identificar e previnir o preju?zo com fraudes no ecommerce.
E a sua empresa como trabalha para previnir as fraudes? Comente logo abaixo.
Sua empresa n?o utiliza nenhuma forma de preven??o contra fraudes? Entre em contato comigo.

Pelo terceiro ano consecutivo estarei presente no FMDS (F?rum de M?dias Digitais e Sociais) em Curitiba. Este ano ser? nos dias 06 e 07 de Dezembro (ter?a e quarta-feira).
O evento ser? realizado no mesmo local de 2010, na FIEP – Federa??o das Ind?strias do Estado do Paran? (Av. Comendador Franco, 1.341 – Jardim Bot?nico), que fica pr?ximo dos principais campi da UFPR e da PUCPR, na rota para a Rodovi?ria e do Aeroporto Internacional Afonso Pena.
Confira a programa??o no site do evento.
Nos encontraremos l?!
Não existe segredo quando se fala da implementação de datas no Java: é ruim de usar. Alguns chegam a dizer que é errado usar inclusive, mas não serei tão extremo.
A API de datas do Java é ruim por vários motivos, como por exemplo, é mal documentada, não é Thread Safe, é difícil de manipular datas, e o comportamento nem sempre é o esperado.
Vamos ver como susbtituir a API de datas que vem Out of the Box no Java, por uma mais efetiva, amigável e confiável: JodaTime.
Todo programador Java conhece o Calendar, e sabe que para usá-lo, basta seguir o Design Pattern singleton, ou seja, basta chamar o método de classe em Calendar que devolve a instância única do sistema para o Calendar.
Problema: não funciona.
Não funciona porque se a instância é singleton, e não utiliza threadlocking no código, então não é uma instância ThreadSafe. Logo toda vez que chamamos o getInstance() do Calendar, obtemos uma nova instância. Para ilustrar, crie um teste em JUnit 4 com o seguinte código:
|
1
2 3 4 5 6 7 |
Rode o teste e veja a barra do JUnit ficar vermelha. O comparador ‘==’ usado em objetos, compara pelo endereço de memória, o que deveria ser o mesmo se fosse seguido o padrão singleton de verdade.
Pra piorar, todos os métodos que alteram as intâncias do Date estão expostos (por mais que estejam depreciados) para mantêr compatibilidade com versões anteriores da VM. Portanto o Date também não é ThreadSafe, pois não existe controle de concorrência em sua implementação.
Agora vamos deixar o Date e o Calendar de lado, e vamos ao JodaTime.
O JodaTime diferencia muito bem os conceitos de data, instante de tempo, período, etc. A classe mais básica (interface no caso) é a ReadableInstant. Não precisa dizer que todas as modelagens de data implementam essa interface, permitindo comparar todos os tipos de modelagem de tempo pontuais. Um período não descreve um único instante ou ponto no tempo, por exemplo.
DateTime é talvez o ReadableInstant mais conhecido, e funciona muito parecido com o Date do Java.
Fatores que tornam o DateTime mais amigável são: é ThreadSafe pois é imutável, é muito bem documentado, e é muto fácil realizar operações com data. Vamos escrever um pouco de código para entender o que se passa.
Comece criando um DateTime. Como no Java, este DateTime criado possui o instante atual do sistema. Em seguida para efeito de teste (o teste pode falhar dependendo de quando for executado), adicione um dia na data criada, e verifique que o novo date aponta para amanhã:
|
1
2 3 4 5 |
DateTime date = new DateTime();
date = date.plusDays(1); Assert.assertEquals(new DateTime().getDayOfYear() + 1, date.getDayOfYear()); |
Repare que tive que reassociar o date para que ele pudesse ser alterado, afinal DateTime é imutável, o mesmo comportamento que o BinInteger possui. Repare também que pra adicionar um dia, basta chamar plusDays. Este método já se encarrega de fazer toda a lógica de adicionar um dia na data, como por exemplo mudar o mês ou ano se for preciso, por isso se esse teste for rodado no dia 31 de dezembro, ele irá falhar pois o DateTime irá adicionar mais um dia a data, e perceberá que se trata do ano seguinte, e portanto getDayOfYear irá devolver ’1′, e não ’366′ ou ’365′ como esperado.
O JodaTime também trata anos bissestos e horário de verão se for selecionado o fuzo correto.
Existe uma API bem completa em DateTime para manipular todos os campos possíveis da data, sendo assim fica muito mais fácil iterar ao longo dos dias, sem precisar delegar pro Calendar a tarefa, e depois recuperar o resultado.
Não vou abordar muito da API do JodaTime, pois está muito bem documentada e existem muitos exemplos nas internet. O objetivo desse post é tratar do assunto do próximo tópico.
Pior que manipular datas, é persistir datas. Cada banco persiste data do seu próprio jeito, e cada implementação de ORM trata o Date do seu próprio jeito. Mas se você está utilizando o Hibernate, o JodaTime tem uma solução de padronização pra você: JodaTime Hibernate.
Com o JodaTime Hibernate é possível mapear diversos tipos de representação de data em suas classes Java, com ou sem TimeZone, como String ou bigint, como período ou duração, etc.
Para se ter uma idéia do que é possível, basta verificar a documentação online.
E para utiliza é muito fácil. Imagine que você tenha uma entidade com um campo DateTime, que se chama entryDate, portanto temos o getter:
|
1
2 3 4 |
@Column(nullable = false)
public DateTime getEntryDate() return entryDate; |
Para tornar este DateTime uma data que é padrão do banco que será utilizado, por exemplo, basta adicionar a seguinte anotação:
|
1
2 3 4 5 |
@Column(nullable = false)
@Type(type = “org.joda.time.contrib.hibernate.PersistentDateTime”) public DateTime getEntryDate() return entryDate; |
Estamos falando para o hibernate utilzar o tipo de coluna descrito pelo PersistentDateTime, e utilizar o mesmo para converter a data novamente para DateTime quando for recuperado.
Caso você esteja fazendo engenharia reversa de algum banco, recomendo ler a descrição de todos os tipo disponíveis pra fazer a melhor escolha.
Com isso conseguimos obter todos os benefícios do JodaTime em nossas entidades, facilitando controlar as datas no domínio de nossas aplicações.
Espero ter despertado sua curiosidade com o JodaTime. Na minha opinião é uma das melhores bibliotecas Java disponíveis, mas não quero falar muito sobre suas funcionalidades, pois um dos pontos mais fortes da biblioteca é a facilidade de se acostumar com ela, e principalmente utilizar todos seus recursos. Quero que vocês tenham um pouco desse gostinho
.
Por @Gust4v0_H4xx0r

O conceito de segmenta??o comportamental, conhecido como Behavioral Targeting (BT), surgiu nos Estados Unidos dentre os profissionais de marketing direto como uma estrat?gia dirigida a conquistar uma parcela maior de vendas dentro um subgrupo espec?fico, ao inv?s de buscar uma participa??o mais limitada de compras por usu?rios de todas as categorias.
Segmenta??o comportalmental n?o diz respeito ? aquela segmenta??o por regi?o, por perfil preenchido em cadastros, ou por IP, etc. O diferencial est? no foco dado aos h?bitos de navega??o e consumo dos usu?rios. Essa ? a novidade!

Individualizar o p?blico-alvo. O simples fato de conhecer previamente as atitudes de um usu?rio permite que o anunciante crie pe?as com linguagem direcionada a ele, demonstrando conhecimento de seus interesses.
O AUG ASDev está organizando um Flash Camp em São Paulo, saiba mais.
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
Para saber mais sobre Isolated Storage acessem os links:
http://msdn.microsoft.com/en-us/library/ff402541(v=vs.92).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
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 ObservableCollectionItems
? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? 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
Olá pessoal,
Esse ano eu tive a oportunidade de ir ao Flash Camp Brasil, em Maceió – AL, em Abril. Foi um evento bastante interessante, tivemos grandes palestras, foi muito legal conhecer pessoalmente muita gente que conversamos a anos via GTalk, Skype ou MSN e participei de um Workshop oferecido pela Blackberry para que tivessemos a chance de conhecer o poderoso Playbook.
Durante o evento em algumas apresentações foram mostradas algumas imagens do ano anterior, em 2010, e era visível a quantia que o evento tinha aumentado, não apenas em número de pessoas, mas em organização também e para nossa surpresa, no próximo ano teremos o Adobe Camp Brasil. Essa mudança de nome não mostra apenas que o número de pessoas aumentou no evento, mas mostra também que o Brasil entra definitivamente no cenário mundial de grandes eventos dos produtos Adobe.
Vale muito a pena conferir o evento, excelentes palestras para todos os gostos, algumas mais técnicas com um nível de aprofundamento maior, outras mais para iniciantes, palestras sobre depoimentos de empresários sobre o momento que suas grandes empresas vivem, etc. Esse ano tivemos a oportunidade de ouvir Arno Gourdol – Diretor de Engenharia do Adobe Flash Runtime, por exemplo, pessoas que encabeçam as tecnologias que utilizamos em nosso dia a dia vieram até o Brasil contar sobre o que estão e como estão criando os novos produtos, etc.
Todos sabem que a informática evolui muito e podemos acompanhar via internet, ou assistir gravações mais tarde, mas é uma oportunidade única você poder ouvir a palestra ao-vivo, fazer perguntas, e no corredor do evento se encontrar com o palestrante e conversar sobre algum detalhe da sua palestra, etc.
Esse ano com certeza teremos um evento ainda maior, eu vou estar lá e faço o convite para que você também vá, não perca essa grande oportunidade de ouvir muita coisa boa, fazer algum mini-curso e aumentar sua rede de relacionamentos real, e não a do facebook ou twitter
As inscrições serão abertas no próximo mês, então não fique de fora, não perca essa oportunidade de participar de um super evento. Por favor, não façam comentários do tipo: “Eu não vou para Maceió”, “É muito caro viajar para o Nordeste”, essas coisas. São apenas 2 dias, a cidade é linda, as diárias de hotel são compatíveis com a de qualquer capital brasileira, e quem sabe você não vai no #soudevbuteco que aconteceu o ano passado com figuras como: @mariojunior, @jandesonfc, @igorcosta, @thalissonol e @jotaefe. Você vai dar muita risada até a madrugada
Aqui vão dois vídeos sobre o evento.
Primeiro dia:
Flash Camp Brasil 2011 #Day 1 from Action Creations on Vimeo.
Segundo dia:
Flash Camp Brasil 2011 #Day 2 from Action Creations on Vimeo.
Fotos: clique aqui.
Inscrições em breve, fique ligado no site: http://www.adobecampbrasil.com.br/
Ol? Pessoal.
Este ? o segundo post de uma s?rie de post's que estou fazendo, em formato de resenha. Como partida, estou lendo o livro Management 3.0 Leading Agile Developers, Developing Agile Leaders e sintetizando ele aqui. Confira aqui a parte 1.
A teoria dos sistemas complexos ? uma teoria advinda da matem?tica que se concentra em entender porque alguns tipos de sistemas s?o est?veis e porque alguns outros tipos n?o s?o. Levando para o campo de desenvolvimento de software a referida teoria nos ajuda a explicar porque alguns projetos s?o est?veis e porque outros n?o s?o.
Desenvolvimento de software pode ser visto como um sistema complexo adaptativo, onde as intensas intera??es e feedbacks fornecem oportunidade de melhoria aprendizado e conhecimento.
MULTIDISCIPLINARIDADE
A ideia de segregar pessoas que fazem trabalhos diferente oferece um impacto negativo ? performance da organiza??o. Esse tipo de segrega??o promove silos/feudos funcionais que dificultam a comunica??o e a amplifica??o do aprendizado e conhecimento na dimens?o ontol?gica da organiza??o (veja a teoria da cria??o do conhecimento). Corroborando com os princ?pios do manifesto ?gil, a teoria da complexidade tamb?m ? a favor da forma??o de equipes multidisciplinares.
O CORPO DE CONHECIMENTO DE SISTEMAS
N?o h? uma ?nica defini??o gen?rica para explicar a complexidade, cada sistema ? diferente, peculiar e por vezes suas defini??es s?o complementares, as vezes sobrepostas e as vezes contradit?rias. No entanto, existem v?rios estudos que se concentram em diferentes ?reas e que trouxeram uma contribui??o significativa para o campo dos sistemas complexos: Entre esses estudos est?o: a teoria evolucion?ria (evolutionary theory), a teoria dos jogos (game theory) a teoria do caos (chaos theory), a teoria dos sistemas din?micos (dynamical systens theory), entre outras. A figura abaixo apresenta o corpo de conhecimento de sistemas.

SIMPLICIDADE: UM NOVO MODELO
“Simplicidade normalmente est? relacionada com peso (o qu?o dif?cil ?) para algu?m tentar explicar ou entender algo. Qualquer coisa que ? f?cil de entender ou explicar ? simples, em contraste com algo complicado.”
Antes de discutir simplicidade, faz-se necess?rio entender cada terminologia abaixo:
Na literatura, alguns modelos diferenciam a referida terminologia, como os modelos de David Snowden, que descreve um modelo contendo quatro dom?nios(simples, complicado, complexo e ca?tico) e modelo de Ralph Stacey que cria algo similar. Ele mostra o simples, complicado, complexo, e ca?tico, como quatro ?reas com base em duas dimens?es: o grau de concord?ncia e o grau de incerteza.

A NOVA ERA: PENSAMENTO COMPLEXO (COMPLEXITY THINKING)
Quando voc? aplica a teoria de sistemas complexos (complex systems theory) em desenvolvimento e gerenciamento de software, voc? est? tratando sua organiza??o como um sistema.
A din?mica do sistemas(System dynamics) – n?o confunda com a teoria dos sistemas din?micos(dynamical systems theory), foi uma das primeiras t?cnicas criadas para mostrar como eventos aparentemente simples podem causar comportamentos inesperadas na organiza??o.
A System dynamics percebe a organiza??o como uma estrutura interligada e mutuamente dependente das partes. A System dynamics tem ajudados os gestores ? melhorar sua compreens?o dos processo de neg?cio.
Uma outra t?cnica similar ? chamada de pensamento sist?mico (systems thinking), popularizada no livro The Fifth Discipline (que tamb?m pretendo fazer resenhas dele aqui no blog
). Essa t?cnica aborda o entendimento de como o pensamento influencia o outras partes como um todo e defende que o primeiro passo para se tornar uma organiza??o de aprendizagem ? ela compreender, como um sistema hol?stico, o que ela faz e como realmente faz.
O estudo da complexidade em sistemas sociais ? chamado de complexidade social (social complexity). A complexidade social ? o estudo de grupos sociais em sistemas adaptativos complexos.
System dynamics e systems thinking percebem a n?o linearidade, mas eles ainda partem da ideia que, de alguma forma, a alta ger?ncia constr?i o “tipo certo” de organiza??o que produz o “tipo certo” de resultado. Entretanto, atualmente os gestores percebem que para gerenciar a complexidade social, eles precisam entender como as coisas “emergem” e n?o como elas s?o “constru?das”. O modelo de gest?o 3.0 aplica o pensamento complexo (complexity thinking) e assume que os gestores n?o podem construir nem dirigir uma equipe auto-organizada. Em vez disso, a equipe deve emergir naturalmente. O modelo reconhece que organiza??es produtivas n?o s?o gerenciadas dirigidas por modelos e planos. Em vez disso, deve emergir atrav?s do poder da evolu??o da auto-organiza??o.
Obs: Para mim esses assuntos s?o complicados. Portanto, sinta-se a vontade para criticar, corrigir ou acrescentar valor nos coment?rios.
Ol? Pessoal.
Este post ? o primeiro de uma s?rie de posts que pretendo publicar, em formato de resenha, sobre “livros que estou lendo“. Como partida, fiz a primeira de v?rias outras do livro Management 3.0 Leading Agile Developers, Developing Agile Leaders. O livro pretende mostrar como ser um bom gerente ?gil. A base para isso ? o entendimento sobre pessoas e sistemas e a maneira como as pessoas pensam sobre sistemas. Antes de tudo, os gerentes devem compreender como sistemas sociais funcionam.
GEST?O 1.0 = HIER?RQUICA
Representada por organiza??es hierarquizadas, onde o comando parte da alta ger?ncia funcional, de cima para baixo. Aqueles que est?o no alto da hieraquia tem altos sal?rios, grandes egos. em contrapartida, aqueles que est?o na base da hierarquia normalmente tem baixos sal?rios, poucas responsabilidades (especializado), e pouca motiva??o para fazer um bom trabalho. Fortemente baseada nos modelos fordistas e tayloristas do in?cio do s?culo. Sua gest?o ? focada no comando controle.
GEST?O 2.0 = MODISMO
S?o as organiza??es essencialmente “Gest?o 1.0”, mas que cont?m pessoas que j? perceberam que esse modelo n?o funciona bem “fora da caixa”. Ent?o s?o criados v?rios modelos adicionais de servi?os e processos como BSB, six-sigma, ITIL, Cobit, Qualidade total, entre outros.
GEST?O 3.0 = COMPLEXIDADE
? uma ger?ncia que percebeu que a organiza??o ? uma rede, formada por pessoas, seus relacionamentos e sua complexidade social e n?o por divis?es funcionais hier?rquicas. Abomina o comando-controle e advoga por uma cultura de lideran?a, hol?stica, org?nica, enxergando a organiza??o como um sistema (complexo) vivo e n?o apenas como uma m?quina.
CAUSALIDADE
O determinismos causal infere que as coisas que acontecem hoje s?o causadas por outras coisas que aconteceram antes. Podemos utilizar o determinismo causal, por exemplo, para prever com precis?o quando ser? a pr?xima vez que o cometa Halley passar? pr?ximo da atmosfera terrestre, com base na ?ltima vez que ele passou. Nesse sentido, o determinismo causal habilita que os desenvolvedores ? projetar, planejar e prever tudo o que dever? ser feito no projeto de desenvolvimento de software. Se abstra?rmos qualquer problema de bug, altera??o de requisitos ou cat?strofe interplanet?ria, a causalidade pemite prever com bastante precis?o. Pena que n?o podemos utilizar tamb?m c?lculos astron?micos para determinar a complexidade sist?mica onde projetos de software est?o inseridos. lol.
COMPLEXIDADE
Complexidade n?o tem rela??o com v?rias coisas pra fazer simultaneamente ou com em fazer coisas grandes, a complexidade ? intr?nseca. N?o obstante, v?rias teorias como por exemplo: teoria dos sistemas din?micos (Dynamical systems theory), teoria do caos (chaos theory), teoria dos jogos(game theory), tentam explicar por que alguns fen?menos s?o imprevis?veis e n?o podem ser calculados apenas com a experi?ncia e observa??es emp?ricas. O campo da ci?nica que estouda esses fen?menos ? nomeada como teoria da complexidade (complexity theory).
A teorias da complexidade, de certa forma, ? um “conforto” para gerentes, lideres de time e gestores em organiza??es que desenvolvem software. Isso significa que nem tudo est? perdido, h? um novo paradigma cient?fico, baseado na complexidade de sistemas, que ajuda a entender o problema da volatilidade e incertezas em desenvolvimento de softwares.
O reducionismo ? a abordagem que se baseia na desconstru??o de algo em partes menores, para analis?-las e a? sim entender o todo,. Entendimento do sistema pelo entendimento das partes. Essa t?cnica pode ser utilizada, por exemplo, para desconstruir um computador para entender como ele funciona, para dissecar um animal para entender como seus org?os internos funcionam. No entanto, em algumas ?reas, onde a imprevisibilidade ? uma constante, a utiliza??o da abordagem reducionista n?o ? capaz de determinar, por meio da desconstru??o e an?lise das partes, o entendimento do todo. Enquadra-se nisso, estudos sobre: organismos, consci?ncia humana, as economias, climas, e projetos de software
HOLISMO
O Holismo ? a ideia de que o comportamento do sistema n?o pode ser completamente determinado pelos seus componentes isolados. A vis?o hol?stica pode ser vista como o oposto ao reducionismo, onde a vis?o do sistema como um todo determina comportamentos importantes para ele.
GERENCIAMENTO ?GIL
Uma das bases do desenvolvimento ?gil de software est? na teoria da complexidade. Os valores e princ?pios ?geis corroboram para reconhecer que o determinismo causal ? insuficiente para entregar projetos de sucesso. Conceitos bem conhecidos como auto-organiza??o, multi-disciplinaridade, autonomia s?o oriundos da ci?ncia da complexidade.
O MODELO DA GEST?O 3.0
O modelo da gest?o 3.0 mostra como gerenciar equipes sabendo que os sistemas s?o complexos, n?o lineares, n?o previs?veis e carentes de adaptabilidade. Para o entendimento de sistemas complexos, ? necess?rio, a priori, uma vis?o hol?stica do todo como objetivo de estudar a complexidade social. A gest?o 3.0 ? um modelo de gest?o ?gil que aplica a teoria dos pensamentos complexos (complexity thinking) em equipes de desenvolvimento de software ?gil. Sob o olhar do pensamento dial?tico, esse modelo compreende os encalsos do reducionismo no ambiente de desenvolvimento de software (tese), aceita a oposi??o e acredita em uma vis?o hol?stica, sist?mica e social (ant?tese), para criar uma nova ideia denominada gest?o 3.0 (s?ntese). A figura abaixo ilustra o modelo de gest?o 3.0.
