2010/06/04

如何加速 dd?

dd 是很常見的命令,但是在大量資料的複製時,會顯得非常慢,最簡單的範例是
dd if=/dev/zero of=/vmem.img count=2G
2G 以目前來說非常常見,例如要把一個作業系統放到隨身碟中,或是像 ChromiumOS 也差不多就這個數值。

我把我測試執行的結果貼一下:

首先用 bs=4M 來試,這個數值是 ChromiumOS 的 script 中內建的值:

$ time dd if=my-8G.img of=/dev/sdc bs=4M

1919+1 records in
1919+1 records out
8050966528 bytes (8.1 GB) copied, 1189.83 s, 6.8 MB/s

real 19m49.848s
user 0m0.030s
sys 0m18.410s


接下來用預設的來比對,預設的 block size 是 512byte

$ sudo time dd if=my-8G.img of=/dev/sdc
15724544+0 records in
15724544+0 records out
8050966528 bytes (8.1 GB) copied, 6303.21 s, 1.3 MB/s

real 105m3.254s
user 0m7.740s
sys 1m36.380s


最後,用一個更大的比較一下,用 12M

$sudo  time dd if=my-8G.img of=/dev/sdc bs=12M
639+1 records in
639+1 records out
8050966528 bytes (8.1 GB) copied, 1060.62 s, 7.6 MB/s

real 17m40.653s
user 0m0.010s
sys 0m11.730s


會發現,4M 遠比預設值快非常多,而 12M 與 4M 相差不大,但是仍然有比較快。
以上僅供參考

2010/05/21

cron 與 anacron

剛好朋友問到 crontab 怎麼不見了一事,就提醒他,現在的系統,大概都是用 anacron,因此就來說說兩個的不同。關於 anacron, 請參考 sourceforge 的說明。(我翻的也不會比較好)

首先,最主要會出現 anacron 的原因是,機器不見得會開機,所以,在原來 cron 設定的時間點過了之後,該事件就不會被觸發!也就是說,anacron 不是靠「時間點」來觸發,它是檢查要做的事在那個時間點有沒有被做,沒有?那就觸發它。

基本上兩個是互補的。例如,cron 可以設定到時、分,而 anacron 只有「天」!
又例如,anacron 並非 daemon, 通常設計成在開機時做一次.....可是又不是常常開機,所以 ubuntu 是利用 cron 來定期叫 anacron 檢查,也就是 cron 本身不再是用來設定事件,而是...

叫 anacron 替代之前的 cron, 再叫 cron 叫 anacron 起來。

什麼?疊床架屋?不是啦,要從(文章的)頭想起。這種機制最有用的地方,除了系統會掛掉或是像有的是網路的動作,剛剛好網路不通,透過 anacron 就會有機會再重做,此外,....像筆電才是它最佳的舞台,你叫它做的事,在你下次開機時,只要時間點到了(或過了),它就會幫你完成。

最後,anacron 最新的版本是 2.3, release date 是.....2000 年 06 月 22 日!!!

2010/05/19

chromiumOS 的建立與執行 -- under ubuntu-3

寫過 chromiumOS 的建立與執行 -- under ubuntu-1chromiumOS 的建立與執行 -- under ubuntu-2,一直都無法正確的在 Virtualbox 執行,後來在 ChromiumOS 論壇看到一篇討論,提到把 Virtualbox 的 Machines/下的 CHROMIUMOS.xml 內容修正如下,就可以執行了!

<Hardware version="2">
<CPU count="1">
<HardwareVirtEx enabled="true" exclusive="false"/>
<HardwareVirtExNestedPaging enabled="false"/>
<HardwareVirtExVPID enabled="false"/>
<PAE enabled="false"/>
</CPU>
......
<BIOS>
<ACPI enabled="false"/>
<IOAPIC enabled="false"/>
<Logo fadeIn="true" fadeOut="true" displayTime="0"/>
<BootMenu mode="MessageAndMenu"/>
<TimeOffset value="0"/>
<PXEDebug enabled="false"/>
</BIOS>

chromium 的測試概觀


從結構圖來看,google 企圖以 Client/Server 的架構來簡化工廠生產時的人力配置,同時提供 Web 介面以及 command line 介面。

有幾個問題先列下來:
1. 如何簡化 Server/Client 架構的建立?也就是從 server 端如何知道 client 端的 IP?
AUTOIP? ZeroConfig? DHCP?
2. 以 autotest 來說,似乎不必人力坐在電腦前面,但是,若需要 locate device 時,如何得知是哪一台?
3. 對需要 manual test 的狀況下,如何進行?


2010/05/18

chromiumOS 的建立與執行 -- under ubuntu-2

之前寫了第一篇「chromium的建立與執行-1」,不過若是要建立 virtualbox image 的話,我自己試半天都無法執行。

Running Tests一文裡,有提到另一種快速的方法來建立可供測試的影像檔。看這種文章,比較需要注意的反而是 "inside" 與 "outside" 是指有沒有 chroot, 也就是有沒有執行過 ./enter_chroot.sh。inside 就是要執行過 enter_chroot.sh, 而 outside 就是沒有執行過它,也就是一般普通的環境。

