咖喱鸡

咖喱鸡

原材料很简单:(1)用超市买的“百梦多”咖喱一盒;(2)鸡肉(也可以是鸡腿肉);(3)洋葱;(4)土豆;以及(5)红萝卜。

鸡肉用葱、姜、料酒腌制大约20分钟。

洋葱切丝(稍大一些);鸡肉、土豆切块;红萝卜切片(薄一点)。

热油(稍多一些)下锅,先炒洋葱;

炒香后下鸡肉块;

鸡肉块变色后下土豆;

土豆炒得略带金黄色后,下红萝卜片翻炒;

然后加入清水(热开水),超过食材即可。一盒咖喱有四小片,此时先放入两小片,然后中小火继续煮20分钟;

然后放入另外两小片咖喱块(再加入一小包椰子粉,味道会更好),转大火,融化后搅拌均匀,装盘结束。

华为 AX3 pro

华为 AX3 pro

去年双十一买的华为 AX3 pro(WS7206)路由器,用了不到一年的时间,今天替换为华硕 TUF GAMING AX3000V2(又称为“小旋风”,以下简称TUF)。前者大概是399元,后者原价799,在京东优惠、又用了京豆后大约是580元。

AX3 pro(以下简称“AX3P”)的使用过程整体上不太令人满意。使用初期就有断流、网络突然停滞、路由器过热、突然重启等问题,升级后有所改善;另外我平时上网无非也就是看新闻、看资讯,实际影响不太大,也就不太在意。

然而从前两个月开始,天气逐渐变热、有时特别酷热(以深圳的天气标准衡量),AX3P 热得发烫,上述问题也变得越来越严重,停滞、断流非常频繁,已经到了无法忽略的地步。在网上搜索了网友提供的一些解决方案,例如底下垫散热块、用小风扇吹、关闭某些特性等,基本没什么作用。

由于疫情原因,开学后小孩都只能在家上网课。两个小孩上网课(一个用腾讯会议、一个用zoom)频繁出现停滞、断流问题,常常会同时中断几秒、十几秒、甚至几十秒不等,一堂课下来中断好几次,严重影响上课的质量。这实在是无法容忍。

我毫无根据地怀疑 AX3P 存在以下问题:

(1)发热量很大。这是所有 WiFi6 路由器都客观存在的问题,毕竟有那么多射频、同时处理能力要求也比旧的路由器要大得多。

(2)机型设计没有考虑好散热,尤其是和 TUF 相比,散热差距极为明显。

(3)过热导致元器件更容易老化,从而进一步恶化路由器的表现。最近几月极为频繁地出现问题。

(4)内存严重不足。这是我作为一名通信软件开发人员根据经验做出的一点推测。从 AX3P 表现的“停滞”问题现象看,似乎是 CPU 由于过热(或者过载)降频降速,但如果仅仅是这样,网速应该只是变慢而不是“停滞”,因此我判断很可能还存在内存不足问题,此时监控模块可能要求停止各项工作任务,清理、回收资源后,再继续工作,期间就导致“停滞”甚至断流,严重情况下就是重启。由于 AX3P 没有提供系统的运行状态,因此无法证实这个推测。相比之下 TUF 提供了比较详细的系统状态,如下图所示,非常清晰:

TUF 运行状态
TUF 运行状态

看了一下华为后来出的 AX6 路由器,采用了几乎一模一样的外观设计,当然尺寸有所放大。我怀疑这不能从根本上解决散热问题。在华为官网查到 AX3P 和 AX6 都只有 256M 内存,我觉得这严重不足。在资源如此受限的情况下,软件设计、实现必然穷工极巧,再加上一些华而不实的功能(比如 NFC 之类的),内存可能捉襟见肘,实在没有必要。即使是家用路由器,也应该以稳定为第一优先级。

另外,在华为官网还罗列了 AX3P 的工作温度,如下图所示:

华为路由器工作温度
华为路由器工作温度

我可以肯定前段时间的温度超过了 40 度,除了天气确实很炎热,AX3P 路由器自身发热的温度也很高。

目前 TUF 工作很稳定,没有出现类似的问题。当然,不能草率地轻言 TUF 表现更好;另外价格也客观存在差距。然而在选择路由器时(尤其是 WiFi6 及以上的路由器),除了常规的频段、无线标准、传输速率、CPU 等参数之外,确实应多考虑散热、内存等以往容易被忽视的信息。

2023-01-07 更新:22年9月份买的 TUF,今天突然不停重启,有线、无线全都接不上去了 …… 想要一个稳定干活的路由器怎么就这么难?

办理身份证

办理身份证

老大的身份证月初过期了,上月由于初二生地会考,不敢随便动证件,就一直拖着。流程其实比较简单,不过由于小儿未满16岁,必须到现场办理,办理苗的居住证时就顺便一起预约了办理老大的身份证。

