Node.js関連のことを調べてみた2020年12月30日

Node.js関連のことを調べてみた2020年12月30日

nodejsでtail

electron(nodejs)上で特定のファイルをtailする

tailライブラリを使用する。
https://github.com/lucagrulla/node-tail

“`
$ yarn add tail
“`

“`App.tsx
import React, { useEffect, useState } from ‘react’
import { render } from ‘react-dom’
import { Tail } from ‘tail’

const tail = new Tail(‘file-path’)

const App = () => {
let [texts, setTexts] = useState([])

useEffect(() => {
tail.on(‘line’, (data : string) => {
texts = […texts, data]
setTexts(texts)
})

return () => {
tai

元記事を表示

Node.js: bluebird を使って Redis のデータを読む

次のプログラムを bluebird を使って書き換えました。
[Node.js: Async/Await を使って Redis のデータを読む](https://qiita.com/ekzemplaro/items/277fce6168dab745264f)

ライブラリーのインストール

“`bash
sudo npm install -g bluebird
“`

“`js:bluebird_read.js
#! /usr/bin/node
// —————————————————————
//
// bluebird_read.js
//
// Dec/30/2020
// —————————————————————
‘use strict’

const bluebird = require(“bluebird”)
const redis = require(‘redis’)
bluebird.pr

元記事を表示

JWTを用いた認証方法(JWT発行と検証方法)

# 概要

Webアプリにおいて、クライアント側のSPA(=Single Page Application)からのAPIの認証に、JWTを利用する場合を考える。サーバー側でのJWT発行と、APIに含めれて送られてきたJWTを検証する方法を説明する。

言語はNode.jsとする。

クライアント側でJWTの有効性を検証する、つまりクライアント側で復号用の公開鍵を保持することを想定し、JWTはRSAで署名するものとする(クライアント側での検証をしない場合は共通鍵で署名してもよいが、割愛する)。

JWTの発行と検証そのものは、OSSライブラリ「jsonwebtoken」を用いて簡単にできる。

ref. https://github.com/auth0/node-jsonwebtoken#readme

本記事では、JWT発行の際に必要となる秘密鍵の準備方法をメインに、作成した鍵ペアで実際にJWTを生成し、検証する様を説明する。

鍵ペアの生成はWindows10上で実施するものとする。一部WSLを利用する。

公開鍵暗号のアルゴリズムにはRSAを用いる(他にElGamal等がある)。

元記事を表示

Google Calenadr APIをnode.jsで使ってみる

#google calendar APIからスケジュール取得
普段からgoogle calendarをよく利用しています。
google calendarにプライベートと仕事のスケジュールを全て管理しておき、お客様はスケジュールの空いている所にピンポイントで予約を入れられるので、スケジュール調整が自動化出来てとても便利です。

そこで、node.jsでgoogle calendar情報を取得させるコードを見つけたので実装してみる事にしました。
node.jsでgoogle calendarを扱う前に、Google APIsで認証キーの発行が必要です。

#Google APIsでAPIキー発行
公式ドキュメントのEnable the Google Calendar APIボタンをクリックしてキーを発行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/bb0b27ea-e8c5-e928-15d5-7c196b1a511d.png)

#Google API でプロ

元記事を表示

LINE公式でオンラインサロン作ってみたい

#LINEでオンラインサロン
先日、LINE Payの決済について学びました。
ネット検索をしていると、LINEpayのサブクス決済をLINE公式アカウントで実装するコードを公開しているサイトを見つけました。

最近、wordpressでオンラインサロン、会員サイトを作りたいという要望がとても多いので
LINE公式アカウント上でサブスク管理が出来、限られた会員だけが使えるLINE公式アカウントがあっても面白いのかなと思い実装してみる事にしました。

#動作の説明
まず、お友達登録をしてメッセージを送信
(LIFFで会員になるなどボタンを設置して、テキストを送るのも良いですね)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/ab11e853-1ffd-3d83-32f2-fb82919b1bb7.png)

YESを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8206

元記事を表示

プログラミング超初心者がNode.jsについて理解しようとした

JavaScript関連の分野について学習をしていると
Node.jsというものがどうしても目に入ってくるのですが、
プログラミング初学者の私にとっては、

