2020汽车年审

2020汽车年审

与2019年类似(请猛击此处链接),直接在“深圳交警”公众号里预约申请即可。吐槽一下,这个预约申请的页面估计是直接应用的电脑网页版,又没做网页适应,在手机里操作时,字体细小得简直眼瞎。

费用依然是290元,无需在预约时缴纳,到现场车检时再交即可,支持微信支付。

提交资料:(1)身份证 (2)车辆行驶证 (3)交强险保单。

关于交强险保单,今年因为是电子档,所以没有带纸质单,但是现场似乎也没有查到,后来是找保险把电子档发到手机上,然后在现场打印出来。这样来回耽误点时间,以后为以防万一,还是应该先获取好电子档,然后自己先打印出来随身带着。

检测流程非常舒服:将交通三脚架放副驾驶位置、 缴费、 然后将车钥匙给工作人员,就没有其他操作了,在检测中心的休息室等着检测完即可。

同样,只有一个年审标,没有单独的绿标。年审标不用贴车上,放车上带着就可以。

可能是因为新规(6年以内免检,6年以上10年以下2年检一次)的原因,今年年检的车比去年要少一些,去了基本就检。提早一点去也没有问题,本次我预约了10点钟,实际9点20左右就到了,大约30分钟就检完了,算上交强险耽误的时间,全程也大约只要50分钟。

双十一

双十一

我是很反感“双十一”这种极度鬼畜的营销节日的,今年的双十一提前了N天开始酝酿,照这个节奏,早晚有一天会从“十一”开始。

今天一大早客户上报了一个 bug,不得不定位、重新出版本。忙完了后看一下股市,股价居然也凑热闹打折。晕死!

晚上老婆在网上买的被套也送到了,拆开一看,简直无法直视!质量差不说,卖相和直播完全不一样啊……熬夜看直播、下单,到底图啥?

所谓的玩法也是各种折腾,自以为是。唯一值得庆幸的是,京东的图书有些优惠,折腾了一顿优惠券,再加上 plus 会员的一些优惠,最后买了几本书。其实最近几年我都不再买纸质书,基本就是在 kindle 里直接买电子版,这次主要还是希望收藏、纪念吧,以后都不可能再这样了。

觉得这种节日实在是无聊,是我老了吗?

和平要实力相当才可获取,不存在祥林嫂式和平

和平要实力相当才可获取,不存在祥林嫂式和平

原文链接请点击这里。我是任总正非的粉丝,相当服气!

10月27日,华为“心声社区”刊发创始人任正非9月14-18日访问北京大学、清华大学、中国科学院等学校与部分科学家、学生代表座谈时的发言,题为《向上捅破天,向下扎到根》。全文如下:

习主席在与科学家座谈会讲了,基础教育、基础研究、基础理论、基础工业,也讲了科学家的好奇心驱动。国家不仅要重视科学理论、工程技术的研究,也要重视一些不以应用为目的的纯研究。不然我们怎么能向上捅破天呢?我们这么大的经济总量,允许一部分人是“梵高”应该是可以的。科学史上,有一种生存了八千万年的蛭虫,多少科学家研究了数十年,有些科学家因找不到雄的蛭虫而发大火,实际上他已经走到诺贝尔奖的边上了,最后由比利时科学家发现它是单性繁殖。两性繁殖,两条基因链的结合会产生突变,会有优秀的一代产生,当然,不健康的就流产了,自然淘汰。那么单亲繁殖的基因链若有病变、有问题,遗传下去不就灭绝了吗?她发现蛭虫的基因链会断裂,又会重新整合,这不就是优选吗?所以它们经历八千万年,经历多少灾难,还存活下来了。

我国的经济总量这么大,这么大的一棵树,根不强是不行的,不扎到根,树是不稳的,万一刮台风呢?我们拧开水龙头就出水的短、平、快的经济发展模式是不可持续的。我国的基础工业还是不强的,小小一滴胶,就制约一个国家的故事,我们已经看到了,这是分子工程,是高科技中的高科技。而这几千种胶、研磨剂、特种气体……,都是高科技中的高科技,我国现在还基本达不到,很多种技术一年的需求量只有几千万美元、几百万美元甚至更少,试看泡沫经济下有几个公司肯干这种事。缺一种就会卡了一个国家的脖子。

过河需要船和桥,我们有了很好的科学目标,过河的船夫就是人才,人才来自教育,因此,国家的发展根本在教育。我们振兴中华,不是靠口号,而是要靠“船”和“桥”。

