羽田空港から台北いってきた - ホテル編

台北ナビ経由でも予約できるんだけど,Hotels.com 経由で予約した。というのは,

この 10% OFF というのはかなり大きい。

Hotels.com だと予約したあと,リアクションがほとんどない (確認のメールが1通くるだけ) ので不安だけど,少しでも安くしたいならおすすめ。

あと,実際は Hotels.com で直接探したんじゃなくて,トリップアドバイザー経由で最安値を検索した。あそこはクチコミももちろんのことながら,各販売サイトの値段を横断的に検索できるので便利。エクスペディアとかもよくクーポンだしてるのでいちどトリップアドバイザーを経由したほうがいいと思う。


ホテルの感想だけど,高級ホテルというよりちょっと規模の大きいプチホテルといった趣。フロントも超こじんまりしてるので。従業員のホスピタリティは抜群。わりと日本語も通じる (英語のほうが意志の疎通がちゃんとできるけど)。

トリップアドバイザーの評判がとてもいいんだけど,たしかにお年を召した西欧人にはたまらんだろうなぁ。ただ各種内装はクラッシックな雰囲気で,先進的だったり清潔感にあふれているわけではないので,若者にはつまらないかも。都心からちょっと離れているので便もやや悪いし (とはいえタクシーだけで都心まで10分くらいでいける)。

空港からタクシーで15分くらいかな。帰る日に気づいたけど,このホテル,花博会場から非常に近いので,(花博開催期間なら) 松山空港からの無料バスでこれる気もする。


リビング, 欧華酒店
で,デラックススイートに宿泊。このときで1泊あたり14,000円くらい - クーポン割引 10% + 税,といった感じ。もちろん部屋あたりの値段。

天井が低いので高級感はないけど,やっぱり日本に比べてお得。あと,写真がないけど,トイレ+バスルームが一番高級な感じだった。


欧華酒店
スイートだからか,部屋のいたるところにお花がいっぱいあった。10個くらいはあったような (上の写真にも2つ写ってるよね)。ひょっとすると花博期間だからかもしれない。

右下に写っているクッキー,期待せずにたべたらかなりおいしかった。


パイナップルケーキ
お菓子群のなかにあったパイナップルケーキ。台湾の名産らしいです。味は,まぁふーんという感じだった。


欧華酒店
廊下はこんな感じで,真ん中は最上階まで吹き抜けになってる。この吹き抜けのまわりに部屋が配置されていることになる。


テレビ, 欧華酒店
古めかしい雰囲気のホテルだけど,テレビのシステムがやや先進的だった。なぜか SANYO 製。


無線LAN, 欧華酒店
あと,宿泊客は無料でインターネットできる。無線 LAN も無料でできるんだけど,そのへんの情報は部屋にまったくないので,フロントにいうべし。いうとこんなパスワード等を書いた紙をもらえる。無線 LAN のアクセスポイントは館内にたくさんあるみたいで,全部「Riviera〜」という ESS ID になってる。


ガスマスク, 欧華酒店
部屋のドアのとこに簡易ガスマスクが貼りつけてあった。写真が怖い。

羽田空港から台北いってきた - 交通編

羽田空港

羽田は都心からそれなりに時間がかかる*1のでそんなに便利になったという気はしないけど,でも羽田から外国にいけるというのはなんだか不思議な感覚だった。たしかにもともと国際線ターミナルもおまけみたいにあったけどさ。


羽田空港

明るい雰囲気。成田ほど大きくなく,でも十分広い。その後の報道で見るほど混雑してなかったのは朝だったからか平日だったからか。


出国, 羽田空港

出国ゲートを抜けるとこんな感じ。搭乗口は10箇所かな。結構広い。でもゲートから搭乗口まではわりとすぐ。成田みたいにモノレール?みたいなのに乗る必要ないし,たぶん飛行機までバスでいくとかもないんじゃないかな。


免税店, 羽田空港

