這篇文章轉載自
這篇文章可以給許多博士生非常非常好的警惕--博士並不博。
每個研究生都鑽研在自己的專業領域,有些人喜歡把內圈變大,有些人喜歡專注在某一特定領域的獨特性。無論是哪一種,都不能忘記人類的知識何其浩瀚,絕不可能是人一輩子能夠通曉所有知識跟學問。
因此,博士們....是不是應該更謙虛的面對自己以及別人的專業呢?
| Share |
關於地震學軟體的學習歷程
劉玲根老師是台灣一位相當了不起的地球化學家,他深厚的學術涵養以及謙遜的態度、鍥而不捨研究精神,我在大學時代聽過幾場劉老師的演講而深受感動。他是一位了不起的學者,我問的問題,無論多麼外行或粗淺,他總是能細心且耐心的用最淺顯的字句解釋給我這毛頭小子聽懂為止。這幾篇文章適合給大學程度以上,喜歡地球化學、結晶學的同學閱讀;如果你不懂這些領域,也可以從中體會地球科學界的一些爭論及思考方向。
地函研究的爭議 --科學人, 102, 66-70, Aug, 2010.
地球深處的神秘礦物 -- 科學人, 102, 52-65, Aug, 2010.
大氣與海洋 - 談系內行星的演化 ─ 科學月刊, 第41卷第7期, 538-543, 2010.7月號.
| Share |
TauP 1.2以上的版本可以在taup_time裡面求得該phase的takeoff angle以及incident angle,筆者目前所能下載到的最新版本為2.0 beta6,相信如果需要這些資訊的研究人員可以更輕易的使用taup。TauP的作者Philip非常貼心的把Takeoff angle以及incident angle欄位放在後面,這樣一來使用者就無需更改呼叫taup的shell script。
taup_time -ph PcP,ScP -deg 46.5 -h 122.2
Model: iasp91 Distance Depth Phase Travel Ray Param Takeoff Incident Purist Purist (deg) (km) Name Time (s) p (s/deg) (deg) (deg) Distance Name ----------------------------------------------------------------------------------- 46.50 122.2 PcP 587.05 3.532 15.12 10.62 46.50 = PcP 46.50 122.2 ScP 808.93 4.185 9.94 12.61 46.50 = ScP
請各位無痛升級到新版的TauP吧!
| Share |
今天逛逛Apple Download時,發現其實在MacOSX上有許多好玩的小程式。特別是在Math & Science的分類裡,有一個SeisMac的小程式。不過從Apple Download經常無法下載,後來google才知道原來SeisMac也是IRIS提供的一套免費小程式,他利用MacBook上的Sudden Motion Sensor(SMS)來記錄XYZ三軸的加速度,並且允許你將所見的畫面儲存成tif,或是另存成sac(binary),asac(ascii)以及csv格式。
開啟SeisMac之後,輕輕搖晃或是手指輕拍你的laptop,或是跟我一樣隨意搖晃你的MacBook,你會發現移動的加速度已經被記錄下來啦!
接著,你可以儲存這些seismogram為sac格式!
缺點是,三個分量必須個別儲存,有點討厭。這三個分量並不是E/N/Z方向,而是以laptop為參考座標的X/Y/Z三個方向。儲存完之後,還真的可以用SAC去跑唷!
不過我還是不知道這樣有趣的小程式究竟可以如何使用--用在地震儀上未免也太貴了些。如果你對這個小程式感興趣的話,或許應該參考他的SeisMacHelp頁面!
| Share |
先前我一直沒有寫一篇如何在linux上安裝Seismic Analysis Code(SAC)的筆記,是因為在sac的網站上已經有很詳細的說明。下載下來的sac都已經是可以直接執行的binary,所以幾乎沒有任何問題。由於最近開始練習使用Mac來做日常工作,我想日後如果想在MacOSX上面跑sac的使用者也可以依此參考,因此寫下這篇簡單的sac on mac筆記。
在linux上,只要確定你安裝的linux是x86還是x86_64的版本即可。假設將sac解壓縮到/opt,則只需要在~/.profile裡設定幾個環境變數即可:
export SAC=/opt/sac如果是csh的愛好者,你的環境變數應該長得像這樣:
export SACLIB=$SAC/lib
export SACAUX=$SAC/aux
export PATH=$PATH:$SAC/bin
setenv SAC /opt/sac
setenv SACLIB $SAC/lib
setenv SACAUX $SAC/aux
set path = ( $path $SAC/bin )
在MacOSX上,你也應該下載一個適合自己版本的sac來用。我的MacOS是Leopard(10.5),是64位元的版本,intel的cpu,可以執行x86或是x86_64的binary,不過當我設定好環境變數之後,敲入sac卻有錯誤訊息:
dyld: Library not loaded: /opt/local/lib/libSM.6.dylibdylib我不知道是什麼,不過看前面libSM.6我猜應該是缺乏動態函式libSM,所以dylib應該是dynamic library的意思,在linux相當於少了libSM.6.so的意思。知道少了這個lib,在linux只要用套件管理程式裝起來就可以了。但是在mac並沒有套件管理程式,該怎麼做呢?
Referenced from: /opt/sac/bin/sac
Reason: image not found
Trace/BPT trap
為了解決這個問題,我們必須裝上MacPorts,這是一個開放原始碼的軟體,他收集了很多開放原始碼的程式,像是在linux世界裡常見的gedit,gimp等等的程式,可以透過MacPorts移植到MacOS上使用。但是,這些套件都是原始碼,他會下載原始碼到你的電腦上並自動編譯、安裝,所以會非常耗時;建議晚上安裝,早上起來就好了。
但是要安裝MacPorts,則必須要有gcc、make這些工具。而這些工具都是由xcode來的。也就是說,你必須先安裝xcode,才能有gcc,才能安裝MacPorts,才能安裝libSM.6.dylib,才能順利執行sac。
大部分安裝好MacOSX之後是不會有xcode的,你必須從安裝光碟裡去選擇並安裝xcode。安裝完xcode之後,你就有fortran, c, c++, python, Java等編譯器可以使用。接著下載給Snow Leopard(10.6), Leopard(10.5)以及Tiger(10.4)的MacPorts安裝檔來安裝。
安裝完成後,你的shell應該就能找到port這個指令。由於我不清楚mac如何更改default shell為tcsh,所以奉勸還是忘記有tcsh這類shell吧。安裝好之後,都是用port指令當做mac的套件管理程式。
更新MacPorts並且更新套件庫索引:
sudo port selfupdate尋找套件名稱:
port search foo安裝套件:
sudo port install foo移除套件:
sudo port uninstall foo回到我們的問題本身--套件的關鍵字是libSM,因此我們透過search找到的套件名稱為xorg-libsm,因此只需要輸入:
sudo port install xorg-libsm再次執行sac,就可以快樂的在MacOSX上使用sac。
更舊版本的Mac恐怕需要更舊版本的sac才行--我所測試的sac版本為101.4。希望本文能對於Mac的使用者有所助益。
| Share |
最近暑期生來到這裡,讓整個地球所變得熱鬧且充滿生氣。其實我一直很想作一些bash的教學,不過礙於環境,所有的教學跟經驗,我希望能把握僅存的時間寫成教學文章,讓年輕的地震學家或地球物理學家能夠透過學習bash,充分體驗bash之美。
今天只是牛刀小試一番,我們來看看shell script的威力。假設我今天瀏覽一個網頁,該頁面上充滿著美麗的圖片(當然,圖片的內容是風景或是美女...筆者沒有權利過問@_@);以
這個頁面為例,我們要抓下裡面風景的圖檔其實不需要任何工具,一個終端機就行了。檢視這個頁面的原始碼,搜尋jpg或是png,你大約可以發現你要的圖片是位於哪個區塊。

