阅读视图

MinIO迁移RustFS实战指南一

由 copilot.microsoft.com 生成

作为资深 MinIO 用户,经历过 MinIO 一系列操作,从砍掉网关模式,砍掉控制台,到维护模式。老实说,我个人认为这类开源产品很难实现商业化。这种不断收缩能力边界的变化,对使用者来说影响是实实在在的。并不是功能不好,而是你已经把它当作基础设施依赖了,却发现它的产品路线在变, 这也是我开始认真考虑 MinIO 之外的选择的直接原因

项目地址

为啥选择 RustFS,经过大量讨论与实践,RustFS 逐渐成为那个改动最小、适配最易的首选替代品,深度兼容 MinIO 的 API 与架构。

快速部署

本次主要迁移了一个大盘鸡备份 MinIO, 方便操作直接使用 compose 部署

services:
  minio:
    image: ccr.ccs.tencentyun.com/k7scn/minio:2025
    container_name: minio
    restart: always
    environment:
      - MINIO_ROOT_USER=Fah0quaixei0
      - MINIO_ROOT_PASSWORD=wi0iez3gaaZoghohCai5zeedeenatooxunoh8AhwangeiPho8Obahja
      - MINIO_DEFAULT_BUCKETS=backup
    ports:
      - '100.90.80.15:9000:9000'
      - '100.90.80.15:9001:9001'
    volumes:
      - '/data/minio:/bitnami/minio/data'

  rustfs:
    image: ccr.ccs.tencentyun.com/k7scn/rustfs:latest
    container_name: rustfs
    restart: always
    environment:
      - RUSTFS_ACCESS_KEY=Fah0quaixei0
      - RUSTFS_SECRET_KEY=wi0iez3gaaZoghohCai5zeedeenatooxunoh8AhwangeiPho8Obahja
    ports:
      - '192.168.94.15:9000:9000'
      - '192.168.94.15:9001:9001'
    volumes:
      - '/data/rustfs/data:/data'
      - '/data/rustfs/logs:/logs'

注意 RustFS 的日志目录,不确定官方文档和示例有冲突(/logs 或者 /app/logs), 其实影响不大。

docker compose up -d
chown -R 10001:10001 /data/rustfs/data /data/rustfs/logs
docker compose down -v
docker compose up -d

其他的都和 MinIO 没啥区别,登录控制台创建 Bucket

可以直接使用 MC 操作

mc alias set rustfs http://192.168.94.15:9000 Fah0quaixei0 wi0iez3gaaZoghohCai5zeedeenatooxunoh8AhwangeiPho8Obahja

测试直接使用 restic 测试

export RESTIC_REPOSITORY=s3:http://192.168.94.15:9000/backup/test
export AWS_ACCESS_KEY_ID=Fah0quaixei0
export AWS_SECRET_ACCESS_KEY=wi0iez3gaaZoghohCai5zeedeenatooxunoh8AhwangeiPho8Obahja
export RESTIC_PASSWORD=eexeeWie1ri

直接备份测试

restic init
restic backup /data/mariadb --tag mariadb

repository 7d5b008d opened (version 2, compression level auto)
found 2 old cache directories in /root/.cache/restic, run `restic cache --cleanup` to remove them
no parent snapshot found, will read all files
[0:01] 100.00%  1 / 1 index files loaded

Files:         205 new,     0 changed,     0 unmodified
Dirs:            8 new,     0 changed,     0 unmodified
Added to the repository: 10.385 MiB (730.814 KiB stored)

processed 205 files, 124.408 MiB in 0:10
snapshot fed84173 saved

从目前来看没啥问题,可以先跑一段时间再看看。也可以使用 mc mirror 等工具将存量数据从 MinIO 迁移至 RustFS

最后

开源的魅力,就是你永远有选择的余地。

  •  

一刀切的评论关闭终止之回归的开发技术

年底了,小偷开始频繁出没。最近在群里多次看到小偷进店行窃的视频,我提前在屋前屋后都装了摄像头,即便不在家,也能通过监控直接喊话震慑。

以前每天早上,我都会看看大家写的日志、随手评几句,时间充裕的话,还会自己写篇生活日志发布。可能是心态变了,前段时间我干脆关闭了评论功能,早上也不再去逛各位博主的网站。

但这段时间,我从各种渠道收到了大家的留言:有的发在留言区,有的写在还能评论的文章下,还有人在群里艾特我,甚至还有专门发邮件过来的。看来大家确实喜欢交流,看到生活日志就忍不住想评论,我自己其实也是这样的人,以前就经常评论别人日志。这么看来,我当初 一刀切关闭评论确实不妥,直接断了和大家沟通的渠道。

最近我和两个小伙伴,忙着捡回我丢了十年的开发技术。最开始是从我的博友圈(现在改名为有圈)程序里拷贝了一份源代码,帮小伙伴做二次开发、改成符合他需求的版本。改着改着就上了瘾,后来又和另外一位小伙伴聊到 webp 压缩,说起那些网上提供的webp压缩服务一言难尽,超过5兆还得开会员,所以干脆说不如我做一个工具,说干就干。

我已经很多年没写过桌面应用程序了,下载的 IDE 界面看着都陌生。毕业后上班就一直做 B/S 开发,正是如此我经历了IE6魔鬼时代,天天被各种兼容性问题折磨。等到我退出开发行业时大家已经开始用谷歌浏览器了。

现在这个图片压缩工具,我还在不断优化:已经支持上传到阿里云 OSS,压缩完上传能直接生成 URL 地址供复制,目前正在加 FTP 上传功能,也新增了水印功能。这么多年没写代码,现在反而越写越上瘾。尤其是前天晚上,我们三爷们,一个在武汉一个岳阳一个东莞居然熬到了 4 点,我是因为一个 bug 一直没解决,好在有他俩陪着一起熬夜、聊天,快4点的时候总算把问题解决了,程序也能正常运行。

白天有别的事,只能趁间隙偶尔看一眼。接下来我想再把这个软件的功能做强大些,也考虑靠它赚点收入:比如转码同步上传云存储的功能,年费 19.9 元;软件所有功能买断,定价 99 元。赚钱不丢人,如果能靠这个赚点钱,也是件好事。总不能觉得这也丢人、那也“丢人”,最后什么都不做,一分钱也赚不到,那才真可惜。

昨天我还想到,之后可以再开发一个文件备份软件。以前在公司上班时,我就特别需要 “用户上传文件同步备份” 的功能,这样每天新增的文件,都能自动异地同步备份,会方便很多。

好了,今天就写到这。现在快6点了,得赶紧叫还在外面玩的娃回来吃晚饭了。

  •  

情侣双栏左右布局Html源码

这个蓝图是一个双栏布局,可用于情侣和合作伙伴的作品集网站。其设计理念是展示一个初始的双面视图,当点击其中一面时,整个页面会向相应方向过渡,显示所选人物的独立页面。

下载

截图展示

2025-12-14T11:56:18.webp

2025-12-14T11:56:30.webp

2025-12-14T11:56:43.webp
  •  

2025年终总结

2025年还有半个月就要过去了,回头看看这一年,还真发生了不少事情。趁着周末有点时间,稍微总结一下,免的到了月底,没时间总结。

[...]

  •  

在安稳中寻求生存

该渲染由 Shiro API 生成,可能存在排版问题,最佳体验请前往:https://innei.in/notes/204

这段时间,事情一件接一件。先从日常说起吧。

日常片段

最近看了新的 IP:疯狂动物城,前作看了一半之后忍不住直接去电影院先去把 2 看了。

https://www.themoviedb.org/movie/1084242-zootopia-2

复仇爽剧:模范出租车出第三季了,速看。

https://www.themoviedb.org/tv/119769-taxi-driver

上个月说的羊蹄山之魂通关了,正在二周目新游戏+。最近有点忙,还没有时间玩。

然后再来说说一系列的难受的事情。

体面告别