該文的後面有一節提到「Create and run a test-enabled image on your device (the easy way)」,這真的是相當方便的方式! 只要一行,對,一行命令即可。

我在我的機器終於有試出怎樣用 virtualbox 看到開機畫面,目前尚未成功,畫面如下:

首先,Virtualbox 有兩個地方要注意,一個是開啟 EFI....



but, EFI 設了只是虛擬的,目前手邊都沒有機器的 BIOS 是跑 EFI 的!!!

除了 EFI 要開啟,還要注意,我們的 CPU 都是 Intel 的,所以....AMD 的虛擬機器選項要關掉:



這樣可以看到開機畫面,心裡會爽一點,只是.....



可以發現.....一直找不到可以透過 EFI 找到的開機裝置!!!



所以,最後,就進這個維護畫面.....

2010/05/14

Seamless 使用經驗

之前在寫Hal Dbus udev automount usb device?文章提到的參考文獻已經不見了!若有興趣的話,除了我的那篇文章外,也可以自行再參考阿呆的HAL、D-bus、ivman、udev心得

會用這個標題,原因是同事提到「Gnoem與KDE兩大陣營的戰爭」這件事,似乎跟 udev, HAL, Dbus無關?在我們把話題轉回來 Seamless 之前,先讓我再說說關於 Gnome/KDE 的後續見解。

我們可以從現有狀況來思考。如果要看 Desktop 的話,現今 Linux distribution 市占率最大的仍然是 Ubuntu, 它不一定最好,譬如硬體支援恐怕還不如 SuSE, Embedded 市占恐怕還不如 MontaVista, 但是,以 Desktop 來看它卻是最大宗。我認為原因不在純粹的 Desktop 是選 Gnome or Kde, 因為 Ubuntu 還有分支是 Kubuntu 採用 KDE。

整合度、易取得、進入門檻、客製化等等都是重要考量因素。純粹就整合度來看,KDE 整合的東西較完整,問題是,KDE 太笨重了,當它變得愈來愈像微軟時,它就真的變的跟微軟一樣。

Ubuntu 採用 Debian 系統,我想也是一個它受歡迎很重要的原因之一,雖然 Redhat/Mandrake 與 Ubuntu/Debian 的套件現今要整合變得比較容易,但是畢竟我還是比較喜歡 Debian, 尤其在做嵌入式系統的時候。試想,ChromeOS 預設支援的就是 Ubuntu,而當初 Intel 在推 Moblin 第一個找的也是 Ubuntu。原因何在?

現況是,從市占來看,明顯採用 Gnome 的人比較多。至於真正的現況除了 Desktop 外,不管是 Android, Meego, ChromeOS 等等,絕對是從另一個角度切入。反倒是我們該思考的不應該是 Gnome or KDE ? 這樣的路線。就像 Meego 想通吃,ChromeOS 有沒有可能走這樣的通吃的機會?

ChomeOS 開發團隊一直被問到,ChromeOS 有沒有可能執行 Desktop Applications? 若要問答案,當然是可以,但是目前 ChomeOS 開發團隊似乎較堅持走純 WebOS 的路。我們要 followup Google 的決策呢?還是要滿足更多人的需求呢?

我想,Intel 也不是笨蛋,善用 Web 而不純粹 WebOS 的市場在目前仍然是最大的,所以,我想,似乎 Google 的堅持也會有被動搖的一天。未來潮流到底會如何走?是選擇 WebOS? 還是選擇 Gnome? KDE? or.....Meego?

接下來談談為何我會談 Seamless。udev, HAL, Dbus 是三個主題,卻也是一個主題,是連著 GNOME/KDE 來的。Ubuntu 會讓人覺得好用的一個很重要的地方,它輕量級卻有著像 Windows 那樣方便的使用經驗,這得歸功於這三者在 Gnome 中被整合的很好。DBus 不止用來取代 IPC, 它其實是各個 module, 包含底層 kernel, daemons, drivers, application, and window manager 之間的橋樑,但是它畢竟只是橋樑而已,要讓使用者覺得方便,在於一個觀念的施行: seamless。

談這麼多終於可以談 Seamless。正因為 Seamless 的緣故,早期 KDE 是比較受歡迎的,至少 Redhat 就用它,而當時 Redhat 也是最大的 linux distribution。但是 KDE 最大的問題在於它的笨重。而在 Ubuntu 的推波助瀾之下,現在 Gnome 使用率應該是最大的了,就如我前面說的,我個人認為最大的原因在於 Ubuntu 讓人有一種類似 windows 帶來的 Seamless 使用經驗。它整合好 hotplug, udev, HAL, dbus....and window manager 層,所以就打通了硬體與使用者間的無縫隙使用經驗。

