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

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

Rails 6+Webpacker で Yarn, Node.js 環境をHerokuでもMacでも同じにする

Rails 6+Webpacker開発環境をJS強者ががっつりセットアップしてみた(翻訳)

Rails 6+Webpacker開発環境をJS強者ががっつりセットアップしてみた(翻訳)

のなかの「再現可能な環境: Node.jsとYarn編」。

### .nvmrc
nvmを使用してNode.jsのversionを管理する

### .yarnrc
“`bash
$ yarn policies set-version 1.22.4
“`

### package.json
“`js
},
“engines”: {
“node”: “13.13.0”,
“yarn”: “1.22.4”
}
}
“`

## 依存関係の自動Update
> JavaScriptやRubyの依存関係の自動アップデートについては、Renovateを一度チェックしてみることをおすすめします。

### Renovate
GitHub に無料で追加できた

元記事を表示

Node.jsのEventEmitterについていろいろ

Node.jsのEventEmitterについて書いていきます。

## EventEmitterとは
Node.jsにおいて独自のイベントを作成したいときに使われます。

EventEmitterの基本的な使い方は、`on`や`once`メソッドなどを使って、イベント名を登録して、リスナーに登録したイベントが呼び出されたときに実行する処理を書いていきます。ここでいうイベントの呼び出しとは、`emit`メソッドでイベント名を指定して登録したイベントを呼び出します。

`’start’`イベントと`’end’`イベントを実装した簡単な例をやってみたいと思います:

