From 585cbf2480c07dfb3a8c2dd9cc281c3c02dbfbf7 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sat, 17 Mar 2012 20:44:04 +0100 Subject: [PATCH] Make a rating page. --- www/index.pl | 5 +- www/rating.pl | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+), 3 deletions(-) create mode 100755 www/rating.pl diff --git a/www/index.pl b/www/index.pl index ff0c7ce..f1baa65 100755 --- a/www/index.pl +++ b/www/index.pl @@ -276,9 +276,8 @@ my $lowest_division = ($division == $max_division); make_table($lowest_division, {}); print <<"EOF"; -

Under er en variant som prøver å ta relativ spillestyrke med i betraktningen. - Disse er basert på WLoH-data og oppdateres hver hele time (takk til Lobotommy for tilgang!), - men modellen er foreløpig ikke fullstendig tunet.

+

Under er en variant som tar relativ spillestyrke med i beregningen; + se ratingsiden.

EOF make_table($lowest_division, \%ratings); diff --git a/www/rating.pl b/www/rating.pl new file mode 100755 index 0000000..bf9f495 --- /dev/null +++ b/www/rating.pl @@ -0,0 +1,132 @@ +#! /usr/bin/perl +use strict; +use warnings; +no warnings qw(once); +use CGI; +use CGI::Carp qw( fatalsToBrowser ); +use DBI; +use Encode; +use POSIX; +use HTML::Entities; +use utf8; +use locale; +require '../config.pm'; + +my $dbh = DBI->connect($config::local_connstr, $config::local_username, $config::local_password) + or die "connect: " . $DBI::errstr; +$dbh->{AutoCommit} = 0; +$dbh->{RaiseError} = 1; + +binmode STDOUT, ':utf8'; + +# Find auxillary parameters. +my %params = (); +my $q = $dbh->prepare('SELECT * FROM ratings WHERE id < 0'); +$q->execute; +while (my $ref = $q->fetchrow_hashref) { + $params{$ref->{'id'}} = $ref->{'rating'}; +} +my $match_stddev = $params{-2} * sqrt(2.0); + +print CGI->header(-type=>'text/html; charset=utf-8', -expires=>'now'); +POSIX::setlocale(&POSIX::LC_ALL, 'nb_NO.UTF-8'); + +printf <<"EOF", $params{-3}, $match_stddev; + + + WLoH-rating + + + +

WLoH-rating

+ +

Ratingen er basert på spilledata fra WLoH (takk til Lobotommy + for tilgang!), og oppdateres + hver hele time. Den er fullstendig uoffisiell, og har ingen innflytelse + på WLoH, men brukes for å estimere vinnersannsynligheter i + sannsynlighetsberegningen.

+ +

Vær obs på at det + er betydelig usikkerhetsmargin, spesielt for spillere som ikke + har spilt spesielt mange kamper.

+ +

Modellen kan endre seg når som helst når jeg føler for det :-) + Ikke ta ratingen alt for alvorlig, selv om den er basert på + relativt fornuftige matematiske modeller. Husk at all statistikk + sier mer om fortiden enn om framtiden.

+ +

Modellparametre

+ +

For de som vet litt om slikt. Mer utførlig forklaring for begynnere kommer seinere.

+ + + +

Rankingliste

+ + + + + + + + +EOF + +$q = $dbh->prepare(' +SELECT * +FROM ratings + NATURAL JOIN kanonisk_navn + NATURAL JOIN siste_divisjon +ORDER BY rating DESC'); +$q->execute; + +my $i = 0; +while (my $ref = $q->fetchrow_hashref) { + if (++$i % 2 == 0) { + print " \n"; + } else { + print " \n"; + } + printf " \n", $i; + printf " \n", $ref->{'id'}, HTML::Entities::encode_entities(Encode::decode_utf8($ref->{'navn'})); + printf " \n", $ref->{'rating'}; + printf " \n", $ref->{'serie_id'}, $ref->{'serie_navn'}; + print " \n"; +} + +print <<"EOF"; +
NickRankingSist sett
%d.%s%.1f%s
+ + +EOF + +$match_stddev = $params{-2} * sqrt(2.0); + +$dbh->rollback; -- 2.39.5