Cards Game no Surface

12/09/2009 18:24

Vídeo bem legal do Surface, tirado do projeto Surface Academy 2009 Toolkit do CodePlex, confiram:

Informativo



Encontrando números em uma string com Regex

09/09/2009 22:18

Como regex são úteis! Quer ver um exemplo? Hoje eu precisava encontrar números inteiros dentro de uma string, queria fazer de um jeito rápido e fácil e sugeriram-me usar a classe Regex do System.Text.RegularExpressions.

O código ficou muito simples, abaixo coloco um exemplo parecido com o que utilizei:

string texto = "Quero achar os números 5 e 255!";

Regex regex = new Regex(@"\d+");
Match match = regex.Match(texto);

Console.WriteLine(match.Value);
Console.WriteLine(match.NextMatch().Value);

Neste caso era de conhecimento prévio que haviam apenas dois números na string por isso foi possível utilizar NextMatch() para retornar a próxima ocorrência encontrada. Uma maneira mais elegante seria utilizar a classe MatchCollection, conforme demonstrado a seguir:

string texto = "Quero achar os números 5, 78, 67 e 255!";

Regex regex = new Regex(@"\d+");
MatchCollection match = regex.Matches(texto);

if (match.Count > 0)
{
    for (int c = 0; c < match.Count; c++)
    {
        Console.WriteLine(match[c].Value); 
    }
}

Dessa forma não importa o número de ocorrências encontradas. A classe Match também é capaz de retornar a posição onde o número foi encontrado.

Quer encontrar uma data ao invés de um número? Monte uma expressão regular pra isso. ;)

C#



Erros que alegram o dia…

08/09/2009 22:53

Esse post era pra ter saído na sexta-feira passada, mas não tive tempo no dia, então vai hoje mesmo. Estava eu no final do expediente – o que pode significar num bom dia um horário entre 18h e 20h :) – escrevendo um código de complexidade razoável, quando me deparei com o seguinte erro:

ErroGZip

O erro estourou no seguinte trecho:

using (GZipStream file = new GZipStream(fileStream, CompressionMode.Decompress, false))

A mensagem apesar de não dizer muita coisa (diretamente) me fez notar que o erro estava no modo de compressão, o certo era CompressionMode.Compress. Após alterar o código tudo funcionou corretamente.

Havia mostrado o erro a um amigo e notei o espanto dele ao ler uma mensagem de erro tão pitoresca, afinal tratava de um “número mágico incorreto”. O fato é que, infelizmente, na máquina estava instalado o pacote de idiomas do framework 3.5 para o português, o que não ajudou em nada.

No contexto de arquivos, Magic Numbers são os primeiros bytes que identificam um tipo de arquivo unicamente, por exemplo, um PDF ou um arquivo ZIP. Alguns números mágicos ficaram famosos pela peculiaridade das palavras que eram criadas no formato hexadecimal, seguem alguns exemplos:

Magic Number Description
DEADDEAD A Microsoft Windows STOP Error code used when the user manually initiates the crash.
DEADBEEF Famously used on IBM systems such as the RS/6000, also used in the original Mac OS operating systems, OPENSTEP Enterprise, and the Commodore Amiga. On Sun Microsystems' Solaris, marks freed kernel memory (KMEM_FREE_PATTERN)
CAFEFEED Used by Sun Microsystems' Solaris debugging kernel to mark kmemfree() memory
C0DEDBAD A memory leak tracking tool which it will change the MMU tables so that all references to address zero

Fala a verdade, pegar um erro desses alegra ou não o dia? É… não alegra, eu sei.

ASP.NET



Computadores antigos

07/09/2009 23:03

imsai8080 Achei um site interessante sobre computadores antigos, lá você pode ver as especificações de computadores como o MITS Altair 8800 ao lado, com seus incríveis 64KB de RAM e um possante processador Intel 8080A de 2.0 MHZ.

http://oldcomputers.net/


No Brasil temos o site que destaco abaixo sobre a história do computador:

http://www.museudocomputador.com.br


Boa leitura!

Dicas



Décimo quarto encontro do grupo .Net Architects

06/09/2009 16:37

Ontem participei de outro encontro do .Net Architects onde o Luciano Condé (arquiteto de soluções da Microsoft) falou pra nós sobre o Application Architecture Guide, tivemos a oportunidade de discutir sobre arquitetura e experiências vividas pelos presentes na reunião. Gostei muito do encontro, a palestra do Condé foi excelente!

Ele já postou em seu blog o ppt utilizado na apresentação. No ano passado eu havia postado sobre o Application Architecture Guide aqui e aqui, pois como o guia faz parte do patterns & practices da Microsoft vale a pena a leitura (mesmo que só para criticar e dar feedback para a comunidade).

.Net Architects, Enterprise Library ,