UPDATE で同じ条件の任意数のレコードだけ更新したい

– ORDER BY と LIMIT を使えばよい。UPDATE にもあるとは知らなかった..迂闊。
<http://dev.mysql.com/doc/mysql/ja/update.html>
– MySQL リファレンスマニュアル :: 6.4.4 UPDATE 構文

 UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 …]
    [WHERE where_definition]
    [ORDER BY …]
    [LIMIT row_count]

最初こういうことをやって、同じテーブルに対して更新と参照を同時にやるなと怒られた。

UPDATE footable SET name = ‘foo’ WHERE id = (SELECT id FROM footable
  WHERE gender = 1)

PreparedStatement, ResultSet で汎用性のある引数を与えたい

– クエリ処理用のメソッドなんかを作ってると、setXxx(), getXxx() を指定するのに任意型をとりたい時がある。
最初は setString(1, o.toString()), getString(1) で全て済ませようとしていたが、実装してみると OO らしからぬ処理になって微妙だったので調べてみたところ、ちゃんといい方法があった。
<http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/sql/PreparedStatement.html#setObject(int,%20java.lang.Object)>
– PreparedStatement.setObject(int, Object)
<http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/sql/ResultSet.html#getObject(int)>
– ResultSet.getObject(int)
– 以前から使い道を疑問に思っていたが、SQL 型に変換可能(かつ変換が曖昧でない)な型ならなんでも使えるとのこと。これは汎用化には便利。

C# ことはじめ

– C# が気になる今日この頃。Java やる前 … .NET 1.0 登場あたりに C# で遊んでた時期があったのだけど、OOP がほとんどできていなかったのと、当時は人気がなく情報がえらく少なかったので C++ やってた。.NET Framework なんていれてないユーザが大半だったしなぁ。また C# が気になり出しているのは、Mono が実用できそうになってきた事と M.Fowler がたびたび話題に出しているため。言語的には delegate が構文として用意されている点、プロパティの set/get 周りが簡単なのがいいかなと。Java はまだまだ捨てられませんが。
– C# が Java より優れている点は、Windows GUI では Java より、簡単にネイティブに近い動作をしてくれ(そうな気がす)る事。言語仕様のスマートさ。
– Java が C# より優れている点は、圧倒的な情報/技術リソースの量。AOP のプリプロセッサが開発されていること。開発環境の性能と価格の比率。SharpDevelop は優秀だが Eclipse に若干劣るし、VS.NET は市販なので。サーバサイドでもまだコストと実績で J2EE に分があるかな。
と、現状の個人的解釈でした。

Java のバイトコード書き換え

コンパイル済みのクラスの動作を、バイトコードを書き換えることによって変更することが可能になる。既存のクラスの実装をハンドリングする事もできるため、AOP の実現のために用いられる。JBoss, Bugdel が利用している。
http://www.javassist.org/
– Javassist 公式(JBoss.com)
http://www.csg.is.titech.ac.jp/~chiba/notes/javapress03/
– Javassist 入門
http://muimi.com/j/aop/javassist/
– Javassist にさわる

PHP でランダム文字列を生成

JavaScriptでランダムなパスワードを生成する の PHP 版

  
<?php
/**
 * ランダムな文字列を生成する。
 * @param int $nLengthRequired 必要な文字列長。省略すると 10 文字
 * @return String ランダムな文字列
 */
function getRandomString($nLengthRequired = 10){
    $sCharList = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”;
    $sRes = “”;
    for($i = 0; $i < $nLengthRequired; $i++)
        $sRes .= $sCharList[mt_rand(0, strlen($sCharList) – 1)];
    return $sRes;
}
// 使ってみる
echo getRandomString() . “\n”;
?>