19r2以降,テキストファイルを作成するコマンド(TEXT TO DOCUMENT
)File.setText()
でエンコーティングを明示的に指定しなかった場合,デフォルトでバイト・オーダー・マーク(BOM)なしのUTF-8が使用されるようになりました。UTF-8
などのエンコーティングを明示的に指定すれば,これまでどおりBOMが出力されます。これは仕様です。
エンコーティングを指定せずにUTF-8(デフォルト)でテキストファイルを作成した場合,ファイルの冒頭に0xEF
0xBB
0xBF
の3
バイトが追加されることがありません。これは,テキストエディターがBOMに基づいてファイルのエンコーディングを判定することができないことを意味します。
過去のバージョンで作成されたプロジェクトであれば,互換性オプションで動作を切り替えることができますが,19r2以降で作成されたプロジェクトにはオプションが表示されず,以前の動作に切り替えることはできません。
どちらのモードであってもUTF-8-no-bom
のようにBOMなしのエンコーティング名を指定することができます。
https://doc.4d.com/4Dv19R4/4D/19-R4/Compatibility-page.300-5737012.ja.html
Pop up menuには,項目文字列を"項目1;項目2;項目3"
のようにセミコロン記号で区切って渡します。特殊な文字(メタ文字)を項目に表示したい場合,そのような文字を打ち消すための合図および代替の区切り文字としてChar(1)
を使用することができます。
Char(1)
は項目と項目の間に挿入する必要があることに留意してください。冒頭あるいは末尾のChar(1)
に区切り文字としての効果はありません。ドキュメントには明記されていませんが,区切り文字としてのChar(1)
の数はセミコロンの数を上回っている必要があります。ポップアップメニュー項目に1
個のセミコロンを含める場合,Char(1)
は2
個以上必要なので,ポップアップメニューの項目数は3
個以上が必要となります。これは仕様です。
例:"セミコロン;項目1"+Char(1)+"項目2"+Char(1)+"項目3"
19r2では4D.Blob
オブジェクトが使用できるようになり,19r3ではORDAでBLOBフィールドが使用できるようになりました。この機会にクラシックコードをORDAで書き換えることを検討しているかもしれません。大量のBLOBフィールドをORDAで扱うのであれば,クライアント側キャッシュのサイズに気を配ると良いでしょう。
ローレベルのREST APIはデフォルトで100
件のエンティティを返しますが,クライアント/サーバー版のORDAリクエスト毎にフェッチされるエンティティは80
件に設定されています。すべての属性(フィールド)がリクエストされるわけではなく,必要に応じてリクエストされる属性やリレーション属性がコンテキストに追加されてゆきます。サーバから取得したエンティティは,30000
件/テーブル毎を限度として再利用されます。これがクライアント側ORDAキャッシュです。
entitySelection.refresh()@18r3のドキュメントに説明されているように,クライアント/サーバー版のORDAには30
秒間保持されるクライアント側キャッシュが存在します。これはサーバー側で10
分間保持されるローレベルのエンティティセットのキャッシュとは別のものです。また,ストラクチャ/プロジェクトのクライアント側キャッシュとも違います。
クライアント/サーバー版のORDAでBLOB属性にアクセスした場合,最高で30000
件/テーブル毎のBLOBがクライアント側にキャッシュされる可能性があります。プロセスのメモリ占有量が問題になるようであれば,setRemoteCacheSettings()@19r5でキャッシュされるエンティティ数を抑えたり,setRemoteContextInfo()@19r5でコンテキストの設定を調整することができます。
クラスターBツリーインデックスは,内部的にエンティティセレクションで管理されています。リレーション属性をプロジェクションするなどして,クラスターインデックスを使用した場合,クラスターインデックスが作成したエンティティセレクションは,クエリで作成した通常のエンティティセレクションが解放された後もキャッシュに残されますが,これはメモリーリークではありません。FLUSH CACHE(*)
でキャッシュからパージすることができます。
19r5では,Webエリアの仕様が変更され,ファイルURLのドラッグ&ドロップが自動的に処理されないようになりました。たとえばPDFファイルをWebエリアにドロップした場合,自動的にファイルが開かれるのではなく,代わりにOn Window Opening Deniedフォームイベントが発生します。ドロップされたURLパスを検証し,必要に応じてファイルを処理することができます。なお,WA OPEN URL
コマンドは,これまでどおりファイルURLを開くことができます。
Webサーバーのスケーラブルセッションを有効にした場合,下記のWebオプションは無視され,同時Webプロセス数の上限がなくなります。
Web inactive process timeout
Web max concurrent processes
Web inactive session timeout
Webサービス(SOAP)はセッション管理の対象外です。スケーラブルセッションの設定は,Webサービス(SOAP)に適用されず,「セッションなし」の最大同時Webプロセス数が適用されます。これは仕様です。