作者归档:月夜

读《详谈:00后》:他们是一个个鲜活的个体,他们都很优秀

2022 年对于 00 后来说可能是标志性的一年,因为从这一年开始,他们这批人会大规模走入社会,走入职场。与此同时国内外的大环境加上新冠疫情这只黑天鹅带来的各种变化,也给他们带来了更多的不确定性,那么他们的看法都会有什么呢?

我是带着这个疑问读这本书的,这也是我第一次读《详谈》系列的读书,先说结果,跟我想象的不太一样,我个人觉得这本书叫《详谈:4 个 2022 应届毕业生》可能会更好。

这本详谈选了四个 00 后,都是在 2022 年毕业的本科应届生,他们分别来自北京大学、四川农业大学、香港中文大学、陕西科技大学。这四个大学都是一本及以上的学校,是大学中的少数,我们可以说它们是相当不错的学校。

读完后的第一感受是看到了现实,看到了从众,就像李翔老师的那一丝丝担心一样,在主流的影响下,他们无限的开始偏向从众。可能是受访谈框架的影响,没看到多少他们在大学校园中挥洒的青春……后来我一想,在当下的这个环境可能确实很难挥洒青春;又一想,可能挥洒青春的毕竟也是少数中的少数(比如音乐方面的老狼、郑钧、李志),而详谈选择的对象才是大多数,尽管他们代表的是不错学校中的大多数。

看到了现实,那就说说现实,毕业生直面的现实就是就业,直观的感受是学校越好,学生的思考的也越有体系,目标相对也很明确,周边能够利用的资源也比较有优势,对于自身和环境的认知也更清醒。比如对于职业规划来说,来自北大的和来自香港中文大学的思考的明显要体系化一些,目标也比较明确,他们身边也有多元化的社会关系来给他们带来帮助。学校给学生提供的社会关系、原生家庭和个人实际能力结合之下,他们对于现实性问题的看法都有自己的一套。

在我记忆中的是到毕业季才开始着手准备就业,现如今居然被提前了那么长时间,以至于你要在刚刚进入大学,刚适应环境之后就要开始着手准备了,这可能就是现在的现实。他们对此也有很清晰的认识,也着手在当下朝着自己的目标前进,开始卷了起来,我不由在想,教育背景更好的他们都是这样,那么作为整体大多数的二本学子们是一个什么样的状况呢?

这四位 00 后很优秀,我把记忆拉到当时我读书的那个时间段,并进行了一番对比之后,我自己的感觉是他们在接触的空间广度上和对环境的认识上要远超当时的我,他们能够接收的输入多元化也远超我们那个年代,他们面对的问题与我们面对的问题也是一样的,那就是如何生活。在这个意义上我是不太赞同给每一代人贴上标签,大家都是在所处的环境中,在迷茫中要解决自己面对的问题,好好的生活。正如书中主人公所言,他们并不认为自己是典型的 00 后,他们只是生于 2000 年左右的一个个鲜活的个体,他们有他们自己的想法,他们有他们自己的选择,有他们自己的行动,有他们自己的梦想,并且他们都在努力为之付诸行动,他们都很优秀。

告别了自搭梯子

想了一圈,除了电脑本地,也只有这两能说两句了。

做个告别的记录,两点:
1. 为自己的愚蠢;
2. 告别自己搭梯子

昨天傍晚的时候,突然发现不能收邮件了,搜索东西也不行了,一看自己搭的梯子 IP 被封,这次用的时间其实挺久,中间断续的影响只是端口,这次是 IP ,怎么办呢?那就换个机房吧,更换机房后发现不行,直接的迁移「从澳洲迁移到日本」不行,我折腾了一阵子发现不行,又不想重新配置,就删除了这个,然后重新买一个选择市场上带梯子产品的,结果一阵折腾后发现新建的 IP 依旧是被封的,一看时间,折腾时间太特么的长了,算了我还是买一个先用着吧。

花这么多时间折腾这个我觉得有些愚蠢「至少目前是」,那就暂时先告别自己搭梯子吧,一直以来一想起这个事情就觉得挺扯淡的,但你就在这个扯淡的世界中。

推荐 5 本书:2 季度中读到的好书

在第一季度,我在读过的书中选了 7 本我读着不错的进行记录,见【推荐 7 本书:1 季度中读到的好书】。如今第二季度过完了,延续上个季度的做法,在第二季度中读过的书中,有五本读起来不错,在这里推荐给大家。

-1- 《心若菩提》

