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

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

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文の条件式はキャッシュした方が良いの? 調べてみました。

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

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

というわけで、配列のlengthをキャッシュすると良いって本当?
ついでにループ数を別の方法で毎回計算したり、for-ofを使うのと比べて、どれが早いの?
調べてみました![^3]

## 実験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; } console.timeEnd("t

元記事を表示

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)よ

元記事を表示

Express+Node.js+Passportでgoogle認証を作る(ログイン画面を作る)

#内容
自分のためのメモだよ
hoge hoge
初心者には敷居が高い
写真を載せる

## 1. 必要なものをインストールする

今回のプロジェクトで必要となるライブラリをインストールする。`--save`はパッケージのインストール時、package.json の dependencies に追加してくれる機能。
npm v5 以降はインストール時にデフォルトで package.json の dependencies に追加してくれるようになったので --save オプションは[不要になった。](https://qiita.com/havveFn/items/c5beda8572aa8c1e6be6)

けど、一応つけておく。

```
npm install --save passport passport-google-oauth20
```

## 2. google +の設定を行う

Oauth でアカウントを作る。

## 3. index.jsを編集する
clientIDとclientSecretをソースコードにコピペする。

client ID: みんなに共有してもいい

元記事を表示

Heroku + Node.jsでPornhub から動画を検索してくる LINE Bot を作る

## はじめに

※一応注意書き:公開していいか微妙だったので非公開です&ご利用は自己責任で

Youtubeで~~クソ~~アフィリエイターの動画を何気なく見ていたら「LINE Botがアツい!」的なことを言ってた(ほんとかな?)ので、作ってみようと思いました。まる。

ただ、普通に作ってもおもろくないし、何かネタっぽいの作ろうと思って**えっちな動画**を検索できるようにしました。まる。

といっても、LINE Botなんて人生で一回も作ったことなかったのでとりあえずこの辺を参考にしつつ進めました。
[1時間でLINE BOTを作るハンズオン (資料+レポート) in Node学園祭2017 #nodefest](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)
[LINE BOTをHeroku + Node.jsでやるまで](https://qiita.com/TakuTaku04/items/cb71f10669a9e9cbf71b)
[Node.jsアプリケーションをHerokuにデプロイ](https://qiita

元記事を表示

WindowsにてSublime Text 3でコーディング、gulp-sass(+node-sass)を利用するときは"atomic_save"を設定しよう

Windows10(Pro, 64bit)でタスクランナーにGulp4(^4.0.2)を利用しているときに、scssのコンパイルがうまくいかない("@import/xxxx"を読み込んでくれない)状況になり、解決まで長いこともやもやしていたので備忘録として載せておきます。

#環境
| ツール名など  | 詳細 |
|:-----------------|:--------------------:|
| OS |Windows10 Pro 64bit |
| エディタ |Sublime Text 3 |
| タスクランナー |Gulp4(^4.0.2) |
| Node.js |v14.4.0 |
| npm |v6.14.5 |

## package.json
``` json
{
// ︙略
"devDependencies": {
// ︙略
"br

元記事を表示

CentOS8にnode13をインストールする

# 概要

DiscordのbotをPythonからnodeで書き直したので、動かしていたサーバーにnodeを導入した。
デフォルトのnodeは10.19.0だったのでnodeのバイナリディストリビューションからインストーラーをダウンロードしてnode13をインストールした。

# 環境

- CentOS8
- node v13.14.0

# インストール

nodeバイナリディストリビューション
https://github.com/nodesource/distributions

参考 : https://github.com/nodesource/distributions#rpminstall

nodeのインストール

```
$ sudo yum install curl
$ curl -sL https://rpm.nodesource.com/setup_13.x | sudo bash -
$ sudo yum install nodejs

% node -v
v13.14.0

% npm install -g npm

% npm -v
6.14.4
`

元記事を表示

Google のプリエンプティブル VM(Preemptible VM) の状態を監視し、落ちていたら実行する

VM を startVM するだけのサンプルはたくさん見つかったけど、VM が実際に実行状態(RUNNING)なのかどうかをチェックしながら落ちていたら実行するサンプルが全然見つからなかったので、API を調査して実装した。

ランタイム:node.js 10

```node.js
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.startVM = (req, res) => {
const Compute = require('@google-cloud/compute');
const compute = new Compute();
const zone = compute.zone('your zone id'); // asia-northeast1-c とか
const vm =

元記事を表示

express-generator で jade を pug に差し替える方法がわからなかったハナシ

# express-generator インストール後の jade の脆弱性表示を何とかしたいという記事です

## 経緯
```bash:install
sudo npm install express-generator -g
express somefolder
cd somefolder
express somefolder
```

上 コマンドを叩いたあとで
![Clipboard01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647892/9f101073-977d-6727-4c46-9e31ce6bb03e.png)

っていうのが出てやだなと思っていた。
詳しくは省くけど、結局

```bash:
npm audit fix
```

は全然効かなくて、でも express-generator 使ったのはじめてだし、
きける先輩もいないし(っていうか、node 案件受けてないのかもしれない。ビビり過ぎ)

っていう状態。

## 原因の推測
調べてみると jade というものが

元記事を表示

Node.jsでrequestモジュールを使ってHTTPリクエストを実行する

# Node.jsでHTTPリクエストを使う

前回の[記事](https://qiita.com/takashi53/items/69d4395c70d76ddbb0ab)のとおり、Raspberry piでNode.js環境を整えました。

## requestモジュールを準備する

このページを参考にしました。

https://garafu.blogspot.com/2017/05/node-http-httpss-request.html#postreq

requestモジュールをインストールする。

```shell-session
pi@raspberrypi:~ $ npm install request
```

バージョンを確認します。

```shell-session
pi@raspberrypi:~ $ npm view request version
2.88.2
```

## requestモジュールを利用してPOSTメソッドを実行する

HTTPリクエストのPOSTメソッドを試してみます。

コードは、この[記事](https://garaf

元記事を表示

socket.io にセッション情報を渡す

# socket.io + express-session + passport
[hidden.in](https://github.com/ukiuni/hidden.in) というsocket.ioを使ったビデオ会議をするプログラムを使用していました。
その際に、ユーザー名を表示させたいとの要望があり実装した備忘録です。

各バージョン

* Node v12.13.1
* express-session 1.17.1
* passport 0.4.1
* passport-local 1.0.0

[hidden.in](https://github.com/ukiuni/hidden.in)のインストール、使用方法については記事がありますので、参考にしてください。(また、後日まとめたいと思います)
インストール済みを想定して話を進めます。

少し話はそれますが、フォームにユーザー名を入力させてemitするといけるんちゃんと考え、実装したのですが、ブラウザをリロードすると消えてしまう為、ダメでした。

では、実装手順です

1. express-sessionとpassport

元記事を表示

Homebrewインストールからnode、npm環境構築まで

#Homebrewインストール
インストールを始める。

基本的に公式サイトのフローに沿って進める。
[Homebrew公式サイト](https://brew.sh/index_ja)

```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```

実行すると確認が表示、Enterを押すとmacのパスワードが求められる。

```bash
Press RETURN to continue or any other key to abort
Password:
```

パスワードを入力しenterでインストールが始まる。

```bash
brew install wget
```

#環境構築
こちらを参考にphp7.2,apache,mysql5.7をインストール
https://qiita.com/kobiyama/items/4e48604f1120cfe47f36

mysqlの初期設定
https://qiit

元記事を表示

1日でWebRTCを使った素朴なビデオチャットを作ってみた時にひっかき集めたリンク集

WebRTCっていう技術を使うと、ビデオチャットや音声通話をWebの技術で作ることができます。
そんなWebRTC、「ちょっと試してみてよ」ってことになったので色々調べてみました。

「これもリンクに加えてよ!」って記事があればコメントください。
特にSaaSのサービスのリンクとか強化したいですね。

# 参考図書
- [WebRTC初心者でも簡単にできる!Node.jsで仲介(シグナリング)を作ってみよう | HTML5Experts.jp](https://html5experts.jp/mganeko/5349/)

この記事をそのまま作るとステップバイステップでネットワーク越しのWebRTCが作れますね!
SEO弱いんだよこの記事! なんでもっと上に上がってこないの!

しかし、この記事のWebRTC実装ではNAT越え(ルーターから先との通信)ができません。
NAT越えをするためにはSTUNサーバーやTURNサーバーを用意、維持する必要があります。

そのためにどんなサーバー(とコード)が必要かについても連載にコード付きで乗っています。
- [連載 | WebRTCを使ってみよ

元記事を表示

internal/modules/cjs/loader.js:1197(bcrypt Error)

# 開発環境から本番環境に移行した時
**npm start**をすると

```
internal/modules/cjs/loader.js:1197
return process.dlopen(module, path.toNamespacedPath(filename));
```
というエラーを吐きやがった.

これは**bcrypt**のnpmのversionとかの問題らしい.

解決策はこれ一択

```
npm rebuild bcrypt --build-from-source
```

# 参考
https://github.com/kelektiv/node.bcrypt.js/issues/635

元記事を表示

OTHERカテゴリの最新記事