發表文章

(影片) PromQL

  PromQL  是 Prometheus 監控系統內置的一種查詢語言,PromQL 允許你以靈活的方式選擇、聚合等其他方式轉換和計算時間序列數據,該語言僅用於讀取數據。可以說 PromQL 是我們學習 Prometheus 最困難也是最重要的部分,本章節我們將介紹 PromQL 的基礎知識、理論基礎,然後會深入了解更加高級的查詢模式。 與 SQL 查詢語言(SELECT * FROM ...)不同,PromQL 是一種嵌套的函數式語言,就是我們要把需要查找的數據描述成一組嵌套的表達式,每個表達式都會評估為一個中間值,每個中間值都會被用作它上層表達式中的參數,而查詢的最外層表達式表示你可以在表格、圖形中看到的最終返回值。 https://www.youtube.com/watch?v=FLT0d8fyhK4 https://www.youtube.com/watch?v=ZDDPJuMwUvs https://erhwenkuo.github.io/prometheus/promql/intro/#_4

(影片) Karate 介紹

  Karate 由Intuit作为开源工具发布。该工具旨在用于自动API测试,并具有使API测试变得轻而易举且实际上令人愉快的所有必需功能。 与需要大量编码的其他自动化API测试工具不同,即使只是做基本的东西,Karate开箱即用。您可以在不了解任何编程语言的情况下构建最复杂的请求 - 响应操作。您所要做的就是使用纯文本Gherkin样式编写要素文件。 因为Karate是一个完整的DSL并且位于Cucumber-JVM之上 ,所以你可以像任何标准的Java项目一样运行测试并生成报告,但是你不是编写Java代码,而是用一种用来处理HTTP,JSON的语言来编写测试。或XML简单易用。 虽然没有使用Karate的先决条件,但如果您对HTTP,JSON,XML,JsonPath以及XPath和JavaScript有基本的了解,它会有所帮助。 Karate 是一个集成 API 测试、模拟和性能测试的开源框架,它利用类似于 Gherkin 的语法(Given/When/Then)来编写易于理解的测试脚本。其核心架构基于 Java,并与 JUnit 结合使用,通过 Maven 或 Gradle 集成。 https://www.youtube.com/watch?v=0pv2qTB-YeY

Mapstruct

MapStruct 在系統開發過程中,難免會遇到各類物件的轉換,如DB Entity物件轉換成領域物件 (Domain Object)或值物件 (Value Object)、領域物件、值物件轉換成 DTO物件,在物件的轉換過程中常伴隨著反覆的物件創建與設值,如果物件的欄位較多,就容易出現有些欄位設定遺漏,此時若沒有透過單元測試等手段驗證,就容易 造成在系統內部物件轉換或與外部系統溝通的傳遞過程中遺失資訊。 MapStruct可以處理上述提到的問題,簡化物件間轉換欄位映射 (mapping)過程。MapStruct採用annotation processor技術,在Java編譯時期自動生成對應 的Setter、Getter與Constructor等相關程式碼。 https://www.tpisoftware.com/tpu/articleDetails/2443 https://blog.csdn.net/u013066244/article/details/129823436 

