Milliseconds の例題と説明文が改定されています。経過時間を計測したい場合,関数から返される値を比較するのではなく,差を計算するべきである点が強調されています。値は約24日毎に符号が反転するからです。
Milliseconds
は,マシン(アプリケーションではありません)が起動されてから経過された時間をミリ秒単位で返します。しばしば時間の計測に使用される関数ですが,符号付き32ビット整数(C_LONGINT
)が使用されているため,2147483647
ミリ秒,つまり約24.86
日毎に返される値の符号が反転することに留意しなければなりません。
経過時間(たとえばプロセスの停止時間)を計測するような場合,Milliseconds+$timeout
のような加算式でタイムアウト時間を計算するべきではありません。そうではなく,必ずMilliseconds
の差と閾値を比較するようにしてください。
たとえば,MAXLONG (2147483647)
に1
を加算すると,-2147483648
になります。比較演算で処理した場合,時間が過去に戻ったような扱いになり,(24日後まで)タイムアウト条件が満たされません。対照的に,値の差を計算すれば,つまり-2147483648-MAXLONG
を求めれば,(整数の符号がまた反転して)1
が返されます。
ドキュメントは17r3で改定されていますが,この情報は過去すべてのバージョンで有効です。
If(Locked([Table_1]))
$starttime:=Milliseconds
Repeat
DELAY PROCESS(Current process;15)
LOAD RECORD([Table_1])
$waittime:=Milliseconds-$starttime
Until(Not(Locked([Table_1]))|(Process aborted)|($waittime>5000)) //最大で5秒待つ
End if
Open window(100;100;300;200;0;"Chronometer")
$vhTimeStart:=Current time
$vlTicksStart:=Tickcount
$vrMillisecondsStart:=Milliseconds
Repeat
GOTO XY(2;1)
MESSAGE("時間...........:"+String(Current time-$vhTimeStart))
GOTO XY(2;3)
MESSAGE("Tick..........:"+String(Tickcount-$vlTicksStart))
GOTO XY(2;5)
MESSAGE("ミリ秒...:"+String(Milliseconds-$vrMillisecondsStart))
Until((Current time-$vhTimeStart)>=?00:01:00?)
CLOSE WINDOW
17r2以降,Webサーバーを公開するためのヘルパーツール(Mac版)の仕様と名称が変更されています。ヘルパーツールが正しい方法でアンインストールされていない場合,Webサーバーの公開で競合が発生するかもしれません。
macOSで1023
以下のTCPポート番号を使用するには,通常,管理者権限が必要です。しかし,サーバーを起動するたびに管理者のパスワードを入力するのは面倒なので,専用のシステム常駐プログラム(ヘルパーツール)を管理者権限でインストールし,ポートを開くことをそのアプリケーションに代行させる,という仕組みが用意されています。
v2004以降,ポート番号を開くためのヘルパーツールHelperTool
と,それをインストールするためのインストーラーInstallTool
が4Dのアプリケーションと一緒に配付されています。
v2004からv17r2のヘルパーツールは,AppleのBetterAuthorizationSampleというサンプルに基づいています。
ヘルパーツールのアーキテクチャ(32または64ビット)は,アプリケーション本体と同じものがインストールされます。名称は, com.4D.HelperTool
です。
ヘルパーツールは,WEB START SERVER
コマンドを実行した場合,サーバー管理画面の「HTTPサーバー開始」ボタンをクリックした場合,あるいはデザインモードの「Webサーバー開始」メニューを選択した場合にインストールされます。データベース設定の「開始時にWebサーバーを起動」オプションは,すでにヘルパーツールがインストールされている環境(あるいは1024以上のポート番号しか使用しないアプリケーション)で使用してください。
ヘルパーツールをインストールするアプリケーションは,コード署名されていなければなりません。4Dでは,コード署名に必要なAppleのデベロッパープログラムに加入しなくても,アプリケーションビルドができるよう,ヘルパーツールをインストールするだけのアプリケーション(署名済み)を提供しています。
17r3では,AppleのEvenBetterAuthorizationSampleに基づき,ヘルパーツールがアップデートされています。新しいヘルパーツールアーキテクチャは,常に64ビットです。新旧のヘルパーツールが共存できるよう,名称はcom.4D.Helper
に変更されています。
ヘルパーツールは,PriviledgedHelperTools
フォルダーにインストールされます。しかし,直接,常駐プログラムのファイルを削除することは推奨されていません。そうではなく,コマンドラインからヘルパーツールのインストーラーInstallTool
にパラメーターを渡してアンインストールする必要があります。
cd {4D.appのディレクトリ}
sudo 4D.app/Content/MacOS/InstallTool.app/Content/MacOS/InstallTool --uninstall
正しい方法でヘルパーツールをアンインストールしなかった場合,Webサーバーの開始時にアプリケーションがフリーズするかもしれません。