2023 年 Wise 账号注册及使用

Wise 的账户其实很早就已经开了,但是觉得好像没有那么麻烦就一直没有好好写一下。最近因为搬到了日本,Wise 账号在中国地址下是无法体验实体卡和虚拟卡的,所以就在 Wise 中申请了一下更换地址,以及申请 Wise 实体卡片,因为不是虚假的地址,所以按照界面的要求填写一些地址信息,证明文件(在留卡,带地址的住民票等等能证明真实信息的资料)按要求填写然后提交即可,卡片会在大概 2 个星期左右的时间寄送过来。

在等待卡片的过程中顺便把之前记录在笔记里面的一些重点梳理了一下。这一篇文章就简单介绍一下 Wise 账号的注册以及日常的使用,以避免账号被封。

Wise 是什么

Wise 原名 TransferWise,是一个做跨境汇款的公司。由 Kristo Käärmann 和 Taavet Hinrikus 于 2011 年创立,总部设在伦敦。Wise 账户提供多个币种的账户,支持上百种种货币的兑换服务。

Wise 提供两种类型的账户:

  • 个人账户
  • 商业账户

Wise 的个人账户主要用于个人用途,比如亲朋好友之间转账,短期的工资,自由职业者用于接受服务费用等,除了用途不同,可获取的银行账户与商业账户一样,大多数国家用户可获得 10 币种银行账户,包括 AUD, CAD, EUR, GBP, HUF, NZD, RON, SGD, TRY 和 USD, 而中国用户只能获得 9 币种银行账户,没有 RON 账户。

2wL4

而注册 Wise 的商业账户则需要对应的公司资质,这一点文本就不展开了。

Wise 账户的优点

  • 开户方便,在线提交资料即可
  • 注册之后即可获得多个国家的虚拟银行账号用于收款
  • 汇款、转账成本低
  • 资金到帐速度快,与美国 ACH 转账隔日到帐,向支付宝转账,立即到帐
  • 不同币种之间随意兑换
  • 可以升级商业账户,满足跨境电商企业用户
  • Wise 账户对于跨境电商、自由职业者都是非常不错的选择

Wise 账户的应用场景

  • 国外汇款至国内的亲朋好友,可直接汇款到支付宝账户。转账到自己的国内银行账户,接受其他汇款后转账到自己的国内银行账户。
  • 转账到其他人的银行账户,可以给亲人转账,发送货款等。
  • 支付国外客户货款,服务费用等。
  • 绑定跨境平台账户用于收款,比如:可以绑定美元 checking 账户至美国亚马逊用以收款。
  • Wise 美元账户(或其他币种账户)绑定 PAYPAL 账户用于提现,付款。
  • 美股劵商入金,比如通过 Wise 美元账户 ACH 入金 [[Firstrade]]。
  • Wise 多币种 Debit Card 购物,可用于各大购物平台消费,也可以绑定 Paypal 消费。
  • Paypal 绑定 TransferWise 美国虚拟银行卡提现,手续费为 Paypal 提现手续费 35 美元+1.5% 美元转到人民币银联卡手续费用。相对于提现到义乌个体户结汇账户及上海自贸区外币账户,提现到 TransferWise 虚拟卡占用了 5W 美金的年结汇限额。
  • 用于收取广告联盟佣金,比如 [[CJ广告联盟]] ,LS 及 FLEX。

注册准备

注册个人账户需准备的资料:

  • 大陆护照或者驾照;
  • 手持证件照;
  • 一个可充值 20 美元 [[给 Wise 充值的方法]],一张境外的银行卡

注册过程

使用我的 邀请链接 打开官网,这样新用户会有 $500 转账免手续费的优惠。

默认选择个人账户,不要选择公司账户,填写你的邮箱,密码,国家选中国,点击 Sign Up。

Wise 的两类账号区别:

  • 个人账户 Personal Account :个人注册,凭身份证即可完成注册激活。
  • 企业账户 Business Account :公司注册,需要护照及营业执照等文件。

邮箱会收到一封主题为”Confirm your email address”的邮件,确认发件人然后点击”Confirm my email address”。

打开链接后,点击“Create profile”进行你的个人资料填写,然后点击”Save”。再次提醒一定的填写真实信息,否则会很麻烦,甚至封号。注意电话要填手机号,不要填固话号码,用来收验证码的。至此你的 Wise 账户已经过程完毕,但是很有必要进行身份验证,以免耽误后期的使用。此时,你可以等待 Wise 给你发邮件让你验证身份,也可以主动打开网站进行身份验证。验证可使用下列几种方法:

  1. 使用中国护照进行验证。推荐使用护照验证是目前最快,通常上传完毕以后几分钟就能成功
  2. 使用驾照进行验证。如果你没有办理护照,可以使用驾照,这里需要驾照的正反面,通常需要 2-3 天。
  3. 不可以用身份证进行验证。一开始使用的是身份证来验证的,上传正反面以后显示需要 2-3 天完成验证,但是大陆的身份证是没有名字英文的,可能会被拒