わかりやすく解説しようとしてくれている記事を10本調べてみても
結局Node.jsがなんなのかわかりませんでした。。

もしかして同じような初心者の人いるのでは?と思い
理解が進んだ説明を書き留めておきます。
Node.js ってなんなん?ていつまで経っても解決しない方はぜひご覧ください。

Node.js
JavaScript(フロントエンドを担当する言語)という、
ユーザーの目に見える場所の挙動にあれこれ指示を出す言語
(マウスオーバーするとポップアップが出る、
webサイト上に画像のスライダーの挙動を実現させる、など)

しかし、サーバーサイドというデータベースに入っている情報を引っ張ってくる
いわゆるユーザーの目に見えないサーバーとの情報のやり取りをしてくれる
言語のような使い方ができるというもの。

本来webページには、登録された情報を引っ張ってくる指示が出されてから
サーバーに情報を取りに行って表示されるとい

元記事を表示

TestCafe入門 覚えておいたほうがよさそうなこと

# TestCafeとは?
end-to-end testをnode.jsで自動化させたフレームワークです。

##記事内容
今回、キャプチャ、cvポイントのテストにあたって、
これ多分次も使うかも?というやつを紹介していきます。

## case.1 Basic認証のサイトのテスト
テスト対象サイトがBasic認証がかかっているサイトだと、
認証が通らなかった時の画面をスクリーンショットをとった結果が返ってくる。

こちらは[ドキュメント](https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/authentication.html)に全てが載っていました。

“`js:screenshotExample.js
fixture(‘スクリーンショット’)
.page(‘https://example.com’)
// 追加
.httpAuth({
username: ‘example’, //ユーザー名を設定
password: ‘password’ //パス

元記事を表示

Node.js: Async/Await を使って Redis のデータを読む

“`js:redis_read.js
#! /usr/bin/node
// —————————————————————
//
// redis_read.js
//
// Dec/29/2020
// —————————————————————
‘use strict’

