segunda-feira, junho 08, 2015

Swim challenge

Há 3 semanas atrás lesionei-me com uma daquelas entorse bastante agressivas, tornozelo e joelho, e devido a isso tive de falhar o triatlo de Caminha, o que me deixou bastante irritado comigo mesmo. Desde que me lesionei só tenho feito natação, vou tentar introduzir a bicicleta esta semana e ver como me sinto e a corrida ainda estou bastante coxo para começar, vamos lá ver quando retomo.

Como só estou a fazer natação não consigo competir, a não ser em provas de natação por isso este fim de semana foi bom para matar o bichinho da competição e participar no swim challenge de Cascais. A equipa estava lá toda em peso, amigos de outros clubes é sempre uma boa altura para conviver antes e depois da prova, cheguei à praia por volta das 10h e vim por volta das 13h, ou seja, a prova durou cerca de 30 minutos o resto foi convívio...parece-me bem.

Quanto à prova em si, iam participar muitos dos melhores nadadores nacionais, mais de 200 nadadores na linha de partida, ia ser uma enorme máquina de lavar. O meu objectivo era terminar na primeira metade, com o pouco treino que tenho tido não podia pedir mais, em todo caso era uma boa prova para fazer uma natação a fundo visto que quando faço triatlo, a natação costuma ser sempre o segmento que mais poupo e nunca dou o máximo. Até à primeira bóia era quase ir a nadar em cima de corpos, como fico mais ou menos a meio do pelotão é sempre onde há mais confusão. 

A prova consistia num percurso de 2 voltas em que a transição entre voltas era feita num pequeno segmento de corrida na praia. Ao final da primeira volta saio para a areia a correr em passos curtos e a coxear e tentar ignorar a dor mas não agravar a entorse. Ao entrar novamente dentro de água o coração parecia que me queria saltar pela boca, uma sensação terrível de desconforto e descompensação, mas não devo ter sido o único, porque foi nessa altura que ultrapassei mais nadadores.

Acabei a prova no lugar 93 dentro do que pretendia, com o tempo de 34m46s, num percurso que segundo vários GPS contava cerca de 2000m, um pouco mais que a distância de milha (1852m) que deveria ser a distância da prova.

quarta-feira, maio 20, 2015

Fair Play é uma treta

Esta frase já foi muitas vezes dita por intervenientes do desporto rei, mas hoje vou aplica-la a um desporto que pelo menos gosto tanto como o futebol, estou a falar do ciclismo. Na etapa de ontem do Giro de Itália, a etapa número 10, aconteceu algo de um altruísmo louvável que depois acabou por ser penalizado, quanto a mim por falta de tacto, por facto de bom senso.

A menos de 10 kms do fim da etapa quando o pelotão seguia a alta velocidade um dos principais concorrentes à vitória final, o Rickie Porte, teve um furo, para quem seque ciclismo sabe o quão delicada é esta situação pois a distância para o fim já não dá grande margem a recuperação. Numa mostra de grande desportivismo um ciclista de outra equipa, Simon Clarke, também australiano que não tem nenhum objectivo na classificação geral, cedeu a sua roda a Richie Porte para este perder o mínimo de tempo possível. Mesmo assim chegou à meta atrasado 47 segundos em relação ao pelotão, o azar do furo já tinha feito estragos significativos.

Não sou um fã do Richie Porte, sou um fã do ciclismo por isso considero que a minha opinião é imparcial. No final da etapa além do atraso na estrada o Richie Porte foi penalizado em 2 minutos, porquê? Porque foi ajudado por um elemento de outra equipa. E pior, o Simon Clarke que o ajudou em prejuízo próprio também foi penalizado em 2 minutos. Dizia o bom senso que não deveriam penalizar ninguém, para mim claramente não é uma infracção que beneficie através de  "batota" o Richie Porte, porque se fosse um colega da sua equipa e não de outra equipa já seria tudo legal. Se ele se tivesse agarrado a um carro a fingir que estava lesionado e fosse levado pelo carro até ao pelotão se calhar não tinha sido tão penalizado e isso sim seria um batota a sério.

