Vou palestrar no Visual Studio Summit 2013

Olá pessoal,

O Visual Studio Summit 2013 é um evento anual realizado na sede da Microsoft Brasil onde alguns dos maiores nomes do mercado e convidados realizam palestras sobre todo o processo de desenvolvimento de software utilizando a plataforma de desenvolvimento Visual Studio.

E como era de se esperar os temas que serão apresentados estão super interessantes, recomendo como uma atualização de conhecimentos e troca de experiências com a comunidade técnica, vale muito a pena conferir.

Nesta edição irei apresentar o tema:
ASP.NET SignalR. O que é e como usar!

Já estou preparando o material para a palestra, o que vai render alguns artigos sobre o ASP.Net SignalR, fique ligado 😉

Para mais detalhes do evento:
http://www.visualstudiosummit.com.br 

Agradeço ao Mestre Ramon Durães pela oportunidade de colaborar em mais uma edição deste grande evento.

Te vejo lá !!!

ASP.Net MVC – Validando e-mail com DataAnnotations

Olá pessoal,

Recentemente passei por um problema e gostaria de compartilhar a solução neste artigo.

Irei utilizar um projeto padrão do tipo MVC 4 – Internet Application do Visual Studio, este projeto já vem por padrão com o registro de usuários e controle do login com FormsAuthentication implementado.

Neste projeto temos uma área de registro de novos usuários e irei customizar para que o nome de usuário seja um e-mail, para isso é necessário que haja a validação no momento da criação do novo usuário.

Aqui está a Model AccountModels.cs original:

using System.ComponentModel.DataAnnotations;

public class RegisterModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

Para que haja a validação é necessário decorar a propriedade do campo usuário (UserName), caso você pesquise na internet irá encontrar várias referências orientando a fazer a validação desta forma:

    [Required]
    [Display(Name = "User name")]
    [DataType(DataType.EmailAddress, ErrorMessage = "E-mail em formato inválido.")]
    public string UserName { get; set; }

No momento do registro não irá funcionar a validação do formato de e-mail, ou seja, um usuário com nome “Teste” será registrado sem ser barrado pela validação.

Explicação:
Aparentemente seria essa a proposta do atributo DataType, mas não, o atributo DataType é usado apenas para formatação e não validação.

No .Net Framework 4.5 há um novo atributo System.ComponentModel.DataAnnotations.EmailAddressAttribute, que é um tipo de atributo utilizado justamente para validação, sua aplicação inclusive é mais fácil:

    [Required]
    [Display(Name = "User name")]
    [EmailAddress(ErrorMessage = "E-mail em formato inválido.")]
    public string UserName { get; set; }

Utilizei o parâmetro ErrorMessage para definir a frase de erro a ser exibida, em outros casos basta usar o parâmetro [EmailAddress] que a validação será feita:

Lembrando que ainda existe a possibilidade de fazer a validação utilizando expressões regulares:

    [Required]
    [Display(Name = "User name")]
    [RegularExpression(@"b[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}b", ErrorMessage = "E-mail em formato inválido.")]
    public string UserName { get; set; }

É isso pessoal, uma dica simples mas que pode salvar algum tempo do seu trabalho 🙂

Até a próxima.

TFS – Customizando o Workflow de um Work Item

No TFS existe a opção de escolher qual o process template da metodologia que o projeto será gerenciado, atualmente existem os process templates para Scrum, MSF for CMMI e MSF for Agile. Os process templates fornecem ao projeto suporte as terminologias e definem vários elementos que determinada metodologia aborda.

É muito comum após um process template configurado surgir a necessidade de alguma modificação / adaptação, pois o processo da equipe pode ter alguma particularidade.

Nesse artigo usaremos o process template de Scrum para o exemplo. No Scrum existe o Conceito de Pronto que significa que um time Scrum define quais critérios são necessários para dar como pronta uma atividade. Com certeza para uma atividade ser considerada pronta é necessário que ela esteja testada. O workflow de uma atividade no process template Scrum vai de In Progress para Done, não existe o estado Testing.

Nesse artigo abordaremos como alterar o workflow de uma tarefa e incluir o estado Testing.

Esse artigo aborda o uso de:

Utilizando o TFS Power Tools para editar um Work Item

