Wiki系とWikiEngineについて語るスレーPart3

このエントリーをはてなブックマークに追加
941_:05/01/07 20:07:16 ID:+dnLunED
差分を行単位ではなく文字単位で見れるWikiはありませんか?
942nobodyさん:05/01/07 20:31:57 ID:???
やけにタイムリーだな。
Hiki が対応に向けて動いたようだけど。

ふぇみにん日記 - 仕事初め , Hiki の差分表示をマシにしよう計画 (2)
http://kazuhiko.tdiary.net/20050106.html#p02
943nobodyさん:05/01/07 20:49:15 ID:???
前からある要求だけど。
944nobodyさん:05/01/07 20:53:18 ID:???
Wikipediaが文字単位だった気がする
945941:05/01/08 11:28:09 ID:1+/AkAA+
情報ありがとうございました。
今使っているFreeStyleWikiを改造したら、
完全な文字単位とまではいかなくとも、\wと\Wの境界、
1バイト文字と2バイト文字の境界、句読点の前後程度には区切って
表示させられるようになりました。
946nobodyさん:05/01/08 18:57:24 ID:???
ブロックの書式があるWikiって何がある?
とりあえず、TikiとVikiWikiにはあるようだが他に何かある?
947nobodyさん:05/01/09 02:54:09 ID:???
>945
頼むから差分を開発サイトのWikiに張ってぇー
948nobodyさん:05/01/09 04:28:23 ID:???
嫌です
949nobodyさん:05/01/09 05:05:21 ID:???
そんな、殺生な〜
950nobodyさん:05/01/09 05:14:11 ID:???
 .    /ヘミミミ/  ``'ー-.、,ヽ丶)ヽ、
  、. レ"ヾヘミミ/        ヽソノ;、ヾi
  _ヽlヾミミミン  -zュ、、     ´ ';ソ:|
  i A;ヽミミゾ   ,__,.、,、,..,、、.,、,、、..,_       /i
  | | iミミソ     ヽ;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
  | ヽiミソ       ''、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄    /i
  ゙iー:ソ           ,、-'  |ヽ,;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
 ノソ         ` = _, |  '、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
.  "!      ,.r===;-、, ` '′  ,'
  ハ.      / ヽ、  ヽ,)   ノ
,r'イ ',     l!、   ゙i ./   ,.'
. i |  ',      iゝヽ..ノ,イ   /
. !│ ヽ    ゝ.二 '´ /.│ 
. ! |   ヽ      /   !、                     それが、VIPクォリティ
. | |     >‐‐ァ"     | \                    http://ex7.2ch.net/news4vip/
951nobodyさん:05/01/12 15:36:18 ID:???
そろそろ次スレキボンヌ
952nobodyさん:05/01/14 01:57:39 ID:???
 # ▽▽▽▽
-   my @msg1 = split(/\n/,$wiki->get_page($pagename));
-   my @msg2 = split(/\n/,$wiki->get_backup($pagename,$generation));
+   my($m1)=Util::escapeHTML($wiki->get_page($pagename));
+   my($m2)=Util::escapeHTML($wiki->get_backup($pagename,$generation));
+
+   sub c_d_t_d
+   {
+     my($s)=shift;
+
+     $s=~s/\n\n/\n\0\n/g;
+     $s=~s/\n/\n\r\n/g;
+     $s=~s/\b/\n/g;
+     $s=~s/&\n(\w+)\n;/&$1;/g;
+     $s=~s/ /\n<!--EnSpc-->\n/g;
+     $s=~s/ /\n \n/g;
+     $s=~s/、/\n、\n/g;
+     $s=~s/。/\n。\n/g;
+     $s=~s/・/\n・\n/g;
+     $s=~s/(/\n(\n/g; $s=~s/)/\n)\n/g;
953nobodyさん:05/01/14 01:59:18 ID:???
+     $s=~s/「/\n「\n/g; $s=~s/」/\n」\n/g;
+     $s=~s/『/\n『\n/g; $s=~s/』/\n』\n/g;
+     $s=~s/&/\n&/g;
+     $s=~s/([:;]+)/$1\n/g;
+     $s=~s/([[\]]+)/\n$1\n/g;
+     $s=~s/([\x01-\x7f]+)/\n$1\n/g;
+     $s=~s/\n\n/\n/g;
+     return $s;
+   }
+
+   my @msg1=split(/\n/,&c_d_t_d($m1));
+   my @msg2=split(/\n/,&c_d_t_d($m2));
 # △△△△