主要注意以下几点:

(1)预约民政服务中心点以及时间;

(2)提供证件原件:(a)户口本;(b)家长和小童的身份证;以及(c)照片回执。

无需提供证件复印件,但小童必须到现场办理,现场需要录入指纹。

现场无需支付费用,证件邮寄到家后再支付即可。

办理居住证

办理居住证

苗是双非孩子,虽然居住在深圳,但却一直没有办理居住证。最近办理一些手续,需要用到居住证,因此正式着手办理。深圳对港澳籍居民办理居住证的流程非常简单(小童无需到现场),主要是以下几点:

(1)需要在“深圳公安”公众号或者网站(点击此处)预约服务中心和时间;

(2)提供以下证件的原件和复印件:(a)家长身份证;(b)小童回乡证(也就是港澳居民往来大陆通行证);以及(c)小童的香港出生纸。

(3)提供房产证(或者租房证)的复印件,无需原件;

(4)提供照片回执(现场附近一般都有照相馆,也可以到市内任意一家照相馆照相,声明是照居住证照片即可)。

事先可以致电咨询以免政策出现变化,联系电话:84466140。

预约时要选择办理的地点,南山这边有两个民政服务中心点:(1)南山公安局服务点;以及(2)深圳湾服务点。

由于我们家住南油附近,地铁9号线可以直接通到深圳湾服务点所在的“高新南”站,因此预约了这个服务点。路程也很简单:

南油(F1入口)坐9号线(文锦方向)、“高新南”站(B1出口)下、沿着出口上到9栋B座(一层)即是。

办完之后大约10个工作日证件邮寄到家,收件时再支付费用,服务点大厅不收取任何费用。

攀升电脑

攀升电脑

去年年中的时候,考虑到孩子上网课用 iPad 太伤眼睛,就将自己平时用的笔记本给孩子,自己上网搜了一圈,买了一台攀升小电脑,如下图中所示:

本来可以自己攒一台电脑,这也不是什么难事,不过看到攀升这台小电脑,觉得外观不错、金属外壳估计散热也可以,另外觉得有品牌的电脑大概品控会比自己攒的要好一些。

最初一段时间还是不错,然而后续有些问题让人极度不愉快。主要体现在以下几点:

(1)Windows 10 家庭版系统可能是盗版。使用一段时间后,系统竟然提示过期、需要重新激活。联系了客服,发了一个注册码过来重新激活。我不知道攀升和微软是达成什么类型的协议,我第一次遇到 windows 提示这种信息,感觉不太正常。也不知道若干时间后,是不是还要再次激活。

(2)SSD硬盘降速、提示文件损坏等。使用了大约半年时间,很明显就降速了,甚至提示某些文件损坏。不到一年时间,任务管理器里提示磁盘活动时间100%,几乎无法使用。再次联系客服,可以保修换硬盘,但数据无法保证。于是自己想努力一下,用各种设备、软件先备份数据、备份系统,期间拆开电脑检查,SSD 是从来没听说过的”Flash War”品牌,上网查了一下,果然被评价为“垃圾中的垃圾”。

我对客服提示的换硬盘没有信心,鬼知道会换个什么牌子的硬盘,难道过半年我又重新再折腾一遍?于是自己买了张金士顿的 M.2 SSD、复制硬盘。很遗憾,由于错误太多,尝试很多次后都失败了,所幸原盘自带一个 OEM 分区,里面有初始安装的备份,在新盘上重新还原出来系统。数据部分没有损坏,只是系统相当于重置了,花了两天时间重新安装、备份系统。

我相信攀升选择这种野鸡 SSD 的主要原因是图便宜,但这实在得不偿失,严重损害品牌的形象。这台电脑的工作负荷并不高,平时只是我自己的一些开发工作(对硬盘读写几乎没有要求),然后就是上网看新闻、QQ 听点音乐而已。就这点负荷,这块 SSD 只能支撑大半年时间,可见品质有多烂。这样能省几个钱呢? 哪怕换块国产长江存储的 SSD 肯定也比这好得多。

(3)无线信号极差,对,就是极差。由于是金属机身,信号差我是有预期的,但是差成这个鬼样子,绝对超出预期。上图中我不得不另外买了个外置的 EDUP 无线网卡才解决上网问题。这次拆机看了下无线模块,就牵了两条线粘在面板上,这样信号能好才见鬼了。千元电脑的杂牌机(比如占美)都知道外接天线(或者留下外接天线的接口),要不然就不应该采用金属机身。

(4)USB3供电不足。上面提到的无线网卡是USB3接口,经常因为供电不足而断开,后来不得不插到USB2口后才行。这个就很奇葩,以前只在笔记本上遇到过供电不足的问题,台式机居然搞成这样?!不知道是元器件的问题,还是主板设计的问题,对消费者而言就是个闹心的问题。

