:::

Zotero引用文獻樣式之中文APA

Zotero引用文獻樣式之中文APA

image

Zotero是一個依賴Firefox的文獻書目管理套件,用來協助管理文獻、快速輸出學術文獻使用的引用樣式。我在之前做過介紹Zotero功能的投影片,而網路上也可以找到很多Zotero的相關介紹,而我個人也是用Zotero來寫作論文、管理參考文獻。

比較遺憾的是,Zotero基本上是以英語語系國家為主,因此引用文獻樣式中大多也都是英文為主的樣式。儘管Zotero有提供Zotero Style Repository並有非常多種的引用文獻樣式,但卻仍沒有看到專屬於中文,特別是我自己在使用的中文APA樣式。

值得慶幸的是,Zotero允許使用者自行設計csL(Citation Style Language)的樣式檔,因此我參考了張保隆與謝寶煖的「學術論文寫作:APA規範」與hiroshi yui建立的CSL,修改出一份「American Psychological Association in Pulipuli」來使用。經過數篇文章的測試與修改之後,目前此版本已經算是勉強堪用,但Zotero對於資料處理仍有極限,因此仍有需要手動修改的地方。

這一篇我將要介紹在Zotero中安裝「American Psychological Association in Pulipuli」(以下簡稱中文APA)的方法,然後補充仍須手動修改的細節,供使用Zotero的中文使用者利用。


Zotero與中文APA安裝

Firefox安裝

Zotero是基於Firefox瀏覽器的一個套件,因此在使用之前必須先安裝Firefox。雖然現在Firefox 4已經出來了,但習慣上我仍以Firefox 3為主,而且我偏好喜愛可攜版的Firefox Portable。

Zotero安裝

Zotero是以套件的方式安裝在Firefox中。

 

此外,如果要整合到OpenOfficeLibreOffice或Microsoft Word的話,仍需要安裝整合增益集。增益集非常依賴Zotero套件的版本,要更新Zotero的時候,請務必跟增益集一起更新喔。

以下是適用於Zotero 2.1的版本

中文APA安裝

最後是安裝中文APA,首先先下載這個檔案:

image

然後開啟Firefox,把這個檔案拖曳到Firefox視窗中,如上圖。

image

Firefox會問你是否要更新現有樣式,按下確定。

image

這樣就安裝完囉,你以後就可以在選擇引用文獻樣式時選用「American Psychological Association in Pulipuli」囉。以下我會再更詳細地介紹使用方法。


中文APA的使用

儘管Zotero在管理書目上已經幫了很大的忙,但實際上在使用時仍有許多細節需要調整。Zotero的操作基本上分成三大步驟:「輸入書目」、「調整書目」、「輸出書目」,而由於輸出書目的成果仍有需要手工調整的地方,所以我加上第四個步驟「輸出後書目調整」。以下就這四大步驟,一一介紹使用中文APA的細節。

步驟1. 輸入書目

Zotero的特色是可以從各個網站輸入文獻的書目。我找期刊文獻時常用Google Scholar(學術搜尋),找書本書目時則是用OCLC的WorldCat.org

由於Google Scholar實在是太好用,還能夠結合政大圖書館的OPAC,所以幾乎都能用Google Scholar來找到要引用的文獻資料。以下我以Google Scholar找尋「專題式學習小組溝通行為與成員角色之研究」這一篇期刊文章為例子,說明Zotero要怎麼輸入書目。

1. 開啟Zotero面板,選擇「收集」

image

安裝好Zotero之後,就可以在Firefox的狀態列下看到「zotero」的圖示,如上圖所示。點開之後就可以打開Zotero面板。

image

Zotero的書目管理都是透過這個面板來完成,例如語系切換、編輯書目資料、管理「收集」等等。

其中,我會使用「收集」(collection)功能來管理書目資料,他的功能跟「資料夾」、「目錄」的概念差不多。例如我在寫論文時,會將書目資料依章節存入「Chapter 1 緒論」、「Chapter 2 文獻探討」等不同的收集。你可以點選面板左上角的「黃色資料夾與+號圖示」來使用「新增收集」的功能,如上圖所示。

此例中,我建立了一個[TEMP]收集。待會就是將書目存入這個收集中。

2. 開啟Google Scholar搜尋結果

image

在安裝好Zotero,打開Google Scholar並搜尋「專題式學習小組溝通行為與成員角色之研究」之後,就會出現上面的網頁。請先確認一下搜尋結果是否出現了要找的文章,此例中我們要找的文章就是第一個結果。

image

網址列右方出現了「黃色資料夾」的圖示,這是Zotero的輸入功能按鈕,請點下此按鈕。

image

接著Zotero會請你選取要輸入的項目,我們就勾選要加入的「專題式學習小組溝通行為與成員角色之研究」吧。

image

然後就能看到Zotero的[TEMP]收集中出現該篇文章了。

步驟2. 調整書目

image

由於Zotero跟Google Scholar是英文語系國家為主的系統,在中文上有些地方需要調整。以下介紹的書目資料調整設定都是在Zotero面板中的「資訊」版面中進行。

1. 英文首字字母大寫規則(sentence case)

雖然這邊是在講中文APA,但是偶爾也會遇到英文題名、作者、期刊等資料的情況,所以英文首字字母大寫、其餘均小寫的規則仍是要注意的。

Zotero雖然有簡單的大小寫規則判斷,但它卻沒有辦法幫你判斷「專有名詞」。所以中文APA的設定是以輸出書目資料中的原始樣貌為主。我列出常見需要調整的部份,其餘細節請參考「學術論文寫作:APA規範」一書吧。

  • 標題、副標題、作者:首字字母大寫、其於均小寫。但是標題跟副標題中的專有名詞則依慣例首字字母大寫。
  • 期刊刊名:應列全稱,英文刊名每個字的第一個字母均大寫(冠詞、介係詞除外)
2. 統一書名副標題的分隔副號「:」

image

Zotero並沒有區分標題中的副標題。在圖書館的編目規則中,標題與副標題是以冒號作為區隔。英文的區隔是用半型冒號「:」並左右各空一格,中文則是用全形冒號「:」而左右不留空格。

常常會有人用橫線「」來分隔副標題,但圖書館編目規則會將之改成冒號,「學術論文寫作:APA規範」一書也是以冒號「:」來處理。

再提醒一下,如果題名是英文,標題是首字的第一個字母大寫,其餘均小寫。副標題也是第一個字母大寫,其餘均小寫。但是專有名詞則依慣例首字字母大寫。

3. 中文作者轉成單一欄位

image

雖然中文作者也是有姓名之分,但是在書目輸出時一般都是連名帶姓一起顯示,所以此處不應將中文作者名字區分成姓名雙欄,而作者名字應該保持在同一欄位。

image

Zotero在作者欄位提供了「兩個欄位」與「單一欄位」的格式。兩個欄位是預設值,可以填入姓跟名,適合填入英文作者;一個欄位則沒有姓名之分,適合機構或中文作者的全名。在作者欄位後面有個小方塊可以做「切換成單一欄位」或「切換成兩個欄位」的功能。

image

修正之後的作者姓名資料如上圖所示。

對了,團體作者應該用全稱,例如:「國立政治大學」,而非「政大」。

