カテゴリー別アーカイブ: Curlの動作・振る舞いについて

Curlの仕様に関して、過去にお問い合わせの多かった事例を紹介いたします。記載日時点での状況(最新or問い合わせ時指定バージョンにおける仕様)を元に回答したものです。
 

JIS2004問題について

◆ご質問◆
Windows7環境において、Curlを使用した場合JIS2004問題は発生するのでしょうか。

◆回答◆
Curlがサポートしている文字コード規格はJIS X 0208:1997(JIS97)であり、
JIS X 0213:2004(JIS2004)で追加された文字に関してはフルサポートされているわけではありません。
(拡張された文字が正常に表示・入力・削除などの処理が行われない可能性があります。)

一般的にこれらの問題はCurlアプリケーションの問題というより、
OS間で対応する文字セットに関する規格が違うために発生するため、Curlアプリケーション内から対応することは出来ません。

【JIS2004問題】
 ・WindowsXPとWindows7(Vista)で表示される文字の字形が異なる
 ・JIS X 0213:2004(Windows7、Vista)で追加された文字がWindowsXPで表示できない
 ・追加された文字はUnicodeでしか扱えない

Curlからのサーバコネクション数制御について

◆ご質問◆
1台のCurlクライアントからは、常に1つのNWポートを利用した1コネクションのみの通信とするように、
Curlで制限をかけることは可能でしょうか。

◆回答◆
Curlで通信を行う際の1サーバあたりの同時接続数は”2″です。
正確には、Curlが通信を行う際のWinInetのモジュール毎に同時接続数が”2″となっています。

WinInetはCurlの各バージョンで一つ使用されています。
よってアプレットごとに同時接続数が”2″ということではなく、
例えば、Curl RTE 7.0のアプレット全てで同時接続数が2ということになります。

また、この接続数”2″はCurlの内部で定義されていることから外部から制御することはできません。

また、Microsoftのhttp://support.microsoft.com/kb/282402/jaにあるような
レジストリの値を参照することもしておりません。

Curlのプロセス

【ご質問】
Curl起動時に下記プロセスが 実行されています。
これらのプロセスはどのようなものかお教え下さい。
・surge.exe
・surge-lab.exe
・curl-eng.exe

【回答】
各プロセスについては次の通りとなっております。

・surge.exe
Curlのマスターエンジンのプロセスです。
アプレットの起動やIDEの起動で必ず実行されます。

・surge-lab.exe
SurgeLabのプロセスです。
開発環境CurlIDEの起動で実行されます。

・curl-eng.exe 
Curlのヘルパーエンジンのプロセスです。
端末にインストールされている最上位のバージョンが
(例えば、3.0.10と4.0.6がインストールされている場合4.0.6)
マスターエンジンとなります。
マスターエンジン以外のバージョンのアプレットを実行すると、
(上記例の場合、バージョン3.0のアプレット)
マスターエンジンからこのヘルパーエンジンが呼び出されます。

以下のFAQもご参照ください。
http://developers.curlap.com/faq/49-faq-operation/663-rte.html

surge-do.exeとは

◆ご質問◆
「surge-do.exe」は何をしているプロセスなのでしょうか?
 
◆回答◆
surge-do.exe は、curl: で始まるURLや、.curl / .dcurl のファイルから
Curl RTE や IDEを起動させるためのプログラムです。
スタートメニューから起動させるためにも使用されます。

また”surge-do”というコマンドでCurlのラインタイムの起動や停止などいろいろ操作することができます。
詳細は以下サイトをご参照ください。
http://developers.curlap.com/re-reference/19-others/61-startup-shutdown.html

Curl Pro/IDEライセンスキー(マシンコード)

◆ご質問◆
 PCをFormatし直すと、マシンコードも変わるのでしょうか?
 そのようになったらIDEのライセンスキーも更新しないといけないでしょうか?
 
◆回答◆
 マシンコードが変わる場合があり、IDEのライセンスキーの
 再申請が必要になる場合があります。

 OSの再インストールを行うと、Windowsのライセンス認証を
 再度行う必要があります。
 この際にマシンコードが変わる場合があります。

 また、PCのフォーマット、OSの再インストールを行わなくとも、
 HDDなどを交換しハードウェア構成が変更されると、
 Windowsのライセンス認証を要求された場合にもマシンコードが
 変わる場合があります。

 

