スパムをはじくblosxomプラグイン2種

最近、やたらとスパムなトラックバックが多い。毎回ファイル見ながら消すのも面倒になってきたので、スパムよけのプラグインを入れてみた。

れっつ日記 - 【移植】言及リンクのない TrackBack ping を弾くプラグイン

本プラグインをインストールするとトラックバック元のサイトに自分のブログへのリンクが含まれているかを確認し、含まれていない場合トラックバックをエラーにします。

で、コメントスパムよけのcaptchaなプラグインもついでに探してみたら、それっぽいのを発見。

他にもこんな感じで色々あるらしいが、とりあえずcaptchaプラグインを入れてみた。

captchaプラグインを使うためには次の二つのモジュールとプラグインが必要。

  • Authen::Captchaモジュール
  • interpolate_fancyプラグイン

ただし、captchaの認証のコードはこんな感じで失敗するとdieするだけなので、

die "captcha failed ($reasons{$results})\n"

試しに認証失敗してやると、こんな感じの綺麗とはいえないエラーを吐く。

captcha error

スパム対策が効いてるようだったら、後で手を加えよう。

Blastの出力をタブ区切りで

先日、Blastの出力をタブ区切りで吐けるという話を聞いて

ををを~!

となったもんで、早速試してみる。家のサーバーはC3なんで静かなかわりにやたら遅い。おうちで計算したかったら、速いマシン自腹で買わないとならんわなぁ、とつくづく思い知らされた。

ちょっと話はそれたが、やりかたは、単に"-m 8"オプションつければいいだけなんだけど、昔はこのテーブル形式にしたいがために、出力をソートしてテーブルにしてたことを思うと、ちょっと感激した。

こんな感じでblast実行すると、

#/usr/local/bin/blastall -p blastp -m 8 -d /usr/fasta/swissprot -i gpc1.seq -e 1e-10

下のように、小粋でこじんまりした形でバスッと出力されるんです。(ただし、うちのマシンは2呼吸以上おかないといけない。)

GPC1_HUMAN GPC1_HUMAN 100.00 535 0 0 24 558 24 558 0.0 982 GPC1_HUMAN GPC1_RAT 88.60 535 61 0 24 558 24 558 0.0 891 GPC1_HUMAN GPC1_CHICK 61.79 458 175 0 24 481 21 478 6e-172 602 GPC1_HUMAN GPC6_HUMAN 49.35 462 225 4 28 480 26 487 3e-136 484 GPC1_HUMAN GPC6_MOUSE 49.35 462 225 4 28 480 26 487 4e-136 483

Rにまわしてもいいし、こういう感じで出力すると使い勝手はいいよね。

binary QSAR

BinaryQSAR絡みでいろいろ、ごちゃごちゃやったりしてたのだが、群わけだったらSVMデいいじゃん、とふと思った。

ので、ベイズとSVMの違いを調べたら、それっぽいのがスラッシュドットにあった。

スラッシュドット ジャパン | ベイズ推定で楽々スパムメールをフィルタリング

世間では,ベイズ分類器しか出回ってないようですが,なぜ SVM を使わないのだろう?やってみたけれど思わしくないのか,それともそもそもやってみていないのか。

ベイズだと

  • 確率で出してくる(ので信頼性の目安にもなる?)
  • 回帰モデルじゃない
  • 回帰じゃないので計算速い

なんで、binaryQSARやるにはベイズはメリットあるのかな?

そしてRのコードも発見。★素敵★。

R

Binary QSAR is a non-linear modeling method that can be used to build models for binary categorical data (such as actives and inactives). It was described by Gao et al. (J. Chem. Inf. Comput. Sci., 1999, 39, 164-168) and Labute (Pacific Symposium on Biocomputing, 1999, 4, 444-455).

10094611 10380218

レストラン ミツ

久しぶりのランチというかプチコース。U隊長のお母さんから、うまそうな店を幾つか仕入れてきて最終的にミツに予約した。

ミツ

最初にホタテと根深ネギで。上にのっているのもネギで白い部分を縦に細く切ったもの。この後を期待させるぐらい旨かった。全体を通して感じたのは、バターっていうかコクの使い方が上手だナァと。

ホタテと根深ネギ

続いて、青鯛とむかごのリゾット。きのこものってます。これまた旨すぎ。ワインが欲しかった。

青鯛とむかごのリゾット

で、鴨。フォアグラをとった後の肉(マグレ鴨)だそうだ。これまたうまい。

鴨

もう、この時点で相当満腹だったので、最後のデザートはちょっと厳しかったけど、サツマイモを使ったデザートでバルサミコ酢で作ったソースがかけてある。なかなかあうんだけど、ちょっとおなかがいっぱいで。

デザートはサツマイモ

今度は、どうにかして車以外で行ってワインも頼みたい。

レストラン ミツ

e1071ってSVMでregression analysisできるのね

スポッポユーザー会で雑談してたら教えてもらった。

