🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

博客

NinghaoNodeCamp2019:训练准备、目标与方法

你成就的所有事情,首先就是做了一个小小的决定,然后伴随着一个又一个的决定,每个决定又跟着一些要完成的动作或任务,一段时间以后,神奇的事情就发生了。

所有伟大的,看起来不可能的事情都是这样实现的,就是由一个个细小的决定组合而成。这是前两天我从偶然看到的一个 TED 演讲中得到的启发,我觉得我们 “英雄” 所见略同:)

其实古人早就已经给我们总结了这个方法,“不积跬步,无以至千里;不积小流,无以成江海。”,上学的时候我们都读过这句话,只不过只是把它当作一句普通的话,其实这就是成就所有事情的秘籍。

我们认为难做的事情,难学的东西,可能不是因为事情难做,东西难学,而是一种捷径心理。我们都希望能通过某种方法或捷径,一下子就把事情做成了,一口气就把东西学会了。比如用一道公式解决英语学习

有时候我们是被事情本身吓到了,如果把它当作一个整体来看,的确挺吓人的。但是,当把它分解成一块一块的小任务,每个小任务全都可执行,这样就没那么可怕了,因为你知道,只要一个一个的把这些小任务全部都完成就行了。整体可怕,小块可行。

NinghaoNodeCamp 2019:英文单词(按出现频次排列)

在这次训练营中,出现了 5000+ 次英文单词,去掉重复以后还剩几百个,很多单词在不同的语境下表示不同的含义。单词的大小写不同,或者撰写的形式不同,可能表示不同的东西。

比如 post 这个词,如果是 POST 指的是 HTTP 协议里的一种请求方法,如果是 @Post,指的是框架里的一个装饰器,如果是 Post 指的是我们自定义的一种内容实体,表示文章,posts 表示一组文章,posts 也经常出现在内容的地址里,比如 /posts,或 /posts/3。

单词后面的数字,表示这个单词在所有训练中出现的次数。比如 id 294,说明这个词出现了 294 次。

把应用送进 App Store ,来试用一下训练 “营地”

这个月 6 / 15 — 6 / 30 日,我们将在线上组织一次 Node.js 后端应用开发训练营。 训练营地是用一款开源的 Node.js 应用(RocketChat)搭建的,微信可以留作备用方案。

其实用微信就完全够用,不过我还是想给大家寻找一些其它的解决方案,比如现在如果你需要快速搭建一套自己的公开或私有的即时沟通协作系统,想把自己开发的移动应用送进 App Store,我都可以跟你分享一下这次搭建训练营地的一点经验。

搭建即时沟通协作系统

快速运行 RocketChat 应用,可以通过 Docker 实现,我们在之前的课程里也介绍过用 Docker 快速运行其它类型的应用的方法,比如运行一个 WordPress 系统

其本流程就是,在一个 Docker Compose 文件上写清楚运行 RocketChat 需要的服务,比如应该有 RocketChat 本身,还有一个它需要的数据库服务。把这个包含了服务定义的 Docker Compose 文件拿到一台安装了 Docker 与 Docker Compose 的服务器上,执行一条运行的命令就行了。

故事听了很多,该去撰写自己的了(6 / 15 – 6 / 30)

成功 / 失败的故事听起来都是那么动人,但只有属于自己的故事才真的有意义。让我们开始创造点什么,无论成与败,最终你都会捡到一个动人的故事可以讲给你在乎的人听。

独立自学

把要学会的技能分割成一些可以执行的训练,在一段连续的时间,每天做完一定量的练习,这就是我试过的最简单有效的自学方法。几年的自学经验,总结出来的方法就这么一句话。方法很简单,注意两个重要的因素:1,可执行的训练,2,连续一段时间。

学习就是一个训练的过程,没窍门,无捷径,至少我还没有找到。中文很厉害,“学习” 这个词里面就包含了学习的最重要的方法,“学” 是模仿,“习” 是练习、训练,所以 “学习” 就是模仿着跟着训练。训练内容要可执行,就是你真的能够跟着去做,这就需要训练的内容是要经过设计的,设计的时候就要具备这种可执行性。很多材料并不具备这种可执行性,比如有些理论书籍,技术大会的演讲等等,你都很难跟着去做训练。

连续的时间指的是连续几天,一段连续的时间也非常重要,这会提高学习的效率。因为头脑在切换任务的时候都需要一点预热的时间,连续在一段时间做同样的任务会减少这个预热的时间。如果我在某段时间做服务端开发相关的事情,转换去做移动端的时候,就需要先适应一下,有时也需要看看自己以前做的视频:)

搭建训练 “营地”

前几天我把这次开发训练营里的主线训练内容都准备好了,一共 15 组主要的训练。我们会找一块集中的时间,突击完成所有训练,初步定在 06/16 — 06/30,正好每天做一组训练,应该不会太耽误你平时的正常工作。完成所有训练以后,如果你能理解每个训练动作,你就可以毕业了,如果还有疑问,可以继续留下来。

