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

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

Node.js: 文字列をUint8Arrayに変換する方法

Node.jsで文字列をUnit8Arrayに変換する方法です。

“`javascript
const str = ‘Hello こんにちは’
const encoder = new TextEncoder()
const encoded = encoder.encode(str)
console.log(encoded)
“`

実行結果:

“`
Uint8Array(21) [
72, 101, 108, 108, 111, 32,
227, 129, 147, 227, 130, 147,
227, 129, 171, 227, 129, 161,
227, 129, 175
]
“`

## 簡単な説明

* `TextEncoder`の`encode`メソッドに文字列を渡すと、`Unit8Array`が返ってくる。
* UTF-8のみサポートしている。
* `TextEncoder`のインターフェイスは[WHATWG Encoding Standard TextEncoder API](https://triple-underscore.git

元記事を表示

Node.jsのworker_threadsに使えるバイナリフォーマットを考えた件

本記事は[Node.jsのworker_threadsに何を渡すべきか](https://qiita.com/ayatty/items/1f5dde995251ac5800ad)の続きです。
よろしければそちらも是非お読みになってください。

# 1. 前回のquickおさらい
– 大量のメモリを使う処理を並列で動かしたい。並列であることと省メモリであることが条件。
– Node.jsには、メモリを共有できるマルチスレッドの仕組みとしてworker_threadsが備わっている。
– ただしメモリ共有にはSharedArrayBufferを使う必要がある。
– SharedArrayBufferはバイナリ配列なので、JSON-likeな複雑な構造は直接は表現できない。
– JSON.stringify等のシリアライズ結果をBufferに載せることはできるがデシリアライズしないと使えないので省メモリにならない。
– デシリアライズせずにJSON-likeな構造を扱えるシリアライザーが欲しい!作ろう!

そして作ったものをにroJson(read only JSON)という仮称を付けました

元記事を表示

node.js @line/bot-sdk を使ってAWS lambdaからLINE Messaging APIのpushMessageを使用する時に1時間位右往左往した時の話

https://developers.line.biz/en/reference/messaging-api/#send-push-message
にて

“`
const line = require(‘@line/bot-sdk’);

const client = new line.Client({
channelAccessToken: ‘
});

const message = {
type: ‘text’,
text: ‘Hello World!’
};

client.pushMessage(‘‘, message)
.then(() => {

})
.catch((err) => {
// error handling
});
“`

でいけよ、
みたいに書かれていたので、
自分のパソコンからこれを適宜当てはめたら、
普通にpush出来たので、意気揚々とAWS lambdaで使用したら、
なんかエラー出ていた。

connectionが確立されてないよ、

元記事を表示

Windows10ProでAWS SAMを使ってローカルでHelloWorld(サンプルはnode.js)

# 初めに
Windows10ProでAWS SAMを使ってHelloWorldしようと思ったら意外と大変だったので自分用メモ。
何も入っていない前提ですが、Dockerやnode等が入っている場合は飛ばしてください(特にこだわりがなければこの機会にすべて最新化をおススメします)

#### この記事ですること

– node.jsを使ってローカルでHelloWorldする

#### この記事でしないこと

– AWS上にソースをアップロードする
– node.js以外を使ってHelloWorldする

# 執筆時の各バージョン
#### GitBash
v2.25.1

#### Docker
v2.2.0.4

#### node.js
v12.16.1

#### aws sam
v0.45.0

# 必要なものインストール/設定
### Git for Windowsインストール
[Git for Windows公式](https://gitforwindows.org/)からダウンロードし、インストールする。
(特にチェック付けなくて大丈夫です)

### Dockerの

元記事を表示

アロー演算子で使う()と{}の違い

本の写経していたら `=> ()`と`=> {}` の違いについて知らなかったので調べてわかったことを書きます(^^)

## `=> ()`
returnの明示が不要で、最後に評価された値をreuturnしてくれますが、(if)文を書けない。

“`js
> [1, 3].map((value, i) => ( value ))
[ 1, 3 ]
“`

“`js
[1, 3].map((value, i) => ( if(true){ value } ))
^^

SyntaxError: Unexpected token ifz
“`

## `=> {}`
returnの明示が必要で、(if)文を書ける。

“`js
> [1, 3].map((value, i) => { value })
[ undefined, undefined ]
“`

“`js
> [1, 3].map((value, i) => { if(true){ return value } })
[ 1, 3 ]
“`

## ま

元記事を表示

LINE Messaging APIの新機能でLINE公式アカウントのアイコンを変更する

# 概要
先日(2020/03/17)、LINE公式アカウントのアイコンをメッセージ送信ごとに変更できる機能が一般開放されました。
これを使うことにより、ボットの機能や担当者ごとにアイコンを切り替えたりできるようになります。

詳細はこちらの公式サイト( https://developers.line.biz/ja/docs/messaging-api/icon-nickname-switch/#%E6%A6%82%E8%A6%81 ) をご覧ください。

# イメージ
こんな感じで、1つの公式アカウントで複数のアイコンを使い分けれます。

LINE_capture_606210822.144834.JPG

# 使い方

※ そもそもメッセージの送信の仕方を知らないという方はこちら( https://qiita.

元記事を表示

レジの店員を呼ぶアプリをつくた android cordova ハイブリッドアプリ

## 成果物
https://play.google.com/store/apps/details?id=com.itsumen.regi&hl=ja

## リポジトリ
https://github.com/yuzuru2/regi_apuri_sozai

## 環境

– node.js 12.14.0
– cordova 9.0.0
– java 1.8.0

※javaとandroidのsdkは各自インスコしてパスを通しておいてください。

## コマンド

“`bash
$ npm i -g cordova
$ cordova create sample com.example.sample sample
$ cd sample
$ cordova platform add android
$ cordova plugin add cordova-plugin-volume-control
$ rm -rf www/*
$ cd www
$ git clone https://github.com/yuzuru2/regi_apuri_sozai.git .
$ cd .

元記事を表示

Vue.js セットアップメモ(Mac)

## この記事の目的
Vue.jsの学習を始める際に実施したセットアップ手順のメモです。

## 開発環境、必要なもの
– Mac OS Catalina 10.15.2 ←自分の場合(参考程度)

## セットアップ
### ndenvのインストール

– 複数バージョンのNodeを切り替えて使用することになると思いますので、`ndenv` をインストールします。

“`
$ brew install ndenv
“`
– PATHを追加します

“`
echo ‘export PATH=”$HOME/.ndenv/bin:$PATH”‘
echo ‘eval “$(ndenv init -)”‘
“`

– Nodeをインストールするために `node-build`をインストールします。

“`
$ git clone https://github.com/riywo/node-build.git $(ndenv root)/plugins/node-build
“`

### Node.jsのインストール
– インストールできるNode.jsバージョンを確認

元記事を表示

nodebrewでNode.jsをインストール(デザイナー向け)

## nodebrewとは
Node.js のバージョンを管理するツールです。
## なぜNode.js のバージョンを管理するのか
それは Node.js が現在も開発中のプログラミング言語だからです。
日々様々な改善が行われ、新バージョンで機能が変更される、ということもあります。
今まで利用していた機能が、次のバージョンで使えなくなるということもあるのです。
そのようなことを防止するために、どのバージョンの Node.js を利用しているのかを明確にし、そして必要に応じてバージョンを切り替えたりできると便利なのです。
## nodebrewのインストール
#### …の前に豆知識(?)
ターミナルでコマンドを実行したけどきちんと処理されているの?
やたら時間が掛かっているけどいつ処理が終わるの?
…という方。
処理の後に、以下が出たら処理が終わった合図(次のコマンドを打っても良い)です。

“`
自分のPCの名前 ~ %
“`
それではnodebrewのインストールを始めましょう。
#### 1.ターミナルで以下を実行

“`
curl -L git.io/nodebre

元記事を表示

Node.jsの設計をつらつらと概観する

株式会社Global Mobility ServiceでソフトウェアエンジニアのインターンをさせてもらっているShirubaです。グローバルな環境で利用されている社会的サービスの開発の一端を担いたい志ある方は、ぜひ緩くお話ししましょう〜。バックエンドはNode.jsを使っています。?‍♂️→ [採用ページ](https://www.wantedly.com/companies/company_8204706/projects)

—–

Node.jsについて色々資料を読んでメモをとったりしていたので、一度まとめておきたくて、この記事を書くことにしました。V8やLibuvなど低レイヤ技術の設計をベースにNode.jsを概観していきます。

# Node.jsとは

![1180px-Node.js_logo.svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/bee02d2b-a5a3-2037-db9c-502196d45e2e.png)

Node.js公式によるNode.j

元記事を表示

Firebaseのアプリケーションで複数のプロジェクトを使用する場合、Firebase app named “xxx” already exists.エラーが出る

# はじめに
一つのアプリケーションで複数のFirebaseプロジェクトを利用する際に、最初にServiceAccountを使って初期化するのですが、次に別のファイルとかで使用する際に、同じように初期化しようとすると、すでに同一名で初期化されているとエラーが出ます。
再利用の仕方をドキュメントで見つけられなかったので、備忘録で…

# 参考
– https://firebase.google.com/docs/projects/multiprojects?hl=ja

# 環境
– Node v13.9.0
– npm 6.14.1

# 現象
‘Firebase app named “dest” already exists. This means you called initializeApp() more than once with the same app name as the second argument. Make sure you provide a unique name every time you call initializeApp().’
とエラーが

元記事を表示

Node.jsのworker_threadsに何を渡すべきか

久々にScalaの世界からJSの世界に帰ってきました。

#1. 本日の課題
本来Node.jsは非同期処理をストイックに突き詰めることでマルチスレッドやマルチプロセスのようなオーバーヘッドを伴う方法よりも高効率に並列処理を実現しているわけです。
ただし、それが有効なのは頻繁に「待ち」≒「I/O処理」が発生する場合に限られます。
ひたすらI/OなしでCPUをぶん回す処理、を複数同時にやれって言われたらシングルスレッドなNodeはマルチスレッドに勝てません。

ですがですが、Nodeにだってマルチスレッド/マルチプロセスの仕組みはあります。

さて今回は、

– 数百MB~数GB程度のデータ構造(変数として持っている)に対して
– 秒オーダーの時間をかけておこなう検索処理を
– 複数回おこなう
– 元のデータ構造は更新しない(Read Only)

という要件で、この「複数回おこなう」というところをマルチスレッドかマルチプロセスで並列化して時間を短縮したい、というお題になります。[^heavy]

# 2.候補
## child_process/cluster
どちらもマルチプロセスなア

元記事を表示

Node.js/Expressのボディパーサーの仕様確認(エコーサーバー(echo-server))

# 背景/目的

クライアント側からのリクエストを各種パーサーがどのようなオブジェクトや配列にしてくれるのを確認することを目的にリクエストの情報をまとめてレスポンスにそのまま返却するようなエコーサーバーを作ってみました。
その他、HTTPクライアントのリクエストが想定通りになっているかを確認するのにも使えると思うので記録として残しておきます。

# 仕様

リクエストの以下の情報をレスポンスJSONにまとめて返す。

– ヘッダー情報
– パス
– HTTPメソッド(Verb)
– クエリパラメータ
– リクエストボディ(ある場合のみ)

# 準備

npmとかnode.jsはインストールされている前提。

“`console
mkdir echo-server
cd echo-server
npm init -f
npm install -y express
touch index.js
“`

# ソースコード

↑で作ったindex.js

“`javascript:index.js
‘use strict’;

const express = require(‘expre

元記事を表示

Docker-composeを使ってExpressの環境構築

Expressの環境構築

“`
git clone https://github.com/Old-rever-brave/Express-Docker

cd Express-Docker

docker-compose up –build

npm install

npm start

http://localhost:3000/

“`

元記事を表示

JavascriptのPromiseを解説します

“`javascript
User.query({where: {name:nm}, andWhere: {password: pw}}).fetch()
“`
これの戻り値が Promise オブジェクトが返ります。

“`javascript
(new Promise()).then(成功時の関数).catch(失敗時の関数)
“`
みたいな

元記事を表示

Node.jsでDeprecationWarningを出さずにencodeとdecode

# 環境
“`zsh
$ node –version
v12.16.1
“`

# 経緯
`Buffer` を使って、encodeしたかった時に`DeprecationWarning`が出てしまったため対処
encode自体は問題なくできるが、[nodejsのドキュメント](https://nodejs.org/ja/docs/guides/buffer-constructor-deprecation/)的には対応した方が良さそう

“`test.js
const before = ‘hogehoge’ // これをbase64でencodeしたい
const buffer = new Buffor(before)
const after = buffer.toString(‘base64’)
console.log(after)
“`

“`zsh
$ node test.js
aG9nZWhvZ2U=
(node:631) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security an

元記事を表示

コード共有サイト作成 docker react node.js mongodb

## 成果物
https://code.itsumen.com/

## リポジトリ
https://github.com/yuzuru2/code_site

## 開発環境

– ubuntu 18.04
– docker
– docker-compose

## 使用ライブラリ周り

### フロントエンド
– parcel
– bootstrap
– highlight.js
– react
– nginx(静的ファイルを配信)

### バックエンド
– typescript
– nodejs
– pm2

### データベース
– mongodb

## 成果物を使うケース

– ちょろっと書いたコードを誰かに見せたい時

## UI

### ホーム画面
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604197/366fa15f-fa3e-92e1-59dc-cef061b69a2f.png)

### コード閲覧画面

![無題.png](https://qiita-im

元記事を表示

NFCシールを活用して自動打刻ツールを(個人的に)作ってみた話

# はじめに

今回はNFCシールを使用して会社の自動打刻システムを、完全に自分用で作ります!

# 要件定義

## なぜつくるか?

現在、弊社の勤怠は、エクセルで管理されています。
実際の打刻フローとしては、

1. 出社したら出社時刻をエクセル開いて手動で打刻
2. 保存
3. 退社するときに退社時刻をエクセル開いて手動で打刻
4. 保存

。。。
**毎日エクセルポチポチするの面倒すぎる!!!!!!!!!**

作業自体も面倒なのに、何日か打刻を忘れるとまあ面倒臭いことになります。

せっかくIT企業にいるんだからいろいろスマートにやりたい…
ということで、今回の自動打刻システムの開発を決意しました。

## どう作るか?

今回開発する自動打刻システムでは、NFCシールを活用していきます。

処理の流れとしては、

1. NFCシールにスマホをかざして専用のWEBサイトを表示する
2. WEBサイトから自動打刻システムにリクエストを投げる
3. 打刻する

といった感じにしようかと思います。

NFCシールにスマホかざすのとリクエストを投げるところにWEBサイト表示をは

元記事を表示

2020年から始めるAzure Cosmos DB – JavaScript SDK (SQL API)を見てみる (Part.1)

![th.jpeg](https://www.bing.com/th?id=OIP.yovZnkelJ4W3sSoRk-oQtwHaD4&pid=Api&rs=1)

# この記事について

本記事は、2020年3月6日 (米国時間) にて、Azure Cosmos DB に新しく Free Tier (無償利用枠) が登場したことに伴い、改めて Azure Cosmos DB を色々と触っていく試みの 3 回目です。
今回は、[前回記事][PrevLink1] にて作成した CRUD アプリ内で使用している **Microsoft Azure Cosmos JavaScript SDK** について見ていきたいと思います。

– [Microsoft Azure Cosmos JavaScript SDK][npm]
– [Azure/azure-cosmos-js][GitHub1] \(old\)
– [Azure/azure-sdk-for-js][GitHub2]

[PrevLink1]:https://qiita.com/ymasaoka/items/0b0b72635

元記事を表示

mockyでリクエストの内容をレスポンスに反映しようとしてハマったメモ。

# やりたいこと
node.jsで動くWebAPIモックサーバーの[mocky](https://github.com/2do2go/mocky)を使って、

“`
{ “name”: “John Smith” }
“`
をPOSTリクエストしたら

“`
{
“id”: 1,
“name”: “John Smith”
}
“`
が返却され、

“`
{ “name”: “Taro Yamada” }
“`
をPOSTリクエストしたら

“`
{
“id”: 1,
“name”: “Taro Yamada”
}
“`
が返却されるように、リクエストの内容をレスポンスに反映したかったのだが、つまづいたのでメモを残す。
mockyのインストール方法、基本の使い方はGithubのREADMEを参考にしてください。

# 結論
基本の使い方は公式のREADMEといいつつ、mocky自体かなりメンテされていないみたいなので少し書き方は今風にしてる箇所もあるが基本的に一緒。

“`mock.js
const mocky = require(‘mocky’);

m

元記事を表示

OTHERカテゴリの最新記事