落格博客最早是运行在虚拟主机上的,只能通过面板操作,也没什么权限,使用起来非常别扭。再加上反正弄了服务器跑翻墙代理服务,那干脆就将博客搬迁到了 VPS 上。因此也就开始了我的 vps 折腾之旅。一转眼十年过去了,我后来也固定在 Vultr 的 VPS 上跑了 4 年。当然,这中间很多事情发生了,我做了 cnswift, 做了落格输入法,还有落格输入法的 macOS 版本……于是这个 20美元一个月[……]
当新刷好的树莓派镜像启用时,你有可能会遇到奇怪的 apt 错误:
|
1 2 3 4 5 6 7 8 9 |
root@raspberrypi:/home/pi# apt install default-jre Reading package lists... Done Building dependency tree... Done Reading state information... Done Package default-jre is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'default-jre' has no installation candidate |
当然,不止这一个,安装任何包都会是 Package xxx has no installation candidate
首先查看你的 /etc/apt/sources.list ,看看里边的源地址是不是都被注释掉了,这里我的是正常的。[……]
For AP and STA mode, the AP acts like a gateway, STA is the end device. One AP can link to multiple STA, the STA.
A basic fresh start steps:https://docs.alfa.com.tw/Product/A[……]
等了好久,终于等到 VMWare 预览版发布支持 Arm 版 Win 11. 现在我们就一起来试试在 macOS 12.5 上装 Windows 虚拟机。
首先,你要有一个 VMWare 账号,这样才能从 VMWare 官网下载技术预览版 Fusion。 https://customerconnect.vmware.com/downloads/get-download?downloa[……]
我们刚刚讨论了 macOS 平台第三方输入法的生命周期到底是怎样的?,现在趁热再来聊聊 iOS 平台的第三方键盘生命周期。
在苹果官网,也就只有个这:
这看起来似乎很容易理解,键盘的生命周期是系统管理的,每次用户呼出键盘,就它就启动,用户收起键盘,过一会它就被消灭了。
但有了前文对 macOS 输入法框架的生命周期的经验,我们再来看 iOS,真的是这样吗?在苹果开发者文档[……]
在5年前,我曾写过一篇基于动态规划的整句输入法的文章,文章末尾提到了拼音拆分的问题,由于当时落格输入法主要针对双拼,实际上并不需要进行拆分,只要两两拆开就好了。(这是我推崇双拼的另一个原因,毕竟少了一个技术难点)
后来落格输入法支持了全拼,并且开始给全拼进行优化,才发现原来拼音分词,甚至比中文字分词还要难。
不少人一提到拼音分词,首先就想到了去和英文分词类比,其实不太准确,它们虽然从形[……]
安装 TensorFlow 时,遇到一个依赖 h5py,这个包无论如何无法成功安装,报错无任何可用信息:
|
1 |
ERROR: Could not build wheels for h5py, which is required to install pyproject.toml-based projects |
这就很难办了,查看日志发现原来是没有针对 m1 的二进制包,自动进行编译了。但编译报错说找不到头文件:
|
1 2 3 4 5 |
./h5py/api_compat.h:27:10: fatal error: 'hdf5.h' file not found #include "hdf5.h" ^~~~~~~~ 1 error generated. error: command '/usr/bin/clang' failed with exit code 1 |
于是使用 brew 安装缺少的库,搜索之下,还真有[……]
之前 Mac 启动组合键大全 恢复模式 recovery mode 中提到了联网恢复的问题,实际上最终我无法成功使用联网恢复,原因是我的硬盘是 NVMe 的,但我手头已经没有原装的硬盘可以使用,于是我无法通过降级再升级的方式将主板固件更新,这就导致最新的恢复模式用不了,旧的恢复模式不识别硬盘。
为此,我需要做一个刚好不那么新,但又足够新到支持 NVMe 的安装盘,毕竟,要安装系统,总要先进到[……]
最近升级了新款的 MacBook Pro,已经在用 m1 pro 芯片了。 不过,旧款的 2015 年老笔记本我也不打算把它卖掉了,毕竟我买的时候是二手,如今电池也换过两块了,硬盘也是自己加了转换头换了 NVMe 。把它装个 Windows 专门打一打游戏也是很不错的。
但在进入恢复模式时遇到了问题,M1 芯片的设备已经大大简化了这个操作需求,只要一直按着开机键,就会弹出全部启动选项,不再需[……]
通常,你不会遇到这个问题,直到你需要写一个后台程序……
我们都知道 macOS 有一个全局的 Dock,这个东西上会显示所有正在运行的程序,但如果你的程序是一个菜单栏小程序,或者是一个……输入法,那你肯定不想让这个 app 的图标显示的 Dock 上,因为这类 app 是要持续在后台运行的。
这时候我们就可以在 Info.plist 中写 [crayon-6908a8c0e991c89[……]
最近更新到了 macOS Monterey, 半夜总会被屏幕照醒,就觉得很诡异,以前也有过,但都是有通知的时候才会点亮屏幕,现在是没有任何理由的自己点亮,硬件还是那个硬件,那就应该是软件的锅了。
在网上查了一圈,先是找到了苹果官方的教程:https://support.apple.com/zh-cn/guide/mac-help/mchlp2995/mac
写的很详细,但显然是没有任何[……]
我一直是用 rbenv 的,直到这次更新了 cocoapods 后,执行报错了,当然,目测应该是我的 ruby 环境太旧导致的,于是我尝试 rbenv install 3.0.2 ,但很遗憾,报错了,去 rbenv 的官方仓库看了看,上一个版本还是 2019年……好吧,放弃它,删掉所有的版本后,我发现其实我一直用 brew 装了最新版的 ruby,就直接用起来了。[……]
最近发现服务器每次 apt upgrade 都非常慢,究其原因,还是一大堆不用的内核每次都要重新生成,清理的时候遇到一个问题,*号匹配不生效,每次都必须手动输入完整的内核名称才能将其卸载。
一通踩坑后发现,原来是因为我用了 zsh,而 zsh 默认是不支持 * 号通配的!要开启这个功能也很简单,找到你的 zsh 配置文件 vi ~/.zshrc [……]
使用 SwiftUI 的一大收益就是可以像 Flutter 那样对 App 进行热更新,改动了UI的代码,会直接反映在模拟器或者是真机中,大大提升了编写用户界面的效率,不用改1px,运行,各种点击,然后查看效果的循环往复。但现在使用 SwiftUI 还为时过早,毕竟还是有大量 iOS 12 设备在运行,想要做大众软件,那还是要支持的。
那么,有没有办法能让 UIKit 编写的软件也能用上实时[……]