Belle 的暑假日常

這是她七月的日曆,滿滿的 ✓ 代表什麼呢?

CT: Chinese typing 
ET: English typing 
RC: Read Chinese book
RE: Read English book
M2: math exercise 2 chapters
S: 不吃 Snack
TV: 控制看電視時間
W2: 600ml water x 2
ES: Exercise & stretching
大 ✓ : 除了交叉以外的所有目標都完成

首先是中英文打字,約各半小時。她現在學校的功課,大部分是做 powerpoint present 和寫一些短文章,都是用 Google doc. 相信將來都是 digital 形式為主。打字速度對工作效率影響很大,所以在小學階段,我給她設定了中文每分鐘30字,英文 40 字的目標,往後是快是慢,便看她自己了。

中/英文閱讀,也是各半小時。英文書她很喜歡看,一點也不用我操心,她自己在 openlibrary.org 會找一些她喜歡的(這期喜歡看鬼故,然後不敢關門洗澡…) 但中文書我便要花點心思了,因她中文程度著實比同年的台灣小朋友差,她只有中文一課是有中文的,雖然理論上跟本地國小是同一 syllabus,但實際上她日常中文書寫應用極少,對課文的理解是非常有限的,特別是四字詞。然而 Belle 的性格是:有成功感的便很樂意去做,沒有成功感的便怎樣也推不動(人之常情吧~),所以會進入一個惡性循環,非常不喜歡看中文書。我暫時的解決方法是幫她找一些大約是二年級程度的、有注音的、和有很多公仔的童書給她看,希望能保持她對中文閱讀的興趣。 

對於注音系統,當然有其好處也有其壞處,但我覺得整體來說是利多於弊的。以 belle 為例,她的中文程度本來已經不太好,如果她看一本書,連讀也讀不出來,她的成功感便非常低,要她從中發掘趣味,繼而自發地閱讀的機率變更低了… 另外,當她遇到一些不懂的詞語/四字成語,雖然她看完全書以後還是不太理解的,但那個詞語的發音已經落入她的腦海中,到將來她再遇到這個詞語的時候,能夠掌握和理解的機率便相對提高了。 

之後是數學,這是她最最弱的一環,她非常討厭邏輯運算,其實我也沒有要求她在數理上有什麼突出的表現,只希望她在一般日常的數學應用能夠輕鬆掌握。我試過買一些基本四則運算的練習給她,她有很乖的去做,但完全是水過鴨背不能入腦的,做的時候教她她懂,之後遇到同類型問題的時候她完全用不出來…  所以之後我便買一些應用題練習,即是文字和故事為主的練習,要她從中理解並做出一些簡單的運算,這樣好一些,起碼她真的會一點了。記得一次在超級市場買牛奶,同一牌子,一個是一公升裝,另一個是六包紙盒裝,她竟然能夠算出哪一個比較便宜,我真是超級高興喜出望外!!其實我對她的期望是什麼呢?如果有一日她能夠很清晰地解釋給我聽,買十送一便宜,還是九折便宜一些,她便畢業了!往後是否繼續研習數理邏輯,純看她的興趣。 

其餘是一些生活細節,她是超級不喜歡喝水的(好像我小時候也是 … 😜)所以我要她一天喝兩瓶 600ml 的水,她基本上都做得到。另外便是拉筋和做運動,這對她來說是小菜一碟,但為什麼有這一項呢?因近來台灣很大雨,我們根本沒辦法外出攀石,疫情關係連 boulder 場也不能去,在家中每天就是吃… 她的肚腩越來越大了,而她自詡是一個 climber,保持 core 和瘦是很重要的,所以便教她每天都做一點 core 和拉筋,本質上她很樂意,但人總是有惰性,這些 ✓ 能記錄進度以外,還能加一點成功感,更可以給我一些機會去讚她「叻女」,為她增加動力之餘又能促進親子關係,一舉數得😁

而她最多交叉的一項便是零食,她超愛吃零食和甜點(我也是)但她又知道對 climber 來說,瘦是相當大的優勢。所以如果有一天她完全沒有吃零食,她便給自己一個 ✓  其實是否做到我覺得還是其次,她有成爲 climber 的心,並自己定下目標一步一步前進,己經是一件很熱血的事情 💪 