第一本是曹德旺的自传《心若菩提》,这本书其实想看很久了,但一直没有翻开。我自己的感觉是读电子书所占的时间比较多时,看实体书就有些被遗忘,这本书电子版一直没上架,算是被其他电子书的阅读耽搁了。这个季度开始突然想起了在去年年底看过的《美国工厂》这个纪录片,然后就拿出这本书开始翻了起来,一通读下来之后,还挺有收获,对比电影我更喜欢这本书。

书中有不少地方蛮有启发,比如跟着父亲做生意,这在很早就有了的历练;在特殊时期解决各种配额那部分建立的人脉;还有在选择做什么的时候,利用标杆和与标杆之间的距离来丈量一番;在各地对老厂的收改中与地方的博弈等等。当然还有一些比较有趣的事,比如几次的求签问卜。整本书写的通俗易懂毫不晦涩,读起来很轻松,值得一读。

-2- 《中央帝国的军事密码》

第二本是郭建龙的《中央帝国的军事密码》,这是郭建龙帝国密码三部曲中的其中一本,另外两本分别是《中央帝国的财政密码》和《中央帝国的哲学密码》。我以每年一本的速度读完了这三本书。从书名可以看出,郭建龙从财政、哲学、军事三个方面对古代中国进行了解读,这三本书都值得一读。

读这本《中央帝国的军事密码》感觉没有另外两本书写的精彩,解读军事从地理与环境的角度出发但却没有提供地图让人读起来很吃力,我是配合在电脑大屏幕打开电子地图来一遍读一边对应到具体的地点。

虽然没有地图值得吐槽一下,但沿着地理的脉络一览古代中国的军事战争还是很有收获的。比如为什么是从关中开始,再到中原,再到南北对峙,在冷兵器时代,据险可守,从这点来看北方确实占据了很大的优势。

对于地图的吐槽另一面也表示当年地理知识学的是一塌糊涂,其实以前总是不知道学地理有什么用,现在想来是缺乏从整体的地理框架演变为具体的地域及地点,以及在这个框架下的国家和人民之间的关系,人毕竟生活在实际的地理空间,这些地理之间的纵横交错与环境的依托是不相同的,这之间的不同随着竞争在演变,到国家这一层的征战就依托这些具体的地理空间在进行。

-3- 《东晋门阀政治》

第三本是田余庆的《东晋门阀政治》,这本书我给打了五颗星,这是在第二季度我唯一给打了五颗星的书,对于两晋南北朝这段历史感兴趣的朋友,这本书不可错过。从书中的行文来看,田老师治学非常严谨,能够在阅读中感到田老师花费了很大的心血,对东晋这一百年的门阀政治阐述的非常清晰。

这本书我开始看是比较早的,但是看了开头一点后看不下去,断断续续尝试几次后就先把它放在一边了,这本书并不好读。为什么当时我选择读这本书呢?

很早以前,在我每次回忆起中学读历史的时候,记忆中对于两晋南北朝这段时间几乎没怎么提及,这让我一度认为这段时间非常短暂,但后来我才知道,两晋南北朝这段时间足足有 300 多年呢,这一点也不短暂,那么这段时间中国都在发生些什么呢?于是就产生了那么点好奇心,但这个好奇心并没有达到让我马上搞清楚它,但她就像埋在心里的一个引子,在读到的书中涉及到这段时期的内容时,这个引子就会浮现,在最近几年读的几本书中,郭建龙的帝国密码三部曲中从财政、哲学、军事三方面均有涉及到两晋南北朝,郭老师的书让我对这段事情大概有了个印象。

那这本书就是在读完《中央帝国的财政密码》后发现的,并准备看一看,但不知道为什么一直看不进去,直到最近又重新拿起来开始看,这一看就有点味道了,气味对了也就顺畅地一气读完了。随着阅读,对这段时间开始有了一些初步的认识了,就目前来看,这段时期是挺重要的一段时期,基本上在魏晋南北朝完成了民族和文化的大融合,为下一次在一起提供了基础。

东晋门阀政治从「王与马,共天下」始,终于「王与马,失天下」,只不过是此王非彼王,这一百年挺有意思,皇帝垂拱,士族当权,流民出力,能维持这么久也实属稀罕,只能说这三者刚好构成了一个平衡状态。在这种动态的平衡中,南方完成了广阔的土地开发和儒道释等文化的碰撞与扩展,北方则带来了各民族的普遍进步与大融合。这就为下一次的大一统做好了准备,历史在变化之中同时存在着历史的延续。

