2007年04月28日

タイムゾーンと地域名の対照表(PHP) (アメリカ編・1 - グリーンランド、カナダ、アメリカ合衆国)

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

●アメリカ・1
地域名タイムゾーン文字列標準時夏時間
グリーンランド / カーナーク
Greenland / Qaanaaq
America/Thule-4
(AST)
-3
(ADT)
グリーンランド / ヌーク
Greenland / Nuuk
America/Godthab-3
(WGT)
-2
(WGST)
グリーンランド / イトコルトルミット
Greenland / Ittoqqortoormiit
America/Scoresbysund-1
(EGT)
0
(EGST)
グリーンランド / デンマークシャウン
Greenland / Danmarkshavn
America/Danmarkshavn0
(GMT)
 
カナダ / (太平洋側)
Canada / (Pacific)
Canada/Pacific-8
(PST)
-7
(PDT)
カナダ / ブリティッシュコロンビア州 / バンクーバー
Canada / British Columbia / Vancouver
America/Vancouver-8
(PST)
-7
(PDT)
カナダ / ユーコン準州 / ドーソン・シティ
Canada / Yukon Territory / Dawson City
America/Dawson-8
(PST)
-7
(PDT)
カナダ / ユーコン準州 / ホワイトホース
Canada / Yukon Territory / Whitehorse
America/Whitehorse-8
(PST)
-7
(PDT)
カナダ / ユーコン準州
Canada / Yukon Territory
Canada/Yukon-8
(PST)
-7
(PDT)
カナダ / (山岳部)
Canada / (mountain)
Canada/Mountain-7
(MST)
-6
(MDT)
カナダ / アルバータ州 / エドモントン
Canada / Alberta / Edmonton
America/Edmonton-7
(MST)
-6
(MDT)
カナダ / ヌナブト準州 / ケンブリッジベイ
Canada / Nunavut / Cambridge Bay
America/Cambridge_Bay-7
(MST)
-6
(MDT)
カナダ / ノースウェスト準州 / イエローナイフ
Canada / Northwest Territories / Yellowknife
America/Yellowknife-7
(MST)
-6
(MDT)
カナダ / ノースウェスト準州 / イヌヴィック
Canada / Northwest Territories / Inuvik
America/Inuvik-7
(MST)
-6
(MDT)
カナダ / ブリティッシュコロンビア州 / ドーソン・クリーク
Canada / British Columbia / Dawson Creek
America/Dawson_Creek-7
(MST)
 
カナダ / (中部)
Canada / (central)
Canada/Central-6
(CST)
-5
(CDT)
カナダ / オンタリオ州 / レイニーリバー地区
Canada / Ontario / Rainy River
America/Rainy_River-6
(CST)
-5
(CDT)
カナダ / サスカチュワン州 / スウィフトカレント
Canada / Saskatchewan / Swift Current
America/Swift_Current-6
(CST)
 
カナダ / サスカチュワン州 / レジャイナ
Canada / Saskatchewan / Regina
America/Regina-6
(CST)
 
カナダ / サスカチュワン州
Canada / Saskatchewan
Canada/Saskatchewan-6
(CST)
 
カナダ / ヌナブト準州 / ランキンインレット
Canada / Nunavut / Rankin Inlet
America/Rankin_Inlet-6
(CST)
-5
(CDT)
カナダ / マニトバ州 / ウィニペグ
Canada / Manitoba / Winnipeg
America/Winnipeg-6
(CST)
-5
(CDT)
カナダ / 東サスカチュワン
Canada / East Saskatchewan
Canada/East-Saskatchewan-6
(CST)
 
カナダ / (東部)
Canada / (eastern)
Canada/Eastern-5
(EST)
-4
(EDT)
カナダ / オンタリオ州 / サンダー・ベイ
Canada / Ontario / Thunder Bay
America/Thunder_Bay-5
(EST)
-4
(EDT)
カナダ / オンタリオ州 / トロント
Canada / Ontario / Toronto
America/Toronto-5
(EST)
-4
(EDT)
カナダ / オンタリオ州 / ニピゴン
Canada / Ontario / Nipigon
America/Nipigon-5
(EST)
-4
(EDT)
カナダ / ケベック州 / モントリオール
Canada / Quebec / Montreal
America/Montreal-5
(EST)
-4
(EDT)
カナダ / ヌナブト準州 / イカルイト
Canada / Nunavut / Iqaluit
America/Iqaluit-5
(EST)
-4
(EDT)
カナダ / ヌナブト準州 / コーラルハーバー
Canada / Nunavut / Coral Harbour
America/Coral_Harbour-5
(EST)
 
カナダ / ヌナブト準州 / パンニルトゥング
Canada / Nunavut / Pangnirtung
America/Pangnirtung-5
(EST)
-4
(EDT)
カナダ / (大西洋側)
Canada / (Atlantic)
Canada/Atlantic-4
(AST)
-3
(ADT)
カナダ / オンタリオ州 / セントトーマス
Canada / Ontario / St. Thomas
America/St_Thomas-4
(AST)
 
カナダ / ニューファンドランド・ラブラドール州 / ハッピーバレー・グースベイ
Canada / Newfoundland and Labrador / Happy Valley-Goose Bay
America/Goose_Bay-4
(AST)
-3
(ADT)
カナダ / ニューブランズウィック州 / モンクトン
Canada / New Brunswick / Moncton
America/Moncton-4
(AST)
-3
(ADT)
カナダ / ノバスコシア州 / グレースベイ
Canada / Nova Scotia / Glace Bay
America/Glace_Bay-4
(AST)
-3
(ADT)
カナダ / ノバスコシア州 / ハリファックス
Canada / Nova Scotia / Halifax
America/Halifax-4
(AST)
-3
(ADT)
カナダ / ニューファンドランド・ラブラドール州 / セント・ジョンズ
Canada / Newfoundland and Labrador / St. John's
America/St_Johns-3.5
(NST)
-2.5
(NDT)
カナダ / ニューファンドランド・ラブラドール州
Canada / Newfoundland and Labrador
Canada/Newfoundland-3.5
(NST)
-2.5
(NDT)
カナダ / オンタリオ州 / アティコカン
Canada / Ontario / Atikokan
America/Atikokan-- 
カナダ / ケベック州 / ブラン・サブロン
Canada / Quebec / Blanc-Sablon
America/Blanc-Sablon-- 
アメリカ合衆国 / アラスカ州 / アダック
U. S. / Alaska / Adak
America/Adak-10
(HAST)
-9
(HADT)
アメリカ合衆国 / アラスカ州 / アトカ
U. S. / Alaska / Atka
America/Atka-10
(HAST)
-9
(HADT)
アメリカ合衆国 / アラスカ州 / アリューシャン列島
U. S. / Alaska / Aleutian Islands
US/Aleutian-10
(HAST)
-9
(HADT)
アメリカ合衆国 / アラスカ州 / アンカレッジ
U. S. / Alaska / Anchorage
America/Anchorage-9
(AKST)
-8
(AKDT)
アメリカ合衆国 / アラスカ州 / ジュノー
U. S. / Alaska / Juneau
America/Juneau-9
(AKST)
-8
(AKDT)
アメリカ合衆国 / アラスカ州 / ノーム
U. S. / Alaska / Nome
America/Nome-9
(AKST)
-8
(AKDT)
アメリカ合衆国 / アラスカ州 / ヤクタット
U. S. / Alaska / Yakutat
America/Yakutat-9
(AKST)
-8
(AKDT)
アメリカ合衆国 / アラスカ州
U. S. / Alaska
US/Alaska-9
(AKST)
-8
(AKDT)
アメリカ合衆国 / (太平洋側)
U. S. / (Pacific)
PST8PDT
または
US/Pacific-New
または
US/Pacific
-8
(PST)
-7
(PDT)
アメリカ合衆国 / カリフォルニア州 / ロサンゼルス
U. S. / California / Los Angeles
America/Los_Angeles-8
(PST)
-7
(PDT)
アメリカ合衆国 / (山岳部)
U. S. / (mountain)
MST
または
MST7MDT
または
US/Mountain
-7
(MST)
 
アメリカ合衆国 / アリゾナ州 / フェニックス
U. S. / Arizona / Phoenix
America/Phoenix-7
(MST)
 
アメリカ合衆国 / アリゾナ州
U. S. / Arizona
US/Arizona-7
(MST)
 
