2007-01-30(火) [長年日記]
■ tDiary: Akismetスパムフィルタを書いてみた(2)
昨日書いたAkismet spamフィルタだが、従来の「NGワード」によるフィルタリングと併用、双方のフィルタリング状況を比較するためにログを記録してみたところ、NGワードで排除していたspamはすべてAkismetもspam認定しているという、たいへん好成績を収めていることがわかった。もっともすべて英語spamだが。
昨日は1通だけ、日本語のTrackBackが来ていたんだけれど、残念ながらこれもAskimet的にはspamと断じられてしまった。まぁ、本文末尾にほんの申し訳程度にリンクが置いてある、本当に中身のないTBだったので、ある意味spamだと言えなくもないが……。
いずれにしても、完全に信用して、spam判定したものは問答無用で削除するのはまだ怖い。かといって、非表示モードで運用すると、1日に何十通もツッコミメールを受け取ってしまうのでたまらない。
ということで、特性が把握できるまでしばらくは、Akismetフィルタの方だけを強制的に非表示にして、通常のspamフィルタは通常通り削除するようにした。従来のNGワードフィルタの方が先に作動するので、こちらでspam扱いされたものは削除され、メールが発信されることはない。運良く(悪く?)すり抜けたものだけが、Akismetの神託にかけられる。
しばらくは普通のツッコミもspam扱いされる可能性があるけれど、あとから表示しておくので、すぐに反映されなくても気にしないで待っていてください >読者の方々
■ Windows Vista、本日世界同時発売!
という情報を、未来のおれのために残しておいた方がいいような気がする。「みごとなくらい盛り上がってなかったぞ!」と。
おれはまぁ……SP2くらいになってから買うかな。Microsoft製品はVer.3からが買い時。
2007-01-29(月) [長年日記]
■ tDiary: Akismetスパムフィルタを書いてみた
2007-01-30修正: プラグインによる設定を追加したので、少し設定方法が変わった。
半年ほど前に、メールアドレスを入力してくるツッコミをすべてspam扱いするようにして以来、ほとんどのspamを排除できるようになった。が、今日はとうとう、名前欄にメールアドレスを入力するという技を使われてしまい、1通通り抜けられてしまった。
悔しい。
悔しいので、ついにAkismetに手を出すことにした。とりあえずフィルタ部分だけ書けたので、coreのtrunkにcommit済み。CVS最新版のtDiaryでないと動かないと思われ。あとで設定用のプラグインも書く。
ちなみに、↑は表向きの理由で、本当はToDo2.2に残ったタスクに、ちょっと食指がのびるネタがなかったからなんだが。つまり逃避。
Akismetスパムフィルタの使い方
(0) tDiaryを最新版にする
少なくとも、2007-01-30作成のスナップショットか、同レベルのCVS trunkにする。core、pluginとも。
(1) Akismet API keyを取得する
個人利用向けのフリーなAPIキーを取得する。といっても読めばわかるとおり、WordPress.comのアカウントを取得するのと同義である。tDiaryのフィルタを使うためにWordPressのアカウントを取るという矛盾を楽しみたまえ。
メールによるconfirmation後、profileの編集画面に「Your API Key」という12桁の文字列が表示される。というか、英語がよくわからん人はこのへんを参照。
(2) tDiary上で設定
プラグイン選択で「akismet.rb」を有効にすると、「セキュリティ」の中に「Akismet spamフィルタ」が追加されるので、設定画面を開く。(1)で取得したkeyを入力し、フィルタを有効にする。
なお、Akismetは日本語のコメントをspam扱いしがちという噂もあるので、spamフィルタの設定画面で「spamと判定されたツッコミを非表示にする」としておき、有無を言わさずに捨てられないようにしておいた方がいいと思う。
(3) あとはspamが来るのを待つ
おれのところにはまだ来てないので、本当に動いているのかどうか不明。よって効果も不明。そもそも他のフィルタですでに十分にフィルタリングできているから、いつになったら作動するのやら……。試しに、他のフィルタを切ってみようかしらん(←本末転倒)。
(おまけ)実装の話
なんだかくだけた感じのAPIリファレンスを見ながら実装。Ruby実装がすでにあることに気づいたのは出来てからだったが。
しかし、ドキュメントには一言も「REST」の文字がないものの、APIのエンドポイントにがっちり「rest」の文字が躍ってるってことは、WordPressの中の人も、これがRESTだと思ってるんだろうなぁ。もう、完全に誤った「REST」が定着してるね、全世界的に。
■ ドメイン名の長さでspam判定してみる(2)
spamつながりで、先日の細工の続き。
Apacheのログをじっくり眺めていたら、最近の「長いドメイン名のreferer spam」には、重大な特徴が。末尾にみんな「#」がくっついているのである。なにそれ。普通にブラウザ使ってたら、絶対にこんなrefererが発生するわけがない。こいつら、自分からbotだって主張してるわけか?
だったら、これで十分だよなぁ。
# badreferer.rb require 'uri' module TDiary::Filter class BadrefererFilter < Filter def referer_filter( referer ) return (referer !~ /#/ ) end end end
2007-01-27(土) [長年日記]
■ 1月31日〆切2題
セレーネ「月に願いを」キャンペーン
今夏に打ち上げ予定の日本の月探査機「セレーネ」に、「あなたの名前と願いごと」を載せてもらおう企画の〆切が1月13日。火星探査機の「のぞみ」や、小惑星探査機の「はやぶさ」でもやった企画だが、自分は残念ながらどっちも応募し損ねたので、今回は気合を入れて(?)応募した。
的川さんのコラムによると、応募数がぜんぜん目標に届いていないそうだ。なんでだろう? 火星やイトカワみたいに遠くない月だと思って、なめてるとか? 今生きてる人類のほとんどが、ほぼ間違いなく死ぬまで行くことができないほど遠いのにね。
RubyKaigi2007プレゼンテーション募集
6月開催予定、RubyKaigiの発表者募集も、1月31日まで。
去年は発表してくれと泣いて頼まれたが(うそ)、今年はこっちが泣いて頼みたいくらいだけどネタがない。まぁ、参加はもちろんするけど。何か面白いネタを持ってる人は、ぜひとも応募して、オジサンを喜ばしてくれよ〜。
■
虚数 (文学の冒険シリーズ)(スタニスワフ レム)
ムツカシイ本なので、読むのにたいへん時間がかかってしまいました。とほほ。
「架空の本の序文集」という触れ込みだが、別の単行本だった「GOLEM XIV」との合本(?)なので、すべてが序文ではない。そういう意味では、まがりなりにもすべてが架空の書評だった『完全なる真空』の方が面白みは大きかったかな。いや、もちろん本書も面白かったけれども。
前半の序文集は、「X線写真による写真集」とか「知性を獲得したバクテリアの話」とか、実物があったらマジで読んでみたい本がネタなんだが、序文とは言えずいぶんネタ割れしてくれるので、欲求不満になるわけでもない。冒頭の「序文集の序文」からしてかなりユーモアたっぷりなので、げらげら笑いながら読めること請け合いである(笑えるのは一部の人種に限るかもしれないけど)。もちろん、ただのユーモア小説(?)ではないのは当然のことで、「バクテリア本」の序文を書いているのは実は誰なんだろう……なんてことに思い至ると、背筋をヒヤッとしたものが流れたりして。
後半に収められているのは、「シンギュラリティに向かうことなく人類とのコミュニケーションを維持することにした超人工知能の講演録」なんだが、まぁとにかくこの人工知能が、高慢ちきで鼻持ちならない上に、やたらと話が長くて脱線ばかりする「嫌われるオヤジ」の代表みたいなヤツなので(と書くとこっちもユーモア系みたいだが、こちらはすごく硬派)、めちゃめちゃ面白いけど、読むのになかなか骨が折れる。たぶん、1割も理解できたかどうか怪しいので、こっちは老後に線引きながら読むことにしよう。
つーか、老後のためにレムの著作を集めておいた方がいいような気がしてきたな。マジで。
◆ ただただし [あー、あー。テストツッコミです。テストツッコミです。]
◆ waka [> Microsoft製品はVer.3からが買い時。 ま、マジで……? ベータ版や1stを手に入れ、 大量のバグ報..]
◆ ただただし [>ベータ版や1stを手に入れ、 >大量のバグ報告とクレームを送るのが、 >MSとのつきあい方だと思ってました。 ..]