Открыть главное меню

Содержание

formatNumПравить

formatNum формирует числа в читаемом виде, с разбивкой по разрядам. Есть предложение простой пробел заменить на неразрывный. То есть сделать замену конструкции:

format = {decimalMark = ",", groupMark = " ", groupMinLength = 5, groupOnlyIntegerPart = true}

- из строки 126, в текущей версии, на конструкцию:

format = {decimalMark = ",", groupMark = " ", groupMinLength = 5, groupOnlyIntegerPart = true}

- по моему этого достаточно. @Игорь Темиров: В противном случае пробел становится переносим и число может быть размазано по разным строчкам, в результате оно нечитаемо. --Туча 22:07, 14 мая 2015 (UTC)

@Туча: Да, вы правы. Игорь Темиров 07:13, 15 мая 2015 (UTC)

Включён доступ к произвольным объектам ВикиданныхПравить

Видимо, статистические таблицы скоро можно будет постепенно отправлять на пенсию. Население НП при наличии такой информации на Викиданных теперь можно получить из кода tonumber(mw.wikibase.getEntityObject('Q656'):getBestStatements('P1082')[1].mainsnak.datavalue.value.amount) (mw.wikibase.getEntityObject('Q656'):formatPropertyValues('P1082')) выдаёт "5 131 942±1", потому что всем влом настраивать другую точность). Правда, пока я что-то не вижу функции, которая бы получала "Q656" из "Санкт-Петербург". Ignatus 14:51, 23 июня 2015 (UTC)

@Ignatus: Отличная новость! Игорь Темиров 04:00, 24 июня 2015 (UTC)

Отмена работы параметра кэшПравить

Темиров, у вас функция FormatH в коде заявлена, а не реализована, и в соответствующих строчках может происходить ошибка. Чем Вы тут собственно недовольны? --Туча 06:50, 6 ноября 2015 (UTC)

Примеры поведения:

{{Участник:Туча/Население|Краснодонецкая (Белокалитвинский район)|Хеш}}:3102257041

{{Участник:Туча/Население|Краснодонецкая|Хеш}}:1385359418

{{Население|Краснодонецкая (Белокалитвинский район)|Хеш}}:662921844

{{Население|Краснодонецкая|Хеш}}:110825366

--Туча 06:56, 6 ноября 2015 (UTC)