免税店は,まるで街中のブランドショップ?ってくらい堂々としてる。つーか,ブランドショップ以外ももっと充実させてくれ。


ちなみに新国際ターミナルからだからか,離陸までのタクシングにすっごい時間がかかったです。20分ちかく移動していた気がする。


到着, 羽田空港

こちらは到着ロビー。やっぱり綺麗。

飛行機

利用したのはエバー航空

コンソール, エバー航空機内
最近の飛行機によくあるエンターティメントシステム。

前乗った飛行機はゲームが結構充実してたけど,今回のは「キッズワールド」というのに3個くらいあるだけで全部つまんなそうだったのでパス。

そのかわり映画は量的にはすごく充実してた。あくまで「量的に」はね。画質悪いし中国語字幕だしって感じで (音声は日本語のものもあるのでご安心を)。

フライト状況, コンソール, エバー航空機内
エンターティメントシステムで飛行行程も見ることができる。結構これ好きなんで自分の好きなときに見られて嬉しい。

3D フライト状況, コンソール, エバー航空機内
こんな感じの 3D View にもできるところが風変わり。誰得。視点は固定だと思う。

色々忙しかったからか往復の時間をかけてもインセプションを観終わることができなくて残念。

インセプション Blu-ray & DVDセット (初回限定生産)
ワーナー・ホーム・ビデオ (2010-12-07)
売り上げランキング: 40


行きの羽田空港では,ありがちなカウンターでの人力チェックインだったんだけど (ANA とのコードシェアだったからかな)*2
チェックインマシン, エバー航空

帰りはこんなマッシーンでチェックインをすることに。航空会社の職員がかわりに操作してくれた*3のでちょっと残念。


おまけ。
人形, エバー航空

エバー航空機内で娘にくれたおもちゃ*4。着せ替え人形なんだけどクオリティはともかく,怖い。

松山空港

花博マスコット, 松山空港

到着ロビーに人形がいました。たぶん台北花博のキャラクター。


この松山空港台北市街にあって本当に便利。東京でいえば上野に空港があるようなもの?
成田と羽田だと便利さは人それぞれってか,羽田も結構都心から遠いよねって感じだけど,台北松山空港と桃園空港だと便利さは雲泥の差。羽田-松山便が開通してほんとよかった。


花博マスコット, 松山空港

出発ロビーにも人形いた。増えてるし。

てか,到着ロビーの2体とあわせて全部で5人なんだねきっと ⇒ 2010taipeiexpo.tw

バックの飛行機の模型が気になる。


飛行機模型, 松山空港

気になる。


フライトシミュレーター, 松山空港

どうせ飛行機の風景ビデオでも流れてるのかな,と思ったら,フライトシミュレーターがおいてあった*5

ひまつぶしにやってみっか,と思ったら,左のスロットルは効くものの右の操縦桿が効かないので断念。マウスで操作できたんだけど,それじゃおもしろくないし。左右のモニタは切れてるし,いいかげんだなー。

MRT

MRT は建設が進められている路線もあってガイドブックの情報じゃ古かったりするので要注意。

新荘線ができててリビエラホテル利用者にとってはちょっとだけ便利になってた。

切符, MRT

切符はこんなトークン。カジノのチップみたい。2泊3日とかだと悠遊カード買うより都度買いしたほうが面倒が少ないと思う。

構内, MRT

けっこう多くの人が利用する MRT。この駅は下層がホーム階になってる。ホームドアが見える?


線路, MRT

MRT は地下鉄とは限らなくって,路線によってはこういう高架もある。


改札, MRT

自動改札にあるピクト。

これはなにか。自動改札のドアは結構低い位置についてる。2歳の娘でもひっかかるくらい低いんだけど,そういう小児の場合,大人の前に先行させてねっていう図案です。

信号機

歩行者用信号

歩行者用信号はたいていこのようなドット絵のものだった。こちらは赤信号 (これも結構かわいい)。


歩行者用信号