如果是在 2020 年 2 月前注册 Wise,那么开通美元、欧元、英镑等银行账号是非常容易的,直接点击就可开通。但是 2 月以后,需要先充值 20 美元才可以开通一个账号!

Wise 提供的 10 个虚拟银行账户

注册激活后,点击左侧菜单栏,选择 Balances -> Open a balance,选择币种,系统会开通相应虚拟银行账户,截止,Wise 支持 10 个不同国家的账户,后续可能还会上新账户。需要注意的是 Wise 会根据其业务需要,变更合作银行,同时也会变更账号。

  • 美元账户,提供一个 Checking 账户,包含 Account 和 Routing Number,SWIFT/BIC。最初由 Community Federal Savings Bank 社区联邦储蓄银行签发,现在已经更改合作银行为 Evolve Bank and Trust,并且已经支持 Direct Debit 直接付款了。
  • 欧元账户,提供欧盟 IBAN 账号,可接受来自 SEPA 欧元区境内和境外的欧元汇款,支持 Direct Debit 直接付款。
  • 澳大利亚元账户,由合作银行 MONEYTECH PAYMENTS PTY LTD 提供,仅能接受来自澳大利亚境内汇款,支持 Direct Debit 直接付款。
  • 波兰兹罗提账户,由波兰最大银行 PKO 银行提供的账户, 用于收取波兰兹罗提 PLN,26 位的收款账号。
  • 英镑账户,提供一个 Sort Code 本地银行账户和 IBAN 账户,仅能接受英国境内汇款,实测接收来自 Monzo 数字银行的转账实时到账无手续费,支持 Direct Debit 直接付款,可用于 [[Stripe]] 收款提现。
  • 新西兰元账户,提供一个标准 16 位账号,格式 AA-BBBB-CCCCCCC-DD,前两位是银行代码,我的是 04,代表 ANZ Institutional Banking。[[新西兰银行账户前缀]]
  • 新加坡元账户,由新加坡 DBS 星展银行签发,11 位数字账号。
  • 匈牙利福林账户,提供一个 IBAN 账号,仅能接收来自匈牙利或者匈牙利福林币种的汇款。
  • 土耳其里拉账户,土耳其里拉 IBAN 账户,可接收来自土耳其境内的 TRY 里拉币种汇款。
  • 加拿大元账户,由 Transferwise 公司的合作银行加拿大人民信托银行 People Trust 签发,Checking 账户,支持 EFTs 电子转账和直接存款,不支持境内电汇。

其他剩余的 50 种币种就没有提供虚拟账户。

如何向 Wise 充值入金?

Wise 的个人账户开通是免费的,但是激活账户需要向其中充值一定数量的金额,不同币种账户要求存入的金额不同,比如美元账户需存入 20 美金,英镑账户需存入 20 英镑,我们可以选择一种币种账户激活即可,通常选择开通美元账户,最低存入 20 美金激活。

通过其他银行账户汇款转入

通过银行转账汇入,Wise 提供的 10 个虚拟银行账户可以接收其他国家银行的转账。例如从汇丰银行香港汇款美元入帐,从 N26 虚拟银行向 Wise 发给转账,从华美银行 Velo 以 ACH 方式转账到 Wise 的美元账户,[[盛宝银行]]丹麦账户转账到 Wise 的欧元账户等等。

银行卡充值

Wise 官网有明确说明,不接受中国发行的银行卡充值,其他 Visa 万事达卡组织的外国卡有的可以向 Wise 充值,不过 Wise 作为金融机构,向 Wise 充值属于“电汇汇票”,很多发卡机构对这种操作都是禁止的。

电商外贸广告佣金收款

从事跨境电商或者网络营销的朋友,可以用签发的 10 个虚拟银行账户收取货款或广告佣金,多数平台都是支持的。如果收款金额过大,建议升级为商业账户,个人账户用作商用不合适。

Paypal 提现入账

例如注册英国区 Paypal 账号,绑定 Wise 签发的英国银行账号,可将 Paypal 的资金提现到 Wise 余额。

接收 Stripe 提现入账

注册 Stripe 外贸收款,绑定 Wise 的英国或欧洲账户,以 Direct Deposit 直接付款方式入账。

券商提现入账

某些券商账户经实测可提现至 Wise。

其他跨境收款平台转账

如果你有例如 WorldFirst 万里汇、PingPong、[[Payoneer]] 派安盈等收款平台账户,资金也可以转入 Wise。

Wise 实体万事达借记卡

目前实体借记卡面向欧洲经济区、英国、美国、澳大利亚、新西兰、新加坡、日本、加拿大、巴西、马来西亚用户开放申请,卡片申请费为 5 英镑,一次性扣除。暂时没有对中国用户开放,估计以后也不会。

Wise 虚拟卡

Wise 虚拟卡产品,同样是面向欧美国家用户开放,每个人最多可以申请三张卡片,申请虚拟卡免费。中国地址的 Wise 账号是没有办法申请虚拟的 Wise 卡的。

Wise 银行账单/账户证明信

Wise 提供 PDF 或 CSV 格式的多语言电子账单,上面载明了账户所有人姓名、英文地址、银行账号等信息,某些业务场景可尝试用作相关证明。

