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);
?>

Mac OS XからMac OS 9のファイル共有へ接続できない

Mac OS XからMac OS 9のファイル共有へ接続できない

mac10.4.11からMac OS 9のファイル共有に接続しようとすると、下記のエラーがでるとのこと。

接続に失敗しました。このファイルサーバは互換性のない AFP プロトコルを使っています。このサーバには接続できません。


Mac OS 9 で TCP/IP 接続を可能にすればよい。

1.「ファイル共有」コントロールパネルを開く。
2.「TCP/IP 接続でファイル共有を可能にする」オプションのチェックボックスをクリックして選択。
3.「ファイル共有」コントロールパネルを閉じる。

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色使う場合)

カラーを分割する


足す色は
「トーン」が同じで「色相」が違う色、

「色相」が同じで「トーン」が違う色

バランスに注意


メイン・アクセントカラーの比率が増えるとバランスが崩れる

やしきたかじんbot (Yashiki_Takajin) on Twitterを終了しました。

やしきたかじんbot (Yashiki_Takajin) on Twitterを終了しました。

現在、やしきたかじんさん本人がtwitterをはじめているのですが、
本人と間違えて「やしきたかじんbot」をフォーローしている人がいたようです。


やしきたかじんさんのことが好きで作ったbotでしたが、
迷惑を掛けないように終了しました。ありがとうございました。

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]が出力される