2008年01月21日

QEMU に Windows 2000 をインストール

QEMU に Windows 2000 をインストールした。
これにはいくつか「はまりどころ」があり、注意が必要なようである。
SP4 アップグレードまで、だいたいうまくいったので書き留めておく。
※インストールしたのは、Windows 2000 Server
※ホスト OS は Fedora Core 8

(1) Windows 2000 のインストール

まず、ディスクイメージを作成する

# mkdir /var/qemu
# qemu-img create -f raw /var/qemu/Win2000 16G


そして、Windows 2000 のインストール CD を挿入して QEMU 起動。
※FC8 上で CD-ROM ドライブは /dev/sr0 になっていた。

# qemu -k ja -localtime -cdrom /dev/sr0 -boot d /var/qemu/Win2000

Windows 2000 のインストールがはじまるので、手順に従ってインストールする。

(2) Windows Update (SP3 へ)

インストールが済んだので、まずは Windows Update する。
ところが、再起動したら

  ログオン ユーザー インターフェイス DLL msgina.dll を読み
  込めませんでした。

  システム管理者に問い合わせて DLL を置き換えるか、また
  は元の DLL を復元してください。

という "ユーザー インターフェイス エラー" ダイアログが表示されて再起動を促されるようになってしまった。
再起動しても同じダイアログが表示されるだけ。

いろいろ試してみると、いったんホスト OS をシャットダウンするとちゃんと起動するようだ。
この問題は Win2k SP3 固有の問題で、SP4 にアップグレードすれば解消されるらしいので、しばらくの我慢。

とりあえず Win2000 の起動オプションに -no-reboot をつけて、強制終了せずにすむようにしておく。

# qemu -k ja -localtime -no-reboot /var/qemu/Win2000

(3) IE 6 へのアップグレード

Internet Explorer 6 のサイトへ行って、IE 6 のインストーラを入手、IE 6 にアップグレードした。

(4) SP4 インストール

Windows 2000 のホームページから SP4 日本語版のインストーラをダウンロードし、インストールを実行。

ホスト OS をシャットダウンしなくても正常起動することが確認できた。
とりあえずは、これで当初の目的は達成できた。
ただ、Microsoft Update にアップデートしたら、更新情報をダウンロードできなくなった。
ポートの問題かもしれない。あとで調べてみよう。
posted by K/I at 21:09 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2008年01月19日

Fedora Core 8 のインストール (HDD上のISOイメージから)

去年の春先に Gateway の Vista 機を購入したのだが、これがなぜか恐ろしく動作が鈍く、メモリを増やしても改善しないので 1ヶ月も使わないうちに使用を断念した。

それ以来長いこと放置していたのだが、あまりにもったいないので Fedora Core をインストールしてテスト機として使ってみようと思い立った。

手元に FC 3 のディスクがあったので、とりあえずそれをインストール。
しかし、世間にはすでに FC8 が出回っている。どうせなら FC8 にしよう。
以前「Fedora Core 3 -> Fedora Core 4 -> Fedora Core 5 アップグレード」で書いたような手順でアップグレードすると、かなり遠い道のりになってしまうし、特に必要なデータがあるわけではないので、まるごと上書きインストールすることにする。

まずは、FC8 DVD の ISO イメージのダウンロード。
DVD の生ディスクが手元になかったので、ハードディスクからインストールできないものか調べてみたら、こんな情報を見つけた。

『Fedora Core 3をハードディスクインストールするには』
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/671instfc3hdd.html

さて、まずは HDD に ISO イメージをコピーする。
Fedora Core 3 がネットワークカードを認識しなかったので、別 PC でダウンロードした ISO イメージを、USB 接続の外付けハードディスクにコピー。
その USB ハードディスクを FC3 マシンに接続する。
FC3 では、ATA の HDD は hda, hdb...、USB の HDD は sda, sdb... として認識されるようだ。

# mount /dev/sda1

としたら、/media/usbdisk にマウントされた。

次に FC8 の ISO イメージの中から、インストーラの起動に必要なファイルを抜き出す。

# mount /media/usbdisk/Fedora-8-i386-DVD.iso /mnt -o loop
# mkdir /boot/install
# cp /mnt/isolinux/vmlinuz /boot/install
# cp /mnt/isolinux/initrd.img /boot/install


そして GRUB の設定。
FC8 の isolinux.cfg を見てみると、次のようになっている。

# cat /mnt/isolinux/isolinux.cfg
 :
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img


また、/boot の所在パーティションを調べてみると、

# df /boot
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 101086 17348 78519 19% /boot


となっている。
これを参考に /etc/grub.conf にエントリを追加する。

# vi /etc/grub.conf
 :
title Fedora Core 8 Installer
    root (hd0,0)
    kernel /instal/vmlinuz
    initrd /install/initrd.img
 :


/boot/dev/hda1 にあるので root は (hd0,0) である。
また、vmlinuzinitrd.img のコピー先 /boot/install は、hda1 上では /install に相当するので、ファイルパスは上のようになる。

再起動。

# reboot

GRUB の画面で、Fedora Core 8 Installer を選ぶ。

なぜか、/sbin/loader と表示されてから画面が凍ってしまうが、適当にキーを押したり、ENTER したりしたらインストーラが起動しはじめた。

インストールメディアの選択画面で "Hard drive" を選び、インストール DVD の ISO イメージが格納されていると思われるパーティションを選んで OK する。

あとは通常のインストール手順に従ってインストールすればよい。
posted by K/I at 01:20 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2008年01月07日

Qemu ゲスト OS にホストから SSH 接続する

iMac の Qemu に FreeBSD 6 をインストールした。
この FreeBSD に、ホスト側から SSH アクセスする方法はないものか、調べてみたらこんな情報があった。

(QEMU)ホストOS側から、ゲストOSのFreeBSDへ、sshでログインできるようにする
http://nhh.mo-blog.jp/ttt/2005/06/qemuososfreebsd_6320.html

このサイトでは Windows の Qemu について書いているが、iMac でも基本的には同じである。

Q Control で、[Edit Guest OS] を開き、"Advanced" の QEMU Arguments に

-redir tcp:10022::22

などと入力し、[Update PC] ボタンをクリックする。
起動すると、ホスト OS の 10022 ポートがゲスト OS の 22 ポートにリダイレクトされるので、iMac のターミナルから、

$ ssh -p 10022 localhost

などとして SSH 経由でログインすることができる。

なお、Q Control の Edit Guest OS の Advanced 画面を再度開くと上記設定が表示されないが、設定は生きているようである。
posted by K/I at 11:50 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2008年01月06日

JPEG の Exif 情報を書き換える (Perl)

Perl で、JPEG の Exif 情報を書き換える方法について。

Exif (エグジフ) 規格は、大雑把に言うと、JPEG 画像に、撮影日時やカメラの機種などの付属情報およびサムネイル画像を TIFF 形式で追加した規格、だと思う。
※正確には、規格書を参照していただきたい:
JEIDA 規格 ディジタルスチルカメラ用画像ファイル フォーマット規格(Exif)

追加情報は、JPEG の "APP1" マーカセグメントに格納される。
ほかに、"FlashPix 拡張データ" というのを格納する "APP2" マーカというのもあるが、その詳細はよく知らない。

さて、APP1 セグメントは、TIFF 画像の構造をしていて、0th IFD と 1st IFD の 2 つの IFD (Image File Directory) を含んでいる。
0th IFD には、画像に関する情報が、1st IFD にはサムネイルが格納される。

0th IFD には、複数のフィールドを含むことができ、各フィールドはタグによってその内容が識別される。
タグには、たとえば画像の幅、高さ、ファイルの変更日時、カメラのメーカ名、モデル名、などがある。

1st IFD に格納されるのはサムネイルのみ。

Exif の情報を表示するツールとしては、たとえば
ExifReader
http://www.rysys.co.jp/exifreader/jp/
などがある。
また IrfanView にプラグインをインストールすれば Exif 情報を表示できる。
かみさか氏の JpegAnalyzer Plus は、JPEG ファイルの解析ができる
http://homepage3.nifty.com/kamisaka/JpegAnalyzer/
かみさか氏は、Exif の MakerNote に関する詳細な情報も提供している。
http://homepage3.nifty.com/kamisaka/makernote/index.htm

さて、Perl で JPEG の Exif 情報を書き換えるには、Image::MetaData::JPEG というモジュールが利用できる。
このモジュールは CPAN で公開されている。

使い方の詳細は CPAN サイトを見れば書かれているが、たとえば以下のように使用する。

#!/usr/bin/perl -w
use strict;
use Image::MetaData::JPEG;
my $main_file = '(主画像のファイルパス)';
my $thm_file = '(サムネイル画像のファイルパス)';
my $out_file = '(保存先のファイルパス)';
my $error;
# 主画像 (APP1 マーカセグメントのみ読み込み)
my $image = new Image::MetaData::JPEG($main_file, '^APP1$')
or die "Image::MetaData::JPEG オブジェクトの"
. "インスタンス化に失敗\n";
# 画像タイトル変更
$error = $image->set_Exif_data({ 'ImageDescription' => 'TEST' },
'IFD0_DATA' => 'ADD');
%$error
and die "画像タイトルの書き換え失敗\n"
. $error->{'ERROR'} . "\n";
# サムネイル画像
my $thumbnail = new Image::MetaData::JPEG($thm_file)
or die "Image::MetaData::JPEG オブジェクトの"
. "インスタンス化に失敗 (サムネイル画像)\n";
# サムネイル画像の APPn, COM, DRI マーカセグメントを削除
$thumbnail->drop_segments('^(APP\d+|COM|DRI)$');
# サムネイルを書き換える
$error = $image->set_Exif_data($thumbnail,
'THUMBNAIL' => 'REPLACE');
%$error
and die "サムネイルの書き換え失敗\n"
. $error->{'ERROR'} . "\n";
# ファイルに書き出し
$image->save($out_file);

サムネイル画像の APPn、COM、DRI マーカセグメントを削除しているが、これは Exif の仕様でそのように指定されているため。

なお、APP1 セグメントの最大サイズは JPEG 規格の制約により 64 kB 以下でなければならない。
サムネイル画像にあまり大きな画像を指定すると、Image::MetaData::JPEG は (エラーではなく) 警告を出してサムネイルの書き換えをキャンセルしてしまうので注意が必要。