裁员那天,HR 找我聊。我以为会是一次体面的告别,甚至在某个瞬间,我还真的把它当作“和平结束”。

我接受得很平静。没有赔偿,只有十天的通知费,设备还要折旧回收。

这和老板之前的说法不一样——他说会有一笔金额,最后并没有兑现。说到底,给不给,很多时候更像是取决于公司怎么选择,我也很难指望一定会有结果。我当时理解香港这边的规则和大陆不太一样,很多保障并没有那么到位,至少对我来说是这样。相比之下,大陆的劳动法在这件事上,确实更能保障一点。

删文回声

后来我写了一篇文章,是对这段时间的总结、复盘和经验整理。我写到了一些我认为真实发生过的事情,于是被要求删掉。他们似乎不希望外界因此去质疑产品的未来。但在我看来,这个项目对外的更新与动作已经停滞了一段时间,我很难再用更乐观的词去形容它。

我还是删了。调整内容,重新发布。

删掉的那几个小时,反而让吃瓜的人传得更开:更多人开始围观一个可能从来没用过的产品,开始猜测、开始补全故事。

我没想过会这样。我只是把文字放在自己的博客里,没有在任何社交媒体发链接。可它还是自己长出了腿,走得比我想象的远。

总之,事情已经发生了。只是我没想到,最安静的地方,也会有回声。

气愤起点

后来的事情,让我开始感到气愤。

我从一些同样被裁的人那里,听到了很多过去从未得知的细节。起初我也知道:所谓「事实」,往往只是当事人愿意倾述的版本;人们更愿意相信自己想相信的那一套。可再往后,一些细节在不同人口中反复出现,我很难再把它当成纯粹的「版本」。

而这些信息里,我感受到的是一种让我很不舒服的做法。我很难把它当成善意。

我甚至有种恍惚:我正在经历的流程,像是他们已经很熟悉的流程。很多表达让我感觉更像是在引导情绪,让人先心软,再一点点降低预期。

有些话当时听起来很重,像是在替你争取,像是站在你这边。可很快我又看到各种说法开始变化,解释一层层叠上来,最后结论还是往下走。有人情绪激动,场面也变得很难堪,我也在那种尴尬和同情里破防。

我就是在那一刻意识到:这不是沟通,也不是协商。我当时的感受是,这一切太熟练了,像是事情最终会走向哪里,大家心里早已有数。

我当时接受得很平静,而此刻回想起来,更像一个小丑。

我其实并不在意有没有赔偿。入职之前我就查过资料,也问过 GPT,知道香港的法律大抵如此:很多东西写不写进合同、给不给到位,最后都落在“愿不愿意”上。换句话说,我对结果并不意外。

让我气愤的不是钱。是前后说法的落差,是那种被轻轻带过的感觉。

是他们先把话说得像承诺,让你以为自己会被认真对待;又在最后一刻轻描淡写地收回,仿佛从来没有说过。你甚至很难抓住一个明确的“反悔瞬间”,它更像是一种温柔的推诿:说过,但不算数;答应过,但没保证;本来想给,但现在不行。

公关开场

直到那天的晚上,老板出面发布了第一个公关帖子。

在发帖前后,我注意到他之前转发过的一些内容不见了。这种变化让我很难受,像是我们被悄悄从叙事里抹掉了:那是裁员当天,我们在 X 上发帖找工作,他还转推了,看起来像是"好聚好散"。

可现在,那些转推都不见了。仿佛他从未表态过,仿佛我们从未存在过。舆论开始发酵,像一把火终于找到了引线。

我很气愤那些让我觉得不真诚的说法,但我还是忍着。

很多认识我的朋友,在我把事情的全貌讲清楚之后,都站在我这边。有人在评论区替我打抱不平,也有一些从未谋面的、一直默默关注我的人给我留言。谢谢你们。那一刻我才意识到,原来我并不是一个人在扛。

招人疑云

可真正让我彻底破防的,是这篇公关帖之后发生的另一件事:后来我看到有人公开说“还在招人”。这和我当时的处境放在一起,让我非常困惑。

我后来从别人转述里听到,确实有人收到了类似的招聘信息。真假我不想再追究,但它带来的观感已经足够刺痛。

一边是把所有开发裁掉,一边又在招人。即使我已经大概能猜到这个项目的结局,我仍然会本能地怀疑:他们到底在招什么?他们到底在维护什么?他们到底在演给谁看?而更可怕的是,我已经不会再相信他们说的任何一句话了。

这件事荒诞到像段子,可它真的在发生。

于是开始出现各种猜测。我不想替任何猜测背书,但我能理解大家为什么会这么想,因为许多细节拼在一起,确实让人很难安心。

我那一刻是真的崩溃了。回想过去一年多,自己亲手从零开始打磨那个项目,很多夜晚、很多细节、很多你以为“会留下些什么”的东西,最后把我推到这个下场。突然就显得很可笑。

反击爆点

后面我开始反击。

我把我知道的、我听到的、那些彼此矛盾的说辞一条条摆出来,把不满也摆出来。不是为了吵赢谁,而是因为我突然明白:如果我继续沉默,他们就会替我把故事写完——写成一个“大家都理解、都体面、都没问题”的结尾。

第二天,情绪被推到了顶点。

奇怪的是,这段时间里没有人再来找我“沟通”、也没有人再来做公关。倒像是他们自己开始上演一出反向公关。

先是招人的事。我看到那条内容挂了一会儿,后来又不见了。

然后,有一位老板在公开场合说了这样一句话:

“大意是:创业不是慈善,加入前就该知道风险。”

后面那半句更锋利:他甚至还在强调公司对我们“没有任何可以挑出问题的地方”。

我当时看到这段话,心里一下子就凉了。

原来他们最后选择的立场不是“解释”,也不是“道歉”,甚至不是“沉默”。而是把一切包装成一句轻飘飘的逻辑:你选择了创业,所以你就应该承担一切;你受伤了,也只是你没想清楚风险;至于他们许下过什么、表演过什么、推诿过什么,都可以被这句话一笔抹平。

你们的委屈不是委屈,你们的付出也不算付出——你们只是在“应该如此”。

而真正荒诞的地方在于:他们一边说“风险自担”,一边又需要你相信他们;一边裁掉所有开发,一边又试图招新人;一边要求大家体面收场,一边又在公众叙事里把责任切得很干净。

懂事道具

我从来没指望创业像童话。我只是没想到,最后会被当成一个“应该懂事”的道具。

更荒诞的是,话说到这里还没有结束。那个说出“创业不是慈善”的老板,转头又出现了一些私下的说法,像是在推动大家选边站,也像是在形成某种“口径”。于是新的版本开始流出来。而且每一个版本都比上一个更像谣言。

他说我是自愿离职的,不是被裁的。

他说公司裁员不给赔偿,是因为“你没签国内合同,这是你当时的选择”。可事实是:这根本就不是“选择”。对我来说,那份合同从一开始就没有真正的可选项。你甚至没有站在十字路口,你只是被推着往前走,走到最后再被反过来指责:你看,是你自己走的。

这两天我真的累了。我开始想结束这一切,不想再把更多人的时间和精力卷进来。朋友的,围观者的,甚至我自己的。

二次公关

可偏偏就在我想把情绪压下去的那天晚上,他发了第二篇公关小作文。很长,很“认真”。开头先说外界的讨论被片段化信息带偏了,说这次人员调整是正常的商业决策:为了长期发展、为了降低成本、为了对用户负责,并且不是突发,而是按节奏推进。接着,他把矛头对准了“某一位离职员工”,暗示情绪之所以失控,是因为有人在夸张表达、带动对立。

我看完反而更气愤。是因为他把重点换掉了。他没有正面回应那些承诺为什么会消失、那些话为什么会变成空气。他只是把故事重写成另一种更安全的版本:公司在做正确的事,而问题出在“表达方式”和“情绪”。

