トップ(最新)

nDiki : Perl v5.6.2

スポンサード リンク

Related term

2004年2月3日 (火)

[WiKicker] WiKicker の文字化け対応 このエントリーを含むはてなブックマーク

WiKicker文字化けであるが Perl v5.6.x という環境が怪しそう。 ということで、ローカルに Perl v5.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 v5.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.0005_03 では utf8 プラグマ自体が無いので、eval の中に入れておく。 v5.6.x での UTF-8 mark の外し方が良くわからないので、とりあえず正規表現に全マッチさせるというダサいコード(v5.8 だと utf8::* にそこら辺の関数があるのだが)。

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

スポンサード リンク


[ 2月3日全て ]

2005年3月13日 (日)

テスト。More。 このエントリーを含むはてなブックマーク

WiKicker のテストスクリプトの作成には Perl 5.005_03 でも標準バンドルされている Test モジュールを使用している。 テストのためだけに追加のモジュールを要求するのも悪いかなと思って。

しかし Perl v5.6.2 以降にはすでに標準バンドルされている Test::More にそろそろ移行したい。

5.005_03WiKicker を使っている人も少ないようだし WiKicker 0.25 からは Test::More を PREREQ_PM に追加することにしよう。 Test モジュールと Test::More モジュールは互換性がないので、順次テストスクリプトを修正していく予定。


[ 3月13日全て ]

2005年6月6日 (月)

[ WiKicker ] Storable 永続化データの互換性 このエントリーを含むはてなブックマーク

fkimura 氏から WiKicker の障害レポートをいただいた。 Perl v5.8.6 へ移行した環境で WiKicker 0.26 を試してみたところエラーになってしまうとのこと。

 "Error
 action: do_read: Byte order is not compatible at blib/lib/Storable.pm
 (autosplit into blib/lib/auto/Storable/thaw.al) line 366,
 at /usr/local/lib/perl5/site_perl/5.8.6/WiKicker/DB/File.pm line 161
 at /usr/local/lib/perl5/site_perl/5.8.6/WiKicker/CGI/AbstractController.pm line 93"

(FreeBSD 4.11-RELEASE-p9)

Storableエラーを吐いている。 Storable データ形式に互換性のない環境 (Perl and/or Storable) 変化があったようだ。

例えば Storableマニュアルによれば 64bit integer をサポートするように構築された Perl v5.6.0 や v5.6.1 で Storable 2.02 以前を使って書き出したデータを他の環境で読み出すと 'Byte order is not compatible' エラーが出るとある。

確認したところ前のバージョンは Perl v5.6.2 だそうなので、もしかしたら上記の非互換性にあたってしまったのかもしれない (FreeBSDPerl って 64bit integer サポートでビルドされるようになっている?)。

@ WiKicker での対応方法

WiKicker で使用している Perl のアップグレードで上記問題にあたった場合、一番簡単な方法は Storable で書き出しているページ情報ファイルを一旦全部消してしまうという方法。

WiKickerデータベースディレクトリ (wikicker.database.directory プロパティで指定しているディレクトリ)の下の、info/basic/* を全て消してしまう(一応バックアップとしてコピーした方が良い)。

この場合、各ページの「最終更新時刻、最終更新者名、要約文」が消えてしまうが、これらの消えてしまった情報は次にページを更新した時に最新の情報で上書きされる。

WikiPage そのものおよび古いリビジョンは影響がなく全て残っているので、通常の運用ではまあ許容できる範囲の対処方法か。

情報ファイルを消したくない場合は、コンバートする必要があるけれど古い Storable データを読み出せる環境で export して、新しい形式で書き直す必要があるので作業する人にとってもちょっと面倒かもしれない。いや、新しい Storable ならば $Storable::interwork_56_64bit あたりを使えば両方をきりかえて読めそうであるので、新しい環境だけあればいいのかな。


[ 6月6日全て ]

2006年9月14日 (木)

WiKicker 0.38 リリース - 認証承認用コードの実装 このエントリーを含むはてなブックマーク

朝一で WiKicker 0.38 をリリース。 昨晩コードを完成させておいたものを Perl 5.005_03 上でテストしたら、ExtUtils::MM が 5.005_03 にはないことに気がついた。 調べると標準で入っているのは Perl v5.6.2 / Perl v5.8.0 から。

ということで急拠 ExtUtils::MM を使っているツールは今回のリリースから除外してパッケージング。

今回のリリースでは認証・承認フレームワークの実装が含まれるようになったのが中心で、基本的な機能には特に変更なし。


[ 9月14日全て ]

スポンサード リンク

■よく検索されるキーワード

提案書(75) torrent(69) perl(61) 書き方(45) 充電式カイロ(43) windows(38) x31(36) 使い方(32) linux(32) cvs(25) アジェンダとは(25) usb(25) thinkpad(23) 静電気(21) サンプル(20) 口コミ(20) ヨドバシ(20) アジェンダ(20) 画像(19) debian(19) ubuntu(19) mp980(18) f-01a(18) 手帳(17) tc-1(17) 秋葉原(16) ssh(16) subversion(16) グッズ(16) a6(15) 壁紙(15) ほぼ日手帳(15) c#(14) ダイソー(14) svn(14) 交換(14) インストール(13) 加湿器(13) firefox(12) ノート(12) 無印(12) 日本語(12) wiki(12) ganttproject(12) デロンギ(11) 方眼(11) ヨドバシカメラ(11) デザイン(11) nikkor(11) 設定(11) 作り方(11) dropbox(11) af(10) terastation(10) memcached(10) レビュー(10) カバー(10) カイロ(10) 2009(10) 除去(10) nikon(10) tortoisesvn(10) クラリチン(9) ガントチャート(9) 動画(9) ポメラ(9) ご査収(9) rcs(9) モジュール(9) n-01a(9) フィルム(9) 写真(9) システム手帳(9) edition(9) porter(9) xp(8) imap(8) 4c(8) docomo(8) ミニ6穴(8)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 15.331435s / load averages: 0.19, 0.38, 0.48
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)