google code-beautifer

星期三, 12月 22, 2010

Synergy

Synergy

Synergy 可以想成是軟體做的KVM,讓你在多部不同操作系統的電腦之間共用鍵盤和滑鼠,而仍然以各系統自身的螢幕顯示資料,正常當鼠標移到螢幕邊緣時會停住,而兩台電腦經Synergy 連接後,當滑鼠從一個螢幕滑動超過邊緣時,他會跳到另一個螢幕。而且當滑鼠在另一個遠端(client)螢幕上的時候,本地(server)鍵盤的輸入就會直接送到遠端去,也支援個別互相剪貼功能(不過目前是沒有加密的),而且遠端螢幕上的一些功能如compiz的旋轉方塊預覽也相容。Synergy 透過網路把多部電腦連起來的。除此之外,無需特別的硬體。。這對一些需要即時監控螢幕,但是螢幕更新傳輸的資料量太大,比如說按一個鍵去播放看電影這些不適合用NX 或vnc 方式遙控的場合最好用。

大部份的 linux 發行版都己提供 Synergy 套件的線上安裝。mac 跟 windows的環境去官方網站 http://synergy2.sourceforge.net/直接下載來裝。

編寫Synergy 設定檔


通常儲存在 ~/.synergy.conf 。設定檔的內容,需要設定三組section 參數:分別是screens ,aliases 和links。
screens 裡面填入電腦的名稱, screen代表你整個架構裡有多少個螢幕(screen,其實是指電腦,不論一台電腦接多少台螢幕,還是用一個screen名稱 ),那些電腦在Synergy下叫什麼名字是由你自己定義的,跟什麼網路名無關。本例中有兩個screen , 分別命名為 mdv和macos 。要是screens那裡用的電腦都是用hostname的話,alias那邊就不用指定了

alias 裡面指定 screen 們電腦名字所對應的網路位置代稱,用hostname 或 IP 均可。如例中桌機 mdv 在 192.168.1.1 。在 dhcp 動態分派位址的網路環境中,我們沒有固定的 ip 可對應時,可以用hostname 來設代稱。

links 裡面指定以 right , left , up , down 四個關鍵字代表相對應此電腦右左上下四個位置的對方電腦。指定一旦滑鼠超過了目前螢幕範圍,該跳到對應目前電腦screen 所在(桌面上的)實際位置上的那台電腦:

為方便解釋,假設有兩台電腦要用 Synergy 連接。桌機 mdv (IP:192.168.1.1)在右手邊,macos在左手邊,這樣為例的設定檔是這樣的:

section:screens
    macos:
    mdv:
end

section:links
    macos:
        right = mdv
    mdv:
        left = macos
end

section: aliases
    mdv:
        192.168.1.1
    macos:
        192.168.1.2
end

在Linux 下安裝 quicksynergy 套件,就可以用 Gui 介面方式來方便的設定。

執行


Synergy 是透過網路把多部電腦連起來的。所以要確定電腦之間的網絡連線正常。防火牆參數必需完全正確設定 Synergy 才能運作。 Synergy 預設用 port 24800 ,設定連線前確保 tcp port 24800 沒有被防火牆擋掉。

安裝 Synergy 後我們會得到兩個執行檔 : synergys 和 synergyc ,synergys是 server , synergyc 是client 。在 Synergy 裡的 Server指的是分享出鍵盤、滑鼠的主控端。看是要用那台電腦當 server 分享鍵盤滑鼠,那台電腦當client 被控制。以筆記型電腦跟桌機分享為例,桌機的鍵盤、滑鼠比較好用,所以一般是把桌機當server,但是也可以倒過來用。因為是deamon,倒不用堅持先啟動server 再啟動client。

以下的執行操作適用於 Mac 和 Linux 系統:
要啟動 Synergy server 的話,執行
synergys
用參數 -c 指定 Synergy 參考那個設定檔來啟動 service。比如
synergys -c ~/MySynergys.conf
不加的話預設是參考 ~/.synergy.conf

要從 client 連到 server 的話,我們執行 synergyc 之後接要連去的電腦位址。本例中是
synergyc mdv
啟動時不加參數是預設在背景執行。一開始遇到問題的話,可以在啟動時加上-f參數去看錯誤訊息,如執行 Synergy server是 synergys -f