WEBカメラの制御

◆ご質問◆
 CurlにてWebカメラを制御する方法する方法はありますでしょうか?

◆回答◆
残念ながらCurlの標準APIにWebカメラを制御する
ようなAPIは存在いたしません。

しかし、その利用しようとするWebカメラを制御するための
外部ライブラリ(DLL)が存在するのであれば、そのDLLインターフェースを
利用してCurlから制御することも可能かと思われます。

Curlアプリケーション⇔DLL⇔Webカメラ
のようにDLLを経由してWebカメラを制御します。

外部ライブラリの詳細については以下のヘルプをご参照ください。
「Curl開発者ガイド」→「基本概念-ライブラリ」→「外部ライブラリ」

 ※あくまでも論理上な回答であり、
 ウェブカメラ接続テストやその実績があるわけではございません。

 

バージョンアップに伴うソースの変更

◆ご質問◆
バージョンアップを行いたいが、自動変換ツールの様なものはあるのでしょうか?

◆回答◆
保証されたソースコードを生成するようなツールはございません。

しかし、使用するAPIのバージョン、ソースコード内のヘラルドであれば、IDEにて一括で変更することが可能です。
 「プロジェクト-APIバージョンの変更」

Curlコンテンツのダイナミック生成

【ご質問】
ASPやJSPなどのサーバスクリプトを使用し、Curlコンテンツのダイナミックな生成が可能ですが、
生成可能なCurlコンテンツは*.curl形式のコンテンツのみでしょうか。

【回答】
サーバスクリプトを使用して*.dcurl形式(独立型アプレット)をダイナミックに生成することも可能です。

パーシスタントキャッシュファイルが最大値に到達した場合

【ご質問】
キャッシュの容量が最大値を超えた場合、LRU方式で削除されるのでしょうか。
また、どのタイミングで削除されるのでしょうか。

【回答】
使用されてから一番長い時間がたっているキャッシュから削除されていきます。
つまりLRU(Least Recently Used)方式で削除されます。

削除が実行されるタイミングとしては、新しくパッケージキャッシュが作成されるタイミングで
削除するかどうかの処理が実行されます。
また、Curlコントロールパネルでキャッシュの最大サイズを設定した時も実行されます。

Proxyキャッシュの制御について

 ◆ご質問◆
 アプリケーションサーバ側のCurlアプリケーションをアップデートした際、
 Proxyサーバ上のキャッシュを無視し、
 必ずアプリケーションサーバからモジュールを取得するようにできますでしょうか?

 ◆回答◆
 生憎、Curlだけで制御することは困難でございます。

 Curlの通信のメカニズムは、
 Curl独自のものを使っているわけではなく、
 Win32 インターネット拡張機能(WinInet)を用いております。(Windowsの場合)
 
 そのため、
 クライアントサイドの設定を用いることができます。
 例えば、
  インターネットプロパティにてプロキシを使わない 設定をすることや
  PACファイルと呼ばれるブラウザのプロキシ設定を制御できる仕組み
 を用いることができます。

 また、サーバサイドにて、Cache-Controlを用いるなどして
 制御することも一案です。
 
 

プリンタの制御について

【ご質問】
Curlからの印刷時に、プリンターのデバイス制御はどの程度まで可能でしょうか?
例えば、数種類の帳票があり、それぞれの帳票で使用するトレイをプログラムから
指定して印刷することは可能でしょうか。

【回答】
Curlからは「print-graphic」プロシージャに渡せるオプションについてのみ制御できます。
「用紙サイズの指定」や「使用するプリンタの指定」などは制御出来ますが、
「使用するトレイの指定」は行うことは出来ません。

詳細は、APIリファレンスの
[CURL.GUI.BASE]-[print-graphic]
の項をご参照ください。

※上記記載内容はCurlバージョン7時点でのものです。
バージョン8からは印刷トレイを指定するためのオプション media-source が追加されています。
バージョン8での印刷機能強化
に関しては、以下のページをご参照ください。
http://developers.curlap.com/re-reference/56-print/744-print-graphic.html

Ver.7での描画について

