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

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

【JavaScript】配列の一部だけを合計して新しい配列を作る

変換前の配列:“`array1 = [ 年, 月, 日, 人数1, 人数2, … , 人数47 ];“`
変換後の配列:“`array2 = [ 年, 月, 日, 人数1~人数47の合計 ]; “`

つまり、人数を合計したい。

“`javascript
let array2 = array1.slice(0, 3).concat(array1.slice(3).reduce((a, x) => { return a + x }));
“`

元記事を表示

Node.js(五):Express 実装

今回からはNodeでExpressを勉強しましょう、Expressは人気なのJSバックエンドモジュールと言うことです。先ずはインストールしてみよう。

実装の手順

Node.js立ち上げ

新たなフォルダを作って、エントリポイントとしてのapp.js追加して、vscode中のターミナルでポロジェクトにnode.jsをインストする。

“`terminal
xxx.xxx:my-first-express$npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install

元記事を表示

新人に負けない本棚管理ページ その1

# 目次

– 新人に負けない本棚管理ページ その1(ここ)
– 新人に負けない本棚管理ページ その1(これから書くよ)

# 4月に新入社員が入ってきました

とうとう私も先輩になってしまいました。
つい1年前までピチピチの新人だったのですが、時の流れというのは無情なもので、
何も悪いことをしてないのに若葉マークを剥がされるんですよね。
まぁ自動車も同じですが。

今年の新人研修では「オフィスにある書籍の管理ページをWebで作る」というお題が出たそうです。
なので私も新免マークを貼りなおして(?)、サクサクっと作ってみたいと思います。

# 開発環境

開発OS     :**Windows10**
稼働OS     :**Raspbian buster**
サーバー    :**Node.js**
フレームワーク :**Next.js(React)**
データベース  :**MariaDB**
エディタ    :**Visual Studio Code**
SSHクライアント:**Tera Term**
おやつ     :**ダイソーで買ったオーザックのり塩**

# 構

元記事を表示

AWS lambda(Node.js)でオレオレ証明書(self-signed)を一時的に信頼してSSL通信を行う方法

# はじめに
AWS lambdaのNode.js(https標準モジュール)で実装した、WEBサイトへhttpsのリクエストを投げる処理で、以下の2つのエラーが発生した際の対応についての記事です。
※急いでいる方、ソースコードだけ見たい方は[ここから見ればOK](#3サーバ証明書を署名している自局ca証明書を-一時的に信頼する)です

スクリーンショット 2020-04-16 22.24.09.png
スクリーンショット 2020-04-16 18.31.17.pngDockerコマンド ~学習メモ書き

# 前提
・導入メモになります。
・いろいろ試してみたが、やっぱりHyperVがいい

# 準備するもの
## アプリケーション側
> アプリケーション側はnodejs を使用します。
> 今回はnode の公式リポジトリを使用するための、Dockerfile

“`ruby:app-server/Dockerfile
FROM node:5
RUN npm -g install redis
ENV NODE_PATH C:\nodejs\node_modules

ENTRYPOINT [“node”, “app.js”]
“`

“`ruby:app-server/src/app.js
var redis = require(‘redis’);
var redis_client = redis.createClient(6379, “noderedis”);
var listen_port = 10080;

