Skip to content

2021-2022年总结

2023年2月4日

时间一晃,已经到了2023年2月,在舒舒服服地躺平一个春节之后,还是应该来写一下这两年的总结。

小麦同学

如果以2021年末小麦出生作为分界点,那么这两年就泾渭分明地变成了截然不同的2个部分,一半在准备小麦的到来,一半在应付小麦到来之后的事情。

打算要小孩并不是一个很成熟的决定,我一直没有想好这件事情应该如何决策。经过反复思考,也没有能解答心中的疑惑,即到底为什么要生小孩?我能想到的一个可能的原因是:很多人在成年、毕业、就业、成家以后就不打算再有更多的生活规划了,于是养小孩很自然地成为了下一个生活重心。但于我而言,还有很多想去做的事情,因此并不是太情愿把大量的时间放到小孩身上。正是这一点让我犹豫不决。

但是时间不等人,想不清楚的问题也许在若干年后最终会想清楚,但若干年后再要小孩已经是一件不太好实现的事情了,于是就要吧。在做出这个决定之后,也做了非常长时间的心理建设。一旦有了小孩,不可避免地就要失去自由支配时间,让自己接受这一点并不容易。

好在小麦并没有太为难我们,这两年中几乎所有的过程都很顺利。尤其是小麦出生以后,各个方面的表现都非常棒,叫“天使宝宝”完全不过分。除此之外,一个新家庭成员的到来也确实增添了挺多乐趣。

一边是自由时间被压缩到极限,一边是新生命带来的新体验,日子也就这么过过来了。

记录两件离谱的事情

2023年1月18日

广电号码被永久停机

广电在去年下半年开始运营手机通信业务,开放了192号段的手机号。当时去看了一下,发现一个非常好的生日号码(不能再说更多了,因为实在太好了,再多一句就能猜出来完整的号码),而且刚好归属地是深圳,就立刻申请了。申请之后两三天,SIM卡就邮寄到家了,之后就一直当成备用号码使用,也没什么问题。

上周日(15号)突然发现这个号码被停机了,打了客服电话说是要去营业厅二次实名认证。此时已经不点不耐烦了,但还是去了。在营业厅排队一个多小时,然后进行认证。

整个认证过程索要的信息已经超出运营商必要的范围了:

  • 拍身份证照片
  • 要求查询名下所有手机号,拍查询结果,包括其它运营商的手机号数量
  • 举牌拍照,牌子上是一个承诺书,什么不转卖之类的
  • 如果其它运营商有2张及以上的手机号,还需要提供居住证明之类的(我不需要提供)

然后告知,24小时内会复机。

今天周三(18号),突然想起来应该看看这个号的状态,发现仍然是停机状态。于是再次打客服,然后客服的话直接震惊到我了:

查到周日的确有提交二次实名认证,也查到状态仍然是停机,这说明这个号码无法复机了,只能弃用

我问了一下为什么,客服只说是被关停的,无法复机,再给不出更多信息,并且说在广电投诉也无法解决问题。

于是我在工信部投诉了,后续待更新,但基本上不对结果抱有期望,话费能不能拿回来都是未知数。

写在新冠三年末

2022年12月23日

2020年新冠爆发,没想到居然持续了三年。2022年末,终于要收尾了,按新冠纪年的话,刚好是新冠三年末。

回想起来这三年,几乎每一个生活细节都或明或暗地与新冠扯上了一些关系,总体还是让人非常压抑的,因此也想在这一段即将画上句号的时候尽量以白描的方式做一个记录。

2020年01月 湖北封省

12月时已经对武汉发生的不明原因肺炎有所耳闻,但当时并没有当回事。1月21日下午5点(据高德地图记录)从办公室出发,在东莞接上家人,自驾了一夜,回到湖北老家(农村)。

23日(除夕前一天)上午武汉发出1号通告,宣布武汉封城。随后在一天的时间内湖北各地陆续公告封城,至24日除夕,湖北封省。

