:::

ORCID的公開API簡介 / Introduction of ORCID's Public API

布丁布丁吃布丁

ORCID的公開API簡介 / Introduction of ORCID's Public API

image

ORCID提供了兩種API,一種是要以機構付費的會員API,一種是免費公開的API。作為一個研究者,我們來看看公開API有提供什麼功能,可以讓我們可以應用在書目計量的資料分析上。


API是什麼方式運作? / How to use ORCID's API?

image

ORCID在「INTRODUCTION TO THE ORCID PUBLIC API」中介紹他們的公開API,做法是用OAuth 2.0註冊後搭配RESTful API的方式運作。但即使沒有用OAuth註冊,也可以直接用RESTful API來查詢。

雖然REST對網頁工程師來說就跟「吃飽沒?」一樣是個家常便飯的問候,但對只聽過Z39.50、OAI-PMH的圖書館員來說可能不是這麼的熟。Marshall Breeding在「Interoperability and Standards」(2013)一篇文章中是以「Application Programming Interfaces」來介紹RESTful API。這是一種類似在網頁表單中輸入資料、傳送資料給伺服器、取回資料的資料運作方式,但是基本上全部都是以程式碼的方式運作,以達到自動化資料操作、查詢、交換的目的。換句話說,RESTful API不是人直接輸入一個查詢語句,然後就可以將匯出結果成為Excel表格的工具。

附帶一提,RESTful API是一種風格架構(所以是ful,意思是「的樣子」),本身並沒有像Z39.50跟OAI-PMH有嚴謹的定義,各家的RESTful API都有各家的發展方式,所以Marshall Breeding在這部分也沒有辦法詳盡介紹。

儘管如此,在以TCP/IP架構下的網際網路中,RESTful API依然是大家普遍認同的API開發方式。ORCID也不例外,在部分資料的查詢上也開放了RESTful API的途徑。


查詢研究者資料的Public API / Public API of Researcher

image

ORCID在「TUTORIAL: RETRIEVE DATA WITH THE PUBLIC API WITH CURL 1.2 AND EARLIER」介紹如何查詢研究者的資訊,查詢的資料有三種:

  • Bio (/orcid-bio):回傳名字跟個人資訊。
  • Works (/orcid-works):回傳所屬機構清單、文章作品以及被贊助的文章。
  • Full (/orcid-profile):回傳全部ORCID的資料,也就是上述兩種資料。

image

我們來以我自己的ORCID頁面為例。我的ORCID是「0000-0003-3751-610X」,那麼我們可以簡單地用以下三種網址來查到三種研究者的個人資料:

查詢研究者的資訊 / Get Researcher’s Profile

image

Full為例,我們會下載一個名為「orcid-profil」的XML檔案。一般來說會以文字編輯器(例如Notepad++)開啟,可是IE的XML檢視介面做得挺好的,所以我們也可以用IE來看看。

要解讀這個XML檔案,我們可以從大綱看起。orcide-profile底下有以下幾種資料:

  • orcid-identifier:記錄ORCID帳號資訊
  • orcid-preferences:使用語言
  • orcide-history:帳號更新資訊,可以瞭解這個帳號是機器人建立的還是人手工建立的。
  • orcid-bio:個人公開履歷
  • orcid-activites:這一項裡面包含兩種資訊
    • affiliations:所屬機構,以及年分
    • orcid-works:發表文章資訊。

image

API也可以查到新增這篇文章的來源是來自誰,從這裡可以看到是我自己建置的資料。

查詢機構的資訊 / Get Organization’s Profile

image

如果是以機構為對象,那會查到什麼呢?我們以AcademicHub跟ORCID密切整合的臺大醫學院為例來查詢看看:

因為臺大醫學院的ORCID公開資訊上就只有ORCID ID資訊而已,所以API查到的結果也就只有帳號的資訊。可惜沒能看到機構底下所屬研究者的資訊。


搜尋的公開API / Searching Public API

image

ORCID的搜尋API教學「TUTORIAL: SEARCHING WITH THE API 1.2 AND EARLIER」介紹了如何以RESTful API來執行搜尋。

image

雖然教學一開始有提及機構會員可以用OAuth的方式先登入,這樣可以進一步取得ORCID中被設為「trusted parties」(被信任的機構)的資訊,但我們依然可以用公開API來找尋被公開的資訊。