アメリカ合衆国 / アイダホ州 / ボイシ
U. S. / Idaho / Boise
America/Boise-7
(MST)
-6
(MDT)
アメリカ合衆国 / アリゾナ州 / ナバホ・ネイション
U. S. / Arizona / Navajo County
Navajo-7
(MST)
-6
(MDT)
アメリカ合衆国 / コロラド州 / デンバー
U. S. / Denver / Denver
America/Denver-7
(MST)
-6
(MDT)
アメリカ合衆国 / ニューメキシコ州 / シップロック
U. S. / New Mexico / Shiprock
America/Shiprock-7
(MST)
-6
(MDT)
アメリカ合衆国 / (中部)
U. S. / (central)
US/Central
または
CST6CDT
-6
(CST)
-5
(CDT)
アメリカ合衆国 / イリノイ州 / シカゴ
U. S. / Illinois / Chicago
America/Chicago-6
(CST)
-5
(CDT)
アメリカ合衆国 / インディアナ州 / ヴィンセンス
U. S. / Indiana / Vincennes
America/Indiana/Vincennes-6
(CST)
-5
(CDT)
アメリカ合衆国 / インディアナ州 / スターク郡
U. S. / Indiana / Starke
US/Indiana-Starke-6
(CST)
-5
(CDT)
アメリカ合衆国 / インディアナ州 / ノックス郡
U. S. / Indiana / Knox
America/Indiana/Knox
または
America/Knox_IN
-6
(CST)
-5
(CDT)
アメリカ合衆国 / インディアナ州 / ピーターズバーグ
U. S. / Indiana / Petersburg
America/Indiana/Petersburg-6
(CST)
-5
(CDT)
アメリカ合衆国 / ウィスコンシン州 / メノミニー
U. S. / Wisconsin / Menominee
America/Menominee-6
(CST)
-5
(CDT)
アメリカ合衆国 / ノースダコタ州 / (中部)
U. S. / North Dakota / (Center)
America/North_Dakota/Center-6
(CST)
-5
(CDT)
アメリカ合衆国 / (東部)
U. S. / (eastern)
EST
または
EST5EDT
または
US/Eastern
-5
(EST)
 
アメリカ合衆国 / インディアナ州 / (東部)
U. S. / Indiana / (eastern)
US/East-Indiana-5
(EST)
-4
(EDT)
アメリカ合衆国 / インディアナ州 / インディアナポリス
U. S. / Indiana / Indianapolis
America/Indiana/Indianapolis
または
America/Indianapolis
-5
(EST)
-4
(EDT)
アメリカ合衆国 / インディアナ州 / フォートウエイン
U. S. / Indiana / Fort Wayne
America/Fort_Wayne-5
(EST)
-4
(EDT)
アメリカ合衆国 / インディアナ州 / ベベイ
U. S. / Indiana / Vevay
America/Indiana/Vevay-5
(EST)
-4
(EDT)
アメリカ合衆国 / インディアナ州 / マレンゴ
U. S. / Indiana / Marengo
America/Indiana/Marengo-5
(EST)
-4
(EDT)
アメリカ合衆国 / ケンタッキー州 / ルイビル
U. S. / Kentucky / Louisville
America/Kentucky/Louisville
または
America/Louisville
-5
(EST)
-4
(EDT)
アメリカ合衆国 / ニューヨーク州 / ニューヨーク
U. S. / New York / New York
America/New_York-5
(EST)
-4
(EDT)
アメリカ合衆国 / バージニア州 / モンティチェロ
U. S. / Virginia / Monticello
America/Kentucky/Monticello-5
(EST)
-4
(EDT)
アメリカ合衆国 / ミシガン州 / デトロイト
U. S. / Michigan / Detroit
America/Detroit-5
(EST)
-4
(EDT)
アメリカ合衆国 / ミシガン州
U. S. / Michigan
US/Michigan-5
(EST)
-4
(EDT)
アメリカ合衆国 / ノースダコタ州 / ニューセイレム
U. S. / North Dakota / New Salem
America/North_Dakota/New_Salem-- 

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

タイムゾーンと地域名の対照表(PHP) (アフリカ編)

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

●アフリカ
地域名タイムゾーン文字列標準時夏時間
アルジェリア / アルジェ
Algeria / Algiers
Africa/Algiers+1
(CET)
 
アンゴラ / ルアンダ県 / ルアンダ
Angola / Luanda / Luanda
Africa/Luanda+1
(WAT)
 
ウガンダ / カンパラ
Uganda / Kampala
Africa/Kampala+3
(EAT)
 
エジプト / カイロ
Egypt / Cairo
Africa/Cairo+2
(EET)
+3
(EEST)
エジプト
Egypt
Egypt+2
(EET)
+3
(EEST)
エチオピア / アディスアベバ
Ethiopia / Addis Ababa
Africa/Addis_Ababa+3
(EAT)
 
エリトリア / アスマラ
Eritrea / Asmara
Africa/Asmera+3
(EAT)
 
ガーナ / アクラ
Ghana / Accra
Africa/Accra0
(GMT)
 
ガボン / リーブルヴィル
Gabon / Libreville
Africa/Libreville+1
(WAT)
 
カメルーン / リトラル州 / ドゥアラ
Cameroon / Littoral / Douala
Africa/Douala+1
(WAT)
 
ガンビア / バンジュール
The Gambia / Banjul
Africa/Banjul0
(GMT)
 
ギニア / コナクリ
Guinea / Conakry
Africa/Conakry0
(GMT)
 
ギニアビサウ / ビサウ
Guinea-Bissau / Bissau
Africa/Bissau0
(GMT)
 
ケニア / ナイロビ
Kenya / Nairobi
Africa/Nairobi+3
(EAT)
 
コートジボワール / アビジャン
Côte d'Ivoire / Abidjan
Africa/Abidjan0
(GMT)
 
コンゴ共和国 / ブラザヴィル
Republic of the Congo / Brazzaville
Africa/Brazzaville+1
(WAT)
 
コンゴ民主共和国 / キンシャサ
Democratic Republic of the Congo / Kinshasa
Africa/Kinshasa+1
(WAT)
 
コンゴ民主共和国 / ルブンバシ
Democratic Republic of the Congo / Lubumbashi
Africa/Lubumbashi+2
(CAT)
 
サントメ・プリンシペ / サントメ
São Tomé and Príncipe / São Tomé
Africa/Sao_Tome0
(GMT)
 
ザンビア / ルサカ
Zambia / Lusaka
Africa/Lusaka+2
(CAT)
 
シエラレオネ / フリータウン
Sierra Leone / Freetown
Africa/Freetown0
(GMT)
 
ジブチ / ジブチ
Djibouti / Djibouti
Africa/Djibouti+3
(EAT)
 
ジンバブエ / ハラレ
Zimbabwe / Harare
Africa/Harare+2
(CAT)
 
スーダン / ハルツーム
Sudan / Khartoum
Africa/Khartoum+3
(EAT)
 
スペイン / セウタ
Spain / Ceuta
Africa/Ceuta+1
(CET)
+2
(CEST)
スワジランド / ムババーネ
Swaziland / Mbabane
Africa/Mbabane+2
(SAST)
 
赤道ギニア / マラボ
Equatorial Guinea / Malabo
Africa/Malabo+1
(WAT)
 
セネガル / ダカール州 / ダカール
Senegal / Dakar / Dakar
Africa/Dakar0
(GMT)
 
ソマリア / モガディシュ
Somalia / Mogadishu
Africa/Mogadishu+3
(EAT)
 
タンザニア / ダルエスサラーム州 / ダルエスサラーム
Tanzania / Dar es Salaam / Dar es Salaam
Africa/Dar_es_Salaam+3
(EAT)
 
チャド / ンジャメナ
Chad / N'Djamena
Africa/Ndjamena+1
(WAT)
 
中央アフリカ / バンギ
Central African Republic / Bangui
Africa/Bangui+1
(WAT)
 
チュニジア / チュニス県 / チュニス
Tunisia / Tunis / Tunis
Africa/Tunis+1
(CET)
 
トーゴ / ロメ
Togo / Lomé
Africa/Lome0
(GMT)
 
ナイジェリア / ラゴス
Nigeria / Lagos
Africa/Lagos+1
(WAT)
 
ナミビア / ウィントフック
Namibia / Windhoek
Africa/Windhoek+1
(WAT)
+2
(WAST)
ニジェール / ニアメ
Niger / Niamey
Africa/Niamey+1
(WAT)
 
西サハラ / アイウン
Western Sahara / El Aaiún
Africa/El_Aaiun0
(WET)
 
ブルキナファソ / ワガドゥグー
Burkina Faso / Ouagadougou
Africa/Ouagadougou0
(GMT)
 
ブルンジ / ブジュンブラ
Burundi / Bujumbura
Africa/Bujumbura+2
(CAT)
 
ベナン / ポルトノボ
Benin / Porto-Novo
Africa/Porto-Novo+1
(WAT)
 
ボツワナ / ハボローネ
Botswana / Gaborone
Africa/Gaborone+2
(CAT)
 
マラウイ / ブランタイヤ
Malawi / Blantyre
Africa/Blantyre+2
(CAT)
 
マリ共和国 / トンブクトゥ
Mali / Tombouctou
Africa/Timbuktu0
(GMT)
 
マリ共和国 / バマコ
Mali / Bamako
Africa/Bamako0
(GMT)
 
南アフリカ共和国 / ズールー
South Africa / Zulu
Etc/Zulu
または
Zulu
0
(UTC)
 
南アフリカ共和国 / ハウテン州 / ヨハネスブルグ
South Africa / Gauteng / Johannesburg
Africa/Johannesburg+2
(SAST)
 
