2023年6月18日 星期日

讓暫停的命令列程式繼續執行

 我在Windows 11的命令列模式執行一個模擬程式。這個程式很花時間,而且久久才會有一次螢幕和檔案的輸出動作。我從昨天晚上就放著讓它執行,沒有將筆電關機。希望筆電在進入休眠模式前(無動作後一小時),至少可以有些進度。

今天早上將筆電從休眠模式喚醒,發現這個程式的螢幕輸出結果和檔案的最後更新時間都維持和昨晚我離開時一樣的狀況。這也許是合理的,因為筆電在休眠時這個程式也沒辦法執行。不過從工作管理員觀察,這個程序目前的CPU執行率幾乎是0,表示這個程序被系統暫停了。

怎麼辦呢? 如果我直接關掉它,代表之前的工作白做了,必須全部重頭來一次。想到以前在Unix終端機環境中,可以按Ctrl S來將一個程序的輸出暫停,然後按Ctrl Q繼續。抱著死馬當活馬醫的精神,在這個命令列視窗中試著按Ctrl S,螢幕突然就有輸出了。查看一下輸出檔案的修改時間,也變成了現在的時間。最後到工作管理員觀察,這個程序又有了正常的CPU執行率了。

我猜原先Windows系統大概認定這個程序很久沒動作,不給予任何CPU執行權。我按Ctrl S的動作讓Windows注意到這還是一個活的程序,而重新給予CPU執行權。就這樣,我的程序就復活了。事實上,當程式結束執行時,我看到螢幕上出現我之前按下的^S字元。之後我確認了,在命令列視窗中按任意鍵(例如Enter),都可以使Windows讓一個已經暫停的程序繼續工作,不一定要按Ctrl S。

將這個經驗記錄一下,說不定對誰會有幫助。

2023年2月3日 星期五

ChatGPT

如果把ChatGPT當作研究生對話,一開始的感覺就是找到夢幻學生了。它基礎紮實,要code當場刻給你看,有問題立刻回答,還解釋為何會這麼答。如果你指正了它的錯誤,它還會恭恭謹僅地承認,並立刻修正。這樣的研究生簡直是極品。

不過相處久了,也發現了極品研究生的弱點。簡單講是邏輯性和一致性不夠,而且會刻意迎合你的觀點。當你指出這個程式碼錯了,因為對測資A不成立。它會立刻修正,並且讓你看到修正後的程式對測資A是成立的。當你指出修正後的版本對測資B不成立時,它又立刻道歉,然後修正成對測資B成立。然後,咦? 這不是當初對測資A不成立的版本嗎? 乖學生啊,你到底有沒有中心思想啊? 別見招拆招好嗎?