From c40cac881f1b03492bd9e678965b819e50aa462a Mon Sep 17 00:00:00 2001 From: Christopher Milan Date: Sun, 16 Mar 2025 21:53:52 -0700 Subject: [PATCH] add leaderboard --- leader.cgi | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 leader.cgi diff --git a/leader.cgi b/leader.cgi new file mode 100755 index 0000000..f73668d --- /dev/null +++ b/leader.cgi @@ -0,0 +1,62 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use CGI qw(:standard); +use DBI; + +print header(-type => 'text/html', -charset => 'utf-8'); +print start_html(-title => "GPU Leaderboard", + -style => "background-image: url('/bg.gif')"); + +my $db_file = "/www/leader/gpu.db"; +my $dbh = DBI->connect("dbi:SQLite:dbname=$db_file", "", "", { + RaiseError => 1, + AutoCommit => 1 +}) or die $DBI::errstr; + +my $query = qq{ + SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours + FROM usage g + JOIN users u ON g.uid = u.uid + GROUP BY u.uid + ORDER BY gpu_hours DESC; +}; + +my $sth = $dbh->prepare($query); +$sth->execute(); + +print h1("GPU Leaderboard"); + +print ""; +print ""; + +while (my $row = $sth->fetchrow_hashref) { + print ""; + print ""; + print ""; + print ""; +} + +print "
NameGPU Hours
$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; + +print <<'END'; +
+ + + +END + +# Finish HTML and cleanup +print end_html; +$sth->finish(); +$dbh->disconnect(); + -- 2.43.0