2011年12月8日 星期四

Mac OS 10.7 Lion新增Windows網路芳鄰印表機

雖然我已經脫離Windows作業系統許久了,但就算投靠Ubuntu與Mac OS多年,要在非Windows新增印表機還是相當麻煩。方法無非就是找到印表機本體,透過上面的小按鈕跟小螢幕中進入設定尋找印表機的IP、或者列印設定頁出來後再看上面的IP是啥。最近發現在Mac OS上有更快速的方法可以新增印表機。

1. 首先進入"系統偏好設定" => "列印與掃描",然後點選選單下方的+號"新增印表機"
2. 接著按著鍵盤的Control鍵點選"預設值"按鈕,會跳出隱藏版的選單,點選"自定工具列"


3.將"進階"往上拖拉到工具列後點選"完成"


4. 接著在"類型"中選擇"Windows....",並在URL中填上該印表機在網路芳鄰上的位置後即可加入


參考資料:
Mac OS X: How to manually add a Windows shared printer

2011年12月5日 星期一

Mac OS 10.7雙網卡設定

由於公司內網與外網切開,但我手頭上又只有一台電腦,只能採用雙網卡的策略。之前這方法在Windows與Ubuntu都是無往不利,然而卻在Mac OS上踢到鐵板,不知為何路由似乎總是被Mac OS牢牢抓住沒辦法修改,或者是路由不通。

理論上理想的設定方式應該是預設gateway是外網的gateway,而內網則指定特定的網段走內網的gateway,但Mac OS不論如何都會硬塞一個預設的gateway。在Mac OS中如果超過一個以上的網路設備時,就需要設定設定服務順序,否則可能會導致routing錯亂,而且這個服務順訊還會影響到使用DNS Server的順序。

所以正確的作法就是將內網的網路卡設定為優先權最高。設定方式就是進入到"系統偏好設定"的"網路"中,點選網路設備清單下面的選項按鈕,選擇"設定服務順序",然後將內網的網路卡拉到外網的網卡上面。


接著在終端機下指令將所有default gateway通通刪除。

sudo route delete default <內網gateway ip>
sudo route delete default <外網gateway ip>

這時候輸入netstat -rn指令看routing table會看到還殘留著一個default gateway無法刪除,理論上在調整完服務順序後這個default gateway應該會是外網的gateway。

接著輸入指令新增內網的路由

sudo route add -net <內網的網段/netmask> <內網的gateway ip>

這時候應該已經可以正常存取內網跟使用內網的domain name了。但外網還無法連線,原因在於這個default的gateway的Refs小於內網gateway的Refs。因此還需要手動在將外網的default gateway加回去。


sudo route add default <外網的gateway ip>

理論上應該就大功告成了

2011年11月29日 星期二

如何把右邊的Alt鍵在ubuntu中改為Win (Super)鍵


有用過IBM鍵盤的人都會著迷於那舒適的回饋手感以及獨家秘方小紅點,然而IBM的鍵盤卻有著一個最大的致命缺陷,就是這鍵盤缺乏著Win (Super)鍵。在Windows環境中頂多只是少了一個叫出"開始"的快速鍵而已,然而在ubuntu環境中Win (Super)鍵卻是擔任著許多重要的任務,包括切換視窗等等重要的快捷鍵,都需要搭配Win (Super)鍵搭配服用。

在這種狀況下我也試圖尋找解決方案,無意間發現有高手拿右邊的Alt鍵來轉換為Win (Super)鍵使用。這真是相當聰明的辦法,畢竟若要將左邊的Alt鍵拔除實在不太可能,但我相信絕大多數的人卻都很少使用到右邊的Ctrl鍵以及Alt鍵,因此拿右邊的Alt鍵當作Win (Super)鍵使用再聰明不過了。

在ubuntu中我們需要使用到xmodmap這個程式來修改X Window中的鍵盤與滑鼠對應。

