コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

Wikipedia:井戸端/subj/Template:ISOdate を大量に使うとテンプレートが展開されなくなる

Template:ISOdate を大量に使うとテンプレートが展開されなくなる

[編集]

国鉄205系電車の組成表の日付を{{ISOdate}}で書くと、特別:固定リンク/100991973特別:固定リンク/101000567のように、後ろの表で日付フォーマットがなされず、文字リテラルのまま残ります。そこでいくつかの{{ISOdate}}の値をテンプレート展開して表示は解決したのですが、その編集前の当該記事は、HTMLページ中に "Node-count limit exceeded" のエラーメッセージもなく、Category:テンプレート読み込みサイズが制限値を越えているページCategory:省略されたテンプレート引数を含むページCategory:高負荷な構文解析関数の呼び出しが多過ぎるページのいずれにもカテゴライズされませんでした。なお、過去に新型コロナウイルス感染症(COVID-19)の編集でWikipedia:井戸端/subj/非常に多くの出典を使用した際にテンプレートが読み込まれない現象についてと同一の事例を経験しており、国鉄205系電車の記事内で使用されている 系のテンプレートを出典表記形式1テンプレートにすべて置換した後でしたが、まったく効果がありませんでした。

そこで特別:固定リンク/101000567のHTMLソースの末尾を眺めて統計データを見ても、{{ISOdate}}の数を減らした特別:固定リンク/101000847の同一箇所を眺めても謎ばかり残ります。

参考までにそれぞれの版のHTML末尾にある統計データ部分を抽出しておきます。

<script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.eqiad.main-79cbf896bd-5b4vn",
"wgBackendResponseTime":278,
"wgPageParseReport":{
"limitreport":{
"cputime":"2.781",
"walltime":"3.205",
"ppvisitednodes":{
"value":155284,"limit":1000000},
"postexpandincludesize":{
"value":1307713,"limit":2097152},
"templateargumentsize":{"value":285681,"limit":2097152},
"expansiondepth":{"value":40,"limit":100},
"expensivefunctioncount":{"value":4,"limit":500},
"unstrip-depth":{"value":1,"limit":20},
"unstrip-size":{"value":355843,"limit":5000000},
"entityaccesscount":{"value":1,"limit":400},
"timingprofile":[
"100.00% 2488.142      1 -total",
" 50.74% 1262.580      9 Template:Reflist",
" 22.84%  568.281     76 Template:Cite_journal",
" 22.28%  554.470     77 Template:Cite_journal/和書",
" 13.15%  327.067     24 Template:Citation/core-ja-jp",
" 12.62%  313.940    158 Template:Citation/showdate",
"  9.29%  231.217    135 Template:ISOdate",
"  8.89%  221.265    196 Template:ISO_dateJA",
"  7.73%  192.278    158 Template:Citation/showdateCore",
"  7.49%  186.449     22 Template:Cite_news"]},
"scribunto":{
"limitreport-timeusage":{"value":"0.439","limit":"10.000"},
"limitreport-memusage":{"value":7893075,"limit":52428800}},
"cachereport":{"origin":"mw-web.eqiad.main-79cbf896bd-gcfqj","timestamp":"20240708052425","ttl":2592000,"transientcontent":false}}});});
</script>
<script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.eqiad.main-79cbf896bd-zn5s7",
"wgBackendResponseTime":235,
"wgPageParseReport":{"limitreport":{
"cputime":"2.506",
"walltime":"2.946",
"ppvisitednodes":{
"value":46916,"limit":1000000},
"postexpandincludesize":{
"value":851879,"limit":2097152},
"templateargumentsize":{
"value":83561,"limit":2097152},
"expansiondepth":{"value":40,"limit":100},
"expensivefunctioncount":{"value":4,"limit":500},
"unstrip-depth":{"value":1,"limit":20},
"unstrip-size":{"value":531486,"limit":5000000},
"entityaccesscount":{"value":1,"limit":400},
"timingprofile":[
"100.00% 2241.309      1 -total",
" 38.98%  873.714      6 Template:Reflist",
" 14.29%  320.199     49 Template:Cite_journal2",
" 11.46%  256.767    135 Template:ISOdate",
"  9.04%  202.623     39 Template:Navbox",
"  7.81%  174.946     36 Template:Cite_book2",
"  5.28%  118.393     22 Template:Cite_news2",
"  4.50%  100.825      8 Template:鉄道車両",
"  4.40%   98.553      1 Template:Commonscat",
"  4.30%   96.271      1 Template:Sister"]},
"scribunto":{
"limitreport-timeusage":{"value":"0.842","limit":"10.000"},
"limitreport-memusage":{"value":7640740,"limit":52428800}},
"cachereport":{"origin":"mw-web.eqiad.main-79cbf896bd-knlxc","timestamp":"20240708044513","ttl":2592000,"transientcontent":false}}});});
</script>
<script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.codfw.canary-689c456796-qqj44",
"wgBackendResponseTime":262,
"wgPageParseReport":{"limitreport":{
"cputime":"2.489",
"walltime":"2.811",
"ppvisitednodes":{
"value":42962,"limit":1000000},
"postexpandincludesize":{"value":837273,"limit":2097152},
"templateargumentsize":{
"value":74984,"limit":2097152},
"expansiondepth":{"value":40,"limit":100},
"expensivefunctioncount":{"value":3,"limit":500},
"unstrip-depth":{"value":1,"limit":20},
"unstrip-size":{"value":531730,"limit":5000000},
"entityaccesscount":{"value":1,"limit":400},
"timingprofile":[
"100.00% 2062.474      1 -total",
" 44.38%  915.360      6 Template:Reflist",
" 16.13%  332.684     49 Template:Cite_journal2",
" 10.05%  207.229     91 Template:ISOdate",
"  9.53%  196.625     36 Template:Cite_book2",
"  8.84%  182.425     39 Template:Navbox",
"  6.30%  129.920     22 Template:Cite_news2",
"  4.01%   82.799      8 Template:鉄道車両",
"  3.93%   81.047     13 Template:Cite_press_release2",
"  3.72%   76.701      8 Template:Infobox"]},
"scribunto":{
"limitreport-timeusage":{"value":"0.884","limit":"10.000"},
"limitreport-memusage":{"value":7641692,"limit":52428800}},
"cachereport":{"origin":"mw-web.codfw.main-6457fbf49b-g2mn7","timestamp":"20240708042018","ttl":2592000,"transientcontent":false}}});});
</script>

