Проект:Таксономия/Новый вариант таксонавигации/Архив/2

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Здесь находятся завершившиеся обсуждения. Просьба не вносить изменений.

Дубль 2

[править код]

Так как выше выяснили, что рекурссия в шаблонах не допускается, нужно делать это через цикл. Нормальных циклов тоже нету, поэтому реализуем старым дедовским способом - дублированием. Можете не "фукать" - это к разработчикам, которые не могут включить (точнее отключают) нормальные функции. Так к примеру сделана вся работа со стороками. Вот пример {{TaxRecursion}} на 5 уровня, надо доработать до 30 (естественно, заткнуть вывод при окончании иерархии - т.е. в примере ниже уровень 4✔ Сделано ). Пример вызова

{{TaxRecursion|Ceruchus2}}

{{TaxRecursion|Ceruchus2}}

в таксо-шаблонах конструкция меняется на

{{TaxInfo|mode={{{1|}}}|parent=Syndesinae2|rang=Род|latin=Ceruchus2|name=Рогачики}}

являясь по сути строкой получения параметров (см. {{TaxInfo}}) - её надо воспринимать ни как функцию, а как структуру или класс из ООП, чего в вики так не хватает для нормального программирования.

не ленитесь подробно просмотреть работу этого комплекса шаблонов и тогда обсуждаем ... S.J. 13:45, 13 июня 2010 (UTC)[ответить]

  • При этом роль шаблонов становится более чем логичной и задачи их не смешены. На текущие названия не смотрите. Названия привел в порядок. По сути тогда TaxString - форматирование одной строки в иерархии, TaxRecursion - вывод всей иерархии, TaxInfo - получение нужных параметров о таксоне, заметим, что таким образом их можно использовать в любом контексте, большее не перестраивая таксо-шаблоны, при необходимости новых функций. S.J. 13:52, 13 июня 2010 (UTC)[ответить]
  • Про оптимальность - если кому то покажется код не оптимальным - помните, это он только выглядит так, а для машины он будет работать оптимально. Т.е. если сравнивать с текущей реализацией - она менее оптимальна, т.к. псевдо - рекурсия все равно раскручивает таксо-шаблоны - в итоге обрабатывая больше кода чем при предлагаемом варианте. Ну, и как говорилось выше настоящая рекурсия, при которой мог бы быть элегантный (не путать с оптимальный) код - невозможна. S.J. 14:00, 13 июня 2010 (UTC)[ответить]
  • Я уже не говорю о том, что убираются явно лишние шаблоны {{Lastrang}}, {{Taxpath+}}, {{Rang}}, а {{RangExt}} серьезно упрощается. S.J. 14:04, 13 июня 2010 (UTC)[ответить]
  • Если чего-то сразу не очевидно - я поясню, или до реализую - поясню. S.J. 14:10, 13 июня 2010 (UTC)[ответить]
    • Я посмотрю и обдумаю. Отвечу завтра. --Chan 14:14, 13 июня 2010 (UTC) А документировать эти шаблоны можно? --Chan 14:21, 13 июня 2010 (UTC)[ответить]
      • Ок, я уехал на шашлыки :) .. прошу давайте спокойнее, мы вместе друг друга хорошо дополняем и не стоит повышать градус обсуждений :) (тем более по таким мелочам ... стиль работу у нас разный - и это надо воспринимать как данность .. )S.J. 14:30, 13 июня 2010 (UTC)[ответить]
      • Документация после реализации :) там только принципиальная схема, если не уловите - буду пояснять ... S.J. 18:30, 13 июня 2010 (UTC)[ответить]
      • Ну, вот немного доработал - убирает уровни, которых нет. А также упростил, убрал использование {{For}} S.J. 19:57, 13 июня 2010 (UTC)[ответить]

Теперь по существу.

Анализ

[править код]

Вышло затейливо, но работать должно.

Мелкие вопросы

