このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

WebSTARのPreprocessorについて

発言者:アザラシ
( Date Saturday, February 23, 2002 17:56:37 )


AppleScriptでPreProcessorの処理をする場合について勉強させてください。

次のような処理のスクリプトを作成しました。

1.Realmの記述されたテキスファイルを読み込む
2.クライアントから要求されたURLがRealmと一致したらUserNameとPasswordを要求する
3.serNameとPasswordが記述されたテキストファイルと照合する
4.一致すればアクセス許可させる

このスクリプトをWebSTAR4.4EのPreProcessorとして処理させ、クライアントのIEを使い
同じURLにスクリプトを使って30回アクセスさせたところ、WebSTARの処理速度が2分の1ぐ
らいに落ちてしまいました。スクリプトの処理が重いのかと思い空のPreProcessorで処理
させましたが変わりませんでした。前にこの会議室で「AppleScriptはマルチスレッドに対
応していない」みたいなことを読んだことがありますのでこれ以上は改善できないとすこし
あきらめモードに入っています。AppleScriptだとこれ以上の改善は望めないですよね?
「WebSTAR Plug-Inを作成すればいいじゃん」などど思いもしましたが敷居が高すぎて手が出
せませんとゆうよりもCがわかりません。(高度なのになぜ低級言語と呼ぶ)
そこで最近RealBasic4に興味が湧いてきたのですが、この処理をRealBasicで作成できますで
しょうか? まだDEMO版をちょっといじって見ただけでどこまでできるのか全然見当がつき
ません。RealBasicでCGIの作成を作成するとどんなメリット・デメリットがあるのでしょうか?
処理速度が快適になるならばすぐにでも購入してみたいです。

アドバイスよろしくおねがいします^^

田中求之 さんからのコメント
( Sunday, February 24, 2002 00:06:33 )

PreProcessor の場合、すべてのアクセスが必ず処理させることになりますので、常に
複数のアクセスがあるような状況のサイトでは AppleScript で組んだものを用いると、
かなりの速度低下を招きます。おっしゃるように、AppleScript の CGI ではマルチ・
スレッドの処理ができないためです。

REALbasic で thread を使って処理するように CGI を組めば、この点を改善すること
は可能でしょう。

ただ、一つ疑問なのですが、なぜわざわざ PreProcessor で REALM の処理を行なわせ
ようとするのでしょうか? 対象となる URL やユーザーを動的に変化させたいというこ
となんでしょうか?

アザラシ さんからのコメント
( Monday, February 25, 2002 11:52:46 )

> なぜわざわざ PreProcessor で REALM の処理を行なわせようとするのでしょ
うか?

よくぞ聞いてくれました@@!
会社でWebSTARを使ってホスティングを行っています。ストックフォトをWeb上
から検索できるシステムをメインに現在4社程を預かっていますがこれからさら
に増えていく予定です。画像のプレビューができるのは書面でユーザー登録さ
れた人のみのシステムになっています。Realmの登録・削除などは各会社の管理
者が行えるようになっていてWebブラウザで管理ページに入りRealmの登録・削
除、Realmユーザーの登録、削除などがブラウザ上からできるようになっていま
す。仕組みとしてはFileMaker Proにデータを溜めてそこからAppleScriptを
WebSTARに送る方法をとっています。

(*
ちょっと話がそれますがWebSTARの限界テストを行ったことがあります。
WebSTAR4.4eにて10,000件のRealmを登録しましたが動作が不安定になったりす
ることもなければ速度低下をおこすようなこともありませんでした。しっかり
とRealm、非RealmのURLを認識してくれました。(速度低下を予想していたので
びっくりでした)さらに、50,000件のユーザーを「member」とゆうRealmにスク
リプトで登録してみましたがこれもしっかりと認識してくれました。WebSTARは
本当に頑丈ですね。ちなみにWebSTAR Adminで見ると全部のリストは表示しませ
んが内部的には認識しています。テストする場合はAdminのメモリ割り当てにご
注意!!
*)

