sexta-feira, setembro 21, 2007

.Net 3.X

Encontrei este link que considero interessante sobre as novas funcionalidades do .NET 3.0 e 3.5. Apesar de achar que vamos ter grande evoluções (LINQ, Lambda expressions, etc), existe um sintatic sugar que não me "passa no goto" porque vai dar origem a mais "lixo" no meio do código, que pode ser facilmente evitado. Veja-se um exemplo simples:
Club club = new club();
club.name = "xpto";
A nova funcionalidade a que me refiro permite o seguinte:
Club club = new club(name = "xpto");
Aparentemente é uma boa evolução, menos linhas de código, menos chamadas ao objecto, agora porquê estou contra esta funcionalidade? Porque na minha perspectiva o que fica realmente elegante é o seguinte:
Club club = new club("xpto");
Têm é de existir construtores que possibilitem afectar os campos que se julguem necessários quando se cria o objecto.

segunda-feira, setembro 17, 2007

Standards para quê?

Estava a ler alguma documentação sobre Ajax quando reparei no seguinte parágrafo, proferido por Todd Anglin da Telerik:

"At the heart of Ajax is the ability to communicate with a web server asynchronously without taking away the user’s ability to interact with the page. The XMLHttpRequest is what makes this possible. This technology was created by Microsoft as an IE ActiveX control to support their (then) groundbreaking Outlook Web Access, but it has since been built-in natively to all modern web browsers (including IE7). In fact, if Mozilla had not had a rare “Microsoft moment” and decided not to add support for the nonstandard XMLHttpRequest to their Firefox browser, it is doubtful that Ajax would be nearly as popular as it is today."

Conclusão: há sempre alguém que se julga acima do que já está feito e tenta fazer sempre as coisas à sua maneira, não são assim estabelecidos standards e os programadores que querem utilizar a tecnologia são obrigados a fazer código horrivelmente feio, para assim suportarem as diferentes implementações.

terça-feira, setembro 11, 2007

Encriptar com o DES em C#

Já algum tempo que não mexia com bibliotecas criptográficas e como até sou um bocado esquecido, tive de pesquisar um bocado até chegar a uma solução que me fizesse encriptação com o DES. O código resultante foi o seguinte:
//DES Provider
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(ConfigurationManager.AppSettings["DESKey"]);
DES.IV = ASCIIEncoding.ASCII.GetBytes(ConfigurationManager.AppSettings["DESIV"]);
//DES encriptor
MemoryStream memoryStream = new MemoryStream();
ICryptoTransform desencrypt = DES.CreateEncryptor();
CryptoStream cryptoStream = new CryptoStream(memoryStream, desencrypt, CryptoStreamMode.Write);
 //Data to encript
StreamWriter writer = new StreamWriter(cryptoStream);
writer.Write("UmaQualquerPassword");
writer.Flush();
cryptoStream.FlushFinalBlock();
writer.Flush();
//encriptor return
string password = Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length)
Depois de fazer isto a solução não me agradou, acho que é código demais para fazer uma simples encriptação de uma string. 1) Porquê são necessários dois streams, um de entrada e um de saída? 2) Porquê é necessário um terceiro stream para escrever para o cripto CryptoStream?
1) Em conversa com um amigo a explicação que ele arranjou foi: O objectivo é tornar as bibliotecas genéricas. Eu até aceito esta explicação, mas não concordo muito que se complique a usabilidade das bibliotecas só para as tornar genéricas.
2) É necessário um terceiro stream porque o CryptoStream não tem um método de Write que seja simples de utilizar ao contrário do método de Write do StreamWriter.
Para mim a encriptação deveria ser algo tão simples como algo do género:
//DES Provider
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(ConfigurationManager.AppSettings["DESKey"]);
DES.IV = ASCIIEncoding.ASCII.GetBytes(ConfigurationManager.AppSettings["DESIV"]);
//DES encriptor
MemoryStream memoryStream = new MemoryStream();
ICryptoTransform desencrypt = DES.CreateEncryptor();
string password = desencrypt.Transform("UmaQualquerPassword");
Continuava a ser genérico, bastando que a interface ICryptoTransform tivesse um método Transform de jeito, útil para estas situações simples onde só se quer encriptar uma string.

sexta-feira, setembro 07, 2007

A nova tatuagem

De vez enquando passam-me algumas ideias insanas pela cabeça, foi assim à dois meses atrás quando decidi fazer a minha segunda tatuagem. Eis os resultados:

























Espectacular, não?

quinta-feira, setembro 06, 2007

Um passo mais perto

Esta noite já vou dormir mais descansado, já tenho o contrato promessa compra e venda da minha possível futura casa, já sinto que agora só uma coisa do outro Mundo me vai impedir de ficar com a casa que eu tanto gostei e que se destacou claramente de todas as casas que visitei. Como referi num post anterior vou deixar algumas fotos para ficarem para a posterioridade.

A entrada "ajardinada"


A sala com lareira


A cozinha não muito grande mas relativamente bem equipada (por do sol na janela)


Um dos três quartos


A vista para a Serra de Sintra


A vista para o mar (lá ao fundo)





quarta-feira, setembro 05, 2007

Infertilidade

Apenas vou deixar a referência para um post do blog de um amigo que tem a experiência pessoal nesta matéria, e como tal é a pessoa ideal para falar sobre este assunto. Apesar de não conhecer nada sobre o assunto achei interessantíssimo o modo como foi exposto e a quantidade de informação contida em tão poucas linhas.

segunda-feira, setembro 03, 2007

Human Trafficking

Uma das minhas paixões sem dúvida que é o cinema, este fim-de-semana como já é habitual tive a descontrair a ver um filme, o seleccionado foi Human Trafficking (Tráfigo Humano). Não conhecia nada do filme: traillers, elenco, história, etc; o que é bom porque não estou à espera de nada nem tenho uma ideia pré-formada, ou seja, estou de mente aberta para o que vou ver, quando isto acontece às vezes há o risco de desligar o filme 15 minutos depois de o começar a ver, mas também há o risco de saborear com muito mais intensidade um filme como este.

Passando ao filme em si, é "pesado", perturbador, intenso, poderoso...qualquer um destes adjectivos é bom para descrever o que senti em relação ao filme. Não cheguei a perceber se o filme é baseado em alguma história verídica em particular, mas de certeza que a sua história se assemelha a muitas histórias reais, mostrando até que ponto a antítese que um ser humano é desumano pode ser verdadeira.