更让我不舒服的是,他把生活也拖进了工作里。奖金、回忆、一起旅行、一起拍照,这些东西被摆出来。我承认,加班可能是我自己的选择,奖金也是对方的选择。我只是觉得,选择不等于可以互相抵扣。钱当然重要,但它换不回生活,也换不回那些被占用的深夜和周末。

朋友迷思

至于所谓朋友,我更不愿意被拿来当论据。老板和员工之间存在强利益关系,权力和选择从来都不对等。它可以是合作,可以是尊重,甚至可以是欣赏,但很难是朋友。朋友不会在争议发生时,用私人回忆来证明自己更正确。那更像一种提醒:你应该懂事……,你应该感恩,你不该把事情说成这样。

那一刻我意识到,对我来说这更不像沟通。他们只是要一个体面的结尾——而这个体面里,不包括我。

我再也压不住情绪,于是主动联系了他。在那段漫长的沟通里,我其实只想尽快结束这个闹剧。

越聊越像陷进去的泥。一边是迫切想停下来的疲惫,一边是被情绪推着走的冲动。再加上一点点生活外的交情,哪怕只是曾经的礼貌,曾经的温和,我心软了。我以为只要把话说开,把情绪压下去,事情就能回到“到此为止”的轨道上。

但现实不是这样运作的。

我在对话里意外透露了一些来自前同事的说法。它原本只是倾诉,只是“我听说过”。可话转了几层之后,性质就变了。传到另一个老板耳朵里,它可能就不再是信息,而变成了立场。不再是叙述,而变成了证词。于是那个说过“创业不是慈善”的人,随后我也听到,有人反复联系前同事,话里话外像是在把责任重新分配。

我成了夹在中间的人。两边都不满意,两边都觉得我有问题。我既得罪了他们,也伤到了那些曾经支持我的人。

放下接受

最后,事情还是结束了。非常不愉快。

我得到了什么呢。得罪了两边的人,伤害了曾经站出来替我说话的人。然后我发现这一切都无法挽回。那一晚,我对自己的鲁莽感到深深的自责。情绪冲昏了头脑,像个小孩子一样,急着证明,急着结束,急着把痛苦从胸口掏出来给别人看。结果只换来两败俱伤。

我甚至开始反问自己,我预想的结局到底是什么。是一个道歉,一个解释,一句真话,还是一个终于可以睡觉的夜晚。可到了最后,什么都没有。只有更大的噪音,和更难收拾的残局。

那天回家的路上,我在车里坐了很久很久。车外的世界还在动,灯在走,我却像被按在原地。然后我给前同事发了一段很长的消息,更像是一封迟到的道歉。

发完那段话,我才意识到一个更刺人的事实。有些话一旦说出口,就不再属于你了。它会在别人手里变形,会被拿去站队,会被拿去证明某个叙事。你站在中间,怎么解释都像狡辩,怎么沉默都像默认。

那一晚,我第一次认真地承认,我不是输给了他们的公关。我输给了自己的冲动。

那天之后,我删掉了 X。直到一周之后,世界仍然在运转,吃瓜的人已经散伙,一切又恢复了平静。

平静来得很快,快到像是什么都没发生过。可有些东西并不会因为热度退去就被证明是误会,它只是被遗忘了。

那个曾经说还会继续迭代维护的人,直到现在也没有看到对应的变化。对我来说,那句话更像是一种当时的安抚,而不是后续会兑现的计划。

而我也慢慢确定了一点,我很难再信任他们对外的表述。不是因为我想否定什么,而是因为我已经看过太多前后不一致。

不是因为真话太复杂,也不是因为真话太难讲。我能想到的解释是,真话一旦说出口,就会让体面露出裂缝。于是更多时候,他们选择沉默,选择拖延,选择用一句句看起来正确的话,把真实的部分藏起来。

在那一周里,我无意经过一座寺庙。我进去站了一会儿,很诚心地祈祷,希望自己能在安稳中找到一块生存地。

出来的时候,看见门口有两块石头,上面分别刻着两个字。

放下 接受

像是冥冥之中在告诉我,事情已经到这里了。

回去的路上我又路过一家书店。玻璃上印着一句话,我站在那儿看了很久。

希望你能记住我,记住我曾经这样存在过。 ——村上春树

我不知道为什么那一刻忽然很想哭。也许不是因为谁,也不是因为那个项目,而是因为我突然意识到,我真正害怕的并不是失去工作。

我害怕的是,我花了那么多时间和心力,最后连“好好告别”都不被允许。连一句真话都不能留下。连我曾经那样认真地存在过,也要被改写成不合时宜。

感谢你能看到这里。

看完了?说点什么呢

  •  

回头看见自己

该渲染由 Shiro API 生成,可能存在排版问题,最佳体验请前往:https://innei.in/posts/experience/looking-back-at-myself

前几天收到通知,所在的团队解散了,我这段工作也一起画上句号。

虽然这个月一直隐隐觉得情况不太妙,但真的落在自己身上的那一刻,人还是会愣一下。有点空,有点失落,也有种「啊,原来已经走到这一步了」的感觉。

想了几天,还是决定把这一年多的经历和一些个人反思写下来,当作一个存档。以后哪天心态稳定了,再回头看,至少能更清楚地知道自己这段时间到底经历了什么、学到了什么。

为什么会去做这个项目

最早接到这个机会时,我刚经历人生第一次裁员。那段时间整个人状态挺糟的,对未来特别迷茫,对自己也没什么信心,各种躯体反应、抑郁、焦虑、失眠一股脑地冒出来。

就在那时候,有人找我聊到这个项目。那会儿项目还非常早期,很多东西都停留在想法、脑图和讨论里,连像样的 demo 都还没有。但对当时的我来说,有人愿意拉我一把,给我一个能重新把注意力投进去的事情,本身就挺不一样的。

现在回头看这段经历,哪怕后来大家的路径和选择各不相同,我依然很感谢当时那次「拉一把」。它确实是在我比较低谷的一个时间点,给了我一个出口。

另一方面就是一个很简单的判断:我本身就对这种类别的产品很感兴趣。

我一直喜欢做 ToC 的产品,喜欢琢磨交互细节、体验和界面呈现。

再一次从零开始创造一个东西,其实是很酷的事情,而且自由度也很高。这个项目在早期也给了我很多发挥空间。

在这一年多里,我都在做些什么

如果只看事情本身,这一年多其实过得很密。

因为项目很早期,很多基础的东西都需要从头搭起来,我主要做了这些:

  • 从零搭了一整套基础组件;
  • 一点点把 UI 的设计规则、风格和设计体系搭出来;
  • 把 App 的数据流架构重新理了一遍,把之前比较散的部分串起来;
  • 桌面端(Electron)的更新方案、一些踩坑和调优,也是我一点点摸出来的;
  • 围绕产品的设计和优化,我也写过几篇博客记录当时的想法。

那段时间,我基本是 设计、前端、产品 三件事一起干。经常是白天写代码、改交互,晚上还在想组件要不要再重构一下,周末偶尔继续打磨。

我对细节的执着,在那个阶段被放大得很明显。经常为了一个 1px 的对齐,或者一个 hover 状态,盯着屏幕看半天,不停调 spacing,调整节奏。

后面我的 commit 数一直往上爬,前端那块几乎所有角落都翻过一遍,一些历史遗留的问题也是趁着重构的时候顺手清。

有人跟我说,我这状态有点像把公司项目做成了个人项目。虽然有点玩笑的成分,但确实说明了当时那种「恨不得所有细节都先过一遍我眼睛」的投入。

从纯工程师视角看,这一年我学到的东西挺多的。

以前更多是「完成别人安排的需求」,现在多少对这个产品的形状、系统架构、体验节奏,有了一些自己的判断。

对这段经历的一些个人反思

接下来这部分,就不局限在这个项目本身了,更多是我在这段时间里,对「怎么做一个产品」的一些感受。

我不打算给任何人下结论,只讲我自己以后会怎么做得不一样。

