Cody Blog

Update ThinkPad BIOS in Linux with a USB disk

In this post, I recorded my ThinkPad x220 BIOS update steps. In Windows, we can use BIOS Update Utility provided by Lenovo, but it's only available in Windows platformas. For Ubuntu user like me, we can still update BIOS with a USB disk.

Download BIOS Update Bootable CD

The latest version is 1.39(2013/11), Go to lenovo support site:BIOS Update Bootable CD for Windows 8 (32-bit, 64-bit), 7 (32-bit, 64-bit), Vista (32-bit, 64-bit), XP - ThinkPad X220, X220i, X220 Tablet, X220i Tablet, download 8duj25us.iso(31.6 MB)

Download geteltorito.pl to generate boot image

$ wget 'http://www …

Bash Shell 快速鍵 (emacs-style)

執行/中斷/輸入

  • Ctrl-C: 終止正在執行的程式
  • Ctrl-L: 清除Terminal畫面,同clear指令
  • Ctrl-Z: 將該工作放到背景中暫停, 使用jobs看工作號碼(job number), fg 取回
  • Ctrl-J: Enter,不用離開鍵盤,還不錯

進階

  • Ctrl-D: 離開 Shell
  • Ctrl-x, Ctrl-e 開啟vim,可一起執行多個指令
  • Ctrl-V TAB: 輸入 TAB,而不是命令列擴展
  • Ctrl-V: 加上要輸入特殊字元, ex: Ctrl-V Ctrl-D 會出現 ^D

移動

  • Ctrl-A: 回到此行最前面(同Home鍵)
  • Ctrl-E: 到此行的最後面(同End鍵)
  • Ctrl-F: 游標向後移動一格(不想要用arrow key時可多加利用)
  • Ctrl-B: 游標向前移動一個(不想要用arrow key時可多加利用)
  • Alt-B: Back(left) one word
  • Alt-F: Forward(right) one word

查找

  • Ctrl-N: 找下個指令(同下箭頭)
  • Ctrl-P: 找上個指令(同上箭頭)
  • TAB: 擴展要輸入的檔案到命令列上(上/下箭頭: 開始搜尋過去的命令)
  • Ctrl-R: 打關鍵字搜尋過去的命令, 搭配 Ctrl-r/Ctrl+Shift+r,可來回尋找

進階

  • Ctrl-I: 同 Tab
  • Ctrl-S: 暫停輸出到畫面上,讓stdout定格(搭配Ctrl-Q使用)
  • Ctrl-Q …

Install IBM Active Protection System Linux Driver (HDAPS)

Installation

$ sudo apt-get update
$ sudo apt-get install tp-smapi-dkms hdapsd
$ echo 'tp_smapi' | sudo tee -a /etc/modules
$ echo 'hdapsd' | sudo tee -a /etc/modules
$ sudo modprobe tp_smapi
$ sudo /etc/init.d/hdapsd restart

Verify if it works

$ sudo hdapsd

it should display "parking" on console if you move your laptop

Modify config: /etc/default/hdapsd

  • sensitivity: default is 15. higher value means less sensitive.
  • disk: the disk that hdapsd should monitor

Reference :

2013第一屆日月潭環湖馬拉松賽-29K超半馬心得

日月潭

img

距離上次田中馬初馬的挑戰,休息一個星期之後緊接的就是2013日月潭環湖馬拉松。我這次參加的是29公里超半馬挑戰組。雖然說這是第一屆,但據我所知日月潭也常有其它單位會在此舉辦路跑,因為路線景色實在是太讚了。主辦單位是全國EMBA校園馬拉松接力賽組會,這場給跑友門的感覺就是超級貴,全馬報名費要1500,超半馬也要1200,比往常的賽事多了500元左右。不過因為是南投在地,又覺得可以跑完日月潭環湖一周是一件很酷的事情,所以我還是給他報名下去了。起點跟終點都是在向山遊客中心

img img 跟戰友Alvin起跑前跟熱氣球拍照。

img 全馬組出發!

img 15分鐘後,超半馬組也出發了!

img 日月潭之前來過很多次,但從來沒有那麼早來過,萬萬沒想到清晨的日月潭那麼厲害。太陽躲在山後,讓山景非常有層次。讓剛起跑的我非常讚歎!忍不住拍了好幾張照片 img img 很多跑友也都停下腳步拍照留念

img 漂亮的湖光山色 img img img 美好的晨跑時光,就在太陽高高昇起後告個段落。我的右膝蓋從7K左右開始抗議。當下就知道這是田中初馬時所受的傷,還沒有完全復原。膝蓋的內側每跑一步就有刺痛感。我趕緊調整跑步的姿勢,讓右腳可以好受一點。並開始期待等下的補給站有肌樂可以止痛一下,可惜路過好幾個補給站都沒有肌樂,只能摸摸鼻子繼續跑下去,終於在16K玄奘寺補給站,看到有止痛噴劑,趕緊拿來噴了好幾下。希望在師父加持之下可以撐下去。這邊也有特色補給品:香菇茶葉蛋 img

