Twitter: @jijixi_org
Xbox Live: jijixi
まだログを見てないから (件の箇所を見せてもらうことにした) はっきりしないけど、対応のしようがないような状況だったら tDiary は諦めて、どっかのブログサービスに移転するしか無いかもしれない。
できればコメントも RSS に載せてくれるのが良いんだけど、そういうとこあったっけなあ……
まあ、はてなが無難かなーと思ってアカウント取ってみた。 ちょろちょろいじってみたら、わりと今までと同じ感じにできたんで一応公開しとく→ http://d.hatena.ne.jp/jijixi/
使い続けるかは今のところ不明。
最初は livedoor Reader のために livedoor のアカウントがあるんで、それ使おうか…… と思ったんだけど、広告がうるさすぎて全く好きになれんからやめた。
広告が気になる人間としては、やっぱはてなが無難かもしれない。 RSS にコメントが載らないのは…… がまんするしかないのかなあ。
ケータイ系サーチエンジンのボットどもがあまりに行儀悪くてキレた。
/cgi-bin/diary/index.rb?category=Ocaml;year=2089
こんなリクエスト送ってくるなんて頭おかしいとしか思えん。 こんなんやられたら無限に組み合わせが存在するだろ。 いくら meta タグで noindex とかやってもキリが無いわ。 実際、大量にこの手のアクセスがある。
で、マジ頭来たんで .htaccess にこんなん書いた↓ (UA のパターンは tDiary を参考にした)
RewriteCond %{HTTP_USER_AGENT} "(bot|spider|antenna|crawler|moget|slurp|Y!J-SRD|Y!J-MBS)" [NC]
RewriteCond %{QUERY_STRING} "category="
RewriteRule ^(.+) - [F,L]
文法間違えてなければ、これで少しは静かになるんじゃないかなあ。
昨日の話の続き。
連番でアクセスしてきてるわけじゃないから確実ではないけど、昨日みたいなリクエストというのは「数字を指定する場所みたいだから適当に入れて試してみた」というのではなく、純粋にリンクを辿って到達したものだと信じたい。 というか、そんなことやるやつはクラッカー扱いしても良いと思うし。
で、リンクを辿ってどうして year=2089 とかが出てくるかというと、
あとは、彼らなりに気を使って一気にアクセスせずに分散してクロールしてるつもり (だから連番じゃない) という流れなんじゃないかな。 この想像が正しいとすると、tDiary は構造的に行儀の悪いボットから軽い DoS を受ける運命にあるようにも思える。
一番良い解決法は、リンク先が表示すべきデータを持たないならそもそもリンクにしないってことだろうけど、それだといじるとこデカそうだしパフォーマンスにも影響しそうなのがちょっと心配。 かと言って、データが無いからといって問答無用で 404 を返すってのもユーザビリティ的にどうよと思う。
とすると、次善策としては相手がボットのときだけ (あるいはそれ以外の指定ができても良いけど) データが無い場合には 404 を返す、みたいな機能があれば良いのかな。
実はもうあるよ、とか、プラグイン入れればできるよ、とかって話があれば情報プリーズ。 まあ、わしは昨日やった対処で十分だと思うけど、それができない人とかもいるかもしれないし。
特徴的なとこだけ。
ちゃんと集計してないけど、ざっと見た感じ Y!J-SRD が一番ヒドイ。 1666 年とか 2350 年とかっての見た日にゃ、ほんとぐったりだわ(苦笑
あとちょっと違うリクエストのしかただけど、変な感じなのがこれ↓
リクエスト自体は date 系ページへのものなんだけど、リファラが category 系ページのものになってる。 少なくとも category 系ページの nofollow 指定を無視してるということではあるんだろう、たぶん。
今回 CGI 止められた件の直接的な原因は、これまで書いたボットたちではないんだけど (まあ同時期にそれなりにやつらからのアクセスがあるから、要因の一つではあるかもしれないが)、それ以外で集中アクセスしてきたやつの UA が以下。
つーか 1 は何なんだろな。 どう見ても UA の頭の部分だけのマッチでごにょごにょやってるのを回避させるためにでっち上げたようにしか見えん。 2 もそんな感じではあるけど、無印の WinXP とか使ってるなら、もしかしたら有り得るのかな。 少なくとも大抵の環境なら、この後ろに .Net なんちゃらみたいなのがくっついてるはずだが。
とりあえず 1 は無条件で拒否しちゃって良い気がする。 2 は微妙なんだけど、とりあえずリファラ無しでいきなり date 系ページをリクエストしてるやつは拒否して良いんじゃないかって感じ。 こいつら css とか読みに行ってないし、どう見ても動きはクローラ的なんだよね。
ということで以下のような設定をしてみようと思う。 もしこれでアクセスできなくなった、という人はメールか他のブラウザからのツッコミで教えてもらえれば対処できるかも知れません。
RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.0 \(compatible;\)"
RewriteRule ^(.+) - [F,L]
RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1; SV1\)"
RewriteCond %{HTTP_REFERER} !.
RewriteRule ^(.+) - [F,L]
あと、なんか書き方おかしくね?というツッコミもお待ちしております。
なんか表示に使うためのインスタンス変数がそれぞれ別の名前だったりするんで、似たようなことを何度も何度も書かされたのがちょっとせつない。 trunk とか追いかけてないので、2.2.0 用。 カテゴリ表示、日毎表示、月毎表示、長年日記に対応しているはず。 一応ごくごく簡単に動作確認はしたけど、まあなんかおかしくても知らん(ぉぃ
diff -urp tdiary-2.2.0.orig/index.rb tdiary-2.2.0/index.rb
--- tdiary-2.2.0.orig/index.rb 2007-01-08 14:55:23.000000000 +0900
+++ tdiary-2.2.0/index.rb 2008-07-04 11:05:42.000000000 +0900
@@ -103,6 +103,15 @@ begin
<body>Wait or <a href="#{$!.path}">Click here!</a></body>
</html>]
end
+rescue TDiary::NotFound
+ if @cgi then
+ print @cgi.header( 'status' => CGI::HTTP_STATUS['NOT_FOUND'], 'type' => 'text/html' )
+ else
+ print "Status: 404 Not Found\n"
+ print "Content-Type: text/html\n\n"
+ end
+ puts "<h1>404 Not Found</h1>"
+ puts "<div>#{' ' * 500}</div>"
rescue Exception
if @cgi then
print @cgi.header( 'status' => CGI::HTTP_STATUS['SERVER_ERROR'], 'type' => 'text/html' )
diff -urp tdiary-2.2.0.orig/misc/plugin/category.rb tdiary-2.2.0/misc/plugin/category.rb
--- tdiary-2.2.0.orig/misc/plugin/category.rb 2007-09-27 22:57:22.000000000 +0900
+++ tdiary-2.2.0/misc/plugin/category.rb 2008-07-04 11:29:24.000000000 +0900
@@ -109,6 +109,8 @@ def category_list_sections
years = info.years
r = ''
+ raise ::TDiary::NotFound if @categorized.empty? and bot?
+
@categorized.keys.sort.each do |c|
info.category = c
if @category_icon[c]
diff -urp tdiary-2.2.0.orig/tdiary.rb tdiary-2.2.0/tdiary.rb
--- tdiary-2.2.0.orig/tdiary.rb 2007-12-15 22:55:06.000000000 +0900
+++ tdiary-2.2.0/tdiary.rb 2008-07-04 12:07:13.000000000 +0900
@@ -406,6 +406,7 @@ module TDiary
class PermissionError < TDiaryError; end
class PluginError < TDiaryError; end
class BadStyleError < TDiaryError; end
+ class NotFound < TDiaryError; end
#
# class IOBase
@@ -1711,6 +1717,14 @@ EOS
@diary ? @diary.last_modified : Time::at( 0 )
end
+ def eval_rhtml( prefix = '' )
+ if not @diary and @conf.bot?
+ raise NotFound
+ else
+ super(prefix)
+ end
+ end
+
protected
def load( date )
if not @diary or (@diary.date.dup + 12*60*60).gmtime.strftime( '%Y%m%d' ) != date.dup.gmtime.strftime( '%Y%m%d' ) then
@@ -1788,10 +1802,24 @@ EOS
end
#
+ # class TDiaryMonthBase
+ # base of TDiaryMonth and TDiaryNYear
+ #
+ class TDiaryMonthBase < TDiaryView
+ def eval_rhtml( prefix = '' )
+ if @diaries.empty? and @conf.bot?
+ raise NotFound
+ else
+ super(prefix)
+ end
+ end
+ end
+
+ #
# class TDiaryMonth
# show month mode view
#
- class TDiaryMonth < TDiaryView
+ class TDiaryMonth < TDiaryMonthBase
def initialize( cgi, rhtml, conf )
super
@@ -1822,7 +1850,7 @@ EOS
# class TDiaryNYear
# show nyear mode view
#
- class TDiaryNYear < TDiaryView
+ class TDiaryNYear < TDiaryMonthBase
def initialize(cgi, rhtml, conf)
super
つーか、ハードタブ使ってるコードの diff ってどう取るのが正しいんだろ。 ちゃんとパッチあたるんかな、これ。 まあ、大した分量じゃないんで手パッチでもね。
ちなみに、Ruby のコードに diff の p オプション使ったことなかったんで試しに使ってみたら、なんか微妙にうまくいってるところもあって大変微妙。 対応してないなら全くうまくいかないと思うんで、一応対応してるってことなんかな。
ともあれ、こんなんでもよければ叩き台にでもしてください。> しばたさん
(補足)
「存在するけど非表示の日記」については考慮してないので、実質的に表示するものが無くてもデータとして非表示にした分が存在する場合には 404 にならないはず。 まあ、ありえない日付を延々と辿られるのが嫌だって話が出発点だし、この程度は許容範囲だと思うけど。
(/補足)
ほんとは TDiary::TDiaryBase に
def has_data? true end
みたいなメソッドを作っておいて、do_eval_rhtml メソッドではこれを使って分岐。 制御する必要のあるサブクラスではそれぞれ has_data? をオーバーライド。
…… っていう感じにしたかったんだけど、date 系の場合は initialize の時点で必要なデータが揃うのに、category 系の場合プラグイン内じゃないと必要なデータが揃わなくて、それが実行されるのは do_eval_rhtml の最後のとこだっていうのがネックになって諦めた。 少なくとも @categorized を埋める部分をプラグインから TDiaryCategoryView に移さなきゃならなくなって、そうするともう大掛かりすぎるでしょ。
んで結局、表示すべきデータの有無を一つのインターフェイスに纏められない時点で、それぞれのクラスの分を別々に書いても同じことだってことになって、あんな感じでお茶を濁した形。
なんつーか、TDiaryCategoryView なんていうクラスがある時点で、具体的な処理をやる部分がプラグイン (少なくとも今の形式のプラグイン) になってるのは変な気はしないでもない。 過去のしがらみっぽい気がするけど、trunk はどうなってんのかな。
昨日買ってちょろっとやったんだけど、サイレントヒル好きの心をくすぐる良い雰囲気を醸し出してる。
…… のだが…… (以下、文章はうろおぼえの超適当)
見たまえげれげれ君、呪いのゲームはすべてこの同じメールアドレスから送信されているんだ。 このアドレスはずっと以前につぶれて今では廃屋になっている病院のものだ。 廃屋からゲームが送られてくるなんておかしいだろう。 だから君はその廃屋を調べに行きたまえ。
…… みたいな流れにポカーンてなって萎えた。 もうどっからツッコんでいいものやら。 ついさっきまでホラーゲームだったのに、いきなりシュールギャグの世界になったのかと思ったよ。
行かねーよ、ばか。
なのに行ってしまう主人公げれげれ。あほか。 っていうかなんつー名前付けてんの、わし。 や、だって名前入力画面がやたらドラクエっぽくてつい。 とんぬらとどっちにするか迷ったんだけどさ。
まあ、これが主人公がアホなのをいいことに言葉巧みに操ろうというなんちゃら先生の策略なんであれば許せる…… か?
今日の新事実。「メールアドレスは建物に付属する」 もうね(ry
シャーリーの記憶が戻ったのは死亡フラグくさいなーと思ってたが、実際そうだったのはともかく、ちょっと意外な死に方をしたな。 色々と後々影響しそうだ。
ギアスキャンセラーは仲間に引き入れれば強力な武器になるから、どうせいずれそうなるんだろーと思ってたが、実際そうだったのはともかく、ちょっと意外な…… あれ、なんかオレンジがかっこいい?
という感じの、大枠では予想通りでありながら細部では想像を裏切られたのがちょっとおもしろかった今日の放映分でしたとさ。
ちょっと続ける自信が無くなってきた。
なんつーかね、リアルパートの操作性のひどさと、やらされることのバランスが悪すぎると思うんだ。 あえて動かしにくい操作方法を設定して、パニックに陥ったときにうまく動けない感じを再現するというのはバイオハザードで用いられた手法なんだけど、まあ一定の効果はあると思う。 でも、その操作性でやたら作業的なことをやらされるのがもう……
四階のどこだかに行けと言われるんだが、階ごとに毎度階段の手前に敵が待ち構えてる。 で、無理矢理走り抜けて、ということはできないので、毎回敵を誘導しながらやりすごす。 うっかり敵に触ったらゲームオーバーでその面の最初から作業をやり直し。
なんかもう、やることが作業的すぎる上にその作業が操作性の問題で非常にたるい。 もう「怖い」より「かったる」の方が強くなりすぎて全然やる気が出ん...orz
うまいなー。
ちなみに 12 話放映以降、削除と復活が繰り広げられていた「キラッ☆ 」動画 (sm3830572) は 現在の「無限にリピート」バージョンがとうとう「黙認」(諦めたとも言う) 指定を受けたのか、五日ほど生き残って 20 万再生突破。 みんな "飼い馴らされ" すぎw
しかしこの手の動画はニコで見てこそ価値があるよなー。 IOK とかおもしろすぎる。 あ、IOK ってのは「今 (I)、俺を見て (O) キラッ☆てした (K)」 の略らしいよ。
なんか 12 話は 7 話とは違う方向で伝説を作ったね。 「矢を放つ〜」のところで目がハートのやつがいるのは気付いてたけど、鼻血吹いて倒れてるやつまでいるのはワロタw
と、逆に心配になってくる今日この頃。 二位と 11.5 ゲーム差ってなんだよ(笑
ちなみにパ・リーグでは首位と最下位のゲーム差が 10 だったりとか。
で、もしこのままの勢いで阪神が優勝したとして、うっかり間違ってプレイオフで負けて日本シリーズ出場を逃しちゃったりしたら…… 大阪で暴動起きるんとちゃうかな(苦笑
あとまあ阪神とは逆の意味で独走を続けてる某チームも…… がんばれ。
試しに UA 偽装して表示させてみた。 …… そもそも meta タグ出力されてないってか。 それじゃあやつらは行儀が悪いってわけではないのかな。(やつらの UA には tDiary からケータイだと認識される文字列が含まれているので、おそらくケータイバージョンのデータが見えているはず)
そうすると一概にやつらを責めるわけにはいかないのかもしれないが、でもやっぱウザいことには変わりないので、この前のパッチはそれなりに有効かもしんない。
ちなみに例のパッチはこの日記にも適用してある。 まあ、category 系ページについては mod_rewrite ではじいちゃってるけど、date 系のページでは多少恩恵があるかもしれん。
あと、あのパッチの機能を使いたい人は、tdiary.conf の @options['bot'] に 'Y!J-SRD' と 'Y!J-MBS' を追加しておいた方が幸せになれると思う。
前にブルーチーズはガチなやつが好きと書いたんだが、あれを書いてしばらくしたら近所のマックスバリュにそのガチなやつが入荷されるようになった。 まさか関係者にこの日記見られてる?(無い無い)
結構「素人にはおすすめできない」系のガチ仕様なので、セイコーマートで売ってるやつみたいにモリモリ食ったりするとたぶん倒れる(苦笑
ちびりちびりと食わなきゃだめ。 一気に食うと酔っ払うんだよね。 酒で酔うんじゃなく、イカゴロ一気に食ってふらふらになるのと似た感じ。
で、チーズをちびりちびり食いながら、黒ビールもちびりちびりとやる。 あー、至福。 ちなみに黒ビールだが、最近はプレミアムモルツの黒を常用してる。 一番搾りのよりも味が好みだし、六本パックで 1,200 円とわりと手頃な値段なのも良い。 期間限定とか書いてるんで、いつ無くなるかはわからんけど。
きっちり宣伝効果はいただいた上で、権利を行使するなんてしたたかじゃのう(苦笑
まあ、一番盛り上がってた頃に削除しなかったあたりは空気読んでたと言えるかもね。
何日か前に見かけてパケ買いしそうになりつつ、どうしようか迷ってたんだけど、なんか某所でお墨付きが出てるようなので買ってきた。 オッサンなのでホイホイされます。
うん、これは大変よろしいオッサンホイホイですね。 ナムコット世代は買うべき。
でもファミスタとかファミテニの挙動が微妙に納得行かん。 ホームラン打てって言われて、完璧に打ったつもりがホームランどころかキャッチャーゴロって…… わし、そんなヘタじゃないはずだけどなあ。
おそらくとっくにどっかで誰かが指摘してるだろうけど。
要するに DVD の収録話との関係だと思うけど、第 2 話以降は三話セットになっているという話。 つまり基本的には 3n+1 話が熱い。
11~13 話だけは 12 話の例のアレに持ってかれてる感じはあるけど、ストーリー的には 13 話もいろいろ重要な回だった。 このところランカばかりが目立つので、そろそろシェリルの逆襲が始まるのではないかと思わなくもないが、はてさて。
っていうか、ガリア 4 から離脱した連中が真っ直ぐフロンティアを襲撃に行くとは思わなかったんだよなー。 てっきりシェリル死亡説が流布してから戻ってくるとばっかり思ってたのに。 予想では 16 話で戻ってきて戦場ライブという流れだったんだが、見事に裏切られた(苦笑
もうシェリルは完全に未沙ポジションに入ってギリギリ最後の方まで、地味な役回りを演じることになるのか? とか思ったりしないこともない。 ランカが前に出すぎてて「これは最後くっつかないだろ」感バリバリだしなー。 あまりにもミンメイポジションすぎる。 つーか、14 話を見たら最後にランカは死ぬんじゃないかって気すらしてきてるんだが……
前半は総集編。 でもグレイス側の視点で語られてるから、見逃すわけにはいかない部分でもある。
シェリルの採血サンプルをグレイスがすり替えてたが、その後の「廃棄」宣言などから考えると、何か病院から出てこられなくなるような細工 (例のなんちゃらウイルスだかが混入されてるとか) がされてるのかな。 まあその辺はたぶん、この前、薬のことに気付いていたミシェルが何とかしてくれるんだろう。
その後、シェリルのお見舞いにアルトとランカが現れてスーパーニヤニヤタイム開始。 アルトがんばれw
で、次回はほぼ間違いなく盛り上がる回。 サブタイトルから見てもかなり確率高い。 もしかすると新オープニングも来るかも。
シェリルは結局まだしばらく雌伏の時を過ごさなければならない模様。
Rails とか使ってると ./script/generate model とかしたときに色んな場所にバラバラにファイルが増えるでしょ。 そういうときになんかこう、すぱっと全部のファイルを svn add する方法って無いもんかなと。 短気になって svn add * とかやっちゃうとひどい目にあえるしさ。
今まではまあなんつーか zsh がうまいこと add されてないファイルを補完してくれるのを利用して、ちまちま一個ずつ追加してたんだけど、モデルを五個一気に追加したときにはさすがにやってらんねーと思って
% svn st | awk '/^\?/ {print $2}' | xargs svn add
… てな感じでやってみたんだけどやっぱ長ぇーよ。 なんか svn だけでうまいことやる方法がありそうな気もするんだけどなー。
盛り上がらん!! というかむしろ意図的に盛り下げてきた感じ。
とにもかくにもあの曲がアレなのがあれなんだけど、あれはなんつーか間違って人気が出ちゃわないように周到に計算されたアレさなんだと思われ。
なんかしらんがルカ君がやさぐれてるぞ。 あんなこと言う子じゃなかったのに毒舌すぎw ちなみにあの言葉って和製英語なんだろうか。 辞書には載ってない気がするんだけど。
そんなこんなで、先行きが不安になるようなフラグが乱立しているような気がする今日この頃。 肝心なところでポカやって味方に大損害…… とか、そういう嫌な予感がひしひしとするわけだが。 そして一度は誰もが考えたはずのあのフラグがオズマに忍び寄る。 果して彼は回避できるのか。
ミシェルのハンカチネタに笑う。 あの手のドアが異物を挟み込んだまま閉まるとは思えないんで、ジョークなんだと思うけど。 いや、まさかドアにはハンカチ挟むための仕掛けが!?
ようやく DVD が届いたので見た。 なんかオープニングを差し込む場所が納得いかない気がするのは、ニコに上がってたニセ完全版にそれなりに納得していたからだろうか。 エンディングはどっちになってるんだろうと思ったら、どっちでもなかった。なぜだ。
さて、次はオーディオコメンタリーでも見る (聴く?) か。
きむら(K)さんとこの引用を見て。
27 話の最終決戦でアルトは早々に戦線離脱して一人取り残されてるシェリルを助けに行くんだよ。 で、そっから 1 クール昼ドラをやるわけさ。
ついカッとなってやった。後悔はしていない。
だが使える環境にするまでが大変なので、やっぱりちょっと後悔した。 少なくとも月曜日とかにやるべきじゃなかった。
とりあえず Debian ベースらしいので apt line に etch のやつ突っ込んで足りないものを補填してけば良いのかなーという感じだが、それなら最初っから Debian 入れた方が良かったんじゃね?という気もしないでもない。 まあドライバやらなんやらの調整が必要無いのは楽だったが。
それはそれとして、メモリがなぜか 1GB しか認識されてなくてヘコむ。 もう半分はどこへ行ったんだ...orz
Buffalo のやつ。 AOSS 対応の機器を使うなら楽で良いね。 そうじゃない機器で AOSS が作った長ったらしい SSID やパスフレーズを使うのはかったるいが。 (まあ、それでも設定画面保存して USB メモリとかに入れといてコピペして回れば良いだけだが)
ともあれ、ゲーム機なんかは軒並 AOSS 対応してるので設定は楽だった。 つーか元使ってたアクセスポイントの情報を新しい方にもそのまま使ってやるって手もあったわけだが、なんかそれはそれで負けてるような気もしたりなんだり。
まあそれは良いんだ、問題は「ちょっと思うところがあって」の部分なんだが。 今まではヘボいルータと AirMac Express を合わせて使ってたんだけど、そろそろ AirMac Express を自由にしてやりたいと思ったわけさ。 で、AirMac Extreme を買おうかなーとか思ったんだけど、高いしゲーム機増えたときにめんどいし (パソコンならコピペで余裕だから、ゲーム機のためなら AOSS が使えた方が便利)、もう Buffalo の買っちゃえ別に白くなくたって良いじゃん、となった次第。 そんな感じで買ってきてちまちまセッティングしていて、そこでようやく思い出した。
AirMac Express に USB でプリンタ繋いで共有してるんだった……
結局、Express をフリーにするためにというつもりで機器交換を決行したのに、プリンタ共有のためには Express が必要なのでフリーにはならなかったという。 ケチらないで Extreme 買っときゃ良かった...orz
零シリーズのファンなので wktk しながら買ってきたものの、無線 LAN がどーのこーのですったもんだやってたせいで今ようやく始めたところ。
…… なんだが……
なんか思ってたのと違う気が。 つーかなんでバイオ4みたいな操作系になってんの? だってあんた、わかるでしょ、そんなことされたらさ…… 酔うよ。
Wii リモコンで懐中電灯を操作できるとかってのを読んで、てっきりゼルダで弓とか撃つときみたいな感じだと思ってたのに、実はリモコンで操作できるのは上下方向の向きを変えることだけとか、なんかいろいろ残念な感じがしてならない。 左右はスティックで上下はリモコンで、みたいな同じ系統の操作なのに使うデバイスが違うというのはもうなんというかアホかって感じなんだけど。
あー…… なんか期待してただけにショックが大きいなあ。 この後いくら話が盛り上がっても、このアホな操作系のせいで無駄にストレスを感じなきゃいけないと思うとせつねー。
あと、なんかしらんけどやたら処理落ちするね。 あ、でもこれは逆に味になってる感じはする。 サイレントヒルでラジオに雑音入ったときのようなゾクっとくる感覚。 まあただの処理落ちだから何も起こらないんだけど(笑
そして相も変わらず登場人物の女性たちは「これから不気味な場所を探検してやるぞ〜」という立場の人間とは思えない軽装っぷり。 もう、ほんとこの無駄なお色気要素はやめにしないか?
% しばた [>こんなリクエスト送ってくるなんて頭おかしいとしか思えん。 こりゃひどいですね。]