面向導向程式設計(AOP)概念 與 AspectJ 實作
前言在物件導向程式設計(OOP)中,系統的功能被分散到多個類別或物件中,例如日誌記錄、權限驗證、安全性等方面的程式碼會散佈在不同的類和方法中,導致程式碼的重複性和難以維護性增加。 AOP的目標是通過提取這些橫切關注點,並將它們模組化,從而提高程式碼的可讀性、可維護性和可重用性。 AOP介紹AOP概念簡單來說,面向導向程式設計(Aspect-oriented programming, AOP)是根據專案程式中想要介入的地方進行行為操作。 如下圖範例,想對Method A B C執行前都先進行權限驗證行為,執行後都進行日誌紀錄行為。而原本寫法上要到每個函式宣告的地方插入撰寫的內容。AOP則改為在單個面向程式碼中寫這幾個Method是切入點,要在執行前加入這項功能行為。來達成統一管理以及模組化的效用 換個情境思考,若原先的寫法上因為驗證相關的類別與方法有更新,而導致每個引用的部分皆須微調修正,那是不是會頭痛呢 AOP術語在AOP中有以下常用的術語: 面向連結點 (joinpoint) 連結點為在面向中需要關注的點,如以下: 呼叫方法或建構子 (A method or construct ...
運用Docker建置GitLab Server與GitLab CI Runner
前言GitLab提供self-managed GitLab伺服器架設方式,讓企業或團隊可以在自己的基礎設施(infrastructure)中運行GitLab Server。私人的GitLab Server使得專案機密資料不會因第三方因素而暴露,導致企業研發之專利技術內容公開而失去價值。 GitLab CI Runner為提供GitLab 運行CI/CD作業的應用程式 實作重點 環境準備 安裝Docker 建置GitLab Server 撰寫Docker Compose.yml設置運行容器服務 申請Gmail應用程式密碼 撰寫.env環境變數 運行GitLab Server容器 寄送測試信件確認SMTP功能 使用者註冊設置 建置GitLab CI Runner 於GitLab專案Repo上新增CI/CD Runner 撰寫Docker Compose.yml設置運行容器服務 運行GitLab CI Runner容器 註冊GitLab CI Runner 查看該Project的Runner是否成功註冊 測試GitLab CI Runner 於Repo中建立.gitlab-ci. ...
運用Borg 與 Crontab建立自動化本地與異地備份Backup
前言當架設後端服務時,伺服器通常會隨著時間儲存了許多使用者的資料(圖片、影片等等)。然而若沒有本地備份與異地備份,當發生意外刪除或者磁碟損壞時,使用者的重要資料也就無法恢復了。因此定時備份為一種災難恢復(disaster recovery)的方式。 Borg是一種備份工具,他提供增量備份、去除重複壓縮與加密等功能。 Crontab是一個在Unix操作系統上用於定期執行任務的工具,透過設置任務方式,使其在預定時間或間隔自動執行指令或腳本 實作重點 環境準備 安裝Borg 本地端 - 備份方法 初始化備份資料的存放區 建立備份歸檔 列出歸檔清單 修剪備份存檔 異地端 - 備份方法 初始化備份資料的存放區 建立備份歸檔 透過金鑰授權,避免每次輸入異地機器的密碼方式 自動化備份 建立備份腳本Shell script 設定Crontab定時任務 其他備份指令介紹 比較歸檔差異性 恢復資料 環境準備安裝Borg這邊使用的是borg1.2.2版本 123456789101112131415161718wget -q --show-progress https://github. ...
Jenkins Plugin插件開發入門
前言DevOps是一種軟體開發方法論,旨在加速軟體生命週期,從設計到交付,並透過持續集成、持續交付、持續監控來提高軟體質量。透過持續集成和持續交付實現快速、可靠地將軟體部署到生產環境。 而Jenkins 是一種用於自動化構建和測試的軟件工具。它通常用於持續集成和持續交付流程中,可以自動執行程序構建、測試和部署任務。使用 Jenkins 可以減少人為干預,提高應用程序的品質和可用性。它還可以通過監控項目的構建狀態,提供即時反饋和報告。 Jenkins提供Jenkins Plugin的方式使開發者可以開發需要的程式以擴充至建置流程中,滿足團隊專案在持續整合期間的需求。 由於當初在找Jenkins Plugin教學時,發現官方資料非常稀少,後來得知官方教學的網域有改,之前的文章都無法Acess了像遇到此種情況,當時很機靈的拿去網站時光機試試看,沒想到還真有資料。不過網站時光機訪問時有些緩慢就是了,這是一個小缺點 實作重點 環境準備 安裝Java JDK 8 安裝Maven 設定環境變數 使用插件範本建立專案、測試運行與發佈打包 使用樣本插件原型建立專案結構 確認可以建構專案 運行插 ...
使用 Docker Compose 一次建立 Nginx 伺服器 與 Cerbot(SSL自動憑證)
網路發展迅速,人們使用網際網路於網頁上獲取新知,網站之間傳輸需經由安全加密以避免有心人士從中做壞,因此SSL(Secure Sockets Layer)憑證是一種用於網站的安全證書,它可以保證在傳送數據時保持安全性。通常SSL憑證來源可以由SSL憑證供應商取得,不過可能需要付出一定非用。當然也有免費的來源,而免費的憑證服務有效期限為90天,一段時間就得重複同樣操作其實浪費時間與心力,若有自動化的方式何不為樂呢。因此這次帶來容器化方式一次將所有服務設置完成。
GitLab + Jenkins 建置CICD流程
前言在軟體工程中,頻繁的交付新的軟體版本是常見的現象。而 在軟體版本持續更新的同時,如何保證程式保持一定的品質呢? 若每一次的小部分更動都交由人力來監管品質,則消耗大量人力成本,且耗費時間也將提升。因此在應用程式的提交、建置、測試和部署中實施自動化,透過每次自動化的流程達成持續整合、持續交付與持續佈署。 什麼是CI(Continuous Integration, 持續整合)?持續整合(CI)是開發人員將軟體系統每個變動實行自動化驗證,其中驗證包含:專案建置(build)、測試(test)、程式碼安全分析(analysis)等等,若驗證通過代表此次提交的更動版本對過去設置的標準,可以確定新版程式碼和原有的能否正確地整合在一起。這一系列的驗證會交由自動化工具執行,DevOps人員只需要將工具的觸發、執行等設定完成即可自動化運作。常見的CI工具如下: Jenkins Drone Circle CI GitLab CI 什麼是CD(Continuous delivery / Continuous deployment, 持續交付/持續佈署)?持續交付(CD)是在持續整合的基礎上,將整合的 ...
使用 Webpack 和 Webpack Dev Server 打造前端專案環境
隨著技術演進...前端不再是單純html、css、js,為了符合各種需求,開始開發各種框架、預處理器引進專案內,並使用模組化方式開發專案。然而瀏覽器並無法直接辨識這樣的專案內容,因此需要透過webpack等前端打包工具使用編譯的方式轉換成瀏覽器看得懂的內容。