1. 安裝xmodmap
首先確認您目前是否已經安裝好xmodmap,但通常ubuntu安裝好以後預設都是已經有安裝了。如果在terminal中沒有xmodmap可以執行,就需要安裝x11-xserver-utils。
sudo apt-get install x11-xserver-utils

2. 確認目前的keymap
先在terminal中執行xmodmap確認ALT_R是落在mod1中(如果不是,稍候的.Xmodmap設定檔就需要做相對應的調整)。


接著確認你右邊的Alt鍵的keycode是108(轉為十六進位就是上圖看到的0x6C),需要透過xev這個程式。在終端機執行xev後會跳出一個白色視窗,內有一個黑色小框。接著按下右邊的Alt後終端機就會跳出相對應的資訊,而其中的keycode欄位應該要出現108(如果不是108,稍候的.Xmodmap設定檔就需要做相對應的調整)。


3. 設定.Xmodmap如下


接著將此檔案存放在使用者目錄下,只要每次開機就會自動生效。若要馬上生效,直接執行xmodmap指令讀取設定檔亦可。
$xmodmap .Xmodmap

參考資料
xmodmap man page
xev man page
Ubuntu and my favourite keyboard IBM SK-8835
How to set right Alt to work as a Win(Super) key?

2011年11月11日 星期五

Ubuntu 12.04安裝之後遇到的各式各樣問題

本篇持續新增與更新中.......


1. 沒有終端機
安裝gnome-shell
$ sudo apt-get install gnome-shell

2. 需要設定字型
$ sudo apt-get install gnome-tweak-tool
安裝後尋找進階設定值(Advanced Settings)程式並開啟就可以找到相關字型設定
3. VMWare Player有問題
參考http://ved-antani.com/?p=30

4. 找回Dropbox等等系統列圖示
參考http://jonny.ubuntu-tw.net/2011/04/gcin-on-ubuntu-1104.html

5. 安裝hime
新增repository如下(參考)
sudo add-apt-repository -y ppa:hime-team/hime
deb http://debian.luna.com.tw/debian ./
deb http://debian.luna.com.tw/ubuntu ./

$ sudo apt-get install hime
$ sudo im-switch -s hime
$ update-alternatives --config xinput-zh_TW

選擇hime

在"系統設定值"的"語言支援"選擇"鍵盤輸入法系統"







然後登出重新登入即可生效

如果發生ctrl + space無法切換輸入法這點,我Google查了很久都找不到原因也無法解決,後來無意間發現只要別將EN英數設定為預設輸入法即可

6. Pidgin在使用Alt + Tab切換應用程式時都沒有出現
這個是ubuntu目前已知bug,可用下列work-around解開(參考)
在Pidgin設定中將"系統工作匣圖示"開起來就可以了(忘記要不要登出重新登入才會生效)

7. 安裝GIMP 2.8
由於Ubuntu預設都是使用GIMP 2.6,想使用2.8就需要重新安裝
新增下列repository
$ sudo add-apt-repository ppa:otto-kesselgulasch/gimp 
$ sudo apt-get update
$ sudo apt-get install gimp

8. APT相關
如果出現"WGPG errorhttp://ppa.launchpad.net intrepid Release: The following ...the public key is not available: NO_PUBKEY 3B81A3FBA47394CE" 類似的錯誤訊息,只要重新取得key就好
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B81A3FBA47394CE

如果要刪除某把key
sudo apt-key del 3B81A3FBA47394CE

如果出現"gpg: no default secret key: secret key not available" 類似的錯誤訊息,就把快取清光重拿
$ cd /var/lib/apt
$ sudo mv lists lists.old
$ sudo mkdir -p lists/partial
$ sudo apt-get clean
$ sudo apt-get update

另一種作法
$ gpg --keyserver pgpkeys.mit.edu --recv-key  1C1E55A728CBC482    
$ gpg -a --export 1C1E55A728CBC482 | sudo apt-key add -
參考: http://blog.wu-boy.com/2012/05/how-to-resolve-apt-get-no_pubkey-gpg-error/ 

