Вопросы, советы, возможные модификации и вообще все про модуль статистики кланов

Модератор: Exinaus, shw

#24689 diesel2001 14 фев 2013, 11:15
К сожалению меня не наделили дикими способностями к программированию (не хватает знаний) поэтому прошу помочь разбирающихся людей.

В roster.php есть функция окраски игроков в тот или иной цвет в зависимости от последней даты посещения аккаунта.

Как это реализовано сейчас.
При использовании модуля 2.1.6 был выявлено следующие.
Игрок клана который не выходит в бои, с прошлого года (это подтверждает "дата последнего боя" доступная только из клиента игры) подсвечивается синим.
И действительно по информации с сайта (https://worldoftanks.ru/community/) игрок заходит периодически в аккаунт и информация обновляется. То есть модуль отрабатывает правильно.

Попробую объяснить почему хочется изменить.
Окрашивать игрока в цвет в зависимости от того был он в бою или нет.

Решение как вижу его я.
Параметр "дата последнего боя" не доступна через api и по ней нельзя сделать сравнение.
Есть закладка "рейтинг" с таблицей в которой есть графа "Проведено боев" и мы знаем текущую "дату"

Смотрим "Проведено боев" смотрим "Дату"
если "Проведено боев" увеличилось по сравнению с предыдущей датой игрок был в боях (красим в синий).
если боев не было то начинаем отсчитывать дни и соответственно если боев небыло <= 7 (красим в зеленый) <=14 )красим в красный) и т.д.

Если я что-то не правельно понимаю, то пожалуйста объясните.
#24691 shw 14 фев 2013, 11:45
Кхм. перефразирую ваш запрос - есть текущие данные (закешированые) и есть ежедневный сбор данных кроном.
из кэша вычитаем данные за последнюю отработку крона. если разница =0 - то считаем дальше.
вычитаем данные перебором за н дней назад до получения любой разницы.
Теоритически такое реально сделать, но:
у нас есть такая вещь, как "провалы" в сборе данных, и мы будем иметь следующее:
предположим, что за 4ре дня в базе сохранились следующее кол-во боев: 100, 120, 0, 120 и в кэше лежит тоже 120.
по разнице мы будем видеть что 2 дня назад данный игрок "якобы" воевал. Если исключать ноль, то будет погрешность в 1 день.
а если несколько провалов подряд по одному игроку?. в общем, надеюсь, что суть уловили.

Ну и такой подход будет отрицательно сказываться на скорости загрузки модуля. (таб с перебором по 100 игроков) утяжелит где-то на 1-2 секунды.
#24694 Exinaus 14 фев 2013, 12:12
Ты лучше посчитай количество запросов в базу. Количество игроков, умноженное на количество дней, для проверки когда у человека были бои.
А еще какую стену текста надо написать для исключения вот этих нулей ...
В общем, я желаю счастья и шлю лучи добра тому кто соберется это делать. Т.к. никаких нервов без этого не хватит.

И все ради того что бы изменить цвет ника в одной из табличек :D
#24699 diesel2001 14 фев 2013, 12:28
Крон как мне пояснили не имеет отношения к вкладке "рейтинг" или я что-то снова не правильно понял?

Я дома у себя поставил, скрипт на сервер, что бы помучить, cron, даже руками не пинаю, а данные в "рейтинге" есть, они же все из api сервера.
А вот Активность общая, Активность награды, Лучшие результаты пустые так как требуют cron.
На хабре вроде есть статья где человек лесапед изобретал. Ему задачу поставили обойтись без crona и там есть решение.

Exinaus писал(а):Ты лучше посчитай количество запросов в базу. Количество игроков, умноженное на количество дней, для проверки когда у человека были бои.
Снова лыжи плохо смазал. Зачем нам знать когда были бои? Нужно только смотреть изменился счетчик "кол во боев" или нет, если нет смотреть когда было последние изменение, от этой даты посчитать и окрасить.
то есть нам нужно помнить положение счетчика и изменился он или нет по отношению к текущей дате.
#24700 shw 14 фев 2013, 12:37
diesel2001 писал(а):Снова лыжи плохо смазал. Зачем нам знать когда были бои? Нужно только смотреть изменился счетчик "кол во боев" или нет, если нет смотреть когда было последние изменение, от этой даты посчитать и окрасить.
то есть нам нужно помнить положение счетчика и изменился он или нет по отношению к текущей дате.

