【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

一言コメント機能の名前の適切なブラケット -

目次

なぜ $form{'myname'} から無条件に空白を削除してはならないか。 [ 2004年04月20日(火) 08:13 ]

以下はWalrus:SandBoxからの引用です。

以下は、「CVS CVSによるオープンソース開発」の「9.6 フリーソフトウェア設計の原則、9.6.1 入力を制限しない」からの引用です。 なお、9.6.1の前半はデータサイズに制限を設けないという話題なので省略します。

プログラムでは、あらゆるサイズのデータに対応すると同時に、どのような種類のデー タにも対応できなければなりません。つまり、データを書き換えるのがプログラムの目的 でない限りは、バイナリデータストリームを修正してはいけません(各バイトの高位ビッ トをゼロにするなど。これは一部のプログラムでは実際に行われています)。マナーの良 いキャンプ愛好家と同じように、データは見つけたときの状態のままで保存しましょう

空白削除によって発生するであろうデメリット

名前欄に入力されたデータから空白を無条件に削除すると、むしろデメリットが発生します。

似たようなケースは無数にあるでしょう。

上記の理由から、私は空白削除による修正案には反対です。

既存ユーザが利用していた機能への影響

何より重要だと思う点は、既存ユーザが利用していた機能がそのまま利用できるか、ということです。

その点では、名前欄のフォーマットチェックがユーザにデメリットをもたらす可能性も、無いわけではありません。

影響するのは、一言コメント機能の名前欄を利用してInterWikiNameを登録しているユーザです。 フォーマットチェックが入ることによって、名前欄に入力したInterWikiNameは、InterWikiNameにならなくなります。 (もちろん、これは、空白を削除する案の場合でも同様です。)

とはいえ、一言コメントの名前欄をInterWikiName登録に使うというトリッキーな使い方をしているユーザは 数えるほどしかいないかもしれません。 また、長くなりやすいInterWikiNameは、コメント欄のほうを使って登録するほうが自然だと思われます。 InterWikiNameの性質上、登録の頻度もそれほど多いとは思えません。

だとすれば、入力された名前がリンクになるかどうかチェックしてブラケットで囲むかどうかを決めることは 既存のユーザが利用していた機能にほとんど影響を与えずに、 一言コメント機能本来の用途での見栄えを良くする、比較的妥当な修正であると考えられます。

この修正の不適切を指摘して対案を提示してみる [ 2004年04月20日(火) 01:17 ]

