国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

為什么離不開 Stackoverflow

peixn / 2274人閱讀

摘要:接下來手工實現了一個簡單的裝飾器原型,緊接著引入中的裝飾器語法。最后還列出了一些裝飾器的高級用法,包括給裝飾器傳遞參數等。讀完整個答案,一定能對裝飾器有較深的理解,并且知道理解裝飾器的思考過程。

作為一名程序員,如果沒有聽過 Stackoverflow,那么你最好去面壁思過一下。程序員最需要閱讀的一本編程書籍(其實編程書留下這本就夠了!):

那些還沒有讀過這本書的程序員,是時候買一本了。如果還在猶豫,那么先看下這篇文章,看看為什么離不開 stackoverflow。

提問的智慧

當你拋出一個技術問題時,最終是否能得到有用的回答,往往取決于你所提問和追問的方式。 --Eric S. Raymond

有時候,清晰描述一個問題,特別是技術問題沒有想象的那么簡單。提問從來就是一門學問,可惜很多人沒有意識到這一點,或者沒有給予足夠的重視。或者,有的提問者根本不是抱著提問的態度來請求大家的幫助。所以我們會發現各種讓人無法解答或者無心解答的問題:

java正則表達式問題?

sla響應時間是指什么?

ATL類與一般的類繼承有什么區別

為了避免上面的問題被關閉或者修改,放一張圖片在這里,來體會下這種狗屎問題:

去 segmentfault 的未回答題目中隨便就能找到一堆這樣的問題,所以很多人顯然并沒有提問的智慧或者沒有很好的態度。Raymond 和 Rick Moen 寫了一份經典的文章 How To Ask Questions The Smart Way專門來描述如何提問,這篇文章被翻譯成各國文字,留傳很廣,可以在這里找到中文版。Stackoverflow 和 Segmentfalut 也給出了關于提問的建議:

Help Center > Asking

How to Ask

How do I ask a good question?

什么樣的問題才是受歡迎的

在 Stackoverflow 可以看到太多經典的問題,我們可以從這些問題中學習如何去提問,如何和答題者溝通。當你看習慣了stackoverflow 上面的問題,提問時就會不自覺去模仿,從而避免問出無腦問題。下面是提問時最需要注意的幾個問題:

問搜索引擎沒有滿意答案(google 起碼過四頁)的問題

問那些自己無法獨立解決,已經做過很多嘗試的問題

盡量清楚地描述問題:良好的排版,代碼,錯誤提示,圖片等

讓你的問題對別人有幫助

問題要有確定的答案,不要有太多的主觀性

不同的方案

很多時候我們希望能夠找到一個解決辦法,但是在 stackoverflow 上,經常會有意外的收獲。你可能會看到對一個問題不同的解決方案,甚至包括對這些解決方案的比較。

假設現在你想知道 python 中如何調用外部命令,比如 ls -l 來打印某個目錄下面的文章。Google一下 python call system command,第一條就是stackoverflow 上面的一個相關問題:Calling an external command in Python. (google技術問題,基本都會顯示 stackoverflow 相關問題)。

然后在這個問題下面,有人總結了調用外部命令的幾種方法:

os.system()

os.popen()

subprocess.popen()

subprocess.call()

subprocess.run()

并且還對每個方法做了介紹,你可以選擇適合自己應用場景的方法。再比如這個問題 How to check whether a file exists using Python?,介紹了 python 中檢查文件是否存在的不同方法。

工具的使用

有許多強有力的工具可以幫我們更好地研究問題,你可能知道gdb調試工具,可能知道python的timeit時間監控模塊,但是你不知道那些自己不知道的工具。很多時候,當第一次知道某個工具時,我們心中會產生相見恨晚的感覺。然而,心儀的趁手工具總是那么可遇不可求。

在 stackoverflow,每一個問題答案或者評論中都可能會有一些好的工具,你總有機會發現那些遺落在字里行間的優秀工具。

下面列出我發現的一些不錯的工具:

truss/strace:跟蹤進程執行時的系統調用和所接收的信號,strace可以跟蹤到一個進程產生的系統調用,包括參數,返回值,執行消耗的時間。(來自問題:Why is reading lines from stdin much slower in C++ than Python?)

vprof:一個可視化工具,可以分析 Python 程序的特點,比如運行時間,內存使用等。(來自問題:How can you profile a Python script?)

Regex 101:一款在線的正則表達式輔助工具,可以幫助理解正則表達式的含義,方便調試正則表達式以及做一些簡單的嘗試。(來自問題:Learning Regular Expressions)

下面為 Regex 101 的一個簡單示例:

思考的過程

很多時候,遇到一個問題,我們根本無從下手,不知道朝哪個方向思考。但是通過 stackoverflow,我們可以輕易知道具體的解決方案,有時候甚至還能知道別人面對這個問題時候是怎么思考的。