我把選取的範圍另存成一個文字檔之後(temp.txt),就可以利用shell script來取得我們要的東西。
讓我們來思考一下這個東西。我們要得東西主要是http://blablabla.com/XXX.jpg這樣的格式,但是其他累贅的字串實在太多,而且大多處於同一行的狀態,這個時候用awk不太適合,先把sed請出來用:
cat temp.txt | sed 's/></\n/g'我的目的是把每個網址列都盡量變成獨立的一行,把字串裡面所有的
><符號都變成換行字元符號。
關鍵字串已經獨立成一行一行了,此時grep以及awk就可以雙劍合璧:
cat temp.txt | sed 's/></\n/g' | grep 'http'| awk '{print$2;}'我利用pipe在延續剛剛的命令,取出包含http的字串後,發現關鍵字串在第二的colume,用awk取值非常容易。
我們要的網址列已經呼之欲出了,再做個最後的努力吧!
cat temp.txt | sed 's/></\n/g' | grep 'http'| awk '{print$2;}' | awk -F= '{print $2}' | uniq
我們要的網址列已經乖乖的呈獻在我們面前。讓我們愉快的把他寫成shell script當成送自己的第一份禮物吧!
我們要的圖片就這樣下載下來了。希望這篇小文能讓你對shell script感到興趣,並在研究的路程上處理繁複的data能更得心應手,事事都以shell為想法來解決問題。
| Share |
Java在眾多程式語言裡面脫穎而出,最大的原因除了物件導向的程式設計易於維護之外,他的跨平台特性確實讓其他語言望其項背。Java透過JVM(Java虛擬機器)來執行,因此跨平台的任務就交給撰寫JVM的廠商或團體,我們只要負責寫或是用就好。Taup就是由Java語言所開發而成,理所當然他是能夠在windows上面運行的。如果你對於linux還是有抗拒但又必須用到Taup,那麼請參考這篇文章。
首先,你必須要有可以運行Java程式的環境(Java Runtime Environment,簡稱JRE)。如何知道你有沒有安裝java呢?請打開你的終端機:(哦,不!是命令提示字元....),輸入java -version:
如果你可以看到跟筆者類似的畫面,而不是找不到這個指令,那麼就表示你的系統已經有安裝JRE(也就是大家所說的Java),可以順利執行Taup。If not,請google一下java這個字,找到下載java的頁面。
安裝完Java後,請你再敲一次java -version,應該就可以看到跟第一張圖類似的畫面。接下來,我們需要設定環境變數讓你的Windows知道如何找到taup!
假設你下載Taup並把她解壓縮後放到C:\,則你需要設定一個名為TAUP_HOME的變數:
有了這個變數還不夠,你還需要把Taup的可執行目錄加進系統命令搜尋的PATH裡!
這個path環境變數非常重要,請小心利用分號把%TAUP_HOME%\bin加到最後面。按下確定之後還不行,請你重新開機以讓環境變數生效。(我不知道有沒有不重開機就生效的方法,如果有,可以利用留言分享給其他朋友)
上圖...有點浪費版面...
總之重新啟動系統後,TauP就可以正常執行了!
這是Taup的圖形介面,下圖是linux上執行的畫面。
各位可以發現,java程式的優勢就是設計師不必擔心不同平台有不同的顯示效果,唯一不同之處就是字型,其餘完全相同。
可以在windows上執行所有Taup的功能,或許可以對於學習Taup有些許的幫助。
後記:
筆者測試的結果是Windows上的跑Taup的速度比linux或是solaris上慢得太多,或許是因為我的windows是虛擬機器的關係;但如果你的實體windows也跑得不快,也別太意外。
| Share |