From f120f5172ba09d12928acc7228e4aa331cbdc190 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 25 Dec 2023 19:00:50 +0100 Subject: [PATCH] Remove the now obsolete Lomonosov support. This was nice to have, but the service is long gone, so we can just as well clean out the code. --- config.pm | 5 -- remoteglot.pl | 122 ----------------------------------------- www/css/remoteglot.css | 3 - www/index.dev.html | 2 +- www/js/remoteglot.js | 11 ---- 5 files changed, 1 insertion(+), 142 deletions(-) diff --git a/config.pm b/config.pm index 7f7e23c..f95d1f7 100644 --- a/config.pm +++ b/config.pm @@ -67,11 +67,6 @@ our @masters = ( # including the --path= argument. our $fathom_cmdline = undef; -# ChessOK serial key (of the form NNNNN-NNNNN-NNNNN-NNNNN-NNNNN-NNNNN) -# for looking up 7-man tablebases; undef means no lookup. Note that -# you probably need specific prior permission to use this. -our $tb_serial_key = undef; - # Credits to show in the footer. our $engine_url = "http://www.stockfishchess.org/"; our $engine_details = undef; # For hardware. diff --git a/remoteglot.pl b/remoteglot.pl index df524a6..a792396 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -35,7 +35,6 @@ my $output_timer = undef; my $http_timer = undef; my $stop_pgn_fetch = 0; my $tb_retry_timer = undef; -my %tb_cache = (); my $tb_lookup_running = 0; my $last_written_json = undef; @@ -452,8 +451,6 @@ sub handle_position { $engine->{'info'} = {}; $last_move = time; - schedule_tb_lookup(); - # # Output a command every move to note that we're # still paying attention -- this is a good tradeoff, @@ -690,46 +687,6 @@ sub output { # for new positions is off. undef $pos_calculating_started; - # - # If we have tablebase data from a previous lookup, replace the - # engine data with the data from the tablebase. - # - my $fen = $pos_calculating->fen(); - if (exists($tb_cache{$fen})) { - for my $key (qw(pv score_cp score_mate nodes nps depth seldepth tbhits splicepos)) { - delete $info->{$key . '1'}; - delete $info->{$key}; - } - $info->{'nodes'} = 0; - $info->{'nps'} = 0; - $info->{'depth'} = 0; - $info->{'seldepth'} = 0; - $info->{'tbhits'} = 0; - - my $t = $tb_cache{$fen}; - my $pv = $t->{'pv'}; - my $matelen = int((1 + $t->{'score'}) / 2); - if ($t->{'result'} eq '1/2-1/2') { - $info->{'score_cp'} = 0; - } elsif ($t->{'result'} eq '1-0') { - if ($pos_calculating->{'toplay'} eq 'B') { - $info->{'score_mate'} = -$matelen; - } else { - $info->{'score_mate'} = $matelen; - } - } else { - if ($pos_calculating->{'toplay'} eq 'B') { - $info->{'score_mate'} = $matelen; - } else { - $info->{'score_mate'} = -$matelen; - } - } - $info->{'pv'} = $pv; - $info->{'tablebase'} = 1; - } else { - $info->{'tablebase'} = 0; - } - # # Some programs _always_ report MultiPV, even with only one PV. # In this case, we simply use that data as if MultiPV was never @@ -934,7 +891,6 @@ sub output_json { $json->{'move_source_url'} = $remoteglotconf::move_source_url; } $json->{'score'} = score_digest($info, $pos_calculating, ''); - $json->{'using_lomonosov'} = defined($remoteglotconf::tb_serial_key); $json->{'nodes'} = $info->{'nodes'}; $json->{'nps'} = $info->{'nps'}; @@ -1403,84 +1359,6 @@ sub find_clock_start { $dbh->commit; } -sub schedule_tb_lookup { - return if (!defined($remoteglotconf::tb_serial_key)); - my $pos = $pos_calculating; - return if (exists($tb_cache{$pos->fen()})); - - # If there's more than seven pieces, there's not going to be an answer, - # so don't bother. - return if ($pos->num_pieces() > 7); - - # Max one at a time. If it's still relevant when it returns, - # schedule_tb_lookup() will be called again. - return if ($tb_lookup_running); - - $tb_lookup_running = 1; - my $url = 'http://tb7-api.chessok.com:6904/tasks/addtask?auth.login=' . - $remoteglotconf::tb_serial_key . - '&auth.password=aquarium&type=0&fen=' . - URI::Escape::uri_escape($pos->fen()); - print TBLOG "Downloading $url...\n"; - AnyEvent::HTTP::http_get($url, sub { - handle_tb_lookup_return(@_, $pos, $pos->fen()); - }); -} - -sub handle_tb_lookup_return { - my ($body, $header, $pos, $fen) = @_; - print TBLOG "Response for [$fen]:\n"; - print TBLOG $header . "\n\n"; - print TBLOG $body . "\n\n"; - eval { - my $response = JSON::XS::decode_json($body); - if ($response->{'ErrorCode'} != 0) { - die "Unknown tablebase server error: " . $response->{'ErrorDesc'}; - } - my $state = $response->{'Response'}{'StateString'}; - if ($state eq 'COMPLETE') { - my $pgn = Chess::PGN::Parse->new(undef, $response->{'Response'}{'Moves'}); - if (!defined($pgn) || !$pgn->read_game()) { - warn "Error in parsing PGN\n"; - } else { - $pgn->quick_parse_game; - my $pvpos = $pos; - my $moves = $pgn->moves; - my @uci_moves = (); - for my $move (@$moves) { - my $uci_move; - ($pvpos, $uci_move) = $pvpos->make_pretty_move($move); - push @uci_moves, $uci_move; - } - $tb_cache{$fen} = { - result => $pgn->result, - pv => \@uci_moves, - score => $response->{'Response'}{'Score'}, - }; - output(); - } - } elsif ($state =~ /QUEUED/ || $state =~ /PROCESSING/) { - # Try again in a second. Note that if we have changed - # position in the meantime, we might query a completely - # different position! But that's fine. - } else { - die "Unknown response state " . $state; - } - - # Wait a second before we schedule another one. - $tb_retry_timer = AnyEvent->timer(after => 1.0, cb => sub { - $tb_lookup_running = 0; - schedule_tb_lookup(); - }); - }; - if ($@) { - warn "Error in tablebase lookup: $@"; - - # Don't try this one again, but don't block new lookups either. - $tb_lookup_running = 0; - } -} - sub open_engine { my ($cmdline, $tag, $cb) = @_; return undef if (!defined($cmdline)); diff --git a/www/css/remoteglot.css b/www/css/remoteglot.css index fdb7c90..a2e221f 100644 --- a/www/css/remoteglot.css +++ b/www/css/remoteglot.css @@ -181,9 +181,6 @@ a.move:hover { #linenav { display: none; } -#lomonosov { - display: none; -} #games { font-size: smaller; diff --git a/www/index.dev.html b/www/index.dev.html index a264256..a44ec13 100644 --- a/www/index.dev.html +++ b/www/index.dev.html @@ -84,6 +84,6 @@ Chessboard powered by chessboard.js and chess.js. Ding sound by Aiwha (CC-BY-3.0). - 7-man Lomonosov tablebase lookup by ChessOK.

+

diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index c2c9d06..54fc90b 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -1114,15 +1114,6 @@ function update_board() { headline = 'Analysis'; } - // Credits, where applicable. Note that we don't want the footer to change a lot - // when e.g. viewing history, so if any of these changed during the game, - // use the current one still. - if (current_data['using_lomonosov']) { - document.getElementById("lomonosov").style.display = null; - } else { - document.getElementById("lomonosov").style.display = 'none'; - } - // Credits: The engine name/version. if (current_data['engine'] && current_data['engine']['name'] !== null) { document.getElementById("engineid").textContent = current_data['engine']['name']; @@ -1269,8 +1260,6 @@ function update_board() { // The search stats. if (data['searchstats']) { document.getElementById("searchstats").textContent = data['searchstats']; - } else if (data['tablebase'] == 1) { - document.getElementById("searchstats").textContent = "Tablebase result"; } else if (data['nodes'] && data['nps'] && data['depth']) { let stats = thousands(data['nodes']) + ' nodes, ' + thousands(data['nps']) + ' nodes/sec, depth ' + data['depth'] + ' ply'; if (data['seldepth']) { -- 2.39.2