1. 关于「商业化要不要想得很早」

在早期阶段,我确实更偏向「先把东西做出来」「先做一个好玩的产品」,对商业化的思考会往后放。事后回头看,对我自己来说,教训是:

不一定一开始就要把每一块都推到极致,但至少要在心里留一条大致的路: 这个产品大概是为谁做的,这些人未来有没有「愿意为它长期买单」的可能。

如果脑子里完全没有这条路,日常决策就很容易被短期数据牵着走。很多看上去漂亮的增长,不一定是在为未来打基础,有时候只是让你在一条不太适合长期生存的路径上走得更远。

现在再做任何项目,只要心里有一点「它有机会变成一个长期产品」的念头,我都会尽量在比较早的阶段,先粗略想清楚:

  • 它大概会服务谁;
  • 这些人为什么会愿意长期留下来;
  • 他们愿意为什么买单。

这不只是这次经历的感受,其实是这几年所有项目叠加起来给我的提醒。

2. 关于「激励」和「真正的用户」

另一个对我很深的提醒是:激励是一种筛选器。

各种奖励、玩法,在短期内都非常有效,这点我在这个项目以及别的一些项目里都见过。

但它筛出来的,更多是「对激励敏感的人」,而不一定是「对产品本身有强需求的人」。

如果前期一直用这种方式去拉新,很容易导致:

  • 数据好看、热度不低;
  • 但当你希望产品靠长期价值站住时,发现核心人群其实没有被真正建立起来。

以后再做类似的产品,我会更谨慎地区分:

  • 哪些是「为产品本身添砖加瓦」的设计;
  • 哪些只是「为了短期刺激」的玩法。

这个反思同样不是在评价哪个项目好或不好,而是提醒自己:

不能只被短期数字牵着走,要时刻记住自己真正希望留下的那一拨人是谁。

3. 方向没想清楚的时候,越努力反而越危险

这段经历里,还有一个挺扎心的感受:

大家都很努力,事情也很多, 但有时候你隐约知道,自己是在用努力填前面没想清楚留下的坑。

你越是全力往前冲,就越难停下来问自己一句:

如果照现在这个方向一路做到极致, 那个终点真的是我想要的吗?

这个问题不针对任何人,只是对我自己的一种提醒。以后我会更刻意留出一点「按暂停键」的空间,哪怕只是定期问自己这个问题。如果长期答不上来,可能就说明有哪里不太对劲了。

4. 时机本身也是一种成本

这几年回头看,会有一个很强的感觉:

有些窗口期是真的会关上, 关上之后再做同样的事,难度完全不一样。

不只是这一次,我接触过的好几个项目都有类似的影子。在某个阶段其实都迎来过一小波关注或讨论度,如果那时能更早地意识到:

  • 要不要在那时候认真规划一下下一阶段;
  • 要不要借着关注度去争取更多缓冲时间;

后来的剧本可能会不太一样。当然,也未必就一定成功,但至少不是在热度退去之后再来补前面的课。

这件事给我的提醒是:

  • 产品有自己的节奏;
  • 市场也有它的节奏;
  • 有些决定,如果总觉得「以后再说」,其实就是一种隐性成本。

关于「人情」这部分

前面说了很多产品、商业、技术上的东西,但对我个人来说,这段经历还有一块很重要的是「人」。

  • 在我第一次被裁、状态很差的时候,是这个项目给了我一个可以重新投入的方向;
  • 给了我一个在桌面端、大型 ToC 产品上深度打磨的机会;
  • 也让我有机会接触到之前没做到的职责和领域。

不管后来每个人的选择如何,这件事本身我是一直记在心里的。

有时候就是这样。你在别人低谷的时候伸一把手,对那个人来说,意义会很长。

所以,对这段经历,我的情绪是很复杂的:

  • 有遗憾,也有不甘心;
  • 但也有很多真诚的感谢。

它既不是简单的「成功」或「失败」两个字可以概括的,更像是一次把很多课提前塞给我的密集训练。

对未来的一点想法

短期内,要面对的还是很现实的问题。找下一份工作,解决生活,慢慢让自己从这段紧绷的节奏里抽离出来。

但可以确定的是,以后再谈「做一个可持续的产品」,我的态度会比以前更加谨慎,也会多一点敬畏。

如果你刚好也在经历类似的阶段,或者也在做一个早期项目,希望这些碎碎念能给你一点参考。哪怕只是让你提前避开我走过的一两个坑,也算是这段经历留下的价值之一。

谢谢你看到这里。

看完了?说点什么呢

  •  

Umami升级V3踩坑指南

Photo by Bakd&Raw by Karolin Baitinger / Unsplash

最近有注意到关于 react和next.js 高危漏洞 CVE-2025-55182 引发的一些麻烦,多数表现是VPS被攻击者改成了挖矿肉鸡。

博客群里的 @veryjack 就因为安装了Umami v2 也成了受害者之一。

我也安装了Umami v2,所以第一时间上VPS后台检查了一下,幸运的是目前应该还没遭受到攻击。为了避免也中招,所以我先第一时间关闭了Umami 的统计服务。

因为这个漏洞是框架带来的,使用这两个框架的相关项目也在第一时间对漏洞进行了修复,所以Umami也很快带来了v3版本,我需要做的就是尽快升级。

我一直用的v2的mysql版本,但是v3开始官方开始只支持PostgreSQL,所以我需要先对数据进行迁移后再升级到v3版本,官方也提供了升级指南 Migrate MySQL to PostgreSQL ,同时其他一些博主也出了一些迁移教程 Umami v3 正式发布:告别 MySQL,全面拥抱 PostgreSQL —— 升级与迁移指南

一、创建你当前版本的PostgreSQL版Umami

  1. 先停掉原来的Umami容器,修改compose文件为PostgreSQL版本。
  2. 因为我这里的PostgreSQL使用的是miniFlux上创建的,所以我指定使用了一个flux的内部网络。
version: '3.8'

services:
  umami:
    container_name: umami
    image: ghcr.io/umami-software/umami:postgresql-v2.19.0
    restart: always
    ports:
      - "3000:3000"
    environment:
      TZ: Asia/Shanghai
      DATABASE_TYPE: postgresql
      DATABASE_URL: postgresql://umami:password@postgres:5432/umami
      HASH_SALT: "SALT"
    networks:
      - flux-data_flux-network # 关键:加入外部网络

networks:
  flux-data_flux-network:
    external: true # 告诉 Compose 这个网络已经存在

v2版umami PostgreSQL的compose

二、在PostgreSQL中创建Umami数据库

用miniflux的数据库账号创建一个Umami的数据库

docker exec -i postgres psql -U miniflux -c \
"CREATE USER umami WITH PASSWORD 'password';"
docker exec -i postgres psql -U miniflux -c \
"CREATE DATABASE umami OWNER umami;"

手动创建用户和数据库

按照官方指南清空 user_prisma_migrations 表的数据

docker exec -i postgres psql -U umami -d umami <<EOF
TRUNCATE TABLE "user" CASCADE;
TRUNCATE TABLE "_prisma_migrations";
EOF

按官方要求清空数据

三、导出mysql版数据

通过以下命令导出mysql内的Umami数据到 mydbdump.sql 文件内。

docker exec -i mysql mysqldump --no-create-info --default-character-set=utf8mb4 --quick --skip-add-locks -u umami -p umami > mydbdump.sql

导出mysql的dump文件

因为两个数据库特性、语法要求的不同,我们在导出mysql的数据后需要对sql语句做特殊处理后才能正确导入到PostgreSQL。

首先用双引号替换反勾号,使其兼容PostgreSQL。

sed -i 's/`/"/g' mydbdump.sql

处理引号

其次,因为存在如 Xi\'an@1900\'blog 这种在PostgreSQL中被认为是转义语句的内容,所以还需要做特殊处理。这部分网上的教程我都试了,对我来说不管用。