这本书给我的最大感触是作者并没有预设什么,他只是尽力的寻找历史内部真正存在的各种线索,细致考证,然后陈述事实,如果找不到那就先存疑放着,这种从细微的着手,层层推进的方式读起来虽然不好读但读进去也是酣畅淋漓。

-4- 《机遇之门》

第四本是多夫·莫兰的《机遇之门》,多夫·莫兰是以色列著名的企业家、发明家和投资人。USB 闪存盘就是他的发明。推荐这本书是因为作者写的小故事我挺喜欢。

比如「百门模型」的故事,这个故事大概是这样的,你处在有 100 扇紧闭着的门的虚拟世界里,你十分想离开这个虚拟世界,打开每扇门的概率互不影响,对于每一扇门你有 1% 的机会能打开门,有 99% 的可能性会碰壁,…… ,那么逃离这个虚拟世界的概率是多少?

类似这样的小故事不少,这些小故事背后传递了作者对创业的理解,这个百门模型就是作者理解的创业世界。一旦开始创业,你就算是进入了一个包含 100 扇门的世界,你争分夺秒地寻找那扇能够向你敞开的门,从而突破并向前迈进…… 如何开启创业的机遇之门呢?

当然还有作者一路创业历程中的发生的各种故事,通过这些故事集,作者把他理解的企业家精神、市场、团队、困境以及各种心境完整地呈现给了读者。

整本书读起来既轻松,又很有启发,不管是不是创业我觉得都可以读一读。

-5- 《纳瓦尔宝典》

第五本是埃里克·乔根森汇编的《纳瓦尔宝典》,这本书最近比较火,我估计应该还会持续的火一阵子。这本书跟《穷查理宝典:查理·芒格智慧箴言录》有点类似。如书名,这本书的主要内容是整理汇编了一个叫纳瓦尔的人对于财富和幸福的一些观点,也可以理解为纳瓦尔在生活中提炼的智慧结晶。

关于纳瓦尔其人我就不作介绍了,感兴趣的人可以到网上探索一番。上面说到这本书最近比较火其实不大对,更确切的说应该是纳瓦尔的输出的内容先火起来了,以至于有人想把这些火热的内容集结成书。纳瓦尔的输出之所以火,在我看来有两方面的原因,一方面是纳瓦尔在网络上发表的观点和言论所涉及的内容正是如今大部分人所想要得到的财富和幸福。另一方面是纳瓦尔通过输出这些观点和言论告诉大家,你这么做就能得到财富并收获幸福,你一看说的还非常在理。

尽管每个人因自身境况不见的就能学会,但是纳瓦尔毕竟给出了获得财富和幸福的指南,而且说实在的,读完后确实给人带来启发。比如纳瓦尔对于杠杆的观点输出,如果早看到可能就会早思考和实践,在他眼里,人如果按照二分法的话,可以分为利用了杠杆的人和没利用杠杆的人,进一步指出劳动力、资本、复制边际成本为零的产品这些都是杠杆,而我们选择工作也优先要选择存在杠杆的工作,因为只有最大化地发挥杠杆的效应,才能利用有限的时间和体力产生巨大的影响力。

书中还有很多地方能够给人带来启发,在读的时候时不时心里会说,嗯说的真对,我怎么从来没这么想过,这可能就是人与人之间的差别所在,不管怎么说向有智慧的人或成功的人学习总是好的。

看这些智慧者的输出,有一个共同的地方,就是他们都非常重视基础性的知识,纳瓦尔也同样如此,我想在这方面也同样值得我们学习。

本文首发于我的微信公众账号「时间易逝」,欢迎订阅我的微信公众账号
在微信中搜索「doevents」或用微信扫描页面右上方二维码可订阅我的微信公众账号

npm 学习笔记

npm[1] 是 JavaScript 包管理工具,它类似 Java 中的 Maven , Gradle , Python 中的 pip 。

npm 随着 Node.js 一起发布,在安装 Node.js 的时候,npm 也会随着 Node.js 的安装一起安装到电脑上。 npm 作为一个包管理工具,其自身更新比较频繁,它的最新版本也可以独立进行更新。

# 在终端执行下面的命令即可更新到 npm 的最新版本
npm install npm@latest -g

npm 安装一个包都命令是 npm install package_name , 执行此命令后,会在当前目录安装 package_name 包,并创建一个 node_modules 的目录,下载要安装的包到这个目录中。

