技術書典だのイベントだので忙しかったのがやっと落ち着いて好きな作業できる余裕が出てきた。
仕事?仕事は何もしてないですね……。
イベントのサイトでDBの構成を大幅に変えてみたんだけど、テーブルを分割したら行数が増えてHeroku Postgresの無料分に収まる1万行を越えてしまった。 なんとかする時間もなかったので有料プランにしたけど、$9/月はちょっと痛いのでなんとかしないといけない。年に6日くらいしかアクティブに使われないサイトなので。
兼ねてからこれべつにRDBの必要全然無いんじゃないの?ということでAzureのTable Storageに移行できないかと考えてはいたが、ちょうどいいタイミングなのでそうするべきだな。 AzureのTable Storageを考えてたのは仕事でAzureを使ってて馴染み深かったからなんだが、イベントのサイトではAWSのS3を既に使ってるのでDynamoDBの方がよさそうね。
WindowsのVMさくっと使えると便利なこともあるし、家でもAzure使えるようにしたいこともあるんだが、それはそれとして分散するのもよくないしな。
次のイベントはまだ半年近く先だが、毎月DBにそこそこお金をとられるのは痛いので早いところなんとかしたい。 RDBのホスティングサービスって高いよなー。
最近PeerCastStationのHTTPサービス部分をせっせとOwinベースに作り直してて出来てきたんですよ。
まだなんか使ってて怪しいところはあるものの、それは直すとしてまあまあ動いてるんですよ。
で、.NET Core 3.xへの移行も見据えて、そもそもどの程度すんなり移行できるのかと試しにやってみたんだけど……Owinがねえ。 OwinとかMicrosoft.Owinていうパッケージを参照してたんだけど、こいつらの.NET Coreとか.NET Standard版がない。 どういうことかと調べてみると、どうもOwinはもうとっくにおしまいになっていた模様。まじかよ。
Owinの仕様としてはFunc<Dictionary<string,object>,Task>
でアプリ起動な~てくらいしかなくて、アプリ起動というかサーバーへの登録とかは決まってないし、なんかいまいち使えねえということなのかなんなのかてのがありーの、ASP.NET CoreでOwinの雰囲気を取り入れたんでこれでいいでしょもう、というとかなんとかで終わっていたらしい。
知らずに今更Owinに移行してたぞ……。
まあ確かにOwinに仕様はだいぶ微妙だった。Rack的なものをやりたいというのはわかるんだが、C#との相性はかなり悪かった。 特定のアセンブリとか型に依存しないと徹底したかったのかもしれないが、結局Owinとかのアセンブリを使わざるをえないというのもあった。 じゃあそれならそれでもうOwinとMicrosoft.Owinを統合してこいつが標準な、ってしてくれるだけでもよかったんだけどなー……。
ASP.NET Coreをホストするという手も無くはないんだが、それってRackを入れたかったが終わってたのでRailsを入れるみたいなもんで、いかにもでかすぎる。 俺はRackが使いたいのであってRailsが使いたいのではないのである。
とりあえず今は.NET Coreでどの程度動くのか検証したいだけということで、OwinとMicrosoft.Owinのソースをひろってきて使ってそうな部分だけソースツリーに取り込んで.NET Coreでビルドしてみたらなんなく通った。通るじゃん。ビルドしてパッケージ出してくれるだけでいいんだけどなーもー。 他はいくらか動作が怪しいところがあるものの、おおむねそれっぽく動いているので.NET Coreへの移行自体はそれほど大変ではなさそうだ。すごい。
あとOwinにした部分をどうするかは考えたい。独自にMicrosoft.Owin的なものを作るか、ライセンス的には問題ないのでMicrosoft.Owinのソースをそのままツリーに取り込んじゃうという手もなくはないのよな……。