Как говорил великий и могучий Карлсон: "Случилось чудо! Друг спас друга!" (с).
Друзья, смею поздравить себя и вас, я сумел-таки завершить первый шаг к автоматизации работы организаторов турниров по прогнозированию, дописав программу по автоматическому подсчёту результатов турниров.
Программа представляет собой некий пользовательский интерфейс для обзора прогнозов, подсчета результатов и подготовки результатов для выкладывания на форум. Она позволит любому участнику анализировать ситуация перед туром и во время него благодаря визуальным "примочкам", а также считать результаты и выкладывать их на форум. Надеюсь, теперь, окончательные и промежуточные результаты тура (после 3, 5, 7 матчей) станут появляться на форуме намного чаще - кто первый запустил программу, тот и выложит.
Технически программа устроена следующим образом:
0) Задаём параметры сервера парсинга сообщений с форума, написанному Тарасом (слава ему и почет). Сейчас мне удалось поместить его на свой рабочий сервер (local.mappl.ru:3000), в дальнейшем потребуется перенести его на predictors.ru.
1) Выбираем турнир, по которому собираемся считать результаты. На данный момент я добавил в программу три турнира - ФПЕЧ, ЛЧ и ЧР. Оттестировал программу на двух первых, работает без ошибок. Пожалуйста, у кого дойдут руки - было бы здорово проверить и на ЧР. В каждом турнире у нас свои правила подсчёта очков, всё это заложено в логику программы. Для того, чтобы имелась возможность изменить правила подсчёта результатов матчей прогнозистов по системе имени Данила, параметры вынесены также в пользовательский интерфейс и заполнены значениями по-умолчанию для данного турнира. Однако, например, при отмене одного или нескольких матчей из исходной программы тура имеется возможность произвести правильный подсчёт результатов тура, изменив это значения (в первую очередь я говорю про параметр ENOUGH). Для каждого турнира задан список участников и имя технического соперника.
2) Задаём параметры тура, а именно идентификатор топика с прогнозами (число в адресе страницы, например, https://fn.mybb.ru/viewtopic.php?id=2071), программу тура (без времени начала матчей), программу чемпионата (если он ведётся, то здесь указываются матчи прогнозистов), текущую таблицу личного зачёта (для начала турнира не надо ничего указывать), текущую таблицу чемпионата (для начала турнира не надо ничего указывать). Последние два параметра надо указывать в том формате, в котором я выдаю результаты туров (см. последние сообщения в темах ФПЕЧ и ЛЧ).
3) Нажимаем кнопку "Сохранить", переходим на следующую страницу "Прогнозы и результаты". На этой странице слева сверху присутствует список матчей из программы. Именно туда надо забивать результаты сыгранных матчей. Справа вверху на разных страницах представлены списки, в которые будут выводиться результаты тура, в них ничего писать не надо.
Нижняя область - основная визуальная таблица, которая может отображать данные в четырёх режимах. В режиме "ЛЗ - перед туром" участники отсортированы в соответствии с таблицей личного зачета, вставленной на первой странице. Столбцы этой таблицы соответствуют матчам программы. Зеленым в этом режиме будут отмечены матчи, где сделана ставка на победу хозяев, желтым - на ничью, красным - на победу гостей. Серым отмечены матчи, на которые не было сделано прогнозов. Также серым выделены имена прогнозистов, не сделавших ставку хотя бы на один матч. В режиме "ЛЗ - результаты" для каждого матча отображается дополнительный столбец с количеством набранных на матче баллов. При этом ячейки, соответствующие угаданным исходам станут жёлтыми, угаданные результаты - оранжевыми, остальные - серыми. Справа в таблице появляется столбец с результатами - очки и исходы. В режиме "ЧП - перед туром" участники отсортированы по матчам чемпионата, указанным на первой странице. При этом если участники прогнозистов одинаковы, то ячейки становятся серыми, если отличаются, но сделаны на один и тот же исход - зелёными, на смежные исходы - жёлтыми, на противоположные исходы - оранжевым. Это сводная таблица, которая удобна для анализа на каких матчах вероятнее всего можно забить гол. В режиме "ЧП - результаты" отображается таблица матчей и заработанных на каждом матче активов. При этом заработанные активы, не приведшие к голу выделены розовым, голы - жёлтым, а двойные голы - коричневым. Последними столбцами мы видим счёт матча и количество набранных баллов.
4) Кнопка "Считать прогнозы" должна заполнить счета в таблице. "Подсчитать результаты" работает при полном или частичном заполнении счетов в матчах программы, при этом таблицы внизу раскрашиваются, в таблицах справа вверху появляются текущие результаты. Кнопка "Копировать результаты" помещает в буфер обмена текст, подготовленный для вставки на форум. Остается его вставить на форуме
Сразу хочу оговориться, в процессе подсчёта результатов мне пришлось модерировать посты наших участников, поэтому хочу привести набор стандартных косяков и просьб к нашим форумчанам:
1) Для каждого тура должна быть составлена программа тура без указания времени матчей. Необязательно, но желательно, чтобы в программе названия команд были представлены в максимально сокращенном виде (например, КПР, а не Куинз Парк Рейнджерс), без пробелов (одним словом, например, АстонВилла), без дефисов (например, СентЭттьенн, а не Сент-Эттьенн).
2) Прогнозировать надо строго по программе (копируем и проставляем счета в любом привычном формате). Повторяю, не по календарю матчей (с указанием времени начала матчей), а именно по программе!
3) Если вы опоздали к началу тура, то в любом случае программа должна присутствовать полностью. В тех матчах, которые пропущены, ставим прочерки или *:*. Пожалуйста, делайте это добросовестно, чтобы не приходилось это делать мне или другим организаторам и модераторам.
4) Если какой-то матч программы отменен, то в качестве прогноза на матч указываем любой реальный футбольный счёт. Не указываем 17:17 или 19:19, потому что программа этого не пропустит. Также не указываем прочерки и т.п. Любой реальный счёт, например 0:0.
5) Если программа указана на 4 матча (например, в ЛЧ), то спрогнозированы должны быть сразу 4 матча, а не 2, а потом еще 2.
6) В сообщении, в котором вы указываете свой прогноз или прогноз другого участника не вставляйте до прогноза имена других участников, иначе прогнозы будут собраны неправильно.
7) В сообщении с прогнозом техсоперника указывайте перед прогнозом его имя. Не "техсоперникъ" или "технический", а "Prognoz.Org-2".
Это типовые вещи, на которые я наткнулся, пересчитывая ФПЕЧ и ЛЧ, возможны другие.
В общем, желаю всем хорошего использования, надеюсь, понравится.
С радостью приму пожелания и найденные ошибки, пишите сюда!
А вообще - спасибо вам, ребята! Если бы у нас не было так душевно на форуме, я бы никогда и не решился на то, чтобы "убить" столько времени на написание этой программы.
Заслуга в её написании - общая!
Прога лежит здесь: http://dl.dropbox.com/u/5355357/predictors.rar
У кого такая же проблема, как у Данила (доступ к local.mappl.ru:3000 закрыт), выкладываю скрипт с сервером парсинга, который можно запустить на локальной машине (инструкция внутри): http://dl.dropbox.com/u/5355357/parse_ff.rar