如何在Rust程式中處理HTTP協定的ETag? 2022 年 5 月 10 日 Magic Len Rust ETag是HTTP提供的快取機制,可以讓伺服器利用簡單的字串比對,來驗證客戶端先前快取到的HTTP回應是否依然有效。它的流程主要是這樣:伺服器在回應資料的同時,於HTTP回應標頭中夾帶「ETag」欄位,這個欄位的值就相當於這個資料的ID,而客戶端在將HTTP回應快取下來之後,若需重新發送請求時,就會在HTTP請求中夾帶「If-None-Match」欄位,將原先快取到的ETag值再回傳給伺服器,讓伺... 繼續閱讀
如何在Rust程式中判斷字元是不是中文、日文或韓文字元? 2020 年 11 月 17 日 Magic Len Rust 在處理Unicode字串的時候,CJK字元經常需要當作特例來處理。Rust的字串雖然是採用UTF-8編碼,但是它並沒有內建Unicode Block清單,無法查詢字元所屬的Unicode Block,也就不能判斷一個字元是不是中文、日文或韓文字元了。沒辦法,只能自己做啦! 繼續閱讀
如何在Rust程式中判斷兩個檔案的內容是否相同? 2020 年 11 月 12 日 Magic Len Rust 在開發程式尤其是撰寫測試或腳本的時候,有時會需要判斷兩個檔案的內容是否相同。可是由於檔案體積可能會很大,不可能直接把兩個檔案都整個讀進記憶體後再進行比對,所以要分段讀取。不過Rust的標準函式庫並沒有內建像這樣的比對檔案內容的功能,要另外實作才行。 繼續閱讀
如何使用程式語言來產生數字分頁導覽列? 2020 年 11 月 10 日 Magic Len Rust、 JavaScript 在製作網頁或是應用程式的圖形使用者介面時,如果需要顯示比較大量的資料,通常製作「換頁」、「分頁」功能。但是若是做了這樣的功能,就必須要讓使用者能夠有方法進行「跳頁」的動作。要讓使用者能夠在圖形介面上進行跳頁,比較簡單的方式就是弄個下拉式選單把所有頁碼列出來讓使用者選,或者乾脆放上一個文字輸入方塊直接讓使用者自行輸入要查詢的頁碼。當然,比較潮的方式還是弄一個數字分頁導覽列(Pagination Ba... 繼續閱讀
如何在Rust程式語言中將元素安全地插入至已排序好的集合結構中? 2020 年 11 月 5 日 Magic Len 研究分享、 Rust Rust程式語言雖然有內建BTreeSet結構體,可以保證插入至該結構中的元素是有經過排序的。但BTreeSet是一個Set,無法儲存邏輯上相同的資料,所以在一些情況下我們還是需要用比較單純的Vec結構或是其它的資料結構來儲存已排序的資料。 繼續閱讀
用Rust程式語言實作的「wpautop」函數 2020 年 11 月 3 日 Magic Len Rust Wordpress有提供一個便利的函數─wpautop,它能夠利用換行字元來對HTML內容加上「<p>」或是「<br>」標籤,讓我們在後台直接用HTML語法撰寫文章的時候,不必手動加上「<p>」或是「<br>」標籤,這也讓HTML變得比較容易閱讀,不過這個函數還是有它的問題(用了一堆正規表示式、會產生大量字串、可能在錯誤的位置插入標籤)就是了。在Rust程式語言中,如果也想要用這樣的功能,要怎麼做... 繼續閱讀
Rust程式的編譯優化(opt-level、lto、codegen-units、inline的差異) 2020 年 10 月 30 日 Magic Len 研究分享、 Rust 在建置Cargo程式專案的時候,我們可以輕易地使用「cargo build」或是「cargo build --release」指令,來對開發(development)或是發佈/部署(deployment)的目的做區分。「cargo build」編譯出來的二進制檔案沒有經過最佳化,而且會啟用「#[cfg(debug_assertions)]」屬性,來使用偵錯(debug)相關的程式碼;「cargo ... 繼續閱讀
如何讓Rust的函式庫或是應用程式輸出日誌(log)? 2020 年 10 月 27 日 Magic Len 研究分享、 Rust 撰寫日誌(logging)是除錯(debug)和事件分析時經常會使用的方式。Rust生態圈有log這個crate,針對訊息重要性(等級)提供了不同的巨集讓函式庫或是應用程式輸出日誌(log),不過它並沒有限定日誌最終會被輸出到哪,Rust開發者在引入有用到log這個crate的函式庫後,可以自行決定日誌的輸出方式。 繼續閱讀
如何在Rocket框架中使用JWT(JSON Web Token) + JWS(JSON Web Signature)? 2020 年 10 月 8 日 Magic Len 研究分享、 Rust 一個網站要辨識訪客主要會使用session、cookie-based session或token這三種方式,JWT(JSON Web Token)顧名思義就是屬於token的辨識方式。使用JWT來辨識訪者,伺服器可以不用去記憶訪客的狀態,因為JWT本身就可以儲存少量的額外資料,這點和cookie-based session相像,但JWT不僅僅能放在Cookie中傳送,也還可以置於HTTP標頭中或是... 繼續閱讀
如何使用Rust程式語言將字串安全地寫入HTML文件中? 2020 年 10 月 6 日 Magic Len Rust 在進行網頁開發的時候,可能會需要將使用者輸入的資料顯示在HTML網頁上,此時的網頁就會暴露在XSS(Cross-Site Scripting)攻擊的危險下。如果網頁不做任何檢查,將使用者輸入的資料嵌入至網頁中的話,輸入資料中的HTML語法就會直接影響到網頁,就會使得網頁爛掉或是藏有惡意的連結和腳本。為了讓使用者輸入的資料不會被當作是一般的HTML語法,需要將特定的保留字元進行跳脫處理,像是「<... 繼續閱讀