2008年10月30日 星期四

好用的oxim輸入法

感謝螢火飛大哥製作了一個oxim輸入法,這是我用過最好用的注音輸入法!輕巧、好用、GPL! 在opensuse下可以新增swyear大大的repo來安裝並使用oxim,但是debian的套件庫卻還沒有oxim,我想可能是因為螢火飛大大很忙,加上飛大並不熟悉debian系列的發行版本的原因吧。 在debian或是ubuntu想用oxim其實可以自己編成deb來裝的,不過切記debian跟ubuntu的deb千萬別混用。 我把安裝的方法作成一個很簡單的shell script:
#!/bin/bash
#this is an automatic oxim installation script for debian/ubuntu users,
#please visit http://opendesktop.org.tw/demopage/oxim/
#for more detail.
#special thank for firefly.
aptitude install build-essential checkinstall libglade2-dev \
libgnomeprint2.2-dev libcurl4-dev libqt3-mt-dev \
libchewing3-dev libxpm-dev libxtst-dev autoconf libtool \
fakeroot im-switch autoconf automake libtool debhelper \
libgtk2.0-dev libxft-dev cvs -y&&
cvs -z6 -d :pserver:anonymous@opendesktop.org.tw:/misc/cvs co oxim &&
cd oxim &&
sh autogen.sh && ln -s doc/debian &&
chmod 755 debian/rules && dpkg-buildpackage -b -rfakeroot &&
echo ""
echo "Compiling Done! Now installing OXIM on your system !"
echo ""
dpkg -i ../oxim*.deb && im-switch -s oxim -c all_ALL
rm -rf oxim && chown maxsolar:maxsolar oxim_1.1.6_i386.changes
echo ""
echo "Now enjoy OXIM as you wish!"
我想重新啟動x就可以快樂的使用oxim了! 再次謝謝螢火飛大大!

linux下顯示硬體資訊--hardinfo

這其實並不是太重要的東西,不過許多呆呆windows轉來的同志們都對於圖形的東西情有獨衷...那麼就推薦這款hardinfo。 他很小也很陽春,其實列出來的訊息都是挖/proc裡面的東西,要是我會寫gtk,搞不好我也寫得出來... 重點是,我不會寫gtk....(逃~)

好用的chm viewer--xchm

最近上課所使用的許多文件都是chm的格式,坦白說雖然這是微軟的格式,但是他真的是很好用又很方便。早期只有瀏覽器支援,不過出現許多不穩定等等諸如此類的問題。firefox上有類似這樣的套件:CHM reader,我個人認為也是很不錯的,不過firefox就在吃記憶體了...我想要一個純的viewer。後來試用的結果,我推薦xchm,輕巧、穩定,GPL!

Java on Linux 簡易設定

01. 安裝環境
J2SE Development Kit 5.0 Update 16 with NetBeans IDE 6.1 Bundle
我所選擇的環境是Java SE 5.0 與Netbeans IDE 6.1的整合套件。JDK是一個開發的元件,內含java語言的編譯器、JVM,以及JRE(內有標準的類別函式庫)。也就是說一般的使用者只是想運行java程式,只要有JRE就好;如果想要開發java程式,則必須安裝JDK;如果想要一個圖形整合介面,那麼可以考慮昇陽官方的Netbeans。不過必須有一個觀念,Netbeans只是一個空殼,如果沒有JDK,Netbeans也只是一個圖形介面,什麼碗糕也跑不出來。因此如果不安裝bundle組合套件,那麼可以自己下載最新的JDK以及Netbeans IDE。

另一個應該注意的是,雖然安裝的JDK包含了JRE,不過當你在使用瀏覽器遇到使用java程式的時候,還是會出現警告找不到JRE的視窗。這是因為JDK會使用自帶的JRE,而這個JRE並不會給編譯java以外的事情使用,這是為了編譯時候的過程是順利、且可以確保版本號,因此JRE需要額外安裝。不過這樣所帶來的好處是,開發人員可以安裝多個JRE來測試不同環境所編譯出來的程式是否有任何異常問題,而系統預設以最高版本的JRE來運行。

02. 環境變數設定
首先,系統的shell並沒有辦法知道JDK在哪裡,你必須告知系統JRE的PATH,例如我放在/usr/local/jdk1.6.0_07/bin, 則應該在定義PATH的設定檔內修改成:

