nDiki : Perl 5.6

2001年1月3日 (水)

CPAN.pm でごそっと Perl モジュールインストール

1月1日に作り始めた WWW::Search 用 Namazu2 モジュールと、それを使ったメタサーチCGIがある程度できたので、本サイトに設置しようかと考えた。

WWW::Search モジュールをサーバ上にインストールしなければならない。 WWW::Search が別のモジュールに依存していて、さらにそのモジュールが別のモジュールに依存していて……ということでイモヅル式に必要なモジュールが結構ある。 最初は一つづつ make していこうかと思ったのだが、やはり面倒なのとサーバーから CPAN ミラーまでかなり近かったので、CPAN モジュールを使ってインストールする事に(CPAN モジュールはネットワークが細いとちょいと厳しい気がする)。

 >setenv PERL5LIB $HOME/local/lib/site_perl
 >perl -MCPAN -e shell
 Parameters for the 'perl Makefile.PL' command? のところで
 PREFIX=$HOME/local INSTALLSITELIB=$HOME/local/lib/site_perl INSTALLMAN3DIR=$HOME/local/man/man3 と入力
 install WWW::Search
 install Jcode

$HOME は実際にはホームディレクトリを指定。Jcode.pm もいれておく。 これでごそっとインストール終了。 途中 Perl 5.6 までいれようとするのでこれは Ctrl-C で飛ばす(他にいい方法があるかな?)。

[ 1月3日全て ]

2003年11月30日 (日)

タイトル取得ロボットを www.naney.org

2個所問題。

Tie::Array::Sorted

Perl 5.6 以上用だった。www.naney.orgPerl 5.005_03。 しょうがないので、同等のコードを書いて Tie::Array::Sorted を使わないように修正。

SDBM_File の EXISTS

SDBM_File で EXISTS が使えるようになったのは実は Perl 5.6 から。 しょうがないので代わりに defined でキーの存在チェックをするように修正(幸い undef を値に持つ事はない hash なので)。

[ 11月30日全て ]

2004年2月3日 (火)

[WiKicker] WiKicker の文字化け対応

WiKicker文字化けであるが Perl 5.6.x という環境が怪しそう。 ということで、ローカルに Perl 5.6.2 を入れてテスト。

 tar zxvf perl-5.6.2.tar.gz
 cd perl-5.6.2
 rm -f config.sh Policy.sh
 sh Configure -de -Dprefix=/usr/local/perl-5.6.2
 make
 make test
 make install

で /usr/local/perl-5.6.2/bin/perl -MCPAN -e shell でもりもり必要なモジュールをインストール。

WiKicker のテスト。化けた。 追いかけてみると、Locale::Maketext モジュールが use utf-8 をしているため、l10n した文字列は UTF-8 として mark されてしまっているようだ*1。 で、mark されていない他の部分の(バイト列としてのUTF-8)文字列と結合したりしたところで化けたと。

ということで、Perl 5.6.x では maketext で帰ってきた文字列の UTF-8 mark を外すようにする。

 if (5.006 <= $] && $] < 5.7) {
     return eval "no utf8; my \$tmp = \$language_handle->maketext(\@param); \$tmp =~ /^(.*)\$/; \$1";
 }

という緊急処置コード。 Perl 5.005_03 では utf8 プラグマ自体が無いので、eval の中に入れておく。 v5.6.x での UTF-8 mark の外し方が良くわからないので、とりあえず正規表現に全マッチさせるというダサいコード(v5.8 だと utf8::* にそこら辺の関数があるのだが)。

*1Perl 5.6.x では Perl 5.8.x のように "UTF8" flag という呼び名はないのかな?

[ WiKicker ] WiKicker 0.20 で文字化け

F.KIMURAさんによると 文字化けするらしい。

あちゃ。たしかに fkimura Wikiで化けちゃってるな。 うーん。何だろ。 Perl 5.6 系だからかなぁ(開発では Perl 5.005_03 と 5.8.x でしかテストできていないので)。

は実験中のコードが要求するだけなので、WiKicker の実行には必要ないです。 やっぱり紛らわしいのでチェックコード外したほうがいいかな。

[ 2月3日全て ]

2004年5月19日 (水)

YAML Perl モジュール

データファイルをYAMLで扱おうと思い、YAML Perl モジュール (0.35)でちょこちょこと実験。

日本語がことごとく quote される。

ある UTF-8 で書かれたファイルを読み込んで YAMLで Dump したら、日本語の部分がことごとく quote される。 これはいただけない。

 my $ESCAPE_CHAR = '[\\x00-\\x08\\x0b-\\x0d\\x0e-\\x1f]';

で判別している。手抜きではないか。 さてどうしたものか。

