お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 日付別 アーカイブ :

2007年5月

2007年5月31日

Apache HTTP Server 2.2 のインストール

Apache HTTP Server 2.2 の最新バージョンを FreeBSDにインストールしてみる。

FreeBSDにソフトウェアをインストールする際には Portからインストールすることが一般的であるが、 個人的にはApacheで 今後いろいろなオプションをつけて コンパイルし直そうと考えているので、 ここでは あえて オリジナルのソースからmakeしてみることにする。

今回はまず、全くオプションを設定しない状況でインストールしてみる。

まず、ソース用のディレクトリへ移動してから、 apache.org から最新のソースをダウンロード。
# cd /usr/local/src
# wget http://www.apache.org/dist/httpd/httpd-2.2.8.tar.gz


ついでに md5 ファイルもダウンロードして、ファイルが壊れていないかを確認。
# wget http://www.apache.org/dist/httpd/httpd-2.2.8.tar.gz.md5
# cat httpd-2.2.8.tar.gz.md5
39a755eb0f584c279336387b321e3dfc  httpd-2.2.8.tar.gz
# md5 -r httpd-2.2.8.tar.gz
39a755eb0f584c279336387b321e3dfc httpd-2.2.8.tar.gz
MD5ハッシュ値(いわゆるMD5チェックサム)を比較してみて 同じ値であることがわかる。 ちなみに md5 コマンドで -r オプションをつけているのは 単に出力フォーマットを逆にして ハッシュ文字列を比べやすくするためだ。

続いて tar で解凍
# tar xvzf httpd-2.2.8.tar.gz


ディレクトリを移動してから configure, make install
# cd httpd-2.2.8
# ./configure
# make
# make install


これで最低限のインストールが済んだハズ。 さて、実際に動くかどうか。

【参考リンク】

カテゴリー: Apache     22:51 | コメント (0) | トラックバック (0)

2007年5月30日

Apache HTTP Server 2.2

ウェブのサーバーソフトとしては Apache の HTTPサーバー が有名である。 私も長い間Apacheを利用しているのだが、 今まで利用してきたのは 2.0系であった。 もう2.2系がリリースされてからしばらく経ったので そろそろアップグレードの時期かもしれないと思い、 2.2系では 2.0系から何が変わったのか、 既に使えるレベルの安定性なのかを調査してみようと思う。

まず、Apache の HTTPサーバーを構築しようとする際、 現在のところ、3つのバージョンが存在していることを 知らないといけない。 ウィキペディアによると、
  • 1.3系 (安定志向を好むユーザーに利用されている。ノウハウも蓄積されていて十分に“枯れた”バージョンである。)
  • 2.0系 (新しい機能を使いつつ安定志向も好むユーザーに利用されている。)
  • 2.2系 (最新の機能を好むユーザーに利用されている。)
と分類されている。

Apache2.2系の新機能については、 「Overview of new features in Apache 2.2」 にまとめられている。 また、日本語の解説としては @ITの 「Apache 2.2でWebサイトをパフォーマンスアップ!」 がある。

沢山ある変更点のうち、個人的に気になったモノを挙げてみると、

ロード済みモジュール一覧表示がDSOモジュールに対応した「-M」オプション

これは個人的に以前から欲しかった機能。 DSOを使って動的に組み込んだモジュールが キチンと組み込まれたかがどうかが表示できる、 という新機能。

Perl互換正規表現ライブラリ5.0の同梱

PCRE(Perl Compatible Regular Expression Library) version 5.0が 採用されたことで、 「.htaccess」や「httpd.conf」のようなコンフィグレーションファイルで、 より複雑な文字列パターンを、Perl 5.0互換の正規表現を用いて 記述可能になったようだが、はたして具体的には どのような記述ができるのか要調査。

プロキシ機能によるロードバランシングの実現

今は自分には直接関係ないが、将来 アクセスが増えたりした場合にはご厄介になるかもしれない機能。 このロードバランシング機能に ご厄介になれるように 頑張りましょう。

mod_sslモジュールのRFC 2817対応

サービスポート80番に平文で接続してから TLS暗号化通信に移行するRFC 2817スタイルをサポート、 とある。 これにより、HTTPはサービスポート80番、 HTTPSはサービスポート443番という区別が不要になり、 名前ベースで設定されたバーチャルホストのHTTPSも可能になるそうだ。 確かに、今まで 複数のドメイン名をもつバーチャルホストにおいては、 そのうち 一つのドメインでしかSSLが掛けられなかった。 これは便利ではあるが、まだ対応しているWebブラウザが ないようだ。今後に期待。

【参考リンク】

カテゴリー: Apache     22:30 | コメント (0) | トラックバック (0)

2007年5月29日

Apache の コマンドライン

サーバー Apache の コマンドラインの引数について 自分なりの覚書。

Apache のコマンドラインについては 「Apache HTTP Server Version 1.3 httpd マニュアル(日本語)」 にある。これは、バージョンが 1.3 なのだが 「 Version 2.0 」 については日本語はないようだ。

コマンドラインからの Apacheサーバー の実行方法は、 例えば Apache の インストールされている場所が 「/usr/local/apache2/bin/httpd」だったとすると 具体的には、
/usr/local/apache2/bin/httpd -t
といった感じ。

「-t」オプション

このオプションをつけると、httpd.conf の 文法チェックを行ってくれる。 既に httpdデーモンが走っている状態でも問題ない。 実際は、
# /usr/local/apache2/bin/httpd -t
Syntax OK
こうなる。またhttpd.confに文法上のエラーがあった場合には、
# /usr/local/apache2/bin/httpd -t
Syntax error on line 1394 of /usr/local/apache/conf/httpd.conf:
Invalid command 'ServerNane', perhaps mis-spelled or defined by a module not included in the server configuration
のようなメッセージが表示される。

「-S」オプション

もし httpd.conf の設定で バーチャルホスト を使用しているなら この「-S」オプションで その内容の確認できる。 例えば、
# /usr/local/apache2/bin/httpd -S
VirtualHost configuration:
192.168.100.50:80         is a NameVirtualHost
         default server www.abc.com (/usr/local/apache/conf/httpd.conf:1064)
         port 80 namevhost www.abc.com (/usr/local/apache/conf/httpd.conf:1064)
         port 80 namevhost www.def.com (/usr/local/apache/conf/httpd.conf:1116)
Syntax OK
といった感じ。(上記のアドレスやドメインは架空のものです) これで、バーチャルホストの記述が正しいかどうか確認できる。 各行の最後に表示されているのは httpd.conf 内で そのバーチャルホストが定義されている行番号。

ということで、Apacheサーバーの設定変更する場合は httpd.conf を変更した後、 「-S」オプション付きで httpd を実行して、 問題がなければ、デーモンのリスタートを行う、 という手順を踏んだ方がよさそうだ。 ちなみに、 「-S」オプションは 「-t」オプションを含んでいるので、 「-S」オプションだけでもよいと思う。

【参考リンク】

カテゴリー: Apache     22:35 | コメント (0) | トラックバック (0)

2007年5月28日

Pioneerカーナビからの音声が出ない問題の解決方