青信号だと,このように上部に残り時間が表示されて,下に歩行中の人がドット絵アニメーションで表現される。なかなかかわいい。というかゲーム的表現?。うまく撮影できなかったけど現物はもっとハッキリしてます。

*1:ウチからはリムジンバスで1時間かかった。

*2:羽田新国際ターミナル開業まもなくだったんで,カウンター業務がかなりもたもただった。

*3:いちおう写真のように日本語ガイダンスも出るんだけど,トラブル対策のためか極力職員が代行で手続きしてた。

*4:もちろんおもちゃは (在庫があれば) 選択可です。

*5:後ろのほうの座席はインターネットブースになってます。

split はデフォルトで後続する空フィールドを削除する

昔々はまったことあるけど,久々に Perl 使ったらはまったので記念*1に。

sub show {
    print join q{, }, @_;
    print "\n";
}


# デフォルトでは後続する空フィールドは削除される
show split(/:/, 'a:b:c:::');
### => a, b, c


# 第3引数を正数で指定すると,「最大で」そのフィールド数までしか分割しない
show split(/:/, 'a:b:c:::', 2);
### => a, b:c:::


# 「最大で」なので,存在するフィールド数以上を指定しても空で埋めたりはしない
show split(/:/, 'a:b:c:::', 8);
### => a, b, c, , , 


# 負数を指定すると空フィールド含めて最大限分割してくれる
show split(/:/, 'a:b:c:::', -1);
### => a, b, c, , , 

第3引数省略時 (や 0 の場合) の挙動は,たしかに昔はまった覚えがあるけど,

  • 正数時の「最大で」という仕様 (なんとなく空フィールドでそこまで埋めてくれると思ってた)
  • 負数時の最大限分割

とかそもそも昔から知らなかった気がする。

*1:というか二度とはまらないための戒め

Cacti に SNMP デバイスを追加したときのメモ

スマートスイッチ(NETGEAR GS724Tv3)を Cacti でモニタリングしたときの記録

SNMP 経由で監視するデバイス (ハブ) を追加する

  1. 「Create」メニューの「New Graphs」を選択する
  2. 右上にある「Create New Host」リンクをクリックする
  3. 適当に設定する
    • 「Hostname」 はきちんと設定する
    • 「Host Template」は「Generic SNMP-enabled Host」を選択する必要がある?
    • 「Downed Device Detection」はデフォルト (Ping, UDP Ping) のままでいいと思う
    • SNMP Version」は (v3 で認証とかやってないのなら)「Version 2」あたりを設定すると楽
      • 適宜「SNMP Community」を設定する; たいていデフォルトの「public」のままだろうけど
  4. ホストが作成されたら右上の「Create Graphs for this Host」リンクをクリックする
    • 今後このホスト画面には,「Management」メニューの「Devices」を選択して,適切なデバイス名をクリックするといける
  5. うまく設定できていると「Data Query」欄に,各ポートごとのデータソースが大量に出ているはず
  6. 「Data Query」欄のヘッダ右端のチェックボックスをクリックするとすべてのデータソースを一度に選択できる
    • もちろん,いらない項目はチェックボタンをはずすこともできる
  7. 一番下の「Select a graph type:」で適切なグラフタイプを選択して,「create」
    • 普通,「In/Out Bytes (64-bit Counters)」でいいと思う
  8. もし Error 等も統計をとりたいなら同じ手順で graph type を適切に選択して create する

グラフビューのツリーにもいれとく。

  1. 「Management」メニューの「Graph Trees」を選択
  2. 「Default Tree」を選択
  3. 「Tree Items」ヘッダの右端の「Add」リンク*1をクリック
  4. 適宜設定して「Add」
    • 「Parent Items」は「root」のままでいい (凝ったツリーにしないのなら)
    • 「Tree Item Type」を「Host」にする (ここがポイント; まぁちまちま「Graph」を追加してもいいんだけど)
    • 「Graph Grouping Style」はデフォルトの「Graph Template」のままが結局わかりやすいと思う
      • もちろん今回のようにハブの場合,「Data Query Index」でもポート順に並ぶのでいいけど

