RSpecでわざとCSRF対策に引っかかったフリをする

前提として

protect_from_forgery with: :exception

で例外を上げるようにしているものとする。

このうえで Controller Spec をこのように使って該当する例外を上げるようにするとイケる。

descibe FooController, type: :controller do
  controller {
    before_action {
      raise ApplicationController::InvalidAuthenticityToken
    }
  }

  it {
    post :create, params
  }
end

こんな感じ。controller instance に対して任意の before_action を追加できる RSpec つええ。

ちなみに RSpec 3.5 で試したところ、新しい Controller Spec の代わりにオススメされている Request Spec では上のような書き方で Controller の中身に手を加えることはできなかった。他に方法あるんだろうか。

参考

RailsのCSRF保護を詳しく調べてみた(翻訳)

CIツールを飛ばし読み

CI は Corporate Identity じゃなくて Continuous Integration1の略ね。

  • Hudson
    • Javaなので思考停止
  • CruiseControl
    • Javaなので思考停止。ただし Rake とかに対応してるよってはっきり書いてあるし、その辺はいいかも
  • CruiseControl.rb
    • CruiseControl の Ruby port. ちょっと Ruby のバージョンに対して繊細すぎる。本番投入は難しい気がする。
  • DamageControl
    • もう active じゃないよって書いてある
  • Buildbot
    • 要 Python + Twisted

以下ちょっと個別に。

Hudson

個人的には日本語の情報はこれがいちばん目につくんだけど、Java なので LL 文化圏と合わないんじゃないかとか、FreeBSD 使いのサガとして Java はちょっと面倒くさい2という思い込みがあって尻込みしている。

Hudson の方で各種パッケージシステム用に respository を用意しているので Java さえ動いていればたぶんインストールは簡単。plugin システムで、plugin がやたら豊富。でも plugin て Java で書くんだよね。それを思うとやっぱり尻込みしたり。(Python なら書けるのかっていうとそんなことないけど。)

CruiseControl

これも Jav(ry

バカっぽい話だけどドキュメントの見た目は Hudson より好み。いや、こういうフィーリングって大事だと思うんです。

対応 Build ツールに sh script が入っていて PHPUnit が入っている…ように見えるけど PHPUnit の方は 404 だった。うむ。まぁ PHPUnit に対応してても個人的には嬉しくないんだけど。

対応 SCM がちょっと少ない?

Buildbot

mixi の使っている CI ツール

Python のバージョンも VCS も比較的広くサポートしているので他のものより導入が楽かも。パッケージ対応はこんな感じ。

portsYES
MacPortsYES
CentOS 5.0NO
Debian 5.0YES

ドキュメントは地味だけど、こういう形がいちばんしっくりくる old type なので問題なし。

まだ何もしないよ

いずれにせよ、すごく古くテストも揃っていないアプリなどが対象になるので、すぐにしゃかりきになって頑張ろうという気はないです。とりあえず流してみただけ。

そんなことより Cucumber はどうした。Hudson と組み合わせてる人がいるのは分かった。やっぱ Cucumber で外からテストするのが先なのかなぁ。でもそれこそ Nokogiri で対処できるかどうかも怪しいしなぁ。(まだもやもやしている。)

  1. 日本語訳は自分の中では継続的統合がメジャーなんだけど、どれもしっくりはこないですなぁ。 

  2. 今はそんなことないはず。 

AirMac Express (802.11n)で WPA で WDS

超ハマった。

以前 2台の AirMac Express で WDS のときに、802.11n 対応してない AirMac Express で WEP の WDS は組んでいたんだけど、このときの AirMac が立て続けに壊れてしまったので、立て続けに 802.11n のものに入れ替えた、というか入れ替わってしまった。

1台が壊れただけのときは以前と同じ要領で WDS を組むことができていたんだけど、2台とも 802.11n になった途端、WDS だけ動かなくなってしまった。ログを見ると

WPA handshake failed

出まくってて、やっぱ WPA では無理なのか?と思っていたのだが、ほとんど丸一日掛かりで以前のノウハウが邪魔していたことが発覚。

WEP のときは各 AirMac で別々のワイヤレスネットワークを作成しなければいけなかったが、WPA になったら同一ネットワークにしておかないと WDS を組めないようだ。

これが仕様なのかどうか分からない、というか WDS はちゃんとした仕様がまだ固まっていないらしく1、802.11s 待ちという状態らしい。とにかく AirMac 同士ではこんなことが起きました、としか言えないわけだ。

頼む。ちゃんと書いといてくれ。こんなもん分かるか!

  1. さらに原則的に WDS で WPA は不可能らしい。全部 en.wikipedia で読みかじり。 

Pager が microformat に対応するとちょっとかっこいいかも

channel の仕組み以外にこれはいい!と思うものがあまりない Pear ライブラリ(ひどい)だけども、Pager は単純に楽なので重宝している。が、HTML の生成を全部委ねちゃう形になるので、search-results-example - Microformats 対応させようと思っても中をゴリゴリいじるか、できあがった HTML をもう一回分解して処理しないといけない。それだとなんかださいし面倒くさい。

Bloglines を使い始めた

ちょー今さらだけど Bloglines を使い始めてみた。これまでは Sage 一本で、もう Feed 増やしたらやってらんねーなと思っていたので全然増やさないできていた。(せいぜい数十しかないんだけど。)

どうして使い始めてみようと思ったのかまったく思い出せないんだけど、ふと思い出してチェックしてる Feed を Bloglines に登録し始めた。最初絶対 OPML でインポートできるはず、と思っていたのだが見つからず、手作業で登録し終わった段階でリンクを発見したorz

豆粒みたいな文字で切れそうになった。

なんだこれは。たださんは Bloglines に文句垂れてたか? アンチ豆粒モヒカンはこれ絶対文句垂れてなきゃだめだろ。なんだ body の font-size: 69% って。あほか。Firefox 1.5 の @-moz-document で対応。ぷんすか。とりあえずこんな感じ。

@-moz-document domain( bloglines.com ) {
  body {
    font-size: 100% !important;
  }
  body#subscriptions {
    font-size: 80% !important;
  }
}

