xulihang's blog 2025-09-11T15:09:34+00:00 xulihanghai@163.com 创作的目的性 2025-09-11T12:17:50+00:00 xulihang blog.xulihang.me/the-purpose-of-content-creation 我最近在思考,我写的博客、发的视频是不是目的性太差了。

比如别人的小红书、B站账号,只专注于一个方面的内容,期望有良好的互动、浏览量,并能通过接广告、卖东西等方式赚钱。而我则是想写点啥就写点啥。

写作更多的对我日常思考的一种记录,一种精神寄托,能达到什么营利性的目的并不是我的主要目的。

就像卡夫卡一样,他写了很多小说,但不以发表小说成为名作家为目的。

]]>
虚假宣传 2025-09-11T12:08:50+00:00 xulihang blog.xulihang.me/false-advertising 这两年接触了些开源项目,我觉得很多项目都涉及虚假宣传。

比如叫做React Native Vision Camera的相机插件,号称使用了C++模块,用了OpenGL等绘制技术,相机性能很好。实际使用则各种bug,性能也不佳。

比如叫做jscanify的浏览器端文档边界检测库,声称某个版本极大地改善了各种背景下文档的检测。我以为用了什么黑科技,看了下代码,其实只是用了Canny边缘检测,这个改动效果不一定比之前的二值化方法好。

但他们也不一定是故意的,比如文档检测,可能作者的确觉得效果好,因为他本身对这些算法也不太懂,只是调用OpenCV的接口而已。

]]>
转岗 2025-09-09T12:00:50+00:00 xulihang blog.xulihang.me/job-transfer 今年3月,领导联系我觉得另一个产品的岗位缺人,觉得我是最适合的人选。

我考虑再三,还是同意转岗了。在市场部工作的4年,也遇到瓶颈了,做产品尝试下不一样的工作内容。

在公司内部转岗,和到新的公司从事新的岗位,过渡相对容易点。

转岗后,我还是需要处理之前的一些工作内容,或者说保留之前的工作职责,比如写博客。之前部门的会议也还是可以先参加,等以后不需要了就不参加了。

因为我们是小公司,常常需要自己去寻找任务和定义问题,一人承担多项任务,所以我有相对自由和广泛的职责。在转岗初期,我也是花了很久时间确定自己的职责,怎么更好地融入团队,接手前人的工作。

从事产品工作,会更多一些协调沟通与决策的工作,比较适合我这样希望从宏观角度把握产品的人。同时,也有很多文字工作,比如写文档,适合我发挥之前所学的技能。

产品是给整个团队确定方向的,让大家知道什么是正确的方向,自己可以做什么,可以说也是一种帮助人的工作,和我助人的性格也相匹配。但确定该做什么,的确是比较熬人的任务,需要有一定的洞察力。不过我们毕竟是团队,不必给自己太大压力。

]]>
小爱音箱 2025-09-09T11:50:50+00:00 xulihang blog.xulihang.me/mi-speaker 小爱音箱是小米推出的智能音箱,参考了国外亚马逊的Echo研发。它是一个智能语音助手,跟它说话,就能查询各种信息、收听各种音频。它也可以作为智能家居网关使用。

我一开始是想买它,主要是需要它作为智能家居的网关,用来串联空气净化器、触摸开关触发器以根据空气的PM2.5浓度自动打开厨房的吸油烟机。后来我发现不用那么麻烦,直接装上止逆阀,厨房就不跑油烟了。

不过小爱音箱的确很有用,直接跟它说话就行,不用看手机屏幕,码字,是很自然的一种交互模式。

最近每天早上都用它来收听广播。

]]>
情感中的博弈 2025-09-07T12:23:50+00:00 xulihang blog.xulihang.me/the-game-in-relationships 最近看《哈利波特》,在《混血王子》中,有个情节是罗恩和另一个女生在一起后,赫敏为了气罗恩,选择另一个喜欢自己的男生作为自己的约会对象。后来罗恩中毒了,在昏迷时说了赫敏的名字,两人的关系也修复了。

人的感情真的很奇妙,明明互相喜欢,非要整点事情,希望在关系中自己是更被在意的。这就形成了情感中的博弈。

男人喜欢女人,常常希望自己是主动的一方,对方被动接受。如果女人反过来主动,男人会觉得没有面子。有的女人假装被动,引导男人主动,这样实际上是女人在关系中占据主导,但男人也不会觉得没有意思。这样博弈的味道就没有那么明显。

情感中的博弈,是伴随相识到关系结束这一整个过程的。两个人的这种矛盾,成为了两人间故事的推动剂。不过我更喜欢两个人一起解决外部矛盾来深化关系。

]]>
吃酒 2025-08-31T11:50:50+00:00 xulihang blog.xulihang.me/banquets-through-one-s-life-in-China 上周看吴启华演的叫《美味情缘》的港剧,提到了中国人一生会吃那几顿饭。我这里写下老家浙江海宁的一些习俗。