这个问题卡了我很久,最后在和AI搏斗了两天后终于得到了一条在替换后至少能正常导入的语句。

sed -i 's/\\'\''/'\'''\''/g' mydbdump.sql

处理转义符

四、导入PostgreSQL

再将修改好后的文件导入Umami的PostgreSQL数据库内。

sudo docker exec -i postgres psql -U umami -d umami < mydbdump.sql

导入PostgreSQL

五、修改镜像为v3

最后修改compose文件中的Umami镜像为最新版后,重新docker-compose up -d 即可。

version: '3.8'

services:
  umami:
    container_name: umami
    image: ghcr.io/umami-software/umami:postgresql-latest
    restart: always
    ports:
      - "3000:3000"
    environment:
      TZ: Asia/Shanghai
      DATABASE_TYPE: postgresql
      DATABASE_URL: postgresql://umami:password@postgres:5432/umami
      HASH_SALT: "SALT"
    networks:
      - flux-data_flux-network # 关键:加入外部网络

networks:
  flux-data_flux-network:
    external: true # 告诉 Compose 这个网络已经存在

升级镜像版本

重新访问网站后你就能得到一个最新版的Umami了,不过v3版本的首页好像默认不再直接显示各个网站的概览信息了,需要手动点击网站进入详情页面才能看到数据,略微有点不适应。

新的umami

其实,在因为数据导入失败期间我一度想放弃之前的数据,尝试过其他统计工具,如 Tianji ,但是都觉得太臃肿了,最后还是选择继续攻克导入问题。

因为我只需要一个简单管用的访问统计工具,这也是当时我选择Umami的原因。

END。

  •  

2025年11月阅读书摘

11月阅读记录

  • 《认知觉醒》Done
  • 《沿着塞纳河到翡冷翠》Done
  • 《我的母亲做保洁》50%
  • 《东北游记》10%

11月阅读书摘

认知觉醒:开启自我改变的原动力

  • 2025年11月阅读书摘
  • 书名: 认知觉醒:开启自我改变的原动力
  • 作者: 周岭
  • 简介: 为什么我们做事总是急于求成、避难趋易?所谓有耐心,就是要“咬牙坚持、死磕到底”?如何不再用“三分钟热情”和“打鸡血”的方式做事?如何保持极度专注?如何消除焦虑?如何提高学习能力?这是一部可以穿透时间的个人成长方法论。7大底层概念,20个成长关键词,助你彻底走出焦虑与迷茫,拥有清醒的认知、清楚的目标、清晰的路径、清爽的情绪。通过“大脑构造、潜意识、元认知”等思维规律,你将真正看清自己;通过“深度学习、关联、反馈”等事物规律,你将真正看清世界,提升自控力、专注力、学习力……只有洞悉底层的内在规律,我们才能真正开启自我改变的原动力。
  • 出版时间 2020-06-01 00:00:00
  • ISBN: 9787115543424
  • 分类: 心理-认知与行为
  • 出版社: 人民邮电出版社

高亮划线

第一章 大脑——一切问题的起源

  • 2025年11月阅读书摘

    📌 我们在生活中做的大部分决策往往源于本能和情绪,而非理智

  • 📌 焦虑的原因就两条:想同时做很多事,又想立即看到效果。王小波说:人的一切痛苦,本质上都是对自己无能的愤怒。焦虑的本质也契合这一观点:自己的欲望大于能力,又极度缺乏耐心。焦虑就是因为欲望与能力之间差距过大。

    人类的天性却正好与这个规律相反。在欲望上急于求成,总想一口吃成个胖子,导致自己终日在困难区受挫;在行动上避难趋易,总是停留在舒适区,导致自己在现实中总是一无所获。

第二章 潜意识——生命留给我们的彩蛋

  • 📌 ·为什么我不由自主地沉溺于这段剧情了?
    这就是高手学习的方法:先用感性能力帮助自己选择,再用理性能力帮助自己思考。文中的触动来自感性,而提问则来自理性,感性在前,理性在后,这背后的原理就是通过捕捉潜意识发出的信号进行感知。

  • 📌 先用感性能力帮助自己选择,再用理性能力帮助自己思考。

  • 📌 目标是存放我们热情和精力的地方

  • 📌 小事听从你的脑,大事听从你的心。

第五章 学习力——学习不是一味地努力

  • 📌 做选择是一件极为耗能的事情,如果没有与之匹配的清醒和定力,绝大多数人最终都会被强大的天性支配,去选择娱乐消遣。在有约束的环境下我们反而效率更高,生活更充实。

  • 📌 考试得了高分,不叫有知识;茶余饭后能高谈阔论,这也不叫有知识。这些场合下,知识虽然有用,但是这些知识都不太牵扯到具体的得失,所以只是智力游戏。只有当局势不明朗、没有人告诉你该怎么办,而错误的判断又会导致一些不良的后果时,你要是能因为有知识而敢于拿一个主意,这才算是真有知识。请注意,这不是在说,实用的知识才是知识,而是在说,只有当知识能够帮助你做实际决策的时候,它才是你的知识。

  • 📌 处于认知圈边缘的知识与我们的实际需求贴合得最紧密,因此也更容易让我们产生触动,进而与现有的知识进行关联。

  • 📌 这就是打卡心态的特性:学不到,假装一下;学到了,立即停止。所以单纯抱着打卡这一任务心态去学习,很少会有强烈的主动性,毕竟在任务心态的驱使下,人们关注的是完成情况,对任务本身没有更大的热情。

  • 📌 制定分享策略,展示给那些能力不及你的人。只要你认真打磨了作品,就肯定有人会觉得你比他们厉害,此时,赞扬就会飞向你。而真正比你强的人往往没空打击你,所以你不必担心会被人嘲笑。

  • 📌 精力,在某种程度上可以作为意志力的代名词。精力充沛时,人们面对困难会无所畏惧,面对诱惑也有更强的抵抗力,但当精力不足时,我们不仅难以面对困难,甚至对诱惑的抵抗能力也会变弱,毕竟克服困难和抵制诱惑都需要消耗意志力。

第六章 行动力——没有行动世界只是个概念

  • 📌 现实和理论都告诉我们:懂得百点不如改变一点。真正的成长不在于自己懂得了多少道理,而在于自己改变了多少。

第七章 情绪力——情绪是多角度看问题的智慧

  • 📌 在一定的前提下,贫穷确实会使人变笨,这不是因为贫穷让人能力不足,而是因为贫穷造成的稀缺俘获了人的注意力,进而降低了人的心智带宽。

  • 📌 真正的行动力高手不是有能耐在同一时间做很多事的人,而是会想办法避免同时做很多事的人。

  • 📌 这些理由听起来可能有些可笑,但不要低估这种假设的力量,一旦你有了新的选择,就会意识到:事情本身并不重要,我们只是在通过它获取另外一种乐趣,顺便把这件事给做了。在心理学上,这个方法叫作“动机转移”。

第八章 早冥读写跑,人生五件套——成本最低的成长之道

  • 📌 不要害怕书上早就写了,我们每个人都可以在这个世界上,刻画出一条与众不同的轨迹。

结语 一流的生活不是富有,而是觉知

  • 📌 无论何时,都要把对方的情绪和意见分开对待,这样,即使在最糟糕的事情中也能学到有用的东西。

  • 📌 好的反思是感知生活中最触动自己的点,难受的、欣喜的、念念不忘的……这些点正是处在自己成长的舒适区边缘的感悟,人在舒适区边缘学习,成长是最快的。

后记 共同改变,一起前行

  • 📌 如果你想要的东西还不存在,那就亲自动手将它创造出来。

沿着塞纳河到翡冷翠

  • 2025年11月阅读书摘
  • 书名: 沿着塞纳河到翡冷翠
  • 作者: 黄永玉著
  • 简介:
  • 出版时间
  • ISBN:
  • 分类:
  • 出版社: 人民文学出版社

高亮划线

