https://avatars.githubusercontent.com/u/6058558

程式狂想筆記

如何在 HTTP 網頁中允許 HTTPS API 呼叫

在開發測試過程中,我們經常會遇到一些內部環境不是 HTTPS 的情況。雖然我們可以通過掛載證書來解決這個問題,但有時候現實的情況並不是我們能完全控制的。因此,我們需要進行一些設定,以便在這些環境下進行開發測試。

探索陣列與字串相似度比較方法

最近要產敏要做相似度功能,目前沒有大數據平台串接,所以用貼標方式去做相似度。但要怎麼做到這個功能,SA 提出用字串串接相似度來判斷,我覺得滿有趣,找出一些網路上案例,看看他們怎麼做。

CORS 解決方案:前端如何處理收不到 Response Header 的問題

最近我設計了一個 OAuth Token 驗證給前端串接,但發現前端無法抓取到我後端的 Response Header。經過一番研究,我發現問題出在 CORS 上。以前我對 CORS 都是簡單了解,沒想到 CORS 規範的內容如此豐富。這篇文章就是我對此進行深入研究的記錄。這篇還一點債了…

心智圖

因為 mermaid 無法用-,所以用_置換。

mindmap Same_Origin Policy Origin Tuple origin schema+host+port opaque origin file://.../xxx.html CORS 簡單請求 發送Request不會預檢 Request會送到Server Response 都會檢查 Access_Control_Allow_Origin 非簡單請求 發送Request會預檢 預檢沒過,Request不會送到Server Response 都會檢查 Access_Control_Allow_Origin CORS 容易忽略那些事 Request 不能隨意帶 Header JS不能隨意用 Response Header CORS 相關 Header Access_Control_Allow_Origin Access_Control_Allow_Methods Access_Control_Allow_Headers Access_Control_Max_Age Access_Control_Expose_Headers Access_Control_Allow_Credentials

Origin Header

1
2
3
Origin: null
Origin: <scheme>://<hostname>
Origin: <scheme>://<hostname>:<port>

常見我們 AJAX 跨域會看到 HTTP 有 Origin Header 內容。

實作指南:使用 Linux Bridge 連接虛擬網路與設備

最近我需要讓 KVM 不透過設定路由,而是直接連接到現有網段。因此,我進一步研究網路新手虛擬網路設備 veth pair 實作筆記 - 程式狂想筆記這篇文章的主題。在這裡,我將簡單介紹如何操作 Linux Bridge,讓多種端口可以互相連接。

API 規格文件:簡單快速設計工具

使用快速規劃 API 規格文件的好處是,它可以幫助開發團隊更有效地溝通和協作。透過清晰的 API 規格文件,團隊成員可以快速了解 API 的功能、輸入和輸出,並且可以更容易地進行開發和測試。此外,API 規格文件還可以提供給其他團隊或合作夥伴,以便他們能夠更好地理解和使用你的 API。

Entity Framework Core:FromSqlRaw 與 FromSqlInterpolated 的使用與差異

Entity Framework Core (EF Core) 是一個開源的、跨平台的資料庫存取技術,它可以讓開發者用 .NET 對資料庫進行操作,而不需要寫 SQL 語句。然而,有時候我們還是需要直接執行 SQL 查詢,這時候 EF Core 提供了 FromSqlRawFromSqlInterpolated 兩種方法。

這兩種方法的主要差異在於,FromSqlRaw 需要手動參數化查詢,而 FromSqlInterpolated 則會自動參數化查詢。如果不正確使用,可能會使應用程式暴露於 SQL 注入攻擊。

以下是一些使用這兩種方法的例子和解釋:

不改系統時間測試時間神器:faketime

faketime 是一個強大的工具,它可以讓你在測試中操控時間。這篇文章將教你如何在 Ubuntu 上安裝和使用 faketime。

Ubuntu 安裝

首先,我們需要更新我們的套件列表,然後安裝 faketime:

1
2
3
4
# 更新套件列表
sudo apt update
# 安裝 faketime
sudo apt install faketime

接著,我們需要設定一個環境變數,讓系統知道 faketime 的位置:

1
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1

Mac 安裝

Warning
請注意,我沒有 Mac ,所以無法親自測試這段。如果你在使用過程中遇到問題,請參考 faketime 的官方文件或者在網路上尋找解答。

在 Mac 上,我們可以使用 Homebrew 來安裝 faketime:

1
brew install libfaketime

然後,我們需要設定兩個環境變數。這兩個環境變數會讓系統在執行程式時,強制使用我們指定的動態連結庫:

1
2
export DYLD_FORCE_FLAT_NAMESPACE=1
export DYLD_INSERT_LIBRARIES=/path/to/libfaketime.1.dylib

但我沒有 Mac ,所以無法測試這段