Hatena::ブログ(Diary)

ゆどうふろぐ RSSフィード

2008-02-23

[][]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に投げようかな。

rubyはまだ書けないので、他力本願だけど。

いっそこれを機にるびいかじちょう。

[][]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.yamliccの値を20桁に変更。

したんだけど。。。状況カワンネ( ゚д゚)ポカーン

これはキャッシュかなーと思ってかるく探してみたんだけど、どうもそうではなかったので、結局ssbの中をごそごそあさる。

で、やっとこさ原因つきとめたのが、ssbがこの手のデータをCookieに入れてるってこと。

ここまでわかってやっと、Cookieを削除したらついに成功。DoCoMoの機種判別通りました。


あーうー。しかし、これは仕様に詳しくない人からしたら罠だなぁ。

なにしろ、0がいっぱい並んでるから桁なんてパッと見でわんないし、お遊びレベルでやってると普通は変更しないよね。

しかもこれって、ケータイ設定の画面を見ないとわからなくて、上部の機種情報欄には表示がないから、期せずして余計罠になってしまっている。


あとから気づいても、yamlで書いてる設定ファイルの内容をCookieで保存してるとはあんまり思わないんじゃないかね。

まぁ、ここは気のきく人ならとにかくCookieも消してみるところなので、俺の機転の利かなさではあるんだけど。


やー、しかし変なことで時間をつぶしてしまった。

でもおかげで、何かいろいろくわしくなったかなwww

※ちなみに、誤解のないように言っておくと、別にssbをDISる記事ではないので。

単に罠になりがちなので気を付けてね、というだけなので悪しからず。


SoftBankでもはまったのでつづきはこちら