javaだとインターフェースからnewして匿名クラスを作成できるのだが
c#では出来ない。これ何とかしてくれませんかね?
2021/3/12 金曜日
2021/1/19 火曜日
エリア51
asp.net mvc5(or core)のArea機能
webのアプリをサブブロック毎に分けるような、ファイルで言えばdir/folderの様な仕組みなのだが、ふと思い立ち実験してみる。
なるほど、使えそうな気がする、、、
2020/11/25 水曜日
asp.net core 5.0
試しに3.1から5.0に変更してみた
ワーニング1件、実行時エラー2件が発生。まず、Obsoleteでワーニング、UseDatabaseErrorPageはもう使うなというもので回避策はMSのHPにあったので修正。そして、これはOracleのドライバ固有かもしれないがBinaryFormatterは危険だから使うなというもので強制的に「使う」にすると問題ない。安全に使うにはODPのアプデ待ちとなる。そして最後はUserStoreの動きが若干異なる為のもの。単純に当方が呼び出されないメソッドを未実装例外にしていた怠慢によるものだった。
取り合えず、これらを直して走らせると一応は動いた。細かいところまで見ていないので隠れたエラーはあるのかもしれないが、ビルドは通って動くには動く。
2020/11/12 木曜日
.NET 5.0
ついにリリースされた
いろいろ分化してややこしくなっていた.net界隈が統合されるそうだ。いずれにしても構成はよりシンプルにして貰いたいものだ。MSの法則から言って、実戦で使い物になるのは6からだろうw
2020/8/10 月曜日
mvc5とmvc coreの微妙な違い
既定のブランク文字列の扱いが異なる
coreでは空文字列や空白のみのtextがnull変換されてしまう。そもそも空白文字をコードにしている時点でPGの仕様が間違っているのだが、それは一旦置いといて(古くからの仕様なので仕方ない)。しばし、この現象で悩む。ブラウザのjs側でわざわざ” ”を代入しても、postして受け取るとnullになっている。調べてみるとこんなサイトを発見。ふむふむ、modelのアノテーションに
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string hoge { get; set; }
って書いとくか、Setup.csでクラスを使って登録するかをして回避出来るようだ。
なるほどねぇ、、、
2020/4/22 水曜日
asp.net core 3.1 + Ubuntu 18.04 + nginx
apacheがいけたならnginxも試しておこう
ブラウザとのssl通信はnginxに任せてlocalhostのkestrelとはhttpで通信するという事がやりたいのだが、親切な方がビックリする程直球ど真ん中の記事を上げてくれていたので、そのまま真似してみた。結論から言うとうまくいった、ありがたい限りである。
後は80へのアクセスをリダイレクトさせるなりすればいいか、、、
asp.net core 3.1の検証
実際のMVC5のWebAppを一部移植してみる
工夫すればControllerやViewもある程度共通化出来そうなので、既存のWebAppで難易度の高そうなPDFやExcel出力を試してみたが普通に動くようだ。元々、ロジックのAction部分は外に出しているのでMVCフレームワークへの依存度の高いとこだけをCore化すれば後はいけそうな気配。実際、参照しているdllは何も変更していない。standard 2.1はなかなか使える子だ、将来統合される.net5.0には期待が持てるかもしれない。
2020/4/19 日曜日
asp.net core 3.1 + centos7 + apache
asp.net core 3.1で戯れる
dotnet 3.1になって既存のソースとか、ほぼそのままcoreでもビルド出来るようになって来た。これまでMVC5を使って来たのだが、いよいよ将来の移行も視野にasp.net coreを触ってみる。
VisualStudio上で動かすのは簡単だが、いざdeployとなるとどうなんだろう?ということでcentos7上でkestrelをapacheでリバースプロキシ経由で公開するテストをしてみた。vsでランタイムから何から一本のdllにまとめてしまうという素晴らしいオプションでpublishしたバイナリを使用。centos上でそのdllを普通に動かすだけで、そのままwebappが動くのでお気楽だ。
既定ではkestrelを動かすと”http://localhost:5000″として動作するが、これをそのままapache経由で公開するとwebのroot”/”になってしまう(凡例”http://www.example.com/”)。
そこで、外部からは”myapp”とかの名前で公開したい(凡例”http://www.example.com/myapp”)ので、いろいろ試行錯誤した結果を備忘録にしておこう。
まずはasp.net coreのアプリ側の細工:
//1) kestrelで"myapp"がbasepathになるようにする
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
:
app.UsePathBase("myapp");
app.UseStaticFiles();
:
app.UseForwardedHeaders(new ForwardedHeadersOptions {
ForwardedHeaders = ForwardedHeaders.All
});
:
}
次にapache側の設定:
#2) apacheのリバースプロキシを設定
<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}e
</VirtualHost>
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /myapp http://localhost:5000/myapp
ProxyPassReverse /myapp http://localhost:5000/myapp
ServerName www.example.com
<Location /myapp>
Require all denied
Require ip 127.0.0.1/32
Require ip 192.168.0.0/24
</Location>
</VirtualHost>
これで取りあえずは”myapp”で公開された。
そして更に、オレオレ証明書でhttpsにしたかったので、上記のconfを書き換えた:
#2') apacheのリバースプロキシを設定(https)
<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}e
</VirtualHost>
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{REQUEST_URI} /myapp
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
<Location /myapp>
Require all denied
Require ip 127.0.0.1/32
Require ip 192.168.0.0/24
</Location>
</VirtualHost>
<VirtualHost *:443>
ProxyPreserveHost On
ProxyPass /myapp http://localhost:5000/myapp
ProxyPassReverse /myapp http://localhost:5000/myapp
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:SSLv2:!RC4+RSA:+HIGH:+MEDIUM:!LOW:!RC4
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
<Location /myapp>
Require all denied
Require ip 127.0.0.1/32
Require ip 192.168.0.0/24
</Location>
</VirtualHost>
ブラウザには最初に怒られるが、構わず続けるとhttpsでアクセスできた。
これなら、kestrelのポートをwebapp毎に変えれば同じサーバで複数公開出来そうだ。
2019/10/6 日曜日
dotnet core 3.0
これ、ラズパイにも入るらしい
という事で、入れてみる。単純にtarボールを展開するだけの簡単なお仕事だった。
Hello, World! で完了w
2019/5/12 日曜日
Swift5
以前、Metal化に成功したので、別のアプリも施工することに
久しぶりにプロジェクトを立ち上げるとSwift5にマイグレするか?と出たので、お願いします!とクリックするとえらい事になったw 相変わらずのCocoaの仕様変更、、、そしてこのAPIはもう使えないよの警告の嵐。そしてビルドすると動きがカックカクに、、、前はこんなじゃなかったのに、、、、もう、いろいろ弄って何とかマシにはなったが、ここまで仕様が変わる環境ってある?w 一番簡単だったのがMETAL化だったという笑えないオチになった。