2005-10-27
script.aculo.usのダメなところ
名前が激しく覚えにくいところ
prototype.jsのマウスホイールイベント
あーいまだにパッチ投げてないや…。英語かくのたいへんpqpq
Greasemonkeyって
一時期のproxomitronっぽいなぁ。proxomitronもフィルタのパッケージ化ができ、簡単に導入削除できてればもっと流行ったんだろうけど。
benchmaker
毎回ベンチマーク(Benchmark.bm うんちゃら)を書くのがめんどくさくなったので作った。benchmarkerとか名前を付けて下記を保存。
#!/usr/bin/env ruby
require 'benchmark'
module Benchmark
class Benchmarker
Times = 1
def setup; end
def teardown; end
def __run(n)
methods = self.class.bm_methods
unless methods.empty?
::Benchmark.bm( methods.map{|c| c.length}.max ) do |bench|
methods.each do |method|
bench.report(method) do
setup
n.times { self.__send__(method) }
teardown
end
end
end
end
end
def self.bm
self.new.__run self::Times
end
def self.benchmark
self.bm
end
private
def self.bm_methods
self.self_methods.reject {|m| m[0..0] == '_' }
end
def self.self_methods
self.instance_methods - self.superclass.instance_methods
end
end
end
if __FILE__ == $0 && File.exists?(ARGV[0])
load ARGV[0]
ObjectSpace.each_object(Class) do |klass|
klass.bm if klass < Benchmark::Benchmarker
end
end
で、どっかのpath通ったところに置いて(置かなくてもいいけど)+xして
benchmark foobench.rb
で。foobench.rbの内容は
class FooBench < Benchmark::Benchmarker
Times = 100000
def setup
@hash = {}
@hash['a'] = 1
@hash[:a] = 1
end
def hash_string
@hash['a']
end
def hash_symbol
@hash[:a]
end
def teardown
end
end
結果は
$ benchmarker foo_bench.rb
user system total real
hash_string 0.370000 0.120000 0.490000 ( 0.489491)
hash_symbol 0.340000 0.110000 0.450000 ( 0.450113)
な感じ。
String#first
げ、ActiveSupportのだったのか。ActiveSupport依存症だわぁ。
TextHelper#strip_tags
Edge Railsに入った。それなりに使えるかも。HTML::Tokenizerとかってaction_controller/vender(たしか)にあるんだけど、単体パッケージじゃないのかしら。
# Strips all HTML tags from the input, including comments. This uses the html-scanner
# tokenizer and so it's HTML parsing ability is limited by that of html-scanner.
#
# Returns the tag free text.
def strip_tags(html)
if html.index("<")
text = ""
tokenizer = HTML::Tokenizer.new(html)
while token = tokenizer.next
node = HTML::Node.parse(nil, 0, 0, token, false)
# result is only the content of any Text nodes
text << node.to_s if node.class == HTML::Text
end
# strip any comments, and if they have a newline at the end (ie. line with
# only a comment) strip that too
text.gsub(/[\n]?/m, "")
else
html # already plain text
end
end
blog査定
My blog is worth $51,373.14.
How much is your blog worth?
売る売る!(そういうものではない)
食間に服用して下さい
食事と食事の間だったのか!!!普通に食事中に服用していたよ…。
食間に服用して下さいと言われたので、食事の最中に薬を服用してしまったという笑い話がありますが
もはや笑い話。
石油ストーブの臭い
がしてきた。冬だなぁ。こたつ入ってみかんくいたい。