如何讓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語法,需要將特定的保留字元進行跳脫處理,像是「<... 繼續閱讀
如何使用Rust程式語言產生隨機數值? 2020 年 10 月 1 日 Magic Len 研究分享、 Rust 在開發程式的時候常常會需要產生亂數,然而,電腦並不存在「真正隨機」的亂數,它只能夠透過一些機制,利用額外的參考數值(如時間等)來模擬出看起來是隨機的亂數。 繼續閱讀
Rust程式語言如何處理動態歌詞(LyRiCs)? 2020 年 9 月 29 日 Magic Len Rust LyRiCs(LRC)是一種資料格式,藉由在每行歌詞上加上時間戳記(timestamp),來讓音樂播放器可以在播放音樂的同時,同步將該時間點的歌詞顯示出來。筆者以前用Java實作過MP3標籤格式ID3和APE的函式庫,主要就是為了能夠處理動態歌詞。雖然現在沒什麼在用,但還是整理了以前寫過的程式碼,將動態歌詞的部份重新用Rust程式語言獨立實作出來。 繼續閱讀
Rust程式語言如何執行系統的指令或是外部可執行檔案? 2020 年 9 月 24 日 Magic Len 研究分享、 Rust 在設計程式的時候偶爾會需要依靠系統指令或是其它的程式來取得一些相關的訊息,或是進行一些特殊的處理,如查看系統的網卡介面,或是呼叫FFmpeg來實現影音編碼的格式轉換。雖然這些工作基本上都可以靠Rust原生程式來自行實作,或是引用其它C/C++函式庫,但既然有已存在的指令和執行檔可以用,能省下許多開發時間,何不去用呢? 繼續閱讀
Rust程式語言如何在「trim」一個字串的同時去改變該字串? 2020 年 9 月 22 日 Magic Len Rust Rust程式語言的String物件有提供「trim」方法,可以用來去除字串頭尾的空白字元,不過這個方法會回傳字串切片(&str),而不會去更動到原來的String物件。不過在少數情況下,我們還是希望原來的String物件可以真正被「trim」。 繼續閱讀
用「async / .await」撰寫 Rust 並發程式 2020 年 9 月 17 日 Magic Len 研究分享、 Rust 用「async / await」語法來撰寫並發與並行程式是現代程式語言流行的方式,比起傳統開啟新的執行緒來完成並發處理工作的目的,「async / await」可以在同一個執行緒下達到同樣的目的,非常適用於當並發處理的工作並不重的時候,能夠省下建立執行緒所產生的開支(overhead)。 繼續閱讀
如何清除Nginx的反向代理快取和FastCGI快取? 2020 年 9 月 10 日 Magic Len 作品分享、 網路相關、 軟體介紹 Nginx是一個免費開源且穩定高效的Web伺服器程式,擁有反向代理以及負載平衡的功能,經常作為最前端的伺服器。當它用作反向代理伺服器或是PHP網頁伺服器時,無論是「proxy_pass」還是「fastcgi_pass」,均有提供快取的功能。然而,免費版本的Nginx並沒有內建刪除快取的機制(早期Nginx免費版本可以使用「proxy_cache_purge」、「astcgi_cache_purge... 繼續閱讀
如何用Rust程式語言取得Linux的系統資訊? 2020 年 9 月 8 日 Magic Len 研究分享、 Rust 取得執行環境的作業系統資訊是開發軟體時經常會需要被實作的功能,Rust作為一個系統級的程式語言,對於這部份自然會有許多解決方案。不過也由於Rust程式語言跨作業系統,因此許多取得系統資訊的套件也會以跨平台支援為主,這就導致取得到的資訊可能過於低階、不夠充份或是不統一,使得開發者還需要自行撰寫程式將零散的資訊處理為一般人習慣閱讀的格式。又或者取得系統資訊的方式是依靠系統中提供的指令工具,使得程式還得... 繼續閱讀