23 篇文章 含有標籤「我做的東西」
我自己寫的工具、遊戲和程式
檢視所有標籤「00」遊戲
看到 Ikuka 這篇〈指針式時鐘的必要性〉,她提到自己現在戴的是有 Hello Kitty 底圖的傳統指針手錶(你們可以自己連過去看圖)。還說每當朋友問她時間,她把手腕伸過去時,對方的反應往往是:「我看不懂啦!」。
(誰在乎現在幾點呢?這時正確的反應應該是:「哇你這 Hello Kitty 錶也太少女、太可愛了吧!」你看我是不是有學到一點點 F 人的說話方式了?)
我才意識到,好久沒有看到別人戴傳統指針手錶了耶!
我記得我小時候都是喜歡戴數字錶的,就是 Casio 那種黑色液晶數字、有碼表、錶面上還會號稱自己「防水 50 公尺」的款式(但我連水下 1 公尺都不想下去)。長大之後嫌電子錶太「孩子氣」,於是改戴 Swatch 假裝自己是個有品味的大人。
(大概從高中還是大學開始戴、用來裝成熟的 Swatch)

更之後我有很長一段時間都不戴手錶,因為根本不會出門要看時間就看電腦或手機就好啦。最近兩年開始跑步之後,才開始戴 Garmin,好好用喔我超級推薦它!
不過以上不是重點。這篇是想要分享小時候我會把碼表當作電動玩具,玩「嘗試把小數點後面兩個數字按成 00」的遊戲,一玩就可以很久。不覺得按中「00」的時候很滿足嗎?

所以,以下放了一個直接可以玩的版本,快來挑戰按到「00」吧!
不囉唆的文字移調器
請到 NiceChord.com/transpose 開始使用。
這個工具其實已經發表在好和弦官網 NiceChord.com 好一陣子了,但我還沒在這裡提過。
不曉得有多少人跟我一樣,常常用純文字來記錄音樂想法?比如說,在 Markdown 檔案裡面直接這樣寫和弦表:
Cmaj7 | Am7 | Fmaj7 | G9sus | C(add2) ||
用純文字記和弦,寫的時候真的很方便。但是,如果我想把整份和弦表移調怎麼辦?
MuseScore 之類的打譜軟體,都有內建的移調功能,但純文字檔就沒有。網路上雖然有一些文字移調工具,但它們都爛爛的,介面囉唆複雜、廣告多、跑得慢,而且同音異名的處理常常錯誤,連該轉成 D# 還是 Eb 的邏輯都沒弄對。
所以我只好自己寫一個了。
(不囉唆的文字移調器,介面超級簡潔,不囉唆!)