4. 「論文」的類型與大學

image

在撰寫論文時,同學們很常引用國內博碩士論文的資料。Google Scholar雖然找得到博碩士論文,但是匯入Zotero的格式並不正確,請務必手動調整。

  • 項目類型:改成「論文」
  • 類型:依照博士論文、碩士論文以及出版或位出版而有不同。常見的是「未出版之碩士論文」
  • 大學:要寫上大學全名以及系所全名
  • 所在地:大學的所在地。

未來有機會的話,我會考慮寫個博碩士論文網的Zotero解析匯入器,或是調整Google Scholar的匯入器功能看看吧。

5. 書頁的分隔線轉成半型的「-」

image

Google Scholar在輸出書頁時,書頁中間辨識起始頁數與最後頁數的分隔線是以全型的「–」來表示,上圖的例子中就是「137–164」。但是實際上應該仍是以半型的「-」表示即可。所以這部份也是要手動修改成「137-164」。

image

直接點選該欄位就可以進行修改了。

6. 刪除版本「初版」

image

APA中,初版是不需要註明的。但是Zotero並無法區別什麼是「初版」,因此輸出時會直接顯示。

如果匯入Zotero時版本是「初版」,我建議將此資料刪除。僅有二版或特訂版本才需要註明。

7. 加上語言「zh_TW」

image

這是一個區分中英參考書目的小技巧。你可以在「語言」欄位中加入表示正體中文的「zh_TW」,未來在輸出書目時,就能夠很明確的知道他到底是屬於中文參考文獻還是英文參考文獻。

語言欄位的值我是參考ISO 639ISO 3166所組成,前兩或三個字母是語言代碼(維基百科列表),後兩或三個字母是國家和地區代碼(完整列表)。

常用的有臺灣使用的正體中文「zh_TW」跟中國大陸使用的簡體中文「zh_CN」。

對於Zotero解析器不足的看法

Zotero雖然可以用解析器簡單地從資料庫中匯入書目資料,但如上面所述,通常還是需要經過許多加工,書目資料看起來才比較完整。

研究生2.0認為沒有辦法直接使用漂亮的書目資料實在是Zotero的一大缺點,但我個人則是覺得這有點強人所難。畢竟每個人撰寫文章的格式本來就很難統一,短期內應該還沒辦法解決這問題。

因此在此步驟中我提出了很多需要修正的地方,其實也只要修正這一次,接下來輸出之後幾乎就可以直接使用。請繼續往下看看到底怎麼操作吧。

步驟3. 輸出書目

Zotero輸出書目的方式主要有兩種,在撰寫文章時會用整合到編輯器的方式,而臨時使用時也可以直接從Zotero輸出書目資料。以下我介紹後者的方法。

image

在Zotero面板中,在要匯出的書目或「收集」按下右鍵,選擇「從選取的項目來建立參考書目…」。

image

建立參考書目對話視窗中,選擇「American Psychological Association in Pulipuli」,輸出格式則是先「複製到剪貼簿」。

3. 貼上到文件中

image

接著在Microsoft Word之類的文件編輯器中使用「貼上」,你就可以看到輸出的書目了。

許喬雯、岳修平、林維真(2010)。專題式學習小組溝通行為與成員角色之研究。圖書資訊學刊8(1),137-164。

以HTML輸出的樣式如上,其實還有行距跟凸排的樣式,不過這邊就看不到了。

步驟4. 輸出後書目調整

「專題式學習小組溝通行為與成員角色之研究」這個項目剛好是比較沒有問題的,但是有些特殊情況下輸出的書目就需要調整。大部分的修正都可以用編輯器中的「尋找與取代」功能來進行字串的替換。

1. 7位以上多作者的「等」

洪儷瑜、陳淑麗、王瓊珠、方金雅、陳美芳、張郁雯、等(2007)。中文閱讀診斷工具臨床驗證性研究。教育部委託專案報告

這是Zotero以中文APA預設輸出的樣式,但是其中「、等」是錯誤的,應該修正為「等」。

洪儷瑜、陳淑麗、王瓊珠、方金雅、陳美芳、張郁雯等(2007)。中文閱讀診斷工具臨床驗證性研究。教育部委託專案報告

修正結果如上所示。

如有發現其他需要修正的地方,請大家踴躍告訴我吧。能從Zotero修正的我就用Zotero修正,不能的話我就寫在這邊做個記錄。


中文APA輸出展示

最後我用Zotero的中文APA列出幾種常見的中文書目資料作為展示,讓大家看看到底Zotero中文APA輸出的格式會是如何吧。只是在此看不出「行距」、「首行凸排」的樣式,但至少標點符號跟斜體都還算正確囉。

以下各別列出「正文中的引證」與「參考文獻」兩種不同的輸出格式,資料都有按照上述方法調整過,不一定是照著原始資料庫輸入的格式。

期刊的文章

(褚麗娟、黃剛銘、蔡坤哲,2004)

褚麗娟、黃剛銘、蔡坤哲(2004)。網路虛擬社群激勵機制之研究。出版與管理研究1(1),61-78。

會議論文(研討會論文)

(王瓊珠、洪儷瑜、陳秀芬,2007)

王瓊珠、洪儷瑜、陳秀芬(2007)。低識字能力學生識字量發展之研究:馬太效應之可能表現。特殊教育研究學刊32(3),1-16。

(博碩士)論文

(陳勇汀,2011)

陳勇汀(2011,3月)。合作式閱讀標註之知識萃取機制研究。未出版之碩士論文,臺北市:國立政治大學圖書資訊與檔案學研究所。

書籍

(Eric Freeman、Elisabeth Freeman,2005)

Freeman, Eric、Freeman, Elisabeth(2005)。深入淺出設計模式(蘇秉豐編,蔡學鏞譯)。臺北市:歐萊禮。

這一個例子是有編輯跟翻譯者的狀況。至於分隔英文作者名稱是要用頓號「、」還是英文的comma「, 」似乎尚未有定論,在此是以頓號「、」為主。

報告

(洪儷瑜 等人,2007)

洪儷瑜、陳淑麗、王瓊珠、方金雅、陳美芳、張郁雯、等(2007)。中文閱讀診斷工具臨床驗證性研究。教育部委託專案報告

必須要注意的是,這是一個作者人數為7人的書目。因此就如上面所說的,請手動將正文引證的「 等」改成「等」、參考文獻中的「、等」改成「等」。修正之後如下:

(洪儷瑜等,2007)

洪儷瑜、陳淑麗、王瓊珠、方金雅、陳美芳、張郁雯等(2007)。中文閱讀診斷工具臨床驗證性研究。教育部委託專案報告

網頁

第一次引用(林從一、羅竹芳、黃俊儒、陳志銘,2008)

第二次引用(林從一 等人,2008)

林從一、羅竹芳、黃俊儒、陳志銘(2008)。全國通識課程資料庫。全國通識課程資料庫。上網日期:2008年12月17日,檢自:http://get.nccu.edu.tw/getcdb/

這是一個作者為4人的例子。在中文APA的正文引證中,3到5人的書目,第一次引用時顯示全名,而第二次引用時只需要寫出第一位作者即可。因此上例中我列了兩次正文中的引用,你也會發現到又出現「 等人」的字樣,記得手動修正一下。