JAVA_HOME=/usr/local/jdk1.6.0_07
export PATH=$PATH:$JAVA_HOME/bin
除此之外,路徑對於JVM來說只是一個package。例如在unix上一個再普通不過的binary,你可以透過路徑的方式告知該做什麼動作:
gcc ../abc/test.c -o bin/test
不過java可不能這麼用。在當前目錄下假設有一個abc.java檔案(假設public類別名稱也為abc),詳細訊息可以這樣印出來:
javac -verbose abc.java
這個動作會產生abc.class的byte code:
java abc
來執行這隻程式。執行程式時,java會認為JVM才是真正的作業系統,以下是簡單的執行流程:
--class loader:指派記憶體位置。
--byte code verifier:進行雜湊校驗,比對是否真的由javac所原生。
--hotspot excution:就是JVM啦,有可能是client,也有可能是server。
--talk to hardware:由JVM產生native code與硬體溝通。

03. classpath與sourcepath的設定:
通常java會把編譯後的bytecode跟原始碼放在一起(而不是當前目錄)。不過,在執行一個大的project時,會撰寫成許多不同的類別,這時候為了除錯方便以及also compile方便,我們需要把source code與byte code分開。假設source codes放在src,而byte code放在classes,則我們在有abc.java的工作目錄時,編譯java需要這樣作:

javac -d classes -classpath PATH_OF_CLASS abc.java
-d:         告知java compiler編譯完成把byte code放在./classes裡。
-classpath  告知有哪些既有的class可用的路徑。效果等於-cp,但是-cp無法用於環境變數。
如果classes裡缺少某類別的byte code可以使用,則需要回頭編出一個class來使用。預設會在當前目錄找,但是如果找不到,則無法also compile--造成編譯失敗。解決的方法是指定sourcepath給java:
javac -d classes -sourcepath PATH_OF_SOURCE abc.java
-sourcepath 告知哪裡有.java原始檔。
假設在src下有多個套件,仍然只需要指定src即可,javac會自動往下找其他套件。
這樣java就知道去哪裡找cource code去編譯該類別出來。但是不建議sourcepath與classpath混用,因為混用的結果只有sourcepath有效(除非還有用到其他類別)。
javac -d classes -sourcepath PATH_OF_SOURCE -classpath PATH_OF_CLASS abc.java
理由是,當java compiler編譯時缺少某一類別,他會在sourcepath裡尋找是否有對應的.java。如果有,他也不會去找classpath,會直接再編譯一個byte code出來;因此在指定sourcepath以及classpath時,通常是不會同時使用的。javac會先抓取sourcepath引數,再抓取classpath引數。無論你是否先指定classpath,抓引數的順序仍然是先sourcepath再classpath。簡而言之:

利用-sourcepath達成also compile;
利用-classpath告知既存的類別檔位置。

當然,使用unix都是懶惰的人,總是希望事情可以簡化又依照我們的要求,我們可以把他寫進環境變數裡:
export CLASSPATH=~/java-workspace/classes
同樣的,如果要設定sourcepath,也寫成:
export SOURCEPATH=~/java-workspace/src
不過我實在很懶。如果每次編譯都要打這串javac -d classes,我實在覺得很煩。不過 -d存放class檔無法使用環境變數固定住,因此我目前想出來的方法是用alias。
alias javac='javac -d ~/java-workspace/classes'
問題就解決啦!如果是呆呆windows可能就沒這麼方便了。 為什麼要這麼麻煩去特別指定sourcepath以及classpath呢?假設今天有一個大專案,需要很多次修改某幾個類別,你一定不希望每個.java都被編譯一次,這時候可以「只」指定classpath,不指定sourcepath(在當前目錄),則系統就會去找既有的class來使用,降低了大量重複also compile的無謂cpu時間消耗。

04. 執行java
到此為止,編譯方面的環境設定就結束了;那麼執行呢?
傳統的程式編譯出來的binary,只要設定好PATH,則我們可以這樣作:

Testjava ../abcdef.txt
但是我已經設定好classpath了,因此我可以在任何一個地方下指令:
java Testjava
都可以順利執行。如果想要把Testjava變成外部命令,可以寫在alias:
alias Testjava='java Testjava'

關鍵字:java, java se, netbeans, classpath, sourcepath

2008年10月29日 星期三

ACL簡易設定筆記

