如何在Rust程式語言中使用C/C++的函式庫? 2018 年 11 月 3 日 Magic Len C & C++、 研究分享、 Rust 作為新穎、先進的程式語言,Rust的函式庫還沒有C/C++語言的函式庫來得多且完整。在很多時候,我們還是無可避免地必須要去使用現有C/C++程式語言所實作的函式庫來完成我們需要的功能。雖然一般來說,我們還是會比較喜歡用純Rust程式碼來開發程式,確保程式的安全性以及可移植性,但畢竟要把過去每個C/C++程式語言所實作的函式庫,都使用Rust程式語言來改寫,是非常不切實際的事。在開發成本的考量之下,... 繼續閱讀
Rust程式語言的數值型別的相互轉換 2018 年 11 月 1 日 Magic Len Rust Rust程式語言中並沒有內建一種能夠代表所基本數值型別(u8, i16, f64等)的型別,也因此當我們在定義函數或方法的時候,如果要透過參數傳入數值型別的值的話,通常會需要以「fn xxx_u8」、「fn xxx_i16」、「fn xxx_f64」的方式將每個不同的數值型別都獨立定義出來。您可能會想問:為什麼不用泛型?那是因為就算用泛型,我們還是沒有辦法限制泛型的型別參數只能是數值型別。 繼續閱讀
如何使用Rust程式語言實作出多國語言網頁? 2018 年 10 月 30 日 Magic Len Rust 在實作多國語言網頁的時候,除了網頁後端程式需要擁有多國語言支援之外,前端程式也要跟著支援才行。怎麼說呢?假設有個支援中文、英文的網頁,我們在程式後端必須要想辦法判斷訪客所使用的語言來決定前端網頁到底要顯示中文還是英文。而在網頁上出現的文字可能會有兩種情形:第一種,文字是直接顯示在網頁上的,後端程式所得到的中文或是英文文字可以透過HTML模板引擎,直接將文字填入HTML中,顯示在網頁上。第二種,文字... 繼續閱讀
Rust程式語言可以單檔執行!如何把外部檔案和Rust程式編譯在一起? 2018 年 10 月 26 日 Magic Len 研究分享、 Rust 在開發應用程式的時候,常會需要在程式加入圖片、聲音等等的素材。以開發Web應用程式來說,還會需要用到很多HTML模板、CSS、JavaScript、語言檔、資料庫設定檔等等的素材檔案。這些素材檔案常因為放不進程式執行檔中,而只好另外放在檔案系統的某個目錄下,由程式在執行階段的時候再去讀取。像這樣程式和素材分開的存放的作法雖然很常見,但其實會引發許多問題。例如,在設定程式執行環境的時候,工序會變得複... 繼續閱讀
如何在Rust程式語言中使用全域靜態變數? 2018 年 10 月 23 日 Magic Len 研究分享、 Rust 在使用C或C++程式語言的時候,我們有時會將變數宣告在函數之外,使其可以在任何時間於整個程式的任何scope下使用。使用Java程式語言的時候,也有時會替類別加上「static」的類別(靜態)欄位變數,甚至還可以在「static」區塊中,在類別初始化的時候順便對類別欄位進行初始化的動作。我們把這類宣告在函數、方法之外,且獨立於物件實體的變數稱為「全域靜態變數」(C/C++的全域變數有分能給其它原始... 繼續閱讀
如何使用Rust程式語言實作出多國語言程式? 2018 年 10 月 20 日 Magic Len Rust 現在是個國際化的時代,軟體程式如果能夠支援多國語言,想必可以有效地加快傳播速度。讓軟體程式擁有多國語言的能力有很多種方式,像是使用相依於作業系統環境本身所提供的Locale機制的工具,再搭配語言設定檔,例如GNU的gettext工具搭配PO和MO檔。或是使用能跨作業系統的獨立函式庫和語言設定檔,例如fluentd搭配其定義好的特殊語法的語言設定檔。當然也可以很單純地在程式內將所有的文字使用某種ke... 繼續閱讀
如何使用Rust程式語言來壓縮HTML? 2018 年 10 月 19 日 Magic Len Rust 透過網頁瀏覽器看到的網頁絕大部分是使用HTML進行控制編排的,由於HTML的語法結構定義較為寬鬆,網頁瀏覽器都有一定程度的容錯率,因此有可能某個100KB的HTML實際上可以等價於不到50KB的HTML,也就是說,多出來的資料量是完全不必要的,可是卻會增加更多的網路流量和時間成本。 繼續閱讀
如何有效率地寫程式判斷質數和尋找質數? 2018 年 10 月 14 日 Magic Len 研究分享、 Go、 Java、 數學邏輯、 Rust、 JavaScript 一個質數(Prime)是一個大於1,且無法找到除了自己本身和1之外的自然數能整除它的自然數。舉例來說,2、3、5、7、11、13和17均為質數。質數是數學上的難題,即便數學已經過幾千年的發展,卻也還是無法找出一個能完美產生出質數的函數。在學習寫程式的過程中,儘管在現實社會中幾乎用不到,我們還是會常常遇到判斷質數或是尋找質數的問題。那麼,究竟要如何利用程式來處理判斷質數和尋找質數呢? 繼續閱讀
如何使用Rust排序包含數字的字串? 2018 年 10 月 12 日 Magic Len Rust 在開發程式時,常會需要將含有數字的字串(例如:圖片1,圖片2,第1章,第2章)進行排序。程式語言通常會內建字串排序功能,但是在排序字串的時候大多會發生一個問題,那就是它們會「排錯」字串內的數字。舉個例子,若要排序螢幕截圖檔案的檔名,分別有shot-2, shot-1和shot-11這三張截圖,則檔名的正確排序的結果應為「shot-1, shot-2, shot-11」,但許多程式語言只會按照字串的... 繼續閱讀
如何取得Rust程式語言的列舉中變體的序數(ordinal),或是用序數來取得變體? 2018 年 10 月 8 日 Magic Len Rust 在開發程式的時候,我們很常需要產生出有獨立名稱,且為連續或是有規律的數值,用來當作介面的參數數值。舉例來說,有一個函數擁有10種工作模式,可以透過該函數的第一個參數來傳入數值0~9來決定要使用哪一種模式,為了方便輸入,且為了確保輸入的數值是在0~9,我們通常會使用一種特殊結構作為這個參數的型別,來代入數值0~9。如果程式語言支援列舉(enum),這個功能通常會直接使用列舉來實現。但是Rust程式語... 繼續閱讀