善意提醒

如果您打开本站很慢,布局排版混乱,并且看不到图片,那么可能是因为您还没有掌握用科学的方法上网的本领。

2024-10-15

面对真实的自己

最近除了在整理工作上的文档和笔记,也有整理自己的陈年Blog。

之前其实已经筛选过一遍,放了一些到Blogger上。当时的筛选标准,一是要有些营养,对别人要有点用处。那种纯粹个人流水账式的Blog,就没好意思放上来,但是我其实写了挺多。二则是一些自己觉得肤浅、害臊乃至羞愧的内容,出于个人情感的缘故,也没有往上放。

不过这次,我又陆陆续续放了一些上来。不符合以上两类筛选标准的旧Blog,我基本上一篇篇又补了回来。原因无它,只为了一句话:「面对真实的自己」。

图片来自网络,与本人无关

是的,我以前就是这个德性。不管说过什么样让自己后悔的话,不管干过什么让自己觉得「我不认识这个人」的事情,那就是当时的我,一个真实的我。我当时就是那样想的,那样做的。去掩饰,或者去粉饰,都是没有意义的。如果我连过去的自己,都不敢面对,如何面对未来的自己?

所以,尽管看了会面红耳赤(不是某些人想像的那种),想找个地洞钻下去,我还是会把这些内容慢慢地放上来。整理的过程中,我有点惊讶于自己以前那么「能写」,也拾回了不少已然忘却的东西。这些东西让我更加坚信,自己的记忆并不是被植入的,过去那许多年,还算是没有白活。我是有历史的,有流水的,而不是现在这一个Snapshot而已。

有一些内容,我会在自己不再害怕任何东西了以后,选择把它们公开。一直写到死,这就是我的意思。

2024-10-12

调整了一下Blogger

很怀念自己之前的旧Drupal站点,一直很遗憾Blogger没法像它那样「打扮」。

今天突然想起来,我又不是不会HTML/CSS/Javscript,而且我也有F12,Blogger也让我自定义站点的页面,那我有什么做不到的?说干就干起来。

是你吗?

于是就有了现在这个Header部分。是的,我的大头像又回来了。

字体跟旧版还是有所不同,我当然也能做到改得一模一样,不过现在这个样子我觉得也OK。先不去动了。

顺点也解决了一些问题,比如发现页面里面有一个失效的js。回想了一下,发现是Facebook的Like按钮。没用的花哨玩意儿,何况我Facebook账号早就被杀了。

右侧的布局也调整了一下。联系方式和Profile什么的就去掉了,也是没用的玩意儿。
Blog展示的细节也调整过了。发现有一篇Blog下面居然有「more」,回想起来是编辑器里面那个看似<hr>实则不是的功能在捣鬼。

最后,在顶部放了一个提示。通过自定义域名,我的站点在阿兹卡班也还是勉强能访问的。这件事情,跟我那十几年不变的标语一样,大家懂就懂,不懂也就算了。

2024-10-11

死去的Blog正在攻击着我的记忆

图片来自Stable Diffusion,纯属虚构

因为工作调整的原因,整理一些笔记的时候,无意中翻到了过去的Blog,用Drupal5在自己个人电脑上架设的Blog。

已经过去很多年了。技术都已经落伍,过时了很久,以至于我无法通过源代码编译以外的任何方法再把它架设起来。但是虚拟机还在,站点就还在。Red Hat Linux 7.3跑起来,显示输入http开头的URL,过去的记忆又再次出现在我的面前。

我应该不算是一个「感性」的人吧?看到这些的时候,心中的反应跟「无动于衷」相去也不远。不过,看到右下角那一些「友情链接」,我还是有点心酸。

曾经的友情链接

它们一个都打不开了。


不能排除,其中有一些可能「转世」去了别的地方,甚至不能排除某些人还在关注着我这个Blog。但是,Blog是真真正正都死了。

Blogcn和BlogBus是真没有了,MySpace也算是。新浪博客倒是还在,不过仅限作者本人登录后才能查看。说起来的确是比较「安全」的做法。这年头,捂你嘴可能真的是为你好吧?想不通的人,还埋在夹边沟呢。

比较让我惊讶的是,dzxr连自己的.com域名也不要了。


以现在人的生活方式,还会有人持之以恒且不求功利地写东西吗?肯定还有,但是不多了。
再说,我也的确「遁世」过很久,没法苛责别人。能用来纪念的,也只能是自己继续坚持写下去吧。

直到我去死为止。

2024-10-10

总公司同事前来交流高新申报的笔记

图片来自网络,与本人及所供职公司无关

总公司那边有同事过来交流,关于申报高新技术企业(以下简称「高新」)以及成功后的续期的相关经验。我作为技术负责人旁听,留下了一些笔记。

已经是过去了一段时间的事情了。现在正在整理相关笔记,想想索性记录到Blog里面好了。或许其他人也用得上。不见得是什么权威内容,好歹有一些思路。

听到的要点整理如下:

  • 最重要的就是软件著作权(以下简称「软著」)。每年都要5个。时间上需要平均一些,避免出现年底集中申请的情况。
  • 申报成功后证书有效期上写的是三年。不过随后的软著申请不能停,不然续期会遇到问题。续期的时候这三年的情况都要看。
  • 高新技术企业和「高新技术成果转化」还不一样。
  • 审核部门以前是科技部,现在改成工信部了。
  • 加计扣除」是高新申报成功的好处之一。
  • 收到的高新技术企业信息调查表,一定要填写。
  • 软件13%的税,技术服务6%的税。
  • 软件企业也有税收减免。

不过,这些现在都已经不重要了。

2024-09-29

信创踩坑笔记

图片来自网络

1. 银河麒麟(Kylin V10)

银河麒麟算是好的,毕竟高仿CentOS。看它的文档,似乎V4的时候还是Ubuntu/Debian系的,现在的V10已经转到RedHat/CentOS派系下了。

我们的程序基本都是静态链接,所以就还好。唯一动态链接的是OpenSSL,这个在《编译自己的CentOS7 OpenSSL 1.0.2u动态链接库》这篇Blog中已经介绍过了。

1.1. ldconfig

说起来算个坑的,就是它的SP2版本的ldconfig无法正确读取被patchelf改过SONAME的库,说什么「已被截断」。搜了一下,说是属于ldconfig的Bug。patchelf改过soname的so库,里面的段顺序会变。但规范里面并没写顺序是有保障的,ldconfig不应该自行假设顺序一定是那个样子。

有人说这是上游供应链(glibc)的Bug。的确无论SP3的哪个版本都是好的。但我看SP2和SP3的glibc的版本也没看出来有什么变化,这里先存疑一下吧。
我的应对方案就是SP2下就不改SONAME了,难看就难看一些。

1.2. VMware

接下来这一个实际上应该放在最前面,不过只是因为我用了VMware来安装这些而已。不见得所有人都会遇到。

银河麒麟V10安装在VMware上的时候,显示分辨率默认是800×600。在这种情况下,无法调整显示分辨率,因为「保存」按钮被挡在屏幕外面了。
解决方法是用xrandr,例如:

xrandr -s 1440x900_60

最后一个参数是刷新率(60Hz)。有些Blog上说这里只能用xrandr列出来的选项,但其实未必,只要显示器支持就行。
另外,有些Blog上说这种方式只能临时调整,重启后效果就没了。的确如此,可是现在屏幕大了,你就可以用UI来正式调整显示分辨率了,不是吗?

2. 达梦(DM8)

总的来说,在Windows上安装达梦8的过程要顺畅很多,没遇到什么问题。Linux下就开始有坑。

2.1 ulimit

准备阶段的第一个坑是ulimit的问题,之前已经先写了Blog,这里就只给出链接了《Linux下修改ulimit不能完全生效的问题》。这个坑严格来说不算麒麟也不算达梦的问题,而且不见得所有人都会遇上。

2.2. cdrom

第二个坑是挂载光驱。挂上来之后没有x权限,但不知道怎么回事,用-o exec也挂不出来x权限。最后只好用命令行强制运行解决:

bash DMInstall.bin

接下来的安装倒是没出多大问题。我在Linux上安装达梦的目的只是为了抠出里面的bin、include和drivers目录来,用来制作Python和PHP的运行环境而已。所以后续运维的踩坑经验我就无法提供提供了。

2.3. Python

我们的Python运行环境是用Conda搭的,有2.7和3.5两个版本。按照达梦官方文档的说法(那文档写得不好,链接恕我不放了,自己搜吧),需要安装达梦客户端,然后再编译驱动。照着操作就可以,没什么大坑。

2.3.1. ldconfig

我是从一台安装了达梦客户端的Linux机器上把bin、include、drivers这三个目录抠了出来,设了一下LD_LIBRARY_PATH,然后去Conda环境里面编译驱动。这样做是没问题。

但是当我把目录放/etc/ld.conf.d里面之后,一跑ldconfig,sshd直接挂掉了。数个SSH会话同时被踢,吓了我一大跳,还以为被黑客入侵了。

好在tty登录没有问题,看起来是OpenSSL导致了OpenSSH不能用了。一看达梦的bin目录,libcrypto.so和libssl.so就这样裸躺在里面,服了。最后还是只能用回LD_LIBRARY_PATH方案。

2.3.2. 多线程

