練習 25:xargs
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
我們回到挑戰(zhàn)模式的練習,并為你熱身,你將會實現xargs
璧诵。這應該是一個簡單的實現盔几,但是xargs
可能很復雜,因為你需要啟動其他程序才能使其運行袱瓮。你要研究的 Python 模塊是subprocess
,可以從 Python 運行其他程序并收集其輸出爱咬。你將需要了解該模塊尺借,稍后完成xargs
和本書的許多其他項目,因此要好好研究精拟。
挑戰(zhàn)練習
實現xargs
只需 45 分鐘燎斩,所以你可以做出一些東西虱歪,之后你可以審計它。記住第一個 Hack 就是讓項目能運行栅表,而不是使其完美笋鄙。你將在此項目中的后續(xù)步驟中優(yōu)化它并使其更好。記住你可以鍵入:
man xargs
獲取xargs
的手冊頁并研究如何工作怪瓶。這是一個方便的 Unix 工具局装,但你也可以使用find
做幾乎相同的事情。當你實現xargs
時劳殖,嘗試找出铐尚,它比起find --exec
有什么優(yōu)勢。
經過 45 分鐘的 Hack哆姻,你應該休息一下宣增,然后使用第三部分的代碼審計檢查清單,對代碼進行客觀的審計矛缨。不要修復代碼爹脾,只需編寫注釋,指出需要改變什么箕昭,有什么缺陷灵妨。在嘗試修復時,很難保持客觀落竹,所以只需要注意審計中的問題泌霍,然后在下一輪中修復它們。
然后述召,你將進行一系列代碼/審計的計時會話朱转,來習慣于進行審計』花費你所需的盡可能長的時間藤为,盡可能多地實現xargs
,然后繼續(xù)下一個項目夺刑。
注
記住要在日志中跟蹤你的缺陷缅疟,所以你可以繪制它們的運行圖,并尋找趨勢遍愿。
研究性學習
- 在代碼/審計的流程中存淫,你是否發(fā)現任何你不斷犯下的錯誤?把這些當成潛在的事情寫下來并處理错览。
- 你的代碼/審計流程中纫雁,是否有一個特定的時間點,有或多或少的缺陷倾哺?比起最開始更多轧邪,還是三到四個流程之后更多?為什么會這樣羞海?
- 嘗試為你的
xargs
的實現編寫自動測試忌愚,并查看是否降低你的缺陷率。在下一個練習中却邓,你將會進行一個更加受控的測試研究硕糊,就像這樣,但是現在嘗試一下腊徙,看看你發(fā)現了什么简十。