(Java)Rubyとかみたいに手ごろなツールをJavaで作りたい

これからはJava1本で逝くと決めたんだけれど(たぶん)。
振り返るとJavaではWebアプリとかバッチしか書いたことない。

Rubyとかみたいにちっちゃいツールとかを作りたい場合どうするんだ?

ということで、やってみた。不要なステップとかあるかもしれないけど、
自分はこの手順で作った。

Eclipseでの作業です。

f:id:project-masawa:20210630221414p:plain

f:id:project-masawa:20210630221438p:plain

f:id:project-masawa:20210630221508p:plain

f:id:project-masawa:20210630221520p:plain

f:id:project-masawa:20210630221530p:plain

f:id:project-masawa:20210630221540p:plain

f:id:project-masawa:20210630221552p:plain

f:id:project-masawa:20210630221603p:plain

できて、よかった。

(Java)flatMapをすっかり忘れていた

掲題どおりに陥ったので備忘録。

List<List<String>> mainList = new ArrayList<List<String>>();
mainList.add(Arrays.asList("1", "2"));
mainList.add(Arrays.asList("3", "4", "5"));
mainList.stream()
        .flatMap(lists -> lists.stream())
        .collect(Collectors.toList())
        .forEach(System.out::println);

// 1
// 2
// 3
// 4
// 5

flatMapにはstreamを渡しましょう。

TypeScriptをコンパイルできない問題

TypeScripitを書いてコンパイルして実行!をしたかったのだが、
スクリプトを実行する権限がない」とPowerShellに怒られた。(詳しいメッセージは控えてません。)

そんな時はこうする。

PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

PS C:> Get-ExecutionPolicy
RemoteSigned

(ASP.NET,C#)C#雑感

ここ数か月 C# を業務で使ってきました。
簡単なWebアプリケーション開発です。

どうしても C# について書いておきたいと思いました。

まず出自が Java であること。(Cとは全く関係がない、はず。) Javaのフォロワーであり、マイクロソフト製であることから、

「意外に思った」のだが

よくできた言語だと思います。
正直Javaより数段美しい。
マイクロソフト製だけあってIDEである Visual Studioも良くできていて使いやすい。 あとライブラリのインストール・管理が楽だった。NuGetというやつ。

しかし、それにしても開発が苦痛だった。

圧倒的に大きいのが情報が少ないこと。
C#ASP.NETも。
特にASP.NETについては情報があっても古い(のか新しいのかわからない;;)
ザックリと大きな改修を加えてるっぽいのも災いとしか言えない。

調べ方が悪いのだろうか?
今までのキャリアで培った自信を無くすくらいのレベルです。

欲しい情報はあっても2,3件くらい。1件しかたどりつかないこともザラだった。つらい。
海外のほうが普及率が高いのか、英語情報に世話になることが多かった。

Javaの圧倒的な開発案件数とそれに伴う情報量、ライブラリ数、C#では絶対にかなわないと思う。

ちょまどさんはC#の人だと認識してるのだけれど、もっと普及や情報発信に努めてほしい。
いまのところ一回もちょまどさん発信の情報には至っていない。

以上、C#の残念なところでした。

(ASP.NET.C#)appsessings.json

設定情報などコンフィギュレーションを書くところがわからない。
別に新規に作ってもよいのだけれど、何を使って読み込めばいいのかわからない。
別に新規に作ってもよいのだけれど、面倒くさい。

ということで、 appsettings.json に書くことにしました。

// appsettings.json
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Trace",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "SQLServerConnection": "Server=XXXXX\\SQLEXPRESS;Database=LeaveManagement;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Application": {
    "Mail": {
      "ClientID": "xxxxxxxxxx",
      "ClientSecret": "xxxxxxxxxx",
      "TenantId": "xxxxxxxxxx"
    }
  } 
}
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    
    // appsetting.json読み込み
    services.Configure<AppSettings>(Configuration);  // ←なんなんだ、この Configuration ってのは。コンテクストから言って appsetting.json を表してるのだろうけど。。。
    
    // ・・・
}

appsettings.json をインジェクションできる。これは便利

public EmployeeMstController(IOptions<AppSettings> optionAccessor)
{
    this._appSettings = optionAccessor.Value;
}