2020年7月14日 星期二

SAP ERP途程 table串接

參考文件:

會使用到 MAPL (有料號)  串 PLKO , PLAS, PLPO, SQL 如下
 plko AS ko 
 INNER JOIN plas AS ps 
      ON ko~plnty ps~plnty AND ko~plnnr ps~plnnr
     AND ko~plnal ps~plnal

 INNER JOIN plpo AS po 
      ON po~plnty ps~plnty AND po~plnnr ps~plnnr
     AND po~plnkn ps~plnkn 
 

[Docker] 將 Docker服務轉移至 synology DS918+

Celeron等級的 CPU、4G 的 RAM,要把原本放在 Server上的 docker服務改至 NAS實在是有點擔心是否有問題,但考量我的服務不多且相對簡單,舊的 NAS用了6年也想要換了,所以就買了 synology DS918+

程式改由放在 git repository,再放上 jenkins服務就可以把程式變成 image進而成 container,程式變動後一下子 container就會更新,目前用了快半年後覺得當初的決定還不賴,有興趣把 docker放在家裡可以試試這種方案,如果還是擔心效能的可以再買等級較高的 NAS




SAP ERP 在 SQL 使用 for all entries串接 internal table注意事項

使用 for all entries的 sql程式碼前面一定要先檢查對應的 internal table 是否為空 (is initial),如果不為空值才執行 sql,否則會把資料全部捉出來,有可能造成 db dump的出現。

2019年7月22日 星期一

ASP.NET Core 2.2 Web API讀取 Request.Body時出現 BadHttpRequestException: Reading the request body timed out due to data arriving too slowly

參考 BadHttpRequestException: Reading the request body timed out due to data arriving too slowly

原本在 1.* Web API 的版本上執行正常的程式升級為 2.2時出現  BadHttpRequestException: Reading the request body timed out due to data arriving too slowly
出錯錯誤的程式碼為

StreamReader sr = new StreamReader(Request.Body);
string str = await sr.ReadToEndAsync();

專家找出的問題應該是 tread 的問題,我的環境是在 CentOS 7上,使用 docker佈署 Web API的程式,目前文章上有三種作法
第一種在 Startup.cs ConfigureServices 加上下列程式碼
services.Configure<KestrelServerOptions>(options =>{
options.Limits.MinRequestBodyDataRate = new MinDataRate(1, TimeSpan.FromMinutes(5));
options.Limits.MinResponseDataRate = new MinDataRate(1, TimeSpan.FromMinutes(5));
options.Limits.MaxRequestBodySize = 100000000;
});

2019年7月11日 星期四

使用 Dockerfile建置 ASP.NET Core 2以上使用的 Image

參考 Exploring the .NET Core MCR Docker files (updated): runtime vs aspnet vs sdk

在參考文章有詳細的說明
要使用 mcr開頭,如 FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

使用 ASP.NET Core連結 MongoDB Atlas

MongoDB Atlas 說明 (官網的文件寫的非常詳細,對於初學者有很大幫助)
Download .NET Core 2.2
ASP.NET Core 2.2 簡介 
Visual Studio Code (參考 使用Visual Studio Code开发.NET Core看这篇就够了 安裝 C#)

MongoDB Atlas是官方 MongoDB雲端的方案,可以建立一個 Free Tier Cluster,容量大小是有限制的。

MongoDB對於各語言都有對應的 driver,對 C#也有很好的支持, 2017年 12月就使用 ASP.Net Core 1.x的版本連結至 Atlas時,在本機端 (Windows)是沒有問題的,但因為我想使用 docker + jenkins佈署程式到 CentOS卻發生問題,後來在 MongoDB官網說明,.Net Core library在 Linux or OSX不支援 SNI TLS Extension,所以無法連到 Atlas Free Tier Cluster,所以後續開發程式改用別的方法進行。

但最近 MongoDB官網提出新的說明,只要使用 .Net Core 2.1以上的版本就可以開始連線,這部分用 Visual Studio Code使用 ASP.NET Core 2.2進行程式測試,在本機端 (Windows) OK,用 Docker在 CentOS上測試也沒問題。

2019年1月29日 星期二

OAuth2 Server實作,使用 Spring Boot

參考文件:
Spring OAuth 2 Developers Guide

如果你有很多系統但想用同一個方式登入,存取資源的話,建立 OAuth2 Server是一個好方法,可以參考 spring-security-oauth的方式來建立。 但目前很多範例是用 Spring Boot來建立,我參考的 Secure Spring REST With Spring Security and OAuth2 (github source code) 就是。
幾個點跟大家分享:


儲存 token, user帳號、宓碼會有三種方式
1.InMemory的方式,也是預設的方式

2.把資訊記錄在資料庫內,使用 jdbc data store,參考的範例內有 H2和 Postgresql,其它分享有用 MySQL的方式,如果是用 H2的話,一開始應該會放在本機,如果要用 remote模式要參考 Allow remote access to H2 Database設定,宓碼變更請參考 set password

3.jwt方式spring security 5.1開始就只支援這種方式


文章有提到會建立 Authorization Server, Resource Server,實際上是建立相關的 configuration class設定的動作,基本上有三個,也可以只寫一個 class extends 三個類別