2016年3月31日 星期四

依照年齡與性別的死亡率

情境:老闆交予一份很重要的資料,還說了:『小心保存,要是不見了你就死定了。』
      這個時候就要開始考慮,由於這份資料很重要,那應該要花多少的精力將這份資料保存呢?一個簡單的判斷標準就是,只要這份資料不見的機率小於個人的死亡率或是老闆的死亡率就已經足夠,因為不管是保管者或是老闆掛點,資料是否還存在對於保管者也就不再重要。

2016年3月30日 星期三

DRBL手動方式加入帳號

DRBL這套無磁碟開機系統已經提供了一些現成的指令可以加入帳號,但在這邊討論一個奇特的狀態:想從另外一套的DRBL上面把大量的帳號給搬到新的DRBL上(安裝方式參考《設定DRBL企鵝龍》),但是希望不要修改密碼也不修改uid與gid,可以依序這樣做:
  1. 到舊DRBL的/etc/passwd內,複製帳號的所有內容,放到新的DRBL的/etc/passwd。這個步驟請自行注意uid不要有所衝突
  2. 把舊DRBL上/etc/shadow內,複製帳號的資訊與password hash到新的DRBL的/etc/shadow。一樣請注意不要有uid上面的衝突。至於說/etc/shadow的內容與製作password hash,請參考aychedee的這篇文章
  3. 用root輸入指令make -C /var/yp 
# make -C /var/yp
make: Entering directory `/var/yp'

make[1]: Entering directory `/var/yp/你的DRBL名稱'
Updating shadow.byname...
Updating passwd.byname...
Updating passwd.byuid...
Updating netid.byname...
make[1]: Leaving directory `/var/yp/你的DRBL名稱'
make: Leaving directory `/var/yp'

以上是黑手作法加入帳號,不過並不是很建議這樣做... 除了可能出錯外,家目錄下面們每個使用者的位置還要對應到/etc/passwd裡面的資料。真正要做還是參考《大量移除使用者帳號》,這個方式可以做到
  • 新增或刪除單一使用者,用drbl-useradddrbl-userdel -s
  • 新增或刪除多名使用者,用drbl-userdel -r
  • 根據檔案刪除多名使用者 ,用drbl-userdel -fdrbl-userdel -l
  • 根據群組刪除多名使用者,用drbl-userdel -g
_EOF_

2016年3月29日 星期二

Mac將資料碟變成RAID-1(mirror)

想要將一個含有內容的硬碟直接變成RAID1的一部份,又希望裡面的資料不要被更動到,可以使用diskutil這個指令來達成。內容參考Camelot回應的文章,用diskutil list找到硬碟disk3s2這個分割區,把這個分割區變成RAID-1一部份又不動到資料

# diskutil enableRAID mirror disk3s2
Started RAID operation on disk3s2 Bay1
Resizing disk
Unmounting disk
Adding a booter for the disk
Creating a RAID set
Bringing the RAID partition online
Waiting for the new RAID to spin up "這裡會是UUID"
Finished RAID operation on disk3s2 Bay1
做完可以直接用磁碟工具程式(disk utility),用圖形界面加入其他硬碟

# diskutil addToRAID member disk4s2 Bay1
意思是說把disk4s2這個分割區加入到前面做的RAID-1裡面

特別注意,資料一定要先備份再做這種動作!!

_EOF_

2016年3月28日 星期一

合併Mac OS X的硬碟分割區

Macintosh上面分割的磁區可以合併成一個,合併的時候指定第一個區域的資料不會動到剩下的部分則是會被清除。下面的指令在OS X 10.9.5 Mavericks上面測試過沒問題(不過還是建議先備份)。首先開啟終端機(Terminal),然後依序執行下面指令:

$ diskutil list
/dev/disk2
   #:                   TYPE NAME    SIZE       IDENTIFIER
   0:  GUID_partition_scheme        *1.5 TB     disk2
   1:                    EFI EFI     209.7 MB   disk2s1
   2:              Apple_HFS HDD2    1.2 TB     disk2s2
   3:             Apple_Boot         250.1 GB   disk2s3