至此可以确认情况已经严重到一定程度了,我们开始在家庭群倡议过年不走亲戚。对于上一辈的人来说,过年不走亲戚可以说是快到大逆不道的程度了。最终年轻人攻势强大,他们不得不接受这一安排,但心里仍然是多少有些疙瘩的。

接下来的几天,政策逐步到基层了,门口的路也都堵起来了,大家也自觉不再串门了。至此第一阶段的兵荒马乱算是告一段落。

接下来的日子就是过年,由于没有了串门活动,反而显得很清静:睡到自然醒、吃饭、烤火、磕瓜子和聊天。每天望着窗外的菜地,看着萝卜白菜一棵一棵被挖出来吃掉。

过年的9天假很快就过去了,按计划是要上班的日子了,但是因为封省无法外出,就开始了几个星期的远程办公。老家的桌椅都是木制的,天气也很冷,桌子也偏矮,很难找到一个舒适的办公环境,于是我大部分时间都坐在车里办公。

总体来说,这段日子是一种很奇特的经历,第一次碰到有路不能走的情况,第一次碰到长时间远程办公的情况,自从上中学以后第一次在家里过年待这么长时间。

《棉花帝国》读后感

2022年10月28日

cover

关于非接触IC卡的一些记录

2022年10月8日

今年上半年因为捣鼓门禁的原因,重新研究了一下非接触IC卡,记录一下。

概念和技术特征

一般使用的非接触IC卡全称叫 Mifare S50 1K卡,是否严谨并不重要,总之用这些名字能找到一些确切的资料。

工作频率:13.56MHz,也被称为高频卡。感应距离大概在1cm左右。

存储结构

Mifare S50 1K卡的存储空间总共有1K。分为16个扇区,分别编号为0-15扇区。

扇区内结构

每个扇区的结构如下:

块0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
块1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
块2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
块3: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
块0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
块1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
块2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
块3: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00表示一个字节,使用16进制表示。

可以看到扇区分为4个块,每块有16个字节。

其中块0-2是数据块,块3是控制块。即块3不能用于存储数据。

疫情改变了什么

2022年8月30日

cover

为博客添加Twitter卡片

2022年8月29日

cover

使用脚本改进VSCode Markdown博客编写体验

2022年8月25日

cover

关于代码风格

2022年8月19日

2016年的旧文,之前未发表,时隔6年后整理一下发出来。

如果从我写下第一行代码开始算的话,我写代码的历史大概已经超过20个年头了。这20多年里接触过各种各样的语言,也接触过各种各样的代码风格。当然也见证了很多代码风格引起的撕逼大战。

对于代码风格这种事情上的架,我一般不参与吵的,觉得是一件很无聊的事情。直到今天(2016年)打开微博看到几十条评论,有点蒙圈。

事情的起因是上周我在微博上发了一个条吐槽:

最近面试好多人连12345这五行代码的执行顺序都讲不清楚。就算不知道5我也忍了,好多人连1234这四行代码是什么顺序跑的都搞不清楚。现在前端门槛低到这样的程度了么?(为了把它们排到第12345行上,刻意调整了代码格式,请轻拍。)

附上了一段代码:

javascript
for(var i=0;
		i<3;
		i++){
	setTimeout(function(){
		console.log(i)
	},0)
}
for(var i=0;
		i<3;
		i++){
	setTimeout(function(){
		console.log(i)
	},0)
}

然后今天收到了一堆吐槽:

  • “花括号不换行,烧死”
  • “等号两边不换行,烧死”
  • “逗号右边没加空格,烧死”

在微博上也零碎地做了一些回复,不过还是觉得没有把想说的话说完,于是有了这篇。

2020总结

2021年3月13日

