細かいことは以前の日記に書いてあるので、ここではビャッとソースを引用。
# index_list.rb # # 「最新」「月」表示に対応した目次を表示。 # recent_listやtitle_listと違い日付のリンク先は日別表示でなくページ内。 # その為に、diary.rhtmlをいじって日付にアンカーを付ける必要がある。 # 骨格にrecent_list.rbを使用。 # [2005-06-15] tdiary-2.1.1 N日表示対応 # [2005-04-20] 月表示では昇順に。 def index_list(date_format = nil, show_title = true) if(@mode == 'latest') limit = @conf.latest_limit; elsif(@mode == 'month') limit = 31; else return ''; end date_format ||= @date_format; latest_start_ymd = @date.strftime('%Y%m%d'); result = %Q[<ul class="index-list">\n]; b = lambda {|ymd| next if(@mode == 'latest' && latest_start_ymd < ymd); break if(limit <= 0); diary = @diaries[ymd]; next unless(diary.visible?); result << %Q[\t<li><a href="##{ymd}">#{diary.date.strftime(date_format)}</a>]; if(show_title && diary.title) result << %Q[ #{diary.title}]; end result << %Q[\n\t\t<ul class="index-list-item">\n]; i = 1; if(!@plugin_files.grep(/\/category.rb$/).empty? && diary.categorizable?) diary.each_section{|section| result << "\t\t<li>"; result << section.categories.collect{|c| category_anchor("#{c}")}.join; result << ' '+section.stripped_subtitle_to_html if(section.stripped_subtitle); result << "</li>\n"; i += 1; } else diary.each_section{|section| if(section.subtitle) result << %Q[\t\t<li>#{section.subtitle_to_html}</li>\n]; end i += 1; } end result << "\t\t</ul>\n\t</li>\n"; limit -= 1; } begin @diaries.keys.sort.send( (@mode=='latest' ? :reverse_each : :each), &b); rescue LocalJumpError # <- break # Procオブジェクトで breakは使えないのだろうけど # それをブロックとして渡してるんやからエラーにせんでもええやん。> ruby-1.8.2 end result << "<ul>"; return apply_plugin(result); end
[1].each{ break }
は無問題。
f = proc { break } [1].each(&f)
は
in `each': break from proc-closure (LocalJumpError)
となる。差別だよ。撤廃撤廃。[ruby-dev:12070]。orz
状況によって Array#eachと Array#reverse_eachを使い分けたくて、でも処理内容は一緒だからブロックを使いまわそうとして、予め Procオブジェクトにしておいたら上記のエラーに遭遇した、と。
def hoge(&block) puts 'hoge start' yield puts 'hoge end' end hoge { puts 'next'; next } hoge { puts 'break'; break }
これ↑の実行結果はこう↓なる。
hoge start next hoge end hoge start break
ブロックで breakすると、hogeの yieldより後ろが実行されてない。
def hoge(&block) puts 'hoge start' begin yield ensure puts 'hoge end' end end hoge { puts 'next'; next } hoge { puts 'break'; break }
こう↑すると勝手に実行をスキップされない。
hoge start next hoge end hoge start break hoge end
yieldの呼び出しには注意が必要だったのだな。
そういうことです。補足はありません。
脳移植により他人の脳片を埋め込まれた男が変わっていく。それを自分で自覚しているところに残酷さがある。記憶の中の自分と現在の自分の考え方・性格・能力が移植の前後で滑らかにつながっていないから、自分の記憶が他人の記憶に思えたり(1)、現在の自分が自分でなく思えてくる(2)*。
主人公・成瀬純一の言葉
生きているというのは、単に呼吸しているとか、心臓が動いているとかってことじゃない。脳波が出ているってことでもない。それは足跡を残すってことなんだ。後ろにある足跡を見て、たしかに自分がつけたものだとわかるのが、生きているということなんだ。だけど今の俺は、かつて自分が残してきたはずの足跡を見ても、それが自分のものだとはどうしても思えない。二十年以上生きてきたはずの成瀬純一は、もうどこにもいないんだ (p.p.236-237)
それに対する堂元博士の言葉
君は昔自分がつけたはずの足跡が、自分のものでなくなったという。しかしそれでもいいではないか。(略)。だが彼ら(注・老人)はやがて自分の足跡がどこにあるのかも、自分が足跡をつけたという事実さえ忘れてしまうという状態になる。(p.p.260-261)
他人事じゃあないんだよね。脳移植はなくても自分が自分でなくなる恐怖ってのは長寿とセットになって誰にでも降りかかってくるんよね。
* (1)と(2)では自分の依って立つものが違うんだけど一体どっちが「自分」なんでしょうね。成瀬純一は記憶の方が本来の自分だと「知って」たわけだけど、それを隠されると……。
最終更新: 2009-11-19T03:57+0900
耳: 310 (62%)、読: 375 (75%) でした。括弧内は各500点満点とした時の得点率。順位は上から 25.7%。会場で 4人捕まえたらその内 1人は自分より上だったってこと。
やっぱりネックはリスニングだった。今回のテストの全体平均(310.5)を 0.5ポイント下回ってる。偏差値50を割るなんてありえない。英語を聞く機会がそもそも日常に存在しないのだから無理もないが。映画は吹き替えより字幕に限るといいつつも、その映画を見ないのだからね。唯一ともいえる英語を耳にする機会はかくして消える。
解き終わっての予想はそれぞれ 55% 75%だったから、リスニングでは勘がそこそこ当たってたということ。
about(かなりやっつけ気味)を書いてみたものの、書いてる間じゅう こんなやり方じゃダメだと(脳内)警告が出る。
今更なことを幾つも挙げてみたけれど結論は最初から出ていて、(共通部分埋め込みの為に)プラグインが使えて、(迷子のページとか迷子の訪問者が出ないように)ディレクトリを掘って自由にページを配置できる Wikiを探そうと思っている。Perlは触りたくないし、PHPはここ(SAKURA Internet レンタルサーバ/ライトプラン)では使えないので、特に Rubyで書かれたものを。
探すとか言いつつやはり最初から Hikiが頭にあったりする。プラグインは使えるし、ディレクトリは多分カテゴリで代用できる。