接下来我们尝试在Python环境中登录达梦数据库。有一个小坑:达梦的dmPython.connect会开子线程来进行登录。我们的Python环境在Python解释器跑起来后把nproc改成了0,结果就CoreDump了。看过CoreDump里面的CallStack才明白原因。看起来C代码里面的异常捕获,dmPython完全没有做嘛。抛个Python异常也好啊。

2.4. PHP

达梦的文档在这一部分有比较大的问题。
首先,有点语无伦次。无论是yum还是源代码编译,都是指的PHP的安装方式,但达梦的部分应该都是一样的。然而文档中却说得好像不一样。
其次,版本混乱。安装代码中同时有7和5的库,显然是更新文档的时候没有更新完整。
最后,其交代的技术细节存在着问题,至少与事实不符。我按照其中列出的DPI库准备的环境,PHP的PDO_DM库完全加载不起来。

我想办法得到了一份正确的so依赖列表,比达梦文档中给出的要多,多了不少。主要是因为libdmcalc.so和libdmdta.so导致的。我觉得我直接给出我的so库列表并不是一个好主意,毕竟DM8的版本肯定也在不时地变化。更有用的是介绍我的方法。

我的方法也很简单:找个编辑器打开达梦的两个PDO的so库,然后就搜「.so」。ldd中看得见的,这样能搜到。看不见的,那种用dl_open打开的,这样也能搜到。然后顺藤摸瓜就行。貌似DPI的那些so库都还不会用dl_open。
当然,将来达梦如果对so的内容进行混淆或加密,那我就不敢说这样能行了。希望它不会犯这个蠢。

后面就还好了。我一度担心OpenSSL又惹事,但大概是我们的PHP环境比较简单,没惹出什么麻烦。我直接把它们塞进了一个docker镜像里面,这部分的工作成果总算是被固化了下来。

2024-09-14

Linux下修改ulimit不能完全生效的问题

前言:本文只打算作为「技术笔记」来写,对关键的要点进行一下点拨就完事,没想写成教程。或许能让熟手解决麻烦,如果是新手的话,最好是先有相关的基础知识和经验。当然,直接喂给AI,让它嚼过再给你慢慢解释,可能也是一个办法。

这些天还是在折腾信创的事情。安装了银河麒麟V10 SP2的一个默认设置的版本,带了可视化界面,准备用于安装「达梦」。
达梦的安装手册写得有一些问题,缺了一些要点,不过对于有一定经验的人而言,还算能解决。手册中有一个要求,就是要把ulimit里面的open files数量调大。原始的1024,看起来不太够用。

图片来自网络

对Linux特别是CentOS7熟悉的人,应该反应过来了。不要直接改ulimit,应该去改/etc/security/limits.conf:

* soft nofile 65535
* hard nofile 65535

改完之后,重新登录的账号就已经是新的open files上限了。简单重启一下就应该万事OK了。

可是,不,没有那么简单!(莫名其妙的英式中文)


在我看来,改完重启以后,对于非root用户似乎完全没有效果。
root账号好像真的是OK了。但达梦的安装手册提到需要创建专用的dmdba账号用于DBMS的安装。我在可视化界面登录dmdba账号后,打开「终端」窗口,ulimit还是1024。

测试下来,发现:

  • ssh上来的session有效果;
  • su切换过去的账号有效果。

这说明对/etc/security/limits.conf的修改还是有效果的,只是不知道为什么在某些场合下不能生效。
百思不得其解。最后找到这篇Blog,是博客园的。标题起得有点不好找:《systemd service 设置limit,不生效问题》。它引用的原文的URL已经失效了,所以我还是得把要点直接再说一下。简单来说就是:

  1. 要修改用systemctl启动的服务的ulimit,需要修改/etc/systemd/system.conf
  2. 要修改从可视化界面登录的用户的ulimit,需要修改/etc/systemd/user.conf

实际上的情况比这个要复杂一些。第二点不是原文中的描述,是我自己试出来的。我目前也无意去成为一个Linux或银河麒麟方面的专家,所以就暂时不作更多的探索了。

另外,修改了/etc/systemd/system.conf以后,需要先重启systemd:

systemctl daemon-reexec

然后用systemctl启动/重新启动的服务,才能用上新的ulimit设置。
毕竟咱们改的是systemd的配置文件,对吧。

2024-09-13

SSD散热铜片导致的故障

我的HTPC,一开始真的只是打算用来当作HTPC用,所以SSD只有256GB。后来儿子要玩游戏,因此很快就不够用了。于是大约两年前,我换了一条aigo的NVMe M.2 SSD,P2000,1TB的容量。不是什么好东西,不过因为我在公司里面用过同品牌同型号的产品,心中有点数(相比之下,aigo P3000 Pro简直就是巨坑),所以也就跟着买了。

用到现在倒也都没有出什么问题,但散热真的是个问题。之前的256GB SSD因为有马甲,还不觉得散热有问题。但这块P2000是个「裸条」,我一开始复制大文件,比如电影,温度就往上窜。温度高到了一定程度以后,速度就掉下来了,后来还开始掉盘。于是我又去买了一个散热铜片,粘上以后好了很多,不再有散热问题了。

图片来自网络,非同款,非广告

这个散热铜片有单面款和双面款。我的HTPC是一个很小的ITX机箱,而且主板的M.2插槽在背面。如果贴双面,会不会接触到主板背面的针脚或元件?我的确有这个担心。看别人的评测,说还有一定高度,不会碰到。我自己试下来,也的确如此,于是就这样用了下去。快两年以来,都没有什么问题。

以上是前言。


最近,我一直在与这台HTPC的「关机」方面的顽疾作斗争。
一开始是开机以后自动关机,偶尔有之。最近则变成关机关不掉,关机变重启。重启有的时候来得很快,有的时候时间都说不清。比如昨天,我关了机器去上班,下午三点多,家里都没有人的时候,它自己开机了。要真是能远程唤醒也就罢了,可当我正经来设置的时候,又没法用。
于是昨晚我把BIOS设置给LOAD DEFAULT了。以前一直没能狠下这个心,终于世界清净了。

然而,今天早上,我再想开机的时候,发现机器开不起来了。

我绞尽脑汁地回想我到底做了什么导致的这个后果?
不是BIOS设置的问题,因为现在甚至不给我进BIOS的机会。CPU风扇转一小会儿就断电停了。
拔掉内存,可以长期通电,可见不是电源问题。
CPU烧了?过热保护?但从加电到断电的时间非常短,CPU再热也不至于这么一小会儿都撑不住。何况风扇并没有停。不过保险起见,我还是把前不久换的散热器拆了,重新打了硅胶。还是没有效果。

把配件全拆了,就剩主板和电源,裸接,还是点不亮。那么,主板、CPU,还有就是背面的SSD了。
我很不报希望地把SSD卸了,再加电。这次亮了,进BIOS了。


带着难以置信的心情,我反复试了几次,能够确认就是SSD导致的问题。
难道是SSD坏了?就算不认盘,也不至于连BIOS也进不去吧?不过NVMe走的路线不同,或许会导致CPU故障类似的样子。
我把SSD拆下来,放在NVMe M.2移动硬盘盒上,用笔记本读。识别起来毫无困难,里面内容也没问题,看起来SSD没坏。我算是松了一口气。

好吧,唯一可以怀疑的,就是这个散热片了。我再次看了看主板背面的空间,感觉有可能接触到。身边没有趁手又够薄的绝缘片,于是我还是费了半天劲把散热片拆了下来。还好P2000没有缓存芯片,背面没有元件。而且上次换散热器的时候,送了一片用来刮硅胶的薄塑料片……

拆了这块粘在SSD背面的铜散热片以后,果然故障就消失了。虽然总算是解决了,但还得装回去,最后这一趟折腾总共花了我两个半小时,还一手的伤口。迷你,不是没有代价的。


复盘一下,多半是因为热胀冷缩的关系,铜散热片不知道怎么就跟主板背面的针脚或元件接触上了,于是主板直接短路保护了。我估计针脚的可能性大一些。之前我HTPC一直没关,基本上都是热机的状态,所以工况跟昨晚不太一样。

这块散热铜片,我是不打算装回去了。SSD上的芯片都在正面,正面的散热铜片还在,背面只有PCB板而已。而且背面的散热铜片以前跟主板的间隙就很近,即使没短路,我觉得也不会有什么散热效果。
只是,早知道如此,当初还不如直接买单面的铜片,还便宜一些。

2024-09-10

把Google Code Prettify应用至Blogger

图片来自网络

记得以前给自己的Blogger部署过Google Code Prettify,不过后来可能是因为主题被重置过,效果没了。今天把它重新找了回来,日后也会逐渐套用至需要的Blog上。本文就作为相关内容的技术笔记吧。

部署

在Blogger后台中,点「主题背景」,然后进行「自定义」,去「修改HTML」。
在head标签中放置:

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js'/>

然后用下列标签把代码括起来,就可以实现本文中的代码块效果:

<pre class="prettyprint">……</pre>

pre标签中的代码按原始格式存放即可,不过小于号(<)和大于号(>)仍然要进行转义。


以下是一些常用到的option,更多的内容烦请移驾官方Github页面

主题

在引用run_prettify.js的时候,URL后面加一个参数skin即可。例如:

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=desert'/>

目前有五种主题,预览图点这里

不标记为代码

用一组带nocode样式的span标签括起来即可,还可以加上自己的样式。例如