一体どうしたものでしょうか?--Licsak会話2024年7月8日 (月) 05:40 (UTC)[返信]

コメント エラーメッセージが出なかったりカテゴライズされなかったりする件は分かりませんが、同一ページ内でテンプレートを極端に多用すると問題が生じるのは時々見かけますね。本件に関しては、そもそも{{ISOdate}}を使用する必要があるのでしょうか?年月日を記載するだけならば直接記入で十分かと思いますが…。個人的にはそこで悩むより記事の充実に時間をかけた方が良いように思います(もちろん技術的に解明されるのであればそれに越したことはありませんが)。--Penn Station (talk) 2024年7月8日 (月) 09:21 (UTC)[返信]
ありがとうございます Category: の前のコロン挿入ありがとうございました。--Licsak会話2024年7月10日 (水) 14:16 (UTC)[返信]
返信 おっしゃることは誠にごもっともで、件の表においては差し替えもそうそうあるものではありませんし文字列リテラルのまま記載するのが最良の選択肢だと私も思いますし、Citation系のテンプレートの過去の実装例のように、無批判に「複数回使う」のはまずいでしょう。しかしながらウィキペディア自身のスタイルマニュアルとして統一された表記を推奨しているのにそれを手助けするテンプレートが使えない、ではまずいでしょうし、出典の提示の都度呼び出され、おそらく際限なく呼び出されるCitation系のテンプレートが本テンプレートを使わないよう書き直されたのであれば、その恩恵が{{ISOdate}}にもあって良いかな……、と思いまして井戸端の話題に挙げたまでです。なおわざわざこのテンプレートを用いてまで表を手直ししたかというと、書物の編成表を注釈ごとベタ打ちする方がいまして(ほぼ丸写し)、それはまずいんじゃないかと思って表を検証しつつ手直しの見本として使ったまでで、いつもならやらないことです。手直しする過程で注釈とタイトルとのミスマッチも見つかったわけで、書き手には丸写ししないようお願いしたいものです。--Licsak会話2024年7月10日 (水) 14:16 (UTC)[返信]
コメント 質問の中でリンクを貼られていた特別:固定リンク/100991973の版を見てみましたが、現象としては、WP:TLIMIT#制限内でやりくりするにはで紹介されている「エラー: #time の呼び出しが多すぎます」と似たようなことが起きているように思いました。このエラーが出ていた記事(特別:固定リンク/100527278)の脚注節を見ていただくと、エラーの前後で脚注内の日付の表記が変わっている(エラーの前では「yyyy年mm月dd日」、エラーの後では「yyyy-mm-dd」)のが見て取れるかと存じます。素人ながら{{ISOdate}}の中身を見てみるに、どうもtimeの呼び出し動作を多数行うような構造になっているようなので、今回の現象は、エラーメッセージこそ表示されていませんが「timeの呼び出しが多すぎる状態」になっているのかな、と推察いたしました。なお、特別:固定リンク/100991973内の{{ISOdate}}を使用している箇所を、似たような表示結果になる{{Dts}}に置換しプレビューしてみたところ、全ての日付が正常に表示されました。一応情報のひとつとしてコメントいたしましたが、もしも{{ISOdate}}を使うべきであるという事情やルール、ご意見などあるようでしたら申し訳ありません。--雪舟会話2024年7月11日 (木) 02:45 (UTC)[返信]
ありがとうございます 追跡・検証ありがとうございます。私も #time 書式フォーマット用文字列バッファが固定長で、それを使い果たすと暦日変換がストップする制限を後で読み、おそらくその問題か、分岐の数の制限のどちらかと思いました。ただエラーメッセージが出ないため確証は持てなかったのですが、同等の働きをするテンプレート{{Dts}}を使用した結果をもとに挙動を解説くださったことに、改めてお礼申し上げます。--Licsak会話2024年7月17日 (水) 07:38 (UTC)[返信]
コメント 別の方もコメントされているとおりこのケースではわざわざ{{ISOdate}}なんか使わず、「1986年8月5日」のように手打ちするのがベストなのですが、元の組成表での日付表記が世界的観点から非推奨の yyyy/m/d で書かれており、それを正す意図もありました。ただこの置換の実行時には #time のバッファ制限を知らず、機械的に使っていた次第でしたので(元の表記が縦に展開した表の記述方法であったため注釈を入れる箇所が分からなかったのと、一つの表を表示に近似させると他も直したくなったため)この件で初めて制限を知った次第です。編集方針の都合でどうしても鉄道車両の組成表(編成表)は出典の表の丸写しになりがちですが、略称や注釈を丸ごと無批判で載せるのは願い下げです。願わくは{{ISOdate}}もLuaスクリプトで書き直されると良いなと思いました。--Licsak会話2024年7月17日 (水) 07:38 (UTC)[返信]