954nobodyさん:05/01/14 02:00:55 ID:???
 # ▽▽▽▽
-   return "<pre>".Util::escapeHTML($diff_text)."</pre>";
+   $diff_text=~s/\r/<\/p>\n<p>/g;
+   $diff_text=~s/<\/del><del>//g;
+   $diff_text=~s/<\/ins><ins>//g;
+   $diff_text=~s/\0<!--Ret-->/<!--Ret-->/g;
+   $diff_text=~s/\0/<span class="Spc">↓<\/span><!--Spc-->/g;
+   $diff_text=~s/<!--Ret-->/<span class="Spc">↓<\/span><!--Spc-->/g;
+   $diff_text=~s/<!--EnSpc-->/<span class="Spc">_<\/span><!--Spc-->/g;
+   $diff_text=~s/<\/span><!--Spc--><span class="Spc">//g;
+   $diff_text=~s/<!--Spc-->//g;
+   return '<p class="Note DiffNote">※'
+     . '削除された箇所は<del>この表示</del>で、'
+     . '追加された箇所は<ins>この表示</ins>です。</p>' . "\n"
+     . '<div class="Diff">' . "\n"
+     . '<p>' . $diff_text . '</p>'. "\n"
+     . '</div>';
 # △△△△
955nobodyさん:05/01/14 02:02:03 ID:???
 # ▽▽▽▽
-   $diff_text .= join('', map { "-$_\n" } splice(@diff_deleted));
-   $diff_text .= join('', map { "+$_\n" } splice(@diff_added));
+   $diff_text.=join('',map{ &d_d_t_s($_) } splice(@diff_deleted));
+   $diff_text.=join('',map{ &d_a_t_s($_) } splice(@diff_added));
 }
+
+ sub d_d_t_s
+ {
+   my($s)=shift;
+
+   $s=~s/\r/<!--Ret--><\/del>\r<del>/g;
+   $s="<del>" . $s . "</del>";
+   $s=~s/<del><\/del>//g;
+   return $s;
+ }
+
+ sub d_a_t_s
+ {
+   my($s)=shift;
+
+   $s=~s/\r/<!--Ret--><\/ins>\r<ins>/g;
+   $s="<ins>" . $s . "</ins>";
+   $s=~s/<ins><\/ins>//g;
+   return $s;
+ }
 # △△△△
956nobodyさん:05/01/14 02:05:50 ID:???
 # ▽▽▽▽
-   #$diff_text .= "=$msgrefA->[$a]\n";
+   $diff_text.=$msgrefA->[$a];
 # △△△△

>>947
以上はDiff.pmの改造です。
957nobodyさん:05/01/14 09:17:34 ID:???
PHP に ediff ってないかな ( Perl には Text::ediff がある )
958nobodyさん:05/01/14 17:18:28 ID:???
>>956
親フォルダごとクラッシュしますた・・orz
959nobodyさん:05/01/16 10:15:26 ID:???
pukiwiki
paintプラグイン使えてますか?
ちゃんとjarファイル入れても使えない
アプレットの部分が灰色になったままなんだけおd

sleipnir + j2re 142
960nobodyさん:05/01/16 10:33:20 ID:???
>>959
その環境で、他サイトのアプレット等はちゃんと見えてる?
961nobodyさん:05/01/16 23:34:16 ID:???
>>958
使ってるバージョンは?
962nobodyさん:05/01/21 00:12:31 ID:???
FSWikiのサイト落ちてる?
963nobodyさん:05/01/21 01:12:23 ID:???
MoinMoin使えよ
964nobodyさん:05/01/21 02:19:42 ID:???
ひとつ質問させてください。
今、新しい WikiClone をデザインしているのですが
色々なところでさんざん言われているURL問題について悩んでます。