Após instalar o TFS Power Tools surgirá uma opção do menu Tools do Visual Studio chamado Process Editor

O Process Editor permite que seja editado um Work Item seja ele global ou de algum projeto específico.

No exemplo será editado o Work Item de Task onde será adicionado um novo campo de valor e também modificaremos o seu workflow para prever o novo estado de Testing.

O caminho a seguir é Work Item Types > Open WIT from Server

Surgirá uma janela de diálogo com os projetos disponíveis no TFS, será necessário expandir o projeto em questão e selecionar o tipo de Work Item a ser editado, selecione Task.

Modificando o Workflow de um Work Item no TFS

Na mesma tela Work Item Type clique na aba chamada Workflow

Abaixo está a ilustração do Workflow original para o Work Item de Task no Process Template Scrum 2.2:

A alteração que será executada será adicionar o novo estado Testing e alterar o fluxo de dos estados existentes, para isso serão necessária as ferramentas de design que estão disponíveis em Toolbox

Criando um Estado no Workflow

Arrastando um item da caixa State para o Workflow

Este é a caixa do novo estado, já foi renomeado para Testing e agora é necessário criar as transições, que são responsáveis por guiar o fluxo.

Para criar uma transição basta selecionar o item Transition Link na Toolbox clicar na caixa que a transição inicia e arrastar e soltar na caixa onde termina.

A transição de estado está feita, isso significa que quanto a tarefa estiver em estado Testing, será possível mudar para Done, agora é necessário realizar algumas configurações.

Com um duplo clique na caixa Transition abrirá uma janela de diálogo Workflow Transition.

Na aba Reasons cadastraremos um novo valor para quando o estado de Testing passar para Done.

Clicando em New para preencher o valor do Reason, que é a razão pelo qual a tarefa mudou de estado.

Note que no fluxo principal, a caixa Done requer a adição de um parâmetro o Closed Date, isso significa que é necessário passar essa informação para que haja transição de Testing para Done, a passagem desse valor é feita durante a transição através do item recurso Fields.

Pressione OK e retorne a janela de diálogo Workflow Transition, selecione a aba Fields e clique em New, o combo abaixo irá exibir diversas opções selecione ClosedDate.

Além de selecionar a referência do campo a ser passado é necessário configurar a regra de passagem, clique na aba Rules e selecione New, uma janela com uma lista exibirá todas as regras existentes, nesse caso a regra SERVERDEFAULT deve ser escolhida, pois trabalharemos com uma informação do servidor.

Como estamos trabalhando com um valor do tipo DateTime selecione no combo From a opção Clock, significa que iremos utilizar a data que está no servidor como referência.

Etapa concluída, o novo estado Testing está configurado e a transição para Done foi finalizada.

Note que exitem outras transições a serem feitas como por ex:

  • In Progress > Testing (Atividade finalizada e encaminhada para testes)
  • Testing > In Progress (Bugs encontrados, necessário trabalho adicional)

Basta seguir o mesmo processo para as demais transições.
Salve as alterações pelo Visual Studio e automaticamente o novo estado Testing estará publicado.

No próximo artigo gravarei um vídeo executando este processo e fornecendo mais detalhes de como modelar o Workflow de um Work Item.

Utilizem os comentários para dúvidas ou feedbacks.
Até a próxima 😉

TFS – Aumentando o número de itens na board

Em muitos projetos o número de itens em uma board ultrapassa a média qual o TFS vem configurado por padrão e quando isso acontece ao acessar a board é exibida a mensagem:

“You have exceeded the number of items allowed on your taskboard.”

Não precisa se preocupar, o TFS limita a board em 500 items por medida de performance, pois todos os items são carregados em cache de forma que sua exibição se torne muito rápida.

Para resolver é necessário editar o arquivo AgileConfiguration.xml do seu template e para acessá-lo basta exportar o arquivo através do comando witadmin

Para encontrar o diretório digite este caminho no Command Prompt:

cd %programfiles%Microsoft Visual Studio 11.0Common7IDE

Em uma edição de 64 bits do windows, substitua %programfiles% com %programfiles(x86)%.

Execute o comando:

witadmin exportagileprocessconfig /collection:CollectionURL /p:ProjectName /f:"DirectoryPathAgileConfiguration.xml"