ACL為Access Control List的縮寫。acl用在很多地方,其實就是額外的存取控制,許多網路設備也都有自己的acl policy。
ACL是user space的層面,想要開啟他必須從filesystem下手:

mount -o remount,acl
接著必須要安裝acl這個套件:
[ -e $(which setfacl) ] || aptitude install acl
也就是你的系統需要安裝acl utility以及filesystem支援acl,你才可以正式使用以下功能。

01. 查看acl

ls -l filefile
-rw-rwxr--+ 1 maxsolar maxsolar 0 2008-08-25 00:13 filefile 有+表示有extended acl.

02. 查看檔案的ACL設定:

getfacl filefile
# file: filefile2
# owner: maxsolar
# group: maxsolar
user::rw-             ##owner:普通user權限
user:geeko:rw-        ##named user:acl新增給geeko的user權限,可以多個entry
group::r--            ##group:普通group權限
group:geeko:rw-       ##named group:acl新增給geeko的group權限,可以多個entry
mask::rwx             ##mask是named user/group最高能給予的權限
other::r--            ##other:普通other權限

03. 設定檔案的ACL
## 設定geeko只能rw filefile這個檔案

setfacl -m u:geeko:rw filefile
## 設定的entries可以多筆
setfacl -m u:geego:rw,g:maxubuntu:rw filefile
## 設定最高權限mask:
setfacl -m m:rwx filefile
## 移除一筆acl entry: 權限不用寫
setfacl -x u:geego filefile
## 複製acl狀態設定:
getfacl filefile > ACL_setting
setfacl -M ACL_setting filefile
#移除所有ACL設定,回覆到傳統權限:
setfacl -b filefile

04. 設定資料夾的ACL(default acl)
設定了default acl,其下的目錄跟檔案都會繼承defaults acl權限;
default acl跟access acl的關係是獨立的。
子目錄會繼承上層目錄的access acl以及default acl;檔案則是把default acl轉換成自己的access acl。

setfacl -d -m u:geeko:rw,g:geego:rx dir_filefile
# 注意-d -m的位置不能互換

05. 備註
-d/-D與-m/-M功能相同,差別在於大寫參數是讀取檔案。

好用的vim設定

寫在/etc/vim/vimrc或是~/.vimrc皆可: #是否顯示行號 :set nu/nonu (line number) #是否自動縮排,非常好用 :set ai/noai (autu-indent) #是否高亮度顯示搜尋關鍵字 :set hls/nohls (hi-light list search) #定義一個tab鍵是幾個空白鍵,預設是8個,我覺得太多了。 :set ts=4 (set tab stop = 4 white-spaces.) #語法色彩顯示 :syntax on/syntax off
vim指法(from www.viemu.com, 由fd1與jserv翻譯)
就這樣,我喜歡vim勝於其他的編輯器!

Cisco Packer Tracer 5.0模擬器

已經很久沒有碰CCNA的東西了。當初全心全意準備CCNA而買的參考書也變成厚厚的置物櫃(咖啡、餅乾等等)。今天去巨匠見到CCNA的同學,問了一下他們現在上得如何,順便抄一下上機練習的ip以及至帳號密碼,同學跟我說老師也用模擬器來讓同學練習了。 我想,cisco可能認為與其放任第三方的模擬器不斷進步,不如自己出官方的模擬器以增加使用者的信心。於是在cisco的官方網站裡是可以發現cisco已經推行一陣子的Networking Academy。其實我並不是很清楚這東西究竟是什麼或是如何使用,但是我之前下載SDM時也註冊了一個帳號密碼,不這個帳號密碼卻無法讓我登入下載packet tracer的頁面。我看清楚後才發現這個頁面僅限於學術方面的支援使用,例如某些大學院校跟cisco有簽署技術合作,因此該系所的學生可以用他們的學校學號登入,教師也可已有自己的帳號可以登入。 我百思不得其解,到底要怎樣才可以成為networking academic account?後來才發現應該不可能的,畢竟cisco出的模擬器如果阿貓阿狗都下載得到,那他下游的教育訓練商一定罵死了。想到了這一點,我就不再繼續研究如何成為networking academic student了。 這裡有deb,這裡有rpm可以參考。 由於我不用windows的,也不喜歡用wine,所以這裡我就不說明win32的版本了。
chmod +x PacketTracer5_i386_installer-deb.bin sudo aptitude install -y xdg-utils sudo ./PacketTracer5_i386_installer-deb.bin
安裝完後,你仍會發現字體相當的破碎且小,很顯然這不是一個獨立開發出來的東西,他就像picasa for linux一樣,是透過wine模擬出來了,不過幸好cisco已經幫我們做出一個堪用的packet tracer,字型的問題就交給字型來解決吧! sudo aptitude install ttf-mscorefonts-installer 這時重新啟動packet tracer,字體還是一樣破碎沒有變。到Options-->Preferences-->Font的分頁,勉強用可以看得懂得破碎字把他改為Times of Roman, 有沒有發現,宛如一個全新的模擬器呢? 關鍵字:破碎字, packet tracer, wine, debian