修改CSL的心得

中文APA是一個以XML寫成的Citation Style Language (CSL)檔案,如果了解CSL語法的話,大致上你也可以改出你想要的輸出格式。而Simple Style Generator這網站更是把CSL的設定以簡單易懂的HTML表單來呈現,即使你不懂CSL語法也能夠輕易地寫出你想要的規格。

但是CSL並不是一個很完整的程式語言,因此他的限制也非常地多。最麻煩的就是沒有字串的比對、搜尋、替代功能,頂多只能判斷資料的有無。如果Zotero能夠用比對字串的話,就可以實作中英文相容的文獻格式。如果能夠搜尋與取代字串的話,副標題的分隔也就不需要手動修改。

此外還有一些微妙的限制,像是「 等」前面一定會有空格或分隔符號「、」。我研究了老半天還是找不到修改的方法,所以只能在輸出之後手動修改。

而且Zotero許多欄位都無法用於CSL中,特別是判斷語系用的「語言」欄位,這也造成中英文參考書目在處理上的困難。我會在之後繼續討論這個問題的解決方案。

結語

儘管Zotero在解析器與引用文獻樣式輸出上仍有許多不盡人意的地方,但作為一個免費且開放的書目管理工具,Zotero仍然是十分優秀。儘管我的瀏覽器已經都已Chrome為主,但就是因為有Zotero的緣故,所以我電腦上還是常駐著Firefox。

這一份CSL檔是我在寫論文時開始建構,然後再之後二篇研究計畫中不斷地改進,到寫這篇blog時仍花了一些時間來調整,最後結果就是這樣了。應該還是會有許多錯誤,希望好心人士可以將發現的錯誤回報在下面的留言,讓我們一起來改進中文APA的樣式吧。 (more...)

Zotero語系切換套件:Zotero Bibliography Locale Switcher

Zotero語系切換套件:Zotero Bibliography Locale Switcher

image

Zotero預設安裝時是使用Firefox的語系,如果你是用中文,則他會用中文語系。如果你使用的引用文獻樣式並不是為中文設計的,那麼輸出的格式會非常奇怪。因此我們要Zotero的時候,要根據文獻的格式來調整語系。

about:config的調整方法

研究生2.0的「Zotero文獻格式改成英文」介紹了如何設定Firefox的about:config參數來修改Zotero的語系,但現在有更簡單的套件可以使用:Zotero Bibliography Locale Switcher

Zotero Bibliography Locale Switcher用法

安裝Zotero Bibliography Locale Switcher之後,就能夠從Zotero的設定介面中來調整。

image

請點開這個齒輪。

image

接著就可以從列表中的「Language」選單中,再選擇要使用的語系。因為我安裝中文版的Firefox,所以語系只有中文跟英文。

image

套件會提示你重新啟動Firefox才會生效。

image

你可以搭配QuickRestart套件,就能夠在Firefox的「檔案」選單中使用「重新啟動Firefox」囉。

(more...)

Windows一鍵執行SSH指令:AutoIT、Pietty搭配使用

Windows一鍵執行SSH指令:AutoIT、Pietty搭配使用

image

Linux的命令列畫面讓很多人惟恐避之不及,這對有許多指令需要依賴SSH連線、並在命令列輸入才能執行的DSpace來說,無疑是一大門檻。在此我提出一種可以做到「一鍵指令」的方案:利用AutoIt自動執行機器人,透過PieTTY的命令列模式,用ini設定檔來設定連線參數,來執行捷徑所指定的指令的作法。

這種作法對資安來說非常不理想,僅是一個簡便利用的應急方案而已。


一鍵指令的背景與目的

我現在要做的事情是:

  1. 在Windows的環境下
  2. 透過SSH連線到Linux伺服器
  3. 進行登入動作(以及金鑰確認)
  4. 然後執行一個指令。

而這個方案的目的是將使用者的操作簡化到極限,我希望使用者能夠以滑鼠執行一個檔案,就自動做完上述的所有動作。

一鍵指令方案概述

簡單來說,這個方案的作法是:

  1. 利用PieTTY的命令列模式來輸入登入資訊與要執行的指令
  2. 以ini檔案儲存登入資訊
  3. 在Linux伺服器端配置參數與接收命令的sh腳本
  4. 利用AutoIt來處理連線的細節
  5. 利用Windows的捷徑與捷徑後輸入的參數,將參數輸入給AutoIt

Linux環境配置

要做到這些事情,需要Linux伺服器端與Windows使用者端的環境一起配置才行。這邊先敘述Linux的部份,大致上是要做以下三件事情:

  • 建立帳號、密碼
  • 開啟ssh連線
  • 建立ssh-cmd.sh腳本

Linux伺服器建立帳號、密碼、開啟ssh連線等基本操作請參考鳥哥的Linux思房菜。在此最重要的是要配置接收來自客戶端指令的執行腳本「ssh-cmd.sh」。

在本篇的例子中,我以普通使用者「dspace」跟管理者「root」作為帳號、「password」作為該帳號的密碼來說明。

ssh-cmd.sh:執行指令腳本

因為帳號是使用「dspace」,所以我在「/home/dspace/ssh-cmd.sh」(SkyDrive備份)這個位置建立起腳本。腳本的內容如下:

#!/bin/bash
# Program:
#       Excute command and pause at finish.
## History:
## 2009/11/12    Pudding   First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export JAVA_HOME=/usr/java/jdk1.6.0_06
export PATH
export LC_ALL=en_US
export JAVA_OPTS="-Xmx128M -Xms64M -Dfile.encoding=UTF-8"

ANT_HOME=/opt/apache-ant-1.7.0
JAVA_HOME=/usr/java/jdk1.6.0_06
CATALINA_HOME=/opt/apache-tomcat-6.0.16
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ANT_HOME/bin:$PATH:/opt/apache-maven-2.0.9/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME ANT_HOME CATALINA_HOME


if [ "$1" == "/home/dspace/tomcat_restart.sh" ]; then
        at now + 0 minutes < $1
        echo "Tomcat will restart now."
else
        $1
fi

echo ""
echo "====================================="
echo ""
read -p "Please press ENTER to exit. " doExit

這個腳本中設置了相當多參數,請依照你伺服器的實際情況來決定要設置的參數內容。

此外,由於Tomcat的重新啟動無法直接透過這樣的指令來執行,所以我改成以「at」執行一次的方式來執行。必須說明的是,這並不是很理想的作法,有待以後改善。

tomcat_restart.sh:重新啟動Tomcat伺服器腳本

如果你沒有需要重新啟動Tomcat的話,這個步驟是可以省略的。「/home/dspace/tomcat_restart.sh」(SkyDrive備份)是用來重新啟動Tomcat伺服器的腳本,內容如下:

export JAVA_HOME=/usr/java/jdk1.6.0_06
export JAVA_OPTS="-Xmx128M -Xms64M -Dfile.encoding=UTF-8"

/opt/apache-tomcat-6.0.16/bin/shutdown.sh 
sleep 1
/opt/apache-tomcat-6.0.16/bin/startup.sh 

要記得將這些腳本的執行權限開啟,他們才能正常地執行。

Windows使用者端配置

你現在需要在Windows中建立一個資料夾,例如「c:\ssh-cmd\」,然後把以下的檔案放進去:

PieTTY的命令列執行方式

雖然很多人都知道PieTTY是用來作SSH連線的,但是知道PieTTY可以透過命令列與指令檔案來進行連線並執行指令的人就不多了,其實這是基於PieTTY改編自PuTTY原始就有的功能喔。

具體來說,利用命令列來透過PieTTY連線的作法如下:

pietty0327.exe -l [ID] -P [PORT] -pw [PASSWORD] -m [COMMAND] -t [HOST]

裡面的參數中:

  • [ID]是要登入的帳號
  • [PORT]是連接埠
  • [PASSWORD]是密碼
  • [COMMAND]是「存放指令的檔案位置」,注意,不是指令,只是檔案位置喔
  • [HOST]要連線的主機IP
config.ini:連線配置

連線的配置資訊,我將它存放在「config.ini」中。「config.ini」的內容如下:

[ssh-dspace]
login=dspace
pw=password

[ssh-root]
login=root
pw=password

[ssh]
port=22
host=127.0.0.1

在此安排了兩種不同的身分,一種是以普通使用者「dspace」來執行,另一種是以管理者「root」來執行。除了重新啟動伺服器等重大指令之外,一般指令最好是以普通使用者「dspace」的身分來執行會比較安全。

ssh-cmd.exe:執行連線腳本

由於要執行指令必須要以存放在檔案中的形式來執行,所以建立這個檔案、並指引PieTTY來連線的工作,是交給AutoIt的自動腳本ssh-cmd.exe來執行。

ssh-cmd.exe是由ssh-cmd.au3編譯而來的,這是AutoIt的程式語言。內容如下:

Dim $user = "ssh-dspace"
Dim $script = ""
If $CmdLine[0] == 2 Then
	$user = "ssh-" & $CmdLine[1]
	$script = $CmdLine[2]
ElseIf $CmdLine[0] == 1 Then
	$script = $CmdLine[1]
EndIf

Dim $login = IniRead("config.ini",$user, "login", "root")
Dim $pw = IniRead("config.ini",$user, "pw", "password")
Dim $port = IniRead("config.ini","ssh", "port", "22")
Dim $host = IniRead("config.ini","ssh", "host", "127.0.0.1")

If $script == "" Then
	MsgBox(0, "錯誤", "請指定要執行的指令")
	Exit
EndIf

Dim $doExcute = MsgBox(1, "提示","您確定要在伺服器中執行以下命令嗎: " & $script)
If $doExcute == 2 Then
    Exit
EndIf

Dim $sh = "cmd.sh"
Dim $scriptHeader = "~/ssh-cmd.sh "

$file = FileOpen($sh, 2)

; Check if file opened for writing OK
If $file = -1 Then
    MsgBox(0, "錯誤", "無法開啟檔案")
    Exit
EndIf

FileWrite($file, $scriptHeader & $script)
FileClose($file)

Dim $cmd = "pietty0327.exe -l " & $login & " -P " & $port & " -pw " & $pw & " -m " & $sh & " -t " & $host
Run($cmd)
Sleep(1000)
If WinActivate("PieTTY Security Alert") Then
	WinActive("PieTTY Security Alert")
	Send("{ALTDOWN}Y{ALTUP}")
EndIf

這個腳本做了幾件事情:

  1. 接收來自外部的「身分」與「指令」參數(稍後建立Windows捷徑的時候,我會再說明怎麼輸入這邊的參數)
  2. 讀取來自config.ini中的連線資訊,包括「帳號」、「密碼」、「伺服器位置」、「連接埠」
  3. 過濾指令、顯示提示
  4. 將指令寫入「cmd.sh」檔案中
  5. 以命令列執行PieTTY連線
建立Windows捷徑

image

接著要建立到「ssh-cmd.exe」的捷徑,並且在捷徑之後加上「參數」。建立好ssh-cmd.exe並改好名字之後,你可以打開捷徑的「內容」,在「目標」的欄位中設定參數。

舉例來說,我現在要在伺服器上以「dspace」身分執行「/home/dspace/tomcat_restart.sh」的指令,那麼目標裡面的設定如下:

"C:\ssh-cmd\ssh-cmd.exe" dspace /home/dspace/tomcat_restart.sh

目標的值除了指定要執行的程式位置之外,還指定了要執行的身分「dspace」跟要執行的指令「/home/dspace/tomcat_restart.sh」。如此配置之後,就能夠讓使用者直接點選此捷徑,讓他自動執行這些動作了。

你可以利用這個例子舉一反三,建立執行不同身分、不同指令的捷徑,並組成一個操作列表,讓使用者易於選擇。也可以將此捷徑放到「開始」程式集裡面,讓使用者更容易執行各種操作。這些動作我是用InnoSetup在安裝時自動配置而成,不過那又是另一番長篇大論了。


結語

儘管一鍵指令的方案我研究了很久,但是仍有很多不完美之處,希望高手能多多指教。

其實這個是DSpace-DLLL寫書的一部分技術內容。之前寫完書之後就匆忙地投入其他事情中,到最近在使用AutoIt時,又把之前寫的檔案挖出來看。

這時候就會覺得這個Blog對我來說也是很重要的,如果沒有這些記錄,我恐怕很快就會忘記自己之前做過的事情了吧。

(more...)

CentOS中自動啟動Tomcat的亂碼問題

CentOS中自動啟動Tomcat的亂碼問題

image

如果要架設以Java、JSP、Sevlet系列伺服器端程式語言為主的網頁伺服器,Apache Tomcat(簡稱Tomcat)是相當有名的一套解決方案。我研究DSpace時也是使用Tomcat來架設在CentOS作業系統上。

因為Tomcat並不是CentOS內建服務而是我額外安裝的,所以我設定了crontab讓他在開機時自動執行。由於之前的參數沒有配置完善,導致開機自動執行Tomcat時,讓Java讀取檔案的編碼發生錯誤。

研究了老半天終於找到算是可行的解決方案,在這邊記錄一下。

Tomcat啟動腳本規劃考量

安裝好Tomcat之後,一般是以命令列執行[tomcat]/bin/startup.sh ([tomcat]表示Tomcat的安裝目錄),但是如果要以自動啟動的方式來啟動Tomcat,卻會因為沒有先執行/etc/profile中設置Java的參數,而會造成啟動失敗。

/etc/profile中的Java參數

先回顧一下DSpace安裝步驟裡,在/etc/profile設置Java參數的內容:

JAVA_OPTS="-Xmx2048M -Xms2048M -Dfile.encoding=UTF-8"
ANT_HOME=/opt/apache-ant-1.7.1
JAVA_HOME=/usr/java/jdk1.6.0_12
CATALINA_HOME=/opt/apache-tomcat-6.0.13
CLASSPATH=$CATALINA_HOME/common/lib/servlet-api.jar
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ANT_HOME/bin:$PATH:/opt/apache-maven-2.0.9/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC ANT_HOME JAVA_HOME CATALINA_HOME CLASSPATH

其中很重要的是「JAVA_HOME」跟「JAVA_OPTS」這兩項參數。前者是要告訴Tomcat要執行的Java環境必要的套件位置,後者則是執行Java時的參數設定。

Tomcat啟動腳本

如果要自動啟動Tomcat的話,則必須在腳本中加入Java參數設定才行。我建立了一個「/home/dspace/tomcat_startup.sh」的腳本,內容如下:

export JAVA_HOME=/usr/java/jdk1.6.0_12
export JAVA_OPTS="-Xmx2048M -Xms2048M -Dfile.encoding=UTF-8"

/opt/apache-tomcat-6.0.16/bin/startup.sh

這個腳本執行了三件事情:

  1. 設置JAVA_HOME變數為「/usr/java/jdk1.6.0_12 」
  2. 設置JAVA_OPTS變數為「-Xmx2048M -Xms2048M -Dfile.encoding=UTF-8」
  3. 執行「/opt/apache-tomcat-6.0.16/bin/startup.sh 」以啟動Tomcat

如果你也要依樣話葫蘆的話,記得要調整一下這些參數的設定喔。

Tomcat解決亂碼的爭議點

上面在設定JAVA_OPTS的時候,有一個「Dfile.encoding=UTF-8」的編碼參數,這個設定可以讓Java知道要以UTF-8的編碼來開啟檔案,以免他用預設的en_US編碼來處理而造成UTF-8看起來像是亂碼一樣。

但是網路上大部分論壇都主張要將此參數設置在[tomcat]/bin/catalina.sh中,或是一樣在catalina.sh中設定「CATALINA_OPTS=-Dfile.encoding=UTF-8」。前者因為Tomcat版本相差過遠,我找不到要修改的地方;後者還沒試過。

總之,「Dfile.encoding」的參數應該還是有很多其他的地方可以配置,如果大家有更好的方法,也請提出來多多討論吧。

在crontab中開機自動執行Tomcat啟動腳本

開機自動執行的方法有很多種,其中crontab也可以在開機時指定要執行的程式。crontab是Linux中執行例行性工作排程的好用工具,詳細的原理可以參考鳥哥的介紹。以下我僅敘述如何將「/home/dspace/tomcat_startup.sh」加入crontab開機時自動啟動的腳本中。

1. 進入crontab編輯畫面

輸入「crontab -e」就可以進入編輯畫面了。

[dspace@dspace-dlll ~]$ crontab -e
2. 加入開機執行指令

crontab編輯畫面會以一般的vi文字編輯器形式出現,如果你對vi編輯器不熟的話,還是得先請你看一下鳥哥的操作說明。請在crontab檔案最後加入以下設定:

# Startup tomcat
@reboot /home/dspace/tomcat_startup.sh

第一行只是註解。

第二行的「@reboot」參數表示在重新開機時都會執行後面的指令:「/home/dspace/tomcat_startup.sh」。

儲存並離開之後就完成crontab的設定。

3. 重新啟動測試

設置好crontab之後,別忘了reboot重新啟動來測試一下Tomcat是否有自動地啟動喔。


結語

這個編碼問題讓我煩惱了好久。一開始我還以為是Sevlet或JSP在傳送request的時候編碼設定錯誤,沒想到最後居然是根本上的Java編碼就出了問題。希望這次設定完之後,以後不要再出現編碼的問題了啊。

(more...)

AutoIt使用Run()執行非exe, bat等執行檔

布丁布丁吃布丁

AutoIt使用Run()執行非exe, bat等執行檔

image

這次來記錄一下AutoItRun()函數的另類用法。

Windows的腳本機器人AutoIt

AutoIt是一個執行於Windows環境的腳本機器人,我以前就用AutoIt製作過VirtualBox的自動安裝程式,之後我偶爾也會用AutoIt來幫我排程處理例行事務,省下我自己動手的功夫。

Run()函數以命令列指令執行

有時候我會需要AutoIt去執行外部程式,這可以藉由它內建的Run()函數來執行。但是AutoIt的Run()函數預設只能執行exe、bat、com、pif,如果參數中的程式不是這些類型,那麼Run()下去就不會有任何反應。

這時候可以以「命令列」(console)的方式來處理,請使用以下的指令:

Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE)

commandName可以替換成你要執行的程式路徑。要注意到" /c "前後是有空格的喔。

開啟絕對位置檔案

舉例來說,我希望AutoIt自動幫我開啟一個網頁程式「c:\index.html」的話,指令要這樣寫:

Run(@ComSpec & " /c " & 'c:\index.html', "", @SW_HIDE)
開啟與腳本相同位置的檔案

如果我要開啟與腳本相同位置的檔案,則可以利用「@ScriptDir」。舉例來說,「index.html」擺在跟AutoIt腳本(或是編譯過的執行檔)相同的目錄之中,則可以利用以下指令來執行「index.html」:

Run(@ComSpec & " /c " & 'index.html', @ScriptDir, @SW_HIDE)

結語

其實這個作法已經寫在Run()函數的網頁說明中,但傻傻的我還是google了好一段時間才發現,在此留下一個記錄。

另外也有人主張用ShellExecute()函數來開啟。以後有機會我再研究看看好了。

(more...)

GReader Folder Favicon Alerts

GReader Folder Favicon Alerts

image

這是修改自GReader Favicon Alerts的userscript,可以在Google閱讀器(Google Reader, GReader)的網頁圖示(favicon)上顯示「目前所在資料夾」的未讀訊息。

原始的GReader Favicon Alerts是顯示所有訂閱的未讀訊息。但我並不會時常盯著所有訂閱訊息,而只會想要關注特定幾個訂閱,並將他們歸類在同一個資料夾中。

GReader Folder Favicon Alerts可以讓你只顯示目前閱讀資料夾的未讀訊息。你可以開啟很多個Google閱讀器、閱讀不同資料夾,這支程式就會幫你把各個資料夾的未讀訊息顯示在網頁圖示上,方便你追蹤最新的訊息。

至於userscript的安裝方式,請參考虫二的[教學]如何讓不同的瀏覽器正確安裝並執行使用者腳本 (Userscript)

(more...)

Plurk網頁圖示未讀記數器

Plurk網頁圖示未讀記數器

12004551472

這支userscript是我參考GReader Favicon Alerts修改而成,可以在Plurk圖示上顯示未讀訊息的數量。


Google Chrome的固定分頁

Google Chrome的「固定分頁」是一個節省分頁導覽列空間的好功能。他將分頁的寬度縮小到只剩下圖示,並固定在分頁導覽列的左方,讓我們保持一些常常需要查閱的網頁。

我常常會將Plurk固定在Chrome中,但是又常常會想切換到Plurk看一看有沒有「未讀訊息」,久而久之就覺得這個切換的動作很麻煩。所以就想要參考GReader Favicon Alerts的方式,在Plurk圖示上加上未讀訊息的記數。

安裝方法

這個程式只能用在Google ChromeFirefox等有支援userscript的瀏覽器上,IE是沒有支援的。

至於userscript的安裝方式,虫二的[教學]如何讓不同的瀏覽器正確安裝並執行使用者腳本 (Userscript)已經有很詳細的教學,在此不再介紹。

(more...)

將圖片編碼成字串:MIME與Base64編碼

將圖片編碼成字串:MIME與Base64編碼

