読み込み中...Now loading...

このサイトではCSS, JavaScriptを有効にする必要があります。
推奨ブラウザ: Safari 2.0以上。
動作確認ブラウザ: FireFox 2.0, Opera 9.01 (どれもMac OS X上)
読み込みが完了しても、このメッセージが表示されている場合は、CSSとJavaScriptを有効にしてリロードして下さい。
・
ようこそ「ひあるび日記 - 20051105」へ
・
・
ひあるび日記

前年|翌年|
前月|翌月|
前日|翌日
2005年11月05日(土): ぐっさん家

Jazzやるべ
世の中の人間は二つに分けられる。
Swingする者としない者だ!

エンディアン
ところで、2005年もあと2ヶ月ほどなわけですが、来年あたりにサイトリニューアル考えてます。
どーでもいいですか。そうですか。
先日日記に書いた(現在も継続中の)Perlの自分用ライブラリ開発もそれに向けたものだったんですが、
色々面倒なことがあるわけで。
それが、借りてるサーバ(以下、“鯖コン”)と自宅のコンピュータ(以下、“宅コン”)の環境の違いです。
OSは、サーバはLinuxで、自宅はMac OS Xで、両方ともUNIX系のOSなので、大きな差は今のところ感じてません。
今感じてる大きな違いは2つ。

1. CPU
鯖はPentium 4 CPU 3.00GHz、自宅はPowerPC G4 800MHz。
なんかクロック周波数にすごい差があるんですが、Perlで、ある程度負荷のある計算をさせてみても優位な差は見られませんでした。
なんなんだ、Pentium…(笑)。
でも問題は計算速度ではなくて、エンディアンの違い。
Intel製のPentium 4はリトルエンディアン、Motorola製のPowerPC G4はビッグエンディアン。
まさか、CGIのためのPerlのプログラミングでエンディアンを気にすることになろうとは思はなかったんだけれども、気にしなくてはいけない場面が出てきてしまいました。
それは例えば以下のコード。
my $integer = unpack('i', 'ABCD');
リトルエンディアンでは$integerの中身は1145258561、一方ビッグエンディアンでは、1094861636。
この違いは、同じエンディアンのコンピュータ同士でデータをやり取りする場合には問題がないのだけれども、
違うエンディアンのコンピュータとデータのやり取りをする場合にはかなり気を付けなければいけない。
自宅で作成したデータと鯖側で作成したデータに互換性を持たせるためにバイトをスワップする関数を作成。
sub swapBytes {
      my $bytes = shift;
      my @bytes = split('', $bytes);
      my @newBytes = ();
      foreach (@bytes) {
            unshift @newBytes, $_;
      }
      return join('', @newBytes);
}
あとは、エンディアンによってこの関数を使えばいいというわけ。
面倒くさい。

2. Perlのバージョン
鯖は5.6.1、自宅は5.8.6。
自宅ではウォーニングもエラーも出ずに動くスクリプトが、鯖側で動かなかったりする。
それと、5.8以降の標準モジュールであるEncodeが鯖側にはない。
ただ、鯖にはJcodeはインストール済なのでそれを使うことに。
eval('use Encode;');
if ($@) {
      use Jcode;
}
みたいなことしたりして。実際に書いたコードとは違いますが。
自宅の方にもJcodeはインストール済なんですが、5.8以降はEncodeのラッパーとして働くらしいので、直接Encode使った方がいいかな、と。
まぁ、なんというか、作成したライブラリはJcodeだろうとEncodeだろうと意識せずに使えるようにしました。
なんか、こういうことしてると、ライブラリを公開したくなる。
公開に当たって一番面倒なのはマニュアルの作成。
ホント、マニュアルの作成ってのは本質ぢゃないので疲れます。
……話それすぎ。
─────
あ、“鯖コン”と“宅コン”って言葉使ってない。


コメント
現在この日記へのコメントはありません。一番乗りしますか?

お名前
メールアドレス(※メールアドレスは公開されません)
URL
コメント

トラックバック
トラックバックURL:
http://yockow.net/-/trackback/20051105

現在この日記へのトラックバックはありません。一番乗りしますか?
「来たよ。」ボタン
?
close
管理人に空メールを送るためのボタン。
つまりはデジタルピンポンダッシュ。
管理人にメールを送るまでではないが、
サイトに訪問した足跡を残したい時に使えます。
・
ロールちゃん
・
PR
・
close
・
Google Searchは、JavaScriptを有効にする必要があります。
x!
警告
警告文