先日の Pioneer カーナビシステム「AVIC-D2」 の 音が出ない問題について 今までの調査と実際に実験したみた結果から、 以下のような結論に達した。

  • Nissan/Infiniti の一部の車種には 純正オプションとしてボーズ・サウンドシステム(BOSE Sound System)が 搭載されている車種がある。 今回の問題はこれに該当したと推定される。

  • 車に内蔵されている BOSE のパワーアンプを動作させるためには、 Pioneer カーナビシステム「AVIC-D2」 から出ている System Remote Control 端子 (Blue/white, To system control terminal of the power amp (max. 300 mA 12 V DC). ) を 車側の対応する端子に接続する必要がある。

  • Pioneer カーナビシステム「AVIC-D2」からのサウンド信号出力は スピーカー端子ではなく、ライン出力端子から車側へ接続する必要がある。 そうしなければ、パワーアンプを2段に接続してしまうことになる。 実際の問題として、事前の接続がスピーカー端子からの接続だったので、 そのままテストしてみた。 その結果、ほんの少しボリュームつまみを回しただけで とても大きな音になってしまった。 このままだと不用意に ボリュームつまみを回しすぎてしまうと、 スピーカーやアンプを壊してしまう可能性があったので、 ライン出力端子からの接続に変更した。

ということで、とりあえずパスファインダー(Pathfinder)の 内蔵スピーカーから音が出てくるようになった。 現在のところ上記のとおり、 Pioneer カーナビシステム「AVIC-D2」に内蔵されているパワーアンプは使用せず、 音声信号をライン出力から出力し、それを 車に内蔵されている BOSEのパワーアンプで増幅して使う設定とした。 さすがに BOSEのアンプとスピーカーだけあって、 音質は申し分なかった。

カテゴリー: カーオーディオ     22:30 | コメント (0) | トラックバック (0)

2007年5月27日

md5 と ソフトウェアのダウンロード

ソフトウェアをダウンロードする際に、 「 .md5 」 という拡張子が付いたファイルが 同一ディレクトリに置いてあったりすることがある。 これはファイルをダウンロードする際に そのファイルが破損していないことを 確認する為に用いられるものである。

通常この「 .md5 」 という拡張子が付いたファイル(値)は ダウンロード用のファイルから算出された MD5ハッシュ値(いわゆるMD5チェックサム)である。 ファイル配布元が提示しているMD5ハッシュ値と ダウンロード後に こちらで算出した値が同じであれば ダウンロードしたファイルが破損していないことの証明になる。

具体的に FreeBSD に関して言うと、 FreeBSDには md5 というコマンドがあり これで 任意のファイルの MD5ハッシュ値 を算出できる。 例えば、
% md5 /etc/rc.conf
MD5 (/etc/rc.conf) = 155ee1e19f478808925cbbf8873608e1
のような感じ。

md5 以外として PGP や gpg、 最近では sha256 とかも 同様につかわれているようだ。

【参考リンク】

カテゴリー: FreeBSD , Security , Software     22:50 | コメント (0) | トラックバック (0)

2007年5月26日

カー・ナビゲーションの音声問題

あまりカー・オーディオは 経験がなかったのだが お知り合いの方の 新たに装着した カー・ナビゲーション・システムから 音がでない、ということで、 少しだけお手伝いさせていただいた。

車は 日産(Nissan) の パスファインダー(Pathfinder)、 もちろんアメリカ仕様。 この Pathfinder に Pioneer の 「AVIC-D2」という カー・ナビゲーション・システムを取り付けてあった。

実はこのシステム、取り付けてから既に数ヶ月経っているそうだが、 ナビゲーションについては今のところ何の問題もないそうだ。 ところが全く音がでない。 ラジオやCDも聞けないのに加えて、 何と言っても、ナビゲーションの音声が聞こえない。 運転しながらずっと画面を見ているわけにもいかないので、 結局、音声がないために、道を間違ってしまうこともあるとか。

カーナビ本体を ダッシュ・ボードから取り外し、 配線を一通り確認してみたが、問題は見つからなかった。 ここで、問題点がカーナビ本体側にあるのか、あるいは、 車側にあるのかを判断するために、 別にあまっていたスピーカーを直接接続してみた。 すると全く問題なく音がでた。 少なくとも、これでカーナビ本体は問題がないことが判明した。

問題は、車側にあることが判明したのだが、 以前のカー・オーディオがついていた際にはきちんと音がでていたそうだ。 これについてはもっと情報を整理しなければならない、ということで 今日のところは 元に戻すことにした。 その際、持ってきたスピーカーを 助手席の足元においたまま配線して、 カーナビ本体を元通りに取り付けた。 少しカッコウは悪いが、これで一応、音が出るようになった。 さて、これから、情報収集して問題点を洗い出さなくてはならない。

【参考リンク】

カテゴリー: カーオーディオ     22:47 | コメント (0) | トラックバック (0)

2007年5月25日

ブロークン・ウィンドウ(割れ窓)理論

以前のブログで紹介した書籍 『人生カンタンリセット! 夢をかなえる「そうじ力」』 の 27ページから「ブロークン・ウィンドウ(割れ窓)理論」が紹介されている。

この「ブロークン・ウィンドウ(割れ窓)理論」は、 1969年、スタンフォード大学(Stanford University)の心理学者、 フィリップ・ジンバルド教授による実験によって検証されたそうだ。 その実験の内容について、 少し長いが引用させていただくと、
まず、街の中で比較的治安の良い場所を選びます。 そこで一週間、「ボンネットを開けっ放しの状態で放置した」自動車と、 ボンネットを開けっ放しの状態に「窓ガラスが割れている状態を加えた」自動車の、 2つのパターンの様子を見ました。 そこには、歴然とした差があらわれたというのです。

ボンネットを開けているだけの状態では、一週間、特に何も起こりませんでした。

しかし、その状態に窓ガラスの破損を加えただけで、なんと、10分後には バッテリーが持ち去られ、続いてタイヤもすべて持ち去られました。

さらには落書きや投棄、破壊が行われて、一週間後には 完全にスクラップ状態にまで破壊されたのです。
と説明されている。

また、この「ブロークン・ウィンドウ(割れ窓)理論」は、 「ウィキペディア「割れ窓理論」」 でも 詳しく解説されている。

舛田 光洋 氏は この説明の最後で
車の窓が割れている状態が、 マイナスの磁場を作り上げ、 同質のものを引き寄せ、それはどんどん、 エスカレートしていくという大変興味深い実験です。
と、まとめておられる。

これに関しては、自分の経験則からしても同様に感じていた。 例えば、ショッピング・モール等の公共の駐車場に車を停めている際に、 車に傷がつけられるかどうか、という場合。 たとえ その車が それほど高級車じゃなくても、 また新しくなくても、隅々までピカピカに磨いてあると、 表面が泥だらけの車よりも 傷がつけられにくいようだ。

この原因は、車の横を通る人が、車がピカピカだと 無意識に傷つけないように 気をつけるようになるのだと思う。 反対に、汚れた車の横を通る際は、 そのような意識や注意が湧いてこないようだ。

このように、車に傷をつけられたくなかったら、 車をいつもピカピカにしておいた方がよさそうだ。

【参考リンク】

カテゴリー: 掃除・整理・整頓     22:57 | コメント (0) | トラックバック (0)

2007年5月24日

「 LibIDN Ruby Bindings 」のテスト

前回のブログで 「LibIDN Ruby Bindings」 をインストールするところまできたので、 それでは実際に このライブラリが動作するのかどうか、 テスト用のRubyスクリプトを書いて確認してみる。

「国際化ドメイン名 IDN(Internationalized Domain Name) 」において 最も基本的な変換をテストしてみる。
require 'idn'
include IDN

idnAscii = Idna.toASCII("日本語ドメイン名example.jp")
puts 'Idna.toASCII: ' + idnAscii

idnUnicode = Idna.toUnicode('xn--example-6q4fyliikhk162btq3b2zd4y2o.jp')
puts 'Idna.toUnicode: ' + idnUnicode

このスクリプトを見てすぐに わかるとおり、 Idna.toASCII というメッソドが UTF-8 のユニコードのドメイン名から ASCII文字列に変換するメソッド。 そして、Idna.toUnicode というメッソドが その逆変換である。