可以看到這個硬碟(/dev/disk2)被分割成三個磁區(slices),第一個磁區disk2s1放置EFI資料、第二個磁區disk2s2放置資料名稱叫做HDD2容量是1.2TB、第三個磁區disk2s3沒有放東西且容量則是250.1GB。

現在想要把第二個與第三個磁區合併,而且希望保留第二個磁區,合併完後的名稱一樣是叫做HDD2,輸入下面指令
# diskutil mergePartitions JHFS+ HDD2 disk2s2 disk2s3
Merging partitions into a new partition
     Start partition: disk2s2 HDD2
     Finish partition: disk2s3
Started partitioning on disk2
Merging partitions
Waiting for the disks to reappear
Growing disk
Finished partitioning on disk2
/dev/disk2
   #:                 TYPE NAME    SIZE       IDENTIFIER
   0:  GUID_partition_scheme      *1.5 TB     disk2
   1:                 EFI EFI      209.7 MB   disk2s1
   2:           Apple_HFS HDD2     1.5 TB     disk2s2
這樣就可以再不更動硬碟裡面資料的情況下把磁區合併

_EOF_

2016年3月25日 星期五

半淨相關(Semipartial correlation)

Semipartial correlation中文翻譯半淨相關,此分析是用來了解某個因子如何被另外兩個因子所影響。套用前面身高、體重與年齡的例子,淨相關處理的問題是

“當排除掉年齡大小的因素以後,身高與體重的相關性是多少?” 
“當排除掉身高大小的因素以後,年齡與體重的相關性是多少?”

那麼半淨相關(Semipartial correlation)所想要解答的問題會是

