2011/06/07

codeigniterでpostgresqlのlike検索にバグがある件

基本的にMySQL向けに作られているフレームワークだとしてもこれはさすがにひどいでしょ。。。
バグは2点みつけてます。
CIのバージョンは1.7.3です。

①点目
[RESOLVED] Undefined property: CI_DB_postgre_driver::$_like_escape_char | CodeIgniter Forums
↑のURLに書いてあるとおりただのスペルミスです。。

From
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_char);

To
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_chr);

②点目
「%(パーセント)」「_(アンダースコア)」を含むライク検索が出来ない。

/database/drivers/postgre/postgre_driver.php
299行目

$str = str_replace( array('%', '_',$this->_like_escape_chr),
array($this->_like_escape_chr.'%', $this->_like_escape_chr.'_' , $this->_like_escape_chr.$this->_like_escape_chr),
$str);

str_replaceでエスケープを行っているが配列の順番がおかしいため
エスケープ文字が2コ付くようになってしまっています。
下記のように修正

$str = str_replace( array($this->_like_escape_chr ,'%', '_'),
array($this->_like_escape_chr.$this->_like_escape_chr ,$this->_like_escape_chr.'%', $this->_like_escape_chr.'_' ),
$str);

置換前、置換後の配列の3番目の要素をそれぞれ1番目にもってくる。これでOK。
こんなすぐ分かるバグぐらい誰かフィックスしとけよと。

2011/05/28

CodeIgniterの_remap

CodeIgniterの_remapメソッドでパラメータを指定する方法
この方法でも出来そうだったけどフレームワーク部分に手を加えたくなかったのでこうしてみた


function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
call_user_func_array(array(&$this, $method), array_slice($this->uri->rsegments, 2));
}
}

多分大丈夫のはず

2011/05/14

Yiiでgiiモジュールアクセスで403になる場合の回避法

公式サイトのスキャフォールディング
/webroot/application/protected/config/main.php
に以下のコードを追加と書いてあるので追加します。

return array(
......
'import'=>array(
'application.models.*',
'application.components.*',
),

'modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'pick up a password here',
   'ipFilters'=>array('127.0.0.1','::1'),
),
),
);
giiの部分はもともと書いてありコメントアウトになっているので
それを外すだけです。

これだけだとローカルホスト以外の場合アクセス出来ないので
制限を外す場合
'ipFilters'=>array('*'),
とすると全てのホストからアクセス出来ます。
'ipFilters'=>array('127.0.0.1','::1'),

Yii

新しいプロジェクトでphpフレームワークのYiiを使用することにしました。
日本語ドキュメントが少ないのでつまずいたこととかをメモっていこうと思います。

2011/02/02

Windowsってブラックボックスが大きすぎない?

IIS、asp.netで動かそうとしてるんだけど
分からない。apacheに比べてネット上に情報が少ないかな。

2011/01/29

WindowsXPインストール後にインストールしたソフト一覧

メモ

秀丸
explzh
google chrome
google desktop
google 日本語入力
Microsoft Security Essentials

まだもうちょっとだけ続くんヂャ

2011/01/28

cakephp

案件の都合でCakePHPを使ってます。
だいたい2ヶ月くらいの開発期間なのでこの間にcakeをマスターしようと思います