Node.js関連のことを調べてみた2021年05月23日

Node.js関連のことを調べてみた2021年05月23日

$ nodebrew install-binary stableができないとき

メモです。

“`
$ nodebrew install-binary stable
“`
node.jsを入れたくてnodebrewをインストールしようとしていますが、エラーが出てしまった。
エラーは以下。

“`
$ nodebrew install-binary stable
Fetching: https://nodejs.org/dist/v16.2.0/node-v16.2.0-darwin-x64.tar.gz
Warning: Failed to create the file
Warning: /Users/masahito/.nodebrew/src/v16.2.0/node-v16.2.0-darwin-x64.tar.gz:
Warning: No such file or directory
curl: (23) Failure writing output to destination

download failed: https://nodejs.org/dist/v16.2.0/node-v16.2.0-darwin-x64.tar.gz
`

元記事を表示

[PAYJP-NODEJS] 支払い機能の実装

## [PAY.JP](https://pay.jp/)

![Ảnh chụp Màn hình 2021-05-22 lúc 22.39.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114590/f6066911-e153-6f77-9ddd-21bd662974da.png)

– 導入簡単
– 決済手数料 2.59%~
– 定期課金、Apple Pay対応
– シンプルなAPI

### Pay.jpの管理画面
![Ảnh chụp Màn hình 2021-05-22 lúc 22.45.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114590/a32a9642-191c-7147-6ac4-4444a9272e6f.png)

