sábado, abril 28, 2007

Um novo desafio

Após 7 meses na Safira apareceu uma nova oportunidade, um novo desafio noutra empresa. Apesar de estar bastante contente com as pessoas com quem trabalhava na Safira já estava um pouco farto do projecto em que estava. Foi quando surgiu a hipótese de ir trababalhar para a PDM&FC uma empresa com uma filosofia diferente da Safira. O aliciante principal será trabalhar em projectos propostos e direccionados para a área de dos vídeo-jogos.

segunda-feira, abril 23, 2007

Algoritmo ELO

Para quem não sabe o algoritmo ELO foi criado pelo húngaro Árpád Élő e tem como objectivo calcular a perícia relativa de jogadores num ranking de um qualquer jogo. Apesar do algoritmo estar bem definido, tem algumas variáveis que possibilitam ajustes à formula dependendo do jogo em questão, por exemplo e possível ajustar o peso do número de jogos já efectuado pelo utilizador, o peso da diferença de ranking dos dois jogadores, etc.

Além destes ajustes ainda encontrei pequenas variações ao algoritmo, dependendo se o jogo é de equipa ou sigular, ou ainda se o resultado do confronto entre dois jogadores é mensurável em pontos ou se é simplesmente uma vitória ou uma derrota.

A fórmula começa com a seguinte equação:

RN = R + ( K x (S - EA) )

RN -> Novo valor de ranking que se quer calcular
R -> Valor de ranking actual do jogador
K -> Variável que traduz o peso do númeor de jogos já efectuados pelo jogador
S -> Variável que traduz o peso dos pontos envolvidos no confronto
SE -> Variável que traduz o peso da diferença de ranking entre os dois jogadores

K = 1 + (90 /(10 + NJ))

NJ -> Número de jogos já efectuado pelo jogador

E_A = \frac 1 {1 + 10^{(R_B - R_A)/400}}.

RB -> Ranking actual do adversário
RA -> Ranking actual do jogador (RA = R)









PA -> Pontos ganhos pelo jogador
PB -> Pontos ganhos pelo adversário

Todas as constantes das diferentes formulas podem ser modificadas de modo a adaptar o algoritmo ao jogo em questão, apesar de isto desvirtualizar o algoritmo de ELO.

sábado, abril 21, 2007

Karting

Pela primeira vez experimentei karting e posso dizer que é uma adrenalina "brutal". Apesar de ter ficado só em 11º de 19 pilotos considero que para primeira vez foi bastante positivo. Os pneus do kart é que não gostaram muito, a cada curva guinchavam e ginchavam como se fossem a desfazer-se. Depois ainda houve a parte "carrinhos de choque", aquela que eu dei cabo do joelho no suporte do volante depois de levar uma panada lateral em plena curva, mas pronto a malta entusiasma-se e são coisas e acontecem naturalmente.

quarta-feira, abril 18, 2007

Um dia a roçar a perfeição

Hoje sem dúvida foi uma grande dia, para começar e importantíssimo, estou de férias (as tão desejadas férias). Acordei de manhã e para despertar nada melhor que boa volta de bicicleta, desfrutar da beleza da serra de Sintra e do Guincho. Chego a casa, e para os que me chamam sovina, faço a minha declaração de IRS e que bom, ainda vou receber algum dinheiro. Passo a tarde a a ver uns filmes, uma das minhas actividades preferidas, e ainda a jogar um pouco de computador. Ao fim da tarde, e como já tinha descansado do passeio matinal de bicicleta, fui para a natação para acabar com as energias que ainda me restavam. Depois disto tudo uma bela refeição para acabar o dia em perfeição.

domingo, abril 15, 2007

Dia do azar - Sábado 14

Porquê 6ª feira 13 é o dia do azar? Quanto a mim sábado 14 é que é o dia do azar e tenho a prova vivida disso.

6ª feira a noite fui ver um concerto de Tragic Comic, apesar de todos os incidentes técnicos aos quais a banda é alheia, o espetáculo foi do melhor que já ouvi. Não percebo como uma banda com a qualidade que eles têm ainda não chegou mais longe. Para quem gosta de bandas como Within Temptation, Nightwish ou Sonata Artica aqui fica um dos site onde podem dar uma olhadela a informação sobre os Tragic Comic http://www.myspace.com/tragicomic.