参与酒席,我们这一般叫吃酒。会有很多的酒可以吃,贯穿人的一生:满月酒、周岁酒、过年酒、状元酒、结婚酒、上梁酒、豆腐饭。

其中豆腐饭会比较特别,是人死后摆的酒,会分几周摆。而其它酒一般都是一次连着摆好。

]]>
抓大放小 2025-08-31T11:32:50+00:00 xulihang blog.xulihang.me/deal-breaker 《News Radio》第二季中有这么一段一个同事问另一个同事要不要结婚的对话:

Jimmy : Melanie, I’m single, you’re single, what do you say we get married?

Melanie Sanders : Well, I’m glad you finally decided on the direct approach.

Jimmy : Well, I’m a businessman at heart.

Melanie Sanders : As am I. What’s your offer?

Jimmy : Single rich male seeks matrimony.

Melanie Sanders : Primary residence?

Jimmy : Westchester County.

Melanie Sanders : Would you be open to considering a secondary residence in Manhattan?

Jimmy : Central Park West?

Melanie Sanders : South.

Jimmy : Done. Time spent together?

Melanie Sanders : 8 hours, 5 days a week.

Jimmy : 7 hours, 12 hours weekends.

Melanie Sanders : 55 hours aggregate, specifics to be determined later.

Jimmy : I’m amenable to that.

Jimmy : Children?

Melanie Sanders : One.

Jimmy : Three.

Melanie Sanders : Two.

Jimmy : Done. But, one of them has to be a male.

Melanie Sanders : I’ll see what I can do. Vacation?

Jimmy : December, Hawaii.

Melanie Sanders : June, the Vineyard.

Jimmy : June, fine, but Hawaii.

Melanie Sanders : Nope, the Vineyard.

Jimmy : Is that a deal breaker for you?

Melanie Sanders : I’m afraid so.

Jimmy : Me too. Well, we gave it a shot.

Melanie Sanders : I’m sure you’ll find a better match.

Jimmy : Thanks for the time.

两个人讨论了居住地、相处时间、生几个孩子等问题,问到在哪里度假时发现没有谈拢,就直接不再继续对话了。

或许相亲就是这样,需要抓大放小,直接沟通,看看我们关注的主要问题是不是没有问题,而一些小的可以改正的细节,就不用太过关注。

我们做其他事情也是这样,如果主要的目标能实现了,一些聊胜于无的细节可以不那么上心。

]]>
i人的自我修养 2025-08-30T08:24:50+00:00 xulihang blog.xulihang.me/an-introvert-prepares 模仿《演员的自我修养》这一书名,我打算写篇博客,讲下i人日常工作生活可能遇到的问题,以更好地应对这些问题。

做为一个内向的人,我们更倾向于独处,沉浸于自己的世界,回避与人有过多的接触。这种性格并没有不好,只是社会更认可一个外向的人,我们在学校还是工作单位,都被迫适应这样一个大环境,这一过程便会遇到不少问题。下面我会对这些问题做一个罗列。

保持自我

回想小学的时候,中午午休,大多数同学都和别的班的人打闹去了,而我则选择在教室里安静地看书。因为老师赞同读课外书,所以我可以很安然地做自己。

而离开学校,要赚钱,我们需要和各种人打交道,以前这种模式就不一定可以维持了。这个时候,我们不能妄自菲薄。在工作的时候可以适当改变自己,但仍然维持原来的本心,可以说是一种进化。

我们要意识到我们本质是内向的,不要完全学习外向者的行为。但也不是像个鸵鸟,把头埋起来躲在自己的世界里。

找到自己的生态位

如果不喜欢当面沟通,可以使用书面表达。

在团队中,寻找适合自己的位置。内向者往往善于把握细节,可以做写作、翻译和程序员这样的工作。

如果需要做决定,有一定的领导任务,也不要怕,做好准备一般都可以完成任务。就是决策过程可能免不了与人争论,这个时候要专注于问题本质,而不是与人拉扯。

找到适合自己的人

感情也是i人要面对的一个问题。虽然i人喜欢独处,但仍然会渴望关注。看到别人的亲密联系也会感到羡慕。

我这里还是鼓励多和喜欢的人交流。我们能逐渐了解自己适合什么样的人。

在亲密关系中,有人对自己太好,我们可能会想逃离。有人对自己冷淡,我们会比他还要冷。但如果有人正确地自然地通过找我们帮忙这样的事情来建立联系,还是可以建立较好的关系的,就是这对双方都有一定的要求。

