如何使用Rust程式語言處理寬度(位元組數量)浮動的UTF-8字串? 2020 年 7 月 3 日 Magic Len 研究分享、 Rust Rust程式語言的字串是使用UTF-8編碼的,這種編碼方式讓每個字元有四種不同的寬度,例如「4」會被編碼成「[52]」;「ß」會被編碼成「[195, 159]」;「中」會被編碼成「[228, 184, 173]」;「𩸽」(ㄌㄨㄥˇ)會被編碼成「[240, 169, 184, 189]」。再加上Rust是標榜安全的程式語言,因此在切割字串的時候會去做索引位置的檢查,避免取到不正確的資料範圍,不過這也... 繼續閱讀
如何寫程式來找出河內塔的最佳解?那不寫程式的話呢? 2020 年 6 月 25 日 Magic Len 研究分享、 Go、 Java、 數學邏輯、 Rust、 JavaScript 河內塔(Tower of Hanoi)是一個很謎的數學遊戲,它是由三根桿子(Rod)和一個以上大小不同的碟片(Disk)所組成的。在遊戲的一開始,這些碟片按照底大頂小的順序疊在一起,由三根桿子中的其中一根串著。玩家每次可以移動一個碟片到其它的桿子上,但是不能將比較大的碟片疊在比較小的碟片上。當玩家把所有碟片都串到指定的桿子,遊戲就結束了。 繼續閱讀
電腦是怎麼進行四則運算的?前序式、中序式、後序式又是什麼? 2020 年 6 月 18 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 我們從小學習算術的時候便知道「四則(加、減、乘、除)運算」的規則,也就是「先乘除、後加減,以及括號先算」。那麼如果我們要撰寫一個可以支援算式輸入且能夠按照四則運算規則求出結果的程式,該怎麼做呢? 繼續閱讀
如何將遞迴函數改成迭代函數? 2020 年 6 月 11 日 Magic Len 研究分享、 Go、 Java、 Rust、 JavaScript 遞迴(Recursive)函數是在執行的過程又會直接或間接地呼叫自己本身的函數。通常透過遞迴函數可以快速地驗證我們的演算法,用簡短的程式碼處理複雜的問題,但是函數在呼叫時需要建立新的堆疊框(Stack Frame),除了會需要額外的開支(Overhead)之外,如果在函數中呼叫函數,而這函數又會呼叫函數,持續下去,很容易就會造成堆疊溢出(Stack Overflow)。雖然有些程式語言的編譯器會做... 繼續閱讀
費氏搜尋(Fibonacci Search)演算法,運用費氏數列的搜尋演算法 2020 年 5 月 28 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 費氏搜尋(Fibonacci Search)演算法有點像是二元搜尋(Binary Search)演算法,同樣是在一個已排序好的陣列中搜尋元素,但是它在移動陣列索引值時是去參考費氏數列(Fibonacci Sequence),而不是像二元搜尋法那樣總是去取索引的中間值。也由於費氏搜尋法在移動陣列索引值時只需要進行加減運算,不需乘、除法,因此它適合被用在不擅長處理乘、除法的CPU上。 繼續閱讀
HTML的 script 標籤所用的 async 和 defer 屬性是什麼?要如何利用它們來加速網頁載入速度? 2020 年 5 月 14 日 Magic Len 研究分享、 HTML 現代的HTML網頁常會加入大量的「腳本(Script)」來讓網頁擁有各式各樣的功能。腳本固然強大,但若使用不當,很容易造成網頁的載入時間變長,影響使用者體驗。 繼續閱讀
解決IntelliJ開啟Rust專案時,出現「No Rust toolchain specified」以及「No Cargo projects found」錯誤 2020 年 2 月 21 日 Magic Len 隨手張貼、 Rust IntellIj是個很強大的IDE,但也常常會重複出現一些惱人的問題。像是在開啟Rust程式專案時,有時候IntellIj會無法正確引用到Rust的工具鏈(Toolchain),使得組態(Configuration)功能作廢。 繼續閱讀
用Clippy來優化Rust的程式碼 2020 年 1 月 21 日 Magic Len Rust lint最早用於C語言,是一種用來檢查程式碼的工具,現在的主流程式語言幾乎都有lint可以使用,尤其是JavaScript、Python等直譯式程式語言,因為它們的程式碼不會經過編譯,所以特別需要使用lint來檢查原始碼。藉由lint,我們可以寫出疑慮較少、效能更好或是更容易閱讀的程式碼。Rust程式語言雖然是靜態型別的程式語言,而且擁有十分嚴謹的編譯器,官方還是提供了一個lint工具──Clip... 繼續閱讀
用rustfmt讓Rust的程式碼能自動排版 2020 年 1 月 16 日 Magic Len Rust 為了解決不同開發者有各自不同的程式碼風格的問題。像是有些人習慣用一個tab字元進行縮排;有些人則習慣用兩個或四個空格字元來進行縮排。有些人習慣if或for迴圈的大括號要先換行;有些人則習慣和關鍵字寫在同一行。Rust官方提供了rustfmt這個工具來進行官方建議的程式排版方式。 繼續閱讀
如何在Webpack中使用TypeScript? 2020 年 1 月 14 日 Magic Len JavaScript Webpack是JavaScript的模組建置工具,運行在Node.js上,它可以將零散的JavaScript檔案用各式工具優化並打包起來,加快網頁的載入時間。Webpack也並不限於用在JavaScript上,它除了還能打包網頁有用到的靜態資源(如JS、CSS、圖片檔等)外,也還能透過TypeScript的載入器(loader)來編譯並打包TypeScript程式碼。 繼續閱讀