2020年的第一天是如何开始的已经完全没有任何印象了,现在来猜测一下,估计已经是快要开始进入回家过年的兴奋中了。然而这份兴奋还没来得及留下什么印象,就被突如其来的疫情冲散得无影无踪。

总而言之,一个复杂的新年开始来了。

1月23日,年二十九,武汉封城,随后湖北封省。就此开始没有走亲戚的过年,以及随后的居家办公。

于我而言,每天看着疫情数字和武汉的各种神奇操作,焦虑和揪心都少不了。但就个人而言,却并不觉得有很不幸。目睹了身边的亲戚,因为隔离不能重返工作岗位,一边心里无比焦急,一边还要顾及过年的氛围多少需要一些自我安慰。相比之下,我能不受影响地工作,公司继续保障每个月的收入,算幸运了。

这段日子不能说刻骨铭心,却也算得上印象深刻了。有吃有喝,还有点无所事事,能和家人在一起待这么久,也很好。

写代码是一件与确定性为伍的事情

2020年9月19日

我们所处的世界充满了各种各样的不确定性。但有一件事是不存在不确定性的,即写代码。

多年以前,在我刚入行不久的时候,有一位前辈和我说过“出现问题的时候,先怀疑是自己的原因,因为机器是不会出错的,错的永远是人。”这句话我记了很久,也时不时就会翻出来回想一番,也会冒出很多更细的想法:那机器不也是人造的?机器的程序不也是人写的?就一定是自己的原因,不能是别人的原因吗?但反复想了很多年,还是觉得这句话相当有道理,即使是别人的原因,那错的也是人而不是机器。

这其实就是写代码时的确定性,我们写的代码会被怎么运行,是非常确定的。即便它要依赖更多的底层软硬件机制,但仍然是确定的,只是找出这个确定性的过程更加复杂而已。

一个例子

如果你看不懂例子,跳过就好。

背景

项目中需要上传下载文件,使用的是某云服务的存储服务。在下载的部分,为了方便,使用Node.js封装了一个下载方法,返回一个Stream,而这个Stream本质上是由http请求库request.js请求后返回的。最后由koa框架返回这个Stream给浏览器。

请求下载 -> 下载方法 -> request.js请求云服务 -> 返回Stream

代码大致如下:

javascript
router.get('/api/download-file', async (ctx) => {
    ctx.body = Download.getPrivateStream(ctx.query.fileId);
});
router.get('/api/download-file', async (ctx) => {
    ctx.body = Download.getPrivateStream(ctx.query.fileId);
});

然而,同样的代码,在不同的项目下,表现却大不一样,A项目访问图片时是直接在浏览器中显示图片,B项目访问同样的图片却变成了下载。调试工具一查看,发现它们有不一样的HTTP Header返回:

  • A项目Content-Type: image/png
  • B项目Content-Type: application/octet-stream

七月的风 八月的雨 还有九月的碎碎念

2020年9月16日

七八月,又是一年新朋友从校园走入职场的季节,也是又一年职场困惑季的开始。

加班与内卷

在996被全民声讨之后,“奋斗逼”又成为了被声讨的对象。然而很多人声音很大,却未看明白背后的关系。

去过台湾的话,会发现台湾的朋友很敬业,在自己的岗位上怡然自得,初看非常羡慕。回来细想,这种怡然自得背后却是“看不到希望”的另一种表达。人活世上,是需要希望的。于有的人而言,努力工作升职加薪便是希望,于另一些人而言,不再相信努力工作可以升职加薪,于是觉得职场不是一个有希望的地方。

《肖申克的救赎》是IMDB评分排名第一的电影,也是我最喜爱的电影之一。这部影片在我看来就是在讲希望。有希望就有可能,而一旦失去希望,即便你逃离了高墙大院,仍然会被自己困住。

生活有意思的地方就在于,你可以选择相信,也可以选择不相信。有选择便是这个时代最大的幸运。我看到很多年轻朋友心中仍然有梦想、眼里仍然有星光。