八哥之神【番外篇6】

听说鲁豫要来采访稣

1. 听说稣特别能装逼是这样吗?能不能传授一下给大家?

这就得分析一下装逼的本质,一般人会觉得装逼就是吹牛,其实是一大误解,装逼的奥义在于——说实话!

举两个例子:

  • 想买个六米长的迈巴赫,却发现自己的 C1 驾照开不了,算了,不买了!反正钱也不够。——大实话!

  • 稣不喝酒,不喝茶,有人来做客就拿出绮怡招待,500ml 一瓶 35 元,结果被说太装逼。其实这水健康,换成酒岂止要 35 元,还致癌!您说到底谁装逼呢?

2. 好像很有道理,您赢了!我们还是回到剧情。您不是说过自己是无神论,为什么剧中还出现神?

简单地说,本剧出现的神指的是每个人的心头之师,可以认为它是每个人内心的原始愿力,它也受各种规则制约,和神话故事里那些有超能力的神完全不是一回事。

  • 西方的“宿命论”认为,在人的一生中,上帝每分钟都看着你,你没有神的许可,连一根头发都不会脱落。这显然是伪科学。

  • 本剧的“命运无神论”完全没有神祗的意志成分,也无前生所造之业的因果成分,而是自然而然,谁都不可能预测或改变。简单地说,头发掉了就掉了呗。

3. 那您相信有那种有超能力的神吗?

我相信有超能力的神在天道前一样是卑微。

4. 稣为什么从神变成人?

这是一个循环,不是单向变化,也有从人变成神的。

时机一到,神自然就变成人。如果有神主动变成人,那可能是因为做神太快乐,以致于满足贫穷,本来就穷,还因为太快乐被人嫉妒,这不科学。做凡人呢,虽然没有做神开心,但有动力去赚钱呀。

世界上有很多更重要的东西,但前提是有钱。举个例子,小学就学过一寸光阴一寸金,但长大后发现,上班族不就是出售自己的时间换钱?有钱时,时间才宝贵;有钱时,感情才珍贵。

5. 是不是因为作者不想写了,强行把稣写死?

当然不是!中国人的平均寿命是 76 岁,稣曾经在佛塔前立誓折寿守护亲人长寿,一命赔多命,消耗掉 10 年寿命,死于 66 岁,完全科学合理。

梦见的就是这样死的,我有什么办法?咳!

6. 稣的身体不是新的吗?

身体是新的,但记忆是旧的,而且处于慢慢恢复的过程,恢复到一定程度后,稣领悟到转世的意义,自主选择转世。这事情已经发生过无数遍,不用在意死不死。

7. 《八哥九九八十一难》后来去哪里了?

这本书是高中时,妈妈为了让稣不因为早恋耽误学习、正确理解异性心理而传授的。但他的作者是未来的稣……时空悖论。

里面的科研成果是花了巨大心力得来的,但失忆的稣看它其实是不太相信的,所以离婚时期稣去实践了几个,付出一些代价后相信。

和大部分时空悖论的处理方式一样,和秦阳结婚后,稣亲自把它烧毁。

8. 30 集中有一段写稣对陈博士的质疑,所以她到底是不是稣的前妻?

不知道……真的!虽然我是作者,但这些故事是梦见的,所以也说不清楚!第 27 集里,稣在和陈立姻讲和秦阳的故事,那些记忆都是从识界复制而来的,识界里稣的前妻叫陈提姻,而不是陈立姻。至于 AVILab 的那个陈立姻,到底是谁,作者至今没搞懂!

诗盗·买币送禅

《#诗盗#·买币送禅》:天花娉婷坠如雨,帆冻阴飙吹不举。苦却乐,乐却苦,数字黄金忽如土。

注解

改编自唐朝贯休的《送颢雅禅师》:

霜锋擗石鸟雀聚,帆冻阴飙吹不举。芬陀利香释驎虎,
幡幢冒雪争迎取。春光主,芙蓉堂窄堆花乳,
手提金桴打金鼓。天花娉婷下如雨,狻猊座上师子语。
苦却乐,乐却苦,卢至黄金忽如土。

空仓观测,甚至还有心情写诗。

优化思维【3】消除没必要步骤

故事

四月底给 EOSIO / eos 提了一个优化 MongoDB 插件性能的 PR,被连续感谢好几个 Release

