domingo, maio 21, 2006

O Código Da Vinci

Há algum tempo que não via uma euforia tão grande por um filme. Sábado à noite tentei ir à sessão das 0:30 (ou seja já era domingo) ao Cascaishopping, espanto o meu mas estava esgotado...esgotado, eu quando vou ao cinema a essa hora nunca estão mais de meia dúzia de "gatos pingados". Vou a acelerar até ao CascaisVilla para tentar ainda chegar a tempo, e ainda mais espanto, só havia lugares para a 1ª fila, torcicolo não muito obrigado.

Domingo à tarde lá tentei num cinema que nunca tinha ido, no Beloura shopping. Sim desta vez havia lugares e para uma sessão a meio da tarde. Só posso dizer que adorei o cinema: sítio fácil para estacionar o carro, tela gigante, sem putos aos guinchos e a mandar pipocas, filas extremamente desniveladas que até se podia sentar um cabeçudo à frente sem nos chatear e ainda umas pipocas espetaculares.

Passando ao filme em si, para mim, está um filme bem conseguido em termos de realização, cenários, etc, mas por outro lado não passa de mais uma história que interliga: Santo Graal, templários, priorado do Sião, Sudário e a Capela de Roslin. A destacar o desempenho do actor Ian McKeller que dá um toque de brilhantismo a toda a intriga.

Em termos da veracidade das histórias sobre este tema, haverá sempre quem acredita na história contada pela igreja e quem acredite na falsidade sobre a qual assenta todo o cristianismo. Facilmente descobrem-se inconsistências entre histórias e coincidências entre outras. Por exemplo segundo alguns, Da Vinci saberia que Jesus teria tido descendentes e tentaria que essa verdade não fosse incoberta ou pelo menos esquecida, por outro lado, outras histórias dizem que o Sudário não tem uma imagem de Jesus mas sim de Da Vinci e que o próprio Da Vinci o teria "fabricado". Estas histórias são claramente inconsistentes, porque Da Vinci por um lado defenderia a verdade e por outro criaria uma mentira? Acho o último diálogo entre as personagens Robert e Sophie, muito interessante e que basicamente dá uma resposta a toda a polémica - Que interessa a verdade? interessa é o modo como as pessoas agem perante o conhecimento que têm.

sábado, maio 20, 2006

Mais um enforcamento

Ai não é enforcamento que queria dizer era mesmo casamento (fugiu-me a boca para a verdade).
Desta vez o condenado...condenado não, noivo, bolas tou só a enganar-me... dá por nome de Hugo Vicente, mais conhecido como "Montes da Bués", o nosso caro colega iseliano. Hoje a tarde apareceu-me ele em minha casa com um convite todo bonitinho (claro que a ideia não foi dele foi da possível futura esposa), para dia 16 de Setembro.

terça-feira, maio 16, 2006

Apresentação - "Gestão de Identidades"

Posso dizer que apesar de não ter sido um evento extraordinário, foi um evento que não me desiludiu totalmente. A primeira coisa a focar é a excelência do discurso do sr. Rafal Lukawiecki, do melhor que tenho assistido. Em relação ao conteúdo em si, agradou-me conseguir fazer alguns paralelismos graças ao conhecimento que adquiri nas cadeiras de segurança informática, o que significa que aprendi qualquer coisa importante e que me dá capacidade de raciocinar sobre assuntos relacionados com a matéria.

sábado, maio 13, 2006

New como modificador de métodos em C#

Apesar de já ter ouvido sobre o assunto, enquanto estava a escrever algumas linhas de código, fiquei na dúvida sobre o que o modificador new fazia quando aplicado a um método, então resolvi fazer uma pequena pesquisa e tirar as minhas conclusões.
Em C# existem 6 modificadores de métodos: static, extern, abstract, virtual, override e new. Passando rapidamente pelos três primeiros, static tem o objectivo de definir um método de tipo e não de instância, extern apesar de nunca o ter usado serve para indicar que um método é definido externamente por exemplo numa DLL e abstract tem como objectivo não dar implementação ao método, obrigando que a derivada da classe lhe dê implementação, para se ter métodos abstract é necessário que a classe também seja marcada como abstract (a classe é encarada como uma interface).
Os atributos virtual e override são os que considero mais importantes pois são os que efectivamente possibilitam o polimorfismo, por isso darei um pouco mais de atenção mais a frente. Analisando o código seguinte fica a pergunta, qual a diferença entre o funcionamento dos dois métodos?
     