Obrigado senhores comissários de prova por terem seguido os regulamentos à risca e terem tornado a corrida menos interessante, retirando da disputa da prova um dos ciclistas que mais qualidade tinha para discutir o pódio!

segunda-feira, maio 18, 2015

Clean up the Atlantic

Já há alguns anos que não participava numa limpeza subaquática, lembro-me que na altura que tirei o meu primeiro curso de mergulho foi uma das estratégias que utilizei para conseguir ganhar mais experiência e fazer mais mergulhos (sem gastar dinheiro). 

Há pessoas que não o gostam de fazer, mas no meu caso considero que simplesmente é um tipo de mergulho diferente, com objectivos diferentes, é porreiro andar a percorrer o fundo com o objectivo de recolher coisas que não deveriam lá estar, de arranjar estratagemas para as soltar de onde estiverem presas, de conseguir trazer à superfície algo que é mais pesado e que nos puxa para baixo.


Ontem o Clean Up the Atlantic acabou por ser um modo muito agradável de passar a manhã, mergulhar e ao mesmo tempo estar a fazer algo de benéfico por um espaço natural que é tão belo e que me diz tanto, afinal de contas vivo em Cascais desde que nasci e esta é uma zona que frequento regularmente, basta dizer que no dia anterior tinha feito um treino de mar com a minha equipa de triatlo a passar exactamente no mesmo sítio.

Uma coisa que me chateia neste caso, e sim vai contra as regras primárias do mergulho, é de ser obrigado a andar com um buddy, a visibilidade já é pouca e quando se mexe no fundo torna-se impossível de ver alguma coisa tirando o nosso próprio nariz. Com isto acaba-se por perder mais tempo à procura do buddy que realmente a fazer o que interessa e torna-se é um foco de stress desnecessário, vamos lá ver, a profundidade máxima a que fui não chegou aos 4 metros...

Como resultado final da minha parte recolhi: 1 comando da PS, 1 bola, 1 boneca, 1 garrafa, 1 mangueira, várias latas, vários plásticos e vários ferros.




sexta-feira, maio 08, 2015

Survival Xperience 2015

Já tinha passado quase 2 anos desde o último Survival Xperience, devo confessar que foi bom voltar à dinâmica de ajudar na organização de um evento, de vez em quando é bom para reunir com os amigos e voltar ao stress. O Survival Xperience 2015 decorreu no último dia 1 Maio, mas mais que o evento vou desvendar um pouco do meu trabalho de preparação.


Eu fui o primeiro a entrar em campo, literalmente, tal como no último Survival Xperience a minha função era essencialmente de batedor, estava encarregue de descobrir pontos interessantes de forma a termos um percurso agradável, que passasse por locais bonitos, locais marcantes no concelho, dar a conhecer locais que normalmente não serão visitados por quem anda na estrada, ter bastantes trilhos onde só se passasse a pé de modo a não haver grandes vantagens se alguém se lembrasse de andar de carro que era contra as regras (e ter um número de pontos e de dispersão dos mesmos que tornasse impossível descobrir todos os pontos no tempo limite da prova).


Inicialmente tinha definido um percurso de 30 pontos, mas haviam pontos pouco interessantes e acabaram por ser seleccionados 23 pontos finais. Devo dizer que para encontrar estes pontos ainda tive 2 dias a andar de bicicleta de um lado para o outro, por caminhos que nem sempre conhecia, por onde tinha de andar com a bicicleta às costas, (a fugir de uns cães do tamanho de burros), e após isto apresentar os pontos à restante equipa da organização e definir o que íamos fazer. O timing da prova é que não foi o ideal, no dia seguinte tive o Triatlo Longo de Lisboa e devido a isso não pude dar um grande contributo no dia da prova, só consegui estar com eles até à hora de almoço e depois voltei mesmo no final do dia só para trocar meia dúzia de palavras com os restantes membros da organização e saber como tinha corrido.


