Windows Server 2012およびWindows Server 2012 R2は,2023年10月10日にサポートが終了しました。今後,当該製品に対するセキュリティ更新プログラムは配信されません。別の言い方をすれば,今後,当該製品を標的にしたサイバー攻撃の増加が予想されます。攻撃者は,特定の脆弱性を狙えばすぐにセキュリティ対策を講じられることを知っているので,サポートが終了するまでサイバー攻撃を控える傾向があるからです。ランサムウェア攻撃に遭うと,深刻な被害を被ることになります。海外では,そうした理由で4D Serverのデータファイルやバックアップにアクセスできなくなった事例も報告されています。サポートが終了したプラットフォームを引き続き使用することには,リスクが伴うことを認識しなければなりません。
4Dのシステム要件は,下記のとおりです(Windows抜粋)。
バージョン | クライアント | サーバー |
---|---|---|
v20.1 | Windows 10 – Windows 11 | Windows Server 2012 R2 – Windows Server 2022 |
v19.7 | Windows 10 – Windows 11 | Windows Server 2012 R2 – Windows Server 2022 |
v20 R2 | Windows 10 – Windows 11 | Windows Server 2012 R2 – Windows Server 2022 |
まもなくリリースされるv20.2, v20 R3では,Windows Server 2012 R2がシステム要件から除外されることになります。本来,Long Time Supportはリリース当時のプラットフォームを最後までサポートするべきですが,WebPライブラリの脆弱性を突いたCVE-2023-4863およびCVE-2023-5217の修正を優先させるため,例外的にCEFをアップデートすることになり,20.2でもWindows Server 2012 R2のサポートを終了することになりました。
4Dのセキュリティレベルは,オペレーティングシステムのライフサイクルに加え,OpenSSLライブラリやWebエリアに採用されているChrome Embedded Frameworkのバージョンにもかかっています。たとえば,v20では大幅に刷新されたOpenSSL 3.1.1が採用されていますが,過去バージョンのAPIに互換性がないため,v19では引き続きOpenSSL 1.1.1sが使用されており,更新の予定はありません。CEFについては,12のセキュリティ更新が実施されたChromium 5672がv20.2とv20 R2で採用されています。また,20.2と20 R3ではChromium 5993にアップデートされる予定です。
セキュリティ更新の恩恵にあずかるため,4Dのライフサイクルを考慮し,フィーチャーリリースを利用できるメンテナンス(無償アップグレード)サービスをライセンス購入時に付与するなど,事前に計画を立てることが勧められています。
FileHandle
をオブジェクト型フィールドに保存することはできません。これは仕様です。エンティティの属性にNull
が代入されるか,保存時にエラーが返されるかは,バージョンの実装に依存します。
SMTPTransporter
の headers プロパティでReturn-Path
を設定することができますが,返信アドレスとして受信者に表示されるかどうかは,SMTPサーバーの仕様に依存します。たとえば,GmailはReturn-Path
ヘッダーの値を送信者のアドレスに書き換えるようです。
BASE64 ENCODE
にはパラメーターとしてBlob
または4D.Blob
またはText
を渡すことができます。明示的に宣言されていない場合,意図とは違うタイプにコンパイラーが変数を宣言してしまうかもしれません。たとえば,下記のようなコードはコンパイルモードでうまく動作しません。変数の型が曖昧であるためです。
$toEncode64:=$file.getContent()
BASE64 ENCODE($toEncode64; $b64content)
変数を宣言することにより,問題を解消することができます。
var $file : 4D.File
var $toEncode64 : 4D.Blob
var $b64content : Text
変数宣言のvar
シンタックスにおいて型指定は任意です。型指定を省略した場合はVariant
となります。
var $myText : Text //テキスト型
var myDate1; myDate2 : Date //日付型
var $myFile : 4D.File //オブジェクト型4D.Fileクラス
var $myVar //バリアント型
シンタックスチェックは三項演算子の第1パラメーターが Truthy あるいは Falsy であることをチェックしますが,第2および第3パラメーターの互換性はチェックしません。これは仕様です。代入文の右オペランドに三項演算子を記述する場合,この点に留意する必要があります。
NetKit のOffice365..mail.getFolderList()
関数は,search
オプションをサポートしていますが,メールフォルダーの検索はできません。これは仕様です。search
オプションをサポートしているのはdirectoryObject
タイプのエンティティですが,メールフォルダーはそれに該当しないためです。
倍長整数型の上限値はMAXLONG
です。これを超える値を代入した場合の結果は未定義であり,実装依存となります。メソッドエディターに入力した数値リテラルは実数型であるため,倍長整数型に加算した結果は実数となります(Integer+Real=Real)。この結果を倍長整数型に代入しようとした場合,実数から倍長整数の型変換が実行されることになります。Macでは符号が反転して負の値が返されるかもしれません。Windowsでは0
が返されるかもしれません。一方,倍長整数に倍長整数を加算して上限値を超えた場合,結果は倍長整数なので,オーバーフローした値は倍長整数型の下限値に続きます。これは仕様です。