上面都是一些培養良好習慣的措施,最後一項是破除壞習慣的。她是超級電視精,極度喜歡看 youtube 和 netflix,所謂三歲定八十,她小時第一句會說的句子便是 “i want iPad” 如果不限制她,她是可以由朝看到晚的。其實我本身也不太抗拒她看 netflix 的兒童台,畢竟內容尚算 ok 而且對她的英文也有幫助。可是這對身體,特別是眼睛便不太好了,最大問題是她有一點妥瑞症… 之前我已經帶她去看兒童神經科檢查過,幸好她是輕症,在西醫的角度不需要用藥。之後我帶她看中醫,吃了兩個月中藥是有改善的。但明顯地當 screen time 一長她眨眼的頻率便會增加,而且是左眼不是兩隻眼,這是妥瑞症復發的先兆,所以我限制她一天的 screen time 不能超過兩小時。之前疫情關係 online 上課,上課已經看著電腦 4、5 小時,其實是很傷的。所以除了限制她的 screen time 我還買了 e-ink 的平板(又有借口買玩具了… kakaka),現在她看中英文圖書的時候都是用 e-ink,效果明顯比 iPad 好,就算睡前看書也不會影響她的睡眠質素。

上面看似很多東西,但其實每天加起來只不過是大約三個小時,其餘的時間做什麼呢?當然是她最喜歡的 rainbow loom 和其他手作仔。最近她還用 rainbow loom 的技術應用到毛冷上面,做一些毛冷公仔,我覺得很可愛。大家有興趣可以去他的 channel 看一下。

AZ 接種後感

很感恩,先不說過去一年政府把關得力,台灣國內生活基本上與平常無異。政府從 5 月疫情爆發,由因某國阻撓買不到疫苗,到日、美、立陶宛等「真友邦」捐贈數百萬疫苗並全面開打,只用了兩個月時間,無論外交的疫苗獲取,或內政的預約、施打,都算是非常高效率的!

網上登記時我揀了 AZ 和 Moderna 都没所謂,在當前的供應下,我當然知道會配到 AZ。但我支持政府的說法,不要挑三揀四,有疫苗便盡快打,這無論對自己、身邊的人和社會都是一種保護。

