- 0.0.1. obnizでタクトスイッチ制御メモ
- 0.0.2. Nest.jsで複数インスタンスでhttp通信して、トークン更新する
- 0.0.3. Node.js REPLでuuid v7を生成する
- 0.0.4. Node.jsのインストール確認コマンド
- 0.0.5. `Error: spawn node-gyp ENOENT`の解消方法
- 0.0.6. TJBot zero 再始動 (Node-RED de OpenCV (顔認識まで))
- 0.0.7. Dockerでjavascriptの自動テスト環境を作る
- 0.0.8. [WSL2 Ubuntu] nvmからasdfへの移行
- 0.0.9. Node.jsでMicrosoft Graph APIのアクセストークンをMicrosoft Entra ID(AzureAD)で作成したアプリケーションのクライアントシークレットを利用して取得する
- 0.0.10. 質問システムのポートフォリオ解説(React+Express)
- 1. 概要
- 2. 開発環境
- 2.0.1. 1.質問書き込む
- 2.0.2. 【メモ】自分のQiita記事のURL取得して、ポートフォリオに載せたい!
- 2.0.3. 【Node.js】ethers.jsでトークンを送信する
- 2.0.4. AWSのInspectorでSBOM Exportしてみた 前編
- 2.0.5. jestの公式ドキュメント見ながらテストしてたが、エラー出た
- 2.0.6. React 基本的な事項を記録
- 2.0.7. PM2でerroredのまま動かなくなった場合
- 2.0.8. 日常業務用にChatGPT(Azure OpenAI Service)とMicrosoft Teamsを連携する。
- 2.0.9. shift-jisのURLにaxiosでpostする
- 2.0.10. Thirdwebで作成したスマートコントラクトをデプロイするスクリプト作成方法
- 2.0.11. Python と Java と Go と Node.js と PHP と Ruby と TypeScript のサポート状況について (2023.10)
obnizでタクトスイッチ制御メモ
Node.jsから制御してます。
## 抵抗なしでプルアップ
obnizのプルアップ機能を使います。
“`js
const Obniz = require(‘obniz’);
const obniz = new Obniz(‘1234-5678’); //Obniz_IDobniz.onconnect = async () => {
obniz.io0.pull(“5v”); //IO0をプルアップ
obniz.io1.output(false); //IO1をGNDにobniz.io0.input(function(value){
console.log(“changed to ” + value);
});
}
“`## 抵抗入れるパターン
“`js
const Obniz = require(‘obniz’);
const obniz = new Obniz(‘1234-5678’); //Obniz_IDobniz.onconnect = async () => {
obni
Nest.jsで複数インスタンスでhttp通信して、トークン更新する
## やりたいこと
– interceptorsを利用して、トークンのキャッシュがある場合はセットする
– interceptorsを利用して、401が返って来た場合は、トークンを取り直す
– トークン取得関数はメモ化する
– APIの取得結果は一定時間キャッシュする## 参考
– Axios Interceptor を使用して401が返ったときにトークン(JWT)を更新する|tanoshima https://zenn.dev/tanoshima/articles/db552b7962086a
– “NestJS tip: how to inject multiple versions of the same provider into one module (e.g.: many Axios instances)” by Micael Levi L. C. https://dev.to/micalevisk/nestjs-tip-how-to-inject-multiple-versions-of-the-same-provider-into-one-module-eg-ma
Node.js REPLでuuid v7を生成する
https://www.npmjs.com/package/ui7
“`
user@USERnoMacBook-Pro ~ % node
Welcome to Node.js v18.16.0.
Type “.help” for more information.
> const uuid = await import(‘ui7’);
undefined
> […Array(10)].map(() => uuid.v7());
[
‘018b26e1-533d-71a1-bb1d-e49ba6999e88’,
‘018b26e1-533e-7772-8eb0-eb6bcc3f1a54’,
‘018b26e1-533e-78d5-bc56-4a7c59de5fa7’,
‘018b26e1-533e-714c-8387-e900239a42be’,
‘018b26e1-533e-78df-af39-67008058b143’,
‘018b26e1-533e-7664-a844-0bfbe248b12b’,
‘018b26e1-533e-7b4f-b93
Node.jsのインストール確認コマンド
# 概要
Qiita CLIを使用し,記事をGitHubリポジトリで管理しようとした際に躓いたことを記載する。# 躓いたこと
## 「Node.jsのインストール確認」
参考URL2に記載してあるとおりにインストール後,Node.jsインストール確認のためにコマンドプロンプトから「node-v」や「npm-v」を入力した。しかし,「’node-v’ は,内部コマンドまたは外部コマンド,操作可能なプログラムまたはバッチファイルとして認識されていません。」が表示した。
## 原因
バージョン確認コマンドが間違っていた。
誤:node-v (「node」と「-v」の間に半角スペースなし)
正:node -v (「node」と「-v」の間に半角スペースあり)
誤:npm-v (「npm」と「-v」の間に半角スペースなし)
正:npm -v (「npm」と「-v」の間に半角スペースあり)# 分かったこと
1. Node.jsやnpmのバージョン確認コマンド:「node -v」と「npm -v」
→「V18.18.0」や「9.8.1」などと出力されればOK# 参考URL
1. [
`Error: spawn node-gyp ENOENT`の解消方法
# エラー内容
`docker build`時に出たエラーです。
“`
Error: spawn node-gyp ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:284:19)
at onErrorNT (node:internal/child_process:477:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Emitted ‘error’ event on ChildProcess instance at:
at ChildProcess._handle.onexit (node:internal/child_process:290:12)
at onErrorNT (node:internal/child_process:477:16)
at process.processTicksAndRejections (node
TJBot zero 再始動 (Node-RED de OpenCV (顔認識まで))
# この記事は
https://qiita.com/ssakaigawa/items/3e7ee0f2de421a3d9a392018 年ごろに発足した TJBot コミュニティ。ハンズオンイベントなどを通じて工作や IBM Cloud を体験できるステキなコミュニティです。
しかし、コロナ禍の影響でハンズオンイベントは休止…。さみしい時間を過ごしてるなかで遂に、TJBot zero コミュニティの活動が再開することになりました。イベントなどを再開するにあたり、TJbot zero 用のSDカードイメージを見直すことになりました。
環境に関する課題は以下の通りです。– Node-RED のバージョンが低い(Ver 1.0.1)
– すでに利用できない node や クラウドサービスがあるわたしもコミュニティの一員として「 Node-RED のバージョンが低い」の解決にチャレンジしました。
その手順の備忘録になります。# 準備
[コミュニティーのGitHubレポジトリ](https://github.com/tjbotfan/tjbotzero-raspbian
Dockerでjavascriptの自動テスト環境を作る
# 概要
プログラミングすることがめっきり少なくなったのですが、プログラミングはとても好きで、図書館でこちらの本を借りてきました。
## nvmによるNode.js及びnpmの削除
– こちらの記事を一部(.bashrcなどに)読み替えればOK!
– 尚、`$ rm -rf $NVM_DIR` により、nvm自体も削除されていますhttps://zenn.dev/doshimaf/scraps/5d80e1190c8261
## asdfの導入
– 未だ入っていないなら `$ sudo apt install curl git`
– `$ cd` としてホームディレクトリへ移動
– `$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf –branch v0.13.1`(バージョンは下記公式サイトを参照して下さい)
– ~/.bashrc の最後尾に次の記述を追加
“`bash:.bashrc
# asdf setting (Bash & Git)
. “$HOME/.asdf/asdf.sh”
. “$HOME/.asdf/completions/asdf.bash”
“`
– `$ source ~/.bashrc` として反映
– ~/.d
Node.jsでMicrosoft Graph APIのアクセストークンをMicrosoft Entra ID(AzureAD)で作成したアプリケーションのクライアントシークレットを利用して取得する
タイトルが長くなってしまった…。
いきなり余談だが[Azure Active DirectoryがMicrosoft Entra IDに名称変更](https://www.microsoft.com/ja-jp/security/business/identity-access/microsoft-entra-id)したみたいだ…。Node.jsでMicrosoft GraphのAPIを使う時に、まず前段としてアクセストークを取得する必要があるのだが、[公式のチュートリアル](https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-console-app-nodejs-acquire-token)だと[msal-nodeモジュール](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node)を使う方法しか記載がなく、モジュールを使わずに取得する情報が見当たらなかったの
質問システムのポートフォリオ解説(React+Express)
概要
eduaasという質問システムを作成しました
![スクリーンショット 2023-10-09 18.05.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518441/5486acbb-7afc-b425-7c49-b531ba54a6e7.png)
ソースコード GitHub:
開発環境
フロントエンド:Node.js フレームワーク:React
バックエンド: Node.js フレームワーク:express
データベース: mysql2
現在ローカル環境で作成しています。1.質問書き込む
![スクリーンショット 2023-10-09 18.19.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518441/6ff1a036-7ab9-e27c-e1e2-56dfb96
【メモ】自分のQiita記事のURL取得して、ポートフォリオに載せたい!
## やりたくなった理由
– MERNでの開発方法のチュートリアルをUdemyで見て少し触った。
– Expressで自作も含めてAPIを管理したい。
– Udemyの中でaxiosを使っていたので、実験。
– Qiitaの記事をポートフォリオサイトに載せてみたい。## 実際にやったこと
1. Express,Reactのセットアップをそれぞれする。+ axiosも!
2. QiitaのAPIをつくる。=> .envにぶちこみ
3. 仮server.jsを作り書き込む“`javascript
require(‘dotenv’).config();
const express = require(‘express’);
const cors = require(‘cors’);
const axios = require(‘axios’);const app = express();
app.use(cors());const port = 5000;
app.get(‘/fetch-qiita-articles’, async (req, res) => {
【Node.js】ethers.jsでトークンを送信する
最近話題のweb3を使ったアプリケーション作りたいと思い、とりあえずプログラムでトークンを送信することに挑戦しました。
公式のコードを参考にやってみました。
https://ethereum.org/ja/developers/tutorials/send-token-etherjs/ほぼこの通りなのですが、このままではエラーが出るので修正しました。(後述)
## 動作確認環境
– macOS Ventura
– Node.js v20.0.0## 準備
### Remix(トークン作成)
作り方はこちら
https://qiita.com/tatsuya1970/items/b68da529bcf1a92c5d10トークンを作成したら、トークンのコントラクトアドレスを控える。
そして、トークンのABIをコピーし、
AWSのInspectorでSBOM Exportしてみた 前編## 導入
– 経産省の[「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引」](https://www.meti.go.jp/press/2023/07/20230728004/20230728004.html)にも記載されている通り、自身が利用するOSSライブラリに対して、依存関係を含むコンポーネントや脆弱性を一覧管理する手段として、SBOMが注目されています。
– 本記事について、
– 前編ではAWSのマネージドサービスである[Amazon Inspector](https://aws.amazon.com/jp/inspector/)のSBOMエクスポート機能を用いて、SBOM ファイルをS3上に出力します。
– 後編では[Amazon Athena](https://aws.amazon.com/jp/athena/)を用いてSBOMファイルに対する分析を実施したいと思います。(近日公開予定)## Amazon InspectorによるSBOM出力
### スキャン対象の準備
– SBOMスキャン
jestの公式ドキュメント見ながらテストしてたが、エラー出た
こんにちは、ゆせです。
今回は、案件でjestを使用するとのことだったので、勉強としてjestの公式Docを見ながらやっていました。が、エラーが出たので、もし同じエラーにぶち当たった人に向けて参考になればという思いで記事にしようと思います。## 本題に入る
以下が、エラー文になります。
“`console
$ npm test
> study-jest@0.1.0 test
> jestError: Jest: Failed to parse the TypeScript config file /WorkSpace/NextSpace/study-jest/jest.config.ts
Error: Jest: ‘ts-node’ is required for the TypeScript configuration files. Make sure it is installed
Error: Cannot find package ‘ts-node’ i
React 基本的な事項を記録
# npm, yarn
javascript パッケージ管理ツールnpm : node package manager
ーnode.js
ーreact.js
で使用する大半のパッケージをインストールできる。yarn :
Facebookで作ったパッケージ管理ツール
npmよりもキャッシング、保安、信頼性が改善された。
npm install -g yarn : yarn install できる。*node.js download install
https://nodejs.org/en/download/releases# 駆動方法
node -v : node.js version 確認
npm -v : npm version 確認
yarn -v : yarn version 確認*プロジェクトフォルダの中で
npm i -g create-react-app*プロジェクトフォルダ abc を作って
npx create-react-app abcyarn start : react サーバーを実行
ブラウザ localhost:3000
PM2でerroredのまま動かなくなった場合
### PM2
プロジェクト構成を更新した際、何度`pm2 restart`かけても`errored`のまま動かなくなった。
サイト上のHTTPステータスは502で表示されるみたい。![status:errored](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/990851/d48bf0c1-1852-82bd-b872-03aff71a1b49.png)
### 結論
一度`pm2 delete $var`する。
pm2は一度起動したサービスは`stop`してもサーバー自体が停止しても覚えているようで、サービス構成用のJSONファイルの中身が更新されていなかったことが原因だった。
デバッグは`pm2 logs`が役に立つ。
https://stackoverflow.com/questions/51300544/getting-error-when-trying-to-launch-node-js-app-with-pm2-cluster
日常業務用にChatGPT(Azure OpenAI Service)とMicrosoft Teamsを連携する。
# はじめに
最近は猫も杓子もChatGPTですね。
本文も、御多分に漏れずChatGPTです。ただし、機密情報を扱えるようにAzure OpenAI Serviceを利用します。
また、最近は日常業務にMicrosoft Teamsをご利用の方も多いと存じます。
本文では、日常業務で手軽にChatGPTをご利用可能なように、TeamsでメンションをするとChatGPTが受け答えをしてくれる仕組みを作ります。仕組みは簡単。TeamsにメンションをつけるとWebhookしてくれるOutgoing Webhookという仕組みがあるので、Webhoook先にAzure Functionsを用意しておきます。FunctionsからAzure OpenAIをHttp Request経由で呼び出します。言語にはNode.jsを使います。最近のNode.jsでは標準でfetchを使えるから便利。
図にすると以下のような感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25176/094b
shift-jisのURLにaxiosでpostする
“`js
const axios = require(‘axios’);
const Encoding = require(‘encoding-japanese’);function toSJIS(keyword) {
const unicodeArray = Array.from(keyword, char => char.charCodeAt(0));
const sjisArray = Encoding.convert(unicodeArray, { to: ‘SJIS’, from: ‘UNICODE’ });
return Encoding.urlEncode(sjisArray);
};async function test() {
const keyword = ‘あああ’;
const sjisKeyword = toSJIS(keyword);
const data = `param1=${sjisKeyword}¶m2=2`;
const response = await axios.post(‘http
Thirdwebで作成したスマートコントラクトをデプロイするスクリプト作成方法
# はじめに
Tihirdwebを使うとパパッとスマートコントラクトを作成、デプロイできて非常に便利ですね。
しかしスマートコントラクトのConstructorにパラメータがある場合、毎度GUIで設定するのは結構めんどくさくなってきます。特に複雑なパラメータを持ったコントラクトだったり、デプロイタイミングで初期設定用のトランザクションを流したい場合などはもはや苦行としか言えない状態になります。
そこで、デプロイスクリプトからデプロイする方法を紹介します。# 環境
Node.js、npmが必要になります。作業は以下バージョンで行いました。
“`
# node -v
v18.18.0
# npm -v
9.8.1
“`# Thirdwebでコントラクト作成
まずはThirdwebで適当なスマートコントラクトを作成します。
今回はERC20で作成しました。
“`
# npx third web create
“`実行すると作成するコントラクトの種類や名前の入力をせがまれるので以下で入力しました。
“`
# npx thirdweb create
Python と Java と Go と Node.js と PHP と Ruby と TypeScript のサポート状況について (2023.10)
オープンソース系のプログラム言語のセキュリティサポートの期限をまとめました。他の方の参考になれば幸いです。
# Python のサポート状況
Python は通常1年ごとにマイナーバージョンがリリースされます。マイナーバージョンはリリースされてから18ヶ月の間、バグ修正が行われます。バグ修正期間が終了すると、最初のリリースの5年先までセキュリティ修正が提供されます。セキュリティ修正期間中はソースコード形式で提供されます。サポートが有効な Pythonのバージョンは **3.8, 3.9, 3.10, 3.11, 3.12**です。3.8 のサポートは1年以内に終了する予定です。また 3.8, 3.9, 3.10 の最新版の macOS と Windows 向けのインストーラはありません。
|マイナーバージョン|最新版|初版リリース日|バグ修正の対応期間|セキュリティ修正の対応期間|
|—|—|—|—|—|
|**Python 3.12**|[3.12.0](https://www.python.org/downloads/release/python-312