*AutoAlias機能追加 [#h829c3c4] -ページ: [[BugTrack2]] -投稿者: [[Wances]] -優先順位: 普通 -状態: CVS待ち -カテゴリー: 本体新機能 -投稿日: 2005-02-09 (水) 22:43:25 -バージョン: **メッセージ [#sba589c6] 「[[org:続・質問箱/510]]」でAutoAlias機能に追加(パッチ)していただいているのですが、本体への取り込みをご検討いただけないでしょうか。 ---- -関連: [[BugTrack2/3]] :) -- [[henoheno]] &new{2005-02-09 (水) 23:13:08}; -実際のところとしては、他の(従来の)用途に弊害がないかどうかとか、既存のほかの部分に似たコードがあるのにまとめられていないかどうかとか、これを機会に元の機能を改修すべきかどうかなども検討することになるでしょうね。また、他にも試す冒険者が出てきて、使用感や良し悪しについて語り合ってみたりするようになると前向きに話が進むと思います。 -- [[henoheno]] &new{2005-02-09 (水) 23:16:09}; -- ちなみに実例であるところのWancesさんのPukiWikiは公開された所にありますか? -- [[henoheno]] &new{2005-02-09 (水) 23:18:14}; --[[うちのサイト>teanan:自作プラグイン/autoalias.diff]]でもパッチをあててあります。 :) -- [[teanan]] &new{2005-02-09 (水) 23:30:43}; --私のPukiWikiサイトは恥ずかしながら[[こちら:http://naotan.ddo.jp/]]です。機能的に満足しています。重いということを感じたことはありません。まだ登録単語数が少ないからかもしれませんが。 -- [[Wances]] &new{2005-02-10 (木) 07:03:33}; -難点としては、かな~り負荷がかかるということでしょうか・・・ (^^; -- [[teanan]] &new{2005-02-09 (水) 23:32:07}; -- パッチを当てると、いつ~も重くなっちゃうんですか? -- [[henoheno]] &new{2005-02-09 (水) 23:57:49}; --マッチする単語が増えると重くなります。AutoLinkと同じように単語を探していますが、エイリアスに置換する際AutoAliasNameのページをget_sourceで読み、1行ごと比較しています。この辺を改善すると良いんですけど・・・ -- [[teanan]] &new{2005-02-10 (木) 02:17:59}; --ということで、少し改善してみました。さくっと半分くらいの時間になりました (^^; [[teanan:自作プラグイン/autoalias.diff]] -- [[teanan]] &new{2005-02-12 (土) 03:50:03}; -お疲れ様です。もう取り組まれているかもしれませんが、AutoAliasの形式はInterWikiの形式に沿っているようですから、InteriWikiのロードに使われている関数を抽象化するようなアクションが要るかも、といったコメントをするつもりでした。まる -- [[henoheno]] &new{2005-02-12 (土) 10:21:50}; -とりあえず、これに手をつけたいと思っています((言い出しっぺの法則))。パッチと異なるのは、AutoAlias機能だけをoffにできるよう、pukiwiki.ini.phpに変数を追加すべきかなと。今のAutoLinkを有効にしたら自動的に有効になる、っていうのはちょっと強引なのかなと思っていたりします。 -- [[teanan]] &new{2005-03-07 (月) 01:57:48}; --AutoAliasだけを''ON''にできるようにしてもいいのですが、ちょっと改造範囲が大きくなりそうで怖いので・・・ (^^; -- [[teanan]] &new{2005-03-07 (月) 01:59:14}; --あと、AutoAliasNameを読むところが2ヶ所にあるので、それを統一しないといけませんね。 -- [[teanan]] &new{2005-03-07 (月) 02:02:37}; --[[BugTrack/605]]も一緒に片付くかな。 -- [[teanan]] &new{2005-03-07 (月) 02:04:36}; -お疲れ様です。何ならブランチを切って、そっちに一段落した現段階のものをコミットしちゃって、後はあれこれ練りながら(修正を続けながら)作業するというのはどうでしょう :) そうすると他の人もそれを自由に眺めたり、自由に取り出して試すことができます。PukiWiki Plus! に最終成果をマージする時にも違いがわかりやすくて幸せかもしれない-- [[henoheno]] &new{2005-03-18 (金) 23:34:48}; --なるほど。ただ、ブランチは特に勇気を必要とする操作ですね (^^; 本題とは外れてしまって申し訳ないのですが、こういう場合どのようにブランチしたらいいのでしょうか? ((該当ファイルのみではなく全体に? ブランチの名称は? branch_r1_4_5_1_autoalias みたいな感じでしょうか?)) -- [[teanan]] &new{2005-03-19 (土) 03:27:15}; -- [[osdev-j:CVS/HOWTO]]の最後にある「 CVSユーザーの良い習慣とは((なんだか仰々しいタイトルだ))」の項にまとめてありますが、タグに対してブランチを切る様にすることと、後々混乱せず/他とぶつからないタグ名およびブランチ名を使用する事さえ守っておけばそんなに大したことではありません。 -- [[henoheno]] &new{2005-03-19 (土) 11:39:47}; -- リリースタグ(r1_4_4とか)を作業の基準にする時はブランチポイントタグを打つ必要はありませんが、今回の場合CVS版で作業されているのでしょうから、まずpukiwiki_2005-03-19_autoalias といったタグを打ち、このタグから branch_pukiwiki_2005-03-19_autoalias といったブランチを切る様にすればOKです。 -- [[henoheno]] &new{2005-03-19 (土) 11:44:16}; -- お手元の作業環境が一部CVS上の最新ではなく、それを維持したい場合、その作業環境でtagを切れば問題ありません。CVSはお手元のファイル(正確にはCVS/Entries)に記録されているリビジョンにタグを打ってくれます。 -- [[henoheno]] &new{2005-03-19 (土) 11:45:41}; -- 具体的な動作確認については、[[cvs:../sandobx]] でいくつかブランチを切って見るとよろしいかと思います。 -- [[henoheno]] &new{2005-03-19 (土) 11:47:09}; -- 作業が一段落した時は、(私ならそのブランチの末端にさらにタグを打ち) trunkをチェックアウトして、「cvs up -j ブランチポイントタグ -j 最終成果その1のタグ」のように実行してブランチの差分をtrunkに自動マージさせます(コンフリクトは別途解消のこと)。 -- [[henoheno]] &new{2005-03-19 (土) 11:49:00}; --- 仮にそのブランチの作業が延長したときは、それが一段落した時点で改めてブランチの末端にタグを打ち、trunkに対して「cvs up -j 最終成果その1 -j 最終成果その2」のように実行してふたたび差分をtrunkに自動マージさせます。 -- [[henoheno]] &new{2005-03-19 (土) 11:50:26}; -- ブランチポイントタグは明確に用意しておかないと、マージのときに明確な差分を作ることができなくなるため、はまります(余計な手作業が発生します)。特に多数のファイルを抱えるリポジトリの場合、死ねます。 -- [[henoheno]] &new{2005-03-19 (土) 11:51:42}; -- ちなみに、この手のブランチ操作はPukiWikiだとPHP5対応の時に既に行われています。 -- [[henoheno]] &new{2005-03-19 (土) 12:00:37}; -毎度お手数をおかけ致します。ありがとうございました。 -- [[teanan]] &new{2005-03-19 (土) 12:25:47}; -ブランチ branch_pukiwiki_2005-03-19_autoalias にてコミットしました。興味のある方、よろしくお願いいたします :) -- [[teanan]] &new{2005-03-20 (日) 02:57:12}; #comment ** ブランチ branch_pukiwiki_2005-03-19_autoalias について [#s611183d] - [[開発日記/2005-03-19]] -- [[teanan]] &new{2005-03-20 (日) 03:23:44}; -- [[cvs:pukiwiki.ini.php]] (1.114.2.1) -- [[cvs:cache/autoalias.dat]] (1.1.2.1) -- [[cvs:lib/file.php]] (1.13.2.1) -- [[cvs:lib/func.php]] (1.33.2.1) -- [[cvs:lib/make_link.php]] (1.17.2.1) -- [[cvs:wiki/4175746F416C6961734E616D65.txt]] (1.1.2.1) (AutoAliasName) ***設定(pukiwiki.ini.php) [#t05a49b1] |LEFT:|LEFT:|LEFT:|c |~設定変数|~説明|~初期値|h |~$aliaspage|エイリアス定義ページ名|'AutoAliasName'| |~$autoalias|置換する単語の最小バイト数(0で無効)|8| |~$autoalias_max_words|置換する最大単語数|50| ***置換条件 [#nd5c435d] - AutoAliasNameに記述されたエイリアスで、''$autoalias'' に設定された長さ以上の単語が置換対象になります(0でAutoAlias無効)。 - ''$nowikiname=1''の場合、AutoAliasNameに書かれたWikiNameなエイリアスは、''$autoalias''の設定に依存せず、全てが置換対象になります((関連: BugTrack2/43))。 ''$nowikiname=0''の時、WikiNameはAutoAliasの対象ではありません。 - AutoAliasとAutoLinkの単語が重なった場合、AutoAliasを優先します((AutoAliasは意図的に追加するものなので。))。 - BracketNameは置換されません。 - AutoAliasの置換単語数には上限($autoalias_max_words)を設けてあります。AutoAliasNameが荒らされたときの対策です(凍結しておいたほうが良いかも)。 *** その他 [#w0870648] - AutoAliasNameを編集すると、cache/autoalias.dat を更新します。 - cache/autoalias.dat が存在しない場合、AutoAlias機能は働きません。 - AutoAliasNameに一つもエイリアス定義が無い場合、cache/autoalias.datは消去されます。 *** コメント [#z63351d2] -現状の実装仕様を簡単にまとめておきました。 -- [[teanan]] &new{2005-03-20 (日) 03:49:16}; -いよいよ動き始めましたね :) ちょっとだけコメント。単語の長さはできれば $autolink の値を使用しない($autoalias_enable に $autolinkと同じような変数 0:無効 >0:長さ)ほうがいいのでは? -- [[みこ]] &new{2005-03-20 (日) 10:44:11}; -あと、これは個人的なお話かもしれませんが、$autoalias_max → $autoalias_maxword もしくは $autoalias_limitword (もしくはその短縮形)になおしたほうがいいかと・・・(maxはあまりにも汎用的で何の設定(?_?)とおもってしまったので (^^; ) -- [[みこ]] &new{2005-03-20 (日) 10:47:27}; -ツッコミありがとうございます。ご提案の方向で検討したいと思います。 :) -- [[teanan]] &new{2005-03-20 (日) 12:02:50}; -AutoLinkとAutoAliasの機能を切り離し、$autoalias_min_len(旧名$autoalias_enable)以上の単語がリンクに置換されるようにしました。[[みこ]]さんのご提案通り、$autoalias_max → $autoalias_maxword への名称変更も対応済みです。 -- [[teanan]] &new{2005-03-20 (日) 19:37:54}; --とりあえずAutoLinkと切り離しましたので、AutoAliasのみを有効に設定できるようになりました :) -- [[teanan]] &new{2005-03-20 (日) 19:39:04}; -お疲れ様です。機能もそうですが、名称に関しても、この際いろいろ練り直して良いと思います。AutoAliasという名前自体、実現した効果をふまえた、もっとふさわしい名前があるかもしれませんよ :) さて $autoalias という変数にページ名を入れる案は、おそらく pukiwiki.ini.php における $interwiki などから由来していると思われるのですが、追加機能の設定名としては 同 $trackback, $referer, $autolink のように、機能の名称そのものの変数名で on/off できるとシンプルになるような気がします。その場合 -- [[henoheno]] &new{2005-03-20 (日) 20:25:15}; -- ''$autoaliasname'' / ''$autoaliaspage''-- 'AutoAliasName' のページ名 -- ''$autoalias'' -- AutoAliasで置換する単語の最小バイト数(0で無効) -- ''$autoalias_max_words'' -- AutoAlias機能で置換する最大単語数 -なんて感じは如何でしょうか。仮に AutoAlias が AutoLink に依存する機能であった場合、設定用の変数名はまた違った形になると思います。 -- [[henoheno]] &new{2005-03-20 (日) 20:25:59}; --$autoaliasの使い方はお察しの通り$interwikiからきています。私もその辺が引っかかってたんですよね・・・。[[henoheno]]さんのご提案の方がすっきりしそうですので、変えちゃいましょう。 :) ((ポリシーが無いって言われそうな気がしますが・・ (^^;)) -- [[teanan]] &new{2005-03-20 (日) 22:26:59}; -- より良い結果を得るために、過程を楽しみませう :) -- [[henoheno]] &new{2005-03-20 (日) 22:37:50}; -$autoalias→$aliaspage、 $autoalias_min_len→$autoaliasへ変更しました。エイリアス定義ページ名は他のページ名の定義と比較して少し長めでしたので $aliaspage としてあります。 -- [[teanan]] &new{2005-03-22 (火) 03:05:09}; --あと引っかかってるのは、AutoAliasNameというページ名なのですが、いかがでしょうか? まぁ、ページ名は変えられるのでどうでもいい、と言われてしまえばそれまでなのですが・・・ (^^; -- [[teanan]] &new{2005-03-22 (火) 03:08:49}; #comment