2024年,中考完后的那个暑假,我和朋友Eric Eric的主页 来到了中国的国际化大都市——上海,在这里度过了五天时间。上海这座魔幻的城市给我们留下了许多深刻的印象,在这一次旅途中,我们也在浦东新区拍下了许多好看的照片。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
网址: maao.cc/project-sleepy
{/alert}
因为中考完后的假期太闲,我又算是个比较爱睡觉(小睡)的人,所以基本上每天都处在睡着->醒来->睡着->醒来的循环中。朋友们喜欢留言找我,但一两条通知没法吵醒我,直接打电话又有些唐突。于是我决定写一个网页,来让访问网页的各位看到我是活着的还是似着的()
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
首先实现思路就是后端给两个接口。一个切换状态(switch)接口,当带 status=1
参数请求时,将状态更改为醒着(awake);当带 status=0
参数请求时,将状态更改为梦中(sleeping)。对于切换状态接口,任何操作都必须带上正确的 secret
密钥参数,否则直接返回 Invalid secret.
。第二个接口是查询状态(query)接口,无需任何参数,请求接口后直接返回当前状态。前端请求查询状态(query)接口后,即可显示当前状态。更改状态使用快捷指令发送get请求。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
最终成功实现了想要的效果: https://maao.cc/sleepy/
{bilibili bvid="BV1fE421A7PE" page=""/}
]]>事情的起因是一天闲着没事,偶然刷到了一则帖子,才得知原来大陆用户是可以申请开通支付宝国际版的。
支付宝国际版相比标准版界面更加简洁、直观、高端大气上档次,很适合只用几个常用的功能,又不喜欢花里胡哨的用户。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
首先进入支付宝客服中心,接入人工客服,然后直接和对方说出要求(想切换到支付宝国际版),对方会转接给「相应工作人员」处理。
转接后再次描述自己的需求,会用对一些功能有影响为理由最后挽留一下。这时候表达自己能接受,他们就会直接提交申请。
(有人说自己尝试,对面本来不同意,说了句求求你之类的话就同意了。这可能因人而异,只要非常坚定要切换就行)
我是工作日中午提交的申请,三个小时左右就通过了,效率还算快。
根据收到的短信的指引切换至国际版后,就能拥有一个简洁的支付宝了。还可以切换支付宝语言为英语,体验更纯正的「国际版」。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
切换到国际版后,有了新的绑定银行卡界面,支持 Visa / Mastercard / Diners Club / Discover / JCB / 银联
但是似乎因为实名认证的方式,切换到国际版支付宝似乎并没有对绑定国际银行卡有加成,还是没法绑定超过两张国际银行卡,会提示所谓的环境不安全。
<!DOCTYPE html>
<html>
<head>
<title>maao.cc</title>
<script>
var userLang = navigator.language || navigator.userLanguage;
if (userLang === 'zh-CN') {
window.location.href = '/cn';
} else {
window.location.href = '/global';
}
</script>
</head>
</html>
这样,访问首页就会自动判断,将用户引导至合适的语言。当用户的语言是 zh-CN
(简体中文)时,就自动跳转到https://maao.cc/cn 是其他语言时,就跳转到https://maao.cc/global
当然,如果识别出错或者只是想看看另一种语言的页面的话,我也做了一个区域选择器(Region Selector 有点模仿任天堂官网那意思): https://maao.cc/regionselector 因为一般来说大部分简体中文访问者不会打开这个页面,所以在这里我是把英文放在第一个。
同时,我也将常联系站(maao.cc)的境外流量接入了上一篇文章提到的Amazon CloudFront(详见 本站的境外网络访问优化记录 - 毛毛的梦 ),现在全球连接速度都嘎嘎快
贵阳市中考有一项是英语听力口语能力测试,总分30,计入中考分数。为了做好考试的准备,我们每周末都有一次练习,是手机上的软件,叫“ E听说中学 ”(科大讯飞的,七八岁的时候很喜欢的一家公司)
这个练习软件好是好,可是用手机的话必须时刻挂在前台,在电脑上用模拟器low了些,刚好最近对WSA子系统有些感兴趣,加上我电脑的系统是Windows11,干脆就趁这个机会尝试来配置一下Android子系统。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
{alert type="info"}
以下步骤参考知乎用户“塞尔达斗恶龙”的文章:Windows 11 安卓子系统安装教程
https://zhuanlan.zhihu.com/p/637883437
{/alert}
打开微软商店解析工具: https://store.rg-adguard.net 输入 https://www.microsoft.com/store/productid/9p3395vx91nr
,在右侧下拉框中选择“Slow”,随后点击“✔”
解析出来后,拉到页面最底部,点击最新的后缀名为“.msixbundle”的文件,下载。因为是用的微软的服务器,下载速度算比较快。
下载完成后,在开始菜单中搜索“Powershell”,点击“以管理员身份运行”
打开后,执行 Add-AppxPackage <文件路径>
(例如 Add-AppxPackage "C:\Users\WinMEMZqwq\Downloads\MicrosoftCorporationII.WindowsSubsystemForAndroid_2310.40000.2.0_neutral_~_8wekyb3d8bbwe.Msixbundle"
) 开始安装WSA子系统
部署完成后,我尝试直接打开apk文件,但是并没有程序关联,WSA又是UWP程序,没法手动选择。 于是又回到塞尔达斗恶龙大佬的教程,才得知原来想在子系统中安装程序没有那么容易,需要用到adb工具。不过好在我有过一些Android开发的工具,有一些adb的经验,而且adb安装其实很简单,一句命令就能搞定。 写到一半发现,其实可以直接把安装包放进共享文件夹里,没必要像原教程里用ADB那么麻烦
首先打开“适用于 Android™ 的 Windows 子系统”
点击侧边栏中的“高级设置”,展开“实验性功能”,启用“共享用户文件夹”(如果你担心共享整个用户文件夹会影响宿主机中的数据安全,可以像我一样点击“更改文件夹”,并为子系统专门设置一个共享文件文件夹)
接下来,返回侧边栏中的“系统”,点击“文件”右侧的超链接图标。
此时Android子系统将会启动,耐心等待启动完成后(大约半分钟),会进入子系统中的“文件”应用(浓浓的AOSP风,熟悉的Google文件极客)
与Windows宿主机的共享文件夹就在根目录下的“Windows”文件夹中,打开文件夹,直接点击安装包安装即可。
安装完成后,就能在Windows宿主机的开始菜单中看到刚安装的程序了,直接打开,因为子系统刚才已经启动,所以再打开其他应用速度很快。
可以看到,子系统中的程序以窗口的形式独立存在,使用起来的感受就像原生Windows应用一样。
输入账号密码登录后,就能和在手机上一样参加练习了。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
这两天生病在家,刚好闲着没事干,准备整个自动推送文章更新。推送方式上,考虑到访问我的网站的用户大多用的是手机,虽然邮件的推送成本极低,但是转化率不高。而且手机短信通知要比邮件方便一些,也有着不错的转化率,所以决定先开发短信推送,邮件推送先搁着。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
现在的想法是用阿里云的短信发送接口。前端写一个页面,输入接收推送的手机号,发送验证码申请提交到后端,通过某种加密方式鉴权,鉴权通过后后端请求阿里云API发送短信。前端再输入收到的验证码,验证通过后把手机号写入数据库。
验证码短信的内容想好了,是:
{alert type="info"}
【毛毛的梦】验证码:6位验证码。您正在申请订阅文章更新通知。
{/alert}
等到每次文章一更新,就去阿里云发短信给数据库里所有的手机号。消息内容目前定下来是:
{alert type="info"}
【毛毛的梦】新文章更新,标题:标题。链接:链接
{/alert}
现在只是新建了个计划,开发也处于新建文件夹阶段,给自己定的完成时间是三周以内,慢慢写吧。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
模板全部审核通过了,就等着开发了
目前进展:Python后端接口已完成
通知消息模板人工咨询工单回复了,说建议我在申请备注中提供一个完整的不带变量的模版示例,我只能说...瞎吗...
修改过后的验证码消息模板过了,但是通知消息模板还是没过,审核意见是什么“根据您提供的链接https://www.maodream.com/archives/,核实功能内容太少,无法判断实际内容
我的archives目录下是文章,我只是用这个链接合成一下,他不会把archives当做一个实际页面了吧...
验证码消息模板也没过,本来想用“您正在申请订阅「毛毛的梦」文章更新通知。”的,但是阿里云提示不能使用特殊符号,只能作罢。说实话有点小可惜,我觉得「直角引号」还挺好看的。
也想吐槽一下阿里云,为什么不直接禁止输入特殊符号,还要靠人工审核才提示,有点浪费时间...
短信通知的消息模板没通过审核,阿里云说是title变量的内容不明确,可我觉得原本写的“新文章:标题”挺明确的啊。没办法,只能修改成“新文章更新,标题:标题。”
新网站刚建起来,总要写点什么。一个网站的第一篇文章不需要有多惊艳,一件小事也可以作为成功的开头。刚好我家中的Ubuntu Server服务器内核该升级了,就简单记录一次内核升级操作吧。
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
电脑系统环境:Windows 11
服务器系统环境:Ubuntu Server 22.04.3 LTS
{dotted startColor="#ff6c6c" endColor="#1989fa"/}
{alert type="warning"}
警告:内核更新操作具有一定风险,建议您在执行操作前备份好重要数据
{/alert}
开始之前推荐一个小众SSH软件: URLSSH 我个人觉得还算不错,有Mac和Windows版,界面很简洁。这家公司还有一个产品叫做URLOS,应该和宝塔面板差不多,我两年前就买过,有机会出个评测。
登录到服务器,查看内核版本。
查看内核版本有两种方法,最简单的一种是在刚登录SSH时的信息中查看:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-87-generic x86_64)
加粗部分即为内核版本
或者在SSH中执行 uname -r
maomao@mao-server-gz:~$ uname -r
5.15.0-87-generic
加粗部分即为内核版本
执行 sudo apt update
更新软件包列表
执行 sudo apt install linux-image
在输出结果中找到最新版本匹配的内核,如 linux-image-6.2.0-35-generic
执行 sudo apt install linux-image-6.2.0-35-generic
输入Y继续
执行 sudo reboot
重启服务器,并等待服务器重启完成
重启完成后,重新登录SSH,执行 uname -r
查看新的内核版本
至此,升级操作完成。