## 実装
### 1. API Key取得
テストと本番のAPIキーがあります。
![Ảnh chụp Màn hình 2021-05

元記事を表示

1時間で自作ページをGitHubPagesでWeb公開

#はじめに
自分のポートフォリオページを作ってWeb公開したいという背景から
まずは、vueのサンプルページをGitHub Pagesで公開してみた。

実際の作業時間は1時間程度。
まっさらな状態からのハンズオン。

#環境
Macbook Air(M1チップ)
node v14.16.0

nodeが入ってない人は[こちら](https://nodejs.org/ja/download/)からインストールできるよ。

#採用したフレームワーク

* フロントサイド
Vue.jsというJavaScriptのフレームワークを使ってプロジェクトを作成する。
フレームワークの中でも比較的学習コストのが低い割に便利なVueを採用した。
今回はプロジェクトを作った後の初期画面であるサンプルページを作るとこをまでを行う。

* Webサイトの公開
GitHub Pages は、静的なウェブページをホスティングするサービス。
GitHub のリポジトリから HTML、CSS、および JavaScript ファイル を直接取得し、
任意でビルドプロセスを通じてファイルを実行し、Webサイトを公開でき

元記事を表示

Gulpを起動すると “no template named ‘remove_cv_t’ …” エラーが出たときの対処

Macを新調したのを機に、Node関係をいちから設定しなおしました。
旧環境から持ち込んだpackage.jsonをインストールしようとしたところ、以下のようなエラーが表示されました。

“`
error: no template named ‘remove_cv_t’ in namespace ‘std’; did you mean ‘remove_cv’?
“`

## 原因

node-sassが最新のNodeに対応していないことが原因のようです。

https://github.com/sass/node-sass/issues/3077

ここのissueによるともう修正されているようなのですが…nodebrew経由だと最新バージョンがインストールされないのでしょうか?

## 対応

node-sassを再インストールする手も考えられましたが、私はNodeのバージョンを旧環境と同じ15に下げる対応をしました。その方が旧環境から他のプロジェクトを移行したときに、後々問題が少なそうだからです。

nodebrewを使用している場合、useコマンドで使用バージョンを変更するこ

元記事を表示

M1 macbookにnode.jsを導入

#参考サイト
https://codeburst.io/my-ultimate-m1-mac-developer-setup-cfdb2daeed2d

元記事を表示

日本のワクチン接種回数の表を作成 (Our World)

[Our World in Data](https://ourworldindata.org/covid-vaccinations?country=Japan) のデータを使って次の表を作成します。
![ourworld.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/6dada327-efc6-9d6d-5764-0c8d31ee029e.png)

データの取得

“`bash
wget https://github.com/owid/covid-19-data/raw/master/public/data/vaccinations/vaccinations.json
“`

日本のデータのみに変換

“`bash
./pick_japan.js vaccinations.json vaccinations_japan.json
“`

“`js:pick_japan.js
#! /usr/bin/node
// ——————————-

元記事を表示

Node.js パッケージ管理(更新中) メモ

## npm
正式名称 : Node Packcage Maneger
Node.jsのパッケージ管理ツール外部で、ライブラリに対する依存バージョンの管理、更新を容易にすることが出来る。
npm ls でディレクトリ内のパッケージ依存構造( 依存ツリーを確認できる。)
## package.json
JSONファイルによって管理され、メタデータ(知らん)の管理にも使われる。
npm initで生成でき、様々な値を設定できる。
> メタデータとは : データが持つデータ、データ自身に付随するデータのこと(意味不)
> Excelで言えば作成者、作成日などを指す。

###値
#### name
パッケージ名の設定です。
レジストリに公開する際必要で、付けれる名前には制約がある(オライリーハンズオンNode p.365)
スコープ付きパッケージ[@スコープ名/]で設定できる。
> スコープ : 変数がどの場所から参照できるか定義する概念、同一スコープ上にある変数にアクセスできるらしい….。

#### version
パッケージのバージョンです。
バージョンはセマンティックバージョ

元記事を表示

Node.js EventEmitter メモ

## observerパターン
監視対象(subject)と監視役(observer)、監視対象に対して何かイベントがあれば監視役に逐一報告する報連相がしっかりできる上司と後輩の関係。

## イベントの登録、呼び出し
リスナは登録されていくとメモリを圧迫するので定期的に破棄する必要がある。
### EventEmitterのメソッド一覧
– on(event,listener) : 第一引数イベント名、第二引数にリスナ。
– once(event,listener) : 第一引数イベント名、第二引数にリスナ。
– off(event,listener) : 第一引数のイベント名に対応するリスナを削除。
– emit(event) : 指定したイベントの発行。

元記事を表示

Node.js 非同期処理近辺 メモ

## 非同期処理
外部に処理を投げている間結果が帰ってくるまで暇をしている同期処理と違って、暇を効率的に使うことができる秀才な処理。
## コールバック
指定した処理が完了した後、実行してほしい関数を引数に入れることで実現する処理。
## Promise
非同期処理の状態を4段階(pending,fulfilled,rejected,settled)で表してくれる律儀なオブジェクト。
resolveやrejectを使って、成功、失敗時の振る舞いを教えることができる(設定できる)。
### 4つの状態
– pending : 実行中…。
– fulfilled : 成功。
– rejected : 失敗。
– settled : 処理完了。

### resolveとreject
– resolve : 引数は空でも可、空の時はpromiseが入る、処理結果を引数にこいつを実行するとfulfilledになるらしい。
– reject : 基本的にはerrインスタンスが入るらしい、エラーを引数にこいつを実行するとrejectedになるらしい。

promiseはオブジェクトであるため、

元記事を表示

ExpressとmongoDBを使ったREST APIをTypeScriptで組んでみる【2.mongoDB接続編】

## はじめに

先日React学習のためにローカル環境でJSON Serverと連携したテックブログを組んだのですが、今後の課題にしていたmongoDBとの連携を行っていく記録の第2弾「mongoDBとの接続編」になります。
※学習用のREST APIのためセキュリティやエラー処理については考慮されていない点ご了承ください。

https://qiita.com/himorishige/items/7ebd87ddaf7c86901b9a

今回はmongoDB Atlasとの接続とダミーデータの投入を行います。

1. [環境構築編](https://qiita.com/himorishige/items/34c9a249b92c36072493)
2. **mongoDBとの接続(この記事)**
3. Controllerの作成
4. 完成!?

## mongoDBとの接続部分の構築

エントリーポイントとなる`index.ts`ファイルとmongoDBとの接続を記載を`config/db.ts`ファイルとして作成します。

“`typescript:src/index.t

元記事を表示

【Node.js初学者のための基本いろいろ】

ここではNode.jsをこれから勉強していこうかな〜、という人向けに、Node.jsが書けるようになるための基礎てきなものを書いていこうかなと思います。

あくまで、CommonJSモジュールの書き方で説明していきます。

####1,様々な関数の書き方
個人的にはfunctionを矢印で代替できるようなイメージを持っている

“`jsx
function sampleFunc(num){
console.log(num);
}

sampleFunc = function(num){
console.log(num);
}

sampleFunc = (num) => {
console.log(num);
}
“`

###2,関数をプロパティ化する方法。(オブジェクト指向でいうクラス内のプロパティ的な)
・CommonJSモジュールを使う場合は、ファイル単体をモジュールとみなす。
・`module.exports`に紐付けて外部で利用できるようにする。
・`exports` は`module.exports`の省略形。

“`index.js
module.expor

元記事を表示

JavaScriptの手引き

# JavaScriptの手引き
JavaScriptの変な仕様まとめです
~~いつ使うんだこんな知識~~

##コードの読み方

###別ファイル

“`javascript
/*—–*/
“`

###戻り値もしくは出力結果

“`javascript
//戻り値もしくは出力結果
“`

##コード集

###文字は配列

“`javascript
“Hello”[0]//H
“`

###varとletの違い

“`javascript
console.log(a);//undefined
var a;
/*——-*/
console.log(a);//ReferenceError
let a;
/*——-*/
“use strict”;
console.log(a);//undefined
var a;
“`

###false判定
下記の例は全て1が帰ってくる

“`javascript
+!false
+!0
+!”
!!undefined
!!null
“`

###Object判定

“`javascript
+[] //0

元記事を表示

Modbus RTU RS485 Relay Switch Boardを制御するためのバイナリ送信用のHex配列を作る

32連のリレーを制御しようと思うとGPIOだけでやるとケーブルの化け物みたいな形にならざるを得ません。
そのため市販されてるRS485などで制御する数千円の基板を利用したいですが販売サイトには詳しく記載もなく制御する情報がなかなか見つかりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58795/8eb64d49-07c6-e1dc-13f7-e2fa9c08b0aa.png)
https://www.aliexpress.com/item/4001222678277.html

今回は以下の制御ロジックのものをNodeJSで制御するためのHex配列を生成するものを作りました。これをシリアル通信なりで送信するとOKです。
CRC-16でのchecksumの生成が地味に面倒で参考サイトにあったC#であったコードをNodeJSで動くように雑に書き換えました。

制御参考:https://ozeki.hu/p_5848-ozeki-relay-board.html
コード参考:http

元記事を表示

NodejsでDynamoDB使ってみた

## 背景
はじめて業務でDynamoDBを使用したため、基本的なものだがメモを残して、自身のナレッジとして蓄えようかと

## 環境
– node.js
– DynamoDB
– Lambda

## 経験した関数
### 登録
– put

#### パラメータ
– TableName: テーブル名
– Item: 登録対象

“`
ex))
TableName: ‘test-table’,
Item: {
‘id’: 1,
‘name’: ‘test’,
}
“`
### 取得
– get

#### パラメータ
– TableName: テーブル名
– Key: AttributeValueのカラム名(一般的なTableのprimary key)

“`
ex))
TableName: ‘test-table’,
Key: {
‘id’: 1
‘sort’: 1
}
“`
### 検索
– scan

#### パラメータ
– TableName: テーブル名
– FilterExpression: SQLの条件式
– Express

元記事を表示

テレワーク用の出退勤時のタスク一元化アプリ(勤怠管理とか)作ってみた!!

# 背景
筆者が務める会社でも、昨年からテレワーク勤務が標準化された。
しかし、社内のシステムやら制度やらはなかなか追いついていかず、
色々面倒くさいことがあった。。

– 出勤したら、打刻とは別に、メールで出勤報告&タスク報告が必要。二度手間。
– 今どこにいるかが分からないから、予定表にテレワークか否かを記入する必要あり。
– 直接コミュニケーションとれず、メールが飛び交う。チャットでよくない?と思うことも。。

というわけで、、、
**打刻**ができ、**チームメンバーの勤務状態がリアルタイムに見える化**され、打刻ついでに**ToDo**も整理でき、
朝一番に伝えたいちょっとしたお知らせを**チャットで共有**できるような、
「テレワーク向けの出退勤時にやること一元化アプリ」を作りたかった。

# 作ったアプリ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1526678/44c4c062-e17c-401a-80ef-fc09b6b5cac2.png)

こんな感じのWebアプ

元記事を表示

Socket.IO の使いかた

こちらの記事にあるプログラムを改造してみました。
[Socket.IOを使用して、サーバーからブラウザへデータを送信する](https://armadillo.atmark-techno.com/blog/53/4224)

環境設定

“`bash
mkdir socketio-simple
cd socketio-simple
npm init -y
npm i -S express node-cron socket.io
“`

ソースファイルの作成

“`js:index.js
// —————————————————————
// index.js
//
// May/20/2021
// —————————————————————
const app = require(‘express’)()
const http = require(‘http’).Server(app)
const io

元記事を表示

node.jsでファイルをtouchする

linuxのtouchコマンドと同じ機能を実行したい場合、node.jsからどうすれば良いかを調べた結果をメモする。
これで行ける。

“`javascript
import * as fs from ‘fs’;

export touchFileSync = (fileName) => {
try {
const time = new Date();
fs.utimesSync(fileName, time, time);
} catch {
fs.closeSync(fs.openSync(fileName, ‘w’));
}
};
“`

元記事を表示

RaspberryPi で、GPS Logger & Tracker の製作

## 概要
車で旅に出る時に軌跡を残しておきたいなと思って、スマホのアプリで軌跡を残していましたが、ちょっとGPSのデータを取得してみたい。実際のGPSのデータってどうなってんの?が今回の作業のきっかけ。
Google MyMapで、GPSロガーのデータをインポートすればKMLに変換してくれて表示してくれるけど、ちょっと自分でやってみよう!

## メインホスト
今、手元にRaspberryPi4Bが3台あります。
メインホストはこれを選択。

## GPSの購入
RasberryPi HAT形式のGPSを考えていましたが、遊ぶにはちょっとお高めなので、USB接続のGPSレシーバーを購入。
[Amazon GPSレシーバー GPS受信機 DOCTORADIO GR-7BN アンテナ内蔵 チップ一体型 USB出力 測位 時刻較正用](https://www.amazon.co.jp/PERSPECTIVE-GPSレシーバー-GPS受信機-GR-7BN-アンテナ内蔵/dp/B082Y1GLQK/ref=sr_1_2_sspa?__mk_ja_JP=カタカナ&dchild=1&keyword

元記事を表示

Node.jsのインストールと「Hello world」を表示するまで

##Node.jsとは
サーバー側で動くJavaScript。
もともとJavaScriptってやつはクライアント側、つまり簡単に言えばPC側で動くプログラム言語だけど、それをサーバ側で動くようしたものがNode.jsというもの。

特徴としては大量の処理に対応するために、ノンブロッキングI/Oという機能があり、データベースへのアクセスとWebページの表示を別々におこなってくれて、ストレスなくページの表示ができる。そのためスマゲーム界隈で使われているとか。
あとはチャットなどのリアルタイムに動的な挙動をさせるのに用いられている。
###前提条件
環境はAmazon Linux 2
Node.jsを導入するにあたり、Gitも必要になるのでこちらも導入しておく必要がある。
無い場合はインストール。

“`
# yum install git
“`
###導入手順
インストールしたgitでリポジトリからnvmをインストールする

“`
# git clone https://github.com/creationix/nvm.git ~/.nvm
# source ~/.nvm

元記事を表示

Node.jsのメモリリーク調査の備忘録

# はじめに

Node.jsのアプリケーションサーバーがメモリリークしているようで、数日おきにクラッシュしていたので原因を調べました。
ひと昔前はクラッシュしたらサービス停止して大変だったりしますが、最近はセルフヒーリングで立ち上がってくるのでクリティカルにならないのは進歩を感じます(老人会)

3点ヒープダンプ法も試しましたが、原因特定に至らなかったので地道に仮説検証を繰り返しました。

# 使用メモリ量を出力する

以下のコードでファイルに出力して、Excelに貼り付けてグラフにすれば十分です。
起動時には“`–expose-gc“`オプションをつけます。

“`js
import * as fs from ‘fs’;
function logHeapUsage() {
try {
global.gc();
} catch (e) {
console.log(“You must run program with ‘–expose-gc'”);
process.exit();
}

const heapUsed = process

元記事を表示

OTHERカテゴリの最新記事