W64API不具合レポート〜ExtMgr編

果たして、Lotus Notes C API ToolkitのHCL版はリリースされるのか? 今回のWindows 64ビット版コンパイル時の不具合については簡潔に報告します。 Extension Manager(通称ExtMgr)において、コールバック関数にはEMRecordという構造体へのポインタが渡されま…

Gitで共有しているコードをローカル固有環境で動かす

Gitリモートリポジトリ経由でWebサーバアプリケーションなどを開発している時、URL等の関係でどうしても自身のローカル環境に設定を合わせたい時がある。 今いちばんよい方法だと思っているのは、その設定ファイルをGitの対象ファイルから外す方法。 Node.js…

NSFItemInfoNext対応の悪影響

1年半前の記事で、「NSFItemInfoNext」関数についての対応策について書いた。 chiburusystems.hatenablog.com これについて、その後特に問題もなく順調にいっていたのだが、つい先日、とうとうこの対応が別の形で悪さをする事案に陥った。 以前の記事の概略 …

mongodb c++ driver(windows 64)をビルド/インストールする。

目標 MongoDB C++ Driverをインストールして、C++からMongoDBを操作できるようにする。 公式ガイドはこちら。 mongocxx.org 日本語で参考にしたのはこちら。 qiita.com 環境 Windows 10 Visual Studio 2015 Express 日本語で参考にした記事にはVS2017を使っ…

Hello, DSAPI!

DSAPI(Domino WebServer API)は、DominoサーバのHTTPタスクにアドインするためのAPI。 今回は、これでHelloアプリを作る。 することは2つ。 1つは、インストールに成功したら、DominoのログにHello, DSAPI Init!の表示をする。 もう1つは、ブラウザから/hell…

自分用メモ: Notes C APIアプリをマルチプラットフォーム開発するときのマクロ定義

Windows 32ビット版 -DNT -DW32 -DW -D_X86_ -DND32 -DDTRACE -D_CRT_SECURE_NO_WARNINGS -DPRODUCTION_VERSION -DDUMMY Windows 64ビット版 -DNT -DW32 -DW -DW64 -DND64 -D_AMD64_ -DDTRACE -D_CRT_SECURE_NO_WARNINGS -DND64SERVER -DPRODUCTION_VERSION …

自分用メモ: Qtコマンドラインアプリのmain.cppとNotes C APIの初期化

典型的なQtコマンドラインアプリのmain.cppの書き方。 #include <QCoreApplication> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // 処理 return 0; } Qtのイベントループをコマンドラインでも使いたい場合、QTimer::singleShotが使える。 qApp->ex</qcoreapplication>…

NCAPI & C++11+ & RX & Qt #11 ~LMBCS対応文字列クラス

前回の続きになります。 ソースコードはこちらで、git clone後にgit checkout v0.0.3をしてください。 QByteArray QStringがワイド文字列(UTF-16)を扱うクラスであるならば、QByteArrayはシングルバイト、マルチバイト文字列を扱うクラスです。ただ、その性…

NCAPI & C++11+ & RX & Qt #10 ~LMBCS

はじめに タイトル、短縮しました。とにかく長かった。 僭越ながら、名著をアップデート 私にとってのバイブル的存在、「Notes/Domino APIプログラミング」(2000年 津田義史著)を改めて紹介します。 Notes/Domino APIプログラミング―C++とSTLによる実践的プ…

Notes C API & C++11+ & ReactiveX & Qt #9 ~RxでNotes C API関数をラップ(実装編)

前回の続きになります。 ソースコードは、いつものようにこちらをgit cloneして、git checkout v0.0.2してください。 chiburusystems.hatenablog.com 実装コード 前回目標にした、「Notes C API関数をRx的にラップする」実装側です。 rx::observable<GetServerLatency::ReturnValues> GetServ</getserverlatency::returnvalues>…

Notes C API & C++11+ & ReactiveX & Qt #8 ~RxでNotes C API関数をラップ

お題「Notes C API関数をReactiveXでラップする」 今回はこのお題について考えます。なお、今回のコードは、前回ご紹介した以下のサイトを使います。 github.com Gitを使ってクローンして、v0.0.2をチェックアウトします。 git clone https://github.com/Chi…

Notes C API & C++11+ & ReactiveX & Qt #7 ~ Qtの翻訳システム(コーディング編)

ソースコードサイトの変更 まず最初に、1つご連絡があります。前回までの公開ソースコードを、訳あって以下のサイトに変更しました。 github.com 前回までの解説に使った改訂前のv0.0.1と、このサイトのv0.0.1は、原則合わせてありますので、連載上は問題な…

Notes C API & C++11+ & ReactiveX & Qt #6 ~ Notes C API関数の基本

前回は、Qtの翻訳機能について少し触れました。今回は、このプログラムで肝となるNotes C API「NSFGetServerLatency」についてお話しします。 v0.0.1のソースコードを実行すると、次のような出力が得られます。 2行目、3行目はAPIがユーザにパスワードの入力…

Notes C API & C++11+ & ReactiveX & Qt #5 ~ Qtの翻訳システム

前回はmain.cppとNotes C APIのアラインメントについてお話ししました。今回はQtのアプリケーションとしての仕組みについて、サクッとご紹介します。 main.cppのmain関数が呼び出された直後に、次のような記述があります。 QCoreApplication app(argc, argv);…

Notes C API & C++11+ & ReactiveX & Qt #4 ~ main.cppとアラインメント

