Como é a informação, vista como bem econômico?

Idade do Byte Lascado

Já ouvi algumas pessoas falando que estamos saindo da Idade do Byte Lascado e entrando na Idade do Byte Polido. Estudando gestão do conhecimento e assistindo a vertiginosa ascensão da tecnologia da informação no mercado, fica muito clara a importância da informação. Não é nem a infraestrutura nem o desenvolvimento o que importa para as empresas: elas têm estes setores porque os armários de arquivos são muito lentos. Mas o que importa é a informação processada por elas.

Estava me lembrando de alguns vídeos muito bacanas de um consultor de carreira chamado Waldez Ludwig, falando sobre esta questão. Deem uma olhada:


Como o SharePoint 2010 se posiciona no mercado, segundo Gartner

O SharePoint 2010 está aparecendo com destaque segundo as avaliações do Gartner. Muito bem avaliado e classificado em dois quadrantes, é uma das principais plataformas colaborativas do mercado.


Social Software in the Workplace
Foi considerado o melhor em habilidade de execução e o segundo mais visionário. Esta avaliação foi feita em cerca de 12 meses passando por critérios como facilidade de adoção, usabilidade e inovação tecnológica.

Veja o artigo oficial sobre Social Software in the Workplace, no Gartner
http://www.gartner.com/technology/media-products/reprints/microsoft/vol14/article5/article5.html 



Horizontal Portals
Nesta área o SharePoint obteve a melhor colocação do mercado. Aparece em primeiro em habilidade de execução e como visionário. Esta análise foi feita por Jim Murphy, Gene Phifer, Ray Valdes, Eric Knipp. Avaliaram caracteristicas RIA (Rich Internet Applications), Web 2.0 entre outras.
Segundo o artigo, o SharePoint é bem considerado em mais de 70% das avaliações do Garnter.

Veja o Artigo oficial sobre Horizontal Portals, no Gartner
http://www.gartner.com/technology/media-products/reprints/microsoft/vol13/article10/article10.html

Como obter o HashCode de uma Coleção (List), em .NET?


Hoje tive um pequeno problema para resolver e acabei percebendo algumas coisas interessantes. Eu precisei comparar se duas List<T> são iguais e percebi que não teria uma solução nativa para mim. Normalmente eu sobrescrevo oGetHashCode e crio meu Hash, mas neste caso é diferente.
Acabei criando uma solução que vale para qualquer List, veja só:
public static int GetHashCode<T>(this List<T> l)
{
int hash = 0;
foreach (T item in l)
{
hash ^= item.GetHashCode();
}
return hash;
}

É importante frizar: O tipo T tem que sobrescrever o GetHashCode, se não for umBuilt-in Type. Por exemplo:
public class Pessoa
{
int idade { get; set; }
string nome { get; set; }

public override int GetHashCode()
{
return idade ^ nome.GetHashCode();
}
}


List<Pessoa> pessoas = obterPessoas(); // Obtem 150 pessoas aleatórias
Int hash = pessoas.GetHashCode<Pessoa>();


Como construir aviões em pleno voo?

Programadores, Designers, DBAs são algumas das profissões que conheço que aprendem a construir aviões em pleno voo. Algumas vezes, apenas, trocam turbinas em voo.
Sei que muito adoram trabalhar com ofícios como este:

Como fazer download de uma página, via HTTPWebRequest, que exija certificado Digital (SSL / HTTPS)


Olá Pessoal,

Tive a necessidade de baixar fotos e documentos de uma página de internet protegido por certificado digital. Eu possuo o Certificado de Cliente necessário, mas não sabia como fazer o download.



Vejo o código abaixo empacotado num extension method:

public static byte[] DownloadData(this System.Net.WebClient w, string url, X509CertificateCollection clientCertificates)
{
WebRequest req = WebRequest.Create(url);
req.PreAuthenticate = true;
req.UseDefaultCredentials = true;

HttpWebRequest reqWeb = (HttpWebRequest)WebRequest.Create(url);
reqWeb.ClientCertificates = clientCertificates;
reqWeb.PreAuthenticate = true;
WebResponse response = reqWeb.GetResponse();

using (BinaryReader br = new BinaryReader(response.GetResponseStream()))
{
   int buffer = 1024;
   int read;
   List<byte> donwloadedFile = new List<byte>();
   byte[] byteArray = new byte[buffer];
   do

   {
      read = br.Read(byteArray, 0, buffer);
      for (int i = 0; i < read; i++)
      {
         donwloadedFile.Add(byteArray[i]);
      }
   } while (read != 0);

   return donwloadedFile.ToArray<byte>();
}

}