‘携帯サイト開発’ カテゴリーのアーカイブ

WordPress: xreaでwp-super-cacheとktai-styleがうまくいかない

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

昨日から、WordPressの見た目やパフォーマンスとかについていじってみようかと思って色々やってみてる。今回はwp-super-cacheを入れてみた。今のサーバは十分レスポンスが速いので、別に必要ないかもしれないが。でも速くなった。

その後、ktai-style入れてみた。キャッシュがない状態だとうまく表示できた。

しかし、wp-super-cacheとktai-styleの組み合わせにすると、xreaでは文字化けした。ちなみにXAMPP環境では文字化けせず。safeモードとかが関係してるんだろうか?ktai-styleの説明ページに書かれている設定を行ってみたのだが、うまくいかず。ハーフオンだとこの設定ではダメなのかなぁ?

なんかもう3時になってるので、結局wp-super-cacheを諦めて停止させた。レスポンスは現在でも結構速いから、ケータイで閲覧できるほうを優先した。また時間があったらこの問題に取り組みたい。


CakePHP:AU携帯とSecurityコンポーネント

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

現在、とあるアイドルグループの携帯用アンケートサイトを5営業日以内で作れという至上命令が下っており、そのために久々にCakePHP復活!Ktai Libraryを使ってどのケータイでも対応しちゃうぜ!ちなみにKtai Libraryを使うのは初。本は買ってた。

データベース設計は同僚がやってくれたので(彼はDBのスペシャリスト)、俺はBakeでソースを生成し、デザイナが作ったデザインをViewに組み込み、Modelの設定を行い、Captchaコンポーネントを使った画像認証を組み込み、コントローラーに処理をゴリゴリと書き(Fat Modelになるような仕様ではないため。まぁ汎用的なメソッドはModelに作ったけど)、FireMobileSimulatorで確認しながら開発。

一通り実装が完了したので、実機(俺のAU携帯と後輩のSoftbank携帯)とDoCoMoのシミュレータで試すとやっぱり動かなかったりした。まぁそういうことを試すためだからいいんだけど。ソースを修正しては試す。これによりDoCoMoはOK。SoftbankもOK。しかし、AUだけPOSTしたら404と言われる。なぜだ!

Ktai Libraryを使ってたら、redirectのところでURLの組み立てで変になった箇所があったので(Controller::redirect()の引数に配列形式で値を渡すと壊れる。引数をis_arrayでチェックすると直った)、また似たようなことが起こってるのかなぁ~とApacheのアクセスログを見てみると、ちゃんとPOST先のURLにアクセスしている。しかし、Content-lengthが0。0とはおかしいじゃないか!

まさかと思ってCSRF対策用に使っていたSecurityコンポーネントのBlackHoleCallback関数を設定してログを出すようにしてみたら、ビンゴ。BlackHoleに吸い込まれているじゃないか。しかも、俺はここのPOSTはデータベース更新に関係していないのでCSRF対策してない($this->Security->requireAuthに追加していない)。にもかかわらず、トークンが発行されてるのにも納得がいかない。

何がなんだかわけがわからないので、CakePHPユーザ会で検索してみたら、有力な情報を得た。

携帯のblackhole 対策

Securityコンポーネントのトークンはfieldsetタグ中に囲まれているのだが、このfieldsetタグにはdisplay:none;が設定されている。AU携帯はPOSTするときにdisplay:none;が設定されている領域の値をPOSTしないらしい。サーバ上にはトークンが設定されているにも関わらずトークンがPOSTされないから、トークン不一致でブラックホール行きという仕組みだったのか。

今思いついてる解決策は、

  • Formヘルパー自体を修正する(ライブラリ自体の修正はやりたくない)
  • $form->create(), $form->end()で取得したソースからfieldsetタグを正規表現で取り除く処理を実装する(若干難しそうだが一番意味がありそう)
  • Securityコンポーネントを使わずに独自のCSRF対策を施す(一番現実的か?)

である。まぁ時間があれば2番目で行きたいが、3番目かな。原因が突き詰められたので、Securityコンポーネントを外してAUで試したところ、普通に動いてくれた。あ~、よかったぁ~。ひとまず安堵。

まぁセキュリティ系の課題はあるものの、処理自体は2人日で実装完了。やはりCakePHPの開発効率はかなりいいなぁと思う。簡単かつ早いかつ安心。ただ、時々超ハマる…。

【解決しました!】
次の投稿でこの問題は解決したのでリンクはっておきます。
CakePHP:【解決】AU携帯でSecurityComponent


携帯サイトのキャッシュを防ぐ方法

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

土日は五明に走りにいって、記録を出した後に、早速携帯で自転車でヒルクライムしようぜ!に記録を書こうとしたら、キャッシュの関係か、記録がなかなかできなかった。ドコモの携帯シュミレータでやってるときには全然出てこなかった問題なのだが、帰ってから検索してみたら、どうもAU固有の問題らしい。
そこで、以下のメタタグをhtmlのheaderタグ中に追加。

<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />

まあ早い話が、キャッシュを許可しない設定です。
これで、使いやすくなったなぁ〜。


携帯版 自転車でヒルクライムしようぜ!の公開!

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

qr_code.jpg

自転車でヒルクライムしようぜ!の携帯版が、やっと人様に見せられるレベルに到達したと思うので、公開しました。上のQRコードを携帯で読み込んでいただくと、簡単にアクセスできます。

もしくは、携帯から以下のURLにアクセスしてください。

http://hillclimb.319ring.net/m/

※PCでアクセスしても、PC版サイトにリダイレクトされるのであしからず(^^;)

これで、自転車で目的のコースに出かけながら、コースの位置を確認したいときなど、手軽に確認できます。また、走り終わったらすぐにまた記録を投稿することができます。自分が重宝するように作ったので、たぶん使いやすいと思うんだけど。

まだ愛媛のユーザがほとんどなので、ぜひ他県のユーザ、コースが増えていったらなぁと思う今日このごろ。


staticmapなんてあったのか!?

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

GoogleMapを動的でなく、静的な画像として取得する方法があることを初めて知った!これは現在、自転車でヒルクライムしようぜ!を携帯対応してるから、どうやったらMAP表示できるかな〜と思って検索してたらヒット!すげー!静止画なのに、なぜか動的なGoogleMapsよりも感動した。

http://ke-tai.org/blog/2008/02/26/gmapstatic/

静止画なので、imgタグで直接指定して、マップを取得できる。だからケータイで使える。

これって、取得した画像をローカルに保存したらやっぱりマズイんだろうな〜。でも逐一Googleにアクセスさせにいくのって無駄じゃない?とか思うんだけどな。静止画だし。

とりあえず、画像の取得はできたけど、コースの線を引くと、クエリで渡す値が長くなりすぎてバツ画像が表示されてしまった。。。詳細にコースを書いていると、逆にダメというオチか!ただでさえ、GoogleAPI Keyが長いのであんまり設定できんのに。

ドコモのURLの長さがどこまで処理できるか?わからんかったんだけど、1024〜2048byteくらいっぽい。雑に点を打てば、いけそうだけど、雑だとそれはそれでPCで困る。うーむ。線を引かずにスタートとゴールの点だけで表示させるかな?それならURL長くならなくて済む。

携帯対応、機能拡張欲がどんどん出てきて、ヤバイ。早いところ終わらせよう。


Get Adobe Flash playerPlugin by wpburn.com wordpress themes