注意点として、このスクリプト内ではユニコード(UTF-8)を使っているので ファイルを保存する際には、以前のブログ 『ruby での「 Invalid char `\357' in expression 」エラーメッセージ』 でレポートしたとおり、UTF-8N を指定して保存しておくこと。

このスクリプトの実際の実行結果は
% ruby -rubygems ./IDNtest.rb
Idna.toASCII: xn--example-6q4fyliikhk162btq3b2zd4y2o.jp
Idna.toUnicode: 日本語ドメイン名example.jp
となる。

昨日のブログの通り、この「 LibIDN Ruby Bindings 」のインストールには RubyGemsを採用している。 しかし、上記スクリプトのソース・コード内に 「 require 'rubygems' 」の1行を入れていないので、 変わりにrubyの実行時に 「-rubygems」オプション をつけて対応した。

それから Punycode(ピュニコード)のエンコードとデコード のテスト・スクリプト。
require 'idn'
include IDN

punyAscii = Punycode.encode("日本語ドメイン名example")
puts 'Punycode.encode: ' + punyAscii

punyUnicode = Punycode.decode("example-6q4fyliikhk162btq3b2zd4y2o")
puts 'Punycode.decode: ' + punyUnicode
これも 見たとおり、Punycode.encode と Punycode.decode を呼ぶだけ。 その実行結果は
Punycode.encode: example-6q4fyliikhk162btq3b2zd4y2o
Punycode.decode: 日本語ドメイン名example
となる。

【参考リンク】

カテゴリー: DNS・URL・URI , Ruby     22:23 | コメント (0) | トラックバック (0)

2007年5月23日

「 LibIDN Ruby Bindings 」のインストール

GNU の IDN Library 「 Libidn 」をインストールし テストしてきたが、今度はこれをRubyから呼べるようにしてみよう。 探してみると、 「LibIDN Ruby Bindings」 という Rubyのライブラリがみつかったので 早速インストールしてみる。

インストールの方法は LibIDN Ruby Bindings サイトのドキュメントによると、
  • RubyGemsによる自動インストール
  • Rakeによる 半自動インストール
  • extconf.rb による 手動インストール
と3つが挙げられている。

ここでは、最も簡単な RubyGemsによるインストールを行ってみる。
# gem install --remote idn
Building native extensions.  This could take a while...
ERROR:  Error installing idn:
        ERROR: Failed to build gem native extension.

/usr/local/bin/ruby18 extconf.rb install --remote idn
checking for main() in -lidn... yes
checking for idna.h... no
ERROR: could not find idna.h header file!

  Please install the GNU IDN library or alternatively specify at least one
  of the following options if the library can only be found in a non-standard
  location:
    --with-idn-dir=/path/to/non/standard/location
        or
    --with-idn-lib=/path/to/non/standard/location/lib
    --with-idn-include=/path/to/non/standard/location/include
エラーが起きてしまった。 idna.h が見つからないようだ。

それなら、と --with-idn-include オプションを付けてみた
# gem install --remote idn --with-idn-include=/usr/local/include
ERROR:  While executing gem ... (OptionParser::InvalidOption)
    invalid option: --with-idn-include=/usr/local/include
#
ところが、まだエラーがでる。

そこで、 「LibIDN Ruby Bindings」 の記述を参考にして gemのコマンド行を2行に分けて指定してみた。
# gem install --remote idn -- \
? --with-idn-include=/usr/local/include
Building native extensions.  This could take a while...
Successfully installed idn-0.0.2
1 gem installed
Installing ri documentation for idn-0.0.2...
Installing RDoc documentation for idn-0.0.2...
#
今度は成功したようだ。 しかし、なぜ1行ではエラーが起こるのか?

1行で
# gem install --remote idn -- --with-idn-include=/usr/local/include
のようにしても成功した。 どうしても「 -- 」が必要なようだ。 ただし、これに関しては RubyGemsのドキュメントをみても どこにもみつけることができなかった。

【参考リンク】

カテゴリー: DNS・URL・URI , Ruby     22:56 | コメント (0) | トラックバック (0)

2007年5月22日

libidn 付属の idn コマンド

前回のブログで FreeBSDに GNUの「 libidn 」がインストールされたわけだが、 と同時に コマンドライン上で libidn をテストできる 「idn」というコマンドもインストールされている。 では 早速 idnコマンドを試してみることにする。

まずは、オプションをつけずに そのまま実行してみると、
% idn
libidn 1.2
Copyright 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson.
GNU Libidn comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Libidn under the terms of
the GNU Lesser General Public License.  For more information
about these matters, see the file named COPYING.LIB.
Type each input string on a line by itself, terminated by a newline character.
abc
abc

idn: tld_check_4z: Missing input
%
と このように表示される。 これで、libidn のバージョンが 1.2 であることが確認できる。 その後、入力を待っているので、 ここでは試しに「abc」+「エンターキー」と打ってみると、 そのまま 「abc」が表示された。 次の行で 何も入力せず「エンターキー」と打ってみると、 「idn: tld_check_4z: Missing input」というエラー・メッセージを表示して終了してしまった。

次に ヘルプを表示させてみる。
% idn -h
libidn 1.2

Command line interface to the internationalized domain name library.

All strings are expected to be encoded in the preferred charset used
by your locale.  Use `--debug' to find out what this charset is.  You
can override the charset used by setting environment variable CHARSET.

To process a string that starts with `-', for example `-foo', use `--'
to signal the end of parameters, as in `idn --quiet -a -- -foo'.

Usage: libidn [OPTIONS]... [STRINGS]...

  -h, --help               Print help and exit
  -V, --version            Print version and exit
  -s, --stringprep         Prepare string according to nameprep profile
  -d, --punycode-decode    Decode Punycode
  -e, --punycode-encode    Encode Punycode
  -a, --idna-to-ascii      Convert to ACE according to IDNA (default)
  -u, --idna-to-unicode    Convert from ACE according to IDNA
      --allow-unassigned   Toggle IDNA AllowUnassigned flag  (default=off)
      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag  (default=off)
  -t, --tld                Check string for TLD specific rules
                             Only for --idna-to-ascii and --idna-to-unicode
                             (default=on)
  -p, --profile=STRING     Use specified stringprep profile instead
                             Valid stringprep profiles are `Nameprep', `iSCSI',
                             `Nodeprep', `Resourceprep', `trace', and
                             `SASLprep'.
      --debug              Print debugging information  (default=off)
      --quiet              Silent operation  (default=off)
%
と このようにヘルプが表示される。 ここに、locale により適切な charset が設定されている必要がある、 と書いてある。 また、現在の charset は --debug オプションをつけるとわかるようだ。

そでは idn コマンドに --debug オプションをつけてCHARSET の確認。 ここでは、無駄な表示を省くために、--quiet もつけた。
% idn --debug --quiet ""
Charset `US-ASCII'.
idn: tld_check_4z: Missing input
こでれ、Charset が「 US-ASCII 」であることがわかった。

