2025-09-12 06:40:16
tldr, 首先尝试去 App Store -> 头像 -> Apps -> My Apps 从已购买列表重新下载,如果购买列表内也找不到,则需要从保留该应用的旧设备导出 IPA 文件用 iMazing 安装;如果你在意应用可能被下架,最好关闭 "Offload Unused Apps" 功能(设置 -> App Store),防止本地应用被删除导致无法备份。
不管是 iPhone 换新机或是去 Apple Store 维修,需要从 iCloud 恢复旧手机数据,又或者是打开了 iOS 17 后推出的 Offload Unused Apps (本意是为了节约手机宝贵的存储空间),你一定会发现在手机某些 App 上出现了小小的下载图标。
(A screenshot of iOS showing offloaded apps, source: r/ios)
iOS 备份并不像时间机器一样全盘备份,而是保存了应用的 iTunes 链接,在恢复备份时重新从 App Store 下载下来。大多数情况,点击 offloaded app 图标后会将其重新下载下来,但是偶尔也会出现以下这种情况,提示你无法下载,应用已经从 App Store 下架。
(source: https://talk.macpowerusers.com/t/offloaded-app-removed-from-app-store/17436/3)
如果出现这个提示而你仍想要这个应用,那么最简单的方式可以去 App Store -> 右上角头像 -> Apps -> My Apps 找到所有已经购买的 App (包括已经下载的应用),这种情况通常发生在开发主动将应用退出 App Store (Popclip) 或者老版本被全新的应用替代 (Reeder 4)。这些应用仍能够通过已购买列表重新下载。
当然如果你运气不好,会发现部分 App 在已购买的 App 列表中也无法找到(即使这些 App 是非常合规的、非钓鱼、非低质量),reddit 上有很多这样的案例,我自己也发现了一两个这样的例子 - 个别从 App Store 下架的应用会因为各种原因从购买列表中也完全移除,彻底被苹果封锁从服务器下载的方式。
此时如果你仍有旧设备或者其他同 Apple ID 的设备上仍然保留有这个应用,那么就可以从旧设备中中导出IPA,并以 Imazing 将其安装在新设备上。具体步骤可以见这个帖子。如果你没有保存本地应用,那只能和这些应用说拜拜了,虽然大概率这个 App 也会是你不再需要的。
但是以防万一,如果对你来说重要的 App 可能甚至已经从 App Store 下架,那么最保险的方式便是进入设置关闭 Offload Unused Apps (Settings -> Apps -> App Store -> Offload Unused Apps),并且尽可能在换机前保留旧手机上的应用、或者使用 iMazing 等应用做个全局备份。这样即使发现恢复后的新手机上应用被双下架时,也可以通过 IPA 安装。
如果你比较随缘,并不在意本地应用被删除 Offload,那么打开这个功能也无妨,当换机来临时,被下架的应用自然会被 Offload。
最后岔开个话题,在我闲来无事翻看 2012 年在 iPod Touch 上下载的旧应用,发现这些应用即使下架了这么久,Appraven 仍然可以看到当年的 App Store 截图和信息,比如以下这个。
2025-09-05 04:53:26
我总是容易一时兴起,再加上囤积症 + fomo,会花很多时间关注一些感兴趣的内容,最后时间过去,或是兴趣的转移,或是源头已变味,又不得不花大量的时间去整理 - 取关和清除。兜兜转转,花了两倍的精力。
一些曾经关注的 B 站 up 主,不知是卖号了或是其他原因,开始制作一些营销内容。比如说我关注的 r/macapps,自从 AI 浪潮以来,充斥着粗制滥造的 AI app,捞一笔用户而跑路。以前的我可能会把感兴趣的 app 试过,写下自己的使用感受和对比评测,现在我大概能和自己和解了 - 不值得!文字内容也如此,大量 AI 产生的垃圾每时每刻不停产生,蚕食真正有意义的内容。短视频就更不用说了。
更加令人唏嘘的是,互联网的内容正在被各大平台自建高墙,还在其内塞满了糖衣和广告,圈养着创作者和消费者 - 创作者绞尽脑汁迎合平台算法的推荐,企图能获取一点点的流量、推广,而产生的语料被用来训练大语言模型,来继续生产垃圾。另一方面短平快的内容和 for you 不断刺激和消费读者的注意力,最后通过广告营销内容从中获益。一个“完美”的闭环。
当然 AI generated content 并不应全盘否定,但应保留作为人的批判思考和创造力。 互联网也并不是一味的垃圾,但找到好东西有如大海捞针。
写这篇的背景是在整理订阅源的时候发现,很多曾关注的有意思的博客主已经停更了,只有 Freshrss 中的文章存档还能留下 Ta 的一点足迹,当然这或许是一件好事,背后可能意味着博主更加关注现世生活和身边的人。
希望有一天我能真正做到 Minimalism,在网上和在生活中。 杜绝垃圾。
一点胡言乱语的垃圾。只为自己和解。NOT BY AI。
相关:
2025-08-26 01:46:18
前几天升级了 macOS Tahoe 之后,开始逐步从 Chrome 转移到 Safari。这里推荐几个扩展,会持续更新。由于扩展必须上架 App Store,开发者必须交 99刀的年费,所以很多扩展即使是开源的也不一定是免费的。很多插件在手机上的体验也很好。
pplx
, gpt
, a
等自定义关键词快捷搜索 perplexity,chatgpt,amazon 等。在手机上使用的意义更大些,可以不用下很多 web 套壳 app,电脑上用 Alfred/Raycast 的 websearch/quicklinks 可能就够了。另外 Alfred 有很多 Safari 相关的插件,比如说搜索 tab 历史记录,切换 Profile,这里就不多做介绍了。
https://alfred.app/search/?q=safari
欢迎大家留言推荐更多好用的 Safari 扩展。下回考虑写个在用的油猴脚本。
2025-06-30 22:26:44
搬家之后,家里的宽带从原来的 Virgin Media 1000 Mbps 下行100 Mbps 上行换到了 Hyperoptic 1000 Mbps 上下对等的光纤,价格都在37英镑每月,原以为是一次各方面的升级,结果却发现 Hyperoptic 并没有提供公网 ip(VM 提供公网 ipv4 在套餐内),如果要开通则需额外付5英镑每月。
原本一些运行在 nas 上的服务通过 OpenVPN 提供自组网内访问,但是考虑到安全问题,我并没有把 VPS 加入自组网,如果确实需要访问 nas 中的特定服务则通过路由器端口映射和防火墙提供给 VPS 访问。没有了公网 ip 之后,无法将服务端口映射开放,只能另寻其他解决方案。
之前在用 OpenVPN 的时候,也尝试过 Tailscale、Netbird 等自组网,现在为了让 VPS 也能访问到 nas 上的特定服务就必须要把 VPS 也加入到 Tailscale 网络,但是我又不想要 VPS 能够访问 Tailscale 网内的所有设备所有服务,就需要限制 VPS 只允许访问内网特定设备的特定端口 - 通过设定 ACL 规则。
这里贴出我的部分配置方案,去除了默认 grants 中允许所有连接的配置,加上了两条规则,仅允许 VPS 访问 NAS 的13333端口以及其他所有设备和 nas 互联。
{
// Define the tags which can be applied to devices and by which users.
"tagOwners": {
"tag:nas": ["autogroup:admin"],
"tag:vps": ["autogroup:admin"],
},
// Define grants that govern access for users, groups, autogroups, tags,
// Tailscale IP addresses, and subnet ranges.
//"grants": [
// Allow all connections.
// Comment this section out if you want to define specific restrictions.
// {"src": ["*"], "dst": ["*"], "ip": ["*"]},
//],
// Define users and devices that can use Tailscale SSH.
"ssh": [
// Allow all users to SSH into their own devices in check mode.
// Comment this section out if you want to define specific restrictions.
{
"action": "check",
"src": ["autogroup:member"],
"dst": ["autogroup:self"],
"users": ["autogroup:nonroot", "root"],
},
],
// 定义访问控制规则
"acls": [
// 规则一:允许所有设备互相访问所有端口。
// "autogroup:member" 代表 Tailscale 网络中的所有用户及其设备。
{
"action": "accept",
"src": ["autogroup:member"],
"dst": ["autogroup:member:*", "tag:nas:*"],
},
// 规则二:仅允许 VPS 访问 NAS 的13333端口。
{
"action": "accept",
"src": ["tag:vps"],
"dst": ["tag:nas:13333"],
},
],
// (可选) 添加测试以验证规则是否按预期工作
"tests": [
{
"src": "tag:vps",
"accept": ["tag:nas:13333"], // 应该允许访问 13333 端口
"deny": ["tag:nas:5000"], // 应该拒绝访问 5000 端口
}
],
}
配置完成后,如果测试成功则会正常保存配置文件,接下来回到管理设备页面为 nas 和 vps 分别打上标签即可。
另外我发现群晖使用 tailscale 的时候似乎无法通过 tailscale ip 来 ping 内网内的其他设备。
sudo ping 100.xx.xx.xxx # 这条会失败
sudo tailscale ping 100.xx.xx.xx # tailscale ping 却能成功
pong from (vps)xxx via 173.xxx.xxx.xxx:xxxxx in 87ms
似乎和这个 bug 有关。
2025-03-23 06:05:54
I found Pagefind as a full text search for static sites.
Pagefind is a fully static search library that aims to perform well on large sites, while using as little of your users’ bandwidth as possible, and without hosting any infrastructure.
So I added a small search button on the homepage and asked Claude to modify the style a bit. The best thing about this tool is that it is also a static index, meaning you don't have to keep the index server running in the back ground, once the index is generated, and the following snippet added to a page of your choice:
<link href="/pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/pagefind/pagefind-ui.js"></script>
<div id="search"></div>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
new PagefindUI({ element: "#search", showSubResults: true });
});
</script>
You're good to go, it works perfectly with GitHub pages (what I'm using currently) or any other website framework such as Hugo. Alternatively, you can use it as a web server to host your static pages (add a --serve flag in the end, maybe it can update the index while new pages were generated).
Try it out in my blog!
2025-03-05 23:09:38
You don't need to work on hard problems - Ben Kuhn
I just came across this interesting article. I have to agree on how the problems (and how you are evaluated) in school set deliberately to be linear or 1 dimensional. While in real world, problems tend to be multi-dimensional, which relies on both so-called soft skills and hard skills. However, it is also exactly the same reason that there is no other place than school, that you'll been evaluated in a fair, straight-forward way.
I am not saying that you don't need to work hard in school. However, what school really taught us was really far beyond solving hard problems.