2008年10月24日 星期五

張銘清事件

中共派張銘清來台灣,美名為學術交流,後來到孔廟被深綠的激情人士海嗆了一頓,最後自己摔倒(真的是自己摔倒,有錄影可證),在台灣鬧得沸沸揚揚的。我覺得台灣人又中招了,這真的是時不台灣予。不過嗆是要嗆,不過動手推人就站不住腳了,即便我們知道他當國台辦發言人的時候有多可惡,對台灣百姓有多壞;動手打人就是站不住腳。 我譴責暴力解決事情,雖然對付中共,以暴制暴可能是解決問題的唯一方法,我如果知道他在孔廟,我也一定會去嗆他!不過動手打人真的是不對,讓這樣一個獨裁國家的代表能夠在我們台灣裝腔作調,真是跳到淡水河也洗不清... 由於國內媒體一直都在替中國人講話,可憐的記者你們是年紀太小,還是記憶力太差,張銘清對台灣人的態度壓根不是這次來台灣的這種態度。我舉台灣大紀元的一位記者所發表的文章給大家看。 -------------------------------------------------------------------------------------------- ☉林保華(資深評論家) 中共海協會副會長張銘清訪問台灣,以什麼身分訪問,變化多端,疑假疑真,簡直就是一個在你身邊的匪諜。10月19日,張銘清入境後透過主辦單位表示,希望台灣民眾將學術與政治分開,不要有太多政治語言和動作。但是他自己到底是學術身分,還是政治身分,連他自己都搞不清楚。 一,他以廈門大學新聞傳播學院院長的身分來台參加傳播與影像藝術的研討會。中國大陸的影像造假世界聞名,例如北京奧運的多宗影像造假(假唱、假煙火等等);中國大陸還嚴密控制影像,看來這方面他的確是專家,但民主台灣要學專制中國大陸嗎? 二,中共官方的簡歷介紹他是教授、博士生導師。許多論文收入《鄧小平理論文庫》和《江澤民論述研究》,學術論文獲得多種獎項。但他在研討會上把法國伏爾泰 的政治名言「我不同意你的觀點,但我誓死捍衛你說話的權利」說成是印度詩人泰戈爾的話。看來他是偽學者,否則那些是「鄧小平垃圾文庫」與「垃圾論述研 究」。 三,他來台灣公然發表「沒有台獨,沒有戰爭」的言論是政治挑釁,哪裡是學術討論,根本是政治恐嚇,公然來台灣踩場。這時他又不是學者了。 四,他被嗆聲以後,說取消公開行程。但是第二天照有公開行程,公然說謊。這時他的身分又變成騙子。他說,這是「私人行程」;那麼他是來台灣交流,還是脫隊的私人旅遊觀光客?莫非他要「投奔自由」? 五,他摔倒後,北京中央電視台報導有關新聞時,又說他是「海協會副會長」,可見他是以海協會副會長身分訪問台灣;這說明學術交流是假的!是國共合作的一個騙局。 六,他摔跤後到大天后宮拜神。共產黨員是無神論者,怎麼一下又變成有宗教信仰的善男信女?他以為用這一套可以騙善良的台灣人嗎? 七,他自稱是受害者,並譴責暴力。他聲嘶力竭喊口號,背誦中共文革期間流行的毛語錄,什麼「搬起石頭砸自己的腳」,恢復了當年的紅衛兵本色,這又是他的原始身分。 八,他在10月22日離開台灣前三度哽咽,繼承了江澤民的政治戲子傳統。他說:「看到那麼多警方人員為了我的事情勞碌,我很不忍。」……這是典型的「貓哭 老鼠」。一些台灣警方人員因為他受處分,成了他的替死鬼。是他自行脫隊亂跑,怎麼可以怪警方?共產黨殺人時,沒有見他哭過;有嬰兒喝毒奶致死,或因此忍受 劇痛開刀時,也沒有見他哽咽;只見國台辦的人為生產毒品的都慶公司護航,他有為受害的台灣人與台灣企業哽咽嗎? 國民黨在民怨沸騰時邀請張銘清以假身分來台灣,如果不是想「挾共自重」,就是愚蠢得無以復加。抗議是民主國家正常的政治生態,張銘清後退時腳軟摔跤是令人遺憾的偶然事件,但不能以此否定台灣人民捍衛主權的行動。 我堅決支持王定宇議員抗議共匪的行動!嚴正要求國民黨政府與台灣民眾站在一起對抗共匪。台灣人的抗議揭穿了張銘清這個偽君子的面目,也將更加激發台灣民眾對抗共匪鯨吞台灣的鬥志!◇ --------------------------------------------------------------------------------------------------------- 本來我們可以光明正大的要求中國人為這麼多事情道歉,結果這次竟然落得還要跟垃圾國家道歉的窘境!他一個人所受到的委屈,有比在中國良心做生意的那些台商多嗎?有比喝下毒奶粉的那些受害嬰兒的母親多嗎?傷害台灣人所講的這些話,都不算了嗎? 所以陳雲林保證會如期來,保證不會以總統之稱來稱呼馬英九,也看不見台灣國旗,來抗議的民眾他可以裡都不理,因為: 1.他吃定台灣人這回合理虧。 2.他知道國民黨只剩下共產黨這部棋。 3.他知道國民黨只剩下共產黨可以依賴,寧願被共產黨拿走政權,也不願意被民進黨這類台灣本土政權拿走。 4.陳水扁這時後的造勢,只有為民進黨扣分,為國民黨還有共產黨合作加分。 5.國民黨不知道(裝作不知道)中國自己的經濟問題比台灣還嚴重。 可憐的台灣人,或是可憐的國民黨,竟然都不知道自己是在跟世界上前所未有的邪惡政權在交朋友...實在是可悲呼。難道要把我們自己的成就拱手讓人,真的亡國了才再後悔嗎?還是亡國無所謂,反正對國民黨來說都是中國,換個名字罷了? 中國國民黨,真的是中國的國民黨,難怪怎麼想都是中國,台灣只是一步棋。 雖然我譴責暴力,推了人動了手真的就站不住腳了;但既然都發生了,其實我還蠻高興的。