そこで
% setenv CHARSET UTF-8
% printenv | grep CHARSET
CHARSET=UTF-8
% idn --debug --quiet ""
Charset `UTF-8'.
idn: tld_check_4z: Missing input
%
として Charset を「 UTF-8 」に変更して それを idn --debug コマンドで確認している。

以前のブログで 「日本語ドメイン名EXAMPLE.jp」というドメイン名は、 「xn--example-6q4fyliikhk162btq3b2zd4y2o.jp」 となる例を挙げていたが、これが idnコマンド で実際に変換されるかどうかテストしてみる。 上記のヘルプより、「-a」が「Convert to ACE according to IDNA (default)」とあるので
% idn --quiet -a 日本語ドメイン名example.jp
 xn--example-6q4fyliikhk162btq3b2zd4y2o.jp
%
それから、「-u」が「Convert from ACE according to IDNA」とあるので、
% idn --quiet -u xn--example-6q4fyliikhk162btq3b2zd4y2o.jp
日本語ドメイン名example.jp
%
となり、どちらの方向にも変換が正しく行われていることが確認できる。

【参考リンク】

カテゴリー: DNS・URL・URI     22:00 | コメント (0) | トラックバック (0)

2007年5月21日

FreeBSDにおける libidn のインストール

昨日の GNU IDN Library - Libidn からの続きとして、 このライブラリをFreeBSDに実際にインストールしてみる。

FreeBSDでは ご多分に漏れず GNU libidn も ports によりインストールできる。 ディレクトリは /usr/ports/dns/libidn/ となっている。 そこで
# cd /usr/ports/dns/libidn/
# make install
のように インストールを開始する。 makeから沢山の情報が表示されるが、 その中に
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
とあるので、libidn が /usr/local/lib にインストールされたことがわかる。

また、
test -z "/usr/local/include" || ../build-aux/install-sh -c -d "/usr/local/include"
 install  -o root -g wheel -m 444 'stringprep.h' '/usr/local/include/stringprep.h'
 install  -o root -g wheel -m 444 'idna.h' '/usr/local/include/idna.h'
 install  -o root -g wheel -m 444 'punycode.h' '/usr/local/include/punycode.h'
 install  -o root -g wheel -m 444 'idn-free.h' '/usr/local/include/idn-free.h'
 install  -o root -g wheel -m 444 'pr29.h' '/usr/local/include/pr29.h'
 install  -o root -g wheel -m 444 'tld.h' '/usr/local/include/tld.h'
test -z "/usr/local/include" || ../build-aux/install-sh -c -d "/usr/local/include"
 install  -o root -g wheel -m 444 'idn-int.h' '/usr/local/include/idn-int.h'
とあるので、各種の ヘッダー(インクルード)ファイルが /usr/local/include/ 下にインストールされたことがわかる。

そして
install -o root -g wheel -m 555 -s .libs/idn /usr/local/bin/idn
から、idn コマンドが ディレクトリ /usr/local/bin/ 下にインストールされたこともわかる。

それから
install  -o root -g wheel -m 444 'punycode.el' '/usr/local/share/emacs/site-lisp/punycode.el'
install  -o root -g wheel -m 444 'idna.el' '/usr/local/share/emacs/site-lisp/idna.el'
のように Emacs Lisp API もインストールされている。 その後、多数の manページがインストールされている。

【参考リンク】

カテゴリー: DNS・URL・URI , FreeBSD     22:28 | コメント (0) | トラックバック (0)

2007年5月20日

GNU IDN Library - Libidn

昨日のブログで 国際化ドメイン名 (IDN) のソフトウェア開発環境(ライブラリ)について まとめてみたが、今回のブログでは その中でも GNU IDN Library 「 Libidn 」を取り上げてみる。

このGNUの「 Libidn 」とは IETFの 「国際化ドメイン名 (IDN: Internationalized Domain Names ) ワークグループ」 によって定義されている Stringprep, Punycode そして IDNA規格 を実現した Cライブラリである。

このライブラリには Stringprep と呼ばれるUnicode の正規化や Nameprep, iSCSI, SASL や XMPP が。 また、IDNA により定義されているPunycode や ACE(ASCII Compatible Encoding) 。 TLD(Top-Level Domain)を定義する メカニズム 等が含まれている。 詳しくは、 「GNU IDN Library - Libidn」 に説明がある。

この Libidn に含まれる関数も
  • Utility Functions
  • Stringprep Functions
  • Punycode Functions
  • IDNA Functions
  • TLD Functions
  • PR29 Functions
と分類が分かれている。 それぞれの 関数群の具体的な使用方法については、 「Libidn Manual web page」 から、各種のフォーマットのマニュアルが参照可能である。

【参考リンク】

カテゴリー: DNS・URL・URI     22:09 | コメント (0) | トラックバック (1)

2007年5月19日

国際化ドメイン名 (IDN) のソフトウェア開発環境(ライブラリ)について

国際化ドメイン名(IDN : Internationalized Domain Name) を 操作するプログラムを開発する際に RFCを読みながら一から開発なんかしていられない。 そこで、国際化ドメイン名 (IDN) を 操作できるライブラリやソフトウェア開発キット (SDK) を探してみる。

JPNIC 「 idnkit 」

まず、日本ネットワークインフォメーションセンター(JPNIC) の 「国際化ドメイン名ツールキット(idnkit)バージョン1.0」。 idnkitとは
  • 国際化ドメイン名とPunycodeのエンコーディング変換コマンド: idnconv
  • IDNの処理機能を提供するC言語用API(ライブラリ): libidnki
から構成されている、とある。 また、 idnkit とは別に、ダウンロード・ページには 各種Windows の Winsock32 ラッパー「idn wrapper」も含まれているようだ。 これをインストールすると、国際化ドメイン名に対応していないWindowsアプリが 国際化ドメイン名対応になるらしい。

この idnkit を FreeBSDにインストールするには 「ports/dns/idnkit/」 のページもあるので、通常のportsのインストールと同様にすればよいであろう。 また、PHP等から利用するには、 「php-idnkit について」 のページに解説がある。

VeriSign 「 IDN SDK 」

次に、VeriSign の 「IDN SDK」 こいつは Java API と C API をサポートしているようだ。

GNU IDN Library 「 Libidn 」

最後に、お馴染みの GNU からリリースされている IDN Library 「 Libidn 」 また、Rubyから この GNU の Libidn を利用するための Ruby Bindings for the GNU LibIDN library というのがある。 これについて詳しくは、LibIDN Ruby Bindings の 「ドキュメント」 ページにある。

その他

上記以外のライブラリやSDKについては、 「IDN-enabled Applications「Programming Languages」」 に 詳しくまとめられている。

【参考リンク】

カテゴリー: DNS・URL・URI     22:41 | コメント (0) | トラックバック (0)

2007年5月18日

日本語ドメイン名に関する技術的制限のまとめ

日本ネットワークインフォメーションセンターの 「汎用 JP ドメイン名登録等に関する技術細則」 から、日本語ドメイン名に関する 主な 技術的制限(ルール)を まとめておく。

  • 「ドメイン名」は、ラベルをピリオド(".")で区切って連結した文字列である。
  • 「ASCIIラベル」は、英字26文字("A"から"Z")、数字10文字("0"から"9")、そして ハイフン("-") の 合計 37文字からなる文字列である。ただし、ASCIIラベルの先頭と末尾の文字はハイフン であってはならない。
  • ASCIIラベル中では、英字の大文字・小文字の区別はなく同じ文字とみなされる。
  • ASCIIラベルの長さは、63文字以下でなければならない。
  • 日本語ラベルの長さは、15文字以下でなければならない。
上記に、「日本語ラベルの長さが15文字以下」とあるが、 これは15文字までの日本語であれば、Punycode(ピュニコード)にエンコードした結果が ASCIIラベルの63文字以内に収まるのであろう。 実際には、15文字よりもっと長い日本語文字列でも 十分に63文字以内に収まるのだが、 Punycode(ピュニコード)の場合、結果の文字長は 変換してみなければわからないので このような制限が設けられていると思われる。

また、上記細則には記載されていないが、 ドメインのラベルを連ねた際の長さについて、 RFC1035 [DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION] には、
To simplify implementations, the total number of octets that represent a domain name (i.e., the sum of all label octets and label lengths) is limited to 255.
とある。これの日本語訳では
実装を単純化するために、ドメイン名を表すオクテットの合計の数(すべてのラ ベルオクテットとラベル長の合計)は255に制限されます。
とある。 結局 規格的には ラベル長の合計は 255 に制限されているようだ。

【参考リンク】

カテゴリー: DNS・URL・URI     22:00 | コメント (0) | トラックバック (0)

2007年5月17日

日本語ドメイン Punycode 変換・逆変換サービス一覧

日本語を含めた 国際化ドメイン名 (IDN) に対応した Punycode 変換・逆変換サービス を提供しているサイトを まとめてみる。



また、日本語.jp の 「国際化ドメイン名対応アプリケーション」 ページには 国際化ドメイン名に対応したアプリケーションが まとめられている。 ちなみに、この情報のオリジナルはベリサイン社の 「IDN-enabled Applications」 ページとなっている。

【参考リンク】

カテゴリー: DNS・URL・URI     22:05 | コメント (0) | トラックバック (0)

2007年5月16日

Punycode(ピュニコード)

Punycode(ピュニコード)とは インターネットで使われるドメイン名にアルファベットや数字以外に漢字なども使えるようにする 国際化ドメイン名( IDN (Internationalized Domain Name) ) で使われる文字符号化方式で、IETFにより、 「RFC3492」 として標準化されている。

国際化ドメイン名では、ドット(.)で区切られたドメイン名の階層レベルごとに エンコードされ、それぞれの先頭には「xn--」という識別子が付けられる。 また、大文字と小文字は区別されない。

特に このピュニコードでは、 文字数最長63文字、 文字の種類37文字 と 非常に過酷な制限のあるドメイン名の空間において、 できるだけ効率よくエンコードができるように 非常に複雑な変換を行っている。 その結果、通常のエンコードでは予想できない変換結果となる。

具体的には、例えば、アルファベットと全角文字が交じり合った 「日本語ドメイン名EXAMPLE.jp」というドメイン名は、 ピュニコードに変換すると、 「xn--example-6q4fyliikhk162btq3b2zd4y2o.jp」 のように、「EXAMPLE」という部分が小文字に変換されかつ 前の方に来ている。 また 「3年B組金八先生.jp」のように、「3」と「B」に間に「年」という 日本語が存在している場合でも 「xn--3b-ww4c5e180e575a65lsy2b.jp」 というように、「3」と「B」が先頭部分に移動してくっついてしまっている。

このおもしろい変換メカニズムには 「一般化可変長整数」というアルゴリズムが採用されており、 詳細については もちろん 前述の 「RFC3492」 に書かれているわけだが、それを読み解くのは大変だ。 それを 「日本語ドメイン取得.com」 の 「Punycode (プニーコード)」 解説ページでは とても判りやすく解説してくれている。

【参考リンク】

カテゴリー: DNS・URL・URI     22:47 | コメント (0) | トラックバック (0)

2007年5月15日

IDNA(Internationalizing Domain Name in Application)

IDNAについて 「日本ネットワークインフォメーションセンター (JPNIC: Japan Network Information Center)」 の 「国際化ドメイン名」 のページから引用させていただくと、
国際化ドメイン名を使って通信を行う際には、 ASCII文字列からなるドメイン名に変換を行った上で通信が行われることになりますが、 この変換の際に使われる技術と処理手順を規定しているものが IDNA(Internationalizing Domain Name in Application)と呼ばれる技術です。

このIDNAでは、 ユーザ側のアプリケーションで国際化ドメイン名の解釈を行うことや、 入力された文字列をNAMEPREPという仕組みで正規化すること、 既存のDNSとの互換性を保つために国際化ドメイン名をPunycode と 呼ばれるアルゴリズムでASCII文字列に変換することなどが定められています。

国際化ドメイン名を利用する際には、 各アプリケーションはこのIDNAに従って国際化ドメイン名をネットワークに送出します。
とある。

また、 RBB Today IT辞典 の 「IDNA(アイディエヌエー。Internationalizing Domain Names in Applications)」 によると、このIDNAの仕様は「RFC 3490」として規定されている、 とあり、具体的には、
  1. ドメイン名に使用できる文字は、Unicodeで規定されている文字(一部使えない文字もある)とする。
  2. Unicodeの文字列を NAMEPREP により正規化を行う。
  3. ASCII文字列への変換(ACE、ASCII Compatible Encoding)には、Punycodeを使用する。
  4. Punycodeで変換された文字列の前には、変換されたことがわかるように「xn--」(ACE prefix)をつける。
のようなことを国際化ドメイン名を扱うアプリケーションの内部で行うことになっている、 とある。

【参考リンク】

カテゴリー: DNS・URL・URI     22:38 | コメント (0) | トラックバック (0)

2007年5月14日

国際化ドメイン名 (IDN:Internationalized Domain Name)

インターネットのアドレスのうち、「skymerica.com」のような部分のことを ドメイン名という。 このドメイン名に日本語をはじめとした アルファベット以外の多言語文字を使ったモノを 「国際化ドメイン名 (IDN)」と呼んでいる。 ちなみに、IDNとは「Internationalized Domain Name」の頭文字。

この国際化ドメイン名については、 「日本ネットワークインフォメーションセンター (JPNIC: Japan Network Information Center)」 の 「国際化ドメイン名」 ページに 詳しい説明がある。 それによると、
国際化ドメイン名とは、 従来のドメイン名で使用されている アルファベット、 数字、ハイフン に加え、そのラベルに 漢字 や ひらがな、アラビア文字 などの ASCII以外の文字を使えるようにするもので、 英語では IDN(Internationalized Domain Name) と呼ばれています。
とある。 これにより、われわれにとっては日本語ドメイン名が可能となる。

この国際化ドメイン名を実現するために、 現行のDNSの構造を壊すことがないように 7bit ASCIIだけで構成される文字列を採用している。 但し、アプリケーション側、つまり ブラウザやメールソフトの方で これらに対応する必要がある。

国際化ドメイン名を実現するための技術的なしくみ としては、 大きく2つのステップがある。 ひとつが「NAMEPREP」と呼ばれる入力された文字列の正規化技術。 ちなみに正規化とは、一定の標準形に整形すること。 例えば、全角の「。」(句点)は半角の「.」(ドット)に、 全角の「jp」は半角の「jp」に変換するようなこと。

もうひとつが「Punycode」と呼ばれる 多言語を7bit ASCII文字列へ変換する技術である。 例えば、「日本語ドメイン名EXAMPLE.jp」というドメイン名は、 「xn--example-6q4fyliikhk162btq3b2zd4y2o.jp」 というドメイン名に変換される。

【参考リンク】

カテゴリー: DNS・URL・URI     22:28 | コメント (0) | トラックバック (0)

2007年5月13日

データ形式の変換サービス

毎日コンピュータで作業していると、 データの形式をいろいろと変換したい時がよくある。 そんな時のために、 「 メディアコンバート(Media-Convert) 」 という のサービスがある。

データ形式の変換ソフトは フリーのモノが沢山でまわっているが、 それらは使おうとする際に 事前に 自分のPCにインストールしなければならない。 今後 何度も使わなければならないのであればまだしも、 1回や2回のデータ・コンバートのために 専用のソフトをインストールするのは できれば避けたい。

そこへいくと この 「 メディアコンバート(Media-Convert) 」 のサービスでは、インターネットが繋がっているところであれば、 ブラウザだけでOK。完全に無料のサービスだ。 変換できるファイルの形式は、ドキュメント、テキストファイル系では マイクロソフト(Microsoft)のオフィス(Office)関連を サポートしているのはもちろんのこと、 ZIPやLHA等のアーカイブ系、 WMVやFLVの映像系、 GIFやJPEGの画像系、 WAVやMP3といった音響系と 非常に多岐に渡っているようだ。

使い方はいたって簡単で、 ファイルの入力形式(変換前)と 出力形式(変換後)を選び、ファイルを送信するだけ。 また、手元のファイルの代わりにURLを指定することもできるので、 インターネットからあるファイルをダウンロードして そのデータ形式を変換しなければならない場合など、 変換された結果ファイルだけを手に入れることも出来る。

機密文書の形式を変換するために、 このサービスにファイルをアップロードするのは ちょっと心配かもしれないが、 少なくとも既にインターネット上で公開されている データのフォーマットを変換するのであれば なんの問題もないであろう。

【参考リンク】

カテゴリー: Internet Service     22:54 | コメント (0) | トラックバック (0)

2007年5月12日

rake - Ruby Make

rake」 とは、ビルドツールの一種で Ruby版のMake といったところ。 名前もいかにも それらしい。

rake の特徴としては、
  • Makefile にあたる「Rakefile」が 完全に Rubyの文法で記述できるので、余計な変な文法を憶える必要がない。
  • 必要条件と共にタスクを指定できる。
  • 暗示的タスクを統合するためのルール・パターンを記述できる。
  • FileList という機能で ファイル名やパスを柔軟に操作することがきる。
  • Rakefileを簡単に記述するためのパッケージ・タスクのライブラリが揃っている。
となっている。

では、実際にインストールしてみる。 インストールの方法には 通常の方法 と gemを用いた方法が紹介されている。 先日せっかく RubyGems を インストールしたので、 ここでは gemコマンドを使って Rake をインストールしてみる。
# gem install --remote rake
すると
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.8.1
1 gem installed
Installing ri documentation for rake-0.8.1...
Installing RDoc documentation for rake-0.8.1...
#
のように rake がインストールされた。 実際にインストールされたか確認してみると、
% rake -V
rake, version 0.8.1
%
のようにバージョンを確認することができる。

それから 如何にして「Rakefile」を記述するかに関しては 「Rakeの覚え書き」 に 非常に丁寧な説明があるのでこちらを参考のこと。

【参考リンク】

カテゴリー: Ruby     22:13 | コメント (0) | トラックバック (0)

2007年5月11日

RubyGems の インストール

昨日のブログで調査した「RubyGems」を 実際にインストールしてみる。

RubyGems Manuals」 の 「Installing RubyGems」 によると、 RubyForge「rubygems ファイル」のページ (http://rubyforge.org/frs/?group_id=126) に ソースコードがあるのでそれをダウンロードしてくる、とある。 現段階で最新のソースのアドレスが 「http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz」 なので
# cd /usr/local/src
# wget http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz
# tar xzf rubygems-0.9.2.tgz
# cd rubygems-0.9.2
# ruby ./setup.rb
これで gemコマンド が使えるハズである。

RubyGems の インストール後の注意点として重要な事項がある。 今後、gemコマンドを用いてRubyのパッケージ(ライブラリ)を インストールして、それを使ってゆくわけだが、 その際に、Rubyにどうやって gemsレポジトリーを知らせるか、 ということが問題となる。 これは、RubyGemsがRubyの標準ライブラリ・ディレクトリではなく RubyGems独自のディレクトリにライブラリを置いていることに起因している。 そのため、 今後、gemコマンドによってインストールされたライブラリを Rubyスクリプト内から呼ぶ場合には、
require 'rubygems'
require 'some_gem_library'
# ...
のように 事前に「require 'rubygems'」の一行を加える必要がある。

ところが、これでは 全てのスクリプトを変更しなければならなくなってしまう。 それを回避する別の方法が用意されている。 それが
ruby -rubygems my_program_that_uses_gems
のように Rubyのコマンドラインに「-rubygems」オプションをつけること。

ところが、これでも Rubyを実行するたびに毎回 「-rubygems」オプションを つけなければならない。 そこで もうひとつの別の方法が、 環境変数 RUBYOPT に rubygems という値をセットしておくこと。 例えば、Bシェル系であれば .profile 等に
export RUBYOPT=rubygems
を Cシェル系であれば、.cshrc 等に
setenv RUBYOPT rubygems
を設定しておけばよい。

【参考リンク】

カテゴリー: Ruby     22:31 | コメント (0) | トラックバック (0)

2007年5月10日

RubyGems とは

「RubyGems」 とは Rubyのライブラリ管理ツールの1つであり デファクトスタンダードとも言える 「RubyGems」というのがある。 これは、perl でいうところの CPAN。 PHP で言うところの pear のようなもの。

RubyGems では gem コマンドを使って Rubyのパッケージの管理・作成・配布 等が簡単に行える。 例えば
gem install rake
とすると、rake という新しいパッケージが 自動的にインストールされてしまう。

RubyGemsの特徴としては、
  • パッケージの簡単なインストールと削除
  • ローカル・パッケージの管理と制御
  • パッケージ間の依存関係の管理
  • ローカルおよびリモートのパッケージの検索と問い合せ
  • パッケージにおける複数の異なったバージョンのサポート
  • インストールされたパッケージのドキュメントをウェブベースで閲覧可能
  • 新規gemパッケージの構築が簡単
  • 作成されたパッケージが簡単に配布可能
等が挙げられる。

RubyGemsについては 「RubyGems Manuals」 に 英語ではあるが 詳しくまとめてある。

【参考リンク】

カテゴリー: Ruby     22:01 | コメント (0) | トラックバック (0)

2007年5月 9日

ダウンロードマネージャ 「Irvineフリー版」

インターネットを使っていろいろな作業をしていると、 場合によっては大きなファイルをダウンロードしたり、 または、多数のファイルを一機にダウンロードしなければならない場合もある。 そのような時に、ダウンロード・ユーティリティーを利用すると 早く簡単にダウンロードできたりする。

そのようなソフトを探してみると、 HTTP/HTTPS/FTPのダウンロードマネージャ 「Irvineフリー版」 というソフトが人気あるようである。

このIrvine(アーバイン)の特徴しては、
  • キューフォルダによるURLの整理・複数のキューの同時ダウンロード
  • 大きいファイルを効率よくダウンロードする分割ダウンロード
  • URLリストの読み込み・書き出し・コピー・貼り付け
  • 連続したURLを生成するURL展開
  • リンクを自動的にたどってURLを取得するリンクのインポート
  • インターネットエクスプローラ・ネットスケープ6・モジラのメニュー拡張
  • フィルタリング機能によるURL自動振り分け
  • スクリプトによる機能拡張
などが挙げられている。

上記のように「キューフォルダ」というフォルダを作って そこに「フォルダ設定」画面から いろいろな設定をすることができる。 特に「フォルダ設定」内の「ダウンロード」タブの設定が重要だ。 ここでは ダウンロードのリジューム(再開)機能 や 分割ダウンロード について 設定できるので、場合によっては、ここの設定によって、 ダウンロードの成否や、ダウンロードにかかる時間が大きく変わってくる。 詳細については、Irvine(アーバイン)のマニュアルページ 「ダウンロード」 にある。

このIrvine(アーバイン)には、他にも沢山の機能がある。 しかし、あまりにも高機能なソフトなので、 ダウンロードに関する基礎知識 と 基本的操作・設定方法をマスターしていないと 使いこなすのは難しそうだ。

【参考リンク】

カテゴリー: Software     22:49 | コメント (0) | トラックバック (0)

2007年5月 8日

ruby での「 Invalid char `\357' in expression 」エラーメッセージ