グラフのタイトルをいっぺんに変更する

んで,以上のようにするとハブを Cacti からモニタリングできるんだけど,各グラフのタイトルが

HUBNAME - Traffic - 0/1

ってなる。

NETGEAR GS724T (に限らないと思うけど) だと,設定画面で各ポートにぶら下がってる機器とかの名前を指定することができる。なので,これを反映して,

HUBNAME - Traffic - 0/1 (PORTNAME)

みたいに表示できるようにしたい。


いっこいっこ手作業で変更していくこともできるんだけど,この手のハブはポート数が膨大にあるので手作業でやってくのは骨が折れる。なのでいっぺんに設定する方法を調べた。

  1. まずはテンプレートの修正
    1. 「Collection Methods」メニューの「Data Queries」を選択
    2. SNMP - Interface Statistics」を選択
    3. 下部の「Associated Graph Templates」欄から適切なテンプレートを選択する
      • 上記の例の場合だと「In/Out Bytes (64-bit Counters)」
    4. 「Suggested Values」にテンプレート候補を追加する
      • ややこしい概念なのでちょっと解説
      • データソースの名前やグラフのタイトルはここのテンプレートの候補をもとに適切なものが選ばれる
      • たとえば「Data Template」の「name」の上から2番目に「|host_description| - Traffic - |+query_ifName|」というのがあって,実際にはこれが選ばれてる
      • これは,1番目の「|host_description| - Traffic - |query_ifIP| - |query_ifName|」というのが不適切だった (query_ifIP が取得できなかった) ため
      • なので,ここの候補群に「|host_description| - Traffic - |query_ifName| (|query_ifAlias|)」というのを追加すれば,query_ifAlias が存在する場合はこのテンプレートを使い,そうでない場合は別のテンプレートを使う,といったようになるわけ
    5. ということで具体的には,まず「Data Template - Interface - Traffic」のほうで,下部の左側のフィールドに「|host_description| - Traffic - |query_ifName| (|query_ifAlias|)」を入力する
    6. つぎに「Field Name:」欄に「name」と入力して,「add」する*2
    7. 追加されたデータを右側の上下矢印アイコンをクリックして「|host_description| - Traffic - |query_ifName|」より上位にもってくる
    8. つぎに「Graph Template - Interface - Traffic (bytes/sec)」のほうでも同じように追加して上位にもってくる
      • こちらは「Field Name:」を「title」にすることに注意
      • てか,グラフのタイトルを修正するだけならこちらの Graph Template だけでいいんですよね; 上の Data Template のほうは修正する必要はない
    9. 最後に「save」することを忘れずに
  2. これだけだと既存のデータソース,グラフの名前・タイトルが変わらないので既存のものにも適用する
    1. まずデータソースから。「Management」メニューの「Data Sources」を選択
    2. 修正したいデータソースを右端のチェックボックスで選択
    3. 右下の「Choose an action:」で「Reapply Suggested Names」を選択し,「go」ボタンを押す
    4. 確認画面がでるので「yes」を押す
    5. 次にグラフのタイトル。これは「Management」メニューの「Graph Management」を選択して同じようにする

Cacti • View topic - Display Interface Alias (IF-MIB) as well as Name (IF-MIB) を参考にした。

データ取得間隔を1分毎に変更する

