- 1. 【Docker】AmazonLinux 導入方法
- 2. node.jsのasync/awaitを簡単に説明する
- 3. internal.ReadableとNodeJS.ReadableStream
- 4. node.js で PN532 を使ってNFCを読む
- 5. Actions on GoogleのInteractive Canvasを試してみる
- 6. 【Glitch】Githubからアプリを公開する方法
- 7. Telegraf で InfluxDB 2.0 にデータを入れる
- 8. 【今日から始めるAWS】AWS IoT Coreでpub/subする
- 9. [Node, npm] Missing write access to /usr/local/lib/node_modules でグローバルインストール(npm i -g)ができない時の対処法
- 10. 【Node.js】Node.jsの最大メモリを増やす方法
- 11. #programming #powershell #csharp #Javascript #nodejs # C1(分岐網羅)のテストをするツール
- 12. 【技術書まとめ】ハンズオンNode.js
- 13. Alexa Echo FlexのモーションセンサとAmbientを使って人感監視する
- 14. 【Node.js】dependenciesとdevDependenciesの違い
- 15. ソフトウェアの操作について
- 16. Node.jsでsetTimeoutを使ったタイマー
- 17. Node.jsで文字列を圧縮
- 18. 【Firebase】Cloud Functionsで作るSlack App【TypeScript】
- 19. socket.ioのsticky-sessionをtypescriptで読み出せるようにしてみた
- 20. 【Node.js】npmとyarnの違い
【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
ソフトウェアの操作について
# 目的
ソフトウェアについて理解を深める# 目次
1. [はじめに](#はじめに)
1. [シェルとは](#シェルとは)
1. [zsh](#zsh)
1. [PATH](#path)
1. [コマンドラインツールとは](#コマンドラインツールとは)
1. [Command Line Tools](#command-line-tools)
1. [パッケージ管理とは](#パッケージ管理とは)
1. [Homebrew](#homebrew)
1. [Node.js](#nodejs)
1. [Yarn](#yarn)
1. [バージョン管理とは](#バージョン管理とは)
1. [rbenv](#rbenv)# はじめに
今回は、なぜターミナルでコマンドを実行するといろいろな動作が行われるのか、その仕組みについて詳しくまとめたいと思います。
# シェルとは
`シェル`とは、ターミナルとOSを繋ぐ窓口役のようなものです。
ターミナルで実行されたコマンドは`シェル`によって読み込まれ、OSに指示を渡した後、結果をターミナルに返して表示や実行などの動作をさせます。また、`
Node.jsでsetTimeoutを使ったタイマー
#はじめに
Node.jsでループ処理の勉強メモその2です。(その1はこちら:[Node.jsでsetIntervalを使ったタイマー](https://qiita.com/rjegg/items/68616809cba10810ec9d))
今回はsetTimeoutを使ったパターンです。#setTimeoutを使ったループ処理
setTimeoutは、[Node.jsのタイマー](https://nodejs.org/ja/docs/guides/timers-in-node)を参照すると、以下のように`setTimeoutは指定したミリ秒後にコードを実行する`とあります。
“When I say so” Execution ~ setTimeout()
> setTimeout() can be used to schedule code execution after a designated amount of milliseconds.setTimeoutをループ処理に使うためにはsetTimeout関数をカウンターのような仕組みの処理の中に入れてあげれば良い
Node.jsで文字列を圧縮
Node.jsのビルドインモジュールを使って文字列を圧縮 (gzip)
https://nodejs.org/dist/latest-v14.x/docs/api/zlib.html
“`javascript
const Buffer = require(‘buffer’).Buffer;
const zlib = require(‘zlib’);/**
* 圧縮
*/
function gzip(str){
const content = encodeURIComponent(str) // エンコード
const result = zlib.gzipSync(content) // 圧縮
const value = result.toString(‘base64’) // Buffer => base64変換
return value;
}
/**
* 解凍
*/
function unzip(value){
const buffer = Buffer.from(value, ‘base64’)
【Firebase】Cloud Functionsで作るSlack App【TypeScript】
## :star: 概要
Cloud Functions for Firebase で Slack App を作ってみたのでそのノウハウの紹介です## :star: 今回作ったもの
### :tada: Lively
LivelyはSlack上のコミュニケーションをより便利に楽しくするための機能を複数備えたアプリです!
– 様々なチャンネルから人気の投稿を探して通知します
– 週間・月間で人気のあった投稿を振り返ります
– アプリのホームタブから簡単に設定ができます
– 新しく作成された絵文字やチャンネルをお知らせします
– privateチャンネルには関与しないようになっているため安心です### :octocat: GitHub
ソースコードはこちらhttps://github.com/mikan3rd/lively
### :file_folder: Slack App Directory
ここからインストールできますhttps://slack.com/apps/A0239EZ6A5S
## :pencil: 技術スタック
– TypeScript (N
socket.ioのsticky-sessionをtypescriptで読み出せるようにしてみた
# Original
https://github.com/socketio/socket.io-sticky
# Source Code
“` typescript
import cluster from ‘cluster’;
import net from ‘net’;
import engineIo from ‘engine.io’;export const setupMaster = (
server: net.Server,
loadBalancingMethod: ‘random’ | ‘round-robin’ | ‘least-connection’,
): void => {
if (!cluster.isMaster) {
throw new Error(`This node is not master.`);
}const sessionIdToWorker = new Map
();
const workerIdToClientCounts = new Map
【Node.js】npmとyarnの違い
#Node.jsとは
Node.jsはサーバーサイドで動くJavaScript。Node.jsに関しては[以前の記事](https://qiita.com/mzmz__02/items/700955985150fa34a757)で詳しく扱ってる。以前はずっとnpmを使っていたが、最近yarnを知ったのでnpmとの違いについてまとめる。(間違い等ありましたら、コメントいただけると幸いです。)
##パッケージマネージャーとは
パッケージマネージャーは、どのソフトウェアがインストールされたのを記録して、新しいソフトウェアのインストール・新しいバージョンのソフトウェアの更新・インストールしたソフトウェアの削除を簡単に行えるプログラム。#npmとは
Node Package Managerの略で、JavaScriptパッケージマネージャー。Node.jsで作られたパッケージやライブラリを管理するためのツール。`npm`というコマンドで動作するプログラム。npmにはインストールしたときのパッケージのバージョンの非再現性や、パフォーマンス・セキュリティの問題がある。この問題を