:::

mRemoteNG使用外部工具來進行SFTP連線 / Setup mRemoteNS’s Ext. App to Integrate SFTP

mRemoteNG使用外部工具來進行SFTP連線 / Setup mRemoteNS’s Ext. App to Integrate SFTP

2014-08-13_172107 - Copy

本文介紹mRemoteNG的外部工具使用,以FileZilla Portable來建立SFTP外部工具為例,並提供整合多個外部工具的mRemoteNG Portable下載

This article introduces the external tool (Ext. App) of mRemoteNG. I used FileZilla Portable as example to demonstrate how to create a SFTP Ext. App in mRemoteNG. Finally I shared my mRemoteNG portable with many Ext. App integrated.


網管人員的需求 / Tools of Server Management

作為機房管理人員,時常會使用各種網路連線方式控制伺服器。管理Windows伺服器,一般會使用遠端桌面連線;管理Linux伺服器,那就要用PieTTY來做SSH連線,或是用RealVNC來連到VNC遠端桌面;有網頁界面的伺服器,那就用瀏覽器開啟HTTPHTTPS網頁。

但是當伺服器一多,要使用的工具複雜起來,而伺服器的連線資訊也散落在各個工具中,使用起來不甚方便。這時候我們就需要一個整合性的管理工具。市面上有些是要收費的,像是Remote Desktop ManagerroyalTS (繼承mRemote之後的收費平臺);免費的則有Terminals,以及本文要講的mRemoteNG

mRemoteNG是什麼? / What’s mRemoteNG

2014-08-13_172621

mRemoteNGmRemote的分支版本,它是一個開放原始碼、具頁籤整合、多通訊協定、遠端連線的整合性管理工具。由於mRemote在2012年之後就停止開發了,所以接下來是由mRemoteNG接手繼續發展。

mRemoteNG支援以下幾種通訊協定:

儘管mRemoteNG支援了很多通訊協定,但是卻沒有支援最重要也是最好用的遠端檔案管理通訊協定:FTP與SFTP。沒關係,mRemoteNG另一個強大的地方,在於他提供了可以彈性設定的外部工具(Ext. App)。我們可以自定義一些常用的應用程式,例如能連線到FTP或SFTP的FileZilla,將之整合成為mRemoteNG的一部分。

外部工具的運作原理 / What is Ext. App?

2014-08-14_005738

mRemoteNG的外部工具是透過Windows的指令列命令來開啟外部工具,然後再把連線位址(Hostname)、連接埠(Port)、使用者名稱(Username)與密碼(Password)等連線設定以參數傳入該工具。

要在mRemoteNG使用外部工具的話,我們需要做幾件事情:

  1. 確定外部工具的所在路徑。我建議將外部工具放入mRemoteNG資料夾中。
  2. 在mRemoteNG中設定外部工具。
  3. 新增連線時,使用外部工具。

以下我以FileZilla來建立SFTP連線使用外部工具為例,介紹如何在mRemoteNG中使用外部工具。

Step 1. 設置外部工具:FileZilla Portable / Setup Ext. App: FileZilla Portable

2014-08-14_100307

要使用外部工具之前,要取得外部工具的程式或腳本。比起原始的FileZilla Client,我一向喜歡使用FileZilla Portable

2014-08-14_011523

下載完之後,請在mRemoteNG底下開啟一個新目錄,叫做「External Applications」,然後將FileZilla Portable安裝該目錄。其中[mRemoteNG]是mRemoteNG的安裝目錄:

[mRemoteNG]\External Applications\FileZillaPortable

Step 2. 設定外部工具 / Configure Ext. App

接下來我們要在mRemoteNG裡面設定外部工具。

2014-08-14_011118

先打開mRemoteNG,開啟Tools裡面的External Tools。

2014-08-14_011226

接著會顯示External Tools的頁籤。如果要新增外部工具,請在這頁內任意地方按滑鼠右鍵,顯示出「New External Tool」。這個設計很容易讓大家迷路,很少人想到是藏在右鍵選單裡面。

2014-08-14_011049

然後會多一列可供設定的外部工具,請在下方外部工具屬性(External Tool Properties)輸入以下設定:

  • Display Name: SFTP
  • Filename: External Applications\FileZillaPortable\App\filezilla\filezilla.exe
  • Arguments: sftp://%Username%:%Password%@%Hostname%:%Port%%Userfield%
  • Options: 勾選Try to integrate

以下說明各欄位的內容:

檔案名稱 / Filename

檔案名稱(Filename)是指外部工具實際上開啟的程式。在此使用相對路徑,去開啟FileZilla Portable中實際上真的FileZilla Client程式的所在位置。

參數 / Arguments

