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

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

【完走賞ゲット-10】gamecontroller.js を使って DualShock 4 を JavaScript で扱う

## はじめに
こちらは、[完走賞ゲットのため小ネタを毎日投稿しようとチャレンジする Advent Calendar 2022](https://qiita.com/advent-calendar/2022/youtoy) の 10日目の記事です。

12月に試していくつか記事を書いてみたりもした「[WebHID](https://developer.mozilla.org/ja/docs/Web/API/WebHID_API)」関連の調べものをしていて、そこからたどり着いた [Gamepad API](https://developer.mozilla.org/ja/docs/Web/API/Gamepad_API/Using_the_Gamepad_API)関連のライブラリ「[gamecontroller.js](https://github.com/alvaromontoro/gamecontroller.js/)」に関する話です。

これを、以下の記事でも扱っていた「DualShock 4」で試します。

●【完走賞ゲット-6】「WebHID DualShock 4 Demo」

元記事を表示

ゼロから Node.js + Express + MongoDB で爆速で REST API を作る

# 概要

Node.js + Express + MongoDB で REST API を作ってみます。
細かい説明は各リンク先を読んでもらうとして、**とにかく動くものを爆速で作る**というのが今回の目的です。

これらを組み合わせれば、例えば `/users/:id` というAPIでユーザ情報をDB取得からするというコードがこんなに簡単に書けます。

“`typescript
app.get(“/users/:id”, async (req, res) => {
const id = req.params.id
const users = await usersResource.find({ _id: id });
res.status(200).json(users);
});
“`

是非、一緒に手を動かしてやってみましょう。

なお、サンプルコードはこちらに置いてあります。

https://github.com/Nyanchu/sample-express-mongoose

# 前提

### 環境

* MacOS
* Homebrew

元記事を表示

今話題のChatGPTをPythonでいい感じに使ってみよう!

# 今話題の ChatGPT を Python でいい感じに使ってみよう!

すでにご存知の方も多いと思いますが、ChatGPT は一世を風靡している強力な自然言語処理(NLP)ツールです。人間のようなテキストの生成から、チャットボットやバーチャルアシスタントの構築まで、幅広い用途で利用されています。

ChatGPT の人気の理由の 1 つは、大量のテキストデータで学習させた強力なオープンソースの GPT-3 言語モデルの上に構築されていることです。これにより、ChatGPT は非常に現実的で一貫性のあるテキストを生成することができ、NLP に携わる人にとって貴重なツールとなっています。

しかし、ChatGPT が本当に特別なのは、世界で最も人気のあるプログラミング言語の 1 つである Python で使用するように設計されていることです。Python の基本的な知識があれば、誰でも簡単に ChatGPT をプロジェクトに組み込んで、その強力な機能を使い始めることができるのです。

この記事では、ChatGPT の詳細と、Python でどのように使用できるかを見ていきます。また、

元記事を表示

node js で JWT をエンコード・デコードしてみる

# コード例

“`js
const jwt = require(‘jsonwebtoken’)

const payload = {
id: 333,
name: “Alice”,
email: “example@example.com”
}

const token = jwt.sign(payload,’secret_signature’)
console.log(token)

var decoded = jwt.verify(token, ‘secret_signature’);
console.log(decoded)
“`

# 結果例

実行するたびにトークンは変わる(ドットで区切られた最後のゾーンが変わる)がデコード内容は同一になる。
ただしiatの値も毎回違う。

“`
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MzMzLCJuYW1lIjoiQWxpY2UiLCJlbWFpbCI6ImV4YW1wbGVAZXhhbXBsZS5jb20iLCJpYXQiOjE2NzA1OTk2NjB9.uC438ol

元記事を表示

【完走賞ゲット-9】Awesome WebHID というページを見かけて気になった話

## はじめに
こちらは、[完走賞ゲットのため小ネタを毎日投稿しようとチャレンジする Advent Calendar 2022](https://qiita.com/advent-calendar/2022/youtoy) の 9日目の記事です。

この 12月のアドベントカレンダー用に公開した記事でも何度か登場している HID に関する話です。その中でも、ブラウザで HID を扱う「WebHID」が絡む話になります。

## 今回の内容
WebHID周りの調べものをしていたところ、以下の「Awesome WebHID」というページを見かけました。

●robatwilliams/awesome-webhid: Curated list of resources relating to the WebHID (Human Interface Device) API
 https://github.com/robatwilliams/awesome-webhid
![Awesome WebHID](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

movie page

## evironment and etc..
– front end: react + apollo (not inclueded in this part)
– back end: graphql + express js + mongodb
– OS: macos big sur
– Others:
– nodejs
– npm
– nodemon: server gonna update with source automatically
– repo:
– [server-side](https://github.com/devbohan/movie_page)
## backend part

### server setup

– `mkdir workspace`
– `cd workspace; mkdir server; cd server`
– `npm install express`
– `npm install nodemon` (not required optional package but if not will became r

元記事を表示

【2022年版】playwrightでデバッグ実行する方法

## 経緯
playwright でブラウザ(Webアプリ)のE2Eテストを作成していました

その際に、
「あれ、うまくデバッグ実行できない・・・」
という状況におちいりました・・・

なお、
playwright を使っているということで、
Node.js、JavaScript(TypeScript)でE2Eテストを作成するときの話です

・・・

最近のWebアプリであればE2Eテストを作って毎日回したりするので
該当する人は割と多いんじゃないかなと思います

で、

playwright によるE2Eテストの実装時、

### デバッグ実行したいですよね!!

 

「ここでテストがコケるんだけど何が原因なのか調査したい」

「実際、ブラウザがどういう画面、状態なのか見たい」

・・・

こういうことあるある・・・

 

playwrightをnode_modules に追加して
コンソール上から実行しているだけではデバッグ実行はうまくできないです

エディタ(VisualStudioCode)からテストケースを選択してデバッグ実行、ブレークポイントを立ててステップ実行する方

元記事を表示

LambdaのランタイムVerUp(Node.js 16.x → Node.js 18.x)の課題と移行アプローチについて

# はじめに

本来はNode.js 16はLTSで2024/4までサポート期間がありましたが、OpenSSL 1.1.1のサポート終了に合わせて7ヶ月繰り上げられています。

https://nodejs.org/ar/blog/announcements/nodejs16-eol/

Lambdaを利用したサービスを相当数開発しており、2024年までは安定稼働させられると考えていた矢先に、早々(2023/09)にNode.jsのバージョンアップを検討しないといけないようです。

https://aws.amazon.com/jp/blogs/compute/node-js-18-x-runtime-now-available-in-aws-lambda/

幸い、Node.js 18のサポートは開始されいる。

移行に当たって、どれ位、コード修正なしで動作するか検証した所、多大な修正が必要だったので、バージョンアップは計画的に!という注意喚起と、誰かの参考になればという事でメモ書きします。

# バージョンアップ検証において分かった課題

+ バンドルされる「AWS SDK」のバー

元記事を表示

WSL2のubuntuをgatsbyの開発環境にする(他のフレームワークでも使える)

## ubuntu on wsl2を準備

1. WSL2を有効化してubuntuをインストールする(参照:[WSL2+ubuntu20.04: GUI化して使う方法](https://qiita.com/atomyah/items/887a5185ec9a8206c7c4))※ 特にGUI化する必要はないので「ubuntuにXRDPをインストール」以降の作業は必要ない。
1. すでにubuntu on WSL2があって、それを初期化したい場合は、Windowsの設定→アプリ→アプリと機能→***ubuntu 20.04 on Windows***の詳細オプションをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/5691804a-2fff-6d9f-f2d7-7e9ab382ab1b.png)
3.そしてリセットボタンをクリックすればあっという間に初期化される。
![image.png](https://qiita-image-store.s3.ap-northe

元記事を表示

Node.jsから乗り換え?JavaScriptランタイム「Bun」触ってみた

この記事は [ハンズラボ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/handslab) 9日目の記事です。

# Bunとは

JavascriptランタイムにはNode.jsやDenoがある中、最近[Bun](https://bun.sh/)が注目を浴びている…?!ということで気になったので触ってみます。

元々Jarred Sumnerさんがほぼ個人で開発されていたようですが(すごい)、2022年8月に[Oven社](https://oven.sh/)として起業しました。

Bunとはざっくりいうと、高速でJavascript開発に必要なものが全て揃っているオールインワンなJavascriptランタイムです。

## Node.jsにないもの、あります

Node.jsでは必要だったものがBunにははじめから備わっています。

– TypeScript & JSXからJavaScriptへトランスパイル
– tscやBabelがいらない
– JavaScript & CSSのバンドル化

元記事を表示

npm run devの実行時にthrow er; // Unhandled ‘error’ eventのエラーが出る時の対応

## 実際のエラー
“`bash
events.js:183
throw er; // Unhandled ‘error’ event
^

Error: listen EADDRNOTAVAIL 10.102.158.22:3000
at Object._errnoException (util.js:992:11)
at _exceptionWithHostPort (util.js:1014:20)
at Server.setupListenHandle [as _listen2] (net.js:1338:19)
at listenInCluster (net.js:1396:12)
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1505:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:10)
error Command failed with exit code 1.
i

元記事を表示

【コードリーディング】Node.js Pathモジュールのjoinメソッド成長記録(2009年〜2022年)後編

[前編](https://qiita.com/YY-EN40P/items/4c1ef279498d34126802)では、`join`メソッドの最新版のソースコードを読んで内部処理の実装を見ていきました。後編ではいよいよコミット履歴をたどりながら`join`メソッドがどのように成長していったのかを見ていきます。

## joinメソッドの全コミット履歴
| 日付 | メッセージ | 修正内容 | 行数 |
|:————-|:————————————————————|:———————————————|:——:|
| Apr 15, 2009 | everything is changed. i’ve waited much too lon

元記事を表示

Node-REDのサブフローからカスタムノードを作成する

この記事では、サブフローからNode-REDのノードの開発方法を紹介します。サブフローは、一般的なプログラミング言語の「関数」と同じ様にフローを再利用できる機能です。このサブフローを使用すると、Node-REDユーザは、フロー開発の知識のみを使用してカスタムノードを作成できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/fdb3417e-b0e6-710b-a4ea-0dfae717d5ce.png)

この手順では、サブフローの作成が最初のステップです。 サブフローをJSONファイルとしてローカルPCにダウンロードした後、JSONファイルをGitHubリポジトリに配置します。 その後、アップロードされたJSONファイルはGitHub Actionsによってカスタムノードを含むtgzファイルに変換されます。 最後に、生成されたtgzファイルをローカルPCにダウンロードし、それをNode-RED環境にインストールして、カスタムノードをテストします。

# 前提条件

元記事を表示

Node.jsのCLIツール作成で個人的に開発体験が良かった手法について

## この記事について

JavaScriptの学習のために暇な時間にNode.js上で動くCLIツールを作ったりしています。
以前にもパッケージを作ってみたりしていましたが、コードの管理がうまくいかずどんどんコードを書くのが辛くなってしまいました。

これまではClassを使ってオブジェクト指向っぽく書こうとしていましたが、自分自身のオブジェクト指向への理解の浅さやパッケージの規模が大きくないことも影響して

– 一つのClassに機能が集中しすぎて分割単位が分かりずらくなってしまう
– そこまでインスタンスを作らないのでClass自体の必要性があまり感じられなかった
– Classに対してのテストの難しさ

という問題を感じていました。

そんななかで改めてCLIツールの設計手法について自分なりに考えて再度整理をしてみました。
`n=1`でかなり主観的な内容が多く、まだまだ改善点も多いですがこれからCLIツールを作ってみようという人や参考程度に見る方の一つのサンプルとして記載させていただこうと思います。

### 目指したこと

以前のパッケージ開発の反省を踏まえ

– 粒度を細か

元記事を表示

12月になったのでクリスマスまであと何日か通知するDiscordBotを作る

# はじめに
もう1年も終わりですねー早い、
1年の締めくくりにネタ枠に走ってクリスマスまであと何日かを通知するBotでも作ろうと思います。
クリスマスまで、と書いていますが一部のコードを変えれば正月でもあなたの誕生日でもできますので、改良して使ってみてください

完成品はこちらです
https://github.com/KenCir/KurisumasuNotify

# 開発環境や使用するパッケージのバージョンなど
– NodeJS 16.16.0
– npm 8.11.0
– discord.js 14.7.1
– dotenv 16.0.3

# 環境構築
とりあえずプロジェクトフォルダ作ってフォルダ内で以下のコマンドを実行します
“`
npm init -y
“`

次に使うNPMパッケージをインストールします
“`
npm i discord.js dotenv
“`

# Botアカウントの設定
画像で囲ってある「MESSAGE CONTENT INTENT」をオンにします、これをしないと動かないです
![スクリーンショット 2022-12-08 19.00.48

元記事を表示

Though the “loose” option was set to “false” in your @babel/preset-env config, it will not be used for @babel/plugin-proposal-private-property-in-object since the “loose” mode option was set to “true” for @babel/plugin-proposal-private-methods.

# 起きたこと
下記を実行
“`console
$ npm run storybook
“`

なんかでた
“`console
Though the “loose” option was set to “false” in your @babel/preset-env config, it will not be used for @babel/plugin-proposal-private-property-in-object since the “loose” mode option was set to “true” for @babel/plugin-proposal-private-methods.
The “loose” option must be the same for @babel/plugin-proposal-class-properties, @babel/plugin-proposal-private-methods and @babel/plugin-proposal-private-property-in-object (when they are

元記事を表示

UNIX パイプで分子生物学実験

この投稿の趣旨は簡単な生物学的現象や分子生物学実験を UNIX コマンド上で再現することです。生物学に馴染みのない方はまず以下のページを見ていただくと良いかもしれません。

https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%B3%E3%83%88%E3%83%A9%E3%83%AB%E3%83%89%E3%82%B0%E3%83%9E

https://ja.wikipedia.org/wiki/%E5%88%B6%E9%99%90%E9%85%B5%E7%B4%A0

## ランダムな塩基配列を生成

生物の遺伝情報は DNA 分子中のアデニン・チミン・グアニン・シトシンの4つの塩基の配列としてコードされています。それぞれが `A`、`T`、`G`、`C` の4文字に割り当てられているものとして、次のコマンドでランダムな塩基配列が生成され標準出力に書き出されます。

“`shell
# DNA
$ cat /dev/urandom | base64 | tr -dc ‘ATGC’
# RNA
$ cat /dev/urandom

元記事を表示

大量データの処理をCloud Run x Cloud Tasksで解決した話

この記事は株式会社ビットキー Advent Calendar 2022 8日目の記事です。
Home Product所属の @uminoooon18 が担当します。

# はじめに

この記事では、システム間の大量データ連携処理を Cloud Run, Cloud Tasks などのGCPサービスを利用して構築した際にハマった事と、改善のために工夫した事を紹介します。

Cloud Run, Cloud Tasks 何それおいしいの?という方や、
GCPのサービスで大量処理を取り扱うための知見を深めたい方の助けになれば幸いです。

## 目次

[1. Cloud Run, Cloud Tasksとは](#1-cloud-run-cloud-tasks-とは)
[2. 今回のシステム間データ連携に求められる要件](#2-今回のシステム間データ連携に求められる要件)
[3. システム全体像](#3-システム全体像)
[4. ハマったポイント](#4-ハマったポイント)
[5. 解決策](#5-解決策)

# 1. Cloud Run, Cloud Tasks とは

## Cloud R

元記事を表示

App Service on Linux 上の Node アプリケーションを VS Code でリモートデバッグする方法

# はじめに

App Service on Linux Node Runtime では、[リモートデバッグ機能がプレビュー提供](https://learn.microsoft.com/ja-jp/azure/app-service/configure-language-nodejs?pivots=platform-linux#debug-remotely)されています。
VS Code を使って簡単に App Service 上のアプリケーションにローカル環境のデバッガをアタッチすることができます。

# TL;DR

具体的な使い方は[VS Code の公式ドキュメント](https://code.visualstudio.com/docs/azure/remote-debugging) に載っています。
百聞は一見にしかずということで以下の5分ほどの動画を見るのが早いです。