如果要編寫一個圖文並茂的網頁,往往會覺得要找一個可以擺放「圖片」的空間是一件很麻煩的事情。特別是最近我在學習寫userscript的時候,想把套件跟圖片顯示結合在一起,又得要考慮怎麼連結圖片,感到非常頭大。

後來參考了GReader Favicon Alerts的寫法,我才知道原來還有將圖片轉換成Base64編碼,然後直接跟純文字的HTML或JavaScript結合在一起的作法!(備註:IE6不行喔)


MIME

根據維基百科的記載

多用途網際網路郵件擴展MIMEMultipurpose Internet Mail Extensions)是一個網際網路標準,它擴展了電子郵件標準,使其能夠支持非ASCII字元、二進制格式附件等多種格式的郵件消息。

MIME是由[type]/[subtype]組成。常見的[type]有「text」、「image」、「application」。我們在寫作網頁時,常常看到「image/png」、「text/html」、「text/javscript」之類的格式,這就是MIME喔!

網路上常見的圖片MIME則是「image/jpeg」、「image/gif」跟「image/png」。

Base64編碼

根據維基百科的記載

Base64是一種使用64基的位置計數法。它使用2的最大次方來代表僅可列印的ASCII 字元。這使它可用來作為電子郵件的傳輸編碼。在Base64中的變數使用字元A-Z、a-z和0-9 ,這樣共有62個字元,用來作為開始的64個數字,最後兩個用來作為數字的符號在不同的系統中而不同。

圖片是屬於二進制的檔案,因此不能像HTML或JavaScript這種純文字(plain text)的程式一樣地處理。

image

舉例來說,上圖中,我以處理純文字的筆記本開啟「1422855-medium2.gif」這個檔案,看到的結果是一堆亂碼。也就是說,一般的純文字處理器是無法處理圖片這種二進制的檔案。

而透過電腦將圖片轉換成Base64編碼之後,資料會成為由英文跟數字組成的純文字資料,如下所示:

這一張圖片的大小為2.01KB,轉換成Base64編碼之後共有2753字元。儘管檔案大小變大了,但這種Base64編碼卻能更方便地使用。

如何將圖片轉換成Base64編碼?

image

很多程式語言都可以做到將圖片轉換成Base64編碼的工作,而網路上也有許多提供這種服務的網站,例如Binary File to Base64 Encoder / Translator

操作步驟也很簡單,只要指定圖片的網址,然後就可以取得Base 64編碼了。

1. 指定網址

image

輸入後按右邊的「提交」(submit)。

2. 取得編碼結果

image

這個網站會自動地加入MIME格式。你可以注意到除了Base 64編碼之外,開頭還有「data:image/gif;base64,……」的檔頭訊息。

如何利用圖片的Base 64編碼?

不知道有沒有人發現到,開頭這張圖片,其實就是用MIME與Base 64編碼來顯示的喔。

作法一樣是用<img>標籤,但裡面的src屬性卻是指定MIME與Base 64的資料內容。我將程式碼的部份擷取如下:

<img src="data:image/gif;base64,R0lGO……ZTVsGBAA7">

一般的src屬性通常是指定「http://」開頭的網址,但在此卻是使用「data:image/gif;base64,」開頭的MIME與Base 64編碼,而瀏覽器卻也能正常地開啟。

IE6不支援

image

好吧,舊時代的產物IE6並不支援MIME與Base 64編碼顯示圖片的作法就是了。使用的時候請自己注意一下喔。

以MIME與Base 64編碼儲存圖片的好處

將圖片轉換成這種純文字的方式儲存有幾個好處:

  1. 一份圖文並茂的文件不用切割成很多份檔案(通常是一份html與數張圖片檔案),全部只要用MIME與Base 64編碼來儲存在一份HTML檔案即可。
  2. 對userscript這種JavaScript的套件來說也是如此。我只要把圖片的MIME與Base 64編碼寫在JavaScript中,就不需要外連,就像是GReader Favicon Alerts一樣。
  3. 以MIME與Base 64展示的圖片被視為「同網域」,不會受到「跨網域」的限制,因此就可以做到利用MIME與Base 64圖片再來加工繪圖的功能。

結語

學到這種作法之後,我的網頁設計跟AJAX應用又開拓了一條廣闊的道路。在此也將這種喜悅分享給大家,一起努力學習吧!

(more...)

我的論文寫作工具:XMind心智圖

布丁布丁吃布丁

我的論文寫作工具:XMind心智圖

10. 核心架構圖

心智圖是一種將概念、想法以連線組織起來的筆記法。比起用手繪的心智圖,電腦的數位心智圖更具備容易組織、關連與整理的特色。這次碩士畢業論文我就是利用XMind心智圖繪製工具來撰寫論文草稿,然後再將草稿上的概念撰寫在Word中,成為長篇大論的碩士論文。

以下就跟大家分享我利用XMind來寫作論文的過程吧。


心智圖繪製相關工具

這邊要先介紹三種工具,第一個是桌上型電腦用的XMind,第二個是Android手機用的Thinking Space,第三個則是對桌上型電腦與手機檔案同步的SugarSync。

桌上型電腦的心智圖工具:XMind

image

XMind是繪製心智圖的一項工具,他是基於Eclipse的框架,以開放原始碼的形式開發,可以在各種Windows、Linux、Mac等各種平台上運作。個人使用的時候是免費的,而付費購買的Pro版本則有甘特圖、腦力激盪、簡報等各種功能,但是個人版本其實就已經很足夠使用了。

跟另一項知名的開放原始碼心智圖繪製工具FreeMind比起來,XMind介面更美觀、容易使用。但相對的,XMind也比較佔記憶體資源,使用過久的話也可能會當掉。對我現在用的電腦來說,XMind運作起來還蠻順利的就是。

Android手機上的心智圖工具:Thinking Space

image

有些時候就算不在電腦前,也可以拿起Android手機來規劃論文的草稿。我每天吃飯時走路上下山、通勤時坐公車,很多時候並沒有電腦使用。在電腦前面時,我容易專心作一件預定要做的事情;但是離開電腦,在外面走路、等待時,我反而比較容易思考「要做些什麼」的規劃。

其實手機特別適合用心智圖來記錄事情。因為手機難以長篇大論地打字,小螢幕也難以顯示複雜、大量的資訊,心智圖以關鍵字、概念、可開關的結構來呈現,特別用來記錄事情可說是格外地合適。

Android手機上可以使用的心智圖工具很多,其中Thinking Space是我用起來最好用的一款。他不僅能夠整合XMind格式的檔案,操作起來也與桌上型電腦版的XMind大同小異。Thinking Space跟XMind部分圖示有點差異,但是常用的數字、進度、驚嘆號、問號等圖示都是共通的。

必須注意的是,在手機上操作Thinking Space時卻異常地耗電,使用上需要非常地謹慎,不然可能寫一寫手機就沒電了。

Thinking Space免費版的限制中,除了比較沒啥影響的廣告之外,最麻煩的就是不能使用「超連結」功能將節點指定連到網站或某個檔案位置。即使開啟了擁有「超連結」的XMind檔案,Thinking Space也會把「超連結」刪掉。而付費版的Thinking Space Pro則沒有上述限制。

由於我寫論文到中後期會在XMind心智圖上加上超連結,以方面快速參照到某個檔案,因此我後來也改用了Thinking Space Pro作為寫作的工具。