程式的邏輯很簡單:用正規表達式掃描整個文字,找到任何「大寫字母 A-G + 可能的升降記號」的組合,把它移調,然後其他字元完全不動。就這樣。
但重要的是,這個移調器是受過(我的)樂理教育的,它在乎所謂「正確」的音名,而不僅僅是琴鍵上的位置!舉幾個例,你就知道它跟那些沒有愛的工具是不一樣的:
- 把
C#移高大三度,會得到E#而不是錯誤的F - 把
D#移高增四度,會得到G##而不是錯誤的A - 把
Cmaj7 | Am7 | Fmaj7 | Dbmaj7移高完全四度,會得到Fmaj7 | Dm7 | Bbmaj7 | Gbmaj7,注意它不會把Bb Gb誤寫成A# F#
如果你也像我一樣喜歡用純文字寫音名或和弦代號,而且是看到 E# 被寫成 F 就會抓狂的那種人,這個不囉唆的移調器,就是你一直以來在找的東西!
到 NiceChord.com/transpose 就可以直接使用,歡迎把它加到書籤!
時間就是金錢
想知道你的時間值多少錢嗎?回答以下兩個簡單的問題。
🎫 問題一:排隊領折價券
7-11 要發 100 元的現金折價券,只要排隊就可以領!
你「最多」願意排多久的隊,來領一張價值 100 元的折價券?
🚕 問題二:坐小黃比較快
你要去某個地方,並沒有特別趕時間。
- 你可以選擇坐捷運再轉公車,只要 60 元,那大概要花一個半小時。
- 或者,你也可以選擇坐計程車,大約只要 40 分鐘就能到了。
你「最多」願意花多少錢來坐這趟計程車?
⏱️ 你的時間值多少錢?
填好上面兩個欄位了嗎?是的話,請按下下面的按鈕:
📈 怎麼解讀以上結果?
如果算出來的數字明顯「高於」你的實際時薪:這表示你「高估」了自己的時間價值,太容易拒絕花時間的選項──不願意排隊、不願意搭慢一點的交通工具、不想自己煮飯等等。但問題是,實際的收入並沒那麼高,這樣長期下來會存不到錢。
如果算出來的數字明顯「低於」你的實際時薪:這表示你「低估」了自己的時間價值,願意為了小錢花很多時間──為了折扣排隊、貨比三家、繞路找便宜車位。結果就是花了太多時間省小錢,但根本就不划算,長期下來會讓你沒時間做更重要的事。
如果兩個問題的數值差很多:這表示你對時間價值的判斷很混亂。你可能是那種為了省十塊願意排隊,但叫外送時卻又毫不猶豫加一百塊外送費的人(或反過來)。這很正常,人類本來就是矛盾的。
做了紙牌遊戲的介紹影片
「決鬥 25」紙牌遊戲基本 AI 版
2025-09-24 更新:修正了牌堆用完檢查的邏輯。
程式碼在 GitHub 和 Code.Wiwi.Blog。
用了非常簡單的算法做了 AI,這個版本的電腦不再是隨機出牌了,而是會內部模擬多場牌局,看出哪一張牌的勝率最高。
試試看,有沒有比上一版難贏?
不知道怎麼玩?請看上一篇貼文。
「決鬥 25」紙牌對戰遊戲 v2.0
睡前想到的紙牌對戰遊戲
前幾天晚上我躺在床上,本來應該要睡覺的,結果頭腦卻開始設計起紙牌遊戲來。
於是,誕生了以下這個超級簡單的雙人紙牌對戰遊戲。我把它取名為「決鬥 25」(Duel 25),因為「決鬥 52」已經被用過了。 🤣
規則
- 👥 人數:兩人。
- 🎒 準備:用一般的撲克牌就可以了!兩位玩家各發 5 張牌作為初始手牌,剩餘的牌放在旁邊當作抽牌堆。玩家的啟始生命值為 25 點。
- 🏆 勝利條件:將對手的生命值降到 0 或以下則算勝利。如果雙方同時死亡則平手,抽牌堆用盡時也算平手。
- ⚙️ 遊戲流程:每回合雙方從手牌選取一張要出的牌,面朝下放在桌上,雙方都決定好後一起翻開。牌翻開後,按照以下規則結算效果。
- 🧩 牌的功能:
- 黑色牌 ♠️、♣️ 為攻擊牌:會造成對方該牌點數的傷害(A=1、J=11、Q=12、K=13)
- 方塊 ♦️ 是反擊牌:只在對手出攻擊牌時才有效,可以完全躲過攻擊,並造成對手「方塊牌點數」的反傷
- 紅心 ♥️ 是回血牌:依照點數回復自己生命值,上限為 25 點
- ⚔️ 攻擊先行:攻擊與回血牌同出時,攻擊牌一律先行。如果攻擊牌造成致命傷害(生命值降到 0 或以下),則遊戲直接結束,不再有回血機會。
- 📥 抽牌:一回合過後,如果雙方都還有生命值,就各抽一張牌(補回 5 張),繼續下一回合。
範例
- 玩家 A 出
7♠️,玩家 B 出5♦️→ 玩家 A 受到 5 點反擊傷害,玩家 B 不受傷害 - 玩家 A 出
10♣️,玩家 B 出3♥️→ 玩家 B 先受到 10 點傷害,如果還有生命點數,玩家 B 才可回復 3 點生命值 - 玩家 A 出
K♠️,玩家 B 出8♣️→ 雙方同時受到攻擊,玩家 A 受到 8 點傷害,玩家 B 受到 13 點傷害 - 玩家 A 出
8♥️,玩家 B 出5♦️→ 玩家 A 回復 8 點生命值,玩家 B 的牌無效(對方沒有攻擊)
跟電腦玩玩看!
試試看以下的小小程式,跟電腦玩玩看!
電腦只是隨機出牌而已,完全沒有策略,但即使這樣,好像也沒有辦法場場都贏。
覺得以下的電腦太弱?試試看另一個有簡易出牌 AI 的版本。
「決鬥 25」紙牌對戰遊戲
撲克牌密碼
你是一個間諜(代號「蛋餅俠」),正在執行一個機密任務。目標:傳遞一條重要訊息「九點老地方見面,幫我買蛋餅」傳給你的搭檔(代號「豆漿哥」)。
但情況比預想中的更棘手。你身在人潮湧動的酒吧中,到處有形形色色的目光在遊走,任何一點疏忽都可能暴露你的身份。你該如何把訊息傳出去?
- 寫小紙條?太冒險了,一旦被發現,多年的臥底生涯就毀於一旦。
- 傳 LINE?別鬧了,你以為政府的監控系統是吃素的嗎?
正當你陷入沉思時,眼角瞄到桌上放著一盒撲克牌。你若無其事地走過去,假裝整理桌面,順手把牌拿了出來。
在其他客人眼中,你只是一個無聊在把玩紙牌的上班族,但其實你的雙手正以訓練有素的技巧,重新排列著這 52 張牌。排列完後,你把牌重新收回盒子裡放在桌上,起身離開酒吧,就像什麼都沒發生過一樣。
半小時後,豆漿哥走進店裡,看似隨意地拿起那副牌,看了幾眼之後,他嘴角微微上揚。
晚上九點整,老地方。豆漿哥準時出現,手裡拿著兩個熱騰騰的蛋餅。
這是什麼爛故事?
不重要啦。重點是蛋餅俠是怎麼做到的。
當然不是直接在牌上做暗號(例如寫字或折起來什麼的),那太明顯了。而是直接用撲克牌的「排列方式本身」來儲存訊息!
一副撲克牌的 52 張牌,有超級多種可能的排列順序,精確地說是 52!(52 的階乘),大約 8 ⋅ 1067 種。既然牌的排列順序本身,就包含了這麼多資訊,那我們有沒有可能把祕密訊息編碼成撲克牌的順序,然後拿到牌的人就可以靠這個排列順序,解碼出原本的文字呢?
Lehmer Code
答案當然是可以的!
有個叫做 Lehmer Code 的演算法,可以把任意的排列順序對應成獨一無二的數字。
簡單來說,52 張牌的每一種排法,都可以用 Lehmer Code 轉換成專屬的數值,而這個數值又可以進一步編碼成文字訊息。反過來操作,任何文字也能先轉成數字,再透過 Lehmer Code 對應到特定的排序。
這樣一來,我們就可以將撲克牌的「排列順序」作為訊息載體了。
例如,你想傳送「HELLO」這個訊息給朋友。具體的步驟如下:
- 文字轉數字:把「HELLO」用 ASCII 或其他編碼方式,變成一個超級大的數字,例如:
310939249775(這只是舉例,實際數字會有 68 位數)。 - 數字轉排列:用 Lehmer Code 把這個巨大數字對應到一個 52 張牌的特定排列順序,例如
紅心K,黑桃7,方塊A,梅花Q⋯⋯。 - 實際排牌:把這個順序實際用真的牌排出來。
- 傳遞訊息:把這副「看似隨機排列」的撲克牌交給朋友。
- 解碼:朋友收到牌後,將完整的排列順序用 Lehmer Code 反推回那個巨大數字
310939249775,再將這個數字以約定好的文字編碼方式轉為文字,就得到「HELLO」了!
撲克牌編碼程式
網路上已經有個叫做 Asher Falcon 的人把這個概念實作出來了,你可以讀他的部落格文章了解他是怎麼做的,也可以到這個網址直接使用他的編碼程式。
但 Falcon 的版本有個致命的缺陷:為了讓傳遞的訊息夠長,它只使用 5 個位元來儲存每個字元。也就是它的訊息內容只能使用 .,-\"/abcdefghijklmnopqrstuvwxyz 這 32 個字元的其中之一,連阿拉伯數字都不能用。身為一個國際化的現代間諜,這種限制怎麼能接受?
所以我重弄了一個使用 UTF-16 編碼的版本,每個字元用 16 位元來儲存,可以支援絕大部分的中文字和表情符號,這樣用一副牌還是能夠放進長度 14 字元的訊息1。用我的版本,就算是要傳「🥞早安我ㄉ朋友おはよう🌸」這樣的訊息也沒問題唷!
原始碼放在:https://code.wiwi.blog/wiwi/text-to-cards
玩玩看!
使用方式:
- 編碼:輸入一個字串(14 個字元以內),程式會輸出 52 張撲克牌的排列。
- 解碼:輸入 52 張撲克牌的排列(例如:As 3d Th 8c⋯⋯),程式會輸出訊息字串。
透過這個程式,你就可以把任何文字訊息藏在一副撲克牌裡面了!
試試看解碼我的訊息吧:
As 3s Js 6c 7s 9s Ad 2d 7d Jc 9c 2s Jd
4h 8s Kc 4c 4s Qc Kh 7c 5h 3d 7h 5s Td
9h 5d Ac Qh 6s Kd Th 3h 9d 2c 6h Ts Jh
5c 8d 6d 3c Qs 8h 2h 4d Ks Qd Tc Ah 8c
Footnotes
WiwiStudio 音樂能力測驗
2008 年,我在當時的官網 WiwiStudio.com 推出了一個用 Flash 製作的音樂測驗遊戲,就叫做《WiwiStudio 音樂能力測驗》。
(《WiwiStudio 音樂能力測驗》的歡迎畫面截圖)