分析

原先的流程:fc::variant -> JSON string -> BSON,实现起来很简单,因为 JSON 是很常见的,fc::variant 和 BSON 都有到 JSON 的转化,所以实现代码很简单,一行两个函数。

但数据大时,性能问题就暴露了,这个过程先把 fc::variant 对象序列化为 JSON 字符串,然后反序列化到 BSON 对象。两步都是 CPU 密集型操作,由于 nodeos 及其插件暂时对多核支持不好,导致单核跑爆。

两个过程都要用递归实现,调用栈可能很深。调用函数可能有入栈出栈的消耗,有一种优化思路正是用 inline 减少函数的频繁调用

回归到本质,fc::variant 和 BSON 都是对象,应该直接转化才对。只是实现起来就不是一行能搞定的。先挑简单的方式实现,后期再优化,这是一种挺常规的做法。

SQLite Node.js

选型

mapbox / sqlite3: Asynchronous, non-blocking SQLite3 bindings for Node.js

安装:

1
yarn add sqlite3

常见操作

1. 创建数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const path = require('path')
const sqlite = require('sqlite3')

const dbPath = path.join(__dirname, 'test.db')
const db = new sqlite.Database(dbPath)

const sqls = [`CREATE TABLE test(
id CHAR(64) NOT NULL PRIMARY KEY CHECK(LENGTH(id) == 64),
timeStamp INTEGER NOT NULL,
state INTEGER NOT NULL DEFAULT 0)`
, 'CREATE INDEX index_id ON txs(id)'
, 'CREATE INDEX index_timeStamp ON txs(timeStamp)'
, 'CREATE INDEX index_state ON txs(state)'
]

db.serialize(() => {
for (let sql of sqls) {
db.run(sql, (err) => {
if (err) {
console.error(err)
} else {
console.log('SQL executed.')
}
})
}
})

db.close()

2. 插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const items = [
{ hash: 'D141925E39814FB5256615A1A94EC82B7043D983F68423D8C149A2AE360B623C'
, ts: 1563273661316, state: 0 }
, { hash: '2E9F26F5D0A73AE5DAFC8A1C22264725972AA997A22522A906D8CD7E225096ED'
, ts: 1563273661317, state: 1 }
, { hash: '0FF5F5F5E96664939D07D94975342D71F824747EFECE1D24FDDBB3B29DD91DCB'
, ts: 1563273661318, state: 0 }
]

db.serialize(() => {
const stmt = db.prepare("INSERT INTO test VALUES (?, ?, ?)")
for (const item of items) {
stmt.run(item.hash, item.ts, item.state, (err) => {
if (err) {
console.error(err)
} else {
console.log('INSERT', item.hash)
}
})
}
stmt.finalize()
})

3. 查询

1
2
3
4
5
6
7
8
9
10
11
db.serialize(() => {
db.each("SELECT * FROM test WHERE state=0", (err, row) => {
if (err) {
console.error('SELECT state=0 error:', err)
} else {
// do something here
}
}, (err, count) => {
// do something here
})
})

4. 更新

1
2
3
4
5
6
7
db.run("UPDATE test SET state=1 WHERE state=0", (err) => {
if (err) {
console.error('UPDATE txs error:', err)
} else {
console.log('UPDATE state to 1')
}
})

参考

http://www.sqlitetutorial.net/sqlite-nodejs/

pm2 运维经验

安装

比较多的文章推荐用 npm 安装,但 UMU 更推荐 yarn。

理由Visual Studio Code 脑残粉跟随 Microsoft/vscode 使用 yarn。

参考 yarn 安装,其中 Ubuntu 下命令为:

1
2
3
4
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt-get update && sudo apt-get install --no-install-recommends yarn

使用 yarn 安装 pm2:

1
yarn global add pm2

运行

不熟悉 yarn 的话,装完一头雾水,装到哪了?用以下命令显示:

1
yarn global bin

结果参考:

  • macOS:/usr/local/bin
  • Ubuntu:/home/ubuntu/.yarn/bin

启动脚本的命令为:

1
`yarn global bin`/pm2 start my-program.js

安全建议

root 身份能不用则不用。

菩提祖稣

低调的菩提祖师

题目,是“菩提祖师是稣的偶像”的缩写。