前回に引き続き、以下のソースコードについて説明していきます。 github.com 前回のQMakeのプロジェクトファイルに関するトピックはまだまだ尽きません。言語的な要素も持っていて、ビルトインの変数、関数の他に、カスタム変数、関数を定義することもできま…

Notes C API & C++11+ & ReactiveX & Qt #3

ここでは、チュートリアルとして簡単なコマンドラインアプリを作り、Notes C APIの基礎を勉強していきます。C/C++、C++11以降の仕様、ReactiveX/C++、Qtフレームワークについては、必要に応じて触れていきます。 以降の前提条件として、以下のような要件で進…

Notes C API & C++11+ & ReactiveX & Qt #2

リアクティブ・エクステンション(Reactive Extensions、ReactiveX、RX)は奥が深く、勉強を始めてから日の浅い私もまだまだわからないことだらけです。ですが、初級レベルくらいならある程度書けるようになってきたので、Notes APIを例に、RXを適用するとこん…

Notes C API & C++11+ & ReactiveX & Qt #1

仕事でAngularを使い始めました。Angularは、ReactやVueなどと比較されるSPAフレームワークです。開発にはJavaScript回りがわかればいいのですが、TypeScriptから入ることをお勧めされます。 https://angular.io/ www.typescriptlang.org AngularJS(1.x)から…

W64APIにまたしても!DNParseの落とし穴

いつぞやのNSFItemInfoNext関数に続き、またしてもW64で正常に動かないC APIを発見しました。今回は、DNParse関数です。まず、DNParse関数とはなんぞや?というところから。 DNParse関数の接頭辞、「DN」は「Distinguished Name」の略で、識別名を表します。…

DominoサーバにOAuth2認証機能をアドインする「DOAP」

先日、Facebookページで開発を表明したDominoのOAuth2アドインですが、一部の機能を残して0.1.0-betaバージョンが完成しました。 名称は「DOAP」Domino OAuth2 Providerの略です。 このDOAPは、Dominoにアカウントを持っているユーザが、他のWebサービスから…

NSFItemInfoNext関数を64bit Windows Dominoサーバで使用するとクラッシュする

追記 2019-11-24 記事のリンクを追加しました。 ソースコードにcpp指定をしました。 本編 私が、とあるプロジェクトでDominoサーバのアドインを作ったとき、奇妙な現象に悩まされた。 その現象というのは、NSFItemInfoNextというNotes C APIの関数を使うと、…

画面を更新してもチャットの履歴を表示できるようにする

リアルタイムでやり取りしたチャットメッセージは、通常一過性のもので、Web画面を更新してしまうと消えてなくなります。幸い、この連載で扱っているチャットデータは、Notesデータベースに記録されています。この情報を再取得すれば、チャットのやり取りを…

Notesで書いたメッセージをチャットに送る

前回までに、DominoとNode.jsを同居させ、Node.js上でやり取りされたメッセージをNotesに保存するところまで紹介しました。 今回は、Notesクライアントからのメッセージもチャット上に表示します。最終的には保存されているメッセージをリロードできるように…

Node.jsのチャットデータをNSFに保存してみる

それではいよいよ、リアルタイムの会話をNSFに保存してみます。プログラムコードのベースは、前回のDominoを離れてNode.jsだけでチャットの実装をしてみる - Chiburu Systemsのブログの「domtest2」になります。 チャットデータと、DominoのREST APIを取り持…

Dominoを離れてNode.jsだけでチャットの実装をしてみる

前回の記事Dominoアクセスになんちゃって認証を追加する - Chiburu Systemsのブログでは、Node.jsに預けた認証情報でDominoにアクセスすることで、あたかもNode.jsでDominoの認証をしているかのような「なんちゃって認証」を実装しました。ここまではどちら…

Dominoアクセスになんちゃって認証を追加する

前回「DominoとNode.jsの同居サーバ構築 - Chiburu Systemsのブログ」でNodeからDominoにRESTを通じてデータベースのタイトルを取得し、Webページに反映させました。このとき、認証は埋め込みのユーザ名、パスワードを使いました。今回は、それをWebユーザが…

DominoとNode.jsの同居サーバ構築

Notes C APIによるNotesPeekリメイクプロジェクトを少しお休みして、Webの話をしばらくします。 DominoをめぐるWebアプリケーション環境は、クラシックWebとXPagesがあります。サーブレットは置いておきます。クラシックWebは、レガシーなNotesアプリケーシ…

NSFItemScan関数の限界(その2) - Noteクラス - 「NotesPeek」をQtでリメイク

前回、同一文書内にある同名アイテムついて少し解説しました。それは、これからお話しするAPI関数、NSFItemScanの挙動に関係があるためです。 NSFItemScan関数は、文書内に含まれるアイテムを巡回し、アイテムごとにコールバック関数を呼び出してくれる関数…

NSFItemScan関数の限界(その1) - Noteクラス - 「NotesPeek」をQtでリメイク

今回は、リッチテキストから少し離れて、文書からアイテム(フィールド)データを取得するプロセスについての考察をします。 Notes文書(Note)には、いろいろな種類のアイテムが格納されます。文書のプロパティやNotesPeekのように、文書内のアイテムをすべて読…

CDフォントテーブルを列挙 - リッチテキスト - 「NotesPeek」をQtでリメイク

前回、CD(Composite Data、リッチテキスト内の構成要素)のテキスト要素「CDTEXT」に含まれるフォントの修飾データを明示化しました。この中にはもちろんフォントの書体も含まれますが、5種類の書体定義しか存在しません。書体の種類は、パソコンの黎明期なら…