工程師與科學家

有時後會想一個問題:為什麼要叫做科學「家」,工程「師」?為什麼不叫做科學「師」、工程「家」呢?

科學家、音樂家、發明家,像是一個能夠獨立創造東西的傑出人物,他的才能或知識過於淵博,以至於能自成一「家」。

工程師、老師、技師、理財師,想是能夠把他所學的技能或知識發揮得淋漓盡致,可以靠這行賺錢,也可以指導別人,所以稱為師。

不過我想最大的差別,就是獨立創造的能力。科學家不需要依靠別人,他能夠自己創造知識給別人讀,他也有能力反駁或支持別人的理論;他不需要讀「書」,因為他要讀的東西書本沒有;他可能也不寫書,因為寫出來也沒幾個人看得懂。工程師也許有卓越的技術跟豐富的經驗,能夠解決許多困難而複雜的問題,但是跟科學家不同是,他無法創造知識,他只能用他所所見所聞所學來解決問題。他需要看書,他需要看別人的構想;他可以是全世界最厲害的工程師,但他還是需要看書。

地球上厲害的人太多了,其實國外真的有很多的頂尖工程師也可以稱為工程家了。例如軟體工程,為了解決某一項問題而發明了另一種通訊協定,或是發明一種新的架構,者是無中生有的,書本找不到的,沒有人想過的,這樣的人,我寧願稱他們為工程家。

但問題是,一般人只是平凡的人,沒有接受這種訓練的必要,這樣的研究生活恐怕也不是他們能夠接受的。所以這世界上的工程師多如牛毛,工程家卻少之又少,有的話也是人間瑰寶。 相反地,一個科學研究人員也不能夠等於一個科學家,因為他必須要有獨立研究,獨立創造知識的能力。那怕是做了很多實驗數據,發表了很多篇論文,如果還是依賴於別人的想法,或是偷偷去探聽別人的想法,沒有那種無懼於別人竊取知識的那種豪氣,那麼都還是科學師罷了。

