Archive for the ‘Uncategorized’ Category.

Visual Studio Summit 2017

No último dia 03 de junho tive novamente a felicidade de ser palestrante do Visual Studio Summit em São Paulo, um evento incrível, com pessoas incríveis!

Agradeço ao Ramon e ao Davi pela oportunidade e principalmente a todos que assistiram as minhas duas palestras sobre C# 7.0, as duas salas estavam lotadas e a galera interagiu muito!

As fotos estão no meu facebook e as fotos do eventos estão aqui.

Para quem quiser saber um pouco mais sobre o C# 7, coloquei os slides no SlideShare e o código exemplo no meu GitHub.

Valeu galera e até a próxima,
Carlos dos Santos.

CodeCracker no Channel9

Fala galera,

Gostaria de compartilhar com vocês um vídeo que acabou de entrar no Channel9 sobre o projeto CodeCracker.  Neste vídeo nós falamos um pouco do projeto, como contribuir e principalmente, como usar!

Lembrando que você precisa do Visual Studio 2015 para poder trabalhar com o CodeCracker, pois ele é baseado no compilador Roslyn.

Abraços e até a próxima,
Carlos dos Santos.

MVP Virtual Conference

Microsoft Virtual Conference

A comunidade de Microsoft Most Valuable Professionals (MVP) convida você para participar do MVP Virtual Conference dias 26, 27 e 28 de Março de forma 100% online.

Aproveite essa oportunidade de entender e tirar suas dúvidas sobre como as tecnologias e produtos Microsoft podem te ajudar a solucionar problemas e/ou otimizar tarefas do seu dia a dia. Aprenda diretamente com MVPs, profissionais reconhecidos pela Microsoft, independentes e especialistas, além de convidados especiais da comunidade técnica brasileira e da Microsoft, como os arquitetos do Microsoft Technology Center (MTC).

Objetivo
Apresentar online capacidades e funcionalidades de produtos e tecnologias Microsoft dentro de um contexto baseado em cenários do mundo real.

Formato
O evento conta com nove diferentes trilhas, abordando tópicos relevantes a cenários do dia a dia para as empresas, profissionais de TI e desenvolvedores. Durante cada dia de evento, três trilhas serão apresentadas por completa de forma online no formato de um webcast. Cada trilha comtemplará apresentações sobre tecnologias e produtos Microsoft dentro de um especifico cenário, finalizando com uma rica sessão estilo roundtable com todos os palestrantes da trilha.
Horário das palestras: Das 08:45 às 17:00hrs com intervalo para almoço das 11:30 às 13:00hrs.

Inscrição
As inscrições são abertas a todos os interessados. Escolha o(s) tópico(s) que mais lhe interessam, clique no respectivo link para realizar a inscrição e receber uma confirmação via e-mail para adicionar ao seu calendário. Fique à vontade em convidar outras pessoas. Clique no assunto de seu interesse abaixo para realizar a inscrição. Clique aqui para ver a lista de palestras que você irá encontrar em cada um dos nove assuntos principais.

Dia 26 de Março / terça-feira

Consumerização de TI
Responsável: Alexandro Prado – MVP
Palestrantes: Jorge Barata (MVP), Paulo Sant´anna (MTAC), Marcondes Alexandre (MVP), Igor Humberto (MTAC), Rover Marinho (MVP)
Exemplo de cenário
: Para você profissional da área, entender Consumerização de TI e as tecnologias que viabilizam isso passam a ser essenciais para você alcançar e ser bem sucedido na sua empresa e acompanhar essa tendência do mercado de TI. Acompanhe esse tema e aprenda como aplicar as tecnologias Microsoft no mundo real.
Inscreva-se agora

Segurança
Responsável: Rodrigo Immaginario – MVP
Palestrantes: Rodrigo Immaginario (MVP), Alberto Oliveira (MVP), Luciano Lima (MVP), Marcos Tupinambá (MVP)
Exemplo de cenário abordado: Uma empresa de consultoria, que possui diversos colaboradores trabalhando de forma remota, recentemente identificou diversas falhas de segurança em sua rede local e na proteção dos seus projetos confidenciais. Para melhorar a segurança do seu ambiente será adotado o conceito de “defesa em profundidade” mas o projeto deverá ser implementado com o mínimo de investimento e em curto espaço de tempo. Veja como as tecnologias já disponíveis nos sistemas operacionais da Microsoft (Server e Client) pode ajudar.
Inscreva-se agora

