:::

Git取代分支檔案的方法 / Replace Branch Files In Git

布丁布丁吃布丁

Git取代分支檔案的方法 / Replace Branch Files In Git

2014-08-09_221445

我通常使用TotoiseGIT工具利用Git與團隊協同開發。當我想要把自己的分支清空,全部改用別人的檔案時,可以使用以下的方法來取代自己的分支。

This article describes how to use TotoiseGIT to replace a branch’s files to another branch.


分支說明 / Branch Description

在本文的例子中會使用兩個分支(Branch)。

  • Branch A:我目前所在的分支,以本地端的pudding分支為例。我不再需要該分支的所有檔案,我希望換成Branch B的檔案。
  • Branch B:目標分支,以遠端伺服器上的master為例。我希望把Branch B的檔案拿到Branch A使用。

我的方法很笨,就只是單純的替換檔案而已。以下說明做法。

Step 1. 遞交Branch A / Commit Branch A

2014-08-09_234423

由於接下來做的事情會變動到Branch A的檔案,不論任何修改,使用Git都應該養成隨時遞交(Commit)的習慣。因此在此我們也先遞交Branch A。如果沒有任何檔案有修改的話,也可以勾選左下角的「只有訊息」(Message only),並撰寫遞交的訊息(Message)即可。

Step 2. 獲取Branch B的資訊 / Fetch Branch B

我們要在TotoiseGIT中獲取Branch B的資訊。

2014-08-09_232313

做法是開啟Git同步(Git Sync)。

2014-08-09_232658

選擇要同步的Branch B。你可以按下「…」按鈕,開啟分支瀏覽器 (Browse reference),在「/remotes/kals/master」找到我們要的Branch B。按下OK確定。

2014-08-09_233004

點選「獲取」(Fetch)。

2014-08-09_233120

如果出現藍色的「Success」訊息,表示獲取成功。

Step 3. 切換成Branch B / Checkout Branch B

我們要利用TotoiseGIT的Checkout功能,把Branch A切換到Branch B去。

2014-08-09_222217 - Copy

在該Git專案的目錄底下按右鍵,選擇Switch/Checkout。

2014-08-09_231128

選擇Branch為遠端的master分支:remotes/kals/master。然後勾選建立新分支(Create New Branch)、強制切換(Force),追蹤(Track)選項保持預設。然後按下OK。

2014-08-09_231443

接著切換檔案,如果出現藍色的「Success」訊息,表示成功。

2014-08-09_233332

雖然看起來檔案沒有什麼明顯的差別,但是現在的確切換成了分支Branch B。按右鍵可以看到「Git Commit -> "master"」,表示現在的分支的確是Branch B。

Step 4. 複製Branch B的檔案到另一個資料夾 / Copy Branch B’s Files To Another Folder

2014-08-09_233723

接下來我建立一個資料夾叫做「kals-temp」,然後把原本資料夾「kals」裡面的檔案複製到「kals-temp」去。這樣我就可以先保留了Branch B的資料。

Step 5. 切換回Branch A / Checkout Branch A

2014-08-09_233945

接著我再回到「kals」資料夾,然後以類似Step 3的方法切換回Branch A,也就是本機端的pudding分支。記得勾選「強制」(Force)。

Step 6. 刪除Branch A的檔案 / Delete Branch A’s Files

2014-08-09_234410

然後我們不需要Branch A的檔案了,全選檔案之後,把它們統統刪除吧。

Step 7. 移動Branch B的檔案回到專案的資料夾 / Move Branch B’s Files Back To Project Folder

2014-08-09_234956

接著再把存放Branch B的「kals-temp」資料夾中的資料移動到專案目錄「kals」資料夾中。

image

現在Branch A裡面的檔案就會是Branch B的檔案了。

Step 8. 遞交Branch A / Commit Branch A

2014-08-09_235344 

完成取代之後,再一次遞交Branch A。由於現在這個Branch A的檔案是Branch B的檔案,因此跟Step 1遞交的檔案有很大的差異。下面的檔案變動(Changes made)會列出相當多的改變。總之先保存這次的變動,遞交吧。

這樣子我們就完成拿Branch B的檔案替換到Branch A分支裡面去了的任務了。


