2017年6月28日 星期三

電腦三不五時停止回應,以往都是GoogleUpdateTaskUser,這回是 NvTmMon 搞的鬼





這兩年來至少每個禮拜都會發作個兩次,這回終於(不小心)被我抓到了

其實是在 debug 另一支排程程式時,覺得這裏可能有點線索,於是啟動了工作歷程記錄

剛好又發作一次,看看 log 才發現…

我只能心中送出 WTF+TMD !!! 這幾支程式可惡的地方在於它平常不會有特別的動作。

但是當你執行高 CPU 負載工作時,它似乎會很有興趣的想 "Monitor" 一下,結果機器整個 freeze

將近20~60秒後, windows 的 QueueReporting 接手記錄這個事件,又凍結15秒

關閉 NvTmMon 方式可參考 Disable Nvidia Telemetry tracking on Windows

哼反正要換 OS 了…


2017年6月19日 星期一

使用 perl one liner 進行檔案搜尋取代的流程(SOP)(二)

承接 使用perl one liner進行檔案搜尋取代的流程(SOP) 一文的第 2 步驟,由於使用 one-liner 時如果要進行取代,沒有什麼空間去做額外的判斷,因此在取代字串很可能必需向前參考所找到的 subgroup 。全寫在一行易讀性的確滿不好,但是這是 perl 的簡潔所必需付出的代價。

原理參考:
http://www.perlmonks.org/?node_id=687031
http://perldoc.perl.org/perlretut.html#Non-capturing-groupings

例如想把文字:

**** 67                                                            

取代成

**** 67                                                            :drill:

在 windows 平台上的寫法是像這樣的:

perl -ne "print if s/^(\*+ \d+[ \t]+)?$/eval q{\"$1:drill:\"}/e and defined $1" abc.txt

或是更簡潔一點:

perl -ne "print if s/^(\*+ \d+[ \t]+)?$/q{\"$1:drill:\"}/ee and defined $1" abc.txt

一樣的道理可推到第 3、4 步,但不用去 test 有沒有發生取代:

perl -pe "s/^(\*+ \d+[ \t]+)?$/q{\"$1:drill:\"}/ee" abc.txt

perl -pi -e "s/^(\*+ \d+[ \t]+)?$/q{\"$1:drill:\"}/ee" abc.txt