善意提醒

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

2024-12-29

上海的失落

昨日小区搞义卖。太太下去扔垃圾,遇见了儿子同学的妈妈,攀谈了几句。他们也在参加义卖,她儿子穿了个青蛙服装,在那边卖公仔。

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

儿子的这个同学是从幼儿园开始就认识的。小学的时候没有分在同一个班,不过一起去学架子鼓的时候,又碰上了。每个星期一起学鼓,小孩和大人都熟络了。因为课程往往需要凑在一起,彼此的作息安排,什么时候出去玩,大致也常有沟通。

今年儿子学校开运动会,要去总校。我和太太早上都没空,拜托这位同学家一起开车送送。去到他们家楼下,一条小白狗首先窜了出来,围着人嗅了一圈,然后跑个不停。儿子同学的父母都是东北人,应该是在上海谋生。不清楚他们家做什么生意,总之爸爸看上去很像「大哥」,脖子上挂条大金链。开了一部小轿车把两个小孩载去,也是普通的家用车品牌,都是普通人。

今天太太得知,他们全家明年就要回东北了。原因没有细问,不是因为小孩上学,就是因为上海生活成本高,或许兼而有之。上海生活成本的确高,但按理说他们家的条件应该不至于撑不下去。不过家家有本难念的经,个中滋味,只有当事人自己心里明白。

不管怎么说吧,上海又要流失一个家庭了。失落的应该还有他的架子鼓老师。作为「可有可无」的艺术类教培行业,近两年遇上经济下行,发展新生源越来越不容易,现在旧的生源也要流失,说不定哪天也会把课停了店关了。一个白痴带着一群蠢材折腾了无数个家庭,居然还有脸问大家难道不喜欢东西降价。

叹息,然后像人一样地活着。

2024-12-28

2024 的读写感言

  图片来自网络

再过几天,就要进入 2025 年了。

今年 9 月份,我就在京东「杂志铺」上预订了 2025 年的《科幻世界译文版》杂志。然而,现在躺在我枕边的那本,还是 2023 年 8 月刊,《蜘蛛触语》只看了第一页。

最近觉得自己的表达能力下降了,无论是语言还是文字。总是绕圈圈,讲话讲不到点子上。语言问题严重一些,因为没有办法打草稿,也没有办法编辑修正。但即便是文字,也很是浪费时间。没法像年轻时那样,一篇文章一蹴而就。不再是只需要一些小修小订,而是谋篇布局都很经常会被推倒重来。挫折感严重,以至于有越写越少的趋势。

虽然近期阅读量的确不如人意,可能超过很多人,但在个人看来的确在退步。这个情况可能会有影响到我。但我也很担心是自己的能力出现了永久性的下降,毕竟上了年纪。人的能力毕竟是会变的,有上升期,也就有下降期。无论是体力还是智力,应该都逃脱不了自然法则。逆水行舟,不进则退。红桃皇后的名言,现在也应验到了我身上。

今年是自我在 Blogger 上开始写 Blog 以来,产量还算不错的一年。拜续写《我的手机史》所赐,即使不算上本篇,也已经创下了历史新高。虽然比不上我自己架设 Drupal 的那些年,一年五六十篇的产量,但能有一半,已经是相当剧烈的「反弹」了,可能堪比十一之前的大 A。

更令人担心的是,现在的年轻人。不读也不写了。
或许是身边统计学,但放眼望去,目力所及之处,概莫能外,或许多少也说明大势所趋。AI 倒是把这些能力接了过去,不知不觉,历史转折点,就在眼前。我倒是毫不介意为人类送个终,不过最后的结果很可能会是《蠢蛋进化论》。

年纪大了,写些东西就像是梦呓,请不要介意。

2024-12-27

严冬来临,保重身体

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

最近的健康状况不是很好,说的是自己,也包括身边的其他人。

自己刚从一场超过两周的重感冒中逐渐恢复过来。
从头到尾都没有发过烧。一开始只是「刀片嗓」。第二天开始咽痛,有痰。接下来鼻子塞了,喷嚏、鼻涕很多。在公司上一天班,就用掉一包纸巾。
然后开始咳嗽,气管部位有绿痰。开始服用抗生素,持续了一周左右。绿痰慢慢转清,不过鼻涕还很多。直到现在也还有痰,并没全好,大概是咽炎的样子。不过在外人看来,至少说话的声音算是正常了。

我可能之前也是被公司同事传染的。四个人密闭在一个小屋子里面,冬天也不方便开窗太大,特别前些天还降温刮大风。有两个人之前就在咳嗽,还有一人本来就有严重的慢性鼻炎。
等到我这两天病情开始好转了,之前咳嗽的二人从前天开始分别发烧,咳嗽加剧。有一位实在扛不住,在家里呆了一天,昨天又回来上班了。大概是不敢请假太多,也是五味杂陈。

儿子在我开始有症状后,过了两天也开始鼻塞,有黄鼻涕。作鼻窦炎治疗,抗生素+洗鼻。刚刚见好,昨天又开始发烧。今天去医院,诊断出是甲型流感。从病程上看,应该是另外一起感染,来源可能是学校吧。现在老师要求退烧后48小时才能回学校,医生建议隔离5天,那么这周就都歇在家里了。