モーリタニア / ヌアクショット
Mauritania / Nouakchott
Africa/Nouakchott0
(GMT)
 
モザンビーク / マプト州 / マプト
Mozambique / Maputo / Maputo
Africa/Maputo+2
(CAT)
 
モロッコ / カサブランカ
Morocco / Casablanca
Africa/Casablanca0
(WET)
 
リビア / トリポリ
Libya / Tripoli
Africa/Tripoli+2
(EET)
 
リビア
Libya
Libya+2
(EET)
 
リベリア / モンロビア
Liberia / Monrovia
Africa/Monrovia0
(GMT)
 
ルワンダ / キガリ
Rwanda / Kigali
Africa/Kigali+2
(CAT)
 
レソト / マセル
Lesotho / Maseru
Africa/Maseru+2
(SAST)
 

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

タイムゾーンと地域名の対照表(PHP) (概要、アジア編)

タイムゾーンを設定する場合、たとえば TZ 環境変数に Asia/Tokyo などを設定するが、いくつかのタイムゾーンを選択できるようにするのはかなり苦労する。
苦労する理由は、どのタイムゾーン文字列がどの国に対応するのかがさっぱりわからないからだ。
特にアメリカが複雑でわかりにくい。

そこで、どのタイムゾーン文字列がどの地域に対応するのか、対照表を作成した。
※地理に詳しいわけではないので、いろいろと間違えていると思うので、要注意。

ここに挙げるのは、PHP でサポートするタイムゾーン文字列で、タイムゾーンの略記 (date 関数の 'T' で表示されるもの) と時刻のオフセットは、PHP を使って検証した。
標準時と夏時間は1月と7月で試した。
参考までに、検証に用いたコードを引用しておく。

<?php foreach (array('Asia/Baku',
'Asia/Kabul',
'Asia/Dubai',
'Asia/Yerevan',
'Asia/Aden',
'Asia/Jerusalem',
:
(省略)
:
) as $tz) {
putenv("TZ=$tz");
$result = array();
$t = gmmktime(12, 0, 0, 1, 2); /* 1月2日 12:00:00 */
$result[0] = array('T' => date('T', $t),
'D' => ((date('d', $t) - 2) * 24
+ date('H', $t)
+ date('i', $t) / 60 - 12));
$t = gmmktime(12, 0, 0, 7, 2); /* 7月2日 12:00:00 */
$result[1] = array('T' => date('T', $t),
'D' => ((date('d', $t) - 2) * 24
+ date('H', $t)
+ date('i', $t) / 60 - 12));
// 夏冬逆なら入れ替える
if ($result[0]['D'] > $result[1]['D']) {
$tmp = $result[0];
$result[0] = $result[1];
$result[1] = $tmp;
}
// 出力
echo implode("\t",
array($tz,
$result[0]['T'],
$result[0]['D'],
$result[1]['T'],
$result[1]['D']));
echo "\n";
}
?>

下の表の、「タイムゾーン文字列」の文字列を、putenv 関数を用いて TZ 環境変数に設定するなどして用いる。
※表が長くて一度に投稿できないので、分割投稿します。

●「アフリカ
●「アメリカ・1
●「アメリカ・2
●「オーストラリア・北極・南極
●「太平洋・大西洋・インド洋
●「ヨーロッパ

●アジア
地域名タイムゾーン文字列標準時夏時間
アゼルバイジャン / バクー
Azerbaijan / Baku
Asia/Baku+4
(AZT)
+5
(AZST)
アフガニスタン / カーブル
Afghanistan / Kabul
Asia/Kabul+4.5
(AFT)
 
アラブ首長国連邦 / ドバイ
United Arab Emirates / Dubai
Asia/Dubai+4
(GST)
 
アルメニア / エレバン
Armenia / Yerevan
Asia/Yerevan+4
(AMT)
+5
(AMST)
イエメン / アデン
Yemen / Aden
Asia/Aden+3
(AST)
 
イスラエル / エルサレム
Israel / Jerusalem
Asia/Jerusalem+2
(IST)
+3
(IDT)
イスラエル / テルアビブ
Israel / Tel Aviv
Asia/Tel_Aviv+2
(IST)
+3
(IDT)
イスラエル
Israel
Israel+2
(IST)
+3
(IDT)
イラク / バグダード
Iraq / Baghdad
Asia/Baghdad+3
(AST)
+4
(ADT)
イラン / テヘラン州 / テヘラン
Iran / Tehran / Tehran
Asia/Tehran+3.5
(IRST)
+4.5
(IRDT)
イラン
Iran
Iran+3.5
(IRST)
+4.5
(IRDT)
インド / コルカタ
India / Kolkata
Asia/Calcutta+5.5
(IST)
 
インドネシア / 西カリマンタン州 / ポンティアナック
Indonesia / West Kalimantan / Pontianak
Asia/Pontianak+7
(WIT)
 
インドネシア / ジャカルタ
Indonesia / Jakarta
Asia/Jakarta+7
(WIT)
 
インドネシア / 南スラウェシ州 / マカッサル
Indonesia / South Sulawesi / Makassar
Asia/Makassar
または
Asia/Ujung_Pandang
+8
(CIT)
 
インドネシア / パプア州 / ジャヤプラ
Indonesia / Papua / Jayapura
Asia/Jayapura+9
(EIT)
 
ウズベキスタン / サマルカンド州 / サマルカンド
Uzbekistan / Samarqand / Samarkand
Asia/Samarkand+5
(UZT)
 
ウズベキスタン / タシュケント州 / タシュケント
Uzbekistan / Tashkent / Tashkent
Asia/Tashkent+5
(UZT)
 
オマーン / マスカット
Oman / Muscat
Asia/Muscat+4
(GST)
 
カザフスタン / アクトベ州 / アクトベ
Kazakhstan / Aqtöbe / Aqtöbe
Asia/Aqtobe+5
(AQTT)
 
カザフスタン / マンギスタウ州 / アクタウ
Kazakhstan / Mangghystau / Aqtau
Asia/Aqtau+5
(AQTT)
 
カザフスタン / 西カザフスタン州 / オラル
Kazakhstan / Batys Qazaqstan / Oral
Asia/Oral+5
(ORAT)
 
カザフスタン / アルマトイ州 / アルマトイ
Kazakhstan / Almaty / Almaty
Asia/Almaty+6
(ALMT)
 
カザフスタン / クズロルダ州 / クズルオルダ
Kazakhstan / Qyzylorda / Qyzylorda
Asia/Qyzylorda+6
(QYZT)
 
カタール
Qatar
Asia/Qatar+3
(AST)
 
カンボジア / プノンペン
Cambodia / Phnom Penh
Asia/Phnom_Penh+7
(ICT)
 
キプロス / ニコシア
Cyprus / Nicosia
Asia/Nicosia+2
(EET)
+3
(EEST)
キルギス / ビシュケク
Kyrgyzstan / Bishkek
Asia/Bishkek+6
(KGT)
 
クアラルンプール / クアラルンプール
Malaysia / Kuala Lumpur
Asia/Kuala_Lumpur+8
(MYT)
 
クウェート / クウェート
Kuwait / Kuwait
Asia/Kuwait+3
(AST)
 
グルジア / トビリシ
Georgia / Tbilisi
Asia/Tbilisi+4
(GET)
 
サウジアラビア / ナジュド地方 / リヤド
Saudi Arabia / Najd / Riyadh
Asia/Riyadh+3
(AST)
 
シリア / ダマスカス
Syria / Damascus
Asia/Damascus+2
(EET)
+3
(EEST)
シンガポール / シンガポール
Singapore / Singapore
Asia/Singapore
または
Singapore
+8
(SGT)
 
スリランカ / コロンボ
Sri Lanka / Colombo
Asia/Colombo+6
(LKT)
 
台湾 / 台北
Taiwan / Taipei
Asia/Taipei+8
(CST)
 
中華民国
Republic of China
ROC+8
(CST)
 
タイ王国 / バンコク
Thailand / Bangkok
Asia/Bangkok+7
(ICT)
 
大韓民国 / ソウル
South Korea / Seoul
Asia/Seoul+9
(KST)
 
大韓民国
South Korea
ROK+9
(KST)
 
タジキスタン / ドゥシャンベ
Tajikistan / Dushanbe
Asia/Dushanbe+5
(TJT)
 
中華人民共和国 / 黒竜江省 / ハルビン
People's Republic of China / Heilongjiang / Harbin
Asia/Harbin+8
(CST)
 
中華人民共和国 / 上海
People's Republic of China / Shanghai
Asia/Shanghai+8
(CST)
 
中華人民共和国 / 新疆ウイグル自治区 / カシュガル
People's Republic of China / Xinjiang Uyghur Autonomous Region / Kashgar
Asia/Kashgar+8
(CST)
 
中華人民共和国 / 新疆ウイグル自治区 / ウルムチ
People's Republic of China / Xinjiang Uyghur Autonomous Region / Ürümqi
Asia/Urumqi+8
(CST)
 
