iphone(ipod touch)でセッションが保持できないの件は
毎回(AJAX通信含む)のリクエストでセッションIDを生成しなおしているのが原因ぽい
ページリクエスト時のとAJAX時のサーバーのリクエストヘッダを見て判明した。
iphoneのsafariだとリクエストヘッダにCookie: ......がない
のでサーバー側で新たに生成してしまっている
ってことはsenchaの非同期通信機構にバグがあるのか?それともsafariの仕様なのか?
いずれにせよ解決にはまだ時間がかかりそうだ
WEB開発のあれこれ
PHP,JAVA,Javascript,objective-c,Ajax,Flex,Air,Linuxなどなど
最近雑記帳になりつつある・・・
2011.10.23より忍者ブログより移転
2011年3月21日月曜日
2011年3月9日水曜日
[PHP] cakephp+sencha-touchでiphoneWebアプリ開発<序章その2>
セッションの件はわからないけれど、携帯用にSJIS出力する際のメモ
基本文字コードはUTF-8で統一ですが、一部ガラケーはUTF-8に対応していないので、Shift-JISに変換する必要があります。
app_controller.php(自分の場合はすべてのcontrollerの基底クラスとして定義) 内に以下のメソッドを定義します。
※beforeRender内ではレイアウトパスの変更と、文字コードヘッダの指定を(デバッグモードを切っておかないと面倒なようです)
この場合だとviews/layout/s/内にスマホのviews/layout/m/内にガラケー用のレイアウトファイルを配置します
※afterFilter内では出力するhtmlの文字コードを変換します。
後は送信データのコンバートをしないといけない(追記予定)
基本文字コードはUTF-8で統一ですが、一部ガラケーはUTF-8に対応していないので、Shift-JISに変換する必要があります。
app_controller.php(自分の場合はすべてのcontrollerの基底クラスとして定義) 内に以下のメソッドを定義します。
function beforeRender() {
parent::beforeRender();
if ($this->RequestHandler->isMobile()) {
if ($this->__isSmartPhone()) {
$this->viewPath = 's';
$this->layoutPath = 's';
} else {
$this->viewPath = 'm';
$this->layoutPath = 'm';
Configure::write('debug', 0);
$this->RequestHandler->respondAs('html', array('charset' => 'Shift_JIS'));
}
}
}
※beforeRender内ではレイアウトパスの変更と、文字コードヘッダの指定を(デバッグモードを切っておかないと面倒なようです)
この場合だとviews/layout/s/内にスマホのviews/layout/m/内にガラケー用のレイアウトファイルを配置します
function afterFilter()
{
parent::afterFilter();
if ($this->RequestHandler->isMobile() && !$this->__isSmartPhone()) {
//header("Content-type: text/html; charset=Shift_JIS");
//Configure::write('App.encoding', 'Shift_JIS');
$this->output = mb_convert_kana($this->output, 'rak');
$this->output = mb_convert_encoding($this->output, 'SJIS-win', 'UTF-8');
//$this->RequestHandler->respondAs('xhtml', array('charset' => 'Shift_JIS'));
}
}
※afterFilter内では出力するhtmlの文字コードを変換します。
後は送信データのコンバートをしないといけない(追記予定)
2011年3月8日火曜日
[PHP] cakephp+sencha-touchでiphoneWebアプリ開発<序章>
タイトルのとおり
iphone(ipod touch)のセッション引継ぎがなかなかうまくいかん
ブラウザから認証情報を非同期でpost⇒認証おk⇒セッションに値格納⇒ブラウザにレスポンス返す⇒レスポンスおkならリダイレクト
ってな流れで処理しているのだけど、なぜかiphone版に作った画面では引き継がれない
関係ないかもしれないけど、この問題がクリアになったら是非試したい情報があったのでメモ
認証情報保持時にクッキーの変わりにローカルストレージを使う
http://suin.asia/2009/09/13/iphone_local_strage_for_email_password_remainder
週末までには解決したいなぁ
iphone(ipod touch)のセッション引継ぎがなかなかうまくいかん
ブラウザから認証情報を非同期でpost⇒認証おk⇒セッションに値格納⇒ブラウザにレスポンス返す⇒レスポンスおkならリダイレクト
ってな流れで処理しているのだけど、なぜかiphone版に作った画面では引き継がれない
関係ないかもしれないけど、この問題がクリアになったら是非試したい情報があったのでメモ
認証情報保持時にクッキーの変わりにローカルストレージを使う
http://suin.asia/2009/09/13/iphone_local_strage_for_email_password_remainder
週末までには解決したいなぁ
2011年2月18日金曜日
[サーバー構築] fedora13⇒14後にphpがエラーを出す現象&対策
fedoraを13⇒14にアップデート後、こんなエラーが出るようになった
※ちなみにPHPはソースからのコンパイルでインストール
原因はよくわからないが、gdbmの一部パッケージがアップデートと同時に紛失してしまった様子
を実行して解決!
※ちなみにPHPはソースからのコンパイルでインストール
php: error while loading shared libraries: libgdbm.so.2: cannot open shared object file: No such file or directory
原因はよくわからないが、gdbmの一部パッケージがアップデートと同時に紛失してしまった様子
# yum install compat-gdbm
を実行して解決!
2010年11月17日水曜日
[MySQL] merge table
調べる機会があったのでメモ
読んで字の如く、テーブルを結合します。
肥大化したログテーブルとか、変更・削除はしないけど、残しておかないといけない売上情報を格納しているテーブルとかに使えます
マージ元(現在レコード数が多数で拡張したいテーブル)をtbl
マージ先(新たに追加するテーブル)をtbl_b
とします
・まず、tblをtbl_aというテーブルにリネームします。
・次にtbl_aと同じ構造のテーブルtbl_bを作成します
・元のテーブルtblを作成。ここで注意すべきはpkeyは定義しない
これでtblに対してinsertを行うとtbl_bにデータが格納されます。
見かけ上はtblに入るのでtblにSELECTを実行することでtbl_a,tbl_b両方のデータが参照できます。
tblをdrop⇒tbl_c追加⇒再度tblをcreate
で後から追加も可能です。
[自分へのtodo]
マージ元のテーブルを圧縮できたり、圧縮すると容量が何分の1かになるとか
後は圧縮すると読み出ししかできないとか・・
データの種類によるんだろうけど、レコードの物理削除・論理削除ってのはいつも悩みますねorz
運用の方針で決まるんでしょうが、開発側としては物理削除は避けたい傾向があるような気がします
merge table
読んで字の如く、テーブルを結合します。
肥大化したログテーブルとか、変更・削除はしないけど、残しておかないといけない売上情報を格納しているテーブルとかに使えます
使い方
マージ元(現在レコード数が多数で拡張したいテーブル)をtbl
マージ先(新たに追加するテーブル)をtbl_b
とします
・まず、tblをtbl_aというテーブルにリネームします。
rename table tbl to tbl_a;
・次にtbl_aと同じ構造のテーブルtbl_bを作成します
create table tbl_b (show create table tbl_a)
※エラーが出る場合あshow create分までを実行して確認⇒実行で
・元のテーブルtblを作成。ここで注意すべきはpkeyは定義しない
CREATE TABLE tbl (.....) TYPE=MERGE UNION=(tbl_a, tbl_b) INSERT_METHOD=LAST;
これでtblに対してinsertを行うとtbl_bにデータが格納されます。
見かけ上はtblに入るのでtblにSELECTを実行することでtbl_a,tbl_b両方のデータが参照できます。
tblをdrop⇒tbl_c追加⇒再度tblをcreate
で後から追加も可能です。
[自分へのtodo]
マージ元のテーブルを圧縮できたり、圧縮すると容量が何分の1かになるとか
後は圧縮すると読み出ししかできないとか・・
データの種類によるんだろうけど、レコードの物理削除・論理削除ってのはいつも悩みますねorz
運用の方針で決まるんでしょうが、開発側としては物理削除は避けたい傾向があるような気がします
2010年11月13日土曜日
[サーバー構築] iptables -F の罠
やっちまいました。。。。orz
元の設定が良く分からん鯖で
iptables -F
.....INPUTポリシー全拒否だって
やるときはatとかsleepで現状回帰出来るようにしないとダメですね
皆様もお気をつけください
元の設定が良く分からん鯖で
iptables -F
.....INPUTポリシー全拒否だって
やるときはatとかsleepで現状回帰出来るようにしないとダメですね
皆様もお気をつけください
2010年10月3日日曜日
[ipod touch] 4th generation ゲットしました
以前から示唆していたように、ipod touchの4世代をゲットしました。
購入したのは行きつけの某ジョー○ンで9/18に購入。
他所での予約の場合はもう少し遅れたりしているので、良かったのかな
色んなサイトやブログでレビューされているのであえてしませんが
retinaディスプレイは綺麗で良いですね
もう3世代以前には戻れません^^;
ですが、カメラはオマケ程度な品質です・・・(コストを考えたらわからないでもないですが、せめて100万画素はほしかった)
というかtouchのCMって最近トンと見ませんね・・・
あんまり宣伝しなくても売れるってことなのかな?(笑)
後今購入しても保護ケースは全然選べません
多分ジョブスの販売戦略なんでしょうが、信頼ある周辺機器メーカーにしかスペックを教えていなかったんでしょうね。
購入したのは行きつけの某ジョー○ンで9/18に購入。
他所での予約の場合はもう少し遅れたりしているので、良かったのかな
色んなサイトやブログでレビューされているのであえてしませんが
retinaディスプレイは綺麗で良いですね
もう3世代以前には戻れません^^;
ですが、カメラはオマケ程度な品質です・・・(コストを考えたらわからないでもないですが、せめて100万画素はほしかった)
というかtouchのCMって最近トンと見ませんね・・・
あんまり宣伝しなくても売れるってことなのかな?(笑)
後今購入しても保護ケースは全然選べません
多分ジョブスの販売戦略なんでしょうが、信頼ある周辺機器メーカーにしかスペックを教えていなかったんでしょうね。
登録:
投稿 (Atom)