CLOVER🍀

That was when it all began.

Node.js

Node.jsのRedisクライアントnode-redisとioredisの両方が、GitHubのredis organization配下になっていたという話

Node.jsでのRedisクライアントの有名どころといえば、node-redisとioredisかと思います。 どちらを使うか迷うところかなと思うのですが、この2つは両方ともGitHubのredis organization配下になっていることに気づいたので その他ちょっとしたことと一緒にメ…

npmパッケージにTypeScriptの型定義が存在するかどうかは、npmjs.comを見るとわかるという話

全然知らなかったので。 npmパッケージを探したり、パッケージを公開するのにはnpmjs.comというサイトを使います。 npm | Home このパッケージの表示に、npmパッケージ自身にTypeScriptの型定義が含まれているのか、それともDefinitelyTypedによって提供され…

RabbitMQのJavaScriptチュートリアルの「RPC」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「RPC」を扱います。 RabbitMQ tutorial - Remote procedure call (RPC) — RabbitMQ 今回で、この一連のお題は最後…

TypeScriptコードを直接実行したい(ts-node、esbuild-register、tsx)

これは、なにをしたくて書いたもの? Node.jsでソースコードを書く時は基本的にTypeScriptにしたいのですが、時々ちょっとしたスクリプトを書きたい時もあったりします。 そういう時は、ちゃんとした設定などは特に用意せず、さっと書いてそのまま実行したい…

AWS Lambda Powertools for TypeScript(Logger、Parameters)を試す

これは、なにをしたくて書いたもの? AWS Lambda Powertoolsというものを、ちょっと調べておきたいなということで。 AWS Lambda Powertools AWS Lambda Powertoolsというのは、サーバーレスのベストプラクティスに添えるように提供されている、ユーティリテ…

RabbitMQのJavaScriptチュートリアルの「Topics」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Topics」を扱います。こちらですね。 RabbitMQ tutorial - Topics — RabbitMQ Topics Fanout Exchangeでブロード…

OpenTelemetryのFaaS向けの機能とAWS Distro for OpenTelemetryの違い

これは、なにをしたくて書いたもの? OpenTelemetryのInstrumentationを見ていると、言語によってはServerless Function(FaaS)をサポートしているようです。 これをLocalStack上で試してみようと思ったのですが、うまく動かなかったので…そこに至るまでに…

Node.jsのデータベースマイグレーションツール、Umzugを試す

これは、なにをしたくて書いたもの? Node.jsのデータベースマイグレーションツールとしてUmzugというものがあるようなので、試してみようかなと。 Node.jsのデータベースマイグレーションツール Node.jsにおけるデータベースマイグレーションツールとしては…

Jestでテストが並列に動作していることを確認してみる

これは、なにをしたくて書いたもの? Jestはデフォルトでテストを並列に実行するというので、動作を確認しておきたいなと思いまして。 JestのCLIのオプションを確認する JestのCLIのオプションを見てみます。 Jest CLI Options · Jest 以下の2つの項目が関連…

AWS SAMのTypeScriptサポートが、いつの間にかGAになっていたという話

これは、なにをしたくて書いたもの? 前に、プレビュー版のAWS SAMのTypeScriptサポートを試してみました。 AWS SAMのTypeScriptサポート(プレビュー)をLocalStackで試す - CLOVER そして、ふとAWS SAMのTypeScriptに関するページを見ると、「プレビュー」…

RabbitMQのJavaScriptチュートリアルの「Routing」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Routing」を扱います。こちらですね。 RabbitMQ tutorial - Routing — RabbitMQ Routing 「Routing」では、メッ…

OpenTelemetryのNode.jsライブラリーをauto-instrumentations-nodeを使わずに組み込む(トレースのみ)

これは、なにをしたくて書いたもの? 前にNode.jsでOpenTelemetry(トレースのみ)を試してみました。 Node.jsでOpenTelemetryのトレースを試す - CLOVER この時、OpenTelemetryをアプリケーションに組み込むためのメタパッケージとしてauto-instrumentation…

Node.jsでOpenTelemetryのトレースを試す

これは、なにをしたくて書いたもの? 前にJavaでOpenTelemetryのトレースを試してみました。 https://kazuhira-r.hatenablog.com/entry/2022/02/11/005344 OpenTelemetryに慣れていきたいなと思うのですが、他の言語でも試してみようかなということで。 今回…

ESLintのコードスタイルルールとPrettierを合わせて使う時には、eslint-config-prettierを使う

これは、なにをしたくて書いたもの? JavaScriptでのリンターといえばESLint、フォーマッターといえばPrettierだと思います。 ESLintにはコードスタイルに関するルールも含まれており、これがPrettierと競合することがあります。これをなんとかする場合は es…

ioredisを使って、Node.jsからRedisへアクセスしてみる

これは、なにをしたくて書いたもの? Node.jsからRedisにアクセスする際に、以前node-redisを使ってみました。 Node.jsからRedisにアクセスしてみる - CLOVER これもだいぶ前の話ですが、今回はioredisを試してみたいと思います。 ioredis ioredisのGitHubリ…

npmパッケージのダウンロード傾向をnpm trendsで確認する