ちなみに、バージョン 0.15 の Image::MetaData::JPEG には以下のバグがあるようである。
IFD のフィールドエントリはタグ番号の小さいものから順番に並べる必要があるが、タグの値の並べ方は任意である。
しかし、Image::MetaData::JPEG は、フィールドエントリとタグの値の順序が異なると "Jumping back" というエラーで異常終了してしまう。
これを回避するには、Image/MetaData/JPEG/Segment_parsers.pl の $this->die('Jumping back') としている部分をコメントアウトすればよさそうである。
このコメントアウトにともない、この処理を行う foreach 文で、sort keys %$mapping しているが、この sort が必要なく単に keys %$mapping でよくなる。

また、MakerNote タグがあるのに MakerNote のデータ本体が存在しない(?)とエラーになってしまう。
この問題は、Image/MetaData/JPEG/Segment_dumpers.pl の $this->die('ORIGINAL data not found') としているところを、$this->warn('ORIGINAL data not found') とすればよいらしい。
※こちらはなんとなく、警告として残しておきたい気がする。
posted by K/I at 22:21 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年12月23日

イーモバイルが使えるエリア

イーモバイルが使えるエリア情報を収集するサイトを見つけた。

イーモバイル エリア - みんなでつくるイーモバイルマップ
http://map.windows-keitai.com/emobile/
posted by K/I at 13:51 | 東京 ☔ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年09月18日

ドット絵入りのQRコードを作る

最近、QRコードの中にドット絵を描き込むのが、ひそかなブームになっているらしい。

たとえば、こんな感じ:
test_yahoo.gif
http://www.yahoo.co.jp/
※柄にもなくハートマークなど描いてしまった。やや反省。

作るのは簡単で、あちこちにころがっている QR コード生成ツールで QR コードを作り、ビットマップ画像で保存する。
その画像ファイルを Windows のペイントなどで開き、ドットパターンを適当に変えたり彩色したりすればいい。

そんなことをしても正しく認識するのか?と、驚いてしまうが、QRコードには誤り訂正パターンが含まれており、たとえば レベル H に設定すれば 30% の誤りは訂正される。
つまり、30% くらい変えてもきちんと認識する、ということだ。

これはけっこう楽しめそうだ。

●JIS規格
JIS X0510
こちらから検索↓
http://www.jisc.go.jp/app/JPS/JPSO0020.html

●ISO規格
ISO/IEC18004
こちらから検索↓
http://www.iso.org/iso/prods-services/ISOstore/store.html

●QRコード生成ツールの例
Psytec
http://www.psytec.co.jp/freesoft/
posted by K/I at 04:58 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年08月06日

郵便番号から住所を調べる(PHP)

郵便局のホームページから、CSV 形式で郵便番号と住所の対照表がダウンロードできる。
http://www.post.japanpost.jp/zipcode/download.html
これを使って、〒番号から住所を得る PHP プログラムを作ってみた。
エンコーディングは、UTF-8。
インデックスの作成などをしていないため処理は遅いが、ダウンロードした CSV をそのまま利用できるのでメンテナンスは楽だ。

CSV ファイルは、上記サイトの、「住所の郵便番号のダウンロード」(どちらでもよい) と「事業所の個別郵便番号のダウンロード」から LZH ファイルをダウンロードし、解凍しておく。

<?php
$flg_error = FALSE;
$result = FALSE;
// フォーマットタイプ
$format = '';
if (array_key_exists('t', $_REQUEST)) {
$format = $_REQUEST['t'];
if ($format != 's' && $format != 'x' && $format != 'j') {
$format = '';
}
}
if ($format == '') {
$format = 's';
}
// 郵便番号
$zip_code = '';
if (array_key_exists('z', $_REQUEST)) {
$zip_code = $_REQUEST['z'];
if (!preg_match('/^\d{7}$/', $zip_code)) {
$zip_code = '';
}
}
if ($zip_code == '') {
$flg_error = TRUE;
}
if (!$flg_error) {
// データファイル
define('DATA_DIR', '../../data/yubin_code');
$fh = fopen(DATA_DIR . '/ken_all.csv', 'r');
if ($fh === FALSE) {
exit;
}
while (($data = fgetcsv($fh, 1000)) !== FALSE) {
if ($data[2] == $zip_code) {
// エンコーディングを変換
$data[3] = mb_convert_encoding($data[3], 'UTF-8', 'Shift_JIS');
$data[4] = mb_convert_encoding($data[4], 'UTF-8', 'Shift_JIS');
$data[5] = mb_convert_encoding($data[5], 'UTF-8', 'Shift_JIS');
$data[6] = mb_convert_encoding($data[6], 'UTF-8', 'Shift_JIS');
$data[7] = mb_convert_encoding($data[7], 'UTF-8', 'Shift_JIS');
$data[8] = mb_convert_encoding($data[8], 'UTF-8', 'Shift_JIS');
// $data[9] が 1 の場合は、$data[5], $data[8] の末尾の (...) を取
// る。
// (...) が存在しない場合は、$data[5], $data[8] を空文字列とする。
if ($data[9] == 1) {
if (preg_match('/\(.+\)$/', $data[5])) {
$data[5] = preg_replace('/\s*\(.+\)$/', '', $data[5]);
} else {
$data[5] = '';
}
if (preg_match('/(.+)$/', $data[8])) {
$data[8] = preg_replace('/\s*(.+)$/', '', $data[8]);
} else {
$data[8] = '';
}
}
// $data[12] が 1 の場合は、$data[5], $data[8] を空文字列とする。
if ($data[12] == 1) {
$data[5] = $data[8] = '';
}
// $data[8] == '以下に掲載がない場合' の場合、$data[5], $data[8]
// を空文字列とする
if ($data[8] == '以下に掲載がない場合') {
$data[5] = $data[8] = '';
}
$result = array($data[0], // 全国地方公共団体コード
$data[1], // (旧)郵便番号(5桁)
$data[2], // 郵便番号(7桁)
$data[3], // 都道府県名 (カタカナ)
$data[4], // 市区町村名 (カタカナ)
$data[5], // 町域名 (カタカナ)
'', // 丁目、番地、建物名 (カタカナ)
'', // 事業所名 (カタカナ)
$data[6], // 都道府県名
$data[7], // 市区町村名
$data[8], // 町域名
'', // 丁目、番地、建物名
'', // 事業所名
'', // 取扱郵便局名
$data[9], // 一町域が二つ以上の郵便番号に分割
$data[10], // 小字毎に番地が起番されている
$data[11], // 丁目を有する町域
$data[12], // 一つの郵便番号で二つ以上の町域表す
'', // 個別番号の種別の表示
'', // 複数番号の有無
$data[13], // 更新フラグ
$data[14], // 更新理由
);
break;
}
}
fclose($fh);
if ($result === FALSE) {
// 見つからなかった場合は、事業所のリストを探す
$fh = fopen(DATA_DIR . '/jigyosyo.csv', 'r');
if ($fh === FALSE) {
return FALSE;
}
while (($data = fgetcsv($fh, 1000)) !== FALSE) {
if ($data[7] == $zip_code) {
// エンコーディングを変換
$data[1] = mb_convert_encoding($data[1], 'UTF-8', 'Shift_JIS');
$data[2] = mb_convert_encoding($data[2], 'UTF-8', 'Shift_JIS');
$data[3] = mb_convert_encoding($data[3], 'UTF-8', 'Shift_JIS');
$data[4] = mb_convert_encoding($data[4], 'UTF-8', 'Shift_JIS');
$data[5] = mb_convert_encoding($data[5], 'UTF-8', 'Shift_JIS');
$data[6] = mb_convert_encoding($data[6], 'UTF-8', 'Shift_JIS');
$data[9] = mb_convert_encoding($data[9], 'UTF-8', 'Shift_JIS');
$result = array($data[0], // 全国地方公共団体コード
$data[8], // (旧)郵便番号(5桁)
$data[7], // 郵便番号(7桁)
'', // 都道府県名 (カタカナ)
'', // 市区町村名 (カタカナ)
'', // 町域名 (カタカナ)
'', // 小字名、丁目、番地など (カタカナ)
$data[1], // 事業所名 (カタカナ)
$data[3], // 都道府県名
$data[4], // 市区町村名
$data[5], // 町域名
$data[6], // 小字名、丁目、番地など
$data[2], // 事業所名
$data[9], // 取扱郵便局名
'', // 一町域が二つ以上の郵便番号に分割
'', // 小字毎に番地が起番されている
'', // 丁目を有する町域
'', // 一つの郵便番号で二つ以上の町域表す
$data[10], // 個別番号の種別の表示
$data[11], // 複数番号の有無
$data[12], // 更新フラグ
'', // 更新理由
);
break;
}
}
}
}
// シリアル化した文字列
if ($format == 's') {
header('Content-Type: text/plain;charset=Shift_JIS');
print(serialize($result));
}
// XML 形式
elseif ($format == 'x') {
header('Content-Type: text/xml');
print(data2Xml($result));
}
// JSON 形式
else {
if (function_exists('json_encode')) {
header('Content-Type: text/x-json');
print(json_encode($result));
} else {
// 未対応
header('Content-Type: text/plain');
print('Not supported');
}
}
/*
* 郵便CSV配列をXMLに変換する
*/
function data2Xml($data)
{
if (!is_array($data)) {
return FALSE;
}
$xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
$xml .= '<yubin>';
$xml .= '<data>';
// 全国地方公共団体コード(JIS X0401、X0402)
$xml .= "<local_gov_code>{$data[0]}</local_gov_code>";
// (旧)郵便番号(5桁)
$xml .= "<postal_code_old>{$data[1]}</postal_code_old>";
// 郵便番号(7桁)
$xml .= "<postal_code>{$data[2]}</postal_code>";
// 都道府県名 (カタカナ)
$xml .= "<pref_name_yomi>{$data[3]}</pref_name_yomi>";
// 市区町村名 (カタカナ)
$xml .= "<city_name_yomi>{$data[4]}</city_name_yomi>";
// 町域名 (カタカナ)
$xml .= "<town_name_yomi>{$data[5]}</town_name_yomi>";
// 小字名、丁目、番地など (カタカナ)
$xml .= "<street_name_yomi>{$data[6]}</street_name_yomi>";
// 事業所名 (カタカナ)
$xml .= "<org_name_yomi>{$data[7]}</org_name_yomi>";
// 都道府県名
$xml .= "<pref_name>{$data[8]}</pref_name>";
// 市区町村名
$xml .= "<city_name>{$data[9]}</city_name>";
// 町域名
$xml .= "<town_name>{$data[10]}</town_name>";
// 小字名、丁目、番地など
$xml .= "<street_name>{$data[11]}</street_name>";
// 事業所名
$xml .= "<org_name>{$data[12]}</org_name>";
// 取扱郵便局名
$xml .= "<post_office_name>{$data[13]}</post_office_name>";
// フラグ
$xml .= "<flag_1>{$data[14]}</flag_1>";
$xml .= "<flag_2>{$data[15]}</flag_2>";
$xml .= "<flag_3>{$data[16]}</flag_3>";
$xml .= "<flag_4>{$data[17]}</flag_4>";
$xml .= "<flag_5>{$data[18]}</flag_5>";
$xml .= "<flag_6>{$data[19]}</flag_6>";
$xml .= "<flag_7>{$data[20]}</flag_7>";
$xml .= "<flag_8>{$data[21]}</flag_8>";
$xml .= '</data>';
$xml .= '</yubin>';
return $xml;
}
?>

