携帯はやっぱり面倒そうだなー
フレームワークの携帯対応の実験として、携帯用のレイアウトファイルを作り、Viewに携帯用変換フィルターをかましたところ、なぜか正しく文字コードが変換されなくてしばらくはまった。
結局、コンテンツ出力前に携帯用変換フィルターをかましてしまうと、レイアウト出力時にもう一度フィルターが走ってしまう(コンテンツ部分に2回文字コード変換がかかる)というのが原因だった。コンテンツ出力前ではなく、携帯レイアウトファイルのコードビハインドでフィルターを適用したところ、正常に動作した。
携帯対応はあまり考えたくなかったんで、何となくこうやったら動くかなー程度しか考えないできたんだけど、やっぱり実際にやり始めると面倒なことが多そうだなー。
いろいろ追加しました
各所にRSSを仕込み、ランキングとか新着系の情報も増やし、携帯用のページも追加しました(ページ送りは4、6。トップに戻るは0)。あと表側には関係ないけど、deployスクリプトを作ってちゃんと自動でdeployされるようにしました。
セッションの怪しい挙動が直った気がする
カスタムセッションハンドラを使うといまいち再現性がない怪しい挙動をしていた件だけど、もしかしたらこれで直ったのかな? 例外ログに残ってないからエラーは出ていないのかと思ったら、httpdのエラーログの方にエラーが残っていた*1。
Failed to initialize storage module: user (path: )
よく分からないけど、セッションハンドラの登録の仕方がおかしいのか? で、PEARのHTTP_Sessionのセッションコンテナ周りを見ていたら、
session_module_name('user');
というコードがあった。session_set_save_handler()するだけじゃなくて、session_module_name()を使って明示的にカスタムハンドラを使っていることを指定しなければならないんだっけ?
上記コードを追加+セッションID再発行周りの処理をちょっと書き換えてみたところ、俺の手元ではIEコンポーネントブラウザでもおかしな挙動を起こすことがなくなった模様。後者の方も結構重要な変更(セッションID付け替え後のセッション再スタートのタイミングを変えた)なんで、どっちの修正で直ったのか不明*2。でもエラーメッセージ自体は前者の関係っぽいよなー。