若是出現 "W: GPG error: http://ppa.launchpad.net precise InRelease: File /var/lib/apt/lists/....... doesn't start with a clearsigned message" 
通常都是中間的proxy擋住或是gateway有動手腳,嘗試看看
$ sudo rm /var/lib/apt/lists/* -vf
$ sudo apt-get -o Acquire::http::No-Cache=True -o Acquire::BrokenProxy=true update
或者是換台proxy

如果試了半天還是不行,就乾脆直接到Ubuntu軟體中心(Ubnutu Software)裏面, 設定軟體來源(Software Sources)的下載自(Download From)改為主要伺服器(Select Best Server)

Ubuntu 10.04設定雙螢幕的主螢幕

進入Monitors設定
今天終於把Ubuntu的雙螢幕(dual-monitor)弄起來,但卻發現按照系統的設定無法設定哪一邊是主螢幕。一般在Windows環境中,各顯示卡廠商出廠的驅動程式都可以設定主螢幕的選項。

沒有主螢幕的選項可以選擇
因此稍微在網路上搜尋了一下找到了解決方法,只要透過xrandr指令就能搞定。

1. 先使用xrandr找到目前有的顯示卡輸出選項
$ xrandr
目前有VGA1與HDMI1兩個螢幕
2.透過xrandr設定主螢幕,指令下完結果馬上就會生效了
    $ xrandr --output HDMI1 --primary

3.如果還要調整解析度、螢幕位置、或者鏡面螢幕等等,就直接在Monitors Preferences裏面設定就好
參考資料:
http://ubuntuforums.org/showthread.php?t=998591
xrandr man page

2011年10月17日 星期一

Apple Mac as client of synergy by using QuickSynergy

本來Mac OS上最受推荐的Synergy軟體當屬SynergyKM,然而自從Lion問世以後似乎災情慘重,在我的環境確實也是有同樣的問題,看來在新的問題被修正之前可能還是得回頭用QuickSynergy了。

然而今天不知為何怎麼弄就是無法讓QuickSynergy在Mac上能夠乖乖的作為一個正常的client工作。經過了一番搜尋,才找到原因,這問題不知道是系統的限制或是個bug。

原來不知為何,Mac版的QuickSynergy沒辦法讓使用者在client端自行指定Screen name,才會怎麼連都連不上server。因為Mac的QuickSynergy會強迫指定hostname作為client,所以必須反過來設定server端,讓server的設定"屈就"於client的hostname。

要得知Mac的hostname,就是先打開"系統偏好設定" => "共享"



看到上方的"電腦名稱",旁邊有個"編輯",直接點開


包含後面這段.網域的,整段加起來就是要放在server端設定的screen name



以Ubuntu作為Synergy的server為例,大概就是需要像這樣,接著執行server。回到作為cient端的Mac,就是直接執行就可順利連上server了。



參考資料
如何設定Mac上的QuickSynergy Client設定

2011年9月30日 星期五

iperf3測試網路負載

iperf是一個透過tcp測試系統網路能力的工具,由於可以專門測試tcp層不管application layer的干擾,因此特別適合用於針對系統底層網路能力來測試,例如網路卡、驅動程式、作業系統等等。

目前iperf已經出到3.0版,還在beta中,不過根據經驗之前版本的iperf反而不是很穩定,因此建議還是以iperf3作為測試的工具。

安裝
可以到此處下載
解開後經過編譯與安裝就可使用

註解: 如果使用ubuntu,需要先安裝build-essential uuid-dev,然後才能編譯與安裝
apt-get install build-essential uuid-dev
./configure
make
make install

執行
執行架構可分為client與server兩端

在server端執行如下指令即可
iperf3 -s

在client端執行下列指令
iperf3 -c -t -i

進階參數設定
還有下列幾個進階的參數可以設定,但若要使用下列參數,則server與client都要同時下一樣的參數值才行
-w n[KM]  指定 TCP window size
-l n[KM] 指定 read/write buffer 大小(預設為 8k)
-Pn (大寫的P) client 端指定同時 (parallel) 跑幾個的 threads

結果
在server端與client端都會有結果出現,兩者會不太一樣,但相當接近
最後cilent的結果如下
[ ID] Interval       Transfer     Bandwidth
      Sent
[  5] 0.00-20.00 sec  80.6 GBytes  34.6 Gbits/sec
      Received
[  5] 0.00-20.00 sec  80.6 GBytes  34.6 Gbits/sec 
分別代表執行時間、總下載數(單位為byte)與平均傳輸速度(單位為bits)

參考資料
iperf3官方網頁
iperf2官方網頁
更詳細的教學網頁
Windows版本的教學網頁

2011年9月29日 星期四

使用httperf與autobench測量web server的performance

httperf是個可以用來協助對web server進行壓力測試與效能測試的工具。若是對系統底層進行修改或者需要瞭解效能,也可以透過此工具幫助測試。但httperf使用上並不是很容易,因此可以搭配autobench來使用。

1. 安裝

安裝httperf可到此處下載
如果是ubuntu可以使用下列指令安裝
sudo apt-get install httperf

安裝autobench
可到此處下載
如果是debian或者ubuntu,可以直接下載deb安裝
sudo dpkg -i autobench_2.1.2_i386.deb

2. 設定
在執行autobench的帳號下設定~/.autobench.conf

範例
low_rate  = 10 #從concurrent 10的connection開始
high_rate = 100 #最高到達concurrent 100個connection
rate_step = 10 #每次增加10個connection
const_test_time = 10 #每隔10秒增加一次
num_call = 1 #測試要跑幾次
timeout = 2 #response time超過2秒算失敗
output_fmt = tsv #結果的副檔名
httperf_add-header = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 ``\n``Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3 ``\n``Accept-Encoding: gzip, deflate ``\n``Accept-Charset: UTF-7,* ``\n``" #加上HTTP header


3. 使用
client端先開一視窗執行autobenchd --debug,此deamon也可以運行在另外一台機器上。client端在開另一視窗執行下列指令
autobench_admin --host1 --port1 --uri1 --single_host --client :4600 --file

範例
autobench_admin --host1 www.test.com --port1 1180 --uri1 /sleep.php --single_host --client test.machine.com:4600 --file result
autobench_admin --host1 www.test.com --port1 8033 --uri1 /test.htm --host2 www.test2.com --port2 8033 --uri2 /test.htm --client localhost:4600 --file result --output_fmt tsv


但最多只能支援到兩個host,沒辦法使用到--host3以後的。記得apache的maxclients要開到最大,以確保能夠測試到該機器的最大上限

4. 結果
結果的重點是倒數第3個欄位resp_time(單位為mini seconds)。其次是看最後一個欄位errors,當然前述timeout時間設的越短,errors就容易飆高。

需要看圖的話記得安裝gawk與gnuspot
執行bench2graph [source file] [target file of ps type] [....]
[...]分別代表dem_req_rate req_rate con_rate min_rep_rate avg_rep_rate max_rep_rate stddev_rep_rate resp_time net_io errors
執行bench2graph result.tsv result.ps 2 4 5 6 8 9 10 就可以轉為相對應圖片

5. 自定URI清單
若需指定測試的URI清單,可在.autobench.conf加上httperf_wlog=B,F
B 選項可以是y/n,y 表示如果到清單底部會重新從頭開始,n代表清單到底壓測結束
F 選項就是 access list 的檔案
清單斷行必須以特殊字元結尾,可用此指令轉換 perl -ne 's/\n/\0/m; print $_;' [infile] > [outfile]

6. 疑難排解
6.1 open file limit > FD_SETSIZE
若執行時發現下列錯誤
httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE
代表執行的帳號所設定的每個process所能開啟的檔案數量不足(預設為1024),可以使用ulimit -a指令來確認open file的欄位

需要進行下列三個步驟才能讓上限更高
1. 修改/etc/security/limits.conf,並加入類似下列設定
* hard nofile 65532
* soft nofile 65532
root hard nofile 65532
root soft nofile 65532

重開機後即可生效。對於ulimit設定若還有其他問題可見此份文件

2. 修改/usr/include/i386-linux-gnu/bits/typesizes.h__FD_SETSIZE欄位,從 #define __FD_SETSIZE 1024 改為 #define __FD_SETSIZE 65532。原因在於httperf開檔時,c會依據/usr/include/i386-linux-gnu/sys/select.h定義的FD_SETSIZE來檢查上限是否已經到達,而此值就是從/usr/include/i386-linux-gnu/bits/typesizes.h__FD_SETSIZE定義所來的。
ps. 如果是舊版的ubuntu,應該會是/usr/include/bits/typesizes.h__FD_SET_SIZE欄位。如果是使用64bit環境,typesizes.h會位在/usr/include/x86_64-linux-gnu/bits/typesizes.h,欄位__FD_SETSIZE

3. 下載httperf原始檔並重新編譯安裝。如果發現還是沒有生效,可使用httperf --version確認編譯時間是否正確。如果發現時間有誤,透過whereis httperf指令檢查是否系統內還有其他httperf落在系統其他地方。其他相關的討論可見此份文件

6.2 connection failed with unexpected error
若執行時出現類似下列錯誤訊息
Zero replies received, test invalid: rate 200
httperf: connection failed with unexpected error 113


這種摸不著頭緒的錯誤訊息,可以使用下列訊息搜尋系統.h檔定義
grep 113 /usr/include/*/*errno*

