[perldocjp-cvs 1526] CVS update: docs/perl/5.10.1

Back to archive index

argra****@users***** argra****@users*****
2012年 8月 31日 (金) 16:31:11 JST


Index: docs/perl/5.10.1/perlfilter.pod
diff -u docs/perl/5.10.1/perlfilter.pod:1.3 docs/perl/5.10.1/perlfilter.pod:1.4
--- docs/perl/5.10.1/perlfilter.pod:1.3	Tue Jul  3 03:47:00 2012
+++ docs/perl/5.10.1/perlfilter.pod	Fri Aug 31 16:31:11 2012
@@ -495,16 +495,13 @@
 
 =end original
 
-All decryption filters work on the principle of "security through
-obscurity." Regardless of how well you write a decryption filter and
-how strong your encryption algorithm is, anyone determined enough can
-retrieve the original source code. The reason is quite simple - once
-the decryption filter has decrypted the source back to its original
-form, fragments of it will be stored in the computer's memory as Perl
-parses it. The source might only be in memory for a short period of
-time, but anyone possessing a debugger, skill, and lots of patience can
-eventually reconstruct your program.
-(TBT)
+全ての復号フィルタは「不明瞭さによるセキュリティ」の原則に則っています。
+どれだけうまく復号フィルタを書いて、どんなに強い暗号化アルゴリズムを
+使っても、十分な決意があれば元のソースコードを取得できます。
+その理由はとても単純です - 一旦復号フィルタがソースを元の形に戻すと、その
+一部は Perl がパースするためにコンピュータのメモリに保管されます。
+ソースは短い時間の間だけしかメモリにないかもしれませんが、デバッガ、スキル、
+多大な忍耐がある人なら最終的にはプログラムを再構成できます。
 
 =begin original
 
@@ -517,13 +514,12 @@
 
 =end original
 
-That said, there are a number of steps that can be taken to make life
-difficult for the potential cracker. The most important: Write your
-decryption filter in C and statically link the decryption module into
-the Perl binary. For further tips to make life difficult for the
-potential cracker, see the file I<decrypt.pm> in the source filters
-module.
-(TBT)
+潜在的なクラッカーに対して物事を難しくするために取るいくつかのステップが
+あります。
+最も重要なのは: 復号フィルタを C で書いて、復号モジュールを Perl バイナリと
+静的にリンクすることです。
+潜在的なクラッカーに対して物事を難しくするために取るさらなるステップは、
+ソースフィルタモジュールの I<decrypt.pm> ファイルを参照してください。
 
 =back
 
@@ -542,13 +538,12 @@
 
 =end original
 
-An alternative to writing the filter in C is to create a separate
-executable in the language of your choice. The separate executable
-reads from standard input, does whatever processing is necessary, and
-writes the filtered data to standard output. C<Filter::cpp> is an
-example of a source filter implemented as a separate executable - the
-executable is the C preprocessor bundled with your C compiler.
-(TBT)
+C でフィルタを書くための代替案は、好みの言語で独立した実行ファイルを
+作ることです。
+独立した実行ファイルは標準出力から読み込み、何か必要な処理を行い、
+フィルタされたデータを標準出力に書き込みます。
+C<Filter::cpp> は、独立した実行ファイルとして実行されたソースフィルタの
+例です - 実行ファイルは C コンパイラに付いている C プリプロセッサです。
 
 =begin original
 
@@ -566,18 +561,19 @@
 
 =end original
 
-The source filter distribution includes two modules that simplify this
-task: C<Filter::exec> and C<Filter::sh>. Both allow you to run any
-external executable. Both use a coprocess to control the flow of data
-into and out of the external executable. (For details on coprocesses,
-see Stephens, W.R. "Advanced Programming in the UNIX Environment."
-Addison-Wesley, ISBN 0-210-56317-7, pages 441-445.) The difference
-between them is that C<Filter::exec> spawns the external command
-directly, while C<Filter::sh> spawns a shell to execute the external
-command. (Unix uses the Bourne shell; NT uses the cmd shell.) Spawning
-a shell allows you to make use of the shell metacharacters and
-redirection facilities.
-(TBT)
+ソースフィルタ配布にはこのタスクを簡単にするための二つのモジュールが
+あります: C<Filter::exec> と C<Filter::sh> です。
+どちらも外部実行ファイルを実行します。
+どちらも外部実行ファイルとのデータのやりとりを制御するのにコプロセスを
+使います。
+(コプロセスの詳細については、Stephens, W.R. による
+"Advanced Programming in the UNIX Environment."
+Addison-Wesley, ISBN 0-210-56317-7, 441-445 ページ を参照してください。)
+二つの違いは、C<Filter::exec> は外部コマンドを直接起動しますが、
+C<Filter::sh> は外部コマンドを起動するためのシェルを起動します。
+(Unix は Bourne シェルを使います; NT は cmd シェルを使います。)
+シェルを起動することにより、シェルのメタ文字とリダイレクト機構を
+使えるようになります。
 
 =begin original
 
@@ -612,13 +608,12 @@
 
 =end original
 
-Writing a source filter as a separate executable works fine, but a
-small performance penalty is incurred. For example, if you execute the
-small example above, a separate subprocess will be created to run the
-Unix C<tr> command. Each use of the filter requires its own subprocess.
-If creating subprocesses is expensive on your system, you might want to
-consider one of the other options for creating source filters.
-(TBT)
+独立した実行ファイルとしてソースフィルタを書くとうまく動作しますが、
+小さい性能上のペナルティがあります。
+例えば、上述の小さい例を実行すると、Unix の C<tr> コマンドを実行するために
+別々のサブプロセスが作られます。
+サブシステムの作成のコストが高いシステムでは、ソースフィルタを作るための
+その他の選択肢を考えたいかもしれません。
 
 =head1 WRITING A SOURCE FILTER IN PERL
 