中華人民共和国 / 重慶市
People's Republic of China / Chongqing
Asia/Chongqing
または
Asia/Chungking
+8
(CST)
 
中華人民共和国 / 香港
People's Republic of China / Hong Kong
Asia/Hong_Kong
または
Hongkong
+8
(HKT)
 
中華人民共和国 / マカオ
People's Republic of China / Macau
Asia/Macao
または
Asia/Macau
+8
(CST)
 
中華人民共和国
People's Republic of China
PRC+8
(CST)
 
朝鮮民主主義人民共和国 / 平壌
North Korea / Pyongyang
Asia/Pyongyang+9
(KST)
 
トルクメニスタン / アシガバート
Turkmenistan / Ashgabat
Asia/Ashgabat
または
Asia/Ashkhabad
+5
(TMT)
 
トルコ / イスタンブル
Turkey / Istanbul
Asia/Istanbul+2
(EET)
+3
(EEST)
トルコ
Turkey
Turkey+2
(EET)
+3
(EEST)
日本 / 東京
Japan / Tokyo
Asia/Tokyo+9
(JST)
 
日本
Japan
Japan+9
(JST)
 
ネパール / カトマンズ
Nepal / Kathmandu
Asia/Katmandu+5.75
(NPT)
 
バーレーン
Bahrain
Asia/Bahrain+3
(AST)
 
パキスタン / シンド州 / カラーチー
Pakistan / Sindh / Karachi
Asia/Karachi+5
(PKT)
 
パレスチナ / ガザ
Palestinian territories / Gaza
Asia/Gaza+2
(EET)
+3
(EEST)
バングラデシュ / ダッカ
Bangladesh / Dhaka
Asia/Dacca
または
Asia/Dhaka
+6
(BDT)
 
東ティモール / ディリ
East Timor / Dili
Asia/Dili+9
(TLT)
 
フィリピン / マニラ
Philippines / Manila
Asia/Manila+8
(PHT)
 
ブータン / ティンプー
Bhutan / Thimphu
Asia/Thimbu
または
Asia/Thimphu
+6
(BTT)
 
ブルネイ
Brunei
Asia/Brunei+8
(BNT)
 
ベトナム / ホーチミン
Vietnam / Ho Chi Minh City
Asia/Saigon+7
(ICT)
 
マレーシア / サラワク州 / クチン
Malaysia / Sarawak / Kuching
Asia/Kuching+8
(MYT)
 
ミャンマー / ヤンゴン
Myanmar / Yangon
Asia/Rangoon+6.5
(MMT)
 
モンゴル国 / ホブド
Mongolia / Khovd
Asia/Hovd+7
(HOVT)
+8
(HOVST)
モンゴル国 / ウランバートル
Mongolia / Ulan Bator
Asia/Ulaanbaatar
または
Asia/Ulan_Bator
+8
(ULAT)
+9
(ULAST)
モンゴル国 / チョイバルサン
Mongolia / Choibalsan
Asia/Choibalsan+9
(CHOT)
+10
(CHOST)
ヨルダン / アンマン
Jordan / Amman
Asia/Amman+2
(EET)
+3
(EEST)
ラオス / ヴィエンチャン
Laos / Vientiane
Asia/Vientiane+7
(ICT)
 
レバノン / ベイルート県 / ベイルート
Lebanon / Beirut / Beirut
Asia/Beirut+2
(EET)
+3
(EEST)
ロシア / ウラル連邦管区 / エカテリンブルク
Russia / Urals Federal District / Yekaterinburg
Asia/Yekaterinburg+5
(YEKT)
+6
(YEKST)
ロシア / シベリア連邦管区 / ノヴォシビルスク
Russia / Siberian Federal District / Novosibirsk
Asia/Novosibirsk+6
(NOVT)
+7
(NOVST)
ロシア / シベリア連邦管区 / オムスク
Russia / Siberian Federal District / Omsk
Asia/Omsk+6
(OMST)
+7
(OMSST)
ロシア / シベリア連邦管区 / クラスノヤルスク
Russia / Siberian Federal District / Krasnoyarsk
Asia/Krasnoyarsk+7
(KRAT)
+8
(KRAST)
ロシア / シベリア連邦管区 / イルクーツク
Russia / Siberian Federal District / Irkutsk
Asia/Irkutsk+8
(IRKT)
+9
(IRKST)
ロシア / 極東連邦管区 / ヤクーツク
Russia / Far Eastern Federal District / Yakutsk
Asia/Yakutsk+9
(YAKT)
+10
(YAKST)
ロシア / 極東連邦管区 / ウラジオストク
Russia / Far Eastern Federal District / Vladivostok
Asia/Vladivostok+10
(VLAT)
+11
(VLAST)
ロシア / 極東連邦管区 / サハリン州
Russia / Far Eastern Federal District / Sakhalin
Asia/Sakhalin+10
(SAKT)
+11
(SAKST)
ロシア / 極東連邦管区 / マガダン
Russia / Far Eastern Federal District / Magadan
Asia/Magadan+11
(MAGT)
+12
(MAGST)
ロシア / 極東連邦管区 / アナディル
Russia / Far Eastern Federal District / Anadyr
Asia/Anadyr+12
(ANAT)
+13
(ANAST)
ロシア / 極東連邦管区 / カムチャツカ半島
Russia / Far Eastern Federal District / Kamchatka Peninsula
Asia/Kamchatka+12
(PETT)
+13
(PETST)

【タイムゾーンがらみの記事】
「date関数で”Asia/Tokyo・・”なんかのエラーが出る件:PHP5.1.0以降」
http://www.res-system.com/weblog/item/563
posted by K/I at 13:54 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年04月18日

BOINC マネージャで別ホストの BOINC クライアントを表示する

前回の記事で課題として残っていた、別ホストの BOINC マネージャに表示させる方法がわかったのでご報告。

※BOINC クライアントが Linux の場合のみ。Windows、Mac OS X の BOINC クライアントの状況を表示する方法は未だ不明。

細かいところは、前回の記事を参照のこと。


■BOINC クライアントの起動

(1) パスワードの設定

BOINC ディレクトリ内のファイル gui_rpc_auth.cfg に、パスワードを平文で書き込む。(存在しない場合は作成)
※このファイルは、boinc コマンド実行時に (存在しなければ) 自動的に作成される。

(2) BOINC クライアントの起動

BOINC クライアントを起動する際に、-allow_remote_gui_rpc オプションをつける。

# ./boinc -allow_remote_gui_rpc > /dev/null 2>&1 &

これで、リモートホストからの RPC 実行が許可される。


■BOINC マネージャからの接続

(3) コンピュータの選択

別の PC (Windows でも Mac OS X でもよい) で BOINC マネージャを起動し、[高度な操作] メニューから [コンピュータの選択] を選ぶ。
表示されるダイアログで、[計算機名 (ホスト名)] 欄に、BOINC クライアントのホスト名または IP アドレスを、[パスワード] 欄に (1) で gui_rpc_auth.cfg に設定したパスワードを入力し、[OK] ボタンをクリックする。

これで、指定した BOINC クライアントで処理中のタスクなどが表示される。
posted by K/I at 11:47 | 東京 ☔ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年04月17日

SETI@home/BOINC をコマンドラインで実行する (Linux)

※この記事は内容が古いので、最新の情報については「SETI@home/BOINC をコマンドラインで実行する (Linux)・改」をご覧ください。

先日の記事で、Linux 版は XFree86 が必須のようだ、と書いたが、それは正しくなかった。

XFree86 を必要とするのは、BOINC Manager で、クライアントは GUI なしで動作することがわかった。

(1) BOINC のダウンロード

まず、BOINC をダウンロードする。

http://boinc.berkeley.edu/download_all.php
↑ここから、Linux/x86 版をダウンロードできる。

今回は、5.8.17 を用いた。

(2) BOINC のインストール

インストール先のディレクトリ (ここでは、/usr/local とする) に移動し、ダウンロードした shell スクリプト形式のインストーラを実行すると、そのディレクトリの下に BOINC というディレクトリが作られ、ファイル一式が展開される。

以下、すべて /usr/local/BOINC ディレクトリ内で実行する。

# cd /usr/local/BOINC

(3) SETI@home のプロジェクト登録

まずは、SETI@home のアカウントキーを取得する必要がある。

SETI@home にアカウントを持っている場合には、次のコマンドでアカウントキーを取得できる。

# ./boinc_cmd --lookup_account http://setiathome.berkeley.edu/ メールアドレス パスワード

まだ、アカウントを作っていない場合には、次のコマンドを実行する。

# ./boinc_cmd --create_account http://setiathome.berkeley.edu/ メールアドレス パスワード アカウント名

アカウントキーを取得できたら、SETI@home を BOINC のプロジェクトとして登録する。

# ./boinc_cmd --project_attach http://setiathome.berkeley.edu/ アカウントキー

(4) BOINC クライアントの実行

BOINC クライアントは、

# ./boinc > /dev/null 2>&1 &

などとすれば実行できる。