而我所期盼的境界,就是「家」,而不是「師」。

研究所的那段時間,我看到了一些國外真正的科學家,他們的思維跟處理的方法,真的跟我研究室的大學教「師」有很大的差別。論文跟學生買,因為自己七年還沒有足夠的SCI來升等...很多計畫,很多學生,沒有一個真的指導的好;光是我在研究所的這兩年光陰,加上我已經有四個人想離開研究環境了。所以應該怎麼說呢?我以為我跟著一位科學家,其實只是一位科學師;他不是不厲害,只是他沒辦法讓你也這麼厲害。

我一直認為,科學家的武器是他的知識跟想法,工程師的武器是他的知識跟方法。退伍離開那台灣最黑的部隊之後,我天真的認為我可以當一名工程家。我可以吸收非常多的技術,累積非常寶貴的經驗,自己不斷提昇自己的價值,有一天我也可以創造出一些很不一樣的東西! 於是我從自己最熟悉的linux開始,去補習班接受正規的教育訓練;網路的概念我比較薄弱,也去參加了CCNA的培訓課程;php不熟,我也去上php/MySQL的課程;自覺程式語言沒有一個非常熟的,因此下定決心鑽研java,參加了SCJP的課程。當然這是書本上的學習過程,實務上的學習課程讓我發現我的想法勢必不可能成真了。

台灣並不重視技術,特別是資訊產業的技術。

無論呆呆windows也好,unix-like也好,熟悉兩種系統架構,甚至是整合的工程師,他們的知識需要花多少時間來閱讀,他們的學習需要花多少的成本,解決公司或客戶的方案需要花多少時間思考、設計或是從網路上找答案?這些成本似乎都被忽略了,因此以系統整合商而言,一個新進的工程師在台南18000-23000,工作時間10-12小時。所以這是請一個什麼都不會的高職畢業生來作點滑鼠的工作嗎? 那些熱愛系統的工程師,一天10-12個小時的工作時間,他們回家有時間唸書嗎?有體力吸收新知嗎?月薪18000的工程師,繳完房租或是水電油錢,再扣這個月的生活費,你覺得工程師們有能力再去買一本將近1000元但是很好用的工具書嗎?

但也不能完全怪系統整合商...因為他們的客戶就是只能給這樣的錢,系統工程師本來就應該是高知識高所得的族群,為了節省成本,從工程師身上扣;知道要維持助理小姐一個月20000的薪水,為什麼不維持工程師一個月30000的薪水?眼尖的也知道,成本的問題。

所以結論就是,台灣的企業根本不想花錢在資訊上,他很重要可是平時看不到,所以我不付錢;但是下游整合商又需要這客戶,所以接下這個錢少少的案子;差價誰吸收?當然不會是老闆,誰的人最多?工程師阿!好吧,所以從工程師身上扣。這會導致一個效應,就是越來越少人會想做電腦工程師,或者是作電腦工程師的人素質會一年比一年差。以我自己為例子,看到這樣的待遇,我就算對這些東西再有興趣,我投入了我有時間讀書嗎?我有時間進步嗎?我有維持我生活品質的能力跟時間嗎?沒有,完全沒有,唯一的可能就是像kenduest或netman老大一樣當補習班老師,這是我認為比較有意義的出路。不過,這不是我想要的,這樣的環境雖然友善,但是不會進步。

這幾個月,我第一次教到完全不想念書,只想混學歷,不在乎自己前途或父母感想的一群糟小孩。當然不是所有學生,但比例算起來也有98%了。我只需要把我國中會的東西交給他們就好了,雖然他們是高中生。所以當老師我喜歡,但是我希望可以教程度好一點,有想法有遠見的小孩。所以教成年人也許不錯;不過在電腦補習班當老師,恐怕沒工作經驗人家也不敢請;當補習班老師...一堆小孩父母交錢...小孩來補習班交朋友,雖然都有所收穫,但恐怕不是付錢的人所想要的...又有成績壓力,坦白說,小孩不會讀書,或是不想讀書,真的是他自己的問題,這東西,花錢無法解決。