可以看到以此例來說,可能是網路不通或者是web server並未開啟
/usr/include/asm-generic/errno.h:#define    EHOSTUNREACH    113    /* No route to host */

7. 相關連結
httperf man doc
autobench man doc
對岸的詳細教學1
對岸的詳細教學2
對岸的詳細教學3
對岸的詳細教學4

2011年7月18日 星期一

Ubuntu 11.04無法使用EZ-100PU讀卡機

由於最近一年工作的環境都採用Mac OS,在開始使用Mac之前,於Ubuntu 10.04使用玉山銀行搭配EZ-100PU的讀卡機操作WebATM都是相當的順利。直到這次換工作之後才又回到Ubuntu,而很合理的就是直接安裝了目前11.04的最新版本,但今天試圖使用EZ-100PU讀卡機搭配玉山銀行的WebATM時卻無法正常操作。

研究了一下發現/etc/init.d/pcscd的服務完全沒辦法啟用,手動restart也沒有任何反應。而執行sudo pcscd -f時還會出現下列錯誤訊息:

00000000 readerfactory.c:965:RFInitializeReader() Open Port 0x200000 Failed (USB:0CA6/0010:LIBUDEV:0:/DEV/BUS/USB/004/004)
00000033 readerfactory.c:275:RFAddReader() CASTLES EZ100PU init failed.
00000037 hotplug_libudev.c:377:HPAddDevice() Failed adding USB device: CASTLES EZ100PU