CollectionURL especifica a URL de seu Team Project Collection, ProjectName especifica o nome do Team Project, e DirectoryPath especifica o nome e local do arquivo a ser exportado.

Abra o arquivo de AgileConfiguration.xml no notepad e localize a seção IterationBacklog, Especifique um valor para o atributo workItemCountLimit (Ex. 800).

<IterationBacklog workItemCountLimit="800">
. . .
  </IterationBacklog>

Isso significa que ao invés de 500 a board passará a exibir 800 itens.

Depois de salvar o arquivo basta importá-lo usando o mesmo comando:

witadmin importagileprocessconfig /collection:CollectionURL /p:ProjectName /f:"DirectoryPathAgileConfiguration.xml"

É a mesma sintaxe, com a diferença que agora trata-se de uma importação.
Atualize a board com F5 e as alterações irão refletir, exibindo novamente os itens com o novo limite de 800.

*PS – Aumentar demasiadamente o número de itens na board pode prejudicar a performance.

Bons projetos a todos 😉

 

TFS – Team Foundation Service – Parte II – Criando uma conta

Olá pessoal,

Como havia prometido no post anterior, este post possui um vídeo que eu gravei falando sobre o Team Foundation Service, explico a diferença com o Team Foundation Server e caminho passo-a-passo desde o início no processo da criação de uma conta no Team Foundation Service.

Aproveitem e deixem seus comentários 🙂

Vou palestrar no DevBrasil Summit 2013

Olá Pessoal, tudo bem?

DevBrasil Summit 2013

O DevBrasil Summit 2013 é encontro nacional da rede social DevBrasil reunindo desenvolvedores de software de todo o Brasil para falar de inovação, empreendedorismo e tecnologia.

Farei minha palestra sobre Visual Studio LightSwitch, um tema que eu adoro falar principalmente para o público mais jovem que está iniciando na carreira de desenvolvimento.

Segue link oficial, façam suas inscrições (gratuíto):
http://devbrasil.net/events/devbrasil-summit-2013-sao-paulo

Mais uma vez agradeço ao Mestre Ramon Durães e o time DevBrasil pela oportunidade 🙂

Espero vocês lá!

TFS – Team Foundation Service

TFS – Team Foundation Service, é a conhecida plataforma de gerenciamento de código fonte e colaboração da Microsoft que foi parar na nuvem.

Team Foundation Service

Quando pensamos em TFS geralmente nos vem o nome Team Foundation Server, afinal trata-se de uma plataforma local, interna e instalada em um servidor.

A Microsoft há algum tempo disponibilizou esta mesma ferramenta só que hospedada na nuvem, ou seja, nos servidores do Windows Azure.

O famoso TFS passou a ser disponibilizado como serviço, notem que está cada vez mais comum encontrar os “SaaS” Software as a Service, diversos produtos da Microsoft já foram para nuvem (ex Office 365).

Minha experiência:

Tanto em casa como no trabalho eu sou usuário do TFS, no trabalho usamos a versão internalizada, ou seja instalada, e em casa antigamente eu tinha uma virtual machine rodando um windows 2008 server apenas para suportar o TFS.

Com o lançamento do TFS 2012 veio a versão TFS Express, gratuita para 5 usuários (porém com algumas limitações), que roda inclusive em windows 8.

Não cheguei a fazer uso do TFS Express, migrei diretamente para o TFS (Service) também conhecido como TFS Preview e o melhor, é de graça para 5 usuários também.

Estou plenamente satisfeito com minha escolha, não precisei instalar nada, apenas com a conta da Microsoft (antigo Live ID) fiz o login no site https://tfs.visualstudio.com/ e criei minha conta no TFS.

Todos os serviços estão disponíveis sem limitações, mesmo para as contas gratuitas, algumas funcionalidades podem se tornarem pagas daqui algum tempo, mas por enquanto a experiência é completa, vale a pena a imersão 🙂

A intenção deste post foi apresentar o serviço do TFS e comentar sobre minha experiência.
Em continuação deste farei um post técnico onde irei explicar passo-a-passo todo processo de utilização, aguardem 🙂

Até mais e abraços!