預設為 scroll lock 為解除狀態,設定好之後 mdv 機器為右邊機器,macos 為左邊機器,此時滑鼠就可以兩台電腦移動。

星期六, 12月 18, 2010

GUI 的檔案管理跟終端機相互運作

就算有在用GUI 的檔案管理軟體,程式設計師常常會需要在終端機下跳到某個檔案所在的子目錄去工作,krusader 可已有一行工作列輸出入,不過那不好用,emacs 也可以開dird 管理檔案也沒錯,但是用到一些東西管理檔案還是用krusader 或是nautilus 比較直覺。所以我需要一個方法把GUI 的檔案管理程式中的檔案icon 用滑鼠拉到終端機裡,就可以讓終端機裡的shell 跳到對應子目錄的方法。目前還沒看到拖拉icon 支援手勢的用法,。所以得自己來。

一般Linux 系統對桌面支援有設定好的話,不管是gnome 或kde的程式如gnome-commander,nautilus 或krusader,只要把檔案icon 用滑鼠拉到終端機裡,就可以讓終端機顯示該檔的完整路徑名。只要自己設定一個程式,去處理後面跟著拉進來的某個檔案icon對應所在的子目錄,這樣就可以了。bash 下有dirname 這個命命是可以傳回檔案的完整目錄路徑名。但是直接用
alias fu='a=`dirname \$1` ;cd $a'
這樣的方式會出問題,我也不太清楚為何類似的方式不去動到cd $a的方式卻就沒事?可能是Eval 出問題。後來我找到可改用所謂shell function 的方式,其實跟alias 的方式很接近,。但是一般書都沒提這個用法。
fu () {
a=`dirname $1`
cd $a
}
這樣就可以了。但是alias 問題的源頭我一時還時間去追溯 。function 跟變數很像,用set 跟unset 來設定。(其實照上面寫法就好,是不用去管什麼set 跟unset的其他細節)

每次都用的話,可以把這定義寫到 ~/.bash_profile 或 /etc/profile 下。我在想等gnome-shell穩定了,配合某種手勢來作這件事是最好不過的用法。

星期二, 12月 07, 2010

OpenOffice.org 的英文文法檢查工具

OpenOffice.org 的英文文法檢查理論上有兩個extension:
LanguageTool
http://extensions.services.openoffice.org/en/project/languagetool
跟After the Deadline Grammar Checker
http://extensions.services.openoffice.org/en/project/languagetool
After the Deadline 也是GPL open source 。網頁有註明編好的OOoextension是 Free for Personal Use

安裝

下載oxt檔之後,在OOo主選單下選Tools->Extension manager->Add ,然後在檔案選取視窗下去下載路徑選檢查工具的oxt檔。然後視情況選開放給所有使用者,還是只給自己用。這樣就可以完成安裝了。

After the Deadline

After the Deadline Grammar Checker 需要OOo 裡設定好 Sun 版本的java路徑,裝完要重新啟動OOo。要是讓OOo 他邊打邊檢錯,會看到除了錯字檢查跟以往一樣會用紅色底線顯示,文法可能的錯誤會用藍色底線顯示。After the Deadline的規則是引用新聞台編輯的法則,我看了一下給我文章的建議,還抓出不少不適合的用法有些是合於文法,但不良的寫作習慣,這得看寫作領域來調整,新聞台編輯的法則不見得適用於理工科寫作。

After the Deadline有一點討厭的是他是網路服務,換言之要是寫作時沒有網路用,那就白搭了,所以最好還是得想辦法把LanguageTool裝好。

LanguageTool

但是 LanguageTool 有問題,我無法讓他正常運作,感覺上可能要調校,所以我目前先關掉LanguageTool ,只用After the Deadline

其他的技巧

我發現用排版軟體寫長篇英文文章,特別是用上了兩欄式又是左右平衡擴張填滿的格式時,往往字與字中間若多或少打空格是很難看得出來的。After the Deadline並不會抓出這個問題來,除了自己去LanguageTool修改文法檢查規則之外,有一個變通方式是把文章匯出成Latex 格式。Latex 格式在超過一個空白之後的連續空白,會需要加上逸出字元 \ 。這個字元在一堆英文字母裡算是相對好辨認的。 用眼睛描一下匯出Latex檔裡,標點符號後面的空白是否接了或少了該有的 \字元就可以抓個九成。