菩提祖师应该是西游记里最低调的人。

  • 精通三教,牛逼轰轰,却只在深山隐匿授徒。稣想起“道隐”这个称号……“惯看满城烟雨,回首不入烽云”

  • 警告孙悟空出师门后不能提起他,否则就让孙悟空万劫不复。

你这去,定生不良。凭你怎么惹祸行凶,却不许说是我的徒弟。你说出半个字来,我就知之,把你这猢狲剥皮锉骨,将神魂贬在九幽之处,教你万劫不得翻身!

  • 行事作风很低调。

这个工夫,可好在人前卖弄?假如你见别人有,不要求他?别人见你有,必然求你。你若畏祸却要传他,若不传他,必然加害,你之性命又不可保。

  • 自从孙悟空走出斜月三星洞,再没有出现过。

低调做人,高调做事

曾经的理解:很矛盾,做事也是做人的一部分,怎么能又低调又高调?难道又是量子邪说的叠加态?

经历过一些事后,稣发现一个关键词:嫉妒。

  • 做事高调,就是把事情做好,做出成绩,让大家认同,甚至可能引起崇拜。

  • 做人低调说的是——不要引起嫉妒!

虽然还是挺难的,但分得清,就有可能做到,其中最容易学的一种方式就是:学菩提祖师那样降低自己的存在感。

曾经的误解,如今的教训

1. 有才华本身就可能招嫉妒

稣很喜欢会吹牛逼的有才人,比如听当兵的讲自己当年各种传奇故事,这类事可以重复听三遍以上。

有次和一群朋友认识一名新朋友,聊完,稣觉得此人有才华又有意思,值得交往,但其他人全部反对……理由是:讲话太高调。Hmm……

结论:有才还得有相应的低调隐藏,不然会有一大部分人不兼容。

2. 生活不讲推理,有时候甚至不讲理

举个例子:稣买个东西,有钱人一看就知道是便宜货,所以稣很自觉地说这是炫穷,但偏偏有人以为稣在炫富……

其实推理一下就明白,稣确实是个穷人,一年买买买的次数少之又少,偶尔买点东西,也确实是些普通的小东西。然而稣又错了,喜欢推理属于少数人的爱好,对一件事的评价,大部分人都是靠感性对待,能稍微推理一下都是很难得的。

结论:更有钱可以提高认知水平,从而认识到自己曾经的错误。

3. 众口铄金

这可能是小学学的最酷的一个成语!不举例了……

结论1:众口铄金的一个条件就是认知水平低的人占大部分,他们喜欢按照自己的认知描画事件。

结论2:认知水平高的人可能愿意和低的人交往,但认知水平低的普遍不愿意和高的交往,甚至自发诋毁认知水平高的人。

4. 道德攻击

占据道德制高点,可能是很爽的事情吧,远比真相令人着迷。

大部分热点事件,一定有人占据道德高点写文章批评其它观点,举世皆昏我独醒。

很多事即使是侦探、警察都无法还原事实的全部,但侦探不能错过任何一种可能性,将各种可能列出来,然后分析其可能性多少。要能依循蛛丝马迹分析可能性,但不要轻易得出任何无根据的结论。

结论:人民群众有无耻的权力,但要偷偷地。Hmm……好像不对劲。这么说吧——尿急,实在找不到厕所,找个隐蔽的地方,肯定比在大马路边随地撒尿好!

交友观

利益共同体的关系远比交情靠谱。交情是一种感情,是感情就可能受到嫉妒的影响,光看这点,朋友最好的人选有两类:

  • 不容易嫉妒的人;

  • 可能小嫉妒,但不会因为嫉妒而害人的人。

能力问题,认知水平差太多的人是不太可能聊到一起的,甚至容易在关键时刻掉链子。举个例子:卧底在执行任务,跟一群人混,突然冒出一个大伯认识卧底,大伯认为卧底在当坏人,于是苦口婆心劝他从善,然后卧底被打死。

  • 认知水平差不多;

  • 成长速度也差不多。

有些人在一起很久也无法互相理解,有些人一见面就相见恨晚。

诗盗·风月

《#诗盗#·风月》:天地俱不醒,落得昏沉醉梦。风月苏轼客,枉寻掉举鸿蒙。

注解

改编自霹雳角色“风月主人”的诗号:

天地俱不醒,
落得昏沉醉梦;
鸿蒙率是客,
枉寻寥廓主人。

PS:这词得用闽南语念才会押韵。

人生不过一场梦,对人间一切都要淡定。

诗盗·道梦无神论

《#诗盗#·道梦无神论》:半涉魔流半识神,卧榻闲梦无神论。道心默观量子意,傲视人间笑红尘。

注解

改编自霹雳角色“傲笑红尘”的诗号:

半涉浊流半席清,
倚筝闲吟广陵文。
寒剑默听君子意,
傲视人间笑红尘。

半涉魔流半识神:冰心魔莲,在魔道修炼,但一心向光明。
卧榻闲梦无神论:人间无事,梦中逍遥,比神还快乐,所以没必要当神。
道心默观量子意:逢场作戏,真假莫辨,就像量子叠加态,默默观测就行,不要过早得出结论。
傲视人间笑红尘:神已经可以理解凡人,不过是善嫉阻碍自己,神一笑而过。
神:每个人的心头之师。

《八哥之神》底层逻辑

极小使用特权

神无处不在,无所不知,没有情绪。凡人只能感知附近部分信息,但有研究未知领域的乐趣。

为什么探索太空?因为太空存在!
为什么凝视深渊?因为深渊存在!

使用特权就像偷看答案一样,失去思考的快乐,同时也给人类带来很大压力。

人类的内心善恶共存,过度使用善良压抑邪恶,必将导致邪恶在适当的环境下反扑。丧尽恶知的世界和丧尽良知一样是不真实的悲惨世界。

举个例子:人一旦误以为自己是好人,那么他可能也误以为自己做的都是好事,然而往往是做了坏事还心安理得,甚至得意洋洋。参考“子贡拒金”和“子路受牛”。

成长有一课:戒除自己是个好人的幻觉,先做一个正常人,才知道什么叫好人以及做好人有多难。
管理有一课:不要滥用特权。

世界上最让人欲罢不能的是权力而非性爱。当您有机会定义社会规则和价值体系甚至决定整个社会运行方向的时候,您会感到自己超脱了肉体的躯壳,像光芒一样膨胀散射,充满目之所及的一切空间。您,就是活生生的昊天上帝。但是,当稣能这么做时,却放弃这样做,稣觉得自己超越了昊天上帝。

凰娘一梦

质量好的虚拟和真实差距不大,古有“黄粱一梦”,今有“凰娘一梦”。

举个例子:整蛊节目骗您中了百万大奖,您高兴坏了。假的,但是您确实高兴过。

这一切都是生物化学反应而已,有些刺激是可以替代的,那些中瘾患者最能明白这个道理。

看电影、听音乐,这些都是精神享受,但这些形式比较低端,做梦比较高端,第一视角沉浸式参与,比目前的 VR、AR 啥的还牛逼。

1993 年,史泰龙的《超级战警》里面提到未来人们做爱只能用虚拟方式,史泰龙表示“我去”,而当时稣觉得这太好了!既得到交流和快乐,又不怕脏不怕病,这样难道不好吗?

白云凰这个故事是作者于 2018-03-28 做的一个很真实的梦,在《八哥之神》第一集写作之前,所以并非《八哥之神》正剧,只是被链接到而已,原因就在于这个故事和主题很切合。

无限死循环

宇宙是无限的,好可怕,没有外面……

宇宙可能是有限但无边际的,好可怕,外面是啥……

关于宇宙,人类是不可能想明白的,但可能肯定的是——人都要死。但是如果真是无限的时间,就必然又会重生。就像 pi 的小数部分会包含 618 这个排列无数次。

无限之前,有限的人生就存在各种各种不自由,肉体不自由,精神也有天花板,但追求精神才是更高级的。

稣认为生命中最重要的事情是:情和事业。

诗盗·买腾讯

《#诗盗#·买腾讯》:欲拉腾讯四零四,后请保姆一万一。狗庄带偏变大便,千古做空第一帝。

注解

稣打算把 00700 拉到 404 港元,然后请个月薪 11k 的保姆。
上涨会遇到很大阻力,狗庄经常跑出来做空,更可能怕的是稣认识一个千古做空第一帝,跟着稣买了一手。
不过没事,迟早要到 410 港元,拿好!