【引 用】 コメント部分を追加すると、名前の部分もリンクになることに注目してください。「太郎?」の「?」をクリックすると、「太郎」のページが作られます。このようにしてページが増えていくわけです。

 +の印のある 1160行を追加してください

 1157   sub do_comment {
 1158       my ($content) = $database{$form{mypage}};
 1159       my $datestr = &get_now;
 1160 +     $form{myname}=~ s/\s//g;
 1161       my $namestr = $form{myname} ? " ''[[$form{myname}]]'' : " : " ";
  :
 以下省略

 【参 考】それぞれの条件での表示結果(スクリーンショット)

 【参 考】それぞれの条件で生成されたソーステキスト
 
 *コメント
 [[#rcomment]]
 - 2004-04-20 (Tue) 00:59:11 ''[[松井秀喜]]'' : 名字と名前の前後と間にスペースを入れてみる(私が提案した修正方法)
 - 2004-04-20 (Tue) 00:58:30 ''[[松井秀喜]]'' : 最後にスペースを入れてみる(私が提案した修正方法)
 - 2004-04-20 (Tue) 00:57:24 ''[[松井秀喜]]'' : 先頭にスペースを入れてみる(私が提案した修正方法)
 - 2004-04-20 (Tue) 00:56:51 ''[[松井秀喜]]'' : 名字と名前の間にスペースを入れてみる(私が提案した修正方法)
 - 2004-04-20 (Tue) 00:56:21 ''[[松井秀喜]]'' : 名前にスペースは何も入れない(私が提案した修正方法)
 - 2004-04-20 (Tue) 00:55:56 '' 松井 秀喜 '' : 名字と名前の前後と間にスペースを入れてみる(このページで提案されている修正方法)
 - 2004-04-20 (Tue) 00:55:01 ''松井秀喜 '' : 最後にスペースを入れてみる(このページで提案されている修正方法)
 - 2004-04-20 (Tue) 00:54:24 '' 松井秀喜'' : 先頭にスペースを入れてみる(このページで提案されている修正方法)
 - 2004-04-20 (Tue) 00:53:41 ''松井 秀喜'' : 名字と名前の間にスペースを入れてみる(このページで提案されている修正方法) 
 - 2004-04-20 (Tue) 00:53:04 ''[[松井秀喜]]'' : 名前にスペースは何も入れない(このページで提案されている修正方法) 
 - 2004-04-20 (Tue) 00:51:51 ''[[ 松井 秀喜 ]]'' : 名字と名前の前後と間にスペースを入れてみる(YukiWikiオリジナル)
 - 2004-04-20 (Tue) 00:51:09 ''[[松井秀喜 ]]'' : 最後にスペースを入れてみる(YukiWikiオリジナル)
 - 2004-04-20 (Tue) 00:50:33 ''[[ 松井秀喜]]'' : 先頭にスペースを入れてみる(YukiWikiオリジナル)
 - 2004-04-20 (Tue) 00:49:45 ''[[松井 秀喜]]'' : 名字と名前の間にスペースを入れてみる(YukiWikiオリジナル)
 - 2004-04-20 (Tue) 00:48:53 ''[[松井秀喜]]'' : 名前にスペースは何も入れない(YukiWikiオリジナル)

Synopsis (概要)

一言コメント機能一言コメント逆順機能の名前欄に空白が含まれる名前を入れると、名前がInterWikiName扱いされてしまう。

よりも

のほうが良さそう

Patch (パッチ) - version 1.01

 --- unpatched_wiki.cgi	2004-04-13 06:50:37.796875000 +0900
 +++ wiki.cgi	2004-04-13 22:31:10.578125000 +0900
 @@ -1144,7 +1144,7 @@
  sub do_comment {
      my ($content) = $database{$form{mypage}};
      my $datestr = &get_now;
 -    my $namestr = $form{myname} ? " ''[[$form{myname}]]'' : " : " ";
 +    my $namestr = $form{myname} ? ($form{myname} =~ m/\s/ ? " ''$form{myname}'' : " : " ''[[$form{myname}]]'' : ") : " ";
      if ($content =~ s/(^|\n)(\Q$embed_comment\E)/$1- $datestr$namestr$form{mymsg}\n$2/) {
          ;
      } else {

Description (説明)

というわけでブラケット囲みの機能は残したまま、名前に空白が含まれるときだけInterWikiName扱いを回避するパッチを書いてみた。

もし良かったら、手でwiki.cgiの該当行を修正するなり、エディタにコピペして patch < suitable_bracket.patch するなりしてあげてください。

パッチあての成功は作成に使った「2004-03-28 YukiWiki 2.1.2 (ykwk212.zip) 最新版」で、確認済み。

ちなみにパッチファイルの改行コードが\r\nだと、Cygwin の patch では Hunk #1 FAILED になるので注意しませう。

Comment (コメント)

Changes (変更履歴)

versiontimestampcomment
1.002004-04-13 07:02:31公開。
1.012004-04-13 22:31:10BracketName?の定義に矛盾しないように、=~ m/ / を =~ m/\s/ に修正。この修正でタブ文字等の空白系文字に対応。

Copyright (著作権)

 Copyright (C) 2004-2004 Anonymous Coward. All rights reserved.
 This patch is free software. You can modify and or distribute it under the same terms as Perl itself.
 
 著作権 (C) は Anonymous Coward が保持しています。
 このパッチはフリーソフトウェアです。Perlそのものと同じ条件の下で、あなたは改変と配布を行うことができます。
 
 # perldoc風に見出しを追加してしまったので、その流れで追加。

Copyright?

このページの内容のうち、どこからどこまでの範囲について著作権を主張するおつもりですか? ひょっとしてパッチの部分だけですか。 それとも他の方のコメントも含めページ全体を指しているのでしょうか。

Wikiにおいてテキストに著作権を主張することの意味について、 しっかりとした議論はいまだされていないのが現状です。

(1)匿名希望さんが (2)Wikiの上で (3)オリジナルからのunified diffに著作権を表明しているのはさまざまな観点から違和感を覚えます。


AnonymousCoward?というのはSlashdotで広く使われる「匿名希望」を表わす記号ですよね。 私はそう解釈したのですが、ACさんの意図は、ここではある特定の個人を表わす記号とみなして欲しいということですか。YukiWikiという文脈では微妙ながら成立するような気もします。

Unified Diff形式はオリジナルを引用しつつその中に変更部分を挿入するという形式です。 そしてACさんの創作は "+" で始まる一行です。 コードの断片だからなのではなく、そういう形式だからこそ違和感を感じました。

それから著作権を表明するということはその中に同一性保持権も含まれます。 技術的に追跡可能かどうかはともかく、 Wikiに投稿はするが投稿物の同一性は担保したい、というのは矛盾していませんか?


第二十条 同一性保持権

著作者は、その著作物及びその題号の同一性を保持する権利を有し、その意に反してこれらの変更、切除その他の改変を受けないものとする。 前項の規定は、次の各号のいずれかに該当する改変については、適用しない。

(一、二は無関係のため省略 -- Anonymous Coward)

三 特定の電子計算機においては利用し得ないプログラムの著作物を当該電子計算機において利用し得るようにするため、又はプログラムの著作物を電子計算機においてより効果的に利用し得るようにするために必要な改変

四 前三号に掲げるもののほか、著作物の性質並びにその利用の目的及び態様に照らしやむを得ないと認められる改変

Wikiに投稿はするが投稿物の同一性は担保したい、というのは矛盾していませんか? について

一言言いたい方はどうぞ

(Too many spams ... embedded comments are not allowed now, sorry.)

See Also (参考)