練習 25:xargs
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
我們回到挑戰(zhàn)模式的練習,并為你熱身,你將會實現(xiàn)xargs。這應該是一個簡單的實現(xiàn),但是xargs可能很復雜,因為你需要啟動其他程序才能使其運行。你要研究的 Python 模塊是subprocess,可以從 Python 運行其他程序并收集其輸出。你將需要了解該模塊,稍后完成xargs和本書的許多其他項目,因此要好好研究。
挑戰(zhàn)練習
實現(xiàn)xargs只需 45 分鐘,所以你可以做出一些東西,之后你可以審計它。記住第一個 Hack 就是讓項目能運行,而不是使其完美。你將在此項目中的后續(xù)步驟中優(yōu)化它并使其更好。記住你可以鍵入:
man xargs
獲取xargs的手冊頁并研究如何工作。這是一個方便的 Unix 工具,但你也可以使用find做幾乎相同的事情。當你實現(xiàn)xargs時,嘗試找出,它比起find --exec有什么優(yōu)勢。
經(jīng)過 45 分鐘的 Hack,你應該休息一下,然后使用第三部分的代碼審計檢查清單,對代碼進行客觀的審計。不要修復代碼,只需編寫注釋,指出需要改變什么,有什么缺陷。在嘗試修復時,很難保持客觀,所以只需要注意審計中的問題,然后在下一輪中修復它們。
然后,你將進行一系列代碼/審計的計時會話,來習慣于進行審計?;ㄙM你所需的盡可能長的時間,盡可能多地實現(xiàn)xargs,然后繼續(xù)下一個項目。
注
記住要在日志中跟蹤你的缺陷,所以你可以繪制它們的運行圖,并尋找趨勢。
研究性學習
- 在代碼/審計的流程中,你是否發(fā)現(xiàn)任何你不斷犯下的錯誤?把這些當成潛在的事情寫下來并處理。
- 你的代碼/審計流程中,是否有一個特定的時間點,有或多或少的缺陷?比起最開始更多,還是三到四個流程之后更多?為什么會這樣?
- 嘗試為你的
xargs的實現(xiàn)編寫自動測試,并查看是否降低你的缺陷率。在下一個練習中,你將會進行一個更加受控的測試研究,就像這樣,但是現(xiàn)在嘗試一下,看看你發(fā)現(xiàn)了什么。