話を戻します。現在のRelam管理システムで十分じゃないかと言われそ
うですがここにWebSTARの制限があって
*ユーザー名と保護領域の長さは合わせて30文字未満にすること
(ホントは31文字)*
とゆう制限がありましたので実質RealmのURL Matchに使用できる長さ管理画面
のインターフェイスを通さないとRealmとユーザーの登録ができないとゆうこで
す。これは便利な反面、考え方を変えれば非常にめんどくさいシステムに成り
下がるとゆうことでした。例えばエクセルなどの表計算ソフトでユーザーリス
トを管理していてそれをタブ区切りで書出し、FTPでアップロードすればすぐに
Realmのアクセス制限へ反映する。それとは別にWebブラウザでアクセスできる
インターフェイスがありユーザーリストを読み込み編集できるような2刀流が理
想だと思いました。Unixの「.htaccess」みたなものをWebSTARで実現した
かったのです。よく業務用途のWWWサーバーにMACは向かないと言われますがこ
れを打破してみたいと常に考えています。以前、なんの話題だったか忘れまし
たが田中先生の一文に非常に印象に残る文面がありました。「車で例えるなら
MACのプライベートマシンをチューニングしてUNIXのワークスマシンをぶっちぎ
るような.....」
ちょっと熱くなってしまた....

> REALbasic で thread を使って処理するように CGI を組めば、この点を改善
することは可能でしょう。

田中先生、今回の処理をRealBasicで作成するとなると処理スピードは作り方次
第で早くもなれば遅くもなるとゆうことでしょうか?

田中求之 さんからのコメント
( Wednesday, February 27, 2002 16:33:25 )

>今回の処理をRealBasicで作成するとなると処理スピードは作り方次
>第で早くもなれば遅くもなるとゆうことでしょうか?

そうですね。どのような処理をさせるのかによります。

たとえば、URL のチェックを行って、もしアクセス制限の該当の URL だったら、
ユーザー認証を行わせるという、REALM をそのまま作り込んだものだと重いかもしれません。しかし、

>Unixの「.htaccess」みたなものを

ということでので、要求されたページの入っているフォルダーの中に .htaccess
というファイルが存在していたときには、そのファイルに書かれている
グループ名を使って認証を行わせるというように処理を変えてみれば、
速度も変わってくるかもしれません。

もっとも、最大の処理のネックの部分は、ユーザー名とパスワードの照合
の部分だとは思います。

Junnama さんからのコメント
( Wednesday, February 27, 2002 20:24:34 )

ちょっとやろうとしていることの具体的なところが分かりかねますが、私はQPQで
REALbasic製のユーザー認証CGIを動かしています。
ユーザー定義アクションとしてREALbasicで作成したcgiアプリケーションを指定
し、独自の拡張子を付けてこれを認証の対象にします。
内容はtab区切りテキストを読み込んで(おいて)、IDとパスワードの組みを管理
するものです。

現在登録ユーザー数は100程度、対象となる拡張子のファイルへのアクセスは
300件/時間までですが、他にASIPでのファイルサーバー(100ユーザー)、QuickMailサーバー(50ユーザー)が同じマシン(青白G3)で動いおり、速度的
には特に問題はありません。

REALbasicでのCGIは作り方によってはかなりスピード的には出ますけど、私は
もっぱらREALbasic1.1.1で作っていて、2.0以降(〜3.5)ではCGIは作りません。
# 文字列の処理が結構遅いのでCGIを作るにはプラグインのお世話にならないとい
けません。

テキストを処理する部分の書き方次第だと思います。

アザラシ さんからのコメント
( Thursday, February 28, 2002 10:25:12 )

田中先生、Junnamaさんありがとうございます。

僕はJunnamaさんのマシンとほぼ同じものを使っております。(PM G3 350)
やろうとしている具体的なところを補足します。
ホスティングのお客様向の管理者にRealm関係を操作できる権限を与えよう
としているのです。
G3 1台にバーチャルドメイン4社分を預かっております。今後もバーチャル
ドメインが増えるため、そのつどお客さまのRealmの設定やユーザー登録を
僕がおこなっていたらビジネス的にお話になりません。お客様向の管理者
用ににRealm関係を操作できる権限を与えようとしているのです。実際、今
お客さまの管理者がメールのアカウントの発行、RealmとRealmユーザー
の管理をFMProのDBからブラウザを通してAppleScript経由でWebSTARやEIMS
に送って管理者に管理してもらっています。
WebSTAR4.4Eには以下の制限がありましてなんとかならないかとRealBasicの
PreProsessorを検討していました。