我国每年有七、八百万大学生毕业,加上中专生大约有一千万,聪明人很多,如果允许差别化的教育,就是姹紫嫣红。一二一,齐步走,同质化就缺少活力,就不易产生天才。世界有一个乔布斯就改变了移动互联网。差异化就容易产生尖子,政策要支持少数人因材施教。同时,也要重视农村教育,现在有些种田能手、养猪状元,如果他们过去有机会受到系统教育,也许就能成为精英、天才。早期中国共产党的领袖大多来自农村,毛泽东、粟裕……。我们今天的农村孩子中,怎么知道不会有明天的爱因斯坦呢?深圳很重视中小学教育,全国达到深圳的水平可能有一些困难。但如果国家每年给边远地区一些经费,让穷孩子每天能吃上二两肉,也许比修些大房子强,房子总会旧的,孩子总会成为博士的,而且他们会更忠于祖国。那么二、三十年后,我们的创新能力就大幅度增强,与美国的差距会适当缩小。没有创新是支撑不了我们这么大的经济总量持续发展的。

在科学、技术、工程领域,不同人才选择不同的方向,充分发挥每个人的才智。多学科交叉突破会更有可能,横向融合创新才能形成颠覆性的效果;科学、技术、工程垂直打通才会形成能力,真正落实创新驱动发展的理念。因此合作交流越来越重要,当然,大学还是应偏科学理论,偏重发现;企业偏重技术、工程,偏重发明,结合起来,力量才会更强大。

美国是世界上最强大的科技国家,特别是在吸引全球优秀人才上,有特别独到的优势。我们今天的科研状况很像二战前的美国,二战前50年时间,尽管美国产业已经领先全球,但在科研上充满功利主义,不重视基础研究、基础教育,大量依赖欧洲的灯塔照耀,利用欧洲的基础研究成果,发展短、平、快的产业。二战即将结束时,罗斯福总统的科技顾问范内瓦·布什在“科学:无尽的前沿”中提出要重视不以应用为目的的基础研究,面向长远,逐步摆脱了对欧洲基础科学研究的依赖,从此,美国基础科学研究远远领跑全球,形成若干重大突破。美国经过几十年的实践,上世纪九十年代,美国普林斯顿大学的唐纳德·斯托克斯1997年在“基础科学与技术创新:巴斯德象限”中,强调美国不仅需要纯技术研究,即波尔象限,也要纯应用开发的爱迪生象限,更强调应用驱动的基础科学研究。理论上遥遥领先,又与应用结合,这样既拓展了科学认知,又能创造价值。例如,北大张平文副校长说,据说波音777飞机的风洞吹风是使用全新的空气动力学软件模拟仿真的,使过去需要80次风洞试验减少到现在的7次左右,那么说明美国已把空气动力学的漩涡都变成了经典力学方程。而我们不吹风还不敢造飞机。俄罗斯将核发动机小型化,形成了战略威慑;美国把核弹小型化、战术化、无污染化。和平需要实力相当才可获取,祥林嫂式的和平是不存在的。美国的科技发展史就是一面镜子,我们以此来反思我国的科技发展战略的系统性、科学性。学人之长,长自己之力。

现在美国主张中美科技脱钩,美国是因为开放才走到今天的强大,封闭会重返落后的。清华张钹教授讲,美国越讲脱钩,我们越要高举科学无国界,坚持开放和国际化。科学是对客观规律的认识,真理只有一个,不存在东方科学、西方科学。论文都会公开发表,可以查询的,我们要站在前人的肩膀上,摸到上帝的脚。我们要坚持向一切先进学习,封闭是不会成功的。华为今天遇到的困难,不是依托全球化平台,在战略方向上压上重兵产生突破,而有什么错误。而是我们设计的先进芯片,国内的基础工业还造不出来,我们不可能又做产品,又去制造芯片。就如我们缺粮,不能自己种稻子一样。技术创新它是可以依据理论,独立设计、发明出来的。就如汽车,都是四个轮子,车都不一样。理论是可以在网上看到的,是大江、大洋、大山阻隔不了的。

科学发现、技术创新中最主要的是宽容。领导经常会问,最新进展怎么样了,你们研究成果有什么价值,能创造多少GDP。科学家要么说不出话,要么只好说违心的话。当科学家过多关心应用、关心价值,他的锚就锚在地上了,怎么飞得高?科学的道路是漫长的孤寂的道路,多少代人孜孜不倦的努力,才发现一点点真理。急功近利只有戏剧作家,才会写出科学家既会弹钢琴又会魔术般地出成果。我们要耐得住科学家的寂寞与无奈。就如我司5G Massive MIMO,起初没有人认同,搞了八年终于成功上市,成为核心竞争力。又如,2G与3G之间的算法打通,没有公司莫斯科研究所的小伙子安德烈默默无闻的几年,没有宽容,就没有华为的无线成功。我们如何追溯对这些过程中默默无闻贡献的人,并给予鼓励,包括中途已离职的有功员工,是我们干部部门应该改进的地方。过去几年由于评价不清楚、不准确,给人家打C了,可不可以追溯把他们重新评定为A、B+,他们本来就是A的。我们只有尊重历史,才会英雄辈出。只有承认科学的历史观,才会有科学的发展观。我们今天受到百年未闻的打压及围剿,20万员工的忘我奋斗,正在挽救公司的存亡,如果我们还有可能胜利的一天,我们不要忘了千万奋斗的英雄,各级干部部门要作好记录工作,追溯英雄,是为了产生更多的英雄。英雄是平凡人,不要忘记他们。忘记就意味着背叛。

