この日記って本当に Ruby ネタ少ないっすね。
というわけでたまには Ruby プログラムでも書いてみようかと思いました。 お題は笹田さんの日記 ( http://www.namikilab.tuat.ac.jp/~sasada/diary/200212.html#d10 ) に載ってた「ハッシュの中身を値で降順にソートして出力」。 キーは文字列、値は整数限定で。
# require: ruby 1.7 table.to_a.sort_by {|k,v| -v }.each do |k,v| printf "%-40s: %d\n", k, v end
キーを軸にソートするなら table.keys.sort とするかもしれない。 値を軸にするならいったん配列化するのは避けられないかな……。
sort_by は「1.7 のいい感じな機能」の一つですね。 1.7 のメソッドで注目したいのは Array#sort_by, Enumerable#inject/reject/select, String#slice(re,n)、 てなとこでしょうか。こいつらは実に便利です。
ちなみに 1.6 ではどうするか。1.6 にないメソッドは使わない、 というのでは損です。文法レベルの機能欠落ならどうにもなりませんが、 メソッドの一つ二つ程度ならよいほうに合わせてしまうのがいいと思います。
unless [].respond_to?(:sort_by) class Array def sort_by list = [] each_with_index do |i,idx| list.push [yield(i),idx,i] end list.sort.map {|tmp,idx,i| i } end end end
こういうことをやるときは map_with_index (あるいは Iterator) が欲しくなる。
(11:49)
library じゃなくて libretto L1 ですけど。 ちゃんとシャットダウンしたはずなんですが、 起動したらいきなりスキャンディスクが始まりました。 これはなんかの前兆でしょうか。
つーか今年はどうしてこんなにハードディスクに苦しむのでしょうか。 通算三台もクラッシュしてるんですけど。 Alpha の二台目も今にも飛びそうだし、CDR 焼きマシンの HDD も挙動不審。 これで libretto まで飛んだら洒落にならない。
(12:16)
少し前に Slashdot jp で「Windows Update を強制に」 ていうトピックがありましたけど、あれって Me でもそうなんですね。 数日前に Windows Update を (手動で) かけたんですが、 その後、タスクトレイに変なアイコンが入ってて、 重要パッチを自動であてるようになってました。 いや、ダウンロードだけして、パッチあてる前に確認だったかな? 方法は三種類くらいから選べるようになってたと思います。
つーわけで速攻でオフ。あんなもん勝手にやられてたまるかよ。 なにより気にくわないのは、アップデートされることよりも、 こっちの動作と非同期だってこと。こっちが文章書いてようが ビデオ見てようが、いきなり最前面にポップアップしてきやがる。 そういうことされると集中力が切れるんだ。
でもまあ、強制アップデート自体はいいと思うんです。 手動でオフにできるんなら別に構いません。 「ちゃんと動いてくれるのならば」、 セキュリティパッチなんかは勝手にあててくれるほうが 楽でいいんじゃないですか。
(12:29)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
あ、先に書かれてた…。
Enumerable#sort_byなのでto_aは不要では。
ぐお、sort_by って Enumerable でしたっけ。
やはり一発 refe すべきだった。
つーか、Enumerable#rejectとかselectは1.6にもあるじゃん。
だめすぎ。
はじめまして。読んでたらお茶を吹いてしまいました。RHG早く欲しいけど、買うと卒業できないのです。多分。
届きました。ありがとうございます。
p.482, /これが排他ロックになってなっているわけだ。/s/(なって)+/\1/
ありがとうございます。ぼくも今もう二個みつけました。がーん。
s/ナーバス/ナイーブ/ってミスがありましたよ。