コード中、DATA_DIR の定義部分は、ken_all.csv と jigyosyo.csv の保存場所を指定しておく。
これをたとえば、zip.php というファイル名でしかるべき場所に保存し、
http://HOSTNAME/PATH/zip.php?z=1120002
として呼び出すと、郵便番号 112-0002 に該当する住所のデータが PHP でシリアル化された配列として表示される。
PHP から利用するには、fopen などして呼び出し、unserialize すればよい。
また、
http://HOSTNAME/PATH/zip.php?z=1120002&t=x
とすると、XML 形式で、
http://HOSTNAME/PATH/zip.php?z=1120002&t=j
とすると、JSON 形式で返される。
JSON 形式での出力には、モジュール php-json が必要である。
php-json は、PHP 5.2.0 からはデフォルトで組み込まれているようだ。

【変更履歴】
2007-09-09
事業所の個別郵便番号に対応。
出力フォーマットに XML 追加。
2007-10-02
JSON 形式での出力に対応。
posted by K/I at 20:45 | 東京 ☁ | Comment(1) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年07月19日

PKI の認証局(CA)を構築する

PKI モデルは、いつまでたってもよくわからない。
認証局 (CA) を構築して体験してみるのが一番かもしれない、と思ってチャレンジしてみた。

(1) 何をするか?

今回、何をどうするのか少し整理しておきたい。
目標は、Web サーバーの SSL 化である。

まず、証明書を発行するまでの手順は以下のとおり。

+----+              +-------------+
| <-----(*1)-----+ |
| CA | | Webサーバー |
| +-----(*2)-----> |
+----+ +-------------+


1. まず、CA を構築する
2. Web サーバーの証明書署名要求 (CSR) を作成し、CA に提出 --- (*1)
3. CA は証明書を発行 --- (*2)

そして、Apache で SSL を使用する設定を行って完了である。

(2) CA 構築から証明書発行まで

【CA側】

まず、CA を構築する。
たとえば次のように実行する。
※Fedora Core では、/etc/pki/CA というディレクトリがすでに用意されていた。

# cd /etc/pki/CA
# openssl req -new -x509 -newkey rsa:1024 -keyout private/cakey.pem -out cacert.pem -days 365
Generating a 1024 bit RSA private key
................................++++++
...++++++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Shinjuku-ku
Organization Name (eg, company) [My Company Ltd]:K-ISHIK
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:camel.zoo.park
Email Address []:root@camel.zoo.park

作成した証明書ファイル (cacert.pem) の内容は、
# openssl x509 -in cacert.pem -text

で確認できる。

CA の準備はこれで完了。

【Webサーバー側】

ディレクトリを用意し、Web サーバー用の秘密鍵を作成する。
※Fedora Core では、/etc/pki/tls というディレクトリが用意されていた。

RSA の秘密鍵ファイルを生成する。
# cd /etc/pki/tls
# openssl genrsa -des3 -out private/serverkey.pem 1024

(または、秘密鍵ファイルを暗号化しない場合は -des3 オプションをつけない)
# openssl genrsa -out private/serverkey.pem 1024
# chmod 0400 private/serverkey.pem

生成される /etc/pki/tls/private/serverkey.pem が秘密鍵。
この秘密鍵を使って CSR を作成する。

# openssl req -new -key private/serverkey.pem -out server.csr
Enter pass phrase for private/serverkey.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Shinjuku-ku
Organization Name (eg, company) [My Company Ltd]:K-ISHIK
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:puma.zoo.park
Email Address []:root@puma.zoo.park

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

※Country Name などは CA と同じものにしておかなければならないらしい (CA と CSR を出すホストが同一の場合のみ?)
※また、Common Name は、Apache の設定ファイルで指定した ServerName と一致しないといけないらしい

生成された server.csr を CA にコピーする。

【CA側】

Web サーバーから受け取った CSR に対して証明書を発行する。
まずは、ディレクトリとファイルの作成。
※以下で作成するディレクトリとファイルは、OpenSSL の設定ファイル openssl.cnf の設定に合わせる。

# cd /etc/pki/CA
# mkdir newcerts
# touch index.txt
# echo 01 > serial

そして、証明書の発行。

# openssl ca -in WebサーバーのCSRファイル -keyfile private/cakey.pem -cert cacert.pem -out ホスト名.pem
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jul 18 18:37:33 2007 GMT
Not After : Jul 17 18:37:33 2008 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = K-ISHIK
commonName = puma.zoo.park
emailAddress = root@puma.zoo.park
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
9A:41:36:27:DD:83:4D:04:05:12:09:07:AB:65:7F:5A:B4:C5:40:71
X509v3 Authority Key Identifier:
keyid:69:A9:92:64:4F:24:34:C8:85:B5:FD:92:AE:8A:53:76:3C:32:F6:86

Certificate is to be certified until Jul 17 18:37:33 2008 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

生成された ホスト名.pem が証明書である。

(3) Apache の SSL 化

次に Apache を SSL 化する。
まず Web サーバーに、mod_ssl をインストールする。
パッケージによるが、たとえば Fedora Core の標準的な mod_ssl パッケージをインストールすると /etc/httpd/conf.d/ssl.conf に SSL 関連の設定が用意される。

SSLCertificateFile ディレクティブには cert.pem のパス (/etc/pki/tls/cert.pem) を、SSLCertificateKeyFile ディレクティブには serverkey.pem のパス (/etc/pki/tls/private/serverkey.pem) を指定する。

これで、Apache の SSL 化が完了する。

(4) 発行した証明書の無効化

発行した証明書を無効化するには、失効証明書 (CRL) を発行する。

# cd ~/CA/newcerts
# openssl ca -revoke シリアル番号.pem

【変更履歴】
2010.10.15 WebサーバーのRSA秘密鍵ファイルを暗号化しない方法を追記
posted by K/I at 10:03 | 東京 🌁 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年07月13日

HTML で Excel の「ウィンドウ枠の固定」を実現する

Excel で「ウィンドウ枠の固定」をすると、固定部分は縦または横方向にしかスクロールしなくなる。
HTML でこのようなスクロールを実現できないか悩んでいたら、ある人がこういうサイトを教えてくれた:

ウィンドウ枠の固定2
http://www.h7.dion.ne.jp/~nuru44/window2.html

ポイントは次の2点
  1. 本体部分、および、上・左の固定部分を別々にブロック化し、CSS の overflow を使ってそれぞれブロック内でスクロールできるようにしておく
  2. JavaScript を使って、本体部分のスクロール量を上・左の固定部分のスクロール量に反映させる
上に紹介したサイトのものは複雑でわかりにくかったので、もっとシンプルな例を作ってみた。

 
あいうえおかきくけこさしすせそたちつてと
あいうえおかきくけこさしすせそたちつてと
あいうえおかきくけこさしすせそたちつてと
いうえおかきくけこさしすせそたちつてとあ
うえおかきくけこさしすせそたちつてとあい
えおかきくけこさしすせそたちつてとあいう
おかきくけこさしすせそたちつてとあいうえ
かきくけこさしすせそたちつてとあいうえお
きくけこさしすせそたちつてとあいうえおか
くけこさしすせそたちつてとあいうえおかき
けこさしすせそたちつてとあいうえおかきく
こさしすせそたちつてとあいうえおかきくけ
さしすせそたちつてとあいうえおかきくけこ
しすせそたちつてとあいうえおかきくけこさ
すせそたちつてとあいうえおかきくけこさし
せそたちつてとあいうえおかきくけこさしす
そたちつてとあいうえおかきくけこさしすせ
たちつてとあいうえおかきくけこさしすせそ
ちつてとあいうえおかきくけこさしすせそた
つてとあいうえおかきくけこさしすせそたち
てとあいうえおかきくけこさしすせそたちつ
とあいうえおかきくけこさしすせそたちつて

このソースは以下のとおり:

<html>
<head>
<script type="text/javascript">
<!--
function scrollRC()
{
document.getElementById('trow').scrollLeft
= document.getElementById('tbody').scrollLeft;
document.getElementById('tcol').scrollTop
= document.getElementById('tbody').scrollTop;
}
// -->
</script>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>&nbsp;</td>
<td><div id="trow" style="background-color: #ffff00; overflow: hidden; width: 184px; height; 1em;"><div style="width: 400px; height: 1em;">あいうえおかきくけこさしすせそたちつてと</div></div></td>
</tr>
<tr valign="top">
<td align="center"><div id="tcol" style="background-color: #ff00ff; overflow: hidden; width: 1em; height: 184px;"><div style= "width: 1em; height: 400px;">あいうえおかきくけこさしすせそたちつてと </div></div></td>
<td><div onScroll="scrollRC()" id="tbody" style="overflow: auto; width: 200px; height: 200px;"><div style="width: 400px; height: 400px;">あいうえおかきくけこさしすせそたちつてと<br>
いうえおかきくけこさしすせそたちつてとあ<br>
うえおかきくけこさしすせそたちつてとあい<br>
えおかきくけこさしすせそたちつてとあいう<br>
おかきくけこさしすせそたちつてとあいうえ<br>
かきくけこさしすせそたちつてとあいうえお<br>
きくけこさしすせそたちつてとあいうえおか<br>
くけこさしすせそたちつてとあいうえおかき<br>
けこさしすせそたちつてとあいうえおかきく<br>
こさしすせそたちつてとあいうえおかきくけ<br>
さしすせそたちつてとあいうえおかきくけこ<br>
しすせそたちつてとあいうえおかきくけこさ<br>
すせそたちつてとあいうえおかきくけこさし<br>
せそたちつてとあいうえおかきくけこさしす<br>
そたちつてとあいうえおかきくけこさしすせ<br>
たちつてとあいうえおかきくけこさしすせそ<br>
ちつてとあいうえおかきくけこさしすせそた<br>
つてとあいうえおかきくけこさしすせそたち<br>
てとあいうえおかきくけこさしすせそたちつ<br>
とあいうえおかきくけこさしすせそたちつて</div></div></td>
</tr>
</table>
</body>
</html>
タグ:HTML CSS javascript
posted by K/I at 07:03 | 東京 ☁ | Comment(4) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年06月15日