第一個爆紅作品
《WiwiStudio 音樂能力測驗》從 2008 年上線以來,一直到大約 2019 左右我把 WiwiStudio.com 網站徹除(轉址到 NiceChord.com)這十年出頭的期間,它累積了超過五百萬人次觀看,是我製作過的第一個「真正的爆紅作品」(就算是你現在搜尋它,也能找到很多以前的討論串和文章)。
隨著 Flash 在 2020 年正式停止支援,這個程式也無法在現代的瀏覽器中執行了。(又一次地展示了我們為什麼不該使用專有格式)
其實這作品的原始碼是有保存下來的,只是我遲遲沒有重製它,倒不是因為技術困難,而是不想破壞這份「歷史的回憶」。你知道,有時候最好的作品就是已經消失的作品,因為這樣它就變成了一個傳說,大家記憶中的版本往往比實際上的更美好。
重新釋出
但是,最近我就在我的硬碟裡考古嘛,看到這些原始碼和素材,讓它們一直躺在我的硬碟裡發霉也沒意思。所以我今天把它以部落格貼文的形式重新放出來,現在你可以重新完整體驗所有題目和音樂了!
原始版本的規則是每一題只能播放兩次。但這邊我只是直接貼上音樂檔,你要照規則玩還是作弊無限次播放都隨你!畢竟都 2025 年了,誰在乎 17 年前的遊戲規則呢?
我在文末移植了原汁原味的算分系統到這個網頁上喔!只要輸入你的答案,它就會用當年那套比星座更不科學的演算法給你「音感、節奏感、音樂記憶力、專注力、整體音樂天份」的五項分析數據!當然,原始的排行榜功能就沒有了,資料庫早就不見啦!
開始玩吧!
準備好測試你的音樂能力了嗎?拿出一張紙寫下你的答案吧!有 26 題,應該大約 20 分鐘可完成,記得用你最好的耳機或喇叭玩。
不過再次提醒一下,這是 2008 年的作品,我那時候還很菜,不要期待太高的品質。
《WiwiStudio 音樂能力測驗》題目開始
01
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 有些不同
02
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 有些不同
03
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 有些不同
04
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 有些不同
05
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 不相同,兩個片段的「音高」有些不同
- c. 不相同,兩個片段的「節奏」有些不同
06
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 不相同,兩個片段的「音高」有些不同
- c. 不相同,兩個片段的「節奏」有些不同
07
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 不相同,兩個片段的「音高」有些不同
- c. 不相同,兩個片段的「節奏」有些不同
- d. 不相同,兩個片段的「音高和節奏」都有些不同
08
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?
- a. 完全相同
- b. 不相同,兩個片段的「音高」有些不同
- c. 不相同,兩個片段的「節奏」有些不同
- d. 不相同,兩個片段的「音高和節奏」都有些不同
09
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。音樂片段是由電吉他、電貝斯和爵士鼓演奏。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?如果不相同,請指出是哪一個樂器的部份不同。
- a. 完全相同
- b. 不相同,兩個片段的「電吉他部份」有些不同
- c. 不相同,兩個片段的「電貝斯部份」有些不同
- d. 不相同,兩個片段的「爵士鼓部份」有些不同
10
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。音樂片段是由電鋼琴、電貝斯和合成鼓組演奏,請注意聽當中電鋼琴的部份。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?如果不相同,請明確指出它們如何不同。
- a. 完全相同
- b. 不相同,電鋼琴彈的「音高」有些不同
- c. 不相同,電鋼琴彈的「節奏」有些不同
- d. 不相同,電鋼琴彈的「音高和節奏」都有些不同
11
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。音樂片段是由鋼琴、低音提琴和爵士鼓演奏。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?如果不相同,請指出是哪一個樂器的部份不同。
- a. 完全相同
- b. 不相同,兩個片段的「鋼琴部份」有些不同
- c. 不相同,兩個片段的「低音提琴部份」有些不同
- d. 不相同,兩個片段的「鋼琴和低音提琴部份」都有些不同
12
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?如果不相同,請明確指出它們如何不同。
- a. 完全相同
- b. 不相同,兩個片段的「音高」有些不同
- c. 不相同,兩個片段的「節奏」有些不同
- d. 不相同,兩個片段的「音高和節奏」都有些不同
13
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?如果不相同,請明確指出它們如何不同。
- a. 完全相同
- b. 不相同,兩個片段的「音高」有些不同
- c. 不相同,兩個片段的「節奏」有些不同
- d. 不相同,兩個片段的「音高和節奏」都有些不同
14
按下播放鈕後,會連續播放兩個音樂片段,兩個片段之間會有約兩秒鐘的間隔。音樂片段是由鋼琴、電貝斯和爵士鼓演奏。你有兩次的播放機會,請仔細聽兩個音樂片段,然後回答下面的問題。
這兩個音樂片段是否相同?如果不相同,請指出是哪一個樂器的部份不同。
- a. 完全相同
- b. 不相同,兩個片段的「鋼琴部份」有些不同
- c. 不相同,兩個片段的「爵士鼓部份」有些不同
- d. 不相同,兩個片段的「鋼琴和爵士鼓部份」都有些不同
15
第 15-17 題,將測驗你將音樂視覺化的能力。
按下播放鈕後,會播放一個音樂片段,請選出最能代表這個音樂片段的圖形。你有兩次的播放機會。
以下哪一個圖形,最能代表剛才播放的音樂片段?

