2007-11-01から1ヶ月間の記事一覧

Enumerator とブロックの省略

1.9 では Enumerator が組み込みになり、大きく拡張されています。ついでにブロックの省略に対する考え方にも影響があります。結構重大な変更のわりに、この話はあまり議論や周知がされていないような気がしたので、現状の Enumerator について、その機能と…

条件範囲式の使い方

大きめのコンソールで実行してください。 W, H = 44, 54 c = 7 + 42 * W a = [0] * W * H g = d = 0 f = proc do |n| a[c] += 1 o = a.map {|z| " :#"[z, 1] * 2 }.join.scan(/.{#{W * 2}}/) puts "\f" + o.map {|l| l.rstrip }.join("\n") sleep 0.005 d +=…

PEG の実装

PEG 意見交換会に参加できなくて悔しいので、Ruby で書いた PEG の実装を晒します。http://dame.dyndns.org/misc/misc/rpeg-20071125.zip 入力は Pappy 風の言語です。下は PEG のパーサを PEG で書いたもの (rpeg.rpeg) です。 parser RPegParser: { requir…

【楽●天】テクノロジーカンファレンス2007

http://www.rakuten.co.jp/event/10th/tech/conference/index.html を覗いてきました。今回は第一回と言うことで、微妙な点はありました。技術職向けの発表と営業職向けの発表が混ざっていて聴講しにくかったとか、質疑応答がなくて残念とか。でも、楽天の人…

五日市線徒歩、青梅線徒歩 (後編)

今日は青梅線の続きと、五日市線を歩いてきました。ついでに五日市線の廃線部分も歩きました。廃線部分は (元) 武蔵岩井駅から大久野駅経由で武蔵五日市駅までで、8 時半過ぎから 9 時過ぎまでの約 30 分。当時の線路の距離は 2.7 km ですが、分岐部分は後回…

head と tail の由来

前回 Array#tail を提案したとき、「頭(head)以外は全部尻尾(tail)ってのは、名前が。」と言われて初めて、tail という名前が不自然なことに何の疑問も持っていなかった自分に気がつきました。リストの先頭と先頭以外を head/tail と言うのはいつごろからな…

青梅線徒歩 (前編)

紅葉の季節なので、土曜日に奥多摩に行ってきました。そのついでに青梅線を歩いてきました。奥多摩から小作まで、線路の距離で 23.1 km 、道のりで 27.2 km でした。朝 9 時半から夜 18 時半まで約 9 時間。全部下りなので体力的な問題はなかったのですが、…

Array#tail

ary.drop(1) でええやんという衝撃的結末。お騒がせしました。ところで take/drop って名前はどうなんでしょうね。drop は「頭を」落とすとはわからないし、落とした頭を返すのか、落とされた体を返すのか、曖昧な感じ。あとなんとなく破壊的メソッドの印象…

はてなリンク元簡略化ブックマークレット

はてなのリンク元一覧って Google とかのリンクをほぼそのまま晒してて見にくいなーと思ったので、ブックマークレットを書きました。 編集画面を開いて実行すると Google と Yahoo とはてなからのリンク元を短く表示します。例えば、「http://www.google.co.…

left と right のどっちがどっちかわからなくなる病

僕はこの病気の末期患者です。left と right がどっちがどっちか考え出すと数秒フリーズします。日本語の右と左ではそこまでひどくない (でも慢性的に軽度の症状はある) のですが、英語になると特に重篤です。例えば 数年前の ICFP Contest では、アリの向き…

たたみすぎる Array#flatten

Array#flatten は配列をたたむメソッドです。 ary = [ [1], [2, [3], 4], [5] ] p ary.flatten #=> [1, 2, 3, 4, 5] このメソッドは便利に見えて、非常にはまりやすいメソッドです。このメソッドはたたみすぎるんです。上で言うと、[1, 2, [3], 4, 5] を返し…

メソッド呼び出し代入演算子

i = i + 1 を i += 1 と書けるのだから x = x.add(1) を x .= add(1) と書けてもいいのではないか (反語) 。むしろ operator= が導入されたみたいに見えるかな。

【楽●天】テクノロジーカンファレンス2007

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/44186 を覗きに行きます。楽天とか全く知らないのに (笑)

1.9 での each の返り値

p [1, 2, 3].combination(2).each {} #=> [1, 2, 3] p [1, 2, 3].combination(2).to_a.each {} #=> [[1, 2], [1, 3], [2, 3]] なんだか微妙。上の例は combination(2) の返り値 (Enumerator) を返してくれたほうが直感に合う気も。 p [1, 2, 3].combination(…

京急逗子線徒歩、京急久里浜線徒歩、京急本線徒歩 (前編)

土曜日に京急の南の方をやりました。新逗子から金沢八景までの京急逗子線 (路線距離 5.9 km / 道のり 7.0 km) と、三崎口から堀ノ内までの京急久里浜線 (13.4 km / 17.9 km) を歩いた後、京急本線を浦和から金沢八景まで (14.6 km / 17.9 km) を歩きました。…

fisheye view の計算式とプログラム

fisheye view とは、なんかインターフェイスの世界では常識っぽい、フォーカスとなる点を中心に座標をぐにょーんと引き延ばす方法です。日本語が不自由ですみません。要するにこういう変換です。 皇居あたりを中心に線路地図をぐにょーんと引き延ばしていま…