首先我們來看看搜尋API可以查詢什麼欄位:

  • orcid (//orcid-profile/orcid-identifier):就是ORCID的ID,例如我的「0000-0003-3751-610X」。
  • given-names (//orcid-profile/orcid-bio/personal-details/given-names):作者設定的名稱
  • family-name (//orcid-profile/orcid-bio/personal-details/family-name):作者的姓
  • credit-name (//orcid-profile/orcid-bio/personal-details/credit-name):作者一般出現在發表文章上的名稱
  • other-names (//orcid-profile/orcid-bio/personal-details/other-names):作者其他的名稱。
  • email (//orcid-profile/orcid-bio/contact-details/email):作者的email。這是一個很實用的查詢欄位
  • external-id-reference (//orcid-profile/orcid-bio/external-identifiers/external-identifier/external-id-reference):其他系統上的作者辨識碼,例如Scopus的Author ID
  • digital-object-ids* (//orcid-profile/orcid-activities/orcid-works/orcid-work/work-external-identifiers/work-external-identifier[work-external-identifier-type="doi"]/work-external-identifier-id):從文章的DOI反查作者。這也是實用查詢欄位
  • work-titles (//orcid-profile/orcid-activities/orcid-works/orcid-work/work-title/(title|subtitle) ):從作品發表反查作者。
  • keywords ( //orcid-profile/orcid-bio/keywords/keyword ):查詢作者的關鍵字欄位(自己可以為自己設關鍵字)。
  • creation date (//orcid-profile/orcid-history/submission-date):查詢作者建立ORCID帳號的時間。(這個不是作品的時間喔)
  • last modified date (//orcid-profile/orcid-history/last-modified-date):作者最後修改的時間。
  • text (//orcid-profile/orcid-bio):所有以上的欄位。
搜尋文章標題 / Search Work Title

我們先試著查查看一個明確的欄位「work-titles」好了。

image

很好,第一筆就是我的ORCID。看來ORCID使用的Lucene全文搜尋引擎即使面對中文也運作良好!

用任意欄位搜尋所屬機構 / Search Affiliations by Any Fields

各種排行都很注重以機構為主、統計機構中研究者發表的數量,所以我們很注重作者所屬機構的資訊。雖然ORCID的搜尋API沒有所屬機構的欄位,但我們可以用text來查詢看看:

image

第一位是Yi Shen,是政大圖書館的核心館員之一。第一筆就是圖資界的前輩,所屬機構也的確是政大,真是準確。

第二位是Yuei-An Liou,現職為國立中央大學特聘教授。可是奇怪的是,劉老師的ORCID公開資訊上沒有找到檢索詞「國立政治大學」。我猜可能是「國立政治大學」被斷詞為「國立」、「政治」、「大學」,所以找到很多「國立」跟「大學」的資訊。

第三位ty yeh也是在自己的履歷上寫了很多「國立」跟「大學」,可惜這位也不是隸屬於國立政治大學的同仁。

用email搜尋所屬機構 / Search Affiliations by Email

Email是另一個可以標示所屬大學的查詢方式。所以我想用email應該可以找出對應機構的作者,除非作者不公開email資訊。

讓我們以政大的Domain Name 「*@nccu.edu.tw」來查詢看看。必須注意的是,這裡要搭配萬用字元*來做查詢喔:

image

第一位就是大力推動ORCID的邱炯友老師。不過搜尋結果也只有一位而已,這可能是因為大家的email預設都是不公開的緣故。

讓我來看看以AcademicHub跟ORCID密切整合的臺大醫學院能不能用email「*@ntu.edu.tw」來查詢:

查詢結果為24筆,跟AcademicHub上的801筆資料有相當大的落差。

2015-06-25_235539

這不僅是因為預設並不公開作者的email,而且連老師似乎也不是以ntu.edu.tw為主要的email,而是選用gmail.com。

因此從上面的兩點來看,email似乎不是一個適合用來搜尋所屬機構的好方法,因為:

  1. email預設是不公開的資訊
  2. 並不是所有人都用機構發行的email來註冊ORCID

除非ORCID開放檢索所屬機構欄位,不然看來目前沒有能夠完整找到作者所屬機構的檢索方式。


結語:ORCID是一個稱職的研究者公開查詢目錄 / Conclusion: ORCID is a good researcher public directory

儘管ORCID的API並非採用圖書館界中交換典藏資料常用的OAI-PMH或Z39.50的下一版SRU,但是依然提供了現在網頁開發流行的RESTful API與OAuth認證,十分具有現代網站的風範。

站在想要以大學為單位來統計研究者著作發表的書目計量角度,本文試著以Public API來看看如何才能取得完整的作者資訊。但是目前看來搜尋功能尚未考量到所屬單位的欄位,目前還沒辦法很準確地以機構來找到所屬作者。也就是說,ORCID現在還難以支援以機構為分析對象的書目計量統計。

但是因為ORCID可以記錄研究者的所屬單位,所以相信這就跟檢索作品題名(work-titles)是類似的欄位,因此這非是不可能做到的功能。讓我們繼續拭目以待ORCID的成長吧!

(more...)

SMA21平床式掃描機操作說明與驅動程式 / SMA21 Scanner Manual and Driver

SMA21平床式掃描機操作說明與驅動程式 / SMA21 Scanner Manual and Driver

image

SMA21  是一台操作比較複雜的平床式掃描機。我製作了一份教學投影片供使用者參考,連帶一併備份驅動程式。


操作說明投影片 / Manual Slide

下載:Google DriveOneDriveMegaSlideShare 

亮度不足的問題 / Lack of Brightness

image

必須額外說明的是,由於我們這台掃描機在亮度判斷上有點問題,所以這份說明裡面會特別教大家把亮度(Brightness)調到最亮再來掃描。

Scanned Image

 

但是調整完之後亮度還是不太夠。這時候我會使用影像處理工具的自動色階再做進一步的處理。

自動色階的定義可以參考Photoshop的說明 。簡單來說,影像中最亮的地方會被調整成白色、最暗的地方會被調整成黑色,其他的顏色則按照比例調整。這樣會讓最亮的地方看起來很白、最暗的地方看起來夠黑,影像會變得對比比較清楚。

一般時候影像處理工具不用用到Photoshop這麼龐大的工具,簡單的XnView就可以做到了。

image

操作方式是在 圖片 > 對映 > 自動色階。點下去就會調整完成。然後按下存檔就可以了。我們可以比較一下調整自動色階前後的兩張圖片,應該會覺得調整之後比較亮吧。

Scanned Image Scanned Image
調整自動色階之前 調整自動色階之後

SMA21掃描機的安裝 / Installation of SMA21 Scanner

SMA21掃描機的安裝分成網路卡安裝與驅動程式Batch Scan Wizard的安裝兩個部分,以下個別說明。

網路卡的安裝 / Installation of Network Card

SMA21平床式掃描機的資料傳輸方式跟一般用USB連接的掃描機有很大的不同。SMA21本身就是一台電腦,可以獨立完成掃描的工作,而搭配操作的工作站只是給予操作指令而已。

gdimage

SMA21掃描機是採用網路線在傳輸資料,因此工作站上必須要額外的網路卡連結SMA21。一般來說會額外購買一張USB網路卡來使用,速度到100Mbps就足以使用 。

20150622-173804-screenshot6

然後設定網路卡的網路位址。我們要連結SMA21掃描機與工作站電腦,因此這兩台電腦必須位於同一個區域網路底下。

SMA21掃描機的預設網路位址是:

  • IP位址:192.168.1.50
  • 子網路遮罩:255.255.255.0

因此工作站電腦的網路卡設定則是:

  • IP位址:192.168.1.51
  • 子網路遮罩:255.255.255.0
  • 閘道口:(不要設定閘道口)

然後把SMA21掃描機跟工作站電腦用網路線連接起來即可。

驅動程式Batch Scan Wizard的安裝 / Installation of Batch Scan Wizard

依照作業系統的版本不同,Batch Scan Wizard有32位元與64位元兩種版本。雖然當初買SMA21時,還是使用Windows XP 32位元,但現在大部分的電腦幾乎都是64位元了。安裝時請務必選擇正確版本安裝:

20150622-173401-screenshot5

20150622-172810-screenshot1

安裝之後要先在Batch Scan Wizard 64bit > Setup 64bit裡面設定SMA21的網路,然後就可以照投影片裡面的教學一樣開始操作了。


結語:陪我一起進入研究所的好麻吉 / Conclusion: It is my friend while I study in graduate school

這台SMA21掃描機是在我剛進入政大圖檔所的時候從國外買進來的。當時來了一位胖胖的德國工程師,跟我們一起從巨大的木箱中開箱、搬運、設置。然後又花了幾天的時間教我怎麼操作這台掃描機,還很自豪地掃描了紙幣上肉眼看不出來的小字。這位工程師是一位喜歡到處旅遊的人,不時跟我炫耀他去過的景點。雖然我英文不好,很難完全理解他在說什麼,不過看得出他十分開心。

在一開始計劃執行期間還有蠻多人使用這臺掃描機,但是計劃執行結束之後,這臺掃描機因為操作難度太高,也就很少同學願意使用,變成每次炫耀設備時拿來看一眼的裝飾品。儘管如此,我跟少數幾位同學還是非常喜歡這臺掃描機,像是我常常都會拿大量文件跟書本來掃描,效率比一般USB掃描機快很多。

時過境遷,現在掃描機的DPI動輒1200,SMA21最多仍然只能掃描600DPI。雖然可以掃描到A2尺寸,但是也沒有那麼多人需要,最後就把它轉移到其他單位去使用。至今我仍然偶爾會過來看看它,掃掃書本。雖然它很老了,但還是希望它能夠繼續陪我到博士畢業啊。

對了,最後補充一下,雖然SMA21有書籍掃描模式,但不會幫你翻書。是說怎麼這麼多人都期待掃描機會自動翻書,你都不怕機器弄破書頁嗎?

(more...)

修復Proxmox VE:增加第二顆硬碟到LVM / Fix Proxmox VE: Add Another Disk to LVM

布丁布丁吃布丁

修復Proxmox VE:增加第二顆硬碟到LVM / Fix Proxmox VE: Add Another Disk to LVM

pablo

之前我寫過「Proxmox VE增加第二顆硬碟」的做法,是用額外掛載的方式來新增一個新的Storage。這次我要做的是比較完整的做法:將新增加硬碟加入LVM中。操作步驟主要參考Jarrod的LVM教學


操作環境 / Proxmox VE Environment

2015-06-21_222426

本文是以Proxmox VE 3.4為例子,以VirtualBox來架設。重點是這個電腦有兩顆硬碟,Proxmox VE是安裝在第一顆硬碟中,第二顆硬碟是空的。

操作步驟 / Operation Process

Step 1. 登入 / Login

image

你可以用Proxmox VE的Web GUI中的Shell來登入,也可以直接登入本機端。總之要先以root的身份操作指令。

Step 2. 分割新的硬碟 / Partition the new disk

首先我們要確定新硬碟的路徑。一般來說,第一顆SATA硬碟為 /dev/sda 、第二顆為 /dev/sdb,而IDE的路徑則是 /dev/had 、第二顆則是 /dev/hdb。詳情請看鳥哥的說明

因為我安裝的是第二顆的SATA硬碟,所以路徑為 /dev/sdb。

硬碟的分割要使用fdisk,搭配第二顆硬碟的路徑/dev/sdb,指令如下:(粗體的地方表示是我們要輸入的指令)

root@pve:~#fdisk /dev/sdb

接下來會跳到fdisk的對話介面:

Command (m for help):

如果該硬碟裡面已經有資料,那就要用d指令來刪除。

Command (m for help): d

Selected partition 1

image

然後新增磁碟分割區,建立一個主要分割區,空間為整顆硬碟:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): "enter"
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): "enter"
Using default value 2610

image

然後將該分割區的檔案類型修改為Linux LVM:

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

image

最後將分割表的資訊寫入硬碟:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

image

完成。新增硬碟的磁碟分割位置為 /dev/sdb1。

Step 3. 增加邏輯捲軸 / Increasing the logical volume

接下來要連續輸入四個指令。注意裡面的磁碟分割路徑 /dev/sdb1,這是剛剛用fdisk新增的磁碟分割。

pvcreate /dev/sdb1
vgextend pve /dev/sdb1
lvextend /dev/pve/data /dev/sdb1
resize2fs /dev/pve/data

image

這樣就把第二顆硬碟新增到Proxmox VE的local空間中。

image

使用lvdisplay指令來看看結果,可以發現/dev/pve/data的空間已經新增到了12.37GiB。

這樣就大功告成囉!同樣的這種做法也可以用在第三顆、第四顆硬碟上面,繼續擴大local的硬碟空間。

將硬碟從LVM中移除 / Remove disk from LVM

既然我們可以新增硬碟到LVM,那一樣可以從LVM中移除硬碟。但是這個步驟就比新增還要複雜很多,細節可以參考鳥哥的縮小LV容量,如果那天我遇到這種情況了再來深入研究吧。


結語:使用LVM的風險 / Conclusion: The risk of LVM

現在Linux在安裝時預設都是以LVM的形式來分割磁碟,所以對大多數的人來說都感覺不到LVM的存在。LVM雖然能夠像上面這樣任意擴充一顆硬碟來增加空間,但是LVM是一種以任意調整容量為目的的檔案系統,安全性、可恢復性則不在考量範圍內。而且LVM預設是用線性模式在寫入資料,一顆硬碟滿了再放下一顆,存取方式無法與RAID相比。簡單來說:

  1. 當LVM裡面其中一顆硬碟毀損時,你得花很多功夫來調整LV,以移除壞掉的硬碟。
  2. 其他作業系統無法讀取以LVM管理的硬碟資料,也無法用Gparted之類的工具來調整硬碟分割。
  3. 結合以上兩點,如果LVM的作業系統毀損、無法開機。除非是用救援模式進入系統,不然不能用外接硬碟的方式讀取LVM的資料。

既然大部分Linux發佈版預設都用LVM,我們應該也無法擺脫LVM壞掉時的風險。因此在使用LVM時,一定要有壞掉之後很難復原的心理準備喔。

(more...)

修復Proxmox VE:第二次安裝時遭遇LVM的問題 / Fix Proxmox VE: Solve unable to create volume group while installing Proxmox VE

布丁布丁吃布丁

修復Proxmox VE:第二次安裝時遭遇LVM的問題 / Fix Proxmox VE: Solve unable to create volume group while installing Proxmox VE

pablo (1)

安裝Proxmox VE的時候,如果事前硬碟上已經有安裝好的Proxmox VE時,再次安裝就會發生「unable to create volume group at /usr/bin/proxinstall line 706」的問題。這個問題必須先移除硬碟上名為「pve」的LVM,然後就可以正常安裝了。


問題狀況 / Problem Description

image

有時候安裝Proxmox VE的時候會遇到「unable to create volume group at /usr/bin/proxinstall line 706」的錯誤訊息,然後安裝就無法繼續下去。

問題原因 / Casues of Problem

造成這個問題的原因是因為原本硬碟上面已經安裝過Proxmox VE。Proxmox VE在安裝時會建立一個名為「pve」的邏輯捲軸管理員LVM。而LVM不能有相同的名字,因此第二次安裝Proxmox VE時,就無法建立相同名字的「pve」,因此造成失敗。

解決方案 / Solution

我們需要一個可以開機的Linux版本Live CD來刪除LVM。

Step 1. 以Live CD開機 / Boot from Live CD

image

我原本是使用Ubuntu 14.04桌面版,但是那個太大了,速度也很慢。我試了幾個Live CD的版本,太小的Live CD並不具備LVM的工具,找到最後是Ubuntu Rescue Remix 12.04版本,ISO大小為233MB,啟動速度很快。

image

將這個ISO燒錄成光碟之後,或是像我這樣用VirtualBox掛載ubuntu-rescue-remix-12-04.iso之後,我們就可以開機進入Live CD。

Step 2. 刪除Volume Group / Remove Volume Group

image

一路enter到最後會是這個畫面。請輸入指令:

sudo vgremove pve –-removemissing

接下來會一一確認是否要刪除Volume Group裡面的Logical volume,總共有swap、root跟data。請一律按「y」確定。

image

接下來確認是否有刪除這個Volume Group。

vgdisplay

如果沒有看到pve,那Volume Group「pve」就刪除完成了。

Step 3. 關機 / Shutdown

image

完成之後輸入關機指令:

sudo halt

在看到「Please remove installation media and close the tray (if any) then press ENTER:」的訊息時,取出光碟,然後按下Enter鍵繼續關機。

Step 4. 重新安裝Proxmox VE / Install Proxmox VE again

2015-06-21_210909

再來重新安裝Proxmox VE的時候就可以順利成功了。

(more...)

Proxmox VE以vmdk作為虛擬機器的硬碟 / Use vmdk format as Virtual Machine's disk in Proxmox VE

布丁布丁吃布丁

Proxmox VE以vmdk作為虛擬機器的硬碟 / Use vmdk format as Virtual Machine's disk in Proxmox VE

pablo

Proxmox VE預設採用qcow2作為虛擬機器的硬碟格式,如果要改用vmdk格式的話,建立虛擬機器時就要調整cache的設定為「Write through」才能讓虛擬機器正常開啟。


用vmdk跑虛擬機器比較好 / It is better to run a Virtual  Machine based on vmdk image disk format

經過多台虛擬機器的架設,我發現以vmdk作為硬碟影像檔格式架設的虛擬機器總是有較好的執行效率與壓縮率,不論是VirtualBox還是Proxmox VE都是如此。

而且qcow2預設不開啟動態配置模式,因此創建影像檔時,檔案大小就會是設定的硬碟大小。例如我建立一顆80GB的硬碟,即使尚未安裝任何作業系統,qcow2硬碟影像檔依然會佔實體硬碟80GB的空間。相較之下,vmdk或是設定了動態配置的vdi格式,一開始的檔案大小通常不會超過10MB,開始安裝作業系統、增加檔案之後,影像檔才會逐漸變大。

image

再考量到現在很多可以直接掛載vmdk的工具,例如WinMount (也可以掛載vdi,但這是一個付費軟體),這樣子要從備份資料中取回需要的資料也很方便。

總而言之,VMware不愧是虛擬技術界的龍頭老大,他們家的vmdk的確是比較好。

Proxmox VE無法開啟vmdk格式虛擬機器的問題 / The error message while start virtual machine based on vmdk

image

我們可以用預設值建立好虛擬機器,而虛擬機器的硬碟是用vmdk格式。但是這時候開啟虛擬機器時,卻會發生類似以下錯誤訊息:

「TASK ERROR: start failed: command '/usr/bin/kvm -id 106 -chardev 'socket,id=qmp,path=/var/run/qemu-server/106.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -vnc unix:/var/run/qemu-server/106.vnc,x509,password -pidfile /var/run/qemu-server/106.pid -daemonize -smbios 'type=1,uuid=eece4916-f5e4-49de-a043-d2e77af96a53' -name test-vmdk -smp '1,sockets=1,cores=1,maxcpus=1' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000' -vga cirrus -cpu qemu64 -m 512 -k en-us -cpuunits 1000 -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:0a39bcb174' -drive 'if=none,id=drive-ide2,media=cdrom,aio=native' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -drive 'file=/var/lib/vz/images/106/vm-106-disk-1.vmdk,if=none,id=drive-ide0,format=vmdk,aio=native,cache=none,detect-zeroes=on' -device 'ide-hd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100' -netdev 'type=tap,id=net0,ifname=tap106i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown' -device 'e1000,mac=FE:CE:E5:CC:F3:C4,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -machine 'accel=tcg'' failed: exit code 1」

這是因為在KVM虛擬技術中,預設快取寫入硬碟的方式為「Default (No cache)」,但是vmdk必須使用「Write Through」設定,因此只要調整硬碟快取寫入方式就可以解決這個問題。

建立虛擬機器時調整硬碟設定 / The disk configuration while creating virtual machine

image

建立虛擬機器的時候,在設定硬碟的這一個步驟中可以找到快取寫入的設定。(註:Proxmox VE不同版本在這一部上有很大的不同,這是3.4的版本) 預設是使用「Default (No cache)」,請把他修改成「Write through」即可。

其實上面的Bus/Device改成VIRTIO的話,一般來說效能會更好,因為這是虛擬裝置原生的通道,而非模擬出來的IDE或SATA。

修改既有的虛擬機器 / Revise the disk disk configuration for existed Virtual Machine

image

如果是已經建立完成的虛擬機器,那也可以修改硬碟的相關設定。首先我們先開啟該虛擬機器的硬體頁面(hardware),找到vmdk的那一顆硬碟。

image

選擇該硬碟,按下編輯按鈕(edit)。

image

在這邊修改硬碟設定。讓我們把原本的「Default (No cache)」設定改成「Write through」,然後按下OK。

image

這樣子就能夠正常啟動vmdk囉。

如何在沒有CPU虛擬化技術支援下開啟KVM? / How to run KVM virtual machine without CPU Virtualization Technology?

image

我是在自己電腦上以VirtualBox架設Proxmox VE來測試。在這種情況下,一般來說是不能啟動KVM的。這時候得要在「Options」中關閉「KVM hardware virtualization」選項,然後就能順利開啟。當然,這種情況下只能測試用,不能運作實際的作業系統。

要如何將qcow2轉換成vmdk? / How to convert qcow2 format to vmdk?

image

如果我們虛擬機器已經是以qcow2架設了,那難道就沒辦法使用vmdk的好處嗎?

別擔心,我們可以用qemu-img convert指令可以讓你把qcow2格式轉換成vmdk格式。首先我們要先切換到映像檔所在的目錄,Proxmox VE存放在local的資料夾,路徑為:

/var/lib/vz/images/[VMID]/

如果虛擬機器的VMID為106,則路徑為:

/var/lib/vz/images/106/

qemu-img convert指令用法如下:

$qemu-img convert -f qcow2 –O vmdk vm-106-disk-2.qcow2 vm-106-disk-2.vmdk

  • vm-106-disk-2.qcow2:來源的檔案
  • vm-106-disk-2.vmdk:輸出的檔案
  • -O是大寫的o,不是0

image

硬碟越大,轉換所需要的時間越久。轉換完成之後,可以看到原始的qcow2大小為33GB,而轉換成vmdk之後只剩下4.1MB。這就是vmdk的優勢。

如果要運作虛擬機器的話,要記得在虛擬機器的硬體(hardware)中把硬碟改為轉換後的vmdk那一顆硬碟,並且設定快取寫入為「Write through」,就可以正常開啟囉。確認運作正常之後,原始的qcow2就可以刪除了。


結論:虛擬化技術的相容性 / Conclusion: The Compatibility of VMDK image format

Proxmox VE使用的KVM,以及VirtualBox這兩種虛擬化技術都有提供對vmdk的相容。因此我們不僅可以用Turnkey Linux提供的虛擬應用範本,也能夠在VMware的Virtual Application???找到其他的虛擬應用範本。就算是容器虛擬化技術OpenVZ,也能用一些比較複雜的步驟將虛擬機器轉換成vmdk來輸出(雖然是這樣想,但其實難度跟P2V一樣,並沒有真的如上面用qemu-img轉換來得容易)。如果沒有特別的考量的話,以vmdk架設傳統的虛擬機器應該是不二首選,不過這還是無法跟容器虛擬化的OpenVZ與Docker相比就是了。

(more...)

內容分析、文本分析、敘說分析的差異 / The Difference between Content Analysis, Textual Analysis and Discourse Analysis

布丁布丁吃布丁

內容分析、文本分析、敘說分析的差異 / The Difference between Content Analysis, Textual Analysis and Discourse Analysis

image

做訪談就是質性研究?做問卷就是量化研究?其實訪談跟問卷都是研究方法(Method),研究的類型應該是基於他們背後的哲學背景,也就是方法論(Methodoloy)。儘管都是文本型資料(註),但是根據研究目的的不同,研究的方式也有很大的差異。以下介紹內容分析、文本分析與敘說分析的差異,歡迎底下大家來討論。

註:電腦界喜歡稱之為「非結構性資料」(unstructured / textual data),也是現在巨量資料議題中主要研究的對象。


書目資料 / Bibliography

游美惠(2000)。內容分析、文本分析與論述分析在社會研究的運用。調查研究-方法與應用8。上網日期:2014年4月21日,檢自:http://www.airitilibrary.com/Publication/alDetailedMesh?docid=10281649-200008-201207230020-201207230020-5-42

關鍵字 / Keywords

  • 內容分析
  • 文本分析
  • 論述分析 (我的筆記中翻譯為敘說分析,又有人稱為言談分析)

摘要 / Abstract

image

(由於是中文論文,我想就沒必要擺上全部的摘要,僅摘錄第一段)

內容分析、文本分析輿論述分析這類的研究方法近年來越來越受到社會科學研究的重視,然而現今台灣的社會研究,對世這方面的討論與實際運用,明顯不足;但本文也並不打算全面地解說在社會研究中進行內容分析、文本分析輿論述分析的方法與步驟,筆者寫作本文的問意,其實是於欲強調現今的社會研究,在今日多元方法交叉撿證 ( triangulation) 的研究策略已漸受重視之際,除了主流的社會調查方法以及質化取向的訪談或民族誌田野工作之外,各種不同的研究方法與技術,其實都應納入基礎訓練之中,以便使研究者能善用研究工具與不同的方法取徑,並對蒐集得來的資料有更進一步的掌握與分析,以臻研究之精進。


筆記全文 / Note Fulltext

Content Analysis 內容分析

哲學背景:Positivism 實證主義,知識存在於文本本身,拒絕先備知識與思辨

內容分析特色:

  • 客觀性:在研究過程中,每一個步驟的進行都必須基於釐訂明確的規則和秩序;
  • 系統性:內容或領目的採用和捨棄,必須符合始終一致的法則;
  • 定量性:分析內容可按規則對擬訂之類目和分析單位加以計量,用數字比較符號文字出現的次數,以達到準確的要求

批評:

  • 內容分析難以反映研究對象的真實:當分析者企圖由先拆解文本,將文本視為可供測量的單位(字眼、表現、陳述等) ,從而建立文本的意義時,事實上便已經搗毀他們所要研究的客體(Jensen & J ankowski, 1996)
  • 將大量資料量化為概念(概念化)的過程容易受人質疑:因此需要特別描述編碼者(coder)與編碼表的製作過程
  • 量化分析結果不一定與情境配合,而無法產生合理且具說服力的解釋:因此不應只統計字數頻率,而忽略了情境脈絡(context)
  • 內容分析僅對明顯訊息加以分析,不去處理潛隱的內容

(布丁註:任何以編碼來描述特定族群對象的概括行為的研究,以及序列分析都是這個類型的研究方法)

Textual Analysis文本分析

哲學背景:Social Constructivism 社會建構主義,知識是由集體產生的

文本分析特色:

  • 拆解與關連文本分析是將一文學作品拆解,觀察其部份之間是如何拼湊相合在一起 (seeing how the parts fit together)
  • 搭配社會價值的詮釋則是將與某()知識傳統相連的價值(理論架構),如心理分析思想、符號學理論、馬克思思想、社會學和人類學理論或女性主義思想等,文本進行詮釋
    image
  • 文本分析反映歷史意識型態趨勢
  • 互為正文性 (intertextuality) :欲掌握社會的因素及其與文本的互動,或者說欲連結社會結構與文本結構。
  • 語境分析 [(con)textual analysis]:考量到上下文脈絡與社會情境脈絡,適切地詮釋文本的社會意涵,避免斷章取義。 例如電影與文化研究中,著重分析文化、政治、制度或機構方面對於電影的影響,也就是關心其中的文化生產過程。

批評:

  • 缺乏系統化的方法論與分析方式,較難為人信服:可透過Griswold (1994)的文化鑽石(the cultural diamond)來進行分析:
    image
  • 詮釋方式容易受研究者的意識型態而造成主觀的一面之詞

(布丁註:國際比較研究通常是這個類型)

Discourse Analysis 敘說分析

哲學背景:Social Constructionism 社會建構論,世界是由敘說所建立的

敘說分析的特色

  • 不限於文本本身,還要分析文本建構情境:避免單純檢視「文本本身」,而應該將具有建構作用論述的社會歷史都納入分析,讓分析立論更有根據,且能提供更多洞見(insights)。因此文本分析是敘說分析的一部分
  • 敘說文件不僅反映規範,也形塑規範:人類的行為是基於社會結構中產生,但反過來也建構了社會結構(Smart, 1997)
    • 拒絕因果性:但是需注意敘說分析容易將歷史與社會拆解成隨機與不確定性,拒斥歷史與社會的可理解性、因果的規律性、解釋性的機制(Best & Kellner, 1992)
  • 兼顧微觀與鉅觀的連結 (the micro-macro link):若能將文本與社會脈絡都廣泛且有系統地加以分析,便能深刻地掌握其社會意涵與運作機制,達到其他研究方法難以兼顧的成果
  • 著重敘說上的重現(權力架構、社會情境),而不像實證主義把文本作為管道或媒介

批評:

  • 與文本分析相同,許多研究都缺乏方法論的說明,只有分析結果,而主觀、直覺的詮釋分析常引來批評:
    • 應是基於可信的實證資料,之間的交叉驗證 (triangulated empirical materials that are trustworthy, Denzin, 1994)

(布丁註:個案分析屬於這一類型。)


內容分析、文本分析、敘說分析的比較 / Analysis of Content Analysis, Textual Analysis and Discourse Analysis

Content Analysis 內容分析 Textual Analysis 文本分析 Discourse Analysis 敘說分析
哲學背景 Positivism 實證主義 Social Constructivism 社會建構主義 Social Constructionism 社會建構論
特性
  • 量化分析
  • 拆解與關連
  • 搭配社會價值的詮釋
  • 互為正文性
  • 語境分析
  • 分析文本的建構情境
  • 敘說形塑規範
  • 拒絕因果論
  • 兼顧圍觀與鉅觀的連結
批評
  •  無法精確反映情境脈絡
  • 缺乏系統化的方法論
方法論上的問題與改進
  • 概念化不易:需規範編碼者與編碼表
  • 可搭配文化鑽石架構進行分析
  • 應基於可信實證資料的交互驗證
研究目的:探索 透過文本反映的知識表徵,來理解外部世界 以文本對某社會價值互為正文的關係,來補強某社會價值的世界 文本及其相關建構脈絡,及能建構世界
分析對象 文本拆解:字句、概念 文本與社會價值的關聯 文本與建構脈絡

布丁補充

適用資料 抽樣資料 反映社會價值的資料 獨特性資料
示意圖 image image image
可推論對象 (適用於大部分的外部世界) (適用於與社會價值上) (獨特無法推論)
推論適用時間 (世界時常改變,抽樣代表性逐漸下降) (社會價值存在就持續有用) (歷史地位上獨特地位)
題目舉例 發展社運中的參考服務 從社運中的參考服務反思政府公開資訊 太陽花學運中的參考服務
研究目的 探討在社運進行參考服務的重要性與實施方式 規劃先導性服務,以蒐集改進建議 探討政府公開資訊的定義 從社運中的參考問答對政府公開資訊進行反思 對於政府公開資訊重新定義 探討太陽花學運的來龍去脈 探討在太陽花學運中實施參考服務的緣由與進行方式 探討在太陽花學運中參考服務問答的來龍去脈
(more...)

Docker到底哪裡比OpenVZ好? / Why Docker is better than OpenVZ?

Docker到底哪裡比OpenVZ好? / Why Docker is better than OpenVZ?

image

要說近年來虛擬化的革命性技術,大家都會講說是Docker,但是OpenVZ卻被遺忘在歷史的洪流中。由於Proxmox VE的緣故,我很常使用OpenVZ容器虛擬化技術。到底Docker是哪裡比較好呢?以下就讓我姑且做個簡單的比較吧。


Docker的入門手冊 / Guide to Docker

同樣是使用Container容器虛擬化技術,每次看到Docker 的熱門程度大幅度超越OpenVZ的時候,作為OpenVZ愛用者的我總是百感交集。最近利用Google Book看了一下GitBook中的《Docker —— 從入門到實踐­》,赫然發現……Docker真的很厲害,竟然把我想要實作的功能都內建了!

image

Docker到底哪裡好? / Advantages of Docker

跟我很熟的人應該都常常在聽我講OpenVZ的優點,主要是全虛擬機器封裝、運作快速等等。Docker作為OpenVZ的後起之輩,同樣採用容器虛擬化技術,但是在運作效率、資料管理、網路管理與映像檔發布上又有更好的作法:

效率部分 / System Efficiency

OpenVZ跟Docker採同樣的技術,但Docker在運作APP(不是手機的APP)時,只會啟動相關的process,因此資源消耗更低。細節請看5.1. 啟動

資料管理 / Data Management

OpenVZ是完整封裝一個虛擬機器,但Docker則是將一個虛擬機器拆分成多個層次:映像檔(包含作業系統)、資料卷或資料卷容器(存放設定檔與運作資料)。因此可以架設多個虛擬機器,但是存取同樣的資料卷,以達到分散式運作的架構。細節請看7.2. 資料卷容器

從這篇建置MongoDB Docker虛擬機器的教學來看,甚至連文件型資料庫(大多數關聯式資料庫都是文件型)的資料庫檔案都可以掛載在資料卷上。這個意思是說可以取代資料庫的高可用架構HA了嗎?

我現在在OpenVZ上使用NFS掛載,並另外架設資料庫HA,但是操作順序比較複雜,不是很好用。

網路管理 / Network Management

Docker內建連接埠轉遞的功能,細節請看9.4. 端口映射實作。雖然後來Proxmox VE也把連接埠轉遞做到Firewall裡面,但操作上仍比較麻煩。

我現在是架設Zentyal路由器來控制連接埠轉遞。優點是可以加上Pound實作反向代理伺服器,這就是Docker無法匹敵的功能了。

映像檔發佈與保存庫(倉庫) / Publish Image & Repository

Docker採用git版本控制技術來發布影像檔,官方也有Docker Hub集中保存的倉庫,細節請看 6. 倉庫。相較之下,OpenVZ的虛擬應用範本只能在論壇中自行貼上連結,連上傳空間都要自己想辦法。就算一個OpenVZ的虛擬應用範本只要200MB左右,要找地方擺放也是個麻煩。更何況版本一修改就要重新打包上傳,非常麻煩啊!

Docker的其他資源 / Resource for Docker

Docker的網頁圖形化管理介面:Panamax / Web GUI Management Tool for Docker: Panamax

marketing_screen_03_big

以前我會嫌Docker都要用指令來操作,還是很不成熟。就算CoreOS多穩定,也不能解決管理上的問題。但是現在已經出現像是Panamax這樣子的網頁管理工具,可以免去學習指令操作的學習曲線。

在Windows上運作Docker:Boot2Docker / Run Docker in Windows: Boot2Docker

0Z13V137-2

就連Windows上也可以直接運作Docker了,運作一個Docker只要佔用27MB的記憶體,並且只需要5秒就能起動,詳細請看這篇Boot2Docker的說明,或直接到Boot2docker專案首頁下載。


結語 / Conclusion

因此越看越覺得Docker真是令人心動,是不是該來裝個Core OS搭配網頁管理介面Panamax來玩玩看Docker呢?

備註:這篇本來只是想在Facebook上隨便寫寫,可是想說心得文應該寫在Blogger中,所以改用Android上的Blogger APP撰寫草稿,沒想到越寫越長。草稿打完之後改到電腦上用Windows Live Writer來撰寫,加了大量的鏈結與圖片,就變成這一篇一千多字的心得隨筆。根據以上經驗所獲得的結論是:還是用Evernote來寫比較好,Blogger的APP並不是一個稱職的豐富文本(Rich-text)編輯器啊。

(more...)