<span class="nocode" style="color: red;">注意</span>

语言指定

在pre标签中指定lang-*样式,例如:

<pre class="prettyprint lang-sh">
if [ ! -d '/myfile' ]
then
    mkdir /myfile
fi
</pre>
<pre class="prettyprint lang-cpp">
class A
{
public:
    int a;
}
</pre>

内置支持的语言有["bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html", "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh", "xhtml", "xml", "xsl"],还有一些可以通过extensions进行支持,参见官网页面。

自动换行

有些代码有可能把屏幕宽度撑得很大。要想自动换行的话,在head标签中添加:

<style>
pre {
  white-space: pre-wrap;
  word-wrap: break-word;
  word-break: break-all;
}
</style>

这里的效果是按字母换行,可能会切断单词。如果要按单词换行,去掉word-break这一行。详细的解释参见我的另一篇Blog《关于表格内文字换行的再研究》。

2024-09-09

编译自己的CentOS7 OpenSSL 1.0.2u动态链接库

因为老板想从「信创」分一杯羹,于是我们现在需要把一个CentOS7上面跑着的系统,移植到「银河麒麟」上去运行。
对于「国产」操作系统了解不多,不敢妄自确定方案。先去下载了银河麒麟的数个版本,主要都是服务器操作系统V10,包括SP2的「CentOS兼容版」,海光版,以及SP3 2303以及2403的海光版本。考虑到海光CPU也是x86架构,理论上应该可以跑在普通的Intel/AMD CPU的机器上,实际测试下来也是如此。

不得不说,我一开始对于情况设想得比现状要严峻一些。实在是没有想到银河麒麟V10对于CentOS抄得如此彻底,怪我太高看了国人的本领。无论是「CentOS兼容版」还是海光版,我们在CentOS7上编译的东西,基本上拿上去就可以直接跑。
当然,从好处想,这样做的确提升了这些「国产」操作系统的兼容性,极大拓展了生态链。一定程度上也算是利国利民的好事情。除了钱以外的事情,我也就不吐槽了。

图片来自网络

之所以说是「基本上」可以直接跑,是因为银河麒麟V10大概是从CentOS8开始「魔改」的,所以上面搭载的OpenSSL是1.1.1版本。有一些是1.1.1c,有一些是1.1.1f,总之不是CentOS7的1.0.2。yum list看了一下,源里面也只有1.1.1的版本可供安装。

我们的程序是在CentOS7上编译出来的,用了so版本的OpenSSL 1.0.2,所以缺了这个东西还没法运行。尽管我们可以把自己的代码改成去链接OpenSSL 1.1.1,或者索性静态链接进去,但还有些第三方厂商提供的库也是基于OpenSSL 1.0.2的,而且不算少。总之这个问题是绕不开的,只能迎头而上去解决它。
另外,我们发现那个「CentOS兼容版」的默认安装会在/lib64下面形成OpenSSL 1.0.2o的库。yum list里面还是没有,说明应该是某个软件包自行装上的。既然那个软件包可以这样做,我们也可以。把自己编译的OpenSSL 1.0.2的库放进系统里面去,然后ldconfig就好。

以上交代了背景,接下来就说说看具体怎么做,以及介绍一下踩过的坑。


编译OpenSSL很简单,从OpenSSL官网上下载1.0.2u的tar.gz包(最后一个版本,1.0.2已经停止维护了),解压以后编译:

wget https://openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz
tar -xvzf openssl-1.0.2u.tar.gz
cd openssl-1.0.2u
./config --prefix=/usr/local/openssl-1.0.2u --openssldir=/usr/local/openssl-1.0.2u shared
make
make install

以上的操作,随处都可以搜到,AI也能提供。不过编译出来的openssl动态链接库,有两个问题:

  1. 拿这两个编译出来的so库去用,会报「no version information available」。事实上ldd的时候就会报这个错。
  2. 编译出来的文件名是libcrypto.so.1.0.0和libssl.so.1.0.0,而不是我想要的libcrypto.so.1.0.2u和libssl.so.1.0.2u。

前者问题大一些,后者往小了说只是自己看着顺不顺眼的问题。一个一个解决吧。

问题1

拿着「no version information available」去搜,得到的信息不太具有参考价值。问AI也一样。
大多数的回答是说错用了别的操作系统编译的OpenSSL库,可能很多人遇到的情况也的确是这个,但显然我们遇到的情况并不是。

唯一找到一篇相关文章,跟着评论找到了知乎上的一篇文章。作者是想自己编译1.0.2u的库,替换掉CentOS7上的1.0.2k的版本。
顺带说一句:以前CentOS7还在维护,即使是1.0.2k的库,CentOS也会补上安全漏洞。现在CentOS7不维护了,或许将有必要这样去做。但1.0.2u也已经是2019年发布的版本,换句话说,OpenSSL 1.0.2在更早的时间就停止维护了。所以原文作者这样去做可能也没有什么意义。

该文作者的思路和实际操作都没有什么问题,尊重他人的劳动成果,我就不原样贴一遍了。需要的朋友可以根据上面的链接自己去看。虽然原文不知道为什么贴了Markdown的内容,在知乎上看不出样式,至少PC Web版上看不出,但内容总归能看懂。
我遇到的坑是:按照该文操作的「1.4」步骤得到的函数名称中有「@库名」的内容,例如:

sk_find@libcrypto.so.10;
sk_set@libcrypto.so.10;
asn1_add_error@libcrypto.so.10;
……

对于Version Script,这是不可接受的写法。我的处理方法是把这里面的「@libcrypto.so.10」直接删掉了。原文假设所有的函数都是「@@」形式的默认导出,而不是「@」一个符号,这个假设是不对的。
这里是我从CentOS7中的OpenSSL 1.0.2k提取出来的Version Script,既然CentOS7和OpenSSL 1.0.2u都已经停止维护,那这个文件应该算是Stable了。可以点此下载

把下载得到的version.map放在解压生成的openssl-1.0.2u目录下。随后,./config的时候换成下面这句:

./config --prefix=/usr/local/openssl-1.0.2 --openssldir=/usr/local/openssl-1.0.2 shared -Wl,--version-script=/root/openssl-1.0.2u/version.map -Wl,-Bsymbolic-functions zlib-dynamic

最重要的参数就是-Wl,--version-script=version.map这句。再编译生成的so库就不会被报「no version information available」了。而且这里似乎必须得写绝对路径。

问题2

直接改文件名是不行的。因为文件里面有SONAME。做符号链接以及ldconfig的时候都会原形毕露。我们需要把文件内部的SONAME也一起改掉才行。

据说在编译前手动调整一些文件也可以解决这个问题。不过我是选择在编译之后用patchelf来解决这个问题的。为此当然首先要安装patchelf:

yum -y install patchelf

然后就开始改文件了:

patchelf --set-soname libssl.so.1.0.2u libssl.so.1.0.0
patchelf --set-soname libcrypto.so.1.0.2u libcrypto.so.1.0.0
mv libssl.so.1.0.0 libssl.so.1.0.2u
mv libcrypto.so.1.0.0 libcrypto.so.1.0.2u
patchelf --replace-needed libcrypto.so.1.0.0 libcrypto.so.1.0.2u libssl.so.1.0.2u

最后一句也是必须的,因为libssl.so会引用libcrypto.so。

2024-07-27

「微软蓝屏事件」与「信创」

图片来自网络,与本文内容无关

「微软蓝屏事件」也已经过去一个多星期了。各方信息差不多到位了,讨论得也相对充分,应该不需要我再来分析或者补充什么了。

不过,这个事件发生之后,我遇到一种有意思的想法,可以与大家分享一下。

蓝屏幕席卷全球的时候,我正在旅游。连日记都只能在手机上简单记录一下要点的我,完美错过了这个事件的波峰。等我有空来了解的时候,整个事件基本已经有了结论,甚至都快平息了。我不知道这算我的幸运还是不幸。

当然,余波还是在的。等我周一回到公司,有同事就向我表示,「信创」的事情,可能要因此而加速。理由是这次中国在此次全球性事件中基本幸存,有赖于「脱钩」,那么接下来这个过程应该会更加地紧锣密鼓。

这自然是他自己的理解,不过也很有可能会是一个「正确」的预测。我们都知道所谓的「上头」其实也只是一届「草台班子」而已(实际上谁不是呢?)。他们的见识不见得比普通人高出多少。所以,按照常识,他们很可能也会这样去想,去思考,也就会真的这样去做。

问题是:中国这次的「幸存」,真的是因为「脱钩」吗?

跟许多人的理解可能不太一样,这次微软所谓的蓝屏事件,实际上跟微软没有什么关系。在我看来,这事就是一个装机量巨大的杀毒软件出了一个Bug。由于在企业用户中装机量巨大,企业服务的客户也被影响到,于是闹出了这么大一个事端。微软还真是可怜,其实是它被别的软件给「搞」了。

可能现在活跃在网上的人都太年轻,也或者互联网真的是没记忆了。但我可是都还记得的。
我曾经写过一篇Blog《突发的c000021a蓝屏故障》。2007年,距今有一些年头,15年有,但还不到20年。在我看来,那次的事件比起这一次,其实还更为严重一些。这次只是内核驱动层面出了问题而已。驱动嘛,开个安全模式就进去了。然后把文件夹改个名,让它正常启动时加载不了,就恢复了。2007年那次可是把系统DLL文件直接给干掉了,相当于把操作系统删掉了一部分,安全模式都没用。单机只有哭。

