如何用Rust程式語言替我們自己的型別實作Debug特性? 2019 年 10 月 15 日 Magic Len Rust Rust程式語言內建的「Debug」特性非常方便,可以直接將任意型別的值以字串的方式顯示出來,而且還可以支援一定程度的格式化方式。在一般的情況下,要替我們自己的一個型別實作「Debug」特性,只需在其「derive」屬性加上「Debug」參數就好了,沒有什麼難度。但是在比較特別的情況下,我們就無法用「derive」屬性來實作「Debug」特性。 繼續閱讀
深度優先搜尋(DFS)和廣度優先搜尋(BFS)演算法,實用的節點搜尋法 2019 年 10 月 10 日 Magic Len 研究分享、 Rust、 演算法 圖(graph)是由節點(node)和邊(edge)組合而成的非線性結構,如果我們想要從其中的一個節點開始,走訪到其有直接或是間接連接的其它所有節點,可以依靠深度優先搜尋法(DFS, Depth-first Search)或是廣度優先搜尋法(BFS, Breadth-first Search)來達成。 繼續閱讀
如何在Android或是Java程式語言中使用Rust的函式庫? 2019 年 10 月 8 日 Magic Len 研究分享、 Android、 Java、 Rust Java是一個需要運作在JVM上的程式語言,因此效能會比原生(native)程式還要來得差一些。不過對於一些比較需要花費硬體資源的運算(例如影像處理、聲音處理),我們還是可以透過Java提供的JNI(Java Native Interface)來連結並使用原生函式庫提供的功能來完成。Rust的函式庫也可以透過JNI來呼叫,在這篇文章中,會介紹如何把任意現有的Rust函式庫拿進Java程式語言中使用... 繼續閱讀
如何撰寫出無標準函式庫的Rust程式? 2019 年 10 月 3 日 Magic Len 研究分享、 Rust 在預設的情況下,Rust程式都會與標準函式庫和C函式庫作連結,所以我們可以輕易地讓Rust程式能夠使用作業系統所提供的執行緒、檔案、網路等等的功能。但是這樣就會有個問題,那就是我們的程式會變得必需依賴於執行在某些特定的作業系統上,而無法獨立運作在無作業系統的環境中。 繼續閱讀
如何用Rust程式語言解析HTTP標頭中的User-Agent欄位? 2019 年 9 月 26 日 Magic Len Rust 在實作Web服務時,會需要去讀取客戶端傳送來的HTTP請求標頭中的「User-Agent」欄位,來判斷客戶端是使用什麼應用程式和Web引擎來發送請求,以及客戶端環境的作業系統、CPU架構和所用的裝置等資訊。 繼續閱讀
利用Serde框架在Rust程式語言上完成資料的序列化(Serialization)與反序列化(Deserialization) 2019 年 9 月 24 日 Magic Len 研究分享、 Rust Serde是一個Rust程式語言上的框架,可以有效率地讓某個結構能被序列化(Serialization)或是被反序列化(Deserialization),而且序列化或反序列化的程式只要撰寫一次,就可以被用在多種不同的資料格式(如JSON、MessagePack、BSON等),或是自行定義的資料格式上。 繼續閱讀
用Rust開發WebAssembly─第七章:縮小WebAssembly程式 2019 年 9 月 21 日 Magic Len 研究分享、 Rust、 Webassembly 透過網路來存取使用了WebAssembly程式的網頁時,愈小的WebAssembly程式會讓網頁的載入速度更快,也會讓使用者體驗更好。這篇文章整理了一些造成WebAssembly程式肥大的原因,以及能使WebAssembly程式縮小的方式。 繼續閱讀
用Rust開發WebAssembly─第六章:康威生命遊戲的效能 2019 年 9 月 19 日 Magic Len 研究分享、 Rust、 Webassembly、 JavaScript 前面花了幾個章節製作的康威生命遊戲,功能已經大致上完成了,不過我們還無法確定其效能是否還有可以優化的空間,必須要用一些方式來偵測才行。 繼續閱讀
用Rust開發WebAssembly─第五章:讓康威生命遊戲能與玩家互動 2019 年 9 月 17 日 Magic Len 研究分享、 Rust、 Webassembly、 JavaScript 在這個章節中,我們要替康威生命遊戲加入播放、暫停和逐格播放這幾個時間控制的功能,並且讓培養皿中的格子會因玩家滑鼠游標的點擊事件而改變狀態。 繼續閱讀
用Rust開發WebAssembly─第四章:測試(Testing)與偵錯(Debugging) 2019 年 9 月 15 日 Magic Len 研究分享、 Rust、 Webassembly、 JavaScript 在開始替我們的康威生命遊戲實作更多功能之前,要先將目前的Rust程式加入測試(Testing),除了可以用來驗證目前的程式正確性之外,還可以避免日後因修改程式而把原本可以正常工作的程式弄出問題了。另外,有些程式問題發生的原因很難確認,我們也需要在Rust程式中輸出Log到網頁瀏覽器的主控台(console)中,才能偵錯(Debugging)。 繼續閱讀