Rust的原子(Atomic)型別與記憶體順序(Memory Ordering) 2019 年 6 月 29 日 Magic Len 研究分享、 Rust Rust程式語言在1.34之後的版本中開始正式提供完整的原子(Atomic)型別了。所謂的原子是指一系列不可被上下文交換(Context Switch)的機器指令,這些機器指令組成的操作又稱為原子操作(Atomic Operation)。在多CPU核心的環境下,當某個CPU核心開始執行原子操作時,就會先暫停其它CPU核心對記憶體的操作,以保證在原子操作執行的過程中,記憶體內容不會受到其它CPU核心... 繼續閱讀
如何在Linux上將應用程式變成開機可自動執行,且保證在崩潰之後還能自動重啟的服務? 2019 年 6 月 27 日 Magic Len Linux、 研究分享、 網路相關 由於網路伺服器可能會因各種天災人禍或是因為需要進行系統更新而必須重新開機,因此在部署網路相關的服務時,我們應該要確保網路服務可以在伺服器重新開機之後也跟著自動啟動。再來,網路伺服器可能會遭遇到各種意外狀況,而導致程式執行出錯,造成程式崩潰(crash),一旦提供服務的應用程式崩潰了,就無法再繼續處理後續進來的請求,因此有個能夠保證服務能夠在崩潰或是被關閉之後自動重啟的機制也是很重要的。在Linux... 繼續閱讀
mprober 同時支援命令列介面(CLI)和網頁介面,並提供HTTP API的Linux伺服器探針 2019 年 6 月 25 日 Magic Len Linux、 作品分享、 網路相關、 網站應用、 軟體介紹 自從筆者接觸Rust程式語言以來,大大小小的程式都是使用Rust程式語言來進行開發。在Web伺服器管理方面,由於伺服器環境已經不再需要安裝PHP、Node.js、Python等網站相關套件,因此也沒有一個好用的、可在本機或是遠端偵測伺服器狀態的工具能夠使用,索性就自己用Rust程式語言來開發一個追求效能,並針對Linux伺服器來運行的探針──M Prober(MagicLen Prober)。 繼續閱讀
如何使用Rust程式語言進行圖片的資訊查看、高品質縮放、交錯化與格式轉換? 2019 年 6 月 23 日 Magic Len Rust Rust程式語言雖然已經發展了好幾年的時間了,但對於圖片處理還是沒有好用的以純Rust或是純Rust+libc來開發的函式庫,雖然在crates.io上有image這個套件,但它的格式支援度還很有限。因此為了讓Rust程式能夠擁有強大的圖片處理能力,現階段還是必須使其與ImageMagick等歷史悠久的C語言函式庫來進行綁定,才能實現出功能完整且效能優良的圖片處理程式。 繼續閱讀
如何使HTML網頁在斷字時斷在我們想要的位置上? 2019 年 6 月 21 日 Magic Len 研究分享、 HTML 在使用HTML編寫網頁的時候,如果是使用英文撰寫,一旦單詞很長,當能夠顯示單詞的寬度不夠時,就會衍生出斷字的問題。要如何讓HTML把字斷在我們想要的位置上呢? 繼續閱讀
如何在Linux作業系統上以一行指令下載GitHub倉庫(Repository)上最新發佈的檔案? 2019 年 6 月 19 日 Magic Len 研究分享、 網站應用 GitHub是全球最大的程式碼託管平台,許多軟體資源都可以在該網站上取得。有些人如筆者就喜歡除了把程式原始碼上傳到GitHub外,也把已經編譯好的二進制檔案也一併上傳到GitHub替每個倉庫(Repository)所提供的「Release」區,這樣一來不想自行編譯原始碼的使用者就可以直接到「Release」區中找到對應平台已經編譯好的二進制檔案來直接下載使用。 繼續閱讀
MuseScore 免費開源且跨平台的製譜軟體 2019 年 6 月 17 日 Magic Len 軟體介紹、 音樂心得 MuseScore是一款免放、開放原始碼,且支援多種平台和語言(包含繁體中文)的製譜軟體。除了MuseScore自己的樂譜檔案格式(.mscz, .mscx)外,它能夠開啟MIDI音樂檔案(.mid, .midi)或是MusicXML檔案來編輯。它還支援SoundFont,可以使用無限種樂器來演奏樂譜,或將樂譜輸出成高品質的音樂檔案。 繼續閱讀
Image Interlacer 批量交錯化常見的網路圖片格式 2019 年 6 月 15 日 Magic Len 作品分享、 軟體介紹 在撰寫網頁內容的時候,時常會需要在網頁上放置圖片。然而,圖片的資料量比文字內容還要大得多,也會需要比較大量的時間來進行網路傳輸。網頁瀏覽器會在圖片傳輸的過程中,一邊在取得圖片資料的同時,一邊把已取得的圖片資料解碼並顯示出來。在一般的情況下,圖片資料的順序是從左到右從上到下的,也因此網頁瀏覽器在下載並顯示圖片時,會是從上到下來顯示。如果圖片很大,網路頻寬不夠的時候,這張圖片可能會需要好幾秒才能下載好... 繼續閱讀
如何使Rust程式語言的starts_with和ends_with方法忽略大小寫? 2019 年 6 月 13 日 Magic Len Rust 在開發程式的時候我們時常會需要判斷某個字串的開頭或結尾是否符合某個字串,例如判斷網址是否以「http」或是「https」開頭時,或是判斷檔案名稱是否以「.jpg」或是「.png」結尾時。然而在上述提到的例子中,通訊協定或是檔案副檔名都是可忽略大小寫的,Rust程式語言雖然有提供eq_ignore_ascii_case方法,卻沒有提供starts_with_ignore_ascii_case和end... 繼續閱讀
如何使用Rust程式語言進行快速的字串或是任意資料的搜尋? 2019 年 6 月 11 日 Magic Len Rust 在一篇很長的文章或是一大串文字中找出自己想看到的段落是我們時常會需要做的事情,但是要如何有效率地讓電腦尋找文字中的文字是一件需要思考的事情,甚至有許多針對這個議題所提出的研究論文。字串搜尋演算法的好壞,在複雜的文件內容下,對搜尋時間的影響是非常深遠的。字串搜尋除了能夠正確搜尋一段文字內的特定字串外,還可以用來搜尋龐大的任意資料,因為任何的資料都可以藉由數位編碼轉成只有數字的字串,如一段原始的聲音,... 繼續閱讀