小結:尚未摸透Git / Conclusion: Complex Git

事實上,上述這個做法看起來很愚蠢。雖然我也寫了一個簡單的Git介紹,但老實說我對於Git仍不是這麼的熟悉。分支之間檔案交換的方法還有很多種,這篇是我找到最可行的一種方式。

2014-08-10_000547

一般的做法都是教你使用「比較跟前面版本的差異」(Diff with previous version)。可是這種做法中,Branch A中有、Branch B中沒有的檔案,依然還會存在在替換後的Branch A中。特別是當Branch B的檔案名稱修改時,就會造成Branch A替換後出現了兩個不同名稱檔案、但是檔案內容卻一樣的問題。

2014-08-10_001020

不過我後來在想,是不是應該要用Rebase這個工具來取代分支檔案呢?這點我就要繼續再研究看看了。希望熟悉Git的朋友能給我一些建議吧。

(more...)

Proxmox VE 3.2已經修復的備份鎖定問題 / Proxmox VE 3.2 Fixed Problem: Backup Lock

布丁布丁吃布丁

Proxmox VE 3.2已經修復的備份鎖定問題 / Proxmox VE 3.2 Fixed Problem: Backup Lock

2014-08-08_085637

Proxmox VE備份時會設定虛擬機器的備份鎖,位於/var/lib/vz/lock/[VMID].lck。在Proxmox VE 3.2版本中,備份異常中斷、或是有其他備份仍在進行中的時候,備份功能依然可以正常運作。

When Proxmox VE start a backup job, it will create a lock file at /var/lib/vz/lock/[VMID].lck. In Proxmox VE 3.2 version, when previous backup job got error or not finished, current current backup job will not crash.


舊版本的錯誤 / Problem of Older Version

備份時所產生的備份鎖,在舊版本的Proxmox VE中不會自動解除。例如這篇「backup failed - command 'qm set 101 --lock backup' failed with exit code 255」就遇到了這個問題,發問者doknet的錯誤訊息如下:

vm1:~# vzdump --dumpdir /var/lib/vz/dump/  --snapshot  101

INFO: starting new backup job: vzdump --dumpdir /var/lib/vz/dump/ --snapshot 101

INFO: Starting Backup of VM 101 (qemu)

INFO: stopped

INFO: status = stopped

INFO: setting parameters failed - VM is locked (backup)

ERROR: Backup of VM 101 failed - command 'qm set 101 --lock backup' failed with exit code 255

INFO: Backup job finished with errors

這時候由於備份時產生的備份鎖無法自動解除,所以必須要管理者手動刪除檔案。以VMID 101的虛擬機器為例:

rm -f /var/lib/vz/lock/101.lck

刪除該鎖之後,備份就可正常進行。

備份機制的運作方式 / The Survivability of Backup

在Proxmox VE 3.2版本中,備份時常發生的錯誤都不會影響備份任務的心情。常遇到的錯誤如下:

其他備份任務尚未完成 / Another Backup Job Is Still Not Completed

image

備份任務一次只能進行一個。較晚執行的備份任務會先等待其他任務完成,顯示訊息為:

INFO: trying to get global lock – waiting…

這時候備份任務會進行等待,然後當其他備份任務完成時,這個任務就會開始進行備份。

在這個情況下會連續製作備份檔案,請自行注意。

之前的備份任務異常中斷 / Previous Backup Job Is Crashed

如果之前的備份任務因為斷電、斷網等各種因素導致無法順利進行,那後來的備份任務也不會因此被鎖住,而可以直接開始備份。

備份空間不足的問題 / No Space Left When Backup

image

在各種試誤中,最後我只有找到了「No space left on device」的錯誤。如文字所示,這純粹是硬碟空間不足而已,也不是備份功能的問題。

如果大家在備份時有遇到被鎖住的錯誤情況,請再跟我分享。

(more...)

修復Proxmox VE:節點無法加入集叢 / Fix Proxmox VE: Pvecm Add Failed

布丁布丁吃布丁

修復Proxmox VE:節點無法加入集叢 / Fix Proxmox VE: Pvecm Add Failed

image