Note LLM

  Note LLM 以Google Gemini 2.0為基礎、被譽為「最強AI筆記神器」的NotebookLM,你用過了嗎?不僅能生成摘要,還能產出Podcast形式的音訊!以下文章幫你一次整理NotebookLM的功能、使用方式與方案比較。 NotebookLM是什麼? NotebookLM(Notebook Language Model)是由Google開發的AI筆記助理,專為研究與寫作設計。它能讀取使用者上傳的文件,根據內容生成摘要、回答問題,甚至提供相關資訊,幫助整理思路與加速寫作流程。同時,NotebookLM聲明,絕不會將個人資料用於模型訓練。 NotebookLM有哪些功能、亮點? 生成摘要:上傳 PDF、網站、YouTube 影片、音訊檔案、Google文件或 Google簡報,NotebookLM就會運用Gemini 2.0的多模態理解能力生成摘要、分析資料。 即時分析資料:NotebookLM可以協助彙整所有上傳來源的內容,快速提供、分析資訊。 Audio Overview:透過Audio Overview功能,NotebookLM可以把筆記內容、研究資料轉換成Podcast形式的音訊檔案。 資料庫建立:NotebookLM能為每個研究資料、寫作內容進行整理,並歸納在專屬的筆記本當中,增加蒐集、檢索資料的效率。此外,NotebookLM也能根據你所提供的資料進行回應,而非僅透過預設的訓練資料提供回答。 NotebookLM如何使用? 廣告 進入NotebookLM網站。 註冊與登入:用戶登入Google帳號後,即可將文件上傳至NotebookLM。 建立新筆記本:上傳純文字、PDF、Google文件、Google簡報、網站、音訊檔案或YouTube影片,AI會自動解析內容,提供摘要與重點標註。 互動式問答:用戶可以直接向 AI 提問,如「這份筆記的重點是什麼?」NotebookLM 會根據內容給出回答,甚至補充相關資訊。 整理與標籤分類:AI會根據內容自動生成標籤,幫助用戶快速分類與檢索。 https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94...

SSE (Server-Sent Events)

 淺談 Server-Sent Events 與 Server 互動 一般的 get/post request 都是基於 HTTP 的標準根據請求來回覆回應的,一旦回應完成連線就會中斷。但如果有些更複雜的需求需要讓後端發送訊息給前端,比較好的方式就是建立 websocket,讓 request 保持連線。不過有時候為了一個需求要建立 websocket 會有點麻煩。因此 Server-Sent Events 就是為了這種需求而誕生的。 Server-Sent Events 以下簡稱 SSE。若說 websocket 是雙向溝通的話,SSE 其實是單向溝通的,也就是說,一但連線建立之後,就只能接收 Server 端來的訊息。實際的使用情境例如: 上傳超大檔案需要通知 client 端上傳處理進度。 轉檔需要通知 client 端處理進度。 非同步的商業邏輯處理需要通知 client 端狀況。 從 Server 傳送訊息 要從 Server 傳送訊息也蠻簡單的,只要在 response 宣告 header 。 Content-Type: "text/event-stream" 建立好連線之後就可以接收 SSE 的訊息做後續的處理。 限制 SSE 的限制是 有限的連線數。 只能處理基本 text 的訊息, 不能自訂 custom header ,例如要傳 Authorization 就不行。這個問題其實蠻大的,因為通常會需要做這種需求都會需要驗證使用者登入狀態,用 header 來處理 auth。

AOP 剖面導向程式設計

圖片
  AOP(Aspect-oriented programming)剖面導向程式設計 一般我們在寫程式時,很常需要處理譬如錯誤紀錄、權限驗證,乃至於額外可能增加使用者查詢歷程等等,就以錯誤紀錄來說,一個方法(Function)要用Nlog進行錯誤紀錄,通常會是這樣子。 使用AOP架構好處多多,減少重工又可以讓你的程式碼更加簡單易懂,因為共用的邏輯抽離之後,就只需要專注於商業邏輯的撰寫,只是對於C#新手來說,可能門檻比較高,不過整體來說,專案若是套用了AOP架構後,整個大升級,不管幾百幾千的方法,如果要加上一堆共用基制的話,都不用怕 https://ithelp.ithome.com.tw/articles/10229664

Prometheus Operator1

  https://yunlzheng.gitbook.io/prometheus-book/part-iii-prometheus-shi-zhan/operator/what-is-prometheus-operator https://erhwenkuo.github.io/kubernetes/observability/metrics/kube-prometheus-stack/setup-prometheus-and-grafana-on-kubernetes/#_1 https://claire-chang.com/2022/12/16/prometheus-operator/ https://blog.amis.com/kubernetes-operators-prometheus-3584edd72275https://blog.amis.com/kubernetes-operators-prometheus-3584edd72275