如何將遞迴函數改成迭代函數? 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上。 繼續閱讀
Image Resizer 批量縮放圖片並自動銳化的智能工具程式 2020 年 5 月 7 日 Magic Len 作品分享、 軟體介紹 Image Resizer是一款能夠一次調整多張圖片的尺寸的指令工具。它在調整圖片尺寸時,並不需要完全地指定圖片的寬(Width)與高(Height)為多少,只需要設定一條最大邊的長度,就能自動延展或是收縮圖片的寬和高,還能自動將圖片銳利化與交錯化(interlacing),也能夠順便調整圖片的PPI(pixel per inch)。 繼續閱讀
解決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這個工具來進行官方建議的程式排版方式。 繼續閱讀
如何用Rust程式語言搭配zBar函式庫進行條碼掃描? 2019 年 11 月 7 日 Magic Len Rust 在生活中常常可以看到條碼(Barcode)的存在,無論是商品結帳時在收銀台使用的EAN條碼、書籍使用的ISBN條碼,還是在最近因行動裝置的流行也跟著帶動起來的QR Code,這些條碼都可以讓我們的生活更便利,傳遞資訊的速度更快,省下許多使用鍵盤打字的時間。zBar是一個使用C語言開發的函式庫,效率極佳,支援多種一維條碼和二維條碼的掃描,要如何在Rust上使用zBar函式庫進行條碼掃描呢? 繼續閱讀
如何將reCAPTCHA v3加進Rocket應用程式中? 2019 年 11 月 5 日 Magic Len Rust 網路上總會有人為了一己私利,透過機器人(robot)來快速填寫並送出網頁上的表單,導致該網站的帳號密碼被破解,或者販賣的商品立刻被有心人士一掃而空(倒買倒賣),又或是資料庫的資料在短時間內被全部爬出來。為了防範機器人來我們的網站上搗亂,最好將Google提供的reCAPTCHA真人驗證機制加入網站中。 繼續閱讀
用Rust程式語言製作作業系統核心(Kernel) 2019 年 10 月 24 日 Magic Len 作業系統、 研究分享、 Rust Rust程式語言雖然可以很方便地做各式高階應用,但它本質上還是屬於系統層級的程式語言,換句話說,要拿它來開發作業系統也是可以的!Rust程式語言嚴謹的編譯器可以幫助我們在開發作業系統的時候於編譯階段就避免掉許多記憶體相關的問題,讓我們更能專注在其它方面上。這篇文章將會初步介紹用Rust程式語言開發作業系統核心(Kernel)的方式。 繼續閱讀
用Rust的derive屬性實作如Copy、Clone、Debug等內建特性的替代方式 2019 年 10 月 17 日 Magic Len 研究分享、 Rust Rust程式語言內建的derive屬性可以快速地替我們的型別加上內建的特性,不過會要求該型別內的欄位也都要先實作相同的特性,而且很多時候利用derive屬性實作出來的特性並不能達到我們期望的功能。 繼續閱讀