ча, спасибо, что напомнили. Удалил. Игорь Темиров 07:32, 6 ноября 2015 (UTC)
Почему нужно что то удалять, если можно просто сделать работоспособным? --Туча 08:09, 6 ноября 2015 (UTC)
Не видите войну правок. Объясните, для чего это нужно. Игорь Темиров 08:12, 6 ноября 2015 (UTC)
Я лишь вернул версию до всех изменений, это полное соответствие ВП:КОНС. А намёк на войну правок, и настрой на конфронтацию - это предложение что-то обсудить на СО с не аргументированной отменой правок, без открытия этого самого обсуждения. Если параметр ввёден и введён вами!!, то, вероятно, вам не нужно объяснять зачем он нужен, например для отладки и поиска ошибок. --Туча 08:17, 6 ноября 2015 (UTC)
Да, я ввел эту функцию в первоначальном варианте, так как думал использовать шаблон из других вики, но потом выяснилось, что это невозможно и расчёт хеша нужен только внутри модуля. Я поблагодарил вас (спасибо, что напомнили) и удалил. Вы не возражаете, если я удалю найденную вами неиспользуемую, ошибочную, ненужную, не содержащую программного кода функцию? Игорь Темиров 08:24, 6 ноября 2015 (UTC)
Я починил эту функцию, я нашел эту ошибку, то есть она понадобилась. Она нужна для исследования работы модуля. --Туча 08:33, 6 ноября 2015 (UTC)
Для исследований существует личное пространство. Скопируйте к себе модуль и исследуйте. Игорь Темиров 08:53, 6 ноября 2015 (UTC)
Да модуль можно укопироватся в личное пространство до посинения, Вы же потом не дадите ничего вставить из личного пространства обратно в модуль, как показывает практика и не раз. --Туча 08:57, 6 ноября 2015 (UTC)
Чем вам не угадил параметр nocat, позволяющий не включать страницу ни в какие категории, тоже непонятно. Это достаточно общая практика в википедии, о том что такой параметр иногда полезен. Вы сами ставили мне в вину, что страница замусоривает категорию, и надо сделать чтобы тестовые страницы, для которых сообщение об ошибке является нормальной работой, туда не попадали. --Туча 08:27, 6 ноября 2015 (UTC)
Вы не ответили на мой вопрос. Игорь Темиров 08:31, 6 ноября 2015 (UTC)
Вы тоже не ответили на мой вопрос, зачем вы отменили мои правки. Любое изменение модуля почему-то воспринимается в штыки, я же ничего не поломал, зачем меня было отменять? --Туча 08:34, 6 ноября 2015 (UTC)
Вы просто не обратили внимания. Повторю свой ответ: Да, я ввел эту функцию в первоначальном варианте, так как думал использовать шаблон из других вики, но потом выяснилось, что это невозможно и расчёт хеша нужен только внутри модуля. Я поблагодарил вас (спасибо, что напомнили) и удалил. Если какие-то слова или фразы непонятны, это не значит, что я не ответил. Просто напишите конкретно, что не поняли, и я распишу подробнее. Игорь Темиров 08:38, 6 ноября 2015 (UTC)
Ну а теперь поставьте себя на место другой стороны. Человек потратил время, починил эту функцию, поэтому давайте теперь её удалим, потому что вам она не нужна, потому что вы этот свой кэш считаете в off line, ну и как? Если люди вас спрашивают что это за числа, то они должны быть в праве хотя бы их получить. Вот представьте, случился апокалипсис, перестал работать бот TemirovBot, перестал заходить в википедию Игорь Темиров, люди же в праве наверно будут отойти от концепции, что кэш имеет право знать только Игорь Темиров? --Туча 08:54, 6 ноября 2015 (UTC)
Только что заметил ваш комментарий к моему предыдущему вопросу. Отвечу тогда на ваш вопрос по поводу Чем вам не угадил параметр nocat?. А чем он мне не угодил? Вроде ничего против не имею. Это действительно выход. Если не получается скопировать модуль в личное пространство и экспериментировать там, то хотя бы так. Игорь Темиров 08:58, 6 ноября 2015 (UTC)
Делаешь правку, отменяют и просят обсудить, но обсуждение не открывают. Когда задаешь прямой вопрос чем не угадила правка, то никакого ответа на самом деле нет, и даже говорится что это выход. Ну и зачем было отменять? Ничего не понимаю. Специально же делались изменения несколькими правками, что бы если есть возражения, отменялись только те изменения, по которым они есть. --Туча 09:36, 6 ноября 2015 (UTC)
Согласен с вашими аргументами. Спасибо. Игорь Темиров 11:15, 6 ноября 2015 (UTC)

Возможность называть населённый пункт по разномуПравить

Сейчас в статье Чучковский район населенный пункт значится как Пет (Чучковский район), а в статье Пертовское сельское поселение как Пёт (Чучковский район), очень бы хотелось что бы вызов из шаблона Население работал в обоих случаях правильно. Полагаю вполне возможно реализовать что бы корректная работа была и в том и другом случае. К примеру, кто-нибудь будет называть его как Пёт (Рязанская область) и это тоже что бы не вызывало ошибку. Алясы это стандартная вещь во многих местах, когда одна и та же сущность может иметь несколько названий - реализовано через перенаправления даже в википедии. --Туча 09:52, 6 ноября 2015 (UTC)