10月,我很徬徨。我實在對於IT產業失去了信心,當然我甚至沒有機會看到其他更不一樣的部份,不過我認為這樣的待遇不合裡,使用者付費,我付出的東西只是裝在我腦袋裡,不是我天生就會,這樣的待遇我根本不想待,待出來人都變呆了,知識也沒有進步。走著走著,我回到母校的地科系,看到龔老師實驗室外面貼出一張"Origin and Evolution of Earth: Research Questions for a changing planet"這概要式的文章,裡面說明了由美國能源部、NASA、國家科學基金會、美國地質調查所、國家研究委員會共同組成了一個研討會,來探討地球科學有關的十大議題:

01. How did Earth and other planets form?
02. What happened during Earth's "dark age" (the first 500 million years)?
03. How did life begin?
04. How does Earth's interior work, and how does it affect the surface?
05. Why does Earth have plate tectonics and continents?
06. How are Earth processes controlled by material properties?
07. What causes climate to change--and how much can it change?
08. How has life shaped earth and how has Earth shaped life?
09. Can earthquake, volcanic eruptions, and their consequences be predicted?
10. How do fluid flow and transport affect the human environment?

當中牽涉到許多整合性的議題,結合了地球物理、地球化學、岩石學以及高壓物理、水文學家、火山學家、生物學、古生物學等等專家的知識,內容的探討勾起了許多我從前的夢想以及所學,當初對他的放棄難道真的就是因為遇到了一個科學師嗎?

我想,經過這一年的洗禮,我是真的想離開台灣一陣子,雖然他是我的母國,不過這個環境目前對我而言太不理想了。不過不是為了錢,而是為了夢;我要作回科學家,不是工程師,也不是科學師。

改天,我再把這篇翻譯出來給各位雅俗共賞~

Big5轉UTF-8

好久沒寫一些筆記了,最近忙著上課,每天的生活都很勞累,讀書的時間卻不多,晚上又不能讀書,情況真是岌岌可危....

一般而言,linux users要讀取呆呆windows上的純文字內容時,會遇到幾個困難:
1.檔名的編碼不同。
2.檔案內容的編碼不同。
3.檔案格式不同。
就算今天是一個binary,還是會有檔名的問題,除非你透過FTP或是samba在傳輸前已經先幫你轉換檔名編碼過了。以下針對這三點來作說明:

更換檔名--使用convmv
dpkg -l convmv || aptitude install convmv -y

1.列出系統可用的編碼:convmv --list
2.基本語法:convmv -f big5-eten -t utf-8 abc.txt --notest
     -f: from
     -t: to
     --notest:真的轉檔,預設只是測試而已。
     --nosmart:convmv會自動偵測是否已為目的編碼,是的話就不做處理。如果真的有無法轉換過去的問題,可以試著加入--nosmart參數,這是optional。
3.轉換單一檔案:

convmv -f big5-eten -t utf-8 abc.txt --notest
4.轉換某路徑及其下的所有檔案:
convmv -f big5-eten -t utf-8 -r --notest
這比較常用,因為你已經無法正確的輸入檔名了,因此從某個目錄為起點下這個指令比較方便。

更換檔案內容:iconv
其實很多人比較需要這個,因為現在許多GUI軟體都會自動轉換檔名的編碼,非常人性;不過檔案內容就沒辦法了,需要手動解決。

dpkg -l libc6 || aptitude install libc6 -y
1.列出可轉換的編碼:
iconv --list
2.開始轉啦:
iconv -f big5 -t utf-8 oldfile.txt > newfile.txt
iconv語法跟convmv很像,也比較簡單,一次轉一個檔案。他沒辦法直接用原來的檔名,僅戶列出轉換後的結果到螢幕上,因此給個stdout過去存成一個新檔就可以了。

更換檔案格式:dos2unix

dpkg -l tofrodos || aptitude install tofrodos -y
1. tofordos套件內含兩隻程式:unix2dos以及dos2unix,從名稱來看再清楚不過了。這兩個指令單純解決windows跟unix系統換行定義的問題。
2.轉換一個從呆呆windows來的純文字文件:
dos2unix abc.txt
會自動將abc.txt轉成unix格式。同樣的在unix-like的環境下編輯的ascii,呆呆的一定不懂,這時後轉給windows users就要先下:
unix2dos abc.txt