node.js+express+typescript で、ブロクチェーン!!
Google Ai で、node.js+express+typescript で、ブロクチェーン アプリも問い合わせてみた。
一応、つくれるみたい。しかし、これは、かなりややこしいみたいじゃ。
それでも、ブロクチェーン アプリ にも、node.js+express+typescript は、有効な選択肢みたいじゃ。
先に、ブロックチェーン自体の勉強をしておいたほうが、良さそうじゃ。
ブロックチェーン は、企業のお金の集金なんかに、ニーズがあるそうじゃ?
IOT のデータは、ブロックチェーンを使うほどでもない気がするが?
とりあえず、おんちゃんは、 IOT デバイス(Raspi を想定)が送ったセンサーデータを、node.js + express + typescript で、
読み取るサーバーアプリを作って試してみる事にした。
持ちろん、センサーデータを、登録する側も、PC で、typescript で、作ってみる事にしたぞね!!
注) こちらの方は、プログラムが、かなりシンプルなので、基本部分が把握できて、初心者には、最適かもしれん。
node.jsの最近のブログ記事
node.js+express+typescript で、 Ai Chat を作ってみた。
"node.js + express + typescript で、ai を使ったシステム" を、 google ai で問い合わせると、ai チャットも簡単に作れるみたい。
ChatGTP だと、有料になるにで、先ずは、Ollama で、ローカルPC で試すのが良いと思う!!
これへの質問の過程で、
"一つ質問がありますが、Ollama で、上述のように AI チャットを作ったとして、次のステップとして、質問と回答の内容を、自社の業務に関する事にするには、どうすればよいのでしょうか?"
を問い合わせしたら、やり方を教えてくれたぞね!!
これなら、特定事業者に関する AI チャットもできそうじゃ。
i) RAG(検索機能拡張)
ii) ファインチューニング (Fine-tuning)
ファインチューニング だと、完成への道のりは、たいへんだろうが!!
RAG(検索機能拡張) だと簡単にできそうじゃ。
やはり、流行りの、 AI との連携には、node.js + express + typescript の利用が向いているんだろう。
Ollama に関しては、以前触れた。
LM Studio と言うのが、あるそうな!!
1. 開発環境
Ubuntu 24.04 PC 12G memory
llama3
GTX 1070 8GB
node.js + express + TypeScript Mail Form プログラム。
node.js + express + TypeScript サーバーサイドの app の Tips!! の一環で、
Mail Form プログラムを作成してみた。
このプログラムで、確認できる事。
-
typescript での、mail の送信
今回は、nodemailer を使ってみた。 -
カートのような一時ファイルが使えるかの確認
Redis を使ったセッション管理で、行うことにした。
ただ、/dev/shm (shared memory) を使えば、perl でよく使った、SDBM、XDBM ファイルみたいなのでも良い気がする。
とにかく、シンプルで、10年以上は、そのまま使える手法がよいと思う!!
- TEXT ファイルのアクセスと、ファイルロックの機能
-
メール文面のテンプレートの作成と、それを使った、メール本文の作成。
mustache を使ってみた。 -
/admin(認証) ページ下 へのアクセスの、一括 認証処理。
オープンページとクローズページの切り分け。
認証ミドルウエアを、index.ts の中に組み入れた。 - 認証処理で得た、管理者 id の、サブコントローラへの引き継ぎ。
- router + controller 対 による、複数 コントローラプログラム 構成の構築。
github に公開しちょります。
@tosa-no-onchan nodejs_typescript_samples
node.js + express + TypeScript サーバーサイドの app の Tips!!
おんちゃんが、node.js + express + TypeScript サーバーサイドの app を書いているときに、知った事を、書いてみました。
1. サーバーサイドプログラムでおんちゃんが想像する、必要な機能や、スキルを挙げてみた。
1) html テンプレートを使った、html ページの表示。
ejs を利用する。
2) DB 操作。
データの、 新規、更新、削除 、検索と一覧。
検索&一覧で、1ページに収まらない時は、ページめくりをする。
3) 画像ファイルのアップロード。
及び、画像ファイルの削除。
4) クッキーの使用。
5) 認証
6) バックグラウンド(別プロセス)での、メール送信。
及び、メール文面のテンプレートを使った、文章の作成。日本語対応。
7) node,js の ssl 対応は?
8) ハッキング対策。
SQL Injection 対策、クロスサイトスクリプト対策、と、form 送信のなりすまし対策
9) クライアントサイドからの非同期通信への応答。
10) テキストファイルの操作、及び、その時の排他制御。
この場合、排他制御が、必須みたい。方法は、いくつかあるみたいだが、
proper-lockfile のサンプルを、google ai で、教えてもらうのが、簡単じゃ?
perl のフィルロックと同じ要領みたい。ただし、ロックの解除し忘れ対策として、必ず、一定時間が経過したら、
フィルロックが自動で消える指定をすることが大事。
11) データエントリーページ。
入力データのチェックは、ブラウザー上とサーバー上のダブルで行う。
ブラウザーの戻るボタンで、戻った場合も対応する。システム上に重複したデータが登録されない事。
とにかく一般的ユーザは、でたらめな操作をする事を前提に、プログラムすることが需要!!
12) 複数ページに対応した、プログラミング。
次項の、"4. 複数ページに対応した、サーバー プログラミングに関して。" を参照しとうせ!!
ここからは、エキスパート。
1) node.js のクラスター構成。
2) クラスターでの排他制御。
最後は、
1) 公開サーバーへのデプロイ。
単独か、niginx 等との併設か?
2. Basci 認証のプログラム。
認証時にの username、password のチェックは、express-basic-auth.basicAuth callback の中で書ける。
node.js + express (+ TypeScript) の DB接続についての疑問!!
DB接続のサンプルプログラムで、 DB の open をプログラムの最初で、1回行うのを見かけるが、複数同時接続の場合これで良いのか?
app.ts 例
ちょっと、疑問に思ったので、ChatGTP に、聞いてみた。
先ず、最初に
>>> node.js + express でのプログラムは、マルチスレッドで動くのでしょうか?
結論から言うと、
Node.js + Express は基本的に「シングルスレッド」で動作します。
ただし、マルチスレッド的に動かす仕組みも持っています。
....
ふむふむ。
続けて、次の質問じゃ
>>> 1. Node.js の基本モデル でのサンプルプログラム app.js の中で、DBを使う際に、DB の open を最初に1度だけ、行う処理を見かけるが、複数接続の場合でも、この方法で大丈夫でしょうか?
はい、その疑問は とても重要なポイント です。
結論から言うと、
「DBの open をアプリ起動時に1回だけ行う」設計は、ほとんどの場合で正しく、推奨されます。
複数同時接続があっても問題ありません。
ただし、**「DBの種類」と「接続方式」**によって前提が変わります。
....
どうやら、
MySQL / PostgreSQL 等は、これで良いみたいじゃ。
ただし、SQLite は、これでは、NG で、接続ごとに、open、close をするみたいじゃ。
ありがとう ChatGTP
こほん、以上じゃ。