此時上網搜尋了一下Google順利找到解法,原來是Ubuntu 11.04內source tree中的pcscd與libpcsclite1預設版本都是1.7.7,與pcsc_scan的pcsc-tools中版號不太一樣。執行pcsc_scan -V可以得到下列版本訊息:

PC/SC device scanner
V 1.4.17 (c) 2001-2009, Ludovic Rousseau
Compiled with PC/SC lite version: 1.5.5


只要手動下載pcscd-1.5.5-*與libpcsclite1-1.5.5-*安裝降版號即可。

pcscd-1.5.5-3ubuntu2.1 for Ubuntu maverick-updates

libpcsclite1-1.5.5-3ubuntu2.1 for Ubuntu maverick-updates

記得到/etc/apt/preferences鎖住版本,否則每次更新跳出來就會煩你一次。


Package: libpcsclite1
Pin: version 1.5.5*
Pin-Priority: 1001

Package: pcscd
Pin: version 1.5.5*
Pin-Priority: 1001

2011年7月8日 星期五

Windows 7的IP不給設定怎麼辦?! (抱頭)


自從USB Ethernet Adapter搞定之後,本來想乖乖設定個IP的,但竟然給我冒出一個"您必須安裝並啟用網路介面卡才能設定TCP/IP"的錯誤訊息,死都不給我設定就對了。問題是林北早就已經在上網中了,只是想要換個IP好過年啊!!(敲碗)

