这两天在想如何让 Obsidian 的使用体验可以无处不在,虽然现在手机端 Android 和 iOS 都有了客户端,并且桌面版也都有,我大部分使用 Obsidian 的使用场景也能够满足,但是我个人不习惯在 iOS 上使用 Obsidian,我使用 [[Syncthing]] 来同步我的笔记库,但是 iOS 上一直没有找到一个比较合适的同步客户端,虽然之前也买过一年的 Obsidian Sync 服务,但是感觉其提供的服务目前还没有产生那么价值,所以之后就停止续费了。但这就带来一个问题,就是我在移动或者手机端的时候不是非常方便,虽然之前在手机端记录的需求还挺少的,但是有些时候想要随手查询自己的笔记还是挺麻烦。
就当我有这个麻烦的时候,有一点看 [[Reddit]] 的帖子,发现也有人问 Obsidian 是否提供了网页版,或者有没有 Self-hosted 的网页版本方案,虽然我浏览完所有的回复,没有看到几个比较符合的解决方案,有人说可以用 Visual Studio Code 打开自己的仓库,也有人说可以将笔记库提交到 GitHub,然后就有了一个在线的文件,但我在评论中看到了一个评论,那就是本文的主角—- Neverinstall。
Neverinstall 是一个私人的云电脑,看他给自己起得标题就能看出来 —- Your personal cloud computer powered by AI。这个宣传语中的 AI 具体体现在哪里呢? 就是登录进其后台时,可以通过对话的形式,让 AI 自动给你构造一个工作环境,比如说你说想要一个网页应用的编程环境,那 Neverinstall 就可以根据你的需求,自动创建一个工作区,然后在工作区中安装必要的工具,比如浏览器,IDE 等等。
免费版本的环境,提供 6 个虚拟核 12 GB 内存, 以及 100 GB 磁盘空间,也是非常慷慨了。
不过免费版有一个限制就是,如果 3 分钟没有使用那么就会暂停(睡眠),并且每一次使用都有 30 分钟的限制,每一次使用(Session)之间需要等待 1 个半小时。 不过我个人体验来说,从暂停状态恢复过来的等待时间还能接受,基本上半分钟之内。但是每次使用有时长限制就会影响使用了。
如果有这个时长限制那就还不如我在 VPS 上安装一个 VNC 远程连接过去了。
Neverinstall 将用户体验流程做得非常完善,在其网站中,只需要鼠标点点,选择需要的应用,然后选择安装在哪里(什么节点),然后短短几十秒的时间就构造了一个环境,然后可以直接在浏览器中打开这个虚拟桌面,在测试的过程中,我选择了 Chrome 和 Obsidian ,然后可以看到构建成功的桌面上自动就有这几个应用,直接点开应用也能直接使用,比如我用 Chrome 点开一个 YouTube 视频,然后右侧打开 Obsidian,这个过程虽然能看到在系统 UI 资源上做了一些精简和优化,但是整体使用流畅度还可以。
可以看到的是这个一个 Debian 的操作系统,并且安装了 Xfce 的桌面。
打开终端看看 htop
Neverinstall 的整体体验还不错,但是毕竟还是有使用时长的限制,所以 Obsidian 的需求看来还是满足不了。但是如果有临时性的需求,比如在 Windows 电脑上,有一些命令想要用一个 Linux 环境执行一下,临时使用一下这个环境倒是也好不错,毕竟几分钟的时间内就可以马上 Boot 进去,开始使用。
之前在 Mercari 看到一台二手的 Mac mini M1 16+512,看在便宜的份上(76500 JPY)就买了,正好替换一下当前用的有一点卡顿的 Intel,M1 的芯片完全能够处理我当前的任务,所以借着这篇文章记录一下初始化 Mac mini m1 的过程。
之前看 [[Terraform]] 和 [[Ansible]] 的时候了解到了「文本定义基础设施」,虽然这两个说的是去定义云服务,但是在我本地去设置 Mac mini 的时候,也可以通过类似的方式来定义我需要安装的基本软件,基本配置等等。
因为我的所有的配置文件都以配置文件的方式存放在了 dotfiles 项目中,我所有的服务器配置都使用 Ansible 定义好了,放在另外一个仓库,所以在初始化 Mac mini 的过程中也正好来更新一下 dotfiles 的配置,这样每一次我拿到一台新的电脑只需要执行一下自动化脚本,等跑完就可以完全恢复我的工作环境了。
因为脚本依赖 Homebrew 所以开始先安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
然后有一些基础的工具
brew install git vim tmux
然后就是 clone 我的项目
git clone git@github.com:einverne/dotfiles.git
cd dotfiles
make mac
然后根据我的配置自动完成设置。
ssh 配置信息
scp -r ~/.ssh einverne@mac-mini-ip:~/
配置我的输入法 Rime
scp -r ~/Library/Rime einverne@mac-mini-ip:~/Library
最后就是通过 [[Syncthing]] 来完成我的数据同步。
之前在 Twitter 上看到一些人开通了新加坡的 OCBC 银行账户,并且拿到了实体卡,于是在我的 Todo List 中也加上了一个 OCBC 银行注册。但是因为现在人在日本,所以 IP 地址可能会让 OCBC 审查拒绝,但好在今天下午在家弄 [[Tailscale]] 的时候,正好把老家那台 QNAP TS-453B mini 升级了一下 1.50 版本,也正好设置一下作为 Exit Node,然后用 iPhone 测试了一下,发现速度还不错,就正好把 OCBC 也申请了,正好做一下测试。
分别在 QNAP 和 iPhone 上安装 Tailscale 的客户端,然后设置 QNAP 上的节点为 Exit Node,在 iPhone 上使用 QNAP 作为网络出口,然后就可以在百度中搜索 my ip,来检查一下当前的 IP 地址位置。确定是在家中的地址之后,就开始了 OCBC 的申请。
华侨银行,英文全称 Oversea-Chinese Banking Corporation Limited(OCBC)是新加坡第二大银行,三大本地银行之一,总部设在新加坡。华侨银行 1932 年由三所银行合并而成:1912 年创办的华商银行,1917 年创办的和丰银行以及 1919 年创办的旧华侨银行。
华侨银行是新加坡历史最悠久的银行之一。华侨银行曾连续多年被评为“全球最安全银行”前三名。OCBC 在新加坡设有 36 家分行,其中 15 家分行是星期天也办工(11 AM-7 PM)。另外,华侨银行和大华银行的提款机是共用的,可以使用全国超过 1,000 台 ATM 轻松自助办理提、取款、转帐等业务。
新加坡主要有三大本地银行,星展银行 DBS,华侨银行 OCBC,大华银行 UOB,其他就是一些中资银行,外资银行。
哪些地区可以申请, OCBC 支持以下地区的申请:
GPNAGDOS
入金激活后奖励 15 SGD先去苹果或者 Google 商店搜索“OCBC Digital”进行安装,或者直接访问下面的地址:
下载“OCBC Digital”根据界面要求如实填写信息,邀请码填写:GPNAGDOS
,使用邀请码后 1 个月内入金 1000 SGD 可额外获得 15 SGD 赠金。如果 APP 打开闪退或者黑屏请尝试完全关闭后重新打开。大致步骤如下:
信息务必真实填写(注意不要填写自雇,可能会要求提供额外的信息),整个申请过程大概几分钟完成,填写信息完成,可能立即就能收到短信,但如果中途信息出现问题,也可能会触发风控,会进行人工审核,审核周期一般是 7 个工作日内。
同时开户过程中的一些信息,记录到 [[Bitwarden]] 中:
核过程中请不要退出“OCBC Digital”当前用户状态,不然后面审核通过后可能您无法登录。
默认情况下会开通两个账户:
这 2 个账户可用来收款或者对外转账。
360 账户是默认不会启用的,但是只有 360 账户才会有实体卡片,开通该账户之后马上会发行虚拟卡和实体卡,通过挂号信的方式寄送。
如果要在 Apple Pay 中添加虚拟卡,最好是将手机语言调整为英文,并且将手机的时区和国家调整为新加坡,否则可能会添加失败。
之前在 Twitter 上看到一些人开通了新加坡的 OCBC 银行账户,并且拿到了实体卡,于是在我的 Todo List 中也加上了一个 OCBC 银行注册。但是因为现在人在日本,所以 IP 地址可能会让 OCBC 审查拒绝,但好在今天下午在家弄 [[Tailscale]] 的时候,正好把老家那台 QNAP TS-453B mini 升级了一下 1.50 版本,也正好设置一下作为 Exit Node,然后用 iPhone 测试了一下,发现速度还不错,就正好把 OCBC 也申请了,正好做一下测试。
把 Tailscale 家中的节点设置成 Exit Node,然后在 iPhone 上安装,加家里的节点作为出口节点,然后就可以在浏览器中 搜索 my ip,来检查一下当前的 IP 地址位置。确定是在家中的地址之后,就开始了 OCBC 的申请。
首先保证 Wise 的新加坡账户 SGD 有 1000 余额,然后通过转账直接转账到 OCBC 即可。
一旦入金成功,那么 OCBC 会将 15 SGD 的礼金放到账户中。
跨境转账的过程中有几个东西是必须提前知道的
OCBCSGSG
那么剩下的以 XXX 补充,即 OCBCSGSGXXX
63 Chulia Street #10-00, OCBC Centre East, 新加坡 049514
63 Chulia Street #10-00, OCBC Centre East, Singapore 049514
完成 OCBC 账户激活之后,通过 App 开通 360 账户。STS 账户是没有实体卡片的,如果要实体的银行卡片可以通过申请 360 账户来获取 Debit Card,并且 360 账户开通后也可以开通虚拟卡信息,直接绑定 Apply Pay。
OCBC 网页版的登录地址,要求填写注册时的 Access Code 和 PIN。然后就根据网页上的指示,通过手机的 Token 验证即可。
通过网页版才能开通 GSA 账户默认的美元之外的账户。 在网页版,在登录中,使用个人登录。使用 Access Code 和 PIN 登录。登录之后,在 Global Savings Account 添加外币,即可。
如果怕注册时的地址填写不准确,可以通过菜单栏的修改邮寄地址来修改。另外 OCBC 不会将手机号码写在挂号信上,所以有些人建议直接在地址栏最好,附加上自己的手机号信息。
默认账户,年利率 0.05%
账户开通后无借记卡。如何申请关闭 SSA 账户。
多币种帐号,包含 USD,HKD,CNH,JPY,EUR,GBP,AUD,CAD,CHF,NZD 等。账户无管理费,关联借记卡之后消费无货币转换费。
360 账户,2 SGD 每月 管理费,存入 3000 SGD 可免。
默认有一张借记卡。
可另外开通的 SGD 账户,基础年利率 0.05%,每个月存入大于 50 SGD 并且只存入,不取出,年利率 0.1%。
账户管理费 2SGD 每月,存入 500 免除 。
MSA 账户的开通入口在 https://internet.ocbc.com/internet-banking/,选择账户类型为”Monthly Saving Account”。
可以通过官网查看更多。账户第一年免收管理费,从第二年开始收取。
实体卡使用费用
在开户 6 个月内申请关闭会收取费用,360 账户或 SSA 账户如果连续 6 个月余额为 0 会被自动关闭。
最后如果有任何问题,可以加入群组一起讨论。
之前的文章中已经详细介绍过纯文本记账软件 [[Beancount]] 是什么,以及怎么使用纯文本的文件来记录和管理自己的资产,负债,支出等等,但是 Beancount 毕竟还是纯文本的工具,不能直观地查看账本中的信息,这篇文章就介绍一下 Fava,Fava 是一款可以帮助用户将 Beancount 账本信息展示出来,查看,分析的 Web 工具。
Fava 是一个基于 Flask 框架开发的 Web 应用程序,它可以将 Beancount 账目文件解析并在浏览器中以直观的方式展示出来。使用 Fava 可以方便地查看账目的各种统计信息、生成报表以及进行筛选和搜索。
Fava 提供的功能包括但不限于:
要使用 Fava,首先需要安装它。可以通过 pip 命令来安装:
pip install fava
安装完成后,可以通过以下命令来启动 Fava:
fava /path/to/主账目文件路径
等程序启动之后,在浏览器中打开 http://localhost:5000 即可访问 Fava 界面。
指定端口
可以使用 -p
参数来指定端口
fava -p 5001 /path/to/main.bean
在 Fava 中,可以通过点击左侧导航栏中的不同链接来查看不同类型的报表和统计信息。例如,“Accounts”页面显示了所有账户及其余额,“Income Statement”页面显示了收入和支出的情况,“Balance Sheet”页面显示了资产和负债的情况等等。
除了查看报表和统计信息外,Fava 还提供了一些方便的功能。例如,可以通过在搜索框中输入关键词来搜索特定的交易记录,可以通过在筛选器中选择特定的账户、标签或日期范围来筛选交易记录。
此外,Fava 还支持自定义报表。可以通过在账目文件中添加一些特殊注释来定义自己的报表。例如,可以在账目文件中添加如下注释:
; @title: My Report
; @group: expense
; @query: expenses
这样就定义了一个名为“My Report”的报表,它属于“expense”分组,并且使用名为“expenses”的查询。然后,在 Fava 界面中就可以看到“My Report”这个报表,并且点击它就会显示对应的统计信息。
要查看账户,可以单击导航栏中的“账户”选项卡。Fava 将会显示账户列表。
单击账户名称,可以查看该账户的详细信息,包括余额、交易记录等。
Fava Dashboards 是一个 Fava 第三方的 Dashboards。
安装
pip install git+https://github.com/andreasgerstmayr/fava-dashboards.git
然后需要在 Beancount 中添加配置
2010-01-01 custom "fava-extension" "fava_dashboards"
默认情况下插件会查找目录下的 dashboards.yaml
文件,如果文件放在了其他目录或其他名字,可以配置
2010-01-01 custom "fava-extension" "fava_dashboards" "{
'config': '/path/to/dashboards.yaml'
}"
效果展示
资产和负债
Fava 是一个非常方便实用的工具,可以帮助我们更好地展示和分析 Beancount 账目文件。如果你使用 Beancount 进行记账,并且希望以直观的方式查看和操作账目,那么不妨试试 Fava 吧!
Uptime Kuma 是 [[Uptime Robot]] 的一个开源实现,可以自行架设。
如果看过我之前的文章,应该知道我过去也整理了很多服务器监控服务,我一路经历过了 Nodequery 、 Netdata 以及 哪吒。甚至一度想要上商业的服务监控比如 [[Datadog]],但后来想想目前应该还不需要,但是这么多年过来,我整理笔记的时候发现很早之前写的 uptime kuma 的文章竟然没有发布出去。所以再在 2024 年时间的维度梳理一下。
具体来说 Uptime Kuma 是一款监控服务在线状态的工具,可以监控的类型见下图,简单的来说,还是非常丰富的。
特性:
推荐使用 docker compose 安装,配置见我的 dockerfile。
因为使用 Docker 来安装,直接修改指定的最新版本,然后启动即可。
在我过去几年的使用中,发现可能存在的一点点小问题,就是 Uptime Kuma 在网络波动的时候可能存在一点点误报的情况,已经有好几次,收到即使的报警,因为服务比较重要,所以立即确认,但却发现服务是完全正常的,但 Uptime Kuma 却还在报警,后来就在配置的时候,让 Uptime Kuma 多尝试几次,如果还发现错误才报警,这才让误报率降下来。
Devv Search 是一个面向开发者的搜索引擎,并且通过 AI 的加持,提供了更好,更精确的代码搜索能力。之前介绍过 GitHub Code Search,但是只能通过简单的代码片段去搜索 GitHub 上已有的代码,而 Devv 搜索则是可以通过自然语言的方式去查询具体的编程问题,虽然 ChatGPT,Bard 也能做到,但是初步体验了一下 Devv.ai,目前还是比较准确的。
Devv_ 的交互界面比较简单,不需要介绍,直接输入问题,获得答案即可。
Relingo 是一款通过在浏览过程中将陌生单词标注出来帮助学习的工具,Relingo 有浏览器插件,也有提供 Android 和 iOS 客户端。
特性:
使用效果图
用 Relingo 自己的设置页面来做一个说明,但实际默认的设置,我第一眼感受并不是很好,因为标注出的单词我都认识,但实际我不认识的单词,比如 commencement, biological 这样的单词却没有标注出来。可能换用其他的单词本会好一些吧。
另外我在尝试另外一款叫做 Burning Vocabulary 的时候就很明显的标注了出来。当然这个地方的 honored,翻译成 荣幸,更贴切一点。
之前在学习日语 的时候,知道了一个概念 —- [[Comprehensible Input]](可理解输入),他的意思就是只有当我们能够理解,才能够获得信息。学习语言尤其是,在我没有了解到这个概念之前,曾经有一段时间我会收听英文播客,虽然也不是百分之百能听明白,但是至少能够听懂一半以上,但是随着我不断地收听,我能够感觉到我能听懂的内容越来越多了。可理解输入的前提是,能够理解,而往往我们不需要完整地知道语言(句子)的所有细节,就能够明白对方说话的内容,而通过理解了内容,再回过头去学习听到的(看到的)单词,这种学习方式更有利于将单词长期记忆。
语言学习有些时候很神奇,当你去学习一门外语,但是如果从来没有人告诉过你 ジャガイモ 是什么,但是每次去超市都能看到土豆的包装袋上印刷着这个内容,自然而然地就把土豆和这个单词关联了起来。但我们回过来看这个场景,首先得有两个前提,一个是你能理解当前的东西是叫做土豆的,另外一个前提是能够读假名,那么反复的看到之后,自然而然就形成了关联。而当我们去学习英语的时候,也是一样,当一个单词反复地出现在大段落中,但我们能读明白除了这个单词之外的大部分内容,那么基本上能够猜出来这个词的大概意思,进而通过反复的出现,加深记忆。比如说上面段落中出现的 commencement,后面立即出现了 univerisity(大学),那大概率这个是和大学有关联的,随后就出现了 graduated from college(从大学毕业),而这是一段听起来非常像演讲的开端,那么很容易就联想到 commencement —- 毕业典礼。而当我们看这段文字的时候,其实我们不太需要知道 commencement 这个词的含义,我们也能够读完,并且也能够理解。但是通过先理解,再获取不认识的单词的这种方式,可以让我们在语言学习的过程中不那么枯燥,也可以通过这样的情景来更进一步拓宽我们的单词量。
因为一直在用 OpenAI 的 API,之前是账户中还有一些余额,但是在 2023 年 11 月 1 号就到期了,但是到期之后我账户中也是有充值了 5 美元的余额,理论上应该直接切换到使用我的账户余额,但问题就是 OpenAI 的接口无限制地返回了 insufficient_quota 错误。
网上去查询这个错误的时候大部分的错误都是说当前已经超过了配额限制,所以报错,但是明明我的账户中还有 4.95 美元的余额。所以我开始怀疑是不是 OpenAI 后台处理这个余额切换的时候出错了。
于是我就找到了 这个问题 几乎是一样的错误,最高赞里面的说明是,当前已经超出了配额,需要升级是一个 Paid Plan,可问题就在于,我在试用余额的过程中,因为需要解除调用的频率限制,就已经进行了付费,目前已经是一个付费的 Plan。所以高赞的回答没有解决我的问题。
于是我继续往下看,发现下面还有一个人遇到相同的问题,他的解决方案是先取消了当前的方案,然后重新添加支付方式,然后重新确认组织。带着一丝怀疑我就尝试了一下他的方案,虽然只有一个赞,但是缺失解决了我的问题,并且在添加支付方式的时候,又充值了 5 美元。
解决步骤:
起因是因为我因为搬家把 NAS 放在了家里,然后使用了 ZeroTier 做内网穿透,于是原来搭建在 NAS 上的 NextCloud 局域网地址,变成了 ZeroTier 的地址。那么我所有的同步客户端就没有办法直接再连接上了,所以得想办法。
最初想到的最笨的办法就是登出,然后再用新的 NextCloud 地址登录。但是这样就需要重新关联本地的同步文件,极有可能会让 NextCloud 将同一份文件同步两次(这种蠢事我之前也干过)。
于是我就找能不能只修改本地的配置,让原来的 192.168.2.xxx 变成 ZeroTier 的局域网地址 192.168.192.xxx。那么我只需要将客户端退出,然后修改本地配置,然后重启 NextCloud 客户端就可以完成切换。
搜索之后果然可以,可以通过修改配置 nextcloud.cfg
来实现这个效果。
在 macOS 上,NextCloud 的配置文件地址是:
~/Library/Preferences/NextCloud/nextcloud.cfg
在 Windows 上是:
C:\Users\Username\AppData\Roaming\Nextcloud\nextcloud.cfg
那么就特别简单了,本地 vi 打开这个配置文件,修改服务器地址,保存就完成了。
之前一直在 Chrome 下观看 YouTube, 通过广告屏蔽插件,基本上可以看不到 YouTube 的贴片广告, 但是最近 Google 更新了 YouTube 的广告屏蔽插件监测,应该是最新的 Chrome 上线了一些新的特性能让 Google 做到,所以一系列的广告拦截插件都纷纷失效了。但是简单的搜索了一下之后发现,uBlock Origin 还能正常拦截广告。
虽然我也一直安装了 uBlock Origin,之前也推荐过,但是我忘记更新它的过滤规则,所以导致 YouTube 还是会出现广告弹窗,并且不让继续观看视频。
uBlock Origin 是一款广告拦截插件,可以帮助用户屏蔽 YouTube 上的广告。以下是使用 uBlock Origin 来屏蔽 YouTube 广告的步骤:
如果未安装首先要 Chrome Extension Store 中安装 uBlock Origin 。然后到插件设置中更新规则。
打开设置,然后按照下面截图中的步骤更新规则。
可以通过如下的网站来检查当前是否可以拦截 YouTube 的广告。