Node.js関連のことを調べてみた2022年08月28日

Node.js関連のことを調べてみた2022年08月28日
目次

Electronでデスクトップアプリをサクッと作る(ボタンイベント付き)

Electonは、JavaSriptとHTML、CSSを知っていればアプリを作ることができるフレームワーク。

公式のドキュメントが日本語対応しているところもうれしい。
https://www.electronjs.org/

ビルド時のコマンドにオプションを指定すると、winodwsやMac、Linux用のアプリも作れる。

## 1. インストール
`electron`は、devDependenciesにインストール。
“`console
npm init -y
npm i -D electron
“`

## 2. index.htmlを用意
ルートディレクトに`index.html`を作成。
アプリを実行したときのトップページになる。
“`html:index.html




SlackからDiscordへメッセージを移行させるDiscord botを作った

先月に↓の記事を投稿したのですが、

https://qiita.com/yuki-n/items/25e73490d82a0ad3c3fd

我ながら使いづらいなと思ったのと、思ったよりも使っている人がいて、わかりずらそうだったので、なんかもっとイケてる感じにしたいなと思いました。

で、「これ最初からdiscord側のbotにしちゃえばいいんじゃね?」と思い立ち、そうすることにしました。

botは以下からサーバーに追加することができます。

https://discord.com/api/oauth2/authorize?client_id=1012738353231302667&permissions=2048&scope=bot

## 雑な使い方

例のごとく雑に使い方を書いておきます。

### slackのデータをエクスポートする

以下を参考に、エクスポートします。

https://slack.com/intl/ja-jp/help/articles/201658943-%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3

元記事を表示

OTP(One-Time-Password)発行管理アプリを作った

OTP(One-Time-Password)を自分で発行管理できるようにします。
パスワード自体はサーバ側に保管し、OTPのコード生成もサーバ側で実施するようにします。

実は、OTPからコードの生成は、有志のnpmモジュールのお陰で、容易に実装できました。
一方で、OTPのQRコードをPCやスマホに取り込んだり、Windowsでのコピー&ペーストを活用しようとするといろいろ対応しないといけなかったです。

ということで、一応OTPの説明ですが、どちらかというと後者の取り込み方法の方が中身が濃い投稿となりました。。。

# OTPのフォーマット

OTPを初めて生成すると、だいたいQRコードが表示されて、Google Authenticatorなどに取り込むことがほとんどだと思います。
そのQRコードの中身は以下のような形です。

“`otpauth://[メソッド]/[アカウント名]?secret=[シークレット]&issuer=[発行者名]・・・“`

以下例です。

“`otpauth://totp/hogehoge?secret=ABCDEFGHIJK&issuer=%E

元記事を表示

【Node】CloudFunctionsでincrement/decrementしたい

# はじめに
Firebase CloudFunctionsでフィールド値をインクリメントしようとしてちょいハマりかけたので備忘録

# 更新履歴
2022.8.27 初回投稿

# 環境
– macOS Monterey 12.5.1
– Node:v18.7.0
– npm:v8.18.0

# 参考にしたサイト
https://cloud.google.com/firestore/docs/samples/firestore-data-set-numeric-increment?hl=ja

https://www.codegrepper.com/code-examples/typescript/firestore.FieldValue.increment%281%29

https://stackoverflow.com/questions/51016210/increment-counter-with-cloud-functions-for-firebase

# やりたいこと
– Cloud FunctionsのFirestoreの特定のフィールドでincrement/

元記事を表示

Amazon Cloudsearch をlocalのDocker Lamda node.jsから叩く

資料がなかったので、備忘録代わりに。
client-cloudsearch-domain、ローカルなので認証のためにcredentialが必要。endpointだけじゃなくて、regionも必要でした。cloudに持っていくと、認証は別方式のほうが良いと思われるので、消してください。

参考(AWS公式、node用のサンプルがあります)
https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-cloudsearch-domain/index.html

docker-compose.yml
Dockerfile
package.json
app.js (実行ファイルなので、任意にindex.jsなどに)

docker-compose.yml

“`
version: ‘3’
services:
cloudsearch-api:
image: cloudsearch-api
build: .
ports:
– 9199:8080
tty: true

元記事を表示