Gerenciamento de Projetos e Equipes de Desenvolvimento
Responsáveis: André Dias – MVP / Carlos dos Santos – MVP
Palestrantes: Carlos dos Santos (MVP), Ramon Durães (MVP), Marcelo Azuma (MVP), Cláudio Leite (ALM Ranger), André Dias (MVP), Igor Abade (MVP), Adriano Bertucci (MVP), Marcio Sete (MVP)
Exemplo de cenário abordado: Uma empresa de médio porte está em franco crescimento, aproveitando oportunidades do mercado. Suas aplicações estão se tornando mais complexas e o time de desenvolvedores está crescendo. Nos últimos anos, a empresa tem sofrido com uma demanda crescente por suporte, devido constantes falhas no software em produção. A qualidade do software gerado pelos times é sofrível e essa percepção tem crescido no mercado. A empresa espera continuar crescendo, mas precisa corrigir e evitar novos problemas com a gestão de seu processo de desenvolvimento de software. Recentemente, a empresa ouviu falar sobre as novas tendências no desenvolvimento ágil e os benefícios da abordagem para Modern Apps.
Inscreva-se agora

Dia 27 de Março / quarta-feira

Interoperabilidade no Desenvolvimento e Infraestrutura
Responsáveis: André Ruschel – MVP / Rogério de Carvalho – MVP
Palestrantes: André Ruschel (MVP), Rogério Moraes de Carvalho (MVP), Rogerio Cordeiro (Microsoft)
Exemplo de cenário: Uma empresa ampliou seu ambiente de TI recentemente, após a aquisição de duas novas empresas do mercado. Os ambientes de TI das 3 unidades são heterogêneos, contemplando diferentes cenários para monitoração, segurança, bancos de dados, desenvolvimento de aplicações e integração de processos. Mesmo antes da consolidação de todas as unidades, a empresa enfrenta uma demanda crescente por aplicações consumindo informações das 3 unidades de negócio, que rodam em plataformas heterogêneas. As equipes de desenvolvimento e infraestrutura precisam decidir quais são as tecnologias e abordagens para esse cenário de interoperabilidade interna na empresa.
Inscreva-se agora

Arquitetura e Gerenciamento de TI
Responsável: Marcelo Sincic – MVP
Palestrantes: Marcelo Sincic (MVP), Hélio Panissa (MVP), Waldemir Cambiucci (Microsoft), Daniel Donda (MVP)
Exemplo de cenário: Uma empresa possui um datacenter de 3ª geração, baseado em servidores blades adotados de diferentes fornecedores. Ao longo dos anos, a empresa tem usado fortemente o modelo de virtualização, mas tem enfrentado desafios no gerenciamento de sua TI. Constantemente, VM’s são perdidas, o processo de suporte e provisionamento é lento e não existe um portal de autoatendimento para os clientes de TI, o que exige horas de atendimento telefônico e atrasos constantes nas requisições. A empresa adota alguns processos de ITIL v3, mas não possui uma ferramenta unificada de gestão de processos ITIL.
Inscreva-se agora

Desenvolvimento de Software e Aplicativos
Responsáveis: Renato Haddad – MVP / André Carlucci – MVP
Palestrantes: Renato Haddad (MVP), Victor Cavalcante (MVP), André Carlucci (MVP), Rodolpho Marques (MVP)
Exemplo de cenário: Uma empresa da área anúncios desenvolve aplicações para seus mais de 10 mil clientes e está em franco crescimento. O perfil de seus clientes está na classe média, consumindo cada vez mais dispositivos móveis, mas também acessando informações da empresa através de desktops em casa, no trabalho ou através de sites na Web. Como desenvolver novas aplicações atendendo a todos esses requisitos?
Inscreva-se agora

Dia 28 de Março / quinta-feira

Produtividade, colaboração e comunicação unificada
Responsável: João Benito Savastano – MVP
Palestrantes: Fernando Andreazi (MVP), Sara Barbosa (MVP), André Xavier (MVP), Eduardo Freire (MVP), Fernanda Saraiva (MVP), Andrea Morais (Microsoft), João Paulo Sevegnani (Microsoft)
Exemplo de cenário: Uma empresa da área de vendas possui um número grande de vendedores em campo. A maioria de sua força de venda possui pouco tempo para retornar ao escritório ou sincronizar seus dados, acessando as informações da empresa mais de 90% do tempo externamente. Muito processos exigem a aprovação de workflows ou leitura de e-mails do pessoal em campo. Ao mesmo tempo, a empresa tem percebido um aumento crescente em seus gastos com telefonia, devido a maior capilaridade de empresa pelo Brasil.
Inscreva-se agora

