:::

Zotero引用文獻樣式:中文、英文APA合併版本 / Zotero Citation Style: APA Chinese & English Edition

Zotero引用文獻樣式:中文、英文APA合併版本 / Zotero Citation Style: APA Chinese & English Edition

2014-08-12_193102

之前我寫過Zotero引用文獻樣式的中文版本,後來在更熟悉CSL程式語言的格式之後,我完成了可同時輸出中英文的Zotero引用文獻樣式(以下簡稱中英APA)。只要在書目的「語言」(language)設定為「zh-tw」或「zh-cn」,該書目就會以中文輸出喔。

I developed a citation style of Zotero for Chinese researcher. This citation style could based on bibliography's language field to display APA style in Chinese or in English. Following are Chinese & English APA citation style’s installation and usage.


Zotero的下載與安裝 / Download & Install

要使用Zotero的布丁式中英APA,必須要先有Zotero。Zotero有分成Firefox的擴充套件(Add-on)版本,以及與其他瀏覽器整合的獨立運行版本(standalone),我建議安裝Firefox的Zotero版本,比較簡單。

比較簡單的方式是下載Firefox的Zotero版本來使用。

中英APA引用文獻樣式的下載與安裝 / Download & Install Pulipuli Chinese & English APA

安裝布丁式中英APA引用文獻樣式的方法我已經有在「Zotero引用文獻樣式之中文APA」中講述過,以下引用之前文章的圖片再說一次。

首先下載請apa_zh_pulipuli.csl檔案:

image

然後開啟Firefox,把apa_zh_pulipuli.csl檔案拖曳到Firefox視窗中,如上圖。

image

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

2014-08-12_202115

然後就可以顯示「Chinese American Psychological Association 6th edtion」。引用文獻樣式的名字跟以前不一樣,這是因為我修改過的關係。

輸入書目 / Import Bibliography

image

輸入書目的方法我在「Zotero引用文獻樣式之中文APA」這篇已經有很詳細的介紹。做法摘要如下:

  1. 開啟Zotero管理面板:現在版本的Firefox要按下Zotero的紅色Z字按鈕 2014-08-12_201313
  2. 進行搜尋,例如使用Google Scholar
  3. 找到需要的文件,按下網址列右邊的圖示,匯入到Zotero中。
    image

Zotero的使用教學文章已經很多了,你也可以參考我另外一篇「書目管理工具Zotero介紹」的介紹。

使用 / Usage

大部分的使用方式跟「Zotero引用文獻樣式之中文APA」一樣,唯有以下兩點跟之前有所差異:

調整書目:語言欄位 / Adjust Bibliography: Language Field

2014-08-12_203834 - Copy

如果是中文的書目,語言的部分要設為「zh-tw」、「zh-cn」或「Chinese」。不可以用以前的「zh_TW」或「zh_CN」,因為locale屬性會無法判別。

英文的部分則可以維持空白,或是輸入「en-us」、「English」。總之非中文語言的關鍵字,中英APA都會判斷為英文格式。

輸出書目:前括弧 / Insert Citation: Left Parentheses

2014-08-12_204732