Saio do concerto 0:15, ou seja, tinhamos acabado de entrar no sábado e dirigi-me à bomba de gasolina mais concorrida que conheço devido aos preços muito mais baixos. Costuma estar muita gente a por gasolina mas desta vez parecia que os carros demoravam mais tempo a andar, quando cheguei ao fim de 45 minutos ao pé da bomba reparei que estava com pouca pressão, a deitar muito devagar. Bem finalmente é a minha vez pensei eu, ponho a agulheta no depósito e começo a abastecer quando olho para o visor estava parado nos 1,25 litros...que se passa??? Não pode...acabou o gasóleo. Agora digam-me se não é azar, 50 minutos para por gasóleo e depois acontece o quase impossível?

quinta-feira, abril 05, 2007

Concorrência na inserção e remoção em SQL

Imagine-se que se tem uma tabela que contem umas centenas de milhares de tuplos. Diariamente existe um job que se encarrega de apagar todos os tuplos, mas durante o período de remoção faz lock à tabela o que impossibilita inserções. O código típico para esta situação é o seguinte:

DECLARE @IDMax dbo.UDT_ID;
SELECT TOP 1 @IDMax = [ID]
FROM [dbo].[TABELA_MILHARES_DE_TUPLOS]
ORDER BY [ID] DESC
IF @IDMax is null
RETURN;
DELETE FROM [dbo].[TABELA_MILHARES_DE_TUPLOS]
WHERE ID <= @IDMax
Neste cenário a inserção também tem de ser rápida pois o timeout definido é de curta duração. O objectivo é continuar a existir a remoção, mas tem de se conseguir fazer inserções mesmo quando a remoção está a ser efectuada. O código seguinte mostra uma possível solução:
DECLARE @IDMax dbo.UDT_ID;
DECLARE @Counter dbo.UDT_ID;

SELECT TOP 1 @IDMax = [ID]
FROM [dbo].[TABELA_MILHARES_DE_TUPLOS]
ORDER BY [ID] DESC
IF @IDMax is null
RETURN;
SET @Counter = 1;
WHILE (@Counter > 0)
BEGIN
DELETE FROM [dbo].[TABELA_MILHARES_DE_TUPLOS]
WITH (ROWLOCK)
WHERE ID =
(
SELECT TOP 1 [ID]
FROM [dbo].[TABELA_MILHARES_DE_TUPLOS]
WITH (NOLOCK)
WHERE [ID] <= @IDMax ORDER BY [ID] DESC
)
SET @Counter = @@ROWCOUNT;
END
Esta solução possibilita que o lock seja feito linha a linha e não à tabela, logo é possível inserir enquanto a remoção está a ser feita. Agora temos de ter a noção que esta solução não é perfeita apesar de servir para esta situação. O tempo de remoção de todas as linhas posso dizer que aumentou 8 vezes, mas como neste caso este é um job que vai ser executado 1 vez por dia, o tempo não é assim tão problemático e chegamos ao objectivo de haver inserções enquanto estão a ser executadas as remoções.

terça-feira, abril 03, 2007

Só em Portugal

Depois da bela placa que deixei num dos meus últimos posts, deixo aqui outra foto digna do melhor que se consegue fazer em Portugal. Esta é uma ideia revolucionária totalmente made in Portugal - "Rotundas só para motas".

A mariscada

Ao fim de 2 meses de constantes adiamentos finalmente conseguimos arranjar todos disponibilidade para a nossa mariscada em Ribamar (foi preciso esperar dia 1 de Abril, é caso para dizer - até parece mentira).

Neste almoço consegui juntar os meus colegas/amigos que me foram mais importantes para conseguir concluír o curso, foi muito graças a eles que aprendi o que aprendi e que ultrapassei as barreiras que se colocaram pelo caminho. A eles o meu obrigado por tudo e que estes almoços se repitam durante muitos anos.