我并不是太清楚现今的CrowdStrike与当年的Symantec哪个更牛逼。反正我现在不用什么杀毒软件或安全防护软件。「自己的安全自己负责」,很多年前我就学会了自己解决问题。普通人肯定没法照搬我的情况,这也是为什么360这种东西至今也还能大行其道的原因。
那么,说到这里,我的另一个大问题就要抛出来了:你为什么就能确定,360之流不会闹出同样的问题呢?

在我看来,作为一个拿到了ring0权限的软件,要把系统搞蓝屏,那简直是举手之劳。能把你Windows搞蓝屏的内核驱动,我要不了几分钟就能写上一个。像CrowdStrike那样的情况,我们一般称之为「逻辑炸弹」,也不是什么多难的事情。无怪有很多人对此事归结于阴谋论。
我觉得这种逻辑炸弹恐怕还有很多,最好不要被什么歹人给拿到。但对此你无法打包票,所以还得要有自己的能力,以及要有备援才行。我上面说的那句话的扩大版,此时应该强调一下:自己的事情,只有自己来操心才靠谱,靠别人都是靠不住的。

况且,国内的软件企业就很靠谱吗?
这次很多人觉得很不可思议的一点是:CrowdStrike既不好好测试,也不做灰度更新,直接全球推送,非常大胆,非常的不专业。有人发现,CrowdStrike的创始人之一,之前在McAfee也闹出过类似的问题。这一点还真是,我也不知道如何吐槽。
CrowdStrike是草台班子,这一点可能没错。但国内的软件企业,我可是更加不放心。

我曾经有个同事,脑子算是聪明。别人上大学的时候,他当兵去了。复员后也没受过什么系统性的专业训练,「怎么写代码」这件事情,都是自己琢磨的。其实从这一点就能看出来,人的确是挺聪明的。但他路子也挺野。若让他去研究技术问题,我认为或许会是一把好手,但不应该去做工程师。他写出来的代码,Bug不少。
他有一种自创的加密文件格式,其中的加密算法基本上就是异或,关键是密钥是他自己的硬编码。这个东西用在了他当时给公司开发的产品中。后来他离职了,代码就交接给了我。「Bug多」的印象,也就是这个时候留下的。
听别人说他去了某大城市发展。再后来,可能四五年后了,我在研究360的一款产品的时候,发现它们的漏洞库文件的HEX密文看上去很眼熟。于是我用那位同事留下的代码去试了一下,没想到真的一下子就解密成功了。
这……

所以,「脱钩」并不能保证不受影响。相反,闭门造车,低水平造轮子,还加上不用接受市场检验,由政府背书和「保送」,使得出现这种问题的机会,其实是增加了。
要问什么才是真正有效的手段,窃以为,增加多样性,增加市场竞争,算是一个。
所谓「信创」,不管背后的内容是什么,重点应该放在「创」字上。如果还是现在这种搞法,把重点放在「不被卡脖子」上,不可能解决这个问题,反而会恶化。

如果能创造出更多样的生态,有了更多的选择,就不会吊死在一棵树上。最理想的情况,每个软件都是不一样的,就不会因为一个弱点而全球瘫痪。
就像生物世界一样,每个人的DNA都是不一样的,没有什么病毒可以杀死100%的人类,总有人能幸存下来,然后把抗病毒的基因传播下去。

说到底,科学技术范畴的事情,就要遵循科学技术的发展规律,而不要想着去为自己的政权安全服务。出发点如果就「心术不正」,最后是结不出什么好果子的。

2024-07-22

我的手机史(十一)——iPhone SE

2016年,准确地说应该是3月26日,我在清明节回重庆之前,去AppleStore买了一个当年三月份新上市的iPhone SE,把我之前在用的Samsung Galaxy Note 3手机替换了下来。Note3带回去给了我爸去用,老人可能更需要大屏幕一些。而我,其实更喜欢小屏幕的手机。

我的手并不算大。或者说,我的手掌可能比较大,但手指不长。我的手指和手掌的长度比例,不像有些人是3:2或4:3,甚至都不是1:1,而是有点夸张的3:5。这使得我用手指去「够」屏幕远端的触控内容时,单手操作有些费劲。还因为这个原因摔过几次手机。

所以,体验过大屏幕手机之后,这次我又回归到了小手机上。
这部iPhone SE有着5S的尺寸大小,外观几乎一模一样,但内部的系统,甚至略微高过6S,或者说起码是同一个级别的。速度自不必说,除了电池略差,其它都是当时iPhone最高的档次。64GB,总之是够我用了。

这回是本尊无误了

当时的我,觉得买的很值。别人以为我这个是5S,特别是我套了手机壳以后。但我也不在乎,自己用着爽就行。

没过多久,下半年吧,苹果出了iPhone 7。有了防水功能,也因此把耳机插孔砍掉了。我的SE在耳机插头方面变成了绝唱。
再后来,苹果爆出了「电池门」事件。为了平息众怒,答应给所有符合条件的手机免费换原装电池,即使是不符合条件的,也可以打折换电池。
太太当时在用的iPhone 6 Plus,就在苹果商店免费换了电池。刚好岳父说没手机用,于是我去买了一台iPhone 8 Plus,把SE也拿去掏钱换了一次电池,然后就给岳父用了。当时电池峰值容量还有89%,Apple的店员一直劝我考虑考虑。

岳父也是狠人,后来这部小SE,他一直用到去年,才被替换下来,算算大概服役了6年多。电池肯定又不行了,峰值容量剩73%,Home键也不太好使,屏幕边缘也开始发黄,总之是一副行将就木的样子。
不过其它功能说来还算正常。iOS版本一直支持到15,目前还算是能用的机型。现在它被我放在公司当测试机,毕竟5寸屏幕的小手机如今不太好找了。

2024-07-05

Dbgview与小狼毫输入法冲突

今天在调试一段代码的时候,偷懒用了OutputDebugString,于是想打开Dbgview看输出。双击了没反应,试了试dbgview64,还是没反应。有点奇怪,心说是不是旧版本不能用了,看看SysInternals有没有新版本可以下载,点开Chrome,发现Chrome启动也没反应了。心里有点慌,想开任务管理器看看到底怎么回事,结果任务管理器也打不开,这才真的有点发慌了。

一番折腾没有效果,包括找了别的电脑RDP远程桌面过来,也进不了桌面,还把主机卡在登录界面进不去了。还好右下角的重启按钮还是有反应,而且没让我等多久。
重启完以后,第一时间去开任务管理器,然后重来了一遍。之前以为是偶然现象,确实很久没重启了,但发现这次Dbgview还是卡住,还是只能重启。反复折腾了几次,都是如此。上网一搜,还真有人遇到类似问题,一看「对方」——小狼毫。

图片来自网络

这和我的情况对上号了,我也在用这个小狼毫作为输入法。于是我把这个输入法的主进程WeaselServer.exe杀掉以后再去开Dbgview,工作得非常正常。于是案子算是破了。

接下来我好好调查了一番这个事情。除了原Github贴子反馈的事情,我还发现了一些情况:

如果先有WeaselServer.exe,再去启动Dbgview.exe,Dbgview就会卡住,界面出不来。如果事先开着任务管理器,就会看到Dbgview.exe进程出现,并未「无响应」,CPU占用率也不高。此时如果杀掉了WeaselServer.exe,系统会立刻恢复正常。杀掉Dbgview.exe也行,但系统恢复要慢上一点,似乎在等待着什么。

如果是先有Dbgview.exe,再去启动WeaselServer.exe,则会在Dbgview上看到大约100条左右的日志出现。多也没有很多,而且后续并没有更多的日志出现。
诡异而关键的一点来了:此时DbgView也能在界面上通过鼠标正常操作,只是不能碰键盘。如果一动键盘,哪怕仅仅单独碰了一下Ctrl或Shift键,都会导致DbgView无响应。

而只要Dbgview.exe开始卡住,接下来Windows里面就会无法新建进程。在别的已经启动的进程里面,也不能去碰键盘,一碰就卡。包括任务管理器,我前几次被迫重启,就是栽在这里——我实在是太喜欢用快捷键了。

在测试时,有碰到过一次Process Explorer能够「例外」,也就是说操作键盘不会被卡住。但接下来我想要再重现,发现它的「防护结界」失效了。所以目前还算是没找到规律。

这问题看上去是Dbgview.exe和WeaselServer.exe这两个进程在键盘消息的处理方面有所冲突。原Github贴主提到的「过滤掉“.cc:”相关日志」的临时解决方案,并不能解决我遇到的问题。我试过,即使让DebugView停止Capture也不行。不过,只要注意启动顺序,并能忍住不要去用键盘,就还暂时可以让它们俩一起工作,相安无事。

我不知道作者会不会去修正这个问题,以及什么时候修正。有点担心,恐怕他缺乏足够的动力和精力去做这种事情。现在真的没什么好输入法可以用了么?


最后的更新:2024年08月20日,我在Gmail上收到Github的动态。一句「无法重现」随后便把这个issue给关闭了。我其实是很愿意配合的,但是对方大概已经下定了决心,只能遗憾了。

2024-07-04

两个关于「日本人」的小故事