Mac OS X で、ターミナルからアプリを起動する

Mac OS X の GUI アプリのパスをターミナル (コマンドライン) から直接実行してもアプリは起動しない。
どうすれば起動できるのか調べてみた。

その結果、それはごく単純で、

$ open GUI アプリのパス

とすればよいことがわかった。
たとえば、Microsoft Word を起動したければ、

$ open /Applications/Microsoft\ Office\ 2004/Microsoft\ Word

などとするのである。
ファイルを引数に与えて、Word で開くこともできて、

$ open /Applications/Microsoft\ Office\ 2004/Microsoft\ Word project.doc

で、project.doc という MS Word ファイルを開くことができる。
posted by K/I at 22:03 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年06月04日

Windows を X サーバーにする (Cygwin)

ふだん、Windows 端末から Linux サーバーにSSH接続して Linux 上で作業している。
Linux が使い慣れているのだが、仕事上 Windows 系フォーマットの文書でやりとりすることが多く、Windows の使用は必須なのでこういうやり方になっている。

時折 X アプリを使いたくなるが、わざわざそのために商用の X サーバーソフトを購入するのもいやなので、Cygwin パッケージで Windows を X 端末にして使っている。

Cygwin
http://sourceware.org/cygwin/

※Cygwin のインストールや設定手順などは割愛。
※以下、バージョン 1.5.24-2 で試した。

インストールするとデフォルトで X Window System 関連のおもなパッケージがインストールされるようだ。
もしインストールされていなければ、X-startup-scripts を選ぶと必要なパッケージが選ばれてインストールされるはず。
なお、Windows Vista の場合は WindowMaker パッケージをインストールしないと、X Window を正常起動できなかった。
※うまく設定すれば解消できるのかもしれないが、面倒なのでとりあえずこれで。

念のため、最低限必要なパッケージを列挙する
  • X-startup-scripts
  • xorg-x11-base
  • xorg-x11-bin
  • xorg-x11-bin-dlls
  • xorg-x11-bin-lndir
  • xorg-x11-etc
  • xorg-x11-fenc
  • xorg-x11-fnts
  • xorg-x11-libs-data
  • xorg-x11-xwin
  • xterm
  • WindowMaker (特に Windows Vista の場合)
インストールしたら、Cygwin Bash Shell を起動し、
$ startx
または
$ startxwin.sh
で X サーバーを起動する。(startxwin.batというのもあるが、こちらは通常のコマンドプロンプトからの起動用か?)
タスクトレイに、X Window System のアイコンが表示され、xterm のウィンドウが開く。
もし、xterm ウィンドウが開かない場合は、startx コマンドの xterm のパスが違っているかもしれない。
その場合は、startx を書き換えるか、xterm のパスを引数に与える。
which コマンドがあれば、こんな感じ:
$ startx `which xterm`
これで X サーバーが立ち上がり、Windows 端末を X サーバーとして使える。

たとえば、Linux マシンから、Cygwin マシンに X アプリを表示させるには、次のようにすればよい。
まず Cygwin マシンの xterm 上で、
$ xhost Linuxマシン
を実行して Linux マシンからの X 経由のアクセスを許可しておく。そして Linux マシン上で、
$ DISPLAY=Cygwinマシン:0.0; export DISPLAY
とする (bash の場合)。なお、0.0 のところは、ディスプレイ番号.スクリーン番号である。
これで、Linux マシンで X アプリを起動すると、Cygwin マシンに表示されるようになる。

X サーバーを終了するには、xterm または起動シェル上で exit すればよい。
posted by K/I at 09:39 | 東京 ☀ | Comment(0) | TrackBack(1) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年06月02日

Fedora Core 6 -> Fedora Core 7 アップグレード

Fedora Core 7 がリリースされた。

First Open Source Appliance Development Stack Builder Now Available in Fedora 7
http://www.redhat.com/about/news/prarchive/2007/fedora7.html

Fedora 7リリース
http://www.itmedia.co.jp/news/articles/0706/01/news044.html

とりあえず、Fedora Core 6 からアップグレードしてみた。
手順は「Fedora Core 5 -> Fedora Core 6 アップグレード」と同じ。

なお、FC7 用のリリースファイルとリリースノートは、たとえば以下の URL からダウンロードできる。
http://ftp.iij.ad.jp/pub/linux/fedora/releases/7/Fedora/i386/os/Fedora/fedora-release-7-3.noarch.rpm http://ftp.iij.ad.jp/pub/linux/fedora/releases/7/Fedora/i386/os/Fedora/fedora-release-notes-7.0.0-1.noarch.rpm

今のところ、アップグレードによる大きな不具合は特に出ていないが、emacs-w3m が変なエラーメッセージを出すようになった。
もう少し調べてみようと思う。
posted by K/I at 16:26 | 東京 ☀ | Comment(0) | TrackBack(2) | 技術メモ | このブログの読者になる | 更新情報をチェックする

Emacs 上で RSS フィードをチェックする (Newsticker)

ブログやニュースが更新されていないか気になったとき、そのためだけに Web ブラウザや RSS リーダーを立ち上げるのはばかばかしい。
ふだん Emacs 上で生活している身にとっては、Emacs でそれが完結していればうれしいのだ。

そのようなわけで、探してみたらとてもいいものがあった。

Newsticker for Emacs
http://www.nongnu.org/newsticker/

RSS/Atom は規格がややこしいのでよくわからないが、おもな規格にはすべて対応しているようだ。

インストールは簡単で、ダウンロードページから最新の .el ファイルをダウンロードし、emacs の site-lisp ディレクトリなどに置けばよい。
あとは、.emacs ファイルに、