要するに日本語名ページへのリンクを作るとき
http://www.xxx.jp/wiki.cgi?%14%58%32%57%10%20」のようなURLにするべきか
それとも Wikipedia のように「http://www.xxx.jp/wiki.cgi/テスト」みたいなURLにするべきか。

個人的には後者の方式を採用したいところなんですが
文字コードの問題とか、ページ名に特殊記号(&、?、/)が使えないのではないか、とか
そういった諸々のことが心配になります。
どちらの方式にするのが正解なのでしょうか?
965nobodyさん:05/01/21 02:58:58 ID:???
>>964
番号で代替するのが一番賢いと思う
966nobodyさん:05/01/21 03:07:09 ID:???
日本語名の問題と パラメータの受け渡し方とかの問題は別の問題だと思う

&や?が使えるかとかは URLエンコードをちゃんとすれば問題ない話だけれど
(特にUTF-8とかを使ったとき)ページ名(=>URLも)が以上に長くなるのが嫌って話とか
パラメータを渡すのに&や?を使うと検索エンジンがひろってくれ難いから嫌だとかって話とか
ごっちゃになっている気がしないでもないけど・・

日本語ページ名でURLが長くなる問題なら・・ >>964の番号というか・・w
エイリアスのような機能や、ページ名とタイトルを別に扱うような仕組みがあればいいんだと思う

967964:05/01/21 12:50:50 ID:???
素早い回答ありがとうございます。

>>965
ファイル名には連番を使っているのですが、URLに連番を使うと
番号とページ名の 1:1 対応が保証されない(同じURLでも違ったページに飛ばされる可能性がある)という問題が。
はてなダイアリーのような日記システムなら、日付で判断できるんですが……

>>966
一番の目的は、「日本語名を含むURLを扱うこと」です。

しかし?の後に日本語名を付けると、強制的にエスケープされてしまいますよね。
たとえば「http://www.xxx.jp/wiki.cgi?テスト」のように入力しても
http://www.xxx.jp/wiki.cgi?%14%58%32%57%10%20」と置き換えられてしまう。

その点、/の後にページ名を付ければ、Wikipedia よろしく
日本語名そのままのURLが使えて良いんじゃないかな、と。
(ただしそれだと、各種特殊記号もエスケープされないまま渡される?)
968nobodyさん:05/01/21 13:00:19 ID:???
wiki.cgi?形式にしておいて、mod_rewriteで後者の形式も使えるようにしとけ。

sakura.ad.jpでmod_rewriteが使えないのは知らん。
969nobodyさん:05/01/21 13:17:46 ID:???
URLに日本語を入れると、強制的にエスケープされると思うよ。
wikipediaはUTF-8エンコードには対応してるから、IEとかOperaからは直接入力で見にいけるけど、
win版Mozillaはeucかなにかでエンコードするから、ページ名が化けて見にいけない。
970nobodyさん:05/01/21 14:00:32 ID:???
まったく新たに作るのであれば書き方法は?
[[テスト@test]]
と書くと、
wiki.cgi?page=test
でリンクが張られ、アクセスできるようにする、という方法。
@ の部分は > でも :: でも何でもいいです。
971nobodyさん:05/01/21 14:05:58 ID:???
ファイル名に連番って実装は あんまり想像できないんだけど
ハッシュドWikiやwemaのような ページの中の細かい単位のものを
個別にファイルに収めるとか 声のかけらのようなものを実装するなら
番号という選択肢も頭に浮かぶんだけど・・
まぁ、それはそれ・・w

連番使うとページ名と1:1保証されないってのもよくわからないけど・・
一度ページを削除してから新たに別のページを作ったとき 空き番号でファイルを作成
したりすると、誰かがリンクした古いページのURLで違うページにとかって話なのかな。
私個人的には 連番を使うなら、新規ページは現存最大番号+αで作るとか
ハッシュで同一(番号)ファイル名を作らないようなアルゴリズムを考えるとか
まぁ・・ それもいいやw

入力しても強制的にエスケープ?
ブラウザのURL入力欄に直接入力するときの話?
ウィキペディアも日本語名のページはURLエンコードされてるけど?
972966:05/01/21 14:53:54 ID:???
アドバイス&突っ込みありがとうございます。