Туча Да, я видел ваши правки. Сам думал о чём-то подобном. Я хотел реализовать это через таблицы на странице хешей. Сейчас и так анализируется возврат на наличие таблицы в случае коллизий. Тогда понадобится добавить анализ первого аргумента таблицы. Если он числовой, то хеш подменяется хешем из таблицы. При таком алгоритме структура страницы региона останется неизменной. Да всё руки не доходят. Как вам такой вариант? Игорь Темиров 11:28, 6 ноября 2015 (UTC)
Этот вариант был бы очень хорош если бы хеш таблицы были отсортированы по алфавиту, а не по хешу. --Туча 11:49, 6 ноября 2015 (UTC)
При чём тут алфавит? Мы имеем устаревшее название. Вычисляем, ничего не подозревая, хеш. Обращаемся к странице хешей. Получаем ответ. Спрашиваем, а не таблица ли это? Если таблица, (начинается нововвведение) спрашиваем, не число ли первый аргумент? Если нет, то это коллизия и всё идёт по старому, если да, то заменяем хеш устаревшего названия на хеш нового названия, возвращённый таблицей. Игорь Темиров 12:01, 6 ноября 2015 (UTC)
Хэш таблица не одна, а разбита на несколько частей, старое и новое название, если сортировка по алфавиту в одной её части скорей всего с вероятностью стремящейся к единице, а если сортировка по хэшу, то они с вероятностью стремящейся к единице в разных частях. --Туча 12:15, 6 ноября 2015 (UTC)
Всё равно не пойму в чём проблема. Вместо cделанной вами правки [131830654]="RYA" будет [131830654]={1627890309, "RYA"}. Плюс описанный минимальный код в модуле. Страница региона при этом не нуждается в корректировке. Игорь Темиров 12:54, 6 ноября 2015 (UTC)
А конструкции с вложенными массивами ещё хуже. Они же память жрут. На самом деле чем меньше вложенных массивов тем меньше нужно памяти, при одном и том же количестве данных. --Туча 13:29, 6 ноября 2015 (UTC)
Если бы хэши были бы отсортированы по алфавиту, то ваш вариант мог бы выглядеть как [131830654]=1627890309, [1627890309]="RYA", и не было бы ни вложенных массивов, ни необходимости хватать соседнюю часть индекса. --Туча 13:47, 6 ноября 2015 (UTC)

Названия разные, а хэш один: есть проблема, но есть и решениеПравить

   Запрос выполнен

Сейчас в модуле есть кусок кода, оставшийся ещё со времён, когда подстраницы сопоставлений были модулями

if type(RegionPage) == "table" then RegionPage = RegionPage[PlaceName] end

По идее он должен работать для случаев, когда два разных названия дают один хэш и нет другой возможности (вроде скобочной проверки на "(название региона)") сличить НП с корректной базой регионов. Но это именно "по идее". Дело в том, что сейчас, без RUS-NNN модулей (а для отказа от них была более чем веская причина, так что возврат к этой схеме не вариант) Lua распознаёт тип данных выводимых "экзотических" строк не как table, а как string — доказательство чему мы можем видеть тут (я заставил свой тестовый модуль проверить тип данных, выводимый по комбинации {{Население/STA-005|107744721}} — этому хэшу соответствуют Гришенское в Алтайском крае и Жёлтинский в Челябинской области). Результат не заставит себя долго ждать: попытка сделать вызов {{Население|Гришенское|тс}} или {{Население|Жёлтинский|тс}} закономерно кончится fail'ом — см. здесь. В принципе, можно было бы подобную строку сделать распознаваемой таблицей в Lua через loadString ([1]). Проблема однако в том, что эта функция отключена в Scribunto, о чём можно прочитать тут. Есть ли выход из этой патовой ситуации? Можно, конечно, указывать регион вручную — как я и сделал сейчас в том самом Жёлтинском. Но это костыль, IMHO. А можно сделать поавтоматичнее:

1) вводится специальный "псевдорегион" STA-Multinames, которому такие хэши и должны сопоставляться;
2) если у хэша название региона указано как STA-Multinames, то производится вызов {{Население/STA-Multinames|хэш|название НП}}. Который, в свою очередь, и даст корректный регион. Так, для того же Жёлтинского вызов будет таким: {{Население/STA-Multinames|107744721|Жёлтинский}}, что даст нам правильный регион RUS-CHE. Результат — {{У:Seryo93/Население|Жёлтинский|тс}}.

Соответственно, прошу внести в модуль следующее изменение: после строки

if type(RegionPage) == "table" then RegionPage = RegionPage[PlaceName] end

включить новую строку следующего содержания:

if RegionPage == "STA-Multinames" then RegionPage = frame:expandTemplate{ title = ("Население/"..RegionPage), args = { PlaceHash, PlaceName } } end

С уважением, --Seryo93 (о.) 14:29, 10 августа 2017 (UTC)

@Seryo93: Да есть такая проблема {{Население|Жёлтинский|х}}:
  1. Н/Д[1],{{Население|Гришенское|х}}:
  2. Н/Д[2], но отдельный модуль тоже костыль. Скорее логичнее было бы переделать GetHashData, то есть заменить:
function GetHashData(PlaceHash) на function GetHashData(PlaceHash,PlaceName) в 68 строчке
if (HashData=="") then HashData=nil на if (HashData=="") then HashData= frame:expandTemplate{ title = templatename, args = { PlaceName } } if (HashData=="") then HashData=nil end в 75 строчке
local RegionPage = GetHashData(PlaceHash) на local RegionPage = GetHashData(PlaceHash,PlaceName) в 137 строчке
RegionPage = GetHashData(PlaceHash) на RegionPage = GetHashData(PlaceHash,PlaceName) в 142 строчке.
А if type(RegionPage) == "table" then RegionPage = RegionPage[PlaceName] end в строке 144 совсем удалить.