把格局放大來看,iPhone 為何會流行?Android 是以什麼樣的方式來迎頭追擊?iPad 又是採取什麼策略?我個人認為背後最大的原因就是 Seamless......再把時光拉回 Netscape 與 IE 的戰爭時代,說穿了,也是同樣的原因,當IE與作業系統整合,它就贏了這場戰爭。講白話一點,就是,使用者是笨蛋,使用者是懶惰的。

沒錯!別想要打我。現在的手持裝置就夠 Seamless 了嗎?沒有!路還很長。我看好的很多技術,若有跟我常常聊天就會知道,一項一項都在實現當中,未來其實是很明顯的。

註一:我也是使用者
註二:dbus 參考文獻

2010/05/13

Open Source License Scanning tool - from Florence

一篇來自中研院葛冬梅小姐的信轉貼於此,主題是「關於原始碼版權的掃描分析工具」,在此特別感謝她。並順便協助宣導一下 OpenFoundry, 她們一直努力推廣 Open Source, 不止是版權問題的討論,還辦過非常多研討會等活動,也都有資料可以下載

【掃描原始碼】

就我所知,目前有三套系統是可以掃描軟體原始碼,來查驗原始碼是否包含自由軟 體程式碼,以及判斷這些原始碼是採用哪一份條款來授權。這三套系統為 FOSSology、Blackduck與Palamida。雖然這三套系統都可以掃描原始碼、提供授權 資訊,不過就我個人所知,這些系統掃描精確度都有需要改進之處,因此這些掃描 結果僅可以作為輔助參考之用,若真的發現有授權狀態不相容、侵權情況的時候, 還是必須要諮詢技術與法律人員,來解決不相容、侵權的問題。以下針對三個系統 分別說明。

1. Fossology

這是一套掃描原始碼檔頭授權資訊的系統,系統會將掃描到的檔頭資訊與資料庫中 的自由軟體授權資訊相比對,來確認軟體中是否有利用到自由軟體,並不會掃描所 有的原始碼。對於檔頭沒有授權資訊的原始碼檔案來說,就無法確認該檔案的授權 狀況。優點是免費、任何人都可以自由下載與安裝。您利用這套系統的方式有二:


(1) 利用現成的vdi檔。

為了方便他人利用這套系統,鑄造場將Fossology系統製作成vdi檔,只要安裝 VirtualMachine後,將這個vdi檔掛載上去,依照說明就可以掃描原始碼的授權狀態。

請您進入下列網頁,進入後點選左方選單「下載區」,進入下載區頁面後,就可以 下載vdi檔與相關說明文件

Fossology vdi from OSSF:http://of.openfoundry.org/projects/1342

(2) 自行下載與安裝。

自行到Fossology網站下載後安裝起來,網址: http://www.fossology.org/


2. Blackduck

這是美國一家專門提供自由軟體原始碼掃描比對服務的公司,收費不貲,優點是資 料庫龐大。該軟體目前在台灣有兩家代理公司分別如下:

鈦智科技:http://www.adnetwork.com.tw/pro-blackduck-cn.htm

倚碩科技:http://www.esoft.com.tw/blackduck.php


3. Palamida

這是一家提供自由軟體安全諮詢管理公司,提供服務的方式是透過系統掃描原始碼 檔案,然後針對掃描結果提供諮詢服務,這間公司並且與 OSRM合作,提供自由軟 體 風險保單供業者購買。


Palamida:http://www.palamida.com/

OSRM風險保單的頁面:http://www.osriskmanagement.com/insurance.html

【掃描目的碼】

就我目前所知,僅有一套軟體可以掃描二進位的目的碼,也就是今日講師Shane所 提過的Binary Analyzing Tool。這是自由軟體,您可以上網自行下載安裝來掃 描。網址如下:

http://www.binaryanalysis.org/en/home


由於這套軟體最近才釋出,我對於這套系統所知有限,因此無法多做評論。若是您 之後有下載來使用,非常歡迎提供您的心得給我參考。


以上每個系統各有優缺點,因此我想您還是必須就貴公司的狀況,來個案評估,採 用哪一個系統比較適合。

以上資訊供參考,希望對您有所幫助。若還有任何疑問與意見,歡迎來信討論!


祝 順心

Florence T.M. Ko 葛冬梅
Legal Specialist, OSSF
e: tmk2005@citi.sinica.edu.tw
p: +886-2-27883799 ext. 1474
w: http://www.openfoundry.org/

2010/05/10

熱門技術 3D

其實立體視覺的成像「原理」上都大同小異,也就是利用兩顆眼睛所見到的影像的微小不一樣產生的立體感來的。
早期,我在讀研究所時,曾經流行過 3D 立體書,例如這張圖片裡面是一個騎士騎著馬,右手拿著一面旗子迎風飄揚。那時候我們就想要做你的這個題目了。當然後來沒真的去做。請見 Wiki 對 Stereogram 的解釋

單一影像呈現立體視覺與戴特殊分光眼鏡看似兩種非常不同的方法,其實原理也並無不同,既然說到了,可以上網找找 SIS, SIRDS等關鍵字看看。

透過光柵來呈現立體影像的,可以參考這篇. 或是同網站的這篇。而光柵板的原理可以參考這篇

