Oracle の LIKE 演算子で _、% を検索文字列として指定する

SELECT * FROM foo WHERE bar LIKE '%baz\%' ESCAPE '\';
SELECT * FROM foo WHERE bar LIKE '%baz\_' ESCAPE '\';

  ESCAPE でエスケープ文字に指定する必要がある (この場合は \ を指定)。
  Oracle では、デフォルトのエスケープ文字は決まっていないらしい。
  
  MySQL の場合は、デフォルトのエスケープ文字は、\ になっている。
  ただし、MySQL も ESCAPE 節を使えるため、スケープ文字にすることも可能 (この場合は | を指定)。

SELECT * FROM foo WHERE bar LIKE '%baz|%' ESCAPE '|';

- ref.: 忘れっぽいエンジニアのオラクルSQLリファレンス
  http://oracle.se-free.com/dml/01_like.html

- ref.: MySQL ::   MySQL 5.1 リファレンスマニュアル :: 11.3.1 文字列比較関数
  http://dev.mysql.com/doc/refman/5.1/ja/string-comparison-functions.html

trac で最初に表示されるページを変更する方法

  trac では、デフォルトでは最初に表示されるページは、Wiki のページですが、
  これを任意のページに変更する方法です。
  
  trac.ini の default_handler のモジュール名を変更すれば任意のページを表示する
  ことが出来ます。例えば以下は Browse Source (BrowserModule) にする方法です。
  

[trac]
default_handler = BrowserModule

  指定できる値と、表示されるページは以下になります。

指定できる値     表示されるページ
WikiModule       Wiki
TimelineModule   Timeline
RoadmapModule    Roadmap
BrowserModule    Browse Source
QueryModule      View Tickets (Custom Query)
ReportModule     View Tickets (Available Reports)
NewticketModule New Ticket


- ref.: TracIni - The Trac Project
  http://trac.edgewall.org/wiki/TracIni

CentOS でファイルの ctime を変更する方法

  debugfs の modify_inode を利用して、通常では変更できない ctime を変更する
  ことが出来ました。
  
  まず、変更したいファイルがあるファイルシステムをアンマウントします。
  アンマウントできない場合は、最後に再起動が必要ですが、とりあえずそのまま
  続行できました。

$ sudo debugfs -w /dev/mapper/VolGroup00-LogVol00
debugfs 1.35 (28-Feb-2004)
debugfs:  cd /mnt/a/tmp
debugfs:  stat test.txt
Inode: 4788224   Type: regular    Mode:  0000   Flags: 0x0   Generation: 3112533598
User:    48   Group:    48   Size: 7382
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 16
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x49643779 -- Wed Jan  7 14:02:49 2009 <- この ctime を変えてみる
atime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
mtime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
BLOCKS:
(0):9592998, (1):9593000
TOTAL: 2

debugfs:  modify_inode test.txt
                          Mode    [0100000]
                       User ID    [48]
                      Group ID    [48]
                          Size    [7382]
                 Creation time    [1231304569] 1231130280 <- 変更するには値を入力
             Modification time    [1231130280]
                   Access time    [1231130280]
                 Deletion time    [0]
                    Link count    [1]
                   Block count    [16]
                    File flags    [0x0]
                    Generation    [0xb9857e5e]
                      File acl    [0]
           High 32bits of size    [0]
              Fragment address    [0]
               Fragment number    [0]
                 Fragment size    [0]
               Direct Block #0    [9592998]
               Direct Block #1    [9593000]
               Direct Block #2    [0]
               Direct Block #3    [0]
               Direct Block #4    [0]
               Direct Block #5    [0]
               Direct Block #6    [0]
               Direct Block #7    [0]
               Direct Block #8    [0]
               Direct Block #9    [0]
              Direct Block #10    [0]
              Direct Block #11    [0]
                Indirect Block    [0]
         Double Indirect Block    [0]
         Triple Indirect Block    [0]
debugfs:  stat test.txt
Inode: 4788224   Type: regular    Mode:  0000   Flags: 0x0   Generation: 3112533598
User:    48   Group:    48   Size: 7382
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 16
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009 <- この ctime が変わった
atime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
mtime: 0x49618ea8 -- Mon Jan  5 13:38:00 2009
BLOCKS:
(0):9592998, (1):9593000
TOTAL: 2

debugfs:  quit

  ここで、再度マウントすれば OK。
  ただし、アンマウントできなかった場合は、ここでサーバを再起動すれば OK でした。

$ ls -lac
drwxrwxrwx  6 sunaoka sunaoka 4.0K Jan  7 14:34 .
drwxrwsr-x  3 sunaoka sunaoka 4.0K Jan  7 13:35 ..
-rw-r--r--  1 sunaoka sunaoka 7.3K Jan  5 13:38 test.txt