読者です 読者をやめる 読者になる 読者になる

伝説のツール「NotesPeek」をQtでリメイクする(その5・@式その1)

@式、または@関数は、NotesがR4でLotusScriptを実装するまで、唯一の操作言語でした。@式はあらゆるところで使えます。フィールドの計算式、列式、UI操作(@Command)、Webの時代が来ても、CGIのような使い方ができたりしました。そんな@式は、API側から見ると…

伝説のツール「NotesPeek」をQtでリメイクする(その4・IDテーブル)

IDテーブル IDテーブルは、Notesにおける文書のためのコンテナの役割を持っています。Notes/Domino APIプログラミング―C++とSTLによる実践的プログラミングでも書かれていますが、 文書IDテーブルとは、文書ID(NOTEID)を昇順で保持するコンテナで、std::set…

Domino Web Server APIで自作Web APIは作ることはできるのか?プロローグ

Domino Web Server API、略してDSAPI。いわゆるHTTPタスクのアドインです。HTTPタスクに介入できるようになったのは、R5からだったと記憶しています。 昔からDSAPIで標準提供されているものに、Domino Offline Service(DOLS)がありますし、DSAPIではないです…

IBM Notes C APIのMacにおけるDWORD問題

現在、このブログでQtによるNotesPeekリメイクプロジェクトを進めていますが、ここで今日、問題が発生しました。 Notesデータベースから文書を取得する際にNSFSearch関数を使用し、NOTEID型を取得しようとしました。 Windows、Linux(Ubuntu)では問題は出ませ…

伝説のツール「NotesPeek」をQtでリメイクする(その3・その2の補足)

ここでは、その2で紹介したコードについて、ファイル検索以外の点について補足します。 ntlxライブラリ QString Status::toMessage() StatusクラスにtoMessageメソッドを追加しました。以前は、 QString msg = Lmbcs(status).toQString(); としていましたが…

伝説のツール「NotesPeek」をQtでリメイクする(その2・ファイルの取得)

ではNotesPeekリメイク版、最初のミッションです。 最初の目標は、「ローカルのデータディレクトリから直下のファイルを取得」します。 Notes APIで、データベースの一覧を取得する関数は、NSFSearch関数です。 #include <nsfsearc.h> STATUS LNPUBLIC NSFSearch ( DBHAN</nsfsearc.h>…

伝説のツール「NotesPeek」をQtでリメイクする(その1)

NotesPeek。ご存じですか。 NotesPeekは、Notesのネットワークパス、データベース、文書、フィールド、リッチテキスト構造といった、Notesのあらゆる階層をインスペクトできるツールです。Notes/Domino APIプログラミング―C++とSTLによる実践的プログラミン…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その11 - 実行・完結編)

それでは、前回までのライブラリを使用して、一気にデスクトップアプリ「IntroQt」を作ります。 まず、メインソースコードです。 // main.cpp #include "dialog.h" #include <QApplication> #include <lmbcs.h> int main(int argc, char *argv[]) { ntlx::Status status = NotesInit</lmbcs.h></qapplication>…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その10 - 共有ライブラリコンパイル・補足編)

前回は、MacOSX上でコーディングした共有ライブラリのコンパイルを、Qt Creatorで行う場合のqmakeプロジェクトファイルの書き方と、個別環境で指定する「追加の引数」についてお伝えしました。 Qt Creatorのビルド設定について、もう少し補足します。 追加の…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その9 - 共有ライブラリコンパイル編)

ここまでをおさらいします。 最初に、Statusクラス(STATUS値のラッパークラス)を作成しました。 次に、Lmbcsクラス(LMBCS文字列のラッパークラス)をNLS版で作成しました。 最後に、Databaseクラス(NSFファイルのラッパークラス)を、必要最低限の実装で作成し…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その8 - データベース・基本クラス編)

前回紹介したデータベース関連のAPIを踏まえて、Databaseクラスを定義していきます。 方針としては、Notes/Domino APIプログラミング―C++とSTLによる実践的プログラミングを踏襲して、コピー不可のクラスとします。 <database.h> #ifndef NTLX_DATABASE_H #define NTLX_D</database.h>…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その7 - データベース・基本編)

Notesデータベースは、Note(文書)の集合体です。文書はアイテムの集合体で、アイテムの中でもリッチテキストアイテムはコンポジットデータの集合体です。Notesデータにアクセスするには、何はなくともデータベースにアクセスする必要があります。データベー…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その6 - LMBCS変換・応用編)

LMBCSを扱うにあたり、前回のコードでは、LMBCSの区切り位置を計測できずにいました。 APIを詳しく見ていくと、LMBCS文字列を含む言語サービスが用意されています。ヘッダファイルnls.hで提供されるNational Language Services(NLS)には、多国語のキャラクタ…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その5 - LMBCS変換・基本編)

それでは、LMBCSをラップしたクラス、Lmbcsを定義していきます。 <ntlx_global.h> #ifndef NTLX_GLOBAL_H #define NTLX_GLOBAL_H #include <QtCore/qglobal.h> #if defined(NTLX_LIBRARY) # define NTLXSHARED_EXPORT Q_DECL_EXPORT #else # define NTLXSHARED_EXPORT Q_DECL_IMPORT #endif #e</qtcore/qglobal.h></ntlx_global.h>…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その4 - LMBCS概略編)

次はLMBCSです。 LMBCS(リンビックス、Lotus Multi-Byte Character Set)はNotes固有の文字コードセットで、STATUSの次にラッパークラスを用意したい概念です。 日本語以外の知識を持ち合わせていないのですが、日本語のみで考えればLMBCSの日本語はシフトJIS…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その3 - STATUS編)

Notes C APIにおけるSTATUS型は、ほとんどの関数の戻り値となっています。関数の実行結果が成功したのか、失敗したのか、判断する材料となります。 「Notes/Domino APIプログラミング〜」では、std::exceptionを拡張した例外処理として実装しています。私も…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その2 - 共有ライブラリ・作成編)

これからの操作は、基本的にMac OS Xを中心に話を進めます。WindowsとUbuntuについては、そのたびに補足していきます。 Qt Creatorで、共有ライブラリを作成します。 選択ボタンをクリックすると、次に進みます。 (画像のエラーはサンプルなので気になさらず…

NotesとQtでWindows、Mac OS X、Ubuntuのデスクトップアプリ(その1 - 環境編)

Notes/Dominoは元々クロスプラットフォームなグループウェアです。 QtはC++ベースのGUIアプリケーション開発フレームワークで、Windows、Mac、Linuxなどのプラットフォームで使用できます。 ここでは、この2つを組み合わせてみようという話です。 環境をまと…