俗话说一天不读书,没人看的出;两天不读书,开口会爆粗;三天不读书,智商输给猪。因此,为了让本身的“智商”保持在pig之上,都会逼着本身天天读点东西^_^。但身处信息大爆炸时代精力又极有限的咱们,面对层出不穷突飞猛进的技术,咱们应该怎么办呢?mongodb
其实不少时候只须要掌握一个大概就行了。数据库
我在作测试的时候很喜欢套用5W1H的框架,后来慢慢的就发现这个框架不只适用于作测试计划、了解系统业务,还很适合用来作知识的学习——这个想法跟下面的文章不谋而合,故而转之。编程
——————————————————我是花丽丽的分割线——————————————————————ruby
前几天fork了Ruby China的源码,面对陌生的Ruby技术栈,一头雾水。
我fork它并不单为了学习,而是要在最短的时间搭建起我脑海中的社区网站。因此我不可能针对每一门新技术都去买一本书来读上半个月。框架
我在本机运行起Ruby China,新注册一个用户,发现不能发帖,提示说要注册一个月以上才能够。因而我去找相关代码:ide
# 是否能发帖
1 def newbie? 2 return false if self.verified == true 3 self.created_at > 1.week.ago 4 end
明明是一星期嘛,代码是不会说谎的。因而把文字改掉,顺便提个pull request。
扯远了,代码说若是是self.verified
就不是新手了,我先去管理后台看了一下,没有修改这个字段的界面。因而我不得不去数据库里更新这个字段。我大概知道mongodb是数据库,但我不知道该怎么操做。post
当我了解到一个新的技术名词,不会直接陷入细节,而是从宏观上把握它。了解它的背景,为什么出现,解决什么问题,有什么同类技术,没有它以前咱们如何工做。由于有了宏观的了解,我就能很容易把它和我熟悉的技术去创建关联,从而更快地理解它。学习
打开官网,发现有个很是棒的Try it out,先花10分钟玩一下,对其玩法有个大概了解,而后再来解决实际的问题。测试
从前面的Try it out中我知道了help
命令,因而便经过help
知道了show dbs
,use ruby_china_dev
。根据使用SQL的经验,我想固然地认为更新一条记录的一个字段应该是这样:网站
1 db.users.update({"_id":3}, {verified: true})
但我悲剧地发现,整条记录被替换了,好吧,这就是文档型数据库。因而放狗搜索:How to update specific field in mongodb
,很快便找到了答案。
db.myCollection.update({condField: 'condValue'}, { $set: { dateField: new Date(2011, 0, 1)}}, false, true);
对应我这里的需求就是:
db.users.update({_id:3}, {$set:{verified:true}}, false, true)
问题解决了。
随着接触的愈来愈深,遇到的问题就会愈来愈多。我会把每个解决掉的问题放到个人Evernote里,这样下次再遇到就能很快找到答案。当我发现postach.io这个能够和Evernote同步的博客系统后,就开通了这样一个博客,其余人遇到一样的问题时也更容易找到答案了。
当我真正对一门技术感兴趣而且有足够的时间去学习时,我一般会按照下面的步骤去学习。
实践足够多后时,我可能以为已经掌握这门技术了。但当我尝试去表达的时候,会惊讶地发现还有不少概念是似懂非懂的。因而我会去查资料,完善本身的体系。只有当我把学到的东西用本身的语言表达出来,而且能让听众明白的时候,才是真正掌握了该技术。
学会分享是很重要的,把在该技术上的经验总结出来,写成博客,集结成书出版,再到行业会议上分享实践经验。这样才能成为该领域公认的专家。
一位一年读100多本书的同事说:
你一年才能读几十本书,就不要什么书都看了,多花点时间挑书吧。
如今新技术层出不穷,咱们没有那么多时间去深刻学习每一门。对于大多数技术,咱们只须要搞懂概念部分,从宏观上了解一下,决定咱们要不要深刻地去学习它。有了这些了解,就能轻松地与别人聊天了,也能够为之后技术选型作一些储备。当面对真正的需求时,或者你有足够的时间作技术储备时,才去进入实践部分。
编程是一个知识更新很快的行业,只有真正有热情并掌握了好的学习方法的人,才能走的长久。