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

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

mongoDB Atlas+mongooseでどうやって始めるんや?

## 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)を紹介する。

# 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”: [
“es2019”,
“es2020.bigint”,
“es2020.string”,
“es2020.symbol.wellknown”
]
}
}
“`

Node.js 12.9未満はES2019の構

元記事を表示

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

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事