- 1. herokuでrails + nodejsでnodeのバージョン指定する方法
- 2. セットで学ぶ!Firestoreのクエリとルール
- 3. npm_config_arch, npm_config_target_arch, そして npm_config_* 環境変数について
- 4. M1 Mac で grpc-tools を npm install できない問題の回避策
- 5. 【Node.js, TypeScript】LINE MessagingAPIで作った天気予報アプリをAWSのLambdaにデプロイしてみる!
- 6. Node.js Express
- 7. 【Docker】AmazonLinux 導入方法
- 8. node.jsのasync/awaitを簡単に説明する
- 9. internal.ReadableとNodeJS.ReadableStream
- 10. node.js で PN532 を使ってNFCを読む
- 11. Actions on GoogleのInteractive Canvasを試してみる
- 12. 【Glitch】Githubからアプリを公開する方法
- 13. Telegraf で InfluxDB 2.0 にデータを入れる
- 14. 【今日から始めるAWS】AWS IoT Coreでpub/subする
- 15. [Node, npm] Missing write access to /usr/local/lib/node_modules でグローバルインストール(npm i -g)ができない時の対処法
- 16. 【Node.js】Node.jsの最大メモリを増やす方法
- 17. #programming #powershell #csharp #Javascript #nodejs # C1(分岐網羅)のテストをするツール
- 18. 【技術書まとめ】ハンズオンNode.js
- 19. Alexa Echo FlexのモーションセンサとAmbientを使って人感監視する
- 20. 【Node.js】dependenciesとdevDependenciesの違い
herokuでrails + nodejsでnodeのバージョン指定する方法
# 前置き
railsアプリを構築し、webpacker用にnodejsを入れたアプリを作った際、
nodeのバージョンが12系なのが気になった。
現時点でのLTSは14系なので開発環境と差異が発生しており環境差異でハマるのが嫌なのでheroku側のnodeバージョンを上げる方法を追求してみた。軽く検索するとよく引っかかるのが `heroku Buildpacks` を使うというもの。
## 公式ドキュメント
https://devcenter.heroku.com/ja/articles/buildpacksだがしかし、上記を見てもバージョンを指定する具体的な方法自体は記載がない。
ググって見た感じ、 `package.json` にバージョンを追記するとバージョンが指定できるとある。
“`json
“engines”: {
“node”: “14.17.2”,
“npm”: “6.14.13”
}
“`ただし、railsアプリでこれをやってpushしても
“`
remote: error app@1.0.0: Th
セットで学ぶ!Firestoreのクエリとルール
# 背景
Firebaseを使うと、バックエンドを構築する手間が省けて楽ちん。
しかし楽ちんだからといって、大切なことを怠るとと大きな危険が待っている。
大切なデータが保存されているDBにアクセスするAPIがどこからでもコールできる、ということは非常に危ないこと。
そのセキュリティの穴を塞いでいるのが、Firestoreの「ルール」である。
楽をするからには、徹底的にセキュリティに穴を塞がなければならないが、このルールの記述が簡単ではない。
特に、こういうクエリを投げるときにはこういうルールを記載しなければならない、というようにクエリとルールが分かりやすく結びついているドキュメントがほとんどない。
Vue.js + Firebaseでの開発も非常に苦労したので、私が調べて学んだことをメモしておこうと思った。
万が一、誰かの役に立つことができればとても幸いである。# データの取得
## ケース① 自分のユーザIDに紐づくデータを取得する
1つ目なので、少し詳細に記載する。
![image.png](https://qiita-image-store.s3.ap-northeast-1
npm_config_arch, npm_config_target_arch, そして npm_config_* 環境変数について
`npm_config_` で始まる環境変数は `npm` コマンドによって解釈される。 `npm_config_foo=bar` とセットすると npm のコンフィグ `foo` を `bar` にセットしたのと同じ意味になる。 https://docs.npmjs.com/cli/v7/using-npm/config#environment-variables
この環境変数の名前は大文字でも小文字でもいいが、 npm は scripts を実行するとき名前が小文字バージョンの環境変数を独自にセットする。それは(ユーザーによってセットされた)名前が大文字の環境変数よりも優先されることに注意。ユーザーによって名前が小文字の環境変数がセットされたらそれが最優先される。
`npm_config_` で始まる環境変数は `npm` コマンド以外にも認識されることがある。中でも Node のネイティブ拡張を扱うライブラリ node-gyp と node-pre-gyp に関する環境変数は覚えておくといい。
https://github.com/nodejs/node-gyp/blob/
M1 Mac で grpc-tools を npm install できない問題の回避策
**TL; DR:** 環境変数 `npm_config_target_arch=x64` をセットしてから `npm install` なり `yarn install` なりを実行するとよい。
—
この記事を書いた2021年7月14日の時点で、 grpc-tools (1.11.2) をインストールしようとすると node-pre-gyp がエラーを出してインストールに失敗する。
このエラーは node-pre-gyp が grpc-tools の arm64 向けコンパイル済みバイナリをダウンロードしようとして失敗することに起因する。 arm64 向けバイナリはまだ配布されていない[^1]。
エラーを回避するには環境変数 `npm_config_target_arch=x64` をセットしてから `npm install` や `yarn install` を実行する。これをセットすると node-pre-gyp が `–target_arch=x64` 引数を指定されたかのように振る舞い[^2][^3]、 x64 向けコンパイル済みバイナリをダウンロードするように
【Node.js, TypeScript】LINE MessagingAPIで作った天気予報アプリをAWSのLambdaにデプロイしてみる!
先日、Node.jsとTypeScriptで天気予報アプリを作成しました。
https://qiita.com/Ryo9597/items/4c05b8b972ad7efc0c66
完成形としては以下の通りです。
![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838372/0af0bfce-b695-b341-4e90-aeefde544562.png)この記事内では、`Glitch`でデプロイをしています。
まぁ無料なわけで色々問題があります。
・プロジェクトは、利用されていないときは5分でスリープ状態になる
・4000件/1hのリクエスト制限がある(Error: 429 too many requests)ということで、AWSのLambdaを使ってデプロイすることにします。
それではアーキテクチャに関してみていきましょう。## サーバーレスアーキテクチャとは
AWSにおけるサーバーレスとは、**「インスタンスベースの仮想サーバー(EC2など)を使わずにアプリケーション
Node.js Express
#【Node.js Express 】
Node.jsは、サーバーサイドとクライアントサイドの両方のプログラミングができる。
特徴は、**イベントループ**と**ノンブロッキングI/O**##Express
**Express**:Node.jsのフレームワーク
→ Webアプリケーションを開発するための機能を提供する。
→ 便利な機能をまとめたパッケージの1つこのパッケージを用意するために、
**npm(Node Package Manager)**システムを使う
これには、パッケージを共有、取得する機能がある。###インターネットから自分の環境にパッケージをインストール
“`
$ npm install express
“`###インストールしたExpressを利用
パッケージの読み込み、使用するための準備が必要
“`
const express = require(‘express’);
const app = express();
“`###listenメソッド 実行
listenメソッドを用意して、.jsファイルを実行し、サーバーを起
【Docker】AmazonLinux 導入方法
# はじめに
最近、Docker の便利さを再認識し、何をするにしても Docker を使うことを検討してしまっています。
今回は AWS EC2 でよく使われている(と思う)Amazon Linux を Docker 上で使用する方法についてご紹介したいと思います。
#### 関連リンク
関連リンクを下記に載せておきますので、必要であれば参考にしてください。* 【Rails】開発中プロジェクトへDocker導入・環境構築方法
* https://qiita.com/syukan3/items/f8d426b8334086fa4c15# Amazon Linux イメージ取得
“`bash
# DockerHub から amazonlinux のイメージを取得
$ docker pull amazonlinux# 取得したイメージ確認
$ docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# amazonlinux latest
node.jsのasync/awaitを簡単に説明する
# 非同期処理とは?
非同期処理は実行待ちの間に別の処理を実行することができる。
“`https://www.rworks.jp/system/system-column/sys-entry/21730/#:~:text=%E9%9D%9E%E5%90%8C%E6%9C%9F%E5%87%A6%E7%90%86%E3%81%A8%E3%81%AF%E3%80%81%E4%B8%80,%E3%81%AA%E8%A6%81%E7%B4%A0%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82
非同期処理とは、一つのタスクを実行中であっても他のタスクを実行できる実行方式をいいます。
“`# javascriptは非同期処理である
javascriptは非同期処理であるため、プログラムの順番通りには処理は完了しない。
“`https://book.impress.co.jp/books/1120101055
Javascriptでは、時間のかかる処理は常に「非同期」(asynchronous)である。
“`# 非同
internal.ReadableとNodeJS.ReadableStream
mp4やmp3をインターネット上から取得して、その音声をDiscord.jsでBotに流し込むためにちょっと躓いたことがあったのでメモ書き
両方とも、Streamであることは変わりないのだけど、簡単に言えば古いのと新しいのという関係性らしい## internal.Readable
新しい形式のStream。Discord.jsではこちらが使われている。大体新しいライブラリはこっちのStreamを吐くことが多いみたい。## NodeJS.ReadableStream
古い形式のStream。node-fetchのbodyとかは(なぜか)こっちの形式でデータを返してくる。## 互換性
互換性はない。ただし、古い形式である`NodeJS.ReadableStream`を新しい`internal.Readable`に変換(ラップ)することは可能([この記述を公式ドキュメント内で見つけるの](https://nodejs.org/api/stream.html#stream_readable_wrap_stream)にかなり時間がかかった…)### 変換(ラップ)の例
Dis
node.js で PN532 を使ってNFCを読む
このあいだ、Raspberry pi で node.js + typescriptで書いてるアプリでNFCを読む機会があり、調べたのでメモ。
## ハードウェア
NFCリーダーはこれ
https://wiki.seeedstudio.com/Grove_NFC/
中身は PN532
これを、Raspberry Pi のGPIOピンヘッダにGroveコネクタ生やすやつで接続した。こういうの。
https://amzn.to/3wwxkSB## UART を使用可能にする
Raspberry Pi 3以降ではBluetoothの接続でuartを使っているために、そのままではuartが使えない(これ知らずに結構時間をロスした…)。Device Tree Overlay の miniuart-bt で対処した。
以下など参照。
https://www.ingenious.jp/articles/howto/raspberry-pi-howto/gpio-uart
https://qiita.com/hidenorly/items/f6ffe79fb6f81740
Actions on GoogleのInteractive Canvasを試してみる
Actions on GoogleにInteractive Canvasなるものがあるので、試してみます。
これは、Actions on Googleの発話・応答を、今までの単純なテキストやカードなどのリッチコンポーネントではなく、通常のHTMLで表示するものです。
スマートスピーカ側に画面表示装置が必要なので、限られますが、音声だけではない画面表示も含めることで表現力がアップするのを期待しています。
GoogleのSmart Displayに加えて、スマホも対応していますので、実際に動きを試してみることができます。今回作成するのは、Googleで画像を検索するように、好きな言葉を発話して、それに関する画像を表示します。
ソースコードもろもろを以下に置いておきました。
poruruba/InteractiveCanvas
https://github.com/poruruba/InteractiveCanvas
参考となるページ
・https://developers.google.com/assistant/conversational/overview
・https:
【Glitch】Githubからアプリを公開する方法
#1. Glitchで新しいプロジェクトを作成する
[公式サイト](https://glitch.com/)からGithubでログインする。
`Start a new Project`から好きなアプリを選択する。#2. Githubからアプリを公開する
`Tools > Import and Export > Import from GitHub `を開く。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/25586bc3-8ede-fe63-197f-9ba5115354fd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/ceeda763-c05d-d7e0-a76b-3099e460e288.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
Telegraf で InfluxDB 2.0 にデータを入れる
次のページを参考にしました。
[Grafana+InfluxDBv2+telegrafで室内温度を可視化する](https://izuminmin.com/server/try-grafana-influxdb-telegraf/)Arch Linux で Telegraf のインストール
“`bash
yay -S telegraf
“`起動
“`bash
sudo systemctl start telegraf
“`設定ファイルの編集
>UDP 8092 に入ってきたデータを、InfluxDB に送ります。“`text:/etc/telegraf/telegraf.conf
(省略)
[[outputs.influxdb_v2]]
urls = [“http://127.0.0.1:8086”]
token = “1zIYs1taCm3pWQOBUNk0ssYccOF7YgJcdGyJDbiFYTBf7hcPvyl5nGyt71rNVkYtg2rB
ceUwQ1r5Xzm7Mabcde==”
organization = “ekzemplaro”
b
【今日から始めるAWS】AWS IoT Coreでpub/subする
#はじめに
30代未経験からエンジニアを目指して勉強中のYNと申します。
IoTの場面では、多対多の双方向通信が必要となります。これはWeb開発で一般的に使われる素のHTTP通信で実現することはできず、* MQTT
* WebSocket
* MQTT over WebSocketといった双方向通信プロトコルを使う必要があります。
[詳しくはコチラにまとめました。](https://qiita.com/theFirstPenguin/items/55dd1daa9313f6b90e2f)今回は **AWS IoT CoreによるMQTTブローカーのマネージドサービス**使って2つのクライアント間でMQTTメッセージのやり取りを行います。
![Server architecture-Page-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572098/63c7b4b7-a022-dd3e-535f-75eacc714242.png)#AWSコンソールで「モノ」を作成する
AWS Io
[Node, npm] Missing write access to /usr/local/lib/node_modules でグローバルインストール(npm i -g)ができない時の対処法
# はじめに
長年使ってきたMacbook-air mid2013に別れを告げて、新しいmacに移行して環境構築した際につまづいたのでメモ。同じく新しいPCで環境構築する人の役に立てれば!# エラー概要
新しいPCに移行して、とりあえずnodeのインストールだ!!と [nodeの公式](https://nodejs.org/en/download/)からインストーラをダウンロードしてインストール。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366323/ccfa2f60-56b8-9206-f6e9-2eb296f9d8dc.png)そのあと、firebaseを使いたかったので
`npm i -g firebase-tools` を実行すると以下のエラーが。実際のターミナル画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366323/acb33477-5967-6b80
【Node.js】Node.jsの最大メモリを増やす方法
#Node.jsの最大メモリを増やす方法
`設定>システム>詳細情報>システムの詳細設定`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/f1a1e8e8-e250-7580-cfc0-933f8add5018.png)
`詳細設定>環境変数`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/11fa65e6-2791-e494-5c92-64449bb12d88.png)
`システム環境変数>新規`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/78f798dc-ae1a-fc1f-8969-891e139e88e0.png)“`
変数名: NODE_OPTIONS
変数値: –max_old_space_size=30720(
#programming #powershell #csharp #Javascript #nodejs # C1(分岐網羅)のテストをするツール
本内容を利用した場合の一切の責任を私は負いません。
# 機能
ソースの中の分岐を通過したことがわかるように、ソースにトレース出力するソースを自動的に追加するものです。
PowerShellスクリプトで行っています。
**ソースを変更するため、git等のソース管理システム下等、ソースを復元できる環境下での使用を推奨します。**
追加されたソースを実行すると、通過情報がファイル(以降、通過ファイル)に出力されます。
(オプションにより、継続して記録するファイル(以降、報告ファイル)を出力させることもできます。)
出力によりフローを追えるため、デバッグにも利用できます。
通過情報は、1実行内で1度しか出力されません。
(ループ内のトレース出力は1度のみ。)
報告ファイルがある場合は、報告ファイル内の通過情報がリセット(「ー」)されてないと1実行に限らず継続して出力されません。
Java、C++は対応言語と仕様が似ているため、既存言語処理を流用・変更して対応させることもできると思います。
また、Javascriptのnode.js環境外は、トレース出力先に困っただけなので、ブラウザの専用ウィ
【技術書まとめ】ハンズオンNode.js
冒頭
「理論を伴わない経験は盲目だが、経験を伴わない理論は知的遊戯に過ぎない」
カント# 1章 イントロダクション
– Node.js の特徴
– 並行処理する
– 「コンビニ店員が弁当を温めながら次のお客をさばく」
– WebサーバーのI/O
– 従来はスレッドでやっていた
– 「客Aスレッド、客Bスレッド……」とマルチスレッドで切り替える
– 生成と切り替えコストが大きく、大量にリクエストをさばけない
– Node.js はイベントループ
– シングルスレッド
– タスクをキューに積んで順番に処理する
– I/O発生タイミングでタスク分割して、実行時に完了後のタスクを指定し、完了後には指定タスクがキューに追加されるようにする
Alexa Echo FlexのモーションセンサとAmbientを使って人感監視する
Alexa Echo Flexにモーションセンサがついているので、せっかくなのでIoTとしてモーション検知を蓄積してみます。
AlexaのスキルにIFTTTを使い、IoTイベントの蓄積および可視化には、Ambientを使わせていただきました。
モーション検知後のアクションに設定可能なAlexaスキルで適当なのはIFTTTぐらいでしたが、IFTTTからAmbientに直接リクエストを送れなかったので、いったん中間のWebAPIサーバを介しています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/c5cb3b2e-d8fe-9349-c2f0-c0dfe4268c73.png)
IFTTTのサイトにアクセスし、まだアカウントを作っていない場合は作成します。
https://ifttt.com
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/ac7df2de-
【Node.js】dependenciesとdevDependenciesの違い
#package.jsonとは
依存関係を示したファイルで、このファイルにプロジェクトに必要なパッケージの名前とバージョンを記述すればnpmが必要なパッケージをインストールする。
package.jsonはnode環境のアプリの設定が書かれたファイルみたいなもので、Bundlerのようなもので、開発に使う依存ライブラリと本番で使う依存ライブラリを書くことができる。
詳しくは[こちらの記事](https://qiita.com/mzmz__02/items/dfa7abb4237a3842a2a8)に書いてある。#dependenciesとdevDependenciesの違い
dependencies:本番環境でも利用するパッケージやその依存関係。
devDependencies:テスト環境と開発環境で利用するパッケージやその依存関係。本番用にビルドするときは含まれない。開発者が`npm install`を行うと、dependenciesでもdevDependenciesでもすべてnode_moduleにインストールされる。しかし、開発者以外の人が`npm instal