2023年3月19日日曜日

AsyncLocalStorage + multerの落とし穴

 先日Async HooksとかAsyncLocalStorageの話をしましたが、ちょっとハマったところがあるのでメモ。

現象としては、Expressのファイルアップロードミドルウェアであるmulterを経由したときにAsyncLocalStorageが使えなくなる(getStore()がundefinedを返す)というものです。

この原因にたどり着くまでに切り分け等いろいろ苦労したんですが、まあそれは置いといて。

バグなのか仕様なのかよくわかっていませんが、どうもmulterを経由すると非同期コンテキスト(コールバックチェーンの親子関係)が切れてしまうようです。

解決方法は、ここにあるように非同期コンテキスト化するラッパー関数を作って、multerをラップしてやるとうまくいきました。

2023年3月12日日曜日

ChatGPTに回文を作ってもらった

 先日ChatGPTネタで記事を書きました。そのとき「ブログのネタに困ったらChatGPTに頼るかな」と書いたのですが、早速ネタに困ったので頼ってみました。

2023年3月5日日曜日

Node.jsのSingle Executable Application

 Node.js v19.7から、Node.jsファイルを単一の実行バイナリにできるようになったそうです。ElectronみたいにNode.js本体も同梱される感じなんでしょうか。

ただし現状では制約があり、OSはWindows/macOS/Linux、CPUはAMD64、そして単一のファイルのみとのこと。

単一のファイルのみということは、当面はnccとかのバンドラーで1ファイルにまとめてからバイナリ化という使い方を想定しているんでしょうかね。

2023年2月26日日曜日

ハイテンションなChatGPT

 史上最速で1億ユーザーを獲得したChatGPTですが、それも納得の精度。個人的にももちろん楽しく使わせてもらっています。

なんかテンションが上がってきたので、ChatGPTとハイテンションで会話してみました。といってもハイテンションなのはChatGPTだけです。

2023年2月19日日曜日

いまさら聞けないAsync Hooks

 Node.js v8あたりで追加されたAsync Hooksについて。タイトル通りいまさらなんですが、簡単な説明をします。

あまり詳しい説明はしません。

2023年2月12日日曜日

GitHubでコメント駆動CI

 アプリケーション開発でCIによる自動テストを行っているとき、CIの実行回数や実行時間を減らしたい場合があります。

どういうときかって?そらもうアレよ。コミット回数が多すぎるとか一回のCIに時間がかかりすぎるとかでCIサービスの時間上限にひっかかりそうなときです。

GitHub Actionsでのやり方を説明します。

ちなみに記事の前半は特別なことは何も書いていないので、この記事のタイトルにつられて来た人は「コメント駆動で動かそう」まで読み飛ばしても大丈夫です。

2023年2月5日日曜日

ChatGPTをレスバの末説得した

 最近、回転寿司業界がヤバそうですね。10年くらい前からバイトの悪ふざけが社会問題のようになっていましたが、最近は客の悪ふざけが目立つ印象です。昔からあったものがSNSによって可視化されただけなのかもしれませんが。

それとは全く関係ありませんが、最近はChatGPTがすごいですね。もちろん間違ったことを答えることもありますが、あまりにも自然な日本語で堂々と答えるので妙な説得力があります。チューリングテスト通るんじゃないのかと思ったらやっぱり通ってました

ちなみに今回は完全なネタ記事なので有用なことは一切期待しないでください。