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

資訊專欄INFORMATION COLUMN

為什么離不開 Stackoverflow

peixn / 2268人閱讀

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

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

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

提問的智慧

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

有時(shí)候,清晰描述一個(gè)問題,特別是技術(shù)問題沒有想象的那么簡(jiǎn)單。提問從來就是一門學(xué)問,可惜很多人沒有意識(shí)到這一點(diǎn),或者沒有給予足夠的重視。或者,有的提問者根本不是抱著提問的態(tài)度來請(qǐng)求大家的幫助。所以我們會(huì)發(fā)現(xiàn)各種讓人無法解答或者無心解答的問題:

java正則表達(dá)式問題?

sla響應(yīng)時(shí)間是指什么?

ATL類與一般的類繼承有什么區(qū)別

為了避免上面的問題被關(guān)閉或者修改,放一張圖片在這里,來體會(huì)下這種狗屎?jiǎn)栴}:

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

Help Center > Asking

How to Ask

How do I ask a good question?

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

在 Stackoverflow 可以看到太多經(jīng)典的問題,我們可以從這些問題中學(xué)習(xí)如何去提問,如何和答題者溝通。當(dāng)你看習(xí)慣了stackoverflow 上面的問題,提問時(shí)就會(huì)不自覺去模仿,從而避免問出無腦問題。下面是提問時(shí)最需要注意的幾個(gè)問題:

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

問那些自己無法獨(dú)立解決,已經(jīng)做過很多嘗試的問題

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

讓你的問題對(duì)別人有幫助

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

不同的方案

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

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

然后在這個(gè)問題下面,有人總結(jié)了調(diào)用外部命令的幾種方法:

os.system()

os.popen()

subprocess.popen()

subprocess.call()

subprocess.run()

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

工具的使用

有許多強(qiáng)有力的工具可以幫我們更好地研究問題,你可能知道gdb調(diào)試工具,可能知道python的timeit時(shí)間監(jiān)控模塊,但是你不知道那些自己不知道的工具。很多時(shí)候,當(dāng)?shù)谝淮沃滥硞€(gè)工具時(shí),我們心中會(huì)產(chǎn)生相見恨晚的感覺。然而,心儀的趁手工具總是那么可遇不可求。

在 stackoverflow,每一個(gè)問題答案或者評(píng)論中都可能會(huì)有一些好的工具,你總有機(jī)會(huì)發(fā)現(xiàn)那些遺落在字里行間的優(yōu)秀工具。

下面列出我發(fā)現(xiàn)的一些不錯(cuò)的工具:

truss/strace:跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào),strace可以跟蹤到一個(gè)進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù),返回值,執(zhí)行消耗的時(shí)間。(來自問題:Why is reading lines from stdin much slower in C++ than Python?)

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

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

下面為 Regex 101 的一個(gè)簡(jiǎn)單示例:

思考的過程

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

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

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

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

針對(duì)上面的這個(gè)問題,有一個(gè)答案獲得了 3000 多贊,一步步告訴大家如何解決問題。首先告訴我們python中函數(shù)有什么特點(diǎn):

函數(shù)是對(duì)象

函數(shù)可以被賦給一個(gè)變量

函數(shù)可以被定義在另一個(gè)函數(shù)中

一個(gè)函數(shù)可以返回另一個(gè)函數(shù)

可以把函數(shù)作為參數(shù)傳遞

然后開始解釋什么是裝飾器:其實(shí)就是封裝器,可以讓我們?cè)诓恍薷脑瘮?shù)的基礎(chǔ)上,在執(zhí)行原函數(shù)的前后執(zhí)行別的代碼。接下來手工實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的裝飾器原型,緊接著引入 python 中的裝飾器語(yǔ)法。最后還列出了一些裝飾器的高級(jí)用法,包括給裝飾器傳遞參數(shù)等。讀完整個(gè)答案,一定能對(duì)裝飾器有較深的理解,并且知道理解裝飾器的思考過程。這樣,沿著這條思考的路徑,你自己就可以推導(dǎo)出裝飾器的使用方法。

可能的盲區(qū)

沒有問題要提問時(shí)也可以時(shí)常逛一逛 stackoverflow,瀏覽一些投票比較多的問題,看看別人的回答。在這個(gè)龐大的知識(shí)庫(kù)中,你很可能會(huì)發(fā)現(xiàn)自己的一些認(rèn)知盲區(qū),發(fā)現(xiàn)一些自己從未關(guān)注過的內(nèi)容。

我就發(fā)現(xiàn)了一些比較有意思的問題,比如:

Print in terminal with colors using Python?

What is a metaclass in Python?

What is your most productive shortcut with Vim?

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

相見恨晚

那么怎么才能找到 stackoverflow 呢,兩個(gè)建議:

英語(yǔ)精確描述問題

用 Google 去搜索

只要你不是第一個(gè)遇見某個(gè)技術(shù)問題的人,你基本就會(huì)在 stackoverflow 找到相同或者類似的問題。早日遇見,早日喜歡上 stackoverflow,你會(huì)發(fā)現(xiàn)生活是如此愜意。

博客地址

更多閱讀

玩轉(zhuǎn) 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?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/38030.html

相關(guān)文章

  • 一個(gè)“詭異”的console.log()結(jié)果

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

    pkwenda 評(píng)論0 收藏0
  • 聽說看了這份Java學(xué)習(xí)路線的同學(xué),畢業(yè)都拿到了大廠offer

    摘要:服務(wù)層這一層有點(diǎn)東西了,算是整個(gè)框架的核心,如果你跟敖丙一樣以后都是從事后端開發(fā)的話,我們基本上整個(gè)技術(shù)生涯,大部分時(shí)間都在跟這一層的技術(shù)棧打交道了,各種琳瑯滿目的中間件,計(jì)算機(jī)基礎(chǔ)知識(shí),操作,算法數(shù)據(jù)結(jié)構(gòu),架構(gòu)框架,研發(fā)工具等等。 前言 自學(xué)/學(xué)習(xí)路線這樣的一期我想寫很久了,因?yàn)橐恢毕雽懙?..

    Dean 評(píng)論0 收藏0
  • 2017前端技術(shù)大盤點(diǎn)

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

    y1chuan 評(píng)論0 收藏0
  • 2017前端技術(shù)大盤點(diǎn)

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

    RobinQu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<