作者归档:白宦成

关于 白宦成

独立开发者, 自由职业者, 写作者

为什么“为富不仁”

逛街时,看到街上有乞讨者,我没有给钱;而路过一位脚有点跛的先生给了一块钱,引发了我的思考。

为什么南来北往的健康人不愿意给钱,而行动不方便的先生却愿意给钱?

从我自己的角度来讲:

  1. 过去的一些事情让我寒了心
  2. 乞讨者手脚健全,并非残疾人士。

不过,换个角度想一想,也可以理解跛脚的先生,对于他来说:

  1. 一块钱并不多,无伤大雅
  2. 一块钱对于我来说,还好,毕竟我还没有沦落到乞讨,但是对于乞讨者来说,可能是一顿饭的钱。
  3. 惺惺相惜,穷者自怜。

KFC 与 黑天鹅事件

一直以来,都觉得 kfc、麦当劳这两家连锁非常的良心,即使是火车站也不涨价。所以我出行时,会优先选择这两家。

不过,想来还是我吃的比较少的缘故。

最近每天早上都会点一份 KFC 的油条豆浆,今天吃了一次火车站的 KFC,明显感受到涨价了。以往 13 元的套餐涨价为 19 元。

原来 KFC 不是不涨价,只是吃的少,感受不到。

对我来说,涨了价的 KFC,就是黑天鹅事件。

出门的教训,必须带纸

上了火车才发现,没有带纸。

要坐数十个小时的火车,可以说是很头痛了。

老爸曾说,纸这个东西借不得,因为别的东西都可以还,唯独纸这个东西因为你借了没办法还,所以就别借。

好在我可以很久不吃不喝。所以安全度过。

2019 年 2 月月度总结

2 月份一直都在春节中度过,所以没有太多的进展。

工作

在工作方面,本月 15 号返回深圳,开始恢复工作。

此外,在 Side Project 方面

  • 春节完成了 TLDR 小程序的制作,并产生了一个衍生的开源项目:tldr-parser

情感相关

没有太大变化,稳固。

身体健康相关

本月开始实行早餐吃燕麦,午餐晚餐正常吃,争取下个月改成早餐、晚餐吃燕麦,午餐正常吃。逐步调整。

其他

本月给自己加了一个新的目标:一年看完 52 部电影

这个月看了四部,分别是反贪风暴系列的 一、二、三,以及到电影院看的《流浪地球》。

本月值得一提的是,写了大量的博客文章,2 月写的博客达到了 67 篇,其中 27 篇是随笔。

收支

20190409131423

年度任务对标

  • 年读书 52 本,2月应读书籍: 4 本。2月实读书籍: 9 本。
    • 得益于春节在老家无法写代码,只能读书,本月大量读书。
    • 《网站创富:从搭建、管理到营利》
    • 《程序员的自我修养》
    • 《你的知识需要管理》
    • 《卓越密码 : 如何成为专家》
    • 《四大那些事 : 四大会计师事务所工作生活实录》
    • 《一个瑜伽行者的自传 : 60周年纪念版全文译本》:这本书太奇葩了,我读不下去,停了。
    • 《MacTalk 跨越边界》
    • 《MacTalk 人生元编程》
    • 《实战 ES2015:深入现代 JavaScript 应用开发》
    • 《写出我心:普通人如何通过写作表达自己》
  • 每年国内旅游 5 次:
    • 本月去了一趟香港。
  • 得到课程学习:
    • 本月原计划开始得到课程的学习,暂未学习。下个月需要调整。

其他

本月公司来了一个新人。。。喊我成哥。。。然后,我今天早上问了一下,94年的。。。继续当全公司的年龄担当。

如何使用 MakeCode 来进行 micro:bit 的串口调试

micro:bit 支持在串口输出一些信息,并在你的调试工具中展示这些数据。

这个时候,你可以直接使用 MakeCode 自带的 WebUSB 的功能来实行这个操作。

如何使用?

想要使用串口调试非常方便,首先,你需要确保你的 micro:bit 可以使用 WebUSB (固件版本为 249,250及以上),然后,在你的 make:code 中使用设备配对的功能,来进行配对,将你的 micro:bit 与编辑器进行配对。

4z0uv

然后,新增一个串口输出字符串的块

添加完成块以后,将代码烧入到你的 micro:bit 中,然后在左侧会看到提示。

bgc1a