我们处在一个最好的时代,我们的年青人又如此活跃,我们的国家一定充满希望。同学们快快起来,担负起天下的兴亡。你们今天桃李芬芳,明天是社会的栋梁。你们是早上八、九点钟的太阳,希望寄托在你们身上。

xrdp的小问题

xrdp的小问题

目标系统是 Debian, 采用 xrdp 远程登录窗体界面,总是在显示登录时黑屏。查了很久一直没有结论,后来就干脆用 vnc 算了。

今天在查其他问题时,无意间翻查到文件 “/usr/share/doc/xrdp/README.Debian”, 里面提示需要修改“/etc/X11/Xwrapper.config”文件,将

allowed_users=console

修改为

allowed_users=anybody

重启后,果然可以通过xrdp正常登录了! 只是比较奇怪,为什么 Debian 系统不将默认值修改为 anybody?是没人维护的原因吗? 那为啥又在 readme 文件中单独说明呢?

另外,由于 Raspberry Pi 也是基于 Debian 系统,因此 Pi 中做同样的修改,也可以通过 xrdp 正常登录。

xrdp 读取 “/etc/ssl/private/ssl-cert-snakeoil.key” 进行加密,但是这个文件默认只有 “ssl-cert” 组的成员才可以读取,因此还需要将 xrdp 用户加入该组:

sudo adduser xrdp ssl-cert
奇怪的需求

奇怪的需求

工作中经常会遇到客户提出各种各样的需求,有些需求很合理,有些需求很有难度,有些需求则让人摸不着头脑,比如今天遇到的一个需求。客户的需求看上去似乎不复杂:

呼叫离线(offline)的被叫用户时,先 push 一个通知(notification)给被叫用户,收到响应后再发起呼叫。

我推测这位客户可能在构建某个移动APP。移动APP经常遇到的问题是:希望常驻后台,但是手机的电源管理往往会优化掉应用。这导致该移动APP会强制退出运行,从而无法正常接收消息、更无法接收呼叫。

客户提出的需求不应该是这个场景的解决方案。应当是APP自身向系统申请足够的权限驻留内存,并且APP应该和 SIP 服务器定时 keep-alive 保持激活状态。前者是APP自身的设计问题,后者是SIP注册、激活问题(标准流程)。

当然这只是我的个人推测,不太适合直接反馈给客户,因此向客户简单地提示了几个问题:

(1)离线状态下,怎么保证收到 notification 呢?

(2)既然可以收到 notification, 为什么就不能收到 SIP 的呼叫消息(INVITE)呢?

2020-10-12 更新: 稍微了解了一下相关的内容,大概是 iOS、Android 提供了统一的通知机制。如果收到了 notifications, 系统会从后台启动程序,这样 SIP 终端又可以重新注册并接收呼叫了。 这种模式当然是可以工作的,不过方案确实也很丑陋。另外,由于 GMS 在大陆已经不可描述了, 因此大陆的 Android 手机就更奇葩一些,通过应用程序链之间互相唤醒、互相调用(脏得一批 ……)。

2020-11-28 更新: RFC8599 定义了 SIP PUSH NOTIFICATION 的规范,对于移动终端 APP 类的 wake up 机制进行了定义。还不清楚该规范的应用情况,待进一步了解。

NAME、CNAME 格式

NAME、CNAME 格式

总体而言, 早期 DNS 协议是个比较简单的协议。受限于 UDP 大小和数据量, 基于 UDP 的 DNS 协议限制了包大小,并且采用二进制编码方式力求减少数据量占用。

二进制编码方式相比文本方式(例如HTTP、SIP、SMTP等)最明显的缺点就是不直观,再用一些技巧减少数据量,DNS 协议在定义、实现方面总显得有些弯弯绕绕。

比如 NAME、CNAME 等结构的编码。

本文记录了这些古怪的编码方式,方便以后查找,并帮助后续的开发者不会被代码给绕晕。作为我个人来说,还是尽快忘记这些吧。


方式一:纯压缩编码方式

