・・・に行ったのですが(男3人で)、クラゲがあまりにも気持ち悪かったので写真のせておきます。
こういうの苦手なんですよ・・・。
・・・うわっ! キモッ!!
そしてそう言っている我々も周りから見たらキモかったのではないかと心配です。
東海道新幹線はJR東海のドル箱です。
1日に300本近くの列車が走り、約37万人が利用する関東~東海~関西の交通には欠かせない物になってます。
あれだけたくさん電車のある首都圏のJR路線の収益を足しても東海道新幹線の収益には全然およばないくらいなので恐ろしい限りです。
JR東海の利益の8~9割は東海道新幹線のたった1路線で稼いでいるらしく、おそらく世界で一番利益の多い路線です。
これだけ儲かってるんだからいい加減安くしてくれてもいいようなもんですが、値引率が一番低いのも東海道新幹線の特徴・・・。
そもそもの値段が下がらないのは、国鉄の債務をJR東海で大量に引き受けた事とリニアモーターカー事業の大失敗あたりが原因だと思いますが。更に東海道新幹線の路線が古く、そろそろ老朽化が限界な点もありますね。。
前置きが長くなりましたが、できるだけお得に移動する方法を考えないと名古屋住まいのボクにとっては死活問題であります。
で、色々調べてみたんですが、あまり選択肢が無いんですよねw
まずは表を。
*差額は一般的なエクスプレス予約を使った場合が基準
*1 エクスプレス早割は乗車券と特急券のセット商品
やはりある程度利用する人にとって一番良いのはエクスプレス予約でしょうねえ。
もちろん学割が最強ではあります。
ただこれ、セントラルファイナンス発行のエクスプレスカード(クレジットカード)を作らないといけない事がネックです。
(個人的には信販会社はちょっと・・)
年会費は1000円です。
ちなみに、エクスプレス早割は、早く予約したら安くなるのかと思ったら大間違いで、朝7時より前に発車する列車のみに適用(かつ3日前までに予約しなければならない)という制限がありますので、案外使えません。
他にも色々と使用上のコツがありますので紹介します。
■エクスプレス予約の上手な使い方と注意点
エクスプレス予約は、インターネット又は携帯電話から新幹線のきっぷを予約し、駅で受け取るというサービスです。エクスプレスカード(セントラルファイナンスのクレジットカード・・・)を作る必要があり、切符代はこのカードでの支払いになります)
予約しただけではダメで実際に受け取らないと使えません。
一番気をつけないといけない事は、JR東海とJR東日本が非常に不仲だという事です(w
いや、たぶん嘘ですが。
具体的に言うとエクスプレス予約で予約した切符はJR東海の窓口でしか受け取る事ができません。
また、別の切符で入場してJR東海の窓口に行って予約した新幹線の切符を受け取っても重複区間の料金は返還されません。
例1:秋葉原駅から名古屋駅まで移動する場合
<想定ケース>
1.東京→名古屋までの乗車券+特急券をエクスプレス予約、
秋葉原駅で東京駅までのきっぷを購入し、東京駅で予約したきっぷを受け取る場合。
2.東京→名古屋までの特急券のみをエクスプレス予約、
秋葉原駅で東京駅までのきっぷを購入し、東京駅で予約したきっぷを受け受け取り、乗車券の行き先を名古屋駅に変更する。
<結果>
1.乗車券は東京駅で回収され130円は返還されません。(合計10,160円)
2.きっぷが2枚になりますが、問題なく使えます。(合計10,030円)
という訳で、予約するときは必ず特急券のみを予約しなければなりません。元々乗車券はまったく値引きされていないので、わざわざエクスプレスカードで買う事自体無意味です。(それなら普段つかってるカード使ってポイント貯めたほうがいい)
また、東京駅から乗る場合も注意が必要です。
東京駅はたくさんの改札口がありますが、JR東海の窓口又は券売機のある改札は一部だけです。
この場合も上の例のように乗車券も予約している場合、急いでるからといってSuicaなどで入場してしまうと初乗り料金が無駄になります。
というわけで、
ルール1:エクスプレス予約は必ず特急券のみにする
(ただし、上の表をみて分かるとおり、エクスプレス早割りではこの手は使えません)
もうひとつの注意点はエクスプレスポイント。
エクスプレスポイントとは、エクスプレス予約を利用すると乗車区間ごとに決まったポイントがたまり、1000ポイントたまると通常料金でグリーン席に乗れるというモノです。
ポイントをためるときは区間ごとにポイントが違うにもかかわらず、使うときはどの区間でも1000ポイントです。
こちらをご覧ください。
なんと名古屋→東京間は60ポイントしかたまりません。
新大阪→東京間は100ポイントです。
この差は一体・・・。
これは志摩さんに教えてもらったのですが、米原→東京間ならばポイントが100たまります。
しかも差額はたったの20円・・・。
たった20円しか差がないのにポイントを60%にするとはひどい話です・・・。
対策としては、東京→名古屋間を買わずに、特急券だけ東京→米原で買う事でしょうかねえ。。。
これでも名古屋までとの差額は20円だけです。
名古屋→米原のきっぷは使いませんので捨てます。(一応4枚でセットなので降りるまでは捨てないでください)
ただし、20円は損するわけなので、ポイントが全くたまる見込みの無い方は損なだけかもしれません。
ルール2:東京~名古屋間よりも東京~米原間を買ったほうがポイントがお徳かも
この写真の例では、特急券だけエクスプレスカードで購入(「海C」の表示、乗車券は一般のクレジットカード(「C制」の表示)で買ってます。
はい。嫌な客です(w
個人サイトやその他Webでみかける写真について、ちょっと思ったことを書いてみる。特にお店とかのサイトでの商品写真なんかだったりすると、「もう少しキレイに撮ればいいのになぁ・・・」とか思ってしまいます。僕もド素人なのですが、、、
デジタルカメラの仕組みとなんとなく想像で書いてみると、まず風景から放たれる光をレンズで集光、撮像素子(CCDとかCMOSとか)に結像、電荷を読み出して信号処理、必要ならばアンプのゲインやシャッタースピードを変更するようにフィードバックをかけて最適なパラメータを算出、最終的に得られたデジタル映像を信号処理により補正、ベイヤー配列を補完してJPEGなりRAWデータなりに変換。
って感じなんだと思います。
すいません、全然判らないですね。
要するにカメラというのは風景を2次元の配列で表された色の輝度値に変換する装置です。
この装置、完璧ではありません。まずレンズには収差と呼ばれる誤差があります。収差というのも色々種類があるんですが、だいたいどれも光軸(≒画像中心)でもっとも少なくなります。
ですので、集合写真なんかに写るなら真中の方で映ったほうがキレイになります。特に歪曲収差があると顔が歪むので美人に写りたかったら真中に立つ事です。これは基本的に画角が広いほどよく歪みます。広角で撮影する時は特に要注意です。(レンズの設計であまり歪まないようにもできるのですが、それをやると周辺が暗くなってしまいます。)
ちょっとレンズの話をすると長くなるのと、詳しい人に怒られそうなのでレンズの性能の話は置いておきましょう。レンズが悪いからっていったっていいカメラに買い換えるのも大変ですしね。
次はCCDやCMOSなどの撮像素子の性能になるわけですが、これは一番よく聞くのは画素数ですね。まぁ説明するまでも無いと思います。
あとは感度。ISO 400とか800とか最近のは性能が上がってるみたいです。数字が同じ感度でも性能の差があります。感度を上げるほど画像が荒くなります。。
そもそも撮像素子の仕組みなんて光を電荷に変えているだけですから、アンプをつければいくらでも感度は上げられるわけです。ただし、光から変換された知りたい電流以外の電流(ノイズ)も一緒に増幅してしまうため、画像が荒くなるのです。
ちょっと昔はCMOSは性能が悪く、USBカメラや携帯電話などで使われていましたが、最近は性能があがってCanonの1眼デジカメはCMOSだったりします。逆に最近の携帯電話にはCCDカメラが載っていたりするんですが・・。
(これは動画を撮るにはCCDの方が欠点が少ないという理由もあるんだと思います)
そして色再現性・・・・と考えると思いますが、撮像素子はそもそも色なんて捕らえられません。明るさだけです。
ではどうやってるかというと、画素ごとに赤や緑や青のフィルタがついていて、RGBそれぞれの明るさからカラー画像を作っているのです。
赤、青、緑にそれぞれ撮像素子用意する方式はいわゆる3CCDとかそういうヤツです。デジタルスチルカメラの場合は1枚のCCDやCMOSセンサにRGBが並べてあります。
という訳で、フィルタの性能の差や補完アルゴリズムの差はあるかもしれませんが、基本的に色なんて物はどうやってもそう変わらないのです。
しかし、キレイじゃない写真というのは実は色がキレイじゃない場合がほとんどだと思います。色の前に単純な明るさというものも重要だと思います。
じゃあなんなんだよって事になるわけですが、実はコレ。すごく難しいのです。
というのも人間がものすごく主観的に色を捕らえているからで。。
単純に「赤」といっても色々あります。しかも人間は周りの色との差で色を認識しますので、同じ色でも赤に見えたり白に見えたりするのです。
よくあげられる例として、夕日の中の風景というものがありますが、カメラで撮影するとなんだか微妙な写真になってしまったりします。
カメラはきちんと忠実に色を捕らえているのですが、人間がみるとなんか実際の風景と違う・・と思うのです。
いわゆるホワイトバランスってのもこの話になります。人間は赤い夕日の中であろうと、蛍光灯の下であろうと、白いものは白だと認識します。照明の影響をキャンセルするという事です。
このような補正はカメラの中でも行われますが、やはり人間の主観を使って補正したほうが良い場合もあります。
明るさについても同様な事が言えます。
もちろん照明を明るくしたり、撮影のときにシャッタースピードやゲインを最適に設定するという事が重要ですが、人間がキレイに見える明るさに補正をするという事も有用です。
・・・で、長々と何がいいたかったというと、せめて最後の補正くらいするとキレイになりますよ。と言いたかった。
もちろん、いいカメラを使ったり、照明に気を使ったり、外であれば光源の位置を考えたりとかのほうが根本的な問題なのですけどね。
ちょっと例を。
これは飛行機の機内食についてきたデザートを適当に撮った写真。
ちょっと暗いので明るくするとだいぶ美味しそうになります。
フルーツもあるので、彩度もちょっとあげてみましょう。
こんなもんでしょうか。ちょっと大げさにやってます。
空なんかだと、人間はより青い空を空っぽく感じるので青をおもいっくそ強調しちゃったり。
大気がくすんでたりするし、海だって実際そんなに青くない。
でもまぁ、理想というか空想に強引に近づけてみるとこんなん。
やりすぎですかね?
確かにそうかもしれませんが、夏の空とか表現したいときは有効です。
そして実際このパターンでよくやられるのが紅葉ですね。
雑誌などにのってる写真はこれでもかってくらい赤いですよね。
その方がキレイに見えますし、実際に紅葉を目でみたときの感覚に近いのです。
このように下から見上げて撮影すると逆行になるので、こんな風になっちゃいます。
彩度を上げて紅葉らしい写真に。
いかがでしょうか。
桜は色が薄いのでどこまでやるか難しいところなんですが・・。
まぁ、売り物だったとしたら、下のほうがいいですよね。
別にどちらも本物であって偽物という訳ではありませんから。。
まぁこんな感じです。
人物の場合は肌がキレイに見えるようにすると良く見えます。
余談ですが、写真屋さんにある現像機の高機能なのだと、中で画像処理をして人間の顔位置を検出するプログラムなんかが動いていたりします。
もちろん必ず成功するわけではないのですが、肌色を探し出してキレイに見えるような色補正値を自動的に算出してくれるらしいです。
赤目を自動的に修正する機能もあるんだとか・・。
すげえですね。
この機械がなくても、きちんとした写真店であればきちんとプロが見てプリントするときにある程度補正をしてくれるはずです。
一方Webに写真載せる場合は自分(とカメラの性能)だけが頼りです。
上くらいの補正でしたら、フォトレタッチソフトを使ってどれも30秒くらいです。
せっかくですから、ちょっとキレイに補正してから使ってみてはいかがででしょうか。
注記:現在朝の5時で朦朧とした意識で書いてますので、文章が変だったらすいません。
またも間が開いてしまいました。
なんかですねー。こんなのいちいち書くことじゃないよなとか思ってしまう最近の思考パターンが憎い。
色々考えましたが(?)、以前のような更新スタイルに戻って、また頻度的にもガンガン更新するようにします(希望)
なんだかんだで、もう10年弱やってるわけで、まだ続けたいですし。
NintendoDSブラウザの購入を試みてみました!
というか、Nintendoの直販サイトでクリックしただけなんですがね。
僕は数々のPDAを利用してきて、組み込みCPUでWebブラウジングをする事がいかに無謀であるかをよく知っているつもりです。
ですから、DSブラウザの惨状は買う前から予測できたのですが・・・。
予想通り激重です。
画面がせまくCPUも非力なのでちょっと前のPocketPCやPalmと比べても格段に使いづらい・・。
まぁ、それらの全ての欠点はハードの制約によるもので、その中では十分によく出来ているとは思います。
文字入力は携帯電話の入力になれた現代人ならば、ATOKによる予測変換の精度もよくまぁ満足のいくレベル。
手書き入力はちょっと期待しましたが、やっぱりWindowsCEとかのものと似たような感じです。
ちょっと実用は無理かな・・という感じ。
ソフトウエアキーボード打ったほうが速いです。
せまい画面をカバーするタッチペンによるスクロールですが、使い勝手自体は悪くありません。
しかし如何せん処理速度が遅く、ほとんどが待ち時間・・・。
PHSでもなくWifiでこの速度ですから、ちょっと辛いと思います。
ただ、ハードウエア含めてこの価格でWebブラウジングができると考えればそれは脅威かもしんない。
例えばどこか行くときにDSのついでにちょっと持っていくだけでいい訳ですしね。
という訳で、PocketPCとか買うほどではないけどモバイル端末が欲しいDSユーザにはお勧め。
正直なところ製品化するレベルには達していないと思いますが、値段も安いしNintendoDSがそもそもおもちゃだった事を思い出せばこんなもんかもしれないです。
■ニンテンドーDSブラウザー(DSLite用)Amazon.co.jp 売り切れ中みたいです。
■TOICAのサービス開始日とモニター募集について 【JR東海】
一部の駅で応募用紙を配布だとか。
最初にチャージしてある1500円分がもらえるようです。
という訳でチラシを回収してきました。
<まとめ>
・モニタ試験では区間に制限あり(岐阜~刈谷、金山~春日井のみ)
・モニタ募集は8月18日まで
・モニタでは定期券はなしプリペイドカードのみ
・最初にチャージしてある1500円は自由に使って良い
・モニタ期間は9月30日~10月29日
・モニタ期間終了後はカードを返却する必要あり
・その際残高がある場合は全額払い戻しとの事(・・・つまり1度も使わなければ1500円現金で返却?)
・ちゃんと返却してアンケートを提出すると記念品がもらえるらしい
気づかないかもしれない程度にサイトのデザインを変更しました。
見た目はあまり変わりませんがソースはけっこう変更。
色々新たな試みをしてみましたので、ぶっ飛んだら笑ってください(特に左のメニュー)
あと、やっとこさソフトウエアコーナーを移転完了させました。
ほとんどが学生の時の物なのですが。
自分でも忘れ気味もあるのでちょっとづつ紹介でもしてみますかね・・・。
明日から。
ちょっといじってるのでメモ。
まずはWinAmpのサイトからSDKをダウンロード。
内容はヘッダ色々とサンプルソース。
ドキュメントはほとんど無くてソース読んでください状態。
ある意味分かりやすいけど、ソースはけっこう見づらい・・。
実際作るにはDLLを作ってpluginフォルダに入れればOK。
エクスポートする関数はwinampGetGeneralPurposePlugin()のみ。
init(),start_dlg(),config(),quit() の関数を定義し、winampGeneralPurposePlugin構造体に関数へのポインタを入れてwinampGetGeneralPurposePlugin()の戻り値として返す。
後は必要に応じて各関数が呼ばれます。
WinAmp本体のメッセージを読むにはinit()が呼ばれたタイミングでSetWindowLong()でウインドウメッセージをフックします。
何かコマンドを出す場合もWinAmpのウインドウに対するメッセージで行います。
例えば現在選択中の曲のファイル名を得るには、
int pos=::SendMessage(plugin.hwndParent,WM_WA_IPC,(WPARAM)0,(LPARAM)IPC_GETLISTPOS);
char *name=(char*)::SendMessage(plugin.hwndParent,WM_WA_IPC,(WPARAM)pos,(LPARAM)IPC_GETPLAYLISTFILE);
のような感じです。
ひきつづき試行錯誤中。。。
一体なにに使うんだ、そんな怖いcgiという感じですが、ブラウザでアクセスするとWindowsを再起動するCGIを作りました。
背景を簡単に説明。
今日どうしても出先から自宅のWindows2000 Serverの設定をいじりたかったのです。
しかしターミナルサービスへのログインを家でしたままで、ネットワークログオン数がライセンス数一杯になってしまいました。
本当に急いでいたので已む無くFTPで再起動コマンドをputしてhttp経由で実行しようと思ったわけです。前もやった気が・・。
Content-Typeさえ出力すればいいわけですが、これが無いとエラーになってしまうので必須です。
WindowsXPのシャットダウンコマンドを使うのはそれが故にダメかもしれない。
が、サーバエラーになっても実行自体はされてるのでOKなのかも。
生憎Windows2000だったので簡単にプログラミングしました。
Windows2000/XPでのコンピュータの再起動方法は以下のような感じです。
1 : #include <windows.h>
2 : #include <stdio.h>
3 :
4 : int main()
5 : {
6 : HANDLE hToken;
7 : TOKEN_PRIVILEGES tp;
8 :
9 : //Content-Typeを出力
10 : printf("Content-type: text/html\n\n");
11 :
12 : //プロセスのトークンを開く
13 : if (!OpenProcessToken(GetCurrentProcess(),
14 : TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)){
15 : printf("Error on OpenProcessToken() %d\n",GetLastError());
16 : }
17 :
18 : //SE_SHUTDOWN_NAMEのLUID取得
19 : LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
20 : &tp.Privileges[0].Luid);
21 :
22 : tp.PrivilegeCount = 1;
23 : tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
24 :
25 : //シャットダウン特権を取得する
26 : if(!AdjustTokenPrivileges(hToken, FALSE, &tp, 0,
27 : (PTOKEN_PRIVILEGES)NULL, 0)){
28 : printf("Error on AdjustTokenPrivileges() %d\n",GetLastError());
29 : }
30 :
31 : //シャットダウン/リブート
32 : if(!ExitWindowsEx(EWX_REBOOT|EWX_SHUTDOWN|EWX_FORCE,NULL)){
33 : printf("Error on ExitWindowsEx() %d\n",GetLastError());
34 : }
35 :
36 : printf("Reboot.\n");
37 : return 0;
38 : }
スターアライアンス(Star Alliance)とは、航空会社(16社)が加盟するマイレージサービスです。
日本の航空会社では全日空(ANA)が加盟しています。
どこかの航空会社のマイレージ会員であればスターアライアンスメン バーのどの航空会社に乗ってもマイルが貯まります。
で、このスターアライアンスのサービス、乗客の利用状況によってランクがあります。
具体的には「スターアライアンス・ゴールドメンバー」「スターアライアンス・シルバーメンバー」というのがあり、各種特典を受ける事ができます。ここに書いてあるの以外にも色々。
世の中にはこれを取るためにわざわざ無駄に飛行機に乗りまくってメンバーを目指す人々がいます。
修行僧と呼ぶそうな。。
前置きが長くなりましたが、僕もやってみようかーと。修行僧。
さて、どうやったらゴールドメンバーになれるのか。
全日空の場合はANAプラチナ会員がスターアライアンスゴールドメンバーに該当します。
ANAプラチナ会員になるための条件は、「1年間で50,000プラチナポイントを貯める又は1年間で50回以上登場かつ15,000プラチナポイント貯める」です。
プラチナポイントはマイルとほぼ同じですが、マイル2倍キャンペーンとか、買い物で貯まるマイルを除いた純粋な移動マイルのみがプラチナポイントになります。
そしてANAプラチナ会員の効力は次の1年間のみ。
しかし、ANAプラチナ会員にはスーパープライヤーズクラブに入会する権利が与えられます。
これに入会すれば、ずっとスターアライアンスゴールドメンバーでいられます。
という訳で、スターアライアンスゴールドメンバーに継続的になるためにはANAプラチナ会員を目指せば良い事にります。
つまり、「年間50,000プラチナポイント、又は50回搭乗かつ15,000プラチナポイント」。
ちなみに年間というのは元旦~年末なので、今年これから始めるのは無謀です。
というわけで来年の1月から始めます。
航空券の予約は2ヶ月前からなので、10月始めには予約を始める事に。
それまでは机上計算で万端の準備をしましょう。
・・・・。
ここ1週間かけて色々計算しましたので速報値という事で結果を載せてみます。
■データで見る全日空
(*季節運行の路線がありますが、ひとまず例として2006年9月3日(日)の運好情報に基づいて計算しました)
まずは、就航空港数。
予約画面の選択肢から、50空港のようです。
存在しうる全路線の組み合わせは50×50、出発空港と到着空港は必ず違うはずなのでそれを除いて-50。
よって50×50-50=2450路線。
もちろん就航路線は限られているので、2450全パターンで予約検索してみましたwww(←キチガイ)
結果、時間の違いも含めて652路線が就航してる事が判明しました。
次に、これら652路線を自由に組み合わせて、1日で最大何回飛行機に乗る事ができるのかを求める事にしました。
まず、乗り換え時間を20分として652路線の乗り換え組み合わせを総当りで計算しました。(もちろんプログラム組んで)
(ここでは、次の便があるのにその日の日程を途中で終了するというパターンは除きました)
その結果、予想外に組み合わせが多くて、2,136,510パターンも存在する事が判明wwwww
(ちなみにPerlで書いたスクリプトで計算に2時間かかったw)
そして答えの1日で乗れる飛行機の最大回数は、関西国際空港を出発して関西国際空港に戻るルートで、12回でした。案外多いww
以下がそのルート。
実際には20分での乗り換え時間では無理かと思いますが・・・。
<9月3日に全日空を乗り継ぐ便数最大ルート>
-----------
01.関空(07:00)->羽田(08:05)
02.羽田(08:30)->福岡(10:15)
03.福岡(10:50)->五島福江(11:30)
04.五島福江(12:00)->福岡(12:40)
05.福岡(13:15)->対馬(13:55)
06.対馬(14:20)->福岡(14:55)
07.福岡(15:25)->五島福江(16:05)
08.五島福江(16:30)->福岡(17:10)
09.福岡(17:50)->対馬(18:25)
10.対馬(19:00)->福岡(19:30)
11.福岡(19:50)->羽田(21:25)
12.羽田(21:45)->関空(23:00)
-----------
普通料金だと合計\221,800。
区間マイルは2,464マイル。
さすがにコレは乗れない。
今後はもう少し実用的なルート検索に挑戦してみますが、まぁ感覚は掴めたかな。。
どうやら、福岡空港がキーみたいです。
対馬便などの比較的距離の短い路線がたくさんあるからだと思います。
つづきはまた。。。
しかしこれ、計算が以外とパターンが多くて難しい。
「できるだけ多くの空港を利用する」とか「全空港を利用する」とかも計算してみたいのですが、これってまさしく巡回セールスマン問題では。
情報学部とかの学生にやらせるにはちょうど良いお題ww
だれか計算してください。
ちなみに一番苦労したのは時刻表データをANAのサイトから取得する事でしたが。
§ kazatachi [アレは本気だったんですね。。。7700円を来年もやってくれれば、上の想定12路線をサーチャージ込みで10万くらいでい..]
§ Suika [バースデー割引はもう無くなったんじゃ?]
§ ひかりん [えっ?バースデー割引って無くなったんですか? うーん、知らなかったなぁ。]
§ Suika [JALはまだあると思いますが、ANAは旅割に変わったみたいです。 www.ana.co.jp/dom/fare/gu..]
§ kazatachi [し、知らなかったよ。ありがとう。。。だんだん使い勝手が悪くなってきていることは感じていたんだけど。]
§ Suika [バースデー割引好きだったのに。。]
8月11日(金曜日)の夜にオフ会を開催したいとおもいます。
ぜひぜひご参加くださいませ。
話題は・・・よくわかりませんがマターリおしゃべりです。
詳しくはページ上のリンクの先をご覧くださいませ。
みなさんにお会いできるのを楽しみにしております。
今回は平日金曜とかなんで、はやめに人数決めたいでございます。。
有人で月とはまた夢のある。
いや、久々にいいニュースみた。
まぁ、色々政治的都合とかもあって大胆めなロードマップなんだろうけど。
まずはお金をガシガシつかって失敗しまくらないとどうしようもないですし。
先日全日空(ANA)のサイトから予約検索のプログラムを作ったときの話題。
全日空の運行便検索サイトはSSLなのですよね。
日本航空の予約サイトは暗号化なしなので楽なのですが。
そういえばIPNuts(ソフトウエアルータ)導入したときもEtherNetのMTUサイズの問題でANAのサイトだけ表示できない不具合が起きたのを思い出します。関係ないけど。
HTTPのプロトコルは単純なのでSSLでなければ自分で実装しても良いのですが、SSLとなるとちょっと面倒なのでWinInetを利用してみました。
WinInetの基本的な使い方な簡単ですが、どうも高級すぎて使いづらい。。
サンプルが見つかりそうでなかなか無かった(たぶんよく探せばあると思いますが)ので作ってみました。忘れないようにメモっときます。
といっても普通にHTTPファイルを取得するのとほとんど同じで要点だけ書くと、
・ポート番号を80(INTERNET_DEFAULT_HTTP_PORT)ではなく443(INTERNET_DEFAULT_HTTPS_PORT)にする。
・InternetConnectで、INTERNET_SERVICE_HTTPを指定する。
・HttpOpenRequestで、INTERNET_FLAG_SECUREを指定する。
・【重要】フォームデータを送信したいので、HttpAddRequestHeadersを使って「Content-Type: application/x-www-form-urlencoded」を追加。
・HttpSendRequestExでリクエストを開き、InternetWriteFileでx-www-form-urlencodedしたフォームデータを書き込み、HttpSendRequestEx(HttpEndRequest)でリクエストを送信。
・InternetReadFileで受信したデータを取得
きちんと証明書が有効なサイトならこれでOKです。
デバッグ用に自己署名SSLなどを使うとエラーになります。
その場合はInternetQueryOptionでINTERNET_OPTION_SECURITY_FLAGSを読み取りセキュリティフラグを変更します。
具体的には「SECURITY_FLAG_IGNORE_UNKNOWN_CA」、「SECURITY_FLAG_IGNORE_CERT_CN_INVALID」、「SECURITY_FLAG_IGNORE_CERT_DATE_INVALID」を付加してInternetSetOptionします。
また、HTTPからHTTPSへリダイレクトされるのを許可するには「SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS」フラグを付けます。
サンプルコード:
wwwget_cpp(HTML)
wwwget.cpp(CPP)
§ Suika [ぷらっとこだまは安くていいですよね~。 しかし色々条件が厳しいので面倒なので省略しちゃいました。]
§ つかぽん [なるなる。]
§ Suika [JR東海ツアーズの窓口は空いてるので、普通のきっぷ買うにもお勧めですけどねw]