と考えていたら、よく考えたら Perl 5.8.x だとバイト単位ではなく文字単位で正規表現マッチングさせられるんだったことを思い出した。 手抜きだなんて思って失礼しました。

データファイルを読んで utf8::decode してから YAML で Dump するようにしたらクオートされなくなった。Good.

Perl 5.6 系だとどうすればいいんだろ。 YAML.pm を直接書き換えて

 use utf8;

を追加すれば期待通りにはなるのだが、ちょっと嫌だな。

sequence をインラインで

短い sequence は

 - a
 - b
 - c

ではなく

 [a, b, c]

の形式で出して欲しい。YAML.pm のチェックしたところ

 my $y = YAML->new;
 $y->InlineSeries(5);
 print $y->dump($data);

のようにインラインにしてよい上限の個数を指定すればよいことを知る。


[ UTF8 フラグ ]

[ 5月19日全て ]

2007年3月8日 (木)

Perl の constant プラグマで1度に複数の定数を定義できるのは Perl 5.8.0 から

'use constant' を使った Perl プログラムを Perl 5.005_03 下で動かしたらエラー。 調べてみると、

 use constant {
     SEC   => 0,
     MIN   => 1,
     HOUR  => 2,
     MDAY  => 3,
     MON   => 4,
     YEAR  => 5,
     WDAY  => 6,
     YDAY  => 7,
     ISDST => 8,
  };

  (constant 1.04 Pod より)

という形で複数の定数をまとめて定義できるのは constant 1.04 からだ。

Perl 5.005_03 は 1.00、Perl 5.6 系は 1.02 で、1.04 になったのは Perl 5.8.0*1 なので、この形を使えるのは Perl 5.8 以降ということになる。

*1奇数系を入れると Perl 5.7.3 から

[ 3月8日全て ]

2009年10月23日 (金)

さくらのレンタルサーバ プレミアム申し込んだ

www.naney.org で使っているホスティングサービスは

  • SSH が使える。
  • daemon プログラムを起動しておいても怒られない。
  • cron が使える。

という点でいろいろ遊べるのだが、

  • 今の相場的にはかなり高めなのにホームが容量 100MB (メールは別に 100MB)。
  • Perl が10年以上前の Perl 5.005_03。自分で新しい Perl を入れようにも容量 100MB だと厳しい。5.005_03 だと Perl 5.6 系以降の文法が使えないし、使える Perl モジュールも限定されているので悲しい。
  • 夜中になると analog が動いてサーバが重くなる。
  • メールの送受信が遅延することがある。

などから使いづらくなってきた。 なにより容量を気にして記事を書き控えようという心理が働くのがよろしくない。 そろそろ今後を考えて他社に乗り換えようかと。

選んだのはやはり人気があって SSH も使える「さくらのレンタルサーバ」。

選んだプランは容量 10GB のプレミアム。 スタンダードでも容量 3GB でまずまずだし cron も使えるから機能的にも十分なんだけれど、1ホストあたりの収容ユーザ数により余裕があるであろう1つ上のプランにしておいた。

Web から申し込んで、風呂に入っている間に DNS 設定が反映されて SSH ログインできるように。 順次ソフトウェアのインストール・コンテンツの移行とメールの設定をしてから、naney.org をこちらに切り替える予定。

[ 10月23日全て ]

2014年2月19日 (水)

いよいよ WiKicker から WikiEngine のコードを抜いて DiKicker のみにする

2002年10月19日から開発を始めてしばらく公開・運用をしていた WikiEngine だけれど最近は WikiEngine そのものは使っていなくて、今はそのコードをベースに作った日記システムDiKicker 部分しか使っていない。DiKicker の方は自分自身で今後も使っていくんだけれど、さすがにいろいろ古いのでそろそろ大改修しようかなと。基盤部分的には

  • Perl 5.005_03Perl 5.6 系との互換処理を捨てる。
  • 文字列処理をバイナリ文字列ベースから(いわゆる UTF8 フラグ界隈的な)テキスト文字列ベースにする。
  • CGI.pm ベースから PSGI ベースへ移行する。
  • 中間管理用のストレージを Berkeley DB から SQLite にする。

などをして今後も使っていけるようにしたい。既に使っていないアプリケーションとしての WikiEngine 部分は移行させていく手間をかける必要はないと思うので、コードを削除していくことにした。WikiForum 立てるなら既にいろいろ他の選択肢があるしね。

CVS での管理もやめて Git 管理に変更。最後の公開 tarball を展開して git init して最初のコミットとし、その後に変更した作業ディレクトリを Git 側の作業ツリーに上乗せしていったんコミット。あらためて最後の公開コードの上に差分を積んでいくつもり。

[ 2月19日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.023089s / load averages: 0.28, 0.25, 0.25