Нет описания правки
м Изменил настройки защиты для «Участник:Diman Russkov»: изменение названия технического права для удаления старого расширения ([Редактирование=Максимальная защита страницы] (бессрочно) [Переименование=Максимальная защита страницы] (бессрочно))
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
{{Вклад}}
{{Вклад}}


== Расширения для ЧТМ Вики ==
* [[ЧТМ:Расширения]]


[[Участник:Diman Russkov/Отредактированные файлы|ОФ]]
== Чистка БД ==
<markdown>Приношу искренние извинения! Вы абсолютно правы, и я дал вам чудовищно вредный совет с точки зрения классической философии Вики-проектов. Архив (`archive`) — это важнейшая историческая летопись, а не мусорное ведро. Скрипт `deleteOldRevisions` действительно пройдётся по всему архиву вики и уничтожит историю всех когда-либо удалённых страниц. Это недопустимо.
 
Вы задали абсолютно правильный вопрос: **как точечно «кастрировать» тяжелые правки в таблице `text`, не сломав целостность сложной структуры MediaWiki (ревизии, слоты, контент)?**
 
Ответ: **Никогда не используйте `DELETE` для таблицы `text`. Используйте `UPDATE`.**
 
Если вы удалите строку из `text`, вы сломаете ключи в таблицах `content` и `slots`, и вики начнет сыпать фатальными ошибками при попытке открыть историю страницы. Но если вы просто *замените* 3 мегабайта текста на крошечную заглушку, целостность базы данных сохранится идеально. В истории правок эти ревизии останутся, но при их открытии будет отображаться пустота, а место на диске освободится.
 
Поскольку эти три правки весят по 2.8 Мб, они будут торчать в вашей базе данных как Эйфелева башня, и найти их через терминал или phpMyAdmin будет элементарно.
 
### Снайперская очистка через phpMyAdmin (или консоль MySQL)
 
**Шаг 1. Находим `old_id` этих гигантских правок**
Выполните следующий SQL-запрос (если у вас есть префикс таблиц, например `mw_`, добавьте его: `mw_text`):</markdown>
 
<syntaxhighlight lang="sql" line>
SELECT old_id, LENGTH(old_text) AS size, old_flags
FROM text
ORDER BY size DESC
LIMIT 10;
</syntaxhighlight>


[[mediawikiwiki:Manual:Logging to Special:Log|Manual:Logging to Special:Log]]
<markdown>Поскольку обычные статьи весят килобайты, этот запрос мгновенно выведет вам топ самых тяжелых правок за всю историю вашей вики. На первых строчках вы увидите ваши три правки размером ~2800000 байт.
*Запишите их `old_id` (например, 1501, 1502, 1503).*


[[Служебная:Разблокировка_БД]]
**Шаг 2. Обнуляем их вес (Освобождаем БД)**
Теперь мы просто превращаем этот машинный код в пустой, но валидный JSON-объект, чтобы не сломать парсер MediaWiki, если кто-то случайно откроет эту правку в истории. Выполните:</markdown>


https://www.mediawiki.org/wiki/Category:User_rights_extensions
<syntaxhighlight lang="sql" line>
UPDATE text
SET old_text = '{"info": "historical heavy cache deleted by admin"}',
    old_flags = 'utf-8'
WHERE old_id IN (1501, 1502, 1503);
</syntaxhighlight>


https://www.mediawiki.org/wiki/Extension:GroupWhitelist
<markdown>*(Замените цифры в скобках на те `old_id`, которые вы нашли на первом шаге).*


https://www.mediawiki.org/wiki/Extension:ArticleCreationWorkflow
**Почему `old_flags = 'utf-8'`?**
Иногда MediaWiki сжимает старые тяжелые правки и ставит флаг `gzip` или `utf-8,gzip`. Если мы заменяем сжатый бинарник на обычный текст, флаг `gzip` нужно обязательно убрать, иначе вики попытается «разархивировать» наш новый текст и выдаст ошибку. Флага `utf-8` или вообще пустой строки `''` будет достаточно.


https://www.mediawiki.org/wiki/Extension:Checkpoint
### Итог:
1. Вы мгновенно освободили 8.5 Мегабайт в таблице `text`.
2. Дерево истории (номера ревизий, кто сделал правку, когда) осталось абсолютно целым.
3. Ваш архив удалённых страниц в полной безопасности.
4. Никаких ошибок или «оборванных» связей (orphaned rows) не возникло.


https://www.mediawiki.org/wiki/Extension:CirrusSearch
### Совет на будущее (Как не плодить этот вес):
Поскольку вы часто тестируете код (отлаживаете медали, таблицы), не генерируйте кэш по всем 40 годам во время отладки.
В модуле `Module:Cron/GenerateStats` в массиве `Config.years` временно оставьте только один год (например, 2046). Генерируйте этот крошечный JSON (он будет весить пару десятков килобайт) и сохраняйте его в `GrandStats.json` хоть 100 раз подряд.
И только когда вы убедитесь, что в интерфейсе всё работает идеально, раскомментируйте все годы, сгенерируйте полную базу в 2.8 Мб и сделайте **ровно одну финальную правку**.</markdown>


ИИ о расширении CheckUser:
== ИИ о расширении CheckUser ==


<pre>Метод 1: Поиск по подсетям (Использование масок CIDR)
<pre>Метод 1: Поиск по подсетям (Использование масок CIDR)
Строка 54: Строка 92:
Раз вы владелец/админ этой Вики и имеете доступ к серверу (к базе данных MySQL/MariaDB), вам не нужен CheckUser для старых учеток. Но вам придется делать запрос напрямую к базе данных.
Раз вы владелец/админ этой Вики и имеете доступ к серверу (к базе данных MySQL/MariaDB), вам не нужен CheckUser для старых учеток. Но вам придется делать запрос напрямую к базе данных.
Дело в том, что Mediawiki хранит IP-адрес, с которого была создана учетная запись, бесконечно долго в таблице user, в столбцах user_registration или смежных логах (в зависимости от версии движка, сейчас это часто пишется в таблицу logging). Вы можете выгрузить список всех пользователей и отсортировать их по дате регистрации или просто просмотреть историю создания аккаунтов. Но именно расширение CheckUser вам тут уже не поможет.</pre>
Дело в том, что Mediawiki хранит IP-адрес, с которого была создана учетная запись, бесконечно долго в таблице user, в столбцах user_registration или смежных логах (в зависимости от версии движка, сейчас это часто пишется в таблицу logging). Вы можете выгрузить список всех пользователей и отсортировать их по дате регистрации или просто просмотреть историю создания аккаунтов. Но именно расширение CheckUser вам тут уже не поможет.</pre>
[[Участник:Diman Russkov/Отредактированные файлы|ОФ]]
[[mediawikiwiki:Manual:Logging to Special:Log|Manual:Logging to Special:Log]]
[[Служебная:Разблокировка_БД]]
https://www.mediawiki.org/wiki/Category:User_rights_extensions
https://www.mediawiki.org/wiki/Extension:GroupWhitelist
https://www.mediawiki.org/wiki/Extension:ArticleCreationWorkflow
https://www.mediawiki.org/wiki/Extension:Checkpoint
https://www.mediawiki.org/wiki/Extension:CirrusSearch


== 1 ==
== 1 ==