不給設定怎麼辦?這時候試想應該在Windows上會有command line指令可以讓我設定TCP/IP吧,不然微軟這麼屌的公司養這麼多工程師,怎麼可能只會寫有UI的application。上網股溝了一下,果然有這樣的東西!偉哉Microsoft!!

總之就是需要透過netsh這個指令來進行設定,但前提是你必須要使用系統管理員身分執行命令提示字元。不過由於這個教學是針對歐美國家設計的,因此經過了L10n後,指令應該要翻譯類似如下:

netsh interface ip set dns "區域連線" static 168.95.1.1

如果還搞不懂netsh怎麼用,就用netsh -h自己看一下吧,如果還是不懂就自己股溝指令吧。

備註: 但前面那個"您必須安裝並啟用網路介面卡才能設定TCP/IP"該如何是好?後來我找了一下,看來似乎是個可能的bug導致系統錯亂(不過也是因為自己亂插拔USB網卡就是了),只要把網卡在裝置管理員裡面移除又重裝就好了(煙~~)。

2011年7月7日 星期四

Apple USB Ethernet Adapter for Windows & Ubuntu

因為某些因素,不得不開始尋找USB介面的"有線"網卡,而這樣的產品在市場上簡直少之又少,更何況如果還需要支援Windows 7 64bit更是難上加難,遑論還要支援Ubuntu了。遍尋光華商場,這樣的產品根本難以買到,頂多只能找到支援Windows平台的產品,至於64bit系統就要燒香拜拜了,因為外殼往往沒有很明確的表示能否支援。


在陰錯陽差之下,無意間得知了Apple有這樣的產品,原來這個產品最初的設計是為了支援Macbook Air,因為Macbook Air實在太過輕薄,導致連RJ-45的網路接頭都超過Macbook Air的厚度了,因而會有這樣的產品出現。而且既然能夠支援Mac OS,就算用那沒有吃維骨力的膝蓋來思考,都會認為要在Windows上運作簡直是輕而易舉,進一步要支援Ubuntu更是指日可待了(煙~~~)。

很幸運的身旁的強者我同事剛好手上就有一台Macbook Air,因此就順手借來測試支援的程度。不料出身未捷身先死,一插上Windows 7馬上電腦就哀號這是無法識別的裝置。隨手上網搜尋了一下,發現都有不少的解決方法,然而照著步驟進行,卻往往得到了驅動程式無法載入的錯誤訊息,莫非這就是64bit的詛咒嗎?反而是Ubuntu 11.04輕而易舉的就隨插即用了,到底是誰說Linux支援不好的(拍桌)?!


雖然Ubuntu搞定了,但Windows不能使用總有種枉為RD卻搞不定一張網路卡的羞愧感。經過了一段時間的搜尋,推測發現這張Apple發行的USB Ethernet Adapter內所採用的晶片,應該是一個編號為AX88772的晶片,有了這個訊號,就可以接著抽絲剝繭找出兇手了。原來這晶片是由一間叫做亞信電子的公司所生產,很順利的也在這件公司的網站上找到了驅動程式可以下載。

接著試圖直接啟用這個驅動程式,但依然得到了驅動程式無法載入的錯誤。這時候試著採用之前查到的解決方法

Got it!!!終於搞定了!!雖然感覺有點像是對驅動程式進行hack,不過總之能動就是福(煙~~~~)

備註: 若還是不知道如何修改驅動程式的Ax88772.inf檔,可以到這個網站下載人家現成修改好的版本,直接蓋過從亞信下載的驅動程式內的inf就可以了。