我这里只显示了“模拟器”,你链接了设备以后,这里还会显示设备的提醒,点击进去就可以看到控制台的输出了。

27s22

为什么我愤怒了?

一直以来,我的脾气都是很好的,不愿与他人争吵,产生纷争,因为太过麻烦。

但是今天的确失态了。

回顾自己今天的原因,为什么我失态了?

我觉得主要是两点:

  1. 超出我的预期:原本的方案是 Micro:bit + JS 开发,发现有一些硬伤后,我觉得可以考虑上 Rust ,但是同事觉得应该使用 CPP,对底层进行修改。我觉得成本太高了。而且不认为自己能够处理。
  2. 需要花费大量的时间:由于同事负责的并非是硬件,所以他提出方案后,我觉得这是对我的挑战。而且,由于他不是负责这部分业务,所以我们之间的想法会有所差异。

醒悟

别让情绪操纵自己,做正确的事情,而不是符合情绪的事情。

Micro:Bit 是如何将 600K + 的文件烧入 NRF51822 的?

前置信息

Micro:bit 的蓝牙芯片是 NRF51822

根据 Nodric Semiconductor 公司的说明,NRF51822 的 ROM 大小只有 256/128 K,但是当我们从 makecode 编辑器上下载 hex 文件的时候,即使只是输出一个 1 ,你的代码文件也有足足 630K。

2pqbu

在我的 micro:bit 还没有到手的时候,我一直在怀疑,make:code 是使用了什么样的黑科技,才能够实现将 630K 的文件烧录到 256K 的 ROM 里。我甚至怀疑 micro:bit 根本无法烧录这个文件。

micro:bit 到手以后,我试着去烧录,发现虽然文件大,但是的的确确可以烧录进去。

当时我就震惊了!Micro:bit 这是掌握了核心科技啊,能够把 600K + 的文件烧录进 256K 的 ROM 里。

随着研究的深入,以及开始对 hex 文件进行解包以后。我发现,原来 hex 文件中包含了整个项目的所有的文件,我们看到的 ts 文件等都会打包在这个文件中。

这就更加令我震惊了,难道 Micro:bit 已经可以实现在 16K Ram ,256K Rom 的芯片上移植一个 Node.js 的运行环境?那这个公司的黑科技未免也太多了。而且,因为要烧录整个文件进去,600K+的文件再怎么压缩也要占个100~200K,剩下给运行环境的空间并不大。

继续研究,发现我可以在本地重新打包,于是,我尝试重新打包文件

pxt build 

打包完成后,生成了 built 文件夹,里面就是我们的 hex 文件。

9jetw

诶,这里怎么还有一个 asm 文件? asm 不是汇编语言 assembly language 的缩写么?打开一看,的确是汇编语言。

再看一下文件大小,豁然开朗。

ifbry

原来, Makecode 将整个项目文件都打包进入到 package 中,然后,将代码文件转译为汇编语言文件(实际应该是转成二进制可执行文件,这里的 asm 文件应该是用于调试的),写入到 nrf51822 中。

这样,我们实际写入的代码其实只有 24 K,就能够理解为什么 600 多K 的项目能够写入到 nrf51822 了,因为其实 其中的 600 k 都是源码文件,在烧录的时候会被抛弃掉。

如何在本地运行一个 Micro:bit 编辑器

006tKfTcgy1g0lrdvr8bgj31j30u0n4c
micro:bit makecode在线编辑器

一般来说,我们会使用 micro:bit 的 makecode 平台进行内容的编辑,不过,有些时候,我们希望在本地进行编辑,因此, 我们需要把 编辑器运行在本地。

在本地运行编辑器的方法非常的简单,首先,确保你已经安装了 Node.js 环境,然后执行如下命令安装 pxt

npm install pxt

安装完成后,执行如下命令来启动编辑器

mkdir microbit # 创建一个新的目录,方便管理文件
pxt target microbit # 创建 micro:bit 目录
pxt serve # 启动编辑器
Code language: PHP (php)

启动后,会自动打开浏览器,访问编辑器。如果没有启动,你可以点击命令行里的连接,自己打开编辑器。

006tKfTcgy1g0lrw3191bj31pa0r0ajq
连接位置

打开以后,就可以看到在本地运行的 makecode 编辑平台了。

006tKfTcgy1g0lrwonaqpj31h80u012f
makecode 编辑平台