Модуль:Data/2042
Список баз данных
- База данных финального турнира ЧТМ (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"] = { ... }
}