83's

Top > Archives > 2007 > August

August 02, 2007

はてブするときに選択文字列をコメントに入れる 22:28

はてブのコメントに補助説明のつもりで元のページから引用することがあるんだけど、 勤勉なオレは毎回毎回

  1. 引用したい部分をコピー
  2. ブックマークレットをクリック
  3. ブックマークのコメント欄に「」を打つ
  4. 「」の中に引用部分をペースト

という作業をやっていて不思議に思わなかった/(^o^)\ というかめんどくさくなって引用しなくなってる。

1回や2回ならともかく……繰り返しは悪! 悪・遅・斬!  引用したい部分を選択してブックマークレット起動するとそれがコメント欄に入っててくれるようにした。

まずブックマークレット。

その他の変種を使ってる場合はブックマーク追加ページのURLのquery stringに'&sel='+escape(document.getSelection())をつければおk。

そしてグリモン( =ω=.)つquoteeasily.user.js

オレ仕様なので選択した文字列を「」で囲むようになってるけど、 変えたい場合は上のgreasemonkeyスクリプトを一旦ローカルに保存してちょこちょこっと変更した後 Firefoxにドラッグしてくればインストールできます。

August 09, 2007

JSONPのキャッシュ戦略 22:06

どうしよう。コールバック別にキャッシュするのもなんかもったいない。

単にコールバックのところだけ変わる場合はJSON部分だけキャッシュしといて コールバックはLuaで付け足したら……とか考えてみた。節約してる感じがして心が落ち着く。

lighttpd with mod_magnetの例。

if string.find(lighty.env["uri.path"], '^/json/') then
  s, e, f = string.find(lighty.env["uri.query"] or "", "jsonp=([^&]+)")

  if f then
    lighty.header["Content-type"] = "text/javascript"
    lighty.content = {f, '(', {filename = lighty.env["physical.path"]}, ');'}
    return 200
  end
end

でも今Apacheなんだよなぁ。そっちはどうなるんだろ。

一番いいのは無駄な汎用性は捨ててコールバックの関数名決め打ちにすることだな。 オレしか使わないし……(´Д⊂)

August 21, 2007

rake specしたらdevelopmentのデータベースがテストに使われて( ゚д゚)ポカーン 05:10

ここのところ、既存のアプリケーションの大幅なページ構成の変更と機能追加のために がちゃがちゃとソースに手を入れてプロトタイプを作っていた。 インタフェースとデザインに悩んでいるのがほとんどだったけども。 引き出しが少ないんだよなぁ。

イメージが固まるまで追加・削除・変更が続くので テストなんか書いてられないことに気がついて、 久しぶりにテストのことを忘れてとりあえず動くようにコードを書く……あー早い。

rakeしたらきっとFFFFFFFFFFFFFFFFFFFFFFFFFFFってなってるw  でもそんなの関係ねぇ! そんなの関係ねぇ!

で、作業が一段落したところで恐いもの見たさでrake specってやってみたわけだけど、 developmentのデータベースから数百MのデータがごそーとDELETEされて 代わりにfixturesのデータがぽつんと入っているという状態になった(#^ω^)ピキピキ

ちょっと前はこんなことなかったのに。 そう言えばsvn:externalsにしてるrspecとrspec_on_railsが更新されてたなぁ。 そのせいか。

spec_helper.rbを変更したら直った。

- ENV["RAILS_ENV"] ||= "test"
+ ENV["RAILS_ENV"] = "test"

test以外にすることがあるの……?

最近のspec_helper.rbでは修正されてる。 微妙に無駄な時間を過ごしたぜ。そしてこのエントリも久々の更新にしては微妙。

August 23, 2007

rake spec:uncommitted 02:43

なさそうなのでtest:uncommittedを移植してみた。 test:uncommittedを使った試しがないのでこれも使わない可能性大w

rspec_base = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec/lib')
$LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
require 'spec/rake/spectask'
require 'spec/translator'

desc "Run specs changed since last checkin (only Subversion)"
Spec::Rake::SpecTask.new("spec:uncommitted" => "db:test:prepare") do |t|
  changed_since_checkin = silence_stderr { `svn status` }.map {|path| path.chomp[7 .. -1] }

  specs = changed_since_checkin.select {|path| path =~ %r{spec/.*_spec\.rb} }
  specs += changed_since_checkin.select {|path| path =~ %r{(app/(models|controllers)|lib)/.*\.rb} } \
            .map {|path| 'spec/' + path.sub(/\Aapp\//, '').sub(/(?=\.rb)/, '_spec') } \
            .select {|path| File.exist?(path) }

  t.spec_files = specs.uniq
  t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
end

これをrspec_uncommitted.rakeみたいな名前にしてlib/tasksに放りこむ。

ちなみにrake spec:recentはRSpec on Rails rake task for Recent Specs にある。 spec:uncommittedの頭のrequireを追加しないと動かないと思うんだけど……。 あとspec/spec.optsを読むようにt.spec_optsのところを変更すると ほかのタスクと同じになっていい感じ。

さて、特定のdescribeitvimから実行するのは確かに便利なんだけど、 その間vimが使えなくて困る。10秒くらい何もできないのが辛い……。

spec:recentがあればscreenの別のwindowで走らせてすかさずvimに戻れるなーと。 rake spec SPEC=spec/controllers/foo_controller_spec.rbなんて いちいち打つのは鬱で仕方ないですよね(ノ∀`)アチャー

あー、どうでもいいけどこのブログのオレオレ記法パーサがヘタレすぎる。 プログラム貼ると記法の記号とかぶってパースエラーになりやすいので 今までエラーになる箇所をいちいちエスケープしてたけど、 もうめんどいからHTML直接書いた。それでもあやしい。

大体なんでpreの中でタグ使うこと想定してんだろう、このオレオレ記法は。 YukiWikiの記法を拡張してるんだけど''なんか空文字列とモロかぶるし、 なまじエスケープなんかができるもんだから予期せぬところでエスケープされておかしなことに。 時々バックスラッシュの数とかおかしい場合があるかもしれないけどそのせいです。