Island Life

2010/05/31

消すの取り消し

Firefoxのプロファイルがどう動くのかちょっといじって試してる時に うっかり

  $ rm -rf ~/.mozilla/firefox

としてしまった。あうち。

ホームディレクトリのバックアップを参照しようとしたら

  $ ls /mnt/backup
  ls: reading directory /mnt/backup: Input/output error

うわ。いつ死んだ。

メインで使ってるfirefoxは立ち上げていたままだったので、 とりあえずそれがopenしてるファイルの実体はまだ残っている。 あと、確かbookmarkとかprefs.jsは正常終了時に書き出されるはず。 まあ無くなったら無くなったでひどく困ることはないとは思うのだけど、 ちょっとは不便なので救出を試みる。

  • lsofでプロファイルのディレクトリ名を確認。念のためmkdirしとく。
  • 走ってるfirefoxがオープンしてる、プロファイルディレクトリ以下の ファイルについて、必要そうなものを
    $ cp /proc/{pid}/fd/{n} ~/tmp/firefox/...
    
    などとしてコピー。
  • firefox落として再立ち上げ。
  • profiles.iniも無くなってるから、プロファイルを聞かれる。ここは 新しいのを作ってすぐ終了。
  • コピーしといた *.db ファイルなどを旧プロファイルディレクトリに 戻す。
  • profiles.iniを編集して旧プロファイルを指すようにする。
  • firefoxを起動して拡張を入れ直し。

だいたい元に戻った。保存しといたパスワードの類は綺麗に無くなってたけど。 あれはやっぱり安全のためにオープンしっぱなしにはしないのかな。

まあアホなミスではあったが、バックアップディスクが死んでるのを 発見できて僥倖だった。早速交換せねば。

Tag: System

2010/05/27

リストモナドと非決定性

わかりやすいんだけれど、「リストモナドは非決定性の文脈を表す」 と聞いたときに引っかかるのは、 リストには順序という概念も入っていること。 余分な制約がついてたら

  リストモナドの表す文脈 ⊂ 非決定性の文脈

ってことにならないのだろうか。(もちろんそうだとしても 「リストモナドは非決定性の文脈を表す」という命題は否定されないけれど)。

例えばリンク先のpathFindの例では、試行の順番が究極には networkのソースに与えられてる順番によって決定されちゃってる。 この例だけで言えば、Mapをそのまま使ってるからそうなってるだけであって、 例えばlookup時に値のリストをシャッフルして返すような構造を使えば ソースのリストの順番と試行は無関係になるけれど、 やっぱりlookupから一度リストを返しちゃったら、その順番というのは その後の計算に引きずられる。

いやもちろん、ランダムな試行が欲しければそういうのを書けばいいだけなんだけど。 どっちかというと「順序という制約を暗黙にも含まない形で 非決定性を文脈を表すモナドを実装するとしたらどうなるのかなあ」 という疑問かなあ。

いや実装がある必要はないか。 単に抽象的な、例えばAmbモナドというのがあって、 リストモナドがその一形態、となっているんだったらわかるんだけど。

それともHaskellerはそもそも順序という発想をしないのかも。 答えはすべて記述されている。順序というのは使う人が値を取り出す時に のみ問題になる、そいういうことかなあ。それならまあ、シャッフルが 欲しければ最終的な値を取り出す時にかき混ぜてやればいいってことになる?

Tags: Programming, Haskell, Monad

2010/05/16

ちょっとものを数えたかったのでローカルにcountという関数を定義したら:

  (labels ((count (...)
             ...))
    ...)

Allegro CLに怒られた。

Compiling a function definition for the name count as a labels.
This name is in the common-lisp package and defining it will
be a violation for portable programs.

そりゃ名前はぶつかるけど、俺のcountはローカルな範囲でしか 使わないんだからcl:countをシャドウしていいんだよ。 わかっててやってるんだから好きな名前使わせてくれよ。

Allegroがこんなお節介を焼く理由(のひとつ)は、 CLのマクロが健全ではないからだろうけど。 ローカルなcountのスコープでマクロを使って、その展開形にcl:countの 呼び出しが含まれていると、グローバルなcountを呼ぶつもりがローカルなcountを 呼んじゃう。でもコンパイラはマクロ展開結果を知ってるんだから、 せめて展開してぶつかる時だけ教えてくれてもいいのになあ。

Tags: Lisp, Scheme, Programming

2010/05/15

らむ太語録

  • ら: とうさんどこいくの
  • 私: 歯医者さんに行ってくる
  • ら: はがのちゅうしゃじょう?

らむ太は、「駐車場」=「ちゅうしゃをするところ」=「医者」、だと思っているのだった。 「はが」については こちら

Tag: 生活

2010/05/13

刺さる

stuckの直訳から来てる説。やっぱりそうなんかな。でもstickには「貼り付く」 「くっつく」 という意味もあって、まあもともとは棒で刺してその場を動けなくすることから 来てるんだろうけど、"stuck" と聞くとどうもぺったりと貼り付いちゃったって 方をまずイメージしちゃうな。

私が「刺さる」という言い方を聞いたのはシス管のエンジニアからで、 そのせいか、どっちかというとサーバが固まるイメージがある。 それもファイルシステムとかネットワークとかの低レベルなところが原因で。 クライアント側の障害は…サーバに聞きに行って固まったら「刺さる」ってイメージだけど、 スタンドアローンなアプリが固まった時は自分ではあんまり刺さるとは言わない。

まあ、個人的に抱いてる勝手なイメージだけど。

サーバ側が固まることを wedged とも言う。くさびを打ち込む、が 原義だけど、大きな歯車がごんごん回ってる機械の歯車の間に くさび状の何かが噛んじゃって全体がギギギギ…と止まっちゃうって感じか。 で、「刺さる」という言葉のイメージがなぜかこの「くさび」と 自分の中では結びついている。一応「くさびをさす」という 言い方はあるけど、「差す」と表記することもあるみたいだしなあ。

More entries ...