Node.js関連のことを調べてみた2022年06月28日

Node.js関連のことを調べてみた2022年06月28日
目次

primary keyをオートインクリメントしている場合に、その数値を外に露出させない実装をしてみた?!

## はじめに
データベースのprimary keyをauto incrementしている場合(サロゲートキーを使っている場合)に、もし何も気にせずREST APIでCRUDするようなアプリを作ろうとすると、一番簡単なのはそのPKを使ってデータを操作する事だと思う。

ただ、そのような実装した場合、PKが外に露出してしまうので、ToDoアプリ等であれば問題ないかもしれないが、もしPKがユーザーID等の個人を特定できる情報であれば、サービスの利用ユーザ数が知られてしまったり、何かと悪影響があるだろう。

今回は可逆暗号を利用して、オートインクリメントをしたユーザーIDなど外に露出してほしくない情報を隠す方法を試してみたので備忘録を残す。

※上記のprimary key露出に関しての懸念事項については、[idをautoincrementして何が悪いの?](https://zenn.dev/dowanna6/articles/3c84e3818891c3)などを参照。

※上記の問題を解決するのに、以下で見ていく方法が良いと言えるのか?実際にプロダクトで使えるのか?については、勉強中の身の

元記事を表示

LambdaからDynamoDBへの大量データ投入

# DynamoDBへの大量データ投入

– Pythonではやったことがあったけど、Node.jsではやっていないかったのでやってみると、高速だった。 1putごとにawaitしないから高速ですね。
– https://dev.classmethod.jp/articles/nodejs-dynamodb-scan-stream/ クラスメソッドさんの記事まんまできる
– 「スクリプトで50万件のテストデータを作成」の箇所のtsをjsに変える

– DynaomoDBテーブルは、オンデマンドキャパシティを使う
– Pythonの並列処理を作成するのは苦手だけど、Node.jsならばPromise.all() で非同期処理で同時に実行できCPUパワーを十分に使える

## AWS Lambdaの設定
– Lambdaをメモリ1024MB、タイムアウト1分にする
– Lambda Layer使うのですが割愛します

## DynamoDB
– テーブル名 :sugimoto-scan
– パーティションキー :id,文字列
– ソートキー:指定なし
– 設定をカスタマイズ にて、

元記事を表示

AWS上にCentOS Stream 9 を立ち上げて、Nodejsで簡単アプリを動かしてみる

構築の際の覚書です。

## ◆AWS CentOS起動◆
CentOS8がサポート終了したとのことで、
AWS EC2 で CentOS Stream 9 のサーバーを立ち上げてみました。

### 1. 公式のCentOS 9 Ami IDを探す
公式のWiki( [https://wiki.centos.org/Cloud/AWS](https://wiki.centos.org/Cloud/AWS) )から、東京リージョン(ap-northeast-1)のAmi IDを探してコピーします。

2022/6/27時点の最新以下を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638048/900e5dbd-cf9d-a894-2ec4-d7f10737f495.png)

### 2. AWSでインスタンスを起動する
AWS EC2 「インスタンスを起動」 から、1.でコピーしたAmi IDを入力して検索します。

CentOS 8はサポート終了しているとのことで、今回Cen

元記事を表示

google-cloud/tasks モジュールでbodyが取得できない場合の対策

# 概要

`Cloud Tasks` に`Post`した値が取得できなかった際の対応をまとめる

https://www.npmjs.com/package/@google-cloud/tasks

# 解決方法

`Quickstart`に記載されている方法では取得できないので以下の通りにする

`body: Buffer.from(JSON.stringify(payload)).toString(‘base64’)`

“`ts
const payload = {
foo: ‘bar’,
};

const task = {
httpRequest: {
httpMethod: HttpMethod.POST,
url: ‘URL’,
oidcToken: {
serviceAccountEmail:
‘serviceAccountEmail’,
},
body: Buffer.from(JSON.stringify(payload))

元記事を表示

Vector tile conversion from Esri geodatabase with gdal, tippecanoe, and nodejs

# Introduction
## Background
My colleagues have a good contour line data in ArcGIS geodatabase (.gdb) format. I wanted to make vector tiles from contour lines stored in ArcGIS Geodatabase. The structure of the geodatabase is as shown in the following figure.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/f0d7328d-326e-892e-705b-a2eb155b406e.png)

## Considering an approach
At first, I was thinking to export it to shape files to be converted into GeoJSONs which i

元記事を表示

nvmをインストールする方法【nvm/Node.js/zsh/npm】

# nvmのインストール手順(zsh)

#### 1. nvmをインストール
“`
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
“`

#### 2. .zshrc に以下を記述して保存
“`.zshrc
source ~/.nvm/nvm.sh
“`

#### 3. nvmのインストールを確認する
“`
nvm -v
“`

#### 4. nvmを使ってNode.jsのバージョン12をインストールする
“`
nvm install v12
“`

#### 5. Node.jsのインストールを確認する
“`
node -v
“`

元記事を表示

しばらく使っていなかったNodeをアップデートする

過去にダウンロードしていたNode.jsを現在の安定版に更新しました。
いずれまた使うのでメモしておきます。

## homebrewのバージョンアップ
% brew update

% brew -v
Homebrew 3.5.2
Homebrew/homebrew-core (git revision e95d9224d91; last commit 2022-06-26)
Homebrew/homebrew-cask (git revision 9713bf8928; last commit 2022-06-25)

homebrewを最新版に更新完了

## nodebrewのバージョンアップ
% brew upgrade nodebrew

% nodebrew -v
nodebrew 1.2.0

nodebrewも最新版に更新完了

## node.jsのバージョンアップ(推奨版に)
現在の推奨版がv16.15.1なのでそれにバージョンアップする

% nodebrew install-bi

元記事を表示

S3とファイルを共通に扱う

タイトルにある通り、S3を扱うNode.jsライブラリです。
すぐ忘れるので、備忘録として残しておきました。
おそらくもっと良いやり方があるかもしれず、いろんなケースに対応できているわけではないように思いますが、各所でカスタマイズするためのベースにはなるかなあと思います。

ファイルとS3どちらも共通に扱えるようにしています。
また、AWS S3の代わりにMinioでも利用できます。

“`js:storage.js
‘use strict’;

const fs = require(‘fs’).promises;
var AWS = require(‘aws-sdk’);
AWS.config.update({
// region: “ap-northeast-1”,
// minio用
region: “[Minioのリージョン名]”,
});
var s3 = new AWS.S3({
// minio用
accessKeyId: ‘[MinioのアクセスキーID]’ ,
secretAccessKey: ‘[Minioのシークレットアクセスキー]’,

元記事を表示

【Node.js】ウェブ上の地図にPLATEAUの建物を反映させてみた

国土交通省の3D都市モデルPLATEAUを使ったウェブアプリケーションを作るため、JavascriptのライブラリCesiumJSを使ってみました。

## 環境
– Node.js
– 使用エディタ: VSCode
– 動作確認OS : Windows10

## PLATEAU
広島県呉市のデータを例にします。
ここからダウンロード
https://www.geospatial.jp/ckan/dataset/plateau-34202-kure-shi-2020

この中から 3D Tiles, GeoJson, MVT, Shape
> 詳細 > ダウロード
[![Image from Gyazo](https://i.gyazo.com/a41a29c5ebd49fa57417edbebc441024.png)](https://gyazo.com/a41a29c5ebd49fa57417edbebc441024)

ダウンロードデータを解凍すると
[![Image from Gyazo](https://i.gyazo.com/f02fd7eaf3e6ce7b9

元記事を表示

AWSのAppRunner使ってRedash用のBotを動かしてみる

## RedashをAWSで立てる
https://dev.classmethod.jp/articles/try-redash-setup/

こちらを参考にRedashのインスタンスを立ち上げてみました。Redashの公式サイト( https://redash.io/help/open-source/setup )によればインスタンスのサイズは `t2.small` で十分とありますが、自分がテストした結果では動作しないので `t2.medium` 以上をオススメします。
かつ、立ち上げたあとはACMで証明書取って、ELBの配下に当該RedashのEC2サーバを配置します。
ELBの443側のアクセス時にSSL証明書を当てる必要がありますが、先程のACMの証明書を当てます。
よくよく考えたら自分で以前書いた手順があったのでこちらも御覧ください。
https://qiita.com/hardreggaecafe/items/fe03bd74313e159a7f95

これで出来上がったRedashをSlackと連動させる方法について、以下に紹介します。

## Redashbotとは

元記事を表示

Node.js(Express)+MySQLを使ったHeroku上で動くプログラムを作ってみる

Node.js(Express)とMySQLを使ってDBと連携するアプリをHeroku上で動かします。
HerokuはPostgresが公式サポートのようですが、MySQLの方が触ったことがあったり職場で使ってたりシェアも大きいしってことでそっちをチョイスしました。

# やってみた感想
特にクセもなく実装できるかなーと思いました。
MySQLも全然普通に使えるしHeroku便利だわ。

##### 環境
Win10+VSC@1.68
Node.js@16.14.2+Express@4.18.1
MySQL@8.0(ローカル側DB)
ClearDB MySQL(Heroku側DB)

事前準備としてHello worldだけを出力するアプリをHeroku上にデプロイしてローカル-GitHub-Herokuが繋がった環境を先に構築してあります。

https://qiita.com/shichisan21/items/b163e33669763ca6fffc

## やろうとしたこと
– Herokuサービス上でNode.js(Express)アプリケーションを動かす
– JSONデータ

元記事を表示

ローカルWebサーバーを立てる方法

## Node.js
Node.js がインストールされている場合には`npx serve`を実行してローカルのWebサーバを立てられます。

“`:ターミナル
$ npx serve
┌────────────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ – Local: http://localhost:3000 │
│ – On Your Network: http://172.22.0.2:3000 │
│ │
└────────────────────────

元記事を表示

AWS Lambdaのマネジメントコンソールでjsを複数ファイルとして使う

– index.js だけでなく、別のjsファイルに書き、そのjsファイルをどう使うか確かめた時の情報です

## jsファイルの配置等の画面キャプチャ
– ものすごく手軽だった。zip圧縮でのソースコードアップと似てる
– 左のツリー

## index.js
“`js

var myfunc = require(‘./myfunc.js’);

exports.handler = async (event) => {
console.log(`EVENT: ${JSON.stringify(event)}`);

myfunc.dummy21();
myfunc.foo();

const response = {
statusCode: 200,
body: JSON.strin

元記事を表示

explorer.fileNestingへの誘い~エクスプローラーを見やすくしよう!~

# Abstract

VScodeのエクスプローラーは、アイコンテーマの拡張機能をインストールするなどによって、大変みやすくなります。しかしNode.jsなどで開発を行なっていると、設定ファイルが大量にトップディレクトリに存在することで、目的の設定ファイルが探しにくいということがあると思います。そこで本記事では、そのような悩みを解決し得る機能、 Explorer file nesting を解説しようと思います。
本記事ではまず Explorer file nesting が何をするものなのかについて紹介したのち、核となる`explorer.fileNesting.patterns`について基本から特殊変数の一覧と意味を紹介します。
この機能使いこなせば、エクスプローラーの表示が更に見やすくなり、QOLが向上するに違いありません。
本記事を読み終えると、例えば以下のようなエクスプローラーにすることができ、package.jsonに主な設定ファイルを集約するようなことができます。
![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

【備忘録】axiosのResponseに型を付与する。

対象のレスポンス
“`
~/develop/node $ curl https://jsonplaceholder.typicode.com/todos/1
{
“userId”: 1,
“id”: 1,
“title”: “delectus aut autem”,
“completed”: false
}%
“`
→jsonplaceholderの取得結果に型をつけていきます。

“`typescript:app.ts
import axios from “axios”

// 型定義を実施
type User ={
userId:number
id:number
title:string
completed:boolean
}

// main処理の関数
const main = async ()=>{
const user = await axios.get(“https://jsonplaceholder.typicode.com/todos/1”)
console.log(‘user

元記事を表示

1分でREST APIのモックサーバーを作る

[json-server](https://github.com/typicode/json-server) を使ってAPIのモックを作る手順を備忘録として残す。

# 手順
1. `package.json` の作成
1. json-server のインストール
1. jsonの追加
1. サーバ起動

# 1. `package.json` の作成
Node.jsインストール済みの環境で、プロジェクトとなるディレクトリ(ここでは`api-mock`)を作成し、そのディレクトリへ移動したら、`$ npm init`コマンドを実行。

`package.json`が生成される。

※今回はyarnではなくnpmを用いている

“`:package.json
{
“name”: “api-mock”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1″

元記事を表示

nodenv installが使えない時の対処法

# 前提
今回この現象は,`macOS`でHomebrewを使用してインストールではなく`Oracle Linux 8`で[Github](https://github.com/nodenv/nodenv)からインストールした際に遭遇した場面です.また,Nodenvのインストール手順は先ほど記載したNodenvのGithubに丁寧に書かれているのでそちらを参考にしてください.
※今回の解決方法は他のOSを用いた際にも対応可能かもしれませんが…

# 場面
Terminal上で
“`Terminal
$ nodenv install
“`
を実行した際に
“`Termianl
nodenv: no such command `install’
“`
が帰ってきた際です.

# 対処
Githubからインストールした場合`node-buil`が自動的にインストールされないため`nodenv install`が使用できません.そのためTerminal上で…
“`Terminal
cd .nodenv
“`
“`Terminal
mkdir plugins
“`
“`

元記事を表示

Node.jsのバージョン切り替え(nodebrew)

Node.jsのバージョン切り替えに関するメモ

Node.js管理ツール

・nodebrew

その他の管理ツール一覧はheppokofrontendさんの記事が参考になります。
[Node.jsのバージョン管理ツールを改めて選定する【2021年】](https://qiita.com/heppokofrontend/items/5c4cc738c5239f4afe02)

現在利用中のNodeのバージョンを確認する

“`
$ node -v
v16.14.0
“`

ダウンロード可能なNodeのバージョンを確認する

“`
$nodebrew ls-remote
v0.0.1 v0.0.2 v0.0.3 v0.0.4 v0.0.5 v0.0.6

v0.1.0 v0.1.1 v0.1.2 v0.1.3 v0.1.4 v0.1.5 v0.1.6 v0.1.7
v0.1.8 v0.1.9 v0.1.10 v0.1.11 v

元記事を表示

Nodejsでマイナンバーカードを使ったログインと認証をやってみる(PKCS11js,X509,OpenSC,crypto)

# はじめに

電子証明書には署名用と利用者証明書用の2種類があり、pkcs11jsを使えばマイナンバーカードから利用者証明書用電子証明書が取得することができます。

利用者証明書は「ログインした者が、利用者本人であること」を証明し、インターネットサイトなどにログインする際のセキュリティをより強固なものにできます。

今回はコマンドライン上のみの実行ですが、マイナンバーカードを使った認証サーバーを開発することをイメージしながらコーディングしています。

# 目次

1. [PKCS11jsの読み込み](#pkcs11js)
1. [認証のチャレンジデータを生成する](#Chapter1)
1. [カード内の秘密鍵でチャレンジデータに署名](#Chapter2)
1. [カードから利用者証明書を取得](#Chapter3)
1. [利用者証明書を検証する](#Chapter4)
1. [利用者証明書の公開鍵で署名を検証する](#Chapter5)
1. [利用者証明書の属性を印字する](#Chapter6)
1

元記事を表示

雀魂の画面から画像認識で対戦情報を持ってくる(Vol. 1)

[前回の記事](https://qiita.com/xenepic_takku/items/f25a97735a90546d1451)                          [次回の記事](https://qiita.com/xenepic_takku/items/42d9850c0095fbf51559)
# 前回までのあらすじ
> 1. 雀魂の画面のスクリーンショットを持ってくる
> 1. OpenCVのテンプレートマッチングでスクショから牌姿情報を持ってくる

という方針を決めたのはいいものの、いきなり1. でつまづく。
雀魂のスクショを取ってこれないのである。
[参考にした記事](https://qiita.com/hiro0156/items/51ab267f4f47f2f8fe76)だとスクショなんてスッと取ってきてるんだけど、node.jsになると途端に難しいらしい。

# スクショ難民
さて、色々調べた時に巡回したページを挙げる。

> C#での画面キャプチャの取得方法を徹底解説!
https://www.fenet.jp/dotnet/column/l

元記事を表示

OTHERカテゴリの最新記事