咸湿古和薄伽丘

  • 📌 人们动不动爱说:“人生像一场戏”,这种不通容易看出,因为“戏”本来就是人演的。如果说:“人生如戏台”,那就有意思得多了。人,在“前台”演戏,对付生熟朋友,利益所在,好恶交错,抢掠搏杀,用的都是学来的演技功夫;真的自我是在“后台”。一人独处,排除了忌讳,原形毕露,这种快乐六朝人最是懂得:“我与我周旋久,宁作我”,就是其中思想精髓。晚上,一盆热水洗脚之后——高背沙发一靠,三大块烤鱿鱼干放在就手地方,安溪上好铁观音一壶,茶杯加大——淡黄灯泡照明——一手揉脚,一手抓书,书即咸湿之书。此景此情,是一种快意后台小境界也。“后台”生活是人生的命根子,性灵的全部,最真实的自我世界。它隐秘,神圣不可侵犯,却往往被人——甚至自己所歪曲诬蔑。
  •  

把这一年收进抽屉

该渲染由 Shiro API 生成,可能存在排版问题,最佳体验请前往:https://innei.in/posts/experience/put-this-year-in-a-drawer

前几天收到通知,所在的团队解散了,我这段工作也一起画上句号。

虽然这个月一直隐隐觉得情况不太妙,但真的落在自己身上的那一刻,人还是会愣一下。有点空,有点失落,也有种「啊,原来已经走到这一步了」的感觉。

想了几天,还是决定把这一年多的经历和一些个人反思写下来,当作一个存档。以后哪天心态稳定了,再回头看,至少能更清楚地知道自己这段时间到底经历了什么、学到了什么。

为什么会去做这个项目

最早接到这个机会时,我刚经历人生第一次裁员。那段时间整个人状态挺糟的,对未来特别迷茫,对自己也没什么信心,各种躯体反应、抑郁、焦虑、失眠一股脑地冒出来。

就在那时候,有人找我聊到这个项目。那会儿项目还非常早期,很多东西都停留在想法、脑图和讨论里,连像样的 demo 都还没有。但对当时的我来说,有人愿意拉我一把,给我一个能重新把注意力投进去的事情,本身就挺不一样的。

现在回头看这段经历,哪怕后来大家的路径和选择各不相同,我依然很感谢当时那次「拉一把」。它确实是在我比较低谷的一个时间点,给了我一个出口。

另一方面就是一个很简单的判断:我本身就对这种类别的产品很感兴趣。

我一直喜欢做 ToC 的产品,喜欢琢磨交互细节、体验和界面呈现。

再一次从零开始创造一个东西,其实是很酷的事情,而且自由度也很高。这个项目在早期也给了我很多发挥空间。

在这一年多里,我都在做些什么

如果只看事情本身,这一年多其实过得很密。

因为项目很早期,很多基础的东西都需要从头搭起来,我主要做了这些:

  • 从零搭了一整套基础组件;
  • 一点点把 UI 的设计规则、风格和设计体系搭出来;
  • 把 App 的数据流架构重新理了一遍,把之前比较散的部分串起来;
  • 桌面端(Electron)的更新方案、一些踩坑和调优,也是我一点点摸出来的;
  • 围绕产品的设计和优化,我也写过几篇博客记录当时的想法。

那段时间,我基本是 设计、前端、产品 三件事一起干。经常是白天写代码、改交互,晚上还在想组件要不要再重构一下,周末偶尔继续打磨。

我对细节的执着,在那个阶段被放大得很明显。经常为了一个 1px 的对齐,或者一个 hover 状态,盯着屏幕看半天,不停调 spacing,调整节奏。

后面我的 commit 数一直往上爬,前端那块几乎所有角落都翻过一遍,一些历史遗留的问题也是趁着重构的时候顺手清。

有人跟我说,我这状态有点像把公司项目做成了个人项目。虽然有点玩笑的成分,但确实说明了当时那种「恨不得所有细节都先过一遍我眼睛」的投入。

从纯工程师视角看,这一年我学到的东西挺多的。

以前更多是「完成别人安排的需求」,现在多少对这个产品的形状、系统架构、体验节奏,有了一些自己的判断。

对这段经历的一些个人反思

接下来这部分,就不局限在这个项目本身了,更多是我在这段时间里,对「怎么做一个产品」的一些感受。

我不打算给任何人下结论,只讲我自己以后会怎么做得不一样。

1. 关于「商业化要不要想得很早」

在早期阶段,我确实更偏向「先把东西做出来」「先做一个好玩的产品」,对商业化的思考会往后放。事后回头看,对我自己来说,教训是:

不一定一开始就要把每一块都推到极致,但至少要在心里留一条大致的路: 这个产品大概是为谁做的,这些人未来有没有「愿意为它长期买单」的可能。

如果脑子里完全没有这条路,日常决策就很容易被短期数据牵着走。很多看上去漂亮的增长,不一定是在为未来打基础,有时候只是让你在一条不太适合长期生存的路径上走得更远。

现在再做任何项目,只要心里有一点「它有机会变成一个长期产品」的念头,我都会尽量在比较早的阶段,先粗略想清楚:

  • 它大概会服务谁;
  • 这些人为什么会愿意长期留下来;
  • 他们愿意为什么买单。

这不只是这次经历的感受,其实是这几年所有项目叠加起来给我的提醒。

2. 关于「激励」和「真正的用户」

另一个对我很深的提醒是:激励是一种筛选器。

各种奖励、玩法,在短期内都非常有效,这点我在这个项目以及别的一些项目里都见过。

但它筛出来的,更多是「对激励敏感的人」,而不一定是「对产品本身有强需求的人」。

如果前期一直用这种方式去拉新,很容易导致:

  • 数据好看、热度不低;
  • 但当你希望产品靠长期价值站住时,发现核心人群其实没有被真正建立起来。

以后再做类似的产品,我会更谨慎地区分:

  • 哪些是「为产品本身添砖加瓦」的设计;
  • 哪些只是「为了短期刺激」的玩法。

这个反思同样不是在评价哪个项目好或不好,而是提醒自己:

不能只被短期数字牵着走,要时刻记住自己真正希望留下的那一拨人是谁。

3. 方向没想清楚的时候,越努力反而越危险

这段经历里,还有一个挺扎心的感受:

大家都很努力,事情也很多, 但有时候你隐约知道,自己是在用努力填前面没想清楚留下的坑。

你越是全力往前冲,就越难停下来问自己一句:

如果照现在这个方向一路做到极致, 那个终点真的是我想要的吗?

这个问题不针对任何人,只是对我自己的一种提醒。以后我会更刻意留出一点「按暂停键」的空间,哪怕只是定期问自己这个问题。如果长期答不上来,可能就说明有哪里不太对劲了。

4. 时机本身也是一种成本

这几年回头看,会有一个很强的感觉:

有些窗口期是真的会关上, 关上之后再做同样的事,难度完全不一样。

不只是这一次,我接触过的好几个项目都有类似的影子。在某个阶段其实都迎来过一小波关注或讨论度,如果那时能更早地意识到:

  • 要不要在那时候认真规划一下下一阶段;
  • 要不要借着关注度去争取更多缓冲时间;

后来的剧本可能会不太一样。当然,也未必就一定成功,但至少不是在热度退去之后再来补前面的课。

这件事给我的提醒是:

  • 产品有自己的节奏;
  • 市场也有它的节奏;
  • 有些决定,如果总觉得「以后再说」,其实就是一种隐性成本。

关于「人情」这部分

前面说了很多产品、商业、技术上的东西,但对我个人来说,这段经历还有一块很重要的是「人」。

  • 在我第一次被裁、状态很差的时候,是这个项目给了我一个可以重新投入的方向;
  • 给了我一个在桌面端、大型 ToC 产品上深度打磨的机会;
  • 也让我有机会接触到之前没做到的职责和领域。

不管后来每个人的选择如何,这件事本身我是一直记在心里的。