本篇是修復Proxmox VE的集叢(Cluster)中遇到「authentication key already exists」的錯誤。這個錯誤是因為該節點(node)已經在集叢(cluster)中,所以無法再加入集叢。加入-force參數之後可以讓節點強制加入集叢。以下說明造成錯誤的原因以及解決方法。

This article describes the problem of Proxmox VE Cluster: “'authentication key already exists” when add a node to cluster. A proposed solution to the problem is append “-force” option to “pvecm add [NODE_ADDRESS]”. Following are the problem description and solutions.


問題狀況 / Problem Description

2014-08-08_103642

由於你的集叢一直發生錯誤,你想要重新建立起集叢,再把目前這個節點加入到新的集叢時,使用了pvecm add [節點網路IP]的指令,例如:

pvecm add 10.1.0.1

但是這時候卻出現了以下錯誤訊息,讓你加入節點失敗:

authentication key already exists

於是集叢依然無法運作,節點也無法加入到新的集叢中,錯誤無法解決。這一個問題我也在「Proxmox VE集叢重新加入節點」一篇中提及過,現在總算找到解決方法。

問題原因 / Causes of Problem

可能是以下幾種原因,你會想要把一臺Proxmox VE伺服器節點(node)加入到一個集叢中。

  1. 你的集叢發生了no quorum錯誤。這是因為集叢未啟動,解法請參考這篇。
  2. 你的集叢一直跳出登入視窗。這是因為節點伺服器時間不正確,解法請參考這篇。
  3. 你這臺節點Node A原本隸屬於集叢Cluster A,現在要加入Node B的Cluster B中。

前面兩個原因都無法靠重新加入節點來解決,請參考我另外的解決方案來處理。這篇主要處理的是第三種情況,也已經就是要把節點換到另一個集叢的時候。

造成無法加入集叢的原因有兩個:

  1. 節點自身已經隸屬於某一集叢
  2. 新的集叢本身已經有該節點的資料:這是當你用我這篇的方法,刪除節點自身的集叢設定(decluster),卻沒刪除新集叢對該節點設定時的問題。真要刪除節點可以用pvecm delnote [NODE NAME],不過以下方法更簡單一點。

解決方案 / Solution

解決方法就是在pvecm add時加上「-force」參數。舉例來說就是:

$ pvecm add 10.1.0.1 -force

這樣Proxmox VE會強制複寫原本的設定,就不會出現「authentication key already exists」錯誤訊息。

然後再來要重新啟動cman跟pve-cluster服務,以確保載入新的集叢資訊:

$ service cman restart

$ service pve-cluster restart

我把這些步驟寫成了腳本pve-add_node_force.sh,下載、加入執行權限之後,就能夠用以下方法加入集叢:

$ ./pve-add_node_force.sh 10.1.0.1

就拿這個方案來取代原本的pvecm add指令吧。

(more...)

修復Proxmox VE:連續要求登入 / Fix Proxmox VE: Endless Login

布丁布丁吃布丁

修復Proxmox VE:連續要求登入 / Fix Proxmox VE: Endless Login

2014-08-08_024021

本篇是修復Proxmox VE的集叢(Cluster)中遇到不斷跳出「Proxmox VE Login」登入視窗的錯誤。這個錯誤是因為節點的時間不一致,使用ntpdate網路校時之後可以解決。以下說明造成錯誤的原因以及解決方法。

This article describes the problem of Proxmox VE Cluster: when you do anything on other nodes, Proxmox VE Login form prompted again and again. A proposed solution to the problem is correcting the time of every node by using ntpdate. Following are the problem description and solutions.


問題狀況 / Problem Description

2014-08-06_112517

有時候在進行Proxmox VE集叢中任何操作時,明明之前已經登入過了,但是現在卻又跳出了「Proxmox VE Login」登入表單。即使你再一次登入,這個登入表單依然會跳出來。就算網頁重新整理,這個它依然會跳出這個表單。

2014-08-08_024021

如果用Google Chrome來檢查錯誤主控臺,你會發現大量的「401 (No ticket)」,例如:

Failed to load resource: the server responded with a status of 401 (No  ticket)