最近,苏州的日本校车刺杀事件作为一个新闻热点,随着胡友平女士的离世,慢慢进入平复期。
相关的讨论已经很多了,我也无意再去发表一些观点和看法。今天只是简单地分享一下两件跟「日本人」有关,对我感触比较深的事情。两个小故事,也不代表和说明什么,随便看看吧。

图片来自Stable Diffusion,纯属虚构,且与本文无关

没来由的恨意

许多年以前,当时我还在厦门工作。公司里有位女同事,我们都叫她小王。
小王是一个比较朴实的人,心直口快,没什么城府。她有一次跟我们聊天,说起她上一份工作时,特别提到同事里面有一位是日本人,跟她关系很要好。

『他后来回国了,临别的时候,还送了我一套茶具呢!』

小王说这话的时候,是颇有一些骄傲自豪的情绪在里面的。
然而,紧接着她又说:

『但是我一直告诉他,我很恨日本人。跟你个人无关,我就是恨日本人。』
『他临走的时候还哭了,问这是为什么。』
『我告诉他说,我也不知道,但是就是恨。我这一辈子都不会喜欢日本人。』

我们也有点纳闷,问她是不是祖上有什么前辈,在二战日军侵华的时候死在日本人手上?她说并没有,而且强调说她真的不知道为什么。
说到这里,她眼里应该有迷惘,但我并没有看到。我看到的,还是骄傲自豪。

再后来,小王肚子大了,辞职回家生孩子去了。我们后来再也没见到她,只是偶尔在看见路边的大肚婆时,不约而同地猛然互相问起「小王生了男孩还是女孩」这档子事来。

你们为什么叫我「日本人」?

大学时候,有一位同学,成都本地人,姓李,住我斜对面寝室。大家平时都叫他「日本人」。叫得顺了口,俨然已经成了他的绰号。最开始这样叫的,大概率是他同寝室的同学,估计从来没有人问过为什么。

有一天中午,我在寝室边吃饭边玩游戏。他寝室的同学估计都不在,自己大概也忘了带钥匙,开不了门,于是跑来我这边「串门」,很随意地逛逛。

我也用他的「日本人」绰号称呼他,跟他打招呼。
然而那一天不知道是不是他过得不太顺心。总之不知道怎么回事,他一下子就爆发了:

『我不知道你们为什么都要叫我「日本人」,我又没得罪你们,你们为什么要这样子对我?』

这话的语气,我可能不一定能准确形容。总之用「抱怨」可能是有点避重就轻了。他的火气很明显,看起来完全不是在调侃或开玩笑。这个情绪一定在他心里被压抑了很久。我心中一「咯噔」,完了,今天要在我这里「爆炸」了?

我心中闪过了无数个念头。
要说他像不像日本人?身高应该有超过一米八,也算仪表堂堂,家世应该也不错。有一次他女朋友跑来学校找他,闯到教室来打听。挺不错的女孩儿,配得上他,后来他还被我们集体起哄。
要说他哪里像日本人?如果鼻子下面留上一撮希特勒小胡子,戴上黑色圆形小眼镜,再配上他那标志性的「狞笑」,倒是真的有点像抗日神剧里面的日本军官。
不过……
表面上我是不动声色,捏鼠标的手也没动过,只是白了他一眼,然后缓缓说道:

『谁让你成天嘴上都是「说的是呢」、「说的是呢」?』

我觉得我肯定是抓住了我那无数个念头中,最好的那一个。这个短语也的确是他的口头禅。我甚至觉得我真的Get到了第一个称他「日本人」的那个人心中的Point。

估计我和他都是「恍然大悟」。他接下来的表情,我只能想到四个字:「回嗔作喜」。

『说的是呢,原来是这个原因啊。』他嬉皮笑脸地坐到我旁边来,『哎,你说这个日语也真是有意思哈。你看,「说的是呢」,这几个字换成中文也是这个意思。你说这日语是不是就是当年学的中国话……』

我附和着他后面的喋喋不休,心想着这次危机应该算是解除了吧。

2024-07-03

从KuaiCheDao搬迁至Nube.sh

之前为了让太太看Netflix,经人介绍在KuaiCheDao上买了一个SJC的VPS。价格不算非常便宜,但也还好,而且「质量」的确不错。带宽和速度都不错,当时说是家宽,用下来感觉跟其它VPS提供商的东西的确有些不一样。自己的VPS,IP地址比较爱惜,后续很多时候都派上了不小的用场,包括AI。

前些天,收到了邮件,说这个VPS即将关闭,在7月后就没法续费了。替代方案是迁移去Nube.sh。
说起Nube.sh,我知道是同一个老板折腾出来的东西,想从VPS变成Cloud,也就是向Vultr之类看齐,貌似费了不少劲。之前他一直没弄好Nube.sh的SJC地域,我也就没去关注。现在要强制迁移KuaiCheDao上的客户,想必是已经搞定了。于是周末我就去尝试把VPS迁移了。

图片来自网络,经过格式转换

先说说这个Nube.sh本身吧。

打开页面,就直接提示我用Google账号登录。我懒得注册,直接允许了,确实比较省事。
控制台比较简单,功能或许尚算够用。地域的选择位于页面上方中部,感觉属于框架的部分。我一开始没看到,疑惑了半天结果还是下错了单。而且一旦下单就立即开始部署,说起来也算是太过「流畅」,但这种既没有「确认」界面,而且页面下方还有用户没明确选择的项目也没给提示的UI设计,结果就是我稀里糊涂$0.02一键就出去了。这个必须吐槽一下。

老板给了$0.2的授信额度,可以用于摸索和测试,包括测试IP和网络的情况。基本上这个额度够用了。
最小的实例一小时才$0.0027,月租不到$2,额外的IP和存储费用还不到$0.3。流量每G只要$0.0009,按原来KuaiCheDao的额度2TB计算相当于$1.8。而且Nube.sh这边算Outgoing不算Incoming,反正比阿里云便宜多了。
当然,现阶段价格有折扣。恢复正常以后,按照KuaiCheDao我原来的VPS规格算下来大约是一个月$5不到。相比起来,费用方面还是会更便宜一些。不过可想而知,老板肯定能更方便地超售。

IPv6用起来貌似没遇到太多问题,目前能正常用。KuaiCheDao那边曾经遇到过问题,而且修好以后还有过反复,后来我索性把IPv6给禁用掉了。
拿到的IPv4地址也看了一下。type也是hosting,不是isp,有些遗憾。虽然VPS肯定是在SJC,但IP是香港的Cogant,不过用ipinfo去看确实是在SJC没错。
我KuaiCheDao的VPS地址印象以前中是isp,现在发现也变hosting了。用起来倒是还没什么感觉,反正太太现在更多的都是看我下载到本地的片子,而不是在线看Netflix了。试了一下ChatGPT可以用,那就还算OK。

测试完成后,用银联卡充了$10。VPS部署完先放了起来,等我KuaiCheDao到期后就把线路切换过去。
只希望这个Nube.sh不要像KuaiCheDao那样被人攻击。

2024-07-01

微软更新弄丢了我的VS2013窗口布局

早上来公司,打开电脑显示屏,发现似乎有些不一样。周五下班时挂着在运行抓Dump的一个程序,不见了。

心中一喜,还以为抓住Dump了。再一看,Visual Studio不对劲。心一沉,去Windows日志里面一看,果然今天早上1点多的时候,机器被重启了。再去看Windows更新日志,原来今天凌晨安装了KB5039299,然后就被微软自动重启了。

微软还挺贼,重启完了以后,还把我的应用程序都给「恢复原状」。包括像Chrome和Visual Studio。可里面的工作状态终究是没法真的恢复,而且把虚拟机也给我关了,简直气死我了。我已经想尽了办法阻止它自动重启,而且也禁止了Windows在登录时重启应用,可这货在这一点上简直比中国AI还蠢,横竖不听,我行我素。

别的我就忍了,大不了当作周末断过电。可微软还干了一件出格的事情:它把我的VS2013的窗口布局给重置掉了。我一共开了6个VS2013,其中5个都被重置过了。我小心翼翼地最后关闭那个看上去没被重置的VS2013窗口,然而没用,新打开的都是那种资源管理器在右边的布局形态。

记得以前也处理过类似的事情,后来发现有捷径。在网上搜了一阵子,总算捡回了记忆。

工具 -> 导入和导出设置
从「工具」菜单中选择「导入和导出设置」,然后选择「导入选定的环境设置」,再接下来选择「否,仅导入新设置,覆盖我的当前设置」。
最近没有备份过,但我对工作环境并没有什么特别的定制,所以重新选Visual C++就好。如果对于习惯的开发环境特别在意,平时还是注意导出并备份吧。保存路径在自己动手的过程中就可以看到。

还是更习惯VC++的传统窗口布局
我还是更习惯传统的资源管理器在左边的那种VC++的窗口布局方式,可能也有一些老筒子跟我是一样的习惯吧?

每个周一都很忙,真希望微软不要再添乱了。

2024-06-25

我的手机史(十)——Samsung Galaxy Note 3

太太一直喜欢看韩剧,带孩子也很辛苦,于是2013年她过生日的时候,我偷偷买了一部当时的三星旗舰Note3,送给了她当生日礼物。

图片来自网络,非本人手机

太太很开心。当时韩剧里面铺天盖地都是前一年发售的Note2,Note3则是刚刚上市的新锐机种。我还特意把铃声设置成了跟太太正在看的韩剧里面主角用的手机一模一样的铃声。然后我就从太太手中接过了4S自己用。

