软件使用技巧

如何修复 Failed to load JVM DLL 错误

在一台全新的 Windows 10 21H2(19044.1706) 系统上安装了 IntelliJ IDEA。启动 IDEA 时报错,错误信息为:Failed to load JVM DLL

Error Launching IDEA

IDEA 和 JDK 都是通过 scoop 安装的,确信安装没有问题。环境变量 JAVA_HOMEJDK_HOME 都设置正确。通过 Stackoverflow 检索发现,有人通过 Run As Administrator 可以解决此问题。遂测试之,发现成功。虽然非常奇怪:以前无论是通过 scoop 安装还是手动安装,都从未碰到过这个问题。

……

    如何修改「OneDrive - Personal」文件夹名称

    新版本OneDrive会自动覆盖注册表设置,此方法已不再适用。

    微软 OneDrive 分为企业版和个人版。先前都统一显示为「OneDrive」,但是在某次系统升级后,个人版会加上后缀,变成了一个超级长的名字:

    onedrive

    通过修改注册表可以去掉这个后缀。运行 regedit.exe 打开注册表编辑器,定位到 HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6} 分支,右键新建字符串值,键值名称为 LocalizedString,值为 OneDrive,当然也可以修改成自己喜欢的名称。

    ……

    小众桌面操作系统

    ReactOS

    ReactOS 是一个开发与 Windows NT 和 Windows 2000 应用程序和硬件驱动程序兼容的开源操作系统的项目。

    该项目从发起至今已有 20 余年,但由于种种原因,目前仍然处于 alpha 状态。

    Haiku OS

    Haiku 是一个开源软件项目,开始于2001年。目标是创立一个与BeOS 兼容的自由操作系统。2004年前,它称作 OpenBeOS。

    Haiku 采用 C++ 语言开发,并提供面向对象的应用程序接口。Haiku 计划与 BeOS 在二进制与源代码上皆兼容。

    ……

    Windows Shell Folder

    什么是 Windows Shell

    Windows Shell 是 Windows 操作系统的用户界面。具体地说,用户在登录后看到的桌面、开始菜单、任务栏,以及打开资源管理器看到的操作界面都属于 Windows Shell 的一部分。Windows Shell 实现了一套树形组织结构,称作 Shell Namespace。它包含两种基础对象,即「文件」和「文件夹」, 「桌面」是 Shell Namespace 的根对象。

    文件夹是 Shell Namespace 树中的节点和容器,它可以包含子文件夹对象和文件对象。Shell Namespace 中的对象可以表示文件系统对象,也可以是虚拟对象,例如,控制面板、回收站、我的电脑(此电脑)、桌面、网络等对象。这些特殊的虚拟文件夹称作 Shell Folder。

    ……

    汉化 foobar2000 的一种方案

    PE(Portable Executable)格式是 Windows 下可执行文件的标准格式。PE 文件中包含菜单、对话框、字符串等资源数据。汉化的原理就是使用 Resource Hacker 或 eXeScope 等 PE 文件资源编辑软件,用中文替换掉资源中的英文。

    然而,foobar2000 的菜单并没有使用资源的方式保存在 PE 文件中,也未使用字符串资源。除了部分对话框资源可以用资源编辑器行汉化之外,其余诸如菜单、按钮、列表等,均无法采用上面的方法进行汉化。这些用户界面上的字符串都是以静态数据的方式保存在 .rdata 节中。现在需要定位这些 PE 文件中的静态字符串。用十六进制编辑器打开 foobar2000.exe 文件,可以看到这些字符串。但是手工定位非常繁琐,可以采用 strings 命令来简化操作。

    ……

    配置音乐播放器 foobar2000

    foobar2000 是一款老牌的免费音乐播放器,作者是 Winamp 开发组 Nullsoft 的成员。它的特点是界面简洁(陋),并提供丰富的解码器和插件,可配置性高。也正因为如此,这款播放器在没有配置的情况下用起来并不趁手。虽然网上有各种爱好者发布的开箱即用的打包版本,不过出于安全性考虑,不建议使用这些第三方发布的版本。

    安装播放器

    官网下载地址:https://www.foobar2000.org/download,当前最新版本是 1.6.9

    ……

    Windows 包管理工具

    几乎每个 Linux 发行版都会自带包管理工具,比如 CentOS 的 yum、Debian 家族的 apt、Arch Linux 的 pacman 等;此外,FreeBSD 系统有 pkg 和 ports;macOS 上有 Homebrew。而 Windows 长久以来都是通过安装包来进行软件分发部署,官方没有提供任何包管理工具,且 Win 10 自带的微软应用商店一直被人诟病。直到 2020 年,微软通过抄袭另一款开源 Windows 包管理工具 AppGet 之后,开发出了一款叫做 WinGet 的包管理工具,但微软的这款工具只能运行在 Win 10 系统上。令人遗憾的是,由于微软的抄袭行为,AppGet 的作者已经停止维护这个项目。

    ……

    解决 curl 无法获取本地发行者证书问题

    问题

    当使用 curl 命令打开 HTTPS 网站,比如:

    shellcurl -sSL https://www.github.com/

    显示如下错误:

    curl: (60) SSL certificate problem: unable to get local issuer certificate

    根据错误信息可以得知,问题是 curl 找不到本地的 CA 证书所导致。

    解决方案

    首先,下载 CA 证书:https://curl.se/ca/cacert.pem

    1. 不验证 TSL 证书:
      • liburl:curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
      • 命令行:添加参数 -k--insecure
    2. 指定 CA 证书:
      • liburl:curl_easy_setopt(curl, CURLOPT_CAINFO, cacert);
      • 命令行:添加参数 --cacert /path/to/cacert.pem
    3. 使用环境变量(仅命令行):set CURL_CA_BUNDLE=/path/to/cacert.pem
    4. 对于 Windows 下的 curl 命令,将 cacert.pem 重命名为 curl-ca-bundle.crt,并保存到以下路径之一:
      1. curl.exe 命令所在路径;
      2. 当前工作路径;
      3. Windows 系统路径(C:\Windows\system32);
      4. Windows 路径(C:\Windows);
      5. 任意 %PATH% 路径。
      搭建 iOS 平台的个人通知推送服务

      Bark 是一款可以给 iOS 系统推送自定义通知的开源应用,用户可以通过 HTTP 接口向自己的手机或者 iOS 设备推送消息。应用内置了公共服务器,软件作者也提供了开源的服务端用于搭建个人推送服务器。此外,还可以通过 Chrome 浏览器扩展来调用推送接口。

      部署服务端

      应用内置了公共服务器,如果你没有隐私方面的需求,可以直接使用公共服务器进行推送。但是为了稳定性和私密性,建议自己搭建服务器。

      ……

        使用 GitHub Actions 自动部署 Hugo 站点

        一直使用 Hugo 来生成静态网站,并通过 Travis CI 来自动化部署到 GitHub Pages。今天偶然得知 travis-ci.org 将于五月底关闭,正好趁此机会用 GitHub Actions 来替换 Travis CI。

        创建代码仓库

        首先按照文档创建 GitHub Pages 站点。该仓库可见性必须是 Public。

        另外创建一个仓库用来存放 Hugo 的源文件,名称随意,这里假设仓库名叫 pages-hugo-source。建议将仓库可见性设置成 Private 以保护好你的源代码。

        ……