require(‘http’).createServer(function (request, response) {
redis_client.incr(

元記事を表示

GASの処理速度が遅いのでNode.jsに移行したらwebアプリが高速に

#はじめに
弓道で用いるwebアプリを開発しているんですが、データの読み書きがクソ遅いので、
GoogleAppsScript+スプレッドシートからNode.js+Firebaseに移行しました。
(GoogleAppsScript Web APIからCloud Functions APIに変えたいうこと)

Google Apps ScriptもNode.jsも基本は一緒ですが…

これでかなりwebアプリの待機時間が短くなったので、記事にしようと思います。

私の使用用途は、**スプレッドシートにユーザーやデータを保管し、それを読み書きする、つまりwebアプリのバックエンドとしての利用でGASの処理速度が遅い**と感じたものであるので読む際は注意してください。

#結果から
どれだけ早くなったか先に紹介しておきます。

的中を記録し、その月のデータをとってくる処理を例に紹介します。記録するデータは日付、中たった数、引いた本数、的中率の四つのデータです。月のデータは付けた日の月のデータ全てとってきます。

↓Google Apps Script + スプレッドシート
![gas.

元記事を表示

Macでnodebrewを使用したnodeのインストールと設定

### (前手順)pkgで入れたnodeの削除 (入れてた場合)
[こちらの記事](https://qiita.com/tabolog/items/da18143e70f40e356b5d)を参考に削除を実施。

“`shell
$ lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom \
| while read i; do
sudo rm /usr/local/${i}
done
“`
lsbomコマンドとは
>BOMファイルの内容を表示するコマンド。BOMファイルとは、
「Mac OS X Bill of Materials File」のことで、Apple社固有のファイル。
インストーラ(Installer.app)を使用するMacOS X標準のパッケージファイルに含まれている。

(参考:[lsbom- BOMファイルの内容を表示する](https://renoji.com/IT.php?Contents=Program_ShellScript_Bash/Cmd_lsbom.html))

“`she

元記事を表示

npm install でエラー。gyp: No Xcode or CLT version detected! 

#npmを使ってみる
今回初めて、Node.jsを使うためにセットアップ!
と思っていたのですが、いきなりエラー続きで意味も分からず苦戦していたので共有します。
皆様が同じ目に合いませんように。

“`
$ cd work/01-webpack
“`
まずは、フォルダを作成

“`
$ npm init -y
“`
そして、package.jsonファイルを作成を作成しました。
ここまでは、良かったのですが。。。
アプリケーションで使用するモジュールをインストールするために、webpackをインストールする時に

“`
$ npm install webpack webpack-cli –save-dev
“`
を行ったあと、エラーが。

“`
No receipt for ‘com.apple.pkg.CLTools_Executables’ found at ‘/’.

No receipt for ‘com.apple.pkg.DeveloperToolsCLILeo’ found at ‘/’.

No receipt for ‘com.apple.pkg.D

元記事を表示

破壊するかどうか

ほぼ備忘録。よく使うメソッドがArrayを破壊するかどうか
ググるときは日本語なら「配列 [メソッド名] 破壊的」など、英語なら”array [メソッド名] mutating”あたりがよい

# 破壊する

– `fill()`
– `pop()`
– `push()`
– `reverse()`
– `shift()`
– `sort()`
– `splice()`
– `unshift()`

# 破壊しない

– `concat()`
– `entries()`
– `every()`
– `filter()`
– `find()`
– `forEach()`
– `includes()`
– `indexOf()`
– `join()`
– `keys()`
– `map()`
– `reduce()`
– `some()`

# 参考情報

– 手元の環境はNode v12.16.1
– [Array – JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Globa

元記事を表示

「うちでヨガしよう」ヨガポーズがあっているか判定してくれるLINE bot~Node.jsに読み込む~

#概要
 コロナウイルの影響で外出自粛、在宅ワークをされている方が多いと思います。普段よりも運動量が減ってしまうので、何かできないかと考えてヨガを支援するLINE botを開発しています。

#やりたいこと
 機能としては、お題のポーズ写真がbotから送られてくるので、そのポーズをとった自分の写真をbotに送ると正しいポーズか判定してくれます。

 まずはLINE botアカウントだけ作りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183282/d3eca936-fa3e-5b97-8acb-ff95963d7390.png)

#実装
 学習モデルの作成は次の2つの記事で解説しています。
・ [Googleが提供しているサービス「Teachable Machine」でヨガポーズの学習モデルを作って遊んでみた](https://qiita.com/kmaepu/items/1350464b3940dfe6957e)
・[Teachable Machineで作成したモデルを使

元記事を表示

在宅ワーク中に会議中サインをobnizとLINEBotで作ってみた deploy編

### はじめに
この記事は前回[在宅ワーク中に会議中だよサインをobnizとLINEBotで作ってみた \- Qiita](https://qiita.com/3yaka4/items/5765dc5abf547783dc59)のなかで外部Deployができなかったので前回のコードを元にHerokuにDeployしました。
deployとは別のところで一部未完成です。

### 概要
「今オンラインミーティング中!!!!ノックしないでー、開けないでー」みたいなことで気まずい思いをしたことが増えてきたので、いわゆる トイレの空き情報「空」 みたいなサイネージが欲しくて作りました。

LINEBotに「開けないで」といれると obnizのディスプレイに 『 × 』 を描画し
「終わったよ」 といれるとけしてくれます。
 
### できたもの
(ngrokからHerokuにかわりましたが、よく考えると見た目は前回同じだった。。。)
![IMG_20200415_214353-COLLAGE (2).jpg](https://qiita-image-store.s3.ap-northeast

元記事を表示

Node jsとESP32を使ってLEDをリアルタイムに制御する

# はじめに
##開発環境
node.js 12以降
npm 6以降
Arduino core for the ESP32 1.04以降
## 作るもの
スマホ等のブラウザからnode.jsを通してESP32にLEDの制御信号を送り,ESP32でリアルタイムにLEDを制御します。
またスマホからnode.jsサーバーにはwebsocketを、node.jsからESP32にはMQTTを用います。

##対象読者
node.jsを触ったことのある人
ESP32にコードを書き込める人
フルカラーLEDを持っている人
#node.js側の実装
まず以下のコマンドを実行する

“`
$mkdir 好きな名前
$cd さっき決めた名前
$npm init (質問に答える エンター連打でもヨシ!)
“`
##パッケージのインストール
して以下のコマンドを実行ください

“`
$npm install express mosca mqtt socket.io -s
“`
## サーバーのコードを作成
index.jsを作成して以下のコードを書き込む

“`js:index.js
//各パ

元記事を表示

Node.jsのモジュール解決プロセス(和訳)

Node.jsの`require`がどのようにモジュールを探すか、そのプロセスを説明した下記公式ドキュメントの和訳です。

* [Modules | Node.js v13.13.0 Documentation](https://nodejs.org/api/modules.html#modules_all_together)

内容に誤りがあればお教えください。

## Node.jsのモジュール解決プロセス

require(X) をパス Y にあるモジュールで実行したとき、

1. もし、 X がコアモジュールなら、
– a. コアモジュールを返す
– b. __終了__
2. もし、 X が “/” で始まるなら、
– a. Y のパスをファイルシステムルートにセットしなおす
3. もし、 X が “./”、”/”、”../”のどれかで始まるなら、
– a. [LOAD_AS_FILE]\(Y + X)
– b. [LOAD_AS_DIRECTORY]\(Y + X)
– c. 例外”not found”を投げる
4. [LOAD_SELF_

元記事を表示

Node.js + ibm_db + Db2 で、プレースホルダを用いたSQLを実行する

プレースホルダを用いたSQLを使って、Db2にアクセスします。

SQLの条件指定を固定値(リテラル)で記述すると、指定される条件が変わるごとに新しいSQLとしてコンパイルされることになり、where条件だけが異なる同じSQLでパッケージ・キャッシュがあふれてしまいます。コンパイルにかかる時間ももったいない。
そうならないよう、可変となる値の部分だけ(場合によっては列名なども)、疑問符「?」で表したSQLで記述することができます。JDBCなどではパラメーターマーカーと呼ばれますが、Node.jsではプレースホルダと表現されるようです。

ここから先は、Db2を使う場合に、プレースホルダにどうやって値を渡すかのメモです。

## プレースホルダーを用いたSQL実行例
ibm_dbのqueryでは、値を配列として渡します。

“`javascript:test2.js
var ibm_db = require( ‘ibm_db’ );
var settings = require( ‘./settings’ );

var db_con_str =
“DRIVER={DB2}”
+

元記事を表示

Node.js + ibm_db で Db2 に接続してSELECT文を実行する

Node.jsでDb2にアクセスしてみました。
Db2導入済みのLinux環境に、Node.js/ibm_dbをインストールするところからメモを残します。

## Node.jsからDb2にアクセスするための前提
* Db2サーババージョンがV10.5.0.4以上であること
* クライアントバージョンは制限なし

## 環境
| 項目 | バージョン |
|:——|:——|
| Linux | CentOS Linux 7 (Core) |
| npm | 6.14.4 |
| ibm_db | 2.6.4 |
| Db2 | 11.5.0 |

## Node.js のセットアップ

### 1. Node.js インストール・イメージのダウンロード
Windowsにいったんダウンロードして、LinuxへWinSCPで転送。
https://nodejs.org/en/download/

### 2. ファイル展開
(権限の都合上、rootユーザで実行)
どのディレクトリに展開するかは環境ごとのルールに従うと良さそうですが
個人で使える環境なので、

元記事を表示

【Node.js】Webpack + Express環境下でのpug(ejsでの可?)導入

#pug導入前環境
Webpack + Express + React + Typescript

#pug導入の理由
導入前はExpressでSSRをし,クライアントからのリクエストに対しres.send(html)で単純にhtmlスクリプトを送信するだけだった.これではデータベースから取得した値をクライアント側に渡すことができない.そのため,テンプレートエンジンであるpug(or ejs)を導入したかった.

#やりたいこと
単純にルートにアクセスされた時にhtmlテンプレートに値を渡してレンダリングしたい.今回やりたいこととしては,レンダリングさえしてくれれば良いので,htmlとしてdistに出力されなくて良い(これをしようとするとWebpackでHtmlWebpackPluginが必要)

“`typescript:server.ts
import express from ‘express’;
const postController = require(‘./controllers/postController’);
const app = express();

app

元記事を表示

async awaitやPromiseはなぜ必要なのか?

# 非同期処理というものが必要な理由

Apache Http Serverは接続ごとにプロセスを生成するような仕組みです。このため、接続してくるクライアントがものすごく多くなると、メモリ領域を圧迫したり、レスポンス性能が壊滅的に低くなります。

この問題は、C10K問題(Client 10,000)と呼ばれ、これを解決するには、小さいリソースで多数のクライアントに対応できる仕組みが必要でした。

その具体的な解決策として出てきたのが、NginxやNode.jsです。今回はJavaScriptにおける`async await`に着目しますので、Node.jsについて焦点を当てます。

Node.jsでは、多数の処理要求をシングルスレッドで(少ないリソースで)高速に捌けるよう、ノンブロッキングIOを実現するアーキテクチャが採用されています。このあたりの詳しい説明は[「Node.jsでのイベントループの仕組みとタイマーについて」](https://blog.hiroppy.me/entry/nodejs-event-loop)で学びましょう。

要求を捌いてくれるスレッドは1つだけなわけで

元記事を表示

[LINE bot] NowとHerokuで常時起動化させる

# この記事の内容
* LINEボットの完成形、常時稼働化のやり方
* そもそもモヤついていたところを自分なりにまとめてみた

## 完成品
(いじってたらなぜかアイコンが黒く怪しくなってしまった・・・どうやって戻すんだろう)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121887/fc3431f0-d077-665a-a2b3-ed1cfd354801.png)

猿よりは賢いアプリを作った。(ただし、人間ほど完璧な回答はできない。)

* ?を付けて聞くと文章で返します
* ?がない時はwikipediaのリンクを返します
* お猿さんが知らない単語のときは、、無視します。。

## QRコード(お友達になってあげてね!)

※このアプリはこの後紹介するHerokuを使ってます。
![smartmonky.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121887/9bf51304-89

元記事を表示

Alfred4 + emoj|Alfred4で簡単に絵文字が入力できるらしい!→alfred-emojiに変更

Alfred4で簡単に絵文字が入力できるらしい!

しかも無駄にディープラーニングやってるとか(alfred-emoj)

 ↓

違うワークフロー(alfred-emoji)に変更
こっちのほうが新しい、インストール簡単、使い方もわかりやすい

## やったこと

– Alfred4インストール、PowerPack登録
– Node.jsのインストール
– npm -g install xxxに失敗するので、npmのデフォルトディレクトリを作成する
– alfred-emojのインストール
– Alfred Preferences > Workflows > Emoj > Copy to Clipboard > [x]Automatically paste to front most app

これはおもしろい!?

 ↓

– aflred-emojiのインストールに変更

## 参考リンク
Alfred3 おすすめワークフロー 7選 + 1
https://qiita.com/ryo2132/items/ef392999d32732fa0455

alfred-emoj

元記事を表示

vue-good-tableをTypeScriptで使おうとして TS7016: Could not find a declaration file for module ‘vue-good-table’.

# 使用バージョン
“`bash
$ npm list vue typescript vue-good-table
app@1.0.0
├── typescript@3.8.3
├── vue@2.6.11
└── vue-good-table@2.19.1
“`

# 問題
Vue.jsをTypeScriptで使っていて、以下ドキュメントどおりに進めたところ、コンパイルエラー発生。
> https://xaksis.github.io/vue-good-table/guide/#installation

#### エラー内容
“`bash

TS7016: Could not find a declaration file for module ‘vue-good-table’.
‘[app]/node_modules/vue-good-table/dist/vue-good-table.cjs.js’
implicitly has an ‘any’ type.
“`

# 解決
[app]/@types/以下にファイル作成。

“`typescript:vue-goo

元記事を表示

OTHERカテゴリの最新記事