プロジェクトの実行状況は、

# ./boinc_cmd --get_state

とすれば表示される。


別ホストの BOINC マネージャから、クライアントの様子を表示できるはずだと思うのだが、うまくいっていない。
→ この問題解決しました。「BOINC マネージャで別ホストの BOINC クライアントを表示する」参照。
posted by K/I at 12:48 | 東京 ☁ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年04月16日

SpamAssassin + procmail で SPAM を自動削除 (Linux)

SpamAssassin を procmail と組み合わせて、SPAM を自動削除し、誤認識を自動学習させる方法を試してみた。

※bsfilter については、こちらを参照 →「SPAMメールの自動検知(bsfilter) − Linux編」他

SpamAssassin は、Linux のパッケージとして提供されているので、インストールは簡単である。
ここでは、SpamAssassin のインストールが完了していて、デーモンが起動されているものとする。

また、POP サーバーなどから受信したメールを procmail に通す環境を想定している。

たとえば、fetchmail で受信したメールを procmail に投げる方法については、「PC←→携帯間メール転送 (fetchmail & procmail)」でも書いたので、割愛。
.forward で procmail に通すなら、.forward に

"|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #アカウント名"


と記述すればよい。

(1) procmail で SPAM を自動的に振り分ける

procmail の設定ファイル .procmailrc で、たとえば次のようにする。

SPAM_DIR=$HOME/Mail/spam/.

:0fw: spamassassin.lock
| /usr/bin/spamc

# autolearn=spam なら、SPAM とみなす
:0H
* ^X-Spam-Flag: Yes
* ^X-Spam-Status:.*autolearn=spam
$SPAM_DIR

# X-Spam-Level が20以上なら、SPAM とみなす
:0H
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
$SPAM_DIR


最初のレシピは、受信したメールに対して、前処理として SpamAssassin のクライアントソフト /usr/bin/spamc に通している。
2つ目のレシピは、 X-Spam-Flag が Yes で、X-Spam-Status の autolearn が spam の場合、$HOME/Mail/spam に移動する。
3つ目のレシピは、X-Spam-Level に、* が 20 個以上ついていれば、$HOME/Mail/spam に移動する。

SpamAssassin の自動認識にも誤りはあるので、確実に SPAM というもののみを SPAM フォルダに移動し、それ以外は通常のメールと同じフォルダに残し、個別に判断する。

(2) SpamAssassin に学習させる

SpamAssassin には、sa-learn というコマンドがあり、誤判断したメールを正しく学習させることができる。
そのために、誤判断されたメールを別ディレクトリに移しておく。

さて、SpamAssassin のデフォルトの設定では、SPAM と判定されたメールは、件名に [SPAM] と表示される。
それが本当に SPAM であれば、捨てればよい。

もし、SPAM なのに [SPAM] と表示されなければ、明示的に SPAM であることを SpamAssassin に学習させるために、SPAM 用ディレクトリ (ここでは、$HOME/Mail/spam) に移動する。

逆に、SPAM ではないのに [SPAM] と表示されていたら、そのメールを SPAM ではないことを学習させるためのディレクトリ (ここでは、$HOME/Mail/ham) にコピーする。

sa-learn コマンドをいちいち実行するのも面倒なので、CRON を使うとよいだろう。
たとえば、次のようなスクリプトを用意する。

#!/bin/sh

if [ -d $HOME/Mail/spam ]; then
    sa-learn --spam $HOME/Mail/spam
    rm -f $HOME/Mail/spam/[1-9]*
fi

if [ -d $HOME/Mail/ham ]; then
    sa-learn --ham $HOME/Mail/ham
    rm -f $HOME/Mail/ham/[1-9]*
fi


そして、CRON からこのコマンドを定期的に実行すればよい。

【参考にしたサイト】
「SpamAssassinの利用方法」
http://www.rcnp.osaka-u.ac.jp/Divisions/CN/i2006/usersguide/spamassassin.html

「SpamAssassinにスパムを学習させる。IMAPとMaildirを活用」
http://www.13hz.jp/2004/11/spamassassin.html
posted by K/I at 17:44 | 東京 ☔ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年04月05日

PC←→携帯間メール転送 (fetchmail & procmail)

パソコン宛に届いたメールを携帯電話に転送し、携帯電話に届いたメールをパソコンに転送したい、と思ったとき、単純に転送設定するとメールがぐるぐるとループしてしまう。
fetchmailとprocmailを用いて、それを回避する方法を考えてみる。

まず、携帯電話宛のメールは、パソコン用のメールアドレスに転送する設定にしてあるものとする。

目標は、Linux をインストールしたパソコン1台と携帯電話の両方で、それぞれに届いたメールが、それぞれに1通ずつ届くようにすることである。

今回は、メール受信ツールとして、fetchmail を procmail と組み合わせて使用する。

(1) fetchmail から procmail を使用する。

fetchmail は、POP サーバーなどからメールを取得するツールである。
fetchmail でメールを受信する時に procmail を呼び出して、さまざまな処理を行うように設定する事が可能である。

fetchmail から procmail を呼び出すには、設定ファイル ~/.fetchmailrc に、以下のように記述する。

poll POPサーバー名 proto POP3 user ユーザー名 password パスワード
    mda "/usr/bin/procmail -d UNIXアカウント" fetchall;

※procmail の引数に指定している -d オプションは、メールの配送先指定。

(2) procmail でメール転送する

以下、携帯電話に転送するときに、転送したことを表す独自のメールヘッダをつけて、転送したかどうかを区別する方法である。

+------------+
| |
--->| 携帯メール |
| |
+--+-----A---+
| |
| |
| +----------+
| |
(転送) (転送)
| A
| |
| (ヘッダ "X-KTai-Forward: Yes"
| を追加)
| A
| |
| |Yes
| <携帯メール宛でない?>
| A
| | +-->破棄
| | |
| |No |Yes
| <ヘッダ "X-KTai-Forward: Yes"
| が存在する?>
| A
+--V---------+ |
| | |
--->| PCメール +------+
| |
+------------+


procmail の設定ファイル(レシピファイル) ~/.procmailrc には、以下のように設定する。
LOGFILE=$HOME/procmail.log
MAILDIR=$HOME/Mail

:0
* ^X-KTai-Forward: Yes
/dev/null

:0 fw:
* ! ^To:.*携帯メール
* ! ^Cc:.*携帯メール
| $HOME/bin/add_header

:0 c
* ! ^To:.*携帯メール
* ! ^Cc:.*携帯メール
! 携帯メール


procmail の設定ファイルの書式はわかりにくいが、:0 ではじまる行が1つの処理方法(レシピ)の開始を意味し、* ではじまる行が条件、そのあとに条件にマッチした際に行う処理を記述する。

上の例では、1つめのレシピは「X-KTai-Forward: Yes というヘッダがあれば /dev/null ファイルに追記(つまり破棄)」、2つめのレシピは「携帯メール宛でなければ、前処理として $HOME/bin/add_header を実行する」、3つめのレシピは「携帯メール宛でなければ、携帯メール宛に転送する(コピーはローカルに残す)」というルールになっている。

なお、同じ条件のレシピを2つ書いているのは、2つ目のレシピは前処理実行のレシピ、3つ目のレシピは転送を行うレシピで、種類の異なる処理を1つのレシピ内で行えない(あるのかもしれないが、やり方を知らない)ためである。

前処理に使った add_header というコマンドは、以下のような Perl スクリプトで、携帯電話に転送したことを示す独自ヘッダ X-KTai-Forward: Yes をつけるものである。

#!/usr/bin/perl

$_ = <>;
print;
print "X-KTai-Forward: Yes\n";

while (<>) {
    print;
}


メールデータの1行目には、送信元などの情報が書かれているので、独自ヘッダは2行目に追加している。

以上で、上記フローチャートのようにメールが処理される。

携帯メールは必ず PC メールに転送されてしまうので、実際には PC メール宛メールは2回届くことになる (2回目は procmail の1つ目のレシピで破棄される)。
もう少し工夫の余地がありそうであるが、とりあえずはこれで動く。

なお、メールの先頭部分のみを転送するスクリプトを、「メールの冒頭のみを携帯電話に転送する」に書いたので、こちらもご覧ください。
posted by K/I at 17:59 | 東京 ☁ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年03月27日

SMB for FUSEでWindowsネットワークを利用する

smbmount というコマンドがあって、これを使うと Linux などから SMB の共有フォルダをマウントできるのだが、今の Fedora Core にはこのコマンドはパッケージとして提供されていないようだ。

その代わり、SMB for FUSE という仕組みが利用できる。
これは、個々の共有フォルダをマウントするのではなく、Windows の "マイネットワーク" のようなものを、Linux のローカルディレクトリ内に表示する機能を持つ。

Windows ネットワークの共有資源を引っ張ってくるだけだから root 権限は不要で、自分のホームディレクトリ内に設定ファイルを置いてコマンドを実行すればよい。