(autoload 'newsticker-start "newsticker" "Emacs Newsticker" t)
(autoload 'newsticker-show-news "newsticker" "Emacs Newsticker" t)

と書けばよい。

RSS フィードの追加は、設定画面から行う。
M-x newsticker-start で Newsticker を起動した後、M-x customize-group で Emacs の設定画面を開く。グループは newsticker を選ぶ。
"Newsticker Feed" グループを選び、"Newsticker Url List" に、RSS フィードの名前と URI を挿入する。
Save for Future Sessions を選んで .emacs ファイルに保存すれば、Newsticker 画面にそのフィードが表示されるようになる。

Newsticker バッファでのキーバーインドのうち主なものを挙げると以下のとおり:
n
次の記事に移動
N
次の未読記事に移動
RET
記事のURLに移動する
o
現在の記事を既読にする
O
現在のフィードのすべての記事を既読にする
M
すべての記事を既読にする
g
現在のフィードの最新記事を取得する
G
すべてのフィードの最新記事を取得する
u
Newstickerバッファを更新する

タグ:Emacs RSS ATOM
posted by K/I at 15:03 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年05月26日

HTML_AJAX のインストール

PEAR 拡張ライブラリ HTML_AJAX をインストールした。

インストールはごく簡単で、

# pear install html_ajax-beta

コマンドを実行すればよい (HTML_AJAX はまだβ版なので、パッケージ名末尾に -beta をつけている)。

ただし、使用している PEAR のバージョンが 1.4.0 未満だと
No handlers for package.xml version 2.0
というエラーメッセージが表示されるので、

# pear upgrade PEAR

で PEAR を最新にしておく必要がある。
PEAR のバージョンが 1.3.6 より古い場合は、一度に最新版にできないので、いったん 1.3.6 にアップグレードしてから最新版にする。

# pear upgrade -a PEAR-1.3.6
# pear upgrade -a PEAR

-aをつけておくと、必要なパッケージも同時にインストールしてくれる。
ただし、試した環境 (CentOS 4.4) では2つめのアップグレードがうまく依存関係を解決できず失敗したので、必要パッケージを別途アップグレードしておいてから、-a をつけずにアップグレードした。

# pear upgrade Archive_Tar
# pear upgrade Structures_Graph
# pear upgrade PEAR

posted by K/I at 21:20 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年05月25日

メールの冒頭のみを携帯電話に転送する

以前、Procmail を使って PC で受信したメールを携帯電話に転送する方法について書いたが (「PC←→携帯間メール転送 (fetchmail & procmail)」)、パケット定額にしていないので通信費がバカにならないことがわかった。
せめて、メールの冒頭のみ転送すればよいことに気づき、そのためのスクリプトを書いてみた。
#!/usr/bin/perl
#==============================================================================
# メールの冒頭部分テキストを出力する
#------------------------------------------------------------------------------
# 使い方:
# cat MAIL_FILE | mail_firstlines 10
# メールファイル MAIL_FILE の本文冒頭 10 行分を標準出力
#==============================================================================
my $header = '';
#------------------------------------------------------------------------------
# 表示行数の決定
#------------------------------------------------------------------------------
my $lines = 1;
if ($#ARGV >= 0) {
$lines = $ARGV[0];
$lines =~ /^\d+$/ or $lines = 1;
}
#------------------------------------------------------------------------------
# メールヘッダをスキャンし、ヘッダ全体を $header に格納する
# ※Content-Type: ヘッダはあとで変換する都合があり、1行にまとめている
#------------------------------------------------------------------------------
my $content_type = '';
my $content_type_stat = 0;
my $to_stat = 0;
while (<STDIN>) {
s/(?:\r\n?|\n)$//;
last if $_ eq '';
if (/^content-type:\s*(.+)$/i) {
# Content-Type: ヘッダ
$content_type_stat = 1;
$content_type = $1;
} elsif (/^\s/ and $content_type_stat) {
# Content-Type: の続き
s/^\s+//;
$content_type .= $_;
} else {
if ($content_type_stat) {
$header .= "Content-Type: $content_type\n";
}
$header .= "$_\n";
$content_type_stat = 0;
}
}
if ($content_type_stat) {
$header .= "Content-Type: $content_type\n";
}
#------------------------------------------------------------------------------
# Content-Type が text/* のメールは、指定された行数出力
#------------------------------------------------------------------------------
if ($content_type =~ /^text\//i) {
print $header;
print "\n";
# print first lines and exit.
for (my $i = 0; !eof(STDIN) and $i < $lines; $i++) {
$_ = <STDIN>;
s/(?:\r\n?|\n)$//;
# 空行または>で始まる行、最初の挨拶文はとばす
if ($_ eq '' or /^>/ or ($i == 0 and aisatu($_))) {
--$i;
} else {
print "$_\n";
}
}
exit;
}
#------------------------------------------------------------------------------
# Content-Type が multipart/* のメールは、各パートから text/* のものを探す
#------------------------------------------------------------------------------
elsif ($content_type =~ /^multipart\//i) {
# boundary を調べる
$content_type =~ /boundary\s*=\s*([^;]+)/i;
my $boundary = $1;
$boundary =~ s/^\"(.+)\"$/$1/;
# パターンマッチに使うので、エスケープ
$boundary =~ s/([\(\)\[\]\+\*\.])/\\$1/g;
# 各パートを調べる
LOOP1:
while (!eof(STDIN)) {
while (<STDIN>) {
# パート先頭を検知
last if /^\-\-$boundary/;
}
# パートの Content-Type を調べる
$content_type = '';
$content_type_stat = 0;
while (<STDIN>) {
s/(?:\r\n?|\n)$//;
last if $_ eq '';
if (/^content-type:\s*(.+)$/i) {
# Content-Type: ヘッダ
$content_type_stat = 1;
$content_type = $1;
} elsif (/^\s/ and $content_type_stat) {
# Content-Type: の続き
s/^\s+//;
$content_type .= $_;
} else {
$content_type_stat = 0;
}
last LOOP1 if eof(STDIN);
}
#----------------------------------------------------------------------
# text/* のパートの場合
#----------------------------------------------------------------------
if ($content_type =~ /^text\//i) {
# メールヘッダを、このパートのヘッダに変更
$header =~ s/^Content-Type: .+$/Content-Type: $content_type/m;
# ヘッダを出力
print $header;
print "\n";
# パートの冒頭から指定された行数出力
for (my $i = 0; !eof(STDIN) and $i < $lines; $i++) {
$_ = <STDIN>;
s/(?:\r\n?|\n)$//;
# 空行または>で始まる行、最初の挨拶文はとばす
if ($_ eq '' or /^>/ or ($i == 0 and aisatu($_))) {
--$i;
} else {
print "$_\n";
}
}
exit;
}
}
#--------------------------------------------------------------------------
# text/* のパートが見つからない場合は、空メール
#--------------------------------------------------------------------------
$header =~ s/^Content-Type: .+$/Content-Type: text\/plain/m;
print $header;
print "\n";
}
#------------------------------------------------------------------------------
# それ以外は空メール
#------------------------------------------------------------------------------
else {
if ($content_type eq '') {
$header .= "Content-Type: text/plain\n";
} else {
$header =~ s/^Content-Type: .+$/Content-Type: text\/plain/m;
}
print $header;
print "\n";
}
# 挨拶文かどうか判定
sub aisatu
{
my $str = $_[0];
return
(
$str =~ /\x24\x35\x24\x5e/ # さま
or $str =~ /\x24\x35\x24\x73/ # さん
or $str =~ /\x4d\x4d/ # 様
or $str =~ /\x24\x2a\x40\x24\x4f\x43/ # お世話
);
}
exit;
※空行または>ではじまる行をとばす処理を redo if ($_ eq '' or /^>/) としていたが、そこで処理が停止してしまう症状が起きるので、上記のように改めた (2007-06-06)。原因は不明。

使い方は、これをたとえば mail_firstlinesというファイル名で保存してパーミションを正しく指定し、
$ cat mail_file | mail_firstlines 10 | /usr/sbin/sendmail 携帯メールアドレス
のように実行する。
Procmail で実行させるのであれば、.procmail に、
:0c | mail_firstlines 10 | /usr/sbin/sendmail 携帯メールアドレス
などと記述すればよい。
mail_firstlines は、パラメータに転送する本文の行数をとる。省略すると、1行だけ送る。
コンテンツがテキスト以外の場合は、本文が空のメールを送る。 添付ファイルがある場合 (Multipart の場合) は、テキストの添付ファイルを探して送る (ただし、1階層のみに対応)。
mail_firstlines は、Content-Type 以外はヘッダに変更を加えていない。

【変更履歴】
2007-06-07
コードに aisatu 関数を追加し、最初の挨拶文を含む行を除去するようにした
posted by K/I at 14:37 | 東京 ☔ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年05月06日

SVK のインストール (CentOS 5)

以前、CentOS 4.4 に SVK をインストールして失敗したが (「SVK 導入失敗の顛末 (CentOS 4.4)」参照)、CentOS 5.0 にはインストールが成功した。
内容がダブるが、手順を書き留めておく。

(1) SVN::Core のインストール

SVN::Core のインストールには APR などが必要なので、まずhttpd-devel パッケージをインストールしておく。

# yum install httpd-devel

次に、Perl モジュール SVN::Core をインストールする。
SVN::Core は CPAN では提供されていないため、Subversion のソースからインストールする。
まず、インストールされている Subversion のバージョンを調べる。

$ svn --version

今回は 1.4.2 だったので、対応するバージョンの Subversion のソースを入手する。
最新のソースが「Subversion latest source release」にあるので、そのバージョン番号を変えてダウンロードした。

$ wget http://subversion.tigris.org/downloads/subversion-1.4.2.tar.bz2

ダウンロードしたファイルを解凍し、./configure コマンドを実行する。このとき、ライブラリのインストール先を /usr/lib にしておく。

$ ./configure --libdir=/usr/lib

あとは make し、インストールする。

$ make swig-pl
$ make check-swig-pl
# make install-swig-pl


ただし、check-swig-pl する際に LANG が ja_JP などになっているとエラーになってしまう。その場合は、

$ LANG=C make check-swig-pl

などとする (Bash の場合)。


(2) SVK のインストール

SVK のソースを入手する。SVN 経由で入手するには、

$ svn co http://svn.clkao.org/svk/branches/2.0-releng/

など。
チェックアウトしたディレクトリに移動し、

$ perl Makefile.PL

を実行する。不足している Perl モジュールを洗い出してくれる。

# make
# make install


make するとき、CPAN から不足 Perl モジュールを自動インストールするので、root 権限で実行する。
また、SVN::Mirror のインストールの際、やはり LANG を C などにしないと test でエラーになることがあるので、その場合は、

# LANG=C make

などとする。

以上で、SVK のインストールが完了する。

$ svk --version

で、正しく実行できるか確認できる。
posted by K/I at 17:55 | 東京 ☔ | Comment(1) | TrackBack(1) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年04月28日

タイムゾーンと地域名の対照表(PHP) (ヨーロッパ編)

●「アジア (および説明)
●「アフリカ
●「アメリカ・1
●「アメリカ・2
●「オーストラリア・北極・南極
●「太平洋・大西洋・インド洋

●ヨーロッパ
地域名タイムゾーン文字列標準時夏時間
(西ヨーロッパ)
(Western Europse)
WET0
(WET)
+1
(WEST)
(中央ヨーロッパ)
(Middle Europe)
MET+1
(MET)
+2
(MEST)
(中央ヨーロッパ)
(Central Europe)
CET+1
(CET)
+2
(CEST)
(東ヨーロッパ)
(Eastern Europe)
EET+2
(EET)
+3
(EEST)
ジブラルタル
Gibraltar
Europe/Gibraltar+1
(CET)
+2
(CEST)
アイルランド / エーラ
Ireland / Éire
Eire0
(GMT)
+1
(IST)
アイルランド / ダブリン
Republic of Ireland / Dublin
Europe/Dublin0
(GMT)
+1
(IST)
アルバニア / ティラナ
Albania / Tirana
Europe/Tirane+1
(CET)
+2
(CEST)
アンドラ
Andorra
Europe/Andorra+1
(CET)
+2
(CEST)
イギリス / エーラ
United Kingdom / Éire
GB-Eire0
(GMT)
+1
(BST)
イギリス / 北アイルランド / ベルファスト
United Kingdom / Northern Ireland / Belfast
Europe/Belfast0
(GMT)
+1
(BST)
イギリス / ロンドン
United Kingdom / London
Europe/London0
(GMT)
+1
(BST)
イギリス
United Kingdom
GB0
(GMT)
+1
(BST)
イタリア / ラツィオ州 / ローマ
Italy / Lazio / Rome
Europe/Rome+1
(CET)
+2
(CEST)
ウクライナ / キエフ
Ukraine / Kiev
Europe/Kiev+2
(EET)
+3
(EEST)
ウクライナ / クリミア自治共和国 / シンフェロポリ
Ukraine / Crimea / Simferopol
Europe/Simferopol+2
(EET)
+3
(EEST)
ウクライナ / ザカルパッチャ州 / ウージュホロド
Ukraine / Zakarpattya / Uzhhorod
Europe/Uzhgorod+2
(EET)
+3
(EEST)
ウクライナ / ザポリッジャ州 / ザポリッジャ
Ukraine / Zaporizhia / Zaporizhia
Europe/Zaporozhye+2
(EET)
+3
(EEST)
エストニア / タリン
Estonia / Tallinn
Europe/Tallinn+2
(EET)
+3
(EEST)
オーストリア / ウィーン
Austria / Vienna
Europe/Vienna+1
(CET)
+2
(CEST)
オランダ / アムステルダム
Netherlands / Amsterdam
Europe/Amsterdam+1
(CET)
+2
(CEST)
キプロス / ニコシア
Cyprus / Nicosia
Europe/Nicosia+2
(EET)
+3
(EEST)
ギリシャ / アテネ
Greece / Athens
Europe/Athens+2
(EET)
+3
(EEST)
クロアチア / ザグレブ
Croatia / Zagreb
Europe/Zagreb+1
(CET)
+2
(CEST)
サンマリノ
San Marino
Europe/San_Marino+1
(CET)
+2
(CEST)
スイス / チューリッヒ州 / チューリッヒ
Switzerland / Canton of Zürich / Zürich
Europe/Zurich+1
(CET)
+2
(CEST)
スウェーデン / ストックホルム県 / ストックホルム
Sweden / Stockholm / Stockholm
Europe/Stockholm+1
(CET)
+2
(CEST)
スペイン / マドリード州 / マドリード
Spain / Madrid / Madrid
Europe/Madrid+1
(CET)
+2
(CEST)
スロバキア / ブラチスラヴァ
Slovakia / Bratislava
Europe/Bratislava+1
(CET)
+2
(CEST)
スロベニア / リュブリャナ
Slovenia / Ljubljana
Europe/Ljubljana+1
(CET)
+2
(CEST)
セルビア / ベオグラード
Serbia / Belgrade
Europe/Belgrade+1
(CET)
+2
(CEST)
チェコ / プラハ
Czech Republic / Prague
Europe/Prague+1
(CET)
+2
(CEST)
チャンネル諸島 / ガーンジー島
Channel Islands / Guernsey
Europe/Guernsey-- 
チャンネル諸島 / ジャージー島
Channel Islands / Jersey
Europe/Jersey-- 
デンマーク / コペンハーゲン
Denmark / Copenhagen
Europe/Copenhagen+1
(CET)
+2
(CEST)
ドイツ / ベルリン
Germany / Berlin
Europe/Berlin+1
(CET)
+2
(CEST)
トルコ / イスタンブル県 / イスタンブル
Turkey / Istanbul Province / Istanbul
Europe/Istanbul+2
(EET)
+3
(EEST)
トルコ
Turkey
Turkey+2
(EET)
+3
(EEST)
ノルウェー / オスロ
Norway / Oslo
Europe/Oslo+1
(CET)
+2
(CEST)
バチカン
Vatican City
Europe/Vatican+1
(CET)
+2
(CEST)
ハンガリー / ブダペスト
Hungary / Budapest
Europe/Budapest+1
(CET)
+2
(CEST)
フィンランド / オーランド自治州 / マリエハムン
Finland / Åland / Mariehamn
Europe/Mariehamn+2
(EET)
+3
(EEST)
フィンランド / ヘルシンキ
Finland / Helsinki
Europe/Helsinki+2
(EET)
+3
(EEST)
フランス / イル=ド=フランス地域圏 / パリ
France / Île-de-France / Paris
Europe/Paris+1
(CET)
+2
(CEST)
ブルガリア / ソフィア
Bulgaria / Sofia
Europe/Sofia+2
(EET)
+3
(EEST)
ベラルーシ / ミンスク
Belarus / Minsk
Europe/Minsk+2
(EET)
+3
(EEST)
ベルギー / ブリュッセル
Belgium / Brussels
Europe/Brussels+1
(CET)
+2
(CEST)
ポーランド / ワルシャワ
Poland / Warsaw
Europe/Warsaw+1
(CET)
+2
(CEST)
ポーランド
Poland
Poland+1
(CET)
+2
(CEST)
ボスニア・ヘルツェゴビナ / ボスニア・ヘルツェゴビナ連邦 / サラエボ
Bosnia and Herzegovina / Federation of Bosnia and Herzegovina / Sarajevo
Europe/Sarajevo+1
(CET)
+2
(CEST)
ポルトガル / リスボン
Portugal / Lisbon
Europe/Lisbon0
(WET)
+1
(WEST)
ポルトガル
Portugal
Portugal0
(WET)
+1
(WEST)
マケドニア共和国 / スコピエ
Republic of Macedonia / Skopje
Europe/Skopje+1
(CET)
+2
(CEST)
マルタ
Malta
Europe/Malta+1
(CET)
+2
(CEST)
マン島
Isle of Man
Europe/Isle_of_Man-- 
モナコ
Monaco
Europe/Monaco+1
(CET)
+2
(CEST)
モルドバ / キシナウ
Moldova / Chişinău
Europe/Chisinau+2
(EET)
+3
(EEST)
モルドバ / チラスポリ
Moldova / Tiraspol
Europe/Tiraspol+2
(EET)
+3
(EEST)
ラトビア / リガ
Latvia / Riga
Europe/Riga+2
(EET)
+3
(EEST)
リトアニア / ビリニュス
Lithuania / Vilnius
Europe/Vilnius+2
(EET)
+3
(EEST)
リヒテンシュタイン / ファドゥーツ
Liechtenstein / Vaduz
Europe/Vaduz+1
(CET)
+2
(CEST)
ルーマニア / ワラキア / ブカレスト
Romania / Wallachia / Bucharest
Europe/Bucharest+2
(EET)
+3
(EEST)
ルクセンブルク
Luxembourg
Europe/Luxembourg+1
(CET)
+2
(CEST)
ロシア / 北西連邦管区 / カリーニングラード
Russia / Northwestern Federal District / Kaliningrad
Europe/Kaliningrad+2
(EET)
+3
(EEST)
ロシア / 中央連邦管区 / モスクワ
Russia / Central Federal District / Moscow
Europe/Moscow
または
W-SU
+3
(MSK)
+4
(MSD)
ロシア / 沿ヴォルガ連邦管区 / サマーラ
Russia / Volga Federal District / Samara
Europe/Samara+4
(SAMT)
+5
(SAMST)
ロシア / 南部連邦管区 / ヴォルゴグラード
Russia / Southern Federal District / Volgograd
Europe/Volgograd-- 

posted by K/I at 14:40 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

タイムゾーンと地域名の対照表(PHP) (太平洋・大西洋・インド洋編)

●「アジア (および説明)
●「アフリカ
●「アメリカ・1
●「アメリカ・2
●「オーストラリア・北極・南極
●「ヨーロッパ

●太平洋
地域名タイムゾーン文字列標準時夏時間
アメリカ領サモア / パゴパゴ
American Samoa / Pago Pago
Pacific/Pago_Pago-11
(SST)
 
アメリカ領サモア
American Samoa
US/Samoa-11
(SST)
 
ハワイ諸島 / ミッドウェー環礁
Hawaiian Islands / Midway Atoll
Pacific/Midway-11
(SST)
 
北マリアナ諸島 / サイパン島
Northern Mariana Islands / Saipan
Pacific/Saipan+10
(ChST)
 
マリアナ諸島 / グアム
Mariana Islands / Guam
Pacific/Guam+10
(ChST)
 
ウェーク島
Wake Island
Pacific/Wake+12
(WAKT)
 
ピトケアン諸島
Pitcairn Islands
Pacific/Pitcairn-8
(PST)
 
ノーフォーク島
Norfolk Island
Pacific/Norfolk+11.5
(NFT)
 
イースター島
Easter Island
Chile/EasterIsland
または
Pacific/Easter
-6
(EAST)
-5
(EASST)
チャタム諸島
Chatham Islands
Pacific/Chatham+12.75
(CHAST)
+13.75
(CHADT)
フランス領ポリネシア / タヒチ島
French Polynesia / Tahiti
Pacific/Tahiti-10
(TAHT)
 
フランス領ポリネシア / マルキーズ諸島
French Polynesia / Marquesas Islands
Pacific/Marquesas-9.5
(MART)
 
フランス領ポリネシア / ガンビエ諸島
French Polynesia / Gambier
Pacific/Gambier-9
(GAMT)
 
ニューカレドニア / ヌメア
New Caledonia / Nouméa
Pacific/Noumea+11
(NCT)
 
アメリカ合衆国 / ハワイ州 / ジョンストン島
U. S. / Hawaii / Johnston Atoll
Pacific/Johnston-10
(HST)
 
アメリカ合衆国 / ハワイ州 / ホノルル
U. S. / Hawaii / Honolulu
Pacific/Honolulu-10
(HST)
 
アメリカ合衆国 / ハワイ州
U. S. / Hawaii
US/Hawaii
または
HST
-10
(HST)
 
キリバス / タラワ環礁
Kiribati / Tarawa Atoll
Pacific/Tarawa+12
(GILT)
 
キリバス / キリスィマスィ島
Kiribati / Kiritimati
Pacific/Kiritimati+14
(LINT)
 
クック諸島 / ラロトンガ島
Cook Islands / Rarotonga
Pacific/Rarotonga-10
(CKT)
 
サモア / アピア
Samoa / Apia
Pacific/Apia-11
(WST)
 
サモア
Samoa
Pacific/Samoa-11
(SST)
 
ソロモン諸島 / ガダルカナル島
Solomon Islands / Guadalcanal
Pacific/Guadalcanal+11
(SBT)
 
ツバル / フナフティ島
Tuvalu / Funafuti
Pacific/Funafuti+12
(TVT)
 
トンガ / トンガタプ島
Tonga / Tongatapu
Pacific/Tongatapu+13
(TOT)
 
ナウル
Nauru
Pacific/Nauru+12
(NRT)
 
ニウエ
Niue
Pacific/Niue-11
(NUT)
 
ニュージーランド / オークランド
New Zealand / Auckland
Pacific/Auckland+12
(NZST)
+13
(NZDT)
ニュージーランド
New Zealand
NZ+12
(NZST)
+13
(NZDT)
ニュージーランド / チャタム諸島
New Zealand / Chatham Islands
NZ-CHAT+12.75
(CHAST)
+13.75
(CHADT)
バヌアツ / エファテ島
Vanuatu / Efate
Pacific/Efate+11
(VUT)
 
パプアニューギニア / ポートモレスビー
Papua New Guinea / Port Moresby
Pacific/Port_Moresby+10
(PGT)
 
パラオ
Palau
Pacific/Palau+9
(PWT)
 
フィジー
Fiji
Pacific/Fiji+12
(FJT)
 
フランス / ウォリス・フツナ / ウォリス島
France / Collectivité des Îles Wallis et Futuna / Wallis Island
Pacific/Wallis+12
(WFT)
 
マーシャル諸島 / ラリック列島 / クェゼリン環礁
Marshall Islands / Ralik Chain / Kwajalein
Kwajalein
または
Pacific/Kwajalein
+12
(MHT)
 
マーシャル諸島 / マジュロ
Marshall Islands / Majuro
Pacific/Majuro+12
(MHT)
 
ミクロネシア連邦 / チューク州
Federated States of Micronesia / Chuuk
Pacific/Truk+10
(TRUT)
 
ミクロネシア連邦 / ヤップ州
Federated States of Micronesia / Yap
Pacific/Yap+10
(TRUT)
 
ミクロネシア連邦 / コスラエ州
Federated States of Micronesia / Kosrae
Pacific/Kosrae+11
(KOST)
 
ミクロネシア連邦 / ポンペイ州
Federated States of Micronesia / Pohnpei
Pacific/Ponape+11
(PONT)
 
ファカオフォ島
Fakaofo
Pacific/Fakaofo-10
(TKT)
 
ガラパゴス諸島
Galápagos Islands
Pacific/Galapagos-6
(GALT)
 
フェニックス諸島 / エンダーバリ島
Phoenix Islands / Enderbury Island
Pacific/Enderbury+13
(PHOT)
 


●大西洋
地域名タイムゾーン文字列標準時夏時間
フォークランド諸島 / スタンリー
Falkland Islands / Stanley
Atlantic/Stanley-4
(FKT)
-3
(FKST)
バミューダ諸島
Bermuda
Atlantic/Bermuda-4
(AST)
-3
(ADT)
サウスジョージア・サウスサンドウィッチ諸島
South Georgia and the South Sandwich Islands
Atlantic/South_Georgia-2
(GST)
 
セントヘレナ
Saint Helena
Atlantic/St_Helena0
(GMT)
 
フェロー諸島
Faroe Islands
Atlantic/Faeroe0
(WET)
+1
(WEST)
ヤンマイエン島
Jan Mayen
Atlantic/Jan_Mayen+1
(CET)
+2
(CEST)
アゾレス諸島
Azores
Atlantic/Azores-1
(AZOT)
0
(AZOST)
マデイラ諸島
Madeira
Atlantic/Madeira0
(WET)
+1
(WEST)
アイスランド / レイキャヴィーク
Iceland / Reykjavík
Atlantic/Reykjavik0
(GMT)
 
アイスランド
Iceland
Iceland0
(GMT)
 
カーボベルデ
Cape Verde
Atlantic/Cape_Verde-1
(CVT)
 
スペイン / カナリア諸島
Spain / Canary Islands
Atlantic/Canary0
(WET)
+1
(WEST)


●インド洋
地域名タイムゾーン文字列標準時夏時間
イギリス領インド洋地域 / チャゴス諸島
British Indian Ocean Territory / Chagos Archipelago
Indian/Chagos+6
(IOT)
 
ココス諸島
Cocos Islands
Indian/Cocos+6.5
(CCT)
 
クリスマス島
Christmas Island
Indian/Christmas+7
(CXT)
 
フランス領南方・南極地域 / ケルゲレン諸島
French Southern and Antarctic Lands / Kerguelen Islands
Indian/Kerguelen+5
(TFT)
 
インド / ポンディシェリ連邦直轄地域 / マヘ
India / Puducherry / Mahé
Indian/Mahe+4
(SCT)
 
コモロ / コモロ諸島
Comoros / Comoro Islands
Indian/Comoro+3
(EAT)
 
フランス / マヨット
France / Mayotte
Indian/Mayotte+3
(EAT)
 
フランス / レユニオン
France / Réunion
Indian/Reunion+4
(RET)
 
マダガスカル / アンタナナリボ
Madagascar / Antananarivo
Indian/Antananarivo+3
(EAT)
 
モーリシャス
Mauritius
Indian/Mauritius+4
(MUT)
 
モルディブ
Maldives
Indian/Maldives+5
(MVT)
 

posted by K/I at 14:36 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

タイムゾーンと地域名の対照表(PHP) (オーストラリア・北極・南極編)

●「アジア (および説明)
●「アフリカ
●「アメリカ・1
●「アメリカ・2
●「太平洋・大西洋・インド洋
●「ヨーロッパ

●オーストラリア
地域名タイムゾーン文字列標準時夏時間
オーストラリア / 西オーストラリア州 / パース
Australia / Western Australia / Perth
Australia/Perth+8
(WST)
 
オーストラリア / 西オーストラリア州
Australia / Western Australia
Australia/West+8
(WST)
 
オーストラリア / ニューサウスウェールズ州 / ブロークンヒル
Australia / New South Wales / Broken Hill
Australia/Broken_Hill+9.5
(CST)
+10.5
(CST)
オーストラリア / ニューサウスウェールズ州 / Yancowinna County
Australia / New South Wales / Yancowinna County
Australia/Yancowinna+9.5
(CST)
+10.5
(CST)
オーストラリア / ノーザンテリトリー準州 / ダーウィン
Australia / Northern Territory / Darwin
Australia/Darwin+9.5
(CST)
 
オーストラリア / ノーザンテリトリー準州
Australia / Northern Territory
Australia/North+9.5
(CST)
 
オーストラリア / 南オーストラリア州 / アデレード
Australia / South Australia / Adelaide
Australia/Adelaide+9.5
(CST)
+10.5
(CST)
オーストラリア / 南オーストラリア州
Australia / South Australia
Australia/South+9.5
(CST)
+10.5
(CST)
オーストラリア / クィーンズランド州 / ブリスベン
Australia / Queensland / Brisbane
Australia/Brisbane+10
(EST)
 
オーストラリア / クィーンズランド州 / リンデマン島
Australia / Queensland / Lindeman Island
Australia/Lindeman+10
(EST)
 
オーストラリア / クィーンズランド州
Australia / Queensland
Australia/Queensland+10
(EST)
 
オーストラリア / タスマニア州 / カレー
Australia / Tasmania / Currie
Australia/Currie+10
(EST)
+11
(EST)
オーストラリア / タスマニア州 / ホバート
Australia / Tasmania / Hobart
Australia/Hobart+10
(EST)
+11
(EST)
オーストラリア / タスマニア州
Australia / Tasmania
Australia/Tasmania+10
(EST)
+11
(EST)
オーストラリア / ニューサウスウェールズ州 / シドニー
Australia / New South Wales / Sydney
Australia/Sydney+10
(EST)
+11
(EST)
オーストラリア / ニューサウスウェールズ州
Australia / New South Wales
Australia/NSW+10
(EST)
+11
(EST)
オーストラリア / ビクトリア州 / メルボルン
Australia / Victoria / Melbourne
Australia/Melbourne+10
(EST)
+11
(EST)
オーストラリア / ビクトリア州
Australia / Victoria
Australia/Victoria+10
(EST)
+11
(EST)
オーストラリア / オーストラリア首都特別地域
Australia / Australian Capital Territory
Australia/ACT+10
(EST)
+11
(EST)
オーストラリア / キャンベラ
Australia / Canberra
Australia/Canberra+10
(EST)
+11
(EST)
オーストラリア / ニューサウスウェールズ州 / ロード・ハウ島
Australia / New South Wales / Lord Howe Island
Australia/LHI
または
Australia/Lord_Howe
+10.5
(LHST)
+11
(LHST)


●北極
地域名タイムゾーン文字列標準時夏時間
スヴァールバル諸島 / ロングイェールビーン
Svalbard Islands / Longyearbyen
Arctic/Longyearbyen+1
(CET)
+2
(CEST)


●南極
地域名タイムゾーン文字列標準時夏時間
アンヴァース島 / パーマー基地
Anvers Island / Palmer Station
Antarctica/Palmer-4
(CLT)
-3
(CLST)
アデレード島 / ロゼラ研究基地
Adelaide Island / Rothera Research Station
Antarctica/Rothera-3
(ROTT)
 
東オングル島 / 昭和基地
East Ongul Island / Showa Station
Antarctica/Syowa+3
(SYOT)
 
ボストーク基地
Vostok Station
Antarctica/Vostok+6
(VOST)
 
マック・ロバ−トソン・ランド / モーソン基地
Mac Robertson Land / Mawson Station
Antarctica/Mawson+6
(MAWT)
 
プリンセス・エリザベス・ランド / デービス基地
Princess Elizabeth Land / Davis Station
Antarctica/Davis+7
(DAVT)
 
ヴィンセンス湾 / ケーシー基地
Vincennes Bay / Casey Station
Antarctica/Casey+8
(WST)
 
アデリーランド / デュモン・デュルヴィル基地
Adélie Land / Dumont d'Urville Station
Antarctica/DumontDUrville+10
(DDUT)
 
南極点
South Pole
Antarctica/South_Pole+12
(NZST)
+13
(NZDT)
ロス島 / マクマード基地
Ross Island / McMurdo Station
Antarctica/McMurdo+12
(NZST)
+13
(NZDT)

posted by K/I at 14:33 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

タイムゾーンと地域名の対照表(PHP) (アメリカ編・2 - その他)

●「アジア (および説明)
●「アフリカ
●「アメリカ・1
●「オーストラリア・北極・南極
●「太平洋・大西洋・インド洋
●「ヨーロッパ

●アメリカ・2
地域名タイムゾーン文字列標準時夏時間
アメリカ領ヴァージン諸島
United States Virgin Islands
America/Virgin-4
(AST)
 
西インド諸島 / プエルトリコ
West Indies / Puerto Rico
America/Puerto_Rico-4
(AST)
 
タークス・カイコス諸島 / グランドターク島
Turks and Caicos Islands / Grand Turk Island
America/Grand_Turk-5
(EST)
-4
(EDT)
西インド諸島 / ケイマン諸島
West Indies / Cayman Islands
America/Cayman-5
(EST)
 
イギリス領ヴァージン諸島 / トルトラ
British Virgin Islands / Tortola
America/Tortola-4
(AST)
 
西インド諸島 / アンギラ
West Indies / Anguilla
America/Anguilla-4
(AST)
 
西インド諸島 / モントセラト
West Indies / Montserrat
America/Montserrat-4
(AST)
 
西インド諸島 / アルバ
West Indies / Aruba
America/Aruba-4
(AST)
 
西インド諸島 / グアドループ
West Indies / Guadeloupe
America/Guadeloupe-4
(AST)
 
西インド諸島 / マルティニーク
West Indies / Martinique
America/Martinique-4
(AST)
 
サンピエール島・ミクロン島
Saint-Pierre et Miquelon
America/Miquelon-3
(PMST)
-2
(PMDT)
アルゼンチン / カタマルカ州 / カタマルカ
Argentina / Catamarca / Catamarca
America/Argentina/Catamarca-3
(ART)
 
アルゼンチン / カタマルカ州 / カタマルカ
Argentina / Catamarca / Catamarca
America/Catamarca-3
(ART)
 
アルゼンチン / コルドバ州 / コルドバ
Argentina / Córdoba / Córdoba
America/Argentina/Cordoba-3
(ART)
 
アルゼンチン / コルドバ州 / コルドバ
Argentina / Córdoba / Córdoba
America/Cordoba-3
(ART)
 
アルゼンチン / サンタクルス州 / リオ・ガジェーゴス
Argentina / Santa Cruz / Río Gallegos
America/Argentina/Rio_Gallegos-3
(ART)
 
アルゼンチン / サンタフェ州 / ロサリオ
Argentina / Santa Fe / Rosario
America/Rosario-3
(ART)
 
アルゼンチン / サンフアン州 / サンフアン
Argentina / San Juan / San Juan
America/Argentina/San_Juan-3
(ART)
 
アルゼンチン / チュブ州 / コモドロリバダビア
Argentina / Chubut / Comodoro Rivadavia
America/Argentina/ComodRivadavia-3
(ART)
 
アルゼンチン / ティエラ・デル・フエゴ州 / ウシュアイア
Argentina / Tierra del Fuego / Ushuaia
America/Argentina/Ushuaia-3
(ART)
 
アルゼンチン / トゥクマン州 / トゥクマン
Argentina / Tucumán / Tucumán
America/Argentina/Tucuman-3
(ART)
 
アルゼンチン / ブエノスアイレス
Argentina / Buenos Aires
America/Argentina/Buenos_Aires-3
(ART)
 
アルゼンチン / ブエノスアイレス
Argentina / Buenos Aires
America/Buenos_Aires-3
(ART)
 
アルゼンチン / フフイ州 / フフイ
Argentina / Jujuy / Jujuy
America/Argentina/Jujuy-3
(ART)
 
アルゼンチン / フフイ州 / フフイ
Argentina / Jujuy / Jujuy
America/Jujuy-3
(ART)
 
アルゼンチン / メンドーサ州 / メンドーサ
Argentina / Mendoza / Mendoza
America/Argentina/Mendoza-3
(ART)
 
アルゼンチン / メンドーサ州 / メンドーサ
Argentina / Mendoza / Mendoza
America/Mendoza-3
(ART)
 
アルゼンチン / ラ・リオハ州 / ラ・リオハ
Argentina / La Rioja / La Rioja
America/Argentina/La_Rioja-3
(ART)
 
アンティグア・バーブーダ
Antigua and Barbuda
America/Antigua-4
(AST)
 
ウルグアイ / モンテビデオ州 / モンテビデオ
Uruguay / Montevideo / Montevideo
America/Montevideo-3
(UYT)
 
エクアドル / グアヤキル
Ecuador / Santiago de Guayaquil
America/Guayaquil-5
(ECT)
 
エルサルバドル
El Salvador
America/El_Salvador-6
(CST)
 
ガイアナ
Guyana
America/Guyana-4
(GYT)
 
キューバ / ハバナ
Cuba / Havana
America/Havana-5
(CST)
-4
(CDT)
キューバ
Cuba
Cuba-5
(CST)
-4
(CDT)
グアテマラ
Guatemala
America/Guatemala-6
(CST)
 
グレナダ
Grenada
America/Grenada-4
(AST)
 
コスタリカ
Costa Rica
America/Costa_Rica-6
(CST)
 
コロンビア / ボゴタ
Colombia / Bogotá
America/Bogota-5
(COT)
 
ジャマイカ
Jamaica
America/Jamaica-5
(EST)
 
ジャマイカ
Jamaica
Jamaica-5
(EST)
 
スリナム / パラマリボ
Suriname / Paramaribo
America/Paramaribo-3
(SRT)
 
セントクリストファー・ネイビス
Saint Kitts and Nevis
America/St_Kitts-4
(AST)
 
セントビンセント・グレナディーン
Saint Vincent and the Grenadines
America/St_Vincent-4
(AST)
 
セントルシア
Saint Lucia
America/St_Lucia-4
(AST)
 
チリ / (大陸部)
Chile / (Continental)
Chile/Continental-4
(CLT)
-3
(CLST)
チリ / サンティアゴ
Chile / Santiago
America/Santiago-4
(CLT)
-3
(CLST)
ドミニカ共和国 / サントドミンゴ
Dominican Reublic / Santo Domingo
America/Santo_Domingo-4
(AST)
 
ドミニカ国
Dominica
America/Dominica-4
(AST)
 
トリニダード・トバゴ / ポートオブスペイン
Trinidad and Tobago / Port of Spain
America/Port_of_Spain-4
(AST)
 
ニカラグア / マナグア
Nicaragua / Managua
America/Managua-6
(CST)
 
ハイチ / ポルトープランス
Haïti / Port-au-Prince
America/Port-au-Prince-5
(EST)
 
パナマ
Panamá
America/Panama-5
(EST)
 
バハマ / ナッソー
Bahamas / Nassau
America/Nassau-5
(EST)
-4
(EDT)
パラグアイ / アスンシオン
Paraguay / Asunción
America/Asuncion-4
(PYT)
-3
(PYST)
バルバドス
Barbados
America/Barbados-4
(AST)
 
ブラジル / アクレ州 / ポルトアクレ
Brazil / Acre / Porto Acre
America/Porto_Acre-5
(ACT)
 
ブラジル / アクレ州 / リオブランコ
Brazil / Acre / Rio Branco
America/Rio_Branco-5
(ACT)
 
ブラジル / アクレ州
Brazil / Acre
Brazil/Acre-5
(ACT)
 
ブラジル / アマゾナス州 / Eirunepé
Brazil / Amazonas / Eirunepé
America/Eirunepe-5
(ACT)
 
ブラジル / (西部)
Brazil / (west)
Brazil/West-4
(AMT)
 
ブラジル / アマゾナス州 / マナウス
Brazil / Amazonas / Manaus
America/Manaus-4
(AMT)
 
ブラジル / マットグロッソ・ド・スル州 / カンポ・グランデ
Brazil / Mato Grosso do Sul / Campo Grande
America/Campo_Grande-4
(AMT)
-3
(AMST)
ブラジル / マットグロッソ州 / クイアバ
Brazil / Mato Grosso / Cuiabá
America/Cuiaba-4
(AMT)
-3
(AMST)
ブラジル / ロライマ州 / ボア・ヴィスタ
Brazil / Roraima / Boa Vista
America/Boa_Vista-4
(AMT)
 
ブラジル / ロンドニア州 / ポルト・ベーリョ
Brazil / Rondônia / Porto Velho
America/Porto_Velho-4
(AMT)
 
ブラジル / (東部)
Brazil / (east)
Brazil/East-3
(BRT)
-2
(BRST)
ブラジル / アラゴアス州 / マセイオ
Brazil / Alagoas / Maceio
America/Maceio-3
(BRT)
 
ブラジル / サンパウロ州 / サンパウロ
Brazil / São Paulo / São Paulo
America/Sao_Paulo-3
(BRT)
-2
(BRST)
ブラジル / セアラー州 / フォルタレーザ
Brazil / Ceará / Fortaleza
America/Fortaleza-3
(BRT)
 
ブラジル / トカンティンス州 / アラグアイーナ
Brazil / Tocantins / Araguaína
America/Araguaina-3
(BRT)
 
ブラジル / バイーア州
Brazil / Bahia
America/Bahia-3
(BRT)
 
ブラジル / パラー州 / ベレン
Brazil / Pará / Belem
America/Belem-3
(BRT)
 
ブラジル / ペルナンブーコ州 / レシフェ
Brazil / Pernambuco / Recife
America/Recife-3
(BRT)
 
ブラジル / ペルナンブーコ州 / フェルナンド・デ・ノローニャ
Brazil / Pernambuco / Fernando de Noronha
America/Noronha-2
(FNT)
 
ブラジル / ペルナンブーコ州 / フェルナンド・デ・ノローニャ
Brazil / Pernambuco / Fernando de Noronha
Brazil/DeNoronha-2
(FNT)
 
ベネズエラ / カラカス
Venezuela / Caracas
America/Caracas-4
(VET)
 
ベリーズ
Belize
America/Belize-6
(CST)
 
ペルー / リマ
Peru / Lima
America/Lima-5
(PET)
 
ボリビア / ラパス県 / ラパス
Bolivia / La Paz / La Paz
America/La_Paz-4
(BOT)
 
ホンジュラス / テグシガルパ
Honduras / Tegucigalpa
America/Tegucigalpa-6
(CST)
 
メキシコ / バハ・カリフォルニア・ノルテ
Mexico / Baja California Norte
Mexico/BajaNorte-8
(PST)
-7
(PDT)
メキシコ / バハ・カリフォルニア州 / エンセナダ
Mexico / Baja California / Ensenada
America/Ensenada-8
(PST)
-7
(PDT)
メキシコ / バハ・カリフォルニア州 / ティファナ
Mexico / Baja California / Tijuana
America/Tijuana-8
(PST)
-7
(PDT)
メキシコ / シナロア州 / マサトラン
Mexico / Sinaloa / Mazatlán
America/Mazatlan-7
(MST)
-6
(MDT)
メキシコ / ソノラ州 / エルモシージョ
Mexico / Sonora / Hermosillo
America/Hermosillo-7
(MST)
 
メキシコ / チワワ州 / チワワ
Mexico / Chihuahua / Chihuahua
America/Chihuahua-7
(MST)
-6
(MDT)
メキシコ / バハ・カリフォルニア・スル州
Mexico / Baja California Sur
Mexico/BajaSur-7
(MST)
-6
(MDT)
メキシコ
Mexico
Mexico/General-6
(CST)
-5
(CDT)
メキシコ / キンタナ・ロー州 / カンクン
Mexico / Quintana Roo / Cancún
America/Cancun-6
(CST)
-5
(CDT)
メキシコ / ヌエボ・レオン州 / モンテレー
Mexico / Nuevo León / Monterrey
America/Monterrey-6
(CST)
-5
(CDT)
メキシコ / ユカタン州 / メリダ
Mexico / Yucatán / Mérida
America/Merida-6
(CST)
-5
(CDT)
メキシコ / メキシコ連邦区 / メキシコシティ
Mexico / Distrito Federal / Mexico City
America/Mexico_City-6
(CST)
-5
(CDT)
オランダ領アンティル / キュラソー島
Nederlandse Antillen / Curaçao
America/Curacao-4
(AST)
 
フランス領ギアナ / カイエンヌ
Guyane française / Cayenne
America/Cayenne-3
(GFT)
 

posted by K/I at 14:28 | 東京 🌁 | Comment(1) | TrackBack(2) | 技術メモ | このブログの読者になる | 更新情報をチェックする