v14以降でリニューアルされたクエリエディターは,日付型フィールドの区切り文字をシステムフォーマット(GET SYSTEM FORMATS
)に基づいて決定しています。通常の日付フィールドのように,「スラッシュ・ピリオド・ハイフン(ダッシュ)」が常に使用できるわけではありません。これは仕様です。
Macには,アプリケーション間で共通のプリント設定が利用できます。あるアプリケーションで印刷ダイアログを表示し,プリセットを使用して印刷した後,別のアプリケーションで 印刷ダイアログを表示した場合,最後に使用したプリセットがデフォルトで選択されています。
4Dの場合,印刷ダイアログ(PRINT SETTINGS(Print dialog)
)の前にSET PRINT OPTION
を実行することにより,デフォルトで表示される設定を操作することができますが,最後の印刷にプリセットが使用された場合,プリセットの内容が優先され,コマンドの指定はダイアログに反映されません。これは仕様です。SET PRINT OPTION
でダイアログのデフォルト設定が変更できるのは,プリセットではなく,「デフォルト設定」が選択されている場合だけです。
システムのプリセットとSET PRINT OPTION
が競合するような場合,マニュアル操作でプリセットを「デフォルト設定」に戻すか,プリセットのポップアップメニューをクリックし,「プリセットを表示…」ダイアログで「プリント後にプリセットメニューを”デフォルト設定”にリセット」を有効にすると良いかもしれません。
4D Server管理画面を修正したいという要望は以前からありました。あるカスタマーは情報を削除したいと思い、別のカスタマーはカスタマイズした情報を追加したいと考えていました。このAdminWindowコンポーネントはそのやり方をお見せします。「そのまま」使うことも必要に応じて修正することも可能です。
以前のブログでは、webベースの管理ウィンドウを構築する方法をお見せしました。しかし、4Dコードで純粋にカスタマイズしたインターフェイスに興味があるのなら、このブログ(と関連するHDI)がやり方を提示します!
コンポーネントは、最初の画面からグラフィックスを取り除き、システム情報と共に強化されました。また、二つのページが含まれます:
オペレーションのカウント、あるいはオペレーションを使った総合計時間によってリストボックス をソートするのにヘッダーを使用できます。このダイアログを使って見落とされたインデックスを見つけたり、クエリーを最適化したりもすることでしょう。リアルタイム・モニターのページは、ビルトインモニターの機能を広げます。通常はピークタイムを表示しています(オペレーションには0.5秒以上が必要です。)さらにオペレーションが動いている場合は、一つ前の最も遅いオペレーションを表示します。ページが開いている時だけ記録され、履歴は残りません。
以下のイメージは、コンポーネントのデフォルトのインターフェイスと、これまでの4D Server管理ウィンドウとの違いを表示しています。
コンポーネントのデフォルトのインターフェイス:
4D Server管理ウィンドウ:
このコンポーネントのソースコードは、Github(英語版 )から入手できます。テストするには、On Startupデータベース・メソッドのMonitor_Startメソッドを呼び出すだけです。このように、データベースを開けばカスタマイズしたダイアログが表示されます。
あなたの必要に応じてコンポーネントをカスタマイズしてください。ページやコンテンツの消去、非表示、修正は思いのままです。独自のプロセスリストなど自分だけのコンテンツや、状態変数、ライセンス情報などを追加できます。コードはクライアント端末で使うように設計されていることに留意してください(サーバーから自動的に情報を取ってきます)。
互換性ノート:このサンプルは4D v17 R5とプロジェクト・データベースで作られています。
iOS 13は、アップルのWorldwide Developers Conference (WWDC2019)で最初に披露され、9月19日にリリースとなりました。とても嬉しいことに、アップルが最新のiOSで明らかにした機能のいくつかは、v18のリリースとともに4D for iOSで使えるようになります!私たちが用意している先進的な機能について、ユーザーが知っておくべきことをすべてを提示します:
最近ではクールな若者はダークモードを好むようです。良い点は目の疲労を減らし、iPhoneのバッテリー寿命を増やしてくれることです!ダークモードは美しく、ワクワクするユーザーエクスペリエンスを作成します。 そのため、すべての4D for iOSリストと詳細フォームテンプレートはダークモードに対応するように再設計されました。すべてのカラーは、ライトモードとダークモードのどちらでもベストな見た目になるように注意深く選択されています。魅力的なダークカラー・スキームであなたのアプリをドラマティックな外観にできます!
iOS13のもう一つの大きな変化は、カードのような外観です。リストフォームと詳細フォームは、この嬉しい機能を利用するように再設計されました。ビューをプルダウンして閉じることで、アプリの異なる画面間をナビゲートする新しい方法を提供しています。
これら二つの機能は、すべての4D for iOSテンプレートにネイティブに含まれ、美しいダークアプリを構築することができます。
このクールなTaskアプリインターフェイスを4D for iOSで作成してみてみましょう!
アップルでサインを忘れてはいません。事実、アップル・サインインは4D Serverでフルサポートされています!既存のアップルIDを使って素早く簡単にサインインできます。”Sign in with Apple ID”をタップして、承認にはTouch IDとFace IDを使うだけです。
アップルはSwift Package Manager (SwiftPM)を使った4D for iOSプロジェクトの中に依存性を含めた新しいスタンダードを導入しましたが、これはiOSプロジェクトで使うために拡張されています。iOSのフレームワーク/モジュールを作成して共有し、Xcodeプロジェクトに統合するために使用される予定です。
良い知らせは、4D for iOSはSwiftPMに完全に対応する予定であることです!言い換えれば、自分自身のSwift依存性を共有したり、含めたりできるようになります。
4D for iOSを使うことで、アピールできるネイティブアプリを作成できます。私たちはアップルが提供する最新テクノロジーの最前線に常にいることを保証します。あなたのアプリはアップルの新しい機能、目立つデザイン、パフォーマンスの拡張などの利点を使えます!すぐに新しい利点をテストし、楽しむことができます。アップルが好んで使うように「コードを書いて衝撃を与えよう」!
4D Server管理ウィンドウをWebインターフェイスを使って再作成したい?リモートデスクトップを使うか、あるいは4D Clientライセンスを使って、サーバールームへ行かなくても4D Serverに何が起こっているかをチェックしたい?これからはウェブ経由で4D Serverの主なパラメータ(例:メモリ使用量、ドライブ空き容量、ユーザー、プロセス、そしてリアルタイムモニターまで)を監視することができます。
このブログでは、様々なRリリースで4Dが配布してきたコマンド群を体験して、あなた自身のWebベースのサーバー管理ダイアログを構築します。さらに4Dスペインの技術マネージャー(アンジェロ・カロプレーセ)は、あなたのアプリケーションにもすぐ使える完全なコンポーネントを提供してくれました。
これらのような管理ダイアログが可能なのは、4D v16とそれ以前から存在するコマンドのおかげです。
しかし、管理情報を使う他のコマンドもまた存在します。
Get license info : 有効なライセンスについての詳細な情報を提供するオブジェクトを返します。 Get process activity : 指定された時間に接続されているユーザー・セッション、または関連する実行中のプロセス(あるいはその両方)のスナップショットを返します。 Get system info : オペレーティングシステムに関する情報、および(ローカルまたはリモートの)マシン上のシステムハードウェアとソフトウェアの特性を含むオブジェクトを返します。 Web Get server info : 4D Web Serverの現在のセッションについて、詳細なランタイム情報を含むオブジェクトを返します。
そして最後に、このブログでは、あなた自身の管理インターフェイスを作成できる4D v17 R4のコマンドを紹介しています。
上記のコンポーネントをダウンロードして、必要に応じてカスタマイズし、テイラーメイド(誂え)体験をお楽しみください!
4D v17 R5 では新規メソッドが追加されたほか、プロセスの個別トレースも可能になり、デバッグ・ログが改良されました。今回は 4D v17 R6 の BETAリリースとともに、プロセスの監視を助ける簡単なログ解析ツールを提供することになりました。このツールを使って、時間のかかるプロセスを確認したり、コール・チェーンとその処理時間を調べたりすることができます。
ここではサンプルシナリオとして、動的なWebページを提供するデータベースのレスポンスが遅い、という問題を調べることにします。
Webサイトが時々重いという指摘を複数のユーザーからもらいましたが、それ以上の詳細はわかりません。さっそく、何が問題なのか調査してみましょう。
問題を調査するにあたって、まずデバッグ・ログを生成します。この解析ツールは 4D v14 のデバッグ・ログ形式に基づいているため、ログ生成を有効にする際にオプションを指定する必要があります:
// デバッグ・ログをアクティブにし、3つのオプションを指定します。2:引数付き, 4:4D v14 形式 (タブ付き), 8:逐次記録
SET DATABASE PARAMETER (Debug log recording;2+4+8)
4D v17 R5 以降は個別プロセスのデバッグができるため、遅延の原因として疑われるプロセスがあれば、それをピンポイントで調査することもできます:
SET DATABASE PARAMETER (Current process debug log recording;2+4+8)
この解析ツールでは、「プロジェクト」単位でデバッグ・ログ・ファイルを管理します。
解析ツールを起動すると、既存のプロジェクトが表示されます。「新規作成」ボタンで新しいプロジェクトを作成します。解析するログ・ファイルを、ファイルまたはフォルダーで選択し、プロジェクトの名称を指定します。
解析処理はプリエンプティブに実行されますが、解析するファイルの数やマシンの処理能力によって時間がかかる場合があります。
一覧からプロジェクトを選択すると、期間や行数などのログの基本情報が右に表示されます。右下のボタンをクリックして、プロジェクトのコール・チェーンや詳細を見ることができます。
この画面では、プロセスとその実行時間が一覧できます。リストの並び順は、もっとも時間を消費するプロセスが上にくるようになっています。
プロセスのコール・チェーンを展開していくと、各階層で一番時間がかかっている処理が確認できます。ALTキーを押しながら展開すると、一番処理の重いコール・チェーンを展開します。タスクやメソッドの行をダブルクリックすると、当該処理がコール・チェーン・エクスプローラーに表示されます。このリストの任意の階層をダブルクリックすると、それが単独で表示されます。コマンドを選択すると、そのコマンドのコール回数、総所要時間、平均所要時間が表示されます。
サンプルシナリオにおいて、一番時間のかかるプロセスとコマンドを探しました。RELATE MANY SELECTION コマンドの処理に1分以上かかることがあるのがわかりました。では、今度は詳細画面を開いて、このコマンドがどこでコールされたのか調べてみましょう。
詳細画面では分刻みのアクティビティ・タイムラインが表示されます。範囲を指定してズームアイコンをクリックすると、拡大表示されます。これにより、対象を限定して調査していけるため、アクティビティが高い箇所を重点的に調べる方法がとれます。
範囲を変更するたびに解析が実行され、結果が下に表示されます。
「サマリー」タブには選択した範囲に関する処理の統計が表示されます。
「トップ」タブには選択範囲あるいは選択プロセスに関わる、すべての処理のコール数と所要時間が表示されます。このリストはフィルターを使って、コマンドやメソッド、メンバーメソッドなどに絞り込むことができるため、処理タイプ別の調査に便利です。
サンプルシナリオの調査では範囲を限定したうえで、コマンドでフィルターをかけました。コール・チェーン画面でも確認したように、RELATE MANY SELECTION コマンドが複数回コールされており、処理時間もかかっているようです。
「オペレーション」タブには、特定の1分に開始された処理の詳細が表示されます。このリストは任意の検索ワードで絞り込むか、ハイライト表示することができます。パフォーマンスの都合上、このタブの情報は1分の内容に限られています。任意の1分は紫のバーで変更できます。
処理されたすべてのコードが表示されているため、このリストはたいへん便利です。ヘッダーをクリックすることで並べ替えることもできます。
サンプルシナリオでは、すでにアタリを付けた RELATE MANY SELECTION コマンドで絞り込み検索し、所要時間の長い順に並べ替えました。一番時間のかかっている2回のコールは同じフィールドを引数として受け取っているようです。データベースのストラクチャーを確認したところ、原因がわかりました: このフィールドはインデックスされていませんでした。
この解析ツールはコードの問題を発見し、データベースのパフォーマンスを改善する意図でデザインされています。ぜひツールをダウンロードして実際に使ってみてください!
データベース設定 > Web > オプション ⑴ では,一般Webユーザーのデータアクセス権が選択できるようになっています。デフォルト値は,Designerです。「なし」に設定されている場合,一般Webユーザーには,アクセス権が何もありません。これは仕様です。
WebまたはSOAPプロセスからレコードの更新ができない場合,一般Webユーザーが有効なユーザー名であることを確認してください。クライアント側Webサーバーの一般Webユーザーは,クライアント側で設定する必要があります。
一部のセルがロックされた4D ViewスプレッドシートをView Proに変換した場合,シートはデフォルトで「保護」された設定になります。これは仕様です。
4D Viewにシートを「保護」するという概念はなく,個別にセルがロックできるようになっています。View Pro(SpreadJS)でユーザーに特定のセルだけの編集を許可する場合,シートを保護してから,ユーザーに編集を許可するセルだけをロック解除します。
https://docs.grapecity.com/help/spread-js-9/celllock.html
一部のセルがロックされた4D Viewスプレッドシートを変換した場合,シート全体が保護された上で,特定のセルだけがロックされるようになっています。その他のセルはデフォルトでアンロックされています。これにより,ロックされたセルの設定は継承されますが,1点,問題があります。デフォルトですべてのセルがアンロックされているため,ユーザーに編集を許可するセルを除き,シート全体を保護することができない,という問題です。
SpreadJSのシステム,つまり,特定のセルをロックするのではなく,特定のセルを除いて入力を禁止する方式に移行したいのであれば,デフォルトのスタイルシートから"locked":false
の指定を取り除ことができます。
$defaultStyle:=$spreadDocument.spreadJS.namedStyle[1]
OB REMOVE($defaultStyle;"locked")