読者です 読者をやめる 読者になる 読者になる

Perl と PHP では quotemeta のクオート対象が異なるらしい

PHP では 「|」はクオートされないとのこと

Perl

% perldoc -f quotemeta | cat
       quotemeta EXPR
       quotemeta
               Returns the value of EXPR with all non-"word" characters
               backslashed.  (That is, all characters not matching
               "/[A-Za-z_0-9]/" will be preceded by a backslash in the
               returned string, regardless of any locale settings.)  This is
               the internal function implementing the "\Q" escape in double-
               quoted strings.

               If EXPR is omitted, uses $_.

Re: 今さら聞けないjQuery実行パターンまとめ 【ちょっとだけ補足】

細かい点をちょっとだけ補足してみました。

scriptをheaderの中に入れるかbodyの最下部に入れるか

html要素内にscript要素としてJavaScriptを埋め込んだ場合は、JavaScriptの読み込みと実行が終わるまでそこでページの読み込みがストップしてしまうので、それを避けるためにbody要素の終了直前にscript要素を挿入するという方法(※1)があるようです。

(※1) YSlowでWebページを高速化 - リッチさと速さを同時に実現するUIを! の「Put JS at the bottom」

header要素の中にscript要素 (実行)

body要素の最下部にscript要素 (実行)

onloadとjQuery.ready()

onloadとjQuery.ready()の違いとしては、onloadを使った場合は画像も含めて全ての読み込みが終了してから実行されますが、jQuery.ready()はDOMが構築された後に画像の読み込みを待たずに実行されるという点があるようです。

onload (実行)

jQuery.ready() (実行)

CakePHP で Return-Path を指定する (sendmailで送信する設定になっている場合)

CakePHP 標準添付の Mail コンポーネントを使ってメールを送信する際の、Return-Path の指定の方法です。

設定方法

delivery が mail(デフォルト)でかつPHP側でsendmailで送信される設定(おそらく多くの環境)になっている場合には、app/app_controller.php の beforeFilter あたりにこんな風に書けば良いようです。

        $this->Mail->return = ADDRESS;
        $this->Mail->additionalParams = '-f ' . ADDRESS;

参考にしたサイト

http://handsout.jp/slide/225

exim でサブミッションポートをリスンする

exim(exim4) でサブミッションポートをリスンする場合は、リスンするIPアドレスをこんな感じで指定すればよいようです。

127.0.0.1.25;127.0.0.1.587

Aspire 1410 (AS1410) へ Ubuntu を PXEブートでインストール

インストール手順の備忘録です。

PXEブート用のファイルをダウンロード

まずは

$ cd /var/lib/tftpboot
$ sudo wget http://archive.ubuntu.com/ubuntu/dists/karmic/main/installer-i386/current/images/netboot/netboot.tar.gz
$ sudo tar xvf netboot.tar.gz

ネットワーク関連のモジュールの追加

$ mkdir ~/initrd
$ cd ~/initrd
$ zcat /var/lib/tftpboot/ubuntu-installer/i386/initrd.gz | sudo cpio -id
$ mkdir ~/linux-image
$ cd ~/linux-image
$ wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-2.6.31-14-generic_2.6.31-14.48_i386.deb
$ ar x linux-image-*
$ tar jxf data.tar.bz2
$ sudo cp -R ~/linux-image/lib/modules/2.6.31-14-generic/kernel/drivers/net/wireless/iwlwifi lib/modules/2.6.31-14-generic/kernel/drivers/net/wireless/
$ sudo cp -R ~/linux-image/lib/modules/2.6.31-14-generic/kernel/drivers/net/atl1c lib/modules/2.6.31-14-generic/kernel/drivers/net/
$ sudo depmod -a -b . -v 2.6.31-14-generic
$ find . | sudo cpio -o -Hnewc | gzip > ~/initrd.gz
$ sudo mv ~/initrd.gz /var/lib/tftpboot/ubuntu-installer/i386/initrd.gz

Debian (lenny) へ Q4M をインストール

インストール手順の備忘録です。

# APTラインの設定
lenny% tail -2 /etc/apt/sources.list
deb http://www.backports.org/debian lenny-backports main contrib non-free
deb-src http://www.backports.org/debian lenny-backports main contrib non-free
lenny% sudo aptitude update 

# パッケージの準備
lenny% sudo aptitude install mysql-server-5.1 mysql-common/lenny-backports
lenny% sudo aptitude install libssl-dev g++-4.1 libmysqlclient-dev

# mysqlのソース
lenny% mkdir ${HOME}/mysql
lenny% cd ${HOME}/mysql
lenny% apt-get source mysql-server-5.1

# Q4Mのソース
lenny% mkdir ${HOME}/q4m
lenny% cd ${HOME}/q4m
lenny% wget wget http://q4m.31tools.com/dist/q4m-0.8.5.tar.gz
lenny% tar zxf q4m-0.8.5.tar.gz
lenny% cd q4m-0.8.5

# コンパイル
lenny% ./configure --with-mysql=${HOME}/mysql/mysql-dfsg-5.1-5.1.37 \
                CXX=g++-4.1 CPPFLAGS="-I/usr/include/mysql"
lenny% make
lenny% sudo make install

# テスト
lenny% sudo aptitude install libdata-compare-perl liblist-moreutils-perl 
lenny% DBI='dbi:mysql:database=test;host=localhost;user=root' ./run_tests.pl
t/01-base-rnd_pos.........................ok
t/01-base.................................ok
t/02-queue-cond...........................ok
t/02-queue-owned-delete...................ok
t/02-queue................................ok
t/03-queue-error-wait.....................ok
t/03-queue-error..........................ok
t/04-blob-cond............................ok
t/04-blob.................................ok
t/05-multireader..........................ok 1/4

Multireader benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            1.073 seconds
    Throughput:         5962.886 mess./sec.

t/05-multireader..........................ok
t/05-multirw..............................ok 1/4

Multi-reader-writer benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            1.564 seconds
    Throughput:         4091.784 mess./sec.

t/05-multirw..............................ok
t/05-multiwait............................ok 1/4

Multi-reader-writer benchmark result under semi-starvation:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            1.734 seconds
    Throughput:         3691.367 mess./sec.

t/05-multiwait............................ok
t/06-multi................................ok
t/07-trans................................ok
t/08-forward..............................ok
t/09-pqueue-single-table-wake-listener....ok
t/09-pqueue-single-table..................ok
t/10-largedata............................skipped
        all skipped: set BIG_TESTS=1 to run theese tests
All tests successful, 1 test skipped.
Files=18, Tests=68921, 138 wallclock secs (80.05 cusr +  4.29 csys = 84.34 CPU)