【ご質問】
開発したアプリケーションを旧バージョン(Ver.4)からVer.7へバージョンアップしました。
バージョンアップ後、旧バージョンと比較すると描画に関する挙動が異なるように思えます。
・旧バージョンと比較して、描画そのものが遅くなった
・print-graphicにて画像(Pixmap)を印刷してみると、ぼやけてみえてしまう。

【回答】
Ver.7.0 から、高品質のレンダリング モードをサポートするプラットフォーム上では、
高品質レンダリングモードを既定のレンダリング モードにしました。
高品質のレンダリング モードは、アンチエイリアス、優れた曲線の処理、
回転したイメージのレンダリング機能、部分透過や、アルファ混合の機能を提供します。

大きいフォントで比較すると、
シャープ(ギザギザ)な印象がなくなり、
ぼやけて見える印象を持たれるかもしれませんが、
これは、高品質レンダリング(アンチエイリアス)によるものです。

旧来の描画処理が良い場合は、
下記のコードを用いることでRenderingModeを変更することができます。
{set-rendering-mode RenderingMode.normal}

詳細はAPIリファレンスの
[CURL.GUI.BASE]-[RenderingMode]と
[CURL.GUI.BASE]-[set-rendering-mode]
の項をご参照ください。

また以下のFAQをご参照ください。
http://developers.curlap.com/faq/49-faq-operation/317-2010-10-07-03-51-17.html
http://developers.curlap.com/faq/48-faq-specification/449-2010-11-08-07-16-01.html

※ 記載日時点の最新であるVer.7をベースとした記事です。

複数バージョンのpcurl化

◆ご質問◆
 APIバージョン5.0で、稼働していたシステムに、7.0ヘラルドの追加を行いました。
 IDEで動かす限り、Ver5.0ランタイムしか入っていない環境では、正常に動作しましたが、
 pcurl化して、実行すると、アプレットロード中に、エラーになってしまいます。
 要望としては、Ver5.0の既存(既に動作・運用している)の環境に影響を与えず、
 Ver7.0をダウンロードしている環境への対応を考えております。
 pcurlを作成するときに、このようなケースに対応できるような方法はありませんでしょうか?

◆回答◆
 pcurlファイルは特定のCurl APIバージョンでのみ動作致します。
 pcurlファイルが動作するバージョンは、ヘラルドに記述したAPIバージョンを参照するのではなく、
 開発者が使用しているプロジェクトのAPIバージョンを参照しています。
 例えば、
 ・プロジェクトのAPIバージョン : 7.0
 ・ヘラルド : {curl 5.0, 7.0 applet}
 のような環境下では、
 pcurl化せずに実行できるAPIバージョンは5.0および7.0となりますが、
 pcurl化したファイルを実行できるAPIバージョンは7.0のみとなります。

 プロジェクトのAPIバージョンの確認方法は以下の通りです。
 [Curl IDEのメニュー]→[プロジェクト]→[プロパティ]→[全般タブ]

要求を満たすには、
 「ver.5およびver.7のpcurlファイルをそれぞれ作成し、
  バージョンの判定を行い、そのバージョンに対応するurlを起動するアプレットを作成する」
 「pcurl化せずに配布する」
等が考えられます。

サーバーライセンスキーのチェック仕様について

リクエストされたURLとライセンスファイル上のURLについて、
Curl側のライセンスキーチェックの仕様を説明いたします。

例:
http://www.curl.com/foo/bar.curl?query

【サーバライセンスキーチェックの仕様】
サーバの部分: ”http://www.curl.com/”
 → リクエストされたURLを小文字に変換して比較(大小区別なし)し、
   一致不一致を判断する。

ディレクトリの部分 ”foo/bar.curl?query”
 →リクエストされたURLそのままの値(大小区別あり)で比較し、
  一致不一致を判断する。

上述の通り、Curlのライセンスチェックは
ディレクトリ部分について、大文字小文字を区別して比較しておりますが、
サーバの部分は小文字に変換して判定しております。

尚、TOMCAT等の一部のWeb・APサーバでは、
ディレクトリ部分を大文字小文字を区別しているものがございます。

このように大文字小文字を区別するサーバにおいて、

http://www.curl.com/Foo/
と指定すべきところを、
http://www.curl.com/foo/
と指定した場合は

Curlライセンスチェックの前段階でエラーとなり、
HTTPエラー404が発生されます。