參數(Arguments)是指要輸入外部工具的連線位址、連接埠、使用者與密碼等資訊。以SFTP來說,我們會須要SFTP伺服器主機的連線位址、連接埠(或是預設22連接埠)、使用者(預設可能是root)與密碼。而在mRemoteNG中,這些參數是以前後%的變數替代。目前我的知道可以使用的參數如下:

  • 連線位址:%Hostname%
  • 連接埠:%Port%
  • 使用者:%Username%
  • 密碼:%Password%
  • MAC位址(MAC Address):%Macaddress%
  • 使用者自訂欄位(User Field):%Userfield%

這些參數會在命令列中輸入到FileZilla,讓FileZilla啟動時自動進行參數的連線。那我們怎麼知道FileZilla可以輸入這些參數呢?剛好FileZilla就有提供命令列的操作方式。以SFTP連線方式來說,我們可以直接在後面加入「 sftp://%Username%:%Password%@%Hostname%:%Port%%Userfield% 」設定,就能夠連到SFTP。同樣的,要連到FTP的話,就是把開頭的通訊協定改成ftp即可。

選項 / Options

選項的部分有兩個。等待離開(Wait for exit)打勾時,外部工具結束會連帶的讓mRemoteNG的頁籤也會跟著關閉,但是在嘗試整合(Try to integrate)打勾時預設啟動;嘗試整合(Try to integrate)是將外部工具塞到mRemoteNG當中,成為頁籤的一部分,建議打勾。

好了,那我們就設定好一個外部工具,叫做SFTP了。接下來就是在新增連線時使用這些外部工具囉。

Step 3. 使用外部工具 / Ext. App Usage

mRemoteNG要連線到任何伺服器主機,都要先新增連線。

2014-08-14_102709

在連線(Connections)上按右鍵,選擇「New Connection」。

2014-08-14_102854

連線設定中,要在通訊協定(Protocol)的欄位選擇「外部工具」(Ext. App)。附帶一提,mRemoteNG的中文(繁體) (中華民國)翻譯居然翻成「結束. App」,所以我就換回英文界面了。

2014-08-14_103247

接下來大部分的欄位都會隱藏,只留下外部工具(External Tool)跟連接埠。External Tool欄位選擇剛剛新增的外部工具SFTP

2014-08-14_103453

接著我們填好其他的伺服器資訊。主要包括:

  • Name:連線的名稱
  • Hostname/IP:連線位址
  • Userame:使用者名稱
  • Password:密碼
  • Port:連接埠,SFTP預設是22
  • User Field:在此定義為遠端主機的預設目錄

2014-08-14_114221

然後就能夠在mRemoteNG裡面開啟FileZilla了!這是不是令人感到開心呢?


外部工具的其他應用 / Other Ext. App

看到這邊,你可以知道只要可以使用命令列,你就能夠把任何外部工具整合到mRemoteNG當中。

LazyWinAdmin在「mRemoteNG - External Applications」一文中整理了mRemoteNG可以使用的眾多外部工具。舉例來說:

  • nmap網路掃描、主機分析工具:Zenmap GUI
  • 瀏覽器:Firefox
  • Windows內建工具ping、tracerout

我還想到可以用瀏覽器開啟外部網路的檢查工具,例如APM Cloud Monitor (以前是Just Ping),它可以用其他的伺服器確認網站狀況PingDNS分析Traceroute。特別是當你區域網路可以連線之後,別忘了用APM Cloud Monitor來確認是否別人也可以連線。

2014-08-14_110235

而我把這些工具整合到mRemoteNG Portable版本中,順便整合進PieTTY,在此提供大家下載:

