Mostrando postagens com marcador Microsoft. Mostrar todas as postagens
Mostrando postagens com marcador Microsoft. Mostrar todas as postagens

quarta-feira, 30 de março de 2011

Prepare-se para o C# 5 – Parte 1

Pessoal, segue um excelente post sobre C# 5, vejam no link abaixo:

Social Software Branding: Prepare-se para o C# 5 – Parte 1: "É fantástico trabalhar com uma plataforma que evolua junto com a complexidade que enfrentamos em nosso dia-a-dia. Olhando a evolução da lin..."

terça-feira, 22 de fevereiro de 2011

Lista de Field Types do Sharepoint 2010

Este post é uma compilação dos fldtypes.xml e dos arquivos  fldtypes_*. xml do Sharepoint 2010, que dá uma visão clara dos tipos de campo que podemos usar.

Ainda não sei o que cada um faz, mais pelos nomes da pra ter uma ideia.

Out of the box Field Types

AllDayEvent

Attachments

Boolean

BusinessData

Calculated

Choice

Computed

ContentTypeId

Counter

CrossProjectLink

Currency

DateTime

Decimal

File

GridChoice

Guid

Integer

Lookup

LookupMulti

ModStat

MultiChoice

MultiColumn

Note

Number

PageSeperator

Recurrence

Text

ThreadIndex

Threading

Url

User

UserMulti

WorkflowEventType

WorkflowStatus

GROUPBOARD Field Types

CallTo

Confirmation

ContactInfo

Facilities

FreeBusy

Overbook

SendTo

WhereAbout

GROUPBOARD Upgrade Field Types (do not use)

GbwLocation

GbwParticipants

GbwSREnd

GbwSRStart

Hold Field Types

HoldsField

ExemptField

Publishing Field Types

HTML

Image

Link

SummaryLinks

LayoutVariationsField

ContentTypeIdFieldType

PublishingScheduleStartDateFieldType

PublishingScheduleEndDateFieldType

MediaFieldType

SPRating Field Types

AverageRating

RatingCount

TargetTo Field Types

TargetTo

Taxonomy Field Types

TaxonomyFieldType

TaxonomyFieldTypeMulti

sexta-feira, 4 de fevereiro de 2011

Bug no Silverlight (PageCollectionView)

ArgumentOutOfRangeException in PageCollectionView

Recentemente descobri um bug no Silverlight.
Ele já havia sido reportado a Microsoft, olhem só: https://connect.microsoft.com/VisualStudio/feedback/details/595364/argumentoutofrangeexception-in-pagecollectionview?wa=wsignin1.0#tabs
Basicamente, se você tentar remover um item de uma coleção que está vinculada com o PageCollectionView é gerada uma exception.
Vejam o exemplo de fonte onde ocorre o problema:
   1: var collection = new ObservableCollection<string>{"1", "2"};
   2: var data1 = new PagedCollectionView(collection) {Filter = i => i.Equals("1")};
   3: var data2 = new PagedCollectionView(collection) {Filter = i => i.Equals("2")};
   4: collection.RemoveAt(0); 

Se alguém conseguir um workaround, pode postar direto no site da Microsoft (link acima).

quarta-feira, 2 de fevereiro de 2011

Utilizando IsolatedStorage no Silverlight

Existem situações onde é necessário armazenar informações na estação do cliente.
A classe abaixo permite acessar esta área através do Silverlight, onde poderão ser salvos arquivos, e objetos de configuração, como ID do usuário logado, etc.…

   1: using System;
   2: using System.Net;
   3: using System.IO.IsolatedStorage;
   4: using System.IO;
   5: using System.Runtime.Serialization;
   6:  
   7: namespace MyLibrary.UI.SL
   8: {
   9:  
  10:     /// <summary>
  11:     /// Classe de gerenciamento da Isolated Storage
  12:     /// </summary>
  13:     public static class IsolatedStorageCacheManager
  14:     {
  15:         /// <summary>
  16:         /// Persistem em um arquivo na Isolated Storage o conteúdo serializado do objeto
  17:         /// </summary>
  18:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  19:         /// <param name="filename">Nome do Arquivo </param>
  20:         /// <param name="obj">objeto a ser salvo na Isolated Storage</param>
  21:         public static void Store<T>(string filename, T obj)
  22:         {
  23:             using (var appStore = IsolatedStorageFile.GetUserStoreForApplication())
  24:             {
  25:                 using (var fileStream = appStore.OpenFile(filename, FileMode.Create))
  26:                 {
  27:                     var serializer = new DataContractSerializer(typeof(T));
  28:                     serializer.WriteObject(fileStream, obj);
  29:                 }
  30:             }
  31:         }
  32:  
  33:         /// <summary>
  34:         /// Retorna o objeto que esta serializado no arquivo da Isolated Storage
  35:         /// </summary>
  36:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  37:         /// <param name="filename">nome do Arquivo </param>
  38:         /// <returns></returns>
  39:         public static T Retrieve<T> (string filename)
  40:         {
  41:             T obj = default(T);
  42:             using (var appStore = IsolatedStorageFile.GetUserStoreForApplication())
  43:             {
  44:                 if (appStore.FileExists(filename))
  45:                 {
  46:                     using (var fileStream = appStore.OpenFile(filename, FileMode.Open))
  47:                     {
  48:                         var serializer = new DataContractSerializer(typeof(T));
  49:                         obj = (T)serializer.ReadObject(fileStream);
  50:                     }
  51:                 }
  52:                 return obj;
  53:             }
  54:         }
  55:  
  56:         /// <summary>
  57:         /// Salva o objeto nas configurações do site (SiteSettings)
  58:         /// </summary>
  59:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  60:         /// <param name="chave">chave de acesso a configuração</param>
  61:         /// <param name="valor">objeto a ser salvo</param>
  62:         public static void AddSetting<T>(string chave, T valor)
  63:         {
  64:             if (!IsolatedStorageSettings.SiteSettings.Contains(chave))
  65:                 IsolatedStorageSettings.SiteSettings.Add(chave, valor);
  66:             else
  67:                 IsolatedStorageSettings.SiteSettings[chave] =valor;
  68:         }
  69:  
  70:         /// <summary>
  71:         /// Obtem objeto das configurações do site (SiteSettings)
  72:         /// </summary>
  73:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  74:         /// <param name="chave">chave de acesso a configuração</param>
  75:         /// <returns></returns>
  76:         public static  T GetSetting<T>(string chave)
  77:         {
  78:             if (IsolatedStorageSettings.SiteSettings.Contains(chave))
  79:                 return (T)IsolatedStorageSettings.SiteSettings[chave];
  80:             else
  81:                 return default(T);
  82:         }
  83:     }
  84: }