這大概是Proxmox VE使用者遇到最頭痛的問題了,一堆人都在網路上拼命地找尋這個問題的解決方法。但是這個問題本身不在於Proxmox VE集叢本身,而是在於伺服器上。

問題原因 / Causes of Problem

2014-08-09_005256

造成這個問題的原因是因為節點伺服器自己的時間不一致

以下幾種情況可能會造成伺服器時間錯亂:

  • 伺服器本身因為停電、長時間未通電使用等各種情況,導致伺服器本身記錄時間的電池沒電,時間被重置。
  • 使用虛擬機器建置Proxmox VE節點,但是因為使用快照(Snapshot)與還原(restore),讓機器本身的時間與現實時間不一致。
  • 因為任何原因設定了Linux系統的時間,例如用date工具

你可以執行date指令來查詢伺服器現在的時間:

root@proxmox-02:~# date

Thu Aug  7 20:47:01 CST 2014

如果這個時間附和現實時間,那沒有問題。但通常有問題的節點的時間都會與現實時間不同。

當兩個節點的時間不一致時,維持正確時間的節點去查看延遲錯誤時間的節點時,大概兩者只要相差5分鐘,就會導致這個錯誤發生。

手動解決方案 / Manual Solution

要解決伺服器時間錯誤,最簡單的方法是使用網路校時ntpdate。Proxmox VE預設沒有安裝ntpdate,我們要先更新apt-get,然後再用apt-get安裝。接著就能夠跟NTP伺服器pool.ntp.org進行網路校時。

安裝ntpdate的做法如下:

apt-get update

apt-get install -y ntpdate

進行網路校時的指令如下:

ntpdate -u pool.ntp.org

自動解決方案 / Automatic Solution

image

要自動解決這個問題的方法是固定每天都進行網路校時,確保伺服器的時間一直保持正確。

我將以上指令寫成了腳本pve-ntpdate.sh,請下載到/root/dlll-cias/pve/scripts/pve-ntpdate.sh:

wget http://goo.gl/vKyjnQ  -o /root/dlll-cias/pve/scripts/pve-ntpdate.sh

加入執行權限:

chmod +x /root/dlll-cias/pve/scripts/pve-ntpdate.sh

然後在crontab加入以下設定:

echo “0 2 * * * root /root/dlll-cias/pve/scripts/pve-ntpdate.sh”

這樣每天清晨2點的時候,伺服器會自動進行網路校時,以確保時間的正確性。

(more...)

修復Proxmox VE:無法刪除虛擬機器 / Fix Proxmox VE: Destroy Virtual Machine Failed

布丁布丁吃布丁

修復Proxmox VE:無法刪除虛擬機器 / Fix Proxmox VE: Destroy Virtual Machine Failed

2014-08-08_083402

本篇是修復Proxmox VE的集叢(Cluster)中遇到「'vzctl destroy [VMID]’ failed: exit code 41」的錯誤。這個錯誤是因為虛擬機器未成功建立,刪除設定檔之後可以解決。以下說明造成錯誤的原因以及解決方法。

This article describes the problem of Proxmox VE Cluster: “'vzctl destroy [VMID]’ failed: exit code 41”. A proposed solution to the problem is deleting the configuration file of the VMID. Following are the problem description and solutions.


問題狀況 / Problem Description

2014-08-08_083402

有些虛擬機器呈現灰色未開機的狀態。這些機器無法啟動,也無法備份、遷移,甚至刪除。整臺機器彷彿被鎖定一樣無法操作。

以虛擬機器ID (VMID) 100為例,刪除動作會失敗,而且出現以下錯誤訊息:

stat(/var/lib/vz/root/100): No such file or directory

Container is currently mounted (umount first)

TASK ERROR: command ‘vzctl destory 100’ failed: exit code 41

問題原因 / Causes of Problem

2014-08-08_083309

造成這個問題的原因在於虛擬機器未完成建立(create)或從備份檔案重建(restore),虛擬機器應該要有的檔案位置尚未建立好相對應的檔案,導致刪除等任何動作的失敗。

通常遇到的情況是:

  • 由於虛擬應用範本或是備份檔案過大,導致建置虛擬時間過長。
  • 建置過程途中被使用者按下「Stop」停止建置命令,或是因為斷電、斷網等任何異常,讓虛擬機器尚未建立完成。
  • 因此該虛擬機器就不能運作了。