假設你想利用裝飾器來完成一個任務,即在下面say函數返回的字符串前后加上,你想想這樣定義 say。

@makebold
@makeitalic
def say():
   return "Hello"

每次調用 say 返回 Hello。但是要如何實現 makebold 和 makeitalic 呢,這是一個問題。在 stackoverflow 上,有大牛會直接告訴你答案,并扔給你一個裝飾器的文檔鏈接。但是還有大牛會把自己的思考過程,把自己對裝飾器的理解詳細地告訴你,讓你深入去理解裝飾器機制。

針對上面的這個問題,有一個答案獲得了 3000 多贊,一步步告訴大家如何解決問題。首先告訴我們python中函數有什么特點:

函數是對象

函數可以被賦給一個變量

函數可以被定義在另一個函數中

一個函數可以返回另一個函數

可以把函數作為參數傳遞

然后開始解釋什么是裝飾器:其實就是封裝器,可以讓我們在不修改原函數的基礎上,在執行原函數的前后執行別的代碼。接下來手工實現了一個簡單的裝飾器原型,緊接著引入 python 中的裝飾器語法。最后還列出了一些裝飾器的高級用法,包括給裝飾器傳遞參數等。讀完整個答案,一定能對裝飾器有較深的理解,并且知道理解裝飾器的思考過程。這樣,沿著這條思考的路徑,你自己就可以推導出裝飾器的使用方法。

可能的盲區

沒有問題要提問時也可以時常逛一逛 stackoverflow,瀏覽一些投票比較多的問題,看看別人的回答。在這個龐大的知識庫中,你很可能會發現自己的一些認知盲區,發現一些自己從未關注過的內容。

我就發現了一些比較有意思的問題,比如:

Print in terminal with colors using Python?

What is a metaclass in Python?

What is your most productive shortcut with Vim?

我整理了一份 Python 的高質量問題清單,放在這里以供時常翻閱。

相見恨晚

那么怎么才能找到 stackoverflow 呢,兩個建議:

英語精確描述問題

用 Google 去搜索

只要你不是第一個遇見某個技術問題的人,你基本就會在 stackoverflow 找到相同或者類似的問題。早日遇見,早日喜歡上 stackoverflow,你會發現生活是如此愜意。

博客地址

更多閱讀

玩轉 Stack Overflow 之提問篇
7 Strace Examples to Debug the Execution of a Program in Linux
How can I make a chain of function decorators in Python?

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38030.html

相關文章

  • 一個“詭異”的console.log()結果

    摘要:一個詭異的結果在前端開發中,我們都少不了用來輸出變量和調試。再看下面一個例子圖中的結果,我是在執行了這句話之后才點擊的小三角,然而結果卻沒有變成詭異結果的樣子。 一個詭異的結果 在前端開發中,我們都少不了用console.log來輸出變量和調試。可是在使用它的過程中,偶爾也會出現一些讓我們很費解的行為,如下圖: showImg(https://segmentfault.com/img/...

    pkwenda 評論0 收藏0
  • 聽說看了這份Java學習路線的同學,畢業都拿到了大廠offer

    摘要:服務層這一層有點東西了,算是整個框架的核心,如果你跟敖丙一樣以后都是從事后端開發的話,我們基本上整個技術生涯,大部分時間都在跟這一層的技術棧打交道了,各種琳瑯滿目的中間件,計算機基礎知識,操作,算法數據結構,架構框架,研發工具等等。 前言 自學/學習路線這樣的一期我想寫很久了,因為一直想寫的...

    Dean 評論0 收藏0
  • 2017前端技術大盤點

    摘要:同時,前端技術也慢慢的趨于穩固,自成一套體系。從月份開始,微信正式將公測了小程序。基于小程序的開發,也將成為國內的前端的一大重點。 前言 臨近2017的尾聲,總是希望來盤點一下這一年中前端的發展。到目前為止,前端的井噴期也快臨近尾聲了。并不像幾年前一樣,總是會有層出不窮的新東西迸發出來。同時,前端技術也慢慢的趨于穩固,自成一套體系。如果你喜歡我的文章,歡迎評論,歡迎Star~。歡迎關注...

    y1chuan 評論0 收藏0
  • 2017前端技術大盤點

    摘要:同時,前端技術也慢慢的趨于穩固,自成一套體系。從月份開始,微信正式將公測了小程序。基于小程序的開發,也將成為國內的前端的一大重點。 前言 臨近2017的尾聲,總是希望來盤點一下這一年中前端的發展。到目前為止,前端的井噴期也快臨近尾聲了。并不像幾年前一樣,總是會有層出不窮的新東西迸發出來。同時,前端技術也慢慢的趨于穩固,自成一套體系。如果你喜歡我的文章,歡迎評論,歡迎Star~。歡迎關注...

    RobinQu 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<