新聞中心
前幾天 fork 了 Ruby China 的源碼,面對(duì)陌生的 Ruby 技術(shù)棧,一頭霧水。

創(chuàng)新互聯(lián)建站是一家企業(yè)級(jí)云計(jì)算解決方案提供商,超15年IDC數(shù)據(jù)中心運(yùn)營(yíng)經(jīng)驗(yàn)。主營(yíng)GPU顯卡服務(wù)器,站群服務(wù)器,樂(lè)山服務(wù)器托管,海外高防服務(wù)器,大帶寬服務(wù)器,動(dòng)態(tài)撥號(hào)VPS,海外云手機(jī),海外云服務(wù)器,海外服務(wù)器租用托管等。
我 fork 它并不單為了學(xué)習(xí),而是要在最短的時(shí)間搭建起我腦海中的社區(qū)網(wǎng)站。所以我不可能針對(duì)每一門(mén)新技術(shù)都去買(mǎi)一本書(shū)來(lái)讀上半個(gè)月。
我在本機(jī)運(yùn)行起 Ruby China,新注冊(cè)一個(gè)用戶(hù),發(fā)現(xiàn)不能發(fā)帖,提示說(shuō)要注冊(cè)一個(gè)月以上才可以。于是我去找相關(guān)代碼:
- # 是否能發(fā)帖
- def newbie?
- return false if self.verified == true
- self.created_at > 1.week.ago
- end
明明是一星期嘛,代碼是不會(huì)說(shuō)謊的。于是把文字改掉,順便提個(gè) pull request。
扯遠(yuǎn)了,代碼說(shuō)如果是self.verified就不是新手了,我先去管理后臺(tái)看了一下,沒(méi)有修改這個(gè)字段的界面。于是我不得不去數(shù)據(jù)庫(kù)里更新這個(gè)字段。我大概知道 mongodb 是數(shù)據(jù)庫(kù),但我不知道該怎么操作。
從宏觀出發(fā)
當(dāng)我了解到一個(gè)新的技術(shù)名詞,不會(huì)直接陷入細(xì)節(jié),而是從宏觀上把握它。了解它的背景,為何出現(xiàn),解決什么問(wèn)題,有什么同類(lèi)技術(shù),沒(méi)有它之前我們?nèi)绾喂ぷ?。因?yàn)橛辛撕暧^的了解,我就能很容易把它和我熟悉的技術(shù)去建立關(guān)聯(lián),從而更快地理解它。
實(shí)踐出真知
打開(kāi)官網(wǎng),發(fā)現(xiàn)有個(gè)非常棒的Try it out,先花10分鐘玩一下,對(duì)其玩法有個(gè)大概了解,然后再來(lái)解決實(shí)際的問(wèn)題。
從前面的Try it out中我知道了help命令,于是便通過(guò)help知道了show dbs,use ruby_china_dev。根據(jù)使用SQL的經(jīng)驗(yàn),我想當(dāng)然地認(rèn)為更新一條記錄的一個(gè)字段應(yīng)該是這樣:
db.users.update({"_id":3}, {verified: true})
但我悲劇地發(fā)現(xiàn),整條記錄被替換了,好吧,這就是文檔型數(shù)據(jù)庫(kù)。于是放狗搜索:How to update specific field in mongodb,很快便找到了答案。
db.myCollection.update({condField: 'condValue'}, { $set: { dateField: new Date(2011, 0, 1)}}, false, true);
對(duì)應(yīng)我這里的需求就是:
db.users.update({_id:3}, {$set:{verified:true}}, false, true)
問(wèn)題解決了。
隨著接觸的越來(lái)越深,遇到的問(wèn)題就會(huì)越來(lái)越多。我會(huì)把每一個(gè)解決掉的問(wèn)題放到我的 Evernote 里,這樣下次再遇到就能很快找到答案。當(dāng)我發(fā)現(xiàn) postach.io 這個(gè)可以和 Evernote 同步的博客系統(tǒng)后,就開(kāi)通了這樣一個(gè)博客,其他人遇到同樣的問(wèn)題時(shí)也更容易找到答案了。
當(dāng)我真正對(duì)一門(mén)技術(shù)感興趣并且有足夠的時(shí)間去學(xué)習(xí)時(shí),我通常會(huì)按照下面的步驟去學(xué)習(xí)。
教是***的學(xué)
實(shí)踐足夠多后時(shí),我可能覺(jué)得已經(jīng)掌握這門(mén)技術(shù)了。但當(dāng)我嘗試去表達(dá)的時(shí)候,會(huì)驚訝地發(fā)現(xiàn)還有很多概念是似懂非懂的。于是我會(huì)去查資料,完善自己的體系。只有當(dāng)我把學(xué)到的東西用自己的語(yǔ)言表達(dá)出來(lái),并且能讓聽(tīng)眾明白的時(shí)候,才是真正掌握了該技術(shù)。
學(xué)會(huì)分享是很重要的,把在該技術(shù)上的經(jīng)驗(yàn)總結(jié)出來(lái),寫(xiě)成博客,集結(jié)成書(shū)出版,再到行業(yè)會(huì)議上分享實(shí)踐經(jīng)驗(yàn)。這樣才能成為該領(lǐng)域公認(rèn)的專(zhuān)家。
推遲學(xué)習(xí)
一位一年讀 100 多本書(shū)的同事說(shuō):
你一年才能讀幾十本書(shū),就不要什么書(shū)都看了,多花點(diǎn)時(shí)間挑書(shū)吧。
現(xiàn)在新技術(shù)層出不窮,我們沒(méi)有那么多時(shí)間去深入學(xué)習(xí)每一門(mén)。對(duì)于大多數(shù)技術(shù),我們只需要搞懂概念部分,從宏觀上了解一下,決定我們要不要深入地去學(xué)習(xí)它。有了這些了解,就能輕松地與別人聊天了,也可以為以后技術(shù)選型做一些儲(chǔ)備。當(dāng)面對(duì)真正的需求時(shí),或者你有足夠的時(shí)間做技術(shù)儲(chǔ)備時(shí),才去進(jìn)入實(shí)踐部分。
編程是一個(gè)知識(shí)更新很快的行業(yè),只有真正有熱情并掌握了好的學(xué)習(xí)方法的人,才能走的長(zhǎng)久。
原文鏈接:https://ruby-china.org/topics/19578
當(dāng)前標(biāo)題:怎樣快速學(xué)習(xí)一門(mén)新技術(shù)
URL分享:http://www.fisionsoft.com.cn/article/cdhopdh.html


咨詢(xún)
建站咨詢(xún)