rubyのプログラムを実行してみて、
C:\soft\ruby>ruby URLencodeUTF8.rb
URLencodeUTF8.rb:1: Invalid char `\357' in expression
URLencodeUTF8.rb:1: Invalid char `\273' in expression
URLencodeUTF8.rb:1: Invalid char `\277' in expression
のようなエラーメッセージに遭遇することがあるかもしれない。

このエラーの原因は昨日のブログ 「UTF-8 と UTF-8N の違いは何か?」 でレポートした ユニコードの「バイトオーダーマーク (BOM:Byte Order Mark)」が原因である。 ちなみに 昨日のブログで
BOMの値は 具体的には上記の通り、「U+FEFF」である。 このBOMの値のUTF-8での表現は3バイトとなり 16進数の「 EF BB BF 」となる。 ちなみにこれを8進数で現すと「 357 273 277 」となる。
と書いたが、この「 357 273 277 」って rubyからのエラーメッセージの中にしっかり含まれている。

問題の原因がわかれば解決策は簡単である。 昨日のブログでも書いたが、 rubyのソース・ファイルを 例えば、「TeraPad」や「Xyzzy」のような UTF-8 と UTF-8N の両方に対応したエディターを使って開き、 改めて「UTF-8N」を指定して保存すること。

ちなみに、rubyを実行する際、 ユニコードを指定する「-Ku」オプションを付けた場合は、
C:\soft\ruby>ruby -Ku URLencodeUTF8.rb
URLencodeUTF8.rb:1: undefined method `・ソrequire' for main:Object (NoMethodError)
のようなエラーとなった。 結局「-Ku」オプションをつける場合でも、 ソースファイルは「UTF-8N」で保存する必要があるようだ。

