history

青木日記 RSS

<前の日 | この月 | 次の日>

2002-12-10

Ruby

この日記って本当に 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)

飲み会上等

3 日連続だろーが 4 日連続だろーが。

(11:49)

RHG

はつばいびー! いえーい。

HTML 版はまだ準備できてないよー! いえーい。

(11:51)

lib

library じゃなくて libretto L1 ですけど。 ちゃんとシャットダウンしたはずなんですが、 起動したらいきなりスキャンディスクが始まりました。 これはなんかの前兆でしょうか。

つーか今年はどうしてこんなにハードディスクに苦しむのでしょうか。 通算三台もクラッシュしてるんですけど。 Alpha の二台目も今にも飛びそうだし、CDR 焼きマシンの HDD も挙動不審。 これで libretto まで飛んだら洒落にならない。

(12:16)

Windows Update

少し前に Slashdot jp で「Windows Update を強制に」 ていうトピックがありましたけど、あれって Me でもそうなんですね。 数日前に Windows Update を (手動で) かけたんですが、 その後、タスクトレイに変なアイコンが入ってて、 重要パッチを自動であてるようになってました。 いや、ダウンロードだけして、パッチあてる前に確認だったかな? 方法は三種類くらいから選べるようになってたと思います。

つーわけで速攻でオフ。あんなもん勝手にやられてたまるかよ。 なにより気にくわないのは、アップデートされることよりも、 こっちの動作と非同期だってこと。こっちが文章書いてようが ビデオ見てようが、いきなり最前面にポップアップしてきやがる。 そういうことされると集中力が切れるんだ。

でもまあ、強制アップデート自体はいいと思うんです。 手動でオフにできるんなら別に構いません。 「ちゃんと動いてくれるのならば」、 セキュリティパッチなんかは勝手にあててくれるほうが 楽でいいんじゃないですか。

(12:29)

本日のツッコミ(全7件) [ツッコミを入れる]
なかだ (2002-12-10 12:23)

あ、先に書かれてた…。
Enumerable#sort_byなのでto_aは不要では。

あおき (2002-12-10 12:30)

ぐお、sort_by って Enumerable でしたっけ。
やはり一発 refe すべきだった。

あおき (2002-12-10 14:06)

つーか、Enumerable#rejectとかselectは1.6にもあるじゃん。
だめすぎ。

ささだ (2002-12-10 14:43)

はじめまして。読んでたらお茶を吹いてしまいました。RHG早く欲しいけど、買うと卒業できないのです。多分。

なかだ (2002-12-10 16:40)

届きました。ありがとうございます。

p.482, /これが排他ロックになってなっているわけだ。/s/(なって)+/\1/

あおき (2002-12-10 17:17)

ありがとうございます。ぼくも今もう二個みつけました。がーん。

matz (2002-12-11 00:34)

s/ナーバス/ナイーブ/ってミスがありましたよ。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS