:::

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...)

ownCloud修改上傳檔案大小上限 / Change ownCloud Upload File Max Size

布丁布丁吃布丁

ownCloud修改上傳檔案大小上限 / Change ownCloud Upload File Max Size

2014-08-05_200317

ownCloud預設上傳單一檔案的檔案大小限制只有5GB,如果要上傳大型檔案,就必須修改ownCloud的檔案上傳限制。以下以TurnKey Linux – ownCloud為例,教你如何修改ownCloud單一檔案上傳上限。

In ownCloud’s default configuration, the limit of upload file size is only 5GB. If you want to upload larger file, you can modify the limit of upload file size. This article describe how to modify the configuration in TurnKey Linux ownCloud.


Step 1. 修改.htaccess / Modify .htaccess

2014-06-10_11-28-31

.htaccess的路徑如下:

/var/www/owncloud/.htaccess

如果要用vim編輯器修改的話,則指令為:

vim /var/www/owncloud/.htaccess

Step 2. 調整upload_max_filesize參數 / Modify upload_max_filesize Parameter

2. upload_max_filesize

.htaccess的設定中,我們要調整的參數包括了:

php_value upload_max_filesize 5130M

php_value post_max_size 5130M

php_value memory_limit 5120M

 

如果要調整上傳上限為50GB,那就為這些參數後面多加一個0:

php_value upload_max_filesize 51300M

php_value post_max_size 51300M

php_value memory_limit 51200M

 

Step 3. 完成修改 / Complete

3. 上限提昇

再回到ownCloud網頁,重新讀取之後,你可以發現檔案上傳上限提高為50GB了。


小結:瀏覽器有上傳限制 / Conclusion: The Upload Limit of Browser

調整了上傳上限之後就能夠上傳大檔案了嗎?這個答案是否定的。

根據ownCloud的Dealing with Big File Uploads這篇的介紹,檔案大小會受限於作業系統與上傳的瀏覽器。包括:

  • 伺服器為32位元的作業系統:單一檔案只能在2GB以下
  • 伺服器的ownCloud為4.5以前:單一檔案只能在2GB以下
  • 使用IE6~IE8上傳:單一檔案:單一檔案只能在2GB以下
  • 使用IE9~IE10上傳:單一檔案:單一檔案只能在4GB以下

雖然在此只提到了IE瀏覽器,但是對於Firefox跟Chrome來說,應該也一樣難以上傳4GB的檔案。畢竟瀏覽器本來就不是以上傳大型檔案為主,這部分就難以勉強了。

如果要用ownCloud上傳大型檔案的話,可以參考我另一篇的介紹「ownCloud結合SFTP規劃」來以SFTP上傳大型檔案,這也許是比較好的方案。

(more...)

DLLL-CIAS介紹 / DLLL-CIAS Introduction

DLLL-CIAS介紹 / DLLL-CIAS Introduction

image

這篇發佈我在2014年6月底的「雲端科技與圖書館行動服務研習班」中課程「雲端平台基礎設施建置實務──DLLL-CIAS介紹」的課程投影片。

This article is the slide of my course “Cloud Technology and Library Mobile Service Workshop” in July, 2014. Finally is my thought of this workshop.


DLLL-CIAS是什麼? / What is DLLL-CIAS

DLLL-CIAS是政大圖檔所數位圖書館與數位學習實驗室中我所開發的開放原始碼雲端平台方案。主要目的是希望能夠讓經費不多的中小型單位也能夠用現有伺服器資源架設好用的IaaS雲端平台。其他介紹請看「DLLL-CIAS雲端平台架設與使用專題目錄」。

課程投影片 / Course Slide

Google Drive的原始版本投影片 / Slide Original Version on Google Drive

另外值得一提的是,這篇投影片是一開始是以Google Drive投影片製作。

image

雖然Google Drive投影片製作起來並不如Power Point一般的精緻(另一方面也是因為這個版本是供列印用的,所以特別以高對比黑白相間的範本製作),但是Google Drive投影片製作功能卻是相當足夠使用。更重要的是,Google Drive的協同製作跟註解(comment)完全贏過Windows的OneDrive。

這學期我大量使用Google Drive的協同編輯功能,像是跟人一起編修論文計劃書、規劃投影片內容,這份投影片也是從Google Drive開啟編輯起。我先規劃投影片大綱,記錄每一張投影片欲講述的內容,以及相關參考資料的來源。然後各張投影片的內容則是跟實驗室各位助理一起填寫資料,接著我再重整資料內容。當投影片內容確定之後,最後我再下載成Power Point檔案作進一步的排版美化。

image

最後排版而成的版面就是這樣子了。

Google Drive與Power Point轉換編輯注意事項 / Difference Between Google Drive and Power Point

使用Google Drive製作投影片跟Power Point製作投影片有幾個重點差異需要注意:

  • Power Point匯入到Google Drive時樣式容易跑掉,但相反的從Google Drive匯入到Power Point問題卻不大。
  • Google Drive不支援投影片頁碼、不支援陰影、不支援連接線的折線。這幾種功能都是投影片常用的重要特色,請自行斟酌。
  • 請善加利用「投影片母片」(Power Point用詞)、「主投影片」(Google Drive用詞),可以保持投影片格式一致。

有機會我再詳細聊一下Google Drive協同編輯的心得吧。


結語:終於把研習班課程完成了 / Conclusion: The Experience of Workshop

這份投影片發佈之後,研習班的工作總算是告一段落了。

這次研習班跟其他研習班最大的差異,就是在於有很多實作的內容,而不是一直坐著聽老師授課。這次研習班主要兩個實作課程,一個是KALS合作標註閱讀學習,另一個則是這個DLLL-CIAS實作,這兩個實作都讓我煞費苦心。DLLL-CIAS要架設許多虛擬機器伺服器這點顯而易見,而KALS要弄到讓學員能夠在系統上順利操作,這背後其實也修改了許多細節。之前去IMLF 2014時就已經拖延了許多工作,然後之後投入在這研習班上,課程的部分就有點顧不住了,真是對不起老師啊。

雖然期末與這研習班整個像是災難一樣鋪天蓋地而來,但最後總算能夠過去。上課過程中有些兵荒馬亂,感謝各位助理大力相挺,沒有你們我一個人真的完成不了這些東西,這也包括了之前寫的幾篇DLLL-CIAS的細部操作文章

研習班上課過程中,我本來以為這麼硬的內容,應該會讓大家聽到一片瞌睡。結果時候聽完還蠻多人跑來跟我比較他們圖書館使用的VMware方案之間的差異,也有平時不碰技術的人跟我表達這堂課讓他獲益,有些人甚至想要在自己家裡架起這套方案。即使是客套話,我也覺得很開心。

希望下次能夠吸取這次的經驗,然後再帶給大家更好的課程內容吧。

(more...)