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サーバで使用するとクラッシュする

私が、とあるプロジェクトでDominoサーバのアドインを作ったとき、奇妙な現象に悩まされた。 その現象というのは、NSFItemInfoNextというNotes C APIの関数を使うと、32bit WindowsのNotesクライアントとDominoサーバ、64bitのMacOS、32bit Linuxではまった…

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

リアルタイムでやり取りしたチャットメッセージは、通常一過性のもので、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種類の書体定義しか存在しません。書体の種類は、パソコンの黎明期なら…

CDテキストのフォント情報 - リッチテキスト - 「NotesPeek」をQtでリメイク

先週の体調不良が、嘘のように回復しました。また気を引き締めてNotesPeekをリメイクしていきます。 前回は、CDデータをテンプレートクラスベースで実装を簡略化し、その手始めとしてCDテキストを「cd::Textクラス」として実装してみました。今回は、CDテキ…

CDデータのテンプレート化 - リッチテキスト - 「NotesPeek」をQtでリメイク

前回は、リッチテキストの要素である「CDデータ」を、未定義のものでもバイナリの値を並べて表示できるCdOtherItemクラスと、ライブラリクラスとしてのntlx::cd::Otherクラス、そしてその親クラス(と言うより、インターフェース、純粋仮想関数しか持っていな…

未知のCDデータの表示 - リッチテキスト - 「NotesPeek」をQtでリメイク

ちょっと前の記事「伝説のツール「NotesPeek」をQtでリメイク開発記2017-7-23 - Chiburu Systemsのブログ」で、リッチテキストについて着手したことをご報告しました。この中で、リッチテキストは多種多様な「CDxxxx」という複合データ(Composite Date)によ…

伝説のツール「NotesPeek」をQtでリメイク開発記2017-8-6

前回は、設計文書のうち、フォーム文書を展開してみました。今回はその続きです。 前回も触れましたが、Notesの設計文書は基本的に「文書クラス」というものでその性質が分けられますが、バージョンが進むうちに文書クラスの範囲(WORDビットの下位12ビット)…

伝説のツール「NotesPeek」をQtでリメイク開発記2017-7-30

前回はリッチテキストに対して切り込みましたが、今回は設計要素(設計文書)に対して切り込みを入れます。 Notesの設計要素は、広義では「文書(Note)」に当たります。もし、データとしての「文書」と分けるのであれば、「Document」がNotesで一般的に使われる…

伝説のツール「NotesPeek」をQtでリメイク開発記2017-7-23

さて、ようやくリッチテキストにメスを入れる時が来ました。The time has come! リッチテキストは、まぎれもなくアイテム(フィールド)なので、テキストフィールドや数値フィールドと同じように、アイテム型(WORD)を先頭に持つバイナリデータです。 アイテム…

伝説のツール「NotesPeek」をQtでリメイク開発記2017-7-17

リッチテキストの分解をする前に、どうしてもやっておきたいことがありました。今回はそちらの開発について。 前回、文書のアイテム(フィールド)を子アイテムにし、すべてのアイテムのデータについて、一律でバイナリ形式の文字列に変更して、表記することに…