如果你有其他好用的外部工具,也歡迎在下面留言處跟大家討論、分享喔。(例如TeamViewer如何?


結語:使用mRemoteNG的心得 / Conclusion: Usage Experience of mRemoteNG

原本一開始覺得mRemoteNG介面不好用,而且連線功能也沒有像是Remote Desktop Manager有著超級多種的連線工具可供使用,讓人覺得mRemoteNG真的是湊合著用的感覺。

可是我在前年寫完「mRemoteNG使用PieTTY與安裝XULrunner」之後,我因為意外發現LazyWinAdmin的教學,很快就搞懂了怎麼使用外部工具。當時甚至妄想使用ownCloud同步工具,同步mRemoteNG Portable,讓每一臺電腦都可以輕鬆地管理大量的伺服器。可惜Portable還是會有路徑上的問題,只好因此作罷。

直到現在,mRemoteNG已經是我最重要的網管工具。大量伺服器的連線資訊、好用的資料夾分類、靈活的外部工具,這些特色構成了mRemoteNG的無限可能性。真心推薦使用Windows的網管都來使用mRemoteNG!

(more...)

Zotero引用文獻樣式:中文、英文APA 5th資料來源註 / Zotero Citation Style: Chinese & English APA 5th Tables & Figures from Another Source

Zotero引用文獻樣式:中文、英文APA 5th資料來源註 / Zotero Citation Style: Chinese & English APA 5th Tables & Figures from Another Source

2014-08-12_215600

在論文中引用的圖表如果是來自於其他的論文,那麼應於圖表之後註明資料來源。資料來源註與文中引用或文後參考文獻格式不同,為此我特別設計了Zotero的APA資料來源引用文獻樣式,以下介紹如何使用。

In research paper, if you want to cite table or figure from another paper, you have to note the source at foot of the table or the figure. I developed a citation style of Zotero to create the source note. This article describes how to use it.


資料來源註 / Note From Another Source

2014-08-12_213303

根據張保隆與謝寶煖於2006年出版的「學術論文寫作:APA規範」,APA第五版規範了如何在論文中引用圖表的方法。摘錄文中敘述如下:

資料來源註英文以"Note. From…",中文以「資料來源:……」開始。但是書目資訊的呈現方式有別於參考文獻之寫法,將書名或是文章篇名提到最前面,各資訊項目之間均以逗號分割。

因此圖表的引用方式會與一般文後的參考文獻不同。舉例來說,原本英文格式的參考文獻為:

Chen, C.-M., Chen, Y.-T., Hong, C.-M., Liao, C.-W., & Huang, C.-M. (2012). Developing a Taiwan library history digital library with reader knowledge archiving and sharing mechanisms based on the DSpace platform. The Electronic Library, 30(3), 426-442. doi:10.1108/0264047121124168

在圖表引用時則是:

Note. From "Developing a Taiwan library history digital library with reader knowledge archiving and sharing mechanisms based on the DSpace platform," by Chen, C.-M., Chen, Y.-T., Hong, C.-M., Liao, C.-W., & Huang, C.-M., 2012, The Electronic Library, 30(3), 426-442, doi:10.1108/02640471211241681.

由於資料來源註的格式有所不同,所以我額外又寫了APA資料來源註引用文獻樣式,供大家下載使用。


下載與安裝 / Download and Install

檔案下載連結如下:

安裝方式請參考「Zotero引用文獻樣式:中文、英文APA合併版本」。為了區別中文與英文格式的不同,在輸出APA資料來源註之前,書目請確實填寫「語言」欄位。中文就填寫「zh-tw」或「zh-cn」,英文則填寫「en-us」或省略。

使用 / Usage

由於同一份文件中Zotero無法同時使用兩種引用文獻樣式,因此APA資料來源註必須以複製貼上的方式取得。還好APA資料來源註都固定在圖表的下面,所以管理上比較不會有文中引用與參考文獻需要前後對照的困擾。

將書目匯出到剪貼簿的做法如下:

  1. 選擇書目後按右鍵,選擇「從選取的項目來建出參考書目」
    2014-08-12_221301
  2. 在建立參考書目對話視窗中,選擇APA資料來源註的引用文獻樣式「Chinese APA 5th edition note from」,選擇輸出格式為「Bibliography」,輸出模式為「複製到剪貼簿」,然後按下OK。
    2014-08-12_221658
  3. 在書目上按右鍵,「加入筆記」。
    2014-08-12_221806
  4. 然後再把資料來源註貼到筆記中。
    2014-08-12_221820
    這樣未來要引用時,就可以從筆記直接複製、貼上到論文中了。
  5. 複製到論文的引用圖片後面使用。
    2014-08-12_222024

結語:APA第六版資料來源註格式不同 / Conclusion: APA 6th Updated the Format of Note From Another Source

根據How to Caption Tables & Figures from Another Source這篇的介紹,APA 6th的資料來源註改成了:

Note. Descriptive note. Adapted [or Reprinted] from “Title of Article,” by F. M. Author and C. D. Author, year, Title of Journal, volume, p. xx. Copyright year by the Name of Copyright Holder. Adapted with permission.

例如:

Note. Values are percentages. Reprinted from “Hope and Social Support as Resilience Factors Against Psychological Distress of Mothers Who Care for Children With Chronic Physical Conditions,” by T. V. Horton and J. L. Wallander, 2001, Rehabilitation Psychology, 46, p. 387. Copyright 2001 by the Educational Publishing Foundation. Adapted with permission.

其中最重要的就是多了一個欄位:「Descriptive note」。而目前Zotero在引用時並沒有考量到資料來源註,所以這部分比較難以實作。

儘管如此,我目前的APA資料來源註格式仍是以張保隆與謝寶煖於2006年出版的「學術論文寫作:APA規範」為準,要遵守那個版本就看你個人囉。

(more...)

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