1

ノートブックサーバーをスタンドアロンのOSXアプリに埋め込みます。ここで、サーバーはサブプロセスで(NSTaskを介して)起動され、アプリはHTTPを使用してそのプロセスに接続し、WebフロントエンドをWebViewにレンダリングします。

OS Xアプリの部分で、サーバーサブプロセスにさまざまなステータス情報を照会できるようにしたいと思います。最も重要なのは、変更が保存されていないノートブックが開いているかどうかです。特別なURLでこれを照会する方法があるかどうか疑問に思いました。たとえば、次のようなものです。

http://127.0.0.1:8888/status.json

私がやりたいもう1つのことは、ノートブックサーバーを制御することです。たとえば、シャットダウンする前に、保存されていない変更を保存するように指示します。

4

1 に答える 1

4

一般的な「ステータス」クエリはありませんが、GETリクエストを使用して既存のノートブックのJSONサマリーを表示できます。

http://127.0.0.1:8888/notebooks

これにより、フォームのdictのリストが表示されます。

[
 {
  "kernel_id": null, 
  "name": "Animations Using clear_output", 
  "notebook_id": "49222a70-b746-4fb2-9b96-fe1a61e82979"
 }, 
 {
  "kernel_id": "2e8de018-c816-4222-82d2-4a35cfa95f1c", 
  "name": "Cell Magics", 
  "notebook_id": "38ce96ab-b456-4af1-b68d-44a1a3ce86ee"
 }
]

ここkernel_id=nullで、はノートブックが実行されていないことを意味し、実行されていることをkernel_id=U-U-I-D意味します。

最も重要なのは、保存されていない変更で開いているノートブックがあるかどうかです。

この情報はブラウザにのみ存在するため、保存されていない変更を知ることはできません。サーバーはドキュメントが編集されたことさえ知らないため、クエリを実行する必要はありません。

私がやりたいもう1つのことは、ノートブックサーバーを制御することです。たとえば、シャットダウンする前に、保存されていない変更を保存するように指示します。

ライブドキュメントは実際にはサーバーに存在しないため、これは不可能です。編集されたドキュメントは、ノートブックを編集しているブラウザウィンドウのブラウザ側にのみ存在します。

保存されていない変更やトリガーの保存を確認する場合は、WebViewsのjavascriptを操作してこれを行う必要があります。jsのノートブックオブジェクトには、保存されていない変更があることを示す「ダーティ」フラグがあります。したがって、「保存されていない変更を保存する」は次のようになります。

if (IPython.notebook.dirty) { IPython.notebook.save_notebook(); }

IPython1.0.devでテスト済み

于 2013-02-27T06:29:14.720 に答える