Island Life

2004/07/26

uri.escape

天泣記 7/26

Unix では ? をファイル名に使えるので、 ~/public_html/question?mark というファイルを作れて、とある HTTP サーバ(のとある設定)では、これは http://host/~user/question%3Fmark という URI になる。

この URI を URI.escape の結果として生成できるかというと...

そもそも、URIのescape規則はURIの各コンポーネント(path, query, fragment) に対して適用されるものなんで (しかもschemeによってどのコンポーネントが decodeされるべきかが異なる)、順番を守ることが必要なはず。

  • 受ける時: コンポーネントに分割→コンポーネントごとにdecode
  • 出す時:コンポーネントごとにencode→繋げてひとつのuriに

原理的に、既にくっついちゃったひとつのuriを正しくencodeすることはできない。

そこを何とか…って わけですか。でも、%XXの'%'は変えない、というのも、 「大抵は動くがたまに動かないことがある」という嫌な動作になりそう。 (例:パラメータとしてURLを取るリダイレクタに、'#'を含むURLを パラメータとして渡した、というURLをもう一度そのようなリダイレクタに 渡した場合とか)。そんなん万に一つもないだろうから無視!というのも、 まあ、ありでしょう。 私はそういう落し穴はあらかじめ埋めておかないと不安な質なんで気になりますが。

内部的にくっつけないで持っといて、最後の最後に文字列にするって 方向だと、Common Lispのpathnameくらいちゃんと(ごちゃごちゃと)やらんと いかん羽目になりそうな気もする。

ところで、この「落し穴は潰しておきたい」というのは、たぶんSchemerの 多くに共通して見られる傾向だと思うのだけれど、自分の場合、これは 怠惰から来ているように思える。つまり、一度考えたことはもう考えたくないのだ。 特にでかいシステムを作って行く場合、コンポーネントを煉瓦のように 積み重ねてゆくわけだけど、途中の煉瓦に怪しいのがあると、 どんどん上に積んでいった時に全体が傾く。そしたら、上に積んだ煉瓦を ばらして原因を突き止めて、それを置き換えて、また上に積み直さなくちゃ ならない。それが面倒臭い。

Lightweight Languageなら取り崩しも積み直しも楽だし、 まあおおざっぱに1万行以下くらいの小さなプログラムなら たいして問題にはならないだろう。でもいつか、数十万行以上の規模の システムになった時には、土台を直すのは大変。 (行数で規模を測るのはなんだけど、目安としては通じるかと思う)。

そうは言ってもやっぱり穴はどうしても出来る。あれだけ侃々諤々と 議論して作られたR5RSにも、かなりでかい穴がある。 穴の無い仕様なんて作れないのかもしれない。が、それを夢見るのが Schemerなのかもしれん。

Tags: Programming, Scheme

2004/07/19

CLtL2の謎

ふたつに割けたCLtL2を今日もひっくりかえして調べ物をしていると、 INDEXに次のようなエントリがあった。

kludges, 1-971

1-971は本文全てってことである。これは、 「Common Lisp全てがkludgeの固まりである」というSteeleの隠されたメッセージ、 なのか?!

Tag: Lisp

2004/07/18

読売新聞「博士号取っても定職なし、文科省が「余剰博士」対策へ」から引用。

民間企業も「博士は社会経験が乏しく、視野も狭いので使いにくい」などの理由で 博士の採用を避ける傾向がある。

うーむ。現在では、博士を持ってるってことは、 優秀な研究者としての能力の証にはならないだろうけど、 「自分で仕事を見つけて(作って)管理して遂行できる」って証では あるんじゃないかしらん。だから、スーパーバイズされる必要は無くて、 ディレクターかVPの直下である程度独立して仕事ができて、 必要ならばジュニアレベルの部下を持たせることができる、 くらいの評価はあってもよさそうな気がする。 まあ、現実がどうかはともかく、建前としては。

社内で経験を積んで上がって行くパスだけではなく、 シニアレベルで人材が流動するパスが多い米国だからそう思うのか。 米国では、不景気でシニアレベルの給料は払えん、という理由で 採用を避けられる傾向はありそうだが。

Tag: Career

2004/07/07

DSL復活。いやー、もうダイアルアップはつらいのなんの。 人間贅沢を覚えると堕落するなあ。

今までlava.netのDSLサービスを利用してたが、Verizonの提供する やつの方がかなり安いので乗り換えた。lava.netは地元の企業だし、 tech supportで話がわかる人と直接話せるので応援したい気持ちは やまやまなんだが、こっちも経費に余裕があるわけじゃないしなあ。 (ただ、lava.netは固定IP、自宅サーバOKだった。Verizonは 個人向けサービスなのでdhcp、自宅サーバ不可。うちはサーバは 外出ししてるから問題ないけど)。

ただメールアカウントはlava.netにキープするので、popとsmtpを over sshでやるようにする。Mewが何でもやってくれるので sshサーバ名を設定するだけだ。便利だなあ。

Tag: 生活

2004/06/28

引越しにつき、しばしオフラインになります。

Tag: 生活

More entries ...