手動解決方法 / Manual Solution

要移除無法運作的虛擬機器,做法是刪除該虛擬機器的設定檔案。以VMID為100的虛擬機器為例,刪除指令為:

rm -f /etc/pve/nodes/*/*/100.conf

我做成腳本pve-destroy_vm.sh,請下載、加入執行權限,然後可以這樣做:

./pve-destroy_vm.sh 100

這樣就能夠強制刪除虛擬機器了。

有待找尋自動解決方法 / Need for Automatic Solution

上述的手動解決方案必須每次都要登入伺服器操作,不能同一在網頁操作上進行,比較不方便。

因此自動解決方法應該是去修改網頁端刪除的指令。如果取得了exit code 41,那就用上述的方法強制刪除。

只是Proxmox VE的網頁比較麻煩,他是用Perl寫成,而且前端使用了ext js這個鷹架,整體來說非常複雜。這部分仍有待研究。

(more...)

修復Proxmox VE:集叢未啟動 / Fix Proxmox VE: Cluster Not Ready

布丁布丁吃布丁

修復Proxmox VE:集叢未啟動 / Fix Proxmox VE: Cluster Not Ready

2014-08-08_013834

本篇是修復Proxmox VE的集叢(Cluster)中遇到「TASK ERROR: cluster not ready – no quorum?」的錯誤。這個錯誤是因為集叢未正常啟動,以下說明造成錯誤的原因以及解決方法。

This article describes the problem of Proxmox VE Cluster: “TASK ERROR: cluster not ready – no quorum?”. A proposed solution to the problem is executing “pvecm expected 1”. Following are the problem description and solutions.


問題狀況 / Problem Description

2014-08-08_013834

在Proxmox VE是在集叢的狀況下,在節點(Node)操作的時候進行虛擬機器的建立(create)、刪除(remove)、備份(backup)、遷移(migrate)時,有時候會出現以下錯誤訊息:

TASK ERROR: cluster not ready – no quorum?

在這個狀態底下,將不能對虛擬機器進行任何操作。而虛擬機器本身則可以繼續運作,不會中斷。

你也可以用pvecm status指令來查詢看看現在的狀態:

2014-08-08_023200 - 複製

請Proxmox VE節點伺服器上執行以下指令

pvecm status

Proxmox VE會顯示集叢現在的狀態,例如:

Version: 6.2.0

Config Version: 3

Cluster Name: dlll-cias

Cluster Id: 52033

Cluster Member: Yes

Cluster Generation: 144

Membership state: Cluster-Member

Nodes: 1

Expected votes: 3

Total votes: 1

Node votes: 1

Quorum: 2 Activity blocked

Flag:

Ports Bound: 0

Node name: proxmox-02

Node ID: 2

Multicast addresses: 239.192.203.13

 

其中你可以注意到「Quorum: 2 Activity blocked」這段訊息,表示你的集叢是在鎖定的狀態。

問題原因 / Causes of Problem

發生這個問題是因為Proxmox VE的集叢沒有正常運作。quorum是集叢中重要的一個服務元件,如果集叢有任何設定錯誤,都會導致quorum無法正常啟動。因此遇到這個問題時,並不是去啟動quorum,而是要先解決造成集叢錯誤的原因。

2014-08-06_222659

造成集叢錯誤的原因中,最常見的就是節點之間網路的斷線,集叢中節點數量低於2時,集叢就會被鎖住。如果集叢中有pmox1、pmox2、pmox3三臺伺服器,然後把pmox3網路中斷。接著過不久之後,pmox3就會陷入「no quorum」的狀態。這是因為Proxmox VE Cluster預設期待集叢中必須要有2個節點(Node)以上,可是因為網路斷線的緣故,pmox3只能偵測得到一臺Node,這時候集叢就會把pmox3鎖住。因此才會出現「Quorum: 2 Activity blocked」這個狀態。

手動解決方法 / Manual Solution

解決方法是暫時把集叢的期待數量從2降低為1。做法如下:

pvecm expected 1

這個步驟會讓集叢改為只期待1個節點正常運作。

service pve-cluster restart

