一次由 pnpm 小版本差异引发的 PicGo 2.5.3 发布事故

最近 PicGo 2.5.3 发出去没多久,就有人来报了个很怪的问题:应用能装上,但一启动就直接报错,核心信息是 Cannot find module 'esprima'

PicGo launch error

最开始我还以为这事大概率是 macOS arm64 打包出了岔子。毕竟最早的反馈来自 mac 用户,而且 2.5.2 明明还是好的,2.5.3 看起来也没怎么动依赖。结果没过多久,我自己在 Windows 上也复现了。到这一步就知道,事情没那么简单了。

先说结论:这次不是某个依赖“没装上”,也不是代码里手滑删了 esprima。真正的问题出在发布链路上:GitHub Actions 里 pnpm/action-setup 用的是浮动的 version: 10,PicGo 2.5.22.5.3 实际用到的 pnpm 小版本并不一样。偏偏当前 electron-builder 收集生产依赖的方式,又刚好会吃这个差异。

Read more
极空间虚拟机安装 Ubuntu 24.04 踩坑记录

最近想在极空间里装一个 Ubuntu 24.04 虚拟机,主要用来跑脚本和一些小工具。原本以为很快就能搞定,结果重装了几次才跑通。这里把关键步骤和坑点整理一下,尽量让你一次安装成功。

先说结论:安装阶段先不要加网卡,走离线安装;驱动安装那一步不要勾选额外驱动;系统装完后再把网卡加回去。

Read more
PicGo 的签名与公证

一直以来,PicGo 并没有做 macOS 的签名和公证,因为一直没注册苹果开发者账号(其实学生时代需要每年出 $99 确实有点贵),所以就会导致用户下载了 PicGo 之后,会遇到这个问题:

App 损坏提示

这个其实也有办法绕过去。不过近几年的 macOS 更新之后,对于应用签名是越来越严格,以前的一行命令还不够,还需要到系统设置里放行比如所有来源的应用之类的。总之门槛越来越高。同时,Homebrew 将在 2026 年 9 月 1 日开始,对于没有通过签名校验的应用,将无法再通过 brew cask 下载安装。趁着这次打算给 PicGo 做点商业化的机会,我也决定注册苹果开发者账号,然后给 PicGo 上签名了。本篇文章就记录一下 Electron 应用在 macOS 上做签名和公证的过程。

Read more
写在 PicGo 即将 8 周年之际

2017 年 11 月 28 日,还在大学宿舍里的我,提交了 PicGo 的第一个 commit,距今已经 8 年。现在看来,时间是过得真快啊。

如果你不知道 PicGo 是什么东西,也不会妨碍你阅读。从我提交它的第一个 commit 的那刻起,命运的齿轮就已经悄悄开始转动。我的研究生生涯、实习、工作都有它的影子,甚至我自己想要做的事情,我想学习的东西,也受到它很大的影响。

正巧前段时间,前微信的一个同事发的一篇文章《从广深到北美——本科毕业这四年》也让我内心深深地触动。因为我跟他一样,我也问过我自己这个问题:“我想过一个什么样的人生”。

Read more
Vite 原理浅析

已经好久没有写博客了。本文不说 Vue3.0 了,相信已经有很多文章在说它了。而前一段时间尤大开源的 Vite 则是一个更加吸引我的东西,它的总体思路是很不错的,早期源码的学习成本也比较低,于是就趁着假期学习一番。

本文撰写于 Vite-0.9.1 版本。

Read more
Typora 支持 PicGo 来上传图片了

Typora 最近的一次更新支持图片自定义图片上传服务了,增加了对 uPicPicGo 以及自定义上传命令的支持。其中针对 PicGo 和 PicGo-Core 都做了兼容,可以说非常有诚意了。本文会简单介绍一下如何配置并使用。

Read more
用setTimeout和clearTimeout简单实现setInterval与clearInterval

这个问题其实是前一段时间舍友的一道面试题。我觉得类似用reduce实现map、用xxx实现yyy的题目其实都挺有意思,考察融会贯通的本领。不过相比之下这道题可能更有实际意义。比如我们经常会用 setTimeout 来实现倒计时。下面来说说我对这个问题的思考。

Read more