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

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

#twitch の配信中のチャットログを #discord でロギングするBOT

githubと改行ルールが違って二重管理になるため、詳細は下記のgithubのREADME.mdを参照のこと。
https://github.com/github895439/twitch_chat_logging_bot

元記事を表示

Ubuntu + Node.js + Express の環境から、外部DB(MySQL)へ接続しデータを表示する

[前回、Expressの環境は作った](https://qiita.com/bonkoturyu/items/eaf6f1927f6a547fcf58)ので、その環境で作業する。

## MySQL をインストールする
Expressの環境にMySQLデータベースを置くんじゃなくて、参照用に必要。

“`bash
npm install mysql –save
“`

## test.js を作る

app.js 作ってたフォルダ内で、test.js を作る

“`javascript:test.js
const mysql = require(‘mysql’);

const con = mysql.createConnection({
host: ‘192.168.123.223’,
user: ‘root’,
password: ‘root’,
database: ‘test_database’
});

con.connect((err) => {
if (err) throw err;
console.log(‘Connected’);
c

元記事を表示

【環境構築】 Windows で Vagrant を使って Ubuntu に Node.js を導入して create-react-app できるようになるまで

自分用の備忘録なので、細かな説明は省略しています:sweat_smile:
(というか、完全には理解できていません。汗)
VM(Ubuntu) に Node.js の環境構築をしました。
Reactアプリを create-react-app で作れるようになるまでの記録です。

# 0. 前提
エディション:Windows 10 Home
システムの種類:64 ビット オペレーティング システム、x64 ベース プロセッサ
VirtualBox と Vagrant はインストール済み

# 1. Ubuntu の導入

“`terminal
$ mkdir Ubuntu
$ cd Ubuntu
$ vagrant init ubuntu/xenial64
$ vagrant up –provider virtualbox
“`

# 2. Vagrantfile に、以下を追記

“`ruby
config.vm.network “private_network”, ip: “192.168.33.10”
config.vm.network “forwarded_port”,

元記事を表示

FirebaseFunctionsでPush通知をHTTP関数呼び出しで送信する

# はじめに

今回はFirebaseFunctionsのhttp関数を使用して特定のデバイスにPush通知を送る実装を行なっていきます。実装前に下記の準備項目が必要になります。

### 事前準備

– Firebaseプロジェクト
– Firebase/Messaging導入済のiosプロジェクト
– APNsのFirebaseアップロード

# FirebaseCLIインストール

まずは、FirebaseCLIをインストールすることでFunctionsのDeployやプロジェクトの切り替えなどをCLIで操作できるようにします。今回はnpmでインストールを行います。

#### npmインストール

とりあえず最新のものをnodebrewで取得してきてPathを通すとこまで終わらせます。

“`
$ brew install nodebrew
$ nodebrew install-binary 13.7.0
$ nodebrew use v7.0.0
$ echo ‘export PATH=$HOME/.nodebrew/current/bin

元記事を表示

Node.jsの関数をBashでパイプぽく使えるコマンド

Node.jsの関数をBashで使おうと思うことがあるのでしょうか……?
私は今まではありませんでした。

@takuya_1stさんの[nodeの関数をbashシェルで使えるようにする。](https://qiita.com/takuya_1st/items/11b9b79d16ccbb3aed40)という記事が面白かったのでコマンドを作ってみました。

下記コマンドでインストールできます。

“`bash
$ npm i -g @amanoese/nodep
“`

## 使い方

例えば、下記のようにしてQueryStringを無駄にEncode,Decodeした後にJSONに変換することができます。

“`bash
$ echo -n ‘a=b’ | nodep enco

元記事を表示

CircleCI 2.1 設定サンプル(Node + MySQL)

# 環境

– Circle CI 2.1
– Node + MySQL(ですが、主にCircle CIの設定のため、←の環境には大きく依存していません)

# 設定例

“`yaml
version: 2.1

executors:
default:
docker:
– image: circleci/node:10.18.0-buster
extended:
docker:
– image: circleci/node:10.18.0-buster
– image: circleci/mysql:5.7
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: ‘yes’
MYSQL_DATABASE: your_database_name_comes_here

commands:
restore_node_dependencies:
steps:
– restore_cache:
name: R

元記事を表示

[Node]mysql2でRDS証明書更新対応した

# 対象

– mysql2を使用している
– DBへ接続するのオプションに、`ssl: “Amazon RDS”` を使ってる

# 更新方法

以下のコマンドでパッケージのアップデートを行う

“`
npm up mysql2
“`

# 何が変わる?

constansに指定されている証明書が変更される
以下はnode-mysql2のGithub

https://github.com/sidorares/node-mysql2/blob/master/lib/constants/ssl_profiles.js

# 確認

開発プロジェクト内の
`node_modules > mysql2 > lib > constans > ssl_profile.js`
を確認して

`Updated for 2015` となっている場合RDSの証明書更新に合わせて更新する様にしましょう。

“`javascript
‘use strict’;

// Certificate for Amazon RDS (Updated for 2015)
exports[‘Amazon RDS

元記事を表示

文字列で記載している年月日を日付として取得し前日、翌日を表示させる方法

#環境
 node.js 8.11.4
 MariaDB 10.3.10.0

##やりたいこと
 MariaDBに登録しているYYYYMMDD(VARCHAR)をdate型に変換して前日および翌日を取得し、HTMLで表示させる。

###やったこと
 //date.parseで変換 NaN
//var ddate = Date.parse(days);
//console.log(ddate.toString());

//newDateで変換 Invalid Date
var ddate = new Date(‘YYYYMMDD’);
console.log(ddate.toString());

初歩的な質問でしたら大変申し訳ございませんが何卒よろしくお願い申し上げます。

元記事を表示

【2020年2月】プロジェクトごとのnode.jsのバージョンを、direnv+nvmで【強制】【固定】

# プロジェクトごとにNode.jsのバージョンが異なって辛みマシマシ

そんな時は以下の処方箋がおススメ。
例えば node.js 10 を強制的に使用する場合は以下のようにプロジェクトのフォルダ直下に`.envrc`ファイルを作成し、nvm で `10` を指定しておきます。

“`bash:.envrc
[[ -s ~/.nvm/nvm.sh ]] && . ~/.nvm/nvm.sh
nvm use 10
“`

で、コマンドから direnv を有効にします。

“`bash
$ direnv allow .
“`

以上!

## direnv、nvm のリンク

– [nvm: Node Version Manager](https://github.com/nvm-sh/nvm)
– [direnv: unclutter your .profile](https://direnv.net/)
– [direnv | Github](https://github.com/direnv/direnv)

元記事を表示

SlackからGitHub Actionsにパラメータを渡して実行する

以下のサービスを組み合わせて、ポチポチCIツールを作成します。

* Slack
* GitHub Actions、REST API v3
* AWS Lambda ( Node.js 12.x (@slack/bolt 1.5.0) )

![test.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425840/2bdbe023-b214-19bf-c9fc-3bbaccc1999b.gif)

# 外観図

Slackに対してリクエストすると、SlackとLambdaがやりとりをしてGitHubに命令を出してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425840/5b2f37e8-1700-447b-ecf2-f33f5f9e47f1.png)

### 素材

猫の顔: https://kumamine.blogspot.com/2019/12/blog-post_27.html

元記事を表示

Fix: WSUS Connection Error Reset Server Node On Windows Server 2012

Error: Connection Error

An error occurred trying to connect the WSUS server. The error can happen for a number of reasons. Check connectivity with the server. Please contact your network administrator if the problem persists

Click Reset server node to try to connect to the server again.

Follow the below steps to Fix: WSUS Connection Error Reset Server Node On Windows Server 2012:
Open IIS
Click on Application Pools
Click on WsusPool
Click Advanced Settings
Scroll down and increase the Priv

元記事を表示

【動画付き】Next.js の Server Side Rendering (SSR) を理解する。create-react-app と比べてみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/e9611919-79b4-0604-8054-2212be9a630f.png)

[Next.jsのサイト](https://nextjs.org/)、かっこいいですよね ?
クールで、パフォーマンスにも優れていてエンジニアを魅了します。
日本では Nuxt.js が人気のようですが、個人的には Next.js を推しています。

さて、先日 [Next.js のチュートリアル](https://nextjs.org/learn/basics/getting-started) を通してサーバサイドレンダリングについて考えさせられる機会がありました。本記事では、そもそもサーバサイドレンダリングのメリットとは?というところから初めて、`create-react-app` によって実装された SPA と、`next`によって実装された SSR ではどのような違いがあるのかを検証してみました。

以下の動画は本記事のサマリーです。

元記事を表示

node.js の –max-old-space-size のデフォルト値は 1400MB

node.js の V8 のヒープのメモリ容量を設定するオプション –max-old-space-size のデフォルト値は 1.4GB みたい。

https://github.com/nodejs/node/blob/master/deps/v8/src/heap/heap.cc

“`cc
max_old_generation_size_ = 700ul * (kSystemPointerSize / 4) * MB;
“`

64bit OS だと `kSystemPointerSize` は 8 だろうから、1400MB になりそう。
実際の値をみると、`–max-old-space-size=1400` の結果とマッチした。

“`
node –max-old-space-size=1000 -e ‘console.log(Math.floor(v8.getHeapStatistics().heap_size_limit/1024/1024))’
# 1049

node –max-old-space-size=1400 -e ‘console.lo

元記事を表示

GraphQLでファイルアップロード

# GraphQLでファイルアップロード

GraphQL(Appolo Server)でファイルをアップロードする。
サーバ側はnode.jsを使う。
クライアントは[Altair GraphQL Client](https://altair.sirmuel.design/)と使う。

サンプルのソースコードは以下。

– [ymatzki/graphql-server-example: Learn GraphQL.](https://github.com/ymatzki/graphql-server-example)

## 事前準備

[Get started with Apollo Server – Apollo Server – Apollo GraphQL Docs](https://www.apollographql.com/docs/apollo-server/getting-started/)に従う。

“`
$ mkdir graphql-server-example ;\
cd graphql-server-example
$ npm init –yes

元記事を表示

Bot開発(Node.js)のDBアクセスライブラリは knex がオススメ!

Bot開発でNode.jsを使うことが多く、DBアクセスがある要件で `pg` などで素のクエリを書いていて辛いなーと感じている時に、 `knex` に出会ったので紹介します。

公式ドキュメント http://knexjs.org/
GitHub https://github.com/knex/knex

# 使い方
インストール

“`terminal
$ npm install –save knex pg
“`

knex初期設定

“`terminal
$ knex init
“`

すると、以下のファイルが自動生成されます。

“`javascript:knexfile.js
// Update with your config settings.

module.exports = {

development: {
client: ‘postgresql’,
connection: {
database: ‘linebot-dev’,
user: ‘zyyx-kubo’,
password: ”

元記事を表示

【WebAudioAPI】録音した音声をバイナリデータ化、PHPへ受け渡し

#概要
Node.js上で、IBMのWatsonによって人が話した音声データを自動で文字起こしするスクリプトを作成しました。
その中で、結構苦労した
PCのマイクに直接アクセス→録音した音声データをバイナリデータ化、PHPへ受け渡し
の部分をメモがてら貼り付け。
#環境
“`
$php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
“`
#録音部分
“`hogehoge.js
// 音声データのバッファをクリアする
audioData = [];

//様々なブラウザでマイクへのアクセス権を取得する
navigator.mediaDevices = navigator.mediaDevices || navigator.webkitGetUserMedia;

//audioのみtrue

元記事を表示

gRPC の使い方 (Node.js)

参考ページ
[Node Quick Start](https://grpc.io/docs/quickstart/node/)

必要なライブラリーのインストール

“`bash
sudo npm install grpc
sudo npm install @grpc/proto-loader
“`

設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。

設定ファイル
helloworld.proto こちらと同じ
[gRPC の使い方 (python)](https://qiita.com/ekzemplaro/items/207e8abdd000ff75c0a2)

サーバープログラム

“`js:greeter_server.js
var PROTO_PATH = ‘helloworld.proto’;

var grpc = require(‘grpc’);
var protoLoader = require(‘@grpc/proto-loader’);
var packageDefinition = protoLoader.loadSync(

元記事を表示

VSCodeを使って素朴に素朴にNode + TypeScript

学習用に。

## 必要なもの

### 事前に準備するもの

* Node.js
* VSCode

### 途中でインストールするもの

* `typescript`

## 手順

### 1. `npm init`

いろいろ聞かれますが全部Enterで返事しておきます。

### 2. `npm install typescript –save-dev` でTypeScriptのインストール

### 3. `npx typescript –init` で`tsconfig.json`を生成

### 4. 生成された`tsconfig.json`をいじる

* `”sourceMap: true”` の行は使いたいのでコメントアウト解除
* `”outDir”: “./”` の行はコメントアウト解除して`”outDir”: “./dist”` とでもしておきましょう。
* `”rootDir”: “./src”`などとすることで、ソースファイルのルートディレクトリを設定できます。

あとはそのままでいいんじゃないかなと思います。必要になったら変更で。

### 5.

元記事を表示

node.jsのライブラリを作成したが、import構文でエラーが出る場合の対処法

ライブラリのpackage.jsonに

“type”:

が存在しない場合、そのライブラリは、commonjsとして扱われ、importを使用するとエラーを吐く。

そのため、node.jsでライブラリを作成するときは、

“type”: “module”

をライブラリのpackage.jsonに記述する必要がある。
この記述によりライブラリ内のコードは、es moduleとして扱われ importを使用可能になる。

参考
[Node.js v13.7.0 Documentation](https://nodejs.org/api/esm.html)

尚、Typeフィールドの値に関わらず.mjsファイルは、ES modulesとして扱われ、.cjsファイルはcommonjsとして扱われる。

元記事を表示

画像に対して顔検出を行いマスクする(opencv/opencv4nodejs/Node.js)

# 動機
インカメラで人物や顔写真入り証明書を撮影したエビデンス画像に対して、顔部分のマスクを行うツールを作成したかった。

# 言語選定
画像処理ライブラリ [opencv](https://opencv.org/) の対応言語は `C/C++` `Java` `Python` です。
今回の動機であるツール的に用いるならば、Pythonが適していると思います。サンプルコードもたくさんあります。しかし、自分がPythonに対する知識が少なく、時間がかかりそうで逡巡していました。
しかし、opencv を Node.js 環境から使えるライブラリ[opencv4nodejs](https://www.npmjs.com/package/opencv4nodejs)を見つけたので、試してみることにしました。

## 落とし穴
opencv4nodejsはopencvの型やメソッドと全く同じ名称ではなく、JavaScriptの言語仕様に合わせて引数なども異なります。→ [Contribution Guide](https://github.com/justadudewhohacks/ope

元記事を表示

OTHERカテゴリの最新記事