【参考リンク】

カテゴリー: 文字コード・文字化け     22:43 | コメント (0) | トラックバック (2)

2007年5月 7日

UTF-8 と UTF-8N の違いは何か?

エディターの「TeraPad」 や 私が通常使っている「Xyzzy」などでは、 文字コードの指定に「UTF-8」 とは別に 「UTF-8N」というのがある。 はたして この2つはどう違うのだろうか?

ウィキペディア「Unicode」の 「UTF-8(UTF-2、UTF-FSS)」の欄に
日本国内でのみ、 BOM (Byte Order Mark) がついているものをUTF-8、 ついていないものをUTF-8Nとして区別することがあるが、 国際的には認知されていない。 Internet Explorerでは、 BOMのついていないUTF-8の文書を読み込むと(日本語版の場合)Shift_JISだと 誤認する一方で、BOMがついていると有効なデータとして受け付けない アプリケーションも存在する。
簡単には BOM (Byte Order Mark) 付いているのと いないとの違いのようだ。

では「バイトオーダーマーク (BOM:Byte Order Mark)」とは何か? 上記ページの脚注で
BOMとは、8ビットを基本とするシステムで バイトオーダーを識別するための印であり、 データストリームの先頭に付与される。 値はU+FEFF。 システムが読み込んだ先頭2バイトが0xFF,0xFEならリトルエンディアン、 0xFE,0xFFならビッグエンディアンとして後に続く文書を処理する。 RFC 2781 ではBOMが付いていないUTF-16文書は ビッグエンディアンとして解釈することになっている。 Windowsのメモ帳で作成した「Unicodeテキスト」は 標準でBOMが付与されるようになっている。
と説明されている。