[править код]
  1. Зачем в TaxString используется RangExt? Зачем нам сравнивать имена страниц? Это рудимент?
    Да S.J. 06:56, 14 июня 2010 (UTC)[ответить]
    Заменил RangExt на Rang.--Chan 11:41, 14 июня 2010 (UTC)[ответить]
  2. Почему level только в двух первых обращениях к TaxString? Не дописано?
    Это по желанию - вроде как не обязательно для других Да, нужно для всех - мало ли как потом будет использоваться. S.J. 06:56, 14 июня 2010 (UTC)[ответить]
  3. Сейчас в таксошаблонах есть параметр-ключ для монотипных рангов «m» и «aut» для них. Как это должно реализовываться в новом варианте?
    Расскажите подробнее как это работает ? Ведь в самом шаблоне вроде нет ни какой информации о «m» и «aut» ? Дайте примеры .. Или все же есть ? Я наверное просто не видел таких примеров .. S.J. 07:43, 14 июня 2010 (UTC)[ответить]
    Видели. Род Аир (растение) входит в монотипное семейство Аирные. --Chan 08:37, 14 июня 2010 (UTC)[ответить]
    Расширил {{TaxInfo}}, соответственно нужно прописать в {{TaxRecursion}} S.J. 09:30, 14 июня 2010 (UTC)[ответить]
  4. Какую максимальную длину иерархии Вы знаете ? S.J. 09:15, 14 июня 2010 (UTC)[ответить]
    На этот вопрос ответ надо формулировать в обсуждении Проект:Таксономия/Значения параметра rang. Теоретически даже страшно подумать до чего может дойти пытливый ум Систематика:)) Это тот случай когда стремление к совершенству стоит ограничить. --Chan 11:39, 14 июня 2010 (UTC)[ответить]
    Похоже 30 мало ... если с запасом - нужно 50 уровней. S.J. 15:38, 14 июня 2010 (UTC)[ответить]

Вопросы сложнее

[править код]
  1. Как найти первый неосновной ранг?
    Функция {{FirstRang}} - выдает номер в иерархии первого промежуточного ранга, при сравнении с параметром level получаем результат. S.J. 09:05, 14 июня 2010 (UTC)[ответить]
  2. Как определить, есть ли в иерархии неосновные ранги?
    Желание понятное - думаю решаемо .. подумаю .. S.J. 07:00, 14 июня 2010 (UTC)[ответить]
    Будет функция по сути аналогичная Это же делает {{FirstRang}}. Жаль что негде подсохранить промежуточные результаты - можно бы оптимальнее сделать ... ну, что поделаешь .. S.J. 09:14, 14 июня 2010 (UTC)[ответить]
    Уточню цель вопроса. Надо определять не наличие промежуточных рангов в иерархии вообще, а наличие скрываемых, для принятия решения о демонстрации кнопочки свёртывания.--Chan 22:01, 14 июня 2010 (UTC)[ответить]

Вопросы из любопытства

[править код]
  1. Как обстоят дела с вычислительной нагрузкой?
    Если Вам нужен не лирический ответ, то Вы знаете как это измерить ? (лирический давал выше - думаю разница не принципиальная) S.J. 09:17, 14 июня 2010 (UTC)[ответить]

Продолжение следует... --Chan 05:59, 14 июня 2010 (UTC)[ответить]

Проверка и отладка

[править код]

Предлагаю создать тестовую иерархию „мифических“ таксонов. Разместить её в подкатегорию Таксономия (тестовые) в Категория:Шаблоны:Таксономия. И на ней упражняться. Если не возражаете, я сформирую. --Chan 07:17, 14 июня 2010 (UTC)[ответить]

Да, конечно .. будет неплохо для разных тестов .. S.J. 07:33, 14 июня 2010 (UTC)[ответить]


Ограничение количества уровней

