BLOGS

4D ブログ

warning: file_get_contents(http://www.telize.com/geoip/54.81.195.140) [function.file-get-contents]: failed to open stream: HTTP request failed! in /var/www/www.4d.com/docs/includes/common.inc(1762) : eval()'d code on line 4.
07/03/2016

v15の64ビット版では,コンパイラーが改定され,C_REALのデータ型を処理するためのFPUアセンブリ命令が生成されるようになりました。

 

関連記事実数型の計算

 

v15の64ビット版をコンパイルモードで使用するためには,CPUがSSE4.1命令セットをサポートしていなければなりません。2007年以前の古いCPUでは,SSE4.1命令セットがサポートされていない可能性があります。そのようなマシンでは,実数型の演算でアプリケーションがクラッシュする恐れがあるので注意してください。

 

クラッシュするコードの例:

 

C_REAL($result;$a;$b)
$a:=(Random%(999999-100+1))+100
$b:=(Random%(20-1+1))+1
$result:=$a\$b

 

上記のような実数同士の『整数除算』には,ROUNDSDプロセッサ命令が使用されています。この命令は Intel Penryn (2007/2008年) および AMD Bulldozer (2011年) 以降でサポートされています。

 

2006年のCore Duo "Yonah" CPUは,SSE1およびSSE2のサポートが強化され,SSE3にも対応したモデルですが,SSE4.1命令セットには対応していません。他方,Core 2 Duoは,2006年 "Conroe",2007年 "Allendale",2008年 "Wolfdale" モデルがリリースされており,”Wolfdale" チップセットでは,SSE4.1命令セットがサポートされています。v15の64ビット版をコンパイルモードで動かしたい場合,2010年のIntel Core i3以降が搭載されているマシンを使用するようにしてください。

 

SSE4.1命令セットがサポートされていないCPUの例: 

 

  • AMD Athlon II X2 B24
  • Intel Xeon 5160
  • Intel Core 2 Duo T7250
  • Intel Core 2 Duo E6700 

 

サポートされている命令セットは,CHKCPU32で確認することができます。

 

SSE4.1命令セットがサポートされていないCPUであっても,実数型同士の整数除算をコンパイルモードで実行しなければ,問題ありません。

 

回避策

 

A. 除算演算子とRound関数を併用する

B. 整数型に変換してから整数除算演算子を使用する

 

まとめ

古いCPUが搭載されたマシンでは,v15を64ビット/コンパイルモードで動作させることができないかもしれません。目安として,2010年以降に生産されたCPUであれば,SSE4.1命令セットがサポートされているはずです。 

 


25/02/2016

4D v15 R3最終リリース版をご案内いたします。

 

Read more

24/02/2016

v12以前,技術的な制約により,プリントジョブ中にプレビューを表示することができませんでした。この制約は,XPSでプリントプレビューが表示されるようになったことで,取り払われました。Macの場合,プリントプレビューは初めからシステムに任されていたので,そのような制約はありませんでした。

 

Windowsの場合,プリントプレビューには,XPSドライバーおよびビューアーが必要です。Windows 7以降,ドライバーとビューアはプリインストールされていますが,いずれもオプション機能であり,アンインストールすることができます。ドライバーがインストールされていない場合,印刷ダイアログには,『プレビュー』チェックボックスの代わりに警告メッセージが表示されます。しかし,ドライバーだけがインストールされており,プレビューがみつからないケースでは,エラーを完全に検出できないことがあります。プリントプレビューが必要なアプリケーションを使用する場合,XPSをアンインストールしないように注意してください

 

注記: OPEN PRINTING JOBのドキュメントには『Windowsにおいてはプリントプレビューを行なうことができません』という記述がありました。v13以降,そのような制約はありません。


24/02/2016

デザインモードのデータベース設定画面には,『非動作プロセスのタイムアウト』という項目があります。ドキュメントの説明文が簡潔(活動していないWebプロセスを閉じるための最大タイムアウト時間)であり,v13以降,自動セッション管理というメカニズムも導入されたため,タイムアウトの役割がわかりにくいと感じるかもしれません。

 

v12以前,タイムアウトは,SET WEB TIMEOUTで設定することができました。このコマンドは,v13で廃止され,WEB SET OPTIONに引き継がれました。 

 

v12(コンテキストモードが存在した最後のバージョン)では,タイムアウトにより,Webコンテキストの持続時間が決められました。言い換えるならば,非コンテキストモードには,タイムアウトが適用されませんでした。v13で導入された自動セッション管理は,従来のコンテキストモード(のセッション管理システム)に代わるものです。ですから,非動作プロセスのタイムアウトは,自動セッション管理によって開始されたWebプロセスにだけ適用されます。

 

セッション管理されてないWebプロセスは,メソッド終了またはアボート後,自然に消滅してゆきます。プロセスは,しばらく『仮死状態』になるかもしれませんが,その時間は非動作プロセスのタイムアウト設定と無関係です。


24/02/2016

Mac版の4Dおよび4D Serverは,32ビット版がCarbon,64ビット版がCocoaアプリケーションです。開発部は,これまで段階的にソースコードをCocoaで書き換えてきました。Cocoa版の4Dは,原則的にCarbon版の振る舞いを忠実に再現していますが,実際のところ,Carbonよりも安定しており,全般的な操作感も快適です。

 

関連記事 

 

検証により,下記の問題も,Cocoa版の4Dでは発生しないことがわかりました。つまり,実際にはCarbonフレームワークの不具合でした。

 

  • フルスクリーンモードでメニューバーにアクセスした場合,ウインドウのタイトルバーが下方に移動しない問題 
     
  • ウインドウの一部が画面の左にはみ出ている場合,右上のリサイズハンドルで縮小しようとすると,逆にウインドウの幅が増大する問題
 

上記は,いずれも4D側の修正が困難であるため,Standard Behaviour(仕様上,想定される残念な振る舞い)という扱いになります。


16/02/2016

住所や電話番号などの情報を全角文字で管理しているアプリケーションは,非Unicodeのエンコーディングに文字列を変換する場合,特別な配慮が必要かもしれません。Unicodeには,よく似た全角文字が定義されており,そのすべてがShift_JISに変換できるわけではないからです。具体的には,下記のようなUnicode文字が存在することに注意を払う必要があります。

 

 

Read more

16/02/2016

 4D v15.1 Hotfix2を公開しました。

Read more

12/02/2016

4DのWebサーバーにHTTPSでアクセスしたところ,SSLに関する警告がブラウザに表示されるようであれば,セキュリティ設定やSSLサーバー証明書を見直す必要があるかもしれません。この記事では,HTTPSサーバーの設定について説明しています。

 

関連記事主要ブラウザのセキュリティ強化でHTTPSエラー?!

 

Read more

12/02/2016

Windowsプラットフォームのシステム管理者は,イベントビューアーでさまざまなイベントログを調べることがあります。4Dで作成されたアプリケーションは,4D自体が書き込む内容に加え,LOG EVENTコマンドで任意の文字列をイベントログに書き込むことができます。しかし,実際にログをビューアーで開いてみると,下記のようなメッセージが表示され,戸惑うことがあるかもしれません。

 

ソース "4D Application" からのイベント ID 2 の説明が見つかりません。このイベントを発生させるコンポーネントがローカルコンピューターにインストールされていないか,インストールが壊れています。ローカルコンピューターにコンポーネントをインストールするか,コンポーネントを修復してください。

結論からいえば,こうしたメッセージがビューアーに表示されたとしても,特に問題はありませんし,何か重要な情報が失われているわけでもありません。この記事では,4Dのイベントログについて簡単に説明してます。

 

Read more

08/02/2016

ドキュメントに記載されているように,Stringが実数をテキストへと変換するアルゴリズムは,v14R3以降,有効数字13桁に基づいて計算されています。以前のバージョンでは,15桁でした。具体的には,下記のようなコードを実行した場合に結果が違います。

 

String(Num("20160206125401")) //14桁


v14
: "20160206125401"

v15: "2.016020612540e+13"

 

同様の『丸め処理』は,メソッドエディター,4Dタグなどにも適用されます。

 

桁数が減らされたのは,実数からテキストの変換アルゴリズムが関係する処理だけであり,実数の内部保存形式や演算処理は,引き続き15桁(64ビット)であることに留意してください。

 

関連記事: 実数型の計算