LINE Developer Day 2019 Day2 レポーティング(と言う名の自分的メモ)

front-endと、Product Managementのことを知りたいだけの人生だった Motivation 参加のMotivationは上の見出しの通りです。 ビジネス上の課題を技術で解決するお仕事をしているので、二日目のproductionというテーマのほうも多くの学びがありました。 Openin…

LINE Developer Day 2019 Day1 レポーティング(と言う名の自分的メモ)

gRPCの事例について聞きたいだけの人生だった Motivation 参加のMotivationは上の見出しの通りです。 gRPCで、超高トラフィック、BtoC、これほど事例として、パーフェクトなものはなかなかお目に書かれるものではありません。 結果、それ以外にも非常に勉強…

ASP.NET CoreのStartup.csへのインジェクション以外で、appsettings.XXX.jsonファイルにアクセスする。

appsettings.XXX.json(要するにconfigの類)をProgram.csで参照したい 普段ASP.NET Core MVCで開発している場合(ここでいう通常、は)、Startupクラスにはappsettings.jsonとappsettings.{EnvironmentName}.jsonを読み込んだコンフィグがインジェクション 設…

EnvironmentNameをIWebHostEnvironment.EnvironmentNameを使わずに取得してみる

EnvironmentNameをProgram.cs内で参照したい 具体的には、Mainメソッド内で CreateHostBuilder(args).Build().Run(); ってやってるところで、ロギングしたかったり、CreateHostBuilderのところで、そもそもEnvironmentNameに対応したappsettings.XXX.jsonで…

ASP.NET CoreでProgram.csを見たり、Serverヘッダー:Kestrelをオフにしてみる

Program.cs周りのコードを確認してみる。 ASP.NET Core の2.2時代のテンプレートは、WebHost(IWebHostBuilder)が使用されていました。 コードベースはこんな感じ。 public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDef…

C#8 GA後のswitch式を見てみる