npmパッケージのダウンロードの傾向を確認するのに、npm trendsというサイトを使うとよさそうです。 npm trends: Compare NPM package downloads こういうサイトで、 こんな感じでnpmパッケージ名を入力するとサジェストされます。 サジェストされたnpmパッ…

LocalStack内のAWS Lambda関数から、LocalStackで動作している別のAWSリソースにアクセスするにはLOCALSTACK_HOSTNAME環境変数を使う

これは、なにをしたくて書いたもの? AWS Lambda関数を試す時にLocalStackをよく使うのですが、LocalStack内で動作するAWS Lambda関数内から、同じLocalStack上の リソースにアクセスする際の方法をよく忘れるのでメモしておくことにしました。 localhostで…

Node.jsで環境変数をファイルから読み込むdotenvを試す

これは、なにをしたくて書いたもの? Node.jsで環境変数をファイルから読み込むことができるdotenvというものがあるらしいので、試してみることにしました。 dotenv dotenvのGitHubリポジトリーは、こちら。 GitHub - joho/godotenv: A Go port of Ruby's do…

Serverless Frameworkの設定にAWS Systems Manager Parameter Storeを使ってみる(LocalStack利用)

これは、なにをしたくて書いたもの? Severless Frameworkのserverless.ymlでAWS Systems Manager Parameter Storeの値を参照できるみたいなので、試してみることに しました。 合わせて、AWS Lambda関数内からAWS Systems Manager Parameter Storeを参照す…

TypeScriptを使ってNode.jsの環境変数を型定義する仕組みを見て、名前空間と宣言のマージを確認する

これは、なにをしたくて書いたもの? TypeScriptを使ってNode.jsで環境変数を型定義する方法を調べると、だいたい以下のような記述が見つかるように思います。 declare namespace NodeJS { interface ProcessEnv { readonly MY_ENV: string; } } ここでMY_EN…

Ubuntu Linux 22.04 LTSに、Node.jsをNodeSourceのPPAからインストールする

これは、なにをしたくて書いたもの? 今までNode.jsのインストールにはnvmを使っていたのですが、手元では基本的には最新版しか使わないですし、バージョン自体を 切り替えることもそれほどないのでOSのパッケージマネージャーでのインストールに切り替えた…

RabbitMQのJavaScriptチュートリアルの「Publish/Subscribe」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Publish/Subscribe」を扱います。こちらですね。 RabbitMQ tutorial - Publish/Subscribe — RabbitMQ Publish/…

JavaScriptのMapやSetをJSONやObjectあたりと相互変換したいという話

これは、なにをしたくて書いたもの? JavaScriptのMapやSetをJSON#stringifyでJSON文字列にすると、思わぬ結果になったのでこのあたりをちょっとメモしておこうかなと。 こんな感じですね。 // Map test('apply JSON.stringify to Map', () => { const map =…

Node.jsでマルチプロセス(cluster、child_process)、マルチスレッド(worker_threads)を使ってみる

これは、なにをしたくて書いたもの? Node.jsでマルチプロセス、それからNode.js 10.5.0以降であればマルチスレッドが使えるようなので、興味がてら試してみることに しました。 Node.jsでマルチプロセス、マルチスレッド Node.jsでマルチプロセスを扱うには…

RabbitMQのJavaScriptチュートリアルの「Work Queues」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Work Queues」を扱います。こちらですね。 RabbitMQ tutorial - Work Queues — RabbitMQ Work Queues 最初のチュ…

Node.jsでPromise版setTimeout/setInterval(Timers Promises API)ってスリープや一定時間での繰り返し呼び出しを行う

これは、なにをしたくて書いたもの? Node.js v15からPromise版のsetTimeout、setIntervalが導入されているのですが、どこのモジュールなのかよく忘れるのでメモ。 Timers Promises API Promise版のsetTimeout、setInterval(とsetImmediate)は、timersモジ…

RabbitMQのJavaScriptチュートリアルの「Hello World!」をTypeScriptで試す

これは、なにをしたくて書いたもの? この前、Ubuntu Linux 22.04 LTSにRabbitMQをインストールしてみました。 Ubuntu Linux 22.04 LTSにRabbitMQをインストールする - CLOVER RabbitMQを見直すのとTypeScriptの学習も兼ねて、JavaScriptクライアントを使っ…

AWS SDK v3 Client mockでAWS SDK for JavaScript v3をモックする

これは、なにをしたくて書いたもの? AWS SDK for JavaScript v2の時には、モックライブラリとしてaws-sdk-mockがありました。 そういえば、AWS SDK for JavaScript v3の場合はどうなのかというと、AWS SDK v3 Client mockというものが存在しているようです…

Node.js+TypeScriptでSQLite 3を使う

これは、なにをしたくて書いたもの? 以前に、SQLite 3をPythonから使ってみました。 SQLiteをPythonから使う - CLOVER 今度はNode.js(とTypeScript)から使ってみようと思います。 SQLite 3 SQLiteとはなんだかった?というところから。 SQLite Home Page …

Serverless FrameworkでAWS Lambda関数をローカル環境でエミュレーションで動かす

これは、なにをしたくて書いたもの? これまでServerless Frameworkを使って作成したサービスをLocalStackにデプロイして動かしていましたが、デプロイせずとも動作確認する パターンも試しておきたいなと思いまして。 invoke localとgenerate-event 使うの…