>>968
できるだけ幅広いサーバで、単純に動くようにしたいので
サーバ依存の mod_rewrite はできるだけ避けたい方法です。すいません。

>>969
なるほど、ブラウザ依存な部分もあったんですね。
しかしそうすると、日本語URLの使用はますます危うい……

>>970
いくつかの文法パーサを組み込めるようにする予定なので
使う文法によっても変わってくるかもしれませんが……
標準では [[テスト|test]] 、あるいはMarkdown風に [[テスト]](test) と。この二つ。

>>971
> 実装
現時点では、「新規ページは現存最大番号+αで作る」実装になっています。
新しいページを作ると、そのページの本文を「rw_0001.wiki」というファイルに書き込み。
ページ名と連番の対応は別のデータファイルで記録。

> ウィキペディアも日本語名のページはURLエンコードされてる
Operaではエンコードされず、完全に日本語ままで扱えるようです。
973nobodyさん:05/01/21 20:29:12 ID:???
いや、だからさ・・w
じゃぁさ アドレス欄に日本語を入れたときって その日本語コードは何として扱われるわけ?w

サーバーに日本語ファイル名でHTMLのファイルを置いたときに
サーバーに置いた日本語ファイル名の日本語エンコードと
ブラウザ毎に アドレス欄に日本語を直接入力したときの動作を色々試してみたら?w

ようするに、アドレス欄に日本語を直接入れたときの動作なんてブラウザ依存でしかないし
そのブラウザ依存だって おそらくはアドレス欄に入力された日本語を適当に
(そのブラウザ固有の)エンコーディングで扱ってるだけなんじゃないかな

(よく知らないけど たぶん)URL(URI?)の規格として日本語を直接扱えたり 特定のエンコーディングを想定してたり
そんなことはないと思うし・・ね


で、最初にあげた例を最後に補足
パラメータと違って、ファイル名の場合はサーバー(ApacheやIIS)がファイル名をどう扱うかも
関わってくるとおもうから CGIのパラメータとしてのURLとは例としてふさわしくないところもあるんだけど
ようするに、そこらへんの変換やエンコードは結局ブラウザ依存でしかないんじゃないかって話ね

974nobodyさん:05/01/21 20:48:38 ID:???
>>973の補足
もちろん ブラウザ固有で適当なエンコーディングとして扱った結果
アクセスするURLは そのエンコーディングで扱った日本語データを URLエンコードした
結果のURLにアクセスするんだろうし
アドレス欄の表記を日本語のままにしているのか URLエンコードして表示しなおすのかってのも
ブラウザ依存の話なんじゃないかと思う
975nobodyさん:05/01/21 21:07:11 ID:???
上の少しだけ突っ込んだ話だけど、

href="http://日本語" や アドレス欄に直接日本語を入力したときは
ブラウザが勝手に URL エンコードする。

そのとき、IE なら元のページの文字コードが何であろうとエンコード文字列は Unicode に、
Mozilla 系ならエンコード文字列は元のページの文字コードだか何か(確認してない、スマソ)になる。

Wikipedia の文字コードは Unicode なので IE ならそのまま日本語アドレスでも大丈夫だが、
Mozilla 系だと文字化けする事態になる。

つまりパラメータを受け取ったときにページ名の文字コードを判別すれば、
日本語 URL でも何とかなるんじゃないかと思うんだけど、実際できるかはわからないな。
976nobodyさん:05/01/21 21:13:35 ID:???
Opera は UTF-8 でエンコードされた URL をデコードしてアドレス欄に表示しているってだけだよね。
でも、Shift-JIS、EUC-JP、ISO-2022-JP、UTF-8 のどれでエンコードされようが、きちんと認識してくれる
Wiki を見たことあるから、そういう実装をすれば良いと思う。
977nobodyさん:05/01/21 23:08:29 ID:???
どれでエンコードされようがっていうのは
つまり、そのWikiでは ユニコード対応のnkfで ページ名を
対応するインターウィキ名のエンコードでエンコードしているという事じゃないのかな
インターウィキの話じゃないのかな・・

リンク(URL)内に記述された日本語を 何らかのエンコードになおすという話だとしたら
URLエンコードするときの日本語エンコーディングに何を選択するのかの情報を
いったいどこから入手するのだろう・・

