如何使用Rust程式語言將字串安全地寫入網址中? 2022 年 5 月 17 日 Magic Len Rust 在進行軟體開發的時候,可能會需要將使用者輸入的資料插入至網址(URL)中,但URL能夠使用的字元是有限制的,錯誤格式的URL有機會使得HTTP客戶端在訪問URL資源時出現問題,也可能會導致透過URL來傳遞的參數有誤。為了讓URL可以傳遞任意字元的資料,對於不合法的字元,我們需要將其進行編碼。例如在網址的查詢(Query)部份(「?」之後的部份),如果要在查詢的參數值中使用「&」字元,就不能直接使用... 繼續閱讀
如何在Rust程式專案中安全地使用外部或是專案目錄下的檔案? 2022 年 5 月 12 日 Magic Len Rust 在開發程式的時候難免會需要在程式中引入外部的檔案,為了方便管理我們也常會將這些檔案放置在程式專案目錄下。然而在程式碼撰寫程式路徑於執行階段讀取檔案時,檔案路徑的正確性需要等到執行階段的時候才會知道,就算寫錯了而找不到這個檔案,程式專案也是能成功通過編譯,這就會使得程式在執行階段有出現問題的可能。 繼續閱讀
如何在Rust程式中處理HTTP協定的ETag? 2022 年 5 月 10 日 Magic Len Rust ETag是HTTP提供的快取機制,可以讓伺服器利用簡單的字串比對,來驗證客戶端先前快取到的HTTP回應是否依然有效。它的流程主要是這樣:伺服器在回應資料的同時,於HTTP回應標頭中夾帶「ETag」欄位,這個欄位的值就相當於這個資料的ID,而客戶端在將HTTP回應快取下來之後,若需重新發送請求時,就會在HTTP請求中夾帶「If-None-Match」欄位,將原先快取到的ETag值再回傳給伺服器,讓伺... 繼續閱讀
一個能幫助您背書的 Telegram 機器人──背背大師 2022 年 5 月 5 日 Magic Len 作品分享、 軟體介紹 大腦的記憶能力是需要鍛鍊的,背東西是一個很好的鍛鍊方式,尤其在現在幾乎什麼資訊都可以透過行動裝置連上網際網路來查找的時代,更需要讓自己去持續背某些特定的東西,以保持大腦記憶區塊的活躍性,預防失智症。背書是一個不錯的選擇,無論工作、學習上都很有幫助,且如果能非常熟練(遇到關鍵字或是相關場景就可以不假思索脫口而出),甚至連在生活、社交上都是很有用的。 繼續閱讀
如何在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 ... 繼續閱讀