Ой-ой-ой. т.е. вы предлагаете еще и в базе хранить данные "счетчика"? Ню-ню.
и опять же - будет "провал" - счетчик будет скакать туда сюда. что еще хуже, чем перебор.
#24701 Exinaus 14 фев 2013, 12:39
diesel2001 писал(а):Снова лыжи плохо смазал... Зачем нам знать когда были бои? Нужно только смотреть изменился счетчик "кол во боев" или нет, если нет смотреть когда было последние изменение, от этой даты посчитать и окрасить.
то есть нам нужно помнить положение счетчика и изменился ли он или нет.

Даже объяснять уже наверно не буду. ну вот не понимаете, ну и ладно. Попробуйте разобраться какие именно данные есть в модуле и что они содержат, может дойдет тогда само.
Удачи, в общем.
#24702 diesel2001 14 фев 2013, 12:49
shw писал(а):Ой-ой-ой. т.е. вы предлагаете еще и в базе хранить данные "счетчика"? Ню-ню.
и опять же - будет "провал" - счетчик будет скакать туда сюда. что еще хуже, чем перебор.

Я не видел структуру базы данных, поэтому не знаю хронятся данне или нет. По видимому нет и данные всякий раз при открытии грузятся с сервера.
Тогда да, это дополнительная запись "счетчик" и "дата изменения счетчика".
Я же говорю, что не селен в этом, не понимаю, что смешного?
Exinaus писал(а):Даже объяснять уже наверно не буду.
Надежда все же есть "Наверное" :D
И Вам творческих успехов!

з.ы. если кто все же сочтет это реализуемым, спасибо.
#24706 shw 14 фев 2013, 13:35
diesel2001 писал(а):Я не видел структуру базы данных, поэтому не знаю хранятся данные или нет. По видимому нет и данные всякий раз при открытии грузятся с сервера.
Тогда да, это дополнительная запись "счетчик" и "дата изменения счетчика".
Я же говорю, что не селен в этом, не понимаю, что смешного?

Данные хранятся в кэше (более-менее актуальные) и в базе (ежедневные слепки об игроках). если что.
вам предложили два варианта - делать и не делать, и обрисовали как делать и как не делать =)
а на блюдечке (ввиду занятости основных модописателей) пока никто не сможет предложить.
#24707 diesel2001 14 фев 2013, 13:40
интересно а как это реализованное на worldofclans ресурсе. Если выбрать игрока там расписано кол-во боев по каждому дню, у нас это тоже возможно путем выборки но у них видно, в статистике клана в графе посещение сколько дней за месяц игрок был в бою.

shw писал(а):Данные хранятся в кэше (более-менее актуальные) и в базе (ежедневные слепки об игроках). если что.
вам предложили два варианта - делать и не делать, и обрисовали как делать и как не делать =)
а на блюдечке (ввиду занятости основных модописателей) пока никто не сможет предложить.
Я же попросил помочь кто может и так же упомянул, что моих знаний не достаточно. =)

Интересно еще в строке api указывается токен как неофициальной статистики =) Интересно есть токен официальной статистики? :D
#24714 shw 14 фев 2013, 14:40
[quote="diesel2001":3ck[цензура]f]интересно а как это реализованное на worldofclans ресурсе. Если выбрать игрока там расписано кол-во боев по каждому дню, у нас это тоже возможно путем выборки но у них видно, в статистике клана в графе посещение сколько дней за месяц игрок был в бою.
[/quote:3ck[цензура]f]
Уже много раз обсуждалось, что модуль делает только то, подо что он задумывался. А на том ресурсе скорей всего реализовано как и в этом модуле, только там вы видите ОДНОГО игрока с календариком, поэтому загрузку по обработке особо не замечаете, а вот запустите на том ресурсе со своего компа 100 человек, да еще и одновременно почти =)
+ там следят за корректным сбором данных, т.к. хостинг платный и т.д. и т.п.
[quote="diesel2001":3ck[цензура]f]
Я же попросил помочь кто может и так же упомянул, что моих знаний не достаточно. =)
[/quote:3ck[цензура]f]
Вот вас и просвещают =)
[quote="diesel2001":3ck[цензура]f]
Интересно еще в строке api указывается токен как неофициальной статистики =)
Интересно есть токен официальной статистики? :D[/quote:3ck[цензура]f]
Есть =) Погуглите, если уж интересно.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Реклама | Adv