這個動作會重新載入集叢設定,而虛擬機器不受影響。

2014-08-08_020158

再使用pvecm status查詢時,會發現Quorum已經變成1,而Activity blocked狀態已經解除。接著就能夠進行虛擬機器的新增、刪除、備份、遷移。而當該節點與集叢正常運作時,節點設定不需要任何修改。

自動解決方法 / Automatic Solution

為了避免網路異常時集叢每次都會把自己鎖定,我們可以每天定時去檢查集叢的狀態。如果陷入「Activity blocked」的時候,就自動進行解除的動作。

  1. 建立/root/pulipuli_scripts目錄:
    mkdir /root/pulipuli_scripts
  2. 請把cluster_is_activity_blocked.shcluster_disable_activity_blocked.sh兩個檔案下載到該目錄底下:
    wget http://goo.gl/6gyDnH -O /root/pulipuli_scripts/cluster_is_activity_blocked.sh
    wget http://goo.gl/r37ySO -O /root/pulipuli_scripts/cluster_activity_unblocked.sh
  3. 新增可執行權限:
    chmod +x /root/pulipuli_scripts/*.sh
  4. 加入crontab排程
    crontab -e
    新增以下設定:
    # 定期解除Proxmox VE Cluster鎖定狀態
    0   3  *  *  * /root/pulipuli_scripts/cluster_activity_unblocked.sh

這樣子每天凌晨3點的時候,Proxmox VE都會檢查集叢,然後嘗試解除被鎖定的狀態。

(more...)

自訂小狼毫的注音字典 / How to Custom Weasel’s Bopomofo Dictionary

布丁布丁吃布丁

自訂小狼毫的注音字典 / How to Custom Weasel’s Bopomofo Dictionary

2014-08-07_011259

小狼毫是基於中州韻輸入法引擎(rimeime)所發展的智能輸入法Windows版本,裡面也包含比微軟新注音更好用的「注音·臺灣正體」輸入法。為了讓小狼毫更加順手,做到「我手打我口」,本文教你如何自訂自己的注音字典。

Weael IME is the Windows version of RIMEIME which is better than Microsoft New Phonetic IME. This article describes how to add a Pingyi custom dictionary to your Weael IME.


小狼毫的注音字典 / Weasel’s Bopomofo Dictionary

小狼毫的注音字典是根據萌典來建置,但是建置注音以讀音為主(從文字念出的聲音),而缺乏我們日常口語習慣使用的語音。舉例來說,「」這個字只有著錄讀音「ㄅㄧㄢˋ」(bian4),卻沒有著錄語音「ㄆㄧㄢˋ」(pian4)。因此在打字時會覺得很不習慣,怎麼平常唸的字都打不出來。

雖然事實上是因為自己讀中文字的方式一開始就讀錯了,是個小學生都不如的錯誤國學程度,但我還是希望一個輸入法能夠照自己的習慣來運作,因此嘗試去找尋看看有沒有自訂注音字典的可能性。

最後還是由中州韻輸入法的作者佛振(lotem)為我解惑,所以我想也趁這個機會,把這個方法整理一下,供大家參考。


Part 1. 加入自訂字典配置 / Setup Custion Dictionary

Step 1-1. 開啟用戶文件夾 / Open User Data Directory

2014-08-07_012824 - 用戶文件夾

首先,先打開你的【小狼毫】用戶文件夾。這個資料夾位置會在你安裝小狼毫時設定。你也可以從「開始 > 所有程式 > 小狼毫輸入法 > 【小狼毫】用戶文件夾」找到這個連接。

Step 1-2. 下載自訂字典檔案 / Download Custon Dictionary

2014-08-07_013042

接著我們要在用戶文件夾中存放自訂字典。以下兩個連結請直接按右鍵另存新檔,存到這個資料夾當中:

Step 1-3. 重新部屬小狼毫 / Reconfiguration

2014-08-07_012824 - 重新佈署3

修改小狼毫設定都必須要經過重新部屬才能生效。

重新部屬的位置在「開始 > 所有程式 > 小狼毫輸入法 > 【小狼毫】重新部屬」。點下去之後,稍等個30秒,再切換回小狼毫輸入法,這樣子自訂字典就生效了。

2014-08-07_105157

由於我已經在上面那個自訂字典裡面加入「遍」的語音「ㄆㄧㄢˋ」(pian4),這時候你打「ㄆㄧㄢˋ」應該就會出現「遍」這個字。這樣就表示安裝成功了。


Part 2. 修改自訂字典 / Edit Custom Dictionary

2014-08-04_234031 - 複製

接著是要教大家怎麼自訂使用的注音。

Step 2-1. 用萌典查詢漢語拼音 / Find Pingyi on Moe Dictionary

小狼毫裡面著錄注音的方式,並不是直接使用注音符號的「ㄅㄆㄇㄈ」,而是使用英文拼音來著錄。舉例來說,要新增「遍」的語音「ㄆㄧㄢˋ」,必須先查到「ㄆㄧㄢˋ」的漢語拼音為「pian2」。

2014-08-07_110135

利用萌典,我們可以直接查到「」語音的漢語拼音。只是萌典裡面顯示的漢語拼音是「piàn」(a有加重音),它是以「à」來表示注音符號的聲韻。這時候我們直接取其英文字「pian」(原始的a),然後後面加上聲調四聲「ˋ」的數字「4」,最後完成為「pian4」。聲調與數字的對照請見下表:

名稱 陰平聲 陽平聲 上聲 去聲 輕聲
順序 一聲 二聲 三聲 四聲
符號 不標 ˊ ˇ ˋ ˙
數字 1 2 3 4 5

總結以上做法,摘要順序如下:

  1. 目標設定「遍」的語音「ㄆㄧㄢˋ」 。
  2. 上萌典找到「」的漢語拼音為「piàn」 。
  3. 取其英文字「pian」,最後搭配聲調四聲的數字「4」,組合成「pian4」。

「pian4」就是小狼毫中能夠接受的漢語拼音了。

Step 2-2. 加入到自訂字典中 / Add Pingyi to Custom Dictionary

接著開啟剛剛下載的自訂字典檔案「terra_pinyin.mine.dict.yaml」。

在「# 自定義的字詞」後面加入我們要自訂的設定。每一行單獨一個設定。文字與漢語拼音的對應中間以「tab」隔開。如果是兩個字以上的組合,漢語拼音之間要有一格空格。

格式如下:

[中文](tab)[漢語拼音]

因此設定「遍」的漢語拼音為「pian4」時,設定如下:

如果是兩個中文字「普遍」的漢語拼音為「pu3 pian4」,設定如下:

 

2014-08-07_111742

加入之後,設定檔如上圖,完成之後就儲存吧。

Step 2-3. 重新部屬小狼毫 / Reconfiguration

2014-08-07_012824 - 重新佈署3

一樣的,我們修改設定檔之後,需要重新部屬小狼毫才會生效。不厭其煩地再說一次,重新部屬的位置在「開始 > 所有程式 > 小狼毫輸入法 > 【小狼毫】重新部屬」。點下去之後要等個30秒,然後測試看看剛剛新增的設定能不能打出來吧。


小結:高度自訂的輸入法 / Conclusion: Highly Customizable IME

知道這個方法之後,小狼毫逐漸越用越順手了。

我後來又加入了幾個設定:

  • …    ou ou ou
    打…三個點就會出現一個刪節號標點符號
  • ──    er er
    打橫線兩次就會出現破折號

因此我就可以在打字時同時輸入——跟…,非常方便。

2014-08-07_113512

此外,小狼毫也可以自訂標點符號的輸出位置,細節是要修改「bopomofo_tw.schema.yaml」(雖然教學上似乎是建議修改「bopomofo_tw.custom.yaml」)。

2014-08-07_113547

我把注音符號加入到「`」這個按鍵上,因此可以按`打出ㄅㄆㄇㄈ。

未來希望能夠把這些標點符號跟漢語拼音直接整合,例如打「星」(ㄒㄧㄥ,xīng,xing1)就可以直接輸入「☆」。這個是日文IME輸入法的一個特色,輸入「ほし」出現「☆」,我覺得還蠻好用的。

不知道大家是怎麼自訂你的小狼毫輸入法呢?歡迎一起來討論喔!

(more...)