Computação em Nuvem
Responsáveis: Lucas Romão – MVP, Evilázaro Alves – MVP, Fabrício Sanchez – MVP
Palestrantes: Lucas Romão (MVP), Evilázaro Alves (MVP), Fabrício Sanchez (MVP), Humberto Silva (Microsoft)
Exemplo de cenário: Pequenas, médias e grandes empresas hoje avaliam sua infraestrutura, em relação aos desafios para o gerenciamento e manutenção do ambiente de TI. O mercado tem apresentado nos últimos anos alternativas para a gestão de TI, através de modelos baseados em nuvem pública ou privada. Mais recentemente, a construção de nuvens híbridas tem recebido destaque em fóruns de arquitetura e gerenciamento de infraestrutura. Uma empresa está hoje com 80% de sua TI baseada em máquinas virtuais sem gerenciamento unificado. Outros 20% estão em máquinas físicas, com aplicações legadas. Como dar o próximo passo?
Inscreva-se agora

BI, Big Data e Gerenciamento de Dados
Responsáveis: Luciano Moreira – MVP, Gustavo Maia – MVP
Palestrantes: Luciano Moreira (MVP), Pericles Rocha (Microsoft), Nilton Pinheiro (MVP), Felipe Ferreira (MVP), Fabiano Amorim (MVP)
Exemplo de cenário: A análise de dados é um dos principais elementos de sucesso para o bom entendimento de diversas linhas de negócio. Sem uma análise de dados robusta, é impossível entender as tendências e comportamento de seu negócio, durante as várias fases de sua execução. Uma empresa da área financeira deseja analisar o comportamento de risco de seus milhares de clientes e investidores. Ela busca ferramentas de análise e mecanismos de integração para consumo de diferentes fontes de dados de seus vários sistemas.
Inscreva-se agora

Para conhecer mais sobre o Programa MVP, visite o site http://mvp.microsoft.com

Acompanhe também as novidades e atividades dos MVPs do Brasil no Facebook e Twitter oficiais do programa no país.

* O MVP Virtual Conference é uma iniciativa independente dos MVPs do Brasil.

Validando Dados com EntityFramework e WindowsForms

Pessoal,

Hoje vou mostrar uma maneira bem simples e interessante de fazer validação de dados com EntityFramework, classes POCO e uma aplicação Windows Forms.

Como eu já comentei em outros posts, quando você utiliza DataAnnotations em classes POCO na sua camada de dados e faz a camada de apresentação com WPF/Silverlight ou MVC, o tratamento dos campos é feito automaticamente, praticamente sem nenhum tipo de código. Mas e se você ainda programa para WindowsForms ou precisa validar os dados da classe em uma camada e retornar o erro para outra camada, como fazer ? Isto é o que veremos a seguir.

Primeiro vamos criar um projeto Windows Forms no Visual Studio 2010:
image

Agora vamos adicionoar o EntityFramework CodeFirst usando o NuGet, como eu expliquei neste post. E logo após vamos criar uma classes chamada Produto e vamos adicionar os annotations nela. Annotations são marcações acima dos campos que definem várias informações ao engine do Entitu Framework, como por exemplo, os valores permitidos no campo.

Nossa classe produto ficará da seguinte maneira:

  1: using System;
  2: using System.Collections.Generic;
  3: using System.Linq;
  4: using System.Text;
  5: using System.ComponentModel.DataAnnotations;
  6: 
  7: namespace WindowsFormsValidacao
  8: {
  9:     [Table("Produto")]
 10:     public class Produto : ValidacaoEntidade 
 11:     {
 12:         public int ID { get; set; }
 13:         [Required(ErrorMessage="Descrição em branco"])
 14:         public string Descricao { get; set; }
 15:         [Range(1,10000,ErrorMessage="Valor deve estar entre 1 e 10000")]
 16:         public double SaldoMinimo { get; set; }
 17:         [Required(ErrorMessage="Custo em branco")]
 18:         public decimal Custo { get; set; }
 19:         public decimal Venda { get; set; }
 20:         [MaxLength(20,ErrorMessage="Tamanho máximo = 20")]
 21:         public string Localizacao { get; set; }
 22:     }
 23: }