リンク先のページの文字エンコーディングを判別?
Wiki等の パラメータとして日本語を受け取るCGIの場合なら
URLのエンコードとページのエンコードは おそらく 一致しているからそれでいいのかもしれない
だけど、実際のファイルのファイル名が日本語ファイル名で
その日本語ファイル名のエンコードと
そのファイルの中身のエンコード HTTP-EQUIVの charsetが一致する保証もないわけだし・・

978nobodyさん:05/01/21 23:14:15 ID:???
あ・・
Wiki側で URLで渡されたページ名を
いったんURLデコードした後に
自分自身が扱うエンコーディングにnkfで変換するって話なのかな
979nobodyさん:05/01/21 23:33:25 ID:???
ファイル名、あるいはURL内のページ名に番号という選択肢は私的には避けたい選択肢のひとつなんだけど
cvsやrcsを使う場合にファイルシステム上にデータファイルを保存する事になるので
SQL等を使ってデータを管理するなら、データのテーブルとして、
ページ名やページデータの他にページ番号をiノードやFAT番号の変わりのように
使うのもありだなぁ・・ と思ったw
980nobodyさん:05/01/21 23:53:10 ID:???
まず半角を使え。
981nobodyさん:05/01/21 23:55:01 ID:???
ぼくのWIKIも開発していいですか?
982nobodyさん:05/01/21 23:55:42 ID:???
>>981
どうぞ。
できたら晒してください。
983981:05/01/22 00:34:44 ID:???
さっそくですが、色々なところでさんざん言われているURL問題について悩んでます。

要するに日本語名ページへのリンクを作るとき
http://www.xxx.jp/wiki.cgi?%14%58%32%57%10%20」のようなURLにするべきか
それとも Wikipedia のように「http://www.xxx.jp/wiki.cgi/テスト」みたいなURLにするべきか。

個人的には後者の方式を採用したいところなんですが
文字コードの問題とか、ページ名に特殊記号(&、?、/)が使えないのではないか、とか
そういった諸々のことが心配になります。
どちらの方式にするのが正解なのでしょうか?
984nobodyさん:05/01/22 00:41:05 ID:???
以下ループ
985nobodyさん:05/01/22 00:44:15 ID:???
で、新スレは?
986972:05/01/22 02:21:02 ID:???
>>973-976
アドバイスありがとうございました。とても参考になります。
要するに、日本語URLの処理にはブラウザ依存な部分が大きいので
とりあえず一通りの文字コード(SJIS、EUC、ISO-2002-JP、UTF-8)に対応させるぐらいしか
解法がない、と。

ひとまずその方向で実装してみることにします。
# ただ、Rubyを使ってるのでUTF-8への対応がネックに。

>>980
ページ名を半角英数のみにすれば、全てがすっきりすることは確実なんですが
1.別ページへのリンクを張るときに厄介
2.ページ名からページの内容を連想しづらい(特に一覧表示のとき)
という問題が。
987nobodyさん:05/01/22 02:33:16 ID:???
ちなみにIEではインターネットオプションの詳細設定で
「常にUTF-8としてURLを送信する」
というオプションが存在する。
漏れのとこでは このオプションは触っていないが
チェックされた状態になっている。

おそらく、IE6なら デフォルトではこのオプションがチェックされた状態っていう事だろう。

988nobodyさん:05/01/22 13:53:08 ID:???
>>986
migemoの応用でなんとかならんかな?

とてきとーに言ってみた
989986:05/01/22 16:05:12 ID:???
>>988
Ruby/Kakasi あたりを使えば、似たようなことは出来そうなんですが
日本語←→ローマ字の変換精度に疑問があるのと
1:1対応が保証されない問題(hasiは橋? 端?)のために
Wikiの上で使うにはちょっと……。
990nobodyさん
+ ;
* ☆_+
: , xヾ:、__,..-‐‐:、、,へ___.ィ/~~~' _    テテテテ・・・
         く '´ _/ /  ̄`ヽ}
          /0:》@ i(从_从))
       =  {o:::: ||ヽ|| ゚ -゚ノ|
         ':,:::::::::::つ:::::::つ
      =   ヽ、__;;;;::/
           し"~(__)