@@ -878,13 +873,13 @@
 
 =end original
 
-Say you wanted to include a lot of debugging code in your Perl script
-during development, but you didn't want it available in the released
-product. Source filters offer a solution. In order to keep the example
-simple, let's say you wanted the debugging output to be controlled by
-an environment variable, C<DEBUG>. Debugging code is enabled if the
-variable exists, otherwise it is disabled.
-(TBT)
+開発中に Perl スクリプトに大量のデバッグコードを含めておきたいけれども、
+リリース製品では利用可能にしたくないとします。
+ソースフィルタが解決法を提供します。
+例を単純なままにするために、環境変数 C<DEBUG> で制御されるデバッグ出力が
+ほしいとします。
+デバッグコードは、環境変数が存在すれば有効になり、さもなければ
+無効になります。
 
 =begin original
 
@@ -913,15 +908,16 @@
 
 =end original
 
-When the C<DEBUG> environment variable exists, the filter ensures that
-Perl parses only the code between the C<DEBUG_BEGIN> and C<DEBUG_END>
-markers. That means that when C<DEBUG> does exist, the code above
-should be passed through the filter unchanged. The marker lines can
-also be passed through as-is, because the Perl parser will see them as
-comment lines. When C<DEBUG> isn't set, we need a way to disable the
-debug code. A simple way to achieve that is to convert the lines
-between the two markers into comments:
-(TBT)
+C<DEBUG> 環境変数が存在するとき、フィルタは Perl が C<DEBUG_BEGIN> と
+C<DEBUG_END> のマーカーの間のコードだけをパースするようにします。
+これにより、C<DEBUG> が存在すると、上述のコードはフィルタを変更なしで
+通過して渡されます。
+マーカー行もそのまま渡されます; Perl パーサはこれらをコメント行として
+扱うからです。
+C<DEBUG> が設定されていないとき、デバッグコードを無効にする方法が
+必要になります。
+これを達成する簡単な方法は、二つのマーカーの間の行をコメントに
+変換することです:
 
     ## DEBUG_BEGIN
     #if ($year > 1999) {
@@ -1090,11 +1086,11 @@
 
 =end original
 
-You now have better understanding of what a source filter is, and you
-might even have a possible use for them. If you feel like playing with
-source filters but need a bit of inspiration, here are some extra
-features you could add to the Debug filter.
-(TBT)
+これで、ソースフィルタとは何かについてよりよく理解できたと思います;
+さらにこれらの可能性のある使い方を持っているかもしれません。
+もしソースフィルタで遊んでみたいと思っているけれどもちょっとした
+インスピレーションが必要なら、以下はデバッグフィルタに加えることが出来る
+追加機能です。
 
 =begin original
 
@@ -1107,13 +1103,12 @@
 
 =end original
 
-First, an easy one. Rather than having debugging code that is
-all-or-nothing, it would be much more useful to be able to control
-which specific blocks of debugging code get included. Try extending the
-syntax for debug blocks to allow each to be identified. The contents of
-the C<DEBUG> environment variable can then be used to control which
-blocks get included.
-(TBT)
+まずは簡単なものです。
+デバッグコードをオールオアナッシングにするのではなく、どのブロックを
+デバッグコードとして使うかを制御できるようにすればもっと便利です。
+それぞれのデバッグブロックを識別できるように文法に文法を
+拡張してみてください。
+C<DEBUG> 環境変数の内容はどのブロックを使うかを制御するのに使えます。
 
 =begin original
 
@@ -1122,9 +1117,9 @@
 
 =end original
 
-Once you can identify individual blocks, try allowing them to be
-nested. That isn't difficult either.
-(TBT)
+個々のブロックを識別できるようになったら、ネストできるように
+してみてください。
+これも難しくはありません。
 
 =begin original
 
@@ -1137,13 +1132,12 @@
 
 =end original
 
-Here is an interesting idea that doesn't involve the Debug filter.
-Currently Perl subroutines have fairly limited support for formal
-parameter lists. You can specify the number of parameters and their
-type, but you still have to manually take them out of the C<@_> array
-yourself. Write a source filter that allows you to have a named
-parameter list. Such a filter would turn this:
-(TBT)
+これはデバッグフィルタに関係ない面白いアイデアです。
+今のところ Perl サブルーチンは公式な引数リストに限定的に対応しています。
+パラメータの数とその型は指定できますが、自力で C<@_> 配列から取り出す
+必要があります。
+名前付き引数リストを使えるようなソースフィルタを書きましょう。
+そのようなフィルタは以下のようなものを:
 
     sub MySub ($first, $second, @rest) { ... }
 
@@ -1172,12 +1166,12 @@
 
 =end original
 
-Finally, if you feel like a real challenge, have a go at writing a
-full-blown Perl macro preprocessor as a source filter. Borrow the
-useful features from the C preprocessor and any other macro processors
-you know. The tricky bit will be choosing how much knowledge of Perl's
-syntax you want your filter to have.
-(TBT)
+最後に、本当の挑戦を好むなら、本格的な Perl マクロプリプロセッサを
+ソースフィルタとして書いてみてください。
+C プリプロセッサやその他のマクロプロセッサから便利な機能を
+借りてきてください。
+トリッキーなところは、Perl の文法のどれくらいの知識をフィルタに持たせるかを
+選ぶところです。
 
 =head1 THINGS TO LOOK OUT FOR
 
@@ -1250,6 +1244,7 @@
 =begin meta
 
 Translate: SHIRAKATA Kentaro <argra****@ub32*****>
+Status: completed
 
 =end meta
 



perldocjp-cvs メーリングリストの案内
Back to archive index