Top/PukiWiki/1.4/ちょっと便利に/convert_htmlの改造実験

convert_htmlの改造実験 by Cue

このトピックは、内容を検証をする気のあるチャレンジャー(冒険者)向けです

現在のconvert_html.phpで作られるオブジェクトツリーは、まず先に子要素側がどこにつながっても良いよう全ての要素を生成して、後から親要素側に必要な要素だけ取り出させる形になっています(不要で捨てられる要素も常に作られる)。
処理としては余分な事をしていますから、子要素側が親要素を見てから必要な要素を生成するように改造してみます。

加えて引用文の書式も少し見直してみたいと思います。

期待する効果

姉妹品の../make_link()の改造実験より効果は薄いです。呼出し回数がずっと少ないですから。

  • ページ生成速度の軽量化〈特にリスト構造が多い場合)
  • メモリ消費量を少しだけ減らす(溜め込む構造に変わりは無いので…*1

差し替えファイル

差分生成したら1,000行超えました…ので1.4.6用ファイルはこちらに./差し替えファイル

メッセージ

  • 複数行プラグインの処理がfile.phpと被っていたので修正。それとリスト構造周りで文字列のコピーを減らしてみました。 -- Cue 2006-03-23 (木) 18:45:47
  • Cueさん、それと0さんも、良くツボを付いた案をいただくのですが、できればそれがどう素晴らしいか(今までのどこがどう問題で、どうすべきで、その結果どうなるのか)の解説をお願いできませんか。後から足すのでも問題ないです。誰が見たって自明な形で、素早くポイントが示してあるのならば、そこを素早くざっくり盛り込んだり、それにツッコミを入れたりしたいのです。誰から見ても自明な不具合や無駄な部分であれば、例えば私以外にteananさんがナタを振るうでしょう。あるいは他の人がアレをどうにかしろ、と言うかもしれません。無関係そうな別の修正(でもそうした理由はわからない)が混ざっていたり、大きすぎるパッチは取り込む側からすると障害になってしまいます。気が付いた時で構いませんのでコンテンツを「育てる」事についてご一考をお願いします。 -- henoheno 2006-04-03 (月) 22:58:58
    • このページの内容は「ちょっと便利に」というよりかBugTrackかもです -- henoheno 2006-04-03 (月) 23:04:16
  • BugTrackに置かない理由ですが、PukiWikiの心臓部と言えるパーサの見直しですから一部分だけを取り出せるわけでもありませんし、かといってBugTrackに置いても仰るように大きすぎるパッチは取り扱いに困るだろうと考えたためです。私の環境では特に要素数で1,000を越えるような*2巨大なページで予想以上*3に速度が向上する変更なので眠らせるにも忍びなくここに置かせて頂きましたが、どんなに効果が高くても論理構造に欠陥が無いかを含めた検証(恐らくかなりの日数と手間を要すると思います)を経ないとコミットできないでしょう。あくまでチャレンジャーやもうちょっと軽く…といった人向けの改造ネタという意味で「ちょっと便利に」なのです。 -- Cue 2006-04-05 (水) 19:33:38
    • ただ、#contentsプラグインが無いページでも文字列を連結する直前まで要素が作られている事を抑制する部分のみや、下に示した引用文に関する問題については単独のパッチも可能だと思いますので、必要とお考えでしたらそのようにして頂ければと思います。 -- Cue 2006-04-05 (水) 19:38:39
    • それから『無関係そうな別の修正』についてですが、なにやら怪しげな変更が加えられているような語感ですが、どのような点なのかご明示願えませんか?バグでしたら早急に修正します。 -- Cue 2006-04-05 (水) 19:38:39
  • このページの先頭に警告を追加しました。 -- henoheno 2006-04-13 (木) 00:56:52
  • コメントありがとうございます :) コンテンツについては、要は「おいしそうに見えるように」まとめていただきたいのです。今回の場合「パーサで子要素が無駄に生成されるのを抑えるようにした」という紹介よりも「私の環境では巨大なページで期待以上に表示速度が落ちるので、パーサのコードを見たところこのような無駄があるのを見つけた。これをこう修正したところ予想以上に速度が向上した。眠らせるにも忍びないのでここに載せる。パッチのサイズは大きいけれど、ポイントはこことここ。その前提としてここをこう修正している」などと最初(ページの先頭)にあっったら、同じ困り方をしている人の気を引き易い(進展し易い)かと思われるのです。 -- henoheno 2006-04-13 (木) 01:00:03
  • BugTrackか他にすべきかなのですが、(1)もし本当に妥当であれば間違いなく本体に取り込むでしょうし、妥当でないなら却下しますので、その点でBugTrackがよろしいかと思います。(※結局BugTrack行きになるか、妥当でない情報として削除されるのであればいずれはここから無くなる) (2)この件は不確定な要素があるようで、それを「ちょっと便利に」に載せるのでは、ちょっと便利なネタを探した人も不安に思うでしょう。その点でもBugTrackがよいかと思います。 -- henoheno 2006-04-13 (木) 01:03:19

Undocumentedな整形ルール

表組み

  • 表組みは「他のブロック要素を子要素にすることができません」となっていますが、パイプ区切りの表組みのセルにブロックプラグインが入れられます。正しく表示されるかどうかはそのプラグインに依存するはずですが、そのままにしてあります。
    |#topicpath|

行末改行

  • 行末改行は次の行の行頭書式を無効にしていませんが、昔からのようですしこれもそのままにしてあります。

引用文

  • 引用文のレベルは他の引用文の子要素になるときだけ意味を持ちましたが、いきなりレベル2以上の引用文が現れてもそのまま反映されるようになっています。
    >>>レベル3の引用
    が現れた場合、下と同じ表示になります(前の2行が省略されているようなもの)
    >
    >>
    >>>レベル3の引用
    これによってレベルの大きい引用文の後にレベルの小さい引用文が現れても新たな引用文の開始にはなりません。
    >>レベル2の引用
    >レベル1の引用
    これは下と同じ表示になります
    >
    >>レベル2の引用
    >レベル1の引用
  • 引用文の脱出(<、<<、<<<)を書いても対応するレベルの引用に入っていない場合はレベル0の引用文開始(>)として扱われていましたが、対応するレベルが無ければ脱出とみなさないようにしてあります。
    >レベル1の引用
    <<レベル2からの脱出(?)
    は、下と同じ表示になります
    >レベル1の引用
    ><<レベル2からの脱出(?)

コメント



*1 この原因は#contentsプラグインのリスト生成がページ全体を読み終えないと完了できない事にあります
*2 テーブルは1セル1要素なので簡単に超えます
*3 詳しい原因は未だに不明です

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-03-07 (水) 01:06:43
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.38-0+deb8u1. HTML convert time: 0.331 sec.

OSDN