くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Azure Functions の動いているCPU, MEM, OS,を調べてみる

環境

  • reason Japan East
  • Azure Functions TimerTrigger
  • 従量課金プラン

結果

Microsoft Azure の Azure Functions 従量課金プランでは、

で動いていることがコードからも確認することができた。

コード

module.exports = function (context, req) {
    const os = require('os');
    context.log(os.cpus()[0].model);
    context.log(os.platform());
    context.log(os.release());
    context.log(Math.floor(os.totalmem()/(1025 * 1024)) + "MB");
    context.done();
};

出力

2018-01-30T05:13:41.843 Function started (Id=b8310a3a-5720-4bd6-a210-3a2e3281a38e)
2018-01-30T05:13:41.843 Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
2018-01-30T05:13:41.843 win32
2018-01-30T05:13:41.843 10.0.14393
2018-01-30T05:13:41.843 3580MB
2018-01-30T05:13:41.843 Function completed (Success, Id=b8310a3a-5720-4bd6-a210-3a2e3281a38e, Duration=3ms)

Visual Studio 15.5.6 リリース Service Fabric の更新だよ!

細かな Visual Studio のアップデート来ましたね。

Service Fabric Tooling for the 6.1 Service Fabric release.

Service Fabric 6.1 Release – Azure Service Fabric Team Blog

General availability of .NET Standard 2.0 on Service Fabric for Windows

.net standard 2.0 が大きなアップデート内容でしょうかね。

ASP.NET Core の単体テストで IActionResult からステータスコードを判定する

ASP.NET Core の Controller で IActionResult な戻り値になっている関数はよくあります。

そんな Controller の戻り値を単体テストで呼び出すときに ステータスコードを判定したい というのはよくあると思います。

解決方法

Controller のメソッドの戻り値を OK(200) の場合は、 OkObjectResult にキャストします。 C# の is キーワードを使うことで、キャストできるか判定することができます。

コード

public class hoge
{
    public class HogeController
    {
        [HttpGet()]
        public IActionResult<String> LoadGreeting() => OK("Hello World");
    }

    [Fact]
    public void IActionResultをテストするよー()
    {
        var hogeController = new HogeController();

        var greetingResult = hogeController.LoadGreeting();

        // True のテストケースが通った場合は、 希望するステータスコードになっている。
        Assert.True(greetingResult is OkObjectResult);
        // 指定するステータスコードになっていないことを確かめている
        Assert.False(greetingResult is NotFoundObjectResult);

        // 返ってきた値自体を確かめたい場合は、 as なりを使ってキャストしてあげる必要がある。
        var responseObject = greetingResult as OkObjectResult;

        Assert.NotNull(responseObject);
        // .Value で値にアクセスすることができるが、Object型なのでキャストしてから利用する
        Assert.Equals("Hello World", (String)responseObject.Value);
    }
}

XUnit で テストエクスプローラーに文字列を出力する

ITestOutputHelper を使うことでテストエクスプローラーの出力の部分に文字列を出力することができる

コード

private readonly ITestOutputHelper _output;

public Program(ITestOutputHelper output)
{
    _output = output;
}
[Fact]
public void 出力テスト()
{
    _output.WriteLine("Hello Output");
}

結果

f:id:kuxumarin:20180126023453p:plain

f:id:kuxumarin:20180126023504p:plain

参考情報元

Capturing Output > xUnit.net

Moq でメソッドが呼び出されたときに例外を投げるようにする

モックのメソッドを呼び出したら、例外を吐くようにしてほしい時に使える小ネタです。

ポイント

cs .Throws() で例外を引数にセットしています。

コード

[Fact]
public void HogeGreetingMessageTest()
{
    var hogeMoq = new Mock<IHoge>();

    hogeMoq.Setup(hoge => hoge.GreetingMessage()).Throws(new NullReferenceException("今回は適当にぬるれを投げる"));
}

Azure Functions で NodeJS のバージョンを明示的に指定する

Azure Functions のデフォルト NodeJS バージョンは古い

過去にしている人のブログを見つけた

Azure Functions のランタイムバージョンを上げ、アプリケーション設定より明示的に NodeJS のバージョンを指定することで変更できると書いてある。

terurou.hateblo.jp

Azure Functions のランタイムバージョンは 1系のままで大丈夫

今回ブログを書いた理由です。 ランタイムバージョンを上げなくてもおk

f:id:kuxumarin:20180125025448p:plain

Azure Functions のアプリケーション設定でNodeJSのバージョンを指定する

f:id:kuxumarin:20180125032233p:plain

バージョン指定を間違えると

Ruby 2.5, Rails 5.2.0 Beta2 を Mac に導入する

こちらのイベントに参加する為の環境構築をしたメモです。

othlotech.connpass.com

必要な環境

前提条件

  • macOS 最新版@18.1
  • HomeBrew

現状

最初から Ruby 2.4 が入ってました。

Rails は 5.1.4

Ruby のアップグレード

Rails は最新版の Ruby が入ってないと導入できないっぽい

HomeBrew の力を借りますw

$ brew upgrade ruby

Rails のアップグレード

$ gem install rails -v 2.5.0.Beta2

完成

Windows Subsystem for Linux で zsh を標準シェルに設定する

WindowsUbuntu を簡単に使えれる Windows Subsystem for Linux での 小ネタです。

zsh とは

雑に紹介すると、 bash をより使いやすくしたシェルです。 コマンドの補完が強力だったり、個人に合わせてカスタムすることができたりと使いこなすと離れれなくなります。

詳しくは、会津大のwiki を見るとよさげに乗ってますね。

http://technique.sonots.com/?UNIX%2F%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%2F%E3%82%B7%E3%82%A7%E3%83%AB%E3%83%BB%E3%82%B7%E3%82%A7%E3%83%AB%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%2Fzsh

やり方

1. zsh のインストール

以下のコマンドで入れることができます。 大学の Wifi で実行したらかなーり時間がかかったので、そこは注意が必要かも...(環境のせいであることを祈る

sudo apt-get install zsh

2. bash 起動時に zsh が起動するように仕掛ける

以下のコマンドで nano (テキストエディタ) を起動し .bashrc に設定を書き加えます。

$ cd ~
$ nano .bashrc

nano が起動したら、以下の設定を付け加えます。

# Launch Zsh
if [ -t 1 ]; then
exec zsh
fi

追記保存したら再起動でzsh がデフォルトで立ち上がるようになります。

f:id:kuxumarin:20180125001418p:plain

参考にしたウェブサイト

www.howtogeek.com