稍稍有点意外的是采用了英睿达的内存。既然如此,为什么不一套整下来,也采用英睿达的SSD呢? 或者用好点的SSD、用差一点的内存?不知道攀升在供应链或者工业设计方面是怎么考虑的,我觉得整体严重低于预期,甚至不如之前使用了几年、换给孩子上网课的笔记本。

奇怪的 SIP 呼叫流程

奇怪的 SIP 呼叫流程

最近几天帮助泰国的朋友检查一个呼叫业务流程,其中涉及很多细节和业务流程,不过让我觉得特别意外的是他使用的 VoIP 运营商的 SIP 呼叫流程。首次遇到这样的流程,请先参考下图的概要描述:

奇怪的 SIP 呼叫流程
奇怪的 SIP 呼叫流程

这个流程的奇怪之处在于:(1)VoIP 运营商发起呼叫时,INVITE 消息的媒体地址居然是“0.0.0.0”,这很明确告诉被叫:主叫只发送媒体流、甚至根本不处理媒体流;(2)被叫应答后,VoIP 运营商再次发起 reINVITE 流程,此时才真正指示出自己的真实媒体地址(当然也包括最终的媒体编码)。

通常的 SIP 呼叫流程在发起呼叫时就明确指示自己的真实媒体信息,因此在被叫应答后,没有必要再发起 reINVITE 流程。然而这家运营商为什么要放弃传统做法、采用这么奇怪的流程呢?

这家运营商是美国的一家运营商,而且规模很大,其设备供应商也是一家世界级的大软件公司(非常、非常大),因此这个流程肯定不是随意修改的结果,必定有其特殊的目的。仔细揣摩后,我认为它可能是为了节省媒体资源才这么做。

被叫方一般会振铃几秒、十几秒、甚至几十秒后,才可能应答。另外,呼叫量特别大时,统计上只有10%左右的呼叫最终才会应答。这家运营商采用这个流程,只需要在被叫真正应答之后才开始分配媒体资源,考虑到这是一家规模很大的运营商,这种流程确实可以节省很多的媒体资源。

VoIP 网络往往是主叫播放回铃音,因此这是个非常聪明、折中的呼叫流程,确实只有在被叫侧应答之后才处理真实媒体流。然而现实网络组网是非常复杂的,这个聪明到有些投机取巧的方法有固有的缺陷,请参考下图:

183 带媒体信息
被叫放音,183 消息携带 SDP。

被叫侧如果对接了传统的 PSTN 网络,例如 VoIP 网关,很有可能直接返回 183 消息并携带被叫的媒体信息。传统的 PSTN 网络往往是被叫侧播放回铃音,并且也有一些被叫侧放音的业务(例如“彩铃”),此时这家 VoIP 运营商就有问题了。

由于它告诉给被叫的地址是“0.0.0.0”,因此被叫振铃音(或者业务音)就无法传达到主叫侧。VoIP 运营商可以向被叫发送 UPDATE 消息来传递自己的真实媒体信息,但被叫未必会支持 UPDATE 消息,这个是扩展消息,不是所有的 SIP 设备都必须支持。而且 PSTN 网络往往会要求对 18x 消息用 PRACK 流程确认,因此即便支持 UPDATE 消息,这个特殊流程实际也急剧放大了被叫侧振铃阶段流程的复杂度。

这也就是我们的泰国朋友遇到的问题。

解决方式是在 VoIP 运营商与 PSTN 网络之间架设 miniSIPServer:

(1)miniSIPServer 与 VoIP 之间建立完全应答的呼叫通道;

(2)miniSIPServer 与 PSTN 之间维持正常的呼叫流程;

(3)miniSIPServer 判断被叫侧是否自己放回铃音(或者业务音),如果(a)被叫没有放音,则 miniSIPServer 主动给 VoIP 运营商放回铃音(或者呼叫等待音),而如果(b)被叫有放音,miniSIPServer 则直接建立两边的通道,让主叫直接听被叫的放音。

巴菲特致股东的信(2021,中英文版)

巴菲特致股东的信(2021,中英文版)

巴菲特最新的致股东的信,虽然是2022年写的信,但是内容是总结伯克希尔2021年的年度表现,在伯克希尔官网上也是标记为2021,因此本文的标题也跟随标记为2021年的信(以往是按发表时的年份来标记)。

同时,将巴菲特的信从1977-2021年归纳、汇编到一个文档中,有一些排版上的调整,方便阅读、检索、和学习。

单独翻译了2021年度的信,这两年的信越来越短了,大概很多重复的内容都移到年报中去了。另外一个原因可能是老人家年岁也大了,写信确实也耗时耗力。