導入手順はきわめて簡単である。
  1. まず fuse-smb パッケージ (Fedora Core の場合) をインストールし、
  2. (もし作られていなかったら) ~/.smb ディレクトリを作成して、設定ファイル ~/.smb/fusesmb.conf に man fusesmb.conf の設定例をコピーしてユーザー名とパスワードを書き換え、
  3. 適当なところにディレクトリ (ここでは ~/WinWorkgroups とする) を作って、
    $ fusesmb ~/WinWorkgroups
    を実行すればよい。
設定ファイルもさほど複雑でない。

邪道な使い方かもしれないが、現在、Mac OS X のディレクトリを、SMB 経由で Fedora Core マシンで見ている。

SMB for FUSE のホームページ
http://www.ricardis.tudelft.nl/~vincent/fusesmb/
posted by K/I at 09:06 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年03月08日

SVK 導入失敗の顛末 (CentOS 4.4)

Subversion レポジトリを分散管理する Perl ベースのツール、SVK を CentOS 4.4 にインストールを試みたが、うまくいかなかった。
せっかく調べたので、以下メモしておく。
※その後、CentOS 5 ではインストールに成功した。→「SVK のインストール (CentOS 5)

(1) ファイルの入手

svn co http://svn.clkao.org/svk/branches/1.0-releng/
または
svn co http://svn.clkao.org/svk/branches/2.0-releng/

で、入手できる。
最新版は http://svn.bestpractical.com/svk/trunk にある。

(2) SVK のインストール

(1)で取得したディレクトリに移動し、

$ perl Makefile.PL

を実行すると、Makefile の作成とともに、必要な Perl モジュールを洗い出してくれる。
root になって、

# make

すれば、Perl モジュールが自動インストールされ、SVK のコンパイルが開始する。
もし Perl モジュールのインストールに失敗した場合には、別途インストールし、再度 make する。

試したところ SVN::Core がインストールできなかった。
SVN::Core のインストール方法については、別記事で書いたのでそちらを参照。(SVN::Core をインストールする)

パッケージの依存関係の都合で SVN::Core はバージョン 1.1.4 をインストールしたのだが、make すると SVN::Core の 1.2 以上が必要と表示され、失敗してしまう。

あとは、

# make install

してインストール完了のはずだったのだが。。。

各種ライブラリなどを手動インストールなどして整理し、SVN::Core 1.2 をインストールすることになるだろうが、そこまでするのなら、別のディストリビューション、たとえば Fedora Core を使った方がよさそうだ。。。
posted by K/I at 11:10 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2007年03月07日

SVN::Core をインストールする

Perl モジュール SVN::Core は、Perl から Subversion をいじるためのモジュールだが、CPAN には登録されていないのでインストールが少々やっかいだ。

Linux のディストリビューションによってはパッケージとして提供されているようだが、今使用している CentOS 4.4 には用意されていないので、ここでは Subversion のソースからインストールする手順を説明する。

(1) Subversion のソースを入手

Subversion プロジェクトのサイト
http://subversion.tigris.org/
の、Downloads にある source code release からダウンロードする。

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260&expandFolder=74

ここでは、すでにインストールされている Subversion にバージョンを合わせて、Version 1.1.4 を使用した。

(2) コンパイル

解凍して、

$ ./configure
$ make swig-pl

を実行。
なぜか、

apr-util/libaprutil-0.la
apr/libapr-0.la
neon/src/libneon.la

が存在しないというエラーが出るので、既存のものをシンボリックリンク (またはコピー) したらうまくいった。

※いったん make distclean すると、subversion/bindings/swig/perl/native/Core.pm が消されてしまうらしく、しかも Core.pm の生成ルールが Makefile に書かれていないのでエラーになる。make distclean するのを避けるか、make distclean したらアーカイブから Core.pm を戻してからコンパイルする。

(3) インストール

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

を実行すると、SVN::Core など一連のファイルがインストールされる。
posted by K/I at 20:03 | Comment(0) | TrackBack(1) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年12月18日

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

Fedora Core 5 を 6 にアップグレードした。

手順は、以前に書いた「Fedora Core 3 -> Fedora Core 4 -> Fedora Core 5 アップグレード」とほぼ同じ。

(1) fedora-release の更新と、fedora-release-note のインストール

# rpm -Uvh \
http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/fedora-release-6-4.noarch.rpm \
http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/fedora-release-notes-6-3.noarch.rpm


(2) yum のキャッシュを削除し、アップグレード

# yum clean all
# yum upgrade


やはり前回同様エラーが出ると思うので、エラーの元凶をとりあえず削除してしまう。
たとえば以下のような感じ:

# yum erase jcode.pl VFlib2

そして、再度アップグレード。

# yum upgrade

最後に、削除してしまったパッケージをインストールし直す。

# yum install jcode.pl VFlib2

が、jcode.pl と VFlib2 は、パッケージから外れてしまったようだ。
そのようなわけで、この2パッケージは無視。

あとは、再起動して完了。

# reboot



【関連記事】
Fedora Core 6 のインストール数が200万台を突破!
posted by K/I at 01:35 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年12月17日

Subversion レポジトリの Berkeley DB を 4.3にアップグレードする

Fedora Core などで yum を使って自動的にパッケージをアップグレードさせておくのは便利だが、時折、知らぬ間に不具合が生じて動作しなくなっている場合がある。
SVN のバージョン 1.2 へのアップグレードがその例だ。

http://subversion.tigris.org/faq.html#bdb43-upgrade

しばらく前から、SVN レポジトリが読み出せず、

