Gauche > Archives > 2009/09/24

2009/09/24 00:04:43 UTCshiro
#
C++のlambda、キャプチャする変数を明示させるけど、あの情報は書かなくてもコンパイラにはわかるはずだよね。copy captureかreference captureかはブロック内で変更があるかどうかで区別すればいいし。
#
なんで明示させるんだろう? プログラマにキャプチャを意識してほしいから?
2009/09/24 01:24:46 UTCとおる。
#
C++ のことだから、誰も思いつかないような理由がありそうですねぇ。
2009/09/24 01:31:00 UTCshiro
#
ほー、gdb7にはreverse debuggingが入るそうな http://www.gnu.org/software/gdb/news/reversible.html
#
cpuの実行モデルが分かってれば操作を逆転させることはできるだろうけど、順方向の操作で上書きされちゃう情報についてはあらかじめどこかに全部取っておくのかな? どうやってるんだろう。
2009/09/24 02:11:46 UTChigepon
#
SRFI-103, 104 がきましたね。
#
103: Library Files
  http://srfi.schemers.org/srfi-103/
104: Library Files Utilitie
  http://srfi.schemers.org/srfi-104/
#
R6RS 用の SRFI を整理している方の提案なので実用的なものと期待。(まだ読んでない)
2009/09/24 02:24:14 UTCshiro
#
%-encodingするくらいならモジュール名の方を制限しちゃってもいいんじゃないかという気がするけどねぇ>srfi-103。
#
%-encodingされたファイルをさらにwebで公開したらわりと悲しいことになる予感。
2009/09/24 03:30:03 UTChigepon
#
Mosh では他に倣って %-encoding していますが、意図的に % encode 対象は避けるようにしています。srfi は避けようがないのでしょうがないですが。
2009/09/24 03:51:31 UTCとおる。
#
Apache の mod_rewrite をつかうと、%2f と / が区別できなかったりするんですよね。
2009/09/24 03:52:19 UTCshiro
#
む、それはshowstopperかも? 具体的にはどうなるの?
2009/09/24 03:53:43 UTCとおる。
#
んーと、ぼくがはまったのは、
#
たとえば、http://x.example.com/y.html を /x/y.html に rewrite するというルールを書いて、
#
あ、ちがう、
#
http://example.com/userid/category/entry.html みたいな URL を、
#
/documentroot/userid/category/entry.html というファイルにマップしようとして、
#
この category に「%2f」がふくまれている、たとえば、「R%2FB」みたいなカテゴリー名にしちゃうと、
#
mod_rewrite は、/documentroot/userid/R%2FB/entry.html じゃなくて、
#
/documentroot/userid/R/B/entry.html にマッピングしてしまう。
#
二重にエンコードすればいいのかな。
2009/09/24 03:59:30 UTCshiro
#
http://example.com/userid/R%25FBB/entry.html みたいに?
#
%252fBだった
2009/09/24 04:00:10 UTCとおる。
#
ああ、そうですね。
2009/09/24 04:01:52 UTCshiro
#
filesystemレベルとurlレベルでのencodingがあるから、2重にエンコードする必要があるってのはそうだと思う。
#
ただ、概念的にはパスコンポーネントに分割した上で%-decodeされるはずの情報が、rewrite後に単一パスコンポーネントが複数パスコンポーネントにマップされる形になってるのは気持ち悪いね。
#
http://example.com/userid/R/B/entry.html と区別がつかなくなるってことだからな。
2009/09/24 04:07:14 UTCとおる。
#
あ、あと、ブラウザの実装にもよるんだったかなぁ。
#
本来、~ を %7e に変換するのは、RFC 的に間違っているんですが、
#
その間違いを吸収するためかなにかで、ブラウザが余計なエンコードを内部的にデコードしてしまったりする。
2009/09/24 04:20:42 UTCとおる。
#
ぼくがはまったのは 2003 年くらいの話なので、いまでは何かしら標準的な逃げ方があるかも。
2009/09/24 05:46:55 UTCshiro
#
まてよ。なんか変だなapache。
#
%-encodingはpath componentごとに行わないといけないなら
#
url-path := "/" (%-encoded-component
#
url-path = "/"? (%-encoded-compoent "/")* %-encoded-component?
#
一度デコードしたものをまた"/"でくっつけるときには再びエンコードしないとならないはず
#
ああ、だからそもそもRewriteRuleをパス形式で書くのが原理的におかしいんだ。コンポーネントのリストで書かないと。
#
でもそれじゃわかりづらいだろうなあ。
2009/09/24 06:13:10 UTCとおる。
#
BASE64 のほうが短くてよさそう。ASCII 互換じゃないけど。
#
あ、UTF-7 とかよさそうかも。
2009/09/24 22:07:18 UTCshiro
#
うーん、R6RSのimport specはやっぱり必要以上に複雑な気がする…
#
(import (prefix (only foo a b c) foo:)) と
#
(import (only (prefix foo foo:) foo:a foo:b foo:c)) は等価だけど
#
こういう柔軟性って必要なのか?
#
前者のように書けるのにわざわざ後者のように書きたいケースってあるかな?
2009/09/24 22:26:05 UTCとおる。
#
There's more than one way to do it!
2009/09/24 22:31:22 UTCshiro
#
(import (prefix (prefix (prefix (prefix foo f) o) o) :)) とか
#
(import (rename (rename foo (ying yang) (yang ying)) (ying yang) (yang ying))) とか
#
無意味な遊びの余地は大量にあるが
#
陰陽はyin yangか。ying yangじゃなくて。