<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"><channel><title>MagicLen</title><link>https://magiclen.org/2022/feed</link><description>多元化原創文章，內容包羅萬象，有程式語言、網站應用、軟體介紹、硬體介紹、作業系統、旅行遊記、專題採訪、益智問題、文學創作，以及作者們的知識分享和作品分享。</description><language>zh-TW</language><lastBuildDate>Thu, 16 Apr 2026 12:44:22 +0000</lastBuildDate><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>8</sy:updateFrequency><sy:updateBase>1970-01-01T00:00+00:00</sy:updateBase><item><title>鋼琴學習之路─第一章：從約翰湯姆遜【教導幼童彈琴】開始學</title><link>https://magiclen.org/piano-infant</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2024/02/%E7%B4%84%E7%BF%B0%E6%B9%AF%E5%A7%86%E9%81%9C%E5%B9%BC%E5%85%92-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2024/02/%E7%B4%84%E7%BF%B0%E6%B9%AF%E5%A7%86%E9%81%9C%E5%B9%BC%E5%85%92-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2024/02/%E7%B4%84%E7%BF%B0%E6%B9%AF%E5%A7%86%E9%81%9C%E5%B9%BC%E5%85%92-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2024/02/%E7%B4%84%E7%BF%B0%E6%B9%AF%E5%A7%86%E9%81%9C%E5%B9%BC%E5%85%92-660x486.jpg 3x" alt="">
約翰‧湯姆遜現代鋼琴課程(John Thompson&#x27;s Modern Course for the Piano)是20世紀的鋼琴課程，雖然很久了，但至今仍然實用。縱使其中的【教導幼童彈琴】是針對幼童做設計，讓幼童對於鋼琴有初步的接觸與認識，但作為一個鋼琴初學者，不管年齡多大都可以把自己當作是一個嬰兒來從頭開始學起。]]></description><category>音樂心得</category><category>樂譜</category><category>鋼琴學習之路</category><category>約翰湯姆遜現代鋼琴課程</category><guid>https://magiclen.org/piano-infant</guid><pubDate>Thu, 29 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>如何讓 JavaScript 程式等待(睡眠)一段時間？</title><link>https://magiclen.org/javascript-sleep</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/12/bird-7512017_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2022/12/bird-7512017_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2022/12/bird-7512017_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2022/12/bird-7512017_1920-660x486.jpg 3x" alt="">
雖然在撰寫程式的時候，在大部份的情況下我們都想要讓程式執行速度愈快愈好。但有時候在寫測試程式或是爬蟲時，我們會希望讓程式等待一段時間再繼續執行，以模擬I/O延遲或是真人操作延遲的效果。不過JavaScript並沒有直接提供讓執行緒睡眠(sleep)的功能，要怎麼模擬出sleep函數呢？]]></description><category>研究分享</category><category>JavaScript</category><category>JavaScript</category><category>node.js</category><category>TypeScript</category><category>爛Code</category><guid>https://magiclen.org/javascript-sleep</guid><pubDate>Tue, 27 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>解決 apt upgrade 某些套件不能被升級的問題</title><link>https://magiclen.org/apt-safe-upgrade</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/12/penguin-159784-220x162.png" srcset="https://magiclen.org/wp-content/uploads/2022/12/penguin-159784-220x162.png 1x, https://magiclen.org/wp-content/uploads/2022/12/penguin-159784-440x324.png 2x, https://magiclen.org/wp-content/uploads/2022/12/penguin-159784-660x486.png 3x" alt="">
有時候我們在Debian或是其衍生的Linux發行版上安裝或是升級套件之後，會看到有一些套件被保留下來，出現「The following packages have been kept back」訊息，此時再使用「apt upgrade」指令也無法升級它們。這是因為「apt upgrade」是最安全的升級套件的指令，如果被升級的套件在升級後需要安裝額外的套件，或是需要移除掉現有的套件時，「apt ...]]></description><category>Linux</category><category>Linux</category><category>Ubuntu</category><guid>https://magiclen.org/apt-safe-upgrade</guid><pubDate>Thu, 22 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>如何在 Linux 上使用 Oracle Instant Client？</title><link>https://magiclen.org/oracle-instant-client</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/12/network-3396348_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2022/12/network-3396348_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2022/12/network-3396348_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2022/12/network-3396348_1920-660x486.jpg 3x" alt="">
想要連上Oracle資料庫，需要先安裝Oracle資料庫的客戶端程式在作業系統環境中。Oracle資料庫的客戶端有分為「Oracle Client」和「Oracle Instant Client」兩種，前者是完整的Oracle資料庫的客戶端程式和工具，很大一包，需要進行安裝的動作；而後者則拆分出了多個函式庫和執行檔，直接從官網上下載下來解壓縮就可以使用。如果我們只是希望Oracle資料庫的應用程式...]]></description><category>軟體介紹</category><category>Linux</category><category>Linux</category><category>Oracle</category><category>SQL</category><category>資料庫</category><category>Docker</category><category>sqlplus</category><category>curl</category><guid>https://magiclen.org/oracle-instant-client</guid><pubDate>Tue, 20 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>JavaScript到底會把哪些字元當作是空白字元？</title><link>https://magiclen.org/javascript-white-space</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/12/space-3197611_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2022/12/space-3197611_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2022/12/space-3197611_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2022/12/space-3197611_1920-660x486.jpg 3x" alt="">
JavaScript可以使用正規表示式的「\s」來匹配空白字元，但究竟有哪些字元會被當作空白字元呢？在JavaScript中，全形空白「　」也算是空白字元嗎？這篇文章將會給各位解答。]]></description><category>研究分享</category><category>JavaScript</category><category>JavaScript</category><category>爛Code</category><guid>https://magiclen.org/javascript-white-space</guid><pubDate>Thu, 15 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>在Java和JavaScript中，字串的字數就等於字元數量嗎？錯！</title><link>https://magiclen.org/java-count-characters</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/12/font-4646566_1920-220x162.png" srcset="https://magiclen.org/wp-content/uploads/2022/12/font-4646566_1920-220x162.png 1x, https://magiclen.org/wp-content/uploads/2022/12/font-4646566_1920-440x324.png 2x, https://magiclen.org/wp-content/uploads/2022/12/font-4646566_1920-660x486.png 3x" alt="">
在Java和JavaScript中，我們經常會使用字串(String)提供的「length」成員(member)來抓取這個字串的字數。由於Java和JavaScript並不像Rust或是Golang程式語言這樣會直接抓到字串在經過編碼之後的位元組數量，而是會得到字元的數量，所以我們很直覺地就會在Java或JavaScript用這樣的方式來計算字串的字數。]]></description><category>研究分享</category><category>Java</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>TypeScript</category><category>爛Code</category><guid>https://magiclen.org/java-count-characters</guid><pubDate>Tue, 13 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>JavaScript 要如何複製物件？</title><link>https://magiclen.org/javascript-clone</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/11/dna-6896923_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2022/11/dna-6896923_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2022/11/dna-6896923_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2022/11/dna-6896923_1920-660x486.jpg 3x" alt="">
在寫JavaScript程式的時候經常看到一些奇妙的程式碼被用來處理物件的複製，這篇文章會列舉筆者看到的一些作法，並提供較好的作法給大家參考。]]></description><category>研究分享</category><category>JavaScript</category><category>node.js</category><category>TypeScript</category><category>爛Code</category><guid>https://magiclen.org/javascript-clone</guid><pubDate>Thu, 8 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>使用 MIDI Visualizer 做 MIDI 視覺化</title><link>https://magiclen.org/midi-visualizer</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/11/vlcsnap-2022-11-27-10h26m08s449-220x162.png" srcset="https://magiclen.org/wp-content/uploads/2022/11/vlcsnap-2022-11-27-10h26m08s449-220x162.png 1x, https://magiclen.org/wp-content/uploads/2022/11/vlcsnap-2022-11-27-10h26m08s449-440x324.png 2x, https://magiclen.org/wp-content/uploads/2022/11/vlcsnap-2022-11-27-10h26m08s449-660x486.png 3x" alt="">
MIDI Visualizer是一個使用C++程式語言以及OpenGL開發的免費開源工具，可以讀取MIDI檔案或是連接到MIDI裝置並依照時間點產生出對應的鋼琴捲簾(Piano Roll)圖形，除了能即時預覽也能製作成影音檔，支援Ubuntu、Windows、macOS等主流作業系統。MIDI Visualizer還同時具有圖形化介面(GUI)以及命令列介面(CLI)，十分方便。]]></description><category>研究分享</category><category>軟體介紹</category><category>FFmpeg</category><category>Linux</category><category>MIDI</category><category>Windows</category><category>聲音合成</category><category>macOS</category><category>聲音視覺化</category><category>影音</category><guid>https://magiclen.org/midi-visualizer</guid><pubDate>Tue, 6 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>如何快速統計程式碼的行數？</title><link>https://magiclen.org/tokei</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/11/shot-01-220x162.png" srcset="https://magiclen.org/wp-content/uploads/2022/11/shot-01-220x162.png 1x, https://magiclen.org/wp-content/uploads/2022/11/shot-01-440x324.png 2x, https://magiclen.org/wp-content/uploads/2022/11/shot-01-660x486.png 3x" alt="">
一個程式專案可能會由很多不同的程式語言、腳本語言、標記語言的原始碼組成。Tokei是一款免費、開源且跨平台的函式庫和指令工具，可以快速統計一個程式專案下共包含哪些程式碼以及程式碼的行數，支援上百種語言，且可以將統計結果以不同格式輸出。]]></description><category>程式設計</category><category>軟體介紹</category><category>Linux</category><category>Windows</category><category>Rust</category><category>macOS</category><category>Tokei</category><category>文書</category><guid>https://magiclen.org/tokei</guid><pubDate>Thu, 1 Dec 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>如何在 Ubuntu 作業系統上編譯 ImageMagick 的執行檔來用？</title><link>https://magiclen.org/ubuntu-imagemagick</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/11/shot-04-220x162.png" srcset="https://magiclen.org/wp-content/uploads/2022/11/shot-04-220x162.png 1x, https://magiclen.org/wp-content/uploads/2022/11/shot-04-440x324.png 2x, https://magiclen.org/wp-content/uploads/2022/11/shot-04-660x486.png 3x" alt="">
ImageMagick是一款免費、開源、跨平台的圖像處理工具，可以進行圖像的縮放、翻轉、鏡射、變形、調整顏色等，也可以寫字、畫圖，從過去到現在的圖像格式它幾乎都能夠支援。ImageMagick也有很不錯的可攜性和可移植性，可以使用在Linux, macOS, Microsoft Windows等多種不同的作業系統和多種硬體架構上。]]></description><category>研究分享</category><category>軟體介紹</category><category>Linux</category><category>ImageMagick</category><category>Ubuntu</category><category>影像處理</category><guid>https://magiclen.org/ubuntu-imagemagick</guid><pubDate>Tue, 29 Nov 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item></channel></rss>