Island Life

2010/05/09

WiLiKiのspammer

だいたい機械的なコメントスパム(ログによれば一日数回程度)は ヒューリスティックなフィルタで弾いているのだけれど、ここしばらく 見るようになったのは既存のリンクに並べてwiki記法でリンクを置いて行く spamで、これは機械的にはlegitimateな書き込みと判別するのが困難なので ブラックリストで弾くようにしている。

このspammer君は不定期だがだいたい月1回のペースでWiLiKiを訪れ、 色々なページに数回、spamリンクを書き込もうとする。何回かにいっぺんは ブラックリストにないurlで書き込みに成功することもある。 手口が同じなので同一業者かとも思うのだけれど、 IPはばらばらなのでproxy経由だろうか。 これまでチュニジア、ドイツ、ロシア、ウクライナ、 台湾、日本、米国、コロンビアあたりのアドレスを見た。

今年頭くらいまでは、一回のバッチのspam attemptでも一回ごとにIPを 変えてきてたのだけれど、先々月あたりからは一回のバッチでは同じIPを 使うようになっている。面倒になったのか、それとも別の業者なのかは知らない。 ただ、それなりにうまくリンクを紛れ込ませるので、 人手でやってるのだろうか、だとしたらご苦労なことである。

Tag: Programming

2010/05/09

らむ太の質問

ら: とうさんねぇねぇ、ひとはいきてるの?
私: 人は生きてるよ
ら: とりもいきてるの?
私: 鳥も生きてるよ
ら: きもいきてるの?
私: 木も生きてるよ
ら: かぜでこうやってうごくから?
私: 風は関係ないな。すぐには見えないけれど、だんだん大きくなるからだよ。 葉っぱが出てきたり、花が咲いたりするでしょう。
ら: かぜもいきてるの?
私: 風は生きてないなあ
ら: かめらもいきてるの?
私: カメラは生きてないよ。
ら: うぃー、かしっ。ってするよ
私: カメラは機械だからね。動くから生きているってわけじゃないんだよ。
ら: くるまもいきてるの?
私: 車は生きてないよ
ら: ろぼっともいきてるの?
私: ロボットは生きてないよ。やっぱり機械だからね
ら: おおきなろぼっとはいきてるの?
私: 大きくてもロボットは機械だよ
ら: おばけはいきてるの?
私: おばけは…うーん、一度死んでるから生きてない、かなあ。 でも妖怪のことなら生きているって言えるかなあ。難しいなあ。

Tag: 生活

2010/05/08

らむ太の失敗

らむ太はカメラ (コンデジ) が大好きで、持たせると色んなものを撮りまくって 悦に入っているのだけれど、今日は食事かなんかの後に手を洗わずにカメラに 触っていたらしく、かみさんに「カメラ汚れるでしょー」と注意されてた。

それからしばらくして、らむ太がしおしおとやってきた。 「とうさん、こわれちゃった」

見るとカメラが濡れている。

「どっかに落としたの?」

「ううん、きれいにしようとしてあらったの」

なるほど…らむ太なりに一生懸命考えたのだねぇ。 もう充分衝撃を受けたようなので、「電池が入ってる機械は洗っちゃダメなんだよ」とだけ諭しておく。

とりあえずばらせるところまでばらして乾燥中。

(追記2010/05/10 01:56:12 UTC): 一日乾かして組み立てたら一応機能しているが、 フラッシュが点かなくなってしまった。

Tag: 生活

2010/05/08

静的型がうらやましいとき

「静的型の方が簡潔に書ける場合がある」「いやそれは動的型では悪いスタイルでは」 みたいなやりとりなんだけども。

この、「戻り値の型によって多相化できる」っていうのは静的型の 強力なところだと思う。結局、動的型よりも純粋に利用できる情報量が多い わけだから。

でも、動的型でどうしても出来ないかというとそうでもなくて、 その多相関数がランタイムに実際に呼ばれる際はその関数がどう 使われるかがわかっていることが多いわけだから、 caller側のコンテキストをcallee側で参照してディスパッチできれば 同じようなことが出来る可能性はある。 WiLiKi:Scheme:ExplicitMonadなんかはそのひとつの例と言えるかも。

ちょっとややこしいのは、たとえば返り値がそのまま多相の引数を取る関数に 渡されていたりすると、直接のcaller自身にはほんとにどの型を 扱ってるのかわからないこと。静的型ならコンパイル時に どんどん辿って行って型をつけてくれるか、つけきれなければエラーに なるんだけれども。

この「わからないこともある」っていうのがある限り、 いつでも汎用的に使える手にはならないんだよな>戻り値の型でディスパッチ。

戻り値の型がわからなかったらとりあえず可能性のある計算をする promiseの集合を返して、いざ型がわかったところで必要なものだけ計算する、 とかやったら動的型でもいけるかも。でもlazyになっちゃうから eagerな処理系にそのまま入れるのは難しそうだ。

Tags: Programming, Language

2010/05/08

Redditの舞台裏

Redditのファウンダーによるretrospective。 彼らがredditでアクティブに開発していたのは少し前だから、 このへんの内容は今のweb業界の人にとっては常識なのかもしれないけれど、 個人的には参考になった。

特におもしろかったのはこのへん。

  1. まっとうにrelationalなモデルでやろうとすると、スキーマの変更が 足を引っ張って破綻する。結局全てを「もの」と「もの」と「その関係」の 三つ組でストアした。
  2. memcachedを (1)関数のメモワイズに使用 (2)時限つきデータとして rate limitingに活用 (「一秒以内に同一ユーザからリクエストがあったら拒否」とか)
  3. 非同期に出来る計算はキューしておいてオフラインで。 (awardの計算は、関係するデータを全部テキストにダンプしてオフラインでやった、とか)

1.はrdfのtriple <subject,predicate,object> そのものじゃん。 ということは グラフデータベースの出番だろう。

Tag: Programming

More entries ...