WebSTAR4.4Eの制限
Realmの文字列に使用できる長さは31文字。各バーチャルドメインのRealmが
干渉せず独立して機能させるためWebSTARの登録には /バーチャルホストフォ
ルダ/bbb/...... とゆうようにフォルダ名を追加しなくてはいけません。
例えば、
 www.qqq.com/photo/member/ = v01:photo:member
 www.vvv.com/photo/member/ = v02:photo:member
実質使える長さが26文字前後になってしまうのでお客さまにとってはかなり
きついです。
GUIは便利ですがWebSTAR ADMINをお客さまに渡すわけにはいきません。基本
をテキストファイルベースとしてWebブラウザかFTPでアップすればすぐに反
映できるようなPreProcessorが僕にとっての理想だと思いました。


RealBasicについて少し質問させてください。

JunnamaさんはRealBasic1.1.1で作られている様ですが、なにかその2とか3に
はバグがあるとかビルドするとサイズがデカくなるとか何かの不都合みたい
なものがありますか?もしあるとなると現在Ver4しか売っていないので過去の
バージョンを購入する方法ってありますか?
会社でRealBasicの予算がおちるようなのでこれからRealBasicの勉強に入りた
いのです。田中先生の資料室のRealBasic関係を一読させていただきました。
そのほかにRealBasicで「ここは見といた方がいいんじゃないの」みたいなおす
すめサイトなどございましたら教えていください。


Junnama さんからのコメント
( Thursday, February 28, 2002 11:17:20 )

> なにかその2とか3にはバグがあるとかビルドするとサイズがデカくなるとか

確かにバカでかくなりますが :-)
まぁ配布するソフトでもありませんからディスク容量は許容範囲ではないでしょ
うか。私が1.1.1を使うのは、好みの問題も多いですから、別に新しいバージョン
が悪いといっているわけではありません(逆に古いバージョンにもそれはそれで
問題があって、例えばウィンドウを閉じてもちゃんとメモリを解放してくれない
とか)。
逆に1.xには日本語のマニュアルが無いですから、はじめて触る人なら最初から最
新版で始められるのが良いと思います(但し、常に最新版を追いかけると、この
ソフト(会社?)結構お金を食います)。また、REALbasic2以降はPro版でデータ
ベースが使えますので(私は使ったことないですが)、これと組み合わせても面
白いかなと思います。

REALbasic2以降では文字列関係の関数が非常に遅いので、そのままではきついこ
とは確かです。そこで、いろいろな方が作成され、公開されているプラグイン
(代替関数を使えるようにする等、機能を拡張するもの)を使うことになりま
す。
これによって、処理速度はかなり改善されます(但し、CGIアプリケーション等は
かなり速度に関してシビアなので、僅かな速度の差が結構問題になったりしま
す)。

REALbasic1.xはダウンロードはFTPサイトからできると思いますが、購入は多分出
来なかったと思います。いずれにしても、REALbasic4(いつの間にか4だったので
すね。3.0を買って3.5まではアップグレードしたけど何も作ってない...)のデモ
版で一度試されてはいかがでしょうか。

情報源としては、CGI関係ではここ(WSM & 田中先生のドキュメント)に勝るもの
はないでしょう。
REALbasic一般であればメーリングリストのログが公開されています。但し、CGI
に関する話題はそれ程多くありません。

→  REALbasic 日本語メーリングリスト

アザラシ さんからのコメント
( Friday, March 01, 2002 09:59:19 )

ありがとうございます。参考になりました^^ ^^。
ASCIIで確認したところ現在、REALbasic 3.5.2日本語版とREALbasic 4.0.2
日本語版の購入ができるようでした。
これから本格的に始めたいと思います。
REALbasicのPreProcessorの設計目標をあげてみました。

1.テキストファイルでRealmを記述する。「.htaccess」をめざすのか、複数
 のRealmを一つのファイルに集約するのかは、まだ決めかねています。

2.UserNameとPasswordはテキストファイルで、タブ区切り、コメント、改行
(Mac,WIN,Unixどれでも可)、
 こんな感じ..
 azarashi<TAB>passpass<TAB>アザラシのログイン<改行>
 seiuchi <TAB>passpass<TAB>アシカのログイン  <改行>
 UsernameとPassword以降は認識されないようにします。

3.できるだけWebSTARに負担をかけないスピード重視の設計

4.Realm、Usernameを編集できるWEBブラウザGUIのCGIを作る。

いいのができるのかわかりませんが、がんばってみます。
ちょくちょく顔をだしますのでそのときはよろしくお願いします。

_ _
● ●
  #