#author("2021-12-11T01:24:09+09:00","","")
#author("2021-12-11T01:24:26+09:00","","")
*AutoAlias機能追加 [#h829c3c4]

-ページ: [[BugTrack]]
-投稿者: [[Wances]]
-優先順位: 普通
-状態: 完了
-カテゴリー: 本体新機能
-投稿日: 2005-02-09 (水) 22:43:25
-バージョン: 1.4.4
-リリース予定バージョン: 1.5.3

#contents

** 関連 [#w2af677d]
- [[official:続・質問箱/510]] 特定の単語で外部サイトへ自動リンクしたい
- [[BugTrack/193]]: AutoLink

** AutoAliasとは [#n5952c57]

「指定した単語」に対し、指定した「URI、ページ、またはInterWiki」に対するリンクを自動的に張る機能です。

現在の実装では:
- この機能は AutoLink と似ていますが、''AutoLinkが無効の時でも動作します。''
-- 機能の有効/無効は管理者が設定できます。''デフォルトは無効です。''有効にした場合、表示の際に相応の負荷がかかります。
- 設定のペアを追加する方法は InterWikiと同じ様に、特定のページに対して行います。
-- 同じ単語に対する設定が複数あった場合、''先に登場したものが採用されます。''
-- 指定する単語を極端に短くすると(例えば英語の "e") あまりにも無数のリンクが生成されてしまうため、単語の最低限文字数を管理者が指定することができます。(短すぎる単語があった場合、エラーは表示されず、単純に無視されます)
-- 指定する単語(とリンク)のペアは、設定ページに無限に追加することができます。それが悪影響を与えないように、記憶できる最大のペアの数は管理者が指定することができます。(多すぎる場合、エラーは表示されず、単純に無視されます)
-- 管理者が設定した値は設定ページが更新された時に初めて参照されるため、値を変更した時は設定ページを更新(編集、ないし空編集)して下さい。
- BracketNameに対してAutoAliasは働きません。
  例: "foobar" というキーワードがAutoAliasName設定されているときでも
   [[foobar>別のリンク指定]] というBracketNameはそのまま動作する
- 自動的にリンクを張る部分はAutoLinkの様に、cache/autoalias.dat に正規表現が保存され、表示の際に実行されます。
-- そのため、単語があまりにも多くなり、cache/autoalias.dat があまりにも大きくなった場合、(AutoLinkと同じように)ページが表示されなくなる類の挙動が発生すると思われます。
-- ただし、AliasNameの数を制限することができるため、AutoLinkほどには発生しないと思われます。

***設定(pukiwiki.ini.php) [#ffdba409]
|LEFT:|LEFT:|LEFT:|c
|~設定変数|~説明|~初期値|h
|LEFT:|LEFT:|RIGHT:|c
|~$aliaspage|エイリアス定義ページ名|'AutoAliasName'|
|~$autoalias|置換する単語の最小バイト数(0で無効)|0|
|~$autoalias_max_words|置換する最大単語数|50|


**メッセージ [#sba589c6]
「[[official:続・質問箱/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の形式に沿っているようですから、InterWikiのロードに使われている関数を抽象化するようなアクションが要るかも、といったコメントをするつもりでした。まる -- [[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};
---直感的にも分かるからそのままでいいのでは?>AutoAliasName 無理に変える必要はないですよ。((PC/IT業界に長い人はついファイル名を命名する癖で8~11文字で収めようとするけどね (^^; )) -- [[みこ]] &new{2005-03-22 (火) 07:17:45};
---ちなみに、上記の理由で $autoaliasname/$autoaliaspage のほうが直感的かなと思うほうなので・・・((マルチにOSをわたり歩いてるわたしは長さはあまり気にならないけど、こういうのって好みというか生理的なものですからねぇ (^^; ))でも、こだわりないです (^^) -- [[みこ]] &new{2005-03-22 (火) 07:23:42};
-ブランチでは確認していないのですが、「サーバー」と「サーバー環境」という2つのAutoAliasNameを記述した場合、どちらが優先されますか?AutoLinkなどでも、名称の重複はいろいろ考えないといけない部分だと思いますが --  &new{2005-03-22 (火) 17:53:21};
--基本的にはAutoLinkと同じ処理なので最長一致になります。重複の件は後書き優先です((エイリアス名をキーとした配列に順次格納しているため))。 -- [[teanan]] &new{2005-03-22 (火) 19:28:28};
-AutoAliasNameという名については、実態が正にAutoAliasと呼ぶに相応しい物であるならばそれで妥当であると思います。この場合InterWikiという技術に対するInterWikiNameというページ名が先例になります。ただし、仮にこの機能の実態がAutoLinkを別の形で実現するものであったならば、機能の名前はAutoLinkであるしページの名前は自然にAutoLinkNameとなるでしょう。さらに言うなれば、もしこの機能を安全にすべくWikiサイト内部へのリンクと外部へのリンクをそれぞれ区別できるようにする事を希望するのであれば、その希望に添った形(例えば他方を凍結できるよう、二つの設定ページから成るものとする)になると思います。 -- [[henoheno]] &new{2005-03-22 (火) 22:34:00};
-[[BugTrack2/47]]を見ていて、link.php からLink_autolinkが呼ばれていることに気づきました。実は同じ対処が必要なのかも・・・ X( -- [[teanan]] &new{2005-03-31 (木) 09:43:15};
-さて、やっと周りが見えてきました。link.phpの件は修正しないとやばそうです。AutoAliasになった単語がyetlistプラグインで未定義扱いになるようですが、これは link.php での .ref ファイル生成に起因するものです。 -- [[teanan]] &new{2005-06-17 (金) 03:41:39};
- 既にかなりの時が経過していますが、一通り解決したつもりです。 -- [[teanan]] &new{2006-04-08 (土) 03:47:30};
-- [[cvs:lib/func.php]] (1.33.2.5)
-- [[cvs:lib/make_link.php]] (1.17.2.5)
-- [[cvs:lib/link.php]] (1.4.2.2)

//#comment

----
** PukiWiki-1.4.6 とのマージ [#ca2506c2]
- PukiWiki-1.4.6 とマージしました。何のトラブルもなく動いたので、かえって心配 (^^; -- [[teanan]] &new{2005-12-12 (月) 03:09:14};
-- 使用したcvsのコマンドは、branch_pukiwiki_2005-03-19_autoaliasをチェックアウトした状態で
 cvs up -j pukiwiki_2005-03-19_autoalias -j r1_4_6
-- その後、新しく pukiwiki_r1_4_6_autoalias というタグをうちました。 -- [[teanan]] &new{2005-12-12 (月) 03:13:01};
- AutoAliasName 修正。org から pukiwiki.sourceforge.jp へ。 -- [[teanan]] &new{2005-12-12 (月) 03:27:37};
-- [[cvs:wiki/4175746F416C6961734E616D65.txt]] (1.1.2.2)
-- [[cvs:cache/autoalias.dat]] (1.1.2.2)
- お疲れ様です。%%昼間、マージについて cvs up -j の説明を先にまとめるべきだったか (^^; とか思い当たっていたのですが、%% ((マージについては [[BugTrack2/3]] に書いてました (^^; )) 美しく楽に終わった様で何よりです :) コミットログでもマージ対象の from と to を具体的に示せていますし、バッチリかと思います。コンフリクトがあったような雰囲気を感じていたのですが、特に無かったんですね :) -- [[henoheno]] &new{2005-12-12 (月) 21:59:51};
- タグは r1_4_6_autoalias に縮めるのはいかがでしょう :) (古いタグでcheckoutして新しいタグをつけて古いタグを削除する or タグを指定して "cvs rtag" x 2) -- [[henoheno]] 
&new{2005-12-12 (月) 22:03:57};
- すみません、見落としていました。後ほどタグ名の変更をしておきます((本日はバッテリー切れです (^^; ))。 -- [[teanan]] &new{2006-04-08 (土) 03:52:23};
- タグ名を'pukiwiki_r1_4_6_autoalias'→'r1_4_6_autoalias' へ変更しました。 -- [[teanan]] &new{2006-04-08 (土) 10:49:44};
-- お疲れ様です。あまり連続して無理なさいませんよう((私もよくやりますが)) -- [[henoheno]] &new{2006-04-09 (日) 13:46:43};

//#comment


*** テスト用のコードを取り出す [#r2e1e287]

- CVSにログイン出来ない場合は結局どのファイルをダウンロードすれば良いんでしょうか? -- [[user]] &new{2006-05-01 (月) 02:39:56};
-- 今であれば タグ r1_4_6_autoalias  を使ってcvsサーバーからpukiwikiのソースを取り出すと、1.4.6にAutoAliasがマージされたものを入手する事ができます。開発用の実装ですから、外向けサーバーでの利用はしないで下さい。([[CVS版]]のページを参照のこと) -- [[henoheno]] &new{2006-05-01 (月) 11:33:20};
 cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/pukiwiki login
 (パスワードを求められたらリターンキーを押す) ※一度だけ実行すればよい
 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/pukiwiki co -r r1_4_6_autoalias pukiwiki
 (後は、適宜パーミッションを修正)
-- Unixのシェルが動く環境(Linuxとか)であれば、[[cvs:../devel/release.sh]] を使ってもう少し楽に取り出す事ができます。実行するコマンドは同じですが、こちらはパーミッションの設定も自動でやってくれるでしょう。 -- [[henoheno]] &new{2006-05-01 (月) 11:41:57};
 $ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/pukiwiki login
 (パスワードを求められたらリターンキーを押す) ※一度だけ実行すればよい
 $ sh release.sh --norm 1.4.6_autoalias
- お返事ありがとうございます。説明の仕方が下手だったようで、申し訳ないのですが、ウェブブラウザからダウンロードすることは出来ないのでしょうか? それと、仮にCVSサーバーからダウンロードできたとしても、一般公開向けに安定して動作するバージョンは無いということでしょうか? -- [[user]] &new{2006-05-01 (月) 16:43:50};
-- なるほど、それひょっとして [[cvs-raw:../pukiwiki.tar.gz?pathrev=r1_4_6_autoalias&view=tar]] のようなもの(ViewCVSの機能を使って、特定のタグでソースを得る)を言われているのでしょうか。ViewCVSがこのようなインターフェースを持っていると言うことは、多分上手く働いてくれるでしょうけれど、(タグつきのダウンロードは)試した事はありません。またこの機能は呼び出すたびに動的にパッケージを作成するもののはずなので、一般公開するには適していません。 -- [[henoheno]] &new{2006-05-01 (月) 20:33:37};
-- AutoAliasは(他の実装中の機構と同じく)広くテストユーザーを求めています。なお外部動作(外側から見た動作)が安定しているかどうかは、内部動作(内部が適切に記述されているか)とは関係ありません。内部動作に関する検証もよろしくお願いします。 -- [[henoheno]] &new{2006-05-01 (月) 20:43:37};

----
** PukiWiki-1.4.7(HEAD)へのマージ、その後 [#x6fcad4d]
- 1.4.7がリリースされ、AutoAliasは2世代を経たわけですが、変更点を見る限りがまだ幹にマージされてないようですね。まだまだテスト期間が必要と言うことでしょうか。 -- [[Wances]] &new{2006-06-25 (日) 13:04:38};
-- 見えない部分の解析に時間がかかってしまったため、延び延びになってしまいました。次回のリリースには入れたいですね~。 -- [[teanan]] &new{2006-06-25 (日) 15:18:07};
- HEADへマージしました(see [[開発日記/2006-08-09]])。一旦、ステータスを「完了」にしておきます :D 何か問題がありましたら、ご指摘をよろしくお願いいたします。 -- [[teanan]] &new{2006-08-09 (水) 03:36:22};
-- TODO: AutoAlias機能がoffの時に、本当に負荷が無いか再検証すること。 -- [[teanan]] &new{2006-08-09 (水) 03:42:44};

- この機能を評価する/してもらうのに必要な説明の部分を冒頭に追加しました。 -- [[henoheno]] &new{2006-09-17 (日) 22:37:35};
-- 動作とコードの様子を見ながら、改善できる点に手を加えています。 -- [[henoheno]] &new{2006-09-17 (日) 22:38:28};
--- [[cvs:lib/func.php]] (r1.74)
-- AutoAliasNameをロードする部分 get_autoaliases() は、最悪の事態に陥ったときでも最小限のリソースで完了するように組替えさせていただきました。従来は同じ alias word が複数ある場合、後にあった方が有効になっていましたが、これが逆になります(先にあった方が有効になります)。例えば凍結されたページに #comment があったとしても、既にある alias word の効果を後書きする事をもくろむ事はできません。また、膨大な量のいたずら書き込みをされた時の処理コストが最小になっているはずです。 -- [[henoheno]] &new{2006-09-17 (日) 22:41:18};
--- [[cvs:lib/func.php]] (r1.75)
--- 追記: #commentプラグインを先頭に追加して、挿入方向を逆にすれば結局上書きは可能ですね -- [[henoheno]]
-- お疲れ様です。なるほど、参考になります :) ((最近はspamとの戦いで燃え尽きてます(涙) )) -- [[teanan]] &new{2006-09-18 (月) 03:31:28};
-- お疲れ様です (^^; get_autoalias() に、AutoAliasNameに関する処理を集約させました。 -- [[henoheno]] &new{2006-09-18 (月) 14:24:20};
- もし最左最長マッチが保証されないのであれば、その事について説明を追加した方が親切かもしれません。 -- [[通りすがり]] &new{2006-09-25 (月) 05:35:06};

- 関連: [[BugTrack/502#jeddb01c]] 。「指定した単語」に半角の#記号が含まれていると、正常に動作しない問題が解決されました。 --  &new{2009-03-30 (月) 22:50:52};
- [[BugTrack2/65]] AutoAlias 用の処理やマーカーが、今はない --  &new{2009-03-31 (火) 02:16:09};
-- [[PukiWiki Plus!]] の方で、先に報告があった模様([[plus:BugTrack/177]]) --  &new{2009-05-17 (日) 07:07:27};
- [[BugTrack2/319]] AutoAlias が、AutoLink 用のConfig 設定をそのまま使っている --  &new{2009-04-01 (水) 01:05:49};
- コレ、結局1.5系にはマージされないんかね。。。まぁそのまんまじゃ動かんから修正が必要だけど -- [[./]] &new{2016-01-28 (木) 14:23:07};
-- (1)負荷が高くなるのと、(2)リンクしたい単語は全部AutoAliasNameに列挙する必要がある点(管理が大変)、(3)WikiNameの自動リンク、AutoLinkと同じですが、素の文章の中の単語が全部リンクされてしまう点(不自然な意図しないリンクが増えるんじゃないか?)、(4)副作用が大きい、というところで組み込みを躊躇しています。それよりもInterWikiのように一定の書式に沿って書かれたキーワードをリンクさせた方が有用ではないでしょうかね。せっかく実装してもあまり使われないと悲しいですし -- [[umorigu]] &new{2016-01-28 (木) 22:31:22};
-- 例えば commit:5944633aac と書くと [[commit:5944633aac]] にリンクしてくれるような機能なら欲しいです。これはAutoAliasとはちょっと違うかもしれません... -- [[umorigu]] &new{2016-01-28 (木) 22:45:12};
--- これって"正規表現の直接指定によるAutoLink/AutoAlias" [[#d03572b7]] に近いですね -- [[umorigu]] &new{2016-01-28 (木) 23:14:30};
- 回答ありがとうございます。別に早急に欲しい機能ではなかったのですが、1.5.0を出す前の次期正式版に取り込まれる内定が出ていたような気がしていたので。あれば便利ですけどご指摘の通り負荷とかの兼ね合いが難しそうですね -- [[./]] &new{2016-01-29 (金) 03:03:13};
- 「せっかく実装してもあまり使われないと悲しいですし」私はAutoAliasNameを使ってサイトを作っています。そんなことないので、ぜひ検討、実装していただけると嬉しいです。(すでにAutoAliasNameを使った状態のサイトをその機能をなしで動かすのは無理に近いので、次の1.5.2以降にぜひ取り込んでほしいです) -- [[DS4]] &new{2017-02-19 (日) 03:42:44};
- 遅くなりましたが1.5.3のリリースで組み込まれます。自分の知っているサイトが数万ページあったのでAutoLink系の機能には懐疑的だったのですが、総ページ数に関わりなく自動リンク対象を人がコントロールできるAutoAliasは使い勝手がいいのですね -- [[umorigu]] &new{2020-02-15 (土) 22:57:48};

#comment

*** オプションを設定できるAutoAlias の要望 [#q825385d]
- cvsからupdateして適用してみました。今の所問題なくサクサク動いております。ありがとうございました :) 欲を言えば大小文字を区別しないnocaseオプションが今更欲しいと思いましたが、欲ばりすぎですね。 -- [[Wances]] &new{2006-08-14 (月) 17:06:49};
- InterWikiの設定にオプションを追加できるのと同じように、nocaseというオプションを与えられるようにすればいいので、実現の余地はあると思います。nocase以外のヒネった応用例を沢山挙げてからの方が、後々行き詰まり辛いので良いかと思います。 -- [[henoheno]] &new{2006-09-17 (日) 12:46:15};
-- lower, upper

#comment


----
** 正規表現の直接指定によるAutoLink/AutoAlias [#d03572b7]
- 余談ですが、現在のAutoAliasは、ユーザーは固定の文字列を指定します(正規表現は間接的に使用されます)。それだけでなく、管理者が、正規表現で上手にAutoAliasをかますにはどうするのが良いでしょうか。 -- [[henoheno]] &new{2006-09-17 (日) 22:56:00};
-- 具体例としては、「人狼まとめサイト」における村の名前です。例えば「C823村」というページは、C国の823番目の村を指します。
 適当な正規表現で表現するならば、適用したいキーワードは
 /\b[A-Z][1-9][0-9]*村/ です。リンク先は同名のページです。
-- その他、例えば社員番号がそれなりにユニークなパターンだったとしましょう。「member/emp0123」というページは、従業員番号0123の方を指すとします。 -- [[henoheno]] &new{2006-09-17 (日) 23:05:09};
 適当な正規表現で表現するならば、適用したいキーワードは
 /\b[eE][mM][pP][0-9]{4}\b/ です。リンク先は "member/小文字にした同名のページ" です。

#comment

** convert_html() を使用している部分がAutoAliasの影響を受ける [#fbeb4573]
- update_entities プラグインなど、システム側のメッセージを表示するためにconvert_html()を使用している部分について、文字列がAutoAliasの影響を受けてしまいます。AutoAliasを効かせるべき時と、そうでない時をコントロールするにはどうするのが良いでしょうね (^^; -- [[henoheno]] &new{2006-09-30 (土) 11:40:42};
-- arg_check('read')みたいな形で逃げたら乱暴でしょうか? (^^; -- [[teanan]] &new{2006-09-30 (土) 12:03:39};
-- その他、仮に $autoalias のような変数の値を一旦対比しておいてから convert_html() を呼ぶようなラッパーが動くなら、それを convert_html() という名前にするとか? -- [[henoheno]] &new{2006-09-30 (土) 23:55:46};
- 関連: [[BugTrack/604]] --  &new{2010-08-22 (日) 15:34:56};

#comment


----
* read プラグインでAutoAlias を利用する案 [#w4951220]
- read プラグインで、ページが存在しないときに、AutoAliasName を読み込み、別名に一致するものがあったら、ページを返す、という処理があるともっと便利になるような気がします。ページがあるときは今までどおりの動作、とすれば負荷は増えないです。新しいページの作成は newpage プラグインというものがありますし。-- [[sonots]] &new{2007-01-23 (火) 10:22:44};
- むしろ、「どのページ?」のように表示してユーザに選らんでもらうようにすれば、複数別名の使用もできるようになります。将来的には AutoAlias にはそのまま別名にリンクを貼ってもらって、以降のページ選択は read プラグインにまかせる。ということもできると思います。 -- [[sonots]] &new{2007-01-23 (火) 10:28:06};
-- とりあえず案だけ。 -- [[sonots]] &new{2007-01-23 (火) 10:28:48};
-- 作成しました。[[PukiWiki/1.4/ちょっと便利に/ページに別名をつける]] -- [[sonots]] &new{2007-05-30 (水) 11:03:28};
--- No such directory: REFERER_DIRとなる。 --  &new{2007-05-30 (水) 11:05:01};
--- REFERER_DIR なんて使用している要素がなさそうに見えるけど。試してないけど。 --  &new{2007-05-31 (木) 09:55:15};
--- というか REFERER_DIR なんて文字ないよ?最新 cvs 版だけど。 --  &new{2007-05-31 (木) 10:03:29};
- [[PukiWiki/1.4/ちょっと便利に/ページに別名をつける]] → [[sonots:read.inc.php]]へ。 → No such directory: REFERER_DIR --  &new{2007-05-31 (木) 10:33:42};
-- 外部から行くとエラーが出るみたいですね。アドレスバーにアドレス直打ちすれば見られるようですよ。 -- [[ぃぉぃぉ]] &new{2007-05-31 (木) 12:56:48};
-- InterWikiNameを修正ですね。。。ところで、[[ぃぉぃぉ]] さんのお家は[[ここ>http://ioio.jpn.ch/?FrontPage]]で良いのですか?違っていたらゴメンなさい。 -- [[hirokasa]] &new{2007-05-31 (木) 15:53:31};
--->[[オフトピックなのでこちらに返信致しました。>ぃぉぃぉ]]
-- InterWikiName 間違ってましたか。修正しました。Firefox 使ってると %2F が / でも通っちゃうんですよね・・・。 -- [[sonots]] &new{2007-05-31 (木) 16:48:44};
--- IEでリンクをたどるとNGになったのは、サーバー側でrefererを解析するときに / 以降がじゃまをした、みたいなことなのかなぁ?ってことは、Firefoxはブラウザ側で / をエンコードして送っているってことかな...。これもオフトピック^^; -- [[ぃぉぃぉ]] &new{2007-05-31 (木) 17:51:10};
- 『read プラグインで、ページが存在しないときに、AutoAliasName を読み込み、別名に一致するものがあったら、ページを返す』 こちらも取り込みました。ご提案ありがとうございました commit:d4f6d12bd6 -- [[umorigu]] &new{2020-02-16 (日) 00:01:30};

#comment

* PukiWiki 1.5.x への組み込み [#jad6f345]
- 本機能(AutoAlias)は 1.4.8 向けに一度取り込まれたのですが、その後1.4.8のリリースがキャンセルになったので、結果としてリリースされていません。状態を「着手」に戻しました -- [[umorigu]] &new{2020-02-13 (木) 02:04:06};
- 1.5.2 にはどうやって対応すればいいのか・・・と思ってましたが、 [[BugTrack/2353/Appendix]] のautoaliasカテゴリのコミットを拾うことで当時の実装を再現できるかもしれません -- [[umorigu]] &new{2020-02-13 (木) 02:09:50};
- ([[BugTrack/2319]] AutoAlias が、AutoLink 用のConfig 設定をそのまま使っている) -- [[umorigu]] &new{2020-02-13 (木) 02:25:25};
- 対応しました commit:77932ee3ad -- [[umorigu]] &new{2020-02-15 (土) 22:23:57};
- AutoAliasName に [[メインページ>WikiPedia.ja:メインページ]] を設定しても働きません。cache/autoalias.dat に (?:メインページ) を書き込むと何とか作動しますが・・・ -- [[pkwk]] &new{2021-06-16 (水) 07:45:08};
- こちら、[[BugTrack/2518]] と同じPHP7.3/7.4の正規表現の問題かと思ったのですが、試してみたところ動作しました。必要であればもう少し詳細な情報を[[dev:BugTrack]]または[[official:質問箱]]に書き込んでください -- [[umorigu]] &new{2021-12-11 (土) 01:24:09};
-- こちら、[[BugTrack/2518]] と同じPHP7.3/7.4の正規表現の問題かと思ったのですが、試してみたところ動作しました。必要であればもう少し詳細な情報を[[dev:BugTrack]]または[[official:質問箱]]に書き込んでください -- [[umorigu]] &new{2021-12-11 (土) 01:24:09};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.062 sec.

SourceForge