还有别的同事,儿子也是生病,导致早上迟到了。据说是夜里犯湿疹,痒得睡不着,折腾到半夜。孩子生病,父母最是忧心。
我给推荐了抗组织胺 + 糖皮质激素,实际上就是苯海拉明 + 糠酸莫米松。ChatGPT 也是这么说,不过人家有去看医生,听医生的吧。
医生是建议冬天要涂润肤用品。小孩子不肯涂,实际上男人都不爱涂。不过我现在在这方面已经养成了一定的习惯了。

严冬来临,各位更要多注意保重身体。还有一家老小要养活,且行且珍惜。

2024-11-29

不喜欢中国的北方

因为工作的关系,在中国的北方呆过不短的时间。2002 年至 2003 年,我在乌鲁木齐待过大约半年。2007 年至 2010 年间,也多次去北京出差,有几次的时长也能按月计算。
生活上,大部分时间还是爱呆在南方,或者说,东南沿海地区。不知道这是因还是果,不太好说。但主观上我的确可以这样说:我不习惯,或者说,不喜欢中国的北方。

图片来自网络

冷

刚出乌鲁木齐机场,我的第一反应是低头看了一眼我的腿,确认一下我的确有穿裤子。我差点以为我是光着腿出来的。
是的,室内有暖气,18 度以上,甚至可以只穿单衣。只是宅在家里倒是无所谓。
但是,如果你要外出,出门前得把自己包裹得严严实实的。帽子、手套、靴子、围巾……。如果帽子不够大,或许还需要口罩和耳罩。进到室内,又得脱,并没有那么舒服。
而且,如果在户外待的时间长,超过一个小时,就又开始难受了。
即使在夏天,太阳底下挺热,一走到阴影里面,温度就掉下来了。我也不知道这算好事还是坏事,反正不习惯。近些年据说这种情况有变化?那还真是托了圣婴的福了。

干

有的人说南方的湿冷更难受,可能有很多上海人也会同意这个说法。不过我还是觉得北方的干冷更难以接受。
别的不说,光是啪啪作响的静电,就够让我难受的了。一天里面不知道要被电多少次。
还有干裂的嘴唇。我到乌鲁木齐之后,嘴唇裂了快一个月。那段时间完全不敢笑,一笑就淌血。吃饭的表情也很奇怪。
皮肤也很干燥,不勤快涂东西的话,也是简直要裂开的程度。没办法,水分都冻成冰雪躺在地上呢。

脏

据说是因为烧煤供暖的缘故,空气质量普遍不佳。
住在城市里可能一时还不觉得,有一次去到山上陪客户滑雪,远远望去,整个城市就像被扣在一口黑锅里似的。
路边的雪刚落下的时候还挺白,第二天早上就变灰色。如果接下来温度有所回升,就变成脏水四处横流,或者化身为灰黑色的烂泥,你还拿它真没办法。
还有就是沙尘暴。近些年或许好一些了?但我对于在北京开完会后推开门看到之前还干干净净的走廊扶手上堆着至少五毫米厚的黄土,不是灰,真的是土,那种震撼让我永生难忘。

服务

一开始是一同出差的同事跟我讲的,不过随后我也深有同感。而且估计这应该也算是国内共识:要论服务态度和意识,肯定是由南往北越来越差。同样是在餐馆里用餐,在深圳就感觉很好,在上海也还行,到了北京,服务员的鼻孔都是朝天的,爱理不理。
平心而论,北方的消费肯定要便宜一些。北京暂且抛开不谈。南方和北方的菜,在份量上就会有明显差别。但是这也无法抵消主观感受上的差异。
在南方可以住到干净舒适的酒店,到了北方就是脏乱差不讲究。即使表面上富丽堂皇,茶杯摆得整整齐齐,但是就是不会让你觉得很舒服。


说起来吧,这些问题有一些跟「中国」也是没关系的,全球都如此。但有一些想一想也就没那么容易说服自己了。
不管吧,情况就是这么个情况,现实如此,我只有自己去做选择题了。

2024-11-14

编程随想:还会有下一次的

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

昨天,有同事收到测试部门反馈的一个 Bug。

他的第一反应,是下了一个判断:「这个 Bu g可能是因为 XXX 导致的。」
随后他就动手去改了。

作为同一个办公室的同事,我听到了他说的话,出了一身冷汗。
当然,也许是因为我经验比他多一些。不过,或许更因为我比他更为谨慎一些。
我问他:「你能确定这个 Bug 的原因吗?有没有重现过?」
他说不能确定,没有去重现过。
我又问他:「你确定你改了以后这个 Bug 就没有了吗?」
他说也许吧,先改了试试看。

那我觉得这个 Bug 就还会有下一次的。

正确的做事方法,我当然告诉了他,看他听不听了。
然后,我也去跟测试部门打了个招呼,让他们留神一点。
放任不管的话,养老金说不定就没了。

对了,我真的只是在说编程而已。
另外,无论我还是这位同事,婚姻状况都还没 出问题。

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 来正式调整显示分辨率了,不是吗?

1.3. 9090 端口

我们有个服务,默认启动在 9090 端口上。结果等产品要上线到生产环境的时候,运维人员去启动的时候得到了报错,一看才发现 端口被人占了。
问题是我自己之前搭环境测试的时候,没有遇到这种情况。估计因为我的银河麒麟 V10 是「最小化安装」,而客户那边生产环境则没有这样做吧。

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 镜像里面,这部分的工作成果总算是被固化了下来。