【超簡単】Next.jsアプリ(やその他Node.jsアプリ)をAmazon Lightsailでホスティング

vercelだと簡単にホスティングできるが、DBを持っておらず外部のDBに繋ぐとクソ重いので、LightsailでホスティングもDBも持つ
[Bitnami](https://bitnami.com/)が導入されているため、ほぼ何も導入しなくてもサイトの公開が可能
性能面を考えるとこの方法が一番楽

# この記事で出来ること
Next.jsで作られたHTTPSサイトのホスティング

# Lightsailで構築するメリット
– 他のnodeアプリでも応用可能(ポート3000で起動しているアプリならなんでも可)
– 10分くらいでできる
– DNSもDBもウェブサービスに必要なサービスがこれ一本で完了する
– Firewallなども含め必要な設定が最初から全部完了している

# 作業内容
[Aamazon Lightsail](https://aws.amazon.com/jp/lightsail/)でnode.jsインスタンスを起動
STATIC IP ADDRESSを取得、アタッチ

DNSを設定する

インスタンスにsshでログイン

アプリをgitからclone

apacheが

元記事を表示

WebRTC + Socket.ioについてSTUNサーバとの接続で701エラー

備忘録です。

Node.js
Socket.io
Angular

webRTCを使って、
STUNサーバを使ってNAT越えを試みるも
701エラー

原因は、
マイク・カメラを使うために、サイトをhttps対応させたのに対し、
socket.ioでの通信をhttps対応させていないことでした。

下記参考
https://qiita.com/MahoTakara/items/71977be2d18405fe7339
https://socket.io/docs/v3/server-initialization/
https://qiita.com/jinnai73/items/638dcc1434d47b12e6ba

socket.ioをhttps通信に切り替えて、通信成功
なお、CORS対応がhttpのままでエラーを吐いたりしたので、
そこの修正もお忘れなく。
またクライアント側から接続を試みるURLも当然httpsに変更になります。

資料には、ApacheをSSL対応する資料も。

雑ですが、以上です。

元記事を表示

特定のUSBデバイスを鍵にして、プログラムと連携させる

USBデバイスにはそれぞれ固有のIDが割り振られています。
特定のUSBデバイスが挿入されたときに、プログラムで処理をしたいときに使えるNode.jsのライブラリを公開しました。

https://github.com/TakutoYoshikai/usbkey

## 使い方
### インストール
以下の二つのコマンドを実行する。
“`bash
npm install -g TakutoYoshikai/usbkey

# ローカルのnode_modulesにもインストール
cd /path/to/project
npm install –save TakutoYoshikai/usbkey
“`

### USBデバイスの登録
このコマンドを実行した後、USBデバイスを挿入する。
“`bash
usbkey-register
“`
`./usbkey`というファイルが生成されます。これが登録されたUSBメモリを検知する、ハッシュ化されたパスワードのようなものです。

以下のJavaScriptファイルを用意し、好きな処理を追加する。

“`javascript:inde

元記事を表示

nodeアプリをさくらのVPS で動かす

忘備録です。

## OSインストール
https://manual.sakura.ad.jp/vps/os-reinstall/reinstall.html

「スタートアップスクリプト」 ・・・ なんか色々機能があって便利だった。必要なものを入れる。
「パケットフィルター設定」 ・・・ firewallの代わり? 必要なポートは開けておく
「サーバーへのSSHキー登録」

## 初期設定

“`terminal
ssh root@xxx.xxx.xxx.xxx
yum update
adduser 〇〇〇〇
passwd 〇〇〇〇
cd /etc/ssh
cp sshd_config sshd_config.old
vim sshd_config
“`
↓ここを変える
“`terminal:sshd_config
PermitRootLogin no
“`

“`terminal
systemctl restart sshd.service
“`

## 環境設定

“`terminal
yum install httpd
systemctl start httpd

元記事を表示

(再現度高め・無料)初学者のためのWEBアプリ公開マニュアル

初学者ながらjavascriptでアプリを作成して誰かに見せたいが、
・公開をする方法がわからない・・・
・ものすごく公開するまでが大変な気がする・・・
というのが悩みでした。

しかし、簡単なNode.js(express)の記述と、GitHUbへのpushさえできてしまえば、Herokuでそこそこ簡単に公開できることを学びました。
スマホにも対応してくれます。

実際の公開方法を細かく説明いたします。

■注意:
・筆者自身、GitHubをよく理解しておらず、Herokuもよく理解していないため、GitHUbにpushすると、Herokuで公開できるという認識しかございません。
・コードを簡潔に理解するため、非同期処理を用いません。
・個人情報を含むアプリはpushしないでください。
・GitHUbへのpushに相当てこずりました・・・正しい方法でない可能性があります。

■実行環境
・windows10 pro
・vscode
・node.js(16.17.0 LTS)—要インストール
・git bush—要インストール
(ターミナルはgit bushを使ってください)

元記事を表示

誰にも見つからない暗号通貨の秘密鍵の隠し方

暗号通貨の秘密鍵を管理するときに、どこに保管するかは迷うところ。紙に書く人もいれば、iPhoneのメモ帳に保存しておいたり、どこに保存していても盗まれてしまう可能性があります。

どこに保管していたら、見つかりにくいだろうと考え、その一つの選択肢として、コマンドラインツール「dirsha」を開発しました。

![スクリーンショット 2022-08-26 0.42.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149717/5761e0c2-1e99-e8ce-b011-96c0bd63b849.png)

これはただのnpmパッケージがインストールされたnode_modulesディレクトリですが、ここにEthereumの秘密鍵が隠されています。この中のどれかのディレクトリに記録されてる訳ではありません。

### インストール
“`bash
npm install -g TakutoYoshikai/dirsha
“`

先ほどのnode_modulesの中で以下のコマンドを実行する
“`b

元記事を表示

(メモ)nodejsのアップグレード(12から16に。RHEL環境)

nodejsのバージョンを12から16に上げました。
Red Hat Enterprise Linux の環境です。
やり方をいつも忘れるのでここにメモ。

“`
sudo curl -sL https://rpm.nodesource.com/setup_16.x
sudo yum remove -y nodejs npm
sudo yum list available nodejs
sudo yum install nodejs
“`

nvmなどをインストールしておきたくないので、一度リムーブして再度入れなおす、ということで対応しています。
(私の環境だとsudoをしないとインターネットアクセスができなかったのでcurlの前などもsudoをしています。)

元記事を表示

GoogleAppsScriptは何で書くべきか(公式orローカル / JSorTS )

# 初めに

ライブラリ等でメリットデメリットが大きく変わってくるため、
大雑把になっています

# GoogleAppsScriptを書く手段

– 公式サイトで作成する
– 公式エディタ([https://script.google.com](https://script.google.com))でJavaScriptで記載する
– ローカルで作成する(EditorはVSCode)
– JavaScriptで記載し、そのままclaspでpushする
– TypeScriptで記載し、そのままclaspでpushする(自動でトランスパイルされる)
– JavaScript/TypeScriptで記載し、webpack等を使ってビルドして、claspでpushする

# それぞれのメリット・デメリット

## 公式エディタを使って、JavaScriptを使う

### メリット

– ライブラリ,サービスの使用やデプロイを、GUIで書ける
– JSDocで型を記載できる(paramとreturnしか使えない)
– 一応Gitが使える(拡張機能をインストー

元記事を表示

hrefやsrc属性のパス名の修正漏れをチェックするために属性値をリストするコマンドを作った

imgタグのsrc属性やaタグのhref属性などに書くパス名を本番環境ではサイトルート相対にしておく必要があったので、ちゃんと書き換えたかHTMLファイルを提出する前にチェックしたい。他にもimgタグのalt属性に書き忘れがないかなども。

こんな時、HTMLエディタ上でファイル内を検索しながらチェックするのが面倒だったので、HTMLファイルからタグの属性と設定値をリストに出力するコマンド[list-attr](https://github.com/kazhashimoto/list-attr)をnode.jsで作りました。

https://github.com/kazhashimoto/list-attr

## 使い方
以下の例で、入力のサンプルに使ったindex.htmlは記事の最後にあります。

### imgタグのsrc属性やalt属性をリストする
コマンドにオプションを指定しない場合は、imgタグのsrc属性とalt属性を抽出します。

“`bash
list-attr index.html
“`

list-attrコマンドからの出力は属性が1行につき1個ずつ表示

元記事を表示

UE AIメモ

大体こんな感じ?

↓を確認する

**Composite**でAIの処理の流れを作成する
**Task**で基本的にやらせたいことを作成する
**Service**でBlackboardのデータ更新を監視する
**Decorator**でTaskが十港可能か判断する

# Composite
>Composite ブランチのルートを定義し、そのブランチの実行方法の基本的なルールを定義するノードです。デコレーター を適用すると、ブランチへのエントリの変更や、実行中にキャンセルができるようになります。また、コンポジットの子が実行されている場合にのみアクティブになる サービス を追加することもできます。

## Selector
処理を選択する

## Sequence
処理を順番に行う

# Task
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/

元記事を表示

blastengineのNode.js SDKで利用状況を取得する

blastengineは開発者にとって使いやすいメール配信サービスを提供しています。まだサービスローンチしたばかりでSDKが不足しているのですが、徐々に開発を進めています。

現在Node.js向けにSDK開発を進めていますが、blastengineの利用状況を取得するAPIに対応しましたので、その使い方を解説します。

[blastengine – npm](https://www.npmjs.com/package/blastengine)

## ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34-46d181ee2924.jpeg)

## 送信元ドメインのSPFを設定する

送信元として利用するドメイン(自分で持っているもの)の設定を

元記事を表示

blastengineのNode.js SDKで一斉配信用メールアドレスをCSVアップロードする

blastengineは開発者にとって使いやすいメール配信サービスを提供しています。まだサービスローンチしたばかりでSDKが不足しているのですが、徐々に開発を進めています。

まず最初にNode.js向けにSDK開発を進めていますが、一斉配信用にメールアドレスをCSVアップロードできるようになりました。この記事ではその使い方を解説します。

[blastengine – npm](https://www.npmjs.com/package/blastengine)

## ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34-46d181ee2924.jpeg)

## 送信元ドメインのSPFを設定する

送信元として利用するドメイン(自分で持って

元記事を表示

Node.jsでUUIDを生成する(crypto.randomUUID)

# Node.js
Node.js 14.17.0からはサードパーティライブラリを使わずとも、標準のCryptoモジュールでUUID v4を生成できる。

“`js
const crypto = require(“crypto”);
console.log(crypto.randomUUID());
// => 49affff9-0216-46ed-902c-b3324fd6d094
“`

https://nodejs.org/docs/latest-v14.x/api/crypto.html#crypto_crypto_randomuuid_options

# ブラウザの場合
ブラウザでも `crypto.randomUUID()` でUUIDを生成できる。

https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID

# 上記2つとも使えない場合

[こちら](https://www.30secondsofcode.org/js/s/uuid-generator-node)で下記コードが紹介されて

元記事を表示

Angular+Socket.ioでチャットアプリを作る(UUIDでルームの作成)

Angularでチャットアプリ+αを作ろうと検討中。

ほとんど全く何もわからないところから始めたので、いろいろ書いてとっておきたいことはあるが、忘れてしまったので、余裕があったら…

ちなみに、開発環境は
Windows 11(64bit)
VS Code
Node.js
Angular(バージョンは忘れた)

本番環境は
Cent OS(たしか8)
Node.js
Apache

こんなところです。
AngularでビルドしたWebアプリケーションは、Apacheで動くようにビルドされるので、本番環境ではApacheがあれば動きます。
自分は開発して、`ng serve`を使ってlocalhostでテスト(?)して、テストが終わったら、`ng build`でビルドして、出来上がったものをWinSCPで本番環境の`/var/www/html/`下にできたファイルをまとめて置いて、あとはアクセスするだけ、という認識です。
本番環境のNode.jsは主にsocket.ioを使った双方向通信の実現のためにアクセスするサーバとして用意しています。
なお、DBは導入予定で、MEANスタック

元記事を表示

jest で uuid がインポートされているファイルを読み込むとエラーになってしまう。

## 環境
– nodejs: 14.17.6
– uuid: 8.3.2
– nextJs: 12.1.0
– typeScript: 4.6.2

## エラー内容
uuid パッケージが ECMAScript に対応していないのが原因かな??
“`sh
● Test suite failed to run

Jest encountered an unexpected token

Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.

Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel c

元記事を表示

OTHERカテゴリの最新記事