PDOの注意点

こんなSQLを作成しようと思って

SELECT * FROM table_name WHERE name LIKE '%hoge%'

こんな感じのコードを書いた。

<?php
$db = new PDO($dsn, $user, $pass);
$hoge = "hoge";

$sql  = "SELECT * FROM table_name WHERE name LIKE '%?%'";
$stmt = $db->prepare($sql);
$stmt->bindParam(1, $hoge);

ところが、これを実行しても結果セットが返ってこない。
調べてみると、「LIKEの'%'は変数の中にないといけない」そう。
そこで、取りあえず

$hoge = '%hoge%';
$sql  = "SELECT * FROM table_name WHERE name LIKE ?";

として解決。
PDO、もっとちゃんと使えるようにならないとな〜(・x・ ).o0○

GitでSourceForgeのSVNリポジトリを利用

まず、自分用の公開鍵を作った。

;; 鍵の種類はRSA
$ ssh-keygen -t rsa
  -> パスフレーズ応答(2回)

で、~/.ssh/id_rsa.pubの中身をSourceForgeの自分のページにペタッとコピペ。
次に、以下を実行

;; SSH経由
$ git svn clone 
svn+ssh://account_name@svn.sourceforge.jp/svnroot/
path/to/project/

これでSourceFrogeのリポジトリと繋がった。
後は、普通にGitとして使えば良いみたい。
忘れそうなコマンドだけメモ。

;; git commitでは、ローカルリポジトリのみに
;; コミットされるので
$ git svn dcommit

;; ローカルリポジトリを最新のものに更新
$ git svn rebase

さて、やりますぜよ〜(・x・ ).o0○

シェルスクリプトでの文字列比較

;; これはヨロシクない例
#!/bin/bash

arg=$1

if [ $arg = "hoge" ]; then
    echo $arg
fi

この場合、引数が指定されないと$argがNULLなので、こんなメッセージが出る。

unary operator expected

ので、""で囲む事によって比較する型が合わなくなる事を防ぐそうだ。

;; ""で変数を囲む事
#!/bin/bash

arg=$1

if [ "${arg}" = "hoge" ]; then
    echo $arg
fi

見事解決。
シェルスクリプトはファイル処理に強いらしい。そうなると文字列処理に強いと言われるPerlにも目が行くのが人の性(・x・ ).o0○

tarコマンドのメッセージ

メンバ名から先頭の `/' を取り除きます

生まれて初めてのシェルスクリプトに挑戦中、tarでこんなメッセージ。
tarは内部で相対パスを用いるので絶対パスとかを利用するとこれが出るらしい。
manによると、「-P」オプションを付ければ先頭の「/」を取り除かないとの事。
シェルスクリプト面白いな〜。
ファイルの文字コードを変換するバッチ処理(約30行)を書くのに、2時間弱かかったけど(・x・ ).o0○