有时候就是这样。你在别人低谷的时候伸一把手,对那个人来说,意义会很长。

所以,对这段经历,我的情绪是很复杂的:

  • 有遗憾,也有不甘心;
  • 但也有很多真诚的感谢。

它既不是简单的「成功」或「失败」两个字可以概括的,更像是一次把很多课提前塞给我的密集训练。

对未来的一点想法

短期内,要面对的还是很现实的问题。找下一份工作,解决生活,慢慢让自己从这段紧绷的节奏里抽离出来。

但可以确定的是,以后再谈「做一个可持续的产品」,我的态度会比以前更加谨慎,也会多一点敬畏。

如果你刚好也在经历类似的阶段,或者也在做一个早期项目,希望这些碎碎念能给你一点参考。哪怕只是让你提前避开我走过的一两个坑,也算是这段经历留下的价值之一。

谢谢你看到这里。

看完了?说点什么呢

  •  

Affinty双栏主题

Affinty双栏typecho主题

Affinty

移植自兽兽的一款开源 ghost 模板,原作者:https://github.com/Showfom/Affinity
部分功能文字写死,需要自行修改主题代码

演示

在线预览

下载

说明

整体CSS部局,基本一至。评论部分,单独整理的代码和CSS。
缩略图,默认调用 img 自定义字段,如果没有,到文章检索第1张图片。
搜索页面,后台添加页面,自定义模板,设置为 page-search 即可。

  •  

二〇二五年十一月总结:继续分享自己

十一月已过,目前十二月中,月度总结还在路上。坚持做一件事情很难,但是习惯做一件事件却很容易。建博客的初衷是为了写总结和记录,虽然每月总结从未落下,但这次间隔时间确实有点长。但为了保持总结习惯,还是敷衍了一下。

我们常说内容一旦发布都是给访客看的,独立博客的流量虽然很少,但总有人在不经意的瞬间读到我们写的内容,哪怕内容写的一塌糊涂,也少有人较真,即使真的较真了也不会引起轩然大波。在我眼中独立博客十分矛盾,既想有人关注,又不想有人关注。

既然是敷衍总结,那继续从摄影、骑车、读书这三个方面来总结十一月我都经历了什么。

摄影

转人像摄影有一段时间了,如今自感水平一般,光线差一点、引导差一点,很容易被负面情绪影响,很难调动模特的情绪。学人像摄影差不多三个月了,有很多难点需要克服,大部分内容不是摄影本身,而是摄影之外的一些事情。经常被提到,眼睛不要总是盯着相机,放下相机多观察。

挑选一些11月拍的照片↓




骑车

总里程:246.5km
总时间:13:22:52
月骑行均速:18.42km/h
骑行次数:22
平均单次里程:11.2km

关于骑车开始放纵,再也不关心均速什么的,甚至有时候都没有记录数据,没记录相当于没骑车。

还是上下班骑车,其他的骑车活动也没有进行,没想到均速已经掉到18.42km/h,进步不容易,退步却很快。

读书

这个月依旧没有看书,想好要看书,拿起书本就被其他事情吸引了,甚至说拿起手机就相机自己只是回了回复一个消息,转而打开短视频无节制的刷了起来。

但心底在告诫自己,读书使人进步,碎片化的短视频很难学到东西,娱乐不能没有节制。

~ END ~

继续写博客,继续写总结,继续写记录,继续写心得体验,继续分享自己。

  •  

二〇二五年十月总结:迟到的总结不太真实

最近几个月很少写博客文章,仅仅写了一篇月度总结。然而,十月份的总结迟迟没有行动。10月中旬新建文章仅写了标题:“二〇二五年十月总结”,自此便没有了后续。

现在仅能凭借一些记忆和一些记录数据,回顾十月的一些事情。老规矩,摄影、骑车、读书,这三件事来总结一下成败,更多是一些反思。

十月总结,来晚了。

摄影

摄影分三大块,人像、风光、人文。其中最难的是人文,其次是人像,然后是风光。

虽然有难以,想要拍好任何一种题材都需要长时间积累和锻炼,有天赋的人少之又少。

风光拍不好,人文更拍不好,随后看上了人像摄影。这个月重点在人像摄影,初尝人像并不简单,拍到和拍好是两码事。学习如何拍好人像,实践复盘,烂片拍了很多很多。也许摄影水平就是堆快门,拍的越多经验值才会增加。

骑车

总里程:337.1km
总时间:17:19:54
月骑行均速:19.44km/h
骑行次数:32
平均单次里程:11.59km

10月的总里程虽然比9月多了一些,但这些里程不足支撑自己进步。但目前已经不想再骑车方面进步了,正如所见,平均单次里程不足12公里。

现在仅保留骑车上班的习惯,只要不下雨就骑车。进入冬天上海的雨水也在减少,几乎每个上班日都会骑车。

读书

10月没有读书,枕边放了一本《成为专业人像摄影师》只在买回来的时候看了看,感觉要吃灰了。

还是想把读书写下来,主要目的是提醒自己,读书可以拓展见识与认知,不能丢下。

~ END ~

时光继续,生活继续,健身继续,增长继续,不刻意关注时光的快慢,不刻意关注成长的快慢,慢慢生活,慢慢变老。

  •  

嘟嘟桌面PRO:一款适用于比亚迪全系车型的车机桌面软件

嘟嘟桌面

嘟嘟车机桌面是一个完全区别于其他安卓桌面的 APP,完全根据车机用户使用习惯进行设计,本地使用完全免费,使用在线服务会根据实际情况收取部分费用,付费项目包括车辆实时定位,行程在线记录,地理围栏通知,共享车机控制和定位等在线功能

嘟嘟车机桌面
嘟嘟车机桌面

嘟嘟桌面PRO比亚迪专享版

嘟嘟桌面PRO比亚迪专享版安装后全名为嘟嘟桌面PRO-比亚迪专享版,是专为比亚迪全系车型车主们打造的版本。

实时显示车辆的电量、油量、记录仪状态、胎压温度、电池电压与健康度监测等数据,帮助用户全面掌握车辆状况。软件支持语音唤醒控制导航、打电话,并且主题也可以根据自己的喜好自定义设置,打造专属桌面风格

嘟嘟桌面PRO-比亚迪专享版
嘟嘟桌面PRO-比亚迪专享版

嘟嘟桌面PRO比亚迪专享版官网

https://dudu-lucky.com/auto/byd.html

下载地址

嘟嘟桌面PRO比亚迪专享版怎么设置高德地图插件

1、打开嘟嘟桌面PRO比亚迪专享版app,点击桌面设置功能

2、依次点击桌面-插件设置-导航插件功能

3、选择高德导航车机版即可

嘟嘟桌面PRO比亚迪专享版常见问答有哪些

嘟嘟桌面PRO比亚迪专享版适用车型

嘟嘟桌面比亚迪专享版适配比亚迪全系车型,包括纯电、混动、纯油车型,但需根据车机安卓版本选择对应版本,安卓4系统需安装PROMini版,安卓5及以上可直接安装本页面提供的这个版本

嘟嘟桌面PRO比亚迪专享版收费吗

主题自定义、车况监控、语音控制等本地基础功能是完全免费,无广告干扰

车辆实时定位、行程记录、地理围栏通知等功能需订阅会员才能使用

嘟嘟桌面PRO比亚迪专享版能卸载吗

可通过车机设置 - 应用管理直接卸载

若遇权限问题,可尝试恢复出厂设置或联系售后协助

部分车型需安装其他桌面应用覆盖卸载,操作前建议备份重要数据

嘟嘟桌面其他版及安装桌面注意事项

跟普通软件一样,点击此处下载相应个版本安装即可

