curl™

技術資料:最新情報

Version 3.0.7

バグフィックス以外に変更が加えていません。


version 3.0.6から追加された変更

次の重要な変更点がありますが、version 3.0.6のリリースは主にバグフィクスの目的です。

プロシージャ{browser-resident-http-enabled?}が用意されました、これは、{request-browser-resident-http} が呼び出され、現在のブラウザでその機能がサポートされているかどうかを示すブール値を返します。現時点では、アプレットが{request-browser-resident-http}を呼び出した時に、Microsoft Windows 98SE/ME/NT/2K/XP 上でのInternet Explorer で実行されている時のみ、trueを返します。


version 3.0.5から追加された変更

このサービスパックは多くのバグフィクス、改良、そして一つの重要な機能が加えられました。要約すると、

  • Surge RTEのトレイアイコンから右クリックメニューの機能を外しました。現在ではどんなマウスクリック(左、右、シングル、ダブル)でもSurge RTEのコントロールパネルが起動されます。
  • 万が一Surge RTEの障害が発生する場合、ユーザが簡単にCurl,Incへ問題を報告する為にレポートダイアログを表示するようになりました。
  • 新しいAPI{ request-browser-resident-http }が追加されました。このAPIは、アプレットが認証を必要とするWebサーバと 情報をやり取りすることをもっとよくサポートする為です。このAPIの詳細については以下の様に説明いたしますが、 Surge Lab ドキュメントの中でも説明しています。

アプレットは認証が必要なWebサーバとの情報のやり取りをサポートします

このサービスパックでは、ブラウザプロセスと認証情報、セッション・クッキーを透過的に共有するメカニズムが加えられました。これらのメカニズムはCurlアプレットから認証サーバへの【ユーザの立場から見て】余計なログインを最少回数にすることを可能にしました。新しいAPI { request-browser-resident-http }は、開発者にCurlアプレットがブラウザのプロセスを経由して全てのHTTPアクセスを行う新しい手段を提供することによって、アプレットとブラウザの認証・セッション及びクッキー情報を共有することが可能にしました。この新しいメカニズムは現在マイクロソフトのウインドウズプラットフォームにInternet Explorerで実行するアプレットにのみ適用できます。


背景事情

ユーザがクライアントPCのブラウザから認証を必要とするWebサーバのURLをアクセスする際に、そのサーバは、幾つかのテクノロジーの一つを使ってユーザを識別します。一旦ユーザの身元が確認されると、ブラウザのセッションは、それ以上の身元確認を行わずに継続することが出来ます。

これまでのCurlアプリケーションの問題は、ユーザの身元を確認する認証情報が、ブラウザとWebサーバで共有されており、Surge RTEはそれらを利用できないことです。

通常、Surge RTEが認証情報にアクセスすることが出来ないので、特別な処理が行われなければ、WebサーバはCurlアプレットを別途認証しようとします。その結果、ユーザは、同じWebサーバに対して、同じユーザ名、パスワード(または他の認証情報)で何度もログインすることになってしまいます。

このリリースでは新しいAPI { request-browser-resident-http }を提供し、根本的に上記の問題を解決します。このAPIの戻り値がtrueである時に、CurlがHTTPアクセスを行うメカニズムが変わります、そして認証情報(セッション・クッキー、ログイン承認状態、クライアント証明書の承認状態)がアプレット(Surge RTE)プロセスとブラウザプロセスの間に共有出来ます。結果として、Curlのアプレットに対して余計なログインの必要が無くなります。

このプロシージャがtrueを返す時、全てのCurlのアプレットからのHTTPアクセスは、ブラウザプロセスのクッキー、認証情報、キャッシュの状態をCurlアプレットと共有し、ブラウザのプロセスを経由して発行します。falseを返す時に、全てのHTTPアクセスは(デフォルトと同じ)Surge RTEのプロセスを介して行われます。この場合、認証を要求するWebサーバへ複数回ログインすることになるかもしれません。

{ request-browser-resident-http }プロシージャは、バージョン3.0.5で新規追加されたAPIです。その為、このAPIは、アプレットのヘラルドに“3.0.5”を記述する(例えば、{curl 3.0.5+ applet})アプレット、又{api-version-switch}マクロを使用して、バージョン3.0.5以上の環境で動作しているときのみ、このプロシージャを呼出すようにするアプレットでしか利用できません。

このプロシージャを有効にする為には、あらゆるHTTPアクセスがアプレット又はアプレットの代表(Surge RTE)に行われる前、このプロシージャを呼出さなければなりません。 即ち、このプロシージャが、 “include”,”import”の記述より先に呼出されなければなりません。通常は、このプロシージャの呼び出しは、コンポーネント宣言の直後に配置されるべきです(つまりアプレットのヘラルドとオプションのcurl-file-attributes宣言の後)。例えば:


	{curl 3.0.5+ applet}
	{curl-file-attributes
	       character-encoding="shift-jis"
	}
	{applet
	       manifest = "my-manifest.mcurl"
	}

	{let using-browser-HTTP:bool =
	       {request-browser-resident-http}
	}
	{import * from A-PACKAGE, version = "1.2"}

