マッシュアップ祭りか。

最近のギークたちはとにかくマッシュアップが好きなようだが、実際に使おうかなと思ったサービスはほとんど無い。

ましてやマッシュアップという言葉を知らないような人にはウケる余地など本当に微細に思えるんだがどうなんだろうか。

Ajaxを使うためだけにAjaxを使うように、マッシュアップするためだけにマッシュアップしているように見える。まぁ楽しいのは分かるし大規模なブレーンストーミングのようなものなのかも知れないが、祭りが終わったときに生き残るようなサービスがそろそろ出てもいいのではないかと思う。

「Web2.0」もそうだが、バズワードには遊ばれず本質的な良さを追求するよう注意する必要がこれからもあるだろう。

とまぁただそれだけの、大して熟していない話。

Categories: Whatnot |Tagged | Leave a comment

CodeIgniterのセッション問題解決

以前から数回にわたって書いてきたCIセッション問題が解決した。

問題というのは、セッションの有効期限を「ブラウザが閉じるまで」に設定できなかった件、そして個別のセッションについて期限を設定できなかった件だ。

CIのライブラリを拡張してDBのセッションテーブルの構造を含めかなり手を加えることになってしまったが、外観的にはメソッドが一つ増えただけのかなりスッキリした改造だ。

結局、クッキーをセットするときに期限を「0」にしておけば「ブラウザが閉じるまで」セッションになるということと、個別に期限を設定するにはそれぞれのセッションデータ自体に自らの期限を保存するしかないという二点が作業内容の主なポイントだった。

式の記述ミスで現行セッションがガーベジコレクションされてしまったりと前途多難だったが、今回の作業でありがたいと思ったのはテキストログの出力機能だ。主としてクッキーを扱う作業のため、これまでやってきたようなechoによるデバッグはできない。そこでメッセージをテキストファイルに書き出すCIの機能に大変お世話になった。こういうクリティカルな場面でなくとも、表示を乱さずにデバッグできるのは時によっては役に立つ。

Categories: HowTo's, Tips and Tricks |Tagged , , , | 1 Comment

DreamHostというサーバーに移転してみた

DreamHostというサーバーに移転してみた。

日本の低価格ホスティングとは比べ物にならないぐらいお得感抜群。どれぐらいお得かはこちらのサイトを見てもらえればわかる。
http://iisaba.com/
ちなみにこのサイトにはなんと$97も割引される紹介コードも載っている。

で、Wordpressを移動させたら見事に文字化けした(日本語が全て「???」になった)ので解決法をメモっておく。

まずデータベースを作成したら、データをインポートする前にphpMyAdminからデータベース選択→操作→照合順序で
utf8_general_ci
を選択。これはutf8_unicode_ciでもいいかもしれない。

そしてデータをインポート。

次にWordpressのファイルをいじる。
wp-includes/wp-db.php 57行目周辺

< ?php
$this->select($dbname);
if (!mysql_query("SET NAMES utf8")){
	die('Could not SET NAMES.');
}
?>

以上で文字化けが回避できる。

Categories: Whatnot |Tagged | 1 Comment

とりあえず解決?CodeIgniterのセッション有効期限

CodeIgniterでセッション有効期限をうまく扱えない問題、ひとまず解決。

実は解決したかに見えて大きな問題が残ってるのだが、とりあえず書いておく。

Sessionクラスを拡張してsess_runとsess_writeを改造した。

とりあえず、設定ファイルでsess_expirationが0のときに無期限(実際には2年)となっていた部分を、本当の0に変更(sess_run())。

さらに、実際にクッキーを書き込むsess_writeにて、セッションクラスのメンバー$sess_length(ここに設定値が保持される)が0の場合はクッキーのライフタイムをtime+2年から0に変更。

こうすることで、設定ファイルで期限を0としたときはブラウザを閉じるまで有効、となった。ひとまずOK。

残る問題は、個別のセッションごとにタイムアウトを保持できていないこと。設定ファイルを毎回読んでしまうので、いったん「このセッションの期限は2週間」などと個別に設定しても、次のページ遷移でグローバルな設定ファイルの「0」が適用されてしまう。

つまりタイムアウトをセッション固有の値としてそれぞれ保存する必要がある。これはSessionクラスの更なる改造が必要だし、下手すればセッション情報を保存しているテーブルの構造にも影響するので、また後で手をつけることにする。

Categories: HowTo's, Tips and Tricks |Tagged , , , | Leave a comment

CodeIgniterのセッション有効期限でつまづく

CodeIgniterのセッションが気に入らないという話を先日書いたばかりだが、しばらく放置して戻ってきたらまたつまづいてしまった。

ユーザーをログインさせるときに「次回以降パスワードを省略」できるよう、セッションの有効期限を設定しようとしたのだが…。

これまで扱ってきたPHPでの開発では、PHPネイティブのセッション関連設定項目にて有効期限を0にしておけば、ブラウザを閉じたときにセッションが切れてくれていた。有効期限を延ばしてクッキーを設定しなおせば長いライフタイムのセッションができて、それがパスワード保存、つまりログイン状態の維持ということになっていた。

CIではネイティブの関数を使用せずオリジナルのセッション管理クラスを利用している。これにももちろん有効期限の設定項目はあるのだが、0にした場合、閉じるまでではなく無期限ということになってしまう。つまりブラウザを閉じてもいつまでもログイン状態が保持されることになる。

有効期限のデフォルトは2時間になっており、2時間の間であればいったんブラウザを閉じて開きなおしても以前のセッションに復帰する。ためしに有効期限を1秒などの短い値にしてみたが、そうするとブラウザを閉じなくても有効期限切れとして扱われ、次々と新しいセッションが生成されてしまった。

デフォルトの2時間など、一回の利用の時間として想定できるほどほどの値にしておくという手もあるが、よくないだろう。なぜなら一回の利用の間でも2時間を越えればセッションが初期化されてしまうからだ。さらに、2時間を越えなかったとしてもブラウザを閉じただけでは消えず、共有のコンピュータであれば危険。要するに、一回ブラウザを開いて閉じるまでというセッション期限をどうしても使いたいわけだ。

さぁどうやって解決しようか。
できるかぎりCIのコードを残したまま、言い換えれば、自分でコードを書かずに解決したいものだが。

Categories: HowTo's, Tips and Tricks |Tagged , , , | 1 Comment