这种方式应用很普遍,以“0xc0”标记开始,加上一个字节的 offset,进行消息包内的寻址即可。如下图所示:

DNS offset 编码
offset 方式编码

其中, 0x0c 就是偏移量。


方式二:直接编码方式

这种方式比较直接,占用数据量也相对大一些,将域名完整信息存在数据包中。如下图所示:

直接编码
直接编码方式

需要说明的是:并不是直接将所有字符存进去就 OK 了。对于域名数据,以“.”符号分割成几个单元,每个单元数据采用 “length + value” 方式进行编码,最后以0x00结束编码。以上述数据为例:

08 6e 73 69 6e 61 69 6d 67 04 67 73 6c 62 08 73
69 6e 61 65 64 67 65 03 63 6f 6d 00

比如,第一个 0x08,说明后面的“nsinaimg”(即 6e 73 69 6e 61 69 6d 67)长度;然后是 0x04,说明后面的“gslb”(即67 73 6c 62)长度……其他单元类推。


方式三: 混合编码方式

这种方式其实就是综合了上述两种方式。以直接编码方式开始,然后以压缩(偏移)编码方式结尾。如下图所示:

混合编码方式
混合编码方式

对图中的数据码流描述如下:

03 6b 6c 6e 04 67 72 69 64 c0 38

0x03 描述了“kln”(即 6b 6c 6e)的长度,0x04 描述了“grid”(即 67 72 69 64)的长度,而域名的后续部分,通过“c0 38”编码可以知道:需要偏移0x38字节获取。

小升初报名

小升初报名

今天(2020-05-15)上深圳南山教育局网站(这里),给老大报名小升初。毕竟是小孩人生中的一件大事,全程很紧张,生怕某项细节填错了,每项都仔细审核两遍,汗流浃背。

上午九点报名,到下去三点左右基本搞完了…… 中间出现的问题无非就是:网站打不开了、502网关错误了、Nginx 崩溃了等等。

作为一名 IT 行业人士,我非常冷静,并表示理解。自己辛苦点,无非就是隔几分钟去 refresh 一下,并按照惯例祈祷上帝、佛祖、真主、以及各路神仙保佑。

总体上还顺利吧,感谢!

2020-05-18 更新:这两天晚上又上去看看审核结果,看是否需要补充材料。速度非常快,网站也很稳定。这说明前两天实在太多家长急急忙忙地冲进去报名了(包括我自己)。家长们的情绪可以理解,毕竟现在孩子的事是头等大事,心里都想赶紧办妥了,以免夜长梦多。

SSH 配置证书登录

SSH 配置证书登录

SSHd 配置采取了一些安全措施,比如:修改端口、禁止 root 远程登录(这里)、启动 fail2ban 防止恶意登录(这里),等等。目前看这些措施基本满足了日常的维护管理需求。

通常还会采取证书登录方式,禁止密码鉴权登录。不过以往考虑到密码方式更方便,因此没有动力去修改。时间就这么过去了……

最近登录服务器检查日志, 惊讶地发现 fail2ban 每日的日志居然有十几M之多,全是各类奇葩以各种方式尝试登录 SSH。虽然 fail2ban 工作得很好,但是万一出现了 bug 呢? 万一哪个变态就是锲而不舍、经年累月地尝试登录呢?应该下狠手,让老铁们彻底绝望,因此决定禁止密码方式登录,要求采用证书登录。

配置不复杂,涉及客户端生成证书密钥,以及将公钥上传到服务器等。主要参考 Linode 的两篇配置文档(这里这里)。 以下是详细步骤:

生成证书

客户端也是 Linux 系统,因此相当简单:

ssh-keygen -b 4096

该命令在当前用户的 .ssh 目录下创建了两个文件: id_rsa 以及 id_rsa.pub 。

其中 “id_rsa.pub” 是当前用户的公钥文件,将其上传到服务器上,然后添加进 ~/.ssh/authorized_keys 文件中:

cat id_rsa.pub >> ~/.ssh/authorized_keys

添加完成后,服务器上的 id_rsa.pub 文件不用再保留,删除即可。要注意,authorized_keys 文件应该设置为别人不允许访问,确保足够的安全性。例如设置文件权限为600:

chmod 600 authorized_keys

当 SSH 客户端登录时, SSHd 默认读取该用户的 authorized_keys 信息进行证书鉴权。

修改 /etc/ssh/sshd_config 文件

PasswordAuthentication no

然后重启 sshd 即可:

sudo systemctl restart sshd

之后,客户端如果采用密码鉴权方式登录,或者粗暴破解,将被无情拒绝。

如果有多个客户端需要登录服务器,则需要各自生成证书,并将公钥上传到服务器,并添加到 authorized_keys 文件中即可。