Jest と Vue Test Utils による Vue コンポーネントのテスト

Vue CLI で作成した TypeScript 用の Vue プロジェクトに対して、Jest と Vue Test Utils(@vue/test-utils) を追加導入し、Vue コンポーネントのテスト(TypeScript で実装)を実施するようにしてみました。 今回は、Vue CLI の vue create 時に、Manually…

CDK と LocalStack でローカルに Lambda と DynamoDB の実行環境を構築

AWS CDK (Cloud Development Kit) を使って、ローカル環境の LocalStack に Lambda 関数と DynamoDB のテーブルを構築してみました。 下記のようなツールを使用し、CDK によるスタックと Lambda 関数ハンドラーは TypeScript で実装しました。 AWS CDK v1.10…

CDK で作った CloudFormation テンプレートをプログラム内からデプロイする

AWS CDK (Cloud Development Kit) では通常 cdk deploy コマンドを使ってデプロイ処理を実施します。 AWS CDK v1.98.0 これを cdk コマンドを使わずにプログラム内から実施できないか、以下の 2通りで試してみました。 (a) AWS CDK の API を利用 (b) AWS SD…

Amplify AppSync Simulator を直接使ってマッピングテンプレートを検証

Amplify AppSync Simulator は、AWS Amplify CLI に含まれているモジュールで、AppSync をローカル環境で動作確認するためのものです。(AppSync の GraphQL を処理する Web サーバーが起動するようになっている) ソースコードを見てみたところ、AppSync 用…

AWS Lambda のランタイム API サーバーを自作して関数ハンドラーをローカル実行

AWS Lambda では、(Lambda 関数の)ランタイムがランタイム API(ランタイムインターフェース)から呼び出しイベントを受け取って、関数ハンドラーを実行し、その結果をランタイム API へ返すような流れで処理が実施されているようです。 AWS Lambda 実行環…

Go言語で GraphQL - graph-gophers/graphql-go で Interface を試す

前回の graph-gophers/graphql-go を使って、GraphQL の Interface を扱ってみます。 ソースは http://github.com/fits/try_samples/tree/master/blog/20210125/ はじめに GraphQL には Interface と Union という類似の機能が用意されており、共通のフィー…

Go言語で GraphQL - graph-gophers/graphql-go で Query, Mutation, Subscription を試す

Go言語で GraphQL を扱うライブラリはいくつかありますが、今回は下記を試しました。 graph-gophers/graphql-go 文字列として定義した GraphQL スキーマを使うようになっており、それなりに使い易いと思います。 今回のソースは http://github.com/fits/try_…

Go言語でインターフェースのメソッドを列挙する

Go

Go 言語のリフレクションで型情報を扱う Type は以下で取得できます。 func TypeOf(i interface{}) Type 引数 i には値を指定する事になりますが、インターフェースの型情報を取得したい場合はどうするのか気になって試してみたところ、以下で取得できました…

イベントベースで考える在庫管理モデル

従来のイベントソーシングのような手法だと、特定の State(というよりは Entity かも)を永続化するための手段として Event を用いるというような、あくまでも State 中心の発想になると思います。 そこで、ここでは下記のような Event 中心の発想に切り替…

Docker の containerd ランタイムからイベントを受信

Docker の containerd ランタイムからイベントを受信する処理を Go 言語で実装してみました。 containerd 今回のコードは http://github.com/fits/try_samples/tree/master/blog/20201206/ はじめに ここでは、snap でインストールした Docker の containerd…

Node.js で GraphQL over gRPC 的な事をやってみる

gRPC 上で GraphQL を扱う GraphQL over gRPC 的な処理を Node.js で試しに実装してみました。 今回のコードは http://github.com/fits/try_samples/tree/master/blog/20201124/ はじめに GraphQL はクエリ言語なので基本的に通信プロトコルには依存していま…

Go言語と Rust で Mutex による排他制御

以下の 3通りを Go 言語と Rust でそれぞれ実装してみました。 (a) 排他制御なし (b) Mutex による排他制御 (c) RWロック(Readers-writer lock)による排他制御 サンプルコードは http://github.com/fits/try_samples/tree/master/blog/20201122/ Go 言語の…

Node.js で gRPC を試す

「gRPC Server Reflection のクライアント処理」では Node.js で gRPC クライアントを実装しましたが、今回はサーバー側も実装してみます。 gRPC on Node.js サンプルコードは http://github.com/fits/try_samples/tree/master/blog/20201115/ はじめに gRPC…

RLlib を使ってナップサック問題を強化学習2

局所最適に陥っていたと思われる 前回 に対して、以下の改善案 ※ を思いついたので試してみました。 より困難な目標を達成した場合に報酬(価値)へボーナスを加算 ※ 局所最適から脱して、より良い結果を目指す効果を期待 今回のサンプルコードは http://git…

RLlib を使ってナップサック問題を強化学習

ナップサック問題へ強化学習を適用すると、どうなるのか気になったので試してみました。 強化学習には、Ray に含まれている RLlib を使い、Jupyter Notebook 上で実行します。 Ray 0.8.7 今回のサンプルコードは http://github.com/fits/try_samples/tree/ma…