public class Base { public void Met1() { Console.WriteLine("Base.Met1"); } public void Met2() { Console.WriteLine("Base.Met2"); } } public class Derivation1 : Base { public void Met1() { Console.WriteLine("Derivation1.Met1"); } public new void Met2() { Console.WriteLine("Derivation1.Met2"); }
public static void Main() { Base bas = new Derivation1(); Derivation1 der1 = new Derivation1(); bas.Met1(); der1.Met1(); Console.WriteLine(); bas.Met2(); der1.Met2(); Console.ReadLine(); } }
A resposta é nenhuma, a referência para base como esta tem implementação dos métodos irá chamar os seus métodos e a referência para a classe derivada como seria espectável irá chamar a sua implementação.
Base.Met1
Derivation1.Met1
Base.Met2
Derivation1.Met2
Então para que serve o new? O seu objectivo é simplesmente forçar a ideia que se está a esconder um método não virtual da classe base, o que na prática simplesmente vai evitar um warning do tipo “'Derivation1.Met1()' hides inherited member 'Base.Met1()'. Use the new keyword if hiding was intended”. Creio que o motivo do new existir em C# vem dele não existir em C++, ou seja, como em C++ o programador inadvertidamente poderia esconder métodos e só o iria detectar em runtime porque o comportamento não seria o esperado, em C# pelo menos tem um warning em compile time.
Complicando mais um pouco, o código seguinte mostra a interacção entre o virtual, o override e o new.
public class Base{
  public virtual void Met1() { Console.WriteLine("Base.Met1"); }
  public virtual void Met2() { Console.WriteLine("Base.Met2"); }
  public virtual void Met3() { Console.WriteLine("Base.Met3"); }  
}  
public class Derivation1 : Base { public override void Met1() { Console.WriteLine("Derivation1.Met1"); } public new virtual void Met2(){Console.WriteLine("Derivation1.Met2");} public override void Met3() { Console.WriteLine("Derivation1.Met3"); }
public class Derivation2 : Derivation1 { public override void Met1() { Console.WriteLine("Derivation2.Met1"); } public override void Met2() {Console.WriteLine("Derivation2.Met2");} public new virtual void Met3(){Console.WriteLine("Derivation2.Met3");}
public static void Main() { Base b = new Derivation2(); Derivation1 d1 = new Derivation2(); Derivation2 d2 = new Derivation2();
b.Met1(); d1.Met1(); d2.Met1(); Console.WriteLine(); b.Met2(); d1.Met2(); d2.Met2(); Console.WriteLine();
b.Met3(); d1.Met3(); d2.Met3(); Console.ReadLine(); } }
Na chamada ao Met1, apesar de ter diferentes referências, como estou a construir um objecto Derivation2 desde que os métodos sejam polimórficos vou chamar o Met1 de Derivation2. Na chamada a Met2, tendo como referência a Base, o que vai acontecer é que se vai chamar o Met2 da Base, isto porque o new na Derivation1 está a criar um novo método com a mesma assinatura, logo está a isolar as suas classes base das suas derivadas. O raciocínio para o Met3 será o mesmo, o output será o seguinte:
Derivation2.Met1
Derivation2.Met1
Derivation2.Met1

Base.Met2
Derivation2.Met2
Derivation2.Met2
Derivation1.Met3
Derivation1.Met3
Derivation2.Met3

Safira

Para quem não sabe a Safira não é só uma pedra preciosa, também é o nome de uma empresa portuguesa ligada ao ramo da engenharia informática. Ao final da tarde de ontem eu, o Pre e o Pyro tivemos uma reunião na Safira a convite do Pedro Penedo, onde além das nós, ainda esteve o Luís António também em representação da Safira.

Nessa reunião abordámos basicamente o nosso percurso académico, o nosso projecto final de curso e o posicionamento da Safira ao nível do mercado. Posso dizer que foi uma reunião que me agradou bastante, em primeiro lugar o Pedro Penedo e o Luís António são duas pessoas aparentemente descontraídas que nos deixaram bastante à vontade, em segundo lugar porque a postura da Safira perante o mercado e o nível de colaboradores que me pareceu ter a torna uma empresa muito atractiva. Uma coisa que me admirou foi o facto deles não terem um conhecimento do curso de Engenharia Informática e de Computadores do ISEL, parece que o ISEL, a Safira ou as duas partes andaram a dormir. De qualquer modo acho que conseguimos dar uma boa imagem do nosso curso.

sexta-feira, maio 12, 2006

Mais uma entorse

Parece que isto se está a tornar um problema crónico, em ambos os tornozelos. Ontem após a acção de formação fui jogar uma futebolada com o pessoal do ISEL. Passado uma meia hora de estar a jogar, lá torci o tornozelo mais uma vez. Para variar, ainda tentei continuar a jogar, conclusão ainda piorei as coisas...

Estava a contar ter um fim-de-semana desportivo lá foi tudo por água abaixo, a prova de natação no sábado e o torneio de ping-pong no domingo, que azar :-(

sábado, maio 06, 2006

Gestão de Identidades

Inscrevi-me ontem no evento da Microsoft Gestão de Identidades - Um grande passo na Segurança Informática da sua Empresa. Este evento irá realizar-se dia 16 deste mês no Centro Cutura de Belém, e terá como orador o senhor Rafal Lukawiecki dito como um especialista no assunto.

Para dizer a verdade estou com algum receio que este evento não corresponda às minhas espectativas, o que eu desejava ouvir seria um assunto relacionado com segurança informática, mas este evento pode ter um discurso mais voltado para os gestores e menos para os programadores. Vejamos o que dará.