それではいよいよ、リアルタイムの会話をNSFに保存してみます。プログラムコードのベースは、前回のDominoを離れてNode.jsだけでチャットの実装をしてみる - Chiburu Systemsのブログの「domtest2」になります。 チャットデータと、DominoのREST APIを取り持…
前回の記事Dominoアクセスになんちゃって認証を追加する - Chiburu Systemsのブログでは、Node.jsに預けた認証情報でDominoにアクセスすることで、あたかもNode.jsでDominoの認証をしているかのような「なんちゃって認証」を実装しました。ここまではどちら…
前回「DominoとNode.jsの同居サーバ構築 - Chiburu Systemsのブログ」でNodeからDominoにRESTを通じてデータベースのタイトルを取得し、Webページに反映させました。このとき、認証は埋め込みのユーザ名、パスワードを使いました。今回は、それをWebユーザが…
Notes C APIによるNotesPeekリメイクプロジェクトを少しお休みして、Webの話をしばらくします。 DominoをめぐるWebアプリケーション環境は、クラシックWebとXPagesがあります。サーブレットは置いておきます。クラシックWebは、レガシーなNotesアプリケーシ…
前回、同一文書内にある同名アイテムついて少し解説しました。それは、これからお話しするAPI関数、NSFItemScanの挙動に関係があるためです。 NSFItemScan関数は、文書内に含まれるアイテムを巡回し、アイテムごとにコールバック関数を呼び出してくれる関数…
今回は、リッチテキストから少し離れて、文書からアイテム(フィールド)データを取得するプロセスについての考察をします。 Notes文書(Note)には、いろいろな種類のアイテムが格納されます。文書のプロパティやNotesPeekのように、文書内のアイテムをすべて読…
前回、CD(Composite Data、リッチテキスト内の構成要素)のテキスト要素「CDTEXT」に含まれるフォントの修飾データを明示化しました。この中にはもちろんフォントの書体も含まれますが、5種類の書体定義しか存在しません。書体の種類は、パソコンの黎明期なら…
先週の体調不良が、嘘のように回復しました。また気を引き締めてNotesPeekをリメイクしていきます。 前回は、CDデータをテンプレートクラスベースで実装を簡略化し、その手始めとしてCDテキストを「cd::Textクラス」として実装してみました。今回は、CDテキ…
前回は、リッチテキストの要素である「CDデータ」を、未定義のものでもバイナリの値を並べて表示できるCdOtherItemクラスと、ライブラリクラスとしてのntlx::cd::Otherクラス、そしてその親クラス(と言うより、インターフェース、純粋仮想関数しか持っていな…
ちょっと前の記事「伝説のツール「NotesPeek」をQtでリメイク開発記2017-7-23 - Chiburu Systemsのブログ」で、リッチテキストについて着手したことをご報告しました。この中で、リッチテキストは多種多様な「CDxxxx」という複合データ(Composite Date)によ…
前回は、設計文書のうち、フォーム文書を展開してみました。今回はその続きです。 前回も触れましたが、Notesの設計文書は基本的に「文書クラス」というものでその性質が分けられますが、バージョンが進むうちに文書クラスの範囲(WORDビットの下位12ビット)…
前回はリッチテキストに対して切り込みましたが、今回は設計要素(設計文書)に対して切り込みを入れます。 Notesの設計要素は、広義では「文書(Note)」に当たります。もし、データとしての「文書」と分けるのであれば、「Document」がNotesで一般的に使われる…
さて、ようやくリッチテキストにメスを入れる時が来ました。The time has come! リッチテキストは、まぎれもなくアイテム(フィールド)なので、テキストフィールドや数値フィールドと同じように、アイテム型(WORD)を先頭に持つバイナリデータです。 アイテム…
リッチテキストの分解をする前に、どうしてもやっておきたいことがありました。今回はそちらの開発について。 前回、文書のアイテム(フィールド)を子アイテムにし、すべてのアイテムのデータについて、一律でバイナリ形式の文字列に変更して、表記することに…
先週から主旨を「開発記」に変更しての2回目です。 今週からいよいよ一階層下に進めます。文書に含まれるフィールド(アイテム)について展開していきます。まずは、NotesPeekのフィールドを展開した様子を見てみます。 文書を展開すると、デフォルトの「Note …
NotesPeekというNotesのデータベースを文書、フィールド、リッチテキスト要素のレベルまで細分化して解析できるツールに、最新のAPIバージョンと、マルチプラットフォームC++ライブラリでリメイクに挑んでいるこの企画。 一銭にもなりませんが、どうしても作…
Notesが扱うデータの基本型は、テキスト、数値、日時の3つとその複数値です。それ以外については、おおよそ次の3つに分けられます。1つはリッチテキスト、2つめがバイナリ形式、そして3つめが基本型に応用になります。2つめのバイナリ形式は、画像や添付ファ…
これは、Evernoteのノート、NoteのAPIから見た構造です。ぼーっと眺めてみます。 とてもNotesっぽいですね。例えばこの構造を、Notesでなじみのある用語と比べてみると・・・ guid = unid title = subject/title field content = body rich text field creat…
今回のNSFinderでは、NotesPeekと同様に、ツリービューのルートに「Local」「Servers」という2つのアイテムを配置して、LocalにはNotesクライアントのデータディレクトリを、Serversには利用可能なDominoサーバのリストを取得してアイテム化します。 サーバ…
前回は、Notes APIにおける複数値、LIST型とRANGE型について説明しました。テキストの複数値はLIST型を、数値と日時はRANGE型を使って複数値を表現しています。RANGE型は2種類のリストを持っており、1つは単数値のリスト、もう1つは「範囲」というペア値のリ…
Notesの基本的な「型」は、テキスト(文字列)型、数値型、日時型になります。これら基本型は、いずれも複数値になることは皆さんご存じのことと思います。 テキストリスト型 数値リスト型 日時リスト型 このうちテキストリストは、LISTという構造体が使われて…
今回はUIの見直しです。 前回まではツリー構造のビューにひたすら追加情報を列として表示していましたが、いろいろな情報が同じ列に表示していては必ず破綻するので、今のうちに、アイテムの情報を別のペインにしておきます。 Mac版 Ubuntu版 Windows版 ntlx…
日時を扱うクラスを設計してから少し時間がたちましたが、NSFinderで実際に活用してみたいと思います。 Mac版 Ubuntu版 Windows版 ntlxライブラリのソースコードリポジトリはこちらです。タグ「v0.1.3」をチェックアウトしてください。 https://tkondoh2@bit…
この構造体「TIME」は、Notes APIの日時型(TIMEDATE構造体)と、C/C++言語を介した他の日時型と相互に変換するための媒介の役目をします。 上図のように、この構造体には以下のようなデータが含まれます。 年 月 日 曜日(1=日〜7=土) 時間 分 秒 10ミリ秒(1/1…
Notesにおいて基本的なデータ型3つを挙げるとすると、テキスト型、日時型、数値型となるでしょう。また、それらの複数形「テキストリスト型」、「日時リスト型」、「数値リスト型」も存在します。その他に、@式で紹介した「バイナリ型」、整形可能な「リッチ…
「その4・IDテーブル」「その5・@式その1」「その5・@式その2」「その5・@式その3」とAPIの説明などが続いたので、このあたりでコードの紹介を挟みます。 今回のゴールは、データベースアイテムの直下に、文書のアイテムを展開し、文書ID(NOTEID)とその文書…
「ウィンドウタイトル」はフォームという設計文書に含まれる、「@式型」のフィールド(アイテム)です。ここでは、NoteクラスのgetWindowTitle()というメソッドとして定義します。このメソッドの実装プロセスを、APIを中心にしてみていきます。 QString ntlx::…
少し時間が空いたので、前回のおさらいをしておきます。 @式(または@関数)はR4以前からある操作言語である。 フォームは文書(Document)設計用の文書(Note)である。 ウィンドウタイトルは、フォーム専用のフィールドである。 @式は文字列として書かれ、バイナ…
@式、または@関数は、NotesがR4でLotusScriptを実装するまで、唯一の操作言語でした。@式はあらゆるところで使えます。フィールドの計算式、列式、UI操作(@Command)、Webの時代が来ても、CGIのような使い方ができたりしました。そんな@式は、API側から見ると…
IDテーブル IDテーブルは、Notesにおける文書のためのコンテナの役割を持っています。Notes/Domino APIプログラミング―C++とSTLによる実践的プログラミングでも書かれていますが、 文書IDテーブルとは、文書ID(NOTEID)を昇順で保持するコンテナで、std::set…