Node.jsで実行中の処理の行番号や関数名を取得する方法 令和最新版(Node.js v22.9.0以降のgetCallSite)

はじめに

これまでNode.jsで行番号や関数名を取得する際は、わざと例外を発生させてスタックトレースから値を拾ってくる方法がよく使われていました。
Node.js v22.9.0からは getCallSite() というAPIが使えるようになったので、今後はこっちを使う方が良さそうです。

続きを読む

Captured Surface Control APIを使ってWebRTC経由で画面共有の遠隔操作をする

はじめに

Captured Surface Control APIを利用すると、共有中の画面に対するスクロールやズームの操作をJavaScriptで行うことができます。
この機能の何が嬉しいのかと言うと、オンラインでプレゼンをしているときに発表者以外の参加者がスライド送りを担当したり、miroを使ったミーティング中に参加者全員が共有中の画面をズームをしたりできるようになります。
今回は、Captured Surface Control APIとWebRTCのDataChannelを組み合わせて、画面共有中にリモートからスクロールの操作をできるサンプルを作ってみたので、つまづいたポイントなどをブログに残しておこうと思います。

続きを読む

JSONのシリアライズ・デシリアライズ(stringify・parse、Marshal・Unmarshal、dumps・loads、to_string・from_str、toJson・fromJson)チートシート

はじめに

毎回どれがどれだっけとなるので備忘録としてメモしておきます。

シリアライズとデシリアライズ

JSONの処理において、オブジェクトをJSON文字列に変換する処理の方が「シリアライズ(Serialize)」です。
オブジェクトは一般的にはkeyとvalueのペアが含まれており、構造化・階層化がなされています。
これを文字列という、メモリ上で直列に保持される単一の値に変換するため、直列化(シリアライズ)という単語によって表現されているようです。

一方のJSONの文字列をオブジェクトに変換する方は「デシリアライズ(Deserialize)」です。
これはシリアライズの逆で、JSON文字列をオブジェクトに変換します。

続きを読む

一関高専の近くにかつて存在した温泉について調べた

はじめに

私は、趣味でよく昔の地図や航空写真を眺めているのですが、今昔マップ on the webで一関高専の周辺を眺めていたところ、大正2年の地図に温泉の記号が書かれていることに気づきました。
このエリアに温泉があったという話は聞いたことがなかったので、詳細について調べてみることにしました。

続きを読む

CloudfalreなどのCDNを利用している場合にCDNを迂回してOriginサーバーにリクエストを送る方法

はじめに

CDNサービスを利用している場合、通常は名前解決後のIPアドレスCDNサービスのものとなってしまうため、OriginサーバーへのリクエストはCDNサービスを経由したものとなります。
動作確認などのためにOriginサーバーに直接リクエストを送りたい場合は、リクエストを送る際にオプションを設定することで、CDNを迂回してOriginサーバーにリクエストを送ることができます。

続きを読む

Drizzle ORMでオプショナルな値を元に検索条件を指定する方法

はじめに

DBのレコードを取得する際、基本的には全件を取得するが、オプショナルな引数が指定されている場合はその値を条件として検索したい。というケースがあるかと思います。
ORMとしてDrizzle ORMを使っている場合にそのような処理を書く良い感じの方法が公式のドキュメントからは見つけられなかったので、調べて見つけたやり方をメモしておこうと思います。

続きを読む

Dependabotがpath_dependencies_not_reachableのエラーでPull Request作成に失敗した時の解決方法

はじめに

Dependabotの設定をしているにもかかわらず、セキュリティアップデートのPull Requestを作ってくれなかった時の原因と解決方法です。

続きを読む