銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

AZ-301に合格して、Azure Solutions Architect Expertを取得しました

先日、AZ-300に合格しました。

tech.tanaka733.net

かなりぎりぎりで合格したので、もっと準備してからAZ-301を受けるつもりだったのですが、AZ-300と301がAZ-303と304に更新されるニュースがありその時点ではAZ-300とAZ-304の組み合わせでOKか不明だったので早めにAZ-301を受験することにしました。結果は今回もかなりぎりぎりですが合格し、無事にAzure Solutions Architect Expertを取得しました。

なお、AZ-303と304の変更については、そのあと更新があり、AZ-300と304のような組み合わせでもAzure Solutions Architect Expertを取得できるとのことです。こちらのブログの最後にある「Updates to Azure certification exams announced in January 2020」のリンクからみられるPDFの「7. Do exams AZ-300 and AZ-301 and new exams AZ-303 and AZ-304 need to be a matched set in order to achieve the Azure Solutions Architect Expert certification?」をご確認ください。

www.microsoft.com

AZ-301のために行った勉強ですが、基本的にAZ-300のときと同じです。資格試験のページに対応するMicrosoft Learnのラーニングパスが載っていますが、AZ-300と同じです。

docs.microsoft.com

AZ-300のときに一通りやっていたので、今回はもう一度おさらいしました。ハンズオン部分は、時間がなかったこともあり実際にはやらず手順を読んで確認するにとどめました。

AADやExpress Route、Azure Site Recoveryなどは仕事でそういう要件を求められないとなかなか使わない*1ので、念入りに勉強しました。

最上位資格を取れたので、いったんAzure系の資格はこれで止める予定です。

*1:実際AADは基本機能だけ、それ以外はまったく使ったことがない

ASP.NET Core 3 Web APIで例外をスローして、指定したステータスのレスポンスを返す

ASP.NET Core Web APIでアプリケーションロジック内では例外を投げておいて、共通処理として例外をキャッチして例外に応じたステータスコードとメッセージのレスポンスを返したい場合があるかと思います。ASP.NET Framework やCore 2.2まであったHttpResponseExceptionを使うようなユースケースです。

docs.microsoft.com

ASP.NET Core 3ではなくなっていますが、自前で作ることでより自分のユースケースにあった処理が作れることが次のドキュメントに記載されています。

docs.microsoft.com

今回これをすこしアレンジした使い方をしたので紹介してみます。

続きを読む

DateTimeとTimeSpanの書式文字列が違うという話

知ってればそれだけなのですが、System.DateTimeSystem.TimeSpanでは指定できる書式文字列が異なります。知らずによくわからないエラーを出して一瞬困りました。

たとえば、DateTimeオブジェクトで時間のところで HH:mm:ss という形式で出力したい場合は次のようにカスタム書式文字列を指定できます。

DateTime.Now.ToString("HH:mm:ss")

が、TimeSpanオブジェクトは同じように指定するとエラーになります。

DateTime.Now.TimeOfDay.ToString("HH:mm:ss")

標準のTimeSpan書式文字列のcを指定するか、カスタム書式文字列の場合は時間は小文字のhを使ったうえで:\でエスケープする必要があります*1

DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss")
DateTime.Now.TimeOfDay.ToString("c")

なんでこんな使い方をする必要があったかというと、MySQLでDate型のカラムをDateTime型にマッピングして、Time型のカラムをTimeSpan型にマッピングしていたためでした。ドキュメントはこちらにあるのでカルチャーによる違いなど詳細はこちらを参考にしてください。

docs.microsoft.com

docs.microsoft.com

*1:なお標準書式文字列cは1日以上の場合の日付部分と小数点以下の秒も出力されるという違いがあります