チブル・システムズ

C++とReact/Node.jsでNotes/Dominoアプリケーションを開発して…

チブル・システムズ

C++とReact/Node.jsでNotes/Dominoアプリケーションを開発しています。

マガジン

最近の記事

RustでNotesにアクセスしてみました

まずは、普通にCargoプロジェクトを作る。 $ cargo new mynotes Created binary (application) `mynotes` package このプログラムでは、Notes C APIを初期化し、メッセージを表示してすぐ終了する、非常に簡単なものになる。 動かすためには、Notesクライアントへのパスが必須になる。VSCodeの場合、タスクを作れば簡単に動作させることができる。.vscode/tasks.jsonファイルに、

    • RustでHello, Worldしました

      Rustをインストールすることはできた。じゃあ、次は何をするか?「とりあえずHello, World」ですな。 $ rustc --versionrustc 1.68.0 (2c8cc3432 2023-03-06)$ cargo new hello Created binary (application) `hello` package あまりにも、あまりにもあっさりできてしまった。何ができたのだろうか? src/main.rsがプログラムを書くところかな。g

      • Rustはじめました

        はじめに 「Rustとはなにか」については、他の記事やリソースに譲るとして、私がこの言語に惹かれたのは、何と言っても「安全なプログラムを書いてもパフォーマンスが落ちない」という評判だ。 C++11でラムダ式を使った非同期プログラムを書いていたら、渡したはずの変数の参照先がないという、わかってみれば初歩的なミスで頭を悩ませたことがあった。もうあんなことはまっぴらごめんだ。C/C++は自由度が非常に高いが、その責任は自分に返ってくる。とは言え、言語側が持つべき責任がお役所仕事

        • DOAP2023開発日記 #10

          Next.js×Sails.js×DOAPいよいよ、Next.jsクライアントからSailsサーバを通して、Domino HTTPタスク上のDOAPにアクセスするテストに移る。 まず、Sailsサーバに axios パッケージをインストールする。 $ npm install axios 次に、#3で作成したAPIアクション UserController.test の実装を、次のように修正する。 const axios = require('axios');module

        RustでNotesにアクセスしてみました

        マガジン

        • Rustで○○してみました
          3本
        • DOAP2023開発日記
          10本
        • Qt5再入門
          31本
        • Notes C API探訪
          92本

        記事

          DOAP2023開発日記 #9

          最初のリクエスト&レスポンス#8でインストールに成功した。 次の目標はリクエストとレスポンスだ。 DOAPにだけ理解できるリクエストを送り、DOAPでレスポンスを返して、ブラウザに表示する。 // main.cpp#include "doap_global.h"#include <dsapi.h>#include <QString>#include <QUrl>#include <QUrlQuery>#include <QVariantMap>#include <QJson

          DOAP2023開発日記 #8

          最初の一歩ようやく、#8にしてようやく、C++コードの第一歩を踏み出す。 まずは、次のコードをビルドできるようにする。 // doap_global.h#ifndef DOAP_GLOBAL_H#define DOAP_GLOBAL_H#include <QtCore/QtGlobal>#define DOAP_EXPORT extern "C" Q_DECL_EXPORT#endif // DOAP_GLOBAL_H // main.cpp#include "doap_

          DOAP2023開発日記 #7

          タスクランナーGulpを使う「タスクランナー」というと、Webアプリをパッケージングするイメージが強いかもしれない。タスクランナー専用のツールでは、「Gulp」や「Grunt」などがあるが、「npm-scripts」のようなパッケージャ付属のものや、「VSCodeタスク」のようなIDE付属のもの、古来からのシェルスクリプトやバッチファイルなども含めると、世の中はタスクランナーで溢れていることに気付く。肝要なのは、長所と短所を見極めて、適切なものを使うことではないかと思う。

          DOAP2023開発日記 #7

          DOAP2023開発日記 #6

          QtプロジェクトDOAP2023プロジェクトは、サブディレクトリプロジェクト「doap2023」と、その下にサブプロジェクト「doap」を配置する形を取る。 「サブディレクトリプロジェクト」は、Qt Creatorを使用した場合、以下のダイアログで作成するイメージになる。 また、サブプロジェクトになる「doap」は、「C++ Library」プロジェクトとして作成する。 今回はQt Creatorの自動生成機能に頼らずにプロジェクトファイルを作っていく。 ビルドシステム

          DOAP2023開発日記 #5

          #1〜#4のまとめまた間が開いてしまった。私は何をしていたのかを振り返る。 #1: Sailsサーバの新規作成 #2: Next.jsアプリの新規作成 #3: SailsサーバでREST APIを新規作成 #4: Next.jsからSailsへREST APIのプロキシ作成 なるほど。では、DOAP本体を作成する段階になったので、続きの作業をしていく。 C++開発環境DOAPは、Windows(64bit)/Linux(Red hat系)上のDominoサーバで動作する。

          DOAP2023開発日記 #4

          #3では、開発環境において、フロントエンドとバックエンドが別々の開発サーバになると、CORS問題が発生することを軽く触れた。create-react-appで作成したReactアプリの場合、package.jsonのproxy項目1つで済むことが、create-next-app(Next.js)では、パッケージを組み込んだりと多少面倒になる。 ここでは、おそらくいちばん面倒でないであろう方法を取る。 http-proxyまず、http-proxyパッケージをインストールする

          DOAP2023開発日記 #3

          Next.jsには「API Routes」という、強力な「サーバーサイドAPIをクライアントサイドで開発する」機能がある。一カ所でSS/CS両方開発できるならそれに越したことはない。が、Next.jsに出会う前にSails.jsに出会っていて、Next.jsでごりごりするよりSailsが持っているいろいろな自動化機能の方が便利だな〜ってなって、私の中では、APIは「プロキシっちゃう」に限ると思っている。「こういう風にするとSailsと併用するのと同じか、より楽になる」というこ

          DOAP2023開発日記 #2

          Next.jsのひな形作成クライアントWebアプリのバックエンド側を作ったので、フロントエンド側を作る。 $ npx create-next-app --tsnpx: 1個のパッケージを1.865秒でインストールしました。✔ What is your project named? … client2023Creating a new Next.js app in /.../client2023.Using npm.Installing dependencies:- reac

          DOAP2023開発日記 #2

          DOAP2023開発日記 #1

          コードネームDOAP2022の開発を中断して数ヶ月。何をしていたのか、きれいさっぱり忘れている。理由ははっきりしている。メモを取らないからだ。開発中はコードの末端まで記憶できるのに、数日触れていないだけで曖昧になり、一月以上離れると記憶喪失になる。そんなことではいけないことはわかっている。だから、記録していこう。 DOAPとはDOAPは、Domino OAuth2 Providerの略で、DominoサーバにOAuth2サービス機能を追加し、利用したいWebアプリケーション

          DOAP2023開発日記 #1

          Notes C API探訪: 計算ハンドルのラップ

          前回の記事で、@式をコンパイルする関数NSFFormulaCompileをラップしてみました。コンパイルが済むと、@式はバイナリーデータの状態になり、その領域はハンドルFORMULAHANDLEとして管理されます。 @式ハンドルの状態でも利用できる場面はありますが、これを実行して結果を得たい場合、@式ハンドルから「計算ハンドル」を生み出す必要があります。その辺りは「式ハンドルの使用方法(その1)」の記事で紹介しています。 今回は、この計算ハンドルの取得から破棄までの作業を

          Notes C API探訪: 計算ハンドルのラップ

          Notes C API探訪: NSFFormulaCompileをラップ

          以前の記事で、何回かに分けて@式の扱い方について紹介しました。 NSFFormulaCompile(関数) 式ハンドルの使用方法(その1) 式ハンドルの使用方法(その2) @式のデコンパイル 今回は、このうちのNSFFormulaCompile関数を使ったラップクラスを作ってみます。 #ifndef NXPP_FORMULA_HPP#define NXPP_FORMULA_HPP#include "./nxpp_status.hpp"#include "./lmbcs/

          Notes C API探訪: NSFFormulaCompileをラップ

          Notes C API探訪: 設計フラグ

          Notes/Dominoデータベースは、文書をレコードとしたデータベースで、データとしての文書の他に、「設計要素」と呼ばれる設計向けの文書が存在します。前回の記事では、「文書クラス」という、文書に含まれるパラメータが、設計文書をある程度は分別をしてくれている・・・、けど機能が増えて今ではざっくりしていることをご紹介しました。 今回は、その「ざっくりしている」設計要素分類の、細分化を補助している「設計フラグ」というものを紹介します。 設計フラグの文字 設計フラグ自体は、「$

          Notes C API探訪: 設計フラグ