在对应银行账户下方有个“Get proof of account details”按钮,可以下载 PDF 账户证明信,该文件注明了此账户所有人以及 Wise 账号开户行地址等信息。

Wise 使用 Q & A 解答

账户之间互转

假设你需要从你的 Wise 账户内转账部分资金到你朋友的 Wise 账号,该怎么操作呢?发起转账时,输入对方的 Wise 邮箱账号即可,系统会自动识别对方信息,一般实时到账,手续费也不贵。

Wise 向外转账时显示什么名字

使用 Wise 向外转账,在收款方账单里显示的转款人名字为 Wise Inc 公司名,而非用户自己名字,所以在某些必须同名账户汇款的业务场景使用 Wise 不一定可行,例如以下华美 Velo 数字银行收到的 Wise 进账。

Wise account 和 jar 账户的区别

account 和 jar 账户的区别在于,你可以在一个 Wise 账户下拥有很多 jar,你可以随时取用 jar 中的钱。

Wise 推出 Jar 账户来存储 Wise 账户中的钱。 Jar 中的钱不能被轻易地使用,除非将 Jar 中的钱移动到余额中。

比如要储蓄一部分钱来度假,可以开通一个 Jar 账户,然后存入。当想要使用这些钱的时候,可以立即从 Jar 账户中获取。Jar 账户的好处就在于不让你过度挥霍。Jar 账户和 saving account 的区别就在于 Wise 账户下可以开通数百个 Jar。

Wise 转账到支付宝实现资金回国

Wise 与支付宝合作可直接汇款到支付宝,2020 年 3 月 17 日 Wise 与支付宝达成合作协议,在中国商务部网站上可查到相关新闻,支持把账户内的资金直接转到支付宝绑定的中国的银行卡内。

Wise 汇款到支付宝操作步骤

Wise 转支付宝很简单,这里以手机版操作演示:

第一步,添加收款人,点击“Recipients”添加收款人账号,选择这个收款账号属于自己还是别人的,币种选择 CNY 人民币,Bank details 选择 Alipay 支付宝,前提确保这个支付宝内已经绑定了一张银联卡,因为汇款通过支付宝是直接入账到银联卡内的而非支付宝余额!当然也可以直接选择 UnionPay Card 银联卡。最后填写收款人姓名拼音,支付宝邮箱或手机号,保存。

第二步,把外币转换为人民币, 由于支付宝只能接收人民币入账,所以要把其他币种转换为人民币,Wise 采用路透社实时汇率兑换,货币兑换手续费率不固定,从 1%-2.43%之间不等,例如英镑兑人民币就是 1%,印度卢比兑人民币就是 2.43%手续费率。这里兑换了 50 美元,Wise 收取了 0.5 美元手续费。

第三步,发起转账汇款, 点击余额下边”Send“按钮发起转账。选择刚才绑定的支付宝收款人账号。输入汇款金额,Wise 会自动计算转账手续费以及收款账号最终到账金额,之前几次 100 元、1000 元、10000 元的转账测试均显示 17.06 元手续费,转账金额大一些,手续费相对更划算,本次汇款 338.84 元人民币被收取了 16.8 元手续费。最后选择转账事由,自己给自己转的话,选择”Sending money home to family“即可。

第四步,汇款到账,Wise 提示转账会在 40 分钟内到账,实际仅需几秒钟时间就收到支付宝动账提醒,有境外汇款入账,汇款机构为 Wise,来源国家为 United Kingdom,同时绑定的中国银行卡也提示有浙江网商银行的闪速收款跨行转入。

单笔汇款到个人银联卡账户限额 31000 元人民币,汇款到支付宝账户限额 50000 元人民币。汇款到公司账户只能通过美元而不能是人民币。


2023-02-10 wise , transfer , wise-card , virtual-bank , digital-bank , debit-card , bank-card

Rclone 简单使用之挂载存储型 VPS

Rclone 是一款支持在不同对象存储、网盘间同步、上传、下载数据的命令行工具。

我有一个在欧洲的存储型 VPS,硬盘空间很大,但是网络传输速度不足,想要用日本的一台 VPS 加速一下在 Plex 中播放的速度,就想在日本的 VPS 上挂载这一台存储型 VPS,然后在日本的 VPS 上开启 Plex,加速一下网络使用效率,毕竟服务器和服务器之间的网络要更稳定一些。

支持如下主流的对象存储:

  • Google Drive
  • Amazon S3
  • Openstack Swift / Rackspace cloud files / Memset Memstore
  • Dropbox
  • Google Cloud Storage
  • Amazon Drive
  • Microsoft One Drive
  • Hubic
  • Backblaze B2
  • Yandex Disk
  • FTP
  • The local filesystem

安装

官方提供了一键安装脚本。

Linux/macOS

curl https://rclone.org/install.sh | sudo bash

Beta 版本:

curl https://rclone.org/install.sh | sudo bash -s beta

错误

如果在使用的过程中遇到如下的错误,可以尝试安装 fuse

Fatal error: failed to mount FUSE fs: fusermount: exec: “fusermount”: executable file not found in $PATH

