Модуль:Data/2042: различия между версиями
Нет описания правки |
The Twist (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
return { | |||
-- ID матча. Рекомендую формат "Год-Номер", например "2042-64". | |||
-- Это исключит путаницу с историческими номерами, если вдруг найдется потерянный матч из прошлого. | |||
["2042-64"] = { | |||
-- 1. БАЗОВАЯ ИНФОРМАЦИЯ | |||
date = "1 мая 2024", | |||
matchday = 7, -- Номер игрового дня в турнире (пригодится для связи с призами дня) | |||
num_hist = 613, -- Исторический номер | |||
stage = "Финал", | |||
team1 = "ТЕР", -- Можно использовать ваши 3-буквенные коды | |||
team2 = "ИНД", | |||
score1 = 1, | |||
score2 = 1, | |||
aet = true, -- Было ли дополнительное время (true/false) | |||
-- 2. УСЛОВИЯ ИГРЫ | |||
stadium = "Тулака-Арена", | |||
format = "5 на 5", | |||
half_court = false, -- На одни ворота? (true/false) | |||
rules = "2 десятиминутных тайма, доп. время - 2 трёхминутных тайма", | |||
neutral_goalies = {}, -- Список нейтральных вратарей, если были, например: {"Вася", "Петя"} | |||
-- 3. МЕДИА | |||
video = "p8UVvKKdVEw", | |||
review_url = "ID_видео_обзора", | |||
review_time = "23m56s", | |||
-- 4. СОСТАВЫ | |||
squad1 = { | |||
starters = {"Макс", "Стас", "Дима Кес.", "Алишер", "Бирюк", "Антон"}, | |||
full_match_goalie = "Антон", -- Если стоял весь матч | |||
}, | |||
squad2 = { | |||
starters = {"Диман", "Геныч", "Серёга", "Ринат", "Некит"} | |||
}, | |||
-- Замены, опоздания (можно не заполнять, если не было) | |||
subs = { | |||
{team = 1, player_out = "Макс", player_in = "Вася", score = "1:0", min = 15}, | |||
{team = 2, player_out = "none", player_in = "Ильич", score = "1:1"} -- Опоздавший (вышел вместо никого) | |||
}, | |||
-- 5. СОБЫТИЯ В ИГРЕ | |||
goals = { | |||
{team = 1, scorer = "Стас", assist = "Макс", score = "1:0", min = 12, type = "пятка"}, | |||
{team = 2, scorer = "Некит", assist = "Ринат", score = "1:1", min = 22, type = "пенальти"} | |||
-- type может быть: "пенальти", "штрафной", "голова", "пятка", "автогол" | |||
}, | |||
missed_pens = { | |||
{team = 1, taker = "Бирюк", result = "вратарь", goalie = "Геныч"}, | |||
{team = 2, taker = "Ринат", result = "штанга"} | |||
}, | |||
clearances = { -- Выносы из пустых | |||
{team = 2, player = "Диман", score = "1:0", min = 14} | |||
}, | |||
cards = { | |||
{team = 1, player = "Алишер", color = "жёлтая", score = "1:0", min = 18}, | |||
{team = 2, player = "Серёга", color = "красная", score = "1:1", min = 25, return_score = "1:1", return_min = 27, reason = "Фол последней надежды"} | |||
}, | |||
-- 6. СЕРИЯ ПЕНАЛЬТИ (если была) | |||
shootout_score1 = 3, | |||
shootout_score2 = 4, | |||
shootout = { | |||
-- num - порядок удара, result: "гол", "вратарь", "мимо", "штанга", "перекладина" | |||
{num = 1, team = 1, taker = "Макс", goalie = "Диман", result = "гол", score_after = "1:0"}, | |||
{num = 2, team = 2, taker = "Некит", goalie = "Антон", result = "вратарь", score_after = "1:0"}, | |||
-- и так далее... | |||
}, | |||
-- | -- 7. НАГРАДЫ И КОММЕНТАРИИ | ||
mvp = { | |||
player = "Некит", | |||
team = 2, -- 1, 2 или 0 (если нейтральный вратарь) | |||
role = "поле" -- "поле" или "вратарь" | |||
}, | |||
comment = "Величайший финал, вернувший нас в 2013 год." | |||
}, | |||
-- Дальше идет следующий матч ["2042-63"] = { ... } | |||
} | |||
Версия от 22:29, 9 апреля 2026
Список баз данных
- База данных финального турнира ЧТМ (Data)
2006 • 2010 • 2014 • 2018 • 2022 • 2026 • 2030 • 2034 • 2038 • 2042 • 2046
- База данных результатов всех турниров (Data/Tournaments)
2006 • 2009 • 2010 • 2013 • 2014 • 2015 • 2017 • 2018 • 2019 • 2020 • 2021 • 2022 • 2023 • 2024 • 2025 • 2026 • 2027 • 2028 • 2029 • 2030 • 2031 • 2032 • 2033 • 2034 • 2035 • 2036 • 2037 • 2038 • 2039 • 2040 • 2041 • 2042 • 2043 • 2044 • 2045 • 2046 • 2047 • 2048
- Прочие базы данных
- Data/Teams — словарь команд.
- Data/RatingCalc — единое хранилище словарей очков, рангов и ручных переопределений для движка подсчёта рейтинга.
- Технические страницы
- Cron/GenerateStats — служебный скрипт, предназначенный для агрегации, расчёта и кэширования полной базы данных финального турнира ЧТМ.
- Data/GrandStats.json (править) — огромная бандура для хранения генерируемого
Cron/GenerateStatsмашинного кода.
Обновление баз данных
Пока актуально только для финального турнира ЧТМ, но планируется расширить.
- Обновление
- Обновите или исправьте статистику на нужной подстранице, убедитесь, что нет ошибок синтаксиса.
- Откройте служебную страницу Развёртка шаблонов и вставьте следующий код:
{{#invoke:Cron/GenerateStats|main}} - Целиком скопируйте json-массив, перейдите на страницу Модуль:Data/GrandStats.json, удалите всё её содержимое и замените на только что скопированный код.
JSON-массивы занимают несколько мегабайт и хранить в SQL горы устаревшего нечитаемого кода абсолютно бессмысленно. Поэтому необходимо периодически чистить кэш от старых расчётов следующим образом:
Шаг 1. Находим old_id этих гигантских правок
Выполните следующий SQL-запрос:
SELECT old_id, LENGTH(old_text) AS size, old_flags
FROM text
ORDER BY size DESC
LIMIT 10;
Поскольку обычные статьи весят килобайты, этот запрос мгновенно выведет вам топ самых тяжелых правок за всю историю вашей вики. На первых строчках вы увидите ваши три правки размером ~2800000 байт.
Запишите их old_id.
Шаг 2. Обнуляем их вес (Освобождаем БД) Теперь мы просто превращаем этот машинный код в пустой, но валидный JSON-объект, чтобы не сломать парсер MediaWiki, если кто-то случайно откроет эту правку в истории. Выполните:
UPDATE text
SET old_text = '{"info": "Любой текст."}',
old_flags = 'utf-8'
WHERE old_id IN (НОМЕР, НОМЕР, НОМЕР);
(Замените цифры в скобках на те old_id, которые вы нашли на первом шаге).
Почему old_flags = 'utf-8'?
Иногда MediaWiki сжимает старые тяжелые правки и ставит флаг gzip или utf-8,gzip. Если мы заменяем сжатый бинарник на обычный текст, флаг gzip нужно обязательно убрать, иначе вики попытается «разархивировать» наш новый текст и выдаст ошибку. Флага utf-8 или вообще пустой строки '' будет достаточно.
Пожалуйста, добавляйте категории на страницу документации.
return {
-- ID матча. Рекомендую формат "Год-Номер", например "2042-64".
-- Это исключит путаницу с историческими номерами, если вдруг найдется потерянный матч из прошлого.
["2042-64"] = {
-- 1. БАЗОВАЯ ИНФОРМАЦИЯ
date = "1 мая 2024",
matchday = 7, -- Номер игрового дня в турнире (пригодится для связи с призами дня)
num_hist = 613, -- Исторический номер
stage = "Финал",
team1 = "ТЕР", -- Можно использовать ваши 3-буквенные коды
team2 = "ИНД",
score1 = 1,
score2 = 1,
aet = true, -- Было ли дополнительное время (true/false)
-- 2. УСЛОВИЯ ИГРЫ
stadium = "Тулака-Арена",
format = "5 на 5",
half_court = false, -- На одни ворота? (true/false)
rules = "2 десятиминутных тайма, доп. время - 2 трёхминутных тайма",
neutral_goalies = {}, -- Список нейтральных вратарей, если были, например: {"Вася", "Петя"}
-- 3. МЕДИА
video = "p8UVvKKdVEw",
review_url = "ID_видео_обзора",
review_time = "23m56s",
-- 4. СОСТАВЫ
squad1 = {
starters = {"Макс", "Стас", "Дима Кес.", "Алишер", "Бирюк", "Антон"},
full_match_goalie = "Антон", -- Если стоял весь матч
},
squad2 = {
starters = {"Диман", "Геныч", "Серёга", "Ринат", "Некит"}
},
-- Замены, опоздания (можно не заполнять, если не было)
subs = {
{team = 1, player_out = "Макс", player_in = "Вася", score = "1:0", min = 15},
{team = 2, player_out = "none", player_in = "Ильич", score = "1:1"} -- Опоздавший (вышел вместо никого)
},
-- 5. СОБЫТИЯ В ИГРЕ
goals = {
{team = 1, scorer = "Стас", assist = "Макс", score = "1:0", min = 12, type = "пятка"},
{team = 2, scorer = "Некит", assist = "Ринат", score = "1:1", min = 22, type = "пенальти"}
-- type может быть: "пенальти", "штрафной", "голова", "пятка", "автогол"
},
missed_pens = {
{team = 1, taker = "Бирюк", result = "вратарь", goalie = "Геныч"},
{team = 2, taker = "Ринат", result = "штанга"}
},
clearances = { -- Выносы из пустых
{team = 2, player = "Диман", score = "1:0", min = 14}
},
cards = {
{team = 1, player = "Алишер", color = "жёлтая", score = "1:0", min = 18},
{team = 2, player = "Серёга", color = "красная", score = "1:1", min = 25, return_score = "1:1", return_min = 27, reason = "Фол последней надежды"}
},
-- 6. СЕРИЯ ПЕНАЛЬТИ (если была)
shootout_score1 = 3,
shootout_score2 = 4,
shootout = {
-- num - порядок удара, result: "гол", "вратарь", "мимо", "штанга", "перекладина"
{num = 1, team = 1, taker = "Макс", goalie = "Диман", result = "гол", score_after = "1:0"},
{num = 2, team = 2, taker = "Некит", goalie = "Антон", result = "вратарь", score_after = "1:0"},
-- и так далее...
},
-- 7. НАГРАДЫ И КОММЕНТАРИИ
mvp = {
player = "Некит",
team = 2, -- 1, 2 или 0 (если нейтральный вратарь)
role = "поле" -- "поле" или "вратарь"
},
comment = "Величайший финал, вернувший нас в 2013 год."
},
-- Дальше идет следующий матч ["2042-63"] = { ... }
}