MMMAAANNN
|
Сообщение #102
17 февраля 2014 в 15:05
|
Супермен
36 |
А можно сделать результаты в виде таблички, содержащей скорость и проценты ошибок для всех участников независимо от попадания в зачет? Думаю, как только такая появится (особенно если будет удобный экспорт в эксель!), парсер будет реально использовать для многих событий даже без моделей для них. Графики это хорошо, но их не получится скопировать в эксель и обсчитать по-своему. Даже просто табличка с такими колонками была бы удобна, на мой взгляд: id - рекорд в обычном - логин - заезд №1 скорость - заезд №1 % ошибок - заезд №2 скорость - заезд №2 % ошибок ... В сочетании с отдельной табличкой заездов, в которой была бы указана длина текста для каждого заезда, можно посчитать почти все необходимое (количество ошибок легко найти, умножив длину текста на процент ошибок). Рекорд в Обычном удобнее, чем ранг, потому что ранг из него можно посчитать, а наоборот - нет. Последний раз отредактировано 17 февраля 2014 в 15:10 пользователем MMMAAANNN
|
Lakira
|
Сообщение #103
17 февраля 2014 в 17:30
|
Супермен
56 |
Поддерживаю MMMAAANNN'а: экспорт уже сейчас был бы полезен на случай несохранения html-страницы. В виде подробной таблицы (примерно как в парсере DIgorevich'a подробная таблица для Формулы-2) и/или "позаездно" перевод из json в csv наподобие этого + столбики с информацией, которая не содержится в html (рекорды, пробег и т.п.). А насчёт обработки в самом парсере, появилась хотелка: по умолчанию итоговая таблица показывается со " строгим зачётом", рядом есть кнопка "Показать всех" и при нажатии на неё отображаются и незачётники. UPD: При попытке скормить парсеру сохранения Октатлона выскочила ошибка: скрытый текст… {"msg":"java.lang.IllegalStateException: Cannot get dictionary info for dictionary code = \"voc-75875\",\r\n\tat ru.klavogonki.kgparser.http.HttpClientTest.getDictionariesNames(HttpClientTest.java:111)\r\n\tat ru.klavogonki.kgparser.Competition.fillDictionariesNames(Competition.java:204)\r\n\tat ru.klavogonki.kgparser.dataparser.VoidmainJsonParser.parseCompetition(VoidmainJsonParser.java:171)\r\n\tat ru.klavogonki.kgparser.servlet.entity.ZipFileParser.parseZipFile(ZipFileParser.java:41)\r\n\tat ru.klavogonki.kgparser.servlet.entity.CompetitionUploadServlet$1.doAction(CompetitionUploadServlet.java:64)\r\n\tat su.opencode.kefir.web.JsonServlet.doPost(JsonServlet.java:57)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:803)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)\r\n\tat su.opencode.kefir.web.util.CharsetFilter.doFilter(CharsetFilter.java:32)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)\r\n\tat org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)\r\n\tat org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)\r\n\tat org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)\r\n\tat org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)\r\n\tat org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)\r\n\tat org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)\r\n\tat org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)\r\n\tat java.lang.Thread.run(Thread.java:744)\r\n","success":false} Пока нельзя добавлять соревнования с незнакомыми парсеру словарями? Последний раз отредактировано 17 февраля 2014 в 18:08 пользователем Lakira
|
nosferatum
|
Сообщение #104
17 февраля 2014 в 20:12
|
Супермен
37 |
Ошибка вылезла потому, что у меня нет этого словаря в статистике :) Т.к. я не нашел отдельного api-запроса, чтобы получать название словаря по коду, то я беру название словаря из своей статистики. Проеду по этому словарю заезд - и парсер примет Октатлон. В версии 1.8 voidmain добавил в json сохранение данных словаря из заезда. Если оно работет нормально - буду получать значение оттуда. Update: заезд по "Безымянному марафону" проехал. Если нет других словарей, в которых я не ездил, парсер на Октатлоне отработает. Последний раз отредактировано 17 февраля 2014 в 20:17 пользователем nosferatum
|
Lakira
|
Сообщение #105
17 февраля 2014 в 21:27
|
Супермен
56 |
nosferatum, Октатлон загрузился нормально. :) Подожду тогда, когда будет получение данных о словаре из json. У меня ещё Кибергонки сохранены (правда, без первого заезда), там куча разных словарей и каждую гонку состав словарей меняется.
|
nosferatum
|
Сообщение #106
22 февраля 2014 в 16:36
|
Супермен
37 |
Добрый день. Извиняюсь, что долго не отвечал — рабочие будни захватили мое время. Обновил парсер. Добавил страницу с результирующей таблицей, которую просили в постах 102 и 103. Претензии и предолжения принимаются. Например: http://5.9.201.108:8080/kgparser-web-1.0/c...ompetitionId=20Примечания: 1) В загруженных до сегодняшего обновления соревнованиях у игроков не заполнены поля «Рекорд в обычном» — они не заполнялись при парсинге зипа. Теперь заполняются :) Если очень нужно, то можно сделать обновление, которое заполнит эти поля для всех соревнований, присутствующих в базе. Однако, конечно, рекорды в обычном возьмутся на текущий момент. 2) В html-таблице на странице можно сделать ссылки на профили игроков и на страницы заездов. Пока сделал базовую версию, о которой просили. 3) В Excel-таблице все ячейки пока строкового формата (хотя показывается он как «Общий»). Если нужно, можно поработать над тем, чтобы численные ячейки имели соответствующие форматы. 4) В Excel-таблице автоустановка ширины колонок (по длине значения) пока работать отказывается. Если заработает, добавлю ее. Пока ширины всех колонок одинаковые. Думаю, что в текущем варианте вид приемлемый. Также можно сократить заголовки столбцов, и сделать их поуже. 5) Возможно, стоит столбцы «Итого» сдвинуть влево, чтобы они стояли ПЕРЕД столбцами данных по заездам. 6) Раскраска таблицы «По рангам» возможна. Пока, повторюсь, реализована базовая версия. Предложения по оформлению таблиц принимаются и будут реализовываться. Если кто-то поможет с css-стилями (цвета ячеек, бордеров итд) для таблиц «а-ля существующие в других соревнованиях» — будет отлично. Последний раз отредактировано 22 февраля 2014 в 16:49 пользователем nosferatum
|
MMMAAANNN
|
Сообщение #107
22 февраля 2014 в 17:48
|
Супермен
36 |
Круто, что это появилось. Спасибо.
|
udezich
|
Сообщение #108
22 февраля 2014 в 21:04
|
Супермен
39 |
Возможно ли сделать парсер для дуэлей? Допустим результаты по каждому заезду+общий итог (сравнение скоростей в каждом заезде, итоговый счет и прочие штуки?)
|
Lakira
|
Сообщение #109
22 февраля 2014 в 21:05
|
Супермен
56 |
Спасибо за сводную таблицу! По примечаниям: 1). Наверное, не нужно. 3). Не плохо бы числа сделать числами. :) Кажется, в парсере DIgorevich'a проблема не тех форматов была решена умножением числовых данных на 1.4). Имхо, колонкам со скоростями/процентами/количеством ошибок лучше дать короткие и уникальные по заездам значения: ск1, %ош1, ош.1, ск2, %ош2, ош2... и т.д. Может вообще даже "группировать" данные одного типа: ск.1, ск.2, ск3..., ош1, ош2, ош3..., %ош1, %ош2, %ош3...? Или по заездам, как сейчас, удобнее? Не знаю... 5). Да, лучше пусть вся "общая информация" будет слева, отдельные заезды правее. Не хватает в сводной: - рекордов в заездах (можно либо отдельные столбики по заездам, либо в один столбик в строке участника с номерами рекордных заездов, например: "2, 4, 5, 7, 9. 11, 15" - рекордов (максимальной скорости участника) в катаемых режимах и пробега в катаемых режимах (в json же это сохраняется?) - пробега в обычном, суммарного пробега по всем режимам - информации о номере места в заезде (для "биатлонных" подсчётов), но тут было бы гораздо легче для дальнейшей обработки в Excel исходить из позаездных данных... В дополнение к сводной на отдельный лист при экспорте в Excel хочется табличку с данными о заездах. И ещё фильтров бы при просмотре/экспорте, какие именно столбцы показывать/экспортировать в эксель (ставим галочку, напротив нужного и оно отображается/сохраняется, примерно вот это) Чем больше появляется, тем большего ещё хочется. xD
|
nosferatum
|
Сообщение #110
22 февраля 2014 в 22:25
|
Супермен
37 |
Возможно ли сделать парсер для дуэлей? Допустим результаты по каждому заезду+общий итог (сравнение скоростей в каждом заезде, итоговый счет и прочие штуки?) Можно, только нужно понять, что именно нужно сделать :)
|
ТОМА-АТОМНАЯ
|
Сообщение #111
22 февраля 2014 в 22:52
|
Организатор событий
116 |
В дуэлях как раз таки просто, как сказано в правилах, так и сделать. Если по количеству побед, то напротив скорости победитель, его ник или очко. Если по средней зачетной, то естественно в конце должны сравниваться средние. Если несколько режимов выбрано, то там тоже либо по количеству общих побед, что более вероятно, либо соперники не сильно равны в режимах, захотят более сложный расчет: если например выбрано по 3 заезда, а режимов катается 5, нечетное количество, то победы в режимах, у кого наибольшее количество побед именно в режимах, 3 против 2, тот и победитель. Т.е. это оговаривается еще в начале объявленной темы.
|
nosferatum
|
Сообщение #112
23 февраля 2014 в 00:20
|
Супермен
37 |
3). Не плохо бы числа сделать числами. :) Кажется, в парсере DIgorevich'a проблема не тех форматов была решена умножением числовых данных на 1. Сделаю. Умножения на число не понадобится, надеюсь, ибо джавовская библиотека экспорта в эксель поддерживает установку типа ячейки. 4). Имхо, колонкам со скоростями/процентами/количеством ошибок лучше дать короткие и уникальные по заездам значения: ск1, %ош1, ош.1, ск2, %ош2, ош2... и т.д. Сокращенные названия принимаются, исправлю на них. Может вообще даже "группировать" данные одного типа: ск.1, ск.2, ск3..., ош1, ош2, ош3..., %ош1, %ош2, %ош3...? Или по заездам, как сейчас, удобнее? Не знаю... В суммарной таблице в том виде, как она сейчас, имхо, логичней по заездам. Можно сделать отдельные таблицы по каждому параметру, если это нужно. 5). Да, лучше пусть вся "общая информация" будет слева, отдельные заезды правее. Ок, исправлю. - рекордов в заездах (можно либо отдельные столбики по заездам, либо в один столбик в строке участника с номерами рекордных заездов, например: "2, 4, 5, 7, 9. 11, 15" С рекордами проблема, ибо их в json-е нет, и неясно, как их получать. Единственное — можно сравнить скорость в заезде с текущим рекордом по словарю, и если он больше — считать рекордом. Не факт, что это надежный способ (особенно в случаях непрохождения квалификации). - рекордов (максимальной скорости участника) в катаемых режимах и пробега в катаемых режимах (в json же это сохраняется?) Да, вроде как в json-е это есть. Правда, я пока не достаю эти данные оттуда :) Но нужно добавить, раз надо, да. Даже если нет в json-файлах, то достать можно из статистики игрока (конечно, данные будут тогда на момент загрузки в парсер). - пробега в обычном, суммарного пробега по всем режимам Ок, добавлю. Возьмется это из того же запроса, что и на общую скорость (это данные правых плашек в профиле). - информации о номере места в заезде (для "биатлонных" подсчётов), но тут было бы гораздо легче для дальнейшей обработки в Excel исходить из позаездных данных... Информация по отдельным заездам и местам есть на странице заезда (раскрыть «Результаты игроков (включая гостей)»). Стоит в сводную таблицу для каждого заезда добавить еще и место игрока в заезде? В дополнение к сводной на отдельный лист при экспорте в Excel хочется табличку с данными о заездах. Ок, сделаю. Думаю, можно недостающие данные тогда вынести в таблицу заездов на странице соревнований (раскрываем «Заезды»). И ещё фильтров бы при просмотре/экспорте, какие именно столбцы показывать/экспортировать в эксель (ставим галочку, напротив нужного и оно отображается/сохраняется, примерно вот это) Будет, во всех таблицах. Как я уже писал, возможно, прикручу какие-нибудь готовые js-таблицы. Впрочем, свои таблицы сделать тоже реально. Последний раз отредактировано 23 февраля 2014 в 00:27 пользователем nosferatum
|
voidmain
|
Сообщение #113
23 февраля 2014 в 01:15
|
Маньяк
29 |
nosferatum писал(а): С рекордами проблема, ибо их в json-е нет, и неясно, как их получать. Единственное — можно сравнить скорость в заезде с текущим рекордом по словарю, и если он больше — считать рекордом. Не факт, что это надежный способ (особенно в случаях непрохождения квалификации). Я могу добавить это в экспортируемый JSON
|
nosferatum
|
Сообщение #114
23 февраля 2014 в 01:17
|
Супермен
37 |
Я могу добавить это в экспортируемый JSON А можно туда добавить именно признак рекорда из текущей игры?
|
voidmain
|
Сообщение #115
23 февраля 2014 в 02:36
|
Маньяк
29 |
nosferatum писал(а): А можно туда добавить именно признак рекорда из текущей игры? Добавил. Выложил новую версию скрипта: KG_SaveGameResult 1.9
|
MMMAAANNN
|
Сообщение #116
23 февраля 2014 в 02:45
|
Супермен
36 |
voidmain, а можно добавить скрипт сохранения результатов заезда в скрипт ведения лога заездов? Тогда вообще не надо будет помнить о необходимости сохранения заезда, зашел в лог - выбрал галочками нужные заезды - нажал кнопочку - получил экспоритрованные json (а то и сразу загрузить их в парсер nosferatum!) P.S. А, все, понял свою ошибку - для сохранения json ведь важен момент, когда его сохраняют. Это не так просто настроить будет, наверное... Но можно подумать над такими вариантами: (1) момент доезда текста (видимо попадут почти все, кто тебя обогнал, и мало кто из тех, кто проехал с меньшей скоростью); (2) заданное время после начала заезда (это лучше - можно задать так, чтобы всегда попадали все таксисты, например; но тогда не все заезды будут сохраняться); (2a) время из расчеты длины текста так, чтобы в зачет попали все со скоростями выше N. Последний раз отредактировано 23 февраля 2014 в 03:02 пользователем MMMAAANNN
|
AvtandiLine
|
Сообщение #117
23 февраля 2014 в 02:55
|
Кибергонщик
61 |
А обязательно ли для экспорта сводной таблицы использовать Excel 2007? у меня старый (2003), и у других может оказаться, мало ли...
|
nosferatum
|
Сообщение #118
23 февраля 2014 в 02:57
|
Супермен
37 |
А обязательно ли для экспорта сводной таблицы использовать Excel 2007? у меня старый (2003), и у других может оказаться, мало ли... В принципе, могу сделать две отдельных ссылки для xls и xlsx. Либо же исключительно в старом формате выгружать.
|
voidmain
|
Сообщение #119
23 февраля 2014 в 03:00
|
Маньяк
29 |
MMMAAANNN писал(а): voidmain, а можно добавить скрипт сохранения результатов заезда в скрипт ведения лога заездов? Тогда вообще не надо будет помнить о необходимости сохранения заезда, зашел в лог - выбрал галочками нужные заезды - нажал кнопочку - получил экспоритрованные json (а то и сразу загрузить их в парсер nosferatum!) В журнал записываются только ваши результаты. Записать результаты других участников заезда не получится: часто бывает так, что игрок выходит из игры, не дождавшись остальных.
|
MMMAAANNN
|
Сообщение #120
23 февраля 2014 в 03:05
|
Супермен
36 |
voidmain писал(а): MMMAAANNN писал(а): voidmain, а можно добавить скрипт сохранения результатов заезда в скрипт ведения лога заездов? Тогда вообще не надо будет помнить о необходимости сохранения заезда, зашел в лог - выбрал галочками нужные заезды - нажал кнопочку - получил экспоритрованные json (а то и сразу загрузить их в парсер nosferatum!) В журнал записываются только ваши результаты. Записать результаты других участников заезда не получится: часто бывает так, что игрок выходит из игры, не дождавшись остальных. Но ведь можно хоть часть результатов записать. Плюс иногда интересно посмотреть, кто еще был в том или ином заезде. А сохраняемый json можно обновлять, например, каждые 10 секунд - вышел раньше, записались не все; подождал - записались все.
|
nosferatum
|
Сообщение #121
23 февраля 2014 в 03:14
|
Супермен
37 |
Я думаю, что столь глубокие изменения нужно просить вносить в движок авторов клавогонок. По логике, раз есть момент уничтожения сессии игры (через где-то 20 минут после ее начала), то хорошо бы там поставить обработчик, собирающий результаты всех игроков. Предлагаю написать в какую-либо тему из тех, что про развитие клавогонок и новых их фич, микропетицию (собрать голоса активных клавогонщиков) с просьбой: а) не закрывать доступ к js-переменным, которые используются в скрипте от voidmain (Fenex угрожал этим в одном из постов) б) встроить в обработчик конца сессии игры скрипт сохранения данных. Чудо-скрипт у нас уже фактически есть. Можно попросить сделать и автопост данных в мой парсер, как разумно предлагает MMMAAANNN. Думаю, что клавомеханики — люди разумные, и вступить с ними в конструктивный диалог вполне возможно. Последний раз отредактировано 23 февраля 2014 в 03:15 пользователем nosferatum
|