Deno から npm パッケージを使用する(Deno で fp-ts)

下記の方法を用いて Node.js / ブラウザ用 npm パッケージを Deno から利用してみました。 (a) Skypack の使用 (b) Deno Node compatibility の使用 npm パッケージは関数プログラミング用 TypeScript ライブラリの fp-ts を試すことにします。 fp-ts は Com…

Deno で GraphQL

GraphQL を Deno で試してみました。 https://deno.land/x に Deno 用の GraphQL モジュールがいくつかありましたが(基本的には GraphQL.js のポーティング)、ここでは GraphQL.js を直接使う事にします。 GraphQL.js v15.3.0 今回のサンプルコードは http…

rusty_v8 を使って Rust から JavaScript を実行

Node.js の製作者が新たに作り直した Deno という JavaScript/TypeScript 実行環境があります。 Deno の内部では、V8 JavaScript エンジンの呼び出しに rusty_v8 という Rust 用バインディングを使っていたので、今回はこの rusty_v8 を使って Rust コード内…

Rust で WASI 対応の WebAssembly を作成して実行

Rust で WASI 対応の WebAssembly を作って、スタンドアロン実行や Web ブラウザ上での実行を試してみました。 WASI(WebAssembly System Interface) は WebAssembly のコードを様々なプラットフォームで実行するためのインターフェースで、これに対応した …

Node.js のマイクロサービスフレームワーク Moleculer

Moleculer という名のなかなか期待できそうな Node.js 用マイクロサービスフレームワークを見つけたのでご紹介します。 Moleculer 0.14.2 ロードバランサー、サーキットブレーカー、メトリクス収集、トレーシング、キャッシュ機能等、多彩な機能を備えていま…

Ramda で入れ子のオブジェクトをフラットにする

Ramda を使って入れ子になったオブジェクトをフラットにする処理を考えてみました。 ソースは http://github.com/fits/try_samples/tree/master/blog/20200216/ サンプル1 まずは、以下のように入れ子になったオブジェクトを使って { item: { name: 'item-1'…

Odoo の在庫モジュールを JSON-RPC で操作2

前回 の続きで、今回は Odoo の在庫モジュールを JSON-RPC で操作し在庫移動(顧客への出荷)を処理してみます。 ソースは http://github.com/fits/try_samples/tree/master/blog/20200112/ 在庫管理 Odoo の画面では在庫移動(顧客への出荷等)を以下のよう…

Odoo の在庫モジュールを JSON-RPC で操作1

Python で実装されたオープンソース ERP である Odoo の在庫モジュールを JSON-RPC を使って操作してみました。 Odoo 13.0 ソースは http://github.com/fits/try_samples/tree/master/blog/20200112/ はじめに Docker で PostgreSQL と Odoo を実行しておき…

KMongo でデータクラスを setOnInsert する

KMongo でデータクラスをそのまま setOnInsert する方法を考えてみました。 KMongo 3.11.2 ソースは http://github.com/fits/try_samples/tree/master/blog/20191217/ はじめに MongoDB は {upsert: true} で update や findAndModify する際、指定の条件に…

gRPC Server Reflection のクライアント処理

gRPC Server Reflection を呼び出す処理を Node.js で実装してみました。 ソースは http://github.com/fits/try_samples/tree/master/blog/20191008/ 事前準備(サーバー実装) まずは、gRPC Server Reflection を有効にしたサーバー処理を用意します。 Node…

Pulumi を使って Kubernetes へ CRD を登録

Pulumi は JavaScript・Python・Go のようなプログラミング言語で Infrastructure as Code するためのツールです。 今回は、この Pulumi を使って Kubernetes(k3s を使用)へカスタムリソースを登録してみます。 Pulumi k3s(Lightweight Kubernetes) ソー…

Jsonnet で YAML を生成

Jsonnet は JSON を拡張したような DSL で、変数や関数を定義できたり内包表記が使えたりと、それなりに便利になっています。 JSON 以外にも YAML や INI ファイルなども生成できるようになっているようなので、YAML の生成を試してみました。 なお、Jsonnet…

多腕バンディット問題とトンプソンサンプリング

多腕バンディット問題に対してベイズ的な手法をとるトンプソンサンプリングに興味を惹かれたので、「テストの実行 - C# を使用した Thompson Sampling」 を参考に Python で実装してみました。 ソースは http://github.com/fits/try_samples/tree/master/blo…

Metabase における週初めは日曜

Metabase を試していたところ、以下の点が気になりました。 週単位で集計すると週初めが日曜になる(日曜から土曜までの集計) (画面例) DB 等、一般的なシステムにおける週初めは月曜になる(ISO 8601)はずなので、Metabase が日曜へ変えているのは確実…

Keras.js によるランドマーク検出の Web アプリケーション化2

前回 はランドマーク検出対象の画像サイズを固定(256x256)しましたが、今回は任意の画像サイズに対応できるように改造してみます。 Keras.js 1.0.3 ソースは http://github.com/fits/try_samples/tree/master/blog/20190506/ 可変サイズ対応 ドラッグアン…