quarta-feira, julho 23, 2008

Previsão para o final do Tour 2008

Após a última etapa de alta montanha (Alpe d'Huez) e apesar de pessoal gostar mais dos ciclistas ditos trepadores, acho que este ano nenhum deles merece ganhar o Tour porque nunca foram audazes o suficiente para deixar os contra-relogistas para trás. Assim sendo a minha previsão, e vamos ver o quanto vou errar, o pódio do Tour será:

1º Cadel Evans
2º Carlos Sastre
3º Denis Menchov

terça-feira, julho 22, 2008

Delete Cascade

Já sofri por várias vezes o problema de querer apagar um tuplo e não o conseguir porque este tem uma relação com outra tabela, a qual tem um tuplo que o referencia e por isso é necessário apagar primeiro o tuplo que tem a foreign key e só depois o tuplo principal.

Vamos imaginar o seguinte cenário, tenho 3 tabelas: Form, Section e Question; estas tabelas representam formulários onde um formulário tem secções e cada secção tem questões. Para apagar um dado formulário é necessário primeiro apagar as suas secções, mas para apagar uma secção é necessário primeiro apagar as suas questões. O código seguinte possibilita-nos apagar todos os formulários cujo nome é 'xpto':

delete FROM question WHERE sectionid IN
(SELECT sectionid FROM section WHERE formid in
(SELECT formid FROM form WHERE name='xpto'));
GO

delete FROM section WHERE formid in
(SELECT formid FROM form WHERE name='xpto');
GO

delete FROM form WHERE name='xpto';
GO

Este código não é feito com objectivos de desempenho mas sim só com o único objectivo de se atingir o fim proposto que é a remoção de tuplos.

segunda-feira, julho 07, 2008

IPCTN - Última fase

Finalmente o projecto IPCTN (Inquérito ao Potencial Científico e Tecnológico Nacional 2007) está a chegar ao fim, só falta esta última fase de tratamentos de dados e o projecto fica concluído. Apesar de ser um projecto que me diz muito, porque foi o primeiro grande projecto no qual tive um papel também de gestão e foi feito na sua integra com base no Midgard (o meu projecto final de curso), está a chegar a uma fase que gostaria de estar totalmente disponível para outros projectos, outros desafios.

Neste momento a minha motivação é o Orion's Belt 2.0 que está ainda numa versão alpha mas que espero estar pronto até ao final do ano, com muitas novidades e melhorias em relação ao anterior.

sexta-feira, julho 04, 2008

Tatuagens e discriminação

Apesar de se dizer que as tatuagens estão na moda ainda continua a haver muita discriminação com as pessoas que têm tatuagens. Eu falo no que acontece comigo, e esta reflexão surge também pelo que vi ontem no metro quando um rapaz com os braços todos tatuados entrou na carruagem e toda a gente ficou a olhar para ele.

Se ainda consigo admitir comentários de pessoas da idade da minha mãe que dizem - "Se te tivesse conhecido depois de teres as tatuagens não iria olhar-te com os mesmos olhos, ou pelo menos iria demorar mais tempo" - custa-me mais a perceber comentários de pessoas da minha idade. Tenho um amigo na natação, da minha idade, que há uns tempos me revelou o que pensou da primeira vez que me viu - "Ena aquele gajo com tatuagens, que 'granda manfias' que deve ser, a ver se não sou ainda roubado!".

É pá eu sou a mesma pessoa com ou sem tatuagens, é só uma forma de arte que por acaso está desenhada no meu corpo, será difícil perceber que uma tatuagem não muda a personalidade de uma pessoa?

quarta-feira, julho 02, 2008

Derivação de interfaces e o Resharper

Parece que isto são duas coisas que não se dão lá muito bem. Fiz algo do género:
public interface IBase
{
void BaseMethod();
}

public interface IDerivation: IBase
{
void DerivationMethod();
}

public class Implementation: IDerivation
{
...
}
A seguir crio um objecto:
IDerivation obj = new Implementation();

E fico espantado quando faço obj. e o Intellisense não me é mostrado o BaseMethod destacado a negrito (numa primeira fase nem reparei que ele lá estava). Ao princípio ainda pensei que fosse problema meu - "será que estou a ver mal o filme e tenho de fazer um cast explicito para IBase" - mas ao mesmo tempo não me fazia sentido porque isto ia contra as regras de herança. Bem, o problema é do resharper que não mostra os métodos de uma interface derivada em destaque na listagem do Intellisense.

terça-feira, julho 01, 2008

Obter a parte decimal em c#

Por acaso nunca tinha necessitado mas pensava que existiria algo de framework que nos possibilitasse obter a parte decimal de um double. Bem aparentemente não existe nada, e o que encontrei na net achei um pouco complexo demais para a simplicidade do problema em si, logo fiz eu o seguinte código que acho não ser nada complicado e funciona em todas as situações (pelo menos as que testei).

public static int GetDecimalPart(double value)
{
  int number = (int) value;
  string numbString = number.ToString();
  int stringLength = numbString.Length;
  return Int32.Parse(value.ToString().Substring(stringLength+1));
}