sábado, fevereiro 24, 2007

Corrida nocturna

Depois de mais um dia de trabalho mentalmente cansativo o que me apetecia mesmo era dar umas braçadas para relaxar, mas quando chego à natação espanto o meu, a piscina estava fechada porque ía haver um meeting.

Vou para casa e como não tinha descarregado as energias, decidi ir fazer uma pequena corrida, 20:40 saiu de casa e vou em direcção ao paredão. Ao chegar ao paredão o ar tornou-se dificilmente respirável para quem estava em esforço físico, a humidade era imensa. Mas esta é a melhor parte, porque estava tanta humidade? Apesar de estar maré baixa, as ondas elevavam-se a uma altura incrível e em quase todos os sítios cobriam o paredão de água, é algo realmente notável e espetacular a força que o mar demonstra.

Quase uma hora depois chego a casa, cansado e pronto a tomar um merecido banho relaxante.

sexta-feira, fevereiro 23, 2007

Cast dentro do where em SQL

Este problema foi descoberto por um colega meu (obrigado Sérgio), mas como achei interessante vou aproveitar o mail que ele me enviou para explicar o problema.


Ao fazer um SELECT em que seja usado um CAST no WHERE, separar em dois selects: um primeiro que faz todas as outras validações e guarda o resultado numa variável do tipo tabela, e outro que pega nesses resultados e aplica a condição com o CAST. Ou seja, em vez de:
SELECT A.ID, A.Tipo, A.Valor
FROM A
WHERE A.Tipo = 'TipoDeValorSeguroParaFazerCast'
AND CAST(A.Valor AS FLOAT) > 0
passar a:
DECLARE @TABELA_TEMP table (ID bigint, Tipo varchar(30), Valor varchar(50));
INSERT INTO @TABELA_TEMP

SELECT A.ID, A.Tipo, A.Valor
FROM A
WHERE A.Tipo = 'TipoDeValorSeguroParaFazerCast'
SELECT ID, Tipo, Valor
FROM @TABELA_TEMP
WHERE CAST(A.Valor AS FLOAT) > 0

Assim evitam-se erros obscuros de CAST em algumas situações, em que se fazia CAST a tudo, inclusive entradas que não obedeciam a 'TipoDeValorSeguroParaFazerCast'... Claro que isto não é assim tão simples, e provavelmente só acontece em combinações específicas de índices e joins entre tabelas, etc., mas como regra geral é preferível prevenir.

terça-feira, fevereiro 20, 2007

Quem paga é o mexilhão

Segunda-feira, véspera de feriado, vou ter um dia calmo pensava eu...não podia estar mais enganado! Chego ao trabalho e tinha um mail da chefia onde quase era chamado de incompetente, onde entre outras coisas se dizia que já tinha dado um bug por corrigido 2 ou 3 vezes e o chato do bug não era exterminado.

"OK acalma-te, hoje nem direito a café tens". Começo a fazer uma análise detalhada dos problemas expostos e cheguei a duas conclusões. Para quem sabe alguma coisa de base de dados facilmente percebe os problemas:

  1. Uma unique key significa que um dado campo não pode ter valores repetidos, se tentarmos inserir valores repetidos dá erro;
  2. Não se pode modificar ou remover algo que já não existe, se o tentarmos fazer nenhuma alteração obtemos.
Eu como programador do frontend com os utilizadores é que tenho culpa da má utilização que lhe dão, pois claro, é como dizer "é pá o meu carro só tem 100km e já está estragado a culpa é da marca que fabricou o carro, lá por eu ter andando os 100km em primeira sempre com as rotações no máximo isso não quer dizer nada".

quinta-feira, fevereiro 08, 2007

C# Lambda expressions

As Lambda expressions são uma nova adição disponível no C# 3.0. Após ler vários artigos espalhados pela internet, vejo que a maior parte deles incara as lambda expressions como simples syntactic sugar, sendo os próprios exemplos bastante redutores. Deixo aqui um link para um artigo que eu acho que se destaca, e que tem de ser lido com algum cuidado para se conseguir "digerir" toda a informação inerente. http://blogs.msdn.com/ericlippert/archive/2007/01/10/lambda-expressions-vs-anonymous-methods-part-one.aspx Este é o primeiro artigo de um conjunto de 3, nos quais se vão introduzindo progressivamente as potencialidades das lambda expressions.

terça-feira, fevereiro 06, 2007

Até breve a mais um

Parece que os meus amigos, por um ou outro motivo, começaram com a febre de emigrar. Primeiro o Gonçalo que foi trabalhar para os paquetes, depois a Anocas que foi trabalhar para a World Disney e agora finalmente o Ricardo foi para o Brasil para se casar. A este ritmo daqui a 2-3 anos fico sem amigos...
Boa sorte para todos vocês!