Veja que a nossa classe está herdando de ValidacaoEntidade, que é onde iremos fazer o método de validaçao dos campos, veja abaixo:

  1: using System;
  2: using System.Collections.Generic;
  3: using System.Linq;
  4: using System.Text;
  5: using System.ComponentModel;
  6: using System.ComponentModel.DataAnnotations;
  7: using System.Xml.Serialization;
  8: 
  9: namespace WindowsFormsValidacao
 10: {
 11:     public class ValidacaoEntidade : IDataErrorInfo
 12:     {
 13:         [NotMapped]
 14:         public string Error
 15:         {
 16:             get { return ""; }
 17:         }
 18: 
 19:         [NotMapped]
 20:         public string this[string columnName]
 21:         {
 22:             get
 23:             {
 24:                 return ValidateProperty(columnName);
 25:             }
 26:         }
 27: 
 28:         protected string ValidateProperty(string propertyName)
 29:         {
 30:             var info = this.GetType().GetProperty(propertyName);
 31: 
 32:             if (!info.CanWrite)
 33:             {
 34:                 return null;
 35:             }
 36: 
 37:             var value = info.GetValue(this, null);
 38:             IEnumerable<string> errorInfos =
 39:                   (from va in info.GetCustomAttributes(true).OfType<ValidationAttribute>()
 40:                    where !va.IsValid(value)
 41:                    select va.FormatErrorMessage(string.Empty)).ToList();
 42: 
 43: 
 44:             if (errorInfos.Count() > 0)
 45:             {
 46:                 return errorInfos.FirstOrDefault<string>();
 47:             }
 48:             return null;
 49:         }
 50: 
 51:         public IEnumerable<string> Validate(bool Formatar=false)
 52:         {
 53:             foreach (var prop in this.GetType().GetProperties())
 54:             {
 55:                 string err = ValidateProperty(prop.Name);
 56:                 if (!String.IsNullOrWhiteSpace(err))
 57:                 {
 58:                     yield return prop.Name + ": " + err + ((Formatar) ? "<br>" : "").ToString();
 59:                 }
 60:             }
 61:         }
 62:     }
 63: }

Nesta classe está o segredo da validação, o método Validate(). Este método percorre todos os campos da nossa classe e verifica seu CustomAttribute(), procurando pelo ValidationAttribute, que é o nosso DataAnnotations, se o valor não for for válido, ele retorna a mensagem de erro que atribuímos ao campos e vai adicionando a uma lista, que poderemos usar em nossa camada de apresentação.

Adicionamos agora vamos adicionar a nossa classe de contexto:

  1: using System;
  2: using System.Collections.Generic;
  3: using System.Linq;
  4: using System.Text;
  5: using System.Data.Entity;
  6: 
  7: namespace WindowsFormsValidacao
  8: {
  9:     public class Contexto : DbContext
 10:     {
 11:         public DbSet<Produto> Produto { get; set; }
 12:     }
 13: }

Agora vamos adicionar os campos em nosso formulário, que ficará desta forma:

image

O TextBox (txtErros) abaixo do botão Salvar é onde iremos mostrar os erros.

Vamos adicionar um DataSource para podermos trabalhar com nossa classe Produto, para isto vá no menu Data/Add New DataSource e escolha Object:

image

Depois escolha a classe produto:

image

Agora você precisa ligar todos os campos TextBox do formulário aos campos da classe. Para fazer isto, clique sobre o TextBox, vá em propriedades/DataBindings/Text e escolha o campo correspondente ao controle. Faça isto para todos os controles:

image

Após o primeiro campo, escolha os campos sempre a partir do bindingsource:

image

Agora vamos ao código do botão incluir, que simplesmente adiciona um novo objeto Produto vinculado a tela:

  1: private void btnNovo_Click(object sender, EventArgs e)
  2:         {
  3:             produtoBindingSource.AddNew();
  4:         }

E por fim vamos ao código que valida os dados e depois insere no BD:

  1:  private void btnSalvar_Click(object sender, EventArgs e)
  2:         {
  3:             var db = new Contexto();
  4:             db.Database.CreateIfNotExists();
  5: 
  6:             var pro = (Produto)produtoBindingSource.Current;
  7:             var erros = pro.Validate();
  8:             if (erros.Count() > 0)
  9:             {
 10:                 txtErros.Text = "";
 11:                 foreach (var err in erros)
 12:                 {
 13:                     txtErros.Text += err + Environment.NewLine;
 14:                 }
 15:             }
 16:             else
 17:             {
 18:                 db.Produto.Add(pro);
 19:                 db.SaveChanges();
 20:                 MessageBox.Show("Produto inserido!");
 21:                 produtoBindingSource.ResetCurrentItem();
 22:             }
 23:         }

Observação: A criação do banco de dados neste ponto é meramente didática, para facilitar o exemplo e não é uma prática recomendável em uma aplicação em produção.

