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

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

obnizとブザーで兄弟配管工ゲームのコイン音を出してみた

#作ろうと思ったきっかけ
– ProtoOutoStudio 3回目授業でobnizに触れる
– ブザーが面白かった

 兄弟配管工ゲームでは、ブロックを叩くとコインが出てきますよね。その時の効果音を再現してみようと思いました。

#”あの”効果音の音階を調べてみた

[コインの音](https://muuu.jp/koneta/sm-coin/)

が、楽譜が読めないぞ….。オクターブもよく分からん….。
よし、トライ&エラーか???(音痴です)

#まずはベースとなる”ド”を鳴らす

”ド”の音が何Hzか調べました。今回は[こちら](https://general-knowledge.xyz/frequency-and-scale/)のサイトを参考に周波数を設定していきます。

【鳴らしてみた様子】

Node.js Express  で出てくる req, res, next

#はじめに
Node.jsのExpressの雛形を生成するコマンド

“`shell
express project-name
“`
で出力されるコードの一部ですが

“`javascript:index.js
var express = require(‘express’);
var router = express.Router();

router.get(‘/’, function(req, res, next) {
res.render(‘index’, { title: ‘Express’, user: req.user });
});
“`

この`req`, `res`, `next`は何なのか書いていこうと思います。

#reqについて
`req`は`app.get`の第一引数で指定されたパスに入ってきたHTTPリクエストを表すオブジェクトです。

“`javascript
var express = require(‘express’);
var app = express();
app.get(‘/’, func);
function func(

元記事を表示

【node.js】validationを新しいバージョンに対応コードに変更する

##解決したい問題
パッケージvalidationのバージョンが古いので新しいバージョンの書き方に変更したい。

##環境
OS: macOS
express: ^4.17.1
ejs: ^2.6.2
express-validator: ^6.4.0

##変更前のコード(古いコード)

“`javascript
router.post(‘/’, (req, res, next) => {
var request = req;
var response = res;
req.check(‘name’, ‘NAMEは必ず入力して下さい。’).notEmpty();
req.check(‘password’, ‘PASSWORDは必ず入力して下さい。’).notEmpty();
req.getValidationResult().then((result) => {
if (!result.isEmpty()) {
var content = ‘

    ‘;

元記事を表示

brew install nodeで色々詰まった自分用メモ

####前提

https://qiita.com/okohs/items/ced3c3de30af1035242d
この記事を読んで

“`
brew install node
“`
としたがエラーに出会った。

そこで、

homebrew で node のエラーを修正


にしたがって

“`
brew doctor
“`
のところまで行き、問題が生じたので一つ一つ解決したあと、

“`
brew install node
“`

をしたらまたエラーが出た。
今度はbrew linkできないよ〜というエラーだった。
そこで、エラーメッセージに素直にしたがって解決しようとした。
僕が選んだ選択肢は

“`
brew link –overwrite node
“`

こうしたら、とあるファイルに権限がないからエラーになった。
というわけで、

を参考にしてエラーを1つ1つ解決することになった。

その時のコマンドとエラーと解

元記事を表示

AWS LambdaのCustom Runtimeを使い、Node.js v8などEoLとなったランタイムを動かす

# はじめに

Node.js、バージョンアップの足がかなり早いですよね。
AWS Lambdaにおけるランタイムサポート期間も、これにあわせてハイテンポになっています。

ちゃんとバージョンアップをしろというご意見は重々承知の上ではありますが、
Node.js v8.10でLambda Functionを使い続けざるを得ない場合に、カスタムランタイムを使ってEoLとなったランタイムを動かし延命処置を図ります。

## 動作確認環境

* Arch Linux (2020.04.04)
* Docker 19.03.8-ce
* aws-cli 1.18.36

# カスタムランタイムの使い方

カスタムランタイムの仕様については、[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-custom.html)が詳しいので割愛します。

カスタムランタイムを使用するには、デプロイパッケージあるいはLayerに、`node`実行ファイルと、ハンドラー関数を起動するための`bootstrap`実行ファイル

元記事を表示

(小ネタ)Node.jsのWebアプリでclusterを使いながら定期的に子プロセスを再起動させる

Node.jsでサーバサイドWebアプリを開発中、なぜかメモリリークがあるライブラリに遭遇してしまったので、ワークアラウンドとして、定期的にプロセスを再起動させて、メモリリークの問題を緩和したいと思いました。

– コード: https://github.com/knjname/2020-04-05_restartClusterChild
– 参考: https://nodejs.org/api/cluster.html

## サーバサイド

http://0.0.0.0:10080 をリスンするプロセスが4つ立ち上がり、5秒未満で子プロセスを停止させ、その後に再起動します。(実用上は、もっと長い時間でプロセスを殺すべきです。)

“`javascript:src/index.js
const cluster = require(“cluster”);
const http = require(“http”);

const sleep = time => new Promise(done => setTimeout(done, time));

const clusterCoun

元記事を表示

DOM, Node, Elementについて

備忘録です。
間違いなどございましたらご指摘ください。

##DOMとは
HTMLとXMLドキュメントへのAPI
(わかりやすくいうと、プログラムからHTMLやXMLを自由に操作するための仕組み、インターフェイス)

JavaScriptからHTMLに要素を追加したり、ボタンクリック時のイベントを登録したり、スタイルや属性を追加したり、要素のサイズや位置を追加したり、こういったものはすべてDOMのAPIを使うことで操作できる。

**DOMツリー**
DOMはHTMLドキュメントを『オブジェクトのツリー』として扱っている。これを『DOMツリー』という。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500259/da0e5aba-9084-f7cc-9069-abde1f062d5b.png)

##Nodeとは
ノードとは各要素(HTMLではエレメントやタグという)自体のことを表す。(つまり、上の図のひとつひとつのボックスがNode)

特定のノードを基準としたときに、その上にあるノ

元記事を表示

常に動くLINEBOTにお引っ越し(now編)(未解決版)

前回つまって諦めたnowに再挑戦した記録。

ngrokで作った時の記事:
[WikipediaのAPIを使ってLINEbotに調べてもらう](https://qiita.com/shima-07/items/2322598ca5a40cfee47b)

# はじめに
前回同様、課題感とテーマとしては「ngrokだと使いたいときに使えない!だから常時使えるようにしたい!」です。

目次としては、

* now でだいぶハマる
* さらに now にハマる
* 対応したこと

です。

# nowでだいぶハマる
nowを正しく動かすところでまずハマりました。
いくつかハマった気がして、だいたいはいじったりnow自体を消してやり直したりしたらできた印象だが、うっかりでハマったのがこの記事参照。
https://qiita.com/shima-07/items/64c051c9982ac0899b21

# さらにnowにハマる
無事、ngrokを卒業して、nowを使ってLINE botができました。
が、、
なんか挙動がおかしい。ソースコードはngrokの時と何も変えてないのに。

元記事を表示

nowでアプリケーションエラーが出たとき対応したこと

nowでハマったメモ

# 状況
@n0bisuke の[この記事](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d#4-now%E3%81%A7%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4)を参考にやっていたつもりがこんなエラーと遭遇。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121887/a6e72e13-01a8-76ff-1938-0a3c0d247f45.png)

> An error occurred with this application.
> This is an error with the application itself, not the platform.

「nowは問題ないよ。お前のアプリケーション(ソースコード)が問題なんだよ。」とのこと。

# 対応
このnow.json内で指定しているjsファイルの一部を直したら直った。
(記事の例でいくと、se

元記事を表示

typescriptを使ってjavascriptのシンタックスシュガーを理解する

# 背景
typescriptを勉強していて、アロー演算子構文の読み方がわからない。ドキュメントを読んでもよくわからなかった、ということがありました。
そんな時、tscコマンドを使うことで難解なシンタックスシュガーへの理解のヒントになることに気が付きました。
それについて紹介します。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions

たとえば下記アロー演算子の構文がわかりませんでした。

`[‘bbbbb’, ‘3’].map(({ length }) => length)`
仮引数に `{}` 使とは、、、?みたいな感じです。
出力内容から見ると、`length`プロパティを返していることを察することができましたが、いまいち腑に落ちませんでした。

# tscコマンドの出番です
typescriptをjavascritに変更するコマンドが`tsc`です。

“`arrow.ts
[‘bbbbb’, ‘3’].map(({ length }) => l

元記事を表示

【knex】this.dialectに関してのエラー解決

##エラー文
Using ‘this.dialect’ to identify the client is deprecated and support for it will be removed in the future. Please use configuration option ‘client’ instead.

##解決法

“`javascript
var knex = require(‘knex’)({
dialect: ‘mysql’,
connection: {
host: ‘localhost’,
user: ‘root’,
password: ‘(パスワード)’,
database: ‘(データベース名)’,
charset: ‘utf-8’
}
});
“`

上の文の、dialectをclientに変更する。

元記事を表示

Glitchで、ERROR EACCES: permission denied がコンソールに表示され動かないときの対処法

#対処方法
1. Terminalを開く

コマンドライン **(プロジェクトのパッケージが強制的に再インストール コマンド)**

“`javascript
$ enable-pnpm
“`
を実行する。
2. しばらくたつと動く。
3. 以上!!
![glitch.com](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480250/6a98cc76-484e-7f5d-a8b0-daabd9fcfc72.png)

元記事を表示

【LINE botから画像送信する方法】問いかけると柴犬の画像を返してくれるLINE botを作ってみた

#概要
 LINE botでできることを調べていたら、画像を返すことが可能とのことで試してみました。
ただ画像を返すだけでは面白くないので、柴犬APIで画像を拾ってきて表示することにしました。最後にソースコードの全体を載せています。

 柴犬APIについては[こちら](https://shibe.online/)をご参照ください。実際の動きは次のようになります。

【デモ】

元記事を表示

Raspberry Pi 4(1台)でKubernetes環境を構築 (Raspberry Pi 4 + Ubuntu 19.10 + MicroK8s) Part2 (Webアプリ編)

# 前回の記事

[Raspberry Pi 4(1台)でKubernetes環境を構築 (Raspberry Pi 4 + Ubuntu 19.10 + MicroK8s)](https://qiita.com/toyotoyo_/items/c58b8d318bee2c735793)

前回の記事では「Raspberry Pi 4」に「Ubuntu 19.10」OSを入れ、「MicroK8s」をインストールし、Kubernetes環境構築と簡単な動作確認するところまで行いました。

![Raspberry Pi 4 組み立て2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397682/fa8653b2-5d60-a561-bcb6-be094b03e084.jpeg)

# 今回の記事

今回の記事では実際にkubernetesのマニフェストファイルを作成し、ラズパイ上でWebアプリケーション(express)を動かしてみたいと思います。
環境については前回の記事まで出来ている前提で進めていま

元記事を表示

LINE BOTで天気を返すサンプルがngrokで動いてnowで動かない件

[こちらのサンプル](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)がngrokで動いて、Nowだとうまく動かない件の対応。

axiosを使って別のサーバーにリクエストを出してるので非同期処理のあたりが怪しいですね。

## もとのコード

これだとngrokでうまく動くけど、now上でうまく動かないというレポート

“`server.js


省略

function handleEvent(event) {
if (event.type !== ‘message’ || event.message.type !== ‘text’) {
return Promise.resolve(null);
}

let mes = ”
if(event.message.text === ‘天気教えて!’){
mes = ‘ちょっとまってね’; //待ってねってメッセージだけ先に処理
getNodeVer(event.source.userId); //スクレイピング処理が終

元記事を表示

nowのデプロイで古い書き方からのマイグレートメモ

now.shを使うときにv2系の書き方でも警告が出るようになってますね。
もう1系は使えないのかも。

nowで詰まった人がいたのでメモ。

## 今まで書いてたやり方と修正点

これまでは、これでよかったのですが……

“`now.json
{
“version”: 2,
“name”: “mylinebot”,
“builds”: [{ “src”: “server.js”, “use”: “@now/node” }],
“routes”: [
{ “src”: “/”, “dest”: “server.js” },
{ “src”: “/webhook”, “dest”: “server.js” }
]
}
“`

“`bash
now –target production
“`

> ![](https://i.gyazo.com/9471521a9ad9f3710b3f4c9f9c355aef.png)

### nameプロパティの注意

まずはここ。

“`
❗️ The `n

元記事を表示

JavaScript (Node.js) の非同期処理とシングルスレッド

## 本記事の目的

[JavaScript] や [Node.js] はよくシングルスレッドだ〜、と言われますが、では非同期処理はどうやって実行されているのか ([Non-Blocking I/O]) をざっくりと (私の身内に) 説明する為のサンプルコードです。

> [Node.js], [V8]([libuv]) のコードレベルでちゃんと理解したいのであれば、以下のサイトが大変参考になりました。
>
> * https://blog.hiroppy.me/entry/nodejs-event-loop

## 検証環境

* iMac (Retina 5K, 27-inch Late 2014), 4 GHz Intel Core i7
* [Node.js] v12.13.0

“`shell
$ nodebrew install-binary v12.13.0
$ nodebrew use v12.13.0
“`

> [ブラウザ JavaScript の Event loop](https://html.spec.whatwg.org/multipage/weba

元記事を表示

[Node.JS] StreamAPIを使ったCSVの書き読み出し

今回は、Stream使って配列をCSVにして保存したり、CSVから配列を読み込んだりとかを業務で使ったのでそれの共有です。

####今回やること

– `data.write([‘a’,’b’])`みたいに書いたらファイルに`a,b\n`みたいに追加されて欲しい。
– 逆にファイルに`a,b\n`って書いてあったら、[‘a’,’b’]みたいに1行づつの情報が欲しい。

## そもそもStremAPIとは?

streamAPIの素晴らしさを知らない人のために少し解説します。
すでに使ってる人は飛ばしても大丈夫です。

公式リンク
[Stream API](https://nodejs.org/api/stream.html)
曰く
> streamはデータストリームをするための抽象的インターフェースです。
>> A stream is an abstract interface for working with streaming data in Node.js.

YoutTubeとかでは動画一気に読み込むとクソ重くなるからちょっとづつ読み込むようになっていますが、これがデータス

元記事を表示

Spotify Developer Platform: Spotify APIアクセスしてデータ取得してみてみた

[Spotify](https://ja.wikipedia.org/wiki/Spotify)は2019年現在、2億3,200万人(うち有料会員数1億800万人)のユーザー音楽配信サービスとしては世界最大手で、5000万以上の音楽やコンテンツが揃っていて、ドライブ、エクササイズ、パーティやリラックスタイムなどに、気分に合った音楽、また、友達、アーティストが作ったプレイリストを聴いたりできます。

そんなSpotifyでは Developer Platformが用意されており、Web API、AndroidやiOS向けのSDKなどがあるので、Play ListやTrackに関する詳細な分析データをAPIアクセスしてでデータ取得し分析できます。
ということで、この取得したデータをDatabsaeへ入れて、Analytics, Machine Learning, BIなどData Scienceしてみてみたいので、まずはAPIアクセスしてデータ取得してみてみます。

・参考: [Spotify Developer Platform](https://developer.spotify.c

元記事を表示

OTHERカテゴリの最新記事