要说这部Note3的确颜值很高。白色皮质背面,自带一杆手写笔,6寸的大屏,还比iPhone要轻。当时的对手iPhone 5S只是一款「小」手机,比4S要长一些而已,还被人吐槽说长宽比例不协调。相比之下,三星的大屏手机,在尺寸上没有对手。

后来这部Note3也来到了我手里。那个时候我的眼睛其实已经出了问题,视力在慢慢减退。大屏可以用更大的字体来显示,比较适合我。4S之前的电池问题,三星由于可以换电池,所以至少给使用者一种安心感——电池不行了还可以换,手机还能用嘛。虽然实际上它比电池先「不行」,但这种心态就像后来电动汽车的里程焦虑,心理因素居多。

这是我和太太用的第一款Android手机,可能也是最后一款。这一切只因为一个事件。

当时太太把手机给她侄子,试图让小孩子在吃饭的时候安静一点。小朋友不知道什么时候自己去下载了一个《Subway Surfers》的山寨版,玩着玩着就被扣了钱。等太太拿回手机,已经被扣了好几个点播,外加一个包月套餐。

图片来自Google Play,与本文所述事件无关

我们也是看到短信,才知道「三星市场」里面还有这种靠移动扣费的山寨游戏。找移动也无果,没有人担责,最后这事也不了了之。也许放在十年后的现在,这件事情可能会有一个不同的结果。不过我们知道,在iPhone上是不会有这种事情的,AppStore压根就不会让它上架。

这之后我一般就只从Google Play上下载App了,也因此接触了APK Downloader。要说Android的好处也还是有不少,可以玩不少盗版游戏,而且还有模拟器。我后来看见过一位同事在Android手机上用模拟器玩《零之轨迹》,馋得我直流口水。

太太用上了iPhone 6 Plus之后,Note3用户变成了我。我用来当作办公手机用过一段时间,因为有根手写笔,开会记笔记还是挺方便的。电量也不错,算是大屏手机的另类优势吧。再后来,我终究还是手小,嫌它太大,把它给了我爸,让它的大屏幕陪老人家发挥余热去了。

2024-06-20

Nginx更新遇到GPG签名变更

图片来自网络

这些天对自己的Debian系统进行apt update的时候,总是遇到报错:

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://nginx.org/packages/mainline/debian buster InRelease: The following signatures were invalid: EXPKEYSIG ABF5BD827BD9BF62 nginx signing key <signing-key@nginx.com>

W: Failed to fetch http://nginx.org/packages/mainline/debian/dists/buster/InRelease The following signatures were invalid: EXPKEYSIG ABF5BD827BD9BF62 nginx signing key <signing-key@nginx.com>
W: Some index files failed to download. They have been ignored, or old ones used instead.

我的Nginx是按照官方指引从来源安装的mainline版本,不是直接用的Debian的apt源内置的Nginx。Debian的Nginx我嫌它版本低了。

当时瞄了一眼,知道是说GPG的签名出了问题。这种问题可大可小,如果是之前的版本被人植入了恶意代码,就像之前的XZ/liblzma后门事件,那么一整个源可能会被撤销。
但我也看到了「EXP」字样,所以似乎只是简单的Key过期而已。并且同期并没有大的信息安全新闻爆出,不像是安全事故。鉴于我当时的时间紧张,并没有当场去处理它,反正Nginx更新得并不是很频繁。

今天花了点时间来仔细看了一下,果然是Nginx的PGP Key在六月14日过期了。Nginx的官方Blog登载了这一则通知,同时也提供了更新的方法。
按照官方的指引,只需要执行下列命令即可:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

如果你是像我一样在root下面操作,并且没有安装sudo,那么去掉sudo就好:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

更新完Key以后,可以用下列命令来验证新Key的过期时间:

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

据Nginx这篇Blog中称,今后将以大概每两年一次的频率对他们的PGP Key进行更新。果然这次得到的新Key的到期时间就是2027-05-24。


2024-06-18

送别同事,还有更多

昨天送别了一位同事,也可以说是我亲手送走的。她的试用期考核,没有能够通过。

决定是周末下的。和别的同事讨论了很长的时间,最后很艰难地下了这个决定。
因为是我面试招进来的,所以心里很是难受。这也等于是打了我的脸。
其实平时的工作还算是过得去,但是评定考试的成绩太差。同时参加培训的学生里面,她的分数比其他人要低一大截。真正用人部门也不是我,其他人要是都觉得不能留,我也没法力排众议。

对方应该也有所心理准备,默然地接受了。不过要真说起来,除了考试成绩,还有一个最重要的因素就是这个岗位只有一个职缺。如果现在凑合将就了,后续就没有了犯错的机会,剩下的只有风险而已。经济时局不好,企业都在降本增效,力争在寒冬之中先活下来,没有那么多机会留给「试错」这种事情。

图片来自Stable Diffusion,纯属虚构

无独有偶,今天听说公司还有两位同事也要被「清退」,大概就在夏天。不算辞退,但是合同到期就不再续签,也算是一种裁员了。

这两位同事都是比较边缘一点的岗位,寒冬来临之际,最先被撤岗,也并不奇怪。不过接下来要是再有进一步的动作,就难免人人自危,风雨飘摇起来。
我这人的个性,很不喜欢看到这些,但也不能不看。公司本来已经快开始盈利了,经历元首这一番折腾,结果去年出现了相当明显的亏损,今年不得不开始裁员。也不知道哪天会轮到我,更不知道以后会怎样。

不管怎么说,至少还有岗位在招人,一口气也算还没有断。
奇怪,我以前对于「铁打的营盘流水的兵」这句话,没有这么反感的。


Proxmox VE更新出了问题

图片来自网络

在公司用Proxmox VE搭了一个「超融合」环境,开了一些VPS给同事用。因为没打算花钱,所以一直用的未订阅方式进行更新。

今天跑apt dist-upgrade的时候,遇到一大串内容:

root@pve:~# apt dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  proxmox-kernel-6.8.4-3-pve-signed
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
  proxmox-ve pve-manager
The following packages have been kept back:
  pve-container
The following packages will be upgraded:
  libpve-cluster-api-perl libpve-cluster-perl libpve-notify-perl libpve-rs-perl
4 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.

我也没有细看,一个回车按下去,报了一些错:

Do you want to continue? [Y/n] y
W: (pve-apt-hook) !! WARNING !!
W: (pve-apt-hook) You are attempting to remove the meta-package 'proxmox-ve'!
W: (pve-apt-hook) 
W: (pve-apt-hook) If you really want to permanently remove 'proxmox-ve' from your system, run the following command
W: (pve-apt-hook)    touch '/please-remove-proxmox-ve'
W: (pve-apt-hook) run apt purge proxmox-ve to remove the meta-package
W: (pve-apt-hook) and repeat your apt invocation.
W: (pve-apt-hook) 
W: (pve-apt-hook) If you are unsure why 'proxmox-ve' would be removed, please verify
W: (pve-apt-hook)    - your APT repository settings
W: (pve-apt-hook)    - that you are using 'apt full-upgrade' to upgrade your system
E: Sub-process /usr/share/proxmox-ve/pve-apt-hook returned an error code (1)
E: Failure running script /usr/share/proxmox-ve/pve-apt-hook

我这个笨蛋还是没有细想,按照提示操作了,随后重启了这台宿主机。
然后上面的VPS就启动不起来了。既没有自动启动,也无法打开Web控制台进行操作。netstat一看,HTTP端口监听没有了。

心里慌了,连忙上网搜,才发现好多人都在叫唤。只不过我是其中心比较大,真的操作了的那个白痴。更多人是在报错那步停下来了。

这下怎么办呢?翻了下日志,看到proxmox-ve和pve-manager被remove了。我想把proxmox-ve给装回来,又有报错,看来不行:

root@pve:~# apt install proxmox-ve
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstablebr distribution that some required packages have not yet been created or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
  pve-container : Depends: proxmox-backup-client (>= 3.2.5-1) but 3.2.3-1 is to be installed
E: Unable to correct problems, you have held broken packages.

还好,讨论帖里面有人给出了抢救措施:

apt install pve-manager=8.2.3

操作以后,Web控制台出现了。我进去启动了VPS,用起来没有什么问题。
先这样吧,接下来就是等官方消息了。
我们应该都是没花钱的用户,也许官方不一定会有修正?

-- 更新于2024.06.19:

官方已经为未订阅apt源修正了这个问题

2024-06-11

我的手机史(九)——iPhone 4S

就在我和太太开始用Nokia C7不到一年。2011年秋天,Apple发布了iPhone 4S。一时间,人们趋之若鹜,太太的一个大外甥嘴里,成天像念经一样「4S」、「4S」,我听了都疑心他着了魔。

2012年夏天,太太苦于妊娠反应带来的孕吐,日子过得很艰难。一台iPhone 4S,也许能让她舒服一点。于是她率先迈入了iPhone时代。

网络图片,非本人手机

当时的网络条件还不是很好。虽然4S可以使用3G蜂窝流量,但流量的价格很贵。我去搞了一台3G便携式WIFI路由器,让她在上班的时候可以用网络。但是即使是这样,还是没办法看视频之类,实际上速度也不太允许,只能用用QQ。当然,游戏是丰富多了。我买过限免的《无尽之剑》,还有3元的《瘟疫公司》,只可惜现在都没得玩了。