Quer ser um dos melhores ou vai ficar ai parado?

Este é um post diferente e começo com uma provocação:
Quer ser um dos melhores ou vai ficar ai parado?

Quer ser um dos melhores?

Estou há um pouco mais de 13 anos na carreira de desenvolvedor de sistemas, tempo suficiente para conhecer, analisar e categorizar muitos tipos de perfis dos profissionais desta área.

Muitos dos que trabalham/trabalharam comigo estão há pelo menos 5 anos como profissionais e é por isso que me motivei a escrever sobre este tema.

Pergunte a si mesmo e responda:

  • Quantas horas de estudo/aperfeiçoamento você dedica por semana?
  • Você costuma ler/experimentar/aprender uma tecnologia quando ela é lançada ou quando precisa trabalhar com ela?
  • Quais são seus planos (onde você se vê) daqui 5 anos?
  • Seus planos pessoais e conquistas dependem de um crescimento ou promoção na carreira?

Se você estuda pouco, não acompanha as novidades, não experimenta as novas tecnologias, tem planos maiores para daqui um tempo e eles dependem de resultados maiores, é melhor repensar a sua estratégia.

Eu sou um exemplo disto, em um emprego anterior onde fiquei cerca de 5 anos eu entrei atualizado e sai desatualizado. Me envolvi demais com a operação, com o negócio da empresa e suportei a tecnologia com aquilo que já sabia fazer, cresci na carreira, mas uma carreira que fazia sentido apenas dentro daquela empresa.

Quando sai deste emprego eu voltei a estudar e me dedicar ao que realmente me interessa, a tecnologia e a dor foi grande, pois recuperar em curto tempo grandes evoluções tecnológicas foi (e ainda é) uma tarefa pesada.

Conto que tive a sorte de conhecer/ter contato com diversos profissionais neste período de reaprendizagem e são neles que baseio meu “target” para chegar lá, buscar mais conhecimento, entregar melhores resultados e receber reconhecimento.

Ai vão as minhas dicas:

  • Estude todo dia, quanto tempo tiver a disposição, acostume-se com a rotina de estudar e vá aumentando a carga horária. Defina uma meta de horas e a alcance toda semana.
  • Leia muito, é lendo que surgem as dúvidas e descobrimos tudo o que não conhecemos.
  • Use o tempo ao seu favor, carregue podcasts no celular, no pendrive do som do carro e ouça enquanto se transporta, tenha sempre um PDF ou um artigo para ler no celular enquanto está a espera de algo. Ócio produtivo 🙂
  • Foque em pontos quais você pretende destacar sua carreira, conheça de tudo mas seja especialista em determinadas áreas.
  • Crie experimentos em casa, no trabalho, aprenda sem medo de errar.
  • Procure um bom curso/livro/treinamento online.
  • Certifique-se, mostre que você sabe.
  • Desenvolva sua oratória, não adianta muito saber algo se não sabe falar sobre.
  • Corte o tempo perdido com redes sociais, use-as, mas saiba tirar o melhor proveito destas ferramentas, faça network, converse com pessoas com quem você deseja aprender, se envolva.
  • Frequente comunidades virtuais, presenciais, visite workshops, assista palestras.
  • Não tenha medo de perguntar, mas saiba fazer sua pergunta, não pergunte sem antes ter tendado aprender/resolver sozinho.

E por fim, saia do seu círculo de conforto e experimente o sucesso, mas sem medo de fracassar, quem não erra não aprende.

Nossa área está mais do que carente de profissionais qualificados, as chances de crescimento, sucesso profissional e remuneração acima da média só depende do quanto você se dedica, e veja o lado bom, tem tanta vaga a espera que a concorrência é baixíssima. Aproveite a grande vantagem desta nossa área.

Este é um ano especial, sinta a oportunidade.

Me disponho a ajudar, indicar material/blogs/livros, convidar para palestras, tirar dúvidas, orientar. Me procure nos meus links ou deixe um comentário aqui no site e divida conosco seu feedback 😉

Abraços!
Eduardo Pires – Mais um cara tentando ser um dos melhores.

Undo Checkout no TFS

Undo Checkout no TFS é um processo comum, mas e quando o arquivo está preso a outra pessoa? Nesse caso existem ferramentas de apoio para resolver, mas se você não tem nenhuma a solução é mais uma vez a linha de comando.