電腦與手機的同步工具:SugarSync

image

手機改完的檔案要傳到電腦上,而電腦中寫一寫也想要放到手機中繼續寫。以前我們會用隨身碟、FTP來傳輸資料,但現在我們可以用檔案同步工具、透過網路來進行異機(電腦與手機)的同步!

SugarSync是類似Dropbox的檔案同步工具,提供跨平台資料同步功能,各檔案最近五個版本的差異記錄,也可指定要同步的資料夾,免費使用就有 5GB的空間,可以藉由推薦與付費來加大空間。

SugarSync並沒有Dropbox知名,版本差異備份的功能較弱,但是不像Dropbox只能限定在My Dropbox資料夾中同步資料,SugarSync除了類似My Dropbox的Magic Briefcase資料夾外,還可以直接指定要同步的資料夾。

此外,由於我在Dropbox中保存了許多東西,我不想要把手機的空間弄亂,所以我決定另外使用其他的檔案同步工具,就是這個SugarSync。免費使用有 5GB的大小,對我的手機8GB記憶卡來說也差不多。

每次修改過電腦或手機的心智圖檔案之後,我只要連上網路,執行SugarSync的同步,SugarSync就會確認檔案的更新日期,自動進行上傳、下載、覆蓋的動作。因此我可以確保這些檔案是維持最新版的狀態,以避免遺失寫過的內容。


使用XMind寫論文

我用XMind來輔助論文寫作上可以概分為五個階段。首先是主要利用XMind心智圖來撰寫草稿,然後在XMind中整理草稿,接著參考心智圖來撰寫論文的文章、了解文章撰寫的進度,再以心智圖追蹤論文的改版與最後的統整。

1. 概念研擬階段
  • 安裝電腦與手機的心智圖與同步工具,配置檔案同步環境
  • 以Thinking Space為主,電腦為輔

話說,當我要開始寫論文的時候,剛好碰上了春假前夕。這時候我大部分時間是在外面行動,並沒有電腦可以操作,所以我決定利用Android智慧型手機的功能,在手機上開始撰寫我的論文。

首先我先在電腦上安裝了XMind Portable,在手機上找到了相容於XMind的Thinking Space軟體。試用過多個檔案同步服務之後,最後我決定選用SugarSync,並在電腦端與手機端都各別安裝SugarSync並以相同帳號登入,以便連上網路時就能夠進行同步。

20110421220637

首先我將論文各章拆成各個部分,建立多個XMind檔案,包括論文的架構、格式、論文正文以外的其他資料之外,就是緒論、文獻探討、研究方法、系統、研究結果與分析、結論等章節。這除了因為單獨檔案過大會造成難以編輯的困擾之外,手機因為記憶體不足,也不能開啟過大的XMind檔案。

各章節的分類也只是個大概而已,其實原本只打算寫六章的我,後來因為系統太大,所以也拆開成為二個獨立的章節來撰寫。

20110205 1 緒論

這時候的心智圖只是個概念的列表。儘管各節的順序通常是已經明定而不需要猶豫的,但各節裡面要寫些什麼,此時則是以關鍵字或簡短的敘述來記錄。例如「研究目的」的部份,我只寫了「發展」、「驗證」、「探索」三個關鍵字而已。

20110407182739

在手機上操作Thinking Space的時候就如上圖。在這個階段就是盡可能地把想要寫的概念記錄起來。由於手機打字並不順,所以我也不想在手機上寫上太多字,反正之後回到電腦上會再進行重整。

20110407183138

我也會同時搭配「圖示」的功能,幫每個節點加上順序、進度、驚嘆號或問號等圖示,就能夠以簡單的形式來記錄我想要的概念。

2. 概念重整階段
  • 以電腦工作為主
  • 輔以手機修改

當前面概念研擬階段中把每章要寫的內容都擬定出一個大概之後,接下來我就要把這些概念重整,作為撰寫文章前的準備。

論文的章節寫作順序

附帶一提,我是以每一章為單位來撰寫,而章節與撰寫順序各別是:

  1. 第一章 緒論
  2. 第三章 研究方法
  3. 第五章 研究結果與分析
  4. 第六章 結論
  5. 第四章 系統介紹
  6. 第二章 文獻探討

最後才是將每一章統整。

這個順序並沒有一定,不同領域跟不同老師的指導方式也許會有所不同,但我覺得一章一章地寫應該是還蠻合理的作法。其中,大部分的人都會把系統介紹放在研究方法之前,可是我的研究目的之一在於發展系統,所以把系統挪到研究方法之後。寫到最後稍有修改,第四章 系統介紹被拆成二章來撰寫。

重整的詳細程度

這個階段到底要整理到多詳細呢?讓我們先看看「第二章 文獻探討」初期的心智圖:

20110216 文獻探討

我整理的時候,根節點是「章」標題,底下的子節點則是「節」標題,並標上順序數字。節底下如果有分成小節,則再標上順序數字以表示這是一個標題。然後將節點加上「電燈泡」與「驚嘆號!」等圖示以區分用意,並重整順序。這張心智圖裡面有些「問號?」圖示,表示這是上一階段中想到需要補充的資料。

在重整順序、加上圖示、順序數字之後,我就會試著將模糊的草稿寫得更具體一點。

20110216-6文獻探討

這張圖則是整理之後的文獻探討。每個節點要細到能夠具體地想到每一個段落要怎麼寫,以方便我可以重複檢查這一章的邏輯是否流暢、正確,這樣才能安心下筆寫作。

圖示

表示需要搜集或不確定的圖示

在這個階段我大量地使用圖示來標示心智圖的節點。在XMind中文版中翻譯成「圖標」,但我覺得還是「圖示」比較適合。我常用的圖示包括:

  1. 順序數字:用來標示「節」或「小節」的寫作順序
    image
  2. 「燈泡」寫作概念:抽象的一個概念,這是要寫入文章中的一個想法。
    image
  3. 「驚嘆號」寫作注意事項:寫作時可以參考其他來源,或是其他特別要注意的事情。
    image
  4. 「問號」需要補充:目前手邊資料不足,需要再補充的部份。
    image
  5. 「附件」圖表資料:在這邊要加入圖表。
    image
  6. 「刪除」不採用:這個節點及之下的節點都不採用,平時保持關閉,等有需要時再來開來查看。
    image
超連結的節點

參考檔案加入超連結

同時,我也在心智圖中加入了參考資料。參考資料中的節點通常附有超連結,指定到電腦中的實體檔案。必須注意的是,如果用免費版的Thinking Space來修改加上超連結的心智圖時,心智圖中的超連結就會消失喔。如果使用Thinking Space Pro版本就沒這個問題了。

3.0不能相對連結

原本超連結只能以「絕對式」指定硬碟中的位置,如果檔案位置更改的話,那超連結很容易就會失效。在XMind 3.2.1版本中已經可以將超連結指定為「相對式」,只要XMind心智圖檔案跟被連結的檔案相對位置不變,超連結就不會失效。這也是後來我升級到3.2.1版本之後才發現的功能,當時我只是呆呆地指定絕對連結就是了。

不採用的想法

不採用的想法