Como era eu que conhecia os locais exactos onde eram os pontos a colocação dos marcadores nos locais teria de ser minha responsabilidade e como isso era algo que tinha de ser feito da véspera foi decidido fazer quando eu saísse do trabalho no dia anterior à prova. A colocação decorreu noite dentro e tenho de agradecer ao Rui Santos ter-me acompanhado nessa tarefa, senão fosse o triatlo não me tinha incomodado muito, mas tendo o triatlo queria conseguir dormir bem para estar pronto. Mesmo assim houveram alguns pontos que ainda foram colocados de manhã mesmo antes da prova começar. 

A recompensa de ver os participantes gostarem e divertirem-se com a prova é muito boa e dentro das minhas possibilidades acho que ajudei em tudo o que podia durante aqueles 2 dias. Agora vou confessar, prefiro muito mais participar que organizar, quando vi os participantes a saírem da base para irem procurar os pontos não deixei de ter um bocadinho de inveja e de querer estar no lugar deles, bem em Setembro haverá outro Survival Team Challenge e neste quero participar!

terça-feira, maio 05, 2015

Triatlo Longo Lisboa

Acordar bem cedo, 4h45m, ainda noite cerrada, a temperatura ajudava a que não fosse assim tão mau, a noite estava agradável. Obrigar-me a comer alguma coisa substancial pois o esforço que me esperava não ia ser pêra doce. Cheguei ao Parque das Nação por volta das 6h30m, o sol estava a nascer, era hora dos preparativos finais, preparar os sapatos, os ténis, as comidas, a bebida, última verificação do equipamento e muito importante ir ao WC o mais próximo possível da partida para tentar fazer toda a prova sem ter de parar por causa de necessidades fisiológicas.

Tinha como objectivo acabar a prova abaixo de 5h30m, sentia-me bem, o treino dos últimos meses tinha sido bom, não tinha tido lesões, o tempo aparentava estar bom, sem vento, sem calor excessivo, todas as condições me eram favoráveis para que conseguisse atingir o meu objectivo, numa das provas que no início do ano me propus a estar na minha melhor forma. Segundo as minhas contas o meu desafio seria o ciclismo, teria de fazer o percurso de ciclismo em menos de 3h o que significava andar a pelo menos 30km/h durante os 90kms do percurso, e começar a correr com 3h40m de prova o que me dava uma boa margem para fazer a meia maratona do segmento do atletismo em menos de 1h50m.

A partida do segmento de natação aconteceu como de costume num imenso turbilhão de corpos, o que devo dizer já não me incomoda muito, ao fim de alguns triatlos começo a perceber as manhas, bater forte as pernas quando sinto que alguém me quer agarrar, se alguém me tenta agarrar no ombro rodar rápido o braço para ficar por cima ou mesmo rebolar por cima de quem nos está a tentar puxar para baixo, braçadas amplas quando me sinto empurrado, evitar entrar no espaço de outros nadadores mas saber-me defender se alguém entrar no meu espaço no fundo é essa a regra.

Ao virar a primeira bóia tudo ficou mais calmo, não sei porque a maior parte dos nadadores faziam trajectórias muito abertas, apontei directo para as restantes bóias e deixei-me ir a deslizar o máximo possível, sabia que não valia a pena estar-me a matar para ganhar 3-4 minutos na natação, aproveitei para fazer o aquecimento para o restante de prova que ainda faltava. Na viragem da última bóia senti outra vez um apertozinho, ia num grupo de 6-8 nadadores e com uma viragem a 180º é normal alguns encontrões, mas com uma viragem em rotação que a maior parte dos nadadores não faz, consegui sair à frente e entrar na rampa sem ninguém à minha frente o que me possibilitou tirar o fato tranquilamente sem preocupar-me com algum tipo de empurrão. Acabei a natação com 36m30s, 1m30s acima do que tinha estipulado como o limite máximo que queria fazer, contudo não era preocupante, mesmo com as transições se fizesse o segmento de ciclismo em 3h começaria a correr com 3h40m de prova.