デフォルトで5分間隔のグラフになっててさみしいので。これが正式なやり方かわかんないけど。

  1. 「Configuration」メニューの「Settings」を選択,「Poller」タブを選択
  2. 「Poller Interval」と「Cron Interval」をおのおの「Every Minute」に変更
    • どうしてべつべつにあるかがよくわかんないです
  3. 「Templates」メニューの「Data Templates」を選択
  4. SNMP の場合「Interface - Traffic」を選択
  5. 「Step」項が「300」になっているので「60」に変更
  6. 他必要なテンプレートも適宜書き直す
    • Error も統計とってるなら「Interface - Errors/Discards」もだし,デフォルトで導入される Localhost Host 用テンプレなら「Unix - Load Average」とかいろいろある
  7. RRD ファイルを削除する
    • 必要かどうかわかんないけど,一応削除してる
    • CentOS で EPEL Repo のパッケージでいれた場合,/var/lib/cacti/rra/*.rrd
  8. 「Utilities」メニューの「System Utilities」を選択
  9. 「Rebuild Poller Cache」をクリック

version 0.8.7g の場合,http://www.cacti.net/download_patches.php にある One Minute Polling Interval Fix を当てるべきかもしんない。

わたしは EPEL repo のをそのままいれたので 0.8.7e という古いバージョンなのでそもそもパッチが当たらない (いいのか?)

いっそ momo-i さんの日本語化 *3されたのにするのがいいのかも。最新パッチまであたってるみたいだし。


あとはデータの保存期間をhttp://www.sabakan.info/techinfo/cacti-0.8.7-4.htmlにしたがって調整した。

*1:Cacti は随所にこのような (ヘッダ右端の Add) インタフェースがでてくるが,非常にわかりにくい。

*2:このへんの左右の感覚が上の実データと逆だから混乱します。

*3:http://www.sabakan.info/cacbb/topic.php?post=169 参照

郵便番号データは自分で加工しない

結論を先に。

以下各論。

*1:かつ zip 形式圧縮ということで Unix 系もうれしい。

*2:なお2010年はじめあたりまで事業所の個別郵便番号と一般の郵便番号に矛盾のあるレコードが1件あった気がする。現在はまだたしかめていない。

Compiz を Python からあやつる

タイトルは大袈裟。


ここ半年ほど Compiz のワークスペース切替器にキューブではなくデスクトップの壁(wall)を使っています。こっちのほうがキビキビ動くし。

んでこの wall plugin ですが,システム起動直後だと,ワークスペース切替時に壁紙がスクロールしないんです。まぁそんな仕様だと思えばいいんですけど,CompizConfig 設定マネージャを立ち上げて,「デスクトップの壁」プラグインを一度無効化して有効にすると,壁紙もスクロールするようになります。じゃあそういう仕様じゃないじゃん。

いままでいちいち起動後に CompizConfig 設定マネージャを立ち上げて修正していたんですけど,めんどくさい。CompizConfig 設定マネージャ*1Python で書かれているっぽいので Python から Compiz の挙動を操作できるんじゃね,と思ってやってみました。

import time
import compizconfig
ccs = compizconfig

context = ccs.Context()
wall = ccs.Plugin(context, 'wall')

wall.Enabled = False

time.sleep(1)

wall.Enabled = True

いちいち compizconfig.Context() って書いてもいいんだけど長ったらしいので ccs = compizconfig ってしてます((まぁ本気で短く書こうと思ったら compizconfig のままやったほうが今回は短いと思う。Context オブジェクトもわざわざ変数に代入する必要ないし。))。って実は CompizConfig 設定マネージャのソースの真似。Python ってこういう書き方もできるのねと勉強になりました。

time.sleep() なしでもうまく動くかなと思ったけど,ムリだったので入れてる。1秒も待たされるのはアレだけど,まぁ実害ないというか設定マネージャ立ち上げるより百倍はやいので。


ソース見ると相当たいしたことないでしょ。でも API ドキュメントとかが全然なくて結構苦労しました。

Compiz の Git レポジトリは Compiz Git repository browser とかで見られるんだけど,libcompizconfig のソースから[http://cgit.compiz.org/compiz/compizconfig/libcompizconfig/tree/include/ccs.h:title=include/ccs.h] とか Python バインディングのソースから[http://cgit.compiz.org/compiz/compizconfig/compizconfig-python/tree/src/compizconfig.pyx:title=compizconfig.pyx] とか見ながら書いた。

*1:よくよく考えたら変な名前ですよね。まぁ英語でももともと CompizConfig Setting Manager ですけど。