O comando é o tf undo (tf.exe) e para executá-lo você precisa do Visual Studio instalado

Para encontrar o diretório digite este caminho no Command Prompt:

cd %programfiles%Microsoft Visual Studio 11.0Common7IDE

Em uma edição de 64 bits do windows, substitua %programfiles% com %programfiles(x86)%.

*Atente-se ao diretório devido a qual versão do Visual Studio está usando.*

O comando deve ser chamado da seguinte forma:

tf undo [/workspace:workspacename[;workspaceowner]]
[/recursive] itemspec [/noprompt] [/login:username,[password]]
[/collection:TeamProjectCollectionUrl]

Naturalmente o usuário deverá ter permissão de Administer Workspaces para realizar esta operação.

/collection : TeamProjectCollectionUrl
Especifica a URL da coleção de projeto de equipe que contém os itens. Por exemplo: http://myserver:8080/tfs/DefaultCollection.

itemspec
Especifica o escopo de itens. Você pode especificar mais de um argumento de itemspec Para a sintaxe, consulte Referência de comandos de controle de versão do Team Foundation.

/login
Especifica a conta de usuário para usar o para executar o comando. Consulte Referência de comandos de controle de versão do Team Foundation.

/noprompt
Suprime a exibição das janelas e caixas de diálogo e redireciona dados de saída para o prompt de comando. Consulte Referência de comandos de controle de versão do Team Foundation.

/recursive
Desfaz recursivamente alterações dos itens no diretório especificado e todas as subpastas.

/workspace workspacename[;workspaceowner]
Especifica o nome do espaço de trabalho que você deseja desfazer alterações pendentes. Se não for especificado, o espaço de trabalho é aquele que mapeia o diretório atual.

Exemplos:

Remover as alterações pendentes em um arquivo
– Remove todas as alterações pendentes em program.cs

c:codeSiteAppMainSolutionAProject1>tf undo program.cs

Remova recursivamente durante alterações em todos os itens em uma pasta
– Remove todas as alterações pendentes na pasta c:codeSiteAppMain e todas suas subpastas.

c:codeSiteAppMain>tf undo * /recursive

Remover as alterações pendentes em um arquivo em um espaço de trabalho remota
– Remove todas as alterações pendentes em program.cs na coleção e o espaço de trabalho especificados.

c:>tf undo /collection:http://fabrikam-3:8080/tfs/DefaultCollection
/workspace:FABRIKAM-1;JuliaI $/SiteApp/Main/SolutionA/Project1/program.cs

Até a próxima dica 😉

Deletar Work Item no TFS

Deletar Work Item no TFS é sempre uma dúvida que surge ao implantar a ferramenta, pois sempre abrimos alguns para testar e depois não precisamos mais.

Não tem interface visual que faça a deleção do Work Item, mas existe a linha de comando, grande aliada para resolver N situações.

O comando é o witadmin e para executá-lo você precisa do Visual Studio ou Team Explorer instalado

Para encontrar o diretório digite este caminho no Command Prompt:

cd %programfiles%Microsoft Visual Studio 11.0

Em uma edição de 64 bits do windows, substitua %programfiles% com %programfiles(x86)%.

Para ter permissão de remoção do Work Item você precisa ser Administrador do TFS ou do projeto em questão.

Execute o comando:

witadmin destroywi /collection:CollectionURL /id:id [/noprompt]

/collection:CollectionURL
Especifica a URL a coleção de projeto de equipe. o formato para o URI é o seguinte: http:ServerName: porta/VirtualDirectoryName/CollectionName/

Se nenhum diretório virtual é usado, o formato para o URI é o seguinte:
http: /ServerName: porta/CollectionName.

/id:id
A identificação de um item de trabalho a destrui-lo. Para especificar mais itens de trabalho, IDs separadas por vírgulas, sem somente espaço em branco.

/noprompt
Desativa o aviso para a confirmação.

/?ou help
Exibe ajuda sobre o comando na janela do prompt de comando.

Exemplo:

witadmin destroywi /collection:"http://dev-win-01:8080/tfs/Em Andamento/" /id:25

Até a próxima dica 😉