上記のような制限がありますが、このAPIコールはシンプルなメカニズムを提供します。

  • 全くコーディングすることなくブラウザとセッションクッキーを共有します。
  • 同じサーバにアクセスする時、何度もログインする必要がなくなります。

注意:このプロシージャは、ご利用のWebブラウザ、オペレーティングシステムでサポートされていない時でも、いかなるHTTP処理の前に呼び出される必要があります。

このモードを一度使用可能にすると、使用不能にする方法はありません。

現在の{ request-browser-resident-http }プロシージャの実装は、HTTPサブシステムに二つの新しい振る舞いをもたらします。

同期HTTP処理が呼出されている間に、ユーザがブラウザを閉じると、例外が発生する可能性があります。

{ request-browser-resident-http }が呼出されると、パッケージはインポートされる時に、package-caching-style はデフォルトの"lazy"ではなくて、"on-import" で呼び出されます。この変更によりアプレットの初期ロード時間が長くなる場合があります。

{ request-browser-resident-http }が呼び出される前に、ローカル・ファイルシステムからパッケージがインポートされると、後続のパッケージはpackage-caching-style = "read-only"でインポートされます。この変更により一部のパッケージがキャッシュされなくなるので、アプレットのロードが遅くなる場合があります。アプレット作成者は、あらゆるインポート文の前に、{request-browser-resident-http}を呼出すことにより、この問題を避けるべきです。

このpackage-caching-style の変更は一時的な制限であり、将来のリリースでこの制限を取り除くことを予想しています。

注意:全てのHTTPアクセスは、{ request-browser-resident-http }プロシージャが呼び出され、成功すると多少遅くなるかもしれません。


ビジュアルレイアウトエディターの新機能

グリッドのプロパティに関するコマンドが、ビジュアル・レイアウト・エディタ(VLE)の“表示”メニューに追加されました。このコマンドは、“グリッドのプロパティの変更”ダイアログを表示し、VLEレイアウトペインに表示されるグリッド・ポイントの間隔を変更することが出来ます。“グリッドのプロパティの変更”ダイアログは、二つのコントロールを持っています:

  • “グリッドの間隔”コンボボックスを使って、グリッドの間隔を調整することが出来ます。このコンボボックスは、ドロップダウン・リストの中に、あらかじめ定義された幾つかのグリッド間隔を用意しています。ユーザは、"2mm" や "10px"のようなDistanceまたはPixelDistance型の定数を入力することが出来ます。とても小さい値や大きな値をセットしようとすると“無効なグリッドの間隔”エラーダイアログが表示されます。
  • 二つのラジオボタンはグリッドが有効な時に、レイアウト・ペインの中でオブジェクトを選択し、ドラッグによりそのサイズを変更する時のVLEの振る舞いを制御します。選択可能な二つの選択肢は次の通りです:
    • グリッド間隔の倍数分のサイズに変更 :これが選択されている時は、ドラッグによる新しいオブジェクトのサイズは、グリッド間隔の整数倍になります。例えば、グリッド間隔が6ptので、オブジェクトのサイズが最初10ptだった場合、オブジェクトの右側中央のハンドルを選択し、ドラッグしてオブジェクトの幅を変更すると、そのオブジェクトの新しい幅は、12pt, 18pt, 24ptなどになりますが(これらは6ptの整数倍だからです。)、16ptになることはありません。
    • グリッドの間隔の倍数分のサイズを追加(または差し引く):これが選択されている時は、オブジェクトの選択ハンドルの一つを選んで、ドラッグすることでオブジェクトのサイズが変更されます。オブジェクトの新しいサイズと元のサイズの違いは、いつでもグリッド間隔の整数倍になります。例えば、グリッド間隔が6ptで、オブジェクトの幅が10ptだった時、オブジェクトの幅を変更する為に、オブジェクトの右側中央のハンドルをドラッグすると、オブジェクトの幅は、4pt, 10pt, 16pt, や22ptになります。決して12ptにはなりません。12ptと10pt(元々のサイズ)の差は 、グリッドの整数倍ではないからです。

デフォルトのグリッド間隔は6ptです。デフォルトのサイズ変更ポリシーは、“グリッドの倍数分サイズを追加(又は差し引く)”です。これらのデフォルトは、前のバージョンのVLEの振る舞いと同じです。もしもこれらのパラメータのどちらかを変更すると、新しい設定が保存され、次回のVLEの起動時に使用されます。

ドラッグ、若しくはドロップの操作は、オブジェクトのx、y、width、heightプロパティを影響する場合、新しいx、y、width、heightの値に使用される単位は、現在のグリッド間隔を指定する時に使う単位が使用されます。このように、グリッド間隔が6ptの場合、生成される値は、“pt”で表現されます。グリッド間隔が2mmの場合、生成される値は、“mm”で表現されます。グリッド間隔が、“10px” のようにピクセル単位で指定されていたら、値はピクセルで生成されます。これで、必要と思われる場合にVLEを利用して、ピクセルベースの位置指定とサイズ指定が可能になりました。


これらの変更に関するお問合せはsupport@curlap.com宛てにお願いします。


Copyright 2005 Sumisho Computer Systems Corporation. All rights reserved.