賽事的後半段,大多是緩下坡,我原本以為可以開始加速。但雙腳膝蓋開始輪流罷工。雙腿也愈來愈僵硬,此時只能硬撐下去,但速度愈來愈慢,甚至痛到只能步行。找到機會就抬腿拉拉筋。

img 過了20K,完全就是拖著雙腳在走,膝蓋一彎就痛。

img 突然後面出現了警察伯伯緩慢前進。驚!這不是第一名才會有的尊榮前導車嗎?XD 原來這場賽事的交通管制是警察會把跟我們同方向的汽車擋下來緩慢的行進。而有多慢呢?大概就是我那時前進10分速,因此大部份的跑者都可以享受到沒有什麼車流的完美賽道。但是被擋下來的在地人或遊客可就不開心了,甚至有人還對警察咆哮大罵。之後警察才勉強加速一些,而這群車隊也就離我而去了。

img 終於到最後的3K,真的是快解脫了。全半跟超半馬也是在此分開。全馬還要左轉台21線,補足13公里到全馬的42公里。當下我真的很慶幸我只需要再跑3K就可以收工。最後的3K是個魔鬼上坡路段。

img 還好沿途開始出現大量的暨大同學志工,幫我們加油打氣。

img

這時就是一步一步的堅持,雖然只能龜速前進。慢慢吃掉最後的3K。但當開始聽到熱鬧的會場麥克風聲音時,我知道離會場已經很近。志工們也列隊跟我擊掌加油!令人非常的感動,,最後也順利的回到終點。

img 最後到終點時,全馬計時錶已經來到4小時半。

img 終點有志工妹妹幫忙掛上獎牌。獎牌不同於一般的金屬材質,這場是特別的琉璃材質

這次超半馬也是特別有意義,因為這場是我的好同事Alvin的初馬。他因為膝蓋受傷的關係,已經錯過了好幾場已經報名的全馬賽事,只能選擇棄賽 …

2013田中馬拉松-初馬42.195公里挑戰

img

今年也參加了近十場路跑活動, 但是這些都是之前設定為了我的初馬:田中馬拉松所做的準備。七月底報名看到同事Alvin在搶報名馬拉松,只是一股湊熱鬧的心態也就跟著報名,那時侯頂多在碧湖公園練習跑個10公里。三個月訓練下來雖然有半馬21K跟超半馬23K賽事的經歷,但是前陣子卻因為意外而導致掌骨骨折。讓自己有個藉口可以鬆懈,中斷練習了二個星期。而自己也大意沒有確實練習長距離30K的LSD。路跑當天還是硬著頭皮上場,面對這場人生初馬。

img 出發!

img 剛開始出發就被海軍陸戰隊的管樂演奏給感動,

img 補給大部份都是水果。

img

田中馬的最大特色,就是全鎮鄉民總動員幫選手加油。 img 沿途也都可以看到民眾自製加油看板幫忙加油打氣。

但其實這場初馬跑的非常吃力,已經嚴重超過我可以負荷的程度。經過天堂路跟好漢坡的洗禮之後,僅存肌力完全被吃光光。開始整路步兵。

img

到了30多K時,發現後面慢慢的人也就逐漸地變少了。志工也開始騎機車在四周巡迴尋找撐不下的跑者。我就憑著一點點堅持,就算跑不動了,我還是希望可以完成這場初馬。我花了七點多小時才抵達終點,足足比表定的關門時間還晚了快一個小時。很感謝補給站熱情的志工,裁判的耐心等待。完成了這場關門初馬。

img

img

Upgrade openssl from source code on Ubuntu

Remove previous openssl installation

$ sudo apt-get remove openssl libssl-dev

Install openssl 1.0.1c from source

$ tar -xvf openssl-w.x.yz.tar.gz
$ cd openssl-w.x.yz
$ ./config --prefix=/usr
$ sudo make install

2013信義葡萄馬拉松-初超半馬23.2KM心得

信義葡萄馬拉松今年2013是第三屆舉辦,因為前兩年的好口碑,加上台灣近年風行瘋跑步活動,所以這場葡萄馬報名一下子就被秒殺了。葡萄馬是我最近參加幾場的路賽最在地化的一場。之前有參與幾場路跑活動,感覺像是外來的客人跟這邊借場地辦活動。但是葡萄馬就完全感覺不同,跑葡萄馬可以感受到整個鄉動員起來的感覺,很棒!!

img