GAのタイミングで再確認してみるswitch式 後置き構文で読みやすいswitch式ですが、プレビュー時代は、以下の書き方をする必要がありました。 static IEnvironmentBuilder GetEnvironmentBuilder(string environmentName) { return environmentName switch { …

Microsoft.AspNetCore.Appメタパッケージを利用してライブラリーを作成する際のProject Sdkについて見てみる

Microsoft.AspNetCore.Appメタパッケージを使いたい Webゾーンに関わるライブラリーを書く場合、Microsoft.AspNetCore.Appメタパッケージを参照したくなります。 .NET Coreの.csprojを編集するときに、Project SdkをMicrosoft.NET.Sdk.Webに設定するとDefaul…

IAsyncDisposableを実装したObjectをASP.NET CoreのDIでライフタイム管理するときの挙動を見てみる

Using IAsyncDisposable C#8から追加されたIAsyncDisposable、言わずと知れた await using ~ を実現するための存在ですが、ASP.NET Coreで開発している場合、各Objectのライフタイム管理は、DIContainerに任せることが大半だと思います。 DIContainerにライ…

.NET core 3 版:IServiceCollectionの拡張(ConfigureServicesのアレ)(WebApi ビルドの場合)

.NET Core2.2時代に、WebApi(REST)開発を行う際、.AddMvc()が差し込まれるのが辛かったので、必要なものだけを差すように書き直していたのですが、.NET Core 3(RC)版のIServiceCollectionの拡張を見たら、少し変わっていたので、中を確認してみました。 .N…

RedisをASP.NET SessionState,OutputCacheのストレージに設定する。

RedisをASP.NET SessionState,OutputCacheのストレージに設定する。 Nugetパッケージのインストール Microsoft.Web.RedisSessionStateProvider、Microsoft.Web.RedisOutputCacheProvider を追加します。 パッケージを追加するとWeb.ConfigにSessionStateセク…

Visual Studio 2017へ.NET Framework 4.7.2の追加を行う

前提条件 Visual Studio Professional 2017(VS 15.7.2) Windows 7 Proの環境で、試行しています。 やりたいこと Visual Studio 2017で.NET Framework 4.7.2を利用して開発が出来るようにしたい 記事の目的 2018/5/26現在、ちょっとしたトラップがあったので…

Memo:インターネット加盟店のクレジット決済@カード情報非保持サービスについて

インターネット加盟店のクレジット決済@カード情報非保持サービスについて、調べる機会があったので、自分へのメモも兼ねてまとめておきます。 インターネット加盟店のクレジット決済@カード情報非保持サービスについて 決済代行のカード情報非保持サービ…

Null合体演算子とNull条件演算子と戯れてみる。

C#6.0で追加されたNull条件演算子、便利ですよね。 今回はNull合体演算子と共に戯れてみます。例)hogeが、Nullである場合は、string.Empty、そうでない場合はTrim処理を行う。 @Null合体演算子を使う場合 // string.EmptyにもTrim処理がかかって、うざい。…

ASP.NET WebApiでSwaggerを使ってみる。

導入方法 NugetでSwashbuckleを追加します。Nugetでの導入後、SwaggerConfigが作られているため、XMLドキュメントコメントを参照するように変更を加えます。下記コードがコメントアウトされているので、コメントアウトを解除します。 c.IncludeXmlComments(G…

URLReWriteを使って、リダイレクトを設定する。

Webサイト/アプリを運営していると、ページの評価の統一をしたい等の理由で、リダイレクトを設定したいケースはままあるかと思います。 その際、C#等のプロダクトコードでリダイレクトかけるのは少々面倒なので、IISのURLReWriteにて、設定をしてしまいます…

日付/時間の検証属性を作成してみる

アノテーション検証で、単項目バリデーションを完結させたい場合、アノテーションを作成したくなるケースがあります。 今回は、日付時刻のアノテーション検証と、時間のアノテーション検証を作成してみましょう。まずは日付時刻のアノテーション検証から作成…

WebApiの結果をアプリ側でJsonに限定する

ASP.NET WebAPIで作成したWebメソッドの返却値は、リクエストヘッダーのAcceptを指定してスイッチ出来ますが、 そもそもJson形式でしか運用しない場合には、Global.asax.csに以下のコードを追加することで限定可能です。 GlobalConfiguration.Configuration.…

ルーティングでトレイリングスラッシュを付与したり、小文字にしたりしてみる。

難しいことは特にありません。 RouteCollectionクラスに、プロパティを持っているので、いつものRouteConfig内で、プロパティを変更してあげるだけです。 public static void RegisterRoutes(RouteCollection routes) { routes.LowercaseUrls = true; routes…

Divに、HTMLヘルパーでリンク付与してみる。

結果から言うと、出来てません。←ASP.NET MVCで、リンクを作成するときは、HtmlヘルパーのActionLinkか、RouteLinkの拡張メソッドを通常使うと思いますが、 Webアプリを作っていると、通常のテキストでのリンクではなく、Divのブロック単位でリンクを張りた…

リンクをHtmlヘルパーで作成してみる

ASP.NET MVCで、リンクを作成するときは、HtmlヘルパーのActionLinkか、RouteLinkの拡張メソッドを通常使うと思います。 Route設定があるなら、RouteLink、ないならActionLinkという住み分けでしょうか。 パフォーマンス的にはRouteLinkが推奨のようなので、…

FizzBuzz書いてみよう

知り合いとFizzBuzz書いてみようという話になりました。@仕様 1から順番に数をコマンドプロンプトに表示する。 その数が3で割り切れるなら"Fizz" 5で割り切れるなら"Buzz" 両方で割り切れるなら"FizzBuzz"と表示する。@引数 [0]=終端の値言語はいつもの通りC…

OracleのBlob型データカラムを対象に、データ取得・データ更新を行う。

Oracleを扱う機会があったので、ポストします。 OracleのBlob型のデータカラムを、C#側からアップデートしようとした際に、エラーが発生する場合がありました。 アップデートが行われる場合もあれば、行われない場合もある、といった具合です。エラー内容は[…

Azure Webサイトでサイトを作って、Webデプロイしてみる。

MicrosoftAzure、仕事では、Iaas、Paas共に、微妙に触っていたのですが、プライベートで触る機会があったので、軽くまとめてみます。 そもそも、Azureって? クラウドプラットフォーム、と言われるものです。 AWS等が競合ということになります。 AWSでも、Ia…

DomainModelとか、ViewModelとかのお話

ASP.NET MVCでWebアプリを作っているときに、いつも迷うのが、Model配下のオブジェクト定義です。DomainModelは大体、Models配下にDtoフォルダを作成して配置しています。 SQLのスクリプトは、Models配下にSqlフォルダを作成して配置しています。 コード上で…

AutoMapperの設定と実行をしてみよう

AutoMapperとはなんぞや、というのは、前に書いたので、今度は設定と使用について書いていきましょう。まずは、設定を行う必要があります。 設定は、ASP.NET MVC(c#)で利用する場合、アプリケーションスタート時に一度、呼び出すだけでOKです。(セッション…

ASP.NET MVCについて

他人に説明する時に、どうにもうまく言語化できないので、ここにまとめてみます。 そもそもASP.NETってなんぞ? 概念はWikipediaさんでも見てもらうとして、これまでASP.NETと表現していたフレームワークは、ASP.NET WebFormsを指し示すことが多かったはずで…

Dapperを使って、PostgreSQLの接続クラスを作ってみる

Dapperを使って、PostgreSQLの接続クラスを作ってみます。まずはDapperの導入から。 といってもNugetから導入するだけです。簡単。 次に、インポート設定 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Npg…

AutoMapper

前回書いたことと若干リンクする話ではありますが、Linqが登場してからは、.NETの世界でもデータをオブジェクト単位で扱うことが多くなりました。 そんな中、オブジェクトを詰めなおしたいという要求が出てくることが結構あります。 本格的なドメイン駆動開…

MicroORM

.NET開発というと、初期の頃は、データの取り扱いにDataTableとかDataSetとかを使っておりました。 Linqが登場してからは、データをオブジェクト型で取り扱うことが多くなりました。 (Linq使うようになると、オブジェクト型じゃないと、どうにも立ち行かな…