使用Node.js進行32位元的有號整數運算 2017 年 8 月 9 日 Magic Len Rust、 JavaScript JavaScript的Number採用64位元的IEEE 754標準來表示整數和浮點數數值,其中整數的安全範圍在-2^53 - 1到2^53 - 1之間。換句話說,Node.js既不能直接使用到32位元的整數,同時也無法使用64位元的整數。因此,如果要拿Node.js來做一些稍微複雜的計算,就需要撰寫額外的程式來處理資料型態的部份。像是32位元整數經常會遇到的「溢位」,想要在Node.js上重現就... 繼續閱讀
如何使用Node.js快速搜尋字串? 2017 年 8 月 8 日 Magic Len Rust、 JavaScript 字串搜尋是開發程式的時候時常會碰到的議題,由於常用,所以了解一個有效率進行字串搜尋的方式是很重要的。Node.js使用的Chrome V8 JavaScript引擎對於字串處理的效能已經十分良好,在很多情況下只要很直覺地使用原生的JavaScript或Node.js的功能就可以達成最佳效果了。像是字串搜尋,JavaScript的字串本身就有「indexOf」方法可以使用,也有功能強大的「RegEx... 繼續閱讀
不同函式庫算出來的CRC數值不同?如何使用Node.js計算正確的CRC? 2017 年 8 月 7 日 Magic Len Rust、 JavaScript 循環冗餘校驗(CRC, Cyclic Redundancy Check)是一種簡單快速的雜湊函數,可以藉由比對資料傳輸或是儲存前後的循環冗餘校驗碼,檢測其是否有錯誤發生。常被用來作為伺服器應用為目的來使用的Node.js,會有很大的機會需要使用CRC進行一些計算。可惜的是,Node.js雖然可以藉由內建的「crypto」模組來使用許多常見的雜湊函數計算資料的校驗和(checksum),但就是不支援... 繼續閱讀
快速選擇(Quickselect)演算法,快速尋找第K小或是第K大的元素 2016 年 5 月 24 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 快速選擇(Quickselect)演算法是利用快速排序(Quick Sort)演算法,在排序序列的同時,選擇出序列中第K小或是第K大的元素。若我們只想要從序列中找出一個第K小或是第K大元素,使用快速選擇法會比使用快速排序法來得快很多,因為前者不需要把序列的排序完整做完,平均只需線性時間即可找到結果。 繼續閱讀
Boyer-Moore-MagicLen(BM-MagicLen)字串搜尋演算法,超快速的全文搜尋演算法 2016 年 4 月 9 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 在一篇很長的文章或是一大串文字中找出自己想看到的段落是我們時常會需要做的事情,但是要如何有效率地讓電腦尋找文字中的文字是一件需要思考的事情,甚至有許多針對這個議題所提出的研究論文。字串搜尋演算法的好壞,在複雜的文件內容下,對搜尋時間的影響是非常深遠的。字串搜尋除了能夠正確搜尋一段文字內的特定字串外,還可以用來搜尋龐大的任意資料,因為任何的資料都可以藉由數位編碼轉成只有數字的字串,如一段原始的聲音,... 繼續閱讀
MagicCrypt─在Java、Android、PHP、Node.js、Rust實現DES/AES加解密,並且能夠互通的函式庫 2014 年 10 月 13 日 Magic Len 研究分享、 Java、 PHP、 Rust、 Android、 JavaScript 在使用網路傳輸資料的過程中,即便使用了SSL(Secure Sockets Layer)或是TLS(Transport Layer Security),傳輸內容還是有可能會遭到破解(如中間人攻擊, MITM)。當傳輸的資料遭到惡意的第三方竊聽,並且成功取得明文(也就是原始資料),那下場就很慘了。如果要讓傳輸過程更安全的話,那就自行把要傳遞的資料用自己的方式先加密吧!AES(Advanced Enc... 繼續閱讀