トップ «前の日記(2006-12-27) 最新 次の日記(2007-01-04)» 編集

Route 477



2006-12-28

[ruby] tempdir.rbが欲しい

Tempfileのディレクトリ版みたいなやつ。tmpdirはシステムのテンポラリディレクトリのパスを教えてくれるだけだ し*1

いつもは

   tmpdir = Dir.tmpdir
   k = 0
   k += 1 while File.exist?(File.join(tmpdir, "hoge#{k}"))
   dir = File.join(tmpdir, "hoge#{k}")
   Dir.mkdir(dir)

みたいな感じで作ってるんだが。dir = Tempdir.new("hoge") でディレクトリ作ってパス名返してくれると嬉しい。

あ、Tempdir.new("hoge") do |dir| ... end とかだともっといいかも(ブロック抜けるときにディレクトリをrm_fする)。

*1 あと片方がtempで片方がtmpなのは気持ち悪い(笑)

[prog] HSPの凄さ

HSPってのは多分、「必要最低限」で成り立ってるんだな。

HSPのサイトを見てもおにたま氏の名前しかないから、多分ほとんどを一人で開発しているのだろう。 GUIアプリからゲームやネットワークまで、さまざまなソフトが作れる環境を開発し、なおかつそれが ここまで広く使われるってのは並みのことじゃない。ていうか、普通は一人でできるってレベルじゃない(笑)。

一人で開発を進める欠点は、どうしても作業量が限られてしまうってことだ。少ない作業量で 言語とライブラリとエディタとドキュメントとウェブサイトを開発しようと思ったら、 どうしたってそれぞれは「広く浅く」にならざるを得ないだろう。 そういう視点で見れば、HSPの言語仕様ってのは限りなく「パーズが簡単なように」できてることに気づく *1

おにたま氏の凄さは「どこまで実装すれば使ってもらえるのに十分か」という「必要最低限」を 見切る能力にあるんじゃないか。

*1 たとえば、最近まで戻り値の構文が無かったりとか、最近まで演算子が右から順に結合してたとか

[ruby] .と..がうざい

Dir.entriesとかDir.foreachとかDir#eachが.と..を渡してくるのがうざい!デフォルトで削っといてくれよ!

まぁDir.glob("foo/bar/*") とかやればいいんだけどさ。

つーかRubyのFileとDirって、他の標準ライブラリに比べて全体的にわかりにくい気がする。 抽象度が低い(ファイルシステム寄りな)APIだからか?

Ruby初心者だったときに結構はまった。 ファイルの移動がmoveじゃなくてrenameだったりとか。ディレクトリの移動もFile.rename使うとか。 Unixに慣れてる人なら当たり前なんだろうけどなぁ。

(追記:そうか、Pathname使えばいいのか。)