當然這樣的文獻很多,譬如這篇就將前面光柵的原理視覺化,一定要進去看看。

要談數學運算的話,可以參考這篇

看完原理之後,要用兩顆攝影機取得3d立體影像,其實不算太難,難的是後製的運算......不過,若是以立體攝影文獻來說,可以參考立體攝影這篇

working with ubuntu and XP 2 - sshfs

雖然知道 sshfs 很久,卻一直沒有用,在我提出 working ubuntu and XP 的同時,同事提到 sshfs,可以用的 tool 有兩個,一個是 Dokan,可以擁有類似網路磁碟機的無縫使用經驗,也可以用 WinSCP,這個工具也是非常好用。

搭配 sshfs 及 ssh 遠端作業,應該可以符合大部份的作業需求,剩下的,或許會希望用 svn 來實現。

2010/05/05

working with ubuntu and XP

我的環境,是因為公司(絕大多數公司都如此)是建立在微軟體系上,所以,不另行在 Ubuntu 上建 Samba server,在讀本文時也請參考Mount samba shares with utf8 encoding using cifs一文,及Share Ubuntu Home Directories using Samba一文。

☆ Ubuntu 端看到 PC 上的目錄 ☆
1. 在 PC 上選定目錄,並按右鍵開啟分享,請注意,一般預設是沒寫入權,要在 Ubuntu 端能寫入的話,必須手動打開權限
2. 在 Ubuntu 上,有兩種方式,一個是手動掛載,一個是放在 /etc/fstab 讓系統自動掛載

a. sudo mount -t cifs //你的工作電腦位址/你分享的名稱(分享名稱不見得剛好就是目錄名稱) 掛載點 -o credentials=/你的HOME路徑/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777
舉例來說是 sudo mount -t cifs //10.20.30.40/wade_share /home/wade/share -o credentials=/home/wade/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777
上面的 .smbcredentials 權限設成唯讀(0400), 內容是工作PC 上的帳號,如:
username=wade
password=iamwade


b. /etc/fstab 仿上面執行例的相對內容如下:
//10.20.30.40/wade_share /home/wade/share cifs credentials=/home/wade/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0


☆ PC 端看到 ubuntu 上的目錄 ☆

1. 安裝 samba
2. 修改 /etc/samba/smb.conf, 找到 [homes] 這一區段,內容如下:

[homes]
comment = Home Directories
browseable = yes
writable= yes
create mask = 0775
directory mask = 0775
valid users = %S


上面原來的設定當然有很多註解,並沒說一定要刪除註解。重點是 valid users = %S 及 writable = yes
3. sudo service smbd restart
4. sudo service nmbd restart
5. 在 PC 端,「開始」「執行」輸入 \\你的 ubuntu 位址\你的帳號 即可跳出帳號密碼畫面,請輸入在 ubuntu 上的帳號密碼,實際輸入例如下:
\\10.20.30.39\wade

2010/04/28

CHT8000 如何省電

上次寫了一篇我的3G手機 CHT8000 使用心得,再來貢獻一篇。

是有發現3G手機一下子就沒電了,所謂的一下子,就是撐不到一天。哦?那應該沒人敢用了吧。當然是有發現若用 3G 功能,會耗電很兇,一開始我在晚上睡覺時是直接關機,後來發現開網頁時若把螢幕關閉(輕按左上外側按鈕)的話也會背景抓網頁,所以就沒事關螢幕。

現在則是發現,「飛航模式」下(長按左上外側按鈕))非常省電。若是只是要玩遊戲,請記得把飛航模式開啟。

另外,常常背景有應用程式在執行,我是一開始就去抓了一個軟體,叫 Process Manager, 也下載一個移除軟體叫 AppRemover。前者可以很容易讓我看哪些應用程式在背景跑,沒什麼在用就刪了。

講這議題,就得說說我另一個軟體,叫 fring, 可以讓我用手機上 skype, msn, 目前猜測它會常常三不五時上網,因此沒事我還是得把它關閉。總之總之,沒要上網時開啟飛航模式,不過,這飛航模式也會讓你的手機無法接收來電,對我是沒差,要用此招時請自行評估

遠端桌面 remote desktop

遠端桌面當然有各種協定,有各種工具,底下來講一下兩種方法。

一、用 Ubuntu 的設定:
a. 用GUI 設定:「系統」->「管理」->「登入畫面」,切換到「遠端」的Tab,將「風格」改成「當成本地端」
b. 或是編輯 /etc/gdm/gdm.schemas, 確認一下是不是有把 xdmcp 設成 Enable, 或是看看是不是有這行<key>xdmcp/Enable</key>,若是 Disable 請改成 Enable
c. 「系統」->「偏好設定」->「遠端桌面」, 勾選「允許其他使用者觀看您的桌面」、「允許其他使用者控制您的桌面」、「使用者需要輸入密碼」,並且輸入密碼,而「詢問您以確認」則不要勾選,不過若基於安全考量,你想手動決定別人是否可以用遠端桌面的話,這項反而要勾選。這邊的密碼,是用 vnc viewer 從遠端要連線時輸入用的,可以的話最好不要跟登入密碼相同。

