如何使用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程式語... 繼續閱讀
如何使用Rust程式語言進行Base64 URL的編碼(Encode)與解碼(Decode)? 2018 年 10 月 4 日 Magic Len Rust Base64是一種能將任意Binary資料用64種字元組合成字串的方法,而這個Binary資料和字串資料彼此之間是可以互相轉換的,十分方便。在實際應用上,Base64除了能將Binary資料可視化之外,也常用來表示資料加密過後的內容。然而,標準版本的Base64對於URL或是檔案路徑來說可能不是那麼的友善,因為編碼後的Base64資料可能有「+」或是「/」這兩種字元。為了解決這個問題,Base64... 繼續閱讀
如何使用Rust程式語言做資料大小的換算? 2018 年 10 月 2 日 Magic Len Rust 在進行程式設計的時候,有時會需要進行檔案大小或是資料大小的輸入與輸出,甚至會需要對其做一些運算。做這件事有什麼困難的嗎?我們應該都知道,8個位元是1個位元組(Byte),1000個位元組是1KB,而1000KB是1MB。在設計程式的時候,如果要將一個以位元組為單位的值,選擇適當的單位來輸出(例如1200位元組要輸出成1.20MB、5555555位元組要輸出成5.56MB)的話,就必須要多撰寫幾行程... 繼續閱讀