Estava na hora da verdade, o ciclismo, será que os meus treinos curtos fortes seriam suficientes para conseguir manter um ritmo de 30km/h durante 3h? O segmento era composto por 4 voltas o que tornava fácil medir o ritmo bastava ver se a cada volta o tempo que demorava estava a ser superior. A 1ª e 2ª volta correram-me bastante bem, não senti cansaço, o ritmo cardíaco, a respiração estavam bastante estáveis. Apesar de ter perdido um gel e uma barra energética quando saltei para cima da bicicleta, consegui apanhar uma banana e um cantil de água nas duas primeiras passagens pela meta, tinha comido e tinha água para me refrescar, mais o meu cantil com bebida isotónica. Demorei cerca de 40 minutos em cada uma das 2 voltas, estava a conseguir manter o ritmo e apesar de na minha cabeça estar a fazer mal as contas até estava a rodar acima dos 30km/h.


Antes de chegar à subida na 3ª volta passou por mim o número 9, que acabaria por ser o vencedor da prova. Que velocidade impressionante, parecia que ia de mota, certamente ia a mais de 50km/h na altura que passou por mim. Pouco depois ainda passou o número 1 (Bruno Pais), não ia tão rápido mas não deixou de me impressionar na mesma. Na subida desta volta foi a primeira vez durante a prova que me senti claramente desconfortável, não estava a conseguir achar o meu ritmo, sentia dores nas pernas, as sensações começavam a não ser boas. Acabei a volta com 43 minutos, quebrei um pouco mas ainda nada de alarmante.


Nessa altura já não tinha a minha bebida e a minha preocupação era apanhar água, apesar de já não comer à 1 volta era muito mais importante manter-me hidratado. Comecei a sentir indícios de cãibras no meu gémeo da perna direita por isso não podia puxar demais para o músculo não 'agarrar'. A subida custou mas não tanto como a da 3ª vez, pensava que o pior já estava e era rolar até à meta. Aproveitei a descida para alongar um pouco o gémeo e fazer o possível para evitar o aparecimento das cãibras. O pior ainda estava era para vir, começou a fazer imenso vento de frente e aquela última meia volta foi um tortura, foi nessa altura que pensei - "Bolas para fazer a distância Ironman tinha de fazer outra distância igual à que já fiz...não sei se aguentaria!!!".



Cheguei da bicicleta ainda abaixo de 3h30m de prova, estava claramente a tempo para o meu objectivo de 5h30m. Comecei a correr a uma velocidade que me permitia passar as pessoas que estavam à minha volta, contudo o meu coração começou a disparar e não me sentia nada confortável. Durante a 1ª volta da corrida estive sempre a tentar achar o meu ritmo certo, muscularmente até estava bem, as cãibras não apareciam mas o ritmo cardíaco não era nada estável. Começava também a fazer calor, em todos os pontos de abastecimento era apanhar uma garrafa de água para me 'regar' e tentar aliviar a sensação de aquecimento.


À entrada da 2ª volta olhei para o cronómetro e ainda não ia nas 4h de prova, porreiro tinha 1h30m para fazer 15 quilómetros, mais que suficiente, Esta volta foi a mais tranquila consegui manter o ritmo, nessa altura também passei pelo Pre que tinha entrado para a sua 1ª volta, dei-lhe umas palavras de motivação, era o primeiro triatlo longo dele e estava com boa cara para conseguir acabar, e segui ao meu ritmo. Ao início da 3ª volta quando levava pouco mais de 10 quilómetros de prova tropecei naquele maldito empedrado levantado pelas raízes das árvores, consegui-me equilibrar minimamente e com uma cambalhota sobre o ombro levantei-me e continuei a correr.

