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.



segunda-feira, março 26, 2007

1/4 de século

Realmente o tempo não pára, parece que ainda ontem estava a entrar para a 1ª classe e hoje já tenho 25 anos. Ainda no outro dia estava a comentar com um amigo: "Não é que durante o esforço físico me sinta com menos força ou resistência, mas a recuperação pós esforço cada vez demora mais tempo.". Ontem estava a jantar quando o meu pai se vira para mim: "Amanhã fazes 25 anos...com essa idade já eu era teu pai", e realmente já tenho alguns amigos meus que já são pais...

O relógio não pára mas o mais importante é aproveitar ao máximo o tempo que ele me dá!

quinta-feira, março 22, 2007

Reflexão aquática

Estava eu na minha aula de natação quando o meu monitor se lembra de uma daquelas tarefas demoradas e que não dão tempo para grandes descansos - "Vamos agora fazer 10 vezes 100 metros ao 1m50s".

Quando dei por mim já a tarefa tinha acabado, passei todo o tempo a pensar noutras coisas: o que me aconteceu no passado, o que foi feito de alguns amigos, os novos amigos que tenho agora, enfim um pouco de tudo. Isto deixou-me um bocado espantado porque foi como se eu me tivesse desligado do meu corpo, ele lá continuou a nadar, e eu como que andei a "passear" pelo meu passado. É incrível tudo o que me passou pela cabeça...realmente o Mundo dá grandes voltas...

domingo, março 18, 2007

Um dia em Gaia

Já há uns tempos que eu o Pre e o Pyro queríamos ir ao Porto para rever alguns amigos. "Matando vários coelhos de uma cajadada", aproveitando o almoço do Orion's Belt para o reencontro com esses amigos. Começámos por ir almoçar a um restaurante espetacular à beira mar, intitulado "Mar à vista", sem dúvida uma escolha acertadíssima. O almoço também serviu para rever o Paulo e o Jorge, aqueles 2 malucos super divertidos que conhecemos em Portalegre durante Games 2006.

Depois de uma refeição de reis e de estarmos com a barriguinha cheia que fomos fazer...jogar um paint ball. Foi a altura do payback, toda a gente tinha alguém em que queria mandar um balázio para se vingar de alguma derrota no Orion's Belt. No final, depois de estamos todos arranhados e termos descarregado em cima dos amigos (acabámos com o stock de balas, só à conta do Diogo foram 900), a vontade era mesmo voltar a repetir estes convívios porque foi um dia divertidíssimo como se pode comprovar...

Mas o dia ainda não tinha acabado para mim, Pre e Pyro. Não podiamos ir ao Porto sem ver as nossas amigas portuenses que conhecemos em Punta Cana, logo ainda fomos até ao Arrábida Shopping para jantar com elas e relembrar algumas situações que passámos.

Com uma viagem de Gaia escusado será dizer que chegámos a casa já "às tantas da manhã". Quando me deitei parecia que tinha andado a jogar rugby todo o dia, até me custou a adormecer doiam todos os musculos mesmo aqueles que eu não sabia que tinha.