Тогда бы колизии без всяких дополнительных модулей можно было бы разрешать в самих шаблонах. Таким способом: правка. --Туча 17:28, 25 июня 2018 (UTC)

  • @Туча: Пока сделал уведомление при совпадении хешей. Почему не сделать ещё свитч в шаблонах и не передавать сразу два параметра - хеш и имя НП? Меньше кода и не будет повторных вызовов, как в вашем предложении. -- dima_st_bk 00:11, 7 марта 2019 (UTC)
  Сделано. -- dima_st_bk 11:55, 26 июня 2019 (UTC)

185 строчкаПравить

   Запрос выполнен

Хотелось бы что бы в случае таких ошибок как: Кетанда (село), Арка (Хабаровский край) - модуль не падал в строке 185:

Source1 = RegionData['Источники'][PlaceData[NumRecord][3]][1]

, а выдавал хотя бы что-то разумное:

Source1 = ( RegionData['Источники'] and string.format("{{%s}}",PlaceData[NumRecord][3]) ) or (RegionData['Источники'][PlaceData[NumRecord][3]] and PlaceData[NumRecord][3]) or RegionData['Источники'][PlaceData[NumRecord][3]][1]

То есть логика должна быть такая, на мой взгляд, если ошибка в одом источнике, в качестве этого источника подставь хоть что-нибудь, но таблицу итоговую по населению всё таки нарисуй нормальную. Данный кусок кода должен, если нет таблицы Источники, воспринимать параметр три как имя шаблона, а если таблица источники есть, но в ней нет соотвествующей записи, то как готовый и форматированный источник подставлять само поле три. --Туча 16:41, 25 июня 2018 (UTC)

  • Похоже, что я не так давно что-то такое в упрощённой форме сделал — [2]. Статьи попадают в штрафную категорию. Serhio Magpie (обс.) 05:28, 7 февраля 2019 (UTC)
Видимо   Сделано. -- dima_st_bk 06:58, 2 апреля 2019 (UTC)

Интерполяция в графикахПравить

   Запрос выполнен

Есть предложение, заменить

"interpolate": {"value": "monotone"}

на

"interpolate": {"value": "linear"}

(встречается там два раза). А то, смотрите, какие графики получаются

Численность населения
1926[3]2002[4]2007[5]2008[6]2010[7]
13419212326
 

Землеройкин (обс.) 13:29, 16 августа 2018 (UTC)

  •   Комментарий: в обсуждении графика поднимался вопрос о линейной интерполяции, конкретных возражений не было, было несколько голосов "за". Но все так нахваливали дизайн из шаблона {{Graph:Population history}}, где интерполяция по умолчанию monotone... Кроме того, был минус: я точно помню, что при резких скачках численности населения на графиках с линейной интерполяцией возникали плохо выглядящие острые углы линии. Тем не менее, сейчас я этот эффект воспроизвести не могу (или он стал незначителен). Короче, никаких фундаментальных преимуществ monotone перед linear действительно нет, а недостаток monotone действительно очевиден. Обсуждалась и возможность полного удаления линий, но однозначной поддержки не получила. Такое поведение при интерполяции monotone — несомненный баг; поскольку он пока не исправлен и, возможно, никогда не будет исправлен, я   поддерживаю этот запрос. --Браунинг (обс.) 14:18, 16 августа 2018 (UTC)
  • Честно говоря, тут вообще графика не должно быть. Слишком неравномерно расположены реперные точки, слишком большой разрыв между первой и второй. Тут график не то что не даёт адекватную информацию — он вводит в заблуждение, это орисс. Надо вообще график заменить на гистограмму. GAndy (обс.) 17:54, 21 августа 2018 (UTC)
  • Причём, так проблема, по-видимому, встречается много где — может даже подумать о ботозамене. GAndy (обс.) 17:56, 21 августа 2018 (UTC)
    • Нет. Это отдельный вопрос, по которому были широкие обсуждения -- я привёл ссылки выше. Если желаете, можно открыть новое обсуждение, если есть какие-то новые, не учтённые ранее аргументы. --Браунинг (обс.) 20:01, 21 августа 2018 (UTC)
    • Гистограмма тоже плохо, все точки будут расположены равномерно, независимо от того сколько лет между ними прошло. Да, это там есть в обсуждении. Землеройкин (обс.) 20:52, 22 августа 2018 (UTC)
  • Я бы предпочёл вариант с исправлением интерполяции monotone, но это нужно где-то внутри Vega 2 ковыряться. Полгода назад пытался разобраться, где же проблема, но так и не нашёл. Например, в Vega-Lite всё хорошо, а в Vega 2 (код, редактор) при таких же значениях проблема. — putnik 20:49, 21 августа 2018 (UTC)
    • Это конечно было бы здорово, но там же разобраться невозможно. Я пытался что-то понять, вроде бы кривые рисует вот эта функция? Но анекдот в том, что она их рисует правильно. Откуда берется глюк не понятно. Землеройкин (обс.) 20:56, 22 августа 2018 (UTC)