Gostou? Não Gostou? Então comenta ai!

segunda-feira, 31 de janeiro de 2011

Gerador de Senhas em C#

Classe para gerar senhas, considerando 3 tipos de senhas: apenas letras, apenas números e letras e números.  Bom divertimento!

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5:  
   6: namespace MyLibrary.Util
   7: {
   8:     /// <summary>
   9:     /// Classe de senha
  10:     /// </summary>
  11:     public static class PasswordUtil
  12:     {
  13:     
  14:         #region Metodos
  15:  
  16:         /// <summary>
  17:         /// Gera uma nova senha conforme os parametros
  18:         /// </summary>
  19:         /// <param name="tipo">Tipo da senha</param>
  20:         /// <param name="tamanho">Tamanho da senha</param>
  21:         /// <returns></returns>
  22:         public static string Generate(TypePassword tipo, byte tamanho)
  23:         {
  24:             switch (tipo)
  25:             {
  26:                 case TypePassword.Alfanumerico:
  27:                     return GeraSenhaAlfanumerico(tamanho);
  28:                 case TypePassword.Alfa:
  29:                     return GeraSenhaAlfa(tamanho);
  30:                 case TypePassword.Numerico:
  31:                     return GeraSenhaNumerico(tamanho);
  32:                 default:
  33:                     return GeraSenhaAlfanumerico(tamanho);
  34:             }            
  35:         }
  36:         
  37:         /// <summary>
  38:         /// Gera uma senha com letras e numeros
  39:         /// </summary>
  40:         /// <param name="tamanho">Tamanho da senha</param>
  41:         /// <returns></returns>
  42:         private static string GeraSenhaAlfanumerico(byte tamanho)
  43:         {
  44:             var sb = new StringBuilder();
  45:             var r = new Random();
  46:             for (byte i = 0; i < tamanho; i++)
  47:             {
  48:                 var c = (char)r.Next(65, 90);
  49:                 var n = r.Next(0, 9);
  50:                 var b = r.Next(-1,1);
  51:                 if( Convert.ToBoolean(b))
  52:                     sb.Append(c);
  53:                 else
  54:                     sb.Append(n);
  55:             }
  56:             return sb.ToString();
  57:         }
  58:  
  59:         /// <summary>
  60:         /// Gera uma senha apenas com letras
  61:         /// </summary>
  62:         /// <param name="tamanho">Tamanho da senha</param>
  63:         /// <returns></returns>
  64:         private static string GeraSenhaAlfa(byte tamanho)
  65:         {
  66:             var sb = new StringBuilder();
  67:             var r = new Random();
  68:             for (byte i = 0; i < tamanho; i++)
  69:             {                
  70:                 var c = (char)r.Next(65, 90); // Apenas texto
  71:                 sb.Append(c);
  72:             }
  73:             return sb.ToString();
  74:         }
  75:  
  76:         /// <summary>
  77:         /// Gera uma senha apenas com numeros
  78:         /// </summary>
  79:         /// <param name="tamanho">Tamanho da senha</param>
  80:         /// <returns></returns>
  81:         private static string GeraSenhaNumerico(byte tamanho)
  82:         {
  83:             var sb = new StringBuilder();
  84:             var r = new Random();
  85:             for (byte i = 0; i < tamanho; i++)
  86:             {
  87:                 var n = r.Next(0, 9); // Apenas numeros
  88:                 sb.Append(n);
  89:             }
  90:             return sb.ToString();
  91:         }
  92:         #endregion 
  93:     }
  94:  
  95:     /// <summary>
  96:     /// Tipo da senha a ser gerada
  97:     /// </summary>
  98:     public enum TypePassword
  99:     { 
 100:         /// <summary>
 101:         /// Letras e numeros
 102:         /// </summary>
 103:         Alfanumerico,
 104:         
 105:         /// <summary>
 106:         /// Apenas letras
 107:         /// </summary>
 108:         Alfa,
 109:  
 110:         /// <summary>
 111:         /// Apenas numeros
 112:         /// </summary>
 113:         Numerico
 114:     }
 115: }