さらに ウィキペディア「UTF-8」では「バイトオーダーマークについて」というセクションで 詳しく解説してある。

BOMの値は 具体的には上記の通り、「U+FEFF」である。 このBOMの値のUTF-8での表現は3バイトとなり 16進数の「 EF BB BF 」となる。 ちなみにこれを8進数で現すと「 357 273 277 」となる。

解説によると、 この BOMありのUTF-8 と BOMなしのUTF-8N は 場合によって使い分けなければならいようだ。 結局、適切な方を選択するためには、 UTF-8 と UTF-8N の両方に対応したエディターを使って、 エラーの出ない方を選択するということしかないようだ。

【参考リンク】

カテゴリー: 文字コード・文字化け     22:49 | コメント (0) | トラックバック (0)

2007年5月 6日

ruby で URLエンコード プログラミング

昨日のブログで「 URLエンコード(URIエンコード)」について レポートしたが、 それでは、rubyで実際にプログラミングしてみよう。

rubyのサンプル・プログラムは以下の様に
require 'uri'
p URI.escape('ウィキペディア')
たった2行である。 これで「ウィキペディア」という言葉を URLエンコードした結果が表示されるハズである。 ウィキペディア「URLエンコード」ページに 例題として「ウィキペディア」という言葉を Shift_JIS、EUC-JP、UTF-8 の各漢字コードで URLエンコードした結果があるので、 それと比較できるように、ここでは同じ言葉としてみた。

Shift_JIS、EUC-JP、UTF-8 の それぞれの漢字コードに 対応するために、それぞれに URLencodeSJIS.rb、URLencodeEUC.rb、URLencodeUTF8N.rb と名づけて、エディターから 漢字コードを指定して保存した。 それぞれを ruby で実行してみると、
C:\soft\ruby>ruby URLencodeSJIS.rb
"%83E%83B%83L%83y%83f%83B%83A"

C:\soft\ruby>ruby URLencodeEUC.rb
"%A5%A6%A5%A3%A5%AD%A5%DA%A5%C7%A5%A3%A5%A2"

C:\soft\ruby>ruby URLencodeUTF8N.rb
"%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2"
のような結果となり、当たり前であるが、 ウィキペディア「URLエンコード」ページ の結果と同じになった。

【参考リンク】

カテゴリー: DNS・URL・URI , Ruby , 文字コード・文字化け     22:54 | コメント (0) | トラックバック (0)

2007年5月 5日

URLエンコード(URIエンコード)

ウェブページのアドレス部分で 「%数字%数字...」 の羅列になっている部分を時々見かける。 「URLエンコード」または「URIエンコード」とは アドレス部分に直接記述することができない文字列を このような形式へ変換すること。

例えば、Google.co.jp で「エンコード」という文字を検索した結果、 ブラウザーのアドレス部分には 、
http://www.google.co.jp/search?hl=ja&q=%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
というように、「エンコード」という文字が 「%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89」 のように変換されて表示されている。 この他にも、ウィキペディアや amazon.co.jp でも利用されているが、 ブラウザによっては「http://ja.wikipedia.org/wiki/URLエンコード」のように 日本語でキチンと表示されているので直接目にふれない場合もある。

この 「URLエンコード」 については ウィキペディア「URLエンコード」によると。
URLエンコード(ゆーあーるえるえんこーど)とはURIに2バイト文字を使う際に行われる符号化のことである。 URIの規則を定める RFC 3986 では、 URIにASCIIの非予約文字以外の文字データは、 「%xx」(xxは16進数)という形でコードを表記することが定められている。 その際にどの文字コードを用いるかは実装によって異なる。
とある。 ここで、「どの文字コードを用いるかは実装によって異なる」とあるが、 上記の Google、ウィキペディア、amazon.co.jp では UTF-8 を用いているようである。

ASCIIの非予約文字(記号文字)については、 Diaspar「URIエンコード(URLエンコード)」 ページに 例を挙げて詳しく解説されている。

また、 TAG index「URLエンコード・デコードフォーム」けんどもネット「URL エンコード/デコードフォーム」 のように、 、URLエンコード、URLデコードを行ってくれるツールを提供しているサイトも 多数 存在している。

【参考リンク】

カテゴリー: DNS・URL・URI , 文字コード・文字化け     22:18 | コメント (0) | トラックバック (0)

2007年5月 4日

JTPAギークサロン:「Inside VOX ? Perl Hacker 宮川達彦氏と語る」