在 Debian/Ubuntu 下安装:

sudo apt install fuse

配置

安装完成之后可以通过 rclone 提供的交互式配置选项添加配置,直接运行 rclone config,根据提示添加远程访问的配置,比如通过 SFTP 添加远程大存储 VPS,或者添加 OneDrive 或 Google Drive 这样的云端存储。

交互式的配置添加方法非常直观,这里就略过。

挂载 mount

当完成远程配置的添加之后就可以使用 mount 命令来在本地挂载远程主机的内容。比如在 rclone 的配置中已经添加了一个 remote_name 的配置,如果要挂载到本地 local_path,就可以通过如下的命令。

rclone mount remote_name:/path/to/remote ~/local_path --read-only --transfers 4 --buffer-size 1024M --low-level-retries 200 --dir-cache-time 12h --vfs-read-chunk-size 128M --vfs-read-chunk-size-limit 1G

在最初挂载的时候可能会遇到这种问题,这个时候可以在命令行中加入 -vv 来输出 DEBUG 日志。

执行 mount 命令之后终端会处于等待中,这是正常的。如果在执行中使用了 Ctrl+C 中断了命令,那么本地不再能访问挂载的内容,但是挂载状态并没有结束,需要执行:

sudo umount ~/local_path
# 或者
fusermount -qzu ~/local_path

rclone 命令有非常多的参数可以调整,更多的使用细节需要插件其官方文档

后台执行

/etc/init.d/rcloned 创建如下文件,记住修改其中的 NAME, REMOTE, LOCAL 这三个内容。

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
NAME_BIN="rclone"
### BEGIN INIT INFO
# Provides:          rclone
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start rclone at boot time
# Description:       Enable rclone by daemon.
### END INIT INFO

NAME="remote_name" #Rclone配置时填写的name
REMOTE='/path/to/remote'  #远程文件夹,网盘里的挂载的一个文件夹,留空为整个网盘
LOCAL='/local_path'  #挂载地址,VPS本地挂载目录
LOG="/$HOME/.rclone/rcloned.log"

Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"
Info="${Green_font_prefix}[信息]${Font_color_suffix}"
Error="${Red_font_prefix}[错误]${Font_color_suffix}"
RETVAL=0

