- 1. [Node.js] Expressサーバーのタイムアウト時間を変更する
- 2. ESLint でプロジェクト独自のルールを設定する
- 3. REST API Design Best Practices を用いたAPI開発 #2 (APIのVersion管理)
- 4. 【M1Mac】nodebrewを使ってNode.jsをインストール(PATH通らなくて悩んでいる人へ)
- 5. REST API Design Best Practices を用いたAPI開発 #1
- 6. パスパラメータ”/:id(\\d)”はどういう意味? Node.js Expressのパスパラメータの設定の色々
- 7. Nuxt.jsでインクリメンタルサーチ
- 8. 仮想通貨ライブラリ ccxt
- 9. macOS Montoryでnoble(BLE)を使いたくてハマったところ #iotlt
- 10. Node.jsのトランスパイル時にESLintでエラーがあればBuild停止する設定をWebpackでやってみた
- 11. [Cloud Functions] FirebaseStorage に保存された画像の幅と高さを取得する
- 12. Slack AppでリクエストURLにLambda(Node.js)の関数URLを指定してYour URL didn’t respond with the value of the challenge parameterが出た時の対応
- 13. ワードクラウドを自作ニュースアプリに追加してみた
- 14. fish で n を使って node をインストールしたときにハマったこと
- 15. VSCodeで利用したいnodejsを指定してデバッグ実行する
- 16. [Electron] C++ addon (Native Node Module) を他PCに展開したとき、”Specified module could not be found” で動かない
- 17. Node.jsのバージョン管理ツールvoltaの使ってみる(windows)
- 18. Sequelizeで “SELECT count(DISTINCT(`user_id`))”を実現する
- 19. [BigQuery, Node.js] スプレッドシートをデータソースとする外部テーブルを作成する
- 20. Node.js でマルチアカウントの AWS リソース情報をファイル出力してみた
[Node.js] Expressサーバーのタイムアウト時間を変更する
# デフォルト
Expressでは、リクエストのタイムアウトデフォルト値が**2分**に設定されています。
# タイムアウト時間を設定
以下のように、オプションとして`timeout`が用意されています。そちらの値をミリ秒で指定することで、タイムアウト時間を変更することができます。
“`app.js
const express = require(“express”)
const app = express()
…
const appServer = app.listen(80, () => { })
appServer.timeout = 1000 * 60 * 5 // 5min
“`# 参考
※2022/5/19追記:見れなくなっちゃってますね
[Node.js サーバーのタイムアウトの時間を変更する](http://backham.me/blog/2019/10/24/node-js-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82
ESLint でプロジェクト独自のルールを設定する
# はじめに
今となっては Node.js での開発などでは必須となったツール、 [ESLint](https://eslint.org/)。
インポートの順番を特定の順番にしたり未使用の変数に Warning を出したり、プロジェクトに必要なルールを設定することでコードの品質を一定に保つことができるスグれたツールです。
プラグインの機構も備えており、多くの開発者が様々なプラグインを組み合わせてルールを設定していることと思います。そんな ESLint ですがあらゆるユースケースに対応できるかというと必ずしもそうではなく、中には ESLint でカバーできていないプロジェクト独自のルールがあったりするのではないでしょうか。
この手の独自のルールというのは機械的にチェックすることができないと、レビューの時に余計なやり取りが生じたりプロジェクト新規参画者にとってもどういうルールがあるのかをいちいち読みに行かないといけなかったりとあまりいい状態とは言えません。
そこで今回は、そんな ESLint でカバーできないルールをプラグインを自作することでカバーできるようにしてみようと思います。
REST API Design Best Practices を用いたAPI開発 #2 (APIのVersion管理)
本記事は[REST API Design Best Practices を用いたAPI開発 #1](https://qiita.com/ryumura/items/9ee28d43ec27edc36e2e)の続きです。
## 動機
[REST API Design Best Practices を用いたAPI開発 #1](https://qiita.com/ryumura/items/9ee28d43ec27edc36e2e)と同様、以下の記事をFollowしながら手を動かすことで、少しでも昨今の流れ・感覚をCatch Upをすること、また自分自身のメモとして残すことを目的として記事に起こす。https://www.freecodecamp.org/news/rest-api-design-best-practices-build-a-rest-api/
## 本記事で実施すること
* APIのVersion管理
* URLを用いたVersion管理の実装
* サーバの起動とアクセス確認## 環境
[REST API Design Best Practices を用い
【M1Mac】nodebrewを使ってNode.jsをインストール(PATH通らなくて悩んでいる人へ)
1. Homebrewをインストールする
1. Homebrewのサイトのインストール欄に書かれているコマンドをコピーしてターミナル上で実行[Homebrew](https://brew.sh/index_ja)
2. 処理が終わった後に、最後らへんの行に指示が書かれているのでそれに従って実行する
3. Homebrewが正常に使えることを確認“`bash
% brew -v
% brew doctor
Your system is ready to brew.
“`2. nodebrewをインストールする
1. Homebrewを使ってインストール“`bash
% brew install nodebrew
“`2. PATHを通す
1. 以下の行を`~/.zsh
REST API Design Best Practices を用いたAPI開発 #1
## 動機
仕事で関わるシステムの大部分が企業の基幹系システムであることが多く、昨今はやりのJavaScriptによる開発手法にCatch Upしきれていないと感じている。
以下の記事をFollowしながら手を動かすことで、少しでも昨今の流れ・感覚をCatch Upをすること、また自分自身のメモとして残すことを目的として記事に起こす。https://www.freecodecamp.org/news/rest-api-design-best-practices-build-a-rest-api/
## 本記事で実施すること
* API開発に必要な基本的なフォルダ階層の作成
* npmを用いた必要なパッケージインストール
* EntryPointとなるindex.jsの作成
* サーバの起動とアクセス確認## 環境
* OS
Microsoft Windows 10 Enterprise 10.0.19042 N/A ビルド 19042* 開発環境
Visual Studio Code 1.64.2* ターミナル環境
GNU bash, version 4.4.23(1
パスパラメータ”/:id(\\d)”はどういう意味? Node.js Expressのパスパラメータの設定の色々
## はじめに
Node.jsのExpressでは、以下のようにパスパラメータに正規表現を使う事ができる。“`js
app.get(‘/posts/:id(\\d+)’, (req, res) => {
console.log(req.params.id);
res.end();
});
“`今回は、Expressのパスパラメータの書き方の設定方法について、その種類とその挙動(curlコマンドでAPIを呼び出した時のconsole.log(req.params.id)の出力内容)について実際に試してみて理解を深めてみたのでそれについてみていく。
※Expressのversionは4.17.1になります。
## Expressのパスパラメータの設定方法の種類
以下のように設定方法は何種類かあり、それらについてどのようなconsole.log(req.params.id)の結果が得られるか?を見ていく(他にも設定方法があるかもしれないが今回は以下の5種についてみていく事にする)。
を使いたくてハマったところ #iotlt
## mac+Node.jsでBLEを使いたい
IoT関連だとBLEを使いたいよねって話題が定期的に出てきますが、Node.jsでBLEを制御するnobleというライブラリがmacだと使えなくなっていた問題が数年前くらいにありました。
そこに対して、以前書いた記事で`@abandonware/noble`を使うと使えるようになったという話までが2021年春頃の話題です。
https://zenn.dev/n0bisuke/articles/01-nodejs-ble-noble-2021
## macOS Montereyで問題再発
[当時](https://zenn.dev/n0bisuke/articles/01-nodejs-ble-noble-2021)はBigSurだったのですがMontereyに上げてから試したらインストールでこける事象に。
“`bash
$ npm i @abandonware/noblenpm ERR! code 1
npm ERR! path /Users/n0bisuke/Documents/ds/playground/insma
Node.jsのトランスパイル時にESLintでエラーがあればBuild停止する設定をWebpackでやってみた
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n92d51d4445ff
**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**
## 補足
ソースコード全体は以下。https://github.com/yuta-katayama-23/node-express/commit/d7f4b09ade8c708fbcbb78fe3d804ec2c081b3c0
[Cloud Functions] FirebaseStorage に保存された画像の幅と高さを取得する
Flutter / Firebase のアプリ開発で実装したことを記事にしました。
誰かのお役に立てれば幸いです。アプリから、FirebaseStorage に画像を保存したときに、
その画像の width と height を取得する必要があったので、CloudFunctions 内で
画像サイズを取得する関数を作成しました。## パッケージの導入
画像サイズを取得するパッケージは、
https://www.npmjs.com/package/image-size
こちらを使いました。コードが、とてもシンプルです。
## 画像パスから width , height を取得
まずは、Storage に保存された画像のパスと一時的に保存するディレクトリのパスを
用意する必要があります。
一時保存のディレクトリに画像をダウンロードしてから、サイズを取得する流れです。“`typescript
import * as functions from “firebase-functions”;
import * as fs from “fs”;
import * as pa
Slack AppでリクエストURLにLambda(Node.js)の関数URLを指定してYour URL didn’t respond with the value of the challenge parameterが出た時の対応
## はじめに
Slackアプリの Event Subscriptions -> Enable Events -> Request URLでURL設定時にタイトルのエラーが出た場合の対応方法を整理します。
## エラー内容
“`
Your URL didn’t respond with the value of the challenge parameter.
“`– 内容としては`challenge` パラメータを指定してレスポンスを返していない、という意味です。
## 結論
Lambda(Node.js)の場合、以下のようなコードを書けばOKです。
`challenge` のみを含むレスポンスを返却するのがポイントです。“`index.js
exports.handler = async (event) => {
// TODO implement
console.log(`event=${JSON.stringify(event)}`);
const event_body_json = JSON.parse(event.body)
ワードクラウドを自作ニュースアプリに追加してみた
## はじめに
この間Node.jsで多言語Webニュースアプリ作ってみましたhttps://qiita.com/aibazhang/items/a53893c22c00d5962e62
https://www.multitrue.news
ニュースのタイトルと概要だけではつまらないので、単語の出現頻度によって直近一週間のニュースからワードクラウド作って、一目で世の中の出来事を確認できたら面白そうじゃないかと思いながら、ワードクラウドをニュースアプリに追加してみました。
## 詳細
ソースはこちらから確認できます。
https://github.com/aibazhang/multitrue
### 下準備
日本語と中国語などは英語と異なり、単語と単語の間スペースがないので、形態素解析が必要です。簡略化するために、今回は英語のワードクラウドのみを作ることにしました。人称代名詞や助動詞のような`Stop Words`をワードクラウドに出しても意味がないので、NLTKの英語`Stop Words`辞書を利用します。https://gist.github.com/sebl
fish で n を使って node をインストールしたときにハマったこと
nodeのインストール時に少し詰まったので備忘録として書いておこうと思います。
# 結論:
> fish での環境変数指定では `-x` オプションを忘れない!
“`shell:config.fish
set -x N_PREFIX $HOME/.n. # -x オプションが必要だった
set PATH $N_PREFIX/bin $PATH
“`# n をインストールし、 n lts でインストールに失敗する
n のインストールは Homebrew でインストールしました。
“`shell
brew install n
“`n ではインストール先が /usr/local/bin になっていますが、これだと権限でエラーになります。なのでインストール先を以下のように指定し、パスも通しました。
“`shell:config.fish
set N_PREFIX $HOME/.n
set PATH $N_PREFIX/bin $PATH
“`これでインストールはできるようになったはずなので安定版をインストールしてみます。
“`shell
n l
VSCodeで利用したいnodejsを指定してデバッグ実行する
nodejs上で動作するプログラムをVSCodeでデバッグ実行する際に、デフォルトだと`pwa-node`というVSCodeに組み込まれたnodejsが利用されます。
nodejsの特定のバージョンを指定して実行したい場合は、そのバージョンのnodejsをインストールし、`.vscode`フォルダにある`launch.json`ファイルで、`runtimeExecutable`にインストールしたnodejsのパスを指定することで実現できます。
“`
{
・・・
“type”: “pwa-node”,
“runtimeExecutable”: “/Users/someone/.nvm/versions/node/v12.14.0/bin/node”
}
“`
[Electron] C++ addon (Native Node Module) を他PCに展開したとき、”Specified module could not be found” で動かない
# 前段
ぼく「Electronでアプリ作ったよ!」
とも「module not found とか言われて動かないよ〜」
ぼく「はっ!?」と、なったときの対処方法です。
# チェック項目
## :white_check_mark: 対象Nodeモジュール(hogehoge.node)は、ちゃんと存在している?
対象Nodeモジュールが存在しないときは、Webpackに失敗しているのかも。
*.nodeを読み込むルールを確認します。
“`json:webpack.config.js
{
module: {
rules: [
{
test: /\.node$/,
loader: “node-loader”,
options: {
name: “[name].[ext]”
}
}
]
}
}
“`## :white_check_mark: 対象Nodeモジュール(hogehoge.node)に必要なDLLは入ってる?
`dumpbi
Node.jsのバージョン管理ツールvoltaの使ってみる(windows)
# はじめに
プロジェクトごとにNode.jsのバージョンを切り替えるツールについてwindows環境で**volta**が良さそうだったため、使ってみました。voltaを使えば、複数プロジェクトでバージョンが違うNode.jsプロジェクトがあった場合に、手動で切り替えなくても、プロジェクトを移動することで自動的にバージョンが切り替わります。
### インストール方法
windowsでは、インストーラーが用意されているため、下のリンクからダウンロード可能です。
[voltaのインストール(windows)](https://github.com/volta-cli/volta/releases/download/v0.9.2/volta-0.9.2-windows-x86_64.msi)
### Node.jsのインストール
Node.js v15を試しにインストールしてみます。
“`bash
volta install node@15
node -v
v15.14.0
“`
最新のLTSリリースをインストールするなら指定する必要はありません。
“`
volta install
Sequelizeで “SELECT count(DISTINCT(`user_id`))”を実現する
Node.js + Sequelize で開発中・・・
重複したデータを除外したデータ数が欲しくなった。
「期間内にサインインしたユニークユーザ数が知りたい」とかそんな感じのこと。ドキュメント探すのに時間がかかったので、未来の自分と誰かのために書き残します。
## テーブル
こんな感じのテーブルを使う想定です。
“`sql
mysql> select * from access_logs;
+—-+———–+———+———+———————+
| id | tenant_id | user_id | type | created_at |
+—-+———–+———+———+———————+
| 1 | 1 | 2 | signin | 2022-04-13 15:55:50 |
| 2 | 1 | 1 | signout | 2022-04-13 15
[BigQuery, Node.js] スプレッドシートをデータソースとする外部テーブルを作成する
社内データがたくさんのスプレッドシートに分散している…というのは、あるあるな状況ではないでしょうか。例えば、期間Aのデータはスプレッドシート1にあり、期間Bのデータはスプレッドシート2にあり、期間Cのデータは…。そのように分散したデータをBigQueryに集約して、SQLで抽出、結合して、CMSやBIツールなどのアプリケーションに渡せたらできたら便利ですね。
ということで、今回はNode.jsのクライアントライブラリを使用して、BigQueryに外部テーブルを作成する方法についての記事です。
# そもそも外部テーブルとは
公式ドキュメントからの引用です。>外部テーブルは、標準の BigQuery テーブルのように機能するテーブルです。
[外部テーブル | BigQuery | Google Cloud](h
Node.js でマルチアカウントの AWS リソース情報をファイル出力してみた
使用している AWS リソース情報を一覧で確認したいことってありますよね。
単一アカウントであれば、以下の方法があります。https://dev.classmethod.jp/articles/tag-editor-seach-allregion/
https://dev.classmethod.jp/articles/cli-resource-search/
今回は、上記の方法のうち 2 つ目の記事を参考に、マルチアカウントの AWS リソース情報を json ファイルとして出力する Node.js プログラムを作成してみました。
# 前提
・AWS マルチアカウント構成である
・各アカウントにはスイッチロールすることができる
・スイッチロールの権限は `AdministratorAccess`
・[AWS CLI でスイッチロール](https://zenn.dev/mn87/articles/338b163a2f81cd)ができる状態である
・CLI からの呼び出しで MFA は使用していないなお、今回はマルチリージョンでの出力は行っていませんのでご注意ください。