Estava a perder um bocado a capacidade de raciocínio, sinal que as minhas forças começavam a estar no limite, já só pensava em passar a meta e rir-me do resultado que ia obter. A 1 quilómetro da meta novamente o raio do empedrado, mais um tropeção e desta vez fiz uma à Super Homem...a diferença foi que não aterrei em pé mas sim na horizontal, estatelanço à moda antiga. Cortei a meta com menos de 1h40m de corrida, mas tendo em consideração que o segmento de corrida nem chegava a 20kms não foi mau mas também não foi brilhante.

Ficam aqui os resultados dos diferentes segmentos:

  • Natação: 36m30s
  • T1: 2m02s
  • Bicicleta: 2h51m11s
  • T2: 1m17s
  • Corrida:1h39m45s
  • Tempo final: 5h10m45s

segunda-feira, abril 27, 2015

Fase 2 do projecto Sky Store está no ar

Foi há 11 meses que comecei a trabalhar no projecto Sky Store. Quando entrei no projecto já este tinha iniciado o desenvolvimento da 2ª fase e apesar da adaptação não ter sido tão rápida como gostaria, olhando agora para trás tenho de compreender que a dimensão do projecto torna difícil uma adaptação mais rápida.

Estamos a falar de um projecto de múltiplas equipas, em diversos fusos horários, com requisitos que nos obrigam a pensar tudo ao detalhe pois temos de servir milhões de utilizadores, nada pode ser deixado ao acaso. Foi a primeira vez, em já 10 anos que levo de trabalho nesta área, que senti que a qualidade final era o mais importante, que não havia cá prazos loucos impossíveis a cumprir, que não havia necessidade de fazer noitadas e fins-de-semana, porque tudo é planeado com rigor e com tempo para fazer as coisas bem.

Apesar de todas as equipas seguirem a mesma metodologia de desenvolvimento, com pequenas nuances entre elas, vou falar um bocadinho mais em concreto da minha equipa, a equipa do Core. A equipa do Core, e traduzindo é a equipa responsável pela parte mais nuclear da aplicação, somos a equipa com menos visibilidade para o utilizador final e ao mesmo tempo somos a equipa mais crítica porque somos o início de tudo e se nós falhamos vamos comprometer o trabalho de todas as outras equipas. O nosso foco principal é desempenho, segurança e estrutura da aplicação, estamos ainda algo longe dos frontends com os utilizadores finais.

As equipas utilização Scrum como metodologia de desenvolvimento, dailys, retrospectives, demos, planeamentos, desenvolvimento iterativo, etc. Isto facilita muito a integração de uma pessoa nova, a comunicação constante, o envolvimento com tudo o que se está a passar, ajuda imenso a começar a perceber rapidamente as várias características do projecto. Foi a primeira vez que trabalhei efectivamente com uma metodologia ágil de desenvolvimento e se tinha alguns pontos de interrogação iniciais porque na teoria parecia-me que as premissas era algo fortes, depois com o decorrer dos tempos percebi que realmente funcionava porque as regras acabam por ser mais flexíveis e adaptadas ao perfil da equipa.

Por falar em equipa, apesar de algumas alterações na estrutura ao longo destes 11 meses a equipa é composta por 1 scrum master, responsável por ser a cola entre os elementos da equipa e entre a nossa equipa e as restantes, 2 testers que essencialmente garantem a qualidade de tudo o que é feito e 6 developers que desenvolvem o código. Nada disto é estanque, nada disto é muito rígido, todos nós podemos desempenhar ou ajudar no papel de outra pessoa, há liberdade e flexibilidade para que isso aconteça, o que é óptimo na perspectiva que o conhecimento está disseminado pelos diversos elementos da equipa não tornando ninguém indispensável, e mesmo estando alguém de férias ou não podendo vir trabalhar por um outro motivo o trabalho dessa pessoa pode ser feito por outro elemento. Claro que isto só é possível não pela metodologia mas pela qualidade dos elementos da equipa que devo dizer são excepcionais. Já tive alguns colegas de trabalho que acho que são muito bons mas foi a primeira vez que numa equipa tão grande consigo dizer que o poder de decisão, a autonomia e a qualidade do resultado final de todos os elementos da equipa é elevadíssima.