图片来自网络

图片来自网络

iPhone 4S最令我们印象深刻的,应该是拍照。照片的效果很好,而且拍起来很方便。儿子从出身到周岁的这段时间,太太用这部4S给他拍了很多照片。画质肯定比我的C7要好上不少。更早的时候,我们拍照主要还是靠DC,手机并不是主力。要抓拍一些生活上的瞬间,手机肯定更翻遍。小孩子的一些特别的表情,那些搞笑和有趣的瞬间,转瞬即逝。儿子的这段时期,错过了便不会再有,多亏了这部4S。

后来,这部4S到了我的手里。那个时候已经用了一年半了。电池衰竭,加上Apple的刻意而为(电池门),这部4S的电量已经很难支撑正常的使用了。如果长时间外出,我就一定得带上充电宝。即便如此,它还是经常给我上演「看着有50%的电量,一开相机立马关机」的好戏,让人防不胜防。

接下来,脆皮数据线开始「开花」了。再接下来,Home键也开始出现问题,按起来不太利索了。这部手机在我手上差不多又坚持了一年。总共两年半,它算是到了极限了。

它最后的归宿,是去了太太侄子那边。当时他还念小学,时不时玩一玩,也没有多大兴趣,就这样扔在了家里。
或许直到现在,它还能用。谁知道呢?它只是不好用了,但并没坏掉。

2024-06-04

我的手机史(八)——Nokia C7

细说起来,我的确用过不少的Nokia手机。别的手机并不是没用过,但相对之下,还是喜欢Nokia的稳定。如果9@9++还有,我也愿意用,所以,我确实并不是一个爱折腾的人。

2010年底,Nokia推出了这款C7的机型——准确地说应该是C7-00,但C7只有这一个型号,所以我就简单写了。2011年初,当时的女朋友,现在的太太,去把手机换成了C7,也怂恿我一起换了。于是,我也一脚跨入了触摸屏智能机时代。

网络图片,非本人手机

是的,触摸屏,而且是电容屏。

我之前的Moto A6288,也可以算触摸屏,不过那是电阻屏。原装的那根触控笔,还被我搞断过一次。当时我还在乌鲁木齐,去友好百盛柜台上花钱再配过一根。柜员吐槽我说你这是扔坏的吧?还真的是。
C7上的这块触摸屏,则跟现在的手机已经没多少区别了。玻璃材质,多点触控,可以玩Angry Birds、水果忍者,还可以玩Spiderman。

Nokia C7整机的手感挺好,圆润合手。金属包边。虽然也不厚,但我也不再嫌手机薄了。触摸屏需要手指在屏幕上划来划去,如果手机厚了,手指不够长,大拇指就够不到左侧。电话的部分有实体按键,Home键也是。当年打电话还是「刚需」。时代果然是不一样了。

我对这台手机主要的印象,是720P影片的播放能力。当时流量还很贵,网络也不够快,还是GRPS,还好有WIFI。我从网上下载了一些电视剧,存到手机上,太太和我都在看。有一次我们去苏州玩,在去观前街的公交车上,太太掏出来看韩剧解闷,还有年纪比较大的乘客向我们打听手机的型号。可见当时虽然iPhone和Android都已经推出了一段时间,但智能手机确实尚未普及。

C7搭载的Symbian^3系统,在我看来的确是比之前的Symbian S60迈了一大步,真正进入了流行的阵营。只可惜有点晚,而且稳定性仍嫌不足。市场并未给它太多的时间,2011年出了Anna,后来再出了Belle,改进蛮多,几乎可以说是新一代操作系统。我很期待下一代,然而下一代没有了,Nokia宣布转向了Windows Phone。再后来Windows Phone也没有了,紧接着Nokia也没有了。我们和他们都不幸地押错了方向,时代大潮的涨落,没有人能彻底看清。

我现在仍然保留着那些SIS安装包。愤怒的小鸟全系列都有,Galaxy on Fire我觉得比后来的iPhone上同名游戏还好玩,另外墨迹天气也是从Symbian^3一直用到现在。当然它自己也算是争气,存活到现在。QQ自不必说,MSN当年也还用得挺多,FuckWall不太方便,不过当年Weibo还算能用。可惜Nokia没有了,也就没有了后续的指望,再后来,就是iPhone和Android的天下了。

图片来自网络

我的那台C7,后来也是顶部电源键附近出了问题,外壳有损坏,屏幕也破了一块。给岳父用过一段之后,实在不堪用,最后就扔掉了。它很可能是被我摔坏的,因为我喜欢插着有线耳机看影片,有时候线被一拌就容易摔出去。

太太的C7,保存得比较好。多年以后,我翻找出来,居然还能开机进系统。不过用了一段时间之后会弹框,总之不是太对劲了,刷了机还是如此。我在闲鱼上把它出售了,带上了原配的耳机,卖了29元,还被人打趣吐槽说是「卖耳机送手机」。不过那耳机的接口很独特,我别的手机或PC都用不了,留着也没用。

我的想法很简单:这部手机可能在我这里已经没什么用了,或许在别人手里还能派点用场,那就送给有缘人吧。

2024-06-01

我的手机史(七)——Nokia 5310

来到上海以后,我原来用的Nokia 3100的电源开关键慢慢地开始磨损了,越来越小,最后甚至穿了个洞。磨损的速度到了后期是越来越快,让我有些诧异,大概就是「寿命」到了吧。

有点可惜的是,尽管Nokia 3100可以换壳,包括更换键盘,但开关键并不在可以更换的范畴。也许Nokia没想到过这个地方也会磨损?键帽磨坏了以后,尽管我仍然可以靠直接按动里面的微动开关来让它工作,但毕竟很不方便,而且在顶部留下了一个大洞。

说到「不方便」,现在人们可能要问一句哪里不方便?电源开关键为什么你要经常去按?
说起来有两个原因,第一个当然是习惯问题。我习惯拿手机看时间的时候用食指去按一下机身顶部的电源按钮来点亮屏幕。如果是按别的键,系统就会开始准备解锁,时间显示就会被解锁提示所取代,于是需要再按一下取消才能看到时间。这算是我的一个不良习惯吧。
第二个,其实也是习惯问题。当时我不习惯用线充,而是座充电池。这种事情,诸位现在用着没法换电池的手机太久,可能已经淡忘了。我每次换电池的时候,要开关机就很不方便,电池不太行之后就更不方便了。

那个时候我住在大木桥路,身为重庆人,是具备直接步行到徐家汇去的能力的。我周末没事,就会去那边的BestBuy逛逛,后来不少IT产品也都是那边买的。接下来的这部蓝色Nokia 5310,我也是在这家BestBuy里面购得。只可惜后来BestBuy退出中国了,这家店面当时据说是它们买下产权的,后来也给盘出去了。
随后3100我就拿给父母去发挥余热了,反正他们不太在意这些。

网络图片,非本人手机

Nokia 5310很好地接替了3100的工作。直板机,S40系统,彩屏,有一定的网络能力,GPRS和蓝牙都有,也能跑JAVA,甚至可以用来上QQ。不过我有N70用来上QQ,也用不到5310。另外有一个很大的提升,就是有了摄像头,拍照或拍视频都算是OK,这样我N70一般可以不带出去了。

在5310上,我留下了我外婆来上海期间唯一的一张照片。

我外婆和母亲
照片上这两位,目前都已经病逝了,所以也不存在什么侵权不侵权了。对我而言,对她们的纪念,也就是对5310的纪念。

我对5310唯一的怨念,就是它有点太薄了。对我的手而言,3350算是刚好,9@9++和3100已经算是有点小了。5310的长度够,但是厚薄实在是有点让我犯难。好几次从我手上滑出去,因为我没能捉住它。
也因此,它的外表上有一些伤痕。包括它的摄像头,因为在背部,而且有点凸出,所以有一些磨损。相比起来,N70有护套,就不会有这个问题。

我给5310换过一次电池。原装电池就是Nokia手机很稳定的三天左右的待机时间,当然也是因为非智能机的缘故,把玩得少。后来电池不行了以后,我又买过一块飞毛腿电池,也是在BestBuy买的,电量比原装电池要强。

这台手机我一直没有遇到什么问题。现在它是不是还躺在我的某个容器内?我已经不记得了。如果它还在,我也不会太惊讶。跟Nokia N70类似,它也很稳。Nokia一直都很稳,直到iPhone和Android出现。

2024-05-30

陪伴我10年的笔记本去世了

新的开始

2014年03月09日,我在京东上下单买了一台东芝笔记本,L40-AT25W1。到今天为止,还能查得到订单记录,也还能看到商品页面。

图片来自网络,非本人原机

当时我的旧笔记本还能用:Dell的15寸笔记本,2GB内存,AMD TL-66的双核CPU,安装Windows XP操作系统,购于2007年,也是已经用了差不多7年了。虽然还能再战,但毕竟硬件配置落后了,装不了Win7,更跑不动x64。于是我去买下了这台Toshiba,把Dell笔记本给了我爸去用。

这次没有再选择Dell,因为我之前买过的那些Dell笔记本,或多或少都遇到了一些小故障。尤其是2010年帮别人买的一台,后来音箱直接没声音,修也没修好,给我的感觉很不好。于是我觉得是时候作出一些改变了。