在重整的過程中,往往會捨棄部分寫得不好的概念。比起直接刪去這個節點,我通常會額外建立一個類似資源回收桶的節點,命名為「不採用的想法」,並加上「X」image 表示不使用,平時讓他保持關閉的狀態。

當我有要刪掉的節點時,我就會直接把它挪到這個「不採用的想法」裡面。如果未來我發現我又要這個想法時,這時候就能把它從「不採用的想法」裡拉出來了。反正一個節點也佔不了多少檔案空間,保持關閉的狀態也不會妨礙版面,對我來說這是一個很有用的小技巧。

3. 文章撰寫階段
  • 以Word撰寫為主
  • 參考XMind心智圖

前一個階段將XMind心智圖整理得差不多之後,接下來就是要把它寫成論文的文章。

這個階段就是參考XMind心智圖來撰寫文章。如果心智圖夠詳細的話,文章寫起來會很順、很快,還會加入許多當初心智圖沒有納入的資料。但如果寫一寫覺得很卡、轉得很硬,那可能就是當初心智圖沒有整理得很好,我會再回去重整心智圖。

寫完之後,我就會將該章的檔案寄給老師,請老師幫忙檢查。

任務完成比例

圖示各節進度 整張心智圖

我通常會用「任務完成比例」圖示來標示目前做到的進度。「任務完成比例」圖示是一個方形的餅圖,有Start (0%)、25%、50%、75%、100%、暫停等六種圖示的差別。

專案管理裡面會建議我們把專案事項以具體的視覺化方式呈現出來,讓執行者知道已經完成了多少、還有多少沒有完成,這有助於專案的控管。我把這種想法應用到論文上,用「任務完成比例」了解自己撰寫論文的進度。

制定撰寫規則與格式

制定規則跟格式

因為我是打算分章撰寫多個檔案,最後再統合,所以有必要制定撰寫規則與格式,以求得整篇文章的統一。基本規則都是參考張保隆、謝寶煖(2006)的「學術論文寫作: APA規範」來制定,不過在撰寫文章的時候,我還會一邊以心智圖寫下額外的規則,包括檔名、存檔方式、章節範本之類的注意事項。

4. 改版追蹤階段
  • 以Word修改為主
  • XMind心智圖記錄版本
  • 以RTM輔助記錄零星修改

老師檢查完的文章通常會有很多建議,而我必須參考老師的建議來改善論文的內容。

老師的修改

Word修改圖片

我跟老師之間的論文校對全部都以Word檔案進行。老師會將他認為應該要修改的地方以紅字標示、或用刪除線表示要刪掉的部份。不過很遺憾的是,老師已經忘記Word的修訂功能如何使用,所以這些標示都是手工加上去、需要手工去檢查的。

image

修改時,我並不是完全接受老師的意見,而是把老師的修改當做是一種改進的參考,很多時候都是看完老師改過的地方,然後我再整個重寫。當然,重寫時也是納入了老師的建議。

各章版本記錄

統合版本記錄

我通常把老師寄回來的檔案另存一個校對完成新檔,然後把上一版修改前的資料也存成一個新版本檔案,參考老師的校對完成檔案,來修改新版本檔案。而這之間來來回回建立多個版本的檔案,我會以心智圖的超連結來記錄,以方便查閱。

以RTM輔助記錄要修改的地方

搭配RTM

有些章節改了一些規則、用詞之後,就必須回頭去修改其他章節。這些細微變更的待辦事項,我使用RTM+Astrid的待辦事項來處理。再撰寫文章時,有要修改的地方就記錄在RTM中,稍晚再處理;待要處理其他章節時,就參考RTM的列表進行修改。

RTM待辦事項較沒有心智圖這麼有組織,只是零星的記錄,適合輔助像是修改細節這種瑣碎的工作上。

我一直想等有空時好好介紹RTM+Astrid的待辦事項組合,請等待下次吧。

5. 論文統整階段
  • 以Word統整為主
  • 以RTM輔助零星修改

校對通常是到二校就差不多。而各章都會重複步驟2到步驟4的內容,直到所有章節都撰寫完成,就進入最後的論文統整階段。

雖然理論上只是把各章的Word檔複製貼上到同一個檔案去,但因為各檔案的樣式有所不同,還要把標號進行重整,並且避免表格被分頁切斷,所以調整起來也費了一番功夫。

image

在統整時,也會參考之前規劃的論文格式部分的心智圖,把主要章節內文之外的其他資料補充進去,像是摘要、目次、表次、圖次。其中公式目次後來發現大家都沒人使用,所以我之後把公式目次刪掉了。

統整之後,我會再請老師檢查看看。這樣才算是完成整個論文。


論文草稿心智圖

這份論文寫到最後我總共建立了11張心智圖。

我在撰寫論文的時候就常常將心智圖輸出成PNG、記錄在Plruk上當成日記,所以上面介紹中有許多都是來自於當初在撰寫時的心智圖。

接著我想把心智圖最後的樣子在下面作個記錄。這心智圖與論文內文並不是完全相同,有些錯誤也在論文中直接更正。心智圖大概在4. 改版追蹤階段之後就沒有再修改過了。

以下全部的心智圖可以點選此連結下載,僅供參考。必須注意的是,心智圖中有許多部分加上超連結連到特定的檔案,而這其實是指我電腦中的資料,如果你把心智圖下載到你的電腦去的話,應該是找不到對應的資料才是。

1. 論文架構

1. 論文架構

這是整個論文的核心心智圖,連結其他心智圖之用。

2. 論文格式

2. 論文格式

記錄論文主要文章之外的其他資料。

3. 第一章 緒論

3. 第一章 緒論

4. 第二章 文獻探討

4. 第二章 文獻探討

5. 第三章 研究方法

5. 第三章 研究方法

6. 第四章 知識標註學習系統

6. 第四章 知識標註學習系統

7. 第五章 知識萃取機制

7. 第五章 知識萃取機制

8. 第六章 研究結果與分析

8. 第六章 研究結果與分析

9. 第七章 結論

9. 第七章 結論

10. 核心架構圖

10. 核心架構圖

這是與老師討論論文最後結果的架構圖。

11. 論文摘要&投影片

11. 論文摘要&投影片

最後論文完成,要撰寫摘要與規劃口試時要報告的投影片內容。


結語

註解功能

當初用心智圖的時候,其實沒有使用到「註解」的功能。「註解」可以在一個節點裡面放入長篇、有格式的文字,用在蒐集文字資料上非常方便。我後來才發現這個功能,不然有些論文資料就不需要以超連結連到外面去,而是直接就能夠用心智圖來整理。

我的論文寫作草稿工具:XMind心智圖

自從利用心智圖撰寫論文之後,我也開始用心智圖來規劃Blog要寫的內容。這一篇就是這樣子規劃出來的。一開始,這個心智圖也一樣是在手機上以Thinking Space繪製,然後在電腦上補充需要的資料,最後再用Windows Live Writer把它寫完。

感覺上這樣寫Blog會比較踏實,結構也比較完整,比較不會想到什麼寫什麼、亂無章法。但是實際上在寫的時候,還是不會像寫論文一樣咬文嚼字,寫起來還是挺隨便的XD

總之,就當做寫日記一樣,總算是把用心智圖寫論文的過程作個交待了!

(more...)