我个人就是喜欢别人找自己帮忙,如果做错事了,对方能直白地骂我一顿,非常舒坦,不会有内耗。

但也不能整天期待他人提要求,会过度关注对方,这样我们提的第一点保持自我就不能做到了。

代表人物

卢娜·洛夫古德,《哈利波特》中的虚构人物。

]]>
如何编写软件的技术文档 2025-08-08T02:28:50+00:00 xulihang blog.xulihang.me/how-to-write-technical-documentation-for-software 软件的技术文档会详细记录软件的使用方式,为我们使用软件提供指导。

根据用法,软件可以分成很多类:

  • 命令行软件
  • 图形界面软件
  • 软件类库/SDK

不同软件的文档的内容基本都是接近的,主要是各种指南,介绍如何操作软件,只是图形界面的软件截图会多一点。然后,软件类库或者SDK,会提供API文档。

下面我们会介绍下如何编写软件的技术文档。

工具选择

传统的文档形式有CHM、PDF、Word文档等等,使用FrameMaker、Microsoft Office等软件制作。

现在一般都是在线网页,有一系列的站点生成器,比如Sphinx、mkDocs、Docusaurus、Jekyll、GitBook等等,使用markdown、restructuredText等标记语言编写。这些工具通常还支持生成DITA、LaTex等文件。

针对API文档,也有专门的工具,可以直接根据程序源码生成文档,比如Sphinx、JSDoc、JavaDoc、Swagger等。

更多工具介绍可以见这篇文章:技术传播领域的工具

内容安排

文档站点主要由目录树和内容页面构成。内容可以根据软件特点进行分类,比如软件介绍、使用指南、API文档、常见问题、变更记录等等。

API文档的内容安排上,除了单独的接口页面,还要有能显示所有接口列表的页面,方便浏览。

格式规范

技术文档通常需要遵循一定的规范。这里以JavaScript语言的API文档举例。

首先,API可以进行一个分类,比如按命名空间、类、接口、定义、事件、枚举进行划分。

然后不同类别的内容,也会有编写的规范。

命名空间主要列出它包含哪些静态方法、对象、类。

类主要包含它的属性、方法和继承关系。TypeScript中的接口(interface)和类相近。

事件主要描述它包含哪些参数,要怎么绑定事件。

示例文档

命名空间

## Namespace XLH.OCR

### Methods

* getOCREngines()
* on()

### Properties

* error
* version

### Members

* Enum_OutputFormat
* Enum_SegmentationMode

### Classes

* BaseOCR
* OCRSpaceOCR
* GoogleOCR

## Class GoogleOCR

Extends `BaseOCR`

## Constructor

Creates a new Google OCR object.

Syntax:

\```ts
new GoogleOCR()
\```


## Methods

### detect()

Detect text in a image.

Syntax:

\```ts
detect(source:HTMLCanvasElement|HTMLImageElement):OCRResult
\```

Parameters:

source: the image to detect. It can be a canvas element or an image element.

## Properties

### apiKey

The API key for Google Cloud OCR API.

接口

## OCRResult

Syntax:

\```ts
interface OCRResult{
  textLines:TextLineResult[];
}
\```

事件

## OCRProgressEvent

Triggered when the OCR progress info is updated.

Syntax:

\```ts
XLH.OCR.on("OCRProgress",function(event:OCRProgressEvent) {
  console.log("progress: "+event.progress);
})
\```

Instance properties:

progress: progress of the OCR action. The value is between 0 and 1.
]]>
我折腾过的手机 2025-08-03T09:55:50+00:00 xulihang blog.xulihang.me/phones-I-used 生命不息,折腾不止。我打算开篇文章记录下我折腾过的手机。主要以时间顺序进行记录。

多普达818pro

我爸2007年炒股赚钱后,买了台多普达PPC,让我第一次接触到了智能手机。

接触了各种论坛,学会安装软件、刷机、制作ROM,折腾各种GPS软件。

经由Pocket DOS,我又开始折腾给电脑安装各种系统,封装启动光盘镜像、接触了AU3编程。

三星J708

我爸给我妈买的三星翻盖功能机。1700元,有拍照、FM、百宝箱等功能。

支持各种安装Java软件,不过屏幕分辨率只有128x160,而且性能有限,可以适配的软件不多。

我还跟着教程学习了J2ME开发,写了一个乘法软件。

HTC G1

安卓出来后,2010年上高中前,我让我爸给我买了台二手HTC G1,1100元。

当时安卓的热度很高,安卓网、机锋网的版块可能都有上万的新帖。我学习了安卓软件安装、刷机,了解了recovery、app2ext、root等等概念。

G1是全键盘手机,当时装了GBA模拟器玩光明之魂玩得挺爽。

12年家里买了汽车,我还在G1上安装了凯立德来做导航。

中兴U956

13年高考结束,我考虑买台自己的手机。当时江南大学给我发了移动的卡,我就打算买台支持移动网络的手机。

一开始我是想买HTC的,但看了下几款手机都比较贵。然后无意中刷到了中兴U956,搭载联发科MT6589四核CPU、1GB内存、5英寸OGS全贴合屏幕,还只要1000元,于是喜欢性价比的我直接就买了。

买了U956后不久,小米推出了红米,类似的配置,只要799。

当时5寸的屏幕已经是非常大了,拿出去别人都觉得有点夸张。

那个时候第三方ROM还是很多的,我自学ROM移植,移植了乐蛙OS、MIUI等系统。最后停留在乐蛙OS 5。

iPhone 5c

偶然逛论坛,了解了iPhone有锁机。这种iPhone价格很低,没用过iPhone的我也心动了,找了家TOMPDA的卖家,花1500元买了台16GB蓝色的iPhone 5c。

一开始用卡贴适配移动卡,但这种破解方式不完美,后来超雪出了适合电信的较完美的卡贴,我又买了张电信卡来用。

升级系统到iOS 8后,我直接越狱装Cydia,安装第三方输入法、各种插件、本地Python用来跑搜狗校园网代理等等。

为了体验iOS开发,我还在电脑上装了MacOS X Mountain Lion黑苹果系统。

iPhone 5c是我大学时候的主力机,从大二用到研一。

HTC 8X

Windows Phone作为当时三大手机操作系统之一,我也一直想体验一下。于是300多买了台二手的Verizon HTC 8X。

2015年,我跟着视频较系统地学习了Windows Phone开发,还上架了江南听雨BBS的客户端。

摩托罗拉G2

因为要去美国,有锁的iPhone不能用当地网络,我就又花700多元买了台国行的Moto G2 (XT1079),移动联通双卡4G,8GB存储,1GB内存。

我给它刷了基于安卓6的CM系统,还有绿色守护,在当时使用起来还是比较流畅的。

这台机器的一个特点是使用了JDI的5寸 LCD屏幕,看起来有斜纹,但显示效果还是不错的。

Yota Phone 2

俄罗斯的手机品牌,推出了双屏手机,前面是OLED屏,后面是墨水屏,而且刷新率很高。

我花600多元买了台二手的来体验。看书效果还是很好的,我用它看完了哈利波特的前两部。

Yota的FM功能支持的频率范围比较广,还能收听FM85校园广播。

可惜,研一的寒假,被汽车碾碎了。

海信A2 Pro

Yota Phone坏了后,我还是想买台双屏手机。于是2018年花2500元买了台海信的A2 Pro,是我买的最贵的手机。

它也是前面OLED,后面墨水屏的设计。不过OLED屏的频闪比较明显,需要我把亮度开到最高,然后用护目镜调节屏幕颜色来调暗屏幕。当时安卓7上护目镜效果还比较不错。

夏普Aquos S2

2020疫情期间,A2 Pro的关机键失灵,我便又考虑换机了。

当时主要想买台轻便的LCD手机,于是看中了屏幕质量很好的夏普Aquos S2,正好有家店,700多能买到全新版本。这台5.5寸的全面屏手机,重量只有140克,搭载了骁龙630的CPU,比625性能还好一点。

不过这款2017年推出的手机,在2020年用,性能上还是略显捉襟见肘。

买S2前,我还尝试了小米CC9,但它的OLED屏看一会就眼睛疼,最后还是重新选择用LCD手机。我给我妈挑的两款手机,小米5x和华为nova 7 SE也都是LCD屏幕。

OPPO A72

2022年,夏普S2频繁重启,我就又打算换台轻便的LCD的手机。

因为已经流行OLED手机了,可选择的机器不多,我最后选择了重量175克的OPPO A72。它有1080P的全面屏,天玑720处理器,4040毫安时的电池,虽然是千元机,还是非常够用的。

其它二手手机

我还买了些便宜的二手手机,用来体验和收藏的:

PPC:HTC D810、P860、Diamond、CHT9000、818,当年几千元的PPC手机,只要几十元,我把有名的几个型号都买了。最近又49元买了台2013年出的Opticon H-21带激光扫码的PDA。

Windows Mobile 10:Windows 10出来后,我买了台诺基亚的Lumia 822来体验,学了点UWP编程。这台手机搭载了OLED屏幕,和Windows手机的黑色背景搭配还是很合适的。

安卓:小米1S青春版,它搭载了半反半透屏幕,我本来以为它有护眼效果,实际体验发现反射率很低,而且屏幕反光还比较严重。

]]>