這個方法會讓你從遠端與你的桌面共用。這句話是要仔細看的,也就是兩個人的桌面是相同的,有點像早期我用過的 PC anywhere。也就是,因為一次只能有一個人登入到桌面,所以一次也就只有一個人可以用此方法連線,相較於下面的方法而言,也就不必設定 Port 號,只需要在連線軟體填入該機器的網址即可。

二、用 vnc4server
a. 確定有安裝 vnc4server
b. 用你的帳號執行 vnc4server, 第一次執行的話,它會讓你輸入密碼,說明同上。這個動作會在 $HOME 建立一個 .vnc 目錄,裡面會放個檔案叫 passwd。若需要更改密碼,也可以透過 vncpasswd 來修改。
c. 請注意上面執行的結果訊息,我的如下:
$ vnc4server

New 'wade-laptop:1 (wade)' desktop is wade-laptop:1

Starting applications specified in /home/wade/.vnc/xstartup
Log file is /home/wade/.vnc/wade-laptop:1.log

d. 此時在 PC 端,我是下載 tightvnc,連線時要搭配執行 vnc4server 的訊息,注意到上面是 wade-laptop:1 嗎?如果網路環境設定好,當然可以在 vnc viewer 中填這個值,不過我懶得設,所以直接填 XXX.XXX.XXX.XXX:1

這個方法當然比較麻煩,若重新開機過,你就得自己再下一次 vnc4server 命令,而且每次的 Port 都不見得一樣。要注意的是,若這台機器是多人使用的話,而且大家有在用這種方式連線的話,port 大於 1 是正常的,但是若只有你用,而你看到 port 大於 1, 那代表你執行了兩次,看是要刪掉哪一個,命令是 vnc4server -kill :1

2010/04/27

跨平台環境的建立 .... 你會怎麼用?

這一篇文章簡述了幾種可能用來 cross compile 的選項。另外,我個人很喜歡 scrachbox 的方式,其中經典之作就是 GeeXboX,不過 GeeXboX 你不能只是看首頁,一定要照著下載 source code 來編譯過後才會知道其精神。

乾淨的貓 netcat

貓,通常是有靈性的。嗯嗯,有點太抽象了,netcat 有如 busybox 一樣的萬用特性,在網路上它扮演著非常強的功能,只是一般人都不會用。這一篇文章講解怎樣用 netcat 來發信。該文講的很認真,我就不多說了

2010/04/26

我的3G手機 CHT8000 使用心得

我原本有在用台灣大哥大的 3G 上網,可是啊,台灣大哥大費用800不說,當初只送了一張 usb 3G上網小老鼠,合約到了又不主動給我降價,一氣之下,就跑去中華電信,把我的 3G 上網跟我的手機結合。我家很久沒在用寬頻上網了,將來小孩長大後就再來研究吧,目前是我的手機跟 3G 結合,感覺就很方便。

在還沒談之前,先說說分開與合併的優缺點。
合併優:隨時可以上網,缺:老婆要上網必須要我的手機在她身邊
為了鼓勵大家愛用 Android, 再說一下,最方便的是,非常非常多好玩的遊戲也好、應用也好、輸入法也好,統統是免費的!當然,開發 android 軟體,據說只要得到5星評價夠多,還可以得到免費的 Google Nexus One 手機一台。最需要鼓勵的是,Android 軟體非常自由,不必破解就可以滿足我絕大部份需求,何況,上面還有我要的所有 google 應用。
還有一項要長久才看得出功效的,就是電池可以更換!大家都知道手機一、兩年後就很難待機,而3G手機更是如此,常常要充電,那如果,連基本的電力都保持不住,又要怎麼用?

我到中華電信,選了 CHT8000, 之所以選這個,純粹是因為 Android 手機,竟然只有兩款!好吧,至少這款不必再負擔手機的錢,費用上,也跟我原本的組合式用法差不多,雖然要預繳12000元,但是可以分12期繳,感覺並沒有增加負擔任何費用。

CHT8000要上網,不管是在 WinXP or Ubuntu, 也都很方便。在 XP 有隨附的光碟可以安裝,叫 CHT DialUp, 不過若要在 Win7 的話,千萬千萬不要用隨附的光碟安裝,請參考 http://5i01.com/topicdetail.php?f=423&t=1410153&last=18261051,或下載這個網址下的撥接程式,或是適用 Win7 版的安裝軟體,後者的解壓密碼是小寫的 hw 兩個字,我猜測是「華為」的縮寫。比較常見的情況是,已經在 win7 裝了光碟版的軟體,我試過這樣做的話,想用前面提到的軟體來更新,結果是 FAILED! 不過,還好的是,簡單的去控制台新增移除軟體將原來的(或更新失敗的)的軟體移除後,再重新安裝即可。

至於 Ubuntu 下,只需要在掛載內建 driver 時指定 pid/vid 即可,例如:
$ sudo modprobe usbserial vendor=0x12d1 product=0x1502

