AutoAlias機能追加

  • ページ: BugTrack2
  • 投稿者: Wances?
  • 優先順位: 普通
  • 状態: 完了
  • カテゴリー: 本体新機能
  • 投稿日: 2005-02-09 (水) 22:43:25
  • バージョン:

関連

AutoAliasとは

「指定した単語」に対し、指定した「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)

設定変数説明初期値
$aliaspageエイリアス定義ページ名'AutoAliasName'
$autoalias置換する単語の最小バイト数(0で無効)0
$autoalias_max_words置換する最大単語数50

メッセージ

official:続・質問箱/510」でAutoAlias機能に追加(パッチ)していただいているのですが、本体への取り込みをご検討いただけないでしょうか。


  • 関連: BugTrack2/3 :) -- henoheno 2005-02-09 (水) 23:13:08
  • 実際のところとしては、他の(従来の)用途に弊害がないかどうかとか、既存のほかの部分に似たコードがあるのにまとめられていないかどうかとか、これを機会に元の機能を改修すべきかどうかなども検討することになるでしょうね。また、他にも試す冒険者が出てきて、使用感や良し悪しについて語り合ってみたりするようになると前向きに話が進むと思います。 -- henoheno 2005-02-09 (水) 23:16:09
    • ちなみに実例であるところのWancesさんのPukiWikiは公開された所にありますか? -- henoheno 2005-02-09 (水) 23:18:14
    • うちのサイトでもパッチをあててあります。 :) -- teanan 2005-02-09 (水) 23:30:43
    • 私のPukiWikiサイトは恥ずかしながらこちらです。機能的に満足しています。重いということを感じたことはありません。まだ登録単語数が少ないからかもしれませんが。 -- Wances? 2005-02-10 (木) 07:03:33
  • 難点としては、かな~り負荷がかかるということでしょうか・・・ (^^; -- teanan 2005-02-09 (水) 23:32:07
    • パッチを当てると、いつ~も重くなっちゃうんですか? -- henoheno 2005-02-09 (水) 23:57:49
    • マッチする単語が増えると重くなります。AutoLinkと同じように単語を探していますが、エイリアスに置換する際AutoAliasNameのページをget_sourceで読み、1行ごと比較しています。この辺を改善すると良いんですけど・・・ -- teanan 2005-02-10 (木) 02:17:59
    • ということで、少し改善してみました。さくっと半分くらいの時間になりました (^^; teanan:自作プラグイン/autoalias.diff -- teanan 2005-02-12 (土) 03:50:03
  • お疲れ様です。もう取り組まれているかもしれませんが、AutoAliasの形式はInterWikiの形式に沿っているようですから、InterWikiのロードに使われている関数を抽象化するようなアクションが要るかも、といったコメントをするつもりでした。まる -- henoheno 2005-02-12 (土) 10:21:50
  • とりあえず、これに手をつけたいと思っています*1。パッチと異なるのは、AutoAlias機能だけをoffにできるよう、pukiwiki.ini.phpに変数を追加すべきかなと。今のAutoLinkを有効にしたら自動的に有効になる、っていうのはちょっと強引なのかなと思っていたりします。 -- teanan 2005-03-07 (月) 01:57:48
    • AutoAliasだけをONにできるようにしてもいいのですが、ちょっと改造範囲が大きくなりそうで怖いので・・・ (^^; -- teanan 2005-03-07 (月) 01:59:14
    • あと、AutoAliasNameを読むところが2ヶ所にあるので、それを統一しないといけませんね。 -- teanan 2005-03-07 (月) 02:02:37
    • BugTrack/605も一緒に片付くかな。 -- teanan 2005-03-07 (月) 02:04:36
  • お疲れ様です。何ならブランチを切って、そっちに一段落した現段階のものをコミットしちゃって、後はあれこれ練りながら(修正を続けながら)作業するというのはどうでしょう :) そうすると他の人もそれを自由に眺めたり、自由に取り出して試すことができます。PukiWiki Plus! に最終成果をマージする時にも違いがわかりやすくて幸せかもしれない-- henoheno 2005-03-18 (金) 23:34:48
    • なるほど。ただ、ブランチは特に勇気を必要とする操作ですね (^^; 本題とは外れてしまって申し訳ないのですが、こういう場合どのようにブランチしたらいいのでしょうか? *2 -- teanan 2005-03-19 (土) 03:27:15
    • osdev-j:CVS/HOWTOの最後にある「 CVSユーザーの良い習慣とは*3」の項にまとめてありますが、タグに対してブランチを切る様にすることと、後々混乱せず/他とぶつからないタグ名およびブランチ名を使用する事さえ守っておけばそんなに大したことではありません。 -- henoheno 2005-03-19 (土) 11:39:47
    • リリースタグ(r1_4_4とか)を作業の基準にする時はブランチポイントタグを打つ必要はありませんが、今回の場合CVS版で作業されているのでしょうから、まずpukiwiki_2005-03-19_autoalias といったタグを打ち、このタグから branch_pukiwiki_2005-03-19_autoalias といったブランチを切る様にすればOKです。 -- henoheno 2005-03-19 (土) 11:44:16
    • お手元の作業環境が一部CVS上の最新ではなく、それを維持したい場合、その作業環境でtagを切れば問題ありません。CVSはお手元のファイル(正確にはCVS/Entries)に記録されているリビジョンにタグを打ってくれます。 -- henoheno 2005-03-19 (土) 11:45:41
    • 具体的な動作確認については、cvs:../sandobx でいくつかブランチを切って見るとよろしいかと思います。 -- henoheno 2005-03-19 (土) 11:47:09
    • 作業が一段落した時は、(私ならそのブランチの末端にさらにタグを打ち) trunkをチェックアウトして、「cvs up -j ブランチポイントタグ -j 最終成果その1のタグ」のように実行してブランチの差分をtrunkに自動マージさせます(コンフリクトは別途解消のこと)。 -- henoheno 2005-03-19 (土) 11:49:00
      • 仮にそのブランチの作業が延長したときは、それが一段落した時点で改めてブランチの末端にタグを打ち、trunkに対して「cvs up -j 最終成果その1 -j 最終成果その2」のように実行してふたたび差分をtrunkに自動マージさせます。 -- henoheno 2005-03-19 (土) 11:50:26
    • ブランチポイントタグは明確に用意しておかないと、マージのときに明確な差分を作ることができなくなるため、はまります(余計な手作業が発生します)。特に多数のファイルを抱えるリポジトリの場合、死ねます。 -- henoheno 2005-03-19 (土) 11:51:42
    • ちなみに、この手のブランチ操作はPukiWikiだとPHP5対応の時に既に行われています。 -- henoheno 2005-03-19 (土) 12:00:37
  • 毎度お手数をおかけ致します。ありがとうございました。 -- teanan 2005-03-19 (土) 12:25:47
  • ブランチ branch_pukiwiki_2005-03-19_autoalias にてコミットしました。興味のある方、よろしくお願いいたします :) -- teanan 2005-03-20 (日) 02:57:12

ブランチ branch_pukiwiki_2005-03-19_autoalias について

設定(pukiwiki.ini.php)

設定変数説明初期値
$aliaspageエイリアス定義ページ名'AutoAliasName'
$autoalias置換する単語の最小バイト数(0で無効)8
$autoalias_max_words置換する最大単語数50

置換条件

  • AutoAliasNameに記述されたエイリアスで、$autoalias に設定された長さ以上の単語が置換対象になります(0でAutoAlias無効)。
  • $nowikiname=1の場合、AutoAliasNameに書かれたWikiNameなエイリアスは、$autoaliasの設定に依存せず、全てが置換対象になります*4$nowikiname=0の時、WikiNameはAutoAliasの対象ではありません。
  • AutoAliasとAutoLinkの単語が重なった場合、AutoAliasを優先します*5
  • BracketNameは置換されません。
  • AutoAliasの置換単語数には上限($autoalias_max_words)を設けてあります。AutoAliasNameが荒らされたときの対策です(凍結しておいたほうが良いかも)。

その他

  • AutoAliasNameを編集すると、cache/autoalias.dat を更新します。
  • cache/autoalias.dat が存在しない場合、AutoAlias機能は働きません。
  • AutoAliasNameに一つもエイリアス定義が無い場合、cache/autoalias.datは消去されます。

コメント

  • 現状の実装仕様を簡単にまとめておきました。 -- teanan 2005-03-20 (日) 03:49:16
  • いよいよ動き始めましたね :) ちょっとだけコメント。単語の長さはできれば $autolink の値を使用しない($autoalias_enable に $autolinkと同じような変数 0:無効 >0:長さ)ほうがいいのでは? -- みこ 2005-03-20 (日) 10:44:11
  • あと、これは個人的なお話かもしれませんが、$autoalias_max → $autoalias_maxword もしくは $autoalias_limitword (もしくはその短縮形)になおしたほうがいいかと・・・(maxはあまりにも汎用的で何の設定(?_?)とおもってしまったので (^^; ) -- みこ 2005-03-20 (日) 10:47:27
  • ツッコミありがとうございます。ご提案の方向で検討したいと思います。 :) -- teanan 2005-03-20 (日) 12:02:50
  • AutoLinkとAutoAliasの機能を切り離し、$autoalias_min_len(旧名$autoalias_enable)以上の単語がリンクに置換されるようにしました。みこさんのご提案通り、$autoalias_max → $autoalias_maxword への名称変更も対応済みです。 -- teanan 2005-03-20 (日) 19:37:54
    • とりあえずAutoLinkと切り離しましたので、AutoAliasのみを有効に設定できるようになりました :) -- teanan 2005-03-20 (日) 19:39:04
  • お疲れ様です。機能もそうですが、名称に関しても、この際いろいろ練り直して良いと思います。AutoAliasという名前自体、実現した効果をふまえた、もっとふさわしい名前があるかもしれませんよ :) さて $autoalias という変数にページ名を入れる案は、おそらく pukiwiki.ini.php における $interwiki などから由来していると思われるのですが、追加機能の設定名としては 同 $trackback, $referer, $autolink のように、機能の名称そのものの変数名で on/off できるとシンプルになるような気がします。その場合 -- henoheno 2005-03-20 (日) 20:25:15
    • $autoaliasname / $autoaliaspage-- 'AutoAliasName' のページ名
    • $autoalias -- AutoAliasで置換する単語の最小バイト数(0で無効)
    • $autoalias_max_words -- AutoAlias機能で置換する最大単語数
  • なんて感じは如何でしょうか。仮に AutoAlias が AutoLink に依存する機能であった場合、設定用の変数名はまた違った形になると思います。 -- henoheno 2005-03-20 (日) 20:25:59
    • $autoaliasの使い方はお察しの通り$interwikiからきています。私もその辺が引っかかってたんですよね・・・。henohenoさんのご提案の方がすっきりしそうですので、変えちゃいましょう。 :) *6 -- teanan 2005-03-20 (日) 22:26:59
    • より良い結果を得るために、過程を楽しみませう :) -- henoheno 2005-03-20 (日) 22:37:50
  • $autoalias→$aliaspage、 $autoalias_min_len→$autoaliasへ変更しました。エイリアス定義ページ名は他のページ名の定義と比較して少し長めでしたので $aliaspage としてあります。 -- teanan 2005-03-22 (火) 03:05:09
    • あと引っかかってるのは、AutoAliasNameというページ名なのですが、いかがでしょうか? まぁ、ページ名は変えられるのでどうでもいい、と言われてしまえばそれまでなのですが・・・ (^^; -- teanan 2005-03-22 (火) 03:08:49
      • 直感的にも分かるからそのままでいいのでは?>AutoAliasName 無理に変える必要はないですよ。*7 -- みこ 2005-03-22 (火) 07:17:45
      • ちなみに、上記の理由で $autoaliasname/$autoaliaspage のほうが直感的かなと思うほうなので・・・*8でも、こだわりないです (^^) -- みこ 2005-03-22 (火) 07:23:42
  • ブランチでは確認していないのですが、「サーバー」と「サーバー環境」という2つのAutoAliasNameを記述した場合、どちらが優先されますか?AutoLinkなどでも、名称の重複はいろいろ考えないといけない部分だと思いますが -- 2005-03-22 (火) 17:53:21
    • 基本的にはAutoLinkと同じ処理なので最長一致になります。重複の件は後書き優先です*9。 -- teanan 2005-03-22 (火) 19:28:28
  • AutoAliasNameという名については、実態が正にAutoAliasと呼ぶに相応しい物であるならばそれで妥当であると思います。この場合InterWikiという技術に対するInterWikiNameというページ名が先例になります。ただし、仮にこの機能の実態がAutoLinkを別の形で実現するものであったならば、機能の名前はAutoLinkであるしページの名前は自然にAutoLinkNameとなるでしょう。さらに言うなれば、もしこの機能を安全にすべくWikiサイト内部へのリンクと外部へのリンクをそれぞれ区別できるようにする事を希望するのであれば、その希望に添った形(例えば他方を凍結できるよう、二つの設定ページから成るものとする)になると思います。 -- henoheno 2005-03-22 (火) 22:34:00
  • BugTrack2/47を見ていて、link.php からLink_autolinkが呼ばれていることに気づきました。実は同じ対処が必要なのかも・・・ X( -- teanan 2005-03-31 (木) 09:43:15
  • さて、やっと周りが見えてきました。link.phpの件は修正しないとやばそうです。AutoAliasになった単語がyetlistプラグインで未定義扱いになるようですが、これは link.php での .ref ファイル生成に起因するものです。 -- teanan 2005-06-17 (金) 03:41:39
  • 既にかなりの時が経過していますが、一通り解決したつもりです。 -- teanan 2006-04-08 (土) 03:47:30

PukiWiki-1.4.6 とのマージ

  • PukiWiki-1.4.6 とマージしました。何のトラブルもなく動いたので、かえって心配 (^^; -- teanan 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 2005-12-12 (月) 03:13:01
  • AutoAliasName 修正。org から pukiwiki.sourceforge.jp へ。 -- teanan 2005-12-12 (月) 03:27:37
  • お疲れ様です。昼間、マージについて cvs up -j の説明を先にまとめるべきだったか (^^; とか思い当たっていたのですが、 *10 美しく楽に終わった様で何よりです :) コミットログでもマージ対象の from と to を具体的に示せていますし、バッチリかと思います。コンフリクトがあったような雰囲気を感じていたのですが、特に無かったんですね :) -- henoheno 2005-12-12 (月) 21:59:51
  • タグは r1_4_6_autoalias に縮めるのはいかがでしょう :) (古いタグでcheckoutして新しいタグをつけて古いタグを削除する or タグを指定して "cvs rtag" x 2) -- henoheno 2005-12-12 (月) 22:03:57
  • すみません、見落としていました。後ほどタグ名の変更をしておきます*11。 -- teanan 2006-04-08 (土) 03:52:23
  • タグ名を'pukiwiki_r1_4_6_autoalias'→'r1_4_6_autoalias' へ変更しました。 -- teanan 2006-04-08 (土) 10:49:44
    • お疲れ様です。あまり連続して無理なさいませんよう*12 -- henoheno 2006-04-09 (日) 13:46:43

テスト用のコードを取り出す

  • CVSにログイン出来ない場合は結局どのファイルをダウンロードすれば良いんでしょうか? -- user? 2006-05-01 (月) 02:39:56
    • 今であれば タグ r1_4_6_autoalias を使ってcvsサーバーからpukiwikiのソースを取り出すと、1.4.6にAutoAliasがマージされたものを入手する事ができます。開発用の実装ですから、外向けサーバーでの利用はしないで下さい。(CVS版のページを参照のこと) -- henoheno 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 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? 2006-05-01 (月) 16:43:50
    • なるほど、それひょっとして cvs-raw:../pukiwiki.tar.gz?pathrev=r1_4_6_autoalias&view=tar のようなもの(ViewCVSの機能を使って、特定のタグでソースを得る)を言われているのでしょうか。ViewCVSがこのようなインターフェースを持っていると言うことは、多分上手く働いてくれるでしょうけれど、(タグつきのダウンロードは)試した事はありません。またこの機能は呼び出すたびに動的にパッケージを作成するもののはずなので、一般公開するには適していません。 -- henoheno 2006-05-01 (月) 20:33:37
    • AutoAliasは(他の実装中の機構と同じく)広くテストユーザーを求めています。なお外部動作(外側から見た動作)が安定しているかどうかは、内部動作(内部が適切に記述されているか)とは関係ありません。内部動作に関する検証もよろしくお願いします。 -- henoheno 2006-05-01 (月) 20:43:37

PukiWiki-1.4.7(HEAD)へのマージ、その後

  • 1.4.7がリリースされ、AutoAliasは2世代を経たわけですが、変更点を見る限りがまだ幹にマージされてないようですね。まだまだテスト期間が必要と言うことでしょうか。 -- Wances? 2006-06-25 (日) 13:04:38
    • 見えない部分の解析に時間がかかってしまったため、延び延びになってしまいました。次回のリリースには入れたいですね~。 -- teanan 2006-06-25 (日) 15:18:07
  • HEADへマージしました(see 開発日記/2006-08-09)。一旦、ステータスを「完了」にしておきます :D 何か問題がありましたら、ご指摘をよろしくお願いいたします。 -- teanan 2006-08-09 (水) 03:36:22
    • TODO: AutoAlias機能がoffの時に、本当に負荷が無いか再検証すること。 -- teanan 2006-08-09 (水) 03:42:44
  • この機能を評価する/してもらうのに必要な説明の部分を冒頭に追加しました。 -- henoheno 2006-09-17 (日) 22:37:35
    • 動作とコードの様子を見ながら、改善できる点に手を加えています。 -- henoheno 2006-09-17 (日) 22:38:28
    • AutoAliasNameをロードする部分 get_autoaliases() は、最悪の事態に陥ったときでも最小限のリソースで完了するように組替えさせていただきました。従来は同じ alias word が複数ある場合、後にあった方が有効になっていましたが、これが逆になります(先にあった方が有効になります)。例えば凍結されたページに #comment があったとしても、既にある alias word の効果を後書きする事をもくろむ事はできません。また、膨大な量のいたずら書き込みをされた時の処理コストが最小になっているはずです。 -- henoheno 2006-09-17 (日) 22:41:18
      • cvs:lib/func.php (r1.75)
      • 追記: #commentプラグインを先頭に追加して、挿入方向を逆にすれば結局上書きは可能ですね -- henoheno
    • お疲れ様です。なるほど、参考になります :) *13 -- teanan 2006-09-18 (月) 03:31:28
    • お疲れ様です (^^; get_autoalias() に、AutoAliasNameに関する処理を集約させました。 -- henoheno 2006-09-18 (月) 14:24:20
  • もし最左最長マッチが保証されないのであれば、その事について説明を追加した方が親切かもしれません。 -- 通りすがり? 2006-09-25 (月) 05:35:06
  • 関連: BugTrack/502#jeddb01c 。「指定した単語」に半角の#記号が含まれていると、正常に動作しない問題が解決されました。 -- 2009-03-30 (月) 22:50:52
  • BugTrack2/65 AutoAlias 用の処理やマーカーが、今はない -- 2009-03-31 (火) 02:16:09
  • BugTrack2/319 AutoAlias が、AutoLink 用のConfig 設定をそのまま使っている -- 2009-04-01 (水) 01:05:49
  • コレ、結局1.5系にはマージされないんかね。。。まぁそのまんまじゃ動かんから修正が必要だけど -- ./ 2016-01-28 (木) 14:23:07
    • (1)負荷が高くなるのと、(2)リンクしたい単語は全部AutoAliasNameに列挙する必要がある点(管理が大変)、(3)WikiNameの自動リンク、AutoLinkと同じですが、素の文章の中の単語が全部リンクされてしまう点(不自然な意図しないリンクが増えるんじゃないか?)、(4)副作用が大きい、というところで組み込みを躊躇しています。それよりもInterWikiのように一定の書式に沿って書かれたキーワードをリンクさせた方が有用ではないでしょうかね。せっかく実装してもあまり使われないと悲しいですし -- umorigu 2016-01-28 (木) 22:31:22
    • 例えば commit:5944633aac と書くと commit:5944633aac にリンクしてくれるような機能なら欲しいです。これはAutoAliasとはちょっと違うかもしれません... -- umorigu 2016-01-28 (木) 22:45:12
      • これって"正規表現の直接指定によるAutoLink/AutoAlias" #d03572b7 に近いですね -- umorigu 2016-01-28 (木) 23:14:30
  • 回答ありがとうございます。別に早急に欲しい機能ではなかったのですが、1.5.0を出す前の次期正式版に取り込まれる内定が出ていたような気がしていたので。あれば便利ですけどご指摘の通り負荷とかの兼ね合いが難しそうですね -- ./ 2016-01-29 (金) 03:03:13
  • 「せっかく実装してもあまり使われないと悲しいですし」私はAutoAliasNameを使ってサイトを作っています。そんなことないので、ぜひ検討、実装していただけると嬉しいです。(すでにAutoAliasNameを使った状態のサイトをその機能をなしで動かすのは無理に近いので、次の1.5.2以降にぜひ取り込んでほしいです) -- DS4? 2017-02-19 (日) 03:42:44

オプションを設定できるAutoAlias の要望

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


正規表現の直接指定によるAutoLink/AutoAlias

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

convert_html() を使用している部分がAutoAliasの影響を受ける

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


read プラグインでAutoAlias を利用する案

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

*1 言い出しっぺの法則
*2 該当ファイルのみではなく全体に? ブランチの名称は? branch_r1_4_5_1_autoalias みたいな感じでしょうか?
*3 なんだか仰々しいタイトルだ
*4 関連: BugTrack2/43
*5 AutoAliasは意図的に追加するものなので。
*6 ポリシーが無いって言われそうな気がしますが・・ (^^;
*7 PC/IT業界に長い人はついファイル名を命名する癖で8~11文字で収めようとするけどね (^^;
*8 マルチにOSをわたり歩いてるわたしは長さはあまり気にならないけど、こういうのって好みというか生理的なものですからねぇ (^^;
*9 エイリアス名をキーとした配列に順次格納しているため
*10 マージについては BugTrack2/3 に書いてました (^^;
*11 本日はバッテリー切れです (^^;
*12 私もよくやりますが
*13 最近はspamとの戦いで燃え尽きてます(涙)

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

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u4. HTML convert time: 1.677 sec.

OSDN