这两天我在考虑用什么形式来发布训练内容与解决遇到的问题,最简单的就是直接放在现在的宁皓网。不过我想做点新的尝试,本打算用训练营要用的应用框架做个简单的网站,只要做到可以分发视频内容与简单的评论就可以了。后来我想还是做完这次训练营再考虑重建的事儿,训练营成员有兴趣也可以参与一下。

不想弄乱你的 QQ 或微信,所以我想通过一些其它的团队协作工具,比如 Tower、Quip、BaseCamp、Slack 等等。有些需要给每个成员交个月费,这其实无所谓,只要适合就行,试了试还是觉得有些限制。最后我用了一套开源的 Node.js 应用,正好我们这次训练营介绍的也是 Node.js 应用开发。这个应用有点像 Slack,Slack 这家公司去年估值 70 亿,可见这个产品还是非常有价值的,美剧《硅谷》里面还开过这个公司的玩笑。

报名参加后端应用开发训练营(NinghaoNodeCamp 2019,6/15 - 6/30 )


NinghaoNodeCamp 2019:想法

多少次打算学习后端应用开发,最终又放弃了,只是因为学习中遇到了一点点小问题,没能及时得到解决。现在有个机会可以让你用三个月获得一项重量级开发技能,你可以参加宁皓网有史以来的第一次线上训练营:《 Node.js 后端应用开发(2019)》

摄影基础知道这些就够了

在大海上,我看到一艘巨大的海盗帆船,已经接近日落,天空的云彩都有了颜色,我举起相机朝向那灿烂绚丽的美景,但是怎么也按不动快门,对不上焦。这其实是我的梦魇,类似的梦做过无数次,每次都是看到了美景,但是相机出了状况,要么坏了,要么就是对不上焦,就是拍不到。

大概是十年前买了第一台单反相机,从那时开始,拍照就成了我的一个兴趣爱好。现在对我来说,拍照是一项运动,它能让我多溜溜自己,不然我总是会宅在家里,至少现在遇到了好的天气,霞光万道,春暖花开,橙黄橘绿,堆银彻玉之时都会让我有出门的冲动。

刚开始接触摄影,你肯定是想着买几本书看看,那天我去了书店,翻了翻摄影类的图书,内容其实也都没啥意思。看到标题与封面以后,基本上就相当于是看完了整本书。学摄影可以分成两块,一块是工具,还有一块是美学。

美学方面的培养是个缓慢的过程,多数都要靠自己的体会,表达你想表达的,用你喜欢的色调,讲你想讲的故事。有人说,如果你拍一张因失焦而模糊的照片,那是个失误,如果你连续拍了一千张同样失焦的照片,这就是你的风格了。

无法停止

公交车上,望着窗外,希望车能开的慢一些,这样就能晚一会儿抵达卖场。车到站了,我朝着商场方向走着,希望这段路能长一些,这样就能晚一会儿抵达卖场。进了商场,往属于我的那节柜台移动着,尴尬地跟周围的姐姐们打了招呼以后,随即站在柜台前等着顾客的光临。

每个走近柜台附近的顾客都是我的猎物,我不会放过任何机会。留给我的时间不多,顾客只要走出这一米的柜台,我就得马上收住嘴,这是大家形成的默契。根据不同类型的顾客要使不一样的招式,有时得显得傻一点,有时要可爱一点。

有回一个斯文的女生,拿着个文件袋,里面有几本书,我分析了她的打扮还有年龄,判断她是个老师,“您是老师吧?”,“你怎么知道?”,“我猜的:)”。那天她捧着一台 3 千块的诺基亚回的家。

上面是我十六七的时候假期打工干销售时的场景。跟陌生人讲话对我来说是一件挺难的事情,个性腼腆,有些内向。小时候上二姨家,自己走丢了,见到一位老奶奶,我憋的脸通红,才说出一声 “奶呀,你知道 ... 怎么走吗?”。我觉得自己不是干销售的材料,与人交往时总是觉得别扭,不过同时我又发现,只要进入状态以后就会好很多,而且我认为自己还是有一些销售技巧,比如装呆,装可爱,都挺管用的。

理解 Passport.js 里的策略与验证回调

Passport.js 里面使用一种叫策略(Strategy)的东西验证用户的身份,在应用里我们可以选择使用不同的策略验证用户的身份。比如用户名与密码,JWT,oAuth,OpenID 等等。使用策略的时候需要配置一下。

下面是 LocalStrategy(用户名/密码) 的用法:

理解依赖注入(Dependency Injection)

一个东西(Object)需要其它东西提供的功能,就把这些提供功能的东西附加到需要它们的东西里面,这就是依赖注入。从字面意思去理解,不用考虑的太复杂了。依赖注入,就是注入需要的依赖的东西。

看个例子,有个类叫 ImageController,它里面的 index 方法可以返回所有的图像资源,在这个方法里依赖 ImageService 里面提供的服务,它会帮 ImageControllerindex 方法找到需要的图像资源。

不使用依赖注入

ImageController 需要 ImageService 里的功能,如果不使用依赖注入的方式,代码大概像这样:

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点