Agora vamos recuperar o produto que está vinculado a tela e logo após vamos chamar o método Validate() que irá retornar a lista de erros que vamos exibir. . Recuperamos o Produto acessando a propriedade Current do BindingSource, mas como ela armazena somente objetos, precisamos converter o valor de Current para o tipo Produto e logo após isto chamamos a validação e caso não exista erros, inserimos o Produto no BD e atualizamos a tela. Os erros são mostrados no campo txtErros na tela.

Você pode formatar a saída do erro modificando o método Validate() na classe ValidacaoEntidade.

Espero que este pequeno exemplo tenha mostrado o quanto é simples fazer validações mesmo em plataformas não tão novas, como o Windows Forms, e isto pode também ser utilizado para validar objetos em camadas separadas da aplicação.

Você pode baixar o código fonte deste exemplo aqui.

Abraços e até a próxima.

Carlos dos Santos.

Curso de C# no IFPR

Nos dias 14 e 15 de setembro eu ministrei um curso básico de C# para os alunos do curso técnico do Instituto Federal do Paraná (www.ifpr.edu.br) a convite do Prof. Rodolfo Barrivieira.

Neste treinamento os alunos tiveram a oportunidade de conhecer a plataforma Microsoft.Net e o Visual Studio 2010, num total de 8 horas de curso.

DSC01678DSC01679DSC01680

Abraços,
Carlos.

TechEd 2011–Palestra Entity Framework

Pessoal,

Este ano tive o prazer de ser palestrante no maior evento de tecnologia Microsoft do Brasil, o TechEd 2011. Confesso que fiquei muito ansioso e também nervoso, pois a responsabilidade em um evento destes é muito grande, e sempre procuramos fazer o melhor. Fiquei muito feliz que a sala ficou praticamente lotada e mais feliz ainda porquê vários amigos foram me prestigiar, então muito obrigado aos amigos Renato Haddad, Fernando Cerqueira, Israel Aece e Bruno Sonnino.

Espero que o evento tenha sido excelente para todos, não só pelo conteúdo técnico, que foi de altíssimo nível, mas também pela oportunidade de fazer contato com novas pessoas, fazer network.

Vejam as fotos da minha palestra:

IMG_6017IMG_6021IMG_6023IMG_6024IMG_6027IMG_6031IMG_6033IMG_6038IMG_6048IMG_6052IMG_6044IMG_6049

O código fonte da palestra pode ser baixado aqui.

Abraços,
Carlos dos Santos.

Brazilian Translation Wiki 2011 Community Participant Award

Pessoal,

Acabei de receber um reconhecimento da Microsoft que me deixou muito contente. Já é o segundo prémio do Translation Wiki que recebo por participar dos trabalhos de moderação da MSDN Library (http://msdn.microsoft.com/pt-br/library), onde basicamento corrigimos os textos traduzidos automaticamente e também os textos da comunidade.

Costumo dizer que é um trabalho interessante e que ajuda também a aumentar meus conhecimentos, pois frequentemente estou acessando os mais variados assuntos.

Vejam abaixo o belíssimo troféu que recebi, juntamente com uma carta de agradecimentos assinada pelo Somasegar (Senior Vice President a Developer Division) e um Microsoft Arc Mouse.

DSC05926

Abraços,
Carlos.

Agile Brazil 2010

Eu estive na quinta e sexta-feira (24 e 25/06) em Porto Alegre/RS para a Agile Brasil 2010 – Conferência Brasileira sobre Métodos Ageis de Desenvolvimento de Software e foi um evento realmente espetacular.

Primeiro por reencontrar vários amigos, depois pelos palestrantes, como Martin Flowler, um dos grandes influenciadores das metodologias ágeis. Nestes dias tivemos várias palestras e workshops , de alto nível, onde pudemos aumentar nosso conhecimento e trocar idéias.

Foi interessante também assistir ao jogo da seleção brasileira durante o evento, que foi transmitido nos telões do auditório principal e até serviram pipocas, show!!!

Para quem não foi, eu definitivamente recomendo que vá no próximo ano, onde teremos o keynote de abertura com Ken Schwaber, fundador da Scrum.org.

foto1
Martin Fowler no keynote de abertura.

foto2
Eu e o André Nobre.

foto3
Philippe Kruchten no keynote da sexta-feira

foto4
Jogo da Seleção Brasileira
foto5foto6
Movimentação durante o evento.
foto7

Fechamento do evento.

Abraços,
Carlos dos Santos