tech.guitarrapc.cóm

Technical updates

servo で gRPC(MagicOnion)サーバーを公開する

2019/7/29 に servo に関する記事をみて、gRPC っていけるのかなということで MagicOnion で試していました。

qiita.com

記事にするのを忘れてたので書いておきます。

目次

結論

問題なくok

大事なのは、MagicOnion のサーバーを localhost で待つこと (127.0.0.1 とかはダメ)

ssh -R 12345:localhost:12345 serveo.net

サーバーの待ち受け

new ServerPort(config.GetValue<string>("MAGICONION_HOST", "localhost"), 12345, ServerCredentials.Insecure))

クライアントは、[serveo.net:12345](http://serveo.net:12345/) でok

this.channel = new Channel("serveo.net", 12345, ChannelCredentials.Insecure);

何がうれしいのか

Web と同じです。 gRPC (MagicOnion) のサーバーを立てました。といっても社内などローカルネットワークだとつなぎにくいのですね。 そんなときservo でサーバーを公開していれば、クライアントから簡単にアクセスができます。

あとは、localhost でのネットワークキャプチャってめんどくさいという感想なのですが、必ず外にアクセスするのでキャプチャはしやすいです。

Fiddler にしても localhost.fiddler とか指定する必要ありますし。

  • ipv4.fiddler
  • ipv6.fiddler
  • localhost.fiddler

Monitor traffic to localhost from IE or .NET | Progress Telerik Fiddler

Wireshark なら、3.0 で Support loopback trafic (“Npcap Loopback Adapter” will be created)でインストールして、Npcap Loopback Adapter でキャプチャ。

troushoo.blog.fc2.com

TeamsId2BitwardenConverter でTeamsId から Bitwardenへの移行を再度行う

TeamsId から Bitwarden への移行をまたやってました。

tech.guitarrapc.com

作っておいてよかったということでサクッとやったのですがいくつか修正しています。

 

目次

TeamsId2BitwardenConverter

移行に使ったのは例によって自作ツール。

github.com

個人のデータを移行する

次の例は、TeamsIdのデータをBitwarden のPersonalへ移行する例です。(Bitwardenには Organizationもある)

gist.github.com

必要なのは、Bitwardenのフォルダ構造の定義JSONと、TeamsIdの export csv です。

あとは、teamsIdのcsvを teamsidPersonalCsv に指定して、bitwardenのフォルダ構造json を bitwardenFolderDefinitionJson に指定すれば変換されます。

static void Personal(string outputPath, string teamsidPersonalCsv, string bitwardenFolderDefinitionJson)
{
    var folderDefinition = DeserializeFolderJson<BitwardenFolderDefinition>(bitwardenFolderDefinitionJson);

    // convert teamsid to bitwarden
    var teamsIdDatas = new CsvParser(teamsidPersonalCsv).Parse<TeamsIdDefinition4>();
    var bitwardenItems = new BitwardenConverter(folderDefinition).Convert(teamsIdDatas, defaultGroup: "TestGroup");

    // serialize bitwarden import data
    var importData = new BitwardenDefinition
    {
        folders = folderDefinition.folders,
        items = bitwardenItems,
    };
    importData.WriteJson(outputPath);
}

使いにくかった処理をいくつか修正しました。

  • 前の実装、完全にTeamsIdのカラム数を12に決め打ちしてて、カラム数が満たないときにエラー出てたので ITeamsIdDefinition を実装すればいいようにしました。書かなくていいようにカラム数分の定義を1-12まで用意しておいたので、楽になるはず。
  • 出力先フォルダも自動生成するようにしました。(わすれてました)
  • Group埋め込みとかEmail/UserNameの分岐がなかったので足しました。(ひどい

あと、ついでにCIを Appveyor から CircleCIに変更しました。 Appveyor、残り GolangとC#とPowerShellでいくつかCI回しているので全部CircleCIに移行予定。

Golang は GitHub Actionsでも動かしているので、CircleCIじゃなくてもいいかな。

まとめ

とりあえず数回移行に使って問題なかったので便利に使ってます。(移行中にデータを確認するので100回以上使ってる)

TeamsId、相変わらず非ascii (日本語も) だめなのでもう使わない.....

Bitwarden webが少々不安感あるので、k8sでクラスタ組もうかなぁ。

.NET Core 3の Single-file executables を生成する

.NET Core 3.0 では、単一バイナリ(Single-file executables)が生成可能になりました。

github.com

今回はどのようにSingle Executable生成するのか、普段は .NET Core 2.1 でビルドしたいときの分け方、dotnet global tool とビルドを分けること、GitHubリリースへのCIからの配置を見てみます。

続きを読む

PowerShell で1から100までの偶数の和を求めるワンライナー

PowerShell でどういうやり方がいいかを少し考えてみます。

「1から100の偶数の和を求めるワンライナー」まとめ - Qiita

というのがあり、Twitter でつぶやいたのですが、一応まとめておきます。

続きを読む

Azure DevOps Pipeline をYAML で定義しよう

何度か挙げている Azure DevOps Pipeline ですが、ずっとYAML で紹介してきたかと思います。

実際に私はAzure DevOps にYAML がPreview で来てからずっとYAML にしています。

これはほかのCIサービスも複数触っていたことからもYAML でかけることに大きなメリットを見出していたからですが、改めてAzure DevOps でPipeline をYAML で定義するのをなぜススメるのか一部を書いておきます。

続きを読む