況且,AZ 跟其他 mRNA 廠牌的保護效果其實差不多(詳情

高雄巨蛋

我在大型接種場接種,場內的工作人員都十分認真和有禮,由登記 → 問診 → 施打,過程大約十分鐘,很順暢。打完再到看台休息十五分鐘,確認無急性過敏後便可離場。

我傍晚 6 點接種,到睡覺時都沒有不適,以爲過關。怎料到半夜3點便雙腿肌肉疼痛,開始發燒,約 38.5 度。一燒便燒了一天半,感覺就像沒有鼻水喉痛的大感冒,比想象中辛苦。

打過疫苗,內心消除了重症的憂慮,信心滿滿的,感覺很好。這一年多在疫情籠罩下的愁雲慘霧,這一針,有種「撥開雲霧見青天」的感覺~

Auto-format Svelte in VS Code

Svelte is an amazing front-end framework, which gives much better developer experience over other frameworks like Vue or React. To enjoy the super handy auto-format on save feature in VS Code, a little setup is needed at time of writing, here is how:

  1. install Svelte extension in VS Code
  2. in VS Code settings, add:
"editor.formatOnSave": true,
"[svelte]": {"editor.defaultFormatter": "svelte.svelte-vscode"}

The first line let VS Code triggers auto-format on save, and the second line tells VS Code to use the Svelte extension as the default formatter for svelte files. Reload VS Code, you should be able to auto-format .svelte files on save from now on.

Note that Svelte extension internally uses prettier-plugin-svelt for auto formatting. It has no relationship with the Prettier extension in VS Code. That means, it dis-regards the Prettier extension settings in VS Code.

So what if you want to tweak the Prettier settings, such as using single quote, removing semi colon at line end … etc? You have to add a .prettierrc file in your project root in order to configure the Prettier plugin behavoir, a sample config file as follow:

{
  "semi": false,
  "singleQuote": true,
  "arrowParens": "avoid",
  "printWidth": 120
}

Save the config and reload VS Code, custom auto-formatting on saving .svelte files is done 🎉

P.S. some old tutorials suggest installing prettier-plugin-svelt with npm in your project. You don’t have to do it now as its already included in the Svelte extension.

打造你專屬的倉頡輸入法

我是倉頡輸入法的使用者,在 windows 10 之前,微軟倉頡輸入法是可以選擇只顯示 big5 字元的。但 windows 10 之後這選項便不復存在。

我想只顯示 big5 是因為 unicode 有非常多的的罕用字,這導致嚴重的重碼問題,而那些罕用字在大部分情況下根本用不著,它們只會降低我的輸入速度和爽快感。

我嘗試在各論壇詢問是否可設定只顯示 big5 字元,截至 windows 10 version 2004,還是沒有辦法設定的。而最接近的答案,是重新安裝舊版的 「微軟新倉頡 」輸入法,詳情可看這篇:

https://irregular.enzan.org/post/3292

但他有一個bug,就是聯想字的部分顯示不出來,加上大五碼本身亦有重碼的問題,例如你打 「夢 」字他會有 「夢甍藅蘮 」四個輸出。而且它是使用 IMM 架構的舊版輸入法,每次更新 windows 便要重裝一次…

既然要安裝另一個輸入法,我在想,有沒有其他的倉頡輸入法可以完全客製化,把那些罕用字刪除,成為我心目中理想的倉頡輸入法呢?

然後我找到一篇關於 dime 輸入法的文章:

https://terryhung.pixnet.net/blog/post/35608897

dime 相當接近我要的東西,其可取之處在於:

  1. 它是基於新的 TSF 輸入法架構,這樣使輸入法的安裝和移除更加方便,未來的支援更有保障,而且不用每次更新 windows 便要重裝。
  2. 它可以自行修改內碼表,這樣我便可以移除一些根本用不到的罕有字,令重碼問題大幅降低。

內碼表應如何製作呢?我先把已做好的內碼表放在這裏給大家參考,是純文字,內容亦相當容易理解:

https://hoishing.github.io/forum/dime_cangjie.txt

我對內碼表有以下的要求:

  1. 不要包含太多罕有字。
  2. 重碼字常用的應在前,例如輸入「人大口」,「知」應在「佑」之前。

對於問題一,我的解決方法是使用中華民國教育部編訂的「常用國字標準字體表」和「次常用國字標準字體表」,其他的字暫時不包括在內,這樣整個字庫加起來只有11000多字。

要解決第二個問題,字庫可依教育部的字頻表排序

http://language.moe.gov.tw/001/Upload/files/SITE_CONTENT/M0001/86NEWS/download/86rest17.TXT

至於每個字對應的倉頡碼,可到政府資料開放平台下載全字庫

https://data.gov.tw/dataset/5961

就這樣,我用 python 把上述的原材料整理一番後,便得出上面的代碼表。然後把它載入 dime 的「自建」輸入法內,一個完全客製化的倉頡便大功告成!

最後對於 dime 的使用,有以下幾點註腳:

  1. windows 的 language settings 內並沒有輸入法的設定。先打開 notepad,然後按 ctrl \ 才可進入設定,這是 dime 最需要改善的地方。進入後,記得把 「組字區最大長度」設為 5,因倉頡最長可有五碼。
  2. 如果安裝後發現沒有聯想字,可先安裝內置的「微軟注音」輸入法,打開「相容性:使用舊版的微軟注音」,然後把 user folder 內的 appdata\roaming\dime 刪除,再重裝 dime 即可。
  3. 安裝 dime 後,它會一拼安裝注音、大易等輸入法,而你要用的只是自建輸入法。要移除不需要的輸入法,你先要在 language setting 中把所有的 dime 輸入法加上去,re-login 後再從 language settings 中移除。

Using Chinese Characters in Matplotlib

When you try to display Chinese or other non-ascii characters in matplotlib, your characters may not be displayed properly, like following figure:

Error displaying Chinese characters in matplotlib

It is because the fonts used by matplotlib couldn’t decode the characters properly. To solve it, we should add the appropriate fonts and update matplotlib font cache.

  1. locate the matplotlib fonts folder:
import matplotlib
print(matplotlib.matplotlib_fname())

this is the location of matplotlib config file, you will get something like …/matplotlib/mpl-data/matplotlibrc

The font folder is …/matplotlib/mpl-data/fonts/ttf , put your ttf file there.

2. Get ttf from ttc file (skip if you have ttf file already)

For macOS, the system Chinese fonts is Heiti, which is embed in a ttc file (ttc is a collection of multiple ttf files). Get the system ttc file in /System/Library/Fonts/STHeiti Medium.ttc Copy this file out and convert it to ttf. Here is an online ttc converter:

https://transfonter.org/ttc-unpack

3. Rebuild the Matplotlib Cache

import matplotlib.font_manager
matplotlib.font_manager._rebuild()

restart your Jupyter / ipython kernel, then test if matplotlib can load your font or not by the ttflist function of the font manager

[f for f in matplotlib.font_manager.fontManager.ttflist if 'Heiti' in f.name]

change ‘Heiti’ to your own font name. If you see your fonts object above. You are ready to use the new fonts.

4. Using Appropriate Fonts in Matplotlib

matplotlib.rcParams['font.family'] = ['Heiti TC']

This will tell matplotlib to use the specific font as default, result as follow~