[править код]
  • Проблемка - снова ограничение максимальный уровень вложенности шаблонов позволяет отразить не более 10 уровней ... ушел думать .. S.J. 21:20, 14 июня 2010 (UTC)[ответить]
  • Во-общем с разными доработками - без проблем 20 уровней, если еще поработать ну можно догнать до 25 максимум 30. Если больше то без вариантов нужно вводит параметр связывающий через 20 уровней, например, скажем для видов нужно непосредственно указать не только parent, но и скажем Класс (если между Классом и Видом 20 уровней) ... Ну или такого не бывает в реальности и 20-25 уровней хватит ? S.J. 00:52, 15 июня 2010 (UTC)[ответить]
    • На мой взгляд, 25-30 уровней должно хватить. Сейчас в рогачиках от вида до царства 20 рангов, это наверное таксон с самой развёрнутой классификацией. Только надо точно определиться с допустимым количеством, чтобы дать в документацию чёткие ориентиры. Но вообще, как я говорил ранее #Мелкие вопросы это вопрос консенсуса, но не хотелось бы в том обсуждении затрагивать технические ограничения шаблона, публику это напрягает. Кстати, сейчас примеры см.↑ дают не все ранги.--Chan 01:17, 15 июня 2010 (UTC)[ответить]


  • Посмотрел связку шаблонов TaxRecursion-TaxSubRecursion-Recursion20. Кстати, в последнем прописано 30 уровней. Если в TaxRecursion дописать до 30 всё будет работать? Где ограничение? В чёмоно? --Chan 05:37, 15 июня 2010 (UTC)[ответить]
    Да ограничение 23, убедился сам. Второй вопрос, насколько это ограничение стабильно держится на этом значении. От чего это зависит? Не окажется ли оно через неделю 29, а через две — 12.? Если число 23 стабильно, то это можно будет постулировать в документации. Полагаю, такое ограничение не самое драконовское, любую разумную биологическую классификацию возможно обозначить таким количеством иерархических уровней. --Chan 06:00, 15 июня 2010 (UTC)[ответить]
    Максимально допустимый уровень вложенности шаблонов установлен в 40 ! Скажем если вызвать {{Recursion20|30|Хех}} - работает 30+2 уровней, можно даже до 35+2 расширить. Но тогда нету свободы вложения у других шаблонов - уже все заняты. Можно оптимизировать {{TaxRecursion}} который использует порядка 10 уровней вложенности, но разгрузить его не так просто ... S.J. 11:01, 15 июня 2010 (UTC)[ответить]
  • Некоторые соображения:
  1. Стоит ли первый (самый нижний ранг) выводить вместе со всей „колбасой“? Формат первого ранга, это особый случай, и выводить первый ранг можно иным путём. Это разгрузит {{TaxString}} от лишних проверок.
    Да, конечно. S.J. 13:39, 15 июня 2010 (UTC)[ответить]
  2. Если TaxRecursion может расширяться до необходимых размеров, то в возможность многократного вызова TaxRecursion я бы заложил не „пожарную“ а функциональную логику.
  3. Первый вызов (необязательный для таксонов ниже царства) обеспечивает отображение рангов выше царства. Эти ранги интересны далеко не во всех случаях и должны выводиться избирательно.
  4. ВторойПервый вызов (обязательный для всех таксонов ниже царства) обеспечивает отображение от инфравидовых рангов (надо уточнить каких) до царств.
  5. ТретийПоследующие для нижележащих группировок, которые таксонами не являются. Я сомневаюсь в нужности третьего блока, но для резерва пусть будет предусмотрен. Ещё его можно использовать для отображения альтернативных классификаций, если такие понадобятся.
    Теоретически, дополнительно можно предусмотреть индивидуальные стили для отображения каждого блока, но это уже «оформительство»©:)--Chan 05:37, 15 июня 2010 (UTC)[ответить]
  • Теперь понял. Однозначно, таксоны выше царств надо демонстрировать в отдельном верхнем блоке, который присутствует всегда и свёрнут по умолчанию. Запускается верхний блок от значения параметра regnum, который обязательно указывается в шаблоне Таксон, и который пока используется только для выбора цвета карточки и некоторых незначительных проверок.
    Если карточка организма будет использоваться в статьях о ранге выше царства этот блок можно принудительно разворачивать, он недлинный. Применение отдельного надцарственного блока снизит требования к общему количеству уровней и „дышать“ станет легче.--Chan 07:17, 15 июня 2010 (UTC)[ответить]
    • таксоны выше царств - это какие ? Надцарство и царство ? Ок +2 уровня. S.J. 13:37, 15 июня 2010 (UTC)[ответить]
      • Ну, да. Мелко получилось:), но с точки зрения полноты картины...


Давайте выносить на широкое обсуждение

[править код]
Здесь находятся завершившиеся обсуждения. Просьба не вносить изменений.
  • Вроде как можно выносить на широкое обсуждение ? Число уровней сравнительно легко добавить при наличии "зеленого света". S.J. 16:17, 14 июня 2010 (UTC)[ответить]
    • На широкое обсуждение выносить рано. Зачем грузить людей полуфабрикатом. Большинство участников будут в замешательстве. Им что оценивать? Идею или код? Подавляющему большинству не интересно ни то и не другое. Полагаю, на обсуждение стоит выносить нечто пригодное к использованию. --Chan 21:32, 14 июня 2010 (UTC)[ответить]
      • :) В таком случае - если все получится (а проблема только в количестве уровней - но боюсь это очень серьезно) - то тут вообще нечего обсуждать - т.к. никто не увидит разницы, за исключением исправленных ошибок ... S.J. 21:43, 14 июня 2010 (UTC)[ответить]

Начало внедрения

[править код]
Здесь находятся завершившиеся обсуждения. Просьба не вносить изменений.