當同時考慮身高與年齡時,(排除掉年齡後)身高獨自對體重的影響有多少?”
當同時考慮身高與年齡時(排除掉身高後年齡獨自對體重的影響有多少?”
當同時考慮身高與年齡時身高年齡共同對體重的影響有多少?”

2016年3月24日 星期四

FLOPS:CPU運算速度的單位

估計某台電腦主機運算速度:
FLOPS = CPU插槽數 * 每個CPU有幾個核心 * 運行的時脈 * 每個週期做幾次運算


2016年3月23日 星期三

淨相關(Partial correlation)的例子

Partial correlation中文翻譯成淨相關、偏相關或部分相關。做此分析是在找尋兩個因子之間有關係,是否是剛好兩者皆與另外一個因子相關,因而導致兩者有關係。以下舉個簡單的例子:

“身高與體重是否有關係?”

一般而言身高與體重應該會有關聯,高的應該會比較重、矮的應該會比較輕。這個時候,可以做關聯性分析,畫圖或是用相關係數來說明相關性有多強。

不過對於20歲以下的年輕人因為成長的關係,因此身高與體重皆另外與年齡有關。年紀小的比較矮、年紀大的比較高;年紀小的比較輕、年紀大的比較重。所以現在的例子變成:

當排除掉年齡大小的因素以後,身高與體重是否有關係?”

淨相關分析是幫忙回答這個問題的一個方法。此分析會排除(或是說控制了)另外一個變數(在此例子中是年齡)之後,計算原本兩個因子(在此例中是身高與體重)的關聯性,因此才會稱之為“淨”相關。

2016年3月22日 星期二

透過SSH Tunnels瀏覽BBS與網頁

在Windows下面,想要透過某台主機出去瀏覽網頁,或是瀏覽BBS,除了VPN以外,還可以用SSH tunnel。下文設定教學參考了Vexed's Blog上面的兩篇文章《用 PuTTY 的 SSH Tunnel 上 BBS》《用 PuTTY 的 SSH Tunnel 瀏覽網頁》

前提是先要有一台可以SSH登入的主機,在此則是用Pietty來做SSH連線,上BBS的工具是PCMan,瀏覽網頁的工具是IE or Edge。這招除了BBS與WWW以外,所有支援SOCKS的軟體也都可以用

2016年3月21日 星期一

兩個變項的關聯性

討論兩個變項,一個叫X、另一個叫Y,之間的關聯性(bivariate association)這件事情叫做bivariate analysis,首先會依序注意三件事情
  • 兩變項之間是否真的有相關?
  • 相關存在的話,強弱如何?
  • 相關之間的模式(pattern)與方向(direction)是如何?
例如說,兩個變項身高與體重。討論某一群人的身高與體重的關聯性,首先要先看兩者是否有相關(correlation);若有相關,則討論身高與體重的相關性有多高;最後則是看是否能夠用什麼公式之類的,訂出身高與體重之間的相關性。

2016年3月18日 星期五

VanX,輔助VanA對付萬古黴素

前篇提到VanA把一般肽聚糖末端加上lactate group,讓萬古黴素無法辨認。那對於已經做出來末端是D-alanine-D-alanine的肽聚糖,則可以先由VanX(這是一種amino-dipeptidase)把末端的D-alanine-D-alanine dipeptide給切掉,這樣VanA就可以加入用lactate group修改的末端。詳細請參考《Vancomycin》最下面的Topics for Further Discussion。在此用蛋白質資料庫上面E. coli的VanX結晶結構、編號是1R44來畫出下圖


VanX, a zinc-dependent D-alanyl-D-alanine dipeptidase


2016年3月17日 星期四

VanA,細菌對付萬古黴素的武器

既然萬古黴素(Vancomycin)會殺革蘭氏陽性菌,細菌也有一套方式來抵抗萬古黴素。萬古黴素阻止肽聚糖的形成,因此細菌就產生萬古黴素無法辨識的肽聚糖,讓萬古黴素找不到攻擊目標。
原來的肽聚糖其胜肽末端拿來連結的部分是D-alanine-D-alanine peptide,這個部分是由D-alanine-D-alanine ligase來負責;細菌現在產生另外一種叫做VanA的蛋白質,本質是D-alanyl-D-lacate ligase,也就是說會把原來胜肽末端不加入alanine而是加入lactate group。由於末端變得不一樣,萬古黴素就沒辦法包住末端阻止肽聚糖的細胞壁生成。相關的細節請參考PDB-101的文章《Vancomycin》。下圖是VanA與D-alanyl-D-lacate ligase,可以看到兩者的結構其實很相像

VanA (top) and D-alanyl-D-lacate Ligase (bottom)


2016年3月16日 星期三

萬古黴素(Vancomycin)的分子結構

萬古黴素是一種抗生素,用來殺死革蘭氏陽性細菌。殺革蘭氏陽性菌的機制是阻止其由肽聚糖組成的細胞壁的生成; 革蘭氏陰性菌由於其肽聚糖界在外層膜內(見此圖),不會直接接觸到外面,所以革蘭氏陰性菌並不會被萬古黴素殺死。革蘭氏陰性菌必須要用分子比較小的抗生素像是青黴素來殺。

完整的萬古黴素結構如下圖所示,分子結構來自蛋白質資料庫,編號是1SHO

Vancomycin presented by ball-and-stick model 

2016年3月15日 星期二

PyMOL新增menu上面的選項

PyMOL是個以Python為底寫出來的分子結構顯示軟體,加上他又是開源軟體,因此可以依照自己意思任意在選單裡面增加想要的項目。例如說從右邊的選單依序點選
  • A > preset > pretty

蛋白質分子就會以緞帶的方式顯示,顏色則是用彩虹方式表示,從紅色(C端)到深藍色從(N端)。現在希望加入一項功能,一樣是用緞帶方式表示結構,但顏色則是根據二級結構:紅色是alpha helix、黃色是beta sheet、綠色則是coil。操作方式則是變成依序點選
  • A > preset > pretty (2nd structure)


2016年3月14日 星期一

CPU壓力測試

拿到電腦對CPU做壓力測試,一開始都是算圓周率Pi到三萬多位。開啟終端機執行
$ echo "scale=31416; 4*a(1)" | bc -l

最近看到另外一種方式,使用yes這個指令,執行
$ yes > /dev/null

上面兩種方式的缺點是必須要根據CPU的數量,同時執行數個上述指令。下面這個由Mark Adler開發的指令pigz,可以同時吃到多核心,因此很適合一個指令吃掉多個核心。下面這是測試4核心CPU的指令
$ cat /dev/zero | pigz -p 4 > /dev/null
不過pigz似乎在-p 8以上,最多只會吃到800%的CPU,這點還需要研究看看...

另外想到把zero device換成產生亂數的device來試試看
$ cat /dev/random | pigz -p 4 > /dev/null
$ cat /dev/urandom | pigz -p 4 > /dev/null
上面兩者pigz吃掉的CPU使用量約莫50%,也就是說單核心就夠了。也許是因為輸入的資料太亂了,所以不知道要怎樣壓縮,因此不太吃CPU吧~

_EOF_

2016年3月11日 星期五

烏頭酸酶(Aconitase)

烏頭酸酶催化克氏循環其中一個步驟,將檸檬酸(Citric acid)轉變成異檸檬酸(Isocitric acid),之所以叫做烏頭酸酶是因為這個轉變過程的中間產物是順烏頭酸(Aconitic acid),反應見下圖(圖片來自維基百科)。

 --(失去一個水)-->  --(得到一個水)--> 

檸檬酸 --(失去一個水)--> 順烏頭酸 --(得到一個水)--> 異檸檬酸

在催化的活性位置有個 Fe-S cluster(iron-sulfur cluster, 下圖中間stick部分),整個酵素在催化的時候結構幾乎沒有什麼改變。以蛋白質資料庫上的 1FGH 為例子,用PyMOL畫出

Aconitase with 4-hydroxy-trans-aconitate
Aconitase with 4-hydroxy-trans-aconitate


2016年3月10日 星期四

PyMOL安裝在Linux上

PyMOL除了可安裝在蘋果電腦上,也可以運行在Linux上,一樣是最新的版本需要付錢才能夠使用,但是舊版的則可免費安裝。

免費安裝版

在Debian或Ubuntu這種用apt套件系統的Linux,安裝方式為
$ sudo apt-get install pymol

在CentOS等用yum套件系統的Linux,安裝方式則為
$ sudo yum --enablerepo=epel install pymol

其他安裝方式包含pacman (for Arch/Manjaro), dnf (for Fedora), emerge (for Gentoo), zypper (for openSUSE, equo (for Sabayon)請參考pymol wiki的《Linux Install》。也可以從tar ball直接安裝,不過比較麻煩一點就是...

執行方式一樣是在終端機輸入pymol,或是用圖形介面找到它直接執行。也可以參考SSH with X11 forwarding的方式,遠端登入已經安裝好PyMOL的機器,把視窗從遠端機器接回到本機來,這樣就不用每一台機器都安裝一次。


2016年3月8日 星期二

PyMOL安裝在蘋果電腦上

PyMOL是套用來看分子結構(主要是蛋白質與DNA)的開源(open source)軟體。最新的版本需要付錢才能夠使用,但是舊版的則可以免費安裝。


免費安裝版

依序執行下面四個步驟
  1. 安裝Macports,請參考這個網頁的說明
  2. 安裝XQuartz,免費程式在這邊下載
  3. 開啟終端機(Terminal),直接執行 sudo port install pymol
  4. 在終端機下輸入 pymol &
執行時會跳出兩個視窗,一個是操作面板、另外一個則用來畫分子結構。更多的安裝方式(像是fink, homebrew等等)請參考pymol wiki上的《MAC Install》

2016年3月7日 星期一

Mac的休眠暫存

當把蘋果筆電闔上時,系統會進入休眠。之前的文章有提到可用pmset調整hibernatemode將休眠暫存關閉,意思就是說休眠的時候不把記憶體上面的資料寫到硬碟裡面。好處是可以很快進入休眠,壞處則是會吃電而且當沒電時,記憶體上面的資料就不見了。安裝El Capitan之後,原本hibernatemode的狀態又變得跟Yosemite不一樣了,變成如下:
  • hibernatemode = 0 預設給桌機用,休眠的時候不會把記憶體資料放到硬碟上,休眠時會供電給記憶體。
  • hibernatemode = 3 預設給筆電用,休眠時會把記憶體資料放到硬碟,而且休眠時也會供電給記憶體。
  • hibernatemode = 25 休眠時會把記憶體資料放到硬碟上,然後就不供電給記憶體,回復時再把東西從硬碟到記憶體上面。比較慢入睡、醒的也比較慢。
因為使用習慣的緣故,在這邊選擇hibernate mode = 0,另外搭配standby與autopoweroff的參數
$ sudo pmset -a hibernatemode 0
$ sudo pmset -a standby 0
$ sudo pmset -a autopoweroff 0 
$ sudo rm /var/vm/sleepimage

檢查設定則是輸入下面指令看結果
$ pmset -g
這樣未來不管怎樣重新啟動、或是睡眠再久都不會產生記憶體備份

2016年3月6日 星期日

2016年3月5日 星期六

2016年3月4日 星期五

SSH遠端連線,接視窗回本機使用

使用SSH遠端登入類UNIX主機, 一般來說只能夠輸入指令,若想要執行的是視窗程式,則用SSH搭配X11 forwarding,如此就能夠將視窗程式接回本機來使用,而且接回來的視窗內容也透過SSH加密。使用方式則是先從本機用SSH連線到遠端主機,並且開啟X11 forwarding
  • ssh -X username@remoteMachine

登入之後,直接執行視窗的程式,例如說:
  • 終端機:xterm -fn 12x24 -sb &
  • 時鐘:xclock -update 1 &

在本機端則是要安裝X的顯示程式。如果是Mac,則是去安裝XQuartz(免費的開源程式); 如果是Windows,有許多可以用的相關程式,其中一套是XMing。關於Windows上面SSH with X11 forwarding相關的設定可參考這邊的說明。其他的視窗軟體像是firefox、filezilla等等,都可以用這種方法把遠端機器的視窗接回來本機使用。

2016年3月3日 星期四

微調Ubuntu Gnome 14.04的視窗操作

微調某些視窗操作,會讓系統用起來更加順手。下面三個是常用的調整工具:
這三者都是GUI系統,打開以後直接設定就好。使用這些工具要很小心,最好是要知道自己改了什麼設定,有些設定會互相衝突,如果改不回來系統會變得很怪。

2016年3月2日 星期三

使用Google Ngram Viewer看字詞出現頻率

想要知道某個詞是不是很熱門,可以觀察這個詞在所有書本裡面出現的頻率。如果某個詞出現頻率高,代表當時是比較流行的概念; 如果出現頻率低,則代表是個冷門字眼。

2016年3月1日 星期二

風扇旋轉與地球公轉

地球誕生約莫是46億年前(參閱李名揚的文章《桑田曾經是滄海》,45億6700萬年前)。既然地球公轉太陽是一年,也就是說從地球誕生到現在已經繞著太陽轉了46億次。

電腦系統風扇轉速約莫是2000RPM(每分鐘轉速),也就是一小時轉2000*60 = 1.2E5次(≈ 12萬轉一小時),一天轉了1.2E5*24 = 2.88E6次(288萬轉一天),一年轉了2.88E6*365 = 1.0512E9 (≈ 十億轉一年)

一般的滾珠軸承約平均可以使用40000小時,約等於4.56621年。上面說一年10億轉,所以可以知道,一個2000RPM滾珠軸承的系統風扇從開始使用到壞掉平均剛好會轉45億6621萬次,幾乎等同於地球誕生到現在繞行太陽的公轉次數!

想要在系統風扇的軸心畫一顆太陽、在葉片的最外側畫個地球~