2008-02-23
■[mobile][雑談]ssbとNet_UserAgent_Mobileではまった件続き。
この件のつづき。
Softbankでもやっぱりはまった。
原因はやっぱりssbのheaderなんだけど、これはさっきのより厄介。
根本的な原因は、ke-tai.orgからスクレイピングしてくるヘッダー情報をほんとにそのまま使ってる所。
そのせいで、Softbank系の携帯のシリアルナンバー部分[/Serial]と書いてある部分を、ほんとにそのままで使ってしまっている。
これもやはり、Net_UserAgent_Mobileが取得しようとして失敗しているためにErrorオブジェクトを返してしまい、ダメぽになってる。
ssbの中を見ても特に置き換える機構は無いみたいだから、ひとまず
$ sed -i.bak -e 's/\[\s*\/Serial\s*\]/\/\/SN000000000000000/g' config/ke-tai_list.csv public_html/javascripts/ktai_db.js
とかしますた。
いかんせん、SoftBankのSerialNumberの仕様は11桁だったり15桁だったりするので、Net_UserAgent_Mobileの側でそこまで厳密に取ってなかったのでたすかった。
でもここは、ssbの機能として持ってほしいところなので、codereposに投げようかな。
いっそこれを機にるびいかじちょう。
■[mobile][雑談]ssbとNet_UserAgent_Mobile組み合わせたら変なところではまった。
まぁ最終的には、きちんと設定をしなかった自分のミスなんですが。
きっかけは、ssbつかってNet_UserAgent_MobileのisDoCoMoを実行したらErrorオブジェクトだったことから。
あれー?とか思って他の機種を試してみてたら、どうもFoma機種でアウトでmova機種ではセーフ。
こんな感じだったので、最初はNet_UserAgent_Mobileのバージョンアップによるバグかと思った。
んで、Net_UserAgent_Mobileの中をうだうだと追いかけていったところ、どうも_parseFOMAの中で引っかかってたんで、じーっと見てみるけどおかしなところなす。
で、じゃあ実際どこではまってんのって探してみたら、どうもicc(FOMAカード番号)の判定のところでアウトになってた。
そこまできてやっと気づいたんだけど、ssbってデフォルトで設定されているFOMAカード番号が[icc000000000000000]ってなってて、なんと15桁。
知ってる人は知っていると思うけど、FOMAカード番号は、icc + 20桁の数字っていうのが仕様で、Net_UserAgent_Mobileは厳密にこの仕様に従ってただけだったわけだ。
なので、ここにきてやっとssbの設定なのか―あうあうと気付いて、ssbのconfig/config.yamlのiccの値を20桁に変更。
したんだけど。。。状況カワンネ( ゚д゚)ポカーン
これはキャッシュかなーと思ってかるく探してみたんだけど、どうもそうではなかったので、結局ssbの中をごそごそあさる。
で、やっとこさ原因つきとめたのが、ssbがこの手のデータをCookieに入れてるってこと。
ここまでわかってやっと、Cookieを削除したらついに成功。DoCoMoの機種判別通りました。
あーうー。しかし、これは仕様に詳しくない人からしたら罠だなぁ。
なにしろ、0がいっぱい並んでるから桁なんてパッと見でわんないし、お遊びレベルでやってると普通は変更しないよね。
しかもこれって、ケータイ設定の画面を見ないとわからなくて、上部の機種情報欄には表示がないから、期せずして余計罠になってしまっている。
あとから気づいても、yamlで書いてる設定ファイルの内容をCookieで保存してるとはあんまり思わないんじゃないかね。
まぁ、ここは気のきく人ならとにかくCookieも消してみるところなので、俺の機転の利かなさではあるんだけど。
やー、しかし変なことで時間をつぶしてしまった。
でもおかげで、何かいろいろくわしくなったかなwww
※ちなみに、誤解のないように言っておくと、別にssbをDISる記事ではないので。
単に罠になりがちなので気を付けてね、というだけなので悪しからず。
