Default
Google

英語版などのブラウザで、日本語やヘブライ語が読めるようにすることを想定して、テキスト変換の手助けをするためのproxyです。

proxy

68userさんの作成した1st-proxy.plをもとにして、更に2nd-proxy.plを参考として、いろいろ機能追加(その副作用として性能ダウンがあるかもしれません)をしたproxyです。

よくわかってない状態で色々いじったので、致命的なBUGを埋め込んだかもしれません。

使用方法

このファイル名をproxy.plとした場合、使用方法です(perl5以上で確かめました)。


perl proxy.pl       : 標準出力にログを出力する。
perl proxy.pl debug : debug.logにログを出力する。

機能・注意など

  1. 内部で無理やりcontent-type=text/htmlを認識させています。
  2. text/htmlの場合、読み込んだ内容をfilter.plで処理させるために、htmlのタグ単位になるように処理しています。しかし、iso-2022-jpでの日本語部分に>や<がある場合に誤認識します。
  3. 日本語は無理やりshift_jisにします(上記の処理の前にすべきかどうか悩みましたが、後にしました)。
  4. ヘブライ語は無理やりiso-8859-8にします。
  5. virtual hostを自動で付加しています。
  6. まだまだネットワークの知識がないので、僕が書き換えたところには、致命的なBUGが埋め込まれているかもしれません。
  7. デバッグはちゃんとしていません。
  8. このままの状態では、以下のfilter.pl(およびhtrans.pl)、nkfが存在しnkfなどの外部フィルタを用いるならば、それがないと、動作しません。nkfは、検索エンジンなどで探せば、あるとおもいます。
  9. 重要:日本語で掲示板に書き込む際には、その掲示板がjcode.plなどで日本語を処理していないと、文字化けする
  10. 重要:http://localhost:8080/http://〜のようにできますが、この場合、この場合、imgタグなどは、このproxyを経由しないようにしてしまうので、注意が必要です(filter.plの使用の都合)。

filter.pl

英語版などのブラウザで、日本語やヘブライ語が読めるようにすることを想定した、テキスト変換をするscriptです。

使用方法

&filter'split_html


($c1,$c2,$c3,$clcc,$clps)
	=&filter'split_html($content,$clcc,$clps,$delimiter,$scheme,$host,
	                    $port,$path,$fpat,$fjcom,$fjchr,$fhchr);
INPUTs
  $content   : text input this filter
  $clcc      : content charset
  $clps      : previous status
  $delimiter : text modification switch (if '/', it kicks &src_change)
  $scheme    : (http) scheme
  $host      : (http) host name
  $port      : (http) port
  $path      : (http) path
  $fpat      : content type recognizing pattern in HTML file (always meta tag)
  $fjcom     : external filter command
  $fjchr     : folding (Japanese)
  $fhchr     : folding (Hebrew)
OUTPUTs
  $c1   : text output this filter    (it is just end of '>' or     before of '<')
  $c2   : text remaining this filter (it is    after of '<' or just start of '>')
  $c3   : text remaining status      (     0 : after of '<' or  1 : start of '>')
  $clcc : content charset (after detected, it is not change)
  $clps : this status (it'll be previous status in the next transfer)

&filter'filter


($out,$ns)=&filter'filter($intext,$mode,$com,$fcou,$lfbb,$tcou);
INPUTs
  $intext : input text
  $mode   : j is Japanese / h is Hebrew
  $com    : external system command
  $fcou   : folding charactor count
  $lfbb   : before (previous) status
  $tcou   : temporary internal file's unique ID
OUTPUTs
  $out : output text after filtering
  $ns  : this status for next $lfbb

&filter'src_change


$tbuf=&filter'src_change($tbuf,$scheme,$host,$port,$path);
INPUTs
  $tbuf    : input text
  $scheme  : (http) scheme
  $host    : (http) host name
  $port    : (http) port
  $path    : (http) path
OUTPUTs
  $tbuf : output text

注意など

  1. 日本語は無理やりshift_jisにします。
  2. 日本語のfoldingやヘブライ語の処理は、(p|h[1-6]|li)タグではさまれた個所のみが対象となります。但し、終了タグの省略は考慮していません。・・・というように、htmlの解析はかなり簡略しています。
  3. &filter'filterの$intextは、<タグ>が途中で終わっていないことを想定しています。
  4. デバッグはちゃんとしていません。
  5. htrans.pl(常に)、$comで指定するのコマンド(使用するなら)、それぞれ存在しないと、動作しません。

htrans.pl

双方向アルゴリズムの perl scriptを参照してください。


本体

以下のがそうです。

  1. proxy
  2. filter.pl
  3. htrans.pl

使用例

Netscape Navigator Version 3.03 [ja]で、ヘブライ語(iso-logical)のページを表示した例を示します。

変換前

スナップショット
!Mem-sofitVavLamedShyn(Shalom!)となるべきところが、左右逆(ShynLamedVavMem-sofit!)に表示されています。

変換後

スナップショット
ちゃんと、!Mem-sofitVavLamedShyn(Shalom!)と表示されています。感激!



Acquiring image from ProHosting Banner Exchange