Думаю скоро можно попробовать внедрить на реальной ветви таксонов, изменив в ручную формат нужных таксо-шаблонов и в 2-5 статьях применив {{Таксон3}} .. надо бы выбрать ту которая не затронет много шаблонов. Так будет легче оттестировать оформление и всякие мелочи. Цель пока восстановить лишь ту функциональность которая была, в это фазе теста важна не глубина, а то не потеряли ли что-нибудь при оптимизации под уровни (в частности текст2 упрощен максимально - и нужно понять было ли там что-то критичное или нет, переписав более оптимально без if-ов) S.J. 17:02, 15 июня 2010 (UTC)[ответить]

Критичного в if-ах не было ничего. Просто подстелил „солому“ для отработки неверно заданных параметров. Год назад это была новая концепция. Я опасался, что она может оказаться сложной для применения и обеспечил максимально возможное количество нештатных вызовов шаблона сопроводительными сообщениями. Возможно, это себя оправдало. --Chan 21:57, 15 июня 2010 (UTC)[ответить]
К сожалению, каждый if (и последующие вложенные) - будет стоить нам одного уровня - прейдется выбирать и подумать как упростить, и нужны ли вообще сообщения в новом варианте. S.J. 22:06, 15 июня 2010 (UTC)[ответить]
Думаю без сервисных сообщений можно обойтись. --Chan 22:23, 15 июня 2010 (UTC)[ответить]

План внедрения

[править код]

В таксо-шаблонах конструкция меняется на

{{TaxInfo|mode={{{1|}}}|parent=Syndesinae|rang=Род|latin=Ceruchus|name=Рогачики}}

примеры в {{Ceruchus}}, {{Ceruchus lignarius}}, {{Ceruchus chrysomelinus}}

  1. В шаблон {{Таксон}} в текст2 - ставим сообщение: "Классификация временно отключена - идет реконструкция. Это может занять несколько дней." ✔ Сделано
  2. Ботом проходим по таксо-шаблонам, и заменяем формат с текущего на использование {{TaxInfo}} ✔ Сделано
  3. Шаблон {{Таксон}} переводим на использование {{Таксо-карточка}} ✔ Сделано
  4. Подключаем классификацию в текст2 ✔ Сделано
  5. Исправляем косяки
  6. Празднуем :) S.J. 20:24, 15 июня 2010 (UTC)[ответить]
План реалистичный. Предлагаю добавить:
В план пункт 0. «Информирование на СО ВП:П:Такс». Общественное мнение лучше знать и готовить заранее. Пока информация о предстоящих переменах будет висеть на СО (1-2 дня), а может даже обсуждаться, провести дополнительные возможные проверки в песочнице.
Для отлова косяков в будущем надо составить таблицу старого состава комплекса шаблонов, обеспечивающих работу Таксона, и нового. По возможности указать преемственность подшаблонов.
Хотелось бы максимально полно документировать новые шаблоны.
Пока всё. --Chan 22:23, 15 июня 2010 (UTC)[ответить]


Список шаблонов (будет таблица), используемых для обеспечения работы новой редакции шаблона.

Новые
Старые

Несущественную мелочь пока опустил. Значимые все?--Chan 22:51, 15 июня 2010 (UTC)[ответить]

Дорогие коллеги! Огромная просьба! Не до конца отлаженные конструкции не вставляйте в "живые" шаблоны. То, что вы воткнули в Рогачики пока не работает. Есть цепочка химер и прочей мифологии - тренируйтесь, пожалуйста, на ней. И второе. посмотрите Мёртвая голова (бабочка). У меня такое впечатление, что непустой parent снова отсох. Заранее благодарен. И ещё: Для видов тоже придётся создавать таксо-шаблон? Это не годится - количество работы возрастёт на порядок! --Arachn0 обс 05:46, 16 июня 2010 (UTC)[ответить]