若要系統自動認得的話,可以增加 /etc/modprobe.d/usbserial.conf 把上述資料加進去即可。
options usbserial vendor=0x12d1 product=0x1502

最後,我是愛用嘸蝦米沒錯,也喜歡自己修改對應按鍵,剛好 Android 上有一套 LIME 輸入法可以容易做到,請參考 LIME 網站自創對應表,或是參考這邊

最後補充,我的 CHT8000 上用 LIME 時,一開始一直還是出現手寫輸入法,後來利用 gmail 的寫信畫面來當輸入框,才有辦法照文件上的「長按」叫出更改輸入的畫面出來。

2010/04/24

accountability 當責.問責.負責




這是憲哥的一堂課,請見當責

課堂上,老師,也就是憲哥,一直在講什麼叫「負責」什麼叫「當責」,也一直在講「授權」與「賦權」的差異。其實,照我的理解,很多主管根本連什麼叫負責都不知道,完全做不到授權,要跟這些人談當責與賦權,我覺得有點對牛彈琴,只是多舉辦這種課,想必能觸發更多人的神經吧。

先說說我自己,這堂課我很想上,可是朋友剛離開廣達,難得回來跟我吃午餐,害我忘了上課時間,請見諒。三點時又跑去面試了一個小時,為了上這堂課,害我面試時不專心,沒問到對方重點。可見我是真的很重視這課的。現在就來稍微把理解中的當責講講。以下大部份來自上課心得(與講義),不過別以為看了我的文章,你的功力就大增,還是得多上這類的課才有用,親身體驗絕對不一樣的學習成就。

當責的核心精神:
.挹注成果(從頭到尾講的重點就是成果)
.執行力(講成果本來就要靠執行力)
.紀律(這一點非常難解釋,舉個例,公司一直在講要節約,多走樓梯,但是有多少人真的是走樓梯的?)

因為要講執行力,有四項執行力的特質:
.首先要有當責的觀念(要將當責精神深植內心是非常難的)
.能激發同仁活力(自己不先死掉就很高興了,所以真的是很難)
.擅於後續追蹤(不會五分鐘熱度)
.面對棘手問題能迅速做出決定(通常能避則避,或常見猶豫不決)

當然課堂講了很多其他的重點,不過先來談談當責與負責:(常常我們在講負責任的人時,是很貼近當責的,只是當責不止是負責這麼簡單而已)
當責是:
.對別人所訂下的承諾並交出符合的結果
.在責任、在成果上達成目標
.體認與接受並負起發生在管轄範圍內任何活動的全部責任,無論原因為何(是個經理人)
.做對的事
負責是:
.對自己所訂下的承諾並交出符合自己預期的結果(這一點定義我不是很認同)
.有責任感的確實執行被交付的任務
.執行特定任務或上級分派的工作,或圓滿達成被授權的職務內容(是個專業者)
.把事情做對

從上面,可以見到老師企圖把當責引導到更具「成果導向」的路上。上面也提到授權一事,現在再來談談這兩個的差異。(同樣的,這邊對賦權的定義,有時我也是以授權來理解的,有點硬要分成兩個詞的感覺)

授權(Delegation)是:(我發現我之前一直只做到這一階段而已)
.分身分勞
.工作下屬去做,責任上司承擔
.獲授權者揣摩上意,依規依約行事,缺乏獨立思考及判斷(這一點我是有企圖不讓它發生)
.講責任(responsibility)
賦權(Empowerment)是:(我一直很希望遇到這樣的上司,我的前上司或許也這麼自認為)
.全權處理(看似全權處理,很容易變成放羊吃草的境地)
.下屬一併承擔責任(這一點要有同舟共濟的精神,很難做到)
.需有充分資訊,充分能力,充分訓練,充分溝通,要下屬成長,獲賦權者有決策能力,要完成目標(這一點就是我與前主管間缺乏的部份)
.當責(accountability)

課堂上,老師一直在講,當責精神是要給下面的句子加上問號,要大家去質疑:
.雖敗猶榮?
.沒有功勞也有苦勞?
.重視過程而不重視成果?
.志在參加不在得獎?
.只問耕耘不問收獲?
==>當責的精神是,不僅要努力耕耘,更要有收獲,還要將本求利

老師把員工依X(被動-->主動)及Y(負面-->正面)分成四種人:
  .囚犯:就是那種等死的人,一切都在等待
  .過客:就是參與感不重的,叫他做事做的好好的,我稱這種人為混吃的人
  .抱怨者:這種人很積極參與,卻常抱怨。我反省一下,我很常落入這種狀態,不過有點像關起門來抱怨。也很應該改進。
  .玩家:就是積極又正向的當責精神