16
按下播放鈕後,會播放一個音樂片段,請選出最能代表這個音樂片段的圖形。你有兩次的播放機會。
以下哪一個圖形,最能代表剛才播放的音樂片段?

17
按下播放鈕後,會播放一個音樂片段,請選出最能代表這個音樂片段的圖形。你有兩次的播放機會。
以下哪一個圖形,最能代表剛才播放的音樂片段?

18
第 18-20 題,要測試你的心理節拍穩定度。
按下播放鈕後,會播放一個音樂片段,仔細聽音樂的速度變化。你有兩次的播放機會。
這個音樂片段的速度變化為何?
- a. 速度完全沒有變化
- b. 越來越快
- c. 越來越慢
19
按下播放鈕後,會播放一個音樂片段,仔細聽音樂的速度變化。你有兩次的播放機會。
這個音樂片段的速度變化為何?
- a. 速度完全沒有變化
- b. 越來越快
- c. 越來越慢
20
按下播放鈕後,會播放一個音樂片段,仔細聽音樂的速度變化。你有兩次的播放機會。
這個音樂片段的速度變化為何?
- a. 速度完全沒有變化
- b. 越來越快
- c. 越來越慢
21
最後六題,也就是第 21-26 題,要測試你的節奏辨識力和記憶力。
按下播放鈕後,會播放一個用鼓演奏的音樂片段,你要算出鼓總共敲了幾下。你有兩次的播放機會。
鼓總共敲了幾下?
- a. 10
- b. 11
- c. 12
- d. 13
22
按下播放鈕後,會播放一個用鼓演奏的音樂片段,你要算出鼓總共敲了幾下。你有兩次的播放機會。
鼓總共敲了幾下?
- a. 10
- b. 11
- c. 12
- d. 13
23
按下播放鈕後,會播放一個用鼓演奏的音樂片段,你要算出鼓總共敲了幾下。你有兩次的播放機會。
鼓總共敲了幾下?
- a. 17
- b. 18
- c. 19
- d. 20
24
按下播放鈕後,會播放一個用鼓演奏的音樂片段,你要算出鼓總共敲了幾下。你有兩次的播放機會。
鼓總共敲了幾下?
- a. 22
- b. 23
- c. 24
- d. 25
25
按下播放鈕後,會播放一個用鼓演奏的音樂片段,你要算出鼓總共敲了幾下。你有兩次的播放機會。
鼓總共敲了幾下?
- a. 23
- b. 24
- c. 25
- d. 26
26
按下播放鈕後,會播放一個用鼓演奏的音樂片段,你要算出鼓總共敲了幾下。你有兩次的播放機會。
鼓總共敲了幾下?
- a. 28
- b. 29
- c. 30
- d. 31
恭喜你完成測驗,來對答案!
按我看解答!
ababbbadcbdabcacdbcbbdcacb
或者直接在下面的文字框輸入答案,讓我直接用原始遊戲的公式幫你算分!
好玩嗎?
如果你喜歡以上的測驗,我在 2019 年做了這個音樂測驗的續集《尋找黃金檸檬卷之聽力大挑戰》,它是一個 YouTube 影片迷宮遊戲,很好玩唷!還沒玩過的趕快到以下連結:
依賴
我們每天都在依賴別人的產品和服務:
- 🍜 想吃一碗烏龍麵時:我們不會從頭去學如何種小麥、磨麵粉、做麵條;我們會直接買現成的麵條來煮,或是去餐廳點一碗。
- 💊 生病時:我們不會自己研發藥物、進行人體實驗;我們會直接依賴醫生的判斷和藥廠的成果。
- 🎵 做音樂時:我們也依賴別人發明的樂器、音色庫、記譜法、樂理、調律系統和編曲軟體。
寫程式時也是一樣。幾乎沒有人會想要從零開始自己寫所有功能,所以我們會匯入別人已經寫好的函式庫。但問題是,當有太多外部依賴時,程式會變得很肥,還會受制於他人;更糟的是,我們可能會漸漸失去對自己程式運作原理的理解。
不囉唆的節拍器
好幾年前,在好和弦的官網 NiceChord.com 上面,我寫了一個「不囉唆的節拍器」程式。
之前的版本是用 tone.js 這個函式庫做的1,最後完成的程式檔案大小大約 362 KB,看起來已經很小了對吧?但前幾天我用單純的 JavaScript 重做,完全不依賴外部函式庫,結果檔案大小驚人地縮減到只有 2.1 KB──原本的 172 分之一!
現在這個節拍器程式,已經小到可以被放在一個 QR Code 裡面!以下的 QR Code 不是下載連結喔,而是「整個程式」本身!只要掃描它,把內容文字存成 .html 檔就可以直接使用。
(這可能是網路上唯一一個可以印在便條紙上的節拍器了。)