Ao início foi mesmo intimidativo, o receio de errar, de não estar ao nível das expectativas, de não conseguir acompanhar esta equipa, costumo dizer que deixei de ser o tubarão do lago para ser um peixinho no oceano, foi mesmo a sensação que tive nos primeiros tempos. Mas todos eles me ajudaram imenso, sempre disponíveis, sempre a ajudar com agrado, por isso acabei por me conseguir adaptar, sentido-me hoje como mais um elemento válida desta equipa.

E o resultado deste trabalho foi para o ar no dia 15 deste mês, a 2ª fase deste projecto foi lançada para os utilizadores do Reino Unido e da República da Irlanda, e foi a passagem a produção mais tranquila que alguma vez tive ainda para mais dada a dimensão do projecto, e isto só foi possível pela qualidade do trabalho final que por sua vez foi possível pelo bom planeamento e prazos realistas de desenvolvimento. Este projecto podia ser um case study para 99% dos projectos desenvolvidos em Portugal, como fazer as coisas bem feitas em prazos realistas traz muito menos dores de cabeça a nível de suporte e a nível da satisfação do cliente final. Neste momento já estamos numa fase avançada do desenvolvimento da fase 3 que trará algumas novidades interessantes à plataforma, mas quanto a isso ainda não posso falar, só espero que o resultado final a nível de qualidade se mantenha.

segunda-feira, abril 20, 2015

Meia maratona da areia 2015

A meia maratona da areia foi a última prova de treino antes do Half Ironman de Lisboa, mais uma vez estou numa altura em que estou a dar alguma intensidade de treino por isso não esperava um grande resultado. Esta é uma prova que gosto de fazer, há muito espaço para correr sem acotovelanços, a paisagem é relaxante e em alguns casos até nos faz abstrair do sofrimento, e depois apesar de ser no areal é uma prova bastante rápida em que o areal não faz assim tanta mossa como se julga inicialmente.

Arranquei forte e fiquei integrado num grupo de 10 atletas que seguiam logo a seguir ao pequeno grupo dos primeiros. Ao fim de 2 quilómetros íamos a um ritmo de 4min/km, estava a correr solto e bem mas decidi não continuar naquela loucura, no ano passado paguei bem caro um ritmo idêntico no início e depois fui a arrastar-me nos últimos 5 quilómetros. Fui progressivamente desacelerando até encontrar o meu ritmo de conforto. Cada vez que alguém passava por mim tentava seguir na cola a ver se o meu corpo de sentia à vontade com o ritmo. Até que por volta dos 7km chegou ao pé de mim a 1ª mulher e curiosamente o ritmo era mesmo aquele que eu procurava.

Fomos seguindo juntos a um ritmo que não era totalmente confortável mas era o ritmo certo para seguir, ao darmos a volta para começarmos o retorno íamos com cerca de 46 minutos, se o o ritmo se mantivesse acabaríamos a rondar a 1h32m o que não era nada mau para quem ia fazer um treino. Por volta dos 12km a rapariga vira-se para mim e diz-me - "Não é preciso estar a acompanhar-me, faça a sua corrida" - eu respondi que o ritmo era bom e que não lhe estava a fazer nenhum favor por estar a acompanhá-la, e a pensar para mim - "Vê lá é se não te lembras de dar nenhum esticão senão fico aqui apeado!".

Chegou uma altura em que começámos a ultrapassar outros atletas que estavam em quebra o que soube mesmo bem para o moral. Enquanto isso também começava o efeito miragem, que já tinha presenciado no ano anterior, como aquilo é o areal em linha recta começamos a ver a meta a alguns quilómetros de distância e apesar de parecer que é já ali ainda falta muito. Senão estamos mentalizados para isso o efeito pode ser terrível, como me aconteceu o ano passado que desmoralizei totalmente. 