課堂上,老師講了兩個詞,很值得玩味:
  .分工合作。從小我們就在聽這個詞,但是分工了,就能合作嗎?這也是我一直在懷疑的,老師用下面的詞來說明
  .合作分工。有了共同的目標,再來看怎樣分工。這樣做事才會有「共識」,才能真正犧牲小我完成大我。可是很難,就算危機意識夠強也不見得能做到。就像即使要亡國了,仍然會有漢奸一樣。在講這一點的時候,老師提到賽局理論裡面很有名的「犯人的困局」,若是多人犯案被抓到,警察通常分開問訊,而且,許諾問案對象坦白從寬,抗拒從嚴,通常通常,人在「人不為己天誅地滅」的想法下,都會替自己求最大利益,因此坦白。

所以,來看看當責的七個重要行為:
  .了解公司與您的工作夥伴(嗯嗯,我們常自掃門前雪)
  .設定明確的目標與優先順序
  .實事求是
  .後續追蹤
  .論功行賞(很難,常常是做的要死被念的半死)
  .傳授經驗(也常常被忽略,都有藉口說很忙,或是自己學比較快)
  .了解自我的情緒韌性(不要只會抱怨)

最後最後,來講講 X-Y game

  明明,大家都知道要追求團體最大利益,可惜,這堂課一直到最後,都還是有人只追求自己的最大利益。明明大家都發誓的。遊戲過程我很難在這邊講清楚,我只能說,當考量到私人利益時,團體利益常常是被擺在最後的,殊不知,船沉了,就自己也活不了。當然,職場上,常常大家都會說,此處不留爺,自有留爺處。唉。難矣哉。

剛剛有空跟朋友聊天,把遊戲講過一遍,所以就貼下來,憲哥別罵我(不過我也知道這遊戲其實也是他抄來的,我以前就看過了)。

先說說遊戲規則,要看好哦:
  .整堂課,學員們分六個組
  .每個組,只能選擇X或是選擇Y之一,就是說,你可以選X,也可以選Y,但是不能同時選X及Y
  .我這麼囉嗦的說,只是在說,每一組有選擇權,可以自由選X或是選Y,但是事先你不知道別組選 X or Y
  .所以,最後若六組的結果如下的話,其獎懲也列在下面:
   ○ 6X: 則每一組都扣100元
   ○ 5X1Y: 則選X的組各得100元,選Y的組扣500元
   ○ 4X2Y: 則選X的組各得200元,選Y的組扣400元
   ○ 3X3Y: 則選X的組各得300元,選Y的組扣300元
   ○ 2X4Y: 則選X的組各得200元,選Y的組扣200元
   ○ 1X5Y: 則選X的組各得100元,選Y的組扣100元
   ○ 6Y: 則各組各得100元

我把題目寫在最後,請看的朋友們自己好好看清楚題目:
請你們各盡所能,求獲得最多的錢

其實不管題目如何,如果,如果能大家都投 Y, 就從頭到尾大家都會是贏的。可是拿我的組來說好了,就有組員一直在講,萬一別人投X呢?我說又說不過,一直在第五局之後才說服了大家,堅持從第5局到第10局都投Y。這已經很難了。但是但是,我前面也說了,一直到最後,也沒出現過6Y。這,就是廣達,嗎?

再來補充一點,在個人利益與團體利益的兩難情況下,你會如何選擇?
最後再說一點,題目,其實是求團體的最大利益,選 6X 就是負的,選 6Y 就是正的,其他都是 0, 答案很明顯。
最後最後再說一點,課堂上,根本都沒「錢」,何必一直有人跑票選X,這一點讓我苦悶到現在。
最後最後的最後,上面的那個問句,希望有人能看懂。(這,就是廣達,嗎?)

2010/04/20

shell script 處理空白字元

請參考這篇

一個方法是用 find 來解決,另一個是透過更改 IFS 的環境變數來解決,底下直接列範例:


#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for f in *
do
echo "$f"
done
IFS=$SAVEIFS




