CodeIgniter2.0.3 postgresqlのエスケープ処理(like検索)にバグ
CodeIgniter2.0.3 postgresqlのエスケープ処理(like検索)にバグ
現象
Active Recordの$this->db->like();を使用したときに、
「%(パーセント)」「_(アンダースコア)」が2重にエスケープされる。
エスケープ文字が「!」の場合、
test_test
↓こうなる
test!!_test
ソースを確認
system/database/drivers/postgre/postgre_driver.php
の299行目
<?php $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は引数が配列の場合、左から順に処理していくので
この順番だとエスケープ文字($this->_like_escape_chr)が2個付く。
エスケープ文字を最初に置換するように修正。
<?php $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); ?>
JavaScriptの関数はデータとしても使える
例1
function add(x,y){return x+y;} function sub(x,y){return x-y;} //上記関数のいずれか1つを呼び出す関数 function operate(operator, operand1, operand2){ return operator(operand1, operand2); } //関数operateで(2+5)+(5-1)を計算 var i = operate(add, operate(add, 2, 5), operate(sub, 5, 1));
例2
//関数をオブジェクト(連想配列)に格納 var operators = { add: function(x,y){return x+y;}, sub: function(x,y){return x-y;}, pow: Math.pow//既存の関数も利用できる }; //上記のoperatorsからop_nameで指定した演算関数を探し、 //その演算関数でoperand1, operand2を演算する関数 function operate2(op_name, operand1, operand2){ if(typeof operators[op_name] == "function") return operators[op_name](operand1, operand2); else throw "unknown operator"; } //"Hello"+" "+"world" var j = operate2("add", "Hello", operate2("add", " ", "world")); //10の3乗 var k = operate2("pow", 10, 3);
関数がデータとして扱えるとArray.sort()のようなことができる
関数を引数として渡すことで、ソート方法を指定することができる。
var data = [33, 4, 1111, 222]; //そのままソートするとアルファベット順になるが:1111, 222, 33, 4 data.sort(); //比較関数を引数として渡せば数の小さい順になる:4, 33, 222, 1111 data.sort(function(a,b){return a-b;});
「色彩センスのいらない配色講座」より抜粋
色の使い方(3色使う場合)
プログラマがWEBデザインするときに悩むこと。
それは色のバランスではないでしょうか?
色彩センスのいらない配色講座
がものすごくわかりやすかったので、抜粋してメモ。
3色の比率
メインカラーは明度の低いものに
ベースカラーは白か薄い色に
アクセントカラーはメインカラーから離れた色相に
色の使い方(4色使う場合)
カラーを分割する
足す色は
「トーン」が同じで「色相」が違う色、
か
「色相」が同じで「トーン」が違う色
バランスに注意
メイン・アクセントカラーの比率が増えるとバランスが崩れる
JavaScript 配列と連想配列の違い
JavaScript の配列と連想配列の違いを読んでみた。
for inは配列の走査の目的では使ってはいけない
- for in はオブジェクトのプロパティを走査するものなので、配列の走査の目的では使ってはいけない
- 配列のlength プロパティが走査されないのは、 length が DontEnum プロパティだから
- 配列はfor、連想配列は for inを使う
JavaScript 基本型と参照型
基本型と参照型
JavaScriptのデータ型には基本型と参照型がある。
- 基本型
数値、論理値、null、未定義値など
var a = 7; var b = a; a = 8; alert(b);//7が出力される
- 参照型
オブジェクト、配列、関数など
var a = [1,2,3]; var b = a; a[1] = 8; alert(b);//[1,8,3]が出力される