減低依賴
說到減低生活上的依賴,我最愛的例子應該是離開 Evernote 這件事。
我曾經有很長一段時間使用 Evernote 在作筆記,但 Evernote 的依賴超多:
- 需要使用特定的專有 App 才能編輯筆記
- 筆記的儲存空間需要每個月持續付費
- 要同步筆記,需要依賴單一廠商的雲端服務
- 雲端服務需要依賴持續的網路連線
- App 本身也需要依賴新版的 macOS 和 Windows 系統運作
- 而要更新到新版的 macOS 和 Windows,都依賴你擁有特定的硬體或網路帳號
要使用 Evernote 作筆記,我就得要滿足這些依賴性。再加上,如果 Evernote 突然改變介面、大幅漲價,或者最糟的情況──倒閉,我的筆記就像被綁架的人質一樣,付了贖金都不見得拿得回來。
我現在已經改用 Markdown 檔案來做筆記,Markdown 可以被幾乎任何文字編輯器開啟,不依賴任何特定 App 或作業系統,也可以很輕易地配合任何形式的雲端同步服務。
更低依賴性的作法是使用鉛筆和筆記本,這樣的話連電腦和電力都不依賴,永遠都不會遇到系統更新或格式不相容的問題。當然,你得要小心別把咖啡打翻在上面(紙張對液體的相容性仍然有待改進)。
這個網站的依賴性很低
你現在所在的 Wiwi.Blog 網站也不依賴複雜的科技。它只是很單純的靜態網頁,不需要高速的電腦也能流暢瀏覽,甚至連「現代」的瀏覽器都不是必要條件。就算是用超極簡的 Dillo,或者終端機裡的純文字瀏覽器如 w3m,都還是可以順利閱讀內容。
(Wiwi.Blog 在超低科技極簡瀏覽器 Dillo 也可以正常運作)

健康的依賴關係
檢查自己生活和工作中的「依賴鏈」,看看其中是否有環節是被單一公司壟斷的。如果有的話,考慮調整工作方式,或至少準備一套備用方案。這樣當這個脆弱的環節出問題時(它一定會出問題的),我們才不會手忙腳亂。
我們雖然無法避免所有的依賴,但至少可以避免那些「今天不更新就無法使用」的 Apps。謹慎地挑選依賴對象吧!