喬虾嚼猓·考夫曼談學(xué)習(xí)編程

寧皓網(wǎng)不交會員費雖然看不了視頻,但是左邊的介紹文本還是可以看得萌衬。
光是這個文本饮醇,就已經(jīng)比很多文檔要強了。

出自《關(guān)鍵20小時:快速學(xué)會任何技能》第五章秕豫。

本來打算將該章錄制成電臺朴艰,但是幾次嘗試都被無情打斷。夜間爸爸的業(yè)務(wù)電話和微信視頻突然發(fā)聲,媽媽下班回家呵晚。白天姥爺時不時“報個賬”蜘腌,狗叫、大隊廣播饵隙、豆腐叫賣 …… 總能將我好不容易醞釀的靜謐打破撮珠。每次成功地打破我的感情之后,他們就又躲起來了金矛,直到下次你再準備錄音芯急。

農(nóng)村,絕對不是可以安靜學(xué)習(xí)的地方驶俊。
成道莫還鄉(xiāng)娶耍,還鄉(xiāng)道不成。溪邊老婆子饼酿,喚我舊時名榕酒。

既然天時不與,地利不奉故俐,那就不錄音了想鹰。只是簡單摘錄一些筆記吧:


  • 筆記內(nèi)容:
    1. 學(xué)習(xí)心得:復(fù)雜的東西拆解之后就會變得簡單。(decompose药版,divide&conquer)
    2. 自己的網(wǎng)站一下子擁有成千上萬的粉絲的確是一件美妙的事情辑舷,但這樣的美妙需要條件,即每個訪客都能順利訪問該網(wǎng)站槽片。然而何缓,我的網(wǎng)站一旦接受到大量的訪問請求,系統(tǒng)一定會在“無上的榮光”中徹底崩潰还栓,草草留給訪客一條無奈且神秘的錯誤信息碌廓。這讓我非常頭疼。
    3. 訪客蜂擁而至剩盒,不出意外地我的網(wǎng)絡(luò)服務(wù)器(計算機對訪客每一次訪問要求均會發(fā)送一個網(wǎng)頁)一定會以崩潰收場氓皱。這種情況下,訪客再也無法找到我的網(wǎng)頁勃刨,相反波材,服務(wù)器會返回一條“數(shù)據(jù)庫連接錯誤”或“錯誤503”的頁面提示。
    4. 營銷工作固然做的漂亮身隐,然而我的系統(tǒng)卻無力應(yīng)對激增的訪問請求廷区。
    5. 最初,我通過增強處理能力和擴大內(nèi)存來改善服務(wù)器贾铝。那樣做有用隙轻,但只起到一定的作用埠帕。(超出仍然崩潰)
    6. WordPress易于安裝和使用,運行無負擔玖绿。
      在他的默認配置里面敛瓷,每一個網(wǎng)頁請求都會引起級聯(lián)服務(wù)器的活動,它會產(chǎn)生數(shù)以百計的隱形請求斑匪,最終把網(wǎng)頁發(fā)送給訪客呐籽。
      注: WP的底層是PHP,訪客訪問的是PHP腳本文件蚀瘸,該腳本文件接收到HTTP請求后狡蝶,就會開始運作,即通過解釋器執(zhí)行腳本命令贮勃,比如調(diào)取數(shù)據(jù)庫里的數(shù)據(jù)“填空”贪惹,生成最終的HTML頁面,再經(jīng)由網(wǎng)頁服務(wù)器以HTTP響應(yīng)的方式發(fā)回瀏覽器寂嘉。
    7. 這樣的話奏瞬,每一個單獨的網(wǎng)頁請求就會變得麻煩。也就是說泉孩,每一個請求都對內(nèi)存和處理能力有很高的要求丝格。(1000個訪客同時請求瀏覽同一個頁面,那么服務(wù)器就會試圖同時啟動1000個相同的流程棵譬。)
    8. 每個請求都涉及大量資源。服務(wù)器在完成所有請求之前就將耗盡內(nèi)存预伺。
      注: 資源(Resource)是對網(wǎng)站文件订咸、處理能力等的抽象。
    9. 突然間酬诀,我意識到我在保持網(wǎng)站在線方面所花的時間比我在為讀者搜索資料和寫作方面所花的時間還要多脏嚷。這簡直毫無意義。
    10. 我不僅浪費了生產(chǎn)力瞒御,而且還未真正學(xué)會如何編程父叙。我只是在學(xué)習(xí)一大堆針對特定情況的技巧和方法,而且這些技巧和方法只能用于WP的運行肴裙。這一點也不酷趾唱。
    11. Jekyll的網(wǎng)頁功能。當運行一條指令蜻懦,Jekyll就會使用你計算機上的文檔(包含你的網(wǎng)站信息和設(shè)計模板)創(chuàng)建一個完整的網(wǎng)站甜癞。如果你需要對頁面設(shè)計或頁面內(nèi)容做出修改,那么只需要再次開啟Jekyll宛乃,整個網(wǎng)站就會進行自動更新悠咱。
      注: 靜態(tài)建站蒸辆。同類工具如 Hexo。網(wǎng)站運行速度極快析既,超級穩(wěn)定躬贡。
    12. Jekyll是使用Ruby編寫的。
    13. 創(chuàng)建網(wǎng)頁的HTML和CSS語言叫做“標記”語言眼坏。HTML和CSS語言根本不智能拂玻,他只是簡單地以特定方式告訴計算機把文本文檔展示給用戶(例如,“使該文本變成粗體”或者“這部分標題的大小是24號的字體”)空骚。
    14. 服務(wù)器設(shè)置也是如此纺讲。我只是把實現(xiàn)寫好的程序安裝好,然后變更一些設(shè)定而已囤屹。在不需要任何編程知識的情況下熬甚,我只是使用它們而已,真正書寫它們的是程序員肋坚。服務(wù)器設(shè)置和管理的確是一項有用的技能乡括,但那畢竟不是編程。

