リンク: [ホーム] [自己紹介] [リンク集] [アルバム] [ソフトウェア] [発表文献] [その他]

まさおのChangeLogメモ / 2006-04-29

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2006-04-29 Sat

* clsearch.cgi+未

clsearch.cgiにて文字化けを引き起こす。

面, 果などの文字の後ろにひらがながくるパターンで問題になる模様。

素直にPerlメモに載っている方法を使えば回避できそう…。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match

とりあえずのパッチ:

Index: clsearch.cgi
===================================================================
RCS file: /home/masao/.cvsroot/public_html/d/clsearch.cgi,v
retrieving revision 1.2
diff -u -b -r1.2 clsearch.cgi
--- clsearch.cgi 26 Apr 2006 16:12:32 -0000 1.2
+++ clsearch.cgi 29 Apr 2006 06:57:18 -0000
@@ -67,6 +67,9 @@
 my $outstr = "";
 my $cnt = 0;
 
+my $ascii = '[\x00-\x7F]';
+my $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]';
+my $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]';
 
 sub clean {
     local ($_) = @_;
@@ -101,7 +104,8 @@
  $match_num++ if ($c =~ /^.+\[$tmp\].*\t.*$/);
   } else {
  my $tmp = clean($k);
- $match_num++ if ($c =~ m|$tmp|i);
+ $match_num++
+ if $c =~ /^(?:$ascii|$twoBytes|$threeBytes)*?(?:$tmp)/i;
  push @regular_keys, $tmp;
  }
  }
@@ -128,7 +132,7 @@
  $pos =~ s!^(([\x80-\xff]{2})*?)[\x80-\xff]$!$1!;
  $c = qq($pre$k$pos);
  my $p = join('|', @regular_keys);
- $c =~ s!($p)!$open_tag$1$close_tag!gi;
+ $c =~ s!\G((?:$ascii|$twoBytes|$threeBytes)*?)($p)!$1$open_tag$2$close_tag!gi;
  }
  } elsif ($mode == 1) { # アイテムモード
  my ($file, $id) = ($date =~ /href="(.*?.html).*?">\[(.+?)\]/);


もう少し簡単にやるなら、Jcode->s(pattern, subst) を使えば良さげ。

(やってみたけど)
Jcode->{s,m}ってJcode.pm2.00以上、Perl5.8.1以上を要求するのね…。

手元のサーバはPerlのバージョン、レンタルサーバだとJcodeのバージョ
ンの問題で動かないので、いやーんな感じ。
という訳で現状ではやめておく。

* 論文の書き方と査読の方法(和文Dの著者、査読者のために)

http://www.ieice.org/jpn/shiori/jd/kakikata_jd.html
すばらしい書き物。参考になる。

これだけの文章を編集委員会としてまとめるのはさぞ大変だったろうと、
推察されるのだが、どうだろう。