Node.js関連のことを調べてみた2023年07月14日

Node.js関連のことを調べてみた2023年07月14日

MarkdownをPDFで出力する方法

## はじめに
MarkdownをPDFに変換するには、`puppeteer`というソフトが必要です。
puppeteerは、**HTMLをPDFに変換できる**ツールです。

ちなみに、「**Markdownをhtmlで出力する方法**」を知りたい方は、[こちら](https://l.pg1x.com/jGp8)を確認してください。

## 準備
`puppeteer`と`markdown-it-plugin`をインストールします。
“`bash:puppeteerをインストール
$ npm install markdown-it
$ npm install puppeteer
“`

以下のようなフォルダ構造となります。
“`bash:
$ tree -L 1
.
├── convert.js
├── input.md
├── node_modules
├── package-lock.json
└── package.json

1 directory, 4 files
“`

## 実行ファイル
以下を`convert.js`にコピペしてください。

“`javasc

元記事を表示

JWT(JSON Web Token)についての考察

## JWT(JSON Web Token)の定義
[RFC 7519](https://tex2e.github.io/rfc-translater/html/rfc7519.html “RFC 7519”)によると、`JWT`について以下のように定義されています。
> JSON Web Token(JWT)は、2つのパーティ間で転送されるクレームを表す、コンパクトでURLセーフな手段です。 JWTのクレームは、JSON Web Signature(JWS)構造のペイロードとして、またはJSON Web Encryption(JWE)構造のプレーンテキストとして使用されるJSONオブジェクトとしてエンコードされ、クレームをデジタル署名または整合性保護することができます。メッセージ認証コード(MAC)で暗号化されています。

上記の内容が理解できることを目標に解説していきたいと思います。

:::note info
結構誤解されやすいのですが、`JWT`は定義を見ても分かるようにそれ自体が認証について規定しているわけではなく、認証が行われる際に利用される1つの手段に過ぎないことを理解し

元記事を表示

Markdownをhtmlで出力する方法

## はじめに
Markdownをhtmlに変換するには、**レンダラー**が必要です。
今回は`markdown-it`というレンダラーを使ってます。

## 準備
markdown-itをインストールします。
“`bash:markdown-itをインストール
$ npm install markdown-it

added 6 packages in 2s

1 package is looking for funding
run `npm fund` for details
“`

以下のようなフォルダ構造となります。
“`bash:
$ tree -L 1
.
├── convert.js
├── input.md
├── node_modules
├── package-lock.json
└── package.json

1 directory, 4 files
“`

## 実行ファイル
以下を`convert.js`にコピペしてください。

“`javascript:convert.js
‘use strict’;

const
{ pr

元記事を表示

Node.js Test Runnerとビルトインモジュールのみでモジュールモックするヘルパーをつくった

## はじめに

以下の記事で、Node.js Test Runnerで、モジュールのサブセットをモックする方法を書きました。

https://qiita.com/ohakutsu/items/7145f083828df7f0e6e4

しかし、サブセットでないモジュールのモックもしたいときがあるなと思い調べたところ、モジュールモックをできる簡易的なヘルパーができたので紹介します。

なお、今回試すのはCJSです。

## ヘルパーを使ってテストする

サブセットでないモジュール(正しい名前がわからない)と言っているのは以下のようなものです。

“`js:add.js
module.exports = (a, b) => {
return a + b;
};
“`

今回は、 [`node-fetch`](https://github.com/node-fetch/node-fetch) で試します。

テストしたいものは以下の`getExampleBody`関数です。

“`js:index.js
const fetch = require(“node-fetch”);

元記事を表示

npm install パッケージ -g の「-g」について調べた

# 何?何に使うの?
「-g」オプションは、「パッケージをグローバルにインストールするためのオプション」です。
グローバルにインストールすることで、コマンドを省略して実行できます。
例えばtypescriptをコンパイルするコマンド「tsc」ですが、npm installしただけでは使用することはできません。
“`
> npm install typescript
> tsc
tsc : 用語 ‘tsc’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確
認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ tsc
+ ~~~
+ CategoryInfo : ObjectNotFound: (tsc:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
“`
実行するには以下

元記事を表示

バージョン切り替えのコマンド絶対いつも忘れるので一覧化しとく

https://github.com/anyenv/anyenv
最近存在を知ったanyenvであれこれxxenv化したいなぁと思いつつも、すでに汚れてしまった私の環境を整理していくのは腰が重いので、最近よく使う言語のバージョン切り替えをコマンド一覧化しとく

# goenv
“`bash
# バージョン確認
go version
# インストールできる一覧
goenv install -l
# インストール
goenv install {バージョン}
# 設定
goenv global {バージョン}
# 指定のディレクトリにのみ設定する場合はこちら
goenv local {バージョン}
# .zshrcは読み直そう
source ~/.zshrc
“`

# nodebrew
インストールしてあれば `ls-remote` やら `install-binary` のくだりはいらない
“`bash
# インストールした一覧
nodebrew ls
# インストールできる一覧
nodebrew ls-remote
# インストール
nodebrew install-bina

元記事を表示

Azure Function(Nodejs)からマネージドIDでAzure OpenAIを呼び出す

# はじめに
Azure OpenAIを使うなら、マネージドIDでセキュアに利用したいですよね。キーとか持ちたくないです。関連情報は色々とあるもののNodejsのFunctionからという情報があまり見つからなかったので、こちらに記事として残します。

# マネージドIDをつかうAzure FunctionのNodejsのコード

例外処理も何もいれないで素のChatGPTからの返り値をそのままメッセージとして返してるコードです。ポイントは、`@azure/identity`をつかって、`new DefaultAzureCredential()`をいれてクライアントを作ってるところくらいでしょうか
環境変数としては1.エンドポイントと2.モデル名を持っています。(**キーはありません**)

なお、利用したライブラリは`@azure/openai`です。なんか色々あるんですが、ここにもある通り一番公式っぽいのでそれを使いました。
[クイック スタート: Azure OpenAI Service で ChatGPT と GPT-4 の使用を開始する](https://learn.micr

元記事を表示

symbol-sdk@3.0.7で作るマルチシグ化のトランザクション

# はじめに

こんにちは。

symbol-sdkの3系、トランザクションシリーズ第五弾です。

今回はマルチシグをやっていきます。

https://www.npmjs.com/package/symbol-sdk/v/3.0.7

## 注意事項

書いてあるコードについて、正確性や完全性を保証するものではありません。あくまで参考程度として頂き、最新情報は公式ドキュメンテーションをご確認ください。

# 共通

まずは共通となる個所について。デッドラインと鍵ペアです。

“`jsx
import symbolSdk from ‘symbol-sdk’;

const network = symbolSdk.symbol.Network.TESTNET;
const deadline = network.fromDatetime(new Date(Date.now() + 7200000)).timestamp;

const facade = new symbolSdk.facade.SymbolFacade(network.name);

const privateKey =

元記事を表示

Node.js Test Runnerでモジュールのモックをしたい

## はじめに

プライベートで書いているスクリプトのテストをしたいが、メンテナンスするパッケージを増やしたくないと思い、
Node.js v18 から標準で使えるようになった[Node.js Test Runner](https://nodejs.org/api/test.html) を使ってテストできないかを調べていました。

調べてみたところ、モジュールのモックをする方法で少し詰まったので、その解決方法を書きます。
なお、今回試すのは CJS です。

## やりたいテスト

今回やりたかったテストは、テスト対象のモジュール内で使用されている別のモジュールをモックするようなテストです。

例として、以下のスクリプトを使います。

“`js:add.js
exports.add = (a, b) => {
return a + b;
};
“`

“`js:mul.js
const { add } = require(“./add”);

exports.mul = (a, b) => {
let result = 0;
for (let i = 0; i <

元記事を表示

【Node.js】LangChainを使ってChatGPTに自分のデータに対して回答させる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001224/777af3b0-ffd2-0422-dbc1-a67900597b72.png)

前回の記事ではPythonで同じことを行いました。今回はNode.jsを使ってChatGPTに自分で準備したテキストファイルを読ませてそれに対して質問させるアプリのデモを作成します。

* **[【Python】ChatGPTとLangChain使って自分のデータから検索させる](https://asameshicode.com/chatgpt-langchain/)**

## **目的**

ユーザーがChatGPTに質問をするとOpenAIが持っているデータベースを参照して回答してくれます。しかしこのデータは2021年までしか保存されていないため、それ以降のデータは質問しても回答してくれません。しかし自分で準備しておいたデータ(大量のファイルも可能)を読ませておくことで自分の好きな著者と会話をしたり、最新のデータから必要なデー

元記事を表示

AWSで負荷テストを試した(Distributed Load Testing on AWS)

先日fargateで運用しているシステムで負荷テストをDistributed Load Testing on AWSで実施しました。
初めての負荷テストとのことで分からないことだらけでしたが、備忘録的にブログを書こうと思います。

今回構築手順は説明しません。以下の記事が参考になりました。
https://aws.amazon.com/jp/builders-flash/202108/distributed-load-testing/?awsf.filter-name=*all
https://tech.connehito.com/entry/2022/08/23/115302

Distributed Load Testing on AWS とは

AWS公式ドキュメントによると以下の通りです。

> 大規模および負荷時のソフトウェアアプリケーションテストを自動化して、リリース前に性能上の潜在的なパフォーマンスの問題を特定するのに役立ちます。このソリューションは、一定のペースでトランザクションレコードを生成する数多くの接続ユーザーを作成およびシミュレートします。サーバーをプロビ

元記事を表示

話題のCode InterpreterでChatGPT環境にNode.jsをインストールしてみる

インストールというか環境に設置だけ出来たって話です。 2023年7月12日時点話題ですが、ちょっとしたらやれるようになりそうな気がしますよね。

(半分釣りタイトルになってしまいました。期待した人すみません。)

Node.js+MySQL+Dockerを使用したAPIの作成

## はじめに
Node.js+MySQL+Dockerを使用したAPIの作成をしていきます。

記事を書くにあたり、trelloクローンアプリの作成を最終目標としています。
その過程で、バックエンド構築の際に今回の記事の内容で作成してみました。

作成にあたり主に下記の記事を参考にしております。

>【Docker】DockerにMySQL環境を構築する(M1 Mac 対応)
> https://midorigame-jo.com/docker-mysql/
> DockerでMySQL・Node.jsコンテナを用いたToDoリストアプリを作成する
> https://qiita.com/niisan1ban/items/f70eb0ed891568f71f9b
> 次世代の Node.js ORM 、Prisma をサクッと入門する
> https://zenn.dev/pyhrinezumi/articles/431be604f9ad50
> 【Web API】Talend API Testerを使ってみた
> https://www.isoroot.jp/blog/4241/

元記事を表示

symbol-sdk@3.0.7で作るアグリゲートトランザクション

# はじめに

こんにちは。

symbol-sdkの3系、トランザクションシリーズ第四弾。

今回はアグリゲートトランザクションをやっていきます。

https://www.npmjs.com/package/symbol-sdk/v/3.0.7

## 注意事項

書いてあるコードについて、正確性や完全性を保証するものではありません。あくまで参考程度として頂き、最新情報は公式ドキュメンテーションをご確認ください。

# 共通

まずは共通となる個所について。ネットワークやデッドライン、鍵ペアです。

“`jsx
import symbolSdk from ‘symbol-sdk’;

const network = symbolSdk.symbol.Network.TESTNET;
const deadline = network.fromDatetime(new Date(Date.now() + 7200000)).timestamp;

const facade = new symbolSdk.facade.SymbolFacade(network.name);
“`

元記事を表示

symbol-sdk@3.0.7で作る別名(エイリアス・アライアス)トランザクション

# はじめに

こんにちは。

symbol-sdkの3系、トランザクションシリーズ第三弾です。

今回は別名(エイリアス・アライアス)をやっていきます。

https://www.npmjs.com/package/symbol-sdk/v/3.0.7

## 注意事項

書いてあるコードについて、正確性や完全性を保証するものではありません。あくまで参考程度として頂き、最新情報は公式ドキュメンテーションをご確認ください。

# 共通(前半)

まずはアドレス別名とモザイク別名で共通となる個所について。デッドラインと鍵ペアです。

“`jsx
import symbolSdk from ‘symbol-sdk’;

const network = symbolSdk.symbol.Network.TESTNET;
const deadline = network.fromDatetime(new Date(Date.now() + 7200000)).timestamp;

const facade = new symbolSdk.facade.SymbolFacade(networ

元記事を表示

Node.jsでWebサーバーを稼働させてHTTPメソッドを確認する

[bootstrap][bootstrap] やら [swagger][swagger] やらに任せっきりで サーバーサイド JavaScript がどこまで行えるかを正しく把握していなかったので、[Node.js][nodejs]の理解の補填がてら覚書ます。

> [Bootstrap · 世界で最も人気のあるフロントエンドフレームワーク][bootstrap]

> [API Documentation & Design Tools for Teams | Swagger][swagger]

> [Node.js とは | Node.js][nodejs]

[bootstrap]: https://getbootstrap.jp/
[swagger]: https://swagger.io/
[nodejs]: https://nodejs.org/ja/about

# ゴール
– Node.jsでのサーバ構築内容を把握する
– HTTPメソッドの定義(& 動確)方法を把握する

# 環境整備

1. [WSL][wsl] を構築します。

> [WSL を使用

元記事を表示

Node.js・TypeScriptとは

# はじめに
Node.js・TypeScriptについての記事を書きます。
間違っていたらコメント等での指摘をお願いします。

以下、本を参考にしつつ学習していきます。
[TypeScriptとReact/Next.jsでつくる実践Webアプリケーション開発](https://amzn.asia/d/fcAmzbB)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3086650/bb190771-a894-8ba0-8a24-37de5a942778.png)

# Node.jsとは
以下、[公式](https://nodejs.org/ja)から引用
**Node.js はスケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の JavaScript 環境です。**

Google Chromeに搭載されているJava Scriptの実行エンジンV8を利用し、作られている。
つまりNode.jsは言語ではなく、
**JavaScriptの実行環

元記事を表示

【3分クッキング】ExpressでHello world!

# 材料
・Node.js

# 調理
まずフォルダ作って……
“`powershell:powershell
mkdir express
“`
移動して……
“`powershell:powershell
cd express
“`
express インストールして……
“`powershell:powershell
npm install express
“`
“`
express
├─ node_modules
| └─…
├─ package-lock.json
└─ package.json
“`
ファイル作って……
“`
express
├─ node_modules
| └─…
├─ app.js  ← NEW!
├─ package-lock.json
└─ package.json
“`
中身書いて……
“`javascript:app.js
const express = require(‘express’)
const app = express()
app.listen(3000)
app.get(‘/’, (_req,

元記事を表示

AWSのS3 Selectを使ってみた

S3でSQL文が使えるんですね。知らなかったです。
さっそく使ってみました。

入力となるJSONファイルはS3上にこんな感じである前提です。

“`json:test/data.json
{
“info”: “This is sample”,
“data_list”: [
{
“x”: 1,
“value”: 11,
“comment”: “comment 1-1”
},
{
“x”: 1,
“value”: 12,
“comment”: “comment 1-2”
},
{
“x”: 2,
“value”: “21”,
“comment”: “comment 2-1”
},
{
“x”: 2,
“value”: 22,
“comment”: “comment 2-2”
}
]
}
“`

そして、コードです。

“`js
var AWS = require(‘aws-sdk’);
AWS.config.update({
region: “ap-northeast-

元記事を表示

OTHERカテゴリの最新記事