……(待續(xù))

  • 筆記內(nèi)容2:

    1. 我知道程序員“編寫”程序是一件創(chuàng)造性活動智厌,可以通過很多種方式來完成诲泌。
    2. 程序經(jīng)常被稱為“應(yīng)用”,它們(作為名稱)之間可以互換铣鹏。
    3. 一旦計算機程序被“運行”或“執(zhí)行”敷扫,不管接下來會發(fā)生什么,它們一定會按照編寫的程序命令做事情诚卸。
      注: 程序是靜態(tài)的概念葵第,放在硬盤上。 程序被拉入內(nèi)存合溺,由處理器執(zhí)行卒密,或者說作為腳本解釋器程序的“輸入”。 程序執(zhí)行棠赛,就變是“進程”哮奇,即“進 (運、執(zhí)) 行中的程序”睛约。
    4. “輸入”就是程序所使用的信息或數(shù)據(jù)鼎俘,而“輸出”則是當程序運行的時候,你得到的東西辩涝。
    5. “變量”基本上就是一些變化的占位符而芥。你可以創(chuàng)建任意數(shù)量的占位符,然后讓那些占位符代表你所想要的膀值。
    6. “程序”本身實質(zhì)上是一套詳細的指令和規(guī)則棍丐,他們精確地告訴計算機使用“輸入”做什么误辑。當程序運行完成,他就會給你“輸出”歌逢。
      注: 程序的最終結(jié)果巾钉。即你想要計算機做的事情。
    7. 當出錯時或者計算機無法弄清楚接下來該做什么時秘案,程序就會“癱瘓”或者會顯示一條錯誤信息砰苍。
    8. 錯誤恢復(fù)編程語句被稱為 Exceptions 函數(shù),即針對錯誤的條件句:如果程序?qū)⒁?X 方式癱瘓阱高,那么做 Y 可避免癱瘓赚导。有點像醫(yī)院大樓里的備用發(fā)電機。
    9. 本質(zhì)上赤惊,計算機通過特殊的方式翻轉(zhuǎn)微型電子開關(guān)來工作吼旧。計算機不能把人類語言的命令轉(zhuǎn)換成為電子開關(guān)的布爾翻轉(zhuǎn)(真/假變量被稱為布爾變量,用于只有兩個選項的奇特語句)未舟。
    10. 編程語言的作用:賦予人類程序員一種特定的方式來告訴計算機何時開始圈暗、做什么以及何時停止。他們還允許程序員定義輸入裕膀、流程以及輸出的樣式员串,以及程序的執(zhí)行完成之后將會獲得怎樣的輸出。
      每種編程語言都有一種特定的編寫命令的方式昼扛,這叫做語法寸齐。語言的語法包括計算機用來將程序命令轉(zhuǎn)換為微型電子開關(guān)翻轉(zhuǎn)的規(guī)則。
      基本上抄谐,每種語言都有一種定義變量渺鹦、條件句和 Exceptions函數(shù) 的方式。細節(jié)雖有差異斯稳,但核心卻是相同的。
    11. 網(wǎng)絡(luò)應(yīng)用程序:在網(wǎng)絡(luò)服務(wù)器上運行的應(yīng)用程序迹恐。
      服務(wù)器:一臺可以公開訪問挣惰、長期開機的電腦(計算機)。
    12. “我需要學(xué)習(xí)什么”的簡單框架:變量殴边、條件句憎茂、Exceptions函數(shù)、本地/生產(chǎn)環(huán)境锤岸、數(shù)據(jù)庫(活字)和用戶本地終端上的數(shù)據(jù)(Cookies)竖幔。
      注: HTML只會展示文檔中的文本,而這個文檔是不允許自我更新的“無狀態(tài)”資源是偷。
    13. 熟悉術(shù)語 —— "terminology" site:stackoverflow.com
    14. 經(jīng)驗豐富的網(wǎng)絡(luò)開發(fā)人員認為初學(xué)者可以先從兩種常見語言中選擇一種學(xué)習(xí)拳氢,比如 Ruby 或者 Python募逞。
      對于程序員而言,專注網(wǎng)絡(luò)應(yīng)用的 Ruby 更受歡迎一些馋评;而 Python 則在科學(xué)放接、數(shù)學(xué)以及圖形庫領(lǐng)域更受科學(xué)家和數(shù)學(xué)家歡迎。
  • 框架:

    1. 除了編程語言的選擇之外留特,網(wǎng)絡(luò)應(yīng)用程序員對框架的選擇也有自己獨到的見解:代碼程序庫可以幫你更容易地完成大部分應(yīng)用需要做的事纠脾。
      2.程序庫(一系列程序形成的軟件,你寫的一個.java文件叫程序蜕青,這些程序分包合作形成的一個完整的軟件苟蹈,這里叫程序庫,即發(fā)布好的程序包右核,Java叫jar包)非常重要慧脱,因為計算機會完全按照你的程序要求去做。物理學(xué)家卡爾·薩根:“如果你想從頭做蘋果餡餅蒙兰,你就必須首先創(chuàng)造宇宙磷瘤。”
      注: 這段看完下一段再返回來理解搜变。
    2. 程序的“宇宙”:①內(nèi)置包和命令 ②別人寫的包采缚,lib/jar ③程序運行系統(tǒng)(jvm)
      大部分編程語言都包含大部分程序所需的常見程序庫,但里面的專業(yè)工具非常少挠他。這時就需要選擇框架(一套專業(yè)工具包)扳抽。從頭開始編碼會花費很長時間,然而殖侵,如果有一套框架的話贸呢,輸入和使用可以得到測試,在完成專業(yè)任務(wù)時擁有可靠程序庫拢军。這樣楞陷,就能專注于應(yīng)用的核心部分,完全不必重新創(chuàng)造“宇宙”茉唉。
    3. Rails 非常依賴“生成器”固蛾,他是用單一命令創(chuàng)建大量樣板代碼的內(nèi)置程式。樣板代碼可以根據(jù)程序員的不同要求做相應(yīng)修正度陆。有了 Rails艾凯,程序員無須從頭開始花大量時間創(chuàng)建一個應(yīng)用。只要他們知道接下來怎么做懂傀,費不了多少工夫就可以創(chuàng)建出一個功能性應(yīng)用來趾诗。
    4. 從 Sinatra 開始學(xué)起。小型項目蹬蚁,語法清晰恃泪。
  • 開工:

    1. 目標:編寫一個可以服務(wù)于 Jekyll 網(wǎng)站的 Sinatra 應(yīng)用郑兴。
    2. 安裝 Git。Heroku 是一個網(wǎng)絡(luò)應(yīng)用服務(wù)器主機公司悟泵。Heroku Toolbelt 是一個程序杈笔,負責(zé)安裝程序員需要的一些常見軟件開發(fā)工具,以便在 Heroku 上開發(fā)應(yīng)用糕非。
    3. 安裝 Ruby蒙具。
      rbenv 用于管理系統(tǒng)中安裝的多個 Ruby 版本。它不能直接安裝 Ruby朽肥,但它有個流行的插件叫 ruby-build 能夠安裝 Ruby禁筏,且能在任意目錄中編譯和安裝不同版本的 Ruby。ruby-build 也可以不依賴 rbenv 而單獨使用衡招。
      這兩個工具都支持 OS X篱昔、Linux 和其它類 UNIX 操作系統(tǒng)。
    4. 記资继凇州刽!沒有人天生就會這些東西。大多數(shù)時候浪箭,你需要做的只是花幾分鐘時間閱讀這些文件穗椅,然后按照它們所說的去做就行了。
    5. Ruby 的包(程序庫)叫做 gem奶栖。
    6. 《笨方法學(xué)Ruby》以變量賦值匹表、基本算術(shù)、字符串操作以及基本條件語句作為開始宣鄙,這些與我之前提到的例子類似袍镀。對于基礎(chǔ)知識的學(xué)習(xí),他是一種非常具有結(jié)構(gòu)性和邏輯性的方法冻晤。
      在嘗試編寫我的第一個“真正意義上”的程序之前苇羡,我原本的計劃是先讀完 Eloquent Ruby 和 The Well-Grounded Rubyist,然后完成《笨方法學(xué) Ruby》里面的所有練習(xí)鼻弧。雖然只有10課设江,然而,我注意到了一件重要的事情:我越來越焦躁不安温数,而且正在失去興趣绣硝。
      我好像正在復(fù)制另外一個人創(chuàng)建的程序蜻势,并且正在解決另外一個人所定義的問題撑刺。問題來了:編程開始變得像一種學(xué)術(shù)活動,而不是一項有用的技能握玛。
      我需要跳出研究模式够傍,進入實施模式甫菠。
      在開始編程之前,我不需要讀完所有的書籍冕屯、課本寂诱、教程和其他我已經(jīng)收集的資料。我需要立即開始編寫真正的程序安聘,如果遇到任何問題痰洒,在參考我準備的資源。
      是時候行動了……
    7. 《自述文件驅(qū)動開發(fā)》(Readme Driven Development)浴韭,有別于沒幾年就會轟動軟件行業(yè)一次的項目管理技巧丘喻,該文章旨在說明創(chuàng)建一個應(yīng)用的最好方式,即做其他任何事情之前念颈,編寫一個自述文件泉粉。
    8. 讓 SQL 或任何其他數(shù)據(jù)庫查詢語言與像 Ruby 這樣的語言很好的契合是非常不容易的。使用一種語言進行編程已經(jīng)很困難了榴芳,更別提同時使用幾種語言了嗡靡。
      這就是 ORM 們產(chǎn)生原因:它們允許程序員使用一種語言編程,然后用 ORM 將它們轉(zhuǎn)換為數(shù)據(jù)庫的語言窟感。這就簡單多了讨彼。
    9. Bootstrap 是一個預(yù)先編寫的免費使用的 HTML 和 CSS 程序庫。使用 Bootstrap 可以節(jié)省大量的時間:你可以幾分鐘內(nèi)把你想要的應(yīng)用程序的基本原型放在一起肌括,無需花費數(shù)天時間点骑。