Похоже, я разобрался, в чём дело. Текущая версия расширения Graph использует библиотеку d3 версии 3.5.17. А как раз в следующей её версии, 4.0.0, было полное обновление алгоритма monotone (см. здесь), в том числе, видимо, был исправлен и этот баг, но в Graph это уже не попало. Землеройкин (обс.) 13:19, 26 августа 2018 (UTC)

  • Если действительно в этом дело, то можно же как-то пропихнуть обновление? — Vort (обс.) 13:47, 26 августа 2018 (UTC)
    • Лично я сомневаюсь, что его можно так просто "пропихнуть", но вообще, надо спрашивать у разработчиков. Землеройкин (обс.) 16:18, 26 августа 2018 (UTC)
      • Если и не всё обновление, так хоть проблемный файл. Но для начала надо проверить локально — помогает ли такая замена. — Vort (обс.) 16:21, 26 августа 2018 (UTC)
  • @Yurik: С уважением, Iniquity 16:30, 29 августа 2018 (UTC)
    • Увы, но очень не тривиально - phab:T165118 - надо полностью мигрировать на Vega 3 или 4, и менять сам график, но продолжая поддерживать Vega 2. --Yurik (обс.) 17:43, 30 августа 2018 (UTC)
      • Может быть, можно бэкпортнуть исправленный алгоритм интерполяции? Землеройкин выше дал ссылку на соответствующий файл. --Браунинг (обс.) 18:12, 30 августа 2018 (UTC)
  • Yurik, так можно или нельзя тупо заменить библиотеку d3 версии 3.5 на 4.0, используемую расширением Graph? MBH 12:59, 24 июля 2019 (UTC)

ПримечанияПравить

  1. Жёлтинский > Совпадение хешей. Пожалуйста, укажите регион вручную, например {{ Население | Жёлтинский | х | Регион = Приморский край }}
  2. Гришенское > Совпадение хешей. Пожалуйста, укажите регион вручную, например {{ Население | Гришенское | х | Регион = Приморский край }}
  3. Список населенных мест Дальневосточного края По материалам Всесоюзной переписи населения 17 декабря 1926 года и Приполярной переписи 1926-1927
  4. Данные Всероссийской переписи населения 2002 года: таблица № 02c. Численность населения и преобладающая национальность по каждому сельскому населенному пункту. М.: Федеральная служба государственной статистики, 2004
  5. Карта-буклет Лазовский район ФГУП 2007г.
  6. Лазовский район 1.01.2008
  7. Численность населения городских округов, муниципальных районов, городских и сельских поселений, городских населённых пунктов, сельских населённых пунктов. Всероссийская перепись населения 2010 года (по состоянию на 14 октября 2010 года). Приморский край. Дата обращения 31 августа 2013. Архивировано 11 июня 2013 года.

ИтогПравить

Заменил на "linear", по-крайне мере это не хуже, чем "monotone". — Алексей Копылов 02:27, 19 октября 2018 (UTC)

179 строкаПравить

   Запрос выполнен

Замените, пожалуйста, на 179 строке проверку:

if PlaceData[NumRecord][3] == "" then

на:

if ( PlaceData[NumRecord][3] == nil or PlaceData[NumRecord][3] == '' ) then

Иногда 3 параметр не указывают в данных и на страницу сыпятся ошибки. Спасибо. Serhio Magpie (обс.) 05:36, 7 февраля 2019 (UTC)

Вернуться на страницу «Statistical».