check_running(){
	PID="$(ps -C $NAME_BIN -o pid= |head -n1 |grep -o '[0-9]\{1,\}')"
	if [[ ! -z ${PID} ]]; then
		return 0
	else
		return 1
	fi
}
do_start(){
	check_running
	if [[ $? -eq 0 ]]; then
		echo -e "${Info} $NAME_BIN (PID ${PID}) 正在运行..." && exit 0
	else
		fusermount -zuq $LOCAL >/dev/null 2>&1
		mkdir -p $LOCAL
		mkdir -p ${LOG%/*}
		sudo /usr/bin/rclone mount -vv $NAME:$REMOTE $LOCAL --copy-links --allow-other --allow-non-empty --umask 000 > "${LOG}" 2>&1 &
		sleep 2s
		check_running
		if [[ $? -eq 0 ]]; then
			echo -e "${Info} $NAME_BIN 启动成功 !"
		else
			echo -e "${Error} $NAME_BIN 启动失败 !"
		fi
	fi
}
do_stop(){
	check_running
	if [[ $? -eq 0 ]]; then
		kill -9 ${PID}
		RETVAL=$?
		if [[ $RETVAL -eq 0 ]]; then
			echo -e "${Info} $NAME_BIN 停止成功 !"
		else
			echo -e "${Error} $NAME_BIN 停止失败 !"
		fi
	else
		echo -e "${Info} $NAME_BIN 未运行"
		RETVAL=1
	fi
	fusermount -zuq $LOCAL >/dev/null 2>&1
}
do_status(){
	check_running
	if [[ $? -eq 0 ]]; then
		echo -e "${Info} $NAME_BIN (PID $(echo ${PID})) 正在运行..."
	else
		echo -e "${Info} $NAME_BIN 未运行 !"
		RETVAL=1
	fi
}
do_restart(){
	do_stop
	sleep 2s
	do_start
}
case "$1" in
	start|stop|restart|status)
	do_$1
	;;
	*)
	echo "使用方法: $0 { start | stop | restart | status }"
	RETVAL=1
	;;
esac
exit $RETVAL

授予执行权限,并添加启动:

chmod +x /etc/init.d/rcloned
update-rc.d -f rcloned defaults

开始挂载

/etc/init.d/rcloned start

停止挂载

/etc/init.d/rcloned stop

重新挂载

/etc/init.d/rcloned restart

查看日志

tail -f /$HOME/.rclone/rcloned.log

卸载服务:

/etc/init.d/rcloned stop
update-rc.d -f rcloned remove

2023-02-04 rclone , linux , vps , storage-vps , plex

Go 语言编写的 BaaS:PocketBase 简单介绍

PocketBase 是一个 Go 编写的开源后端 [[BaaS]] Backend-as-a-Service,只用了一个二进制文件就可以实现:

  • 内嵌的 SQLite 数据库
  • Auth 管理
  • 内置的文件存储和用户管理
  • 方便的 Admin 管理面板(Dashboard) 管理所有的资源
  • 简单的 REST-ish API

官网:https://pocketbase.io/

所以基本上用户可以通过 PocketBase 来作为应用的后台,比如说要用[[Nuxt.js]] 写一个网站,可以不用写后端服务器代码,而直接使用 PocketBase。

20in

PocketBase 的 SQLite 可以搭配 [[Litestream]] 一起使用。

Litestream 是一个使用 Go 编写的,用于 SQLite 数据库流式复制的工具。它作为一个单独的后台进程运行,并不断地从磁盘上复制写前日志页到一个或多个副本。 这种异步复制提供了类似于 Postgres 或 MySQL 等数据库服务器的灾难恢复。 SQLite 有一个名为”WAL”(预写日志)的日志模式。

PocketBase 和 Litestream 都只需要非常少的资源,完全可以在 512 MB 内存的 VPS 上运行。


2023-01-26 pocketbase , baas , self-hosted , litestream , linux

zsh 配置文件解析及优先级

zsh 的环境变量配置文件有:

  • .zprofile
  • .zlogin
  • .zshrc
  • .zshenv
  • .zlogout

对我而言最熟悉的就是 .zshrc ,大部分的命令行或者折腾 zsh 的时候总是要很多配置需要放在 .zshrc 。所以因此也可以看到 .zshrc 就是用来对 Shell 整体做个性化配置的。

  • .zprofile.zlogin 差不多是一样的,他们都会被 login shells 设置环境变量,只是加载时间可能有一些差别。.zprofile 是基于 Bash 的 .bash_profile ,而 .zlogin 则是仿照 CSH 的 .login 遗留下来的名字
  • .zshrc 会设置 interactive shells 的环境变量。它会在 .zprofile 之后加载。通常可以设置 $PATH, $PROMPT, aliases, functions 等等。
  • .zshenv 总是会被读取,所以也可以在这里设置环境变量,$PATH$EDITOR 等,但一般不怎么使用
  • zlogout 是在一个会话登出的时候被加载,非常适合用来清理临时的配置,比如重置终端窗口的标题

zsh 会在用户登录时(login shell)加载 ~/.zprofile

zsh 会在开启新的终端会话时加载 ~/.zshrc

总结

需要注意的是首先会加载 /etc/zshenv 下的内容, 然后再加载 HOME 目录下的配置文件:

.zshenv → [.zprofile if login] → [.zshrc if interactive] → [.zlogin if login] → [.zlogout].

reference


2023-01-19 zsh , zsh-config , zshrc , zprofile , bash

HestiaCP 面板中的模板文件

之前的一篇文章介绍过 HestiaCP 的简单使用,在 HestiaCP 中是通过模板配置文件来配置网站。修改网站的模板可能会造成服务器错误,修改之前请小心。

HestiaCP 的模板文件存放在 /data/templates/ 目录中,对于 Web 服务器,包括了一个初始化脚本 .sh 文件,一个默认的模板 .tpl 和一个 ssl 模板 .stpl

模板的位置:

Service Location
Nginx(Proxy) /usr/local/hestia/data/templates/web/nginx/
Nginx - PHP FPM /usr/local/hestia/data/templates/web/nginx/php-fpm/
Apache2 (Legacy / mod-php ) /usr/local/hestia/data/templates/web/apache2/
Apache2 - PHP FPM /usr/local/hestia/data/templates/web/apache2/php-fpm/
PHP-FPM /usr/local/hestia/data/templates/web/php-fpm/

创建新模板的方法最好是从原来的模板中复制。

cp original.tpl new.tpl
cp original.stpl new.stpl
cp original.sh new.sh

当完成模板编辑之后,需要在界面中启用。

在修改现成的模板之后,需要重新构建用户配置,可以通过 v-rebuild-user 命令或者在网页管理端操作。

模板中可用的变量

Name Example Description
%ip% 123.123.123.123 IP Address of Server
%proxy_port% 80 Port of Proxy
%proxy_port_ssl% 443 Port of Proxy (SSL)
%web_port% 80 or 8080 Port of Webserver
%web_ssl_port% 443 or 8443 Port of Webserver (SSL)
%domain% domain.tld Domain
%domain_idn% domain.tld Domain (Internationalised)
%alias_idn% alias.domain.tld Alias Domain (Internationalised)
%docroot% /home/username/web/public_html/ Document root of domain
%sdocroot% /home/username/web/public_shtml/ Private root of domain
%ssl_pem% /usr/local/hestia/data/user/username/ssl Location of SSL Certificate
%ssl_key% /usr/local/hestia/data/user/username/ssl Location of SSL Key
%web_system% Nginx / Apache Software used as Webserver
%home% /home Default home directory
%user% username Username of user
%backend_lsnr% proxy:fcgi://127.0.0.1:9000 Your default FPM Server
%proxy_extentions% List of extensions Extensions that should be handled by the proxy server

2023-01-12 hestiacp , control-panel , linux , nginx

阿加莎・克里斯蒂自传

怎么知道的这一本书

虽然很早就已经知道阿加莎·克里斯蒂,也曾经看过一些她的作品,比如《无人生还》、《尼罗河上的惨案》这类非常脍炙人口的作品,但是对其人一直不是非常了解,直到去年偶然间在路上听了一期关于阿加莎·克里斯蒂的播客,直到讲到她的生平,经历两次世界大战,有传奇的婚姻,才逐渐对她产生了兴趣。她是有怎么样的人生经历才能够塑造出如此精彩的虚构人物?她又是有怎么样的新奇的遭遇才能构造出如此出人意料的作案手法?

关于作者

阿加莎出生于 1890 年的伦敦德文郡托基,是英国著名的侦探小说家,剧作家。她在第一次世界大战期间志愿成为了一名护工,战争结束之后创作了第一步侦探小说《斯泰尔斯庄园奇案》,几经周折之后在 1920 年出版,从此开启了克里斯蒂传奇而辉煌的创作生涯。阿加莎克里斯蒂创作生涯持续五十余年,一共创作了八十部小说,作品畅销全世界,被称为继柯南·道尔之后最伟大的侦探小说家。

几句话总结书的内容

全书一共分成了十一个章节,涵盖了阿加莎从小成长,到青年,成熟直至垂暮的所有人生故事。阿加莎在写自传时已经有 60 岁的高龄,写了 15 年才最终定稿。这和她自己在写作侦探小说时文思泉涌,连续写作几天成一本书的写作方式完全不同。但也正是因为如此耗时的写作才使得这部自传内容翔实。

启发或想法

关于战争

关于第一次世界大战、第二次世界大战,我更多的是在影视作品中通过视觉化的方式看到,很少有机会通过一手的文字信息去了解那些年真正在发生的事情。就像大部分人看到的战争一样,突然之间就爆发了,而这也影响到了青年时期的阿加莎克里斯蒂。

关于婚姻

阿加莎的一生中经历了两次婚姻,在 1926 年母亲去世的那一年,第一段婚姻因为丈夫的婚外情而结束,这也使得阿加莎曾经一度离家出走失踪。但也正是因为命运的多舛,才让阿加莎独自一人向东旅行,在途中遇到了第二任丈夫。

关于自传

过去很长一段时间我都不喜欢读名人的自传,有意地避开了很多,但是最近几年却越来越喜欢读一些自传,读过富兰克林的自传,读过微软 CEO 萨提亚 纳德拉,读过 Linus Torvalds 的自传《Just for Fun》,也读了巴菲特的自传,过去我常常想去读自传,不如去读这些人物的其他专题性作品,但读过之后才渐渐地意识到这些名人的成就也好,思想也好,都脱离不开那个时代,那个环境,他们在生活中的遭遇,以及他们人生的转折都只能在自传中窥见。而这些名人的形象,也只有我读完全书之后才能在我的脑海中变得立体,而平时他们只能是维基百科上的一副二维照片,而通常也只是某个年龄拍下的,而我读完这些自传记住的是十几岁离家出走到处漂泊的富兰克林,记住的是因为自己的兴趣而发布在 FTP 上 Linux 内核的青年时期的 Linux,记住的是那个从印度移民美国拥抱文化开放、照顾患病孩子父亲形象的纳德拉。而在这一部阿加莎的自传中,我能看到那个幽默、命运坎坷的阿加莎,她人生的每一次转折都在塑造她对世界的认识,也正是她见到的每个人,遭遇的每一个时代变化,才让她能在战争期间学到药剂知识,才能让她在离婚之后去周游世界,才能让她为了生计几十年写作。

谁应该看这本书

对阿加莎·克里斯蒂的作品感兴趣的人

印象深刻的句子

  • 人生中最大的错误莫过于所见所闻不得其时。大多数人是在学校里学习莎士比亚的,生生把名著毁了。
  • 构思一部小说的过程是一种奇怪的感受,在六七年之久的时间里,你心里始终明白,自己终有一天会把它写出来。
  • 我喜欢活着,我有时会绝望无比,会痛苦难耐,会饱受忧愁的折磨。可是当一切经历过去之后,我仍然很清楚地认识到,好好活着就是最了不起的事情。

2023-01-12 autobiography , reading-2023 , reading-2023q1

推荐一款 macOS 上适合开发人员使用的开源工具集合 DevToysMac

DevToysMac 是一款 macOS 上的开发者常用工具集合,在 Windows 上有一款使用 C# 实现的开发者工具合集工具叫做 DevToys,但是在 macOS 上使用不了,于是 ObuchiYuki 就使用 Swift 编写了一个 macOS 上原生的应用。

sXVc

Installation

使用 Homebrew :

brew install --cask devtoys

Features

DevToysMac 提供的一些功能:

  • JSON 和 YAML 相互转换
  • 二进制,八进制,十进制,十六进制转换
  • 日期,时间戳转换

编解码:

  • HTML 编解码
  • URL 编解码
  • Base64 编解码
  • JWT

格式化:

  • JSON 格式化
  • XML 格式化
  • SQL 美化

生成器:

  • Hash 生成
  • UUID 生成
  • Lorem Ipsum 生成器,Lorem ipsum 是一段常用于印刷和排版领域的拉丁文乱数文字,用作占位符来展示排版、字体和布局等视觉效果。它在设计、出版、网页开发等领域被广泛使用。
  • Checksum
  • QR Code 生成器

文本相关:

  • 文本大小写
  • 正则
  • 文本差异
  • Hyphenation

图像相关:

  • PNG/JPEG 压缩
  • PDF 生成器
  • 图片格式转换
  • 图标生成
  • 二维码读取

媒体相关:

  • 颜色拾取器
  • 音频转码
  • Gif 转换

2023-01-06 mac-application , mac-app , dev , tools , json , json-format , dev-tools

REST-assured 简单使用

REST-assured 是 Java 实现的一套 REST API 测试框架。在 Java 中测试和验证 REST 接口的难度要大于动态语言比如 Ruby 或 Groovy,而 REST Assured 将测试接口的能力大大简化了。

Maven:

<dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <version>4.2.0</version>
      <scope>test</scope>
</dependency>

导入静态类:

import static io.restassured.RestAssured.*;

使用:

given().
   XXXX
when().
   XXXX
then().
   XXXX

行为驱动开发中定义的结构,Given-When-Then。

  • Given 在某场景下
    • 设置测试的初始内容,包括请求头,参数,请求体,cookie 等
  • When 发生了什么事情
    • 执行的操作,GET/POST/PUT/DELETE 等
  • Then 产生了什么结果
    • 解析结果,断言

GET

测试 GET 请求:

given().
    queryParam("mobilephone","13323234545").
    queryParam("password","123456").
when().
    get("http://httpbin.org/get").
then().
    log().body();

POST

测试 POST 请求:

表单:

given().
    formParam("mobilephone","13323234545").
    formParam("password","123456").
when().
    post("http://httpbin.org/post").
then().
    log().body();

JSON 参数:

String jsonData = "{\"mobilephone\":\"18023234545\",\"password\":\"23456456\"}";
given().
    body(jsonData).contentType(ContentType.JSON).
when().
    post("http://httpbin.org/post").
then().
    log().body();

上传文件:

given().
    multiPart(new File("D:\\file.png")).
when().
    post("http://httpbin.org/post").
then().
    log().body();

2023-01-05 java , unit-test , rest-assured

ChatGPT(OpenAI) 账号注册

本文总结一下注册 ChatGPT 的方法。

前提准备工作

  1. 一个代理,可以是韩国,日本,印度,新加坡,美国,可以到这里 注册使用
  2. 一个能够接受验证码的国外手机号,如果没有,用网上的虚拟接收验证码的服务也行,可以注册这个 sms-activate.org
  3. 一个浏览器,最好是 Chrome,Edge,[[Vivaldi]] 等

注册虚拟号接受验证码

打开虚拟号码接收验证码平台 sms-activate.org (带邀请 AFF),注册一个账号

注册完成之后,需要充值使用,接码平台使用的货币是卢布。

接收一次 OpenAI 的电话验证大约需要 11 卢布,换算成人民币大概是 1 块钱,平台充值的时候接收美元,可以先充值 1 美元。

注册 OpenAI 账号

打开浏览器的隐身模式,然后访问 ChatGPT(OpenAI) 的账户注册页面 。直接使用谷歌邮箱登录注册的成功率比较高,推荐直接通过 Google 登录注册。如果不想关联 Google,也可以直接使用邮箱注册。

使用邮箱注册后会收到一个验证邮件,再接受的邮件中点击验证链接,正式进入注册。如果遇到提示说不能在当前国家服务,那么就需要切换代理了。

另外需要注意的是,如果出现了当前国家不提供服务的错误,最好是清空 Cookie 之后再试。如果是在隐身模式下,那就关闭隐身模式,重新登录。

通过了地区校验之后可以填写手机号,这里需要回到 sms-activate 接码平台上,在左侧边栏搜索 OpenAI,然后选择一个国家,可以选择一个手机号接码最便宜的国家,比如印度尼西亚,肯尼亚等

9QpH

然后点击购物车,复制这个号码到 ChatGPT(OpenAI) 的注册页面,然后点击发送验证码,在接码网站会收到验证码。

最后就是完成 OpenAI 的注册。

然后就能访问 ChatGPT 了。新注册的 OpenAI 账号官方会赠送 5 美元的 API 调用额度。可以利用这个 API Key 做一些想做的事情。

如果不想自己注册,也可以到小店 里面购买共享的账号。


2023-01-03 chatgpt , openai , 注册 , ai

J3455 主板无法使用 PCIe 扩展 SATA 启动系统解决

把自己之前用 J3455-itx 主板组的 NAS 搬回了,但突然无法启动,这里就记录一下排错的过程。

最早启动的时候,无法进入系统,启动日志里面报错:

ata 7: COMRESET failed (errno=16)

开始怀疑是搬家的时候硬盘坏了。所以拆开主机,把其中的第四块硬盘 SATA 线拔掉了。重新启动主机,发现竟然能进入系统了。并且用 fdisk 查看,所有的其他硬盘都没有问题。

j3455 itx sata

这个时候我仔细的检查了一下 SATA 的连线,J3455-itx 这块主板只有 4 个 SATA 口,但是我使用 PCIe 扩展了 2 个 SATA 口,一共接了 5 块硬盘,1 块 SSD 安装了系统,4 块 HDD 机械硬盘。

为了腾位置给 SSD,所以我将一块 HDD 的 SATA 线连接到了扩展卡的 SATA 接口,就是将这个接口拔掉,才能够进入系统。这个时候我开始怀疑是不是扩展卡在搬运的过程中损坏了。于是加紧在京东又下单了一个全新的 PCIe 转 SATA 扩展卡。

今天终于把全新的扩展卡安装上来,但是发现这一块机械硬盘还是无法读取。一度又让我怀疑真的是磁盘坏了,为了排除这个嫌疑,我拿出了之前买过的 SATA 转 USB 的设备,拿了 Linux Mint 发现能正常读取这一块硬盘,因为四块机械硬盘是通过 [[MergerFS]] 合并成一块逻辑硬盘使用的,所以这一块硬盘上也能读取到部分的数据,证明机械硬盘是没有问题的。

这个时候我已经排除了机械硬盘的问题,扩展卡的问题,我又在怀疑难道是 PCIe 接口坏了。这个时候我就把 SSD 拆了下来,然后把四块机械硬盘连接到了主板上的四个 SATA 接口,通过 USB 来启动 SSD,过程中我发现系统完全启动正常,并且能够在 [[Proxmox VE]] 下安装的 [[OpenMediaVault]] 下正常挂载 4 块硬盘,读写也完全没有问题。

启动系统的过程中还遇到了 soft lockup 问题,这个时候还以为是磁盘的 IO 造成的。但后来仔细想想应该是通过 USB 启动的系统在读写上存在瓶颈导致的。

soft lockup

那剩下的问题就肯定出在 PCIe 这个接口上。我又换回了之前的扩展卡,然后重新在 BIOS 中查看,调整配置。当我将 SSD 连接到扩展卡,并启动的时候 J3455-itx 主板无法找到可启动的设备,直接进入了 BIOS。

这个时候我突然想起来用 J3455 和扩展卡在 Google 搜索了一下。于是就看到了 这个帖子 其中的一句话惊醒了我。

主板 BOIS 里打开 CSM 试试

我在 BIOS 里面找到 CSM 设置,启用,然后重启系统,竟然能够从 SSD 启动了,扩展卡没有坏,硬盘没有坏,只是 BIOS 里面的一行配置变了!

什么是 CSM

CSM 全称是 Compatibility Support Module,是 BIOS 用来启动旧版操作系统和其他旧软件的一种特性。可以让 UEFI BIOS 兼容 Legacy+MBR 启动模式。

我已经忘记了之前安装 Proxmox VE 的时候用的什么引导了,但启用了 CSM 的时候就能够找到磁盘上的引导程序,并成功启动系统了。

至此整个 Debug 的过程才算结束。没想到的是新年假期竟然花了半天时间 Debug 硬件,o<(=╯□╰=)>o


2023-01-02 j3455 , itx , openmediavault , proxmox , proxmox-ve

电子书

最近文章

  • Omnivore 一款开源的稍后阅读服务 Omnivore 是一个开源的,稍后阅读应用,查看起官方的页面,支持非常多的客户端,包括了 iOS, macOS, Chrome,等等 Android 还在测试中。
  • 我买了一块 1TB 的便携移动硬盘 三星 T7 笔记本电脑用了 3 年多,各种媒体材料,尤其是音乐我喜欢放在本地,以及各种应用程序基本上已经把磁盘自带的空间占满了,这两天刚好看到日亚有促销活动,可能是看我之前搜索过 SanDisk E61,E81 ,所以推荐里面直接推送了一个三星的 T7,看了一下价格只要 10600 JPY,用 Keepa 对比了一下历史价格,以及京东上的价格,感觉还挺合适的,就下了单。
  • 对象存储服务提供商提供的免费存储容量 [[对象存储]] 的英文是 Object-based Storage System,是一种将数据以对象的形式存储在分布式系统中的服务,而不是传统的文件系统或者块存储。
  • 反查一个域名的所有子域名 前段时间看到一篇文章说因为 Nginx 的一个「特性」,在直接访问 IP ,并且没有配置默认证书的情况下 Nginx 就会返回一个 SSL 证书从而倒置域名的泄露,进而泄露了网站的源 IP,使得一些扫描网站,比如 [[censys]] 可以直接查询到域名背后的网站 IP,从而导致网站即使用了 CDN 也会遭受到攻击。在这个契机下,我又开始了衍生,因为在 censys,[[fofa]],[[Shodan]] 等等网站上你只需要输入一个域名就可以获得所有这个站点相关的信息,那么有没有办法可以在只知道一个网站域名的情况下知道所有的二级域名呢。
  • 使用 Dokku 构建属于你自己的 PaaS Dokku 是一个开源的 PaaS,用户可以非常轻松地构建自己的 PaaS 云平台。