Hatena::ブログ(Diary)

LazyLoadLife RSSフィード Twitter

2006-02-15

[] スペジェネ (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回目プロジェクト全体を作り直したときに、間違ったっぽ。


音程と振り付けがわかったので、今度はうまくいきました。PV 3つぐらい見ました。若いっていいですね。

レクラ

たった8行なんだけど、思いのほか楽しめてしまった。時間もそれなりにかかる。行間が広いというのかな? 言葉の重ね合わせがブレインパワーを欲すからかな?


おかげで「イクラでちゅー」と読めるようになった。(進歩!千里の道も一歩から!)

[] RailsConf: 150 additional seats open!

日本Rubyカンファレンスでお金使うし、ボーナスも未だだし、見送りですわ。

[][] ハッシュソート

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 とか知らん。

[][] 多重配列の複数オーダーソート

ついでなんで。

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 で配列を受け付けるように手を入れた方が良かったかぁ?

[] Indexes

アイタタタタ。


今の今まで、AllowOverride ディレクティブで使う IndexesOptions ディレクティブで使う Indexes を混同してた。


前者は .htaccess で DirectoryIndex 等の使用を許可する。

後者ディレクトリアクセスがあり、且つ、DirectoryIndex に当たるファイルが無い場合にファイルリストを表示するか否かを制御する。


# httpd.conf
<Directory /home/*/public_html>
    AllowOverride Options, ...
    ...
</Directory>
# .htaccess
Options +Indexes
DirectoryIndex hoge.cgi

とかして、うまくいかないもんだから、httpd.conf の DirectoryIndex に直書きしてたよ……。

[] Blog ツール査定

良い:

URL が良い。


悪い:

URLムカツク

特定の日付ページから最新ページに、マウスジェスチャの「上のディレクトリに移動」で移動できないから。403エラー「指定されたページまたはファイル存在しません。」になるから。

リンク探してクリックするのダルイですよ。真面目にダルイですよ。


幸い、他の記事もみたいと思う blogtDiaryはてなのどっちかが多いけど。技術blog が偏ってて良かった。

[] ひぐらしのなく頃に

ひぐらしのなく頃に 鬼隠し編(1) ひぐらしのなく頃に 綿流し編(1) ひぐらしのなく頃に 祟殺し編(1)

この前買った。おたく度が高そうだったから。修行中! 本当は『ケロロ軍曹』を買いにいったんだけど、巻数の多さにいつもめげる。


「これってエロゲ?」とか思いながら油断して読んでたら(もちろん妻に隠れて読んでるので深夜だ!)『鬼隠し編』で冷えた。こわいよぉ。

記号だけの検索

Google って記号は省いてるっぽい。プログラミング関係では困るんだよなぁ。UFO 演算子 <=> とか。


Yahoo!検索もアウトだった。

くまくま 2006/02/15 10:14 あー、cd vendor; ln -s . rails が抜けてました!!
正直すまんかった。本気ですまんかった。(by 健介)

babiebabie 2006/02/15 13:18 健介じゃなくて Berryz の誰かで謝って欲しかったです!