À entrada do último quilómetro vem um atleta em recuperação que encosta a nós, respira atrás de nós por uns 10 segundos e arranca, nessa altura deixei-me estar com a minha companheira de corrida, foi a única altura que teria feito diferente se fosse um homem o meu companheiro de corrida. Nos últimos 400 metros vem mais um atleta totalmente em esforço e passa por nós e mais uma vez penso - "Vá lá aproveitem hoje que é o meu dia da boa vontade!" -  caso contrário e da maneira que me estava a sentir bem, a minha ponta final era rápida o suficiente para não me deixar ultrapassar por aqueles dois atletas.


Apesar de ter perdido aqueles lugares se calhar teria perdido muito mais tempo senão tivesse aquela excelente companhia durante a prova, por isso achei justo acompanhar a primeira mulher até à meta deixando-a cortar fita da chegada mesmo à minha frente. O resultado final foi de 1h33m06s acabando no 36º lugar em cerca de 200 atletas...nada mau para um treino. Aparentemente para o ano esta prova vai ter a distância maratona também, provavelmente será uma prova que vou inserir no meu calendário, veremos...

Dados da minha prova:
  • Tempo final: 1h33m06s
  • Tempo médio por quilometro: 4m25s/km
  • Velocidade média: 13,6km/h

sexta-feira, abril 17, 2015

Quem pode acabar um Ironman

Depois de ver o vídeo seguinte não tenho qualquer dúvida que qualquer pessoa consegue acabar um Ironman, gordo, velho, mulher, deficiente, não há nenhuma desculpa que me consigam arranjar para uma pessoa que consiga andar independentemente não consiga fazer um Ironman. Para algumas pessoas pode ser mais difícil, pode requerer uma preparação mais cuidada, pode significar um risco maior em termos físicos, mas a força de vontade é que manda. Quem sabe para o ano não seja eu a ter a alegria de cortar pela primeira vez a meta de um Ironman...

segunda-feira, abril 13, 2015

Passar o nome de uma coluna ou tabela como parâmetro num prepared statement

Vou começar por dizer que o que o título diz é parvo, sim é parvo, não porque não dá jeito ou porque a ideia é parva, mas simplesmente porque não é possível fazer. Se quiser fazer algo como o que está em seguida é para esquecer não é possível fazer:

SELECT @column FROM @table

Agora há uma forma mais ou menos elegante de resolver este problema. O que queremos ao termos prepared statements é evitar sql injection, esse é o verdadeiro problema. Então a solução passa por validar se a tabela e a coluna existem na nossa base de dados, e assim até validamos se a query é válida.
       private void AssertValidTableAndColumnName(SqlConnection connection, 
                    SqlCommand cmd, string table, string column)
       {
           cmd.CommandText = "SELECT COUNT(*) FROM SYS.TABLES WHERE NAME = @table";
           SqlParameter tab = new SqlParameter("table", SqlDbType.NVarChar, 500);
           tab.Value = table;
           cmd.Parameters.Add(tab);

           cmd.Prepare();
           int count = (int)(cmd.ExecuteScalar());

           if (count == 0)
           {
               throw new ArgumentException("Invalid table name", table);
           }
           
           cmd.CommandText = @"SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
                                WHERE  TABLE_NAME = @table
                                AND COLUMN_NAME = @column";
           SqlParameter col = new SqlParameter("column", SqlDbType.NVarChar, 500);
           col.Value = column;
           cmd.Parameters.Add(col);

           cmd.Prepare();
           count = (int)(cmd.ExecuteScalar());

           if (count == 0)
           {
               throw new ArgumentException("Invalid column name", column);
           }
       }

Temos assim a garantia que tanto a tabela como a coluna existem, se não existirem a aplicação enviará uma excepção. No meu caso quis mesmo que a aplicação terminasse, mas podemos não ser tão radicais e simplesmente retornar um booleano indicando o sucesso. Basta agora fazer uma query normal sem haver a preocupação que haja sql injection.

[...]
AssertValidTableAndColumnName(connection, cmd, table, column);
cmd.CommandText = string.Format("SELECT id,{1} FROM {0}", table, column);
[...]

segunda-feira, março 30, 2015

Duatlo Amadora

