Oddwit


発想・創発のお助けカード

Posted in CodeIgniter, Whatnot by マルコ on the April 23rd, 2008

知恵カード
問題に直面したときや、単にアイデアを探している時に発明的発想がしやすくなる手助けグッズです。

「分けよ」、「2つを併せよ」、「逆にせよ」、「自ら行うように仕向けよ」など、問題やその周辺の情報をこねくり回す方法をカードにしたもので、計40枚が画像としてWebサイト上で公開されています。

こういう手法というのは割と色んなところで見たり聞いたりしますが、平易な言葉とシンプルなイラストでカード型にまとめてあるので利用価値があるかと。

ただ、このサイト上にはカードが並んで配置されていないので印刷するのが面倒。

出来合いのカードを購入することもできるようですが、一組6,500円というぶっ飛んだ値段なのでちょっと現実的ではありません。カードの文言を普通の表にしたものがネタ元の記事にあるので、これをそのまま印刷するか、簡単にレイアウトしてみるのが一番手っ取り早そう。

全部のカードが並んだPDFがあったら便利なんだけども。

CodeIgniterのファイル名はCase-Sensitive

Posted in CodeIgniter, PHP by マルコ on the July 11th, 2007

久々にCodeIgniterでハマったのでメモ。

ローカルのWindowsで開発していたアプリを運用のためにLinuxのサーバにアップしたところ、訳のわからないところでエラーが出てまったく動かない。潜ってみると、原因はあるコンフィグファイルが大文字小文字の違いで正しくincludeされていなかったためだった。

たとえば自作ライブラリのクラス名を
CustomParser
とした場合、そのライブラリのファイル名は
application/libraries/CustomParser.php
コンフィグファイルを使うならそのコンフィグファイル名は
application/config/CustomParser.php
と、大文字小文字を完全に一致させる必要がある。

なおWindows環境ではファイル名はcase-sensitiveではないようなので、幸か不幸か問題なく動いてくれる。

CodeIgniterのセッション問題解決

Posted in CodeIgniter, PHP by マルコ on the May 14th, 2007

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

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

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

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

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

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

Posted in CodeIgniter, PHP by マルコ on the May 8th, 2007

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クラスの更なる改造が必要だし、下手すればセッション情報を保存しているテーブルの構造にも影響するので、また後で手をつけることにする。

Next Page »