“`:js
const { EventEmitter } = require(“events”);
const eventEmitter = new EventEmitter();

eventEmitter.on(‘start’, () => {
console.log(‘start event!’);
});

// This method don’t run.
eventEmitter.on(‘end’, () =

元記事を表示

Node.jsで複数の画像をWebPに一度に変換する

既存の画像(jpgやpng)をディレクトリを分けつつコマンドで一度にWebPに変換するスクリプトを書きました。
WebPについての説明はここでは割愛します。
[公式アナウンス](https://developers.google.com/speed/webp)

## 環境

* MacOS
* Node.jsのバージョン・・・12.8.1
* npmのバージョン・・・6.10.2

### 前提

以下をインストール済みであることを前提としています。

* Node.js
* npm(又はyarn)

## ディレクトリ構造

“`
├── node-extensions
│   └── sharp.js ← 実行するスクリプトファイル。
├── package.json
├── src
│   └── images
│   ├── original ← 元の画像を入れるディレクトリ。
│   └── webp ← 変換後の画像を入れるディレクトリ。
“`

## パッケージのインストール・スクリプトの実行

### 必要なもの

* [sharp(0.25

元記事を表示

LINE Bot開発 簡単な会話ができるようになるまで(前編)

# 概要
LINE Botを開発する方法を記載しています。今回は簡単な会話botを作成します。BotはNode.jsで作ります。

# 必要なスキルと環境
・Node.js/Javascriptの基本的な知識
・Githubを使ったことがある

#開発の流れ
+ LINE DevelopersでLINEアカウント(以下チャンネル)を作成
+ Bot本体のプログラムを開発し、デプロイ
+ Bot本体のプログラムをカスタマイズしてデプロイするという作業を繰り返してBotを拡張していく。

#開発
まずは、送信したメッセージをおうむ返ししてくれるBotを作ります。
##1.Channelを作成する
LINE Bot用のチャンネル(LINEアカウント)を作成します。無料で作成できます。
[作成方法はこちらを参考にしてください]
(https://developers.line.biz/ja/docs/messaging-api/getting-started/#%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%AE%E4%BD%9C

元記事を表示

Tensorflow.jsをNodejsで高速化しようとしたが、旧型CPUでは、WebGLの方が高速だった話

Tensorflowjsで2000年からの株価を元に、新値3本値のAI予測をブラウザで行っていたが、Nodejsで高速化できないかトライしてみた。CPUは激古のi5-650。

作業手順は、こちら参照。
https://randomwalkjapan.blogspot.com/2020/06/nodejstensorflow-how-to-setup.html

プログラムはこちら。
https://github.com/tanakayutaka/Tensorflow.js-tools-/blob/master/Nodejs%20Tensorflow%20BM%20test

結論は、

NodejsでNodeジェネリックでないTensorflow処理 6分
NodejsでNodeジェネリックなTensorflow処理 CPUが古すぎて動作せず

ChromeでハードウエアアクセラレーションON 4分 <== 最速 ChromeでハードウエアアクセラレーションOFF 12分 ということで、最近のCPUを持っていない限り、Tensorflowをジェネリックで走らせることはできず、ただ

元記事を表示

Node – Error: unable to verify the first certificate

Using https or wss to create a client connection. And it will create failed.

“`
Error: unable to verify the first certificate
“`

Added the below code to disable the SSL check.

“`
process.env[‘NODE_TLS_REJECT_UNAUTHORIZED’] = 0;
“`

https://blog.darkthread.net/blog/npm-unable-get-local-issuer-cert-issue/
https://medium.com/nodejs-tips/ssl-certificate-explained-fc86f8aa43d4

元記事を表示

Windows 10 + nodejs + selenium-webdriver + geckodriver で headless firefox を試してみる

#目的
Firefoxをnodejs + selenium-webdriver + geckodriverからキックしてみる

##SeleniumBasicのインストール
※環境変数の文字数制限により、同居(笑)
[Seleniumbasic](https://florentbr.github.io/SeleniumBasic/)の Release page より SeleniumBasic-2.0.9.0.exe をDLする
exeを実行すると、C:\Users\user_name\AppData\Local\SeleniumBasic にインストールされる
ソースコードのプロジェクトをVS2019で開くと .NET Framework 3.5 を指定しているので
Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能 -> .NET Framework 3.5 が有効であることを確認する

##selenium-webdriverのインストール
※v4なのは、Edgeと比較するため(かもしれない)

> npm install -

元記事を表示

mongoDB Atlas+mongooseでWebアプリをどうやって始めるんや?

## 1. Atlasにclusterを作成する
まずは登録やん。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324917/9a770787-95f1-09f5-ef45-575499c87ff8.png)

### 1.1 Add New User
Securityの中にある"Database Access" 項目に行くと、Add New Database Userがあるからそこに行くやん。

![71700.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324917/a2ac3fc2-f2f6-0c5c-c576-e696c1bc645a.jpeg)

### 1.2 whitelistの設定
ADD IP ADDRESSでWhitelist Entryを設定するやん。とりあえず、これは"ALLOW ACCESS FROM ANYWHERE"を押しとこ。

![71701.jpg](https:/

元記事を表示

ループ中に配列をいじってみたらforEachの挙動が変だった。

配列を取り出してループさせるのにfor-of やforEachってあるじゃないですか。
ループ中に配列をいじったらどうなるんだろうと思ったのでやってみました。

結論から言うと、forEachの挙動が直観に反していて面白かったです。

# 実験環境
- Node.js 12.18.0
- Windows 10

# 実験1. ループ中に配列を短くして見よう。
下記のようなtest_for,test_forof,test_foreachという関数をつくって実験します。
読めばわかりますが、各ループの中で、配列の先頭をshift()で酉だし、毎回短くしていきます。

```javascript
test_for([0, 1, 2, 3, 4, 5, 6]);
test_forof([0, 1, 2, 3, 4, 5, 6]);
test_foreach([0, 1, 2, 3, 4, 5, 6]);
function test_for(a) {
let p = 0;
for (let i = 0; i < a.length; i++) { let v = a

元記事を表示

Node.js 10,12,14のためのTypeScriptコンパイラ設定(targetとlib)

本稿では、Node.jsのバージョンに合ったTypeScriptのコンパイル設定(tsconfig.json)を紹介します。

サーバサイドアプリケーションやCLIアプリケーションをTypeScriptで開発する場合、実行環境としてNode.jsのバージョンを気にすることになります。本稿は、狙ったNode.jsのバージョンに合ったコンパイル設定はどうしたらいいかについて説明するものです。

# Node.js 10

```tsconfig.json
{
"compilerOptions": {
"target": "es2018",
"lib": ["es2018"]
}
}
```

Node.js 10は、ES2018の構文とライブラリの両方を100%サポートしているので、`target`も`lib`も`es2018`にする。

# Node.js 12

## Node.js 12.9未満の場合

```tsconfig.json
{
"compilerOptions": {
"target": "es2019",
"lib": [

元記事を表示

AWS LambdaでFFmpegを使って動画からサムネイルを作成する

S3にアップロードしたMP4からサムネイルを作成する方法を雑にまとめました。

## 手順

### 1. FFmpegをダウンロード
MP4からサムネイルを取得してくれるライブラリを取得する。
コイツが何者かの詳細は調べてみてください。

[公式](https://johnvansickle.com/ffmpeg/)から `ffmpeg-git-amd64-static.tar.xz`(2020年6月時点で最新)をダウンロードする。
ダウンロードしたzipファイルにはいろいろはいっているが、今回は`ffmpeg`という名前のバイナリファイルだけ使う

### 2. Lambdaのコードを書く
適当にLambda用のディレクトリを作る。
そのディレクトリの中で、先程ダウンロードしたFFmpegのzipを解いて、中にある`ffmpeg`という名前のバイナリファイルを以下の改装に配置する。
お次にindex.jsにLambdaで実行したい処理を書く(以下)
*エラーハンドリングとかはしてないので、いい感じに改良して下さい。

```
.
├── bin
│   └── ffmpeg
└──

元記事を表示

Windows 10 + nodejs + selenium-webdriver + chromedriver で headless chrome を試してみる

#目的
Chromeをnodejs + selenium-webdriver + chromedriverからキックしてみる

##SeleniumBasicのインストール
※環境変数の文字数制限により、同居(笑)
[Seleniumbasic](https://florentbr.github.io/SeleniumBasic/)の Release page より SeleniumBasic-2.0.9.0.exe をDLする
exeを実行すると、C:\Users\user_name\AppData\Local\SeleniumBasic にインストールされる
ソースコードのプロジェクトをVS2019で開くと .NET Framework 3.5 を指定しているので
Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能 -> .NET Framework 3.5 が有効であることを確認する

##selenium-webdriverのインストール
※v4なのは、Edgeと比較するため(かもしれない)

> npm install -

元記事を表示

opossumでサーキットブレーカーを実装する(1)

# 概要
node.jsでサーキットブレーカーパターンを実装したライブラリ「opossum」の利用方法メモです。
バージョンはv5.0.0です。

# サーキットブレーカーパターン

外部システムやあるリソースと連携した処理を行う箇所にサーキットブレーカーパターンを入れておくと以下のような事が実現できます。

- 外部システム/リソースに障害が発生してエラーが多発する場合は、要求された処理を実行しない/処理数を制限する
- 外部システム/リソースがが正常処理できるようになった場合は、正常運転に戻す

具体的には外部システムの障害によってレスポンス遅延などが発生した場合には、リクエスト送信を遮断して連鎖的な発生を防ぐ。または、キャパシティを超えるリクエスト送信を制限してシステム全体のパフォーマンス劣化を防ぐ事ができます。

なので何か障害とか突発的なリクエストが発生した時に、慌てずにすみます、、。
(外部システムとの連携のお話だとネットワークの問題なのでアプリで実装せず、サービスメッシュで対応というのが今どきなんでしょうか)

>サーキット ブレーカー パターン - Cloud D

元記事を表示

【Auth0】公式サンプルアプリケーション(Node.js)でサインアップとログインを試す

# はじめに
Auth0のNode.jsサンプルアプリケーションを動かしてサインアップとログインをします。

サンプルアプリケーションは以下で公開されています。
https://github.com/auth0-samples/auth0-nodejs-webapp-sample

# アプリケーションの準備
## アプリケーションの登録

Auth0の管理画面にアクセスし`Applications`の画面を開きます。

![スクリーンショット 2020-06-11 17.06.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490013/24c2d109-8ba0-71a9-7834-2e42cb74ca4b.png)

`Applications`の画面の右上に表示されている`CREATE APPLICATION`を押してアプリケーションを作成します。
表示されたアプリケーション作成画面に任意のアプリケーション名を入力し`Regular Web Applications`を選択します。

![

元記事を表示

for文の条件式はキャッシュした方が良いの?

(2020/6/15 実験3を追記)

巷でよく、forループの条件に使う配列のlengthの値はキャッシュしておけという記事を見かけたことはありませんか?

私も最近遊び始めたAtCoderでよくTLEにぶつかるので、lengthをキャッシュしたりして、あがいています。
……が、それで解決したことって無いんですよね~。

というわけで、配列のlengthをキャッシュすると良いのが本当かどうか、調べてみました。
ついでにループ数を別の方法で毎回計算したり、for-ofを使う場合も一緒に実験しています。

# 実験1
まずは普通にやってみます。
ループの中身が必要なのかどうは解りませんが、とりあえず適当に書いてみた。

```javascript
"use strict";

let t = 22;
let a = Array(2 ** t);
let p = Array(4).fill(0);
const alen = a.length;

console.time("teisu");
for (let i = 0; i < alen; i++) { p[0] += 1; }

元記事を表示

Node.jsでIFTTTのWebhooksを使う(requestモジュール利用)

## Node.jsでIFTTTに連携する

前回までのお話。

- [Raspberry piにNode.jsをインストールする](https://qiita.com/takashi53/items/69d4395c70d76ddbb0ab)
- [Node.jsでrequestモジュールを使ってHTTPリクエストを実行する](https://qiita.com/takashi53/items/76c5987b73b76ba9ea96)

## 今回はIFTTTを使ってGoogle スプレッドシートにデータを書き込む

IFTTTの設定は、端折ります。(また別途)

### IFTTTのWebhooksのデータ送信のポイント

- 送信できるデータは最大3つ
- POSTメソッドを使う
- データはJSON形式

### Webhooksのシークレットキーをメモする

Webhooks → Documentation を開き、シークレットキーをメモしてください。

![IFTTT-000.PNG](https://qiita-image-store.s3.ap-northeast

元記事を表示

DynamoDBをNode.jsで操作する

Node.jsでDynamoDBを触ってみたので、備忘録として残しておきます。

プライマリーキーとして、パーティションキーのみの方法と、パーティションキー+ソートキーでユニークにする方法があります。
前者を「ハッシュキーテーブル」、後者を「複合キーテーブル」と呼ぶことにします。

以下、参考にさせていただきました。(ありがとうございました)

 [コンセプトから学ぶAmazon DynamoDB【インデックス俯瞰篇】](https://dev.classmethod.jp/articles/conceptual-learning-about-dynamodb-index/)
 [【詳解】JavascriptでDynamoDBを操作する](https://qiita.com/Fujimon_fn/items/66be7b807a8329496899)
 [DynamoDB での Node.js の開始方法](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GettingStarted.Node

元記事を表示

地震が起きたときの地図上に震度が表示されるやつが気になったから作ってみた

皆さんは、地震が起きたとき何をしますか?

- Twitterで実況する
- テレビのチャンネルをNHKに変える
- ラジオを付ける

など、色々あるかと思います。
私は、Twitterで**特務機関NERV防災**のアカウントをチェックします。

**もちろん身の安全を確保するのが最優先です。**

Twitterでは特務機関NERVの他にYahooやらtenki.jpやらウェザーニューズなどが地震情報を発信しています。
このようなアカウントで私は毎回、下のような画像をどうやって生成するのが凄く気になっていました。

Windows 10 + nodejs + selenium-webdriver + msedgedriver で headless edge(Chromium) を試してみる

#目的
Edge(Chromium)をnodejs + selenium-webdriver + msedgedriverからキックしてみる
※非同期系の処理は、まだまだだなぁ・・・・

##SeleniumBasicのインストール
※環境変数の文字数制限により、同居(笑)
[Seleniumbasic](https://florentbr.github.io/SeleniumBasic/)の Release page より SeleniumBasic-2.0.9.0.exe をDLする
exeを実行すると、C:\Users\user_name\AppData\Local\SeleniumBasic にインストールされる
ソースコードのプロジェクトをVS2019で開くと .NET Framework 3.5 を指定しているので
Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能 -> .NET Framework 3.5 が有効であることを確認する

##MSEdgeDriver
[バージョン情報](edge://settings/help)よ

元記事を表示

OTHERカテゴリの最新記事