Konjac日記 -9ページ目

Konjac日記

僕自身の備忘録的な内容や思うところの捌け口

この間フラっと電気屋にMacBookAirを見に行った。

ちょっと触ってみて思ったこと。

・軽い

・薄い

・筐体が綺麗(無駄な突起が全然無いね)

・速い(Dockのアイコン選択してワンバウンドするかしないかで、アプリが起ち上がる)

とここまではみなさんレビューでよく言ってること。

僕もそれは感じたけど、他にも

・何気に専有面積デカイ(13inchは小さいカバンに入らねーんじゃねーか?)

・11inchは小さいけど、バッテリーがなぁ…

・13inchは1.3kgぐらいあんのね。重いわ。(あのルックスからは1.1kgぐらいであって欲しかった)

・Thunderbolt Display欲しくなってしまうなぁ…でも家では使わんなぁ…

・何か細かいとこよくよく見ると、微妙に安っぽいなぁ(まぁ実際安いけど)

他にも、と言いつつ大した感想は無かったですね(^^;)

でも筐体の重さを気にしなければ、うちのMacBookSSD化で我慢できるんではないだろうか。

確かに、Air触って一番魅力に感じたのは、アプリの起ち上がりの速さ。

あれはHDDの時とは本当に別次元。

HDDでクリーンインストール直後でも2バウンドくらいでSafariが起ち上がる。

Airはウィンドウ隠してあっただけで、起ち上げて無いんじゃないかって思うくらい速かった。

やっぱしばらくはMacBookにSSDでいいや。
僕は毎朝JRで通勤しています。

降車駅には中央口に50台近くの改札機があります。

そこをicocaでピッとタッチして改札を出る度に思うことがあります。

JRのicocaシステムはスゲェ。

ラッシュ時は一つの改札機だけでも1秒間に1~3トランザクションくらいはあると思う。

その中でリアルタイムでエラーチェック、エラーハンドリング、履歴蓄積をしてる。しかも履歴蓄積とかは並列で。

中央口だけで50台近く、その他の出入り口で20~30台あって、多分合計150台くらいあるんだと思う。

それに一斉に通勤客がなだれ込み、全体で1秒間に150~450トランザクションあることになる。

それを遅れること無く処理していく。スループットが半端ない。

興味が出てさわりだけ調べてみた。

icocaカードには直近50件の使用データが蓄積されているらしい。

ピッとタッチした瞬間にカード側に履歴データが読み書きされるっぽい。

定期の期限切れ等のエラーハンドリングはこのデータを基にしてるんだろう。

問題は、料金計算、乗り越し精算、料金エラーだ。

どこから乗ってどこで下りて。その金額はコレだ!みたいなのをタッチした一瞬で算出せにゃならん。

区間料金データってどこに保持されてるんだろう。 改札機だろうか、改札機のある駅の末端サーバだろうか。icocaカード内だろうか。

しかも区間料金が出てからしか、料金エラーは判別できないし。。

また、カード以外にも使用履歴は残さないといけないだろうから、JR側で保持する履歴データの保存も必要だろう。

さすがにリアルタイムでicoca使用データの中央管理サーバに書き込みに行ってるとは思えないから、多分各駅毎に末端サーバがあるんだと思う。

あの改札を出る瞬間のピッとの一瞬で、

1.入場記録のチェック

2.定期か通常料金かのチェック

3.定期の場合、期間、区間のチェック→そのまま7へ

4.通常料金や定期で乗越の場合、区間から乗車金額を算出(定期で乗越の場合、定期区間は省いて算出)

5.残金のチェック

6.残金データの書き換え

7.使用履歴データの更新

8.使用履歴データのサーバ保存

上記の1~5の中でエラーがあると、キンコーンってハンドリングしなきゃならない。

それをあのトランザクション数で行うってのはバケモノだ。

普段何気なく使ってるけど、あのシステムはほんと凄い。よく出来てるなぁ。

特に区間料金算出辺りの設計を見てみたい。どうなってるか想像がつかん。

ちなみに、僕の予想では、利用履歴データは日次バッチとかで中央サーバに送られて、保存されるんじゃないかなぁ。

もしかすると探せば詳しいシステムの解説とかあるのかもだけど、想像するのが楽しい。
全然知らなかったんだけど、一部のブラウザでAjaxのクロスドメインが実装されてるとか。
XMLHttpRequest Level 2として仕様策定が進んでる。

セキュリティ的に心配になる部分もありながら、便利になったなぁと実感。

少し調べてみる。

Firefox,Safari,ChromeなどW3C準拠のJavascript実装では、特に実装内容変える必要ないそうだ。
今まで通り、XMLHttpRequestが使える。実装変えなくていいのはありがたい。

問題はIEさん。
ActiveXObject("Microsoft.XMLHTTP")では不可の模様。
新しく実装されたXDomainRequestなるものを使えとな…
独自仕様に走るからこんなことになるんだよ。めんどくせーなーorz

メインブラウザOperaさんではその辺は全く実装されてないみたい。
W3C準拠大好きなOperaにしては珍しいな→よく見たらまだDraft版だからか。正式策定されないとOperaは動かないのね。

さて、IEは完全無視として、大半のブラウザではJavascript実装は変更する必要がない。

が、
クロスドメインAjaxを実現するには、サーバ側の設定も必要となる模様。
Access-Control-Allow-Originなる情報をHTTPレスポンスヘッダに付加する必要がある。

便利かも知れんけど、セキュリティの事なんかを考えると、利用用途は限られるかも。