Após ter levado uma grande tareia na meia maratona de Lisboa no fim-de-semana anterior, decidi que esta semana tinha de dar menos carga de treino para aferir da minha verdadeira capacidade nesta altura da época, e durante a semana apenas fiz 3 treinos de natação, por isso cheguei fresquinho que nem uma alface a esta prova. Estava algum vento e era algo que me preocupava no segmento de bicicleta, contudo devo dizer que durante a prova raramente senti o seu efeito. Mas comecemos pelo início, o primeiro segmento de corrida. Saí bem logo com os da frente e passado 1km ainda estava com o grupo, olhei para o relógio e marcava 3m30s, apesar de me sentir bem claramente era um ritmo superior ao meu, decidi desacelerar um pouco e ir a um ritmo que sabia que não me iria deixar marcas para o segmento de bicicleta.


Cheguei ao parque de transição com 17m30s na 12ª posição, tinha-me sentido mesmo bem na corrida e só não andei mais depressa porque não quis. Ia começar o meu martírio, a bicicleta. Os treinos que tenho feito de qualquer modo começam a dar resultado, sofri muito menos que é normal, mesmo na parede curta mas agressiva por onde passávamos 4 vezes. Atrás de mim a não a mais de 500 metros estava o Tiago Neto, sabia que mais tarde ou mais cedo iria ser apanhado por ele, o que acabou por acontecer na tal parede na 2ª vez que lá passei.


Até ao final da bicicleta devo ter perdido outros 500 metros para o Neto, o que parece mau mas não foi nada pois o Neto é um ciclista muito mais forte do que eu. Quanto ao Pre arrancou na bicicleta um pouco atrás do Neto e a cada volta reparava que ele perdia muito pouco tempo para mim, acredito que se ele melhorar a técnica de descida, que é essencialmente onde perde tempo, faça um segmento de ciclismo igual ao meu. Ainda em relação ao Pre tenho de lhe tirar o chapéu, tem melhorado imenso na corrida o que faz com que a diferença entre nós seja cada vez menor. Acabei a bicicleta aproximadamente com 38m40s na 22ª posição, só perdi 10 lugares o que para mim é muito bom.

Comecei a corrida ainda algo distante dos atletas que iam à minha, tentei impor um ritmo forte visto só era pouco mais de 2kms, sem pensar no imediato em apanha alguém, tentando fazer o melhor que conseguisse. Quem estava à minha frente também estava a andar bem, era um atleta com um lenço na cabeça e facilmente identificável, tentei ir-me aproximando gradualmente sem me estoirar. Quando faltava 1km para o fim consegui colar e nessa altura ultrapassámos um outro atleta. Ao faltar aproximadamente 600 metros para o fim colámos noutro atleta, nessa altura o corredor de lenço na cabeça acelera o ritmo e diz algo como - "Agora é assim até ao final!" - tendo eu uma ponta final rápida, tinha de aguentar aquele esticão e no final fazer o que normalmente faço.

(Foto cortesia de Unspotdesign | Fotografia Digital)

O que vale é que aquela frase foi só intimidatória, pólvora seca...a aceleração foi curta e precipitada, só mantendo o ritmo deixei os dois para trás e o atleta do lenço acabaria curiosamente atrás do outro do grupo. A 100 metros do final vi que ainda estava um atleta à minha frente agarrado ao abdómen praticamente a arrastar-se, erro crasso, enviou-me um sinal de fraqueza e eu feito tubarão a sentir sangue na água não ia deixar de atacar. Ele de tão cansado que estava nem deu por mim a aproximar-me, já dentro do tapete da meta olha para trás ao sentir a minha presença mas era tarde demais para ele, eu vinha embalado e com a moral em alta por isso não ia perdoar.


No final acabei no que para mim é um brilhante 18º lugar, fiquei contente com o resultado e as sensações ao longo da prova. Uma palavra ainda para o meu colega de equipa o Henrique Coelho que acabou no 8º lugar sendo o 3º do seu escalão.