const util = require(‘util’)
const redis = require(‘redis’)
// —————————————————————
async function proc01 ()
{
const redisUrl = ‘redis://127.0.0.1:6379’

const client = redis.createClient(redisUrl)
client.get = util.promisify

元記事を表示

WebsocketとRedis Pub/Sub

Redisの[Pub/Sub機能](https://redis.io/topics/pubsub)を使うとWebsocketの通信情報を複数のサーバー間で同期させることができます。
スケールのためにWebsocketのサーバーを複数立てた場合、サーバー間で通信情報を同期する仕組みがないと、例えばチャットアプリケーションの場合、サーバーAに接続されたクライアントはサーバーBに接続されたクライアントとは正常にメッセージのやりとりができないことになってしまいます。
RedisのPub/Sub機能はそれを解消することができます。

![スクリーンショット 2020-12-28 20.44.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260824/6ae93db6-c8db-40b4-2373-e1682083728b.png)

## Redis Pub/Subとは

Pus/Subにでてくる主な概念です。

| 用語 | 説明 |
| — | —- |
| Publish | 発行すること

元記事を表示

【Node.js express Docker】 Docker環境変数を定義してnode.jsで読み込む方法

※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。

何パターンかあるみたいなんですが、とりあえずシンプルに。

###app.env というファイルに環境変数を定義する。(名前は任意)

“`app.env
SECRET_KEY=himitu
“`
###docker-compose.ymlで上記ファイルを環境変数ファイルに指定

“`docker-compose.yml
env_file: ./app.env
“`
###node.js側で環境変数ファイルを読み込む

“`js
const env = process.env //envという名前でオブジェクトを格納。
“`

###取り出し方法
“`js
env.SECRET_KEY
“`

以上です。

元記事を表示

mongooseの使い方(webアプリ)

 mongoose(Node.js上でMongoDBを扱うためのライブラリ)を使うときに少し困ったので、二つのサイトを参考にして良いとこ取りをしてみました。すべてのコードを書くと、ちょっとしたwebアプリが出来上がります。ご指摘があればコメント欄にお願いします。

# 1.準備
VScodeを使いました。軽くて機能も豊富なのでお勧めです。
準備は以下の通りです。無い場合も簡単に入れられます。

* mongoose
* MongoDB
* node.js

VScodeを使う場合、拡張機能は以下のものを入れておきます。

* EJS language support
* ESLint
* MongoDB for VS Code

# 2.構成
VScodeのexpress-generatorというツールを使うと、Expressのアプリケーションの構造の原型が自動生成されるのでそこにフォルダ、ファイルを追加していきます。次のようなコードで生成します。

“`terminal
>npm install -g express-generator
>express –view=”ejs”

元記事を表示

PlayCanvas EditorのコードをGitで管理をするために使えるライブラリ「playcanvas-sync」

PlayCanvas Editorで開発をしていると、ソースコードの管理をPlayCanvas Editorのバージョン管理機能を使用しないで、Gitで管理をしたい場合があります。その際に使える便利なライブラリがplaycanvas/playcanvas-syncです。

ライブラリ(GitHub)
https://github.com/playcanvas/playcanvas-sync

このライブラリは、`PlayCanvas Editor`の`API Token`を使い、ローカルマシーンのアセットをPlayCanvas Editorへ`REST API`経由で同期できるライブラリです。

## 使い方
### PlayCanvas Editorのアセットをローカルマシンに同期する

#### インストール
`pc-sync`は`node.js`の環境で動くライブラリですが、`npm`では公開されていないのでGitHubのリポジトリからインストールする必要があります。

##### 1. リポジトリをクローンします。

“`zsh
git clone git@github.c

元記事を表示

リファクタリングに使える俺的JavaScript小技テクニック集5選

JavaScriptとちょっとしたリファクタリングにおすすめのテクニックを晒します。

* 俺的ラインナップ
* ① if文よりも&&演算子
* ② nilガード
* ③ reduce
* ④ enumもどき
* ⑤ ピュアなObject

## ①if文よりも&&演算子
よくあるif文。

“`javascript
const array = []
if (isHoge) {
array.push(“hoge”)
}
if (isFuga) {
array.push(“fuga”)
}
“`

上記の文を `&&` 演算子を使うとすっきり書けます。

“`javascript
const array = []
isHoge && array.push(“hoge”)
isFuga && array.push(“fuga”)
“`

`&&` 演算子は左側がtrueの場合は右側が評価されるので上記のように書くことができます。
なお、配列での処理を例に挙げましたが、オブジェクトでの処理でも活用できます。

“`javascript

元記事を表示

AWS SDK for JS version3でクレデンシャルを取得する記述

# 概要

– 処理内でアクセスキーIDやシークレットアクセスキーを利用する場面で、実行環境からクレデンシャルを取得したいことがあります
– まだプレビューですが、AWS SDK for Javascript version 3で試してみました
– https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/welcome.html
– https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html
– 最後にv2 での動作も示しました

# 環境1 (ローカル環境)

– Ubuntu20.04 on WSL2
– AWS CLI v2設定済み

## モジュールインストール

– v2では `aws-sdk` モジュールに集約されていましたが、sdk v3では細かくモジュールが分けられているようです
– 必要なモジュールのみを組み込むことでサイズ的にも実行(ロード)速度にも貢献する感じでしょうか

“`
npm in

元記事を表示

D3.js+Node.jsでCPU使用率モニタ作成

D3.jsの勉強がてら何か作ってみようかと思い、PCのCPU使用率を表示するものを作ってみました。

## 概要

実際の値を表示したかったので、
CPU使用率を返すサーバサイドをNode.jsで作成し、
情報を表示するクライアントサイドをD3.jsで作成しました。

動作例:PC3台でそれぞれサーバアプリを動作させて、クライアントで3つ分並べて表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538393/0c7203c0-aa47-e60e-6fa9-5ce7d9785985.png)

## 実施環境

* サーバサイド
* Node.js (v14.15.3)
* express : 4.17.1
* cors : 2.8.5
* クライアントサイド
* D3.js (v6.3.1)

※Versionに指定があるわけはなく、とりあえず試した際の各ソフトの最新Verを使用

## サーバサイド(Node.js)側の実装

No

元記事を表示

glitchからGASにpost通信する

初書:2020/12/27

# 前書き
[Glitch](https://glitch.com/)からGoogle App Script(GAS)にPOST通信をしたかったので、その時のメモ。
ちなみに、今回はGlitchを使用しているのでGlitchと書いているが、内部はnode.jsなので、実質node.jsとGASのpost通信と言っても過言ではない(ハズ)

# glitch側

内部がnode.jsのため、普通のXMLHttpRequestやajaxは使用できない[^1]
[^1]: 厳密には専用のnpmをインストールしたら出来そうではあるが、試してない

そのため、今回はaxiosというのを使用してみる

ちなみにgoogle検索をかけると、requestというのもあるが、どうやら既に非推奨らしい。

## インストール
glitchではpackage.jsonに書き足すだけでいいので、単純にpackage.jsonの”dependencies”の欄に`”axios”: “^0.21.0″`を書く。

## post通信

では実際に通信していく。今回はjsonを使用し

元記事を表示

オウム返しWebチャットボットにQ&Aコミュニケーション機能を追加する

#オウム返しWebチャットボットにQ&Aコミュニケーション機能を追加する

##はじめに

###この記事は前回記事の続きです
https://qiita.com/abemaki/items/cd0bfa99cc2fab4660f5
説明が細かくなりすぎないように今回の記事は完成品のソースコードと
各ソースコードに対して簡易な説明を入れるようにしています。

 
###完成品のサンプル画面はこちら
※herokuなので初回立ち上げ少し遅いです。
https://ponkotsueasychatbot.herokuapp.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/7f0b9801-882e-1bf7-5a61-5dce07857a3b.png)

 
###すべて無料で実現できる
ので、お勉強や検証やアイディア創出に最適かと思います。

 
 
###この記事でやること
前回作成した単純オウム返しのWebチャットボットに簡単なQ&Aコミュニケーション機

元記事を表示

NestJS+ClamscanでセキュアファイルアップロードAPI

# はじめに
Webシステムでファイルアップロードする場面って色々ありますよね。
イントラ内の特定利用者が使うシステムならある程度信頼してもいいのかもしれませんが、
コンシューマー向けで不特定多数の人が利用する場合、悪意が無くてもウイルスファイルをアップされるリスクありますよね?
ファイルを受領した側が送信者の言われるがままに、拡張子を変えたりしてマルウェアに感染ってことも想定されます。

今ではSassサービスなどもあると思いますが、ここではバックエンドAPIでClamAVを使ったスキャンの例を実装してみます。

## 前提/環境/注意事項
<前提>
NodeJS / Express / NestJS がある程度分かっている人(細かい説明は割愛するので)

<環境>
・Windows10
・VSCode
・DockerDesktop
・Node(Express)
・NestJs

<注意以降>
・セキュリティに関わる部分なので、あくまで参考程度にお願いいたします。
実際は、外部から受領するファイルに関して、様々なバリデーション(拡張子、MIME、ファイルヘッダ)が必要となります。

元記事を表示

M1 MacでNode.js(arm64)をNVMを使ってインストールする

最新のNVMとNode.jsをインストールすればいけると思ってたら罠でした。
多くの方は迷わずインストールできると思いますが、arm64版以外のNode.jsをイン

## TL;DL

“`terminal
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
$ nvm install 15
“`

これをbashなりzshなりで実行するだけです。現在バイナリが用意されていないので、ソースコードをダウンロードした後にビルドが始まります。
ビルド完了後、`node -p process.arch`と入力し`arm64`と表示されれば成功です。`x64`と表示された方はもう少しお付き合いください。

## 環境

“`terminal
$ uname -a
Darwin Mac-mini.local 20.2.0 Darwin Kernel Version 20.2.0: Wed Dec 2 20:40:21 PST 2020; root:xnu-7195.60.75

元記事を表示

【解決!】Vue-Cliをインストール…できない!

#状況
・Vue-Cliを使った本格的なアプリ開発をするためにVue-Cliをインストールしようとした
・過去にもVue-Cliをインストールして使った経験あり!
・コマンドプロンプトを開いて「いざ!やるぞ!」と思っていた矢先、早速出鼻をくじかれた…という話です。

##起こったこと①
・コマンドプロンプトで下のようにVue-Cliをインストール

“`
npm -g install vue-cli
“`

・以下エラーが発生

“`
npm WARN deprecated vue-cli@2.9.6: This package has been deprecated in favour of @vue/cli
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has mov

元記事を表示

OTHERカテゴリの最新記事