知らんかった。マニュアル読んだら確かに書いてあるよ。
http://cran.md.tsukuba.ac.jp/src/contrib/Descriptions/e1071.html http://bg9.imslab.co.jp/Rhelp/R-2.4.0/src/library/e1071/man/svm.html

で、単なるsupport vector regressionって二値分類の拡張なのかね?と思ったので帰ってきてから調べたらそれっぽいものがヒット。

おーナイス!とかいって、A Tutorial on Support Vector Regressionをps2pdfでpdfに変換したら70p以上あった。うーん、後で読もう。

麺屋武蔵 武骨

東大から御徒町まで歩いてみた。デリー目当てでだったのに、歩いてるうちにカレーな気分じゃなくなって駅を超えて武蔵まで行ってしまった。

白武骨。ちょっとコッテリしすぎかも。最近の僕にはちょっと厳しい濃ゆさかも。あと、量も多め。なのに周りの客は更にチャーシューのっけ飯みたいなの一緒に食ってんのな。漢を感じた。

subversionでコードリーディング

ソースコードを読むための技術

ソースコードを読みなさい、あるいは読んでいく、という話題はわりとあるけども、どう読んだらいいか書いたものは見たことがない。プログラマならプログラムの読みかたは当然わかっているものだということなのだろうか。

しかし自分には人の書いたプログラムを読むことがそんなに簡単なことだとは思えない。プログラムを書くのと同じくらい、読むことにだって技術や定石があるはずだし、必要だと思う。そこで、コードをどう読むべきか、とりあえずは C 言語を前提として、無意識のうちにやっていることを明示的に整理してみる。

ソースコードを読むのはおもろいし勉強になる。で、学習の過程をとどめておくのにいい方法はないものかと思案していたら、plaggerのソース読みをtracで管理してたのを思い出して、僕もsubversionでやることにした(FC1だとtrac入れるのは面倒なので)。

最近色々ごちゃごちゃやってるグラフ関係のコードはC++が多いので、C++のコードリーディングをしてますが、subversionで管理するとなかなか調子が良いことがわかって満足。

あとはググっても興味をそそるサンプルが少ないので、なんか本でも買うかナァと思ってたら、mixiの[C言語とC++言語コミュニティ]が酷すぎる件に付いてであげられてたC/C++の課題丸投げがメールマガジン『Perlクイズ』みたいで楽しかったり。

おい、丸投げしすぎだろうってのも結構あるけど、問題選べばいいだけ。あともうちっとC++の割合増えると嬉しいかも。

MeadowでPerlのデバッグ

今までデバッグ環境というものにあまりこだわったことがなくて、Meadowで書いてコマンドプロンプトでデバッグという作業環境だったが、Meadowにsvnクライアント(psvn)入れた勢いにのってperlのデバッグもMeadowでやってみようと。

ちなみに僕が使っているMeadowのバージョンは3.00-devで、cperl-modeは最初から用意されていた。 mode-compile.elはダウンローしてきて、適当なディレクトリに放り込む。

.emacsの設定

;; perl-mode -> cperl-mode
(defalias 'perl-mode 'cperl-mode)

;; mode-compile
(autoload 'mode-compile "mode-compile"
   "Command to compile current buffer file based on the major mode" t)
(global-set-key "\C-cc" 'mode-compile)
(autoload 'mode-compile-kill "mode-compile"
   "Command to kill a compilation launched by `mode-compile'" t)
(global-set-key "\C-ck" 'mode-compile-kill)

例えばこんな感じに6行目でわざとエラーがでるようなコードを用意する。

use strict;
use warnings;

my $name = $ARGV[0];

print hello $name\n"

デバッグするときにはCPerlモード上でC-ccでperlを実行させる(その際引数をきいてくるので必要に応じて入力)

perldebug

実行結果は下の画面に表示される。エラー行の表示されている領域をクリックすると実際のコードの該当行にカーソルが移る。

おー快適!

SWIGのシャドークラス

SWIG使ってフラクタル図形を書いた際にshadowってオプションをつけたのだけどよくわかってなかったのでちゃんと調べた(というか実用Perlプログラミングに書いてあったんだけど)。

C/C++のオブジェクトのメンバ属性、メンバ関数に対し、perlのハッシュ記法でアクセスできるようにするメカニズムだそうだ。

class Shape {
public:
    int x, y;
    int w, h;
    drwaw();
};
class Poligon : public Shape {
public:
    polygon(int x, int y, int w, int h);
    draw();
};

とやると

use Graphics;
$poly = new Polygon(10, 10, 30, 40);

print $poly->{x}, $poly->{y};

みたいにアクセスできるようにするオプションだそうだ。

ProductName 実用Perlプログラミング
スリラム スリニバサン
オライリー・ジャパン / ?円 ( 1998-11 )


IRCを始めてみたヨ

なんとなくIRCもという気運が高まってきたので、ここらでいっちょと思い立ったのが(何ヶ月前だっけ?)で、思い出したようにここ何日かいじってみてる。

ChatZilla使ってみたけど、他のクライアントも試してみようとLimeChatに替えてみた。