2006-02-15
■[rails] スペジェネ (3)
rails trunk の取り方を間違ってました orz 。
http://wota.jp/ac/?date=20060204#c03 ←これダメポ。
EdgeRails にあるように、
$ rake freeze_edge
(1回目はこれでやってた)
もしくは、
$ cd vendor $ rm -rf rails $ svn co http: //dev.rubyonrails.org/svn/rails/trunk rails
で、vendor/ 以下じゃなくて、vendor/rails/ 以下に引っ張って来ないといけなかったのでした。
1回目で script/destroy したり色々いじりすぎたので、2回目プロジェクト全体を作り直したときに、間違ったっぽ。
■ レクラ
たった8行なんだけど、思いのほか楽しめてしまった。時間もそれなりにかかる。行間が広いというのかな? 言葉の重ね合わせがブレインパワーを欲すからかな?
おかげで「イクラでちゅー」と読めるようになった。(進歩!千里の道も一歩から!)
■[ruby][memo] ハッシュのソート
Hash#sort (実際は Enumerable)は、デフォルトで "ORDER BY key" だと嬉しい。よくやる操作だから。
#!/usr/bin/ruby
class Symbol
def <=> b
self.to_s <=> b.to_s
end
end
class Hash
alias :default_sort :sort
def sort &b
unless b.nil?
self.default_sort &b
else
self.to_a.sort { |a,b|
a[0] <=> b[0]
}
end
end
end
h = {
:e => 1,
:d => 2,
:c => 3,
:b => 4,
:a => 5,
}
if __FILE__ == $0
puts "Not sorted"
h.each do |k,v|
puts "\t" + [k,v].join(": ")
end
puts "ORDER BY key"
h.sort.each do |k,v|
puts "\t" + [k,v].join(": ")
end
puts "ORDER BY val"
h.sort{|a,b| a[1] <=> b[1]}.each do |k,v|
puts "\t" + [k,v].join(": ")
end
end
Symbol の <=> も標準であると嬉しいかも。1.9 とか知らん。
■[ruby][memo] 多重配列の複数オーダーソート
ついでなんで。
Generator なんて初めて使いまった。Generator っていうより Iterator だよね。
#!/usr/bin/ruby
require 'generator'
class Symbol
def <=> b
self.to_s <=> b.to_s
end
end
def rcmp(a, b, i)
c = i.current
if a[c] == b[c] && i.next?
i.next
return rcmp(a, b, i)
else
i.rewind
return a[c] <=> b[c]
end
end
class Array
def order_by(*order)
return nil unless order
if order.size == 1
return self.sort_by{|e| e[order[0]]}
else
i = Generator.new(order)
return self.sort { |a,b| rcmp(a, b, i) }
end
end
end
m_ary = [
["a", 5],
["b", 4],
["a", 3],
["c", 2],
["a", 1],
]
if __FILE__ == $0
puts "ORDER BY 1:"
m_ary.order_by(1).each do |e|
puts "\t" + e.inspect
end
puts "ORDER BY 0,1:"
m_ary.order_by(0, 1).each do |e|
puts "\t" + e.inspect
end
puts "ORDER BY 0 but Symbol"
m_ary.map{|e| [e[0].to_sym, e[1]]}.order_by(0).each do |e|
puts "\t" + e.inspect
end
end
わざわざ作らないでも Math にありそう、もしくは、ググれば落ちてそう。
LINQ っぽく Ruby で書く 時、順番を複数指定したい場合、カンマ区切り等で簡単に書けないよなと思って。けど、趣旨がずれてしまって、ブロック取らないし Struct や オブジェクトを要素とした配列にも対応してない。誰かやって。
あー、しまった、sort_by で配列を受け付けるように手を入れた方が良かったかぁ?
■[apache] Indexes
アイタタタタ。
今の今まで、AllowOverride ディレクティブで使う Indexes と Options ディレクティブで使う Indexes を混同してた。
前者は .htaccess で DirectoryIndex 等の使用を許可する。
後者はディレクトリにアクセスがあり、且つ、DirectoryIndex に当たるファイルが無い場合にファイルリストを表示するか否かを制御する。
# httpd.conf
<Directory /home/*/public_html>
AllowOverride Options, ...
...
</Directory>
# .htaccess Options +Indexes DirectoryIndex hoge.cgi
とかして、うまくいかないもんだから、httpd.conf の DirectoryIndex に直書きしてたよ……。
■[ui] Blog ツール査定
良い:
URL が良い。
悪い:
- Movable Type
- ヤプログ!
- Yahoo! ブログ
- goo ブログ
- Seasaa ブログ
- Livedoor Blog
特定の日付ページから最新ページに、マウスジェスチャの「上のディレクトリに移動」で移動できないから。403エラー「指定されたページまたはファイルは存在しません。」になるから。
リンク探してクリックするのダルイですよ。真面目にダルイですよ。
幸い、他の記事もみたいと思う blog は tDiary かはてなのどっちかが多いけど。技術系 blog が偏ってて良かった。





正直すまんかった。本気ですまんかった。(by 健介)