PS:

其他關(guān)于本書想要說的。

  • 封底原拥病:
    1. 學(xué)習(xí)一門新知識或新技能的最快時間是多久黑滴?
      答案:20小時!
    2. 快速學(xué)習(xí)技能四大步
      答案:分解步驟紧索,充分學(xué)習(xí)袁辈,克服困難,集中練習(xí)珠漂。
      注: 對比晚缩,我的體系是 “收集資料” + “學(xué)、習(xí)媳危、修荞彼、證”。
扉頁自結(jié):
  1. 目標不同待笑,手段不同鸣皂,效果(效率)不同。求仁得仁。
  2. 初學(xué)時不要盲目追求質(zhì)量(勿過度準備)寞缝,必要的訓(xùn)練量和訓(xùn)練速度(計時訓(xùn)練)才是制勝法寶癌压。
  3. 沒有改進的簡單重復(fù)是沒有意義的。
     刻意練習(xí)荆陆、微小改進滩届、「即時」反饋、高水平重復(fù)一萬小時被啼。 ——雕爺
  4. 天時不可為帜消,人和在自己,唯借地利(掃除環(huán)境干擾)浓体。
  5. 看買來的好書券犁,學(xué)日語,寫論文汹碱,(20160524)做以上任何一件事兒即使理論上占用了做其他事兒的時間(時間/機會成本)粘衬,但絕不會產(chǎn)出悔、罪惡感咳促。
     “我們寧愿把大部分時間消磨在電視和電腦上稚新,也不愿意為夢想付諸行動,因為看電視跪腹、玩電腦簡直太容易做到了褂删。久而久之,我們的夢想冲茸,僅僅是夢想屯阀。而,很多技能在學(xué)會之前是體會不到他的樂趣的轴术∧阉ィ”