#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
# set me
FILES=/data/*
for f in $FILES
do
echo "$f"
done
IFS=$SAVEIFS


或直接拿來分析 /etc/passwd


while IFS=: read userName passWord userID groupID geCos homeDir userShell
do
echo "$userName -> $homeDir"
done < /etc/passwd


用 find 也行

find . -print0 | while read -d $'\0' file
do
echo -v "$file"
done

2010/04/14

chromium 的建立與執行...under ubuntu -1

我在摸索階段,是完全根據 Chromium OS上的說明來玩的,有些措詞會讓人看不懂。若你的目的是,下載 source code, 自己編譯, 進行「測試」,的話,那麼希望我的文章可以減少您摸索的時間。

一、開發環境的建立

我是直接把我的電腦安裝成 Ubuntu 64, 請見我的前一篇文章。我不想去解決 x86-32 環境是否可以 build, 反正改變自己的系統比較簡單些。

安裝套件:
$ sudo apt-get install bison fakeroot flex g++ g++-multilib gperf \
libapache2-mod-php5 libasound2-dev libbz2-dev libcairo2-dev \
libdbus-glib-1-dev libgconf2-dev libgl1-mesa-dev libglu1-mesa-dev \
libglib2.0-dev libgtk2.0-dev libjpeg62-dev libnspr4-dev libnss3-dev \
libpam0g-dev libsqlite3-dev libxslt1-dev libxss-dev \
mesa-common-dev msttcorefonts patch perl pkg-config python \
python2.5-dev rpm subversion apache2 wdiff lighttpd php5-cgi sun-java6-fonts \
msttcorefonts ttf-dejavu-core ttf-kochi-gothic ttf-kochi-mincho \
  lib32asound2-dev lib32bz2-dev git-core

甚至我還安裝了 virtualbox, qemu 等套件

二、取得原始碼

取得原始碼的話,我是遵照這一篇裡面的安裝 depot_tools來做,把 gclient 放在自己的家目錄中。

有了 gclient, 可以透過 gclient config http://src.chromium.org/svn/trunk/src 來設定 gclient 的環境,不過,請確定你要放 source code 的目錄位置再做此動作。以文件中的方式先放別的地方,再用 link 的方式也是可行。底下講的都是指這個放 source code 的目錄而言。

接下來就是抓 source code, 命令很簡單,就是 $ gclient sync

當然要抓很久很久....建議你去休息看個書,明天再來看。不過,沒理解錯的話(還需要確認),browser 的部份是採用 binary 的這種已編譯好的,若還需要另行編譯 browser 的話,需要參考編譯 Chromium OS裡面的 Option 說明。

三、建立開發系統

在編譯前,我建議一定要有一個認知再去讀原始文件,那就是建立 chromium os 的整個動作,它是建立一個新檔案系統,然後是用 chroot 進去執行的,所以,文件中有 "Inside", "Outside" 分別指的就是在 chroot 裡面,還是外面。換言之,Outside 就是一般你開機後的環境,也就是開發環境。而 Inside 是要透過 ./enter_chroot.sh 之後的環境。這一點尤其在看Running Tests一文時特別要注意。

有了上面的理解之後,當然要先來建立 chroot 的環境,請執行
$ ./make_chroot

建好環境後可以透過下面的方式進入,注意 chroot 環境不必常常重建,以後想要用,也只需要直接執行下面的步驟:
$ ./enter_chroot.sh

四、設定開發對象

接下來是設定環境,首先是設定要給什麼樣的平台使用,這邊只有兩種選擇,一個是 x86-genenric, 一個是 arm-generic,這只是開發環境,因此這兩類也就夠了。我是選 x86-generic
cd ~/trunk/src/scripts
./setup_board --board=x86-generic
echo x86-generic > ~/trunk/src/scripts/.default_board


五、建立測試帳號

ChromiumOS 開機後會需要以 google 帳號登入,或是 ssh 登入,此時請透過底下的方式建立此測試帳號:
./enable_localaccount.sh TEST_ACCOUNT
./set_shared_user_password.sh


六、編譯

就不多說了,直接用下面的命令建立套件及產生影像檔
./build_packages --board=x86-generic
./build_image --board=x86-generic


七、轉換成 virtualbox 或 vmware 虛擬機器環境的影像檔:

./image_to_virtualbox.sh --from=../build/images/x86-generic/0.7..... 這命令會產生一個 os.vdi 在 ../build/images/x86-generic 目錄下

2010/04/08

Chromium OS -- initialize

不知道為什麼,我似乎跟 chromium 脫不了關係,原因就不多說了,現在則要專心來讀讀這個流行的東西。

首先要說的是,chrome、chromium、chrome OS 與 chromium OS 的關係,我底下的認知不見得正確。

一、google 推出的,才叫 chrome, 才叫 chrome OS, 其他人推出的,都只能叫 Chromium 及 Chromium OS
二、Chrome OS 想當然,就是一個極類似 ubuntu or special for qualcomm 的 linux 加上 chrome
三、上面這說法還不見得正確,比較正確的是 Chromium OS 想當然,就是一個極類似 ubuntu or special for qualcomm 的 linux 加上 chromium
四、在編譯上,chromium os 需要 x86_64 的環境,這就導致下面的需求

若你想自己編譯 chromium os, 最好的方式是去 http://cdimages.ubuntu.com/ 找 amd64 的 iso 檔 來安裝。

若想拿到比較新的資訊,可以至 chromium查閱文件。

2010/03/21

致勝讀後心得-winning by Jack Welch

最近在讀致勝,傑克威爾許的中文版,非常值得所有人花點時間閱讀,我相信,在職場上的問題,或多或少都可以在這本書找到答案。

我很慶幸,在家裡,跟老婆相處,我能做到坦誠,書中非常重要的觀念。至於職場?若有看我前面的心得就會知道,我何其不幸。不過,永不言敗,我還是努力的去做好我的角色。

跟過我的人就會知道,我一向有話會直接跟他們說,有時我也會反省,我會不會講太多反而有傷害?我一直在跟我帶的伙伴們說,就算會有擔憂,我還是寧可選擇坦誠。

先講點簡單的,我認為,坦誠是雙向的,甚至是全面的,若只是上對下的坦誠,會變成比較接近溺愛,甚至是包疪,若只是下對上坦誠,會變成愚忠。只有雙向的坦誠,才是健康的環境。