这台Toshiba,CPU是i5-4200U,主频不高。我当时刚当爹,远离了DIY界一段时间,对电脑硬件没什么概念。只知道i3/i5/i7的区别,对于Intel的代数,以及U的含义,都没有什么了解。我以为是四核,后来才知道是双核四线程。内存是4GB DDR3,不过有双卡槽。后来没过多久(不到两年)我就去买了两根8GB的内存把它升级到了顶格的16GB。硬盘是500GB的机械硬盘,5400RPM,在那个SSD才刚刚开始冒头的年代,也算正常。而且还有GT740M的独显,我这是第一次用独显笔记本。关键是价格才3999,我相当满意,这比我前两部笔记本便宜多了。

看到这个价格,太太让我买「好一些」的。不过我觉得这些硬件规格已经足够我用了,特别是内存还有升级的潜力。16GB内存在我看来绝对足够了,事实上它也是让我用了10年的重要原因。

东西拿到手以后,太太也觉得挺漂亮。全白的外壳,虽然是塑料的,但颜值很不错。厚薄现在看来算是适度,和我上一部Dell笔记本比起来,那就是薄太多了。电池不算好,但因为轻薄,移动性还不错。上一台笔记本被当作台式机用了太长时间,我都不记得拿着走的感觉了。

升级延寿

这台Toshiba笔记本,后来经历了多次硬件升级:

  1. 2016年初,去淘宝上买了两根8GB的DDR3笔记本内存条,一口气把内存升满了。
  2. 2018年夏天,从淘宝上买了键盘,把被儿子抠坏的键盘换掉了。
  3. 2019年初,在京东上买了一块2TB的西数蓝盘。当时不清楚SMR/CMR的区别,现在看来,SMR无疑了。于是……
  4. 2020年的「618」,在京东上买了一块三星的1TB SATA SSD,860 QVO,把这块SMR硬盘换掉了,它实在是太慢了。
  5. 2021年底,更换了电池,同时显示屏上开始出现亮线。年初就开始有亮线,到了年底「固定」了下来。后来亮线越来越多……
  6. 2022年中,新电池鼓包,撑裂了C/D壳的大部分连接件。拆除电池后继续使用,只能插电使用了。国产劣质电池真的坑人。

直到前不久……

骤然离世

2024年03月19日,我照例,把Toshiba笔记本带到公司,接上电源线之后开机。按了一次,自动关机,再按,还是自动关机。

之前也出现过类似的情况。当时我发现开机后按F2进入BIOS,就可以从「开机-自动关机」的循环中跳脱出来。但这次不行,即使我把硬盘拔掉也没用。

算一下时间,才发现它已经陪了我10年了。我赶紧去京东上又下单了一台华硕笔记本,a豆14

Toshiba还剩余一些零配件可用,算是遗产吧:

  • 1TB的SATA SSD:我把它拆下来,装到了盐城的HTPC上。
  • 8GB DDR3套条:拆下来,问过医生,也说用不上。闲鱼卖东西骗子多,就先存起来吧。

生平轶事

说起来,这台Toshiba,其实「年龄」比我儿子略小。刚来到我家,就被我儿子一巴掌拍在屏幕上,从此一直有一个「ㄑ」形的裂痕。还好不影响使用。儿子当时才一岁多,现在再问,完全不记得。

后来没多久,键盘的X键也被儿子抠坏了,键帽装不上去了。不过还能用,将就用了好几年,回车键也出了问题,终于忍不下去,一起换掉了。

2021年出差去长沙的时候,还用过一次。当时同事带的笔记本更烂,而我的笔记本虽然电池只能用20分钟,好歹派了一些用场。要是甲方当时知道这台笔记本有7年的寿命的话……

到了2021年后期的时候,所有的塑料件都老化了,变脆断掉。最后连B/C壳之间的橡胶垫脚都断掉了。我一直买不到全套的A/B/C/D壳,知道无力回天了。

由于还算是有独显,我能用这台笔记本玩一些游戏。比如《Starbound》、《No Man's Sky》和《Fallout3》,虽然帧数不高,发热也不小,还算能玩。

光驱无疑早就不太行了。不过2020年初因为Covid-19疫情居家办公的时候,它还帮邻居读过一张光盘。

最后我算了一下,包括后期升级的花销,这台Toshiba我总共花了5200左右。

2024-05-21

两件小事

有两个事件,导致了这篇Blog。

  1. 事件1:在公交车上,有一个饮料瓶倒在地上,滚来滚去,没有任何人理睬。
  2. 事件2:一篇Blog里,一个年轻人提到被妈妈要求做家务是对她自由的侵犯。

事实上,这两个事件几乎是同时发生的。当时我正在公交车上,坐在座位上,翻看手机上订阅的Blog。看到有一个年轻人,在Blog上欢呼她终于「自由」了,不会再被妈妈要求打扫自己的房间了。与此同时,「咣当」一声,我听到了一个饮料瓶倒在地上的声音。

这个饮料瓶,或许是某个乘客扔的,或许是上一趟行程时某个乘客遗留在公交车上的,或许扔它的乘客已经下车了,或许那个乘客在下车时把它忘记在了公交车上。总之,有两件事情是确定无疑的:

  1. 它是空的,喝完了,喝光了。
  2. 它正在公交车车厢内的地板上,随着车辆行驶的加速、减速、拐弯、刹车,而不时地滚来滚去。

我知道它是空的,首先是听声音,看滚动的速度。其次,还因为我后来把它捡起来了。

捡起这个饮料瓶时,我叹了一口气。这个饮料瓶走了一段非常复杂的路线,最后来到了我这里。在看到它之前,我耳朵一直听着它不时滚动的声音,大概有30分钟之久。没有人对它采取过什么措施,无论男女老少,无论站客或坐客。我捡起它的时候,向车厢内众人扫了一眼,并没有什么人跟我眼神有接触。

有那么一刹那,我在考虑要不要站起来,问一下「这个是哪位的?」

当时我没有这样做,后来我有点后悔。错过了那一刻,我就知道我已经永远地失去了这个机会。我手中捏着它,一直到下车,然后把它放进了路边的一个垃圾箱内。万幸,纵使经历过垃圾分类运动,上海街头仍然还保留着一些垃圾箱。

我在想,不知道那位年轻人,到底是觉得自己的房间其实很干净,还是觉得虽然脏乱差,但母亲大人你管不着?

我无意去揣测真实情况,我只是有点纳闷,也有点好奇。另外,隐隐约约,我觉得我今天遇到的这两件事情,彼此之间并不是完全没关系。

我希望,大家只是懒而已。

2024-02-29

叫网约车叫到了奔驰

上周一晚上下班,上海有点飞毛毛雨,于是叫了网约车回家。
很快就来了一个车,我一看车型,吓了一跳——「奔驰GLC」。
我也就是选的最普通的「经济型」而已,看到车型我还特地再去确认了一下,没有勾选错类型。等车来了后定睛一看,还真是一辆黑色的奔驰SUV。

图片来自网络,非本文中原车

上车以后,我小心翼翼地问司机大哥为什么用这个车来跑网约车。司机是个斯斯文文的中年人,轻轻叹了口气,说开酒店因为疫情而破产了。

我一开始还有点拎不清,说用这车跑网约车成本有点高啊。司机大哥又补充说,他开网约车并不是出来赚钱,是因为呆在家里抑郁下去怕出事,出来开车转转散心。网约车只是顺便。今天刚注册的账号,我这一单是他生涯第五单。
这个时候我才回过神来,也想明白了。话说人能从抑郁状态下走出来也是挺不容易。大哥车开得很稳,开口欲望不低,感觉他挺需要跟人聊聊,于是后来我就陪着他聊了 一路。

司机大哥说他来上海十几年了,以前在高青路恒大水产市场那边做批发生意,赚了一笔钱。恒大水产市场关闭了以后,他也不愿意跟着其它摊位搬迁,于是就自己出来开酒店,又赚了一笔。后来2019年他一口气在上海各处开了五家酒店,最大的有九百平方米,还包括一座六百平方米的「会所」。用他自己的话来说「步子迈太大了」,再后来发生的事情大家应该都知道了……

我一开始以为他说的「酒店」是「Hotel」,后来想想可能是「Restaurant」。毕竟他一开始做水产批发,接着去做下游的餐饮行业就很顺理成章。
大哥说他的店面现在都盘出去了,只剩黄埔区一处因为地块在拆迁而没人接手,还砸在手里。他现在欠了银行一笔钱,我估计起码上百万。所幸没有欠亲朋好友的钱,我觉得这算不幸中的万幸。遇到银行那边来催债,他就实话实说我现在已经破产了无法偿还。银行那边今年开始也不怎么落井下石了,催得也不紧。
作为曾经的老板,他说他现在挺羡慕打工人。他还特别说明他羡慕的是企业里的打工人,不是公务员那种。我估计他自由惯了受不了那种生活。他说现在遇到朋友提议「去哪儿玩」都不敢搭话,心知没钱回请。也有曾经朋友躲着他走,落难的时候挺能见人心的。

听他的口气,他还在「等一个机会」想要翻身。说实话,在眼下这个时局,我对他这个心态还真不是很看好。不过好在他起码走出来了第一步,还算积极。希望他能如愿吧。
我下车的时候,他请我「帮忙给个好评」。我说这个自然,心中在想,上次听到这种请求好像Uber还在中国……