npm 是通过 package.json 这个文件管理包到,通过这个文件对包的信息进行定义,以便在团队协作的时候对包的使用上统一一致。使用 npm install 命令安装的是包的最新版本,我们日常在进行的项目实际上不一定总是使用最新的版本,这时候同样可以通过对 package.json 文件进行配置获取指定版本的包。

一个 package.json 至少要包括包名和版本信息。

{
    "name" : "package_name",
    "version" : "1.0.0"
}

如何创建一个 package.json 文件呢? 答案是使用 npm init 命令,然后逐一回答问题即可完成创建。如果不想回答问题,可以使用 npm init –yes 命令创建默认的 package.json ,然后再修改之。

{
    "name" : "npm",
    "version" : "1.0.0",
    "description" : "",
    "main" : "index.js",
    "scripts" : {
        "test" : "echo \\"Error: no test specified\\" && exit 1"
    },
    "keywords" : [],
    "author" : "",
    "license" : "ISC"
}

以上就是默认创建的文件。要安装包,就要有下载的地址,同样也可以在 package.json 中用字段 repository 指定。

{
    "type" : "git",
    "url" : "https://github.com/example/package_name.git"
}

还有一些其他的字段可供设置,比如主页地址,作者邮件等等。一个包的 name 命名有一定的规范,包名需要使用小写字母,不允许有空格,可以使用下划线和横线。对于常用不太变化的字段值,可进行初始化设置,这样就不用每次都输入这些信息了。

# 初始化设定作者 email
npm set init.author.email "author@example.com"
# 初始化设定作者姓名
npm set init.author.name "Eric"
# 初始化设定许可协议
npm set init.license "MIT"

在使用 npm install 命令安装包的时候,会读取 package.json 文件来安装模块。模块在有时候有两种类型,一种是面向生产环境的,另一种是面向开发环境的,这时候可通过在命令后面添加 --save--save-dev 参数指定安装。

如果要更新包,使用 npm update 命令,卸载包用 npm uninstall package_name ,如果卸载的同时想要一并删除 package.json 文件,添加参数 --save

# 卸载 package_name 包,并删除 package.json 文件
npm uninstall --save package_name

上面说了,在默认情况下,包安装命令会将包安装在当前目录下,这只能在当前目录下使用。如果要使用一些全局的包,在安装的时候可以添加 -g 参数来安装,同理更新也是如此,卸载一个全局包也是如此。

# 安装 package_name 包为全局包
npm install -g package_name
# 更新全局包
npm update -g
# 卸载全局包
npm uninstall -g package_name

如果想知道当前都有哪些包需要更新,可以使用下面的命令查看。

# 查看哪些全局包需要更新
npm outdated -g --depth=0

包(package)是一个被 package.json 文件描述的文件或目录。模块(modules)是可以被 Node.js 引用的文件或目录。一个 Node.js 模块就是一个可以发布到 npm ,供其他开发者使用的模块。

如何创建一个 Node.js 模块呢?

  • 创建一个 package.json 文件,将模块信息添加到文件中;
  • 创建一个模块被引入就加载的文件,即 main 字段中指定的文件,默认为 index.js ,在此文件中将一个函数值赋给 exports 模块。
exports.printMsg = function() {
    console.log("This is a message from the first package.")
}

npm 的配置文件是 npmrc,项目级别的在项目所在目录下 .npmrc , 用户级别的在 ~/.npmrc , 全局的在 /etc/npmrc , 内置的配置文件在 npm 安装目录下。配置信息的优先级别为命令行参数级别最高,其次是环境变量 PATH ,再次是这些配置文件,要查看 npm 的配置信息,执行如下命令即可。

npm config list -l

默认下载包的源来自 npm 官网,如果感觉下载速度不理想,我们可以配置一些国内的镜像站点来加快下载速度。

我们可以在安装包的时候指定镜像源,也可以写到配置文件中。

# 在安装的时候指定「淘宝镜像」
npm install express --registr=https://registry.npmmirror.com
# 写到配置文件中
npm config set registry <https://registry.npmmirror.com>

# 查看配置是否成功
npm config get registry # npm info express 也可以

对于 npm 的学习暂时先告一段落,可能很长一段时间只是处于使用 npm 的阶段,了解以上的内容基本上应该可以开始使用了,使用中遇到问题随时查阅帮助解决即可。我看还涉及到发布自己的包等内容,这就是 long long after 以后的事情了。


本文中引用的资源
1:npm 的官方网站是:https://www.npmjs.com/

在 Ubuntu 20.04 LTS 上安装 SSL 证书