PS2:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逗栽,隨后出現(xiàn)的幾起案子盖袭,更是在濱河造成了極大的恐慌,老刑警劉巖彼宠,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳄虱,死亡現(xiàn)場離奇詭異,居然都是意外死亡凭峡,警方通過查閱死者的電腦和手機拙已,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摧冀,“玉大人倍踪,你說我怎么就攤上這事霉涨。” “怎么了惭适?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長楼镐。 經(jīng)常有香客問我癞志,道長,這世上最難降的妖魔是什么框产? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任凄杯,我火速辦了婚禮,結(jié)果婚禮上秉宿,老公的妹妹穿的比我還像新娘戒突。我一直安慰自己,他們只是感情好描睦,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布膊存。 她就那樣靜靜地躺著,像睡著了一般忱叭。 火紅的嫁衣襯著肌膚如雪隔崎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天韵丑,我揣著相機與錄音爵卒,去河邊找鬼。 笑死撵彻,一個胖子當著我的面吹牛钓株,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陌僵,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼轴合,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碗短?” 一聲冷哼從身側(cè)響起值桩,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎豪椿,沒想到半個月后奔坟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡搭盾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年咳秉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸯隅。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡澜建,死狀恐怖向挖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情炕舵,我是刑警寧澤何之,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站咽筋,受9級特大地震影響溶推,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奸攻,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一蒜危、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧睹耐,春花似錦辐赞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窖梁,卻和暖如春晃酒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背窄绒。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工贝次, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彰导。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓蛔翅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親位谋。 傳聞我的和親對象是個殘疾皇子山析,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)掏父,斷路器笋轨,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評論 25 707
  • 本文把程序員所需掌握的關(guān)鍵知識總結(jié)為三大類19個關(guān)鍵概念,然后給出了掌握每個關(guān)鍵概念所需的入門書籍赊淑,必讀書籍爵政,以及...
    dle_oxio閱讀 11,081評論 6 244
  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多。不是我不學(xué)習(xí)陶缺,這世界變化快钾挟! 有時候還是蠻懷念十幾、二...
    碼園老農(nóng)閱讀 5,296評論 2 35
  • 首先饱岸,還是有困掺出,這是亙古不變的徽千。在看之前有聽室友簡介過,所以大致知道會發(fā)生什么汤锨。我覺得還是有bug的双抽,一路都在想威...
    Super_亭小亭閱讀 303評論 0 0