なんか記事タイトルとかバランスが悪いが、細かいことはまた今度考えよう。

正直、「これそんなにいいのか?」というのが感想。ただ、

  • JavaScript バリバリの subscriptions の編集
  • フォルダ単位で一本のフィードにして読める

のは嬉しい。あと、

  • どこでも同じ状態でチェックできるのが楽

だなと思った。クライアントサイドのリーダーだと使うクライアントごとにインストールしないといけないし、チェックの状況も二重管理になっちゃうので。記事保存機能なんかも便利そう。

アカウントは10ヶ月前に取得していた…。面倒くさくて試してないサービス、まだまだあるなぁ。

とりあえずおさらい

IPA、「コンピュータセキュリティ〜2004年の傾向と対策」を公表 (CNET Japan)

  • 「フィッシング」「フィッシング」「フィッシング」
  • Google を使ってサーバからサーバへ(phpBB)

辺りが印象に残ってるかな。PHP のセキュリティ関係の記事をよく目にするようになったような気もする。

話が広がらないので

otsune さんとこで

office裁判は「河合被告が言いたい事いったら、検事と裁判官がバカにされたと受け取った」という分析

そういう言い方する人いないよねということなのですが、いやそれは真っ先に思いましたよ。というか公判中にそういうことを書いたような気がするのですが、日記ひっくり返しても見つかりませんでした。どこに書いたんだろう。

ただ前回なぜ書かなかったかというと、それ書いても全然話が広がらないか、逆に話が明後日の方向に向かってしまうのでやめたのです。なんか堀江社長がマスコミから叩かれまくっているのも office 氏の有罪も権力にたてついたからじゃねーの的な話でどんどん膨らんじゃって収拾がつかなくなってしまいました。この手のネタはまだうまく着地させる方法が分かっていないらしい。

説教講座カテゴリ分け再編

どう考えても今後も内容が増えなさそうなカテゴリを他に統合。これはコンテンツへのアクセススピードを上げるための accesskey 属性に使える文字の節約のためでもある。成果がきちんと反映されるのはまた後日。

課題:ファイルの移動、目次の修正

Windows で tDiary の Wiki スタイルが使えなかった。

[2006-07-18 追記]Windows であるか否かに関わらず、tDiary はキャッシュが強力なのでそれが悪さすることがある。問題が発生した時点でのキャッシュが生きていたり、問題が発生した時点でのトランザクションが生きていたりするともうどうにもならなくなったりする。この時点でこの問題にどう対処したか忘れてしまったが、ばっさり消して入れ直して、途中でスタイルの変更をせずに最初から Wiki スタイルにする、などの手順を踏んだらイケたような気がする。スーパーリロードするだけで直るときもあるし、キャッシュ全部消さなきゃいけないときもある。

理由は不明。ユーザー向けの掲示板に書き込んだので何かリアクションがあるかも。こちらのテストでは

  • ruby 1.6.8 (2003-01-14) [i586-mswin32]
  • ruby 1.8.1 (2003-12-25) [i386-mswin32]

make your @data_path to writable via httpd. Permission denied \
- ../../tdiary/dat/200404 (TDiary::PermissionError)

d:/home/www/PCTRAI~1/PUBLIC~1/log/tdiary/pstoreio.rb:32:in `transaction'
d:/home/www/PCTRAI~1/PUBLIC~1/log/tdiary.rb:1498:in `initialize'
d:/home/www/PCTRAI~1/PUBLIC~1/log/index.rb:55:in `new'
d:/home/www/PCTRAI~1/PUBLIC~1/log/index.rb:55

なエラーが出た。これはなぜかリロードすると通常通り使える。そしてリロードすると同じエラーが出る。permission error じゃーないんだよな。対処方法分からず。

もう一つは

  • ruby 1.8.1 (2003-12-25) [i386-cygwin]

で、こっちはほぼ完璧に動作しているように見えるが、Wiki スタイルで書けない。設定して反映されているように見えるが、実際には tDiary スタイルでしか書けない。

これも理由分からず。

個人的に SmartDoc なんか熱かったり

http://slashdot.jp/article.pl?sid=02/02/19/2115218

メモ代わりに貼っておく。興味があるだけで動かしてみてるわけじゃありません。昔から Texinfo とか、騒ぐだけで何もしてない自分。ああ。

About

例によって個人のなんちゃらです