Spring WebFlux: Flux<DataBuffer> を InputStream へ変換する

備忘録。Spring WebFlux を使っている中で、Flux<DataBuffer> ((実際には FilePart.contents() から取り出した。))を単一の java.io.InputStream へ変換したいシチュエーションに出くわしたので、その方法についてのメモ。</databuffer>

TypeDI 素振り

TypeScript 向け DI コンテナライブラリの TypeDI を素振りしたのでメモ。

Github Actions: Reusable Workflow とジョブ名

Github Actions のあるワークフローから別ファイル(別リポジトリでも可)のワークフローを呼び出せる Reusable Workflow を触ったところ、不便というかどう対処するべきかわからない点があったのでメモとして残しておく。 ワークフローで定義したジョブ名と…

Ginkgo v2 へ移行する

RSpec, Jest ライクな Go のテストフレームワーク Ginkgo が年末に v2.0.0 をリリースしたので個人プロジェクトで試してみた。

sue445/plant_erd の MySQL コマンドの出力を修正する PR を出した

RDB の ER 図を PlantUML の DSL で出力する plant_erd の出力を修正する PR を出した & マージされた。

8398a7/action-slack の入力定義を修正する PR を出した

Github Actions で Slack 通知を行う 8398a7/action-slack の入力定義を修正する PR を出した & マージされた。 修正内容は入力パラメータの誤った必須指定を直すだけの簡単なもの。最近使い始めた ワークフローの YAML の補完・lint を行ってくれる VSCode …

Go の os.ProcessState からプロセスを終了させたシグナルを取得する

備忘録。Go の os.StartProcess() や os/exec.Cmd で実行した外部プロセスがシグナルによって終了した場合に、そのシグナルを取得する方法について。Go のバージョンは1.16。 注: GOOS=linux or GOOS=darwin で動作すること、および GOOS=windows で動作しな…

ESLint ルールを TypeScript で書く

備忘録。ESLint のルールを含むプラグインを TypeScript で書く時のポイントについて。 プラグインの仕組み自体は公式ドキュメントに従いつつ、TypeScript でどう対応させるかについて述べる。

gh コマンドのシェル補完を強化する PR を出した

Github 公式 CLI である gh コマンドに出した PR がマージされた。 内容は gh issue list/gh pr list の --state オプションの値をシェル補完できるようにするというもの。 --state オプションに open, closed といったキーワードを与えると、表示する issue…

Typescript Compiler API で tsconfig.json を指定する

備忘録。TypeScript の Compiler API を特定の tsconfig.json の設定で使う方法について。 TypeScript のバージョンは 4.1.3。

Typescript Compiler API で定義元の AST ノードを取得する

備忘録。TypeScript の Compiler API を使ってソースコードのパースから特定の型・関数の定義元の AST ノードへジャンプする方法について。 TypeScript のバージョンは 4.1.3。

actions/upload-artifact@v2 は /tmp で使わないほうがいい

雑記。 Github Actions で成果物を永続するためのアクション actions/upload-artifact@v2 の落とし穴について。 TL; DR 執筆時点で actions/upload-artifact@v2 は指定したファイルをアップロードすることはできない Mac の /tmp は /private/tmp へのシンボ…

Go 製ツールの開発フロー with Github Actions 覚書

Github 上での Go 製ツールの開発フローとそれを支える Github Actions が自分の中で一旦まとまったので書き残す。

2019年の振り返り

年の瀬なので、今年一年を振り返る。

zplug から zplugin に乗り換えた

年末の大掃除と称して dotfiles の整理をし、ついでに zplug から zplugin へと乗り換えた。 zsh の起動時間を縮めるために oh-my-zsh から zplug に乗り換えたのが1年半前だが、最近また起動時間が気になったのがきっかけ。

ghq list を高速化する PR を出した

ghq を使い始めて以来、ディレクトリ移動にしろエディタオープンにしろ ghq list に頼りっぱなしだが、最近どうも遅く感じていた。そこでボトルネックを探してみて特定の状況下で ghq list の実行速度が向上する PR を出してみたところ、無事にマージされた…

zsh で which と command -v の速度比較

雑記。 以前 Bash ではコマンドの有無の確認に which ではなく command -v を使った方がいいという旨を見た覚えがあったので、Zsh ではどうかを調べてみた。

Go 1.13 の error について

備忘録。 Go 1.13 で入った error の機能について。

Go の testing の Error/Fail/Fatal

備忘録。 Go の testing パッケージでいつも Error, Fail, Fatal の違いがわからなくなるので、まとめる。

Songmu/gitconfig で Go から git config を取得する

備忘録。 git config の Go クライアントと言える Songmu/gitconfig について。

Python の文字列/バイトバッファ

備忘録。 Python で IO 同様のインタフェースで扱えるインメモリバッファ(Ruby における StringIO)について。

Go の 構造体のタグを取得する

備忘録。 json などで構造体のフィールドに付ける json:omitempty などのタグを取得する方法について。 構造体フィールドのタグは標準パッケージ reflect を使って実行時に取得する。 以下、構造体 Tagged のフィールド Foo に付いているタグを取得するサン…

openapi-generator で生成した Go クライアントで Bearer 認証をする

備忘録。 openapi-generator で生成した Go クライアントで Bearer 使い方について。

Vue で子コンポーネントのメソッドを呼び出す

備忘録。 refs を経由でコンポーネント内で利用している子コンポーネントのメソッドを呼び出す方法について。

Gatling のシナリオをデバッグする

備忘録。 Scala DSL でシナリオを書けるパフォーマンステストツール Gatling を使い始めたが、シナリオをデバッグしたいことがままあるので、そのメモ。 バージョンは3.2。

t.Run で Go のテストをサブテストに分割する

備忘録。 Go のテスト関数内でサブテストに分割する方法について。 testing.T は Error や Skip などのように関数で実装しているテストの制御を行うメソッドがあるが、サブテストに分割するためのメソッド Run も実装されている。以下のように使える: func T…

Go のテストを testify/assert で書く

備忘録。 最近 Go のテストで使い始めたアサートライブラリについて。

MyBatis で Auto Increment された ID を取得する

備忘録。 MyBatis で DB に INSERT した際に ID などの特定のカラムの値を取得する方法について。

Collectors::toMap の値マッピング関数の制約

備忘録。Java でストリームをマップに変換する Collectors::toMap の NullPointerException にハマった。 Collectors::toMap はストリームに K 型のキーへマッピングするための関数と V 型の値へマッピングするための関数を受け取って、Map<K, V> 型のマップを返す</k,>…

MySQL でツリー構造 by 閉包テーブルモデル

備忘録。 SQL アンチパターンに載っていた木構造を RDB で表現するためのモデルの1つ、閉包テーブルモデルの MySQL による実装について。