![img](img https://lh3.googleusercontent.com/-dX1S8JgA8Z0/UmETgrq_WhI/AAAAAAAFFsM/gGOX1Mk-xXc/w1024/2013100712280700001.JPG %} 轉錄自信義鄉公所

img 現場大約有二十餘頭的烤乳豬。讓跑者跑完可以享用。這些食物都是用號碼布領取的,所以也不用怕跑太慢會吃不到 XD。

img 雖然沒有室內的寄物處,不過主辦單位有準備大塑膠袋讓大家的包包不會濕掉。

img 半馬的路線圖

img 半馬的高度圖

基本上路線是前半段都是緩上坡,過了一半之後就開始緩下坡,最後2K會再有個挑戰最後意志力的上坡。

img 起跑點

img

img 布農族的長輩用獵槍鳴槍起跑

img 剛開始出發都還是很平坦的大馬路

img 沿路可以看到很多葡萄園 img 目前看都還綠綠的,11月過後才算盛產

img 超半馬跟全馬在這邊分開了,路上都有白色的標記

img 馬路開始愈來愈小條,往山裡面跑了

img 不知不覺就愈跑愈高,往下看下面的跑者就跟螞蟻一樣小

我發現馬拉松有每場都會遇到一些人會帶狗一起跑,葡萄馬也不例外。 img img 小黃跟小白

跑路的中途補給也是很厲害的,葡萄、梅子、蕃茄、香蕉等等

img 轉錄自信義鄉公所

不過,像我這種慢行人員,實際吃到的是這樣: img

不過還是吃得很開心。每次進站都是裝一杯葡萄,邊跑邊吃,吃到下一站。

img 好吃的葡萄

img 跑到最高點往下照的景色

img 小朋友在路邊加油

img 後半段都是緩下坡,所以跑起來就比較輕鬆一些

img 最後2K的時侯,全馬的Richard也回來了,之前苗栗馬Richard也是跑第一名。目前的實力,跑完半馬,全馬的前段班也差不多回來了。

img img 最終抵達終點前的照片

img 終點的補給,飲料,熱粥,山豬肉,梅子汁,仙草茶,水,舒跑,毛巾

img 成績 03:02:04, 總排名 667/1181

img img img 最後再喝一杯馬拉桑手工啤酒(100元/杯),完美的Ending。

Python generate xUnit report for Jenkins

在日常使用的Test Framework所產出的Test Report並不是標準的 JUnit 格式。所以這使得想要回傳Test Result到Jenkins的時侯,沒辦法把 Test Result 顯示在Jenkins的Build的結果上面。然而產生JUnit report的功能在一般的Test Framework像是nose跟py.test都有,像是nose就有一個plugins是專門在處理這個問題,或者是py.test可以直接使用py.test --junitxml=path來產生。可惜我的工具沒有。所以只好自己弄一個了。在此記錄要如何完成這個任務。

上網 Google了一下有關JUnit XML format到底長怎樣,找到Stackoverflow這篇有討論,基本上可以解決90%的疑問。有關XML的定義可以從.xsd檔中找到,而JUnit的.xsd檔,這邊可以下載。我使用XMLPad來打開,再掛載xsd的schema檔,手動體驗一下 xml 的format,基本上最簡單的的JUnit Report大概是這樣:

<testsuites xsi:noNamespaceSchemaLocation="file:///D:/junit-4.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<testsuite name="INSTALLATION RAT">
    <testcase classname="INS_RAT_0001" name="Test Case Title Sample 1" time="0.046">
      <system-out></system-out>
    </testcase>
    <testcase classname="INS_RAT_0002" name="Test Case Title Sample 2" time="4.868">
        <failure message="case failed …

20分鐘了解 CPU 基本運作

這兩天發現了一個不錯的教學影片,用二十分鐘左右的時間介紹CPU的基本運作原理,相當值得一看。

這個影片主要是來自一本書《But How Do It Know》,天瓏這本代訂購一本賣 946,薄薄的一本,只有2百多頁。這本書虛構了一個Scott CPU來舉例,我看完教學影片做了一些筆記當參考:

Instruction Set

CPU 基於最基本的 Instruction Set 來達成複雜的工作。例如:

  • Load a number from RAM into the CPU
  • ADD two numbers toether
  • STORE a number from the CPU back out to RAM
  • COMPARE one number with another
  • JUMP IF Condition to another address in RAM
  • JUMP to another address in RAM
  • OUTput to a device such as a monitor
  • INput to from a device such as a keyboard

基本元件

從這個影片中,整理一下一些元件的用途

Random access memory(RAM)

其 Random 之意就是代表可以隨意存取某個Addreess的資料。RAM主要分兩部份,Address 和 Data。CPU 可以要求從某個 …