アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

Go + gRPC でメタ情報も送れるファイルアップローダーを書いた

今回は Go + gRPC でファイルアップローダーを書いたので紹介します。しかも、ファイルのアップロードだけではなくメタデータも同時に送れるように作成しました。

イメージ

今回作成するにあたって、次のようなイメージで作成しました。

  1. 前提は stream 通信(ファイルのアップロードに必要不可欠)
  2. クライアントから送信したいファイルのメタ情報を送る
  3. ファイルデータを少しずつ送信
  4. 結果を受け取る

seq

アップロード周りの protobuf

これを実現するために oneof を用いました。

理由としては次の通りです。

続きを読む

shibuya.pm テクニカルトーク #18 に参加してきました

参加しました。

shibuyapm.connpass.com

ついでに XS 入門した時を振り替えつつ LT をしました。

実は Package::Prototype の中身について LT をしようと思ってましたが、会場の雰囲気を見てこのスライドじゃないなーと思い急遽作り変えたのです。一応貼っておきます。

続きを読む

Hokkaido.pm #14 に参加してきました。

とても行きたかったので参加してきました!

hokkaidopm.connpass.com

北海道自体が最高すぎる...

ついでに Perl で作る極小機能しか持たないシェルの作り方について登壇してきました。
交通費、宿泊費は株式会社メルカリに出してもらったので感謝しています。

そして感想をつらつらと書いてみました。

続きを読む

Go で sqlx 拡張のトランザクションマネージャを書いた

sqlx-transactionmanager

github.com

これは Perl でいう @nekokak さん作の DBIx-TransactionManager をベースに作ったもの。今担当している会社のプロジェクト内で github.com/jmoiron/sqlx を使っており、それの transaction manager があるといいよねーとなったので作成した。

続きを読む

作った bash スクリプトを誰かと共有したい時に気をつけたいこと

以前同期と bash でパイプライン cd を使えると便利だよねーという話から次のような override cd の関数を考えた。

function cd() {
    if [ -n "$1" ]; then
        arg=`cat`
        builtin cd "$arg"
    fi
}

こうすると echo $HOME | cd とかで移動できるが、これを bashrc に登録したことで共有された bash スクリプト内で cd を行う時に事故が多発したという話を聞いた。

それは大変だと思いながら放置をしていたが、ふと思い出して試してみたことを記述。 環境は macOS High SIerra

続きを読む