BugTrack/193
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*AutoLink [#e7062681]
-ページ: BugTrack
-投稿者: [[ぱんだ]]
-優先順位: 低
-状態: 完了
-カテゴリー: 本体新機能
-投稿日: 2003-01-22 (水) 16:28:15
-バージョン: 1.3.3
**メッセージ [#me187d2e]
[[極悪版 wiki>http://homepage1.nifty.com/dune/AutoLink.ht...
最初の版は<pre>~</pre>の中も置換してしまうというダサい動...
-$nowikinameを1にすると、WikiNameの自動リンクを抑制します。
-$autolinkを1以上の数値にすると、$autolink文字以上の長さ...
-$nowikiname=1かつ$autolink>0のときは、WikiNameのページも...
--つまり、ページが存在するWikiNameはリンクになり、そうで...
***ダウンロード [#pddc4c7c]
PukiWiki/1.3.3用です。
#ref(193_1.3.3.diff)
----
**コメント [#pd22d634]
- 極悪版 wiki のようなすでに存在するWikiNameへは自動でリ...
--これってWikiNameじゃなくってBracketNameのことでしょうか...
-表現がまずかったですね。存在するページ名へのリンクです。...
--BracketNameによるページへの自動リンクは副作用があるので...
--仕掛け自体は簡単なんですが。ページが増えると結構重い処...
--ページを作成したときに、ページ名のindex-listをファイル...
----
-よさげな感じですね。テストして負荷なども調べてみようと思...
-CafeWikiを遅ればせながらテストしております。にほんごWiki...
--その機能まってました!どのへんに差し込めばいいでしょう...
-レポートお待ちしてます :) -- [[ぱんだ]] SIZE(10){2003-01...
--$pageからブラケットを取ったらうまく動きました! -- [[te...
-&ref(193_1.3.3.diff); を添付しました。 -- [[ぱんだ]] SIZ...
-if ($arr[19] != '') { は if ($arr[19] != '...
-ってもうdiffで修正済みですね。すんません。 -- [[たらこせ...
-''InterWikiテクニカル''がInterWikiとテクニカルに分かれて...
array_unshift($arr,"(?:$WikiName)");
は
array_push($arr,"(?:$WikiName)");
のほうがいいかもしれません。 -- [[ぱんだ]] SIZE(10){2003-...
-稼動してます。負荷かかってるかなあ。 -- [[たらこせる]] S...
-やっぱり [[WikiName]] と WikiName のどっ...
--ちなみにAutoLinkでは[[WikiName]]が存在...
-これ、やっぱり面白いですね...。次期検索結果画面をBracket...
--よくわかりません。 検索結果画面をBracketName化とはいっ...
--よく、ではなくぜんぜんわかんないですね...。興奮して書き...
-193_1.3.3.diffを差し替えました。 array_unshiftを(array_s...
-試してみました。大体導入前の 2~5 倍の負荷が掛かっている...
-初めまして。(おそらく)多少効率のいいAutoLinkPatternを生...
--PukiWiki1.3.3に最初からついてるページ+ランダムに生成し...
--また、PukiWiki1.3.3に最初からついてるページのみでのテス...
--ぱんださんのも私のもget_existpages関数にかなり時間を食...
--テスト環境はPenIII450MHz,Mem640MB,OSwin2kです。 -- [[hi...
--数字上は100ページくらいでも差(上記テスト環境において0....
---こりゃあ、うちのを1.4にして、実験するのがよさそうだな...
--…すごいですね。この最適化は多分、似たような名前((BugTra...
--1.4では、ページの更新時にキャッシュ(cache/autolink.dat)...
---1.4試してみました。最初からついてる20ページ+ランダム生...
--見れば見るほど興味深いアルゴリズムです。1.4に取り込んで...
+++$resultの初期化
+++変数名をちょっと変更($tを$count, $nを$pos)
+++substr(...)をmb_substr(...)に、strlen(...)をmb_strlen(...
---$resultの初期化は添付用に整形したときにコピーし忘れて...
---マルチバイト処理は私もどうしようか迷ったのですが…やは...
---autolink.datが目視で確認できる、ということだけですかね...
---mb_substrを使う場合、strlenもmb_strlenに変えないと日本...
---修正漏れですね。直しました。 -- [[ぱんだ]] SIZE(10){20...
--今気がついたのですが、[[WikiName]]とWik...
---autolink2.phpを修正する場合は$auto_pagesを$listに読み...
---1.3.x系の宿命ですね。PukiWiki/1.4では問題ないです。([[...
---1.3.xと1.4では大分違いがあるのですね。まだ詳しく見てい...
---あら、PukiWiki/1.4がうまくリンクできていないですね。Pu...
---と思いきや今度は「WikiName」がリンクされてないですね…...
---おや、WikiName直ってますね。なんだったんだろう…。 -- [...
---devサイトは直接潜り込んで修正しています。CVSより新しい...
---WikiNameがリンクされていないのはpreg_replaceがマルチバ...
---PukiWiki/1.4がリンクされない件ですが、get_autolink_pat...
- if ($count > 1)
+ if ($x or $count > 1)
{
$result = '(?:'.$result.')';
}
としておくといいんじゃないかと。 -- [[ぱんだ]] SIZE(10){2...
---自分の書いたコードなのにだんだん分からなくなってきまし...
---マルチバイト処理問題ですが、[[■:http://www.din.or.jp/~...
-このサイトのautolinkキャッシュはhttp://pukiwiki.sourcefo...
--括弧がいっぱいあって、まるでLisp系のプログラムを見てい...
-う~ん、やっぱり副作用が大きすぎるような…。AutoLink=6で...
--Descriptionは(?![[:alpha:]])の利用でな...
--対策案:ダミーのリストを用意し、それと実在ページのリス...
--reimyさんの例ならば、Description、東京都、東大阪という...
--というわけで試してみました。以下手順。
---func.phpにあるget_autolink_pattern関数先頭のglobal~(4...
- global $WikiName,$autolink,$nowikiname;
+ global $WikiName,$autolink,$nowikiname,$ignorelistpage...
---$auto_pagesをソートしている部分(418行目付近)を以下のよ...
- sort($auto_pages,SORT_STRING);
+ $auto_pages = array_merge(
+ $auto_pages,
+ get_ignorelist($ignorelistpage),
+ get_ignorelist($forceignorelistpage)
+ );
+ $auto_pages = array_values(array_unique($auto_pages));
---以下の関数を追加する。
function get_ignorelist($page)
{
$list = array();
$src = get_source($page);
$n = sizeof($src);
for($i=0;$i<$n;$i++)
{
if($src[$i]{0}!='-') continue;
$pagename = trim(substr($src[$i],1));
if(!is_pagename($pagename)) continue;
$list[] = $pagename;
}
return $list;
}
---make_link.phpにあるLink_autoクラス(148行目付近)を以下...
class Link_auto extends Link
{
+ var $ignorelist;
+
function Link_auto($start)
{
+ global $forceignorelistpage;
parent::Link($start);
+ $this->ignorelist = get_ignorelist($forceignorelis...
}
---toStringメソッド(181行目付近)を以下のように書き換える。
function toString($page = '')
{
+ if(!is_page($this->name)) return $this->name;
+ if(in_array($this->name,$this->ignorelist)) return...
return make_pagelink(
$this->name,
$this->alias,
'',
($page == '') ? $this->page : $page
);
}
---pukiwiki.ini.phpの適当な位置に以下の行を追加する。
$ignorelistpage = "IgnoreList";
$forceignorelistpage = "ForceIgnoreList";
---以上で完了。
---無視リストのページでは「-」で始まる行が無視ページの指...
---IgnoreList中で指定したページは、実在すれば無視されずオ...
---ForceIgnoreList中で指定したページは、実在してもオート...
-上記コードを取り込みました。[[cvs:func.php]](v1.4:r1.26)...
-不用意にAutoLinkされたくない文字列のページは、階層化した...
//#comment
終了行:
*AutoLink [#e7062681]
-ページ: BugTrack
-投稿者: [[ぱんだ]]
-優先順位: 低
-状態: 完了
-カテゴリー: 本体新機能
-投稿日: 2003-01-22 (水) 16:28:15
-バージョン: 1.3.3
**メッセージ [#me187d2e]
[[極悪版 wiki>http://homepage1.nifty.com/dune/AutoLink.ht...
最初の版は<pre>~</pre>の中も置換してしまうというダサい動...
-$nowikinameを1にすると、WikiNameの自動リンクを抑制します。
-$autolinkを1以上の数値にすると、$autolink文字以上の長さ...
-$nowikiname=1かつ$autolink>0のときは、WikiNameのページも...
--つまり、ページが存在するWikiNameはリンクになり、そうで...
***ダウンロード [#pddc4c7c]
PukiWiki/1.3.3用です。
#ref(193_1.3.3.diff)
----
**コメント [#pd22d634]
- 極悪版 wiki のようなすでに存在するWikiNameへは自動でリ...
--これってWikiNameじゃなくってBracketNameのことでしょうか...
-表現がまずかったですね。存在するページ名へのリンクです。...
--BracketNameによるページへの自動リンクは副作用があるので...
--仕掛け自体は簡単なんですが。ページが増えると結構重い処...
--ページを作成したときに、ページ名のindex-listをファイル...
----
-よさげな感じですね。テストして負荷なども調べてみようと思...
-CafeWikiを遅ればせながらテストしております。にほんごWiki...
--その機能まってました!どのへんに差し込めばいいでしょう...
-レポートお待ちしてます :) -- [[ぱんだ]] SIZE(10){2003-01...
--$pageからブラケットを取ったらうまく動きました! -- [[te...
-&ref(193_1.3.3.diff); を添付しました。 -- [[ぱんだ]] SIZ...
-if ($arr[19] != '') { は if ($arr[19] != '...
-ってもうdiffで修正済みですね。すんません。 -- [[たらこせ...
-''InterWikiテクニカル''がInterWikiとテクニカルに分かれて...
array_unshift($arr,"(?:$WikiName)");
は
array_push($arr,"(?:$WikiName)");
のほうがいいかもしれません。 -- [[ぱんだ]] SIZE(10){2003-...
-稼動してます。負荷かかってるかなあ。 -- [[たらこせる]] S...
-やっぱり [[WikiName]] と WikiName のどっ...
--ちなみにAutoLinkでは[[WikiName]]が存在...
-これ、やっぱり面白いですね...。次期検索結果画面をBracket...
--よくわかりません。 検索結果画面をBracketName化とはいっ...
--よく、ではなくぜんぜんわかんないですね...。興奮して書き...
-193_1.3.3.diffを差し替えました。 array_unshiftを(array_s...
-試してみました。大体導入前の 2~5 倍の負荷が掛かっている...
-初めまして。(おそらく)多少効率のいいAutoLinkPatternを生...
--PukiWiki1.3.3に最初からついてるページ+ランダムに生成し...
--また、PukiWiki1.3.3に最初からついてるページのみでのテス...
--ぱんださんのも私のもget_existpages関数にかなり時間を食...
--テスト環境はPenIII450MHz,Mem640MB,OSwin2kです。 -- [[hi...
--数字上は100ページくらいでも差(上記テスト環境において0....
---こりゃあ、うちのを1.4にして、実験するのがよさそうだな...
--…すごいですね。この最適化は多分、似たような名前((BugTra...
--1.4では、ページの更新時にキャッシュ(cache/autolink.dat)...
---1.4試してみました。最初からついてる20ページ+ランダム生...
--見れば見るほど興味深いアルゴリズムです。1.4に取り込んで...
+++$resultの初期化
+++変数名をちょっと変更($tを$count, $nを$pos)
+++substr(...)をmb_substr(...)に、strlen(...)をmb_strlen(...
---$resultの初期化は添付用に整形したときにコピーし忘れて...
---マルチバイト処理は私もどうしようか迷ったのですが…やは...
---autolink.datが目視で確認できる、ということだけですかね...
---mb_substrを使う場合、strlenもmb_strlenに変えないと日本...
---修正漏れですね。直しました。 -- [[ぱんだ]] SIZE(10){20...
--今気がついたのですが、[[WikiName]]とWik...
---autolink2.phpを修正する場合は$auto_pagesを$listに読み...
---1.3.x系の宿命ですね。PukiWiki/1.4では問題ないです。([[...
---1.3.xと1.4では大分違いがあるのですね。まだ詳しく見てい...
---あら、PukiWiki/1.4がうまくリンクできていないですね。Pu...
---と思いきや今度は「WikiName」がリンクされてないですね…...
---おや、WikiName直ってますね。なんだったんだろう…。 -- [...
---devサイトは直接潜り込んで修正しています。CVSより新しい...
---WikiNameがリンクされていないのはpreg_replaceがマルチバ...
---PukiWiki/1.4がリンクされない件ですが、get_autolink_pat...
- if ($count > 1)
+ if ($x or $count > 1)
{
$result = '(?:'.$result.')';
}
としておくといいんじゃないかと。 -- [[ぱんだ]] SIZE(10){2...
---自分の書いたコードなのにだんだん分からなくなってきまし...
---マルチバイト処理問題ですが、[[■:http://www.din.or.jp/~...
-このサイトのautolinkキャッシュはhttp://pukiwiki.sourcefo...
--括弧がいっぱいあって、まるでLisp系のプログラムを見てい...
-う~ん、やっぱり副作用が大きすぎるような…。AutoLink=6で...
--Descriptionは(?![[:alpha:]])の利用でな...
--対策案:ダミーのリストを用意し、それと実在ページのリス...
--reimyさんの例ならば、Description、東京都、東大阪という...
--というわけで試してみました。以下手順。
---func.phpにあるget_autolink_pattern関数先頭のglobal~(4...
- global $WikiName,$autolink,$nowikiname;
+ global $WikiName,$autolink,$nowikiname,$ignorelistpage...
---$auto_pagesをソートしている部分(418行目付近)を以下のよ...
- sort($auto_pages,SORT_STRING);
+ $auto_pages = array_merge(
+ $auto_pages,
+ get_ignorelist($ignorelistpage),
+ get_ignorelist($forceignorelistpage)
+ );
+ $auto_pages = array_values(array_unique($auto_pages));
---以下の関数を追加する。
function get_ignorelist($page)
{
$list = array();
$src = get_source($page);
$n = sizeof($src);
for($i=0;$i<$n;$i++)
{
if($src[$i]{0}!='-') continue;
$pagename = trim(substr($src[$i],1));
if(!is_pagename($pagename)) continue;
$list[] = $pagename;
}
return $list;
}
---make_link.phpにあるLink_autoクラス(148行目付近)を以下...
class Link_auto extends Link
{
+ var $ignorelist;
+
function Link_auto($start)
{
+ global $forceignorelistpage;
parent::Link($start);
+ $this->ignorelist = get_ignorelist($forceignorelis...
}
---toStringメソッド(181行目付近)を以下のように書き換える。
function toString($page = '')
{
+ if(!is_page($this->name)) return $this->name;
+ if(in_array($this->name,$this->ignorelist)) return...
return make_pagelink(
$this->name,
$this->alias,
'',
($page == '') ? $this->page : $page
);
}
---pukiwiki.ini.phpの適当な位置に以下の行を追加する。
$ignorelistpage = "IgnoreList";
$forceignorelistpage = "ForceIgnoreList";
---以上で完了。
---無視リストのページでは「-」で始まる行が無視ページの指...
---IgnoreList中で指定したページは、実在すれば無視されずオ...
---ForceIgnoreList中で指定したページは、実在してもオート...
-上記コードを取り込みました。[[cvs:func.php]](v1.4:r1.26)...
-不用意にAutoLinkされたくない文字列のページは、階層化した...
//#comment
ページ名: