From: Hiroharu Sugawara Date: 2003-11-06T03:37:18+09:00 Subject: [ruby-list:38762] Re: ruby-dev summary 21730-21822 /draft すすです。 英訳へのコメントなんで、別にしました。 rubyist宛がよかったでしょうか。 まず、同じ文章なので、遅ればせながら、[ruby-list:38642] にコメントしたかったのですが、 On Wed, 5 Nov 2003 18:59:30 +0900 Minero Aoki wrote: > > [ruby-dev:21616] access ENV on $SAFE==4 (contd.) > > From the previous ruby-dev summary ([ruby-talk:84412]): > > Hidetoshi NAGAI found that Safe interpreter of Tcl/Tk > don't allow to refer some informations of environments, > such as env, OS, library and so on. And he asked On Thu, 23 Oct 2003 14:39:55 +0900 TAKAHASHI Masayoshi wrote: > 高橋征義です。 > > > > doesn't allow > > did not ですね。 > > あ、こういう一般的な事実でも時制の一致があるんでしたっけ(自信なし) 「いつもの習慣、通例、普遍的真理・法則とか、を強調するときに、 時制の一致を無視して現在形でもよし」というのが英文法の説明ですので、 現在形でもOKなんですが、上のthat以下の内容は将来変わりうることに (つまり、ある一時点の事実に)思えたので、過去形の方がよいと判断したのでした。 ※ 以下も reporting structureが、たくさん出現しますが、省略します。 information は数えられない名詞です。、 referの目的語は、参照先ですね。 allowという言葉の選び方は引っかかります。 and so on は不要でしょう。 found that the safe interpreter of Tcl/Tk cannot refer to its operating (running) environment such as ENV, OS, and libraries. 実行環境って、上の言い方でいいのかな? > such as env, OS, library and so on. And he asked > whether we should forbid to use ENV, RUBY_PLATFORM > and $LOAD_PATH when $SAFE=4. so he proposed to restrict the accesses to ENV, RUBY_PLATFORM, and $LOAD_PATH env-vars when $SAFE=4 [skip] > $SAFE >= 4 でのアクセスが禁止される. > > We cannot refer/modify $LOAD_PATH if $SAFE>=4. $LOAD_PATH cannot be referred nor modified when $SAFE >= 4. ifは仮想なので、単なる条件なら when の方がいいと思います。 [skip] > Following new methods are defined. introduced [skip] > : ENV.allow_insecure_ref(varname) > $SAFE >= 4 での環境変数 name の読み出しを許可する. > Allows to refer VARNAME environment variable for insecure > programs. Enables insecure programs to refer VARNAME env-var. プログラム言語の英文教科書が手元にないので、 refer か refer to かは、わからないです。 変数の参照と、変数の値の参照で、言い方が違うと思います。 [skip] > すべての環境変数のデフォルト設定は「読み出し可」である. > ( $SAFE >= 4 での書き込みは常に例外を発生することに注意.) > We can refer all environment variables by default, > for backward compatibility. By default, any insecure programs can refer to all the env-vars for backward compatibilify. > : ENV.deny_insecure_ref(varname) > > $SAFE >= 4 での環境変数 name の読み出しを禁止する. > > Hides VARNAME environment variable from insecure programs. Disables insecure programs to refer VARNAME env-var. [skip] > 読み出し禁止に設定した環境変数を $SAFE >= 4 で読み出そうとすると, > その環境変数が存在しない場合と同様に nil が返る. The reference to the deny_insecure_ref'ed env-var when $SAFE>=4 returns nil as if that to undefined env-vars does. > また,読み出し禁止の環境変数は ENV.keys 等でも表示されない 一応の訳は Also, the deny_insecure_ref'ed env-vars cannot be accessed by methods such as ENV.keys 二重否定は難しいし、元の日本語も曖昧なので、思い切って Insecure programs can access only env-vars which are not deny_insecure_ref'ed. と書いたら、どうでしょう。 説明は、こちらの文の方が先? [skip] > : ENV.insecure_ref_denied?(name) -> bool > > ENV.insecure_ref_allowed?(name) の否定 > > Returns true if VARNAME is hidden from insecure programs. 対句にする Returns true unless insecure programs can refer VARNAME env-var. VARNAMEが環境変数でない場合は、どうなるのでしょうか? > : ENV.insecure_ref_allowings -> [String] > > $SAFE >= 4 でのアクセスが許可されている環境変数のリストを得る. > > Returns a list of variable names which insecure programs > can refer. Returns a list of env-vars that insecure programs can refer to. [skip] > > : ENV.insecure_ref_denyings -> [String] > > $SAFE >= 4 でのアクセスが禁止されている環境変数のリストを得る. > > Returns a list of variable names which are hidden from > insecure programs. また対句 Returns a list of env-vars that insecure programs cannot refer to. [skip] > * RUBY_PLATFORM, PLATFORM [skip] > These constants are invisible for insecure programs. from insecure programs でしょうね。 たくさん[skip] > This is because rb_iter_break() is called in another method frame > is not what the block is executed on. > ※ 「ブロックが実行されているのとは違うフレーム上で > rb_iter_breakが呼ばれたから」と言いたいのですが、 > わたしの英語力の限界を越えてしまいました 「」の逐次訳は、こんな感じ。 This is because rb_iter_break() was called in the method frame other than that the block is excuted in. でも、くどいので、 ....in the method frame outside the running block. と書いたら、意味が違うのかな?