博客

NNC D1:准备训练( Nest.js 的开发工具与环境)

这次训练营的目的是训练开发一个基于 Nest.js 应用框架的服务端应用。Nest.js 这个框架是基于 Node.js 的,所以应用的开发环境就是去安装一个 Node.js。第一天的训练任务是去准备 Node.js 应用的开发工具与开发环境。

工具

  1. Terminal(macOS) / Cmder(Windows):命令行界面
  2. VSCode:代码编辑器
  3. Git:源代码管理工具
  4. Insomnia:HTTP 客户端
  5. TablePlus:数据库客户端

环境

  1. Node.js
  2. Docker / MySQL

常见问题

Docker 桌面版对 Windows 系统的要求挺高,需要 Windows 10 专业版、企业版,同时要开启系统的 Hyper-V 才可以。我们用 Docker 主要去给要开发的应用创建一个 MySQL 数据服务来存储应用的数据。如果发现不能使用 Docker,可以直接在本地电脑上安装一个 MySQL,或者使用任何你有权限控制的 MySQL 数据库,比如在远程服务器上的数据库。

用 Docker Compose 搭建 Node.js 应用(Nest.js)的本地开发环境

最近同学们在练习中遇到很多问题都跟开发环境有关,虽然开发 Node.js 应用只需要安装一个 Node.js,我也建议大家安装跟练习中同样的版本,但依赖存在大量的变数,因为操作系统不同、网络环境不同、安装的方式不同等等。这些变数导致遇到了各种各样的问题。

很多问题跟权限有关,有位同学试了很多次就是无法创建项目,我通过远程协助,发现问题是因为 npm 的缓存引起的,清除缓存以后,重新再去创建项目就可以了。

如果使用官网下载的安装包安装的 Node.js ,用 npm 在全局范围安装命令的时候就会遇到权限问题,因为在全局安装的这个命令,会存储在系统的某个地方,当前用户对这个地方有可能是没有权限的。解决的方法是使用 NVM 管理在系统上的 Node.js,或者手工通过配置修改 npm 在全局范围安装包的目录,换成对当前用户来说有权限的目录就行了。

Netflix 剧中出现 VSCode 编辑器与 Nest.js 框架的代码

在 Netflix 出的一部剧《不要在家里尝试》的第一季第二集里,男主角一夜之间用 VSCode 编辑器,做了一个 Nest.js 服务端应用还有一个 Vue.js 前端应用。这部剧的另外一个名字比较危险,不能乱用。

我有个想法,创造个应用在网上卖点东西!

让我在 VSCode 编辑器上整理一下思路。

NinghaoNodeCamp2019:提交训练任务代码

你要对训练中开发的应用项目做源代码管理,在训练视频中介绍了具体的方法。要为项目添加一个远程仓库,开始一组训练前可能需要创建一个新的分支(branch),每完成一个任务你都要做一次提交(commit),提交信息必须设置成所完成的任务的名字。

完成当天的训练任务以后,把做的提交要推送(push)到项目的远程仓库的上面(下面会解释相关的概念与具体的方法)。我们会根据你在训练中推送到远程仓库上的代码来判断你是否正确地完成了所有的训练。

相关概念

源代码管理 / 版本控制

源代码管理(Source Control),有时候也叫版本控制(Version Control)。在开发应用的时候,需要对项目做源代码管理,源代码管理主要做的就是使用一些有效的方法,记录项目的每一次变化,现在最常用的源代码管理工具叫 Git,它是开发者的必备工具。

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)》



微信好友

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



微信公众号

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



240746680

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

统计

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

社会化网络

关于

微信订阅号

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