(20014)Internal error: Berkeley DB error for filesystem /svnrepo/XXX/db while opening environment:\nDB_VERSION_MISMATCH: Database environment version mismatch
Could not fetch resource information. [500, #0]
Could not open the requested SVN filesystem [500, #160029]
Could not open the requested SVN filesystem [500, #160029]


こんなエラーメッセージを出力するようになっていた。
めんどうなので放置していたが、データが使えなくなるとさすがにまずいので修復を試みた。
手順の大筋は上記リンクのとおりである。以下、実際に行った作業の内容を記す。

(1) svnadmin の古いバージョンのバイナリを用意する。
今回は、Fedora Core 3 をインストールした PC (以降、FC3環境と呼ぶ) を用意し、それに subversion をインストールした (バージョンは 1.1.4)。

(2) SVN レポジトリをtarで固めて FC3 環境にコピー、適当なところに展開する。
※ここでは、展開先を /tmp/svn とする。

(3) FC3 環境で、次のコマンドを実行する

# svnadmin recover /tmp/svn
# rm -i `svnadmin list-unused-dblogs /tmp/svn`
# rm -i /tmp/svn/db/__db.00*


これで、このレポジトリは新しいバージョンでも読み出せるようになる。

(4) (3)で用意したレポジトリを、もとの環境に戻す。この際、もとのレポジトリはバックアップをとっておく。

あとは、たとえば checkout などして、動作確認すればよい。
posted by K/I at 23:05 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年11月15日

VMware Player + Qemu でフリーのバーチャルOS環境構築

VMware Player + Qemu で、バーチャルOSを使用する手順を説明する。

Qemu
http://bellard.org/qemu/

VMware
http://www.vmware.com/

VMware Player は有償版に比べて解像度が低いなどの問題はあるものの、無料で利用できるのは魅力的だ。

※VMware Player は、以下のサイトからダウンロードできる:
http://www.vmware.com/download/player/download.html
ただ、このページからダウンロードするといろいろ質問されて鬱陶しいので、いつも直接 wget でダウンロードしている。
たとえば、バージョン 1.0.2 で Build 29634 なら、
wget \
http://download3.vmware.com/software/vmplayer/VMware-player-1.0.2-29634.exe

でダウンロードできるようである。
[2014年10月16日追記]
現在は、以下の URL から煩わしい質問無しにダウンロードできる:
https://my.vmware.com/jp/web/vmware/free#desktop_end_user_computing/vmware_player/6_0


使用したのは VMware Player 1.0.2 で、VMware Workstation 5.5.2 に入っていたもの。
ホスト OS は、Windows XP Professional Service Pack 2 を使用した。

斜体の文字は、任意の文字列に置き換える。

(1)Qemu に同梱されている qemu-img で、VMware のディスクイメージを作成する。

qemu-img.exe create -f vmdk OS名.vmdk 8G

(2)VMware 構成ファイルを作成する (拡張子 .vmx)。ファイル名は任意だが、ディスクイメージと合わせるのが無難。

config.version = "8"
virtualHW.version = "3"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
memsize = "256"
MemAllowAutoScaleDown = "FALSE"
ide0:0.present = "TRUE"
ide0:0.fileName = "OS名.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "D:" ← CD-ROM のドライブを指定
ide1:0.deviceType = "cdrom-raw"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "bridged"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
sound.fileName = "-1"
sound.autodetect = "TRUE"
displayName = "表示名"
guestOS = "other26xlinux"
nvram = "OS名.nvram"

上記は、Linux を仮想ハードディスクにインストールする場合の構成例で、ゲスト OS の構成に応じて設定は変更する。
guestOS の値は、
  • win98: Windows 98
  • win2000pro: Windows 2000 Professional
  • win2000serv: Windows 2000 Server
  • winxphome: Windows XP Home Edition
  • winxppro: Windows XP Professional
  • win2000AdvServ: Windows 2000 Advanced Server
  • win2000Serv: Windows Server
  • win2000Pro: Windows 2000 Professional
  • other26xlinux: Linux 2.6.x
  • freebsd: FreeBSD
  • solaris10: Solalis 10
など。
VM/VMware/VMX ファイルに、詳細な一覧がある。
ethernet0.connectionType は、とりあえず bridged にしてインストールするとよい。これはインストール後、VMware Player 上で変更できる。

また、ISO イメージから起動させたい場合には、
ide1:0.present = "TRUE"
ide1:0.fileName = "ISOイメージのパス"
ide1:0.deviceType = "cdrom-image"
などとし、フロッピーディスクから起動するには、
floppy0.present = "TRUE"
floppy0.fileName = "A:"
などとする。

(3) VMware Player を起動する。
構成ファイルの場所を聞かれるので、(2) で作成したファイルを指定する。
起動時、必要に応じて BIOS の設定オプションを変更する (VMware の起動画面が出たら、画面上をクリックして F2 キーを押す)。

(4) OS をインストールする。
あとは、インストーラの指示に従ってインストール作業を進める。

なお、途中で失敗して再起動すると、前回の状況から再スタートしてしまう。
これを回避するには、.vmx ファイルを開いて空行以降をすべて削除し、.vmx および .vmdk ファイル以外を削除してから起動する。


【変更履歴】
2007-10-31
タイトルを「VMware を無料で使う」から変更
VMware のダウンロードURLについての記述追加
2007-11-23
guestos の部分追記
2007-12-15
guestos に Win 2000 追記
2014-10-16
VMware のダウンロードサイトの情報追記
posted by K/I at 12:41 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年10月16日

ssh 経由でディレクトリをマウントする

fuse-sshfs を使ってみたが、これがかなり使える。
SSH 経由で別ホストのディレクトリをマウントできる、というものだ。
しかも、一般ユーザー権限でマウントできる。
つまり SSH で接続できれば、マウントもできると言うこと。

Fedora Core 5 なら、yum で fuse-sshfs をインストール。

インストール後、fuse グループに、fuse-sshfs の使用を許可するユーザーを追加する (対象ユーザーがログイン済みだったら、ここでいったんログアウトし、再ログイン)。
※これをやらないと、 fuse: failed to exec fusermount: Permission denied といったエラーが表示される。

これで準備完了。

●マウントの仕方

$ sshfs リモートディレクトリ マウントポイント

とする。リモートディレクトリ は、scp と同様の流儀で指定できる。たとえば、host1.somewhere:/home/user01/data とか、bob@host1.somewhere:/home/bob/proj のようにする。
もちろん、あらかじめ SSH でリモートホストに接続できるようにしておく必要がある。
マウントポイントは、書き込みが許可されていないとだめらしい。

●アンマウントの仕方

$ fusermount -u マウントポイント

とすれば、アンマウントできる。
【関連記事】
SMB for FUSEでWindowsネットワークを利用する

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

2006年10月01日

Fedora Core 3 -> Fedora Core 4 -> Fedora Core 5 アップグレード

Fedora Core 3 を使っていた。
FreeWnn に愛着があって FC3 をインストールしたのだが、アップグレードがめんどうでそのままにしていた。
しかし、ほかのパッケージのバージョンがなかなか更新されないので、とうとうアップグレードを試みることにした。

なお、カーネルにまつわるパッケージの依存関係の問題で、Fedora Core 3 から 5 への直接アップグレードはできなかった。いったん 4 にアップグレードし、さらに 5 にアップグレードする。

手順は以下のとおり。

(1) fedora-release の更新

# rpm -Uvh http://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os/Fedora/RPMS/fedora-release-4-2.noarch.rpm

パッケージ fedora-release は、yum がディストリビューションのリリースバージョンを判断するために参照するものらしい。
参照 → http://www.asahi-net.or.jp/~aa4t-nngk/yum.html

(2) 次に、yum のキャッシュを削除し、アップグレードを試みる。

# yum clean all
# yum upgrade

yum の upgrade というコマンドは update --obsoletes と同じで、"パッケージの廃止" を許容し、パッケージのディストリビューションのバージョンが変わる場合にも対応できる。

上記コマンドを実行すると、大量のファイルをダウンロードしはじめる。

そして、おそらくエラーが出て終わる。
本質的な回避策を講じるよりは、おそらくパッケージを削除してしまった方が簡単なので、対象パッケージを削除してみる。
たとえば、

# yum remove gphoto2 sane-backends pcmcia-cs postgresql-pl php-pear

などとする。
必要なパッケージが含まれている場合には、アップグレードが完了したらまたインストールすればよい。
※この際、依存関係で削除されたパッケージもメモしておく。

また、

--> Processing Conflict: initscripts conflicts kernel < 2.6.12

などといったメッセージが出た場合は、対応するバージョンのカーネルを削除する。
たとえば、

# rpm -q kernel

で kernel のパッケージを調べて

# yum erase kernel-2.6.9-1.667

などとする。

(3) 再度アップグレードする。

# yum upgrade

これで、まずは FC3 から FC4 へのアップグレードが完了。
同様の手順で、FC4 から FC5 にアップグレードすればよい。
※FC5 の fedora-release は、
http://download.fedora.redhat.com/pub/fedora/linux/core/5/i386/os/Fedora/RPMS/fedora-release-5-5.noarch.rpm
にある。

なお、アップグレードしたら eth0 と eth1 が入れ替わっていた。
VAIO のノートパソコンで、ワイヤレス LAN カードが内蔵されていたのだが、それが eth0 になり、オンボードが eth1 になっていた。

/etc/sysconfig/network-scripts の ifcfg-eth0 と ifcfg-eth1 のファイル名を入れ替え、各ファイル内の eth0 と eth1 を入れ替えて、ネットワークにもつながるようになった。

【2006/10/5 追記】
その後も、起動時に NIC (ネットワークカード) の認識順序が一定せず悩まされたが、ifcfg-eth0 および ifcfg-eth1 に、
HWADDR=xx:xx:xx:xx:xx:xx
と、MAC アドレスを指定すればよいことがわかった。
MAC アドレスは、dmesg コマンドや、ifconfig コマンドで確認できる。
posted by K/I at 23:05 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年09月24日

はじめての XP プロジェクト(1) ―ユーザーストーリーの収集とスパイクの作成―

あるプライベートプロジェクトを、Servlet + JSP で実装しようと思う。
プロジェクトの進め方は、XP(eXtreme Programming)を試してみることにした。
これは、そのためのメモである。
Java も XP も初めてなので、この記事は、「はじめての人のためのXP解説」ではなくて、「はじめての人が書いたXP」である。
したがって、間違いや理解の足りないところもあると思う。
念のため。

なお、この記事は以下のサイトの説明に沿って進めている。
http://www.extremeprogramming.org/index.html

ここでは、XP についての基本的な開発姿勢などは特に記載せず、プロジェクトの進め方を中心に書く。

[0] 全体の流れ

http://www.objectclub.jp/community/XP-jp/xp_relate/xp-faq
の図が参考になると思う。
この図の元ネタは上記 ExtremePrograming.org のサイトにある。


[1] ユーザーストーリー(user stories)の収集

リリース計画ミーティング(release planning meeting)の材料として用いる要件を整理する作業で、クライアントが担当する。

・各ストーリーは3文程度の文章で、クライアントの業界用語で記述すればよく、書式の制約も特にない。
・ストーリーには、ユーザーが何を求めていて、どのような恩恵が得られるかを記述するようにし、技術的な詳細(データベースのレイアウトやアルゴリズム、GUIレイアウトなど)は含めないようにする。
・ストーリーの内容は、実装にどのくらいの期間がかかるか判断できる程度のものであればよい。
・1つのストーリーは、開発に1〜3週間要する規模の物にする(それに専念した場合の正味の開発期間で、仕様を理解するための期間は含めない)。
・リリース計画を立てるには、ストーリーの数は60〜100個程度が理想的である。

後に作成する機能テスト(acceptance tests)は、ユーザーストーリーを正確に実装しているかなどをチェックするものとなる。

開発者はクライアントからストーリーを直接受け取り、実装にどのくらい時間がかかるか見積もる。
大きすぎるストーリーは分割し、小さすぎるストーリーは統合する。


[2] スパイク(spike)の作成

本格的に開発に取りかかる前に、技術的に難しそうな部分を把握し、解決策を検討するために簡単なプログラムを書いてみる作業。

スパイクは、基本的には実際の開発の中で用いられることはなく、単なる検討用のプログラムとなる。

スパイクの目的は、技術的な問題をある程度解消することと、ユーザーストーリーの見積もりを正確に行うことである。
posted by K/I at 19:51 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年09月10日

Eclipse 3.2 のインストール (Windows)

■情報源

Eclipse の本家サイト
http://www.eclipse.org/

EclipsePlugins (Eclipse プラグイン検索)
http://www.eclipse-plugins.info/eclipse/index.jsp

■ダウンロード

Eclipse は、各種 FTP サイトからダウンロードできる (もちろん、上記 Eclipse 本家サイトからもダウンロードできる)。

たとえば、北陸先端科学技術大学院大学 (JAIST) の FTP サーバー
ftp.jaist.ac.jp
に anonymous ログインし、ディレクトリ
/pub/eclipse/eclipse/downloads/drops
から、
R-3.2-200606291905/eclipse-SDK-3.2-win32.zip
をダウンロードする。

■インストール

eclipse-SDK-3.2-win32.zip を解凍し、eclipse フォルダを任意の場所に展開すればインストールは完了する。
eclipse フォルダ内の eclipse.exe が Eclipse 本体である。これを実行すると Eclipse が起動する。

■プラグインの追加

Eclipse の特徴である、プラグインの追加方法について。
ここでは例として、2つのプラグイン、ランゲージパックと Subclipse の追加をしてみる。

[1] 別途 ZIP ファイルを入手して展開する方法

例: ランゲージパックの追加

上記 FTP サイトから、
L-3.2_Language_Packs-200607121700/NLpack1-eclipse-SDK-3.2-win32.zip
をダウンロードする

入手した ZIP ファイルを展開し、その中の
plugins
features
の2フォルダを、eclipse フォルダ内の各フォルダに上書きする。
※プラグインによっては、features を含まない場合もある。
これでプラグインの追加は完了。
Eclipse を起動し、プラグインが追加されているか確認してみる。
[ヘルプ] メニューの [ソフトウェア更新] から、[構成の管理] を選ぶと、"製品構成" ダイアログが表示される。
追加したプラグインが、ここに表示されているか確認する。
もし表示されていなければ、ツールバーの [使用不可フィーチャー] の表示を選択状態にしてみる。
使用不可状態になっていたら、右クリックして [使用可能にする] を選択する。再起動し、もう一度使用可能状態になっているか確認する。

[2] アップデートマネージャを利用して追加する方法

例: Subclipse の追加

プラグイン Subclipse では、アップデートマネージャが用意されている (プラグインのサイトを調べるには、上記 EclipsePlugins を利用すると便利)。
http://subclipse.tigris.org/update
これは、プラグインのインストールやアップデートを自動的に行うサービスである。
Eclipse を起動し、[ヘルプ] メニューの [ソフトウェア更新] から、[検索およびインストール] を選択する。
"インストール/更新" ダイアログで、[インストールする新規フィーチャーを検索] にチェックマークを入れて、[次へ] ボタンをクリック。
[新規リモート・サイト] ボタンをクリックし、表示される "新規更新サイト" ダイアログの [URL] 欄に、アップデートマネージャの URL を入力する。[名前] 欄は任意の名前を入れる。
[OK] ボタンをクリックし、[検索に含めるサイト] リストで、先ほど追加したサイトにチェックマークがついていることを確認して [終了] ボタンをクリックする。
あとは、表示されるダイアログの指示に従う。
posted by K/I at 15:40 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年04月18日

ACCESS から PostgreSQL サーバーにアクセスする

Microsoft ACCESS をフロントエンドとして、PostgreSQL サーバーにアクセスする方法について説明する。
※Windows XP の場合

あらかじめ、PostgreSQL のデータベースを作成しておく。その際、エンコーディングは Shift_JIS にしておく。

(1) インターウィズさんのホームページより、PostgreSQL の ODBC ドライバをインストールする
http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
のダウンロードのところから、あるいは、Office Nami さんのサイト
http://nami73.com/psqlodbc/
からダウンロードし、インストール。

(2) [コントロールパネル] の [管理ツール] から [データ ソース (ODBC)] を開き、[システムDSN] タブで [追加] ボタンをクリックし、"データソースの新規作成" ダイアログで "PostgreSQL" を選択して [完了] ボタンをクリック。

(3) "PostgreSQL Driver Setup" ダイアログが開くので、必要事項を入力する。"Data Source" 欄は、データソースの名前(任意)を入れる。

(4) ACCESS を起動し、空のデータベースを作成。左側の [オブジェクト] から [テーブル] を選んでおき、ツールバーの [新規作成] をクリック。"テーブルのリンク" を選択して [OK] ボタンをクリックする。

(5) ファイルの種類 に ODBC Databases を選択すると、"データソースの選択" ダイアログが開くので、"コンピュータデータソース" タブをクリックし、(3) で設定したデータソースを選び、[OK] をクリックする。

(6) "テーブルのリンク" ダイアログで、対象となるテーブルを選び、[OK] ボタンをクリック。

これで、ACCESS から PostgreSQL のデータベースにアクセスできる。
posted by K/I at 13:04 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2006年02月22日

Linux ルータの設置

Linux をルータとして使用してみた。
ディストリビューションは Debian GNU/Linux 3.1 (sarge)

まずは、次の手順で PPPoE 接続の設定を行う。

(1) pppoe をインストール (dselect を起動し Select 画面で pppoe と pppoeconf を選び、Install する)。
(2) root 権限で、pppoeconf を実行する。
質問に答えていけば、比較的簡単に ADSL または 光回線に接続できる。
設定ファイルは、/etc/pp/eers/dsl-provider に作られるので、必要に応じて変更する。
(3) 手動で起動するには、
# pon dsl-provider
切断するには、
# poff
接続状況を見るには
# plog
または、
# ifconfig ppp0
などとする。

次に、iptables の設定。
たとえば、次のようにする。

# iptables -A POSTROUTING -o ppp0 -j MASQUERADE
# iptables -N FW-INPUT
# iptables -A INPUT -j FW-INPUT
# iptables -A FORWARD -j FW-INPUT
# iptables -A FW-INPUT -i lo -j ACCEPT
# iptables -A FW-INPUT -s 192.168.1.0/255.255.255.0 -i eth0 -j ACCEPT
# iptables -A FW-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
# iptables -A FW-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FW-INPUT -j REJECT --reject-with icmp-host-prohibited
# iptables -A FW-INPUT -j LOG

これは、ローカルの IP ネットワークが 192.168.1.0/255.255.255.0 の場合。
セキュリティ的にはゆるいが、とりあえずこれでつながる。
ただし、再起動するとこの設定は忘れ去られてしまうので、
# iptables-save > iptables.conf
としておけば、
# iptables-restore iptables.conf
することで同じ設定を復活できる。
posted by K/I at 16:06 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2005年11月01日

Qemu on Windows を使う

Qemu という OS のエミュレータがある。要するに、OS 上で別の OS を起動するツールである。
その Qemu on Windows を使ってみたのでご報告。
今回ホスト PC に用いたのは、Windows。まずは以下のサイトから Qemu のインストーラをダウンロードし、インストールする。
http://www.oszoo.org/download.html
の「Step 1 - Download and install QEMU emulator on your PC」
また、Qemu Manager
http://www.davereyn.co.uk/download.htm
の Qemu Manager Version X.XX For Windows をダウンロードし、インストールする。

次に、OS のイメージファイルをダウンロードする。
イメージファイルは、以下のサイトにある。
http://www.oszoo.org/download.html
の「Step 2 - Download and adopt a Free OS from the (FreeOS)Zoo」
※拡張子が .torrent のファイルは、BitTorrent というファイル共有のための情報ファイルで、専用のソフトを用いてファイル本体をダウンロードする。BitComet というソフトがよく使われているらしい。
http://www.bitcomet.com/
OS イメージをダウンロードしたら、たとえば C:\Program Files\qman\images (← Qemu Manager のイメージファイルの保存先フォルダ) に解凍する。
そして、Qemu Manager を起動し、ツールバーの一番左のアイコン (Create new Virtual Machine) をクリックする。「Create New Virtual Machine Wizard」が起ち上がる。
「Collect Initial Information」画面の [New Virtual Machine Name] には、任意の Virtual Machine 名を入力して、[Next] ボタンをクリック。
「Operating System & Ram Settings」画面の [Operating System (If Any)] は、プルダウンから選ぶか、直接キー入力。[Virtual Machine RAM Required (In Megabytes)] には、プルダウンから選んだ場合には推奨値が入力される。直接キー入力した場合は、適当と思われる値を入力 (たとえば、128)。
「Hard Disk Settings」画面で、[Drive] の [Use Existing Virtual Drive] にチェックマークをつけ、[Next] ボタンをクリック。「Open Virtual Disk」ダイアログが開くので、先ほど展開したイメージファイルを選び、[開く] ボタンをクリック。
「Virtual Machine Basic Device Settings」画面はそのまま、[Next] ボタンをクリック。
最後の画面で、[Save Virtual Machine] ボタンをクリックして、完了。

Qemu Manager に、設定した Virtual Machine が表示されるので、選択して、ツールバーの [Launch Selected Virtual Machine] ボタンをクリックすると、OS が起動する。
posted by K/I at 18:19 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする