Ensure the type is concrete and services are registered for all parameters of a public constructor.

ASP.NET MVC Core2.0だと、DIするクラスのコンストラクターがパブリックじゃないと
InvalidOperationException: A suitable constructor for type '「クラス名」' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.
というエラーが出ます。

まったく同じメッセージが、Controllerでも出るんですね。

ハマりました。

 

 

IoT ALGYAN3周年「IoT祭り2018」に行ってみた、

基本的に組み込み系のエンジニアのコミュニティーです。

なので、組み込めない、私はアウェイ

前置き、
IotはInternet of thing の略です。

現在でも、いろいろな機械、身近な所では、エレベーター、とか、
最近の自動車、特に高級なやつとか、電気で動くとかのあたり、

これらは、もともと独自の通信方法を使ってたのが、InterNetの標準である TCP/IPで通信するように変わって来ているので、普通にPCやスマートホンでも、情報が取れるよね。

というところがIotのそもそも。

でもアルジャンは、、Thing - 物がインターネットにつながるよどうするではない。
Thing - 物をインターネットにどうつなげるの、というところが軸足っぽいかな。

まぁ、昔からあるものの、埃を掃って、お化粧直しをして…

組み込み系の人には、なんか通信手段/プロトコルが少し面倒になっただけなんだなぁ?

結局これが、ビッグデータの一つというところが多分、肝。

TCP/IPで通信できない、機器を、ケートウェィという、機器でインターネットにつないでいくというのも、ビッグデータを使いたい方から見ると、胡散臭い。

さらに、ここにもAIをという話も出てきていて。
え、生のデータを送らないってことですか。

でも、生データが無いと機械学習できない。
なのに、ゲートウェー/エッヂ、では、学習済みのモデル/AIの実行部分しか分担できないらしい。
生データはだらだらネット上へ送るけど、判断は、エッジで?
たまに、更新された学習済みモデルをネットから更新してもらうの?
うーん、なんだかなぁ。

core2.0のASP.NET MVCをIISでホストした。

ASP.NET MVCシステム開発、今からやるなら、core 2.0 だよね。
でも、ops側はあまり変わったことはしたくない。

できれば、Azure App Service で、サクッとデプロイなんてのは、devのわがままなのかも、

で、AzureでWindows server をVMで立てて、IIsホスティングをするにはというので、調べてみました。

普通に、IISを有効にして、最新の.NET Core Windows Server ホスティング バンドルをインストールすればいいみたいのですが…

「システムを再起動するか、コマンド プロンプトから net stop was /y に続けて net start w3svc を実行します。 IIS を再起動すると、インストーラーによって行われたシステム パスへの変更が取得されます。」

となっていますが、素直にシステム再起動したほうが良さげです。

まぁ、サービス的に展開したいのだが、マルチテナント的な作りこみはしたくない、とかという、要望もある。


テナントごとに、Azure App Serviceとなると、コスト的にかかるのでこうしたいみたい。

ま、GUIで管理できるし。

現時点最新、ここをよく読めばわかります。

docs.microsoft.com

 

Static おじさん

Staticおじさんと言う表現があるようで

いろいろ定義はあるようですが、私が五年ほど前にあったのはほんまもんでした。

現場はUnixでサーバーサイドの開発。
そこでは、バッチ系という。
実際は、サービスで。

で、使用言語はC。

データはStatic変数で保存してください。
出たなStaticお化け。と思って
「はぁ、アロックしたメモリーはStaic変数で管理するということですね。」
と確認すると。
「いやいや、ヒープはメンテナンスが大変なのですべてstaticで定義してください。」
というので
「いやいや、結構な量のデータを一気に処理するので厳しいですよ。」
といっても、よろしくお願いしますの一点張り。

で、開発時は最大処理数を5個にして動作確認、単体テストまで完了。

で、結合テスト時に処理数を500にして納品。
もちろんこちらのテスト環境では、ロードに失敗するのでテストはできないわけで。
火を噴いてましたねぇ。

いゃ、デファインでヒープ対応になる様にも仕込んで、いきさつもコメントに書いてありましたから。
テストチームが何とかしたと思いますが。

もはや、怪談です。

対立軸のすり替え理論

対立軸のすり替え理論、そんなものが実際にあるのかどうかもわからない。
子供が、予備校で聞いてきた、現代文の選択問題の解法の一つだという。

 

選択肢が、あるがゆえに問題点を見失い、正しい選択ができい。
出題側も意図して設問をしていて、注意してねということらしい。

十分に本題をとらえていれば、どうという事ない問題でも、対立軸が故意にずれている設問に惑わされるという事。

 

今回の、選挙を見ていると、自民党はこの手法をわかって利用しているように思える。

本来、改憲の是非を問う選挙なのに、野党に対しては、福祉と経済の軸で対抗していた。

 

結果、政権が取れると改憲ありきの話になっている。
 

自民党の改正案はかなり極端な内容なのは、ご存じだろう。
そして、しれっと、遥かにリベラルな案を出してくるはずだ。

 

ああ、自民党はまともな事を言うんだなと、勘違いさせるために。

 

これが対立軸のすり替えだ。

 

元々は、改憲するかしないかの対立軸が
どちらの自民党案が良いかになってしまうのだ。

 

ご注意されませ。
 

Microsoft Report ViewerをWebFormで使ってみる

 

Communityエディションはオプションらしいので追加でインストールしましょう。

まず、素のWinFormプロジェクト

 

f:id:ueshiman:20160518112604p:plain

 

新しい項目の追加から、Reportingでレポートを追加。

 

f:id:ueshiman:20160518112746p:plain

 

ツールボックスから一覧を落とします。 これがデータの明細です。 なんだか、複数貼れるようですが よくわからないので一つにしておきます。

 f:id:ueshiman:20160518115445p:plain

と、データセットプロパティーウィンドウが出るので設定します。

f:id:ueshiman:20160518115716p:plain

すでにデータソースがあれば、プルダウンから なければ新規作成から

f:id:ueshiman:20160518123707p:plain

 

あとは、レポートデータや、ツールボックスから、一覧の上にパーツを貼ります。 外にも張れますが、いっかてしか表示できません。 テーブルから一覧的に印字する場合は、必ず一覧の上に貼る様にします。 

f:id:ueshiman:20160518123817p:plain

なぜか一覧上にパーツが乗らない場合は、Visual Studioとか、Windowsを再起動してみるといいでしょう。

 

 

プレビューとプレビューからの印刷

 

プレビュー画面を作ります

追加から新規のWebフォームを一つ作って ツールバーから、ReportViewerを追加

f:id:ueshiman:20160518123913p:plain

ツールバーから、ReportのReportViewerと、Ajaxの Script Maneger を追加

 

 

矢印の三角をクリックしてください

f:id:ueshiman:20160518124003p:plain

 

作ったレポートを指定します。

 

f:id:ueshiman:20160518124054p:plain

 

これを実行すると

 

f:id:ueshiman:20160518124111p:plain

 

これでは、固定の出力しかできない。 もちろん、パラメーター付きのクエリのGetDataメソッドを足せばいい。 でも、コードベースでデータを差し替えたいと思う。

 

 

此処までくるとObjectDataSouceというものができているので、これを何とかすればと思うところですが、私はダメでした。

RcordViewerを触ります。右クリックして出たポップアップメニューから、コードへ移動を選んで移動

 f:id:ueshiman:20160518124003p:plain

 

移動しました。

f:id:ueshiman:20160518124228p:plain

 

 

Page_Loadに書いてみます。

ボタンイベントでも大丈夫です。

       protected void Page_Load(object sender, EventArgs e)

       {

           if (!IsPostBack)

           {

               using (EstateManagerTestDataSetTableAdapters.document_folderTableAdapter document_folderTableAdapter_ = new EstateManagerTestDataSetTableAdapters.document_folderTableAdapter())

               {

                  EstateManagerTestDataSet.document_folderDataTable table = document_folderTableAdapter_.GetData();

                   foreach (EstateManagerTestDataSet.document_folderRow row in table)

                   {

                       if (row.document_folder_id % 2 == 0)

                       {

                           row.Delete();

                       }

                   }

                   table.AcceptChanges();

                   ReportViewer1.LocalReport.DataSources.Clear();

                  ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", (System.Data.DataTable)table));

                   ReportViewer1.DataBind();

               }

 

           }

       }

 

IDが奇数の物だけになりましす。