99Cat

@mko123654

一個愛貓的韭菜QQ

Joined on Dec 17, 2021

  • Docker Swarm 測試配置規劃 正常來說要做到好的 HA 機制可能需要7台以上的 server,然後設定2台為 manager。5台為 worker 之類的。 但因為範例簡化:只準備了2台 server,分別為 manager 的 Server1 和 worker 的 Server2。 1. Docker Swarm init 第一步驟,請先確保這些server的網路是互通的 接著在你要當作 manager 的 Server1 輸入 swarm init 命令,這時 Server1 會切換到 Swarm 模式,並被設置為 manager --advertise-addr參數是當該主機有多張網卡、虛擬網卡 ip 時,要指定哪一個作為露出。
     Like  Bookmark
  • 前言 如果使用 Docker Swarm 去做 Load balance 機制,當我們要取得來源端 client ip 時,會發現由 HttpServletRequest.getHeader("X-Forwarded-For") 所得到的 ip 會變成例如 10.0.0.2 這個樣子。 因為取得的是 docker 自己分派的虛擬 ip。 目前無法利用 Docker 自行解決。但是我們可以利用一台反向代理服務入口,再轉導至 該 Docker Swarm 入口,就可以取到正確的 ip。 架構圖 說明 在建立 Docker Swarm 建立號服務站來後,不要以服務站台的位置當入口(10.205.60.X.7777)。而是建立一台 Reverse Proxy 當作服務露出的入口。 而這個 Reverse Proxy 不會加入該 Docker Swarm。
     Like  Bookmark
  • [實作目的] 工作上遇到需要去call 不相關的A、B、C、D API之後,將查到的資料彙整成一個 List 的功能,但資料庫內資料量太大造成一一查詢效能低落,於是改為 4 個執行續分頭作業後再彙整。 1.建立固定 4 個執行續的執行續池: ExecutorService executor = Executors.newFixedThreadPool(4,new ThreadFactory() { int count = 1; @Override public Thread newThread(@NonNull Runnable runnable) { return new Thread(runnable, "ABCD-executor-" + count++); }
     Like  Bookmark
  • 【Docker hub image】 https://registry.hub.docker.com/r/banglamon/oracle193db/tags 抓image下來: docker pull banglamon/oracle193db:19.3.0-ee 手動建立這兩個目錄: D:/0Software/Oracle/opt/oradata、D:/0Software/Oracle/u01/oradata 執行 image 成 container 服務 (sys密碼:111),並且掛載 volume 出來到手動建立的資料夾 docker run -d --name oracle19db -p 1680:1521 -e ORACLE_SID=xe -e ORACLE_PDB=XEPDB -e ORACLE_PWD=111 -v D:/0Software/Oracle/opt/oradata:/opt/oracle/oradata -v D:/0Software/Oracle/u01/oradata:/u01/app/oracle/oradata banglamon/oracle193db:19.3.0-ee
     Like  Bookmark
  • 1.利用vite打包 在利用vue3+vite建置專案時,可以到package.json的script內加上利用vite的打包功能的指令,"build:dev": "vite build --mode development"。 至於--mode 後面帶的 development 是指會去讀取我設定的.env.development檔案,裡面帶了在測試環境需要的設定檔。 我的.env.development內容如下: NODE_ENV=development VITE_APP_TITLE=我的VUE前端網頁 VITE_APP_BASE_API=http://localhost:7778/myVeu/api
     Like  Bookmark
  • 前言 一般在Spring Boot 專案中,若只需要連接一個資料庫,只需要依賴spring-boot-start-jdbc和配置好application.yml即可使用。 但若功能需要讀取複數個不同的資料庫時就需要特別配置DataSource。 作法 DataBaseConfiguration.java 在該檔案內定義了2個不同的資料庫DataSource,env.getProperty("XXX")取的是application.yml設定好的連線資訊、參數。
     Like  Bookmark
  • 先下載docker 的 zip檔 https://dockermsft.blob.core.windows.net/dockercontainer/docker-19-03-1.zip # Extract the archive. Expand-Archive docker-19-03-1.zip -DestinationPath $Env:ProgramFiles # Clean up the zip file. Remove-Item -Force docker-19-03-1zip # Install Docker. This requires rebooting. $null = Install-WindowsFeature containers # Add Docker to the path for the current session.
     Like  Bookmark
  • 前情提要 不管是使用Flogger、Sl4j、jboss-logging等常見的框架套件,它們都是屬於interface的層級。 真正實踐的部分是 Log4j JUL(java.util.logging)或是 Log4j2 Logback。 而Spring Boot官方推薦的是Sl4j+Log4j2 Logback的搭配。 以下就以log4j2.yml的設定檔來說明 log4j2.yml log4j2.yml放在專案 src > main > resources 底下(與application.yml為同層) 整體組成為在Configuration元素下有0至N個appender元素,0至N個logger元素,0至1個root元素(最多只能一個)
     Like  Bookmark
  • 原因 java在import檔案時,專案同仁每個人排列的習慣都不同 或是程式碼排版的風格也不同 時常因順序不同,出現在commit紀錄(但沒什麼意義) 因此統一用了Prettier來自動排版 作法 1. IDEA 安裝plugin prettier Snipaste_2022-12-30_14-21-16
     Like 1 Bookmark
  • ORACLE內的Pakage 假設有個包含所有取餘額的專屬package,裡面有AA/BB/CC/DD/EE五種procedure,(各有不同的取餘額邏輯,且輸入/輸出參數略有不同) Uploading file..._uy1dka4al 作法 這邊示範AA/BB/CC的呼叫方法 (因為他們的輸入/輸出參數相同,固封裝成一個方法) 這邊有一點需要注意,在.declareParameters()宣告參數時,Oracle其實不會看Key的名稱抓value,而是依照順序丟入。所以宣告的順序必須和procedure內一模一樣,不然回傳的MAP結果會錯亂。 public ProcedureGetBalDTO execGetAaBbCcBal(String precedureName, String accidno, String queryDate) {
     Like 1 Bookmark
  • 坑點 通常在讀取文檔、依分隔號切割字串轉成entity存入資料庫時 一般會將前端上傳的MultipartFile轉型為File,再使用File系列的API去處理文檔 // MultipartFile轉型為File private File convertMultiPartToFile(MultipartFile file ) throws IOException { File convFile = new File(Objects.requireNonNull(file.getOriginalFilename())); FileOutputStream fos = new FileOutputStream( convFile ); fos.write( file.getBytes() ); fos.close();
     Like  Bookmark
  • 坑點 專案中需要產出指定格式的TXT檔案,介接其他系統的API。 其中規定中文算2碼,英文數字為1碼 原本在本機測試和WinServer測試環境上都是OK的。 結果放上OpenShift環境裡,資料格式直接跑版。 原因 String.getBytes()取用編碼的依序如下: 1.String.getBytes("指定編碼")
     Like  Bookmark
  • 個人版控注意事項: 在修改任何檔案前,先檢查當前的branch是否與遠端的對應 每次修改完內容git add以後,用git status確認實際修改的檔案是否有加入到staged中,同時檢查是否有修改到額外的檔案。 可以合理利用git commit --amend重新修改版本內容 通常master分支表示穩定版,在開發時不會操作到,develop為實際的開發分支,個人在開發時會從develop分支上開闢一個自訂的分支,並在此分支上進行開發,當開發完成後再通過PR的方式merge回develop分支 git push使用整理: git push origin branch_name 將本地的branch_name推送到遠端的同名分支
     Like  Bookmark
  • 懶人包 執行npm install --legacy-peer-deps 說明 以下以一個Vue專案為例: 該專案使用了 "vue": "2.6.14",所以開啟專案根目錄的node_modules會看到有@vue的函示庫資料夾。且底下還有更多功能區塊的資料夾。 然後先關注cli-plugin-eslint和cli-plugin-router這兩個功能區塊的資料夾。開啟專案根目錄的package-lock.json檔可以看到cli-plugin-eslint和cli-plugin-router這兩個功能區塊的詳細資訊:
     Like 4 Bookmark
  • [前情提要] 正式成為全端工程師也2年了,2022年再度受到Covid-19的襲擊,公司WFH了好一陣子、家裡又有很多高風險族群的同住家人。宅在家的時間變多了,萌生了檢驗自己運用現有的技術,寫一個簡單線上面試技術考題系統的想法,來檢驗自己2年的成果,Let's go!! [系統說明] 一個用於做技術面試的線上考試網站 角色權限如下表:分為考生、考官、管理員 3 種 權限/角色 考生
     Like  Bookmark
  • [實作目的] Server端介接Cryptowatch API,定時批次取得比特幣即時價格,並推播到前端畫面。 程式碼傳送門:GitHub 啟動程式後,瀏覽器連上localhost:8080即可 功能展示 因為Cryptowatch API沒有付費的話,會有介接的使用次數限制。因此也將該資訊於前端展示,並且將批次設定為5秒執行一次以減少quota的使用。 幾秒後...的畫面 前端程式碼
     Like  Bookmark
  • 內容僅為個人學習筆記之紀錄分享。 課程網址 https://www.udemy.com/course/angular-zero/ 【S00~S03筆記】 [Angular] 【Angular 開發實戰:從零開始】 學習筆記 (上) S04重點整理
     Like  Bookmark
  • 內容僅為個人學習筆記之紀錄分享。 課程網址 https://www.udemy.com/course/angular-zero/ S01重點整理 S01-03:使用 Angular CLI 建立 Angular 專案骨架 檔案名稱
     Like  Bookmark
  • [實作目的] 專案需求,需要開一個假日查詢的API,給各個部屬於不同AP的服務call [前情提要] 後台有假日管理功能,可以手動加入補班日/颱風假/彈性放假 DTO package gov.pcc.pwc.service.dto; public class HolidayApiDTO { private String calendarDay; private String workingDay; private String dateStart;
     Like  Bookmark
  • [實作目的] 有些頁面在跳轉上,或是送出請求的加載的比較慢,讓使用者知道目前的進度有極高的機會能增加使用者的耐心 (希望他不要一直按F5),以下是簡單的實作方式。 [效果展示] 載入中 安裝 直接於專案資料夾打開CMD下安裝指令:npm install --save nprogress 若要指定版本也可下參數,或是直接於package.json指定。
     Like  Bookmark