今天抽时间给自己的几个网站加上了 SSL 证书,SSL 证书是从腾讯云上申请的免费 SSL 证书,有效期为一年,从申请到配置比较顺利。

申请&下载

登录到腾讯云[1]上,搜索产品 SSL,找到 SSL 证书产品[2],进入该产品首页,也就是你的 SSL 证书概览,在这里左边是导航菜单,中间的内容区会显示证书申请状态和监控状态等概览信息,右边则是一些帮助信息,如下图所示。

在左边导航菜单中选择「我的证书」,会显示当前你申请的所有的证书,在中间功能按钮区选择「申请免费证书」按钮,如下图中红色箭头所指的按钮,即可开始进行免费证书的申请。

首先在弹出的页面上选择证书类型,免费版的目前只有一个,可以看到有效期只有一年,直接确定就行。

接下来是第一步提交材料,需要填写一些信息,要提交的资料主要是证书要绑定的域名以及申请邮箱,填写对应的信息即可,然后进入第二步「选择验证方式」。

第二步选择验证方式主要是验证你之前填写的绑定证书的域名是你的,使用推荐的「DNS验证」即可,选择下一步按钮进入第三步「验证域名」。

第三步验证域名需要你在你的域名中添加一条解析记录,在你的域名托管平台中找到你要绑定证书的域名,然后在域名解析中添加一条 CNAME 的解析记录,在解析记录中对应填写下图中的「主机记录」和「记录值」,解析记录添加完毕后,选择「查看域名验证状态」看看是否完成验证,如果完成验证,剩下就是等待证书的签发,基本上不到 1 分钟就能拿到发放的证书了。

这时候通过左边导航菜单回到「我的证书」菜单,如果上面操作无误,就能看到自己的证书了,在「我的证书」中签发下来的证书上选择「下载」,弹出如下图所示的页面。证书下来后我们需要安装到服务器上,所以我们可以先按照我们的服务器类型把证书下载下来,到这里我们的证书就已经申请完毕了,剩下的就是把下载的证书安装到服务器上。

上传&安装

我的服务器系统是 Ubuntu 20.04 ,Web 服务器软件使用的是 Apache ,所以在下载证书的时候选择服务器类型为 Apache 类型的下载,下载后解压缩,有四个文件,我们以申请证书的域名是 example.com 举例来说(在实际使用时将域名替换为自己到域名即可),那这四个文件分别是:

  • root_bundle.crt 证书文件
  • example.com.crt 证书文件
  • example.com.key 私钥文件
  • example.com.csr 系统在线生产文件,这个安装的时候不用

将证书文件和私钥文件拷贝到服务器上一个目录中,我是拷贝到了 /etc/apache2/ssl/example.com/ 这个目录下面,可以使用 scp 命令进行拷贝,也可以使用 scp 工具拷贝。

拷贝完成后,用 SSH 远程登录服务器,在虚拟主机配置文件中添加证书信息,比如在 /etc/apache2/sites-available 目录中,找到要配置 SSL 站点的配置文件,例如:example.com ,则对应到该目录下的 example.com.conf 文件,将配置信息修改为如下信息即可。

<VirtualHost *:443> 
	ServerAdmin admin@example.com 
	ServerName example.com 
	ServerAlias www.example.com 
	DocumentRoot /var/www/html/example.com/public_html/ 
	DirectoryIndex index.html 
	
	# SSL configuration 
	SSLEngine On 
	SSLCertificateFile /etc/apache2/ssl/example.com/example.com.crt 
	SSLCertificateKeyFile /etc/apache2/ssl/example.com/example.com.key
	SSLCACertificateFile /etc/apache2/ssl/example.com/root_bundle.crt 
	
	# Log files 
	ErrorLog /var/www/html/example.com/log/error.log 
	CustomLog /var/www/html/example.com/log/access.log combined 
</VirtualHost>

<VirtualHost *:80> 
	ServerName example.com 
	ServerAlias www.example.com 
	Redirect permanent / https://example.com/ 
</VirtualHost>

完成站点配置文件修改后, 在命令行运行 a2enmod ssla2ensite example.com 启用这个修改后的配置,紧接着 service apache2 restart 重启 Apache 服务器,这样证书就安装完了,再访问网站时域名前就能看见小锁了。


本文中引用的资源:

1: 腾讯云:https://cloud.tencent.com/
2: 腾讯云 SSL 证书产品:https://console.cloud.tencent.com/certoverview

– EOF –