vim に ActionScript のシンタックスハイライトを追加

perldoc で読む perl ドキュメントの日本語化

perl でのコーディング中に perldoc で、perlfunc や perlreref を参照することは多々あると思います。

そのドキュメントが日本語ならば、もうちょっと読みやすいと思います。幸い、perldocjp という日本語化プロジェクトで、いくつかの pod ファイルが日本語化されて公開されているので、それをダウンロードして入れ替えてみましょう。

(続きを読む…)

ClearSilver の関数とフィルター (ドキュメント邦訳)

ClearSilver に関しては、tasukuchan さんが ClearSilverについて調べる にマニュアルの邦訳をされており、大変参考になります。

Template Toolkit から ClearSilver に乗り換え、TT のような URI エスケープや、HTML エンティティ 変換をしてくれるフィルター機能が欲しいと思っていましたが、ClearSilver には pod が用意されておらず、h2xs のデフォルトテンプレートと思われる記述しかないので、オフィシャルのドキュメントを調べてみたらありました。

発見ついでに、ググっても他に邦訳されている方がいらっしゃらないようですので、簡単に意訳しておきます。英語は得意ではないので、変な訳があったらコメントで突っ込んでください。

(続きを読む…)

日時や時間を文字列で取得

日時を文字列で取得する場合、

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$date = sprintf("%04d/%02d/%02d", $year+1900, $mon+1, $mday);

こんな書き方が多いですが、もっと短くこう書けます。

use POSIX;
my $date = strftime("%Y/%m/%d", localtime);

DateTime モジュールで同じことができますが、POSIX は標準モジュールなのでインストールしなくても使えるというのが強みです。Windows の Strawberry Perl でも使えました。

と、これだけなら大した事無い違いなのですが、strftime はもっと便利です。
(続きを読む…)

lighttpd でピリオドを含まない(拡張子無し)URL と特定拡張子の指定方法

ディレクトリや拡張子なしの URL と PHP だけバックエンドに送りたかったので正規表現でカリカリと。

最近は色んなソフトに PCRE が採用されていて便利ですね。

$HTTP["url"] =~ "/([^/.]*(\?|$))|\.php(\?|$)" {
    proxy.balance = "hash"
    proxy.server  = ( "" => ( ( "host" => "localhost", "port" => 8080) ) )
}

ちなみに、静的ファイルだけ ligttpd に処理させたいときは以下です。

$HTTP["url"] =~ “/[^/.]*(\?|$)” {

この書き方は、baz.png?foo=bar などと、クエリ付きのリクエストにも対応しています。

WordPress の SQLite 対応

現在、データベースソフトには PostgreSQL を使っているのですが、MovableType と違って、WordPress は MySQL しか対応していません。

わざわざ、WordPress のためだけに MySQL をインストールしてデーモンプロセスを増やすのも嫌だったので、他のデータベースに対応するプラグインなどは無いものかと、探していたらありました。

(続きを読む…)

送信ドメイン認証(Sender ID/SPF)について

DoCoMo の SPF 対応も明後日からですね。それに伴い、ウチでも DNS を設定しなおしました。

関連資料をまとめておきました。

送信ドメイン認証(Sender ID/SPF)について
(続きを読む…)

IE の JavaScript 高速化(参照回数が多い場合)

amachang さんのところで紹介されていました。

以下の一行をすべての JavaScript の前に読み込む

/*@cc_on _d=document;eval('var document=_d')@*/

この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。

だそうです。
(続きを読む…)

UTF-8 文字列の URI エスケープ

RFC 2396 で、unreserved として定められた文字列を URI エスケープする場合には、


$str =~ s/([^a-zA-Z0-9_.!~*'()-])/’%’ . unpack(’H2′, $1)/eg;

とすれば良いですが、エスケープする文字列が UTF-8 の場合、注意しないといけないことがあります。それは、変換前に UTF-8 フラグを落とすことです。


utf8::encode($str) if utf8::is_utf8($str);

を変換前に追加しましょう。

画像ファイルやローカルからのアクセスをログに記録しない

Apache で、アクセスログに画像ファイルや、CSS などを含めたくないときには、


SetEnvIf Request_URI "\.jpe?g$" image no_log

などと、書いて、


CustomLog /path/to/access.log combined env=!no_log

と、すれば良いですが、lighttpd には lighttpd-1.4.15/doc/accesslog.txt を見ても、選択的なアクセスログ設定には触れられていません。

logrotate の処理中に wrapper スクリプトを使うのも何ですし、どうしたもんかと思いましたが、ふと、lighhttpd には PCRE を利用してコンフィグを正規表現でガリガリ書けることを思い出しました。

と、いうことで実際に書いてみたら、期待通りの動作をしました。


$HTTP["remoteip"] !~ “^(127\.|192\.168\.)” {
$HTTP["url"] =~ “/[^/.]*(\?|$)” {
accesslog.filename = “/path/to/access.log”
}
}

上記では、拡張子が無いファイルへのリクエストのみログに記録しています。
なお、remoteip と url の入れ子を逆にしたら上手く動作しませんでした。