由於Zotero的CSL-M解析器中只有不設定locale的<layout>才能使用prefix,所以不管中英文的文中引用(citation),前面的圓括弧都只會呈現半型的圓括弧「(」。如果是中文文獻的話,請手動打開編輯器,將前面的圓括弧換成全型的「(」,這樣就可以了。

至於右邊的圓括弧跟分號則可以依照語言判斷。沒有問題。

跟前一版的改進 / Changelog

除了中英文可以同時展示之外,其他的改進還有:

  • 同時引用多筆文獻時,中英文可以正常排序。
  • 最後的參考文獻也可以先顯示中文、再顯示英文。
  • 解決7位以上多作者的「等」之前會出現「、」的問題。

中英APA使用上要注意的事情就只有這樣而已了。至於調整書目的工作還是一樣不可避免:

  • 英文首字字母大寫規則(sentence case)
  • 統一書名副標題的分隔符號「:」
  • 中文作者轉成單一欄位
  • 「論文」的類型與大學
  • 書頁的分隔線轉成半型的「-」
  • 刪除版本「初版」

問題回報 / Report

當然,這個中英APA不見得完美。如果你在使用時遇到任何問題,歡迎在這篇文章底下回覆留言。請跟我說你使用的書目內容、錯誤的輸出結果,以及你預期正確的輸出結果。我會盡可能研究看看要怎麼改進。


結語:CSL的語言設定 / Conclusion: Layout’s Locale of CSL

這次能夠實作中英文分別的Zotero,得歸功於CSL-M格式中額外指定的<layout>與其locale屬性。原本在CSL 1.0.1語言標準中並沒有詳細介紹<layout>,是CSL-M擴充了CSL 1.0.1之後才有這<layout>等功能的實作,而Zotero使用的是CSL-M。

<layout>是使用於設定文中引用的<citation>文後參考文獻的<bibliography>所使用的標籤。<layout>裡面可以設定locale屬性,例如<layout locale=”zh-tw”>。locale屬性會參考書目本身的「語言」(language)欄位。

因此我實作的中英文APA中,將中英文分開的方式如下:

<bibliography hanging-indent="true"
              et-al-min="8"
              et-al-use-first="6"
              et-al-use-last="true"
              entry-spacing="0"
              line-spacing="1.5">
  <sort>
    <key macro="chinese-sort" sort="ascending"/>
    <key macro="author"/>
    <key macro="issued-sort" sort="ascending"/>
    <key macro="title"/>
  </sort>
 
  <!-- 中文的格式 -->
  <layout locale="zh-tw">
    <text macro="chinese-bibliography"/>
  </layout>
  <layout locale="zh-cn">
    <text macro="chinese-bibliography"/>
  </layout>
  <layout locale="zh-Hant">
    <text macro="chinese-bibliography"/>
  </layout>
  <layout locale="Chinese">
    <text macro="chinese-bibliography"/>
  </layout>
  <layout locale="chi">
    <text macro="chinese-bibliography"/>
  </layout>

  <!-- 英文的格式 -->

  <layout>
    
    <group suffix=".">
      <group delimiter=". ">
        <text macro="author"/>
        <text macro="issued"/>
        <text macro="title" prefix=" "/>
        <text macro="container"/>
      </group>
      <text macro="locators"/>
      <group delimiter=", " prefix=". ">
        <text macro="event"/>
        <text macro="publisher"/>
      </group>
    </group>
    <text macro="access" prefix=" "/>
  </layout>
</bibliography>

此外,可以調整的空間也多了不少。像是多作者的顯示方式、排序等等,都可以在CSL-M的擴充功能中獲得解決。

我現在就不需要用「用Zotero輸出中文、英文不同的APA參考文獻」這種方式來整理論文了。

(more...)

修復Proxmxo VE:虛擬機器無法進入終端畫面 / Fix Proxmox VE: How to Enter OpenVZ Container’s Console?

布丁布丁吃布丁

修復Proxmxo VE:虛擬機器無法進入終端畫面 / Fix Proxmox VE: How to Enter OpenVZ Container’s Console?

2014-08-11_224331

Proxmox VE改版之後,很多OpenVZ範本都無法進入終端畫面(Console)。其實可以開啟節點(Node)的終端畫面(Shell),然後以「vzctl enter [VMID]」來進入OpenVZ虛擬機器中。

This article describes the problem of Proxmox VE Cluster: How to enter OpenVZ container’s console? A proposed solution to the problem is use vzctl enter [VMID] command, or modify template. Following are the problem description and solutions.


問題狀況 / Problem Description

2014-08-11_223808

Proxmox VE提供了方便的管理工具,可以讓管理者直接在Proxmox VE中點選「Console」(終端頁面)來顯示OpenVZ虛擬機器(又稱為container,CT)的終端畫面,如上圖。

2014-08-11_224312

可是由於早期的OpenVZ虛擬應用範本,特別是CentOS,在開啟Console的時候,只會顯示以下訊息:

Attached to CT 101 (ESC . to detech)

什麼都看不到,而且什麼都無法操作。

問題原因 / Causes of Problem

這是因為早期OpenVZ虛擬應用範本檔案中輸出Console的終端設定跟現在Proxmox VE版本的設定不合。導致OpenVZ虛擬機器雖然可以顯示開機與關機資訊,但真正讓人可以操作的訊息卻顯示不到console使用的Java Applet上。

應急的解決方案是從節點(node)直接進入虛擬機器的手動解決方案,長期的話就修改範本設定。我們現在已經使用了很多虛擬機器,也不是常常在進入伺服器。在此先介紹短期內直接進入的手動解決方案。

手動解決方案 / Manual Solution

參考Proxmox VE OpenVZ Console的Troubleshooting,做法如下:

  1. 先進入Proxmox VE管理介面。找到無法進入Console端的虛擬機器,確認VMID編號為101。2014-08-11_225455
  2. 回到該機器的節點「puli-openvz」,進入右上角的Shell。
    2014-08-11_225439
  3. 接下來會顯示節點伺服器的終端畫面。
    2014-08-11_225554
  4. 輸入以下指令進入虛擬機器:
    # vzctl enter [VMID]
    以VMID 101的虛擬機器為例,指令如下:
    # vzctl enter 101
    2014-08-11_225733
  5. 接著就可以進入虛擬機器內了。
    2014-08-11_225801

由於這個方法跟直接點選console按鈕比起來也不會耗費太多功夫,所以很推薦大家來使用。

自動解決方案 / Automatic Solution

當然,最好的方式是修改虛擬應用範本,以避免每次都還要繞路才能開啟Console的困擾。

CentOS 6的解決方法 / Solution for CentOS 6

根據Proxomx VE Modifying your templates的說明,我試著在centos-6-standard_6.3-1_i386.tar.gz上修改成功。

加入tty.conf / Add tty.conf

做法是在該虛擬機器範本中加入 /etc/init/tty.conf 檔案,檔案內容如下:

# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/agetty -8 tty1 38400

然後以 reboot 指令重新啟動虛擬機器,這樣就可以用console登入了。

下載tty.conf / Download tty.conf

為了方便起見,我把這些動作寫成以下指令。只要在無法直接進入console端的虛擬機器直接執行即可:(感謝aleroot對wget覆寫指令的解說)

# mkdir –p /etc/init; cd /etc/init; wget -q http://goo.gl/nx13fz –-no-check-certificate; reboot

然後就等待重開機吧。

CentOS 5的解決的方法 / Solution for CentOS 5

CentOS 5的做法不一樣,請輸入以下指令:

# echo "1:2345:respawn:/sbin/agetty tty1 38400 linux" >> /etc/inittab; reboot

登入終端界面 / Login in Console

剛進去的時候是全黑的,請先按一次「enter」鍵。然後才會顯示文字訊息。

2014-08-11_230557

不過似乎第一次登入還是要輸入帳號密碼的樣子,這部分就難免了。

重設虛擬機器的root密碼 / Reset Root Password

由於使用vzctl enter [VMID]的方式可以進入任何OpenVZ虛擬機器裡面,而且是以root身份進入,因此可以用這個方式重設root的密碼。

做法概述如下:

  1. 從節點(node)的Shell進入
  2. # vzctl enter [VMID]
  3. 以root身份登入虛擬機器
  4. 變更密碼指令:
    # passwd root
    然後輸入你要變更的密碼

完成。

正式的做法則是參考OpenVZ論壇中maratrus的講解,在節點的Shell中使用vzctl中的—userpasswd,指令如下:

# vzctl set [VMID] --userpasswd root:[newpasswd] --save

兩種方法都可以喔。

(more...)

PHP線上轉檔服務搭配pdf2htmlEX / PHP File Converter with pdf2htmlEX

布丁布丁吃布丁

PHP線上轉檔服務搭配pdf2htmlEX / PHP File Converter with pdf2htmlEX

2014-08-11_202622

我開發了一個可以用PHP線上轉檔服務 (PHP File Converter)。此服務可以讓使用者上傳檔案,然後等待系統進行轉檔,最後輸出轉檔完的結果。這個程式是為了搭配pdf2htmlEX一起運作,以省略需要用指令來進行轉檔的過程。以下介紹這個服務的由來與下載說明。

I developed an online PHP File Converter to let user online convert their files to another format. PHP File Converter use system command line to  use convert tool, for example, pdf2htmlEX. Following is introduction of PHP File Converter.


簡介 / Introduction

2014-08-11_201945

一開始是因為我們需要一個PDF轉成HTML的方案。這些方案中王璐的pdf2htmlEX專案轉換成效非常好。pdf2htmlEX可以把一份PDF檔案轉成一個HTML檔案,而這個HTML檔案可以直接開啟,裡面已經包含了原本PDF的排版與圖片。上圖是轉換後的成果,非常好用。

但是pdf2htmlEX的操作是要用Linux的指令列進行,這對於許多不熟悉Linux的人來說有點麻煩。這讓我想要發展一個線上轉檔網址,可以讓使用者上傳檔案,然後利用作業系統的命令列進行轉檔,轉檔完成之後再提供使用者下載的服務。最後就完成這個PHP File Converter

特色 / Features

68747470733a2f2f6c68352e676f6f676c6575736572636f6e74656e742e636f6d2f2d424b4e2d31796b516741492f556d643863637538456d492f41414141414141424d4c592f62586138485459516769492f73302f323031332d31302d3

PHP File Converter特色在於讓使用者直接在瀏覽器中上傳檔案到伺服器,然後PHP File Converter會自動執行系統轉檔指令。轉檔完成之後,使用者則會被引導到下載網址,然後就可以下載已經轉檔完成的檔案。

具體來說,特色如下:

  • 以伺服器作業系統的命令列進行轉檔。只要伺服器可以使用命令列CLI (command line interface)進行轉檔,就可以用PHP File Converter來轉檔
  • 伺服器端可設定上傳檔案允許大小、格式,避免惡意檔案上傳
  • 伺服器端可設定轉檔輸入的參數
  • 伺服器端可設定保留轉檔數量,避免使用者上傳過多檔案而導致伺服器空間不足
  • 檔案的上傳、轉換與下載會在系統留下記錄,包括檔案名稱、使用者IP與時間
  • 系統是基於CodeIgniter 2.1.4,採MVC架構開發
  • 以SQLite作為資料庫,不需要額外搭配其他資料庫設定

目前PHP File Converter跟pdf2htmlEX轉檔工具綁定在一起,特別設置了pdf2htmlEX會使用的Zoom等參數。

至於pdf2htmlEX則是王璐開發的專案,詳細請看他的pdf2htmlEX專案

系統需求與設定 / System Requirement & Configuration

PHP File Converter的專案網站與下載位址如下:

PHP File Converter是以PHP架設,需要搭配SQLite資料庫才能運作。建議運作環境是:

  • PHP 5.5.3
  • SQLite 3
  • 硬碟空間:建議100MB以上
  • 測試環境XAMPP 1.8.1

轉檔程式主要的設定檔位於 [php-file-converter]/application/config/converter.php 。參考檔案內的說明來進行設定。

由於轉檔需要耗費大量伺服器資源,故在此不提供展示用的界面。


結語:未來發展方向 / Conclusion: Future Works

雖然目前PHP File Converter設定是搭配pdf2htmlEX,但其實它有很多可能。

發展PHP File Converter的原因有很多,另一個原因是因為很多服務都需要搭配轉檔工具才能使用,例如DSpace多媒體轉檔器 (Media Filter)就需要轉圖片、轉文件檔案(txt或doc)、轉聲音、轉影片,很多很多。雖然大部分轉檔工具都可以在Linux中安裝,但是每一臺都安裝自己的轉檔工具,顯然是無法善用資源的一件事情。

於是我的構想是:一臺伺服器專門負責一種檔案的轉檔,其他伺服器則是把檔案交給它轉檔。為了做到這件事情,PHP File Converter甚至有規劃API使用。

不過可惜的是,目前為止還沒有朝向這個方向進行的實際規劃。目前大家主要是手動上傳、手動下載,再把轉檔好的檔案擺到提供使用者取用的位置,伺服器之間沒有這麼自動。

最後,請讓我用這一篇文章來感謝pdf2htmlEX的作者王璐。我在安裝跟使用pdf2htmlEX時遭遇了很多問題,感謝他在信中熱情地為我解惑,而且還快速地修改了一些錯誤,真是令人尊敬的開發者。謝謝您。

(more...)

RSS全文抽取服務 / Full-Text RSS Service

布丁布丁吃布丁

RSS全文抽取服務 / Full-Text RSS Service

2014-08-11_200706

Full-Text RSS是我根據FiveFilters.org提供的full-text-rss改良的開放原始碼RSS全文抽取服務。Full-Text RSS可以分析RSS中每個頁面的網址,抽取該網址中的網頁文章內容,並加上換頁偵測、中文字編碼調整,讓RSS閱讀器可以直接閱讀到全文的RSS。

Based on FiveFilters.org’s full-text-rss code, I developed Full-Text RSS service to extract full text in RSS feed especially for Chinese article. Following are Full-Text RSS’s introduction, features and usage.


由來 / Introduction

由於我個人是重度的RSS讀者,然而大部分的RSS訂閱來源都只有提供文章一小部分的內容,例如Linux伊甸園開源社區 (RSS網址為:http://www.linuxeden.com/rss.php) ,這意思是說我要看文章的內容,還得從RSS瀏覽器中打開瀏覽器、上網、然後用他們網站中不適合手機小尺寸螢幕的排版來閱讀。雖然之前我也找許多RSS全文服務,包括まるごとRSSFeedEx.netFiveFilters.org,但是因為效率跟中文編碼的問題,總讓我使用起來十分受限。

2014-08-11_204136

這讓我興起了想要自己來架設RSS全文抽取服務的念頭。一開始我是在GitHub上搜尋,找到很多以full-text-rss為名字的專案。然後循著README.md,才找到於FiveFilters.org的開放原始碼軟體full-text-rss

於是我就很開心地下載下來,改放到GitHub託管,然後隨著自己的習慣不斷地改造這個Full-Text RSS全文抽取服務

特色與改造 / Features

RSS全文抽取服務最主要的目的在於抽取RSS的文章內容。以Linux伊甸園開源社區為例,原本的RSS網址 www.linuxeden.com/rss.php 只能顯示部分內容,如下圖:

2014-08-11_204733

但是經過RSS全文抽取之後,可以把原本的網址取代成RSS全文抽取服務的網址: http://example-full-text-rss.org/full-text-rss/makefulltextfeed.php?url=www.linuxeden.com%2Frss.php&max=10&links=preserve&exc=&submit=Create+Feed  (只是範例網址,實際上不能連線喔),顯示內容如下:

2014-08-11_200750

2014-08-11_204930

你可以看到「物联网福音 不耗电Wi-Fi技术问世」一文已經從原本的部分文字抽取成文章全文了。

而我從FiveFilters.org下載full-text-rss之後,還進行了以下特色的改造:

用到現在也將近快1年了,陸陸續續修改了很多次,到現在總算是覺得比較穩定一點,所以就來寫這篇Blog介紹。

系統需求 / Server Requirement

Full-Text RSS是以PHP運作。安裝時條件如下:

  • PHP版本:5以上
  • 不需要搭配資料庫

但是由於Full-Text RSS在抓取網站的全文時需要大量記憶體與等待相當長的時間,如果超過PHP可以執行的時間,就會顯示錯誤訊息:

[unable to retrieve full-text content]

因此我們必須調整PHP的設定檔php.ini的部分參數,讓Full-Text RSS能有比較寬裕的執行環境:

  • max_execution_time=300
  • max_input_time=600
  • memory_limit=128M
  • 必須啟用cURL,才能抓取資料

如果還有其他參數需要調整,請在下面留言跟我說。

由於Full-Text RSS會消耗大量伺服器的資源,我本來想試著架設在免費的PaaS上來運作,可惜免費空間都跑不動。因此我推薦是安裝在自己的電腦上,當然,你的電腦也得是可以公開連線的伺服器才行。

安裝 / Installation

請從以下網址下載Full-Text RSS:

下載後,請解壓縮到你的PHP運作環境目錄。以XAMPP伺服器來說,執行目錄就是在htdocs資料夾底下。例如c:\xampp\htdocs\full-text-rss\

然後運作網頁伺服器,直接開啟Full-Text RSS網址,例如http://your-ip/full-text-rss/,這樣就可以連線了。

使用方法 / Usage

Step 1. 輸入RSS訂閱資訊網址 /  Enter RSS Feed URL

2014-08-11_200706 - Copy

首先在Enter URL輸入RSS訂閱資訊的網址,例如:http://www.linuxeden.com/rss.php。然後按下「Create Feed」按鈕。

接著等待一段時間,讓Full-Text RSS去讀取。如果讀取到最後發生錯誤,建議修改輸入頁面的「Max items / 最多抽取文件篇數」,降低為5篇以下,可以降低Full-Text RSS的讀取負擔。

Step 2. 取得全文抽取網址 / Get Full-Text RSS Feed

2014-08-11_211821

順利開啟之後,到網址列複製Full-Text RSS提供的網址。舉例來說:

  • 原本網址:http://www.linuxeden.com/rss.php
  • Full-Text RSS轉換網址:http://example-full-text-rss.org/full-text-rss/makefulltextfeed.php?url=www.linuxeden.com%2Frss.php&max=10&links=preserve&exc=&submit=Create+Feed 

剛剛的參數都寫在網址上,應該很容易看懂吧。

Step 3. 加入您的RSS閱讀器 / Add Feed To Your RSS Reader

2014-08-11_212408

然後把剛剛拿到的Full-Text RSS網址加入到你的RSS閱讀器,像是Feedly (可惜沒有Google Reader了),這樣就可以了。


結語:不太對的回饋 / Conclusion: Missing Feedback

github

Full-Text RSS網站服務又是一個受惠於開放原始碼的例子。我從FiveFilters.org取得了full-text-rss,然後改造之後再到GitHub去發佈,現在寫一篇Blog介紹這怎麼使用。取之開放原始碼,回饋於開放原始碼,嗯?好像哪裡怪怪的?

是的,其實Git版本控制在團隊合作之間一般是使用Fork建立自己的分支專案,然後用Pull Requests來請求原作者看一下我改過的程式碼,以回饋給原作者。這部分doggy有比較詳細的介紹:了解 GitHub 的 fork 與 pull request 版控流程

可惜當初我還不知道Fork這個很重要的功能,所以到現在也就獨立發展了。以後會乖乖Fork專案,好好回饋給作者的啦。

(more...)

IMLF 2014參加心得 / Thoughts of IMLF 2014

布丁布丁吃布丁

IMLF 2014參加心得 / Thoughts of IMLF 2014

頁面擷取自-Proceeding of International Mobile Learning Festival 2014 Bali

今年六月初我去參加了印尼峇里島的國際行動學習研討會(International Mobile Learning Festival 2014, IMLF 2014),並發表了一篇「Effects of Different Text Display Types on Reading Comprehension」。以下記錄發表的投影片。

This June, I went to Bali and published a research paper in International Mobile Learning Festival 2014 (IMLF 2014) conference. The research titled "Effects of Different Text Display Types on Reading Comprehension". Following are the abstract and slide of this research.


發表文章 / Publication

2014-08-10_171332

這次發表的題目是「Effects of Different Text Display Types on Reading Comprehension, Sustained Attention and Cognitive Load in Mobile Reading Contexts」(行動閱讀情境中不同文字顯示方式對於閱讀理解成效、持續注意力與認知負荷的影響)。APA書目如下:

Chen, Y.-T., & Chen, C.-M. (2014). Effects of Different Text Display Types on Reading Comprehension, Sustained Attention and Cognitive Load in Mobile Reading Contexts. In Proceedings of the International Mobile Learning Festival 2014. Bali, Indonesia.

這個很長的標題題名已經點出了這篇研究的內容。也就是以iPod Touch中設計三種不同的文字顯示方式:靜態翻頁、動態自動卷軸與逐字顯示的混合模式,以筆試測試閱讀理解成效、以腦波儀NeruoSky偵測持續注意力、以量表詢問認知負荷,然後請受試者在坐著、站著與行走等不同情境下閱讀。最後發現不同形態顯示方式與不同的情境皆會對這三種依變項造成影響,可供我們在設計行動閱讀載具的參考。

以下是這次報告的投影片:

感謝老師的允許與學妹的研究,才能讓我有這機會去發表。再此特別表示感謝。

演講稿 / Speech Visual Aids

這是我第一次出國用英文發表,而我平常在臺上演講的經驗也不多,這次出國發表對我來說是一大挑戰。另一方面,議程演講的時間有30分鐘,扣掉發問時間也大概需要講25分鐘。這25分鐘內要用英文全程演講,到底該怎麼辦好呢?

雖然老師跟週遭的朋友們都一副「你上臺就知道要講什麼了」的表情,但我的英文並沒有到這種程度。要用英文寫一份HTML文件的話,我的確可以馬上開始。但是要上臺用英文講話,我可能還要先記下我要講什麼東西。

演講稿修改 Effects of Different Text Display Types on Reading Comprehension

所以這次是應用了之前Dr. Jeremy Sykes教的「English Academic Writing and Oral Presentation Skill 2」中的技巧,乖乖地擬訂演講內容。在這裡面儘量地使用平常易懂、常用的句子;捨棄學術論文中艱深難唸的專有名詞,換成比較易懂、也好唸的片語;演講速度一字一句唸清楚,不是急著講完,反正25分鐘也足夠演講。然後再依據這份講稿來練習、背誦。這份講稿的擬訂也是受到許多人的幫忙,一邊擬稿的過程中也學到很多英文的技巧,感謝大家。不過由於個人事務繁忙,投影片跟講稿修訂上我也花了太多時間,甚至到報告前一天我才能有時間在房間裡好好地練講。最後影響到老師跟一起去報告的學弟的行程,真的是很不好意思。

演講感想 / Academic Speech

DSC_2227

IMLF 2014雖然是一個國際會議,可是參與者並不多。在會場裡面大概不到20人,工作人員約5人左右。不過儘管人很少,發問倒是非常踴躍。一個講者10分鐘的發問時間裡面,大家會積極地對他的研究內容以及應用的可能性進行討論。學弟在第一天發表時,臺下聽眾也熱烈發問,甚至連這天的場次結束了,還有三四個人圍了上來提問。其實比起經過練習的演講內容,如何應對別人用英文提問的回答,才是國際研討會壓力最大的地方。當學弟在臺上收到大量英文提問的攻擊時,他顯得有點驚慌失措,我坐得太遠了難以上去打pass,還好中國大陸來的主講人趕緊用中文幫學弟翻譯一下,總算讓學弟能夠渡過這個難關。

不過輪到我的時候,不知道是因為講得不是很好,還是研究內容跟其他遊戲式教學比起來不太有趣,臺下的聽眾興趣缺缺,也只有收到一個問題。不過那個問題是問「這個研究對現在的學習有什麼幫助?」這種大問題,我除了再次強調了論文中結論的部分之外,倒也不知道怎麼用英文再跟她進一步解釋。

總之,吸取這次的經驗,下次還要更加努力,希望能有更好的表現,多多加油吧!

(more...)

Android系列裝置禁止快取縮圖thumbnails / Deny Thumbnails In Android Devices

布丁布丁吃布丁

Android系列裝置禁止快取縮圖thumbnails / Deny Thumbnails In Android Devices

14 - 5

Android裝置會自動產生大量快取縮圖(thumbnails),佔據Android裝置所剩不多的記憶體空間(ROM space)。本文教你如何防止Android裝置產生縮圖。

Android system automatically create thumbnails to SD card’s “DCIM/.thumbnails”. The “.thumbnails” directory will occupy most of SD card’s space. This article show you how to stop Android system to create thumbnails.


空間不足的問題 / Not Enough Space Problem

14 - 1

我的平板電腦是Samsung Galaxy Note 8,內建空間16GB,而實際上可用空間大概是9.78GB。上面的截圖中,我目前的空間剩餘大概3.23GB。

not-enough-space-delete-unecessary-items

9.78GB乍看之下似乎很多,但在以前,這個空間往往很快就會被不知名的檔案佔據,系統會一直提示我儲存空間不足、請刪除軟體APP、圖片、影片與文件 (Not enough space. Delete unnecessary items, such as downloaded software, pictures, videos, and documents)。

上面這張圖片是來自於How to Tackle Message “Not Enough Space, Delete Unnecessary Items…” When Opening Gallery on Android,他也是跟我一樣使用Galaxy系列的手機,也是遇到了一樣的問題。

龐大的快取圖片資料夾 / Fat “.thumbnails” Folder

14 - 3 - Copy

後來我使用Storage Analyser分析記憶卡中佔用記憶體空間的檔案,才發現佔用空間的並不是各種APP或是下載的檔案,而是記憶體中的「/DCIM/.thumbnails」這個資料夾佔據了大量的空間。

這個.thumbnails資料夾存放的是圖片的快取縮圖。只要開啟了圖片,這個快取縮圖資料夾就會增加該張圖片的縮圖。附帶一提,這個資料夾「.thumbnails」開頭是一個「.」,這是Linux檔案系統中表示隱藏檔案的功能,一般是存放系統檔案時使用。

別看這個縮圖好像沒什麼了不起,就算我空間有9.78GB,這個.thumbnails資料夾甚至可以佔到3GB之多,早已超過我現在的剩餘空間了。

14 - 6

我的Sony Xperia TX也會有一樣的問題。這個.thumbnails就佔據了3.09GB,對手機記憶體空間帶來不小的負擔。

無法清理乾淨的快取圖片資料夾 / Cannot Remove .thumbnails Folder

remove-thumbnail-files-android

TrickyWays的建議是刪除「.thumbnails」這個資料夾。但是事實上,這個做法並非長久之計。

因為.thumbnails快取圖片資料夾會持續產生。只要開啟圖片,.thumbnails資料夾就會產生縮圖,而這個縮圖又會佔據記憶體空間。過不久,我又得再次手動刪除.thumbnails資料夾。

因此我後來又去找了其他解法,發現xda developers中Minions_Army提出的方法的確可以永久解決這個問題。

放置快取縮圖產生 / Deny Thumbnails

原理是把.thumbnails資料夾刪除,然後建立一個.thumbnails檔案。這樣子快取縮圖就無法順利產生。

以下例子我用ES文檔瀏覽器(ES File Explorer)來操作,做法如下:

Step 1. 顯示隱藏的資料夾 / Display Hidden Directory

14 - 5

由於.thumbnails是隱藏資料夾,在ES文檔瀏覽器中預設不會顯示。在此我們要先修改設定,以顯示.thumbnails資料夾。

14 - 3

開啟ES文檔瀏覽器(ES File Explorer),進入設定(Settings)。

14 - 2 (1)

進入顯示設定(Display settings)。

14 - 4

打勾「顯示隱藏檔案」(Show hidden files)。

14 - 4 (1)

再回到記憶體的DCIM資料夾中,就會看到.thumbnails資料夾了。

Step 2. 移除快取縮圖資料夾 / Delete .thumbnails Directory

14 - 4

首先長壓.thumbnails資料夾,直到ES文檔瀏覽器選取了該資料夾。然後再按下下方垃圾桶圖示的刪除(Delete)。

接著ES文檔瀏覽器會跳出一個確認刪除視窗,按下確認刪除。

Step 3. 建立取代檔案 / Create .thumbnails File

14 - 3

接著按下ES文檔瀏覽器左下角的「建立」(New),選擇建立「檔案」(File)。

14 - 2

將該檔案命名為「.thumbnails」。

14 - 1

建立完成,這個位置就塞了一個.thumbnails檔案了。

這樣子未來Gallery APP就無法在「.thumbnails」資料夾中建立快取縮圖,因為這個路徑不是資料夾,而是檔案,因此會無法建立。


小結:刪除快取縮圖之後的後遺症? / Conclusion: Is There Any Problems After Deleting .thumbnails?

我的Note 8平板刪除了.thumbnails資料夾已經過了一個月了。這個月我也是照常開啟網頁、讀PDF paper、看影片、看漫畫,並沒有感覺到什麼異常。

理論上刪除.thumbnails之後,開啟圖片的速度應該比較慢一點。但是這問題感覺上不明顯。倒是記憶體剩餘空間多了許多這點比較令人有感覺。

大家可以一起來試試看,有問題歡迎一起來討論。

(more...)

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