今回のJTPAギークサロンは 日本を代表するアルファギークとしても有名で、 現在はサンフランシスコ(San Francisco)の Six Apart本社 に勤務されておられる 宮川達彦氏。 開催場所は 宮川さんの職場でもある Six Apart本社ということで ギークサロン初のサンフランシスコ市内での開催となった。

サンフランシスコでの開催ということで、 駐車場を探すのが大変なので カルトレイン(Caltrain)で行くことにした。 といっても、もう10年以上前に一度 乗ったきりだったので ほとんど初めてのカルトレイン乗車。 切符を買うのにもてこずってしまった。 Six Apart の本社は カルトレインのサンフランシスコ駅から 街の中心部、つまり ユニオン・スクエアの方向へ向かって 歩いて5分ほどのところであった。

今回のギークサロンでは、Six Apart 社 の新しいサービス 「VOX」についての紹介と、 その開発の裏側についてレクチャーされた。 VOXとは、ブログとSNSが融合したような 新しいサービスとのことだ。 宮川さんと言えば、世界的にも有名なPerlの大家。 Movable Type もPerlで開発されているように、 VOXも基本的にPerlで開発されているようだ。 プレゼンでは非常に高度な技術的内容にも話が及んだ。

今日は、帰りのカルトレインの時間の関係で、 いつものギークサロンのように深夜まで ということはできなかった。

【参考リンク】

カテゴリー: JTPA     22:29 | コメント (0) | トラックバック (0)

2007年5月 3日

ディズニーランド の カストーディアル

以前のブログで紹介した書籍 『人生カンタンリセット! 夢をかなえる「そうじ力」』 では、 ディズニーランドを例として、その「そうじ力」について解説している。 ディズニーランドがゴミひとつない夢の世界を実現しているのは 「カストーディアル(Custodial)」と呼ばれる清掃スタッフの たゆまぬ働きによるものだそうだ。

ディズニーランド の「カストーディアル(Custodial)」については、 東京ディズニーリゾートキャンパス「カストーディアル」 のページに写真付きで解説されている。 そこにも書いてあるように、 「Custodial」という言葉の実際の意味は、 「管理する」「維持する」「保持する」などの意味であり、 清掃作業は勿論のこと、パークをいつまでも美しく、 安全な状態に維持するという役割を担っている。 写真をみると、真っ白い服に 真っ白い帽子 というユニフォームで かっこよく決めているのがわかる。

この『夢をかなえる「そうじ力」』 によると、 600人のカストーディアルが、 300名ずつ交代で、自分のエリアを必ず15分ごとに回って、 徹底的にキレイにしているそうである。 また夜には、ナイト・カストーディアルと呼ばれる 「夜のそうじ係」スタッフがいて、 閉園後の夜中の12時から朝の7時まで、 あの広い園内を徹底的に掃除しているそうだ。 彼らの掃除の目標は、 「赤ちゃんがハイハイしても大丈夫なくらい、キレイにする。」 だそうだ。

この様に、ディズニーランドは 昼間の「デイ・カストーディアル」、 夜間の「ナイト・カストーディアル」の活躍により、 夢の空間を維持することができている。 そして、その夢の世界に魅せられて、 毎日、沢山のお客様(ゲスト)が来てくださるのである。

いろんな意味でディズニーランドから学べる点は多々あるが、 「そうじ力」という観点からすると、 まず、自分が、 自分の家の、または、自分の会社の「カストーディアル(Custodial)」役であることを 強く認識する必要があると思う。

会社には専門の「ジャニター(Janitor)」さんが来るから大丈夫、 と思うかも知れないが、 ジャニターさんも 机の上のホコリを取ったり、 床に掃除機を掛けてくれるところまでは してくれるかもしれないが、 あなたの机の上の整理・整頓まではしてくれない。

あなたの周りの住環境・労働環境をベストな状態に調えるためには、 自分自身が「カストーディアル(Custodial)」あることを認識し、 常に実践してゆかなければならない。

【参考リンク】

カテゴリー: 掃除・整理・整頓     22:58 | コメント (0) | トラックバック (0)

2007年5月 2日

nkf (Network Kanji Filter)

「nkf」とは、「Network Kanji Filter」の頭文字。 自分も昔からよくお世話になっている 日本語コード変換フィルター プログラム。 漢字コードの自動認識機能があるので、ほとんど気にする必要がない。 nkfには今では沢山の機能(オプション)があるが、 その中でも 自分が良く使う オプションのみをここにメモしておく。

出力するファイルのコードを指定するオプション。 この際のオプションの文字は必ず「小文字」。
  • -j   JISコードを出力する。(デフォルト)
  • -e   EUCコードを出力する。
  • -s   シフトJISコードを出力する。
  • -w   UTF-8コードを出力する。
(例)「INSTALL.jis」というファイルをUTF-8コードへ変換する場合。
% nkf -w INSTALL.jis > INSTALL.utf8


あるファイルの文字コードを知りたい場合は 「-g」オプションをつければよい。 すると、そのファイルの文字コードの解析結果を表示してくれる。
(例)
% nkf -g README.jis
ISO-2022-JP

% nkf -g README.utf8
UTF-8

% nkf -g README.euc
EUC-JP

% nkf -g README.sjis
Shift_JIS

% nkf -g README
ASCII


URL等で 「%数字%数字...」 の羅列になっている部分を デコードするには、 「--url-input」オプションを使う。。
(例)
% echo http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 | nkf --url-input -w
http://ja.wikipedia.org/wiki/メインページ
この際、使っているOSやターミナルの環境にあわせて 「-w」や「-e」「-s」等の出力コードを指定するオプションを 適切につけておかなければ結果の表示が文字化けしてしまう。

【参考リンク】

カテゴリー: Software , 文字コード・文字化け     22:21 | コメント (0) | トラックバック (0)

2007年5月 1日

FLV(Flash Video)プレーヤー

最近 YouTubeをはじめ 動画サイトが流行っているが、 それらのサイトにある動画を 手元のPCに保存しておきたいというニーズがある。 それてについてはGIGAZINE の記事 「YouTubeのムービーをダウンロードしてMPEGに変換」 に紹介してある。

この記事で紹介されているダウンロード方法は 「keepvid.com」 というサイト経由でダウンロードすること。 ここでダウンロードしたファイルは FLV(Flash Video) 形式で保存する必要がある。

次に、ダウンロードしたFLVのプレーヤーいわゆる 「FLVプレーヤー」か、 もしくは他のファイル・フォーマットへの変換ソフトが必要になる。 これに関しては、上記のGIGAZINE の記事では 「Riva FLV Encoder 2」を紹介している。 これは あくまで ビデオフォーマットの変換ソフトだが、 これには、「Riva FLV Player」も一緒にインストールされる。 FLVファイルをプレーするだけであれば「Riva FLV Encoder 2」でフォーマット変換することなく この「Riva FLV Player」だけで十分だ。 実際にこの「Riva FLV Player」を試してみた。 ループやシークの機能はあるが、画面サイズを変更することができなかった。

そこで、別のソフトを探してみたら、Vectorで 「FLVP」 というソフトがみつかった。 このソフトには「Macromedia Flash Player 8以降がインストールされていること」 という条件が必要ではあるが、 この条件は通常Youtubeを正常に見られる状態であればクリアしているはずだ。 インストールは簡単で、ダウンロード後、解凍して 出てきた FLVP.exe をそのまま実行するだけでよい。

この「FLVP」は 基本的機能も問題ないし、 サイズも自由に設定可能であった。 機能の詳細については 「FLVP」作者のページ に解説がある。

また、他のFLVプレーヤーに関しては、 「FLV動画のWindows用再生ソフト」 に詳しくまとめられている。

【参考リンク】

カテゴリー: Software     22:52 | コメント (0) | トラックバック (0)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.