警告:某些车型的车机限制安装第三方软件,具体能否使用需要自己尝试

  • 查看自己的车型,嘟嘟桌面Pro版专享版包括:比亚迪专享版、风神专享版、领克专享版、哈弗专享版,跟原车车机做了适配,如果你属于以上车型选择对应的专享版下载使用。
  • 其他车机查看自己的车机安卓版本号及车机种类,根据自己的车机安卓版本号来确定使用哪个版本的车机桌面,其次根据自己的喜好选择喜欢的桌面。
    • 安卓4可安装版本:[嘟嘟桌面PRO Mini]、[嘟嘟桌面普通版]、[嘟嘟桌面Mini版]。
    • 安卓5及以上所有版本均可安装[嘟嘟桌面PRO]、[嘟嘟桌面PRO Mini]、[嘟嘟桌面普通版]、[嘟嘟桌面Mini]
    • 竖屏车机:[嘟嘟桌面普通版]或者[嘟嘟桌面Mini版]
    • 车机是安卓9或者安卓10并且是公签机器,可安装公签版(公签版跟PRO版一样只是多了画中画功能)。
  • 如果你无法确定自己的车机安卓版本号,可先下载[嘟嘟桌面PRO]如果无法安装再分别尝试[嘟嘟桌面PRO Mini]、[嘟嘟桌面普通版]、[嘟嘟桌面Mini]。

注意:

占用内存大小:[嘟嘟桌面PRO]>[嘟嘟桌面PRO Mini]>[嘟嘟桌面普通版]>[嘟嘟桌面Mini]

嘟嘟桌面订阅会员功能

嘟嘟桌面会根据功能收取订阅会员服务费,订阅会员额外提供以下服务

  • 车辆实时定位
  • 行程在线记录
  • 地理围栏通知
  • 共享车机控制和定位
  • 不限制主题的下载次数
  • 比亚迪专享版,额外提供增强型导航栏,3D车况功能
  • 领克专享版,哈弗专享版,额外提供增强型导航栏功能
  •  

Vibe Coding风格主题

vib coding风格的typecho主题

Vibe-Coding

这是一个为Typecho博客系统开发的终端风格主题,采用vib coding设计风格,具有命令行交互界面。用命令行看博客感觉太酷了。

演示

在线预览

下载

功能特点

  • vibe coding风格:纯黑色背景,绿色文字,模拟终端界面
  • 命令行交互:底部固定命令行界面,支持多种命令
  • 动态自我介绍:主页中央有打字机效果的欢迎文本
  • 响应式设计:适配不同屏幕尺寸的设备

支持的命令

  • ls [页码] - 列出博客文章,每页显示10篇,包含标题、日期和摘要
  • cat [文章ID/URL] - 查看指定文章的详细内容
  • about - 显示博主个人简介
  • home - 返回博客主页
  • tree - 以树形结构显示博客归档内容
  • help - 显示帮助信息

开源地址:https://github.com/KysonGeek/vibe-coding-theme

  •  

忙忙忙 再忙小惊喜也要有

blogscn 也运行快一年了,在这一年里我们迎来了很多新朋友。也失去不少老朋友(关站了).马上就是新的一年了,我也仿照其他圈主给大家整理了一个年度回顾!在忙也要赶一个。如果有使用bug请原谅我。哈哈哈!

2025-12-12T09:16:17.webp

另外也对遗留问题做了优化主要是后端,抓取更加快捷了,后期看看在上邮件功能,当大家的站点抓取失败会给大家发送邮件作为提醒!

忙忙忙!溜了

  •  

豆包输入法上手:我觉得就当个语音输入法就行

这篇文章介绍了作者对豆包输入法的测试体验。作者发现豆包输入法换行需手动操作,且换行后语音输入状态取消,无法边输入边编辑。其识别率较高,达 95% 以上,但会保留口语化词汇,输入过快标点可能补全不全。作者还将豆包与微信、iOS 自带输入法对比,指出豆包需联网使用,功能有缺失。综合来看,作者认为若无需大量语音输入,微信输入法更适用,自己将卸载豆包输入法。

  •  

彻底放弃收费 SSL 证书

在一年前的文章中我就质疑过收费 SSL 证书的必要性。到了今年年底,公司的官网证书再次到期,我终于有机会将之前的设想付诸实现。

DigiCert Logo

今年我就没有直接在 DigiCert 官网询价了,不过按照它每年费用的涨幅,我估计今年的价格妥妥要破 2000 刀。说实话花 2000 美元买一个一年多就过期的 SSL 证书,对我们这种不涉及金融等高保密领域的小公司而言还是需要一点勇气的。

DV,OV 还是 EV?

如果你申请过 SSL 证书,一定知道这三者代表证书的三个验证级别,从低到高分别是:

  1. DV(Domain Validation,域名型证书)
  2. OV(Organization Validation,组织型证书)
  3. EV(Extended Validation,扩展验证证书)

DV 下证书最简单,只需要验证你有域名的控制权,一般几分钟就可以拿到证书。OV 麻烦一点,需要验证你的组织是否存在,我们公司之前就是使用的 OV 证书,需要提供 DUNS 码(现在可以直接提供境内的中文企业名称),等待人工审核。EV 我也没用过,据说是更加严格,可能需要人工介入来验证更多的材料。

从 OV 证书往上,由于验证了组织信息,所以你的企业名称也会在证书中体现出来,当然这也是逼格的体现,大公司可以追求这个,小公司实属没有必要,毕竟普通用户也不会有事没事去查看你的证书信息,这种事只有闲着没事干的程序员才干得出来。

百度的 SSL 证书

而 EV 证书,在各大浏览器厂商去掉了地址栏的企业绿标后,再去申请它实属钱多得没地方花了。对于我们公司,在去年我就意识到了连申请 OV 证书都是一种浪费,今年我直接瞄准了最便宜的 DV 证书。

有没有便宜的选择?

Sectigo Logo

有的,在我多方探索之后,发现 Sectigo 这个公司的收费证书非常便宜,当然你别去它的官网申请,一般 SSL 证书产业由于利润丰厚,会有强大的代理体系。直接在淘宝搜索 Sectigo 可以找到一堆国内的代理公司,大致的价格可以做到 DV 的泛域名证书一年 600 元人民币的价格,这相比之前上千刀的价格已经非常便宜了。

但是最终我还是没选择它,原因有二:

  1. 如果是个人用无所谓,但是公司的证书去找一家不知名的代理商来签发,心里还是有点无法接受。
  2. 既然已经便宜到 600 块了,咱干脆一步到位,一分钱都别花岂不是更好。

免费证书

对于免费证书,有一点需要注意,大名鼎鼎的 Let's Encrypt 已经将它的证书有效时间从 90 天进一步下降到了 45 天,这对我们来说是个小麻烦,因此后来选择了更友好的 ZeroSSL

在去年我还在用 certbot 这样的上古工具,今年已经有了国人开发的更好选择 acme.sh。相比 certbot 它不仅做到了申请证书的自动化,还把部署证书自动化也集成了进来,而且由于是使用了 Shell 脚本语言,不需要依赖任何运行时环境。我们公司的域名解析服务商是 dnspod,这在 acme.sh 里得到很好的支持,可以做到全自动 dns 验证下发证书。

当前我把证书自动申请和部署的工作流,放到了 Github Actions 里。做成了一个定时 Cron 任务,每周更新一次证书,这样证书的申请情况可以实时记录,如果失败了也有邮件提醒。而放到 Github 上还有个好处,我可以利用它完善的生态来补充 acme.sh 的能力,比如我们现在部分存储还放在又拍云上,而 acme.sh 并没有针对又拍云的官方部署脚本,又拍云本身也没有开放 SSL 证书的部署 API,但有好心的开发者已经开发出了使用模拟登录的方式来更新证书的 Actions,拿来使用可以极大减轻我们的工作量。

最终效果

几天前我就已经把公司的官方网站,CDN 等等各种域名证书切换到了免费证书上,目前几天使用下来没有任何不适,也没有遇到任何兼容性的问题。虽然证书信息中的公司名称不再显示,但相比这省下来的真金白银还是挺香的。

SegmentFault 的 SSL 证书

  •