最后说明:(1)欢迎转载;(2)转载时请标明来源;(3)未经许可,不得用于任何商业应用。

  • 2021年的信,英文原版;[下载]
  • 1977 – 2021年的信,英文汇编;[下载]
  • 2021年的信,中文版。[下载]
  • 如果您发现翻译问题,请 email 至:Z2lsc29ueWlAbXNuLmNvbQ== 非常感谢!
没人比微博更懂搏击俱乐部

没人比微博更懂搏击俱乐部

腾讯最近播放的版本最终结局是坏人被逮捕、主角送进精神病院治疗;据说央视六的版本还是原电影的结尾。我觉得腾讯和原电影的结尾都不错,都留下了很多的思考空间,但让人觉得不可思议的是,微博一群人疯狂攻击腾讯的版本,并以此延伸出各种对社会的冷嘲热讽。

自从微博太君们 diss 北野武不懂日本之后,我就很怀疑这群人的真实水平。但是谁知道呢,也许微博太君们更懂搏击俱乐部? 毕竟现在连J.K.罗琳都不配理解《哈利·波特》了。

然后在观网看到一篇报道(原文链接)里面给出了不同的意见,大概就是原著作者认为中国(实为腾讯)电影的改编比美国版电影更接近原著的表达。

由于观网的报道没有给出原文的链接,因此上网找了找,大概是《好莱坞报道》的一篇文章(原文链接)“‘Fight Club’ Author Chuck Palahniuk Says China’s Censored Ending Is Actually Truer to His Vision”。

这篇英文报道中,有几点是很明确的:

The author later gave an interview to TMZ in which he pointed out that the altered Chinese ending is actually somewhat closer to how his book concluded.

Palahniuk 确实认为腾讯的版本更接近(somewhat)他原著的表达,尽管原因和出发点不同。

“The irony is that the way the Chinese have changed it is they’ve aligned the ending almost exactly with the ending of the book, as opposed to Fincher’s ending, which was the more spectacular visual ending,” he said. “So in a way, the Chinese brought the movie back to the book a little bit.”

Palahniuk 认为美国电影的结尾“spectacular”,比较壮观、场面比较大,而中国(腾讯)的结尾稍稍接近一点(a little bit)他的原著。从作者这个描述看,似乎对两个版本的修改都不满意。

微博太君们最喜欢引用的是 Palahniuk 在推特上的一句话,该报道开篇也有提及:

Have You Seen This Sh*t? This is SUPER wonderful! Everyone gets a happy ending in China!

微博太君们认为原书作者把腾讯版本看作是 Sh*t,篡改了美国版本的内涵和精神。真是这样吗?我们再看看报道中 Palahniuk 自己是怎么说的:

What I find really interesting is that my books are heavily banned throughout the U.S.,

A lot of my overseas publishers have edited the novel so the novel ends the way the movie ends,” he said. “So I’ve been dealing with this kind of revision for like 25 years

可以很明显看出,在 Palahniuk 看来,所有这些改编(包括各地出版社的各种修改)其实都违背他的本意(无论是美国版本,还是腾讯版本),对他而言都是Sh*t,因此不存在美国狗屎就比腾讯狗屎更有内涵,或者腾讯狗屎就比美国狗屎更合理。这点完全可以理解,每位珍视自己作品的作家都不希望别人随意更改自己的作品,就像我这样的码农也不希望别人修改我的代码一样。

单就两坨狗屎而言,美国那坨狗屎的结尾真如微博太君们说的那么发人深省么?把楼炸掉能说明什么,解决问题了么? 腾讯这坨狗屎的结局是若干年后从精神病院治愈出院了,倒是可以想想真的“治愈”了么? 从这个角度看,腾讯这个结局似乎从另一个角度表达了人对社会的无奈和屈从。

当然,最后还是微博太君们说了算,夹有夹规嘛。

Debian (bookworm) + php8.1

Debian (bookworm) + php8.1

更新了一下软件库,发现 php 版本升级到 php8.1。不过糟糕的是,升级程序直接卸载了以前的 php7 版本,然后又没有安装 apache2 新的 php8.1 模块,导致 apache2 没有解析和运行 php 文件。

解决方式也简单,重使能模块即可。注意,该命令要用 sudo 权限运行。

sudo a2enmod php8.1

以前升级 Debian 似乎没有遇到这个问题,默认应该就安装新的模块版本,或者保留原有的版本。不知道是不是这个环境的 Debian 是 sid 版本的原因?

2021年读书列表

2021年读书列表

全年看书不多,尤其是最近业余时间都花在研究投资方面,其他杂书都是囫囵吞枣:

巴菲特之道
巴菲特的信(1977-2000)
段永平投资问答录
费雪论成长股获利

查理·芒格传
朱自清散文选
傅雷家书
冯唐:有本事
人类群星闪耀时
蔡澜旅行食记
银河帝国 – 基地七部曲
银河帝国 – 机器人五部曲

现代操作系统原理与实现