What You'll Wish You'd Known via IRC

面白い。

ぼくらは天才というものを信じたがるんだ。ぼくらが怠けている言い訳ができるからね。

耳が痛い。でも天才は自分の興味あることに完全に没頭できるっていう天才があるんだけどね。

ドキドキするスリルがなくちゃ。 はなんかアレだなと思った。不安は不安だ。結局期待 (希望) が不安を上回る必要があって、んでもってそのボーダーが低くて、スリルを感じるボーダーと近いと、そもそも挑戦できることが限られていたりする。やっていることが少しズレただけでボーダーを越える。「アレ」が何なのかホント微妙だけど……

  1. 興味の持てるプロジェクトを選ぶ
  2. ひと月以内で終わらせられるようなプロジェクト
  3. ちゃんと終わらせられる手段があるようなもの

これってやっぱ重要だよなぁ。最近よく思う。

あんま関係ないけど、自分は秘密に何かするのが好きだ。あるとき、「ふっ」と誰かに見せてみるのが面白い。もちろん失敗したって誰にもばれないってのもある。秘密じゃなくなるとむしろダメになる。だから最近はできるだけ目標は他人に話さないようにしてる。他人に話すと達成した気分になる。話さなければよかったとよく後悔する。

できればもっと早く読みたかった。早く読んだから何か変わったかっていうと疑問だけど。うん。そう。少なくとも16歳のときの自分はこんなの読まなかった。ダメじゃん。

微妙に関係ないけど、好きなことで生活するための仕事をするのって難しいんだよなたぶん。義務になった時点でやる気が失せる。単純に既にある技術内で完結する仕事ならいいだろうけど、そういう仕事ってあるんだろうか。とか考え始めると面倒くさくなってくるわけだけど。

  1. トップ
  2. life
  1. トップ
  2. self
  1. トップ
  2. thinking

数度書いてる。そして未だに定まらない。

普段使う一人称はなんだけれど、なんか文章にしたときに浮く。だからといってを一人称にするのはちょっとアレというか、大人ぶってんじゃねーよとか自分の中にいる常任理事の一人 (こいつは最低限のリアリティを保てと言っているヤツと同一) が拒否権を行使するので使えない。あたしとか、さとぅ☆とかどうよとかいう案は過半数で即否決される。結局文脈的に一人称入れないとおかしいときは自分を使っているんだけど、これも何かお前はどこの空手部だよとか思える。困る。

  1. トップ
  2. self
  3. 一人称について

だいたいの教室は右利きのために黒板に向かって左側に窓がくる。らしい。そんなわけだから大体夕方の教室ってのは一種の幻想性すなわちファンタジーなわけですよ。と。

ファンタジー。

話は変わって、昨日買った初恋サンセットですけど、最後の曲の後に入ってるピアノがよい。よい。でもあれかもメレンゲはサーチライトのほうが好きだな。

  1. トップ
  2. life
  3. 教室についての考察、とかいいつつ

blomemo 2005-01-23 - 消えていくボーッとする時間

これここ最近よく思うことの一つ。暇なとき、いろんなことを考えて発展させて、少し前まで考えていたことが消えて、結局あとから考えるとあんまり覚えていない。

その時間が具体的にどういう風にいいのか、っていうのはうまく説明できない。そりゃ今あらためて考えると電車の中とか、寝る前とか、風呂に入っているときとか何を考えているか覚えてないから。

寝る前とか、もしくはコンピュータの前でぼーっとしているときは日記に書く。

あぁ。これは起きているときの見る夢みたいなもんなのかな。たぶん。

  1. トップ
  2. life
  3. ぼーっとする

前にも書いたけど完全じゃないので。たぶん、これでいいはず。

def safe(lvl, tm=1)
result = nil
tg = nil
th = Thread.start(lvl) do |level|
tg = ThreadGroup.new.add(Thread.current)
$SAFE = level
result = yield
end.join(tm)
tg.list.each {|t| t.kill}
raise TimeoutError unless th
result
end

ThreadGroup を新しく作り、それにカレント実行スレッドを突っ込んで、信頼できないコードから生成されるスレッドを全てこいつの所属させ、実行終了したら kill! kill! kill!

IRC BOT の Ruby コード実行機能をこれにした。まぁしかし! SEGV されたら終りというどうしようもない脆弱性がありますけれども。

  1. トップ
  2. ruby
  3. Ruby コードを安全に実行する。
  1. トップ
  2. prog
  3. Ruby コードを安全に実行する。

def foo(a, b)
yield a + b
end
def fop(a, b, &block)
yield a + b
end
def foq(a, b, &block)
block.call a + b
end

引数に &block を書かないとブロックをとるメソッドなのか取らないメソッドなのかわかりにくい。でもなんか &block を書くとダサい。

二番目の方法だと block という引数を使ってなくてキモい。三番目の方法は一般的なコードじゃなくてキモい。

さて、ホントは上のコードの block.call は block.yield (引数のチェックをしない) になるんだろうけど、NoMethodError がでる。なんでだろ。

$ ruby -v -e 'Proc.new {|t| puts t}.yield("foo")'
ruby 1.8.1 (2003-12-25) [i386-cygwin]
-e:1: undefined method 'yield' for #<Proc:0x100e6dd8@-e:1> (NoMethodError)
exit 1
  1. トップ
  2. ruby
  3. Ruby, ブロック引数をとるメソッド
  1. トップ
  2. prog
  3. Ruby, ブロック引数をとるメソッド