2009年12月28日月曜日

アルゴリズム

1,000件オーバーのデータをGoogleChartAPI(GC)に喰わせてグラフを吐き出す、っていう案件が発生。
最初は鼻歌交じりにやってたんだけど。
GCに2000バイト以上のリクエスト投げたらエラーになる!
そりゃそうだわな。長すぎるURLはいつぞやのapache乗っ取り攻撃の時に禁止する方向になったもんね。
で、どうするか真剣に考えた。
最初に思い浮かんだのが、データの間引き。
でも、うまくいかない。
間引いたデータにあわせて軸のラベルを作るのが一苦労だし、そもそも間引きしたら元のデータ曲線が正確に再現できない!

で、昼メシ喰いながら悩んだ結果、データを分割してGCに喰わせて、後で合成してやることにした。
このやり方だと、細かい座標設定とかをGCに依存しちゃうので、何らかの仕様変更が発生した場合にプログラム内の設定値を変更してやる必要がある。
ま、そうそう変わらないという事でいいかな。

とりあえず、視点を変える、という事の重要さを痛感した昼休みでした。

2009年12月15日火曜日

Android SDK

さて。
iPhoneの開発もやろうやろうと思いつつ出来てない現状ですが、Androidには手をつけようと思います。
なんというか、もうちょっと稼がないと税金も払えない状況なのでね^^;

つわけで、インストールからしてこけてます。

Windows版で2.0をインストールしたんだが、eclipseからNew->project..を選んでセットアップしようとしても、Finishボタンがアクティブにならない。
エラーメッセージは、「platformを選んでください」だかなんだかそんな感じ。
で、Platformのチェックボックスは非アクティブ。そりゃダメだろ。
てことで見てみたら、sdk/platforms/ の下がカラッポ。
SDK Setup.exe を起動しても、URLからのFetchに失敗する。
八方ふさがりでググってみたら、SDK Setup.exeのSettingsでhttpsを使わない設定にしろ、とある。
その通りにしてみたら、すんなり通りました。

なんじゃこりゃ。
ふざけんな。

まぁいいや。初期パッケージではインストールされなかったアレコレが、これで全部インストールできるはず。

wktkして待ちましょうか。

2009年12月4日金曜日

携帯入力フォーマット

auとDoCoMoのはなし。

HTMLモードで入力文字の制限をつけるには
istyle=1 (全角かな)
istyle=2 (半角カナ)
istyle=3 (英字/半角文字)
istyle=4 (数字/半角文字)

でやるけど、xhtmlで同じ指定をするには、style指定が必要で、
DoCoMoの場合、
style="-wap-input-format:"*<ja:h>"" (全角かな)
style="-wap-input-format:"*<ja:hk>"" (半角カナ)
style="-wap-input-format:"*<ja:en>"" (英字/半角文字)
style="-wap-input-format:"*<ja:n>"" (数字/半角文字)

auの場合、
style="-wap-input-format:*M;"(全角かな)
style="-wap-input-format:*m;"(英字/半角文字)
style="-wap-input-format:*N;"(数字/半角文字)

※ クオーテーションとかダイナリ・ショウナリの記号はちゃんとエンティティ表記でね。

となる。
が、同じスタイル要素に違う値を割り当ててるのが問題で、ひとつのxhtmlファイルで両方に対応しようとすると、順番がキーになってくる。
試した限りでは、au指定→DoCoMo指定でないと、auの方でエラーになってうまく認識されない模様。

つまり、数字を入力させたいときは

istyle="4" format="*N" mode="numeric" style="-wap-input-format:*N;-wap-input-format:"*<ja:n>""

とする。

かなり冗長であるが、これで全パターンに対応できるはず。
ただ、順番云々っていうのは、確実ではないだろうし、DoCoMoの機種の中にも、先に無効な指定があったらstyleのパースを中断するようなものがあるかもしれない。そうなると、これでもダメで、結局、キャリアごとにCGI側でマジック指定を埋めこまないとダメ、っていう事になる。
とりあえず、急ぎの仕事の場合は、これで急場をしのいで、受け取り側でしっかり値のチェックを行うことで、重大なエラーは発生しないように対処することに。

いろいろ難しいね。