Извините за беспокойство, мы постараемся больше не тревожить ваши статьи. Статью про бабочку посмотрю. Убедительно прошу вас не вносить такие правки в шаблон Rang. По поводу таксошаблонов для видов ни кто ни какого решения не принимал. Останутся оба параметра latin и parent, ими можно будет пользоваться как прежде. Создавать, или не создавать таксошаблон для видов остаётся на усмотрение авторов статей. Если не возражаете, я перенесу часть ваших вопросов и мои ответы на страницу обсуждения проекта, они могут оказаться интересными и для других участников. Там же вы можете задать любые вопросы относительно предстоящих преобразований, я постараюсь на них ответить. --Chan 06:44, 16 июня 2010 (UTC)[ответить]
Да-да, конечно. Шаблон Rang - это я так коряво пытался устранить проблему с раскраской вида. Пардон! А с бабочкой - там что-то с анализатором названия страницы. У меня в песочнице абсолютно такой же шаблон работает ОК--Arachn0 обс 06:50, 16 июня 2010 (UTC)[ответить]
Перенесено на страницу Обсуждение:Мёртвая голова (бабочка).
  • Есть мнение, что это вызвано повышенной нагрузкой на сервере, или какими-то идущими разработками, что опять же повысило нагрузку. Т.к. новая версия шаблона работает на приделе ограничений - их наличие вызвало ошибки в работе все страницы. Думаю это временное явление. S.J. 10:43, 16 июня 2010 (UTC)[ответить]
  • Все разобрались. Зря мы на сервер и на сам шаблон грешили, просто правка вроде этой [1] и приводит к весьма не приятным последствиям (провоцирует рекурсию которую нельзя выполнить). Вот как бывает :) S.J. 11:31, 16 июня 2010 (UTC)[ответить]
  • Подождите в течении этой недели, мы переведем ботом все шаблоны в новый формат, сейчас они просто не совместимы (точнее для их совместимости нужно одну иерархию указывать через latin (с новым вариантом), и через parent (старую) - причем это временное решение ). S.J. 11:42, 16 июня 2010 (UTC)[ответить]
    • Совсем не понятно что значит для их совместимости нужно одну иерархию указывать через latin (с новым вариантом), и через parent (старую). Подскажите как вы собираетесь разворачивать новую иерархию и сохранить старую. Предполагаете разворачивать новую иерархию в пространстве модифицированных имён?--Chan 15:57, 16 июня 2010 (UTC)[ответить]
    • Сегодняшний инцидент пугает. Если он не связан на прямую с новыми шаблонами и сервером и вы уверенны, что причиной всему были указанные вами злополучные правки, то какие меры можно предусмотреть для исключения такого развития событий при случайной ошибке, или хотя бы минимизации негативных последствий?--Chan 15:57, 16 июня 2010 (UTC)[ответить]
    • Уверенность в готовности проекта к широкомасштабному внедрению подорвана. Было бы неприятно увидеть как упадёт около 1000 статей из-за нелепой случайности. --Chan 15:57, 16 июня 2010 (UTC)[ответить]
      • как вы собираетесь разворачивать новую иерархию и сохранить старую - это уже сейчас так в этих трех злополучных рогачиках. В конечном варианте этого не будет.
      • причиной всему были указанные вами злополучные правки - да.
      • меры можно предусмотреть для исключения такого развития событий при случайной ошибке - наконец изменить формат, чтобы люди перестали путаться, конечно в качестве параметров можно засунуть что угодно и тут ничего не сделаешь ... представьте если в текущем варианте написать
<includeonly>{{От балды}}{{Taxpath|rang=Подсемейство|parent=Lucanidae|latin= Syndesinae|name=}}</includeonly>

где От балды окажется иерархией в классификации скажем автомашин, устроенной совершенно по другому принципу, но также используя вложенные вызовы событий. Вот это и получилось. S.J. 17:16, 16 июня 2010 (UTC)[ответить]

    • Было бы неприятно увидеть как упадёт около 1000 статей могу лишь посоветовать меньше нервничать, не подымать панику на голом месте, относится ко всему спокойно - ничего не поправимого НЕТУ. Ну, а в аналогичном случае прежде чем перекручивать (откатывать, видоизменять) тонкие тесты - хорошо бы советоваться с их авторами. Я понимаю, что это случайность и были благие намерения, но такие действия, а не разработка доп. усовершенствований - подрывает Уверенность в готовности проекта. Поэтому давайте так - ничего страшного не произошло, мы узнали некоторые проблемы и впредь будем умнее (это относится не только ко мне). И ничего проблемного тут я не вижу. S.J. 17:16, 16 июня 2010 (UTC)[ответить]
Доброе утро! Поглядел на работу изменённых шаблонов - настроение улучшилось. Коллеги, вы - молодцы, спасибо! Как всегда, одно НО: категории для таксо-шаблонов красные, надо выстроить их иерархию. Вопрос ещё не решён? Работа для бота? --Arachn0 обс 06:32, 17 июня 2010 (UTC)[ответить]
Ловим некоторые баги, вопрос с категориями еще не решен ... обсудим позже .. S.